From b3ed0f95eb94a4e7cb5e137bb8196db8c36aa50d Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Wed, 5 Jun 2019 10:44:12 -0500 Subject: fix? --- site/public/about/assets/LICENSE/index.html | 4 - site/public/about/attribution/index.html | 4 - site/public/about/index.html | 4 - site/public/about/legal/index.html | 4 - site/public/about/news/index.html | 4 - site/public/assets/css/applets.css | 246 ++++ site/public/assets/css/css.css | 1270 ++++++++++++++++++++ site/public/assets/css/fonts.css | 41 + site/public/assets/css/leaflet.css | 635 ++++++++++ site/public/assets/css/mobile.css | 172 +++ site/public/assets/css/splash.css | 134 +++ site/public/assets/css/tabulator.css | 759 ++++++++++++ site/public/assets/data/3dlm_0_10.json | 1 + site/public/assets/data/faces/brad_smith_1_0.drc | Bin 0 -> 160603 bytes site/public/assets/data/faces/bush_1_0.drc | Bin 0 -> 165255 bytes site/public/assets/data/faces/george_tenet_1_0.drc | Bin 0 -> 156334 bytes .../public/assets/data/faces/john_ashcroft_1_0.drc | Bin 0 -> 167825 bytes site/public/assets/data/faces/macron_1_0.drc | Bin 0 -> 141367 bytes site/public/assets/data/faces/macron_2_0.drc | Bin 0 -> 150209 bytes site/public/assets/data/faces/macron_4_0.drc | Bin 0 -> 148036 bytes site/public/assets/data/faces/may.drc | Bin 0 -> 175998 bytes site/public/assets/data/faces/putin.drc | Bin 0 -> 188140 bytes site/public/assets/data/faces/putin_0.drc | Bin 0 -> 150530 bytes site/public/assets/data/faces/putin_1_0.drc | Bin 0 -> 184203 bytes site/public/assets/data/faces/putin_2_0.drc | Bin 0 -> 168179 bytes site/public/assets/data/faces/putin_3_0.drc | Bin 0 -> 143099 bytes site/public/assets/data/faces/putin_4_0.drc | Bin 0 -> 168568 bytes site/public/assets/data/faces/trudeau_1_0.drc | Bin 0 -> 170508 bytes site/public/assets/data/faces/trudeau_2_0.drc | Bin 0 -> 160676 bytes site/public/assets/data/faces/trudeau_3_0.drc | Bin 0 -> 166457 bytes site/public/assets/data/faces/trudeau_4_0.drc | Bin 0 -> 161956 bytes site/public/assets/data/faces/trudeau_5_0.drc | Bin 0 -> 144156 bytes site/public/assets/data/faces/trump_1_0.drc | Bin 0 -> 148636 bytes site/public/assets/data/faces/trump_2_0.drc | Bin 0 -> 173206 bytes site/public/assets/data/faces/trump_3_0.drc | Bin 0 -> 170969 bytes site/public/assets/data/faces/trump_3_1.drc | Bin 0 -> 124027 bytes site/public/assets/data/faces/trump_4_0.drc | Bin 0 -> 147021 bytes site/public/assets/data/faces/xi.drc | Bin 0 -> 157325 bytes site/public/assets/data/faces/xi_1_0.drc | Bin 0 -> 150777 bytes site/public/assets/data/faces/xi_2_0.drc | Bin 0 -> 155786 bytes site/public/assets/demo/cloud/.gitignore | 1 + site/public/assets/demo/cloud/.npmignore | 4 + site/public/assets/demo/cloud/LICENSE | 21 + site/public/assets/demo/cloud/README.md | 109 ++ site/public/assets/demo/cloud/THREE.TextSprite.js | 1 + site/public/assets/demo/cloud/demo/script.js | 129 ++ site/public/assets/demo/cloud/index.html | 31 + site/public/assets/demo/cloud/package.json | 40 + site/public/assets/demo/cloud/rollup.config.js | 25 + .../assets/demo/cloud/src/getOptimalFontSize.js | 18 + site/public/assets/demo/cloud/src/index.js | 78 ++ site/public/assets/demo/splash/index.html | 58 + site/public/assets/fonts/Roboto_300.eot | Bin 0 -> 17481 bytes site/public/assets/fonts/Roboto_300.svg | 312 +++++ site/public/assets/fonts/Roboto_300.ttf | Bin 0 -> 35468 bytes site/public/assets/fonts/Roboto_300.woff | Bin 0 -> 19916 bytes site/public/assets/fonts/Roboto_300.woff2 | Bin 0 -> 15440 bytes site/public/assets/fonts/Roboto_400.eot | Bin 0 -> 17405 bytes site/public/assets/fonts/Roboto_400.svg | 308 +++++ site/public/assets/fonts/Roboto_400.ttf | Bin 0 -> 35408 bytes site/public/assets/fonts/Roboto_400.woff | Bin 0 -> 19824 bytes site/public/assets/fonts/Roboto_400.woff2 | Bin 0 -> 15344 bytes site/public/assets/fonts/Roboto_500.eot | Bin 0 -> 17596 bytes site/public/assets/fonts/Roboto_500.svg | 305 +++++ site/public/assets/fonts/Roboto_500.ttf | Bin 0 -> 35588 bytes site/public/assets/fonts/Roboto_500.woff | Bin 0 -> 20012 bytes site/public/assets/fonts/Roboto_500.woff2 | Bin 0 -> 15552 bytes site/public/assets/fonts/Roboto_700.eot | Bin 0 -> 17391 bytes site/public/assets/fonts/Roboto_700.svg | 309 +++++ site/public/assets/fonts/Roboto_700.ttf | Bin 0 -> 35236 bytes site/public/assets/fonts/Roboto_700.woff | Bin 0 -> 19888 bytes site/public/assets/fonts/Roboto_700.woff2 | Bin 0 -> 15436 bytes site/public/assets/fonts/Roboto_Mono_300.eot | Bin 0 -> 18064 bytes site/public/assets/fonts/Roboto_Mono_300.svg | 392 ++++++ site/public/assets/fonts/Roboto_Mono_300.ttf | Bin 0 -> 32160 bytes site/public/assets/fonts/Roboto_Mono_300.woff | Bin 0 -> 19884 bytes site/public/assets/fonts/Roboto_Mono_300.woff2 | Bin 0 -> 16380 bytes site/public/assets/fonts/Roboto_Mono_400.eot | Bin 0 -> 17757 bytes site/public/assets/fonts/Roboto_Mono_400.svg | 390 ++++++ site/public/assets/fonts/Roboto_Mono_400.ttf | Bin 0 -> 31052 bytes site/public/assets/fonts/Roboto_Mono_400.woff | Bin 0 -> 19576 bytes site/public/assets/fonts/Roboto_Mono_400.woff2 | Bin 0 -> 16028 bytes site/public/assets/fonts/Roboto_Mono_500.eot | Bin 0 -> 17909 bytes site/public/assets/fonts/Roboto_Mono_500.svg | 387 ++++++ site/public/assets/fonts/Roboto_Mono_500.ttf | Bin 0 -> 31168 bytes site/public/assets/fonts/Roboto_Mono_500.woff | Bin 0 -> 19656 bytes site/public/assets/fonts/Roboto_Mono_500.woff2 | Bin 0 -> 16016 bytes site/public/assets/img/arrow-left-black.png | Bin 0 -> 3336 bytes site/public/assets/img/arrow-left.png | Bin 0 -> 2183 bytes site/public/assets/img/arrow-right-black.png | Bin 0 -> 3380 bytes site/public/assets/img/arrow-right.png | Bin 0 -> 2183 bytes site/public/assets/img/close-black.png | Bin 0 -> 1511 bytes site/public/assets/img/close.png | Bin 0 -> 3738 bytes .../assets/img/favicon/android-icon-144x144.png | Bin 0 -> 1004 bytes .../assets/img/favicon/android-icon-192x192.png | Bin 0 -> 504 bytes .../assets/img/favicon/android-icon-36x36.png | Bin 0 -> 848 bytes .../assets/img/favicon/android-icon-48x48.png | Bin 0 -> 887 bytes .../assets/img/favicon/android-icon-72x72.png | Bin 0 -> 881 bytes .../assets/img/favicon/android-icon-96x96.png | Bin 0 -> 925 bytes .../assets/img/favicon/apple-icon-114x114.png | Bin 0 -> 956 bytes .../assets/img/favicon/apple-icon-120x120.png | Bin 0 -> 962 bytes .../assets/img/favicon/apple-icon-144x144.png | Bin 0 -> 1004 bytes .../assets/img/favicon/apple-icon-152x152.png | Bin 0 -> 1069 bytes .../assets/img/favicon/apple-icon-180x180.png | Bin 0 -> 1112 bytes .../public/assets/img/favicon/apple-icon-57x57.png | Bin 0 -> 859 bytes .../public/assets/img/favicon/apple-icon-60x60.png | Bin 0 -> 859 bytes .../public/assets/img/favicon/apple-icon-72x72.png | Bin 0 -> 881 bytes .../public/assets/img/favicon/apple-icon-76x76.png | Bin 0 -> 871 bytes .../assets/img/favicon/apple-icon-precomposed.png | Bin 0 -> 1076 bytes site/public/assets/img/favicon/apple-icon.png | Bin 0 -> 1076 bytes site/public/assets/img/favicon/browserconfig.xml | 2 + site/public/assets/img/favicon/favicon-16x16.png | Bin 0 -> 779 bytes site/public/assets/img/favicon/favicon-32x32.png | Bin 0 -> 837 bytes site/public/assets/img/favicon/favicon-96x96.png | Bin 0 -> 925 bytes site/public/assets/img/favicon/favicon.ico | Bin 0 -> 1150 bytes site/public/assets/img/favicon/manifest.json | 41 + site/public/assets/img/favicon/ms-icon-144x144.png | Bin 0 -> 1004 bytes site/public/assets/img/favicon/ms-icon-150x150.png | Bin 0 -> 1018 bytes site/public/assets/img/favicon/ms-icon-310x310.png | Bin 0 -> 1825 bytes site/public/assets/img/favicon/ms-icon-70x70.png | Bin 0 -> 878 bytes site/public/assets/img/icon-search.png | Bin 0 -> 1196 bytes site/public/assets/img/icon_camera.svg | 2 + site/public/assets/img/loader.gif | Bin 0 -> 1849 bytes site/public/assets/img/megapixels-share.png | Bin 0 -> 102573 bytes site/public/assets/img/megapixels_logo_black.png | Bin 0 -> 1269 bytes site/public/assets/img/megapixels_logo_black.svg | 58 + site/public/assets/img/megapixels_logo_white.svg | 10 + site/public/assets/img/reddot.png | Bin 0 -> 1102 bytes site/public/assets/js/app/face.js | 254 ++++ site/public/assets/js/app/prototypes.js | 1 + site/public/assets/js/dist/index.js | 88 ++ .../public/assets/js/vendor/draco/draco_decoder.js | 32 + .../assets/js/vendor/draco/draco_decoder.wasm | Bin 0 -> 331539 bytes .../assets/js/vendor/draco/draco_decoder_gltf.js | 31 + .../assets/js/vendor/draco/draco_decoder_gltf.wasm | Bin 0 -> 228970 bytes .../public/assets/js/vendor/draco/draco_encoder.js | 33 + .../assets/js/vendor/draco/draco_wasm_wrapper.js | 119 ++ .../js/vendor/draco/draco_wasm_wrapper_gltf.js | 119 ++ site/public/assets/js/vendor/oktween.js | 159 +++ site/public/assets/js/vendor/three.meshline.js | 486 ++++++++ site/public/assets/js/vendor/three.min.js | 963 +++++++++++++++ site/public/assets/legal/megapixels_license.pdf | Bin 0 -> 42860 bytes site/public/assets/test/face.html | 227 ++++ site/public/datasets/brainwash/index.html | 4 - site/public/datasets/duke_mtmc/index.html | 4 - site/public/datasets/hrt_transgender/index.html | 4 - site/public/datasets/ijb_c/index.html | 4 - site/public/datasets/index.html | 4 - .../datasets/msceleb/assets/notes/index.html | 4 - site/public/datasets/msceleb/index.html | 4 - site/public/datasets/oxford_town_centre/index.html | 4 - site/public/datasets/uccs/assets/notes/index.html | 4 - site/public/datasets/uccs/index.html | 4 - site/public/info/index.html | 4 - site/public/research/00_introduction/index.html | 4 - .../research/01_from_1_to_100_pixels/index.html | 4 - .../research/02_what_computers_can_see/index.html | 4 - site/public/research/index.html | 4 - site/public/test/chart/index.html | 4 - site/public/test/citations/index.html | 4 - site/public/test/csv/index.html | 4 - site/public/test/datasets/index.html | 4 - site/public/test/face_search/index.html | 4 - site/public/test/gallery/index.html | 4 - site/public/test/index.html | 4 - site/public/test/map/index.html | 4 - site/public/test/name_search/index.html | 4 - site/public/test/pie_chart/index.html | 4 - site/templates/layout.html | 4 - 169 files changed, 8801 insertions(+), 124 deletions(-) create mode 100644 site/public/assets/css/applets.css create mode 100644 site/public/assets/css/css.css create mode 100644 site/public/assets/css/fonts.css create mode 100644 site/public/assets/css/leaflet.css create mode 100644 site/public/assets/css/mobile.css create mode 100644 site/public/assets/css/splash.css create mode 100755 site/public/assets/css/tabulator.css create mode 100644 site/public/assets/data/3dlm_0_10.json create mode 100644 site/public/assets/data/faces/brad_smith_1_0.drc create mode 100644 site/public/assets/data/faces/bush_1_0.drc create mode 100644 site/public/assets/data/faces/george_tenet_1_0.drc create mode 100644 site/public/assets/data/faces/john_ashcroft_1_0.drc create mode 100644 site/public/assets/data/faces/macron_1_0.drc create mode 100644 site/public/assets/data/faces/macron_2_0.drc create mode 100644 site/public/assets/data/faces/macron_4_0.drc create mode 100644 site/public/assets/data/faces/may.drc create mode 100644 site/public/assets/data/faces/putin.drc create mode 100644 site/public/assets/data/faces/putin_0.drc create mode 100644 site/public/assets/data/faces/putin_1_0.drc create mode 100644 site/public/assets/data/faces/putin_2_0.drc create mode 100644 site/public/assets/data/faces/putin_3_0.drc create mode 100644 site/public/assets/data/faces/putin_4_0.drc create mode 100644 site/public/assets/data/faces/trudeau_1_0.drc create mode 100644 site/public/assets/data/faces/trudeau_2_0.drc create mode 100644 site/public/assets/data/faces/trudeau_3_0.drc create mode 100644 site/public/assets/data/faces/trudeau_4_0.drc create mode 100644 site/public/assets/data/faces/trudeau_5_0.drc create mode 100644 site/public/assets/data/faces/trump_1_0.drc create mode 100644 site/public/assets/data/faces/trump_2_0.drc create mode 100644 site/public/assets/data/faces/trump_3_0.drc create mode 100644 site/public/assets/data/faces/trump_3_1.drc create mode 100644 site/public/assets/data/faces/trump_4_0.drc create mode 100644 site/public/assets/data/faces/xi.drc create mode 100644 site/public/assets/data/faces/xi_1_0.drc create mode 100644 site/public/assets/data/faces/xi_2_0.drc create mode 100644 site/public/assets/demo/cloud/.gitignore create mode 100644 site/public/assets/demo/cloud/.npmignore create mode 100644 site/public/assets/demo/cloud/LICENSE create mode 100644 site/public/assets/demo/cloud/README.md create mode 100644 site/public/assets/demo/cloud/THREE.TextSprite.js create mode 100644 site/public/assets/demo/cloud/demo/script.js create mode 100644 site/public/assets/demo/cloud/index.html create mode 100644 site/public/assets/demo/cloud/package.json create mode 100644 site/public/assets/demo/cloud/rollup.config.js create mode 100644 site/public/assets/demo/cloud/src/getOptimalFontSize.js create mode 100644 site/public/assets/demo/cloud/src/index.js create mode 100644 site/public/assets/demo/splash/index.html create mode 100644 site/public/assets/fonts/Roboto_300.eot create mode 100644 site/public/assets/fonts/Roboto_300.svg create mode 100644 site/public/assets/fonts/Roboto_300.ttf create mode 100644 site/public/assets/fonts/Roboto_300.woff create mode 100644 site/public/assets/fonts/Roboto_300.woff2 create mode 100644 site/public/assets/fonts/Roboto_400.eot create mode 100644 site/public/assets/fonts/Roboto_400.svg create mode 100644 site/public/assets/fonts/Roboto_400.ttf create mode 100644 site/public/assets/fonts/Roboto_400.woff create mode 100644 site/public/assets/fonts/Roboto_400.woff2 create mode 100644 site/public/assets/fonts/Roboto_500.eot create mode 100644 site/public/assets/fonts/Roboto_500.svg create mode 100644 site/public/assets/fonts/Roboto_500.ttf create mode 100644 site/public/assets/fonts/Roboto_500.woff create mode 100644 site/public/assets/fonts/Roboto_500.woff2 create mode 100644 site/public/assets/fonts/Roboto_700.eot create mode 100644 site/public/assets/fonts/Roboto_700.svg create mode 100644 site/public/assets/fonts/Roboto_700.ttf create mode 100644 site/public/assets/fonts/Roboto_700.woff create mode 100644 site/public/assets/fonts/Roboto_700.woff2 create mode 100644 site/public/assets/fonts/Roboto_Mono_300.eot create mode 100644 site/public/assets/fonts/Roboto_Mono_300.svg create mode 100644 site/public/assets/fonts/Roboto_Mono_300.ttf create mode 100644 site/public/assets/fonts/Roboto_Mono_300.woff create mode 100644 site/public/assets/fonts/Roboto_Mono_300.woff2 create mode 100644 site/public/assets/fonts/Roboto_Mono_400.eot create mode 100644 site/public/assets/fonts/Roboto_Mono_400.svg create mode 100644 site/public/assets/fonts/Roboto_Mono_400.ttf create mode 100644 site/public/assets/fonts/Roboto_Mono_400.woff create mode 100644 site/public/assets/fonts/Roboto_Mono_400.woff2 create mode 100644 site/public/assets/fonts/Roboto_Mono_500.eot create mode 100644 site/public/assets/fonts/Roboto_Mono_500.svg create mode 100644 site/public/assets/fonts/Roboto_Mono_500.ttf create mode 100644 site/public/assets/fonts/Roboto_Mono_500.woff create mode 100644 site/public/assets/fonts/Roboto_Mono_500.woff2 create mode 100644 site/public/assets/img/arrow-left-black.png create mode 100644 site/public/assets/img/arrow-left.png create mode 100644 site/public/assets/img/arrow-right-black.png create mode 100644 site/public/assets/img/arrow-right.png create mode 100644 site/public/assets/img/close-black.png create mode 100644 site/public/assets/img/close.png create mode 100644 site/public/assets/img/favicon/android-icon-144x144.png create mode 100644 site/public/assets/img/favicon/android-icon-192x192.png create mode 100644 site/public/assets/img/favicon/android-icon-36x36.png create mode 100644 site/public/assets/img/favicon/android-icon-48x48.png create mode 100644 site/public/assets/img/favicon/android-icon-72x72.png create mode 100644 site/public/assets/img/favicon/android-icon-96x96.png create mode 100644 site/public/assets/img/favicon/apple-icon-114x114.png create mode 100644 site/public/assets/img/favicon/apple-icon-120x120.png create mode 100644 site/public/assets/img/favicon/apple-icon-144x144.png create mode 100644 site/public/assets/img/favicon/apple-icon-152x152.png create mode 100644 site/public/assets/img/favicon/apple-icon-180x180.png create mode 100644 site/public/assets/img/favicon/apple-icon-57x57.png create mode 100644 site/public/assets/img/favicon/apple-icon-60x60.png create mode 100644 site/public/assets/img/favicon/apple-icon-72x72.png create mode 100644 site/public/assets/img/favicon/apple-icon-76x76.png create mode 100644 site/public/assets/img/favicon/apple-icon-precomposed.png create mode 100644 site/public/assets/img/favicon/apple-icon.png create mode 100644 site/public/assets/img/favicon/browserconfig.xml create mode 100644 site/public/assets/img/favicon/favicon-16x16.png create mode 100644 site/public/assets/img/favicon/favicon-32x32.png create mode 100644 site/public/assets/img/favicon/favicon-96x96.png create mode 100644 site/public/assets/img/favicon/favicon.ico create mode 100644 site/public/assets/img/favicon/manifest.json create mode 100644 site/public/assets/img/favicon/ms-icon-144x144.png create mode 100644 site/public/assets/img/favicon/ms-icon-150x150.png create mode 100644 site/public/assets/img/favicon/ms-icon-310x310.png create mode 100644 site/public/assets/img/favicon/ms-icon-70x70.png create mode 100644 site/public/assets/img/icon-search.png create mode 100644 site/public/assets/img/icon_camera.svg create mode 100644 site/public/assets/img/loader.gif create mode 100644 site/public/assets/img/megapixels-share.png create mode 100644 site/public/assets/img/megapixels_logo_black.png create mode 100644 site/public/assets/img/megapixels_logo_black.svg create mode 100755 site/public/assets/img/megapixels_logo_white.svg create mode 100644 site/public/assets/img/reddot.png create mode 100644 site/public/assets/js/app/face.js create mode 100644 site/public/assets/js/app/prototypes.js create mode 100644 site/public/assets/js/dist/index.js create mode 100644 site/public/assets/js/vendor/draco/draco_decoder.js create mode 100644 site/public/assets/js/vendor/draco/draco_decoder.wasm create mode 100644 site/public/assets/js/vendor/draco/draco_decoder_gltf.js create mode 100644 site/public/assets/js/vendor/draco/draco_decoder_gltf.wasm create mode 100644 site/public/assets/js/vendor/draco/draco_encoder.js create mode 100644 site/public/assets/js/vendor/draco/draco_wasm_wrapper.js create mode 100644 site/public/assets/js/vendor/draco/draco_wasm_wrapper_gltf.js create mode 100644 site/public/assets/js/vendor/oktween.js create mode 100644 site/public/assets/js/vendor/three.meshline.js create mode 100644 site/public/assets/js/vendor/three.min.js create mode 100755 site/public/assets/legal/megapixels_license.pdf create mode 100644 site/public/assets/test/face.html (limited to 'site') diff --git a/site/public/about/assets/LICENSE/index.html b/site/public/about/assets/LICENSE/index.html index 95cc54d7..bfc3d80e 100644 --- a/site/public/about/assets/LICENSE/index.html +++ b/site/public/about/assets/LICENSE/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/about/attribution/index.html b/site/public/about/attribution/index.html index fc3f7a8f..5c3a4ec4 100644 --- a/site/public/about/attribution/index.html +++ b/site/public/about/attribution/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/about/index.html b/site/public/about/index.html index 8635622a..32947b63 100644 --- a/site/public/about/index.html +++ b/site/public/about/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/about/legal/index.html b/site/public/about/legal/index.html index 34bfc008..e3465054 100644 --- a/site/public/about/legal/index.html +++ b/site/public/about/legal/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/about/news/index.html b/site/public/about/news/index.html index 15f8dfde..3dd7c5a2 100644 --- a/site/public/about/news/index.html +++ b/site/public/about/news/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/assets/css/applets.css b/site/public/assets/css/applets.css new file mode 100644 index 00000000..ef9f09e2 --- /dev/null +++ b/site/public/assets/css/applets.css @@ -0,0 +1,246 @@ +/* applets */ + +.applet_container { + min-height: 340px; + clear: left; + margin: 20px auto 40px auto; +} +.applet_container.autosize { + min-height: 0; +} +.applet { + margin-bottom: 60px; + transition: opacity 0.2s cubic-bezier(0,0,1,1); + opacity: 0; +} +.applet.map { + width: 100vw; + height: 50vh; +} +.applet.loaded { + opacity: 1; +} + +.row { + display: flex; + flex-direction: row; + justify-content: flex-start; +} +.q { + width: 100%; + padding: 8px 12px; + font-size: 13pt; + color:#333; +} +.timing { + font-size: 9pt; + padding-top: 10px; +} + +/* search results */ + +.name_search, .face_search { + box-shadow: inset 0 0 40px #000; + background: #111; + padding: 20px 0; + /*background: black;*/ + width: 100%; +} +.name_search { + margin-top: 0px; + margin-bottom: 20px; +} +.face_search .applet { + max-width: 640px; + margin: 0 auto; +} +.name_search .applet { + max-width: 640px; + margin: 0 auto; +} +.results { + margin-top: 10px; + padding-bottom: 10px; + display: flex; + flex-direction: row; + flex-wrap: wrap; +} +.results > div { + width: 200px; + margin-left: 20px; + margin-bottom: 40px; + font-size: 8pt; + background: #000; + padding: 5px; + font-weight: 500; +} +.results > div img { + display: block; + margin-bottom: 4px; + width: 190px; + height: 190px; + background: rgba(255,255,255,0.05); +} +.results > div:nth-child(3n+1) { + margin-left: 0; +} +.applet h2 { + font-size: 20pt; +} +.query h2 { + margin-top: 0; padding-top: 0; +} +.img { + position: relative; +} +.img .bbox { + position: absolute; + color: rgba(255,255,255,1); + background: rgba(255,255,255,0.05); + border: 1px solid; +} +.cta { + padding-left: 20px; + font-size: 10pt; +} +.cta ol { + margin: 0; + padding: 0 0 20px 20px; +} + +.searchContainer { + padding-top: 20px; +} + +.uploadContainer > div { + position: relative; + width: 300px; + height: 300px; + display: flex; + align-items: center; + justify-content: center; + background: #333; + border: 3px dashed #fff; + border-radius: 10px; + opacity: 0.3; + transition: opacity 0.2s cubic-bezier(0,0,1,1); +} +.uploadContainer.active, +.desktop .uploadContainer > div:hover { + opacity: 1; +} +.uploadContainer input { + position: absolute; + top: 0; left: 0; + width: 100%; height: 100%; + opacity: 0; + cursor: pointer; +} +.uploadContainer img { + max-width: 40px; +} + +/* map */ + +.map, .map .applet { + height: 500px; +} +.map { + margin-bottom: 20px; +} +.map_cover { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + cursor: pointer; + background: rgba(0,0,0,0.8); + z-index: 9998; /* site header is 9999 */ + display: flex; + justify-content: center; + align-items: center; + font-size: 36px; + transition: opacity 0.4s cubic-bezier(0,0,1,1); + opacity: 1; +} +.desktop .map_cover { + opacity: 0; +} +.desktop .map_cover:hover { + opacity: 1; +} +.leaflet-popup-content-wrapper { + max-height: 230px; + overflow-y: auto; +} +.leaflet-popup-content a { + color: #0078A8; + border-bottom: 1px solid rgba(0, 128, 160, 0.4); +} +.desktop .leaflet-popup-content a:hover { + color: #0078A8; + border-bottom: 1px solid rgba(0, 128, 160, 0.9); +} + +/* tabulator */ + +.tabulator { + font-family: 'Roboto', sans-serif; +} +.tabulator-row { + transition: background-color 100ms cubic-bezier(0,0,1,1); + background-color: rgba(255,255,255,0.0); +} +.desktop .tabulator-row:hover { + background-color: rgba(255,255,255,0.2); +} +.tabulator-row.tabulator-row-odd { + background-color: rgba(255,255,255,0.05); +} +.tabulator-row.tabulator-row-even { + background-color: rgba(255,255,255,0.1); +} + +/* analysis results */ + +.analysisContainer .results div { + width: 256px; + text-align: center; + padding: 10px; + margin: 10px; +} +.analysisContainer .results div img { + max-width: 100%; +} + +/* chart */ + +.piechart .chart { + display: flex; + flex-direction: row; + justify-content: space-around; + align-items: flex-start; +} +.piechart .chart > div { + width: 50%; + display: flex; + flex-direction: column; + justify-content: space-between; + align-items: center; +} +.piechart .chart .c3-chart-arc text { + fill: #fff; +} +.piechart .chart .c3-chart-arc.c3-target-Academic text { + fill: #333; +} +.piechart .c3 path, .piechart .c3 line { + stroke: rgba(64,64,64,0.3); +} +.piechart .chartCaption { + color: #888; + font-size: 12px; + font-family: 'Roboto', sans-serif; + font-weight: 400; +} diff --git a/site/public/assets/css/css.css b/site/public/assets/css/css.css new file mode 100644 index 00000000..f59556f8 --- /dev/null +++ b/site/public/assets/css/css.css @@ -0,0 +1,1270 @@ +* { box-sizing: border-box; outline: 0; } +@media (prefers-reduced-motion: reduce) { + * { + animation-duration: 0.001s !important; + transition-duration: 0.001s !important; + } +} +html, body { + margin: 0; + padding: 0; + width: 100%; + min-height: 100%; + /*font-family: 'Roboto Mono', sans-serif;*/ + font-family: 'Roboto', sans-serif; + color: #eee; + overflow-x: hidden; +} +html { + background: #181818; +} +a { outline: none; } +img { border: 0; } +.content { + opacity: 0; + transition: opacity 0.1s cubic-bezier(0,1,1,1); +} +html.desktop .content, +html.mobile .content { + opacity: 1; + margin-top: 50px; +} +html.mobile .content{ +} + +/* header */ + +header { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 70px; + z-index: 9999; + background: #1e1e1e; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + box-shadow: 0 0 4px rgba(0,0,0,0.3); +} +header .slogan { + display: flex; + flex-direction: row; + align-items: center; + /*padding-left: 56px;*/ + padding-left: 36px; + text-decoration: none; +} +header .logo { + background-image: url(../img/megapixels_logo_white.svg); + background-size: contain; + background-repeat: no-repeat; + margin-top: 0px; + margin-right: 8px; + width: 20px; + height: 20px; + flex: 0 0 20px; +} +header .site_name { + font-family: 'Roboto', sans-serif; + font-weight: 600; + text-transform: uppercase;; + color: #fff; + font-size: 11px; + line-height: 11px; + letter-spacing: 3px; +} +header .page_name { + font-size: 22px; + font-weight: 400; + color: #eee; + opacity: 0; + transition: 0.3s opacity cubic-bezier(0,0,1,1); + margin-left:18px; +} +.scrolled header .page_name { + opacity: 1; +} +header .links { + font-size: 18px; + line-height: 18px; +} +.home header .links a { + background-color: rgba(24,24,24,0.9); + border-bottom: 2px solid transparent; + padding: 3px; +} +header .sub { + margin-left: 4px; + margin-top: 2px; + transition: color 0.1s cubic-bezier(0,0,1,1); +} +.sub { + color: #666; + font-size: 10pt; +} +.desktop header .slogan:hover .site_name { + color: #fff; +} +.desktop header .slogan:hover .sub { + color: #666; +} +header .links { + display: flex; + flex-direction: row; + font-family: 'Roboto Mono', monospace; +} +header .links span, +header .links a { + display: block; + color: #dedede; + text-decoration: none; + text-transform: uppercase; + margin-right: 32px; + transition: color 0.1s cubic-bezier(0,0,1,1), border-color 0.05s cubic-bezier(0,0,1,1); + border-bottom: 1px solid rgba(255,255,255,0); + padding-bottom: 3px; + padding-top: 2px; + font-weight: 400; +} +header .links a.active { + color: #fff; + border-bottom: 2px solid rgba(255,255,255,1); +} +.desktop header .links a:hover { + color: #fff; + border-bottom: 2px solid rgba(255,255,255,1); +} +.desktop header .links a.active:hover { + color: #fff; + border-bottom: 2px solid rgba(255,255,255,1); +} +.home header .links a { + margin-right: 26px; + margin-left: 0; +} +.home header .links a:last-child { + margin-right: 29px; +} +/* footer */ + +footer { + width: 100%; + background: #000; + display: flex; + flex-direction: row; + justify-content: space-between; + color: #666; + font-size: 13px; + /*line-height: 17px;*/ + padding: 15px; + font-family: "Roboto", sans-serif; +} +footer > div { + display: flex; + flex-direction: row; +} +footer > div:nth-child(1) { + padding-left: 75px; +} +footer > div:nth-child(2) { + padding-right: 75px; +} +footer a { + display: inline-block; + color: #aaa; + transition: all 0.1s cubic-bezier(0,0,1,1); + padding-bottom: 1px; + text-decoration: none; +} +.desktop footer a:hover { + color: #fff; + border-bottom:1px solid #999; +} +footer ul { + margin: 0; + display: flex; + flex-direction: row; + color: #888; + font-size: 11px; +} +footer ul li { + margin-bottom: 0; + font-size: 11px; + font-weight: 400; + color:#666; +} +footer ul li:last-child { + margin-right: 0px; +} +footer ul:first-child li { + margin-right: 8px; +} +footer ul:last-child li { + margin-left: 8px; +} +.desktop footer a:hover { + color: #fff; +} + +/* headings */ + +h1 { + color: #eee; + font-weight: 400; + font-size: 34pt; + margin: 20px auto 10px auto; + padding: 0; + transition: color 0.1s cubic-bezier(0,0,1,1); + font-family: 'Roboto Mono', monospace; +} +h2 { + color: #eee; + font-weight: 400; + font-size: 34px; + line-height: 43px; + margin: 20px auto 20px auto; + padding: 0; + transition: color 0.1s cubic-bezier(0,0,1,1); + font-family: 'Roboto Mono', monospace; +} +h3 { + margin: 20px auto 10px auto; + font-size: 28px; + font-weight: 400; + transition: color 0.1s cubic-bezier(0,0,1,1); + font-family: 'Roboto Mono', monospace; +} +h4 { + margin: 6px auto 10px auto; + padding: 0; + font-size: 18pt; + font-weight: 400; + transition: color 0.1s cubic-bezier(0,0,1,1); + font-family: 'Roboto Mono', monospace; +} +h5 { + margin: 6px auto 10px auto; + padding: 0; + font-size: 14pt; + font-weight: 400; + transition: color 0.1s cubic-bezier(0,0,1,1); + font-family: 'Roboto Mono', monospace; +} +.content h3 a { + color: #888; + text-decoration: none; +} +.desktop .content h3 a:hover { + color: #fff; + text-decoration: underline; +} +.right-sidebar h3 { + margin: 0; + padding: 0 0 10px 0; + font-family: 'Roboto Mono'; + font-weight: 400; + font-size: 13px; + text-transform: uppercase; + letter-spacing: 2px; +} +.right-sidebar ul li a { + border-bottom: 0; +} +th, .gray { + font-family: 'Roboto', monospace; + font-weight: 500; + text-transform: uppercase; + letter-spacing: .15rem; + color: #777; +} +th, .gray { + font-size: 9pt; +} + +/* splash teaser */ + +.teaser { + position: absolute; + top: 50%; + left: 100px; + transform: translateY(-50%); +} +.teaser b { + font-family: 'Roboto', sans-serif; + font-weight: 500; + color: #fff; + font-size: 40px; + background: #181818; + box-shadow: -3px -3px #181818, 3px -3px #181818, -3px 3px #181818, 3px 3px #181818; + box-decoration-break: clone; +} +.teaser tt { + font-family: 'Roboto Mono', monospace; + color: #ddd; + font-size: 16px; + line-height: 1.7; + display: block; + max-width: 340px; + margin: 10px 0 30px 0; +} +.teaser tt span { + background: #181818; + box-shadow: -3px -3px #181818, 3px -3px #181818, -3px 3px #181818, 3px 3px #181818; + box-decoration-break: clone; +} +.teaser .btn { + color: #ddd; + background: #444; + padding: 14px 20px; + font-size: 16px; + border-radius: 4px; + text-decoration: none; + box-shadow: 0 1px 2px #181818; + transition: all 0.1s; +} +.desktop .teaser .btn:hover { + color: #fff; + background: #666; +} + +/* content */ + +.content { + padding-top: 20px; + padding-bottom: 100px; + min-height: calc(100vh - 55px); + line-height: 1.8; +} +section { + width: 960px; + margin: 0 auto; +} +.home section { + width: 960px; +} +.content .first_paragraph { + font-weight: 300; + font-size: 16pt; + color: #ddd; + margin-bottom: 20px; + margin-top: 30px; + line-height: 36px; +} +section p { + margin: 10px auto 20px auto; + line-height: 1.9rem; + font-size: 17px; + font-weight: 400; + color: #cdcdcd; +} +section ul { + margin: 10px auto 20px auto; + max-width: 720px; +} +section h1, section h2, section h3, section h4, section h5, section h6, section p{ + max-width: 720px; +} + +.content-dataset section:nth-child(2) p:first-child{ + font-size:19px; + color:red; +} +p.subp{ + font-size: 14px; +} +.content a { + color: #dedede; + text-decoration: none; + border-bottom: 2px solid #666; + padding-bottom: 1px; + transition: color 0.1s cubic-bezier(0,0,1,1); +} +.desktop .content a:hover { + color: #fff; + border-bottom: 2px solid #ccc; +} + +/* top of post metadata */ + +.meta { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: flex-start; + font-size: 12px; + color: #ccc; + margin-bottom: 20px; + font-family: 'Roboto', sans-serif; + margin-right: 20px; + line-height: 17px +} +.meta .gray { + font-size: 9pt; + padding-bottom: 5px; + line-height: 14px +} +.mobile .meta .gray { + font-size: 10px; + padding-bottom: 0px; +} +.right-sidebar { + float: right; + width: 200px; + margin: 0px 20px 20px 20px; + padding-top: 12px; + padding-left: 20px; + border-left: 1px solid #333; + font-family: 'Roboto'; + font-size: 14px; + font-weight: 400; +} +.left-sidebar { + float: left; + width: 200px; + padding-top: 10px; + padding-right: 20px; + /*margin-right: 20px;*/ + margin-bottom: 10px; + /*border-right: 1px solid #444;*/ + font-family: 'Roboto'; + font-size: 14px; + font-weight: 400; + clear:left; +} +.left-sidebar .meta, .right-sidebar .meta { + flex-direction: column; +} +.mobile .left-sidebar .meta, .right-sidebar .meta { + display: inline-block; + border-bottom: 1px solid #333; + padding:10px 10px 10px 0; + margin: 0 4px 4px 0; + color: #bbb; +} +.right-sidebar ul { + margin-bottom: 10px; + color: #aaa; +} +.left-sidebar ul { + margin-bottom: 10px; + color: #aaa; +} +.right-sidebar ul:first-child a { + text-decoration: none; + border-bottom: 1px solid; +} +.left-sidebar ul:first-child a { + text-decoration: none; + border-bottom: 1px solid; +} +.left-sidebar a, .right-sidebar a { + border-bottom: 1px solid #666; +} +.desktop .content .left-sidebar a:hover, +.desktop .content .right-sidebar a:hover { + border-bottom: 1px solid #ccc; +} + +/* lists */ + +ul { + list-style-type: none; + margin: 0 0 30px 0; + padding: 0; +} +ul li { + margin-bottom: 8px; + color: #dedede; + font-weight: 400; + font-size: 14px; +} + +/* misc formatting */ + +code { + font-family: 'Roboto Mono', monospace; + font-size: 9pt; + padding: 2px 4px; + background: rgba(255,255,255,0.1); +} +pre { + margin: 0 auto 20px auto; + max-width: 720px; + border: 1px solid #666; + border-radius: 2px; + padding: 10px; + display: block; + background: #333; + overflow: auto +} +pre code { + display: block; + max-height: 400px; + max-width: 960px; + overflow: scroll; + padding: 4px 10px; +} +table { + margin-bottom: 40px; +} +table thead{ + text-align: left; +} +table, tr, td, th { + border: none; + border-collapse:collapse; +} +.chart table tr{ + width: auto; +} +table tr{ + display:table; + table-layout: fixed; + width:100%; +} +table td, table th{ + padding:10px; + +} +table tr td{ + font-size:12px; +} +table tbody tr:nth-child(odd){ + background-color:#292929; +} +table tbody tr:nth-child(even){ + background-color:#333; +} + +hr { + height: 1px; + background: #888; + border: 0; + width: 80px; +} +hr.supp{ + width:100%; + margin:70px 0 30px 0; +} +blockquote { + margin: 0 auto; + max-width: 720px; + padding: 0 0 0 10px; + border-left: 2px solid #555; +} + +/* Buttons */ + +.citation-opts { +} +.citation-opts li{ + display: inline-block; + margin-right:10px; +} +.desktop .content a.btn{ + display: inline-block; + background: #333; + padding: 6px 10px; + font-size: 10px; + border-radius: 6px; + font-weight: 400; + border:0px; +} +.desktop .content a.btn:hover{ + background: #444; + border:0px; +} + +/* footnotes */ + +.footnotes hr { + display: none; +} +ul.footnotes { + max-width: 720px; + margin: 0 auto; + font-size: 12px; +} +ul.footnotes li { + font-size: 12px; + list-style-type: none; + margin-bottom: 12px; +} +ul.footnotes p { + font-size: 12px; +} +.footnotes ol:before { + content: 'Footnotes'; + margin: 0 0 10px -40px; + padding-bottom: 0; + display: block; + font-family: 'Roboto Mono', monospace; + font-weight: 400; + text-transform: uppercase; + color: #666; + font-size: 11pt; +} + +/* images */ + +section img { + max-width: 100%; + display: block; + margin: 0 auto; +} +.image img { + cursor: pointer; +} +section .image { + margin-bottom: 20px; +} +section.images { + display: flex; + flex-direction: row; + align-items: flex-start; + justify-content: center; + clear: both; +} +.image:only-child { + width: 100%; +} +.image:first-child { + margin-left: 0; + /*margin-top:10px;*/ +} +.image:nth-child(2), +.image:nth-child(3) { + margin-left: 40px; +} +.image:nth-child(4) { + margin-left: 20px; +} +.image:first-child:nth-last-child(2), +.image:first-child:nth-last-child(2) ~ .image { + width: 300px; +} +.image:first-child:nth-last-child(3), +.image:first-child:nth-last-child(3) ~ .image { + width: 186px; +} +.image:first-child:nth-last-child(4) ~ .image { + width: 100px; +} +section.wide { + width: 960px; +} +section.wide .image { + max-width: 960px; +} +section.fullwidth { + width: 100%; +} +section.fullwidth .image { + max-width: 100%; +} +.image .caption{ + text-align: center; +} +.image .caption.intro-caption{ + text-align: center; +} +.caption { + text-align: center; + font-size: 10pt; + color: #999; + max-width: 960px; + margin: 10px auto 10px auto; + font-family: 'Roboto'; +} +.caption a { + color: #ccc; + border: 0; +} +.desktop .caption a:hover { + color: #fff; + border: 0; +} + + + +.sideimage { + margin: 0px 0 40px 0; + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: flex-start; +} +.sideimage p{ + margin-top:0px; + padding-top:0px; + font-size:14px; +} +.sideimage strong{ + display: block; + font-size:26px; + line-height: 26px; + font-weight: 400; + font-family: 'Roboto'; + margin-bottom: 16px; +} +.sideimage img { + margin-right: 40px; + width: 200px; + height: 200px; +} + +/* blog index */ + +.research_index { + margin-top: 40px; +} +.research_index a { + text-decoration: none; +} +.research_index h1 { + margin-top: 20px; + text-decoration: underline; +} +.desktop .research_index section:hover h1 { + color: #fff; +} +.research_index section:hover h2 { + color: #ddd; +} + +/* home page */ + +.hero { + width: 100%; + background: black; + background: linear-gradient(#000,#222); + height: 50vw; + max-height: 70vh; +} +.hero .inner { + position: relative; + width: 100%; + max-width: 1200px; + height: 100%; + display: flex; + align-items: center; + margin: 0 auto; +} +#face_container { + pointer-events: none; + position: absolute; + width: 66vw; + height: 50vw; + max-height: 70vh; + top: 0; + right: -16vw; + z-index: 0; + text-align: center; + perspective: 500px; + perspective-origin: 50% 80%; +} +.currentFace { + position: absolute; + bottom: 50px; + width: 100%; + left: 0; + text-align: center; + font-size: 26px; +} +.intro { + max-width: 960px; + padding: 75px 0 75px 10px; + z-index: 1; +} +.intro .headline { + font-family: 'Roboto Mono', monospace; + font-size: 24pt; + line-height: 40pt; +} +.intro .buttons { + margin: 40px 0; +} +.intro button { + font-family: 'Roboto', sans-serif; + padding: 15px 20px; + border-radius: 8px; + border: 1px solid transparent; + cursor: pointer; + font-size: 12pt; + margin-right: 10px; + transition: color 0.1s cubic-bezier(0,0,1,1), background-color 0.1s cubic-bezier(0,0,1,1); +} +.intro button.normal { + background: #191919; + border-color: #444; + color: #ddd; +} +.intro button.important { + background: #444; + border-color: #444; + color: #ddd; +} +.desktop .intro button:hover { + background: #666; + border-color: #666; + color: #fff; +} +.intro .under { + font-size: 12px; + color: #888; +} +.intro .under a { + color: #bbb; +} +.desktop .intro .under a:hover { + color: #fff; +} +.dataset-intro h2 { + margin-top: 40px; +} +.content .dataset-intro .first_paragraph { + margin-top: 10px; + font-size: 18px; +} + +/* intro - list of datasets */ + +.dataset-heading { + /*background: #000;*/ + width: 100%; + padding: 0 25px; +} +.dataset-heading p{ + max-width: none; +} +.dataset-heading h1{ + max-width: none; +} +.dataset-list { + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 20px 0 0 0; +} +.dataset-list a { + text-decoration: none; + transition: border 0.1s cubic-bezier(0,0,1,1); + margin: 0 11px 22px 0; + border: 1px solid #333; + border-radius: 4px; +} +.dataset-list .dataset { + width: 300px; + padding: 12px; + color: white; + font-weight: 400; + font-family: 'Roboto'; + position: relative; +} +.dataset-list .dataset-image { + background-size: cover; + width: auto; + height: 178px; +} +.desktop .content .dataset-list a { + border: 1px solid #333; + +} +.desktop .dataset-list a:hover { + border: 1px solid #666; +} +.dataset-list .fields { + font-size: 12px; + color: #ccc; +} +.dataset-list .dataset .title{ + font-size: 16px; + line-height: 20px; + margin-bottom: 4px; + font-weight: 400; + display: block; +} +.dataset-list .fields div { + display: block; +} +.dataset-list .sort-options { + margin: 0; + padding: 0; +} +.dataset-list .sort-options:before { + content: 'Browse list by:'; + opacity: 0.7; + display: block; + padding-bottom: 10px; +} +.dataset-list .sort-options li { + display: inline-block; + margin: 0; + cursor: pointer; + margin-right: 10px; + transition: background 0.2s; + background: #555; + color: #fff; + padding: 7px 11px; + border-radius: 4px; + font-weight: 400; + font-size: 14px; + cursor: pointer; + user-select: none; + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; +} +.dataset-list .sort-options li:last-child { + margin-right:0; +} +.dataset-list .sort-options li.active { + background: #fff; + color: #000; +} +.desktop .dataset-list .sort-options li:hover { + background: #888; +} +.desktop .dataset-list .sort-options li.active:hover { + background: #fff; +} +.dataset_list .applet { + margin-bottom: 15px; +} + + + +/* intro section for datasets */ + +section.intro_section { + font-family: 'Roboto Mono'; + width: 100%; + background-size: cover; + background-position: center left; + /*padding: 50px 0;*/ + min-height: 40vh; + display: flex; + justify-content: center; + align-items: center; + background-color: #111111; + margin-bottom: 20px; + padding: 0; +} +.intro_section .inner { + max-width: 960px; + margin: 3rem auto; +} +.intro_section .hero_desc { + font-size: 38px; + line-height: 60px; + margin-bottom: 30px; + color: #ddd; + font-weight: 400; +} +.mobile .intro_section .hero_desc{ + font-size: 16px; + line-height: 32px; + margin-bottom: 20px; +} +.intro_section .hero_desc .dataset-name{ + color:#fff; +} +.intro_section .hero_subdesc { + font-size: 17px; + line-height: 36px; + max-width: 80%; + font-weight: 400; + color: #ddd; +} +.mobile .intro_section .hero_subdesc { + font-size: 14px; + line-height: 28px; +} +.intro_section .hero_desc .bgpad { + box-shadow: -10px -10px #181818, 10px -10px #181818, 10px 10px #181818, -10px 10px #181818; + background: #181818; +} +.intro_section .hero_subdesc .bgpad { + box-shadow: -10px -10px #181818, 10px -10px #181818, 10px 10px #181818, -10px 10px #181818; + background: #181818; +} +.mobile .intro_section .hero_desc .bgpad { + box-shadow: -6px -6px #181818, 6px -6px #181818, 6px 6px #181818, -6px 6px #181818; + background: #181818; +} +.mobile .intro_section .hero_subdesc .bgpad { + box-shadow: -6px -6px #181818, 6px -6px #181818, 6px 6px #181818, -6px 6px #181818; + background: #181818; +} + + +.firefox .intro_section div > span { + box-decoration-break: clone; +} + +/* ----------------------------------------------------- +page-specific formatting +----------------------------------------------------- */ + +/* Dataset */ + +.leaflet-container{ + margin-bottom: 10px +} + +.hr-wave-holder { + /* Clip edges, as some of the lines don't terminate nicely. */ + overflow: hidden; + position: relative; + width: 100%; + height: 50px; + margin-top:50px; +} + +.hr-wave-line1 { + background: linear-gradient(45deg, transparent, transparent 49%, #fff 49%, transparent 51%); +} +.hr-wave-line2 { + background: linear-gradient(-45deg, transparent, transparent 49%, #fff 49%, transparent 51%); +} +.hr-wave-line { + background-size: 20px 20px; + position: absolute; + width: 100%; + height: 10px; +} + + +/* map */ + +ul.map-legend{ + display: inline-block; + margin: 0; + font-size: 14px; +} +ul.map-legend li { + margin-right: 10px; + padding-top: 4px; + display: inline-block; + cursor: pointer; +} +.desktop ul.map-legend li:hover { + text-decoration: underline; +} +ul.map-legend li:before { + content: ''; + display: inline-block; + width: 10px; + height: 10px; + margin-right: 6px; +} +ul.map-legend li.active { + text-decoration: underline; + color: #fff; +} +ul.map-legend li.edu:before { + background-color: #f2f293; +} +ul.map-legend li.com:before { + background-color: #3264f6; +} +ul.map-legend li.gov:before { + background-color: #f30000; +} +ul.map-legend li.source:before { + content: none; + display: inline-block; + width: 0px; + margin-right: 10px; +} + +/* about */ +.desktop a.ahrefmoz{ + color:#DE5825; +} +.desktop a.ahrefmoz:hover{ + color:#EF6D3B; +} + +.content-about { + color: #fff; +} +.content-about p { + font-size: 16px; +} +.content-about ul{ + font-size: 14px; + font-weight: 300; +} +.content-about section:first-of-type > p:first-of-type { + font-size: 22px; + line-height: 40px; +} +.content-about .about-menu ul li { + display: inline-block; + font-size: 14px; + font-weight: 400; + text-transform: uppercase; + margin-right: 15px; + font-family: 'Roboto'; +} +.content-about .about-menu ul li a { + border-bottom: 0; + color: #aaa; +} + +.content-about .about-menu ul li a.current { + border-bottom: 1px solid #ddd; + color: #ddd; +} + +/* columns */ + +.columns { + display: flex; + flex-direction: row; + justify-content: flex-start; +} +.content-about .columns .column{ + /* on the about page use padding and bg color */ + background: #202020; + padding: 20px; +} +.columns .column { + font-family: Roboto, sans-serif; + font-weight: 400; + margin: 10px; +} +.columns .column:first-of-type { + margin-left: 0; +} +.columns-2 .column { + width: 50%; +} +.columns-3 .column { + width: 33%; +} +.columns-4 .column { + width: 25%; +} + +/* about page */ + + +.flex-container { + padding: 0; + margin: 0; + list-style: none; + + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + + -webkit-flex-flow: row wrap; + justify-content: space-around; +} + +.content-about .team-photos-container{ + margin:40px 0; +} +.content-about .team-member { + height: auto; + margin-top: 10px; + color: white; + width: 400px; + font-weight: bold; + flex-grow: 1; + margin:0 40px 0 0; + padding:20px; + border-radius:6px; + background: #202020; +} +.content-about .team-member&:last-child{ + margin:0 0 0 40px; +} +.content-about .team-member p{ + font-size:16px; +} +.content-about .team-member img{ + margin:0; + display: block; +} +.content-about .team-member h3{ + font-size:20px; +} + + + +/* footnotes */ + +a.footnote { + font-size: 9px; + line-height: 0px; + position: relative; + /*display: inline-block;*/ + bottom: 7px; + text-decoration: none; + color: #ff8; + border: 0; + left: -1px; + transition-duration: 0s; +} +a.footnote_shim { + /*display: inline-block;*/ + width: 1px; height: 1px; + overflow: hidden; + position: relative; + top: -90px; + visibility: hidden; +} +.right-sidebar a.footnote { + bottom: 8px; +} +.desktop a.footnote:hover { + /*background-color: #ff8;*/ + color: #fff; + border: 0; +} +.backlinks { + margin-right: 10px; +} +.content .backlinks a { + color: #ff8; + font-size: 10px; + text-decoration: none; + border: 0; + font-weight: bold; + position: relative; + bottom: 5px; + margin-right: 2px; +} +.content .footnotes .backlinks a { + bottom: 3px; +} +li p { + margin: 0; padding: 0; + display: inline; +} + +/* citation browser */ + +.citationHeader { + max-width: 720px; + margin: 10px auto; + padding-bottom: 10px +} +.download-btn { + display: inline-block; + font-size: 13px; + color: #ddd; + cursor: pointer; + background: #333; + padding: 8px 10px; + border-radius: 5px; + transition: all 0.1s; +} diff --git a/site/public/assets/css/fonts.css b/site/public/assets/css/fonts.css new file mode 100644 index 00000000..8db01fbd --- /dev/null +++ b/site/public/assets/css/fonts.css @@ -0,0 +1,41 @@ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 300; + src: url("../fonts/Roboto_300.eot?#iefix") format("embedded-opentype"), url("../fonts/Roboto_300.woff") format("woff"), url("../fonts/Roboto_300.woff2") format("woff2"), url("../fonts/Roboto_300.svg#Roboto") format("svg"), url("../fonts/Roboto_300.ttf") format("truetype"); +} + +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + src: url("../fonts/Roboto_400.eot?#iefix") format("embedded-opentype"), url("../fonts/Roboto_400.woff") format("woff"), url("../fonts/Roboto_400.woff2") format("woff2"), url("../fonts/Roboto_400.svg#Roboto") format("svg"), url("../fonts/Roboto_400.ttf") format("truetype"); +} + +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 500; + src: url("../fonts/Roboto_500.eot?#iefix") format("embedded-opentype"), url("../fonts/Roboto_500.woff") format("woff"), url("../fonts/Roboto_500.woff2") format("woff2"), url("../fonts/Roboto_500.svg#Roboto") format("svg"), url("../fonts/Roboto_500.ttf") format("truetype"); +} + +@font-face { + font-family: 'Roboto Mono'; + font-style: normal; + font-weight: 300; + src: url("../fonts/Roboto_Mono_300.eot?#iefix") format("embedded-opentype"), url("../fonts/Roboto_Mono_300.woff") format("woff"), url("../fonts/Roboto_Mono_300.woff2") format("woff2"), url("../fonts/Roboto_Mono_300.svg#RobotoMono") format("svg"), url("../fonts/Roboto_Mono_300.ttf") format("truetype"); +} + +@font-face { + font-family: 'Roboto Mono'; + font-style: normal; + font-weight: 400; + src: url("../fonts/Roboto_Mono_400.eot?#iefix") format("embedded-opentype"), url("../fonts/Roboto_Mono_400.woff") format("woff"), url("../fonts/Roboto_Mono_400.woff2") format("woff2"), url("../fonts/Roboto_Mono_400.svg#RobotoMono") format("svg"), url("../fonts/Roboto_Mono_400.ttf") format("truetype"); +} + +@font-face { + font-family: 'Roboto Mono'; + font-style: normal; + font-weight: 500; + src: local("Roboto-Mono Medium"), local("RobotoMono-Medium"), url("../fonts/Roboto_Mono_500.eot?#iefix") format("embedded-opentype"), url("../fonts/Roboto_Mono_500.woff") format("woff"), url("../fonts/Roboto_Mono_500.woff2") format("woff2"), url("../fonts/Roboto_Mono_500.svg#RobotoMono") format("svg"), url("../fonts/Roboto_Mono_500.ttf") format("truetype"); +} diff --git a/site/public/assets/css/leaflet.css b/site/public/assets/css/leaflet.css new file mode 100644 index 00000000..a0932d57 --- /dev/null +++ b/site/public/assets/css/leaflet.css @@ -0,0 +1,635 @@ +/* required styles */ + +.leaflet-pane, +.leaflet-tile, +.leaflet-marker-icon, +.leaflet-marker-shadow, +.leaflet-tile-container, +.leaflet-pane > svg, +.leaflet-pane > canvas, +.leaflet-zoom-box, +.leaflet-image-layer, +.leaflet-layer { + position: absolute; + left: 0; + top: 0; + } +.leaflet-container { + overflow: hidden; + } +.leaflet-tile, +.leaflet-marker-icon, +.leaflet-marker-shadow { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + -webkit-user-drag: none; + } +/* Safari renders non-retina tile on retina better with this, but Chrome is worse */ +.leaflet-safari .leaflet-tile { + image-rendering: -webkit-optimize-contrast; + } +/* hack that prevents hw layers "stretching" when loading new tiles */ +.leaflet-safari .leaflet-tile-container { + width: 1600px; + height: 1600px; + -webkit-transform-origin: 0 0; + } +.leaflet-marker-icon, +.leaflet-marker-shadow { + display: block; + } +/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */ +/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */ +.leaflet-container .leaflet-overlay-pane svg, +.leaflet-container .leaflet-marker-pane img, +.leaflet-container .leaflet-shadow-pane img, +.leaflet-container .leaflet-tile-pane img, +.leaflet-container img.leaflet-image-layer, +.leaflet-container .leaflet-tile { + max-width: none !important; + max-height: none !important; + } + +.leaflet-container.leaflet-touch-zoom { + -ms-touch-action: pan-x pan-y; + touch-action: pan-x pan-y; + } +.leaflet-container.leaflet-touch-drag { + -ms-touch-action: pinch-zoom; + /* Fallback for FF which doesn't support pinch-zoom */ + touch-action: none; + touch-action: pinch-zoom; +} +.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom { + -ms-touch-action: none; + touch-action: none; +} +.leaflet-container { + -webkit-tap-highlight-color: transparent; +} +.leaflet-container a { + -webkit-tap-highlight-color: rgba(51, 181, 229, 0.4); +} +.leaflet-tile { + filter: inherit; + visibility: hidden; + } +.leaflet-tile-loaded { + visibility: inherit; + } +.leaflet-zoom-box { + width: 0; + height: 0; + -moz-box-sizing: border-box; + box-sizing: border-box; + z-index: 800; + } +/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */ +.leaflet-overlay-pane svg { + -moz-user-select: none; + } + +.leaflet-pane { z-index: 400; } + +.leaflet-tile-pane { z-index: 200; } +.leaflet-overlay-pane { z-index: 400; } +.leaflet-shadow-pane { z-index: 500; } +.leaflet-marker-pane { z-index: 600; } +.leaflet-tooltip-pane { z-index: 650; } +.leaflet-popup-pane { z-index: 700; } + +.leaflet-map-pane canvas { z-index: 100; } +.leaflet-map-pane svg { z-index: 200; } + +.leaflet-vml-shape { + width: 1px; + height: 1px; + } +.lvml { + behavior: url(#default#VML); + display: inline-block; + position: absolute; + } + + +/* control positioning */ + +.leaflet-control { + position: relative; + z-index: 800; + pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ + pointer-events: auto; + } +.leaflet-top, +.leaflet-bottom { + position: absolute; + z-index: 1000; + pointer-events: none; + } +.leaflet-top { + top: 0; + } +.leaflet-right { + right: 0; + } +.leaflet-bottom { + bottom: 0; + } +.leaflet-left { + left: 0; + } +.leaflet-control { + float: left; + clear: both; + } +.leaflet-right .leaflet-control { + float: right; + } +.leaflet-top .leaflet-control { + margin-top: 10px; + } +.leaflet-bottom .leaflet-control { + margin-bottom: 10px; + } +.leaflet-left .leaflet-control { + margin-left: 10px; + } +.leaflet-right .leaflet-control { + margin-right: 10px; + } + + +/* zoom and fade animations */ + +.leaflet-fade-anim .leaflet-tile { + will-change: opacity; + } +.leaflet-fade-anim .leaflet-popup { + opacity: 0; + -webkit-transition: opacity 0.2s linear; + -moz-transition: opacity 0.2s linear; + transition: opacity 0.2s linear; + } +.leaflet-fade-anim .leaflet-map-pane .leaflet-popup { + opacity: 1; + } +.leaflet-zoom-animated { + -webkit-transform-origin: 0 0; + -ms-transform-origin: 0 0; + transform-origin: 0 0; + } +.leaflet-zoom-anim .leaflet-zoom-animated { + will-change: transform; + } +.leaflet-zoom-anim .leaflet-zoom-animated { + -webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1); + -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1); + transition: transform 0.25s cubic-bezier(0,0,0.25,1); + } +.leaflet-zoom-anim .leaflet-tile, +.leaflet-pan-anim .leaflet-tile { + -webkit-transition: none; + -moz-transition: none; + transition: none; + } + +.leaflet-zoom-anim .leaflet-zoom-hide { + visibility: hidden; + } + + +/* cursors */ + +.leaflet-interactive { + cursor: pointer; + } +.leaflet-grab { + cursor: -webkit-grab; + cursor: -moz-grab; + cursor: grab; + } +.leaflet-crosshair, +.leaflet-crosshair .leaflet-interactive { + cursor: crosshair; + } +.leaflet-popup-pane, +.leaflet-control { + cursor: auto; + } +.leaflet-dragging .leaflet-grab, +.leaflet-dragging .leaflet-grab .leaflet-interactive, +.leaflet-dragging .leaflet-marker-draggable { + cursor: move; + cursor: -webkit-grabbing; + cursor: -moz-grabbing; + cursor: grabbing; + } + +/* marker & overlays interactivity */ +.leaflet-marker-icon, +.leaflet-marker-shadow, +.leaflet-image-layer, +.leaflet-pane > svg path, +.leaflet-tile-container { + pointer-events: none; + } + +.leaflet-marker-icon.leaflet-interactive, +.leaflet-image-layer.leaflet-interactive, +.leaflet-pane > svg path.leaflet-interactive { + pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ + pointer-events: auto; + } + +/* visual tweaks */ + +.leaflet-container { + background: #ddd; + outline: 0; + } +.leaflet-container a { + color: #0078A8; + } +.leaflet-container a.leaflet-active { + outline: 2px solid orange; + } +.leaflet-zoom-box { + border: 2px dotted #38f; + background: rgba(255,255,255,0.5); + } + + +/* general typography */ +.leaflet-container { + font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif; + } + + +/* general toolbar styles */ + +.leaflet-bar { + box-shadow: 0 1px 5px rgba(0,0,0,0.65); + border-radius: 4px; + } +.leaflet-bar a, +.leaflet-bar a:hover { + background-color: #fff; + border-bottom: 1px solid #ccc; + width: 26px; + height: 26px; + line-height: 26px; + display: block; + text-align: center; + text-decoration: none; + color: black; + } +.leaflet-bar a, +.leaflet-control-layers-toggle { + background-position: 50% 50%; + background-repeat: no-repeat; + display: block; + } +.leaflet-bar a:hover { + background-color: #f4f4f4; + } +.leaflet-bar a:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + } +.leaflet-bar a:last-child { + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + border-bottom: none; + } +.leaflet-bar a.leaflet-disabled { + cursor: default; + background-color: #f4f4f4; + color: #bbb; + } + +.leaflet-touch .leaflet-bar a { + width: 30px; + height: 30px; + line-height: 30px; + } +.leaflet-touch .leaflet-bar a:first-child { + border-top-left-radius: 2px; + border-top-right-radius: 2px; + } +.leaflet-touch .leaflet-bar a:last-child { + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; + } + +/* zoom control */ + +.leaflet-control-zoom-in, +.leaflet-control-zoom-out { + font: bold 18px 'Lucida Console', Monaco, monospace; + text-indent: 1px; + } + +.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out { + font-size: 22px; + } + + +/* layers control */ + +.leaflet-control-layers { + box-shadow: 0 1px 5px rgba(0,0,0,0.4); + background: #fff; + border-radius: 5px; + } +.leaflet-control-layers-toggle { + background-image: url(images/layers.png); + width: 36px; + height: 36px; + } +.leaflet-retina .leaflet-control-layers-toggle { + background-image: url(images/layers-2x.png); + background-size: 26px 26px; + } +.leaflet-touch .leaflet-control-layers-toggle { + width: 44px; + height: 44px; + } +.leaflet-control-layers .leaflet-control-layers-list, +.leaflet-control-layers-expanded .leaflet-control-layers-toggle { + display: none; + } +.leaflet-control-layers-expanded .leaflet-control-layers-list { + display: block; + position: relative; + } +.leaflet-control-layers-expanded { + padding: 6px 10px 6px 6px; + color: #333; + background: #fff; + } +.leaflet-control-layers-scrollbar { + overflow-y: scroll; + overflow-x: hidden; + padding-right: 5px; + } +.leaflet-control-layers-selector { + margin-top: 2px; + position: relative; + top: 1px; + } +.leaflet-control-layers label { + display: block; + } +.leaflet-control-layers-separator { + height: 0; + border-top: 1px solid #ddd; + margin: 5px -10px 5px -6px; + } + +/* Default icon URLs */ +.leaflet-default-icon-path { + background-image: url(images/marker-icon.png); + } + + +/* attribution and scale controls */ + +.leaflet-container .leaflet-control-attribution { + background: #fff; + background: rgba(255, 255, 255, 0.7); + margin: 0; + } +.leaflet-control-attribution, +.leaflet-control-scale-line { + padding: 0 5px; + color: #333; + } +.leaflet-control-attribution a { + text-decoration: none; + } +.leaflet-control-attribution a:hover { + text-decoration: underline; + } +.leaflet-container .leaflet-control-attribution, +.leaflet-container .leaflet-control-scale { + font-size: 11px; + } +.leaflet-left .leaflet-control-scale { + margin-left: 5px; + } +.leaflet-bottom .leaflet-control-scale { + margin-bottom: 5px; + } +.leaflet-control-scale-line { + border: 2px solid #777; + border-top: none; + line-height: 1.1; + padding: 2px 5px 1px; + font-size: 11px; + white-space: nowrap; + overflow: hidden; + -moz-box-sizing: border-box; + box-sizing: border-box; + + background: #fff; + background: rgba(255, 255, 255, 0.5); + } +.leaflet-control-scale-line:not(:first-child) { + border-top: 2px solid #777; + border-bottom: none; + margin-top: -2px; + } +.leaflet-control-scale-line:not(:first-child):not(:last-child) { + border-bottom: 2px solid #777; + } + +.leaflet-touch .leaflet-control-attribution, +.leaflet-touch .leaflet-control-layers, +.leaflet-touch .leaflet-bar { + box-shadow: none; + } +.leaflet-touch .leaflet-control-layers, +.leaflet-touch .leaflet-bar { + border: 2px solid rgba(0,0,0,0.2); + background-clip: padding-box; + } + + +/* popup */ + +.leaflet-popup { + position: absolute; + text-align: center; + margin-bottom: 20px; + } +.leaflet-popup-content-wrapper { + padding: 1px; + text-align: left; + border-radius: 12px; + } +.leaflet-popup-content { + margin: 13px 19px; + line-height: 1.4; + } +.leaflet-popup-content p { + margin: 18px 0; + } +.leaflet-popup-tip-container { + width: 40px; + height: 20px; + position: absolute; + left: 50%; + margin-left: -20px; + overflow: hidden; + pointer-events: none; + } +.leaflet-popup-tip { + width: 17px; + height: 17px; + padding: 1px; + + margin: -10px auto 0; + + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + } +.leaflet-popup-content-wrapper, +.leaflet-popup-tip { + background: white; + color: #333; + box-shadow: 0 3px 14px rgba(0,0,0,0.4); + } +.leaflet-container a.leaflet-popup-close-button { + position: absolute; + top: 0; + right: 0; + padding: 4px 4px 0 0; + border: none; + text-align: center; + width: 18px; + height: 14px; + font: 16px/14px Tahoma, Verdana, sans-serif; + color: #c3c3c3; + text-decoration: none; + font-weight: bold; + background: transparent; + } +.leaflet-container a.leaflet-popup-close-button:hover { + color: #999; + } +.leaflet-popup-scrolled { + overflow: auto; + border-bottom: 1px solid #ddd; + border-top: 1px solid #ddd; + } + +.leaflet-oldie .leaflet-popup-content-wrapper { + zoom: 1; + } +.leaflet-oldie .leaflet-popup-tip { + width: 24px; + margin: 0 auto; + + -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)"; + filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678); + } +.leaflet-oldie .leaflet-popup-tip-container { + margin-top: -1px; + } + +.leaflet-oldie .leaflet-control-zoom, +.leaflet-oldie .leaflet-control-layers, +.leaflet-oldie .leaflet-popup-content-wrapper, +.leaflet-oldie .leaflet-popup-tip { + border: 1px solid #999; + } + + +/* div icon */ + +.leaflet-div-icon { + background: #fff; + border: 1px solid #666; + } + + +/* Tooltip */ +/* Base styles for the element that has a tooltip */ +.leaflet-tooltip { + position: absolute; + padding: 6px; + background-color: #fff; + border: 1px solid #fff; + border-radius: 3px; + color: #222; + white-space: nowrap; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + pointer-events: none; + box-shadow: 0 1px 3px rgba(0,0,0,0.4); + } +.leaflet-tooltip.leaflet-clickable { + cursor: pointer; + pointer-events: auto; + } +.leaflet-tooltip-top:before, +.leaflet-tooltip-bottom:before, +.leaflet-tooltip-left:before, +.leaflet-tooltip-right:before { + position: absolute; + pointer-events: none; + border: 6px solid transparent; + background: transparent; + content: ""; + } + +/* Directions */ + +.leaflet-tooltip-bottom { + margin-top: 6px; +} +.leaflet-tooltip-top { + margin-top: -6px; +} +.leaflet-tooltip-bottom:before, +.leaflet-tooltip-top:before { + left: 50%; + margin-left: -6px; + } +.leaflet-tooltip-top:before { + bottom: 0; + margin-bottom: -12px; + border-top-color: #fff; + } +.leaflet-tooltip-bottom:before { + top: 0; + margin-top: -12px; + margin-left: -6px; + border-bottom-color: #fff; + } +.leaflet-tooltip-left { + margin-left: -6px; +} +.leaflet-tooltip-right { + margin-left: 6px; +} +.leaflet-tooltip-left:before, +.leaflet-tooltip-right:before { + top: 50%; + margin-top: -6px; + } +.leaflet-tooltip-left:before { + right: 0; + margin-right: -12px; + border-left-color: #fff; + } +.leaflet-tooltip-right:before { + left: 0; + margin-left: -12px; + border-right-color: #fff; + } diff --git a/site/public/assets/css/mobile.css b/site/public/assets/css/mobile.css new file mode 100644 index 00000000..124b9d42 --- /dev/null +++ b/site/public/assets/css/mobile.css @@ -0,0 +1,172 @@ +/* MOBILE - iphone/ipad css */ + +softbr { + display: none; +} + +@media all and (max-device-width: 1024px) { + softbr { + display: block; + height: 10px; + } + + /* header / footer */ + + header .slogan { + padding-left: 10px; + } + header .splash { + display: none; + } + .home header .links a { + margin-right: 0; + } + header .links a { + padding-right: 0; + margin-right: 14px; + font-size: 14px; + } + footer { + font-size: 14px; + line-height: 1.6; + } + footer > div:nth-child(1) { + padding: 0; + color: #ccc; + margin-bottom: 15px; + } + footer > div:nth-child(2) { + padding: 0; + color: #ccc; + margin-bottom: 15px; + } + footer a { + color: #eee; + border-color: #ccc; + } + footer ul { + flex-wrap: wrap; + } + h1 { + font-size: 32px; + line-height: 44px; + } + + /* MOBILE content */ + + .intro_section { + padding: 50px 0 20px 0; + } + .intro_section .hero_desc { + font-size: 28px; + line-height: 50px; + margin-bottom: 20px; + } + .intro_section .inner { + margin: 0; + max-width: 100%; + padding: 20px; + } + .intro_section .hero_subdesc { + max-width: 100%; + } + section h1, section h2, section h3, section h4, section h5, section h6, section p { + max-width: 100%; + } + section { + width: 100%; + padding: 0 25px; + } + section p{ + font-size: 15px; + } + section.about-menu { + padding: 0; + } + .content-about .about-menu ul li{ + font-size: 12px; + } + .content-about .team-member p{ + font-size: 13px; + line-height: 26px; + } + .content-about section:first-of-type > p:first-of-type { + font-size: 16px; + line-height: 30px; + } + .meta { + margin-right: 0px; + margin-bottom: 10px; + } + .modal img { + max-width: 100%; + display: block; + } + th { + overflow: hidden; + text-overflow: ellipsis; + } + section.wide { + width: 100%; + } + .map, .map .applet { + height: 360px; + } + .dataset-heading section { + padding: 0; + } + .dataset-list .dataset { + width: 100%; + } + .dataset-list a { + width: 100%; + } + + .content td a { + text-overflow: ellipsis; + max-width: 100%; + overflow: hidden; + display: inline-block; + } + + .content-about .team-member { + margin: 0 0 10px 0; + padding: 15px; + margin-bottom: 25px; + } + .page_name { + display: none; + } +} + +/* iphone-specific */ +@media all and (max-device-width: 640px) { + .right-sidebar { + float: none; + width: 100%; + border: 0; + margin: 0 0 14px 0; + padding: 0 2px; + } + .map, .map .applet { + height: 360px; + } + .citationBrowser input.q { + max-width: 180px; + } + .columns { + flex-direction: column; + } + .columns .column { + margin: 0; + margin-bottom: 25px; + } + .columns-2 .column, + .columns-3 .column, + .columns-4 .column { + width: 100%; + } + .teaser { + display: none; + } +} \ No newline at end of file diff --git a/site/public/assets/css/splash.css b/site/public/assets/css/splash.css new file mode 100644 index 00000000..6089f10d --- /dev/null +++ b/site/public/assets/css/splash.css @@ -0,0 +1,134 @@ +/* splash */ + +html, body { + overflow: hidden; + width: 100%; height: 100%; +} +header { + position: absolute; + background: transparent; + box-shadow: none; +} +footer { + background: transparent; + position: absolute; + bottom: 0; left: 0; + padding: 20px; +} +footer div { + z-index: 2; +} +footer { + background: #111; +} +header .links a.activeLink { + color: white; + border-bottom-color: white; +} +.splash { +} +#three_container { + position: absolute; + top: 0; left: 0; + width: 100%; height: 100%; +} + +.about.open { + pointer-events: auto; + opacity: 1; + cursor: pointer; +} +.about { + position: absolute; + top: 0; left: 0; + width: 100%; height: 100%; + display: flex; + align-items: center; + justify-content: center; + background: rgba(0,0,0,0.5); + opacity: 0; + pointer-events: none; + transition: opacity 400ms; + overflow-y: scroll; +} +.about .inner { + padding: 40px; + background: #000; + color: #eee; + max-width: 600px; + line-height: 1.5; + cursor: text; +} +.about .inner b { + color: #fff; +} +.about a { + color: #fff; +} +p { + margin: 0 10px 20px 0; + line-height: 1.5; + font-size: 14px; + font-weight: 300; +} + +@media screen and (max-width: 700px) { + header, footer { + transition: background 0.4s; + } + .modalOpen header, + .modalOpen footer { + background: rgba(25, 25, 25, 1.0); + } + header .slogan { + padding-left: 10px; + } + footer { + display: block; + background: rgba(25, 25, 25, 0.8); + padding: 10px 20px; + } + footer div { + background: transparent; + text-align: center; + width: 100%; + display: block; + padding: 0; + } + header .links { + display: block; + text-align: right; + padding: 0; + padding-right: 10px; + } + header .links span, + header .links a { + display: inline-block; + text-align: right; + margin: 0; + font-size: 12px; + background: rgba(25, 25, 25, 0.5); + text-shadow: 0 0 0 rgba(0,0,0,0); + border-bottom: 0; + } + .about { + display: block; + } + .about .inner { + max-width: 100%; + padding: 20px; + padding-top: 80px; + padding-bottom: 50px; + } +} +@media screen and (max-height: 500px) { + .about { + display: block; + } + .about .inner { + max-width: 100%; + padding: 20px; + padding-top: 70px; + padding-bottom: 50px; + } +} diff --git a/site/public/assets/css/tabulator.css b/site/public/assets/css/tabulator.css new file mode 100755 index 00000000..d26b5cfc --- /dev/null +++ b/site/public/assets/css/tabulator.css @@ -0,0 +1,759 @@ +/* Tabulator v4.1.3 (c) Oliver Folkerd */ +.tabulator { + position: relative; + font-size: 13px; + text-align: left; + overflow: hidden; + -ms-transform: translatez(0); + transform: translatez(0); +} + +.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table { + min-width: 100%; +} + +.tabulator.tabulator-block-select { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.tabulator .tabulator-header { + position: relative; + box-sizing: border-box; + width: 100%; + border-bottom: 1px solid #333; + color: #ddd; + white-space: nowrap; + overflow: hidden; + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; +} + +.tabulator .tabulator-header .tabulator-col { + display: inline-block; + position: relative; + box-sizing: border-box; + border-right: 1px solid #333; + text-align: left; + vertical-align: bottom; + overflow: hidden; + padding: 5px 0; +} + +.tabulator .tabulator-header .tabulator-col.tabulator-moving { + position: absolute; + border: 1px solid #333; + background: rgba(80,20,10,0.2); + pointer-events: none; +} + +.tabulator .tabulator-header .tabulator-col .tabulator-col-content { + box-sizing: border-box; + position: relative; + padding: 4px; +} + +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title { + box-sizing: border-box; + width: 100%; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + vertical-align: bottom; + /* AH */ + font-weight: 500; + font-size:14px; +} + +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { + box-sizing: border-box; + width: 100%; + border: 1px solid #333; + padding: 1px; + background: #fff; +} + +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow { + display: inline-block; + position: absolute; + top: 11px; + right: 8px; + width: 0; + height: 0; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #666; +} + +.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { + position: relative; + display: -ms-flexbox; + display: flex; + border-top: 1px solid #333; + overflow: hidden; +} + +.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child { + margin-right: -1px; +} + +.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev { + display: none; +} + +.tabulator .tabulator-header .tabulator-col.ui-sortable-helper { + position: absolute; + border: 1px solid #333; +} + +.tabulator .tabulator-header .tabulator-col .tabulator-header-filter { + position: relative; + box-sizing: border-box; + margin-top: 2px; + width: 100%; + text-align: center; +} + +.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea { + height: auto !important; +} + +.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg { + margin-top: 3px; +} + +.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear { + width: 0; + height: 0; +} + +.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { + padding-right: 25px; + padding-left: 6px; +} + +.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover { + cursor: pointer; +} + +.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-arrow { + border-top: none; + border-bottom: 6px solid #666; +} + +.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow { + border-top: none; + border-bottom: 6px solid #666; +} + +.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow { + border-top: 6px solid #666; + border-bottom: none; +} + +.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title { + -webkit-writing-mode: vertical-rl; + -ms-writing-mode: tb-rl; + writing-mode: vertical-rl; + text-orientation: mixed; + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; +} + +.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title { + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} + +.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title { + padding-right: 0; + padding-top: 20px; +} + +.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title { + padding-right: 0; + padding-bottom: 20px; +} + +.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow { + right: calc(50% - 6px); +} + +.tabulator .tabulator-header .tabulator-frozen { + display: inline-block; + position: absolute; + z-index: 10; +} + +.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left { + border-right: 2px solid #333; +} + +.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right { + border-left: 2px solid #333; +} + +.tabulator .tabulator-header .tabulator-calcs-holder { + box-sizing: border-box; + min-width: 400%; + background: rgba(80,20,10,0.2); + border-top: 1px solid #333; + border-bottom: 1px solid #333; + overflow: hidden; +} + +.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { + background: rgba(80,20,10,0.2); +} + +.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { + display: none; +} + +.tabulator .tabulator-header .tabulator-frozen-rows-holder { + min-width: 400%; +} + +.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty { + display: none; +} + +.tabulator .tabulator-tableHolder { + position: relative; + width: 100%; + white-space: nowrap; + overflow: auto; + -webkit-overflow-scrolling: touch; +} + +.tabulator .tabulator-tableHolder:focus { + outline: none; +} + +.tabulator .tabulator-tableHolder .tabulator-placeholder { + box-sizing: border-box; + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + width: 100%; +} + +.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode="virtual"] { + position: absolute; + top: 0; + left: 0; + height: 100%; +} + +.tabulator .tabulator-tableHolder .tabulator-placeholder span { + display: inline-block; + margin: 0 auto; + padding: 10px; + color: #ccc; + font-weight: bold; + font-size: 20px; +} + +.tabulator .tabulator-tableHolder .tabulator-table { + position: relative; + display: inline-block; + white-space: nowrap; + overflow: visible; +} + +.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs { + font-weight: bold; + background: rgba(80,20,10,0.2); +} + +.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { + border-bottom: 2px solid #333; +} + +.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { + border-top: 2px solid #333; +} + +.tabulator .tabulator-footer { + padding: 5px 10px; + border-top: 1px solid #999; + text-align: right; + color: #555; + font-weight: bold; + white-space: nowrap; + -ms-user-select: none; + user-select: none; + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; +} + +.tabulator .tabulator-footer .tabulator-calcs-holder { + box-sizing: border-box; + width: calc(100% + 20px); + margin: -5px -10px 5px -10px; + text-align: left; + background: rgba(80,20,10,0.2); + border-bottom: 1px solid #333; + border-top: 1px solid #333; + overflow: hidden; +} + +.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { + background: rgba(80,20,10,0.2); +} + +.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { + display: none; +} + +.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { + margin-bottom: -5px; + border-bottom: none; +} + +.tabulator .tabulator-footer .tabulator-pages { + margin: 0 7px; +} + +.tabulator .tabulator-footer .tabulator-page { + display: inline-block; + margin: 0 2px; + padding: 2px 5px; + border: 1px solid #333; + border-radius: 3px; + background: rgba(255, 255, 255, 0.2); + color: #555; + font-family: inherit; + font-weight: inherit; + font-size: inherit; +} + +.tabulator .tabulator-footer .tabulator-page.active { + color: #d00; +} + +.tabulator .tabulator-footer .tabulator-page:disabled { + opacity: .5; +} + +.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover { + cursor: pointer; + background: rgba(0, 0, 0, 0.2); + color: #fff; +} + +.tabulator .tabulator-col-resize-handle { + position: absolute; + right: 0; + top: 0; + bottom: 0; + width: 5px; +} + +.tabulator .tabulator-col-resize-handle.prev { + left: 0; + right: auto; +} + +.tabulator .tabulator-col-resize-handle:hover { + cursor: ew-resize; +} + +.tabulator .tabulator-loader { + position: absolute; + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + top: 0; + left: 0; + z-index: 100; + height: 100%; + width: 100%; + background: rgba(0, 0, 0, 0.4); + text-align: center; +} + +.tabulator .tabulator-loader .tabulator-loader-msg { + display: inline-block; + margin: 0 auto; + padding: 10px 20px; + border-radius: 4px; + background: #fff; + font-weight: bold; + font-size: 16px; +} + +.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading { + border: 4px solid #333; + color: #000; +} + +.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error { + color: #000; +} + +.tabulator-row { + position: relative; + box-sizing: border-box; + min-height: 22px; +} + +.tabulator-row.tabulator-row-even { +} + +.tabulator-row.tabulator-selectable:hover { + cursor: pointer; +} + +.tabulator-row.tabulator-selected { + background-color: #9ABCEA; +} + +.tabulator-row.tabulator-selected:hover { + background-color: #555; + cursor: pointer; +} + +.tabulator-row.tabulator-row-moving { + border: 1px solid #000; + background: #fff; +} + +.tabulator-row.tabulator-moving { + position: absolute; + border-top: 1px solid #333; + border-bottom: 1px solid #333; + pointer-events: none; + z-index: 15; +} + +.tabulator-row .tabulator-row-resize-handle { + position: absolute; + right: 0; + bottom: 0; + left: 0; + height: 5px; +} + +.tabulator-row .tabulator-row-resize-handle.prev { + top: 0; + bottom: auto; +} + +.tabulator-row .tabulator-row-resize-handle:hover { + cursor: ns-resize; +} + +.tabulator-row .tabulator-frozen { + display: inline-block; + position: absolute; + background-color: inherit; + z-index: 10; +} + +.tabulator-row .tabulator-frozen.tabulator-frozen-left { + border-right: 2px solid #333; +} + +.tabulator-row .tabulator-frozen.tabulator-frozen-right { + border-left: 2px solid #333; +} + +.tabulator-row .tabulator-responsive-collapse { + box-sizing: border-box; + padding: 5px; + border-top: 1px solid #333; + border-bottom: 1px solid #333; +} + +.tabulator-row .tabulator-responsive-collapse:empty { + display: none; +} + +.tabulator-row .tabulator-responsive-collapse table { + font-size: 13px; +} + +.tabulator-row .tabulator-responsive-collapse table tr td { + position: relative; +} + +.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type { + padding-right: 10px; +} + +.tabulator-row .tabulator-cell { + display: inline-block; + position: relative; + box-sizing: border-box; + padding: 10px; + border-right: 1px solid #333; + vertical-align: middle; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.tabulator-row .tabulator-cell.tabulator-editing { + border: 1px solid #1D68CD; + padding: 0; +} + +.tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select { + border: 1px; + background: transparent; +} + +.tabulator-row .tabulator-cell.tabulator-validation-fail { + border: 1px solid #dd0000; +} + +.tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select { + border: 1px; + background: transparent; + color: #dd0000; +} + +.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev { + display: none; +} + +.tabulator-row .tabulator-cell.tabulator-row-handle { + display: -ms-inline-flexbox; + display: inline-flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; +} + +.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box { + width: 80%; +} + +.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar { + width: 100%; + height: 3px; + margin-top: 2px; + background: #666; +} + +.tabulator-row .tabulator-cell .tabulator-data-tree-branch { + display: inline-block; + vertical-align: middle; + height: 9px; + width: 7px; + margin-top: -9px; + margin-right: 5px; + border-bottom-left-radius: 1px; + border-left: 2px solid #333; + border-bottom: 2px solid #333; +} + +.tabulator-row .tabulator-cell .tabulator-data-tree-control { + display: -ms-inline-flexbox; + display: inline-flex; + -ms-flex-pack: center; + justify-content: center; + -ms-flex-align: center; + align-items: center; + vertical-align: middle; + height: 11px; + width: 11px; + margin-right: 5px; + border: 1px solid #333; + border-radius: 2px; + background: rgba(0, 0, 0, 0.1); + overflow: hidden; +} + +.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover { + cursor: pointer; + background: rgba(0, 0, 0, 0.2); +} + +.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse { + display: inline-block; + position: relative; + height: 7px; + width: 1px; + background: transparent; +} + +.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { + position: absolute; + content: ""; + left: -3px; + top: 3px; + height: 1px; + width: 7px; +} + +.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { + display: inline-block; + position: relative; + height: 7px; + width: 1px; + background: #333; +} + +.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { + position: absolute; + content: ""; + left: -3px; + top: 3px; + height: 1px; + width: 7px; + background: #333; +} + +.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle { + display: -ms-inline-flexbox; + display: inline-flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; + height: 15px; + width: 15px; + border-radius: 4px; + background: #666; + color: #fff; + font-weight: bold; + font-size: 1.1em; +} + +.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover { + opacity: .7; +} + +.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close { + display: initial; +} + +.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open { + display: none; +} + +.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close { + display: none; +} + +.tabulator-row.tabulator-group { + box-sizing: border-box; + border-bottom: 1px solid #999; + border-right: 1px solid #333; + border-top: 1px solid #999; + padding: 5px; + padding-left: 10px; + background: #333; + font-weight: bold; + min-width: 100%; +} + +.tabulator-row.tabulator-group:hover { + cursor: pointer; + background-color: rgba(0, 0, 0, 0.1); +} + +.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow { + margin-right: 10px; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-top: 6px solid #666; + border-bottom: 0; +} + +.tabulator-row.tabulator-group.tabulator-group-level-1 .tabulator-arrow { + margin-left: 20px; +} + +.tabulator-row.tabulator-group.tabulator-group-level-2 .tabulator-arrow { + margin-left: 40px; +} + +.tabulator-row.tabulator-group.tabulator-group-level-3 .tabulator-arrow { + margin-left: 60px; +} + +.tabulator-row.tabulator-group.tabulator-group-level-4 .tabulator-arrow { + margin-left: 80px; +} + +.tabulator-row.tabulator-group.tabulator-group-level-5 .tabulator-arrow { + margin-left: 100px; +} + +.tabulator-row.tabulator-group .tabulator-arrow { + display: inline-block; + width: 0; + height: 0; + margin-right: 16px; + border-top: 6px solid transparent; + border-bottom: 6px solid transparent; + border-right: 0; + border-left: 6px solid #666; + vertical-align: middle; +} + +.tabulator-row.tabulator-group span { + margin-left: 10px; + color: #d00; +} + +.tabulator-edit-select-list { + position: absolute; + display: inline-block; + box-sizing: border-box; + max-height: 200px; + background: #fff; + border: 1px solid #333; + font-size: 13px; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + z-index: 10000; +} + +.tabulator-edit-select-list .tabulator-edit-select-list-item { + padding: 4px; + color: #333; +} + +.tabulator-edit-select-list .tabulator-edit-select-list-item.active { + color: #fff; + background: #1D68CD; +} + +.tabulator-edit-select-list .tabulator-edit-select-list-item:hover { + cursor: pointer; + color: #fff; + background: #1D68CD; +} + +.tabulator-edit-select-list .tabulator-edit-select-list-group { + border-bottom: 1px solid #333; + padding: 4px; + padding-top: 6px; + color: #333; + font-weight: bold; +} diff --git a/site/public/assets/data/3dlm_0_10.json b/site/public/assets/data/3dlm_0_10.json new file mode 100644 index 00000000..1f747008 --- /dev/null +++ b/site/public/assets/data/3dlm_0_10.json @@ -0,0 +1 @@ +{"Daisy_Fuentes_0004_2737.png":[[54.0,88.0,-86.4166488647461],[61.0,117.0,-94.31047821044922],[67.0,139.0,-100.80580139160156],[74.0,158.0,-104.98035430908203],[80.0,183.0,-102.41091918945312],[86.0,206.0,-88.20156860351562],[93.0,225.0,-67.11590576171875],[105.0,247.0,-44.081058502197266],[131.0,256.0,-27.08724594116211],[159.0,247.0,-24.630205154418945],[188.0,228.0,-33.128997802734375],[207.0,209.0,-43.85726547241211],[223.0,183.0,-49.67991256713867],[232.0,158.0,-47.00068664550781],[236.0,136.0,-39.36989212036133],[239.0,113.0,-29.353200912475586],[239.0,88.0,-19.166582107543945],[45.0,94.0,9.0930757522583],[48.0,94.0,28.99441146850586],[61.0,94.0,43.41041564941406],[70.0,101.0,52.37288284301758],[80.0,104.0,56.78023910522461],[128.0,104.0,73.55677795410156],[137.0,98.0,77.24374389648438],[153.0,94.0,77.57779693603516],[172.0,94.0,73.60804748535156],[188.0,94.0,61.270816802978516],[105.0,132.0,54.630958557128906],[102.0,155.0,56.62538146972656],[99.0,171.0,60.56704330444336],[102.0,183.0,56.47877883911133],[96.0,180.0,22.875110626220703],[102.0,183.0,28.277494430541992],[112.0,187.0,32.87094497680664],[121.0,183.0,35.1693115234375],[128.0,180.0,34.83551025390625],[61.0,113.0,16.009923934936523],[64.0,113.0,29.9821834564209],[77.0,113.0,34.802860260009766],[89.0,120.0,32.677188873291016],[77.0,123.0,31.01885223388672],[67.0,123.0,24.31825828552246],[134.0,123.0,50.15107727050781],[143.0,117.0,60.02939987182617],[156.0,117.0,63.61414337158203],[169.0,120.0,55.770992279052734],[159.0,126.0,57.6904411315918],[147.0,126.0,55.69097900390625],[86.0,193.0,-17.841793060302734],[93.0,196.0,4.937897682189941],[105.0,196.0,22.647642135620117],[115.0,199.0,26.378101348876953],[121.0,196.0,29.354434967041016],[143.0,196.0,24.816020965576172],[166.0,193.0,10.712540626525879],[147.0,212.0,12.046388626098633],[134.0,221.0,11.838120460510254],[118.0,225.0,8.037301063537598],[105.0,221.0,2.2057247161865234],[96.0,212.0,-6.710599899291992],[89.0,193.0,-17.244544982910156],[105.0,202.0,12.899520874023438],[115.0,202.0,19.937997817993164],[131.0,202.0,22.065942764282227],[163.0,193.0,9.6935396194458],[131.0,212.0,14.528266906738281],[118.0,212.0,11.355504035949707],[105.0,212.0,5.307169437408447]],"George_W_Bush_0521_4871.png":[[52.0,92.0,-45.72012710571289],[49.0,113.0,-46.65034866333008],[52.0,135.0,-47.51322555541992],[54.0,151.0,-46.91441345214844],[57.0,173.0,-40.902000427246094],[68.0,189.0,-28.678600311279297],[78.0,205.0,-13.592384338378906],[95.0,219.0,-1.2501835823059082],[116.0,229.0,1.177125334739685],[140.0,227.0,-9.77007007598877],[157.0,216.0,-27.030227661132812],[165.0,205.0,-46.50547790527344],[176.0,189.0,-62.202232360839844],[184.0,170.0,-69.46493530273438],[192.0,154.0,-70.83147430419922],[197.0,138.0,-70.83583068847656],[202.0,116.0,-70.05885314941406],[81.0,81.0,17.92914390563965],[95.0,78.0,27.789169311523438],[108.0,78.0,33.28635025024414],[116.0,81.0,35.898231506347656],[127.0,84.0,36.1664924621582],[162.0,89.0,30.671188354492188],[173.0,89.0,27.389225006103516],[181.0,89.0,21.40380096435547],[192.0,92.0,12.476249694824219],[197.0,97.0,-0.4335915446281433],[143.0,105.0,32.26004409790039],[143.0,119.0,38.66748809814453],[140.0,132.0,46.93293380737305],[140.0,143.0,47.69198226928711],[122.0,149.0,31.083112716674805],[127.0,151.0,33.54079055786133],[135.0,154.0,34.166015625],[143.0,154.0,31.159467697143555],[149.0,154.0,27.037282943725586],[97.0,100.0,21.734798431396484],[105.0,97.0,28.1799373626709],[114.0,97.0,27.063697814941406],[122.0,103.0,22.652997970581055],[114.0,105.0,26.08942985534668],[103.0,103.0,25.867576599121094],[159.0,108.0,17.47022819519043],[167.0,105.0,19.028751373291016],[176.0,108.0,17.09029769897461],[181.0,111.0,7.996582984924316],[176.0,113.0,14.536516189575195],[165.0,111.0,18.149005889892578],[105.0,178.0,22.76020050048828],[116.0,170.0,33.3117561340332],[127.0,167.0,37.994598388671875],[132.0,167.0,38.12085723876953],[138.0,167.0,36.27274703979492],[149.0,175.0,27.961029052734375],[151.0,184.0,13.815584182739258],[143.0,194.0,20.624553680419922],[135.0,197.0,24.53580093383789],[127.0,197.0,26.357908248901367],[119.0,194.0,27.084375381469727],[111.0,186.0,25.804853439331055],[108.0,175.0,22.580766677856445],[124.0,173.0,33.42163848876953],[132.0,175.0,34.26499557495117],[138.0,175.0,31.121870040893555],[149.0,184.0,14.480358123779297],[135.0,189.0,25.04640769958496],[130.0,189.0,26.659072875976562],[122.0,184.0,27.26160430908203]],"Jean_Chretien_0048_6598.png":[[30.0,125.0,-40.58317947387695],[36.0,147.0,-38.26982498168945],[43.0,166.0,-36.6230583190918],[49.0,188.0,-33.90769577026367],[62.0,210.0,-26.04215431213379],[80.0,229.0,-13.205296516418457],[103.0,242.0,1.227866530418396],[128.0,251.0,11.785074234008789],[156.0,257.0,10.845030784606934],[178.0,245.0,-6.119598865509033],[188.0,232.0,-29.136899948120117],[191.0,223.0,-53.54594039916992],[194.0,201.0,-74.41848754882812],[194.0,179.0,-85.97528076171875],[194.0,156.0,-90.91073608398438],[194.0,134.0,-94.51874542236328],[194.0,112.0,-97.60952758789062],[71.0,93.0,19.528913497924805],[84.0,84.0,26.82400894165039],[96.0,78.0,30.234058380126953],[109.0,78.0,31.37984848022461],[122.0,78.0,30.30535888671875],[159.0,74.0,16.718530654907227],[169.0,71.0,10.688024520874023],[181.0,71.0,1.7389824390411377],[191.0,74.0,-9.972139358520508],[197.0,81.0,-24.279382705688477],[144.0,100.0,25.824087142944336],[150.0,112.0,34.62986373901367],[153.0,125.0,45.06562042236328],[156.0,137.0,47.438385009765625],[134.0,153.0,33.16469955444336],[144.0,153.0,34.75723648071289],[153.0,153.0,34.24925231933594],[159.0,150.0,29.585615158081055],[163.0,150.0,24.086299896240234],[90.0,109.0,23.489126205444336],[103.0,106.0,28.661333084106445],[109.0,103.0,25.710494995117188],[118.0,106.0,20.149057388305664],[112.0,109.0,25.589101791381836],[103.0,112.0,27.14316749572754],[159.0,103.0,6.047369956970215],[169.0,100.0,5.07871675491333],[178.0,100.0,1.128143072128296],[185.0,100.0,-9.351521492004395],[178.0,106.0,-0.28687334060668945],[172.0,106.0,5.514134407043457],[122.0,197.0,28.512418746948242],[131.0,175.0,37.198204040527344],[147.0,166.0,39.9262580871582],[153.0,169.0,39.13956832885742],[159.0,166.0,35.968048095703125],[172.0,175.0,26.046375274658203],[178.0,191.0,10.3086576461792],[175.0,210.0,20.745849609375],[169.0,220.0,27.28376579284668],[159.0,223.0,30.989892959594727],[147.0,220.0,32.862693786621094],[134.0,213.0,31.60837173461914],[122.0,197.0,27.478269577026367],[144.0,179.0,36.26493453979492],[153.0,175.0,36.0021858215332],[163.0,175.0,31.556718826293945],[175.0,191.0,11.229880332946777],[166.0,210.0,26.56795883178711],[156.0,210.0,29.762998580932617],[147.0,210.0,31.160558700561523]],"Jose_Maria_Aznar_0012_7639.png":[[52.0,117.0,-85.36373138427734],[58.0,142.0,-89.13520050048828],[64.0,163.0,-91.57649993896484],[70.0,181.0,-90.67222595214844],[76.0,205.0,-81.6866683959961],[86.0,224.0,-63.06562042236328],[95.0,236.0,-39.47830581665039],[110.0,248.0,-15.760049819946289],[134.0,251.0,-0.7411996126174927],[158.0,242.0,-3.497490644454956],[180.0,227.0,-18.777170181274414],[201.0,211.0,-35.454566955566406],[213.0,190.0,-47.65032196044922],[222.0,166.0,-52.36196517944336],[225.0,145.0,-50.47983932495117],[225.0,120.0,-45.808433532714844],[225.0,96.0,-40.67475128173828],[52.0,108.0,-2.9392600059509277],[58.0,108.0,12.7117338180542],[67.0,105.0,24.29625701904297],[79.0,105.0,31.84514617919922],[89.0,105.0,35.80921173095703],[131.0,99.0,48.1629753112793],[140.0,96.0,49.877891540527344],[155.0,93.0,48.81587600708008],[171.0,93.0,44.32658767700195],[186.0,96.0,33.5164909362793],[110.0,123.0,35.202392578125],[110.0,139.0,39.387237548828125],[107.0,154.0,46.361717224121094],[110.0,163.0,45.361881256103516],[104.0,175.0,21.95050048828125],[110.0,175.0,25.979686737060547],[116.0,175.0,29.28858184814453],[125.0,172.0,29.773151397705078],[131.0,169.0,28.43248176574707],[67.0,123.0,6.034923076629639],[73.0,120.0,17.086734771728516],[82.0,120.0,20.637174606323242],[95.0,123.0,19.039827346801758],[86.0,126.0,18.763216018676758],[76.0,129.0,13.737027168273926],[140.0,117.0,31.881677627563477],[146.0,111.0,38.8029670715332],[158.0,111.0,41.307891845703125],[168.0,114.0,34.02800750732422],[158.0,120.0,37.281280517578125],[146.0,120.0,36.33848571777344],[95.0,202.0,7.3154730796813965],[101.0,199.0,19.637798309326172],[113.0,196.0,28.106361389160156],[119.0,196.0,30.175378799438477],[125.0,193.0,30.934680938720703],[140.0,196.0,26.531757354736328],[155.0,196.0,18.057851791381836],[143.0,205.0,25.4660587310791],[131.0,208.0,27.901447296142578],[122.0,211.0,26.784423828125],[113.0,211.0,23.835683822631836],[104.0,208.0,18.039756774902344],[98.0,202.0,8.314102172851562],[113.0,202.0,22.491792678833008],[122.0,202.0,25.67093276977539],[131.0,202.0,25.65959930419922],[152.0,196.0,17.607336044311523],[131.0,199.0,27.57944679260254],[122.0,202.0,26.80080223083496],[113.0,202.0,24.226303100585938]],"Martin_Bandier_0001_9412.png":[[63.0,121.0,-65.37309265136719],[63.0,143.0,-64.64505004882812],[65.0,162.0,-63.10131072998047],[68.0,179.0,-58.94812774658203],[74.0,201.0,-47.4974250793457],[85.0,215.0,-28.67585563659668],[96.0,223.0,-6.62316370010376],[109.0,228.0,15.033751487731934],[134.0,234.0,26.035844802856445],[159.0,228.0,17.08003044128418],[178.0,223.0,-2.46199893951416],[192.0,217.0,-23.39816665649414],[205.0,204.0,-41.04132843017578],[214.0,187.0,-51.08419418334961],[219.0,171.0,-54.11995315551758],[225.0,151.0,-54.73630905151367],[227.0,132.0,-54.683284759521484],[76.0,102.0,5.609401226043701],[87.0,96.0,17.809030532836914],[98.0,96.0,25.773998260498047],[109.0,96.0,30.63453483581543],[120.0,96.0,32.800411224365234],[156.0,96.0,36.425437927246094],[167.0,96.0,35.66188049316406],[181.0,96.0,32.42750930786133],[192.0,99.0,26.462549209594727],[203.0,105.0,15.327049255371094],[137.0,118.0,33.622276306152344],[137.0,129.0,40.19166946411133],[134.0,140.0,49.35963439941406],[134.0,151.0,50.38871765136719],[120.0,160.0,31.231637954711914],[128.0,162.0,34.355201721191406],[134.0,162.0,36.49223327636719],[145.0,162.0,35.185462951660156],[150.0,160.0,32.73931121826172],[93.0,118.0,14.13566780090332],[101.0,116.0,22.39512825012207],[109.0,113.0,23.741657257080078],[117.0,118.0,21.19973373413086],[109.0,121.0,23.268537521362305],[101.0,121.0,20.586299896240234],[161.0,118.0,25.45779800415039],[170.0,113.0,29.320659637451172],[178.0,116.0,29.50352668762207],[186.0,118.0,21.957426071166992],[178.0,121.0,27.270540237426758],[167.0,121.0,28.569705963134766],[107.0,182.0,21.56089973449707],[115.0,179.0,31.159202575683594],[128.0,176.0,37.602928161621094],[134.0,179.0,38.916873931884766],[142.0,179.0,38.50923538208008],[156.0,182.0,33.15263748168945],[170.0,184.0,24.19475555419922],[156.0,190.0,34.02751159667969],[145.0,193.0,38.550209045410156],[134.0,193.0,39.023250579833984],[126.0,193.0,37.37254333496094],[117.0,190.0,31.93663787841797],[109.0,182.0,21.735275268554688],[126.0,184.0,33.94630813598633],[137.0,184.0,35.99415588378906],[145.0,184.0,34.99856948852539],[167.0,184.0,24.027576446533203],[145.0,184.0,36.92888259887695],[134.0,184.0,37.362281799316406],[126.0,184.0,35.78881072998047]],"Mel_Gibson_0002_9636.png":[[31.0,118.0,-2.9550893306732178],[36.0,139.0,-2.667202949523926],[41.0,158.0,-3.309368848800659],[47.0,173.0,-2.8674466609954834],[60.0,195.0,0.5379531979560852],[78.0,208.0,6.8468451499938965],[102.0,218.0,13.661532402038574],[129.0,226.0,16.51202392578125],[152.0,232.0,7.737005710601807],[166.0,224.0,-14.849297523498535],[166.0,216.0,-40.139617919921875],[160.0,205.0,-63.4443359375],[155.0,189.0,-82.52007293701172],[152.0,171.0,-92.49539947509766],[152.0,152.0,-96.97915649414062],[152.0,131.0,-100.56412506103516],[150.0,110.0,-102.95475006103516],[86.0,91.0,38.37003707885742],[102.0,86.0,41.894866943359375],[115.0,83.0,40.397464752197266],[126.0,83.0,37.24525451660156],[137.0,86.0,32.68013381958008],[166.0,83.0,8.698038101196289],[171.0,83.0,0.9768905639648438],[176.0,83.0,-9.498381614685059],[181.0,86.0,-22.676668167114258],[179.0,91.0,-38.2049674987793],[155.0,105.0,23.144948959350586],[160.0,118.0,29.64549446105957],[166.0,128.0,36.738407135009766],[168.0,139.0,37.75069046020508],[142.0,150.0,28.878965377807617],[150.0,150.0,27.837158203125],[158.0,152.0,24.27781105041504],[163.0,150.0,17.583341598510742],[166.0,147.0,10.795087814331055],[102.0,107.0,34.878822326660156],[113.0,102.0,36.4377555847168],[121.0,102.0,30.94145393371582],[126.0,107.0,23.007049560546875],[121.0,110.0,30.338083267211914],[113.0,110.0,35.04257583618164],[158.0,105.0,-2.0924415588378906],[166.0,102.0,-5.603616237640381],[174.0,102.0,-12.036636352539062],[174.0,105.0,-22.998979568481445],[174.0,107.0,-13.557750701904297],[166.0,107.0,-5.3837785720825195],[118.0,176.0,26.663448333740234],[137.0,168.0,30.426334381103516],[152.0,163.0,27.21775245666504],[158.0,163.0,23.104822158813477],[166.0,163.0,17.77894401550293],[171.0,165.0,1.9621200561523438],[171.0,171.0,-16.41786766052246],[168.0,181.0,-0.7907894849777222],[166.0,187.0,10.164527893066406],[158.0,189.0,17.966917037963867],[150.0,189.0,23.715682983398438],[137.0,184.0,25.680715560913086],[121.0,173.0,24.89003562927246],[147.0,171.0,25.607192993164062],[158.0,168.0,20.765199661254883],[163.0,168.0,12.706995964050293],[168.0,171.0,-15.33692741394043],[163.0,179.0,9.691545486450195],[158.0,181.0,17.176071166992188],[147.0,179.0,22.25572395324707]],"Miguel_Angel_Rodriguez_0001_9912.png":[[54.0,68.0,-42.45979309082031],[54.0,92.0,-49.5826301574707],[54.0,115.0,-55.79332733154297],[57.0,135.0,-59.33116912841797],[60.0,159.0,-57.03142547607422],[72.0,182.0,-45.75932312011719],[89.0,200.0,-29.281789779663086],[110.0,217.0,-13.761648178100586],[139.0,229.0,-9.994528770446777],[168.0,223.0,-22.58154296875],[185.0,208.0,-43.570491790771484],[200.0,194.0,-64.46328735351562],[209.0,176.0,-79.13212585449219],[217.0,156.0,-82.86824035644531],[223.0,135.0,-80.2246322631836],[232.0,115.0,-74.78620147705078],[238.0,92.0,-67.80895233154297],[92.0,74.0,37.68389892578125],[104.0,77.0,52.043670654296875],[118.0,77.0,59.127376556396484],[133.0,83.0,61.828956604003906],[142.0,86.0,61.20265197753906],[182.0,92.0,55.284610748291016],[194.0,89.0,52.78497314453125],[209.0,89.0,46.65754699707031],[220.0,92.0,36.06510925292969],[229.0,92.0,18.42976188659668],[159.0,109.0,52.191322326660156],[159.0,127.0,55.90726089477539],[159.0,141.0,60.87660217285156],[159.0,153.0,58.1236457824707],[136.0,147.0,32.37248992919922],[145.0,153.0,34.84940719604492],[153.0,156.0,35.226722717285156],[165.0,156.0,32.414764404296875],[171.0,153.0,28.114261627197266],[107.0,95.0,36.662654876708984],[115.0,98.0,45.565467834472656],[127.0,101.0,44.66267013549805],[136.0,103.0,38.028995513916016],[127.0,106.0,41.371986389160156],[115.0,103.0,40.59615707397461],[180.0,109.0,32.01942443847656],[191.0,109.0,35.80430221557617],[200.0,109.0,33.73044967651367],[209.0,109.0,22.261281967163086],[200.0,115.0,28.547409057617188],[188.0,115.0,32.59733963012695],[107.0,162.0,7.68004035949707],[124.0,162.0,21.82286834716797],[145.0,165.0,29.717941284179688],[150.0,165.0,29.215816497802734],[162.0,165.0,28.041715621948242],[177.0,168.0,16.328580856323242],[185.0,170.0,-1.8884063959121704],[171.0,185.0,8.578341484069824],[159.0,191.0,14.658515930175781],[147.0,191.0,16.984785079956055],[136.0,188.0,17.13002586364746],[124.0,179.0,13.756457328796387],[110.0,162.0,7.356316566467285],[139.0,168.0,23.039575576782227],[150.0,170.0,23.86418914794922],[162.0,173.0,20.56334686279297],[182.0,170.0,-1.3613767623901367],[159.0,182.0,16.720003128051758],[147.0,182.0,19.093835830688477],[139.0,179.0,19.065034866333008]],"Owen_Wilson_0002_10664.png":[[59.0,102.0,-21.243762969970703],[64.0,123.0,-25.366979598999023],[67.0,141.0,-29.538850784301758],[72.0,159.0,-31.87116813659668],[82.0,179.0,-29.50519561767578],[98.0,197.0,-21.61178207397461],[116.0,207.0,-10.408528327941895],[136.0,220.0,-1.885507583618164],[162.0,228.0,-4.386058807373047],[180.0,218.0,-20.011940002441406],[185.0,202.0,-39.94613265991211],[188.0,189.0,-59.84038162231445],[190.0,169.0,-74.894287109375],[193.0,148.0,-80.55574798583984],[195.0,130.0,-80.55134582519531],[200.0,115.0,-78.93417358398438],[200.0,94.0,-75.78621673583984],[100.0,94.0,38.169158935546875],[113.0,89.0,46.922264099121094],[128.0,87.0,50.022220611572266],[139.0,87.0,49.92811584472656],[149.0,89.0,47.58958435058594],[185.0,87.0,34.57915496826172],[193.0,82.0,30.142242431640625],[200.0,79.0,22.56153678894043],[208.0,79.0,11.584891319274902],[211.0,82.0,-3.6469027996063232],[170.0,110.0,37.8112907409668],[172.0,128.0,42.05117416381836],[177.0,141.0,47.863712310791016],[177.0,151.0,46.86157989501953],[154.0,153.0,31.895654678344727],[162.0,156.0,32.64586639404297],[170.0,159.0,31.2083740234375],[177.0,156.0,26.80669403076172],[180.0,153.0,21.87879753112793],[116.0,110.0,36.50224304199219],[126.0,107.0,41.755741119384766],[136.0,107.0,38.944122314453125],[141.0,110.0,32.12401580810547],[136.0,112.0,36.855350494384766],[126.0,112.0,38.63181686401367],[180.0,107.0,18.915437698364258],[190.0,102.0,19.264719009399414],[198.0,102.0,15.433978080749512],[200.0,105.0,4.7589192390441895],[198.0,107.0,11.944266319274902],[188.0,110.0,17.54715347290039],[134.0,174.0,22.057518005371094],[149.0,171.0,30.601415634155273],[164.0,166.0,32.62217712402344],[170.0,169.0,30.74959945678711],[175.0,166.0,27.59368133544922],[185.0,169.0,14.901169776916504],[185.0,174.0,-2.4239187240600586],[182.0,187.0,7.878442287445068],[177.0,195.0,14.520737648010254],[167.0,197.0,19.051616668701172],[157.0,197.0,22.247385025024414],[146.0,189.0,22.729080200195312],[136.0,174.0,21.341617584228516],[159.0,174.0,28.571256637573242],[167.0,174.0,26.78837776184082],[175.0,174.0,21.358505249023438],[185.0,174.0,-1.5108582973480225],[175.0,187.0,16.332590103149414],[167.0,189.0,20.710247039794922],[157.0,187.0,23.43580436706543]],"Sadie_Frost_0002_12236.png":[[43.0,110.0,-46.02598190307617],[49.0,134.0,-50.22691345214844],[55.0,154.0,-54.00772476196289],[64.0,171.0,-55.88381576538086],[73.0,192.0,-51.39228820800781],[90.0,209.0,-38.368595123291016],[108.0,221.0,-21.556013107299805],[131.0,233.0,-6.431150436401367],[160.0,239.0,-1.1526600122451782],[187.0,224.0,-13.746787071228027],[198.0,207.0,-33.85028839111328],[207.0,189.0,-53.560306549072266],[213.0,169.0,-68.61043548583984],[216.0,145.0,-74.07164764404297],[219.0,125.0,-73.03618621826172],[219.0,104.0,-70.54234313964844],[219.0,81.0,-66.82637786865234],[73.0,96.0,35.09419250488281],[84.0,90.0,48.202972412109375],[99.0,87.0,55.006980895996094],[114.0,87.0,57.74137878417969],[125.0,87.0,57.095542907714844],[169.0,78.0,52.34587860107422],[181.0,72.0,50.398277282714844],[192.0,66.0,44.81260299682617],[204.0,66.0,35.284515380859375],[213.0,66.0,19.477773666381836],[151.0,107.0,48.60774612426758],[154.0,125.0,53.40505599975586],[157.0,139.0,60.78512191772461],[160.0,151.0,59.40488052368164],[140.0,157.0,36.827823638916016],[149.0,157.0,38.765625],[157.0,157.0,39.05522537231445],[166.0,154.0,36.21161651611328],[172.0,148.0,32.36823272705078],[93.0,110.0,38.026493072509766],[105.0,107.0,46.511924743652344],[114.0,104.0,45.97248077392578],[122.0,107.0,39.76427459716797],[116.0,110.0,43.69316101074219],[105.0,113.0,43.01232147216797],[172.0,98.0,34.90428161621094],[181.0,93.0,38.591400146484375],[192.0,90.0,36.841041564941406],[198.0,93.0,26.039823532104492],[192.0,98.0,32.86278533935547],[181.0,98.0,36.44768524169922],[114.0,180.0,13.682698249816895],[131.0,174.0,29.0455265045166],[151.0,169.0,37.02834701538086],[157.0,169.0,36.82743835449219],[166.0,166.0,34.820980072021484],[181.0,166.0,20.959548950195312],[189.0,169.0,0.6888017654418945],[184.0,189.0,10.8884859085083],[175.0,201.0,18.23310089111328],[163.0,204.0,21.218435287475586],[149.0,204.0,21.746076583862305],[134.0,198.0,18.20676040649414],[116.0,180.0,12.841014862060547],[146.0,177.0,31.248977661132812],[157.0,174.0,32.05494689941406],[169.0,171.0,27.548999786376953],[187.0,169.0,0.3560405969619751],[172.0,189.0,19.1156005859375],[160.0,192.0,22.56888771057129],[149.0,192.0,22.62162971496582]],"Tony_Blair_0133_13648.png":[[28.0,35.0,-114.78353118896484],[28.0,56.0,-117.0096206665039],[30.0,77.0,-117.85218048095703],[28.0,95.0,-116.64053344726562],[25.0,119.0,-109.63522338867188],[20.0,142.0,-91.96292877197266],[12.0,163.0,-69.02586364746094],[4.0,179.0,-43.47087860107422],[17.0,192.0,-19.292436599731445],[38.0,187.0,-4.95521354675293],[67.0,179.0,-3.8730266094207764],[93.0,166.0,-5.7884602546691895],[114.0,145.0,-5.7592878341674805],[127.0,121.0,-3.3975744247436523],[132.0,103.0,0.7643616795539856],[135.0,80.0,6.597561359405518],[138.0,56.0,11.115669250488281],[-13.0,30.0,-47.145782470703125],[-21.0,30.0,-29.913450241088867],[-19.0,30.0,-14.542082786560059],[-16.0,32.0,-2.5428059101104736],[-11.0,38.0,6.405983924865723],[17.0,43.0,36.266361236572266],[25.0,40.0,42.780643463134766],[38.0,40.0,48.210636138916016],[54.0,43.0,51.576744079589844],[70.0,48.0,48.710269927978516],[1.0,64.0,18.72914695739746],[-6.0,82.0,22.138294219970703],[-11.0,101.0,25.75322723388672],[-13.0,114.0,24.547555923461914],[-6.0,116.0,-4.2706618309021],[-6.0,121.0,2.8793535232543945],[0.0,124.0,9.930088996887207],[7.0,121.0,14.941959381103516],[14.0,121.0,16.764404296875],[-8.0,51.0,-33.40031051635742],[-11.0,48.0,-21.259601593017578],[-6.0,51.0,-13.4171781539917],[4.0,56.0,-9.602275848388672],[-3.0,59.0,-14.66192626953125],[-8.0,56.0,-24.096799850463867],[30.0,64.0,21.700273513793945],[35.0,61.0,31.827836990356445],[43.0,64.0,38.890464782714844],[54.0,66.0,37.976531982421875],[46.0,69.0,35.73036193847656],[35.0,66.0,29.375158309936523],[-6.0,135.0,-31.20798683166504],[-8.0,137.0,-14.465958595275879],[-3.0,140.0,0.3486156761646271],[1.0,142.0,5.642735481262207],[4.0,140.0,10.870265007019043],[20.0,142.0,16.053525924682617],[35.0,145.0,15.69095516204834],[20.0,150.0,13.479714393615723],[9.0,156.0,9.445561408996582],[1.0,153.0,2.799577236175537],[-3.0,150.0,-5.415865898132324],[-6.0,145.0,-15.440103530883789],[-6.0,135.0,-29.30402183532715],[0.0,145.0,-5.810694694519043],[4.0,145.0,2.0995430946350098],[12.0,145.0,7.975824356079102],[33.0,145.0,13.971905708312988],[9.0,145.0,8.455390930175781],[1.0,145.0,2.259183406829834],[-3.0,142.0,-5.021042823791504]]} \ No newline at end of file diff --git a/site/public/assets/data/faces/brad_smith_1_0.drc b/site/public/assets/data/faces/brad_smith_1_0.drc new file mode 100644 index 00000000..8266f10e Binary files /dev/null and b/site/public/assets/data/faces/brad_smith_1_0.drc differ diff --git a/site/public/assets/data/faces/bush_1_0.drc b/site/public/assets/data/faces/bush_1_0.drc new file mode 100644 index 00000000..95251f4f Binary files /dev/null and b/site/public/assets/data/faces/bush_1_0.drc differ diff --git a/site/public/assets/data/faces/george_tenet_1_0.drc b/site/public/assets/data/faces/george_tenet_1_0.drc new file mode 100644 index 00000000..e6ebdf03 Binary files /dev/null and b/site/public/assets/data/faces/george_tenet_1_0.drc differ diff --git a/site/public/assets/data/faces/john_ashcroft_1_0.drc b/site/public/assets/data/faces/john_ashcroft_1_0.drc new file mode 100644 index 00000000..8cfe1f9e Binary files /dev/null and b/site/public/assets/data/faces/john_ashcroft_1_0.drc differ diff --git a/site/public/assets/data/faces/macron_1_0.drc b/site/public/assets/data/faces/macron_1_0.drc new file mode 100644 index 00000000..abe068f4 Binary files /dev/null and b/site/public/assets/data/faces/macron_1_0.drc differ diff --git a/site/public/assets/data/faces/macron_2_0.drc b/site/public/assets/data/faces/macron_2_0.drc new file mode 100644 index 00000000..b3af9d9d Binary files /dev/null and b/site/public/assets/data/faces/macron_2_0.drc differ diff --git a/site/public/assets/data/faces/macron_4_0.drc b/site/public/assets/data/faces/macron_4_0.drc new file mode 100644 index 00000000..964822ff Binary files /dev/null and b/site/public/assets/data/faces/macron_4_0.drc differ diff --git a/site/public/assets/data/faces/may.drc b/site/public/assets/data/faces/may.drc new file mode 100644 index 00000000..819ebbf6 Binary files /dev/null and b/site/public/assets/data/faces/may.drc differ diff --git a/site/public/assets/data/faces/putin.drc b/site/public/assets/data/faces/putin.drc new file mode 100644 index 00000000..d50fb2ca Binary files /dev/null and b/site/public/assets/data/faces/putin.drc differ diff --git a/site/public/assets/data/faces/putin_0.drc b/site/public/assets/data/faces/putin_0.drc new file mode 100644 index 00000000..6d4ada4c Binary files /dev/null and b/site/public/assets/data/faces/putin_0.drc differ diff --git a/site/public/assets/data/faces/putin_1_0.drc b/site/public/assets/data/faces/putin_1_0.drc new file mode 100644 index 00000000..e1acb6e2 Binary files /dev/null and b/site/public/assets/data/faces/putin_1_0.drc differ diff --git a/site/public/assets/data/faces/putin_2_0.drc b/site/public/assets/data/faces/putin_2_0.drc new file mode 100644 index 00000000..e539d799 Binary files /dev/null and b/site/public/assets/data/faces/putin_2_0.drc differ diff --git a/site/public/assets/data/faces/putin_3_0.drc b/site/public/assets/data/faces/putin_3_0.drc new file mode 100644 index 00000000..b4aa4382 Binary files /dev/null and b/site/public/assets/data/faces/putin_3_0.drc differ diff --git a/site/public/assets/data/faces/putin_4_0.drc b/site/public/assets/data/faces/putin_4_0.drc new file mode 100644 index 00000000..f93bdfdc Binary files /dev/null and b/site/public/assets/data/faces/putin_4_0.drc differ diff --git a/site/public/assets/data/faces/trudeau_1_0.drc b/site/public/assets/data/faces/trudeau_1_0.drc new file mode 100644 index 00000000..a76c4244 Binary files /dev/null and b/site/public/assets/data/faces/trudeau_1_0.drc differ diff --git a/site/public/assets/data/faces/trudeau_2_0.drc b/site/public/assets/data/faces/trudeau_2_0.drc new file mode 100644 index 00000000..45fc9588 Binary files /dev/null and b/site/public/assets/data/faces/trudeau_2_0.drc differ diff --git a/site/public/assets/data/faces/trudeau_3_0.drc b/site/public/assets/data/faces/trudeau_3_0.drc new file mode 100644 index 00000000..a4de31c7 Binary files /dev/null and b/site/public/assets/data/faces/trudeau_3_0.drc differ diff --git a/site/public/assets/data/faces/trudeau_4_0.drc b/site/public/assets/data/faces/trudeau_4_0.drc new file mode 100644 index 00000000..dbc74557 Binary files /dev/null and b/site/public/assets/data/faces/trudeau_4_0.drc differ diff --git a/site/public/assets/data/faces/trudeau_5_0.drc b/site/public/assets/data/faces/trudeau_5_0.drc new file mode 100644 index 00000000..958db58b Binary files /dev/null and b/site/public/assets/data/faces/trudeau_5_0.drc differ diff --git a/site/public/assets/data/faces/trump_1_0.drc b/site/public/assets/data/faces/trump_1_0.drc new file mode 100644 index 00000000..2f78607b Binary files /dev/null and b/site/public/assets/data/faces/trump_1_0.drc differ diff --git a/site/public/assets/data/faces/trump_2_0.drc b/site/public/assets/data/faces/trump_2_0.drc new file mode 100644 index 00000000..129b6c61 Binary files /dev/null and b/site/public/assets/data/faces/trump_2_0.drc differ diff --git a/site/public/assets/data/faces/trump_3_0.drc b/site/public/assets/data/faces/trump_3_0.drc new file mode 100644 index 00000000..bd4956a4 Binary files /dev/null and b/site/public/assets/data/faces/trump_3_0.drc differ diff --git a/site/public/assets/data/faces/trump_3_1.drc b/site/public/assets/data/faces/trump_3_1.drc new file mode 100644 index 00000000..79ddca44 Binary files /dev/null and b/site/public/assets/data/faces/trump_3_1.drc differ diff --git a/site/public/assets/data/faces/trump_4_0.drc b/site/public/assets/data/faces/trump_4_0.drc new file mode 100644 index 00000000..dd4c8756 Binary files /dev/null and b/site/public/assets/data/faces/trump_4_0.drc differ diff --git a/site/public/assets/data/faces/xi.drc b/site/public/assets/data/faces/xi.drc new file mode 100644 index 00000000..ef90c1c7 Binary files /dev/null and b/site/public/assets/data/faces/xi.drc differ diff --git a/site/public/assets/data/faces/xi_1_0.drc b/site/public/assets/data/faces/xi_1_0.drc new file mode 100644 index 00000000..feb96781 Binary files /dev/null and b/site/public/assets/data/faces/xi_1_0.drc differ diff --git a/site/public/assets/data/faces/xi_2_0.drc b/site/public/assets/data/faces/xi_2_0.drc new file mode 100644 index 00000000..38a30922 Binary files /dev/null and b/site/public/assets/data/faces/xi_2_0.drc differ diff --git a/site/public/assets/demo/cloud/.gitignore b/site/public/assets/demo/cloud/.gitignore new file mode 100644 index 00000000..2ccbe465 --- /dev/null +++ b/site/public/assets/demo/cloud/.gitignore @@ -0,0 +1 @@ +/node_modules/ diff --git a/site/public/assets/demo/cloud/.npmignore b/site/public/assets/demo/cloud/.npmignore new file mode 100644 index 00000000..dcaf4a28 --- /dev/null +++ b/site/public/assets/demo/cloud/.npmignore @@ -0,0 +1,4 @@ +/demo/ +/index.html +/rollup.config.js +/src/ diff --git a/site/public/assets/demo/cloud/LICENSE b/site/public/assets/demo/cloud/LICENSE new file mode 100644 index 00000000..edeba37c --- /dev/null +++ b/site/public/assets/demo/cloud/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017-2018 Sergej Sintschilin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/site/public/assets/demo/cloud/README.md b/site/public/assets/demo/cloud/README.md new file mode 100644 index 00000000..de6e882e --- /dev/null +++ b/site/public/assets/demo/cloud/README.md @@ -0,0 +1,109 @@ +# THREE.TextSprite + +`class THREE.TextSprite extends THREE.Sprite` + +An instance of `TextSprite` automatically computes the optimal font size depending on the distance to the camera and the size of the renderer canvas. + +## demo + +[Try it out!](https://seregpie.github.io/THREE.TextSprite/) + +## dependencies + +- [THREE.TextTexture](https://github.com/SeregPie/THREE.TextTexture) + +## setup + +### npm + +```shell +npm install three.textsprite +``` + +### ES module + +```javascript +import TextSprite from 'three.textsprite'; +``` + +### browser + +```html + + + +``` + +The class `TextSprite` will be available under the namespace `THREE`. + +## members + +``` +.constructor({ + material, + maxFontSize, + minFontSize, + redrawInterval, + textSize, + texture, +}) +``` + +| argument | description | +| ---: | :--- | +| `material` | The parameters to pass to the constructor of [`SpriteMaterial`](https://threejs.org/docs/index.html#api/materials/SpriteMaterial). | +| `texture` | The parameters to pass to the constructor of [`TextTexture`](https://github.com/SeregPie/THREE.TextTexture). | + +```javascript +let sprite = new THREE.TextSprite({ + material: { + color: 0xffbbff, + fog: true, + }, + redrawInterval: 250, + textSize: 10, + texture: { + text: 'Carpe Diem', + fontFamily: 'Arial, Helvetica, sans-serif', + }, +}); +scene.add(sprite); +``` + +--- + +`.isTextSprite = true` + +Used to check whether this is an instance of `TextSprite`. + +You should not change this, as it is used internally for optimisation. + +--- + +`.textSize = 1` + +The size of the text. + +--- + +`.redrawInterval = 1` + +The minimum time that must elapse before the canvas is redrawn. If 0, the canvas is redrawn immediately whenever `TextSprite` is rendered, otherwise the redrawing is deferred. + +--- + +`.minFontSize = 0` + +The minimum font size. + +--- + +`.maxFontSize = Infinity` + +The maximum font size. + +--- + +`.dispose()` + +Disposes the texture and the material. diff --git a/site/public/assets/demo/cloud/THREE.TextSprite.js b/site/public/assets/demo/cloud/THREE.TextSprite.js new file mode 100644 index 00000000..525d22cd --- /dev/null +++ b/site/public/assets/demo/cloud/THREE.TextSprite.js @@ -0,0 +1 @@ +(function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b(require("three"),require("three.texttexture")):"function"==typeof define&&define.amd?define(["three","three.texttexture"],b):(a.THREE=a.THREE||{},a.THREE.TextSprite=b(a.THREE,a.THREE.TextTexture))})(this,function(a,b){"use strict";function c(a,b,c){var g=Math.round;if(b.domElement.width&&b.domElement.height&&a.material.map.textLines.length){var h=a.getWorldPosition(d).distanceTo(c.getWorldPosition(e));if(h){var i=a.getWorldScale(f).y*b.domElement.height/h;if(i)return g(i/a.material.map.imageHeight)}}return 0}b=b&&b.hasOwnProperty("default")?b["default"]:b;var d=new a.Vector3,e=new a.Vector3,f=new a.Vector3,g=function(d){function e(c){void 0===c&&(c={});var e=c.textSize;void 0===e&&(e=1);var f=c.redrawInterval;void 0===f&&(f=1);var g=c.minFontSize;void 0===g&&(g=0);var h=c.maxFontSize;void 0===h&&(h=1/0);var i=c.material;void 0===i&&(i={});var j=c.texture;void 0===j&&(j={}),d.call(this,new a.SpriteMaterial(Object.assign({},i,{map:new b(j)}))),this.textSize=e,this.redrawInterval=f,this.minFontSize=g,this.maxFontSize=h,this.lastRedraw=0}d&&(e.__proto__=d),e.prototype=Object.create(d&&d.prototype),e.prototype.constructor=e;var f={isTextSprite:{configurable:!0}};return f.isTextSprite.get=function(){return!0},e.prototype.onBeforeRender=function(a,b,c){this.redraw(a,c)},e.prototype.updateScale=function(){this.scale.set(this.material.map.imageAspect,1,1).multiplyScalar(this.textSize*this.material.map.imageHeight)},e.prototype.updateMatrix=function(){for(var a=[],b=arguments.length;b--;)a[b]=arguments[b];return this.updateScale(),d.prototype.updateMatrix.apply(this,a)},e.prototype.redraw=function(a,b){var c=this;this.lastRedraw+this.redrawInterval + + + + + Megapixels Datasets + + + + + + + + + + + + diff --git a/site/public/assets/demo/cloud/package.json b/site/public/assets/demo/cloud/package.json new file mode 100644 index 00000000..f7556104 --- /dev/null +++ b/site/public/assets/demo/cloud/package.json @@ -0,0 +1,40 @@ +{ + "name": "three.textsprite", + "version": "18.10.24", + "description": "Automatically computes the optimal font size depending on the distance to the camera and the size of the renderer canvas.", + "keywords": [ + "3d", + "canvas", + "class", + "font", + "group", + "object", + "plugin", + "resolution", + "scale", + "size", + "text", + "texture", + "three" + ], + "license": "MIT", + "author": "Sergej Sintschilin ", + "main": "THREE.TextSprite.js", + "repository": "https://github.com/SeregPie/THREE.TextSprite.git", + "scripts": { + "build": "rollup -c", + "dev": "rollup -c -w", + "prepublishOnly": "npm run build" + }, + "dependencies": { + "three.texttexture": "^18.10.24" + }, + "devDependencies": { + "rollup": "^0.66.6", + "rollup-plugin-babel-minify": "^6.1.1", + "rollup-plugin-buble": "^0.19.4" + }, + "peerDependencies": { + "three": "^0.97.0" + } +} diff --git a/site/public/assets/demo/cloud/rollup.config.js b/site/public/assets/demo/cloud/rollup.config.js new file mode 100644 index 00000000..57415169 --- /dev/null +++ b/site/public/assets/demo/cloud/rollup.config.js @@ -0,0 +1,25 @@ +import buble from 'rollup-plugin-buble'; +import minify from 'rollup-plugin-babel-minify'; +import path from 'path'; + +import {main} from './package.json'; + +let globals = { + 'three': 'THREE', + 'three.texttexture': 'THREE.TextTexture', +}; + +export default { + input: 'src/index.js', + external: Object.keys(globals), + output: { + file: main, + format: 'umd', + name: path.basename(main, path.extname(main)), + globals, + }, + plugins: [ + buble({objectAssign: 'Object.assign'}), + minify({comments: false}), + ], +}; diff --git a/site/public/assets/demo/cloud/src/getOptimalFontSize.js b/site/public/assets/demo/cloud/src/getOptimalFontSize.js new file mode 100644 index 00000000..02787516 --- /dev/null +++ b/site/public/assets/demo/cloud/src/getOptimalFontSize.js @@ -0,0 +1,18 @@ +import {Vector3} from 'three'; + +let objectWorldPosition = new Vector3(); +let cameraWorldPosition = new Vector3(); +let objectWorldScale = new Vector3(); + +export default function(object, renderer, camera) { + if (renderer.domElement.width && renderer.domElement.height && object.material.map.textLines.length) { + let distance = object.getWorldPosition(objectWorldPosition).distanceTo(camera.getWorldPosition(cameraWorldPosition)); + if (distance) { + let heightInPixels = object.getWorldScale(objectWorldScale).y * renderer.domElement.height / distance; + if (heightInPixels) { + return Math.round(heightInPixels / object.material.map.imageHeight); + } + } + } + return 0; +} diff --git a/site/public/assets/demo/cloud/src/index.js b/site/public/assets/demo/cloud/src/index.js new file mode 100644 index 00000000..270891d5 --- /dev/null +++ b/site/public/assets/demo/cloud/src/index.js @@ -0,0 +1,78 @@ +import { + Math as THREE_Math, + Sprite, + SpriteMaterial, +} from 'three'; +import TextTexture from 'three.texttexture'; + +import getOptimalFontSize from './getOptimalFontSize'; + +export default class extends Sprite { + constructor({ + textSize = 1, + redrawInterval = 1, + minFontSize = 0, + maxFontSize = Infinity, + material = {}, + texture = {}, + } = {}) { + super(new SpriteMaterial({ + ...material, + map: new TextTexture(texture), + })); + this.textSize = textSize; + this.redrawInterval = redrawInterval; + this.minFontSize = minFontSize; + this.maxFontSize = maxFontSize; + this.lastRedraw = 0; + } + + get isTextSprite() { + return true; + } + + onBeforeRender(renderer, scene, camera) { + this.redraw(renderer, camera); + } + + updateScale() { + this.scale + .set(this.material.map.imageAspect, 1, 1) + .multiplyScalar(this.textSize * this.material.map.imageHeight); + } + + updateMatrix(...args) { + this.updateScale(); + return super.updateMatrix(...args); + } + + redraw(renderer, camera) { + if (this.lastRedraw + this.redrawInterval < Date.now()) { + if (this.redrawInterval) { + setTimeout(() => { + this.redrawNow(renderer, camera); + }, 1); + } else { + this.redrawNow(renderer, camera); + } + } + } + + redrawNow(renderer, camera) { + this.updateScale(); + this.material.map.autoRedraw = true; + this.material.map.fontSize = THREE_Math.clamp( + THREE_Math.ceilPowerOfTwo( + getOptimalFontSize(this, renderer, camera) + ), + this.minFontSize, + this.maxFontSize, + ); + this.lastRedraw = Date.now(); + } + + dispose() { + this.material.map.dispose(); + this.material.dispose(); + } +} diff --git a/site/public/assets/demo/splash/index.html b/site/public/assets/demo/splash/index.html new file mode 100644 index 00000000..32517d97 --- /dev/null +++ b/site/public/assets/demo/splash/index.html @@ -0,0 +1,58 @@ + + + + MegaPixels + + + + + + + + + + +
+ + +
MegaPixels
+
+ +
+
+
+
+
+
+
+

+ MegaPixels is an online art project that explores the history of face recognition from the perspective of datasets. MegaPixels aims to unravel the meanings behind the data and expose the darker corners of the biometric industry that have contributed to its growth. +

+

+ Through a mix of case studies, visualizations, and interactive tools, Megapixels will use face recognition datasets to tell the history of modern biometrics. Many people have contributed to the development of face recognition technology, both wittingly and unwittingly. Not only scientists, but also celebrities and regular internet users have played a part. +

+

+ Face recognition is a mess of contradictions. It works, yet it doesn't actually work. It's cheap and accessible, but also expensive and out of control. Face recognition research has achieved headline grabbing superhuman accuracies over 99.9%, yet in practice it's also dangerously inaccurate. +

+

+ During a trial installation at Sudkreuz station in Berlin in 2018, 20% of the matches were wrong, a number so low that it should not have any connection to law enforcement or justice. And in London, the Metropolitan police had been using face recognition software that mistakenly identified an alarming 98% of people as criminals, which perhaps is a crime itself. +

+

+ MegaPixels was created by Adam Harvey and will launch in May 2019. +

+
+
+
+
+
+
+ MegaPixels ©2017-19 Adam R. Harvey /  + ahprojects.com +
+
+ + + \ No newline at end of file diff --git a/site/public/assets/fonts/Roboto_300.eot b/site/public/assets/fonts/Roboto_300.eot new file mode 100644 index 00000000..17b7d5cd Binary files /dev/null and b/site/public/assets/fonts/Roboto_300.eot differ diff --git a/site/public/assets/fonts/Roboto_300.svg b/site/public/assets/fonts/Roboto_300.svg new file mode 100644 index 00000000..4ded944a --- /dev/null +++ b/site/public/assets/fonts/Roboto_300.svg @@ -0,0 +1,312 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/public/assets/fonts/Roboto_300.ttf b/site/public/assets/fonts/Roboto_300.ttf new file mode 100644 index 00000000..a22188ee Binary files /dev/null and b/site/public/assets/fonts/Roboto_300.ttf differ diff --git a/site/public/assets/fonts/Roboto_300.woff b/site/public/assets/fonts/Roboto_300.woff new file mode 100644 index 00000000..96663f07 Binary files /dev/null and b/site/public/assets/fonts/Roboto_300.woff differ diff --git a/site/public/assets/fonts/Roboto_300.woff2 b/site/public/assets/fonts/Roboto_300.woff2 new file mode 100644 index 00000000..52c5845a Binary files /dev/null and b/site/public/assets/fonts/Roboto_300.woff2 differ diff --git a/site/public/assets/fonts/Roboto_400.eot b/site/public/assets/fonts/Roboto_400.eot new file mode 100644 index 00000000..a0780d6e Binary files /dev/null and b/site/public/assets/fonts/Roboto_400.eot differ diff --git a/site/public/assets/fonts/Roboto_400.svg b/site/public/assets/fonts/Roboto_400.svg new file mode 100644 index 00000000..627f5a36 --- /dev/null +++ b/site/public/assets/fonts/Roboto_400.svg @@ -0,0 +1,308 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/public/assets/fonts/Roboto_400.ttf b/site/public/assets/fonts/Roboto_400.ttf new file mode 100644 index 00000000..b91bf3f7 Binary files /dev/null and b/site/public/assets/fonts/Roboto_400.ttf differ diff --git a/site/public/assets/fonts/Roboto_400.woff b/site/public/assets/fonts/Roboto_400.woff new file mode 100644 index 00000000..92dfacc6 Binary files /dev/null and b/site/public/assets/fonts/Roboto_400.woff differ diff --git a/site/public/assets/fonts/Roboto_400.woff2 b/site/public/assets/fonts/Roboto_400.woff2 new file mode 100644 index 00000000..7e854e66 Binary files /dev/null and b/site/public/assets/fonts/Roboto_400.woff2 differ diff --git a/site/public/assets/fonts/Roboto_500.eot b/site/public/assets/fonts/Roboto_500.eot new file mode 100644 index 00000000..849f4a50 Binary files /dev/null and b/site/public/assets/fonts/Roboto_500.eot differ diff --git a/site/public/assets/fonts/Roboto_500.svg b/site/public/assets/fonts/Roboto_500.svg new file mode 100644 index 00000000..67eecf44 --- /dev/null +++ b/site/public/assets/fonts/Roboto_500.svg @@ -0,0 +1,305 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/public/assets/fonts/Roboto_500.ttf b/site/public/assets/fonts/Roboto_500.ttf new file mode 100644 index 00000000..55b559f6 Binary files /dev/null and b/site/public/assets/fonts/Roboto_500.ttf differ diff --git a/site/public/assets/fonts/Roboto_500.woff b/site/public/assets/fonts/Roboto_500.woff new file mode 100644 index 00000000..2633e152 Binary files /dev/null and b/site/public/assets/fonts/Roboto_500.woff differ diff --git a/site/public/assets/fonts/Roboto_500.woff2 b/site/public/assets/fonts/Roboto_500.woff2 new file mode 100644 index 00000000..8dceabcf Binary files /dev/null and b/site/public/assets/fonts/Roboto_500.woff2 differ diff --git a/site/public/assets/fonts/Roboto_700.eot b/site/public/assets/fonts/Roboto_700.eot new file mode 100644 index 00000000..0df88af1 Binary files /dev/null and b/site/public/assets/fonts/Roboto_700.eot differ diff --git a/site/public/assets/fonts/Roboto_700.svg b/site/public/assets/fonts/Roboto_700.svg new file mode 100644 index 00000000..11db87dd --- /dev/null +++ b/site/public/assets/fonts/Roboto_700.svg @@ -0,0 +1,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/public/assets/fonts/Roboto_700.ttf b/site/public/assets/fonts/Roboto_700.ttf new file mode 100644 index 00000000..031bf06c Binary files /dev/null and b/site/public/assets/fonts/Roboto_700.ttf differ diff --git a/site/public/assets/fonts/Roboto_700.woff b/site/public/assets/fonts/Roboto_700.woff new file mode 100644 index 00000000..a0d26516 Binary files /dev/null and b/site/public/assets/fonts/Roboto_700.woff differ diff --git a/site/public/assets/fonts/Roboto_700.woff2 b/site/public/assets/fonts/Roboto_700.woff2 new file mode 100644 index 00000000..e327dc95 Binary files /dev/null and b/site/public/assets/fonts/Roboto_700.woff2 differ diff --git a/site/public/assets/fonts/Roboto_Mono_300.eot b/site/public/assets/fonts/Roboto_Mono_300.eot new file mode 100644 index 00000000..f44d93dd Binary files /dev/null and b/site/public/assets/fonts/Roboto_Mono_300.eot differ diff --git a/site/public/assets/fonts/Roboto_Mono_300.svg b/site/public/assets/fonts/Roboto_Mono_300.svg new file mode 100644 index 00000000..e8645765 --- /dev/null +++ b/site/public/assets/fonts/Roboto_Mono_300.svg @@ -0,0 +1,392 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/public/assets/fonts/Roboto_Mono_300.ttf b/site/public/assets/fonts/Roboto_Mono_300.ttf new file mode 100644 index 00000000..6c101fe4 Binary files /dev/null and b/site/public/assets/fonts/Roboto_Mono_300.ttf differ diff --git a/site/public/assets/fonts/Roboto_Mono_300.woff b/site/public/assets/fonts/Roboto_Mono_300.woff new file mode 100644 index 00000000..68d8403e Binary files /dev/null and b/site/public/assets/fonts/Roboto_Mono_300.woff differ diff --git a/site/public/assets/fonts/Roboto_Mono_300.woff2 b/site/public/assets/fonts/Roboto_Mono_300.woff2 new file mode 100644 index 00000000..ab64df38 Binary files /dev/null and b/site/public/assets/fonts/Roboto_Mono_300.woff2 differ diff --git a/site/public/assets/fonts/Roboto_Mono_400.eot b/site/public/assets/fonts/Roboto_Mono_400.eot new file mode 100644 index 00000000..550df22a Binary files /dev/null and b/site/public/assets/fonts/Roboto_Mono_400.eot differ diff --git a/site/public/assets/fonts/Roboto_Mono_400.svg b/site/public/assets/fonts/Roboto_Mono_400.svg new file mode 100644 index 00000000..f384d9ce --- /dev/null +++ b/site/public/assets/fonts/Roboto_Mono_400.svg @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/public/assets/fonts/Roboto_Mono_400.ttf b/site/public/assets/fonts/Roboto_Mono_400.ttf new file mode 100644 index 00000000..27363d17 Binary files /dev/null and b/site/public/assets/fonts/Roboto_Mono_400.ttf differ diff --git a/site/public/assets/fonts/Roboto_Mono_400.woff b/site/public/assets/fonts/Roboto_Mono_400.woff new file mode 100644 index 00000000..0ea5db89 Binary files /dev/null and b/site/public/assets/fonts/Roboto_Mono_400.woff differ diff --git a/site/public/assets/fonts/Roboto_Mono_400.woff2 b/site/public/assets/fonts/Roboto_Mono_400.woff2 new file mode 100644 index 00000000..6163de7b Binary files /dev/null and b/site/public/assets/fonts/Roboto_Mono_400.woff2 differ diff --git a/site/public/assets/fonts/Roboto_Mono_500.eot b/site/public/assets/fonts/Roboto_Mono_500.eot new file mode 100644 index 00000000..fb603779 Binary files /dev/null and b/site/public/assets/fonts/Roboto_Mono_500.eot differ diff --git a/site/public/assets/fonts/Roboto_Mono_500.svg b/site/public/assets/fonts/Roboto_Mono_500.svg new file mode 100644 index 00000000..34c55b65 --- /dev/null +++ b/site/public/assets/fonts/Roboto_Mono_500.svg @@ -0,0 +1,387 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/public/assets/fonts/Roboto_Mono_500.ttf b/site/public/assets/fonts/Roboto_Mono_500.ttf new file mode 100644 index 00000000..036a9907 Binary files /dev/null and b/site/public/assets/fonts/Roboto_Mono_500.ttf differ diff --git a/site/public/assets/fonts/Roboto_Mono_500.woff b/site/public/assets/fonts/Roboto_Mono_500.woff new file mode 100644 index 00000000..b12f6a1e Binary files /dev/null and b/site/public/assets/fonts/Roboto_Mono_500.woff differ diff --git a/site/public/assets/fonts/Roboto_Mono_500.woff2 b/site/public/assets/fonts/Roboto_Mono_500.woff2 new file mode 100644 index 00000000..125f0983 Binary files /dev/null and b/site/public/assets/fonts/Roboto_Mono_500.woff2 differ diff --git a/site/public/assets/img/arrow-left-black.png b/site/public/assets/img/arrow-left-black.png new file mode 100644 index 00000000..377a696f Binary files /dev/null and b/site/public/assets/img/arrow-left-black.png differ diff --git a/site/public/assets/img/arrow-left.png b/site/public/assets/img/arrow-left.png new file mode 100644 index 00000000..3ddd4781 Binary files /dev/null and b/site/public/assets/img/arrow-left.png differ diff --git a/site/public/assets/img/arrow-right-black.png b/site/public/assets/img/arrow-right-black.png new file mode 100644 index 00000000..12dbe37c Binary files /dev/null and b/site/public/assets/img/arrow-right-black.png differ diff --git a/site/public/assets/img/arrow-right.png b/site/public/assets/img/arrow-right.png new file mode 100644 index 00000000..0cb2588f Binary files /dev/null and b/site/public/assets/img/arrow-right.png differ diff --git a/site/public/assets/img/close-black.png b/site/public/assets/img/close-black.png new file mode 100644 index 00000000..191442ac Binary files /dev/null and b/site/public/assets/img/close-black.png differ diff --git a/site/public/assets/img/close.png b/site/public/assets/img/close.png new file mode 100644 index 00000000..529d7302 Binary files /dev/null and b/site/public/assets/img/close.png differ diff --git a/site/public/assets/img/favicon/android-icon-144x144.png b/site/public/assets/img/favicon/android-icon-144x144.png new file mode 100644 index 00000000..341ece89 Binary files /dev/null and b/site/public/assets/img/favicon/android-icon-144x144.png differ diff --git a/site/public/assets/img/favicon/android-icon-192x192.png b/site/public/assets/img/favicon/android-icon-192x192.png new file mode 100644 index 00000000..de4c5e42 Binary files /dev/null and b/site/public/assets/img/favicon/android-icon-192x192.png differ diff --git a/site/public/assets/img/favicon/android-icon-36x36.png b/site/public/assets/img/favicon/android-icon-36x36.png new file mode 100644 index 00000000..d1929dfd Binary files /dev/null and b/site/public/assets/img/favicon/android-icon-36x36.png differ diff --git a/site/public/assets/img/favicon/android-icon-48x48.png b/site/public/assets/img/favicon/android-icon-48x48.png new file mode 100644 index 00000000..433c679c Binary files /dev/null and b/site/public/assets/img/favicon/android-icon-48x48.png differ diff --git a/site/public/assets/img/favicon/android-icon-72x72.png b/site/public/assets/img/favicon/android-icon-72x72.png new file mode 100644 index 00000000..3254f659 Binary files /dev/null and b/site/public/assets/img/favicon/android-icon-72x72.png differ diff --git a/site/public/assets/img/favicon/android-icon-96x96.png b/site/public/assets/img/favicon/android-icon-96x96.png new file mode 100644 index 00000000..8bab32b4 Binary files /dev/null and b/site/public/assets/img/favicon/android-icon-96x96.png differ diff --git a/site/public/assets/img/favicon/apple-icon-114x114.png b/site/public/assets/img/favicon/apple-icon-114x114.png new file mode 100644 index 00000000..54c91340 Binary files /dev/null and b/site/public/assets/img/favicon/apple-icon-114x114.png differ diff --git a/site/public/assets/img/favicon/apple-icon-120x120.png b/site/public/assets/img/favicon/apple-icon-120x120.png new file mode 100644 index 00000000..78fa8236 Binary files /dev/null and b/site/public/assets/img/favicon/apple-icon-120x120.png differ diff --git a/site/public/assets/img/favicon/apple-icon-144x144.png b/site/public/assets/img/favicon/apple-icon-144x144.png new file mode 100644 index 00000000..341ece89 Binary files /dev/null and b/site/public/assets/img/favicon/apple-icon-144x144.png differ diff --git a/site/public/assets/img/favicon/apple-icon-152x152.png b/site/public/assets/img/favicon/apple-icon-152x152.png new file mode 100644 index 00000000..1f0d9e00 Binary files /dev/null and b/site/public/assets/img/favicon/apple-icon-152x152.png differ diff --git a/site/public/assets/img/favicon/apple-icon-180x180.png b/site/public/assets/img/favicon/apple-icon-180x180.png new file mode 100644 index 00000000..ab9d8f82 Binary files /dev/null and b/site/public/assets/img/favicon/apple-icon-180x180.png differ diff --git a/site/public/assets/img/favicon/apple-icon-57x57.png b/site/public/assets/img/favicon/apple-icon-57x57.png new file mode 100644 index 00000000..4a45472b Binary files /dev/null and b/site/public/assets/img/favicon/apple-icon-57x57.png differ diff --git a/site/public/assets/img/favicon/apple-icon-60x60.png b/site/public/assets/img/favicon/apple-icon-60x60.png new file mode 100644 index 00000000..631aeb61 Binary files /dev/null and b/site/public/assets/img/favicon/apple-icon-60x60.png differ diff --git a/site/public/assets/img/favicon/apple-icon-72x72.png b/site/public/assets/img/favicon/apple-icon-72x72.png new file mode 100644 index 00000000..3254f659 Binary files /dev/null and b/site/public/assets/img/favicon/apple-icon-72x72.png differ diff --git a/site/public/assets/img/favicon/apple-icon-76x76.png b/site/public/assets/img/favicon/apple-icon-76x76.png new file mode 100644 index 00000000..b31e92b5 Binary files /dev/null and b/site/public/assets/img/favicon/apple-icon-76x76.png differ diff --git a/site/public/assets/img/favicon/apple-icon-precomposed.png b/site/public/assets/img/favicon/apple-icon-precomposed.png new file mode 100644 index 00000000..188d62bf Binary files /dev/null and b/site/public/assets/img/favicon/apple-icon-precomposed.png differ diff --git a/site/public/assets/img/favicon/apple-icon.png b/site/public/assets/img/favicon/apple-icon.png new file mode 100644 index 00000000..188d62bf Binary files /dev/null and b/site/public/assets/img/favicon/apple-icon.png differ diff --git a/site/public/assets/img/favicon/browserconfig.xml b/site/public/assets/img/favicon/browserconfig.xml new file mode 100644 index 00000000..c5541482 --- /dev/null +++ b/site/public/assets/img/favicon/browserconfig.xml @@ -0,0 +1,2 @@ + +#ffffff \ No newline at end of file diff --git a/site/public/assets/img/favicon/favicon-16x16.png b/site/public/assets/img/favicon/favicon-16x16.png new file mode 100644 index 00000000..9db00ab0 Binary files /dev/null and b/site/public/assets/img/favicon/favicon-16x16.png differ diff --git a/site/public/assets/img/favicon/favicon-32x32.png b/site/public/assets/img/favicon/favicon-32x32.png new file mode 100644 index 00000000..0e7082ce Binary files /dev/null and b/site/public/assets/img/favicon/favicon-32x32.png differ diff --git a/site/public/assets/img/favicon/favicon-96x96.png b/site/public/assets/img/favicon/favicon-96x96.png new file mode 100644 index 00000000..8bab32b4 Binary files /dev/null and b/site/public/assets/img/favicon/favicon-96x96.png differ diff --git a/site/public/assets/img/favicon/favicon.ico b/site/public/assets/img/favicon/favicon.ico new file mode 100644 index 00000000..93bc04b4 Binary files /dev/null and b/site/public/assets/img/favicon/favicon.ico differ diff --git a/site/public/assets/img/favicon/manifest.json b/site/public/assets/img/favicon/manifest.json new file mode 100644 index 00000000..013d4a6a --- /dev/null +++ b/site/public/assets/img/favicon/manifest.json @@ -0,0 +1,41 @@ +{ + "name": "App", + "icons": [ + { + "src": "\/android-icon-36x36.png", + "sizes": "36x36", + "type": "image\/png", + "density": "0.75" + }, + { + "src": "\/android-icon-48x48.png", + "sizes": "48x48", + "type": "image\/png", + "density": "1.0" + }, + { + "src": "\/android-icon-72x72.png", + "sizes": "72x72", + "type": "image\/png", + "density": "1.5" + }, + { + "src": "\/android-icon-96x96.png", + "sizes": "96x96", + "type": "image\/png", + "density": "2.0" + }, + { + "src": "\/android-icon-144x144.png", + "sizes": "144x144", + "type": "image\/png", + "density": "3.0" + }, + { + "src": "\/android-icon-192x192.png", + "sizes": "192x192", + "type": "image\/png", + "density": "4.0" + } + ] +} \ No newline at end of file diff --git a/site/public/assets/img/favicon/ms-icon-144x144.png b/site/public/assets/img/favicon/ms-icon-144x144.png new file mode 100644 index 00000000..341ece89 Binary files /dev/null and b/site/public/assets/img/favicon/ms-icon-144x144.png differ diff --git a/site/public/assets/img/favicon/ms-icon-150x150.png b/site/public/assets/img/favicon/ms-icon-150x150.png new file mode 100644 index 00000000..452f3971 Binary files /dev/null and b/site/public/assets/img/favicon/ms-icon-150x150.png differ diff --git a/site/public/assets/img/favicon/ms-icon-310x310.png b/site/public/assets/img/favicon/ms-icon-310x310.png new file mode 100644 index 00000000..78f5888a Binary files /dev/null and b/site/public/assets/img/favicon/ms-icon-310x310.png differ diff --git a/site/public/assets/img/favicon/ms-icon-70x70.png b/site/public/assets/img/favicon/ms-icon-70x70.png new file mode 100644 index 00000000..df71e3ea Binary files /dev/null and b/site/public/assets/img/favicon/ms-icon-70x70.png differ diff --git a/site/public/assets/img/icon-search.png b/site/public/assets/img/icon-search.png new file mode 100644 index 00000000..43684627 Binary files /dev/null and b/site/public/assets/img/icon-search.png differ diff --git a/site/public/assets/img/icon_camera.svg b/site/public/assets/img/icon_camera.svg new file mode 100644 index 00000000..605fcfe1 --- /dev/null +++ b/site/public/assets/img/icon_camera.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/site/public/assets/img/loader.gif b/site/public/assets/img/loader.gif new file mode 100644 index 00000000..dc21df18 Binary files /dev/null and b/site/public/assets/img/loader.gif differ diff --git a/site/public/assets/img/megapixels-share.png b/site/public/assets/img/megapixels-share.png new file mode 100644 index 00000000..a40dfaca Binary files /dev/null and b/site/public/assets/img/megapixels-share.png differ diff --git a/site/public/assets/img/megapixels_logo_black.png b/site/public/assets/img/megapixels_logo_black.png new file mode 100644 index 00000000..64bc6659 Binary files /dev/null and b/site/public/assets/img/megapixels_logo_black.png differ diff --git a/site/public/assets/img/megapixels_logo_black.svg b/site/public/assets/img/megapixels_logo_black.svg new file mode 100644 index 00000000..8eb610e7 --- /dev/null +++ b/site/public/assets/img/megapixels_logo_black.svg @@ -0,0 +1,58 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/site/public/assets/img/megapixels_logo_white.svg b/site/public/assets/img/megapixels_logo_white.svg new file mode 100755 index 00000000..00aa430f --- /dev/null +++ b/site/public/assets/img/megapixels_logo_white.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/site/public/assets/img/reddot.png b/site/public/assets/img/reddot.png new file mode 100644 index 00000000..c414a464 Binary files /dev/null and b/site/public/assets/img/reddot.png differ diff --git a/site/public/assets/js/app/face.js b/site/public/assets/js/app/face.js new file mode 100644 index 00000000..0a87d2b2 --- /dev/null +++ b/site/public/assets/js/app/face.js @@ -0,0 +1,254 @@ +/* eslint-disable */ +var faceInit = function () { + var container = document.querySelector("#face_container") + var camera, controls, scene, renderer + var mouse = new THREE.Vector2(0.5, 0.5) + var mouseTarget = new THREE.Vector2(0.5, 0.5) + var POINT_SCALE = 1.8 + var FACE_POINT_COUNT = 68 + var SWAP_TIME = 500 + var cubesĀ = [], meshes = [] + var currentFace = document.querySelector('.currentFace') + var introEl = document.querySelector('.intro') + var faceBuffer = (function () { + var a = new Array(FACE_POINT_COUNT) + for (let i = 0; i < FACE_POINT_COUNT; i++) { + a[i] = new THREE.Vector3() + } + return a + })() + var lastSprite + var last_t = 0, start_t = 0 + var bgColor = 0x000000 // 0x191919 + var colors = [ + 0xff3333, + 0xff8833, + 0xffff33, + 0x338833, + 0x3388ff, + 0x3333ff, + 0x8833ff, + 0xff3388, + 0xffffff, + ] + var swapping = false, swap_count = 0, swapFrom, swapTo, face_names, faces + init() + + function init() { + fetch("/assets/data/3dlm_0_10.json") + .then(req => req.json()) + .then(data => { + face_names = Object.keys(data) + faces = face_names.map(name => recenter(data[name])) + setup() + build(faces[0]) + updateFace(faces[0]) + setCurrentFace(face_names[0]) + swapTo = faces[0] + animate() + }) + } + function setup() { + var w = window.innerWidth * 2/3 + var h = Math.min(window.innerWidth / 2, window.innerHeight * 0.7) + camera = new THREE.PerspectiveCamera(70, w/h, 1, 10000) + camera.position.x = 0 + camera.position.y = 0 + camera.position.z = 200 + + scene = new THREE.Scene() + // scene.background = new THREE.Color(bgColor) + + renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true }) + renderer.setPixelRatio(window.devicePixelRatio) + renderer.setSize(w, h) + renderer.setClearColor(0x000000, 0); + container.appendChild(renderer.domElement) + document.body.addEventListener('mousemove', onMouseMove) + // renderer.domElement.addEventListener('mousedown', swap) + // oktween.add({ + // obj: el.style, + // units: "px", + // from: { left: 0 }, + // to: { left: 100 }, + // duration: 1000, + // easing: oktween.easing.circ_out, + // update: function(obj){ + // console.log(obj.left) + // } + // finished: function(){ + // console.log("done") + // } + // }) + swap() + } + function build(points) { + var matrix = new THREE.Matrix4() + var quaternion = new THREE.Quaternion() + + for (var i = 0; i < FACE_POINT_COUNT; i++) { + var p = points[i] + var geometry = new THREE.BoxBufferGeometry() + var position = new THREE.Vector3(p[0], p[1], p[2]) + var rotation = new THREE.Euler() + var scale = new THREE.Vector3() + var color = new THREE.Color() + scale.x = scale.y = scale.z = POINT_SCALE + quaternion.setFromEuler(rotation, false) + matrix.compose(position, quaternion, scale) + geometry.applyMatrix(matrix) + material = new THREE.MeshBasicMaterial({ color: color.setHex(0xffffff) }) + cube = new THREE.Mesh(geometry, material) + scene.add(cube) + cubes.push(cube) + } + + meshes = getLineGeometry(points).map((geometry, i) => { + var color = new THREE.Color() + var material = new MeshLineMaterial({ + color: color.setHex(colors[i % colors.length]), + }) + var line = new MeshLine() + line.setGeometry(geometry, _ => 1.5) + var mesh = new THREE.Mesh(line.geometry, material) + mesh.geometry.dynamic = true + scene.add(mesh) + return [line, mesh] + }) + } + function lerpPoints(n, A, B, C) { + for (let i = 0, len = A.length; i < len; i++) { + lerpPoint(n, A[i], B[i], C[i]) + } + } + function lerpPoint(n, A, B, C) { + C.x = lerp(n, A.x, B.x) + C.y = lerp(n, A.y, B.y) + C.z = lerp(n, A.z, B.z) + } + function lerp(n, a, b) { + return (b-a) * n + a + } + function swap(){ + swap_count = (swap_count + 1) % faces.length + swapFrom = swapTo || faces[0] + swapTo = faces[swap_count] + setCurrentFace(face_names[swap_count]) + oktween.add({ + from: { n: 0 }, + to: { n: 1 }, + duration: 1000, + easing: oktween.easing.quad_in_out, + update: function(obj){ + lerpPoints(obj.n, swapFrom, swapTo, faceBuffer) + updateFace(faceBuffer) + }, + finished: function(){ + setTimeout(swap, 2000) + } + }) + } + function setCurrentFace(name) { + name = name.replace('.png', '').split('_').filter(s => !s.match(/\d+/)).join(' ') + currentFace.innerHTML = name + // if (lastSprite) { + // scene.remove(lastSprite) + // } + // var sprite = new THREE.TextSprite({ + // textSize: 12, + // redrawInterval: 1000, + // material: { + // color: 0xcccccc, + // }, + // texture: { + // text: name, + // fontFamily: '"Roboto", "Helvetica", sans-serif', + // }, + // }); + // sprite.position + // .setX(0) + // .setY(0) + // .setZ(0) + // scene.add(sprite); + // lastSprite = sprite + } + function updateFace(points) { + updateCubeGeometry(points) + updateLineGeometry(points) + } + function updateCubeGeometry(points) { + cubes.forEach((cube, i) => { + const p = points[i] + cube.position.set(p.x, p.y, p.z) + }) + } + function updateLineGeometry(points) { + getLineGeometry(points).map((geometry, i) => { + var [line, mesh] = meshes[i] + line.setGeometry(geometry, _ => 1.5) + mesh.geometry.vertices = line.geometry.vertices + mesh.geometry.verticesNeedUpdate = true + }) + } + function getLineGeometry(points) { + return [ + points.slice(0, 17), + points.slice(17, 22), + points.slice(22, 27), + points.slice(27, 31), + points.slice(31, 36), + points.slice(36, 42), + points.slice(42, 48), + points.slice(48) + ].map((a, i) => { + var geometry = new THREE.Geometry() + a.forEach(p => geometry.vertices.push(p)) + if (i > 4) { + geometry.vertices.push(a[0]) + } + return geometry + }) + } + function getBounds(obj) { + return obj.reduce((a, p) => { + return [ + Math.min(a[0], p[0]), + Math.max(a[1], p[0]), + Math.min(a[2], p[1]), + Math.max(a[3], p[1]), + Math.min(a[4], p[2]), + Math.max(a[5], p[2]), + ] + }, [Infinity, -Infinity, Infinity, -Infinity, Infinity, -Infinity]) + } + function recenter(obj) { + const bounds = getBounds(obj) + const x_width = (bounds[1] - bounds[0]) / 2 + const y_width = (bounds[3] - bounds[2]) / -3 + const z_width = (bounds[5] - bounds[4]) / 2 + return obj.map(p => { + p[0] = p[0] - bounds[0] - x_width + p[1] = -p[1] + bounds[1] + y_width + p[2] = p[2] - bounds[2] + z_width + return new THREE.Vector3(p[0], p[1], p[2]) + }) + } + // + function onMouseMove(e) { + mouse.x = e.clientX / window.innerWidth + mouse.y = e.clientY / window.innerHeight + } + function animate(t) { + requestAnimationFrame(animate) + renderer.render(scene, camera) + // scene.rotation.y += 0.01 * Math.PI + mouseTarget.x += (mouse.x - mouseTarget.x) * 0.1 + mouseTarget.y += (mouse.y - mouseTarget.y) * 0.1 + scene.rotation.x = (mouseTarget.y - 0.5) * Math.PI / 2 + scene.rotation.y = (mouseTarget.x - 0.5) * Math.PI + currentFace.style.transform = "translateZ(0) rotateY(" + (scene.rotation.y/2) + "rad)" + // scene.rotation.y += 0.01 + last_t = t + } +} +faceInit() \ No newline at end of file diff --git a/site/public/assets/js/app/prototypes.js b/site/public/assets/js/app/prototypes.js new file mode 100644 index 00000000..a7da2e46 --- /dev/null +++ b/site/public/assets/js/app/prototypes.js @@ -0,0 +1 @@ +prototypes.js \ No newline at end of file diff --git a/site/public/assets/js/dist/index.js b/site/public/assets/js/dist/index.js new file mode 100644 index 00000000..a1c2304c --- /dev/null +++ b/site/public/assets/js/dist/index.js @@ -0,0 +1,88 @@ +!function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:i})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=183)}([function(t,e,n){"use strict";e.a=function(t,e){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");if(null===t)return new Date(NaN);var n=e||{},c=null==n.additionalDigits?s:Object(i.a)(n.additionalDigits);if(2!==c&&1!==c&&0!==c)throw new RangeError("additionalDigits must be 0, 1 or 2");if(t instanceof Date||"object"==typeof t&&"[object Date]"===Object.prototype.toString.call(t))return new Date(t.getTime());if("number"==typeof t||"[object Number]"===Object.prototype.toString.call(t))return new Date(t);if("string"!=typeof t&&"[object String]"!==Object.prototype.toString.call(t))return new Date(NaN);var h=function(t){var e,n={},i=t.split(l.dateTimeDelimeter);l.plainTime.test(i[0])?(n.date=null,e=i[0]):(n.date=i[0],e=i[1],l.timeZoneDelimeter.test(n.date)&&(n.date=t.split(l.timeZoneDelimeter)[0],e=t.substr(n.date.length,t.length)));if(e){var o=l.timezone.exec(e);o?(n.time=e.replace(o[1],""),n.timezone=o[1]):n.time=e}return n}(t),v=function(t,e){var n,i=l.YYY[e],o=l.YYYYY[e];if(n=l.YYYY.exec(t)||o.exec(t)){var r=n[1];return{year:parseInt(r,10),restDateString:t.slice(r.length)}}if(n=l.YY.exec(t)||i.exec(t)){var a=n[1];return{year:100*parseInt(a,10),restDateString:t.slice(a.length)}}return{year:null}}(h.date,c),y=v.year,b=function(t,e){if(null===e)return null;var n,i,o,r;if(0===t.length)return(i=new Date(0)).setUTCFullYear(e),i;if(n=l.MM.exec(t))return i=new Date(0),o=parseInt(n[1],10)-1,f(e,o)?(i.setUTCFullYear(e,o),i):new Date(NaN);if(n=l.DDD.exec(t)){i=new Date(0);var a=parseInt(n[1],10);return function(t,e){if(e<1)return!1;var n=d(t);if(n&&e>366)return!1;if(!n&&e>365)return!1;return!0}(e,a)?(i.setUTCFullYear(e,0,a),i):new Date(NaN)}if(n=l.MMDD.exec(t)){i=new Date(0),o=parseInt(n[1],10)-1;var s=parseInt(n[2],10);return f(e,o,s)?(i.setUTCFullYear(e,o,s),i):new Date(NaN)}if(n=l.Www.exec(t))return r=parseInt(n[1],10)-1,p(e,r)?u(e,r):new Date(NaN);if(n=l.WwwD.exec(t)){r=parseInt(n[1],10)-1;var c=parseInt(n[2],10)-1;return p(e,r,c)?u(e,r,c):new Date(NaN)}return null}(v.restDateString,y);if(isNaN(b))return new Date(NaN);if(b){var w,_=b.getTime(),x=0;if(h.time&&(x=function(t){var e,n,i;if(e=l.HH.exec(t))return g(n=parseFloat(e[1].replace(",",".")))?n%24*r:NaN;if(e=l.HHMM.exec(t))return n=parseInt(e[1],10),i=parseFloat(e[2].replace(",",".")),g(n,i)?n%24*r+i*a:NaN;if(e=l.HHMMSS.exec(t)){n=parseInt(e[1],10),i=parseInt(e[2],10);var o=parseFloat(e[3].replace(",","."));return g(n,i,o)?n%24*r+i*a+1e3*o:NaN}return null}(h.time),isNaN(x)))return new Date(NaN);if(h.timezone){if(w=function(t){var e,n,i;if(e=l.timezoneZ.exec(t))return 0;if(e=l.timezoneHH.exec(t))return m(i=parseInt(e[2],10))?(n=i*r,"+"===e[1]?-n:n):NaN;if(e=l.timezoneHHMM.exec(t)){i=parseInt(e[2],10);var o=parseInt(e[3],10);return m(i,o)?(n=i*r+o*a,"+"===e[1]?-n:n):NaN}return 0}(h.timezone),isNaN(w))return new Date(NaN)}else w=Object(o.a)(new Date(_+x)),w=Object(o.a)(new Date(_+x+w));return new Date(_+x+w)}return new Date(NaN)};var i=n(1),o=n(19),r=36e5,a=6e4,s=2,l={dateTimeDelimeter:/[T ]/,plainTime:/:/,timeZoneDelimeter:/[Z ]/i,YY:/^(\d{2})$/,YYY:[/^([+-]\d{2})$/,/^([+-]\d{3})$/,/^([+-]\d{4})$/],YYYY:/^(\d{4})/,YYYYY:[/^([+-]\d{4})/,/^([+-]\d{5})/,/^([+-]\d{6})/],MM:/^-(\d{2})$/,DDD:/^-?(\d{3})$/,MMDD:/^-?(\d{2})-?(\d{2})$/,Www:/^-?W(\d{2})$/,WwwD:/^-?W(\d{2})-?(\d{1})$/,HH:/^(\d{2}([.,]\d*)?)$/,HHMM:/^(\d{2}):?(\d{2}([.,]\d*)?)$/,HHMMSS:/^(\d{2}):?(\d{2}):?(\d{2}([.,]\d*)?)$/,timezone:/([Z+-].*)$/,timezoneZ:/^(Z)$/,timezoneHH:/^([+-])(\d{2})$/,timezoneHHMM:/^([+-])(\d{2}):?(\d{2})$/};function u(t,e,n){e=e||0,n=n||0;var i=new Date(0);i.setUTCFullYear(t,0,4);var o=7*e+n+1-(i.getUTCDay()||7);return i.setUTCDate(i.getUTCDate()+o),i}var c=[31,28,31,30,31,30,31,31,30,31,30,31],h=[31,29,31,30,31,30,31,31,30,31,30,31];function d(t){return t%400==0||t%4==0&&t%100!=0}function f(t,e,n){if(e<0||e>11)return!1;if(null!=n){if(n<1)return!1;var i=d(t);if(i&&n>h[e])return!1;if(!i&&n>c[e])return!1}return!0}function p(t,e,n){return!(e<0||e>52)&&(null==n||!(n<0||n>6))}function g(t,e,n){return(null==t||!(t<0||t>=25))&&((null==e||!(e<0||e>=60))&&(null==n||!(n<0||n>=60)))}function m(t,e){return null==e||!(e<0||e>59)}},function(t,e,n){"use strict";e.a=function(t){if(null===t||!0===t||!1===t)return NaN;var e=Number(t);if(isNaN(e))return e;return e<0?Math.ceil(e):Math.floor(e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),n.d(e,"version",function(){return a}),n.d(e,"DOM",function(){return P}),n.d(e,"Children",function(){return T}),n.d(e,"render",function(){return y}),n.d(e,"createClass",function(){return H}),n.d(e,"createPortal",function(){return x}),n.d(e,"createFactory",function(){return M}),n.d(e,"createElement",function(){return k}),n.d(e,"cloneElement",function(){return R}),n.d(e,"isValidElement",function(){return D}),n.d(e,"findDOMNode",function(){return I}),n.d(e,"unmountComponentAtNode",function(){return S}),n.d(e,"Component",function(){return Y}),n.d(e,"PureComponent",function(){return X}),n.d(e,"unstable_renderSubtreeIntoContainer",function(){return w}),n.d(e,"unstable_batchedUpdates",function(){return Z}),n.d(e,"__spread",function(){return z});var i=n(33),o=n.n(i);n.d(e,"PropTypes",function(){return o.a});var r=n(207),a="15.1.0",s="a abbr address area article aside audio b base bdi bdo big blockquote body br button canvas caption cite code col colgroup data datalist dd del details dfn dialog div dl dt em embed fieldset figcaption figure footer form h1 h2 h3 h4 h5 h6 head header hgroup hr html i iframe img input ins kbd keygen label legend li link main map mark menu menuitem meta meter nav noscript object ol optgroup option output p param picture pre progress q rp rt ruby s samp script section select small source span strong style sub summary sup table tbody td textarea tfoot th thead time title tr track u ul var video wbr circle clipPath defs ellipse g image line linearGradient mask path pattern polygon polyline radialGradient rect stop svg text tspan".split(" "),l="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103,u="undefined"!=typeof Symbol&&Symbol.for?Symbol.for("__preactCompatWrapper"):"__preactCompatWrapper",c={constructor:1,render:1,shouldComponentUpdate:1,componentWillReceiveProps:1,componentWillUpdate:1,componentDidUpdate:1,componentWillMount:1,componentDidMount:1,componentWillUnmount:1,componentDidUnmount:1},h=/^(?:accent|alignment|arabic|baseline|cap|clip|color|fill|flood|font|glyph|horiz|marker|overline|paint|stop|strikethrough|stroke|text|underline|unicode|units|v|vector|vert|word|writing|x)[A-Z]/,d={},f=!1;try{f=!1}catch(t){}function p(){return null}var g=Object(r.c)("a",null).constructor;g.prototype.$$typeof=l,g.prototype.preactCompatUpgraded=!1,g.prototype.preactCompatNormalized=!1,Object.defineProperty(g.prototype,"type",{get:function(){return this.nodeName},set:function(t){this.nodeName=t},configurable:!0}),Object.defineProperty(g.prototype,"props",{get:function(){return this.attributes},set:function(t){this.attributes=t},configurable:!0});var m=r.d.event;r.d.event=function(t){return m&&(t=m(t)),t.persist=Object,t.nativeEvent=t,t};var v=r.d.vnode;function y(t,e,n){var i=e&&e._preactCompatRendered&&e._preactCompatRendered.base;i&&i.parentNode!==e&&(i=null),!i&&e&&(i=e.firstElementChild);for(var o=e.childNodes.length;o--;)e.childNodes[o]!==i&&e.removeChild(e.childNodes[o]);var a=Object(r.e)(t,e,i);return e&&(e._preactCompatRendered=a&&(a._component||{base:a})),"function"==typeof n&&n(),a&&a._component||a}r.d.vnode=function(t){if(!t.preactCompatUpgraded){t.preactCompatUpgraded=!0;var e=t.nodeName,n=t.attributes=null==t.attributes?{}:z({},t.attributes);"function"==typeof e?(!0===e[u]||e.prototype&&"isReactComponent"in e.prototype)&&(t.children&&""===String(t.children)&&(t.children=void 0),t.children&&(n.children=t.children),t.preactCompatNormalized||O(t),function(t){var e=t.nodeName,n=t.attributes;t.attributes={},e.defaultProps&&z(t.attributes,e.defaultProps);n&&z(t.attributes,n)}(t)):(t.children&&""===String(t.children)&&(t.children=void 0),t.children&&(n.children=t.children),n.defaultValue&&(n.value||0===n.value||(n.value=n.defaultValue),delete n.defaultValue),function(t,e){var n,i,o;if(e){for(o in e)if(n=h.test(o))break;if(n)for(o in i=t.attributes={},e)e.hasOwnProperty(o)&&(i[h.test(o)?o.replace(/([A-Z0-9])/,"-$1").toLowerCase():o]=e[o])}}(t,n))}v&&v(t)};var b=function(){};function w(t,e,n,i){var o=y(Object(r.c)(b,{context:t.context},e),n),a=o._component||o.base;return i&&i.call(a,o),a}function _(t){w(this,t.vnode,t.container)}function x(t,e){return Object(r.c)(_,{vnode:t,container:e})}function S(t){var e=t._preactCompatRendered&&t._preactCompatRendered.base;return!(!e||e.parentNode!==t)&&(Object(r.e)(Object(r.c)(p),t,e),!0)}b.prototype.getChildContext=function(){return this.props.context},b.prototype.render=function(t){return t.children[0]};var E,C=[],T={map:function(t,e,n){return null==t?null:(t=T.toArray(t),n&&n!==t&&(e=e.bind(n)),t.map(e))},forEach:function(t,e,n){if(null==t)return null;t=T.toArray(t),n&&n!==t&&(e=e.bind(n)),t.forEach(e)},count:function(t){return t&&t.length||0},only:function(t){if(1!==(t=T.toArray(t)).length)throw new Error("Children.only() expects only one child.");return t[0]},toArray:function(t){return null==t?[]:C.concat(t)}};function M(t){return k.bind(null,t)}for(var P={},L=s.length;L--;)P[s[L]]=M(s[L]);function A(t){var e=t[u];return e?!0===e?t:e:(e=function(t){return H({displayName:t.displayName||t.name,render:function(){return t(this.props,this.context)}})}(t),Object.defineProperty(e,u,{configurable:!0,value:!0}),e.displayName=t.displayName,e.propTypes=t.propTypes,e.defaultProps=t.defaultProps,Object.defineProperty(t,u,{configurable:!0,value:e}),e)}function k(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return function t(e,n){for(var i=n||0;i0;)n[i]=arguments[i+2];if(!D(t))return t;var o=t.attributes||t.props,a=[Object(r.c)(t.nodeName||t.type,z({},o),t.children||o&&o.children),e];return n&&n.length?a.push(n):e&&e.children&&a.push(e.children),O(r.b.apply(void 0,a))}function D(t){return t&&(t instanceof g||t.$$typeof===l)}var j={configurable:!0,get:function(){return this.class},set:function(t){this.class=t}};function z(t,e){for(var n=arguments,i=1,o=void 0;i0&&void 0!==arguments[0]?arguments[0]:0;t/=arguments.length>1&&void 0!==arguments[1]?arguments[1]:25;var e=g(Math.round(t)%60);return(t=Math.floor(t/60))>60?Math.floor(t/60)+":"+g(t%60)+":"+e:t%60+":"+e},e.percent=function(t){return(100*t).toFixed(1)+"%"},e.px=function(t,e){return Math.round(t*e)+"px"},e.clamp=function(t,e,n){return t2&&2==e[e.length-2].length?e.slice(-3).join("."):e.slice(-2).join(".")},e.preloadImage=function(t){var e=t.verified,n=t.hash,i=t.frame,o=t.url;n&&i&&(o=imageUrl(e,n,i,"md"));var r=new Image,a=!1;r.onload=function(){a||(a=!0,r.onload=null)},r.crossOrigin="anonymous",r.src=o,r.complete&&r.onload()},e.get=function(t,e){return fetch(t,{method:"GET",body:e,headers:{Accept:"application/json, application/xml, text/play, text/html, *.*"}}).then(function(t){return t.json()})},e.post=function(t,e){var n=void 0;return e instanceof FormData?n={Accept:"application/json, application/xml, text/play, text/html, *.*"}:(n={Accept:"application/json, application/xml, text/play, text/html, *.*","Content-Type":"application/json; charset=utf-8"},e=(0,i.default)(e)),fetch(t,{method:"POST",body:e,headers:n}).then(function(t){return t.json()})}},function(t,e,n){t.exports={default:n(233),__esModule:!0}},function(t,e,n){"use strict";e.__esModule=!0;var i=function(t){return t&&t.__esModule?t:{default:t}}(n(56));e.default=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":(0,i.default)(e))&&"function"!=typeof e?t:e}},function(t,e,n){"use strict";e.__esModule=!0;var i=a(n(247)),o=a(n(251)),r=a(n(56));function a(t){return t&&t.__esModule?t:{default:t}}e.default=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":(0,r.default)(e)));t.prototype=(0,o.default)(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(i.default?(0,i.default)(t,e):t.__proto__=e)}},function(t,e,n){var i=n(10);t.exports=function(t){if(!i(t))throw TypeError(t+" is not an object!");return t}},function(t,e,n){t.exports=!n(23)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(210),o=n(117),r=n(216);n.d(e,"Provider",function(){return i.b}),n.d(e,"createProvider",function(){return i.a}),n.d(e,"connectAdvanced",function(){return o.a}),n.d(e,"connect",function(){return r.a})},function(t,e,n){var i=n(40);t.exports=function(t,e,n){if(i(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,i){return t.call(e,n,i)};case 3:return function(n,i,o){return t.call(e,n,i,o)}}return function(){return t.apply(e,arguments)}}},function(t,e,n){"use strict";e.a=function(t){var e=new Date(t.getTime()),n=e.getTimezoneOffset();e.setSeconds(0,0);var o=e.getTime()%i;return n*i+o};var i=6e4},function(t,e,n){var i=n(9),o=n(41);t.exports=n(16)?function(t,e,n){return i.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),n.d(e,"createStore",function(){return s}),n.d(e,"combineReducers",function(){return u}),n.d(e,"bindActionCreators",function(){return h}),n.d(e,"applyMiddleware",function(){return p}),n.d(e,"compose",function(){return f}),n.d(e,"__DO_NOT_USE__ActionTypes",function(){return r});var i=n(219),o=function(){return Math.random().toString(36).substring(7).split("").join(".")},r={INIT:"@@redux/INIT"+o(),REPLACE:"@@redux/REPLACE"+o(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+o()}};function a(t){if("object"!=typeof t||null===t)return!1;for(var e=t;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}function s(t,e,n){var o;if("function"==typeof e&&"function"==typeof n||"function"==typeof n&&"function"==typeof arguments[3])throw new Error("It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function");if("function"==typeof e&&void 0===n&&(n=e,e=void 0),void 0!==n){if("function"!=typeof n)throw new Error("Expected the enhancer to be a function.");return n(s)(t,e)}if("function"!=typeof t)throw new Error("Expected the reducer to be a function.");var l=t,u=e,c=[],h=c,d=!1;function f(){h===c&&(h=c.slice())}function p(){if(d)throw new Error("You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.");return u}function g(t){if("function"!=typeof t)throw new Error("Expected the listener to be a function.");if(d)throw new Error("You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");var e=!0;return f(),h.push(t),function(){if(e){if(d)throw new Error("You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");e=!1,f();var n=h.indexOf(t);h.splice(n,1)}}}function m(t){if(!a(t))throw new Error("Actions must be plain objects. Use custom middleware for async actions.");if(void 0===t.type)throw new Error('Actions may not have an undefined "type" property. Have you misspelled a constant?');if(d)throw new Error("Reducers may not dispatch actions.");try{d=!0,u=l(u,t)}finally{d=!1}for(var e=c=h,n=0;n=0&&l<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var u=Object(o.a)(t,n),c=u.getDay(),h=(c=0&&l.splice(e,1)}function p(t){var e=document.createElement("style");return void 0===t.attrs.type&&(t.attrs.type="text/css"),g(e,t.attrs),d(t,e),e}function g(t,e){Object.keys(e).forEach(function(n){t.setAttribute(n,e[n])})}function m(t,e){var n,i,o,r;if(e.transform&&t.css){if(!(r=e.transform(t.css)))return function(){};t.css=r}if(e.singleton){var l=s++;n=a||(a=p(e)),i=y.bind(null,n,l,!1),o=y.bind(null,n,l,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=function(t){var e=document.createElement("link");return void 0===t.attrs.type&&(t.attrs.type="text/css"),t.attrs.rel="stylesheet",g(e,t.attrs),d(t,e),e}(e),i=function(t,e,n){var i=n.css,o=n.sourceMap,r=void 0===e.convertToAbsoluteUrls&&o;(e.convertToAbsoluteUrls||r)&&(i=u(i));o&&(i+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */");var a=new Blob([i],{type:"text/css"}),s=t.href;t.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}.bind(null,n,e),o=function(){f(n),n.href&&URL.revokeObjectURL(n.href)}):(n=p(e),i=function(t,e){var n=e.css,i=e.media;i&&t.setAttribute("media",i);if(t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}.bind(null,n),o=function(){f(n)});return i(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;i(t=e)}else o()}}t.exports=function(t,e){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(e=e||{}).attrs="object"==typeof e.attrs?e.attrs:{},e.singleton||"boolean"==typeof e.singleton||(e.singleton=o()),e.insertInto||(e.insertInto="head"),e.insertAt||(e.insertAt="bottom");var n=h(t,e);return c(n,e),function(t){for(var o=[],r=0;r0?1:a};var i=n(0)},function(t,e){t.exports={}},function(t,e,n){var i=n(67),o=n(68);t.exports=function(t){return i(o(t))}},function(t,e,n){var i=n(68);t.exports=function(t){return Object(i(t))}},function(t,e,n){"use strict";var i=n(192)(!0);n(69)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=i(e,n),this._i+=t.length,{value:t,done:!1})})},function(t,e,n){t.exports=n(205)()},function(t,e,n){"use strict";e.a=function(t,e){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=Object(i.a)(t,e),r=n.getFullYear(),a=new Date(0);a.setFullYear(r+1,0,4),a.setHours(0,0,0,0);var s=Object(o.a)(a,e),l=new Date(0);l.setFullYear(r,0,4),l.setHours(0,0,0,0);var u=Object(o.a)(l,e);return n.getTime()>=s.getTime()?r+1:n.getTime()>=u.getTime()?r:r-1};var i=n(0),o=n(27)},function(t,e,n){"use strict";e.a=function(t){t=t||{};var e={};for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}},function(t,e,n){"use strict";e.a=function(t,e,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var a=Object(o.a)(t,n),s=Object(o.a)(e,n),l=a.getTime()-Object(i.a)(a),u=s.getTime()-Object(i.a)(s);return Math.round((l-u)/r)};var i=n(19),o=n(90),r=864e5},function(t,e,n){n(186);for(var i=n(5),o=n(20),r=n(29),a=n(6)("toStringTag"),s="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),l=0;lb;b++)if((m=e?y(a(p=t[b])[0],p[1]):y(t[b]))===u||m===c)return m}else for(g=v.call(t);!(p=g.next()).done;)if((m=o(g,y,p.value,e))===u||m===c)return m}).BREAK=u,e.RETURN=c},function(t,e,n){t.exports={default:n(230),__esModule:!0}},function(t,e,n){"use strict";e.__esModule=!0;var i=n(2),o=n(2);e.clone=function(t){return JSON.parse(JSON.stringify(t))},e.isSameArray=function(t,e){var n=t.length;if(n!==e.length)return!1;for(;n--;)if(t[n]!==e[n])return!1;return!0},e.reactFormatter=function(t){return function(e,n,r){return r(function(){var n=e.getElement(),r=i.cloneElement(t,{cell:e});o.render(r,n.querySelector(".formatterCell"))}),'
'}}},function(t,e,n){"use strict";e.a=function(t,e,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=Object(o.a)(t,n),a=Object(i.a)(e);return r.setDate(r.getDate()+a),r};var i=n(1),o=n(0)},function(t,e,n){"use strict";e.a=function(t,e,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=Object(o.a)(t,n).getTime(),a=Object(i.a)(e);return new Date(r+a)};var i=n(1),o=n(0)},function(t,e,n){"use strict";e.a=function(t,e){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");var n=Object(i.a)(t,e),r=new Date(0);return r.setFullYear(n,0,4),r.setHours(0,0,0,0),Object(o.a)(r,e)};var i=n(34),o=n(27)},function(t,e,n){"use strict";var i=n(311),o=n(312),r=n(314),a=n(315),s=n(317),l={formatDistance:i.a,formatLong:o.a,formatRelative:r.a,localize:a.a,match:s.a,options:{weekStartsOn:0,firstWeekContainsDate:1}};e.a=l},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Video=e.DetectionBoxes=e.DetectionList=e.Classifier=e.TableCell=e.TableRow=e.TableTuples=e.TableArray=e.TableObject=e.Gate=e.UploadImage=e.Loader=e.Sidebar=void 0;var i=d(n(408)),o=d(n(409)),r=d(n(410)),a=d(n(411)),s=d(n(414)),l=d(n(430)),u=d(n(431)),c=d(n(436)),h=n(437);function d(t){return t&&t.__esModule?t:{default:t}}n(439),e.Sidebar=l.default,e.Loader=a.default,e.UploadImage=s.default,e.Gate=u.default,e.TableObject=h.TableObject,e.TableArray=h.TableArray,e.TableTuples=h.TableTuples,e.TableRow=h.TableRow,e.TableCell=h.TableCell,e.Classifier=i.default,e.DetectionList=r.default,e.DetectionBoxes=o.default,e.Video=c.default},function(t,e,n){var i=n(15),o=n(189),r=n(75),a=n(73)("IE_PROTO"),s=function(){},l=function(){var t,e=n(70)("iframe"),i=r.length;for(e.style.display="none",n(105).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write(" + + + + + \ No newline at end of file diff --git a/site/public/datasets/brainwash/index.html b/site/public/datasets/brainwash/index.html index e1717179..28f8ccc6 100644 --- a/site/public/datasets/brainwash/index.html +++ b/site/public/datasets/brainwash/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/datasets/duke_mtmc/index.html b/site/public/datasets/duke_mtmc/index.html index c12f1522..adb81953 100644 --- a/site/public/datasets/duke_mtmc/index.html +++ b/site/public/datasets/duke_mtmc/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/datasets/hrt_transgender/index.html b/site/public/datasets/hrt_transgender/index.html index 1859e830..4f046aa7 100644 --- a/site/public/datasets/hrt_transgender/index.html +++ b/site/public/datasets/hrt_transgender/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/datasets/ijb_c/index.html b/site/public/datasets/ijb_c/index.html index 511420b9..2b00e5d5 100644 --- a/site/public/datasets/ijb_c/index.html +++ b/site/public/datasets/ijb_c/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/datasets/index.html b/site/public/datasets/index.html index 4c50ceb5..a5c9c14a 100644 --- a/site/public/datasets/index.html +++ b/site/public/datasets/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/datasets/msceleb/assets/notes/index.html b/site/public/datasets/msceleb/assets/notes/index.html index 469a7bca..e9751129 100644 --- a/site/public/datasets/msceleb/assets/notes/index.html +++ b/site/public/datasets/msceleb/assets/notes/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/datasets/msceleb/index.html b/site/public/datasets/msceleb/index.html index a8172dff..61c32385 100644 --- a/site/public/datasets/msceleb/index.html +++ b/site/public/datasets/msceleb/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/datasets/oxford_town_centre/index.html b/site/public/datasets/oxford_town_centre/index.html index 0bf0e1be..f77b6b08 100644 --- a/site/public/datasets/oxford_town_centre/index.html +++ b/site/public/datasets/oxford_town_centre/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/datasets/uccs/assets/notes/index.html b/site/public/datasets/uccs/assets/notes/index.html index e611476b..8746ed70 100644 --- a/site/public/datasets/uccs/assets/notes/index.html +++ b/site/public/datasets/uccs/assets/notes/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/datasets/uccs/index.html b/site/public/datasets/uccs/index.html index 24544205..0ece4c6e 100644 --- a/site/public/datasets/uccs/index.html +++ b/site/public/datasets/uccs/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/info/index.html b/site/public/info/index.html index 7d3d47e8..d1c2fb02 100644 --- a/site/public/info/index.html +++ b/site/public/info/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/research/00_introduction/index.html b/site/public/research/00_introduction/index.html index e736f056..e056bc62 100644 --- a/site/public/research/00_introduction/index.html +++ b/site/public/research/00_introduction/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/research/01_from_1_to_100_pixels/index.html b/site/public/research/01_from_1_to_100_pixels/index.html index 09503074..90efd707 100644 --- a/site/public/research/01_from_1_to_100_pixels/index.html +++ b/site/public/research/01_from_1_to_100_pixels/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/research/02_what_computers_can_see/index.html b/site/public/research/02_what_computers_can_see/index.html index 7c07c72b..f8a36624 100644 --- a/site/public/research/02_what_computers_can_see/index.html +++ b/site/public/research/02_what_computers_can_see/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/research/index.html b/site/public/research/index.html index c64a1096..569857c5 100644 --- a/site/public/research/index.html +++ b/site/public/research/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/test/chart/index.html b/site/public/test/chart/index.html index 1c8af1a5..87067a28 100644 --- a/site/public/test/chart/index.html +++ b/site/public/test/chart/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/test/citations/index.html b/site/public/test/citations/index.html index d14475d6..685395f0 100644 --- a/site/public/test/citations/index.html +++ b/site/public/test/citations/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/test/csv/index.html b/site/public/test/csv/index.html index c4927b4e..9fbda1c6 100644 --- a/site/public/test/csv/index.html +++ b/site/public/test/csv/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/test/datasets/index.html b/site/public/test/datasets/index.html index 43f84766..2270349f 100644 --- a/site/public/test/datasets/index.html +++ b/site/public/test/datasets/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/test/face_search/index.html b/site/public/test/face_search/index.html index b756dd67..15a6899d 100644 --- a/site/public/test/face_search/index.html +++ b/site/public/test/face_search/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/test/gallery/index.html b/site/public/test/gallery/index.html index c3efa57e..6746fe6a 100644 --- a/site/public/test/gallery/index.html +++ b/site/public/test/gallery/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/test/index.html b/site/public/test/index.html index 26d48053..a0989be1 100644 --- a/site/public/test/index.html +++ b/site/public/test/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/test/map/index.html b/site/public/test/map/index.html index 6d786724..9229abc5 100644 --- a/site/public/test/map/index.html +++ b/site/public/test/map/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/test/name_search/index.html b/site/public/test/name_search/index.html index ecf003d0..d900e565 100644 --- a/site/public/test/name_search/index.html +++ b/site/public/test/name_search/index.html @@ -49,11 +49,7 @@
diff --git a/site/public/test/pie_chart/index.html b/site/public/test/pie_chart/index.html index 14d7c179..72dc0290 100644 --- a/site/public/test/pie_chart/index.html +++ b/site/public/test/pie_chart/index.html @@ -49,11 +49,7 @@
diff --git a/site/templates/layout.html b/site/templates/layout.html index a98eaaba..39de27a6 100644 --- a/site/templates/layout.html +++ b/site/templates/layout.html @@ -49,11 +49,7 @@
-- cgit v1.2.3-70-g09d2