diff --git a/config/default/common/brand/about/welcome.md b/config/default/common/brand/about/welcome.md
index 0b617e7fb6..65881627a0 100644
--- a/config/default/common/brand/about/welcome.md
+++ b/config/default/common/brand/about/welcome.md
@@ -26,6 +26,6 @@
mapping library, GIBS imagery can also be accessed from Google Earth, NASA World Wind, and several other
clients. We encourage interested developers to build their own clients or integrate NASA imagery into their
existing ones using these services.
-Frequently
- Asked Questions
+View the Frequently
+ Asked Questions and visit the Worldview Image of the Week archive which uses data and imagery available in Worldview to highlight recent events, hazards, and disasters.
diff --git a/config/default/common/config/wv.json/stories/default/worldview_intro.json b/config/default/common/config/wv.json/stories/default/worldview_intro.json
index 6ed19a4350..260d7c340d 100644
--- a/config/default/common/config/wv.json/stories/default/worldview_intro.json
+++ b/config/default/common/config/wv.json/stories/default/worldview_intro.json
@@ -118,7 +118,7 @@
},
{
"target": "#wv-share-button",
- "content": "Create a custom URL link of your Worldview page and share Worldview via social media with friends and colleagues!",
+ "content": "Create a custom URL link of your Worldview map view, access information about embedding Worldview, learn how to use imagery directly from GIBS, and remember to cite us!",
"placementBeacon": "bottom"
},
{
diff --git a/e2e/features/share/share-test.spec.js b/e2e/features/share/share-test.spec.js
index 4409ce4e6a..81b81fd800 100644
--- a/e2e/features/share/share-test.spec.js
+++ b/e2e/features/share/share-test.spec.js
@@ -29,12 +29,12 @@ test('Clicking the share link button opens the share dialog', async () => {
await expect(shareToolbar).toBeVisible()
})
-test('Share tabs link and social are visible and enabled', async () => {
+test('Share tabs link and cite us are visible and enabled', async () => {
const linkShareNav = await page.locator('.link-share-nav')
- const socialShareNav = await page.locator('.social-share-nav')
+ const citeUsShareNav = await page.locator('.cite-us-share-nav')
const linkShareActive = await page.locator('.link-share-nav a')
await expect(linkShareNav).toBeVisible()
- await expect(socialShareNav).toBeVisible()
+ await expect(citeUsShareNav).toBeVisible()
await expect(linkShareActive).toHaveClass(/active/)
})
@@ -72,20 +72,6 @@ test('Share link clipboard with no time query string param in the page url will
expect(shareLinkValue).toContain(`t=${year}-${monthText}-${dayText}`)
})
-test('Clicking the social tab displays social share buttons', async () => {
- const { shareToolbarButton } = selectors
- const facebook = await page.locator('#fb-share')
- const twitter = await page.locator('#tw-share')
- const reddit = await page.locator('#rd-share')
- const email = await page.locator('#email-share')
- await shareToolbarButton.click()
- await page.locator('.social-share-nav a').click()
- await expect(facebook).toBeVisible()
- await expect(twitter).toBeVisible()
- await expect(reddit).toBeVisible()
- await expect(email).toBeVisible()
-})
-
test('Clicking Shorten link works with links less than 2049 characters', async () => {
const { shareToolbarButton } = selectors
const shortQueryString = 'http://localhost:3000/?l=Reference_Labels_15m,Reference_Features_15m,Coastlines_15m,VIIRS_NOAA20_CorrectedReflectance_TrueColor(hidden),VIIRS_SNPP_CorrectedReflectance_TrueColor(hidden),MODIS_Aqua_CorrectedReflectance_TrueColor(hidden),MODIS_Terra_CorrectedReflectance_TrueColor&lg=true&t=2022-08-10-T15%3A15%3A05Z'
diff --git a/package-lock.json b/package-lock.json
index adc50d2a1e..2abcefaa7d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,23 +1,23 @@
{
"name": "worldview",
- "version": "4.43.0",
+ "version": "4.44.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "worldview",
- "version": "4.43.0",
+ "version": "4.44.0",
"hasInstallScript": true,
"license": "NASA-1.3",
"dependencies": {
"@elastic/react-search-ui": "^1.21.5",
"@elastic/react-search-ui-views": "^1.21.2",
- "@fortawesome/fontawesome-svg-core": "^6.5.2",
- "@fortawesome/free-brands-svg-icons": "^6.5.2",
- "@fortawesome/free-solid-svg-icons": "^6.5.2",
+ "@fortawesome/fontawesome-svg-core": "^6.6.0",
+ "@fortawesome/free-brands-svg-icons": "^6.6.0",
+ "@fortawesome/free-solid-svg-icons": "^6.6.0",
"@fortawesome/react-fontawesome": "^0.2.2",
"@khanisak/temperature-converter": "^2.0.1",
- "@reduxjs/toolkit": "^2.2.5",
+ "@reduxjs/toolkit": "^2.2.6",
"axios": "^1.7.2",
"bluebird": "3.7.2",
"bootstrap": "^5.3.3",
@@ -42,17 +42,17 @@
"moment-locales-webpack-plugin": "^1.2.0",
"node-dir": "^0.1.17",
"ol": "^8.2.0",
- "ol-mapbox-style": "^12.3.3",
+ "ol-mapbox-style": "^12.3.4",
"p-queue": "^8.0.1",
"proj4": "^2.11.0",
"prop-types": "^15.8.1",
- "qs": "^6.12.1",
+ "qs": "^6.12.3",
"react": "^18.3.1",
"react-beautiful-dnd": "^13.1.1",
"react-device-detect": "^2.2.3",
"react-dom": "^18.3.0",
"react-draggable": "^4.4.6",
- "react-image-crop": "^11.0.4",
+ "react-image-crop": "^11.0.6",
"react-infinite-scroller": "^1.2.6",
"react-joyride": "^2.8.2",
"react-mobile-datepicker": "^4.0.2",
@@ -78,13 +78,13 @@
"what-input": "^5.2.12"
},
"devDependencies": {
- "@babel/core": "^7.24.7",
- "@babel/eslint-parser": "^7.24.7",
+ "@babel/core": "^7.24.9",
+ "@babel/eslint-parser": "^7.24.8",
"@babel/plugin-transform-class-properties": "^7.24.7",
"@babel/plugin-transform-private-methods": "^7.24.7",
- "@babel/preset-env": "^7.24.7",
+ "@babel/preset-env": "^7.24.8",
"@babel/preset-react": "^7.24.7",
- "@playwright/test": "^1.45.0",
+ "@playwright/test": "^1.45.2",
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.15",
"@webpack-cli/serve": "^2.0.5",
"ajv": "^8.16.0",
@@ -96,7 +96,7 @@
"css-loader": "^7.1.2",
"css-minimizer-webpack-plugin": "^7.0.0",
"css-url-relative-plugin": "^1.1.0",
- "cssnano": "^7.0.3",
+ "cssnano": "^7.0.4",
"eslint": "^8.57.0",
"eslint-config-airbnb": "^19.0.4",
"eslint-config-standard": "^17.1.0",
@@ -107,10 +107,10 @@
"eslint-plugin-n": "^17.9.0",
"eslint-plugin-no-storage": "^1.0.2",
"eslint-plugin-node": "^11.1.0",
- "eslint-plugin-promise": "^6.2.0",
- "eslint-plugin-react": "^7.34.3",
+ "eslint-plugin-promise": "^6.4.0",
+ "eslint-plugin-react": "^7.34.4",
"express": "^4.19.2",
- "glob": "^10.4.2",
+ "glob": "^11.0.0",
"husky": "^9.0.11",
"jest": "^29.7.0",
"jest-canvas-mock": "^2.5.2",
@@ -121,7 +121,7 @@
"node-ssh": "^13.2.0",
"npm-run-all": "^4.1.5",
"patch-package": "^8.0.0",
- "postcss": "^8.4.38",
+ "postcss": "^8.4.39",
"postcss-loader": "^8.1.1",
"react-refresh": "^0.14.1",
"react-test-renderer": "^18.3.0",
@@ -137,10 +137,10 @@
"tar": "^7.4.0",
"terser-webpack-plugin": "^5.3.10",
"uuid": "^10.0.0",
- "webpack": "^5.92.1",
+ "webpack": "^5.93.0",
"webpack-bundle-analyzer": "^4.10.2",
"webpack-cli": "^5.1.4",
- "webpack-dev-middleware": "^7.2.1",
+ "webpack-dev-middleware": "^7.3.0",
"webpack-dev-server": "^5.0.4",
"xml-js": "^1.6.11",
"xml2js": "^0.6.2",
@@ -180,26 +180,28 @@
}
},
"node_modules/@babel/compat-data": {
- "version": "7.24.7",
+ "version": "7.24.8",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.24.7",
+ "version": "7.24.9",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.9.tgz",
+ "integrity": "sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==",
"license": "MIT",
"dependencies": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.24.7",
- "@babel/generator": "^7.24.7",
- "@babel/helper-compilation-targets": "^7.24.7",
- "@babel/helper-module-transforms": "^7.24.7",
- "@babel/helpers": "^7.24.7",
- "@babel/parser": "^7.24.7",
+ "@babel/generator": "^7.24.9",
+ "@babel/helper-compilation-targets": "^7.24.8",
+ "@babel/helper-module-transforms": "^7.24.9",
+ "@babel/helpers": "^7.24.8",
+ "@babel/parser": "^7.24.8",
"@babel/template": "^7.24.7",
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7",
+ "@babel/traverse": "^7.24.8",
+ "@babel/types": "^7.24.9",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -215,7 +217,7 @@
}
},
"node_modules/@babel/eslint-parser": {
- "version": "7.24.7",
+ "version": "7.24.8",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -232,10 +234,12 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.24.7",
+ "version": "7.24.10",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.10.tgz",
+ "integrity": "sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==",
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.24.7",
+ "@babel/types": "^7.24.9",
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.25",
"jsesc": "^2.5.1"
@@ -280,12 +284,12 @@
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.24.7",
+ "version": "7.24.8",
"license": "MIT",
"dependencies": {
- "@babel/compat-data": "^7.24.7",
- "@babel/helper-validator-option": "^7.24.7",
- "browserslist": "^4.22.2",
+ "@babel/compat-data": "^7.24.8",
+ "@babel/helper-validator-option": "^7.24.8",
+ "browserslist": "^4.23.1",
"lru-cache": "^5.1.1",
"semver": "^6.3.1"
},
@@ -412,7 +416,9 @@
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.24.7",
+ "version": "7.24.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.9.tgz",
+ "integrity": "sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==",
"license": "MIT",
"dependencies": {
"@babel/helper-environment-visitor": "^7.24.7",
@@ -440,7 +446,7 @@
}
},
"node_modules/@babel/helper-plugin-utils": {
- "version": "7.24.7",
+ "version": "7.24.8",
"dev": true,
"license": "MIT",
"engines": {
@@ -513,7 +519,9 @@
}
},
"node_modules/@babel/helper-string-parser": {
- "version": "7.24.7",
+ "version": "7.24.8",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
+ "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -527,7 +535,7 @@
}
},
"node_modules/@babel/helper-validator-option": {
- "version": "7.24.7",
+ "version": "7.24.8",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -548,11 +556,13 @@
}
},
"node_modules/@babel/helpers": {
- "version": "7.24.7",
+ "version": "7.24.8",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.8.tgz",
+ "integrity": "sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==",
"license": "MIT",
"dependencies": {
"@babel/template": "^7.24.7",
- "@babel/types": "^7.24.7"
+ "@babel/types": "^7.24.8"
},
"engines": {
"node": ">=6.9.0"
@@ -572,7 +582,9 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.24.7",
+ "version": "7.24.8",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.8.tgz",
+ "integrity": "sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==",
"license": "MIT",
"bin": {
"parser": "bin/babel-parser.js"
@@ -1015,15 +1027,15 @@
}
},
"node_modules/@babel/plugin-transform-classes": {
- "version": "7.24.7",
+ "version": "7.24.8",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-compilation-targets": "^7.24.7",
+ "@babel/helper-compilation-targets": "^7.24.8",
"@babel/helper-environment-visitor": "^7.24.7",
"@babel/helper-function-name": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.8",
"@babel/helper-replace-supers": "^7.24.7",
"@babel/helper-split-export-declaration": "^7.24.7",
"globals": "^11.1.0"
@@ -1051,11 +1063,11 @@
}
},
"node_modules/@babel/plugin-transform-destructuring": {
- "version": "7.24.7",
+ "version": "7.24.8",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.24.8"
},
"engines": {
"node": ">=6.9.0"
@@ -1243,12 +1255,12 @@
}
},
"node_modules/@babel/plugin-transform-modules-commonjs": {
- "version": "7.24.7",
+ "version": "7.24.8",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-module-transforms": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-module-transforms": "^7.24.8",
+ "@babel/helper-plugin-utils": "^7.24.8",
"@babel/helper-simple-access": "^7.24.7"
},
"engines": {
@@ -1397,11 +1409,11 @@
}
},
"node_modules/@babel/plugin-transform-optional-chaining": {
- "version": "7.24.7",
+ "version": "7.24.8",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.8",
"@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
"@babel/plugin-syntax-optional-chaining": "^7.8.3"
},
@@ -1620,11 +1632,11 @@
}
},
"node_modules/@babel/plugin-transform-typeof-symbol": {
- "version": "7.24.7",
+ "version": "7.24.8",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.24.8"
},
"engines": {
"node": ">=6.9.0"
@@ -1693,14 +1705,14 @@
}
},
"node_modules/@babel/preset-env": {
- "version": "7.24.7",
+ "version": "7.24.8",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/compat-data": "^7.24.7",
- "@babel/helper-compilation-targets": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-validator-option": "^7.24.7",
+ "@babel/compat-data": "^7.24.8",
+ "@babel/helper-compilation-targets": "^7.24.8",
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/helper-validator-option": "^7.24.8",
"@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.7",
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.7",
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7",
@@ -1731,9 +1743,9 @@
"@babel/plugin-transform-block-scoping": "^7.24.7",
"@babel/plugin-transform-class-properties": "^7.24.7",
"@babel/plugin-transform-class-static-block": "^7.24.7",
- "@babel/plugin-transform-classes": "^7.24.7",
+ "@babel/plugin-transform-classes": "^7.24.8",
"@babel/plugin-transform-computed-properties": "^7.24.7",
- "@babel/plugin-transform-destructuring": "^7.24.7",
+ "@babel/plugin-transform-destructuring": "^7.24.8",
"@babel/plugin-transform-dotall-regex": "^7.24.7",
"@babel/plugin-transform-duplicate-keys": "^7.24.7",
"@babel/plugin-transform-dynamic-import": "^7.24.7",
@@ -1746,7 +1758,7 @@
"@babel/plugin-transform-logical-assignment-operators": "^7.24.7",
"@babel/plugin-transform-member-expression-literals": "^7.24.7",
"@babel/plugin-transform-modules-amd": "^7.24.7",
- "@babel/plugin-transform-modules-commonjs": "^7.24.7",
+ "@babel/plugin-transform-modules-commonjs": "^7.24.8",
"@babel/plugin-transform-modules-systemjs": "^7.24.7",
"@babel/plugin-transform-modules-umd": "^7.24.7",
"@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7",
@@ -1756,7 +1768,7 @@
"@babel/plugin-transform-object-rest-spread": "^7.24.7",
"@babel/plugin-transform-object-super": "^7.24.7",
"@babel/plugin-transform-optional-catch-binding": "^7.24.7",
- "@babel/plugin-transform-optional-chaining": "^7.24.7",
+ "@babel/plugin-transform-optional-chaining": "^7.24.8",
"@babel/plugin-transform-parameters": "^7.24.7",
"@babel/plugin-transform-private-methods": "^7.24.7",
"@babel/plugin-transform-private-property-in-object": "^7.24.7",
@@ -1767,7 +1779,7 @@
"@babel/plugin-transform-spread": "^7.24.7",
"@babel/plugin-transform-sticky-regex": "^7.24.7",
"@babel/plugin-transform-template-literals": "^7.24.7",
- "@babel/plugin-transform-typeof-symbol": "^7.24.7",
+ "@babel/plugin-transform-typeof-symbol": "^7.24.8",
"@babel/plugin-transform-unicode-escapes": "^7.24.7",
"@babel/plugin-transform-unicode-property-regex": "^7.24.7",
"@babel/plugin-transform-unicode-regex": "^7.24.7",
@@ -1776,7 +1788,7 @@
"babel-plugin-polyfill-corejs2": "^0.4.10",
"babel-plugin-polyfill-corejs3": "^0.10.4",
"babel-plugin-polyfill-regenerator": "^0.6.1",
- "core-js-compat": "^3.31.0",
+ "core-js-compat": "^3.37.1",
"semver": "^6.3.1"
},
"engines": {
@@ -1846,17 +1858,19 @@
}
},
"node_modules/@babel/traverse": {
- "version": "7.24.7",
+ "version": "7.24.8",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.8.tgz",
+ "integrity": "sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==",
"license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.24.7",
- "@babel/generator": "^7.24.7",
+ "@babel/generator": "^7.24.8",
"@babel/helper-environment-visitor": "^7.24.7",
"@babel/helper-function-name": "^7.24.7",
"@babel/helper-hoist-variables": "^7.24.7",
"@babel/helper-split-export-declaration": "^7.24.7",
- "@babel/parser": "^7.24.7",
- "@babel/types": "^7.24.7",
+ "@babel/parser": "^7.24.8",
+ "@babel/types": "^7.24.8",
"debug": "^4.3.1",
"globals": "^11.1.0"
},
@@ -1865,10 +1879,12 @@
}
},
"node_modules/@babel/types": {
- "version": "7.24.7",
+ "version": "7.24.9",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.9.tgz",
+ "integrity": "sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-string-parser": "^7.24.7",
+ "@babel/helper-string-parser": "^7.24.8",
"@babel/helper-validator-identifier": "^7.24.7",
"to-fast-properties": "^2.0.0"
},
@@ -2248,41 +2264,45 @@
"license": "MIT"
},
"node_modules/@fortawesome/fontawesome-common-types": {
- "version": "6.5.2",
- "hasInstallScript": true,
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.6.0.tgz",
+ "integrity": "sha512-xyX0X9mc0kyz9plIyryrRbl7ngsA9jz77mCZJsUkLl+ZKs0KWObgaEBoSgQiYWAsSmjz/yjl0F++Got0Mdp4Rw==",
"license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/@fortawesome/fontawesome-svg-core": {
- "version": "6.5.2",
- "hasInstallScript": true,
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.6.0.tgz",
+ "integrity": "sha512-KHwPkCk6oRT4HADE7smhfsKudt9N/9lm6EJ5BVg0tD1yPA5hht837fB87F8pn15D8JfTqQOjhKTktwmLMiD7Kg==",
"license": "MIT",
"dependencies": {
- "@fortawesome/fontawesome-common-types": "6.5.2"
+ "@fortawesome/fontawesome-common-types": "6.6.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/@fortawesome/free-brands-svg-icons": {
- "version": "6.5.2",
- "hasInstallScript": true,
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.6.0.tgz",
+ "integrity": "sha512-1MPD8lMNW/earme4OQi1IFHtmHUwAKgghXlNwWi9GO7QkTfD+IIaYpIai4m2YJEzqfEji3jFHX1DZI5pbY/biQ==",
"license": "(CC-BY-4.0 AND MIT)",
"dependencies": {
- "@fortawesome/fontawesome-common-types": "6.5.2"
+ "@fortawesome/fontawesome-common-types": "6.6.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/@fortawesome/free-solid-svg-icons": {
- "version": "6.5.2",
- "hasInstallScript": true,
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.6.0.tgz",
+ "integrity": "sha512-IYv/2skhEDFc2WGUcqvFJkeK39Q+HyPf5GHUrT/l2pKbtgEIv1al1TKd6qStR5OIwQdN1GZP54ci3y4mroJWjA==",
"license": "(CC-BY-4.0 AND MIT)",
"dependencies": {
- "@fortawesome/fontawesome-common-types": "6.5.2"
+ "@fortawesome/fontawesome-common-types": "6.6.0"
},
"engines": {
"node": ">=6"
@@ -3251,11 +3271,13 @@
}
},
"node_modules/@playwright/test": {
- "version": "1.45.0",
+ "version": "1.45.3",
+ "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.45.3.tgz",
+ "integrity": "sha512-UKF4XsBfy+u3MFWEH44hva1Q8Da28G6RFtR2+5saw+jgAFQV5yYnB1fu68Mz7fO+5GJF3wgwAIs0UelU8TxFrA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "playwright": "1.45.0"
+ "playwright": "1.45.3"
},
"bin": {
"playwright": "cli.js"
@@ -3351,7 +3373,7 @@
}
},
"node_modules/@reduxjs/toolkit": {
- "version": "2.2.5",
+ "version": "2.2.6",
"license": "MIT",
"dependencies": {
"immer": "^10.0.3",
@@ -4495,17 +4517,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/array.prototype.toreversed": {
- "version": "1.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "es-shim-unscopables": "^1.0.0"
- }
- },
"node_modules/array.prototype.tosorted": {
"version": "1.1.4",
"dev": true,
@@ -5849,7 +5860,7 @@
}
},
"node_modules/core-js-compat": {
- "version": "3.36.1",
+ "version": "3.37.1",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6266,11 +6277,11 @@
"license": "MIT"
},
"node_modules/cssnano": {
- "version": "7.0.3",
+ "version": "7.0.4",
"dev": true,
"license": "MIT",
"dependencies": {
- "cssnano-preset-default": "^7.0.3",
+ "cssnano-preset-default": "^7.0.4",
"lilconfig": "^3.1.2"
},
"engines": {
@@ -6285,7 +6296,7 @@
}
},
"node_modules/cssnano-preset-default": {
- "version": "7.0.3",
+ "version": "7.0.4",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6294,7 +6305,7 @@
"cssnano-utils": "^5.0.0",
"postcss-calc": "^10.0.0",
"postcss-colormin": "^7.0.1",
- "postcss-convert-values": "^7.0.1",
+ "postcss-convert-values": "^7.0.2",
"postcss-discard-comments": "^7.0.1",
"postcss-discard-duplicates": "^7.0.0",
"postcss-discard-empty": "^7.0.0",
@@ -7798,7 +7809,7 @@
}
},
"node_modules/eslint-plugin-promise": {
- "version": "6.2.0",
+ "version": "6.4.0",
"dev": true,
"license": "ISC",
"engines": {
@@ -7812,34 +7823,36 @@
}
},
"node_modules/eslint-plugin-react": {
- "version": "7.34.3",
+ "version": "7.35.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz",
+ "integrity": "sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==",
"dev": true,
"license": "MIT",
"dependencies": {
"array-includes": "^3.1.8",
"array.prototype.findlast": "^1.2.5",
"array.prototype.flatmap": "^1.3.2",
- "array.prototype.toreversed": "^1.1.2",
"array.prototype.tosorted": "^1.1.4",
"doctrine": "^2.1.0",
"es-iterator-helpers": "^1.0.19",
"estraverse": "^5.3.0",
+ "hasown": "^2.0.2",
"jsx-ast-utils": "^2.4.1 || ^3.0.0",
"minimatch": "^3.1.2",
"object.entries": "^1.1.8",
"object.fromentries": "^2.0.8",
- "object.hasown": "^1.1.4",
"object.values": "^1.2.0",
"prop-types": "^15.8.1",
"resolve": "^2.0.0-next.5",
"semver": "^6.3.1",
- "string.prototype.matchall": "^4.0.11"
+ "string.prototype.matchall": "^4.0.11",
+ "string.prototype.repeat": "^1.0.0"
},
"engines": {
"node": ">=4"
},
"peerDependencies": {
- "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7"
}
},
"node_modules/eslint-plugin-react-hooks": {
@@ -8903,22 +8916,22 @@
}
},
"node_modules/glob": {
- "version": "10.4.2",
+ "version": "11.0.0",
"dev": true,
"license": "ISC",
"dependencies": {
"foreground-child": "^3.1.0",
- "jackspeak": "^3.1.2",
- "minimatch": "^9.0.4",
+ "jackspeak": "^4.0.1",
+ "minimatch": "^10.0.0",
"minipass": "^7.1.2",
"package-json-from-dist": "^1.0.0",
- "path-scurry": "^1.11.1"
+ "path-scurry": "^2.0.0"
},
"bin": {
"glob": "dist/esm/bin.mjs"
},
"engines": {
- "node": ">=16 || 14 >=14.18"
+ "node": "20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
@@ -8948,14 +8961,14 @@
}
},
"node_modules/glob/node_modules/minimatch": {
- "version": "9.0.4",
+ "version": "10.0.1",
"dev": true,
"license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": "20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
@@ -10179,14 +10192,14 @@
}
},
"node_modules/jackspeak": {
- "version": "3.1.2",
+ "version": "4.0.1",
"dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
"@isaacs/cliui": "^8.0.2"
},
"engines": {
- "node": ">=14"
+ "node": "20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
@@ -12490,6 +12503,81 @@
"node": ">= 18"
}
},
+ "node_modules/minizlib/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/minizlib/node_modules/glob": {
+ "version": "10.4.5",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/minizlib/node_modules/jackspeak": {
+ "version": "3.4.3",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/minizlib/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/minizlib/node_modules/minimatch": {
+ "version": "9.0.5",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/minizlib/node_modules/path-scurry": {
+ "version": "1.11.1",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/minizlib/node_modules/rimraf": {
"version": "5.0.5",
"dev": true,
@@ -12928,22 +13016,6 @@
"get-intrinsic": "^1.2.1"
}
},
- "node_modules/object.hasown": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.2",
- "es-object-atoms": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/object.values": {
"version": "1.2.0",
"dev": true,
@@ -12982,7 +13054,7 @@
}
},
"node_modules/ol-mapbox-style": {
- "version": "12.3.3",
+ "version": "12.3.4",
"license": "BSD-2-Clause",
"dependencies": {
"@mapbox/mapbox-gl-style-spec": "^13.23.1",
@@ -13425,26 +13497,26 @@
"license": "MIT"
},
"node_modules/path-scurry": {
- "version": "1.11.1",
+ "version": "2.0.0",
"dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
- "lru-cache": "^10.2.0",
- "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ "lru-cache": "^11.0.0",
+ "minipass": "^7.1.2"
},
"engines": {
- "node": ">=16 || 14 >=14.18"
+ "node": "20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/path-scurry/node_modules/lru-cache": {
- "version": "10.2.2",
+ "version": "11.0.0",
"dev": true,
"license": "ISC",
"engines": {
- "node": "14 || >=16.14"
+ "node": "20 || >=22"
}
},
"node_modules/path-to-regexp": {
@@ -13591,11 +13663,13 @@
}
},
"node_modules/playwright": {
- "version": "1.45.0",
+ "version": "1.45.3",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.45.3.tgz",
+ "integrity": "sha512-QhVaS+lpluxCaioejDZ95l4Y4jSFCsBvl2UZkpeXlzxmqS+aABr5c82YmfMHrL6x27nvrvykJAFpkzT2eWdJww==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "playwright-core": "1.45.0"
+ "playwright-core": "1.45.3"
},
"bin": {
"playwright": "cli.js"
@@ -13608,7 +13682,9 @@
}
},
"node_modules/playwright-core": {
- "version": "1.45.0",
+ "version": "1.45.3",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.45.3.tgz",
+ "integrity": "sha512-+ym0jNbcjikaOwwSZycFbwkWgfruWvYlJfThKYAlImbxUgdWFO2oW70ojPm4OpE4t6TAo2FY/smM+hpVTtkhDA==",
"dev": true,
"license": "Apache-2.0",
"bin": {
@@ -13635,7 +13711,7 @@
}
},
"node_modules/postcss": {
- "version": "8.4.38",
+ "version": "8.4.39",
"dev": true,
"funding": [
{
@@ -13654,7 +13730,7 @@
"license": "MIT",
"dependencies": {
"nanoid": "^3.3.7",
- "picocolors": "^1.0.0",
+ "picocolors": "^1.0.1",
"source-map-js": "^1.2.0"
},
"engines": {
@@ -13694,7 +13770,7 @@
}
},
"node_modules/postcss-convert-values": {
- "version": "7.0.1",
+ "version": "7.0.2",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14356,7 +14432,7 @@
"license": "MIT"
},
"node_modules/qs": {
- "version": "6.12.1",
+ "version": "6.12.3",
"license": "BSD-3-Clause",
"dependencies": {
"side-channel": "^1.0.6"
@@ -14622,7 +14698,9 @@
"license": "MIT"
},
"node_modules/react-image-crop": {
- "version": "11.0.5",
+ "version": "11.0.6",
+ "resolved": "https://registry.npmjs.org/react-image-crop/-/react-image-crop-11.0.6.tgz",
+ "integrity": "sha512-T+/RPBhwFxdf8PjD/uoWk+tBkS0Xf2XW0lY5mnsmClvnAujO81EEjDwj0M2pcHX3seXVgKOr/yIiL+Sx4evMNw==",
"license": "ISC",
"peerDependencies": {
"react": ">=16.13.1"
@@ -16393,6 +16471,17 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/string.prototype.repeat": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz",
+ "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.5"
+ }
+ },
"node_modules/string.prototype.trim": {
"version": "1.2.9",
"dev": true,
@@ -17568,7 +17657,9 @@
}
},
"node_modules/webpack": {
- "version": "5.92.1",
+ "version": "5.93.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.93.0.tgz",
+ "integrity": "sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==",
"license": "MIT",
"dependencies": {
"@types/eslint-scope": "^3.7.3",
@@ -17720,7 +17811,9 @@
}
},
"node_modules/webpack-dev-middleware": {
- "version": "7.2.1",
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.3.0.tgz",
+ "integrity": "sha512-xD2qnNew+F6KwOGZR7kWdbIou/ud7cVqLEXeK1q0nHcNsX/u7ul/fSdlOTX4ntSL5FNFy7ZJJXbf0piF591JYw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -17889,6 +17982,33 @@
}
}
},
+ "node_modules/webpack-dev-server/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/glob": {
+ "version": "10.4.5",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/webpack-dev-server/node_modules/ipaddr.js": {
"version": "2.1.0",
"dev": true,
@@ -17911,6 +18031,39 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/webpack-dev-server/node_modules/jackspeak": {
+ "version": "3.4.3",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/webpack-dev-server/node_modules/minimatch": {
+ "version": "9.0.5",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/webpack-dev-server/node_modules/open": {
"version": "10.1.0",
"dev": true,
@@ -17928,6 +18081,21 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/webpack-dev-server/node_modules/path-scurry": {
+ "version": "1.11.1",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/webpack-dev-server/node_modules/rimraf": {
"version": "5.0.5",
"dev": true,
diff --git a/package.json b/package.json
index 6f3016d2bd..70b082485f 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "worldview",
- "version": "4.43.0",
+ "version": "4.44.0",
"description": "Interactive interface for browsing full-resolution, global satellite imagery",
"keywords": [
"NASA",
@@ -77,13 +77,13 @@
"upload": "node tasks/util/upload.js"
},
"devDependencies": {
- "@babel/core": "^7.24.7",
- "@babel/eslint-parser": "^7.24.7",
+ "@babel/core": "^7.24.9",
+ "@babel/eslint-parser": "^7.24.8",
"@babel/plugin-transform-class-properties": "^7.24.7",
"@babel/plugin-transform-private-methods": "^7.24.7",
- "@babel/preset-env": "^7.24.7",
+ "@babel/preset-env": "^7.24.8",
"@babel/preset-react": "^7.24.7",
- "@playwright/test": "^1.45.0",
+ "@playwright/test": "^1.45.2",
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.15",
"@webpack-cli/serve": "^2.0.5",
"ajv": "^8.16.0",
@@ -95,7 +95,7 @@
"css-loader": "^7.1.2",
"css-minimizer-webpack-plugin": "^7.0.0",
"css-url-relative-plugin": "^1.1.0",
- "cssnano": "^7.0.3",
+ "cssnano": "^7.0.4",
"eslint": "^8.57.0",
"eslint-config-airbnb": "^19.0.4",
"eslint-config-standard": "^17.1.0",
@@ -106,10 +106,10 @@
"eslint-plugin-n": "^17.9.0",
"eslint-plugin-no-storage": "^1.0.2",
"eslint-plugin-node": "^11.1.0",
- "eslint-plugin-promise": "^6.2.0",
- "eslint-plugin-react": "^7.34.3",
+ "eslint-plugin-promise": "^6.4.0",
+ "eslint-plugin-react": "^7.34.4",
"express": "^4.19.2",
- "glob": "^10.4.2",
+ "glob": "^11.0.0",
"husky": "^9.0.11",
"jest": "^29.7.0",
"jest-canvas-mock": "^2.5.2",
@@ -120,7 +120,7 @@
"node-ssh": "^13.2.0",
"npm-run-all": "^4.1.5",
"patch-package": "^8.0.0",
- "postcss": "^8.4.38",
+ "postcss": "^8.4.39",
"postcss-loader": "^8.1.1",
"react-refresh": "^0.14.1",
"react-test-renderer": "^18.3.0",
@@ -136,10 +136,10 @@
"tar": "^7.4.0",
"terser-webpack-plugin": "^5.3.10",
"uuid": "^10.0.0",
- "webpack": "^5.92.1",
+ "webpack": "^5.93.0",
"webpack-bundle-analyzer": "^4.10.2",
"webpack-cli": "^5.1.4",
- "webpack-dev-middleware": "^7.2.1",
+ "webpack-dev-middleware": "^7.3.0",
"webpack-dev-server": "^5.0.4",
"xml-js": "^1.6.11",
"xml2js": "^0.6.2",
@@ -148,12 +148,12 @@
"dependencies": {
"@elastic/react-search-ui": "^1.21.5",
"@elastic/react-search-ui-views": "^1.21.2",
- "@fortawesome/fontawesome-svg-core": "^6.5.2",
- "@fortawesome/free-brands-svg-icons": "^6.5.2",
- "@fortawesome/free-solid-svg-icons": "^6.5.2",
+ "@fortawesome/fontawesome-svg-core": "^6.6.0",
+ "@fortawesome/free-brands-svg-icons": "^6.6.0",
+ "@fortawesome/free-solid-svg-icons": "^6.6.0",
"@fortawesome/react-fontawesome": "^0.2.2",
"@khanisak/temperature-converter": "^2.0.1",
- "@reduxjs/toolkit": "^2.2.5",
+ "@reduxjs/toolkit": "^2.2.6",
"axios": "^1.7.2",
"bluebird": "3.7.2",
"bootstrap": "^5.3.3",
@@ -178,17 +178,17 @@
"moment-locales-webpack-plugin": "^1.2.0",
"node-dir": "^0.1.17",
"ol": "^8.2.0",
- "ol-mapbox-style": "^12.3.3",
+ "ol-mapbox-style": "^12.3.4",
"p-queue": "^8.0.1",
"proj4": "^2.11.0",
"prop-types": "^15.8.1",
- "qs": "^6.12.1",
+ "qs": "^6.12.3",
"react": "^18.3.1",
"react-beautiful-dnd": "^13.1.1",
"react-device-detect": "^2.2.3",
"react-dom": "^18.3.0",
"react-draggable": "^4.4.6",
- "react-image-crop": "^11.0.4",
+ "react-image-crop": "^11.0.6",
"react-infinite-scroller": "^1.2.6",
"react-joyride": "^2.8.2",
"react-mobile-datepicker": "^4.0.2",
diff --git a/tasks/build-options/getVisMetadata.js b/tasks/build-options/getVisMetadata.js
index 5d0dfa52bd..7ba5ae4e8b 100644
--- a/tasks/build-options/getVisMetadata.js
+++ b/tasks/build-options/getVisMetadata.js
@@ -108,7 +108,9 @@ async function main (url) {
console.warn(`${prog}: Fetching ${layerOrder.length} layer-metadata files`)
for (const layerId of layerOrder) {
- await getMetadata(layerId, url)
+ if (!layerId.includes('_STD') && !layerId.includes('_NRT')) {
+ await getMetadata(layerId, url)
+ }
}
const layers = Object.keys(layerMetadata).sort().reduce(
diff --git a/web/js/components/layer/settings/imagery-search.js b/web/js/components/layer/settings/imagery-search.js
index 3668f48111..7d43f71a6c 100644
--- a/web/js/components/layer/settings/imagery-search.js
+++ b/web/js/components/layer/settings/imagery-search.js
@@ -37,7 +37,7 @@ export default function ImagerySearch({ layer }) {
const conceptID = layer?.conceptIds?.[0]?.value || layer?.collectionConceptID;
- const getOlderGranules = async (layer, refDate = selectedDate, pageNum = 1) => {
+ const getSmallerExtent = () => {
// clamp extent to maximum extent allowed by the CMR api
const extent = map.extent.map((coord, i) => {
const condition = i <= 1 ? coord > maxExtent[i] : coord < maxExtent[i];
@@ -46,8 +46,22 @@ export default function ImagerySearch({ layer }) {
}
return maxExtent[i];
});
+ const xDiff = Math.abs(extent[0] - extent[2]);
+ const yDiff = Math.abs(extent[1] - extent[3]);
+ // Reduce width by 40% and height by 20%, to show only centered data
+ const smallerExtent = [
+ extent[0] + (xDiff * 0.2),
+ extent[1] + (yDiff * 0.1),
+ extent[2] - (xDiff * 0.2),
+ extent[3] - (yDiff * 0.1),
+ ];
+ return smallerExtent;
+ };
+
+ const getOlderGranules = async (layer, refDate = selectedDate, pageNum = 1) => {
+ const smallerExtent = getSmallerExtent();
try {
- const olderUrl = `https://cmr.earthdata.nasa.gov/search/granules.json?collection_concept_id=${conceptID}&bounding_box=${extent.join(',')}&temporal=,${refDate.toISOString()}&sort_key=-start_date&pageSize=25&page_num=${pageNum}`;
+ const olderUrl = `https://cmr.earthdata.nasa.gov/search/granules.json?collection_concept_id=${conceptID}&bounding_box=${smallerExtent.join(',')}&temporal=,${refDate.toISOString()}&sort_key=-start_date&pageSize=25&page_num=${pageNum}`;
const olderResponse = await fetch(olderUrl, { headers });
const olderGranules = await olderResponse.json();
const olderDates = olderGranules.feed.entry.map(parseGranuleTimestamp);
@@ -59,16 +73,9 @@ export default function ImagerySearch({ layer }) {
};
const getNewerGranules = async (layer, refDate = selectedDate, pageNum = 1) => {
- // clamp extent to maximum extent allowed by the CMR api
- const extent = map.extent.map((coord, i) => {
- const condition = i <= 1 ? coord > maxExtent[i] : coord < maxExtent[i];
- if (condition) {
- return coord;
- }
- return maxExtent[i];
- });
+ const smallerExtent = getSmallerExtent();
try {
- const newerUrl = `https://cmr.earthdata.nasa.gov/search/granules.json?collection_concept_id=${conceptID}&bounding_box=${extent.join(',')}&temporal=${refDate.toISOString()},&sort_key=start_date&pageSize=25&page_num=${pageNum}`;
+ const newerUrl = `https://cmr.earthdata.nasa.gov/search/granules.json?collection_concept_id=${conceptID}&bounding_box=${smallerExtent.join(',')}&temporal=${refDate.toISOString()},&sort_key=start_date&pageSize=25&page_num=${pageNum}`;
const newerResponse = await fetch(newerUrl, { headers });
const newerGranules = await newerResponse.json();
const newerDates = newerGranules.feed.entry.map(parseGranuleTimestamp);
diff --git a/web/js/components/toolbar/share/links.js b/web/js/components/toolbar/share/links.js
deleted file mode 100644
index fd287319ec..0000000000
--- a/web/js/components/toolbar/share/links.js
+++ /dev/null
@@ -1,78 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
-import HoverTooltip from '../../util/hover-tooltip';
-
-const ShareLinks = function ({ isMobile, onClick }) {
- const handleClick = (event, type) => {
- event.preventDefault();
- onClick(type);
- };
- return (
-
- );
-};
-
-ShareLinks.propTypes = {
- isMobile: PropTypes.bool,
- onClick: PropTypes.func,
-};
-
-export default ShareLinks;
diff --git a/web/js/containers/share.js b/web/js/containers/share.js
index b401a82762..e2ea7d7768 100644
--- a/web/js/containers/share.js
+++ b/web/js/containers/share.js
@@ -13,10 +13,9 @@ import {
TabContent, TabPane,
} from 'reactstrap';
import googleTagManager from 'googleTagManager';
-import ShareLinks from '../components/toolbar/share/links';
import ShareToolTips from '../components/toolbar/share/tooltips';
import {
- getPermalink, getShareLink, wrapWithIframe,
+ getPermalink, wrapWithIframe,
} from '../modules/link/util';
import onClickFeedback from '../modules/feedback/util';
import initFeedback from '../modules/feedback/actions';
@@ -39,8 +38,8 @@ const getShortenRequestString = (mock, permalink) => {
);
};
-const DESKTOP_SHARE_TABS = ['link', 'embed', 'social'];
-const MOBILE_SHARE_TABS = ['link', 'social'];
+const DESKTOP_SHARE_TABS = ['link', 'embed', 'cite-us'];
+const MOBILE_SHARE_TABS = ['link', 'cite-us'];
class ShareLinkContainer extends Component {
constructor(props) {
@@ -142,34 +141,6 @@ class ShareLinkContainer extends Component {
return getPermalink(queryString, selectedDate, isEmbed);
};
- onLinkClick = (type) => {
- const permalink = this.getPermalink();
- let shareLink = getShareLink(type, permalink);
-
- googleTagManager.pushEvent({
- event: 'share_social_platform',
- social_type: type,
- });
-
- // If a short link can be generated, replace the full link.
- if (type === 'twitter') {
- const newTab = window.open('', '_blank');
- this.getShortLink().then(({ link }) => {
- shareLink = getShareLink(type, link);
- }).finally(() => {
- newTab.location = shareLink;
- });
- } else if (type === 'email') {
- this.getShortLink().then(({ link }) => {
- shareLink = getShareLink(type, link);
- }).finally(() => {
- window.location = shareLink;
- });
- } else {
- window.open(shareLink, '_blank');
- }
- };
-
setActiveTab = (activeTab) => {
this.setState({ activeTab });
};
@@ -242,6 +213,27 @@ class ShareLinkContainer extends Component {
);
+ renderTextareaGroup = (value, type) => (
+
+
+ );
+
renderLinkTab = () => {
const { shortLink, urlShortening } = this.props;
const {
@@ -305,29 +297,30 @@ class ShareLinkContainer extends Component {
{' '}
to enable Worldview embedding on your website.
+
+ View the
+ {' '}
+ API documentation
+ {' '}
+ to learn how to directly access the imagery via GIBS.
+
>
)}
);
};
- renderSocialTab = () => {
- const { isMobile } = this.props;
+ renderCiteUsTab = () => {
const {
activeTab,
} = this.state;
+ const citeUsValue = 'We acknowledge the use of imagery from the NASA Worldview application (https://worldview.earthdata.nasa.gov), part of the NASA Earth Science Data and Information System (ESDIS).';
return (
-
- {activeTab === 'social' && (
+
+ {activeTab === 'cite-us' && (
<>
-
-
- Share @NAME@ on social media.
-
+ {this.renderTextareaGroup(citeUsValue, 'cite-us')}
>
)}
@@ -342,7 +335,7 @@ class ShareLinkContainer extends Component {
} = this.state;
return (
-
+
{this.renderLinkTab()}
{this.renderEmbedTab()}
- {this.renderSocialTab()}
+ {this.renderCiteUsTab()}
diff --git a/web/js/mapUI/components/layers/addLayer.js b/web/js/mapUI/components/layers/addLayer.js
index a4e364e23d..f3f2008040 100644
--- a/web/js/mapUI/components/layers/addLayer.js
+++ b/web/js/mapUI/components/layers/addLayer.js
@@ -51,7 +51,12 @@ function AddLayer(props) {
compareMapUi.create(ui.selected, mode);
} else {
const newLayer = await createLayer(def);
- ui.selected.getLayers().insertAt(index, newLayer);
+ const layers = ui.selected.getLayers();
+ if (index <= layers.getLength()) {
+ layers.insertAt(index, newLayer);
+ } else {
+ layers.push(newLayer);
+ }
}
updateLayerVisibilities();
preloadNextTiles();
diff --git a/web/js/mapUI/components/update-projection/updateProjection.js b/web/js/mapUI/components/update-projection/updateProjection.js
index 143479fec2..3052b3cccc 100644
--- a/web/js/mapUI/components/update-projection/updateProjection.js
+++ b/web/js/mapUI/components/update-projection/updateProjection.js
@@ -363,7 +363,9 @@ function UpdateProjection(props) {
useEffect(() => {
if (!ui.selected) return;
- if (Object.keys(prevRenderedPalettes).length === Object.keys(renderedPalettes).length) return;
+ const prevRenderedPalettesKeys = Object.keys(prevRenderedPalettes);
+ const renderedPalettesKeys = Object.keys(renderedPalettes);
+ if (prevRenderedPalettesKeys.length === renderedPalettesKeys.length) return;
reloadLayers(null, false);
}, [renderedPalettes]);
diff --git a/web/js/modules/link/util.js b/web/js/modules/link/util.js
index 98462ed2ca..d0c0407b7d 100644
--- a/web/js/modules/link/util.js
+++ b/web/js/modules/link/util.js
@@ -49,25 +49,6 @@ export function emailUrlParams(subject, body) {
);
}
-export function getShareLink(type, url) {
- const shareMessage = 'Check out what I found in NASA @NAME@!';
- const twMessage = 'Check out what I found in #NASAWorldview -';
- const emailBody = `${shareMessage} - ${url}`;
-
- switch (type) {
- case 'twitter':
- return twitterUrlParams(url, twMessage);
- case 'facebook':
- return facebookUrlParams('121285908450463', url, url, 'popup');
- case 'reddit':
- return redditUrlParams(url, shareMessage);
- case 'email':
- return emailUrlParams(shareMessage, emailBody);
- default:
- return undefined;
- }
-}
-
export function encode(value) {
let encoded = encodeURIComponent(value);
lodashEach(ENCODING_EXCEPTIONS, (exception) => {
diff --git a/web/scss/features/share.scss b/web/scss/features/share.scss
index 08aa2499aa..5d675f9cc2 100644
--- a/web/scss/features/share.scss
+++ b/web/scss/features/share.scss
@@ -1,54 +1,11 @@
-.social-share {
- padding-top: 10px;
- display: flexbox;
- display: flex;
- -ms-flex-pack: distribute;
- justify-content: space-around;
-}
-
-.social-share .icon-link {
- background-color: #000;
- border-radius: 50%;
- color: #fff;
- display: inline-block;
- height: 48px;
- line-height: 48px;
- width: 48px;
- font-size: 26px;
- text-align: center;
- cursor: pointer;
- text-decoration: none;
- border: 2px solid transparent;
-
- &:hover {
- border: 2px solid #fff;
- }
-
- & svg.svg-inline--fa {
- margin-bottom: 2px;
- }
-}
-
-.social-share .social-icon-container-facebook {
- background-color: #3b5998;
-}
-
-.social-share .social-icon-container-twitter {
- background-color: #00aced;
-}
-
-.social-share .social-icon-container-reddit-alien {
- background-color: #ff5700;
-}
-
-.social-share .social-icon-container-email {
- background-color: #505050;
-}
-
.share-body {
height: 108px;
}
+.share-body-tall {
+ height: 148px;
+}
+
.share-nav-container {
.input-group {
padding-top: 10px;
@@ -61,12 +18,17 @@
}
.share-tab-embed {
- p {
+ p:first-of-type {
padding: 10px 1px;
}
}
- .share-tab-social {
+ .share-tab-cite-us {
+ textarea {
+ resize: none;
+ height: 70px;
+ }
+
p {
padding: 10px 1px;
}
@@ -108,13 +70,13 @@
}
}
-#feedback-url {
+#feedback-url, #api-doc-url {
cursor: pointer;
text-decoration: none;
color: #7bf;
}
-#feedback-url:hover {
+#feedback-url:hover, #api-doc-url:hover {
text-decoration: underline;
color: #7bf !important;
}