From f86a44595f84a85cde8fc13358b8bfb194318d86 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Dec 2025 21:39:35 +0000 Subject: [PATCH 1/2] chore(deps-dev): bump eslint-plugin-react-hooks from 5.2.0 to 7.0.1 Bumps [eslint-plugin-react-hooks](https://github.com/facebook/react/tree/HEAD/packages/eslint-plugin-react-hooks) from 5.2.0 to 7.0.1. - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/main/packages/eslint-plugin-react-hooks/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/HEAD/packages/eslint-plugin-react-hooks) --- updated-dependencies: - dependency-name: eslint-plugin-react-hooks dependency-version: 7.0.1 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- package.json | 2 +- yarn.lock | 40 ++++++++++++++++++++++++++++++++++------ 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 729079e..87deea5 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,7 @@ "@vitest/browser-playwright": "^4.0.15", "conventional-changelog-conventionalcommits": "^9.1.0", "eslint": "^9.25.0", - "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-hooks": "^7.0.1", "eslint-plugin-react-refresh": "^0.4.19", "globals": "^16.0.0", "playwright": "^1.57.0", diff --git a/yarn.lock b/yarn.lock index 08ccc07..ec5faef 100644 --- a/yarn.lock +++ b/yarn.lock @@ -113,7 +113,7 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.5.tgz#a8a4962e1567121ac0b3b487f52107443b455c7f" integrity sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA== -"@babel/core@^7.28.5": +"@babel/core@^7.24.4", "@babel/core@^7.28.5": version "7.28.5" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.5.tgz#4c81b35e51e1b734f510c99b07dfbc7bbbb48f7e" integrity sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw== @@ -206,7 +206,7 @@ "@babel/template" "^7.27.2" "@babel/types" "^7.28.4" -"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.27.2", "@babel/parser@^7.28.0", "@babel/parser@^7.28.5": +"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.24.4", "@babel/parser@^7.27.2", "@babel/parser@^7.28.0", "@babel/parser@^7.28.5": version "7.28.5" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.5.tgz#0b0225ee90362f030efd644e8034c99468893b08" integrity sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ== @@ -4413,10 +4413,16 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-plugin-react-hooks@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz#1be0080901e6ac31ce7971beed3d3ec0a423d9e3" - integrity sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg== +eslint-plugin-react-hooks@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz#66e258db58ece50723ef20cc159f8aa908219169" + integrity sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA== + dependencies: + "@babel/core" "^7.24.4" + "@babel/parser" "^7.24.4" + hermes-parser "^0.25.1" + zod "^3.25.0 || ^4.0.0" + zod-validation-error "^3.5.0 || ^4.0.0" eslint-plugin-react-refresh@^0.4.19: version "0.4.24" @@ -4987,6 +4993,18 @@ hast-util-whitespace@^3.0.0: dependencies: "@types/hast" "^3.0.0" +hermes-estree@0.25.1: + version "0.25.1" + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.25.1.tgz#6aeec17d1983b4eabf69721f3aa3eb705b17f480" + integrity sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw== + +hermes-parser@^0.25.1: + version "0.25.1" + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.25.1.tgz#5be0e487b2090886c62bd8a11724cd766d5f54d1" + integrity sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA== + dependencies: + hermes-estree "0.25.1" + highlight.js@^10.7.1: version "10.7.3" resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" @@ -8546,6 +8564,16 @@ yoctocolors@^2.1.1: resolved "https://registry.yarnpkg.com/yoctocolors/-/yoctocolors-2.1.2.tgz#d795f54d173494e7d8db93150cec0ed7f678c83a" integrity sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug== +"zod-validation-error@^3.5.0 || ^4.0.0": + version "4.0.2" + resolved "https://registry.yarnpkg.com/zod-validation-error/-/zod-validation-error-4.0.2.tgz#bc605eba49ce0fcd598c127fee1c236be3f22918" + integrity sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ== + +"zod@^3.25.0 || ^4.0.0": + version "4.1.13" + resolved "https://registry.yarnpkg.com/zod/-/zod-4.1.13.tgz#93699a8afe937ba96badbb0ce8be6033c0a4b6b1" + integrity sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig== + zstd-codec@^0.1: version "0.1.5" resolved "https://registry.yarnpkg.com/zstd-codec/-/zstd-codec-0.1.5.tgz#c180193e4603ef74ddf704bcc835397d30a60e42" From 41b8298e3c2ecee97e4033fdda571ac515a7ce1a Mon Sep 17 00:00:00 2001 From: Pete Gadomski Date: Wed, 10 Dec 2025 17:13:42 -0700 Subject: [PATCH 2/2] fix: linting errors --- src/components/cards/asset.tsx | 8 ++------ src/components/panel.tsx | 10 +++++++++- src/components/sections/filter.tsx | 10 +++++----- src/components/value.tsx | 25 +++++++++++++++---------- src/layers/overlay.tsx | 10 ++-------- 5 files changed, 33 insertions(+), 30 deletions(-) diff --git a/src/components/cards/asset.tsx b/src/components/cards/asset.tsx index 1cee07e..35fd6c6 100644 --- a/src/components/cards/asset.tsx +++ b/src/components/cards/asset.tsx @@ -1,4 +1,4 @@ -import { useEffect, useState } from "react"; +import { useState } from "react"; import { LuDownload } from "react-icons/lu"; import { Button, @@ -25,13 +25,10 @@ export default function AssetCard({ setCogTileHref: (href: string | undefined) => void; }) { const [imageError, setImageError] = useState(false); - const [checked, setChecked] = useState(false); // eslint-disable-next-line const { href, roles, type, title, ...properties } = asset; - useEffect(() => { - setChecked(cogTileHref === asset.href); - }, [cogTileHref, asset.href]); + const checked = cogTileHref === asset.href; return ( @@ -69,7 +66,6 @@ export default function AssetCard({ { - setChecked(!!e.checked); if (e.checked) setCogTileHref(asset.href); else setCogTileHref(undefined); }} diff --git a/src/components/panel.tsx b/src/components/panel.tsx index 8976a9f..58b64a3 100644 --- a/src/components/panel.tsx +++ b/src/components/panel.tsx @@ -34,7 +34,15 @@ export default function Panel({ ); else if (href) { if (value) { - return ; + return ( + + ); } else { return ; } diff --git a/src/components/sections/filter.tsx b/src/components/sections/filter.tsx index 5044980..d22dee7 100644 --- a/src/components/sections/filter.tsx +++ b/src/components/sections/filter.tsx @@ -41,7 +41,6 @@ function Filter({ }: FilterProps) { const [filterStart, setFilterStart] = useState(); const [filterEnd, setFilterEnd] = useState(); - const [sliderValue, setSliderValue] = useState(); const datetimes = useMemo(() => { let start = @@ -80,15 +79,16 @@ function Filter({ return start && end ? { start, end } : null; }, [value, items, collections]); - useEffect(() => { - if (datetimes && !filterStart && !filterEnd) { - setSliderValue([datetimes.start.getTime(), datetimes.end.getTime()]); + const sliderValue = useMemo(() => { + if (!datetimes) return undefined; + if (filterStart && filterEnd) { + return [filterStart.getTime(), filterEnd.getTime()]; } + return [datetimes.start.getTime(), datetimes.end.getTime()]; }, [datetimes, filterStart, filterEnd]); useEffect(() => { if (filterStart && filterEnd) { - setSliderValue([filterStart.getTime(), filterEnd.getTime()]); setDatetimeBounds({ start: filterStart, end: filterEnd }); } }, [filterStart, filterEnd, setDatetimeBounds]); diff --git a/src/components/value.tsx b/src/components/value.tsx index 167d329..4b387d7 100644 --- a/src/components/value.tsx +++ b/src/components/value.tsx @@ -83,18 +83,26 @@ export function Value({ setCogTileHref, }: ValueProps) { const [search, setSearch] = useState(); - const [numberOfCollections, setNumberOfCollections] = useState(); const [fetchAllCollections, setFetchAllCollections] = useState(false); const [thumbnailError, setThumbnailError] = useState(false); const selfHref = value.links?.find((link) => link.rel === "self")?.href; - const { links, assets, properties } = useMemo(() => { + const { + links, + assets, + properties: rawProperties, + } = useMemo(() => { return deconstructStac(value); }, [value]); // Description is handled at the top of the panel, so we don't need it down in // the properties. - if (properties?.description) delete properties["description"]; + const properties = useMemo(() => { + if (!rawProperties) return undefined; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { description, ...rest } = rawProperties; + return Object.keys(rest).length > 0 ? rest : undefined; + }, [rawProperties]); const { rootLink, collectionsLink, nextLink, prevLink, filteredLinks } = useMemo(() => { @@ -123,12 +131,14 @@ export function Value({ ); }, [assets]); + const numberOfCollections = useMemo(() => { + return collectionsResult.data?.pages.at(0)?.numberMatched; + }, [collectionsResult.data]); + useEffect(() => { setCollections( collectionsResult.data?.pages.flatMap((page) => page?.collections || []) ); - if (collectionsResult.data?.pages.at(0)?.numberMatched) - setNumberOfCollections(collectionsResult.data?.pages[0]?.numberMatched); }, [collectionsResult.data, setCollections]); useEffect(() => { @@ -140,11 +150,6 @@ export function Value({ collectionsResult.fetchNextPage(); }, [fetchAllCollections, collectionsResult]); - useEffect(() => { - setFetchAllCollections(false); - setNumberOfCollections(undefined); - }, [value]); - useEffect(() => { setItems(undefined); }, [search, setItems]); diff --git a/src/layers/overlay.tsx b/src/layers/overlay.tsx index 7150771..bbf46e0 100644 --- a/src/layers/overlay.tsx +++ b/src/layers/overlay.tsx @@ -1,4 +1,4 @@ -import { useEffect, useState } from "react"; +import { useState } from "react"; import { LuUpload } from "react-icons/lu"; import { Box, @@ -71,7 +71,7 @@ export default function Overlay({ - +