From fa11f365a6f34c8bc1b1c7a8882566e4ae5d7200 Mon Sep 17 00:00:00 2001 From: Christopher Pappas Date: Mon, 6 Jan 2025 14:53:30 -0800 Subject: [PATCH] fix: guard against unnecessary timer rerenders --- package.json | 8 +- src/Apps/Artwork/ArtworkApp.tsx | 18 ++- .../ArtworkAuctionCreateAlertHeader.tsx | 14 +- .../ArtworkSidebar/ArtworkSidebar.tsx | 7 +- .../ArtworkSidebarAuctionInfoPolling.tsx | 1 + .../ArtworkSidebarCommercialButtons.tsx | 19 ++- .../Components/ArtworkSidebar/LotTimer.tsx | 8 +- .../AuctionDetails/SaleDetailTimer.tsx | 5 +- .../ConversationCTA/ConversationCTA.tsx | 6 +- .../Components/FairOverview/FairTimer.tsx | 2 +- .../Artwork/Details/BidTimerLine.tsx | 8 +- src/Components/Artwork/Details/Details.tsx | 12 +- .../Artwork/Details/SaleMessage.tsx | 12 +- src/Components/Artwork/FlatGridItem.tsx | 5 +- .../Notifications/ExpiresInTimer.tsx | 2 +- .../Notifications/PartnerOfferArtwork.tsx | 5 +- .../PartnerOfferCreatedNotification.tsx | 4 +- src/Components/Timer.tsx | 2 +- .../__tests__/useAuctionWebsocket.jest.tsx | 43 +++++- src/System/Contexts/WebsocketContext.tsx | 12 +- src/Utils/Hooks/useAuctionWebsocket.tsx | 6 +- src/Utils/Hooks/useCurrentTime.tsx | 14 +- src/Utils/Hooks/useTimer.tsx | 25 ++- .../ArtworkAppTestQuery.graphql.ts | 32 ++-- .../ArtworkApp_artwork.graphql.ts | 86 ++++++++++- ...barCommercialButtons_Test_Query.graphql.ts | 60 ++++++- ...idebarCommercialButtons_artwork.graphql.ts | 46 +++++- .../ArtworkSidebarQuery.graphql.ts | 140 ++++++++--------- .../ArtworkSidebar_Test_Query.graphql.ts | 140 ++++++++--------- .../artworkRoutes_ArtworkQuery.graphql.ts | 138 ++++++++--------- yarn.lock | 146 +++++++++--------- 31 files changed, 654 insertions(+), 372 deletions(-) diff --git a/package.json b/package.json index 4722e3e1f86..7277fa06319 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "publish-assets": "node scripts/uploadToS3.js", "publish-assets:local": "yarn clean && yarn build:client:prod && yarn publish-assets", "relay": "relay-compiler", - "scan": "npx react-scan@latest", + "scan": "npx react-scan@0.0.39", "start": "scripts/start.sh", "start:prod": "yarn build && SESSION_LOCAL_INSECURE=true NODE_ENV=production yarn start", "start:prod:debug": "SESSION_LOCAL_INSECURE=true NODE_ENV=production NODE_PATH=src node --inspect --max_old_space_size=3072 -r @swc-node/register ./src/prod.ts", @@ -194,10 +194,10 @@ "@graphql-tools/jest-transform": "^2.0.0", "@loadable/webpack-plugin": "5.15.2", "@relative-ci/agent": "^4.2.10", - "@rsbuild/core": "^1.1.8", - "@rsbuild/plugin-assets-retry": "^1.0.6", + "@rsbuild/core": "^1.1.13", + "@rsbuild/plugin-assets-retry": "^1.0.7", "@rsbuild/plugin-node-polyfill": "^1.2.0", - "@rsbuild/plugin-react": "^1.0.7", + "@rsbuild/plugin-react": "^1.1.0", "@storybook/addon-actions": "^8.4.7", "@storybook/addon-essentials": "^8.4.7", "@storybook/addon-links": "^8.4.7", diff --git a/src/Apps/Artwork/ArtworkApp.tsx b/src/Apps/Artwork/ArtworkApp.tsx index 1b46e1bf13c..e1e31e860e7 100644 --- a/src/Apps/Artwork/ArtworkApp.tsx +++ b/src/Apps/Artwork/ArtworkApp.tsx @@ -15,6 +15,7 @@ import { ArtworkErrorApp } from "Apps/Artwork/Components/ArtworkErrorApp/Artwork import { ArtworkPageBanner } from "Apps/Artwork/Components/ArtworkPageBanner" import { PrivateArtworkDetails } from "Apps/Artwork/Components/PrivateArtwork/PrivateArtworkDetails" import { SelectedEditionSetProvider } from "Apps/Artwork/Components/SelectedEditionSetContext" +import { lotIsClosed } from "Apps/Artwork/Utils/lotIsClosed" import { AlertProvider } from "Components/Alert/AlertProvider" import { useAuthDialog } from "Components/AuthDialog" import { RecentlyViewed } from "Components/RecentlyViewed" @@ -334,7 +335,14 @@ export const ArtworkApp: React.FC> = props => { const WrappedArtworkApp: React.FC> = props => { const { - artwork: { artists, attributionClass, internalID, mediumType, sale }, + artwork: { + artists, + attributionClass, + internalID, + mediumType, + sale, + saleArtwork, + }, } = props const { @@ -346,8 +354,10 @@ const WrappedArtworkApp: React.FC> = props => { // Check to see if referrer comes from link interception. // @see interceptLinks.ts const referrer = state && state.previousHref + const isLotClosed = lotIsClosed(sale, saleArtwork) - const websocketEnabled = !!sale?.extendedBiddingIntervalMinutes + const websocketEnabled = + !!sale?.extendedBiddingIntervalMinutes && isLotClosed === false const initialAlertCriteria = { attributionClass: compact([attributionClass?.internalID]), @@ -433,6 +443,10 @@ const ArtworkAppFragmentContainer = createFragmentContainer( internalID slug extendedBiddingIntervalMinutes + isClosed + } + saleArtwork { + endedAt } saleMessage artists(shallow: true) { diff --git a/src/Apps/Artwork/Components/ArtworkAuctionCreateAlertHeader/ArtworkAuctionCreateAlertHeader.tsx b/src/Apps/Artwork/Components/ArtworkAuctionCreateAlertHeader/ArtworkAuctionCreateAlertHeader.tsx index a32947f317b..fb3d93aaa17 100644 --- a/src/Apps/Artwork/Components/ArtworkAuctionCreateAlertHeader/ArtworkAuctionCreateAlertHeader.tsx +++ b/src/Apps/Artwork/Components/ArtworkAuctionCreateAlertHeader/ArtworkAuctionCreateAlertHeader.tsx @@ -38,16 +38,20 @@ const ArtworkAuctionCreateAlertHeader: FC< > = ({ artwork }) => { const biddingEndAt = artwork?.saleArtwork?.extendedBiddingEndAt ?? artwork?.saleArtwork?.endAt - const { hasEnded } = useTimer( - biddingEndAt as string, - artwork?.sale?.startAt as string, - ) + + const initialIsLotClosedCheck = lotIsClosed(artwork.sale, artwork.saleArtwork) + + const { hasEnded } = useTimer({ + endDate: biddingEndAt as string, + startAt: artwork?.sale?.startAt as string, + enabled: !initialIsLotClosedCheck, + }) const isLotClosed = hasEnded || lotIsClosed(artwork.sale, artwork.saleArtwork) const displayAuctionCreateAlertHeader = artwork.isEligibleToCreateAlert && artwork.isInAuction && isLotClosed - const artistName = artwork.artistNames ? ", " + artwork.artistNames : "" + const artistName = artwork.artistNames ? `, ${artwork.artistNames}` : "" const artistSlug = artwork.artists?.[0]?.slug let aggregations: Aggregations = [] let additionalGeneIDs: string[] = [] diff --git a/src/Apps/Artwork/Components/ArtworkSidebar/ArtworkSidebar.tsx b/src/Apps/Artwork/Components/ArtworkSidebar/ArtworkSidebar.tsx index a37c832fbc4..8a295e65953 100644 --- a/src/Apps/Artwork/Components/ArtworkSidebar/ArtworkSidebar.tsx +++ b/src/Apps/Artwork/Components/ArtworkSidebar/ArtworkSidebar.tsx @@ -73,6 +73,7 @@ export const ArtworkSidebar: React.FC< const extendedBiddingEndAt = saleArtwork?.extendedBiddingEndAt const biddingEndAt = extendedBiddingEndAt ?? endAt const isUnlisted = artwork?.isUnlisted + const isLotClosed = lotIsClosed(sale, saleArtwork) const [updatedBiddingEndAt, setUpdatedBiddingEndAt] = useState(biddingEndAt) @@ -87,7 +88,11 @@ export const ArtworkSidebar: React.FC< const timerEndAt = sale?.isAuction ? updatedBiddingEndAt : sale?.endAt - const { hasEnded } = useTimer(timerEndAt as string, startAt as string) + const { hasEnded } = useTimer({ + endDate: timerEndAt as string, + startAt: startAt as string, + enabled: !isLotClosed, + }) const shouldHideDetailsCreateAlertCTA = isUnlisted || diff --git a/src/Apps/Artwork/Components/ArtworkSidebar/ArtworkSidebarAuctionInfoPolling.tsx b/src/Apps/Artwork/Components/ArtworkSidebar/ArtworkSidebarAuctionInfoPolling.tsx index c186c4682fe..416e2e7f684 100644 --- a/src/Apps/Artwork/Components/ArtworkSidebar/ArtworkSidebarAuctionInfoPolling.tsx +++ b/src/Apps/Artwork/Components/ArtworkSidebar/ArtworkSidebarAuctionInfoPolling.tsx @@ -31,6 +31,7 @@ export const ArtworkSidebarAuctionPolling: React.FC< const isMounted = useRef(false) const tracking = useTracking() + // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect(() => { if (isMounted.current) { setCurrentBidChanged(true) diff --git a/src/Apps/Artwork/Components/ArtworkSidebar/ArtworkSidebarCommercialButtons.tsx b/src/Apps/Artwork/Components/ArtworkSidebar/ArtworkSidebarCommercialButtons.tsx index 3cc9a8afafe..e061a1cb4a3 100644 --- a/src/Apps/Artwork/Components/ArtworkSidebar/ArtworkSidebarCommercialButtons.tsx +++ b/src/Apps/Artwork/Components/ArtworkSidebar/ArtworkSidebarCommercialButtons.tsx @@ -36,6 +36,7 @@ import { } from "./ArtworkSidebarEditionSets" import { useSelectedEditionSetContext } from "Apps/Artwork/Components/SelectedEditionSetContext" +import { lotIsClosed } from "Apps/Artwork/Utils/lotIsClosed" import { usePartnerOfferCheckoutMutation } from "Apps/PartnerOffer/Routes/Mutations/UsePartnerOfferCheckoutMutation" import { CreateAlertButton } from "Components/Alert/Components/CreateAlertButton" import { useAuthDialog } from "Components/AuthDialog" @@ -71,8 +72,13 @@ export const ArtworkSidebarCommercialButtons: React.FC< extractNodes(me.partnerOffersConnection)[0]) || null + const isLotClosed = lotIsClosed(artwork.sale, artwork.saleArtwork) + // Fall back to a definitely past value because the timer hook doesn't like nulls - const partnerOfferTimer = useTimer(partnerOffer?.endAt || THE_PAST) + const partnerOfferTimer = useTimer({ + endDate: partnerOffer?.endAt || THE_PAST, + enabled: !isLotClosed, + }) const partnerIcon = artwork.partner?.profile?.icon?.url const activePartnerOffer = @@ -329,6 +335,7 @@ export const ArtworkSidebarCommercialButtons: React.FC< const { setSelectedEditionSet: setSelectedEditionSetInContext } = useSelectedEditionSetContext() + // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect(() => { setSelectedEditionSet(firstAvailableEcommerceEditionSet()) setSelectedEditionSetInContext( @@ -353,7 +360,9 @@ export const ArtworkSidebarCommercialButtons: React.FC< } if (artwork.isOfferable && !(activePartnerOffer && artwork.isInquireable)) { renderButtons.makeOffer = - Object.keys(renderButtons).length == 0 ? "primaryBlack" : "secondaryBlack" + Object.keys(renderButtons).length === 0 + ? "primaryBlack" + : "secondaryBlack" } if (artwork.isInquireable && Object.keys(renderButtons).length < 2) { renderButtons.contactGallery = @@ -699,6 +708,12 @@ const ARTWORK_FRAGMENT = graphql` collectorSignals { primaryLabel(ignore: [PARTNER_OFFER]) } + sale { + isClosed + } + saleArtwork { + endedAt + } } ` diff --git a/src/Apps/Artwork/Components/ArtworkSidebar/LotTimer.tsx b/src/Apps/Artwork/Components/ArtworkSidebar/LotTimer.tsx index efb7e367247..fc389b2393f 100644 --- a/src/Apps/Artwork/Components/ArtworkSidebar/LotTimer.tsx +++ b/src/Apps/Artwork/Components/ArtworkSidebar/LotTimer.tsx @@ -36,10 +36,10 @@ export const LotTimer: React.FC> = ({ }, }) - const { hasEnded, time, hasStarted } = useTimer( - updatedBiddingEndAt!, - startAt!, - ) + const { hasEnded, time, hasStarted } = useTimer({ + endDate: updatedBiddingEndAt!, + startAt: startAt!, + }) if (!endAt) { return null diff --git a/src/Apps/Auction/Components/AuctionDetails/SaleDetailTimer.tsx b/src/Apps/Auction/Components/AuctionDetails/SaleDetailTimer.tsx index 4c1900f8e10..fcf542e9386 100644 --- a/src/Apps/Auction/Components/AuctionDetails/SaleDetailTimer.tsx +++ b/src/Apps/Auction/Components/AuctionDetails/SaleDetailTimer.tsx @@ -17,7 +17,10 @@ export const SaleDetailTimer: React.FC< const endedAt = sale?.endedAt // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - const { hasEnded, time, hasStarted } = useTimer(endAt!, startAt!) + const { hasEnded, time, hasStarted } = useTimer({ + endDate: endAt!, + startAt: startAt!, + }) if (!endAt || endedAt) { return null diff --git a/src/Apps/Conversations/components/ConversationCTA/ConversationCTA.tsx b/src/Apps/Conversations/components/ConversationCTA/ConversationCTA.tsx index 27a80adf303..d1f9e8c2070 100644 --- a/src/Apps/Conversations/components/ConversationCTA/ConversationCTA.tsx +++ b/src/Apps/Conversations/components/ConversationCTA/ConversationCTA.tsx @@ -27,9 +27,9 @@ export const ConversationCTA: React.FC< const artwork = liveArtwork?.__typename === "Artwork" ? liveArtwork : null const partnerOffer = artwork && findPartnerOffer(artwork.internalID) - const partnerOfferTimer = useTimer( - partnerOffer?.endAt ?? new Date(0).toISOString(), - ) + const partnerOfferTimer = useTimer({ + endDate: partnerOffer?.endAt ?? new Date(0).toISOString(), + }) const activeOrder = extractNodes(data.activeOrderCTA)[0] const activePartnerOffer = diff --git a/src/Apps/Fair/Components/FairOverview/FairTimer.tsx b/src/Apps/Fair/Components/FairOverview/FairTimer.tsx index e3ec13f4034..b6588ae497a 100644 --- a/src/Apps/Fair/Components/FairOverview/FairTimer.tsx +++ b/src/Apps/Fair/Components/FairOverview/FairTimer.tsx @@ -12,7 +12,7 @@ interface FairTimerProps { export const FairTimer: React.FC> = ({ fair: { endAt }, }) => { - const { hasEnded } = useTimer(endAt!) + const { hasEnded } = useTimer({ endDate: endAt! }) return ( diff --git a/src/Components/Artwork/Details/BidTimerLine.tsx b/src/Components/Artwork/Details/BidTimerLine.tsx index 78106e28c3e..a74d775b4ae 100644 --- a/src/Components/Artwork/Details/BidTimerLine.tsx +++ b/src/Components/Artwork/Details/BidTimerLine.tsx @@ -35,10 +35,14 @@ export const BidTimerLine: React.FC< }, }) - const { time, hasEnded: hasBiddingEnded } = useTimer(updatedLotClosesAt!) + const { time, hasEnded: hasBiddingEnded } = useTimer({ + endDate: updatedLotClosesAt!, + }) const { days, hours, minutes, seconds } = time const { isAuctionArtwork } = useArtworkGridContext() - const { hasEnded: hasRegistrationEnded } = useTimer(registrationEndsAt!) + const { hasEnded: hasRegistrationEnded } = useTimer({ + endDate: registrationEndsAt!, + }) const numDays = Number(days) const numHours = Number(hours) diff --git a/src/Components/Artwork/Details/Details.tsx b/src/Components/Artwork/Details/Details.tsx index c92565a8e16..db6db1dd42c 100644 --- a/src/Components/Artwork/Details/Details.tsx +++ b/src/Components/Artwork/Details/Details.tsx @@ -8,17 +8,17 @@ import { SaveArtworkToListsButtonQueryRenderer } from "Components/Artwork/SaveBu import { SaveButtonQueryRenderer } from "Components/Artwork/SaveButton/SaveButton" import { useArtworkGridContext } from "Components/ArtworkGrid/ArtworkGridContext" import { RouterLink, type RouterLinkProps } from "System/Components/RouterLink" +import { useFeatureFlag } from "System/Hooks/useFeatureFlag" +import { useTimer } from "Utils/Hooks/useTimer" import type { Details_artwork$data } from "__generated__/Details_artwork.graphql" import { isFunction } from "lodash" import type * as React from "react" import { createFragmentContainer, graphql } from "react-relay" import styled from "styled-components" import { BidTimerLine } from "./BidTimerLine" +import { LegacyPrimaryLabelLine } from "./LegacyPrimaryLabelLine" import { PrimaryLabelLineQueryRenderer } from "./PrimaryLabelLine" import { SaleMessageQueryRenderer } from "./SaleMessage" -import { useTimer } from "Utils/Hooks/useTimer" -import { useFeatureFlag } from "System/Hooks/useFeatureFlag" -import { LegacyPrimaryLabelLine } from "./LegacyPrimaryLabelLine" export interface DetailsProps { artwork: Details_artwork$data @@ -38,7 +38,7 @@ export interface DetailsProps { const LINE_HEIGHT = 22 const NUM_OF_LINES = 5 const CONTAINER_HEIGHT = LINE_HEIGHT * NUM_OF_LINES -const LINE_HEIGHT_PX = LINE_HEIGHT + "px" +const LINE_HEIGHT_PX = `${LINE_HEIGHT}px` const StyledConditionalLink = styled(RouterLink)` color: ${themeGet("colors.black100")}; @@ -311,7 +311,7 @@ const LegacyActivePartnerOfferTimer: React.FC< > = ({ artwork: { collectorSignals } }) => { const SEPARATOR = <>  const { endAt } = collectorSignals?.partnerOffer ?? {} - const { time } = useTimer(endAt ?? "") + const { time } = useTimer({ endDate: endAt ?? "" }) const { days, hours } = time return ( @@ -401,7 +401,7 @@ export const Details: React.FC> = ({ } return ( - + {isAuctionArtwork && ( }> diff --git a/src/Components/Artwork/Details/SaleMessage.tsx b/src/Components/Artwork/Details/SaleMessage.tsx index 62c053b35e8..ba647a904a1 100644 --- a/src/Components/Artwork/Details/SaleMessage.tsx +++ b/src/Components/Artwork/Details/SaleMessage.tsx @@ -1,11 +1,11 @@ -import { FC, ReactElement } from "react" -import { createFragmentContainer, graphql } from "react-relay" import { Flex, Text } from "@artsy/palette" import { SystemQueryRenderer } from "System/Relay/SystemQueryRenderer" import { useTimer } from "Utils/Hooks/useTimer" -import { SaleMessageQuery } from "__generated__/SaleMessageQuery.graphql" -import { SaleMessage_artwork$data } from "__generated__/SaleMessage_artwork.graphql" -import { Details_artwork$data } from "__generated__/Details_artwork.graphql" +import type { Details_artwork$data } from "__generated__/Details_artwork.graphql" +import type { SaleMessageQuery } from "__generated__/SaleMessageQuery.graphql" +import type { SaleMessage_artwork$data } from "__generated__/SaleMessage_artwork.graphql" +import type { FC, ReactElement } from "react" +import { createFragmentContainer, graphql } from "react-relay" interface PublicSaleMessageProps { artwork: Details_artwork$data @@ -41,7 +41,7 @@ const ActivePartnerOfferTimer: React.FC = ({ }) => { const SEPARATOR = <>  const { endAt } = collectorSignals?.partnerOffer ?? {} - const { time } = useTimer(endAt ?? "") + const { time } = useTimer({ endDate: endAt ?? "" }) const { days, hours } = time return ( diff --git a/src/Components/Artwork/FlatGridItem.tsx b/src/Components/Artwork/FlatGridItem.tsx index ccd16bcf0fc..0820ab99625 100644 --- a/src/Components/Artwork/FlatGridItem.tsx +++ b/src/Components/Artwork/FlatGridItem.tsx @@ -56,7 +56,10 @@ const FlatGridItem: React.FC> = ({ }, }) - const { time, hasEnded } = useTimer(updatedBiddingEndAt!, startAt!) + const { time, hasEnded } = useTimer({ + endDate: updatedBiddingEndAt!, + startAt: startAt!, + }) const { isAuctionArtwork } = useArtworkGridContext() const shouldRenderProgressBar = diff --git a/src/Components/Notifications/ExpiresInTimer.tsx b/src/Components/Notifications/ExpiresInTimer.tsx index b99d2978a43..3c0aa628f4d 100644 --- a/src/Components/Notifications/ExpiresInTimer.tsx +++ b/src/Components/Notifications/ExpiresInTimer.tsx @@ -18,7 +18,7 @@ const WatchIcon: FC> = ({ export const ExpiresInTimer: FC< React.PropsWithChildren > = ({ expiresAt = "", available = false }) => { - const { hasEnded, time } = useTimer(expiresAt ?? "") + const { hasEnded, time } = useTimer({ endDate: expiresAt ?? "" }) if (!available) { return ( diff --git a/src/Components/Notifications/PartnerOfferArtwork.tsx b/src/Components/Notifications/PartnerOfferArtwork.tsx index fbd992458ca..1353611be84 100644 --- a/src/Components/Notifications/PartnerOfferArtwork.tsx +++ b/src/Components/Notifications/PartnerOfferArtwork.tsx @@ -35,7 +35,7 @@ export const PartnerOfferArtwork: FC< const { theme } = useTheme() const { tracking } = useNotificationsTracking() - const { hasEnded } = useTimer(endAt || "") + const { hasEnded } = useTimer({ endDate: endAt || "" }) const fullyAvailable = !!(available && !hasEnded && priceWithDiscount) const artwork = useFragment(partnerOfferArtworkFragment, artworkProp) @@ -45,8 +45,7 @@ export const PartnerOfferArtwork: FC< (artwork.title ?? "Artwork") + (artwork.artistNames ? ` by ${artwork.artistNames}` : "") const partnerIcon = artwork.partner?.profile?.icon?.url - const artworkListingHref = - artwork.href + "?partner_offer_id=" + partnerOfferID + const artworkListingHref = `${artwork.href}?partner_offer_id=${partnerOfferID}` let buttonText = "Purchase" if (hasEnded) buttonText = "View Work" diff --git a/src/Components/Notifications/PartnerOfferCreatedNotification.tsx b/src/Components/Notifications/PartnerOfferCreatedNotification.tsx index f0a5ea3fed0..e9aa189c75c 100644 --- a/src/Components/Notifications/PartnerOfferCreatedNotification.tsx +++ b/src/Components/Notifications/PartnerOfferCreatedNotification.tsx @@ -27,7 +27,7 @@ export const PartnerOfferCreatedNotification: FC< const partnerOffer = item?.partnerOffer const artwork = extractNodes(offerArtworksConnection)[0] - const { hasEnded } = useTimer(partnerOffer?.endAt || "") + const { hasEnded } = useTimer({ endDate: partnerOffer?.endAt || "" }) const isOfferFromSaves = partnerOffer?.source === "SAVE" let subtitle = isOfferFromSaves @@ -78,7 +78,7 @@ export const PartnerOfferCreatedNotification: FC< Offer diff --git a/src/Components/Timer.tsx b/src/Components/Timer.tsx index 293b06371f3..9814ef7bfa8 100644 --- a/src/Components/Timer.tsx +++ b/src/Components/Timer.tsx @@ -26,7 +26,7 @@ export const Timer: React.FC< color = "blue100", ...rest }) => { - const { hasEnded, time } = useTimer(endDate, startDate) + const { hasEnded, time } = useTimer({ endDate, startAt: startDate }) const { days, hours, minutes, seconds } = time return ( diff --git a/src/Components/__tests__/useAuctionWebsocket.jest.tsx b/src/Components/__tests__/useAuctionWebsocket.jest.tsx index 2d9e7fc6190..12242c1ce09 100644 --- a/src/Components/__tests__/useAuctionWebsocket.jest.tsx +++ b/src/Components/__tests__/useAuctionWebsocket.jest.tsx @@ -1,19 +1,27 @@ import { renderHook } from "@testing-library/react-hooks" +import { useWebsocketContext } from "System/Hooks/useWebsocketContext" import { useAuctionWebsocket } from "Utils/Hooks/useAuctionWebsocket" jest.mock("System/Hooks/useWebsocketContext", () => ({ - useWebsocketContext: () => { - return { + useWebsocketContext: jest.fn(), +})) + +describe("useAuctionWebsocket", () => { + const mockUseWebsocketContext = useWebsocketContext as jest.Mock + + beforeEach(() => { + jest.resetAllMocks() + }) + + it("invokes `onChange` with the new data when the lot id matches", () => { + mockUseWebsocketContext.mockReturnValue({ data: { lot_id: "catty-lot-id", extended_bidding_end_at: "2 minutes from now", }, - } - }, -})) + enabled: true, + }) -describe("useAuctionWebsocket", () => { - it("invokes `onChange` with the new data when the lot id matches", () => { const onChange = jest.fn() renderHook(() => @@ -41,4 +49,25 @@ describe("useAuctionWebsocket", () => { expect(onChange).not.toBeCalled() }) + + it("does not call `onChange` when the websocket is disabled", () => { + mockUseWebsocketContext.mockReturnValue({ + data: { + lot_id: "catty-lot-id", + extended_bidding_end_at: "2 minutes from now", + }, + enabled: false, + }) + + const onChange = jest.fn() + + renderHook(() => + useAuctionWebsocket({ + lotID: "catty-lot-id", + onChange, + }), + ) + + expect(onChange).not.toBeCalled() + }) }) diff --git a/src/System/Contexts/WebsocketContext.tsx b/src/System/Contexts/WebsocketContext.tsx index 7bee2b447ef..a7599f06119 100644 --- a/src/System/Contexts/WebsocketContext.tsx +++ b/src/System/Contexts/WebsocketContext.tsx @@ -7,6 +7,7 @@ interface ReceivedData { export interface WebsocketContextProps { data: ReceivedData + enabled?: boolean } interface WebsocketContextProviderProps { @@ -19,6 +20,7 @@ interface WebsocketContextProviderProps { const initialValues = { data: {} as ReceivedData, + enabled: true, } export const WebsocketContext = @@ -26,11 +28,17 @@ export const WebsocketContext = export const WebsocketContextProvider: React.FC< React.PropsWithChildren -> = ({ channelInfo, enabled, children }) => { - const [receivedData, setReceivedData] = useState(initialValues) +> = ({ channelInfo, enabled = true, children }) => { + const [receivedData, setReceivedData] = useState({ + ...initialValues, + enabled, + }) const xapp_token = getENV("ARTSY_XAPP_TOKEN") + + // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect(() => { if (!enabled) return + const actionCable = require("actioncable") const cable = actionCable.createConsumer(getENV("GRAVITY_WEBSOCKET_URL")) cable.subscriptions.create( diff --git a/src/Utils/Hooks/useAuctionWebsocket.tsx b/src/Utils/Hooks/useAuctionWebsocket.tsx index 42d26d09967..1be8a62afbb 100644 --- a/src/Utils/Hooks/useAuctionWebsocket.tsx +++ b/src/Utils/Hooks/useAuctionWebsocket.tsx @@ -14,13 +14,13 @@ export const useAuctionWebsocket = ({ onChange, lotID, }: AuctionWebsocketParams) => { - const { data } = useWebsocketContext() + const { enabled, data } = useWebsocketContext() const { lot_id } = data const receivedMessageForThisLot = lot_id === lotID useEffect(() => { - if (receivedMessageForThisLot) { + if (enabled && receivedMessageForThisLot) { onChange(data) } - }, [onChange, receivedMessageForThisLot, data]) + }, [onChange, receivedMessageForThisLot, data, enabled]) } diff --git a/src/Utils/Hooks/useCurrentTime.tsx b/src/Utils/Hooks/useCurrentTime.tsx index d9744260366..03029e42824 100644 --- a/src/Utils/Hooks/useCurrentTime.tsx +++ b/src/Utils/Hooks/useCurrentTime.tsx @@ -20,11 +20,13 @@ import { useEffect, useRef, useState } from "react" interface UseCurrentTimeProps { interval?: number syncWithServer?: boolean + enabled?: boolean } export const useCurrentTime = ({ - interval = 1000, + interval = 5000, syncWithServer = false, + enabled = true, }: UseCurrentTimeProps = {}): string => { const { relayEnvironment } = useSystemContext() @@ -34,6 +36,14 @@ export const useCurrentTime = ({ const intervalId = useRef | null>(null) useEffect(() => { + if (!enabled) { + if (intervalId.current) { + clearInterval(intervalId.current) + } + + return + } + if (syncWithServer) { getOffsetBetweenGravityClock(relayEnvironment).then(offset => { setTimeOffsetInMilliseconds(offset) @@ -48,7 +58,7 @@ export const useCurrentTime = ({ // @ts-expect-error PLEASE_FIX_ME_STRICT_NULL_CHECK_MIGRATION clearInterval(intervalId.current) } - }, [interval, relayEnvironment, syncWithServer]) + }, [enabled, interval, relayEnvironment, syncWithServer]) return DateTime.fromISO(currentTime) .minus({ millisecond: timeOffsetInMilliseconds }) diff --git a/src/Utils/Hooks/useTimer.tsx b/src/Utils/Hooks/useTimer.tsx index d1ea5ac8b29..93144018ef5 100644 --- a/src/Utils/Hooks/useTimer.tsx +++ b/src/Utils/Hooks/useTimer.tsx @@ -14,16 +14,19 @@ interface Timer { hasStarted: boolean } -const padWithZero = (num: number) => { - return num.toString().padStart(2, "0") +interface UseTimerProps { + endDate: string + startAt?: string + enabled?: boolean } -const extractTime = (time: number) => { - return padWithZero(Math.max(0, Math.floor(time))) -} +export const useTimer = (props: UseTimerProps): Timer => { + const { endDate = "", startAt = "", enabled = true } = props -export const useTimer = (endDate: string, startAt = ""): Timer => { - const currentTime = useCurrentTime({ syncWithServer: true }) + const currentTime = useCurrentTime({ + enabled, + syncWithServer: true, + }) const timeBeforeEnd = Duration.fromISO( DateTime.fromISO(endDate).diff(DateTime.fromISO(currentTime)).toString(), @@ -54,3 +57,11 @@ export const useTimer = (endDate: string, startAt = ""): Timer => { return { hasEnded, time, hasStarted } } + +const padWithZero = (num: number) => { + return num.toString().padStart(2, "0") +} + +const extractTime = (time: number) => { + return padWithZero(Math.max(0, Math.floor(time))) +} diff --git a/src/__generated__/ArtworkAppTestQuery.graphql.ts b/src/__generated__/ArtworkAppTestQuery.graphql.ts index 9027a5f8f6c..afcb1965709 100644 --- a/src/__generated__/ArtworkAppTestQuery.graphql.ts +++ b/src/__generated__/ArtworkAppTestQuery.graphql.ts @@ -1,5 +1,5 @@ /** - * @generated SignedSource<<29c3ec886e4cd2d93481a8c7036f5dd7>> + * @generated SignedSource<<7e899baeac06f34e92bd97474e31da97>> * @lightSyntaxTransform * @nogrep */ @@ -222,28 +222,28 @@ v25 = { "alias": null, "args": null, "kind": "ScalarField", - "name": "endAt", + "name": "endedAt", "storageKey": null }, v26 = { "alias": null, "args": null, "kind": "ScalarField", - "name": "startAt", + "name": "endAt", "storageKey": null }, v27 = { "alias": null, "args": null, "kind": "ScalarField", - "name": "extendedBiddingIntervalMinutes", + "name": "startAt", "storageKey": null }, v28 = { "alias": null, "args": null, "kind": "ScalarField", - "name": "endedAt", + "name": "extendedBiddingIntervalMinutes", "storageKey": null }, v29 = [ @@ -751,6 +751,7 @@ return { "storageKey": null }, (v16/*: any*/), + (v25/*: any*/), { "alias": null, "args": null, @@ -758,7 +759,7 @@ return { "name": "estimate", "storageKey": null }, - (v25/*: any*/), + (v26/*: any*/), { "alias": null, "args": null, @@ -788,7 +789,7 @@ return { "name": "sale", "plural": false, "selections": [ - (v26/*: any*/), + (v27/*: any*/), { "alias": null, "args": null, @@ -796,13 +797,12 @@ return { "name": "extendedBiddingPeriodMinutes", "storageKey": null }, - (v27/*: any*/), + (v28/*: any*/), (v19/*: any*/), (v16/*: any*/) ], "storageKey": null }, - (v28/*: any*/), { "alias": null, "args": null, @@ -959,8 +959,8 @@ return { "name": "cascadingEndTimeIntervalMinutes", "storageKey": null }, - (v25/*: any*/), (v26/*: any*/), + (v27/*: any*/), { "alias": "is_closed", "args": null, @@ -1012,7 +1012,7 @@ return { "storageKey": null }, (v3/*: any*/), - (v27/*: any*/) + (v28/*: any*/) ], "storageKey": null }, @@ -1187,8 +1187,8 @@ return { "selections": [ (v14/*: any*/), (v4/*: any*/), + (v27/*: any*/), (v26/*: any*/), - (v25/*: any*/), (v16/*: any*/) ], "storageKey": null @@ -1876,7 +1876,7 @@ return { "name": "reserveStatus", "storageKey": null }, - (v28/*: any*/), + (v25/*: any*/), { "alias": "current_bid", "args": null, @@ -2234,7 +2234,7 @@ return { "name": "node", "plural": false, "selections": [ - (v25/*: any*/), + (v26/*: any*/), (v19/*: any*/), { "alias": null, @@ -2284,12 +2284,12 @@ return { ] }, "params": { - "cacheID": "2021b7ff34fe8ed9bcb7e57ce2e4bb0d", + "cacheID": "37b1d5afa4e5d76ceaadeb2f4a95ae3c", "id": null, "metadata": {}, "name": "ArtworkAppTestQuery", "operationKind": "query", - "text": "query ArtworkAppTestQuery {\n artworkResult(id: \"artwork-id\") {\n __typename\n ...ArtworkApp_artworkResult_3eglH\n ... on Node {\n __isNode: __typename\n id\n }\n }\n me {\n ...ArtworkApp_me_1liwfq\n id\n }\n}\n\nfragment ArtworkActionsSaveButton_artwork on Artwork {\n id\n internalID\n slug\n title\n date\n artistNames\n preview: image {\n url(version: \"square\")\n }\n isInAuction\n isSavedToAnyList\n sale {\n isAuction\n isClosed\n id\n }\n collectorSignals {\n auction {\n lotWatcherCount\n }\n }\n ...ArtworkActionsWatchLotButton_artwork\n}\n\nfragment ArtworkActionsWatchLotButton_artwork on Artwork {\n sale {\n isLiveOpen\n isRegistrationClosed\n liveStartAt\n registrationStatus {\n qualifiedForBidding\n id\n }\n id\n }\n ...ArtworkAuctionRegistrationPanel_artwork\n}\n\nfragment ArtworkActions_artwork_FOvjt on Artwork {\n ...ArtworkActionsSaveButton_artwork\n ...ArtworkDownloadButton_artwork\n ...ArtworkSharePanel_artwork_FOvjt\n ...ViewInRoom_artwork\n isUnlisted\n slug\n downloadableImageUrl\n isDownloadable\n isHangable\n partner {\n slug\n id\n }\n}\n\nfragment ArtworkApp_artworkResult_3eglH on ArtworkResult {\n __isArtworkResult: __typename\n __typename\n ...ArtworkApp_artwork_3eglH\n ...ArtworkErrorApp_artworkError\n}\n\nfragment ArtworkApp_artwork_3eglH on Artwork {\n ...ArtworkMeta_artwork\n ...ArtworkTopContextBar_artwork\n ...ArtworkImageBrowser_artwork\n ...ArtworkSidebar_artwork\n ...ArtworkAuctionCreateAlertHeader_artwork\n ...PrivateArtworkDetails_artwork\n ...ArtworkPageBanner_artwork\n attributionClass {\n internalID\n id\n }\n slug\n internalID\n isAcquireable\n isOfferable\n published\n availability\n mediumType {\n filterGene {\n slug\n id\n }\n }\n visibilityLevel\n isUnlisted\n listPrice {\n __typename\n ... on PriceRange {\n display\n }\n ... on Money {\n display\n }\n }\n partner {\n __typename\n id\n }\n isInAuction\n sale {\n internalID\n slug\n extendedBiddingIntervalMinutes\n id\n }\n saleMessage\n artists(shallow: true) {\n id\n internalID\n slug\n }\n}\n\nfragment ArtworkApp_me_1liwfq on Me {\n ...ArtworkSidebar_me_39o6UP\n ...ArtworkPageBanner_me_39o6UP\n}\n\nfragment ArtworkAuctionCreateAlertHeader_artwork on Artwork {\n slug\n internalID\n title\n isEligibleToCreateAlert\n isInAuction\n artistNames\n artists(shallow: true) {\n internalID\n name\n slug\n id\n }\n sale {\n startAt\n isClosed\n id\n }\n saleArtwork {\n extendedBiddingEndAt\n endAt\n endedAt\n id\n }\n attributionClass {\n internalID\n id\n }\n mediumType {\n filterGene {\n slug\n name\n id\n }\n }\n myLotStandingManageAlerts: myLotStanding {\n isHighestBidder\n }\n}\n\nfragment ArtworkAuctionRegistrationPanel_artwork on Artwork {\n sale {\n slug\n registrationEndsAt\n isRegistrationClosed\n id\n }\n}\n\nfragment ArtworkChatBubble_artwork on Artwork {\n isAcquireable\n isInquireable\n isOfferable\n isInAuction\n listPrice {\n __typename\n ... on Money {\n currencyCode\n major\n }\n ... on PriceRange {\n maxPrice {\n currencyCode\n major\n }\n }\n }\n saleArtwork {\n currency\n openingBid {\n cents\n }\n id\n }\n}\n\nfragment ArtworkDetailsAdditionalInfo_artwork on Artwork {\n category\n series\n publisher\n manufacturer\n image_rights: imageRights\n canRequestLotConditionsReport\n internalID\n isUnlisted\n framed {\n label\n details\n }\n signatureInfo {\n label\n details\n }\n conditionDescription {\n label\n details\n }\n certificateOfAuthenticity {\n label\n details\n }\n mediumType {\n __typename\n }\n dimensions {\n in\n cm\n }\n attributionClass {\n name\n id\n }\n medium\n ...ArtworkDetailsMediumModal_artwork\n}\n\nfragment ArtworkDetailsMediumModal_artwork on Artwork {\n mediumType {\n name\n longDescription\n }\n}\n\nfragment ArtworkDownloadButton_artwork on Artwork {\n title\n date\n downloadableImageUrl\n artists(shallow: true) {\n name\n id\n }\n}\n\nfragment ArtworkErrorApp_artworkError on ArtworkError {\n artwork {\n slug\n id\n }\n requestError {\n statusCode\n }\n}\n\nfragment ArtworkImageBrowserLarge_artwork_FOvjt on Artwork {\n ...ArtworkLightbox_artwork_FOvjt\n ...ArtworkVideoPlayer_artwork_FOvjt\n isSetVideoAsCover\n figures(includeAll: false) {\n __typename\n ... on Image {\n ...DeepZoom_image\n __typename\n internalID\n isZoomable\n }\n ... on Video {\n __typename\n id\n }\n }\n}\n\nfragment ArtworkImageBrowserSmall_artwork_FOvjt on Artwork {\n ...ArtworkLightbox_artwork_FOvjt\n ...ArtworkVideoPlayer_artwork_FOvjt\n isSetVideoAsCover\n figures(includeAll: false) {\n __typename\n ... on Image {\n ...DeepZoom_image\n internalID\n isZoomable\n type: __typename\n }\n ... on Video {\n type: __typename\n id\n }\n }\n}\n\nfragment ArtworkImageBrowser_artwork on Artwork {\n ...ArtworkActions_artwork_FOvjt\n ...ArtworkImageBrowserSmall_artwork_FOvjt\n ...ArtworkImageBrowserLarge_artwork_FOvjt\n internalID\n figures(includeAll: false) {\n __typename\n ... on Image {\n isDefault\n width\n height\n }\n ... on Video {\n videoWidth: width\n videoHeight: height\n id\n }\n }\n}\n\nfragment ArtworkLightbox_artwork_FOvjt on Artwork {\n formattedMetadata\n images(includeAll: false) {\n internalID\n isDefault\n placeholder: url(version: [\"small\", \"medium\"])\n fallback: cropped(quality: 80, width: 800, height: 800, version: [\"main\", \"normalized\", \"larger\", \"large\"]) {\n width\n height\n src\n srcSet\n }\n resized(quality: 80, width: 800, height: 800, version: [\"main\", \"normalized\", \"larger\", \"large\"]) {\n width\n height\n src\n srcSet\n }\n mobileLightboxSource: resized(quality: 50, width: 800, height: 800, version: [\"main\", \"normalized\", \"larger\", \"large\"]) {\n width\n height\n src\n srcSet\n }\n versions\n }\n}\n\nfragment ArtworkMeta_artwork on Artwork {\n ...SeoDataForArtwork_artwork\n ...ArtworkChatBubble_artwork\n href\n internalID\n isShareable\n isUnlisted\n metaImage: image {\n resized(width: 640, height: 640, version: [\"large\", \"medium\", \"tall\"]) {\n width\n height\n url\n }\n }\n meta {\n title\n description(limit: 155)\n longDescription: description(limit: 200)\n }\n}\n\nfragment ArtworkPageBanner_artwork on Artwork {\n published\n visibilityLevel\n isPurchasable\n sale {\n __typename\n ...CascadingEndTimesBanner_sale\n id\n }\n}\n\nfragment ArtworkPageBanner_me_39o6UP on Me {\n partnerOffersConnection(artworkID: \"artwork-id\", first: 1) {\n edges {\n node {\n internalID\n isActive\n id\n }\n }\n }\n}\n\nfragment ArtworkSharePanel_artwork_FOvjt on Artwork {\n href\n images(includeAll: false) {\n url\n }\n artworkMeta: meta {\n share\n }\n}\n\nfragment ArtworkSidebarArtists_artwork on Artwork {\n culturalMaker\n artists(shallow: true) {\n slug\n name\n id\n }\n}\n\nfragment ArtworkSidebarArtsyGuarantee_artwork on Artwork {\n isUnlisted\n}\n\nfragment ArtworkSidebarArtworkTitle_artwork on Artwork {\n date\n title\n}\n\nfragment ArtworkSidebarAuctionInfoPolling_artwork on Artwork {\n internalID\n sale {\n isClosed\n id\n }\n saleArtwork {\n currentBid {\n display\n }\n id\n }\n ...ArtworkSidebarCurrentBidInfo_artwork\n ...ArtworkSidebarBidAction_artwork\n}\n\nfragment ArtworkSidebarAuctionInfoPolling_me on Me {\n ...ArtworkSidebarBidAction_me\n}\n\nfragment ArtworkSidebarAuctionTimer_artwork on Artwork {\n internalID\n sale {\n cascadingEndTimeIntervalMinutes\n isClosed\n ...AuctionTimer_sale\n startAt\n id\n }\n saleArtwork {\n ...LotTimer_saleArtwork\n endAt\n endedAt\n id\n }\n}\n\nfragment ArtworkSidebarAuthenticityCertificate_artwork on Artwork {\n hasCertificateOfAuthenticity\n isBiddable\n}\n\nfragment ArtworkSidebarBidAction_artwork on Artwork {\n myLotStanding(live: true) {\n most_recent_bid: mostRecentBid {\n max_bid: maxBid {\n cents\n }\n id\n }\n }\n slug\n internalID\n sale {\n slug\n registrationStatus {\n qualified_for_bidding: qualifiedForBidding\n id\n }\n is_preview: isPreview\n is_open: isOpen\n is_live_open: isLiveOpen\n is_closed: isClosed\n is_registration_closed: isRegistrationClosed\n requireIdentityVerification\n id\n }\n sale_artwork: saleArtwork {\n increments {\n cents\n display\n }\n endedAt\n id\n }\n collectorSignals {\n auction {\n bidCount\n lotWatcherCount\n }\n }\n}\n\nfragment ArtworkSidebarBidAction_me on Me {\n isIdentityVerified\n pendingIdentityVerification {\n internalID\n id\n }\n}\n\nfragment ArtworkSidebarBiddingClosedMessage_artwork on Artwork {\n isEligibleToCreateAlert\n artists(shallow: true) {\n internalID\n id\n }\n attributionClass {\n internalID\n id\n }\n mediumType {\n filterGene {\n slug\n id\n }\n }\n}\n\nfragment ArtworkSidebarClassification_artwork on Artwork {\n attributionClass {\n shortArrayDescription\n id\n }\n}\n\nfragment ArtworkSidebarCollectorSignal_artwork on Artwork {\n collectorSignals {\n primaryLabel(ignore: [PARTNER_OFFER])\n runningShow {\n name\n href\n startAt\n endAt\n id\n }\n }\n}\n\nfragment ArtworkSidebarCommercialButtons_artwork on Artwork {\n ...ArtworkSidebarEditionSets_artwork\n isEligibleToCreateAlert\n artists(shallow: true) {\n internalID\n id\n }\n attributionClass {\n internalID\n id\n }\n internalID\n slug\n saleMessage\n isInquireable\n isAcquireable\n isOfferable\n isSold\n priceListedDisplay\n listPrice {\n __typename\n ... on PriceRange {\n display\n }\n ... on Money {\n display\n }\n }\n mediumType {\n filterGene {\n slug\n id\n }\n }\n editionSets {\n id\n internalID\n isAcquireable\n isOfferable\n saleMessage\n dimensions {\n in\n cm\n }\n }\n partner {\n profile {\n icon {\n url(version: \"square140\")\n }\n id\n }\n id\n }\n collectorSignals {\n primaryLabel(ignore: [PARTNER_OFFER])\n }\n}\n\nfragment ArtworkSidebarCommercialButtons_me_39o6UP on Me {\n partnerOffersConnection(artworkID: \"artwork-id\", first: 1) {\n edges {\n node {\n endAt\n internalID\n isAvailable\n note\n priceWithDiscount {\n display\n }\n id\n }\n }\n }\n}\n\nfragment ArtworkSidebarCreateAlert_artwork on Artwork {\n isEligibleToCreateAlert\n}\n\nfragment ArtworkSidebarCurrentBidInfo_artwork on Artwork {\n sale {\n is_closed: isClosed\n is_live_open: isLiveOpen\n internalID\n is_with_buyers_premium: isWithBuyersPremium\n id\n }\n sale_artwork: saleArtwork {\n is_with_reserve: isWithReserve\n reserve_message: reserveMessage\n reserve_status: reserveStatus\n endedAt\n current_bid: currentBid {\n display\n }\n counts {\n bidder_positions: bidderPositions\n }\n id\n }\n myLotStanding(live: true) {\n active_bid: activeBid {\n is_winning: isWinning\n id\n }\n most_recent_bid: mostRecentBid {\n max_bid: maxBid {\n display\n }\n id\n }\n }\n collectorSignals {\n auction {\n lotWatcherCount\n }\n }\n ...ArtworkSidebarBiddingClosedMessage_artwork\n}\n\nfragment ArtworkSidebarDetails_artwork on Artwork {\n isUnlisted\n medium\n dimensions {\n in\n cm\n }\n framed {\n details\n }\n editionOf\n isEdition\n editionSets {\n internalID\n id\n }\n ...ArtworkSidebarClassification_artwork\n ...ArtworkSidebarAuthenticityCertificate_artwork\n ...ArtworkSidebarCollectorSignal_artwork\n}\n\nfragment ArtworkSidebarEditionSets_artwork on Artwork {\n isInquireable\n isOfferable\n isAcquireable\n editionSets {\n id\n internalID\n isOfferable\n isAcquireable\n saleMessage\n dimensions {\n cm\n in\n }\n ...ArtworkSidebarSizeInfo_piece\n }\n}\n\nfragment ArtworkSidebarEstimatedValue_artwork on Artwork {\n saleArtwork {\n estimate\n id\n }\n sale {\n isClosed\n id\n }\n}\n\nfragment ArtworkSidebarLinks_artwork on Artwork {\n isInAuction\n isUnlisted\n sale {\n isClosed\n id\n }\n}\n\nfragment ArtworkSidebarPartnerInfo_artwork on Artwork {\n internalID\n slug\n isInquireable\n isUnlisted\n partner {\n name\n href\n cities\n isInquireable\n id\n }\n sale {\n name\n href\n id\n }\n collectorSignals {\n primaryLabel(ignore: [PARTNER_OFFER])\n }\n}\n\nfragment ArtworkSidebarPrivateArtwork_artwork on Artwork {\n partner {\n name\n slug\n profile {\n isPubliclyVisible\n id\n }\n id\n }\n isUnlisted\n additionalInformation\n}\n\nfragment ArtworkSidebarShippingInformation_artwork on Artwork {\n isUnlisted\n priceIncludesTaxDisplay\n shippingOrigin\n shippingInfo\n taxInfo {\n displayText\n moreInfo {\n displayText\n url\n }\n }\n}\n\nfragment ArtworkSidebarSizeInfo_piece on Sellable {\n __isSellable: __typename\n dimensions {\n in\n cm\n }\n editionOf\n}\n\nfragment ArtworkSidebar_artwork on Artwork {\n ...ArtworkSidebarArtworkTitle_artwork\n ...ArtworkSidebarArtists_artwork\n ...ArtworkSidebarDetails_artwork\n ...ArtworkSidebarCommercialButtons_artwork\n ...ArtworkSidebarShippingInformation_artwork\n ...ArtworkSidebarPartnerInfo_artwork\n ...ArtworkSidebarCreateAlert_artwork\n ...ArtworkSidebarLinks_artwork\n ...ArtworkSidebarEstimatedValue_artwork\n ...ArtworkSidebarBiddingClosedMessage_artwork\n ...ArtworkSidebarAuctionTimer_artwork\n ...ArtworkSidebarAuctionInfoPolling_artwork\n ...ArtworkSidebarPrivateArtwork_artwork\n ...ArtworkSidebarArtsyGuarantee_artwork\n ...PrivateArtworkAdditionalInfo_artwork\n slug\n isSold\n isAcquireable\n isOfferable\n isInAuction\n saleMessage\n isBiddable\n isEligibleForArtsyGuarantee\n isEligibleToCreateAlert\n partner {\n internalID\n id\n }\n sale {\n endAt\n startAt\n isClosed\n isAuction\n id\n }\n saleArtwork {\n lotID\n lotLabel\n extendedBiddingEndAt\n endAt\n endedAt\n id\n }\n artists(shallow: true) {\n internalID\n id\n }\n isUnlisted\n}\n\nfragment ArtworkSidebar_me_39o6UP on Me {\n ...ArtworkSidebarAuctionInfoPolling_me\n ...ArtworkSidebarCommercialButtons_me_39o6UP\n}\n\nfragment ArtworkTopContextBar_artwork on Artwork {\n partner {\n name\n id\n }\n sale {\n isAuction\n isBenefit\n isGalleryAuction\n coverImage {\n url\n }\n ...RegistrationAuctionTimer_sale\n id\n }\n context {\n __typename\n ... on Sale {\n name\n href\n }\n ... on Fair {\n name\n href\n profile {\n icon {\n url\n }\n id\n }\n }\n ... on Show {\n name\n href\n status\n thumbnail: coverImage {\n url\n }\n }\n ... on Node {\n __isNode: __typename\n id\n }\n }\n}\n\nfragment ArtworkVideoPlayer_artwork_FOvjt on Artwork {\n internalID\n slug\n figures(includeAll: false) {\n __typename\n ... on Video {\n __typename\n playerUrl\n videoWidth: width\n videoHeight: height\n id\n }\n }\n}\n\nfragment AuctionTimer_sale on Sale {\n liveStartAt\n endAt\n}\n\nfragment CascadingEndTimesBanner_sale on Sale {\n isClosed\n cascadingEndTimeIntervalMinutes\n extendedBiddingIntervalMinutes\n}\n\nfragment DeepZoom_image on Image {\n deepZoom {\n Image {\n xmlns\n Url\n Format\n TileSize\n Overlap\n Size {\n Width\n Height\n }\n }\n }\n}\n\nfragment FollowArtistButton_artist on Artist {\n id\n slug\n name\n internalID\n counts {\n follows\n }\n}\n\nfragment LotTimer_saleArtwork on SaleArtwork {\n endAt\n formattedStartDateTime\n extendedBiddingEndAt\n lotID\n sale {\n startAt\n extendedBiddingPeriodMinutes\n extendedBiddingIntervalMinutes\n internalID\n id\n }\n}\n\nfragment PrivateArtworkAboutArtist_artwork on Artwork {\n displayArtistBio\n slug\n artists(shallow: true) {\n ...FollowArtistButton_artist\n internalID\n href\n slug\n name\n initials\n formattedNationalityAndBirthday\n counts {\n follows\n }\n coverArtwork {\n image {\n cropped(width: 145, height: 145) {\n src\n srcSet\n }\n }\n id\n }\n biographyBlurb(format: HTML, partnerBio: false) {\n text\n }\n id\n }\n}\n\nfragment PrivateArtworkAboutWork_artwork on Artwork {\n additionalInformationHTML: additionalInformation(format: HTML)\n}\n\nfragment PrivateArtworkAdditionalInfo_artwork on Artwork {\n category\n series\n publisher\n manufacturer\n image_rights: imageRights\n canRequestLotConditionsReport\n internalID\n isUnlisted\n framed {\n label\n details\n }\n signatureInfo {\n label\n details\n }\n conditionDescription {\n label\n details\n }\n certificateOfAuthenticity {\n label\n details\n }\n mediumType {\n __typename\n }\n dimensions {\n in\n cm\n }\n attributionClass {\n name\n id\n }\n medium\n ...ArtworkDetailsMediumModal_artwork\n}\n\nfragment PrivateArtworkDetails_artwork on Artwork {\n ...PrivateArtworkAboutWork_artwork\n ...PrivateArtworkAboutArtist_artwork\n ...PrivateArtworkMetadata_artwork\n}\n\nfragment PrivateArtworkMetadata_artwork on Artwork {\n ...ArtworkDetailsAdditionalInfo_artwork\n conditionDescription {\n details\n }\n provenance(format: HTML)\n exhibitionHistory(format: HTML)\n}\n\nfragment RegistrationAuctionTimer_sale on Sale {\n registrationEndsAt\n isRegistrationClosed\n}\n\nfragment SeoDataForArtwork_artwork on Artwork {\n href\n date\n is_price_hidden: isPriceHidden\n is_price_range: isPriceRange\n listPrice {\n __typename\n ... on PriceRange {\n minPrice {\n major\n currencyCode\n }\n maxPrice {\n major\n }\n }\n ... on Money {\n major\n currencyCode\n }\n }\n meta_image: image {\n resized(width: 640, height: 640, version: [\"large\", \"medium\", \"tall\"]) {\n width\n height\n url\n }\n }\n meta {\n title\n description(limit: 155)\n }\n partner {\n name\n type\n profile {\n image {\n resized(width: 320, height: 320, version: [\"medium\"]) {\n url\n }\n }\n id\n }\n id\n }\n artistNames\n availability\n category\n dimensions {\n in\n }\n}\n\nfragment ViewInRoomArtwork_artwork on Artwork {\n widthCm\n heightCm\n image {\n resized(width: 800, height: 800, version: [\"main\", \"normalized\", \"larger\", \"large\"]) {\n src\n srcSet\n width\n height\n }\n }\n}\n\nfragment ViewInRoom_artwork on Artwork {\n ...ViewInRoomArtwork_artwork\n}\n" + "text": "query ArtworkAppTestQuery {\n artworkResult(id: \"artwork-id\") {\n __typename\n ...ArtworkApp_artworkResult_3eglH\n ... on Node {\n __isNode: __typename\n id\n }\n }\n me {\n ...ArtworkApp_me_1liwfq\n id\n }\n}\n\nfragment ArtworkActionsSaveButton_artwork on Artwork {\n id\n internalID\n slug\n title\n date\n artistNames\n preview: image {\n url(version: \"square\")\n }\n isInAuction\n isSavedToAnyList\n sale {\n isAuction\n isClosed\n id\n }\n collectorSignals {\n auction {\n lotWatcherCount\n }\n }\n ...ArtworkActionsWatchLotButton_artwork\n}\n\nfragment ArtworkActionsWatchLotButton_artwork on Artwork {\n sale {\n isLiveOpen\n isRegistrationClosed\n liveStartAt\n registrationStatus {\n qualifiedForBidding\n id\n }\n id\n }\n ...ArtworkAuctionRegistrationPanel_artwork\n}\n\nfragment ArtworkActions_artwork_FOvjt on Artwork {\n ...ArtworkActionsSaveButton_artwork\n ...ArtworkDownloadButton_artwork\n ...ArtworkSharePanel_artwork_FOvjt\n ...ViewInRoom_artwork\n isUnlisted\n slug\n downloadableImageUrl\n isDownloadable\n isHangable\n partner {\n slug\n id\n }\n}\n\nfragment ArtworkApp_artworkResult_3eglH on ArtworkResult {\n __isArtworkResult: __typename\n __typename\n ...ArtworkApp_artwork_3eglH\n ...ArtworkErrorApp_artworkError\n}\n\nfragment ArtworkApp_artwork_3eglH on Artwork {\n ...ArtworkMeta_artwork\n ...ArtworkTopContextBar_artwork\n ...ArtworkImageBrowser_artwork\n ...ArtworkSidebar_artwork\n ...ArtworkAuctionCreateAlertHeader_artwork\n ...PrivateArtworkDetails_artwork\n ...ArtworkPageBanner_artwork\n attributionClass {\n internalID\n id\n }\n slug\n internalID\n isAcquireable\n isOfferable\n published\n availability\n mediumType {\n filterGene {\n slug\n id\n }\n }\n visibilityLevel\n isUnlisted\n listPrice {\n __typename\n ... on PriceRange {\n display\n }\n ... on Money {\n display\n }\n }\n partner {\n __typename\n id\n }\n isInAuction\n sale {\n internalID\n slug\n extendedBiddingIntervalMinutes\n endAt\n startAt\n isClosed\n isAuction\n id\n }\n saleArtwork {\n lotID\n lotLabel\n extendedBiddingEndAt\n endAt\n endedAt\n id\n }\n saleMessage\n artists(shallow: true) {\n id\n internalID\n slug\n }\n}\n\nfragment ArtworkApp_me_1liwfq on Me {\n ...ArtworkSidebar_me_39o6UP\n ...ArtworkPageBanner_me_39o6UP\n}\n\nfragment ArtworkAuctionCreateAlertHeader_artwork on Artwork {\n slug\n internalID\n title\n isEligibleToCreateAlert\n isInAuction\n artistNames\n artists(shallow: true) {\n internalID\n name\n slug\n id\n }\n sale {\n startAt\n isClosed\n id\n }\n saleArtwork {\n extendedBiddingEndAt\n endAt\n endedAt\n id\n }\n attributionClass {\n internalID\n id\n }\n mediumType {\n filterGene {\n slug\n name\n id\n }\n }\n myLotStandingManageAlerts: myLotStanding {\n isHighestBidder\n }\n}\n\nfragment ArtworkAuctionRegistrationPanel_artwork on Artwork {\n sale {\n slug\n registrationEndsAt\n isRegistrationClosed\n id\n }\n}\n\nfragment ArtworkChatBubble_artwork on Artwork {\n isAcquireable\n isInquireable\n isOfferable\n isInAuction\n listPrice {\n __typename\n ... on Money {\n currencyCode\n major\n }\n ... on PriceRange {\n maxPrice {\n currencyCode\n major\n }\n }\n }\n saleArtwork {\n currency\n openingBid {\n cents\n }\n id\n }\n}\n\nfragment ArtworkDetailsAdditionalInfo_artwork on Artwork {\n category\n series\n publisher\n manufacturer\n image_rights: imageRights\n canRequestLotConditionsReport\n internalID\n isUnlisted\n framed {\n label\n details\n }\n signatureInfo {\n label\n details\n }\n conditionDescription {\n label\n details\n }\n certificateOfAuthenticity {\n label\n details\n }\n mediumType {\n __typename\n }\n dimensions {\n in\n cm\n }\n attributionClass {\n name\n id\n }\n medium\n ...ArtworkDetailsMediumModal_artwork\n}\n\nfragment ArtworkDetailsMediumModal_artwork on Artwork {\n mediumType {\n name\n longDescription\n }\n}\n\nfragment ArtworkDownloadButton_artwork on Artwork {\n title\n date\n downloadableImageUrl\n artists(shallow: true) {\n name\n id\n }\n}\n\nfragment ArtworkErrorApp_artworkError on ArtworkError {\n artwork {\n slug\n id\n }\n requestError {\n statusCode\n }\n}\n\nfragment ArtworkImageBrowserLarge_artwork_FOvjt on Artwork {\n ...ArtworkLightbox_artwork_FOvjt\n ...ArtworkVideoPlayer_artwork_FOvjt\n isSetVideoAsCover\n figures(includeAll: false) {\n __typename\n ... on Image {\n ...DeepZoom_image\n __typename\n internalID\n isZoomable\n }\n ... on Video {\n __typename\n id\n }\n }\n}\n\nfragment ArtworkImageBrowserSmall_artwork_FOvjt on Artwork {\n ...ArtworkLightbox_artwork_FOvjt\n ...ArtworkVideoPlayer_artwork_FOvjt\n isSetVideoAsCover\n figures(includeAll: false) {\n __typename\n ... on Image {\n ...DeepZoom_image\n internalID\n isZoomable\n type: __typename\n }\n ... on Video {\n type: __typename\n id\n }\n }\n}\n\nfragment ArtworkImageBrowser_artwork on Artwork {\n ...ArtworkActions_artwork_FOvjt\n ...ArtworkImageBrowserSmall_artwork_FOvjt\n ...ArtworkImageBrowserLarge_artwork_FOvjt\n internalID\n figures(includeAll: false) {\n __typename\n ... on Image {\n isDefault\n width\n height\n }\n ... on Video {\n videoWidth: width\n videoHeight: height\n id\n }\n }\n}\n\nfragment ArtworkLightbox_artwork_FOvjt on Artwork {\n formattedMetadata\n images(includeAll: false) {\n internalID\n isDefault\n placeholder: url(version: [\"small\", \"medium\"])\n fallback: cropped(quality: 80, width: 800, height: 800, version: [\"main\", \"normalized\", \"larger\", \"large\"]) {\n width\n height\n src\n srcSet\n }\n resized(quality: 80, width: 800, height: 800, version: [\"main\", \"normalized\", \"larger\", \"large\"]) {\n width\n height\n src\n srcSet\n }\n mobileLightboxSource: resized(quality: 50, width: 800, height: 800, version: [\"main\", \"normalized\", \"larger\", \"large\"]) {\n width\n height\n src\n srcSet\n }\n versions\n }\n}\n\nfragment ArtworkMeta_artwork on Artwork {\n ...SeoDataForArtwork_artwork\n ...ArtworkChatBubble_artwork\n href\n internalID\n isShareable\n isUnlisted\n metaImage: image {\n resized(width: 640, height: 640, version: [\"large\", \"medium\", \"tall\"]) {\n width\n height\n url\n }\n }\n meta {\n title\n description(limit: 155)\n longDescription: description(limit: 200)\n }\n}\n\nfragment ArtworkPageBanner_artwork on Artwork {\n published\n visibilityLevel\n isPurchasable\n sale {\n __typename\n ...CascadingEndTimesBanner_sale\n id\n }\n}\n\nfragment ArtworkPageBanner_me_39o6UP on Me {\n partnerOffersConnection(artworkID: \"artwork-id\", first: 1) {\n edges {\n node {\n internalID\n isActive\n id\n }\n }\n }\n}\n\nfragment ArtworkSharePanel_artwork_FOvjt on Artwork {\n href\n images(includeAll: false) {\n url\n }\n artworkMeta: meta {\n share\n }\n}\n\nfragment ArtworkSidebarArtists_artwork on Artwork {\n culturalMaker\n artists(shallow: true) {\n slug\n name\n id\n }\n}\n\nfragment ArtworkSidebarArtsyGuarantee_artwork on Artwork {\n isUnlisted\n}\n\nfragment ArtworkSidebarArtworkTitle_artwork on Artwork {\n date\n title\n}\n\nfragment ArtworkSidebarAuctionInfoPolling_artwork on Artwork {\n internalID\n sale {\n isClosed\n id\n }\n saleArtwork {\n currentBid {\n display\n }\n id\n }\n ...ArtworkSidebarCurrentBidInfo_artwork\n ...ArtworkSidebarBidAction_artwork\n}\n\nfragment ArtworkSidebarAuctionInfoPolling_me on Me {\n ...ArtworkSidebarBidAction_me\n}\n\nfragment ArtworkSidebarAuctionTimer_artwork on Artwork {\n internalID\n sale {\n cascadingEndTimeIntervalMinutes\n isClosed\n ...AuctionTimer_sale\n startAt\n id\n }\n saleArtwork {\n ...LotTimer_saleArtwork\n endAt\n endedAt\n id\n }\n}\n\nfragment ArtworkSidebarAuthenticityCertificate_artwork on Artwork {\n hasCertificateOfAuthenticity\n isBiddable\n}\n\nfragment ArtworkSidebarBidAction_artwork on Artwork {\n myLotStanding(live: true) {\n most_recent_bid: mostRecentBid {\n max_bid: maxBid {\n cents\n }\n id\n }\n }\n slug\n internalID\n sale {\n slug\n registrationStatus {\n qualified_for_bidding: qualifiedForBidding\n id\n }\n is_preview: isPreview\n is_open: isOpen\n is_live_open: isLiveOpen\n is_closed: isClosed\n is_registration_closed: isRegistrationClosed\n requireIdentityVerification\n id\n }\n sale_artwork: saleArtwork {\n increments {\n cents\n display\n }\n endedAt\n id\n }\n collectorSignals {\n auction {\n bidCount\n lotWatcherCount\n }\n }\n}\n\nfragment ArtworkSidebarBidAction_me on Me {\n isIdentityVerified\n pendingIdentityVerification {\n internalID\n id\n }\n}\n\nfragment ArtworkSidebarBiddingClosedMessage_artwork on Artwork {\n isEligibleToCreateAlert\n artists(shallow: true) {\n internalID\n id\n }\n attributionClass {\n internalID\n id\n }\n mediumType {\n filterGene {\n slug\n id\n }\n }\n}\n\nfragment ArtworkSidebarClassification_artwork on Artwork {\n attributionClass {\n shortArrayDescription\n id\n }\n}\n\nfragment ArtworkSidebarCollectorSignal_artwork on Artwork {\n collectorSignals {\n primaryLabel(ignore: [PARTNER_OFFER])\n runningShow {\n name\n href\n startAt\n endAt\n id\n }\n }\n}\n\nfragment ArtworkSidebarCommercialButtons_artwork on Artwork {\n ...ArtworkSidebarEditionSets_artwork\n isEligibleToCreateAlert\n artists(shallow: true) {\n internalID\n id\n }\n attributionClass {\n internalID\n id\n }\n internalID\n slug\n saleMessage\n isInquireable\n isAcquireable\n isOfferable\n isSold\n priceListedDisplay\n listPrice {\n __typename\n ... on PriceRange {\n display\n }\n ... on Money {\n display\n }\n }\n mediumType {\n filterGene {\n slug\n id\n }\n }\n editionSets {\n id\n internalID\n isAcquireable\n isOfferable\n saleMessage\n dimensions {\n in\n cm\n }\n }\n partner {\n profile {\n icon {\n url(version: \"square140\")\n }\n id\n }\n id\n }\n collectorSignals {\n primaryLabel(ignore: [PARTNER_OFFER])\n }\n sale {\n isClosed\n id\n }\n saleArtwork {\n endedAt\n id\n }\n}\n\nfragment ArtworkSidebarCommercialButtons_me_39o6UP on Me {\n partnerOffersConnection(artworkID: \"artwork-id\", first: 1) {\n edges {\n node {\n endAt\n internalID\n isAvailable\n note\n priceWithDiscount {\n display\n }\n id\n }\n }\n }\n}\n\nfragment ArtworkSidebarCreateAlert_artwork on Artwork {\n isEligibleToCreateAlert\n}\n\nfragment ArtworkSidebarCurrentBidInfo_artwork on Artwork {\n sale {\n is_closed: isClosed\n is_live_open: isLiveOpen\n internalID\n is_with_buyers_premium: isWithBuyersPremium\n id\n }\n sale_artwork: saleArtwork {\n is_with_reserve: isWithReserve\n reserve_message: reserveMessage\n reserve_status: reserveStatus\n endedAt\n current_bid: currentBid {\n display\n }\n counts {\n bidder_positions: bidderPositions\n }\n id\n }\n myLotStanding(live: true) {\n active_bid: activeBid {\n is_winning: isWinning\n id\n }\n most_recent_bid: mostRecentBid {\n max_bid: maxBid {\n display\n }\n id\n }\n }\n collectorSignals {\n auction {\n lotWatcherCount\n }\n }\n ...ArtworkSidebarBiddingClosedMessage_artwork\n}\n\nfragment ArtworkSidebarDetails_artwork on Artwork {\n isUnlisted\n medium\n dimensions {\n in\n cm\n }\n framed {\n details\n }\n editionOf\n isEdition\n editionSets {\n internalID\n id\n }\n ...ArtworkSidebarClassification_artwork\n ...ArtworkSidebarAuthenticityCertificate_artwork\n ...ArtworkSidebarCollectorSignal_artwork\n}\n\nfragment ArtworkSidebarEditionSets_artwork on Artwork {\n isInquireable\n isOfferable\n isAcquireable\n editionSets {\n id\n internalID\n isOfferable\n isAcquireable\n saleMessage\n dimensions {\n cm\n in\n }\n ...ArtworkSidebarSizeInfo_piece\n }\n}\n\nfragment ArtworkSidebarEstimatedValue_artwork on Artwork {\n saleArtwork {\n estimate\n id\n }\n sale {\n isClosed\n id\n }\n}\n\nfragment ArtworkSidebarLinks_artwork on Artwork {\n isInAuction\n isUnlisted\n sale {\n isClosed\n id\n }\n}\n\nfragment ArtworkSidebarPartnerInfo_artwork on Artwork {\n internalID\n slug\n isInquireable\n isUnlisted\n partner {\n name\n href\n cities\n isInquireable\n id\n }\n sale {\n name\n href\n id\n }\n collectorSignals {\n primaryLabel(ignore: [PARTNER_OFFER])\n }\n}\n\nfragment ArtworkSidebarPrivateArtwork_artwork on Artwork {\n partner {\n name\n slug\n profile {\n isPubliclyVisible\n id\n }\n id\n }\n isUnlisted\n additionalInformation\n}\n\nfragment ArtworkSidebarShippingInformation_artwork on Artwork {\n isUnlisted\n priceIncludesTaxDisplay\n shippingOrigin\n shippingInfo\n taxInfo {\n displayText\n moreInfo {\n displayText\n url\n }\n }\n}\n\nfragment ArtworkSidebarSizeInfo_piece on Sellable {\n __isSellable: __typename\n dimensions {\n in\n cm\n }\n editionOf\n}\n\nfragment ArtworkSidebar_artwork on Artwork {\n ...ArtworkSidebarArtworkTitle_artwork\n ...ArtworkSidebarArtists_artwork\n ...ArtworkSidebarDetails_artwork\n ...ArtworkSidebarCommercialButtons_artwork\n ...ArtworkSidebarShippingInformation_artwork\n ...ArtworkSidebarPartnerInfo_artwork\n ...ArtworkSidebarCreateAlert_artwork\n ...ArtworkSidebarLinks_artwork\n ...ArtworkSidebarEstimatedValue_artwork\n ...ArtworkSidebarBiddingClosedMessage_artwork\n ...ArtworkSidebarAuctionTimer_artwork\n ...ArtworkSidebarAuctionInfoPolling_artwork\n ...ArtworkSidebarPrivateArtwork_artwork\n ...ArtworkSidebarArtsyGuarantee_artwork\n ...PrivateArtworkAdditionalInfo_artwork\n slug\n isSold\n isAcquireable\n isOfferable\n isInAuction\n saleMessage\n isBiddable\n isEligibleForArtsyGuarantee\n isEligibleToCreateAlert\n partner {\n internalID\n id\n }\n sale {\n endAt\n startAt\n isClosed\n isAuction\n id\n }\n saleArtwork {\n lotID\n lotLabel\n extendedBiddingEndAt\n endAt\n endedAt\n id\n }\n artists(shallow: true) {\n internalID\n id\n }\n isUnlisted\n}\n\nfragment ArtworkSidebar_me_39o6UP on Me {\n ...ArtworkSidebarAuctionInfoPolling_me\n ...ArtworkSidebarCommercialButtons_me_39o6UP\n}\n\nfragment ArtworkTopContextBar_artwork on Artwork {\n partner {\n name\n id\n }\n sale {\n isAuction\n isBenefit\n isGalleryAuction\n coverImage {\n url\n }\n ...RegistrationAuctionTimer_sale\n id\n }\n context {\n __typename\n ... on Sale {\n name\n href\n }\n ... on Fair {\n name\n href\n profile {\n icon {\n url\n }\n id\n }\n }\n ... on Show {\n name\n href\n status\n thumbnail: coverImage {\n url\n }\n }\n ... on Node {\n __isNode: __typename\n id\n }\n }\n}\n\nfragment ArtworkVideoPlayer_artwork_FOvjt on Artwork {\n internalID\n slug\n figures(includeAll: false) {\n __typename\n ... on Video {\n __typename\n playerUrl\n videoWidth: width\n videoHeight: height\n id\n }\n }\n}\n\nfragment AuctionTimer_sale on Sale {\n liveStartAt\n endAt\n}\n\nfragment CascadingEndTimesBanner_sale on Sale {\n isClosed\n cascadingEndTimeIntervalMinutes\n extendedBiddingIntervalMinutes\n}\n\nfragment DeepZoom_image on Image {\n deepZoom {\n Image {\n xmlns\n Url\n Format\n TileSize\n Overlap\n Size {\n Width\n Height\n }\n }\n }\n}\n\nfragment FollowArtistButton_artist on Artist {\n id\n slug\n name\n internalID\n counts {\n follows\n }\n}\n\nfragment LotTimer_saleArtwork on SaleArtwork {\n endAt\n formattedStartDateTime\n extendedBiddingEndAt\n lotID\n sale {\n startAt\n extendedBiddingPeriodMinutes\n extendedBiddingIntervalMinutes\n internalID\n id\n }\n}\n\nfragment PrivateArtworkAboutArtist_artwork on Artwork {\n displayArtistBio\n slug\n artists(shallow: true) {\n ...FollowArtistButton_artist\n internalID\n href\n slug\n name\n initials\n formattedNationalityAndBirthday\n counts {\n follows\n }\n coverArtwork {\n image {\n cropped(width: 145, height: 145) {\n src\n srcSet\n }\n }\n id\n }\n biographyBlurb(format: HTML, partnerBio: false) {\n text\n }\n id\n }\n}\n\nfragment PrivateArtworkAboutWork_artwork on Artwork {\n additionalInformationHTML: additionalInformation(format: HTML)\n}\n\nfragment PrivateArtworkAdditionalInfo_artwork on Artwork {\n category\n series\n publisher\n manufacturer\n image_rights: imageRights\n canRequestLotConditionsReport\n internalID\n isUnlisted\n framed {\n label\n details\n }\n signatureInfo {\n label\n details\n }\n conditionDescription {\n label\n details\n }\n certificateOfAuthenticity {\n label\n details\n }\n mediumType {\n __typename\n }\n dimensions {\n in\n cm\n }\n attributionClass {\n name\n id\n }\n medium\n ...ArtworkDetailsMediumModal_artwork\n}\n\nfragment PrivateArtworkDetails_artwork on Artwork {\n ...PrivateArtworkAboutWork_artwork\n ...PrivateArtworkAboutArtist_artwork\n ...PrivateArtworkMetadata_artwork\n}\n\nfragment PrivateArtworkMetadata_artwork on Artwork {\n ...ArtworkDetailsAdditionalInfo_artwork\n conditionDescription {\n details\n }\n provenance(format: HTML)\n exhibitionHistory(format: HTML)\n}\n\nfragment RegistrationAuctionTimer_sale on Sale {\n registrationEndsAt\n isRegistrationClosed\n}\n\nfragment SeoDataForArtwork_artwork on Artwork {\n href\n date\n is_price_hidden: isPriceHidden\n is_price_range: isPriceRange\n listPrice {\n __typename\n ... on PriceRange {\n minPrice {\n major\n currencyCode\n }\n maxPrice {\n major\n }\n }\n ... on Money {\n major\n currencyCode\n }\n }\n meta_image: image {\n resized(width: 640, height: 640, version: [\"large\", \"medium\", \"tall\"]) {\n width\n height\n url\n }\n }\n meta {\n title\n description(limit: 155)\n }\n partner {\n name\n type\n profile {\n image {\n resized(width: 320, height: 320, version: [\"medium\"]) {\n url\n }\n }\n id\n }\n id\n }\n artistNames\n availability\n category\n dimensions {\n in\n }\n}\n\nfragment ViewInRoomArtwork_artwork on Artwork {\n widthCm\n heightCm\n image {\n resized(width: 800, height: 800, version: [\"main\", \"normalized\", \"larger\", \"large\"]) {\n src\n srcSet\n width\n height\n }\n }\n}\n\nfragment ViewInRoom_artwork on Artwork {\n ...ViewInRoomArtwork_artwork\n}\n" } }; })(); diff --git a/src/__generated__/ArtworkApp_artwork.graphql.ts b/src/__generated__/ArtworkApp_artwork.graphql.ts index 45ff0a07b45..df211b7d4f7 100644 --- a/src/__generated__/ArtworkApp_artwork.graphql.ts +++ b/src/__generated__/ArtworkApp_artwork.graphql.ts @@ -1,5 +1,5 @@ /** - * @generated SignedSource<<8d5086cb9857a08b188621860193b141>> + * @generated SignedSource<<3aaf42f1a4a23d77b606a6eaa3d3bca1>> * @lightSyntaxTransform * @nogrep */ @@ -39,9 +39,20 @@ export type ArtworkApp_artwork$data = { } | null | undefined; readonly published: boolean; readonly sale: { + readonly endAt: string | null | undefined; readonly extendedBiddingIntervalMinutes: number | null | undefined; readonly internalID: string; + readonly isAuction: boolean | null | undefined; + readonly isClosed: boolean | null | undefined; readonly slug: string; + readonly startAt: string | null | undefined; + } | null | undefined; + readonly saleArtwork: { + readonly endAt: string | null | undefined; + readonly endedAt: string | null | undefined; + readonly extendedBiddingEndAt: string | null | undefined; + readonly lotID: string | null | undefined; + readonly lotLabel: string | null | undefined; } | null | undefined; readonly saleMessage: string | null | undefined; readonly slug: string; @@ -77,7 +88,14 @@ v2 = [ "name": "display", "storageKey": null } -]; +], +v3 = { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "endAt", + "storageKey": null +}; return { "argumentDefinitions": [ { @@ -275,6 +293,68 @@ return { "kind": "ScalarField", "name": "extendedBiddingIntervalMinutes", "storageKey": null + }, + (v3/*: any*/), + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "startAt", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "isClosed", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "isAuction", + "storageKey": null + } + ], + "storageKey": null + }, + { + "alias": null, + "args": null, + "concreteType": "SaleArtwork", + "kind": "LinkedField", + "name": "saleArtwork", + "plural": false, + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "lotID", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "lotLabel", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "extendedBiddingEndAt", + "storageKey": null + }, + (v3/*: any*/), + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "endedAt", + "storageKey": null } ], "storageKey": null @@ -318,6 +398,6 @@ return { }; })(); -(node as any).hash = "4ac112d83688bc28ff3548df974d07ea"; +(node as any).hash = "815a88c21517b3b8ac94496a2d2eb8af"; export default node; diff --git a/src/__generated__/ArtworkSidebarCommercialButtons_Test_Query.graphql.ts b/src/__generated__/ArtworkSidebarCommercialButtons_Test_Query.graphql.ts index d8627970033..b13c9594325 100644 --- a/src/__generated__/ArtworkSidebarCommercialButtons_Test_Query.graphql.ts +++ b/src/__generated__/ArtworkSidebarCommercialButtons_Test_Query.graphql.ts @@ -1,5 +1,5 @@ /** - * @generated SignedSource<<3d0313a4ab07293f6e271748b324b072>> + * @generated SignedSource<<7b48764595ffb4eb3fc0ba1f584f66ae>> * @lightSyntaxTransform * @nogrep */ @@ -417,6 +417,44 @@ return { ], "storageKey": null }, + { + "alias": null, + "args": null, + "concreteType": "Sale", + "kind": "LinkedField", + "name": "sale", + "plural": false, + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "isClosed", + "storageKey": null + }, + (v4/*: any*/) + ], + "storageKey": null + }, + { + "alias": null, + "args": null, + "concreteType": "SaleArtwork", + "kind": "LinkedField", + "name": "saleArtwork", + "plural": false, + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "endedAt", + "storageKey": null + }, + (v4/*: any*/) + ], + "storageKey": null + }, (v4/*: any*/) ], "storageKey": "artwork(id:\"josef-albers-homage-to-the-square-85\")" @@ -509,7 +547,7 @@ return { ] }, "params": { - "cacheID": "99958eed1bf84ad2d81096eba1ab93b3", + "cacheID": "7b3e4cd6975d01db8f149fdbf5448131", "id": null, "metadata": { "relayTestingSelectionTypeInfo": { @@ -628,6 +666,22 @@ return { "artwork.partner.profile.icon.url": (v12/*: any*/), "artwork.partner.profile.id": (v10/*: any*/), "artwork.priceListedDisplay": (v12/*: any*/), + "artwork.sale": { + "enumValues": null, + "nullable": true, + "plural": false, + "type": "Sale" + }, + "artwork.sale.id": (v10/*: any*/), + "artwork.sale.isClosed": (v13/*: any*/), + "artwork.saleArtwork": { + "enumValues": null, + "nullable": true, + "plural": false, + "type": "SaleArtwork" + }, + "artwork.saleArtwork.endedAt": (v12/*: any*/), + "artwork.saleArtwork.id": (v10/*: any*/), "artwork.saleMessage": (v12/*: any*/), "artwork.slug": (v10/*: any*/), "me": { @@ -671,7 +725,7 @@ return { }, "name": "ArtworkSidebarCommercialButtons_Test_Query", "operationKind": "query", - "text": "query ArtworkSidebarCommercialButtons_Test_Query {\n artwork(id: \"josef-albers-homage-to-the-square-85\") {\n ...ArtworkSidebarCommercialButtons_artwork\n id\n }\n me {\n ...ArtworkSidebarCommercialButtons_me_4G3fWC\n id\n }\n}\n\nfragment ArtworkSidebarCommercialButtons_artwork on Artwork {\n ...ArtworkSidebarEditionSets_artwork\n isEligibleToCreateAlert\n artists(shallow: true) {\n internalID\n id\n }\n attributionClass {\n internalID\n id\n }\n internalID\n slug\n saleMessage\n isInquireable\n isAcquireable\n isOfferable\n isSold\n priceListedDisplay\n listPrice {\n __typename\n ... on PriceRange {\n display\n }\n ... on Money {\n display\n }\n }\n mediumType {\n filterGene {\n slug\n id\n }\n }\n editionSets {\n id\n internalID\n isAcquireable\n isOfferable\n saleMessage\n dimensions {\n in\n cm\n }\n }\n partner {\n profile {\n icon {\n url(version: \"square140\")\n }\n id\n }\n id\n }\n collectorSignals {\n primaryLabel(ignore: [PARTNER_OFFER])\n }\n}\n\nfragment ArtworkSidebarCommercialButtons_me_4G3fWC on Me {\n partnerOffersConnection(artworkID: \"josef-albers-homage-to-the-square-85\", first: 1) {\n edges {\n node {\n endAt\n internalID\n isAvailable\n note\n priceWithDiscount {\n display\n }\n id\n }\n }\n }\n}\n\nfragment ArtworkSidebarEditionSets_artwork on Artwork {\n isInquireable\n isOfferable\n isAcquireable\n editionSets {\n id\n internalID\n isOfferable\n isAcquireable\n saleMessage\n dimensions {\n cm\n in\n }\n ...ArtworkSidebarSizeInfo_piece\n }\n}\n\nfragment ArtworkSidebarSizeInfo_piece on Sellable {\n __isSellable: __typename\n dimensions {\n in\n cm\n }\n editionOf\n}\n" + "text": "query ArtworkSidebarCommercialButtons_Test_Query {\n artwork(id: \"josef-albers-homage-to-the-square-85\") {\n ...ArtworkSidebarCommercialButtons_artwork\n id\n }\n me {\n ...ArtworkSidebarCommercialButtons_me_4G3fWC\n id\n }\n}\n\nfragment ArtworkSidebarCommercialButtons_artwork on Artwork {\n ...ArtworkSidebarEditionSets_artwork\n isEligibleToCreateAlert\n artists(shallow: true) {\n internalID\n id\n }\n attributionClass {\n internalID\n id\n }\n internalID\n slug\n saleMessage\n isInquireable\n isAcquireable\n isOfferable\n isSold\n priceListedDisplay\n listPrice {\n __typename\n ... on PriceRange {\n display\n }\n ... on Money {\n display\n }\n }\n mediumType {\n filterGene {\n slug\n id\n }\n }\n editionSets {\n id\n internalID\n isAcquireable\n isOfferable\n saleMessage\n dimensions {\n in\n cm\n }\n }\n partner {\n profile {\n icon {\n url(version: \"square140\")\n }\n id\n }\n id\n }\n collectorSignals {\n primaryLabel(ignore: [PARTNER_OFFER])\n }\n sale {\n isClosed\n id\n }\n saleArtwork {\n endedAt\n id\n }\n}\n\nfragment ArtworkSidebarCommercialButtons_me_4G3fWC on Me {\n partnerOffersConnection(artworkID: \"josef-albers-homage-to-the-square-85\", first: 1) {\n edges {\n node {\n endAt\n internalID\n isAvailable\n note\n priceWithDiscount {\n display\n }\n id\n }\n }\n }\n}\n\nfragment ArtworkSidebarEditionSets_artwork on Artwork {\n isInquireable\n isOfferable\n isAcquireable\n editionSets {\n id\n internalID\n isOfferable\n isAcquireable\n saleMessage\n dimensions {\n cm\n in\n }\n ...ArtworkSidebarSizeInfo_piece\n }\n}\n\nfragment ArtworkSidebarSizeInfo_piece on Sellable {\n __isSellable: __typename\n dimensions {\n in\n cm\n }\n editionOf\n}\n" } }; })(); diff --git a/src/__generated__/ArtworkSidebarCommercialButtons_artwork.graphql.ts b/src/__generated__/ArtworkSidebarCommercialButtons_artwork.graphql.ts index 90a520374c9..4ff313b6ecd 100644 --- a/src/__generated__/ArtworkSidebarCommercialButtons_artwork.graphql.ts +++ b/src/__generated__/ArtworkSidebarCommercialButtons_artwork.graphql.ts @@ -1,5 +1,5 @@ /** - * @generated SignedSource<<8699d0891b292dfba7484484ce76cf01>> + * @generated SignedSource<<1a2a3da8b44cc385b2d6fcc80a12534b>> * @lightSyntaxTransform * @nogrep */ @@ -54,6 +54,12 @@ export type ArtworkSidebarCommercialButtons_artwork$data = { } | null | undefined; } | null | undefined; readonly priceListedDisplay: string | null | undefined; + readonly sale: { + readonly isClosed: boolean | null | undefined; + } | null | undefined; + readonly saleArtwork: { + readonly endedAt: string | null | undefined; + } | null | undefined; readonly saleMessage: string | null | undefined; readonly slug: string; readonly " $fragmentSpreads": FragmentRefs<"ArtworkSidebarEditionSets_artwork">; @@ -346,6 +352,42 @@ return { } ], "storageKey": null + }, + { + "alias": null, + "args": null, + "concreteType": "Sale", + "kind": "LinkedField", + "name": "sale", + "plural": false, + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "isClosed", + "storageKey": null + } + ], + "storageKey": null + }, + { + "alias": null, + "args": null, + "concreteType": "SaleArtwork", + "kind": "LinkedField", + "name": "saleArtwork", + "plural": false, + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "endedAt", + "storageKey": null + } + ], + "storageKey": null } ], "type": "Artwork", @@ -353,6 +395,6 @@ return { }; })(); -(node as any).hash = "2f0076dcb4ef9a7117fa8806021078f7"; +(node as any).hash = "b74718e50a6ab1115f9821c79f26b0fe"; export default node; diff --git a/src/__generated__/ArtworkSidebarQuery.graphql.ts b/src/__generated__/ArtworkSidebarQuery.graphql.ts index 672f2fc098a..37170942f3d 100644 --- a/src/__generated__/ArtworkSidebarQuery.graphql.ts +++ b/src/__generated__/ArtworkSidebarQuery.graphql.ts @@ -1,5 +1,5 @@ /** - * @generated SignedSource<<84aad9cad94040041a0f04449a30c726>> + * @generated SignedSource<<314374759076e0af3c852844e3e49542>> * @lightSyntaxTransform * @nogrep */ @@ -179,14 +179,14 @@ v22 = { "alias": null, "args": null, "kind": "ScalarField", - "name": "displayText", + "name": "endedAt", "storageKey": null }, v23 = { "alias": null, "args": null, "kind": "ScalarField", - "name": "endedAt", + "name": "displayText", "storageKey": null }, v24 = { @@ -639,58 +639,6 @@ return { ], "storageKey": null }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "priceIncludesTaxDisplay", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "shippingOrigin", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "shippingInfo", - "storageKey": null - }, - { - "alias": null, - "args": null, - "concreteType": "TaxInfo", - "kind": "LinkedField", - "name": "taxInfo", - "plural": false, - "selections": [ - (v22/*: any*/), - { - "alias": null, - "args": null, - "concreteType": "TaxMoreInfo", - "kind": "LinkedField", - "name": "moreInfo", - "plural": false, - "selections": [ - (v22/*: any*/), - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "url", - "storageKey": null - } - ], - "storageKey": null - } - ], - "storageKey": null - }, { "alias": null, "args": null, @@ -699,9 +647,6 @@ return { "name": "sale", "plural": false, "selections": [ - (v4/*: any*/), - (v15/*: any*/), - (v5/*: any*/), { "alias": null, "args": null, @@ -709,6 +654,9 @@ return { "name": "isClosed", "storageKey": null }, + (v5/*: any*/), + (v4/*: any*/), + (v15/*: any*/), { "alias": null, "args": null, @@ -805,13 +753,6 @@ return { ], "storageKey": null }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "isInAuction", - "storageKey": null - }, { "alias": null, "args": null, @@ -820,6 +761,8 @@ return { "name": "saleArtwork", "plural": false, "selections": [ + (v22/*: any*/), + (v5/*: any*/), { "alias": null, "args": null, @@ -827,7 +770,6 @@ return { "name": "estimate", "storageKey": null }, - (v5/*: any*/), (v17/*: any*/), { "alias": null, @@ -878,7 +820,6 @@ return { ], "storageKey": null }, - (v23/*: any*/), { "alias": null, "args": null, @@ -899,6 +840,65 @@ return { ], "storageKey": null }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "priceIncludesTaxDisplay", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "shippingOrigin", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "shippingInfo", + "storageKey": null + }, + { + "alias": null, + "args": null, + "concreteType": "TaxInfo", + "kind": "LinkedField", + "name": "taxInfo", + "plural": false, + "selections": [ + (v23/*: any*/), + { + "alias": null, + "args": null, + "concreteType": "TaxMoreInfo", + "kind": "LinkedField", + "name": "moreInfo", + "plural": false, + "selections": [ + (v23/*: any*/), + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "url", + "storageKey": null + } + ], + "storageKey": null + } + ], + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "isInAuction", + "storageKey": null + }, { "alias": "sale_artwork", "args": null, @@ -928,7 +928,7 @@ return { "name": "reserveStatus", "storageKey": null }, - (v23/*: any*/), + (v22/*: any*/), { "alias": "current_bid", "args": null, @@ -1227,12 +1227,12 @@ return { ] }, "params": { - "cacheID": "4d69a60589b8df91d2fb60755b3ed94c", + "cacheID": "c4ac95555bb038ce91a3d062a6240a20", "id": null, "metadata": {}, "name": "ArtworkSidebarQuery", "operationKind": "query", - "text": "query ArtworkSidebarQuery(\n $artworkID: String!\n) {\n artwork(id: $artworkID) {\n ...ArtworkSidebar_artwork\n id\n }\n me {\n ...ArtworkSidebar_me_2R6IMa\n id\n }\n}\n\nfragment ArtworkDetailsMediumModal_artwork on Artwork {\n mediumType {\n name\n longDescription\n }\n}\n\nfragment ArtworkSidebarArtists_artwork on Artwork {\n culturalMaker\n artists(shallow: true) {\n slug\n name\n id\n }\n}\n\nfragment ArtworkSidebarArtsyGuarantee_artwork on Artwork {\n isUnlisted\n}\n\nfragment ArtworkSidebarArtworkTitle_artwork on Artwork {\n date\n title\n}\n\nfragment ArtworkSidebarAuctionInfoPolling_artwork on Artwork {\n internalID\n sale {\n isClosed\n id\n }\n saleArtwork {\n currentBid {\n display\n }\n id\n }\n ...ArtworkSidebarCurrentBidInfo_artwork\n ...ArtworkSidebarBidAction_artwork\n}\n\nfragment ArtworkSidebarAuctionInfoPolling_me on Me {\n ...ArtworkSidebarBidAction_me\n}\n\nfragment ArtworkSidebarAuctionTimer_artwork on Artwork {\n internalID\n sale {\n cascadingEndTimeIntervalMinutes\n isClosed\n ...AuctionTimer_sale\n startAt\n id\n }\n saleArtwork {\n ...LotTimer_saleArtwork\n endAt\n endedAt\n id\n }\n}\n\nfragment ArtworkSidebarAuthenticityCertificate_artwork on Artwork {\n hasCertificateOfAuthenticity\n isBiddable\n}\n\nfragment ArtworkSidebarBidAction_artwork on Artwork {\n myLotStanding(live: true) {\n most_recent_bid: mostRecentBid {\n max_bid: maxBid {\n cents\n }\n id\n }\n }\n slug\n internalID\n sale {\n slug\n registrationStatus {\n qualified_for_bidding: qualifiedForBidding\n id\n }\n is_preview: isPreview\n is_open: isOpen\n is_live_open: isLiveOpen\n is_closed: isClosed\n is_registration_closed: isRegistrationClosed\n requireIdentityVerification\n id\n }\n sale_artwork: saleArtwork {\n increments {\n cents\n display\n }\n endedAt\n id\n }\n collectorSignals {\n auction {\n bidCount\n lotWatcherCount\n }\n }\n}\n\nfragment ArtworkSidebarBidAction_me on Me {\n isIdentityVerified\n pendingIdentityVerification {\n internalID\n id\n }\n}\n\nfragment ArtworkSidebarBiddingClosedMessage_artwork on Artwork {\n isEligibleToCreateAlert\n artists(shallow: true) {\n internalID\n id\n }\n attributionClass {\n internalID\n id\n }\n mediumType {\n filterGene {\n slug\n id\n }\n }\n}\n\nfragment ArtworkSidebarClassification_artwork on Artwork {\n attributionClass {\n shortArrayDescription\n id\n }\n}\n\nfragment ArtworkSidebarCollectorSignal_artwork on Artwork {\n collectorSignals {\n primaryLabel(ignore: [PARTNER_OFFER])\n runningShow {\n name\n href\n startAt\n endAt\n id\n }\n }\n}\n\nfragment ArtworkSidebarCommercialButtons_artwork on Artwork {\n ...ArtworkSidebarEditionSets_artwork\n isEligibleToCreateAlert\n artists(shallow: true) {\n internalID\n id\n }\n attributionClass {\n internalID\n id\n }\n internalID\n slug\n saleMessage\n isInquireable\n isAcquireable\n isOfferable\n isSold\n priceListedDisplay\n listPrice {\n __typename\n ... on PriceRange {\n display\n }\n ... on Money {\n display\n }\n }\n mediumType {\n filterGene {\n slug\n id\n }\n }\n editionSets {\n id\n internalID\n isAcquireable\n isOfferable\n saleMessage\n dimensions {\n in\n cm\n }\n }\n partner {\n profile {\n icon {\n url(version: \"square140\")\n }\n id\n }\n id\n }\n collectorSignals {\n primaryLabel(ignore: [PARTNER_OFFER])\n }\n}\n\nfragment ArtworkSidebarCommercialButtons_me_2R6IMa on Me {\n partnerOffersConnection(artworkID: $artworkID, first: 1) {\n edges {\n node {\n endAt\n internalID\n isAvailable\n note\n priceWithDiscount {\n display\n }\n id\n }\n }\n }\n}\n\nfragment ArtworkSidebarCreateAlert_artwork on Artwork {\n isEligibleToCreateAlert\n}\n\nfragment ArtworkSidebarCurrentBidInfo_artwork on Artwork {\n sale {\n is_closed: isClosed\n is_live_open: isLiveOpen\n internalID\n is_with_buyers_premium: isWithBuyersPremium\n id\n }\n sale_artwork: saleArtwork {\n is_with_reserve: isWithReserve\n reserve_message: reserveMessage\n reserve_status: reserveStatus\n endedAt\n current_bid: currentBid {\n display\n }\n counts {\n bidder_positions: bidderPositions\n }\n id\n }\n myLotStanding(live: true) {\n active_bid: activeBid {\n is_winning: isWinning\n id\n }\n most_recent_bid: mostRecentBid {\n max_bid: maxBid {\n display\n }\n id\n }\n }\n collectorSignals {\n auction {\n lotWatcherCount\n }\n }\n ...ArtworkSidebarBiddingClosedMessage_artwork\n}\n\nfragment ArtworkSidebarDetails_artwork on Artwork {\n isUnlisted\n medium\n dimensions {\n in\n cm\n }\n framed {\n details\n }\n editionOf\n isEdition\n editionSets {\n internalID\n id\n }\n ...ArtworkSidebarClassification_artwork\n ...ArtworkSidebarAuthenticityCertificate_artwork\n ...ArtworkSidebarCollectorSignal_artwork\n}\n\nfragment ArtworkSidebarEditionSets_artwork on Artwork {\n isInquireable\n isOfferable\n isAcquireable\n editionSets {\n id\n internalID\n isOfferable\n isAcquireable\n saleMessage\n dimensions {\n cm\n in\n }\n ...ArtworkSidebarSizeInfo_piece\n }\n}\n\nfragment ArtworkSidebarEstimatedValue_artwork on Artwork {\n saleArtwork {\n estimate\n id\n }\n sale {\n isClosed\n id\n }\n}\n\nfragment ArtworkSidebarLinks_artwork on Artwork {\n isInAuction\n isUnlisted\n sale {\n isClosed\n id\n }\n}\n\nfragment ArtworkSidebarPartnerInfo_artwork on Artwork {\n internalID\n slug\n isInquireable\n isUnlisted\n partner {\n name\n href\n cities\n isInquireable\n id\n }\n sale {\n name\n href\n id\n }\n collectorSignals {\n primaryLabel(ignore: [PARTNER_OFFER])\n }\n}\n\nfragment ArtworkSidebarPrivateArtwork_artwork on Artwork {\n partner {\n name\n slug\n profile {\n isPubliclyVisible\n id\n }\n id\n }\n isUnlisted\n additionalInformation\n}\n\nfragment ArtworkSidebarShippingInformation_artwork on Artwork {\n isUnlisted\n priceIncludesTaxDisplay\n shippingOrigin\n shippingInfo\n taxInfo {\n displayText\n moreInfo {\n displayText\n url\n }\n }\n}\n\nfragment ArtworkSidebarSizeInfo_piece on Sellable {\n __isSellable: __typename\n dimensions {\n in\n cm\n }\n editionOf\n}\n\nfragment ArtworkSidebar_artwork on Artwork {\n ...ArtworkSidebarArtworkTitle_artwork\n ...ArtworkSidebarArtists_artwork\n ...ArtworkSidebarDetails_artwork\n ...ArtworkSidebarCommercialButtons_artwork\n ...ArtworkSidebarShippingInformation_artwork\n ...ArtworkSidebarPartnerInfo_artwork\n ...ArtworkSidebarCreateAlert_artwork\n ...ArtworkSidebarLinks_artwork\n ...ArtworkSidebarEstimatedValue_artwork\n ...ArtworkSidebarBiddingClosedMessage_artwork\n ...ArtworkSidebarAuctionTimer_artwork\n ...ArtworkSidebarAuctionInfoPolling_artwork\n ...ArtworkSidebarPrivateArtwork_artwork\n ...ArtworkSidebarArtsyGuarantee_artwork\n ...PrivateArtworkAdditionalInfo_artwork\n slug\n isSold\n isAcquireable\n isOfferable\n isInAuction\n saleMessage\n isBiddable\n isEligibleForArtsyGuarantee\n isEligibleToCreateAlert\n partner {\n internalID\n id\n }\n sale {\n endAt\n startAt\n isClosed\n isAuction\n id\n }\n saleArtwork {\n lotID\n lotLabel\n extendedBiddingEndAt\n endAt\n endedAt\n id\n }\n artists(shallow: true) {\n internalID\n id\n }\n isUnlisted\n}\n\nfragment ArtworkSidebar_me_2R6IMa on Me {\n ...ArtworkSidebarAuctionInfoPolling_me\n ...ArtworkSidebarCommercialButtons_me_2R6IMa\n}\n\nfragment AuctionTimer_sale on Sale {\n liveStartAt\n endAt\n}\n\nfragment LotTimer_saleArtwork on SaleArtwork {\n endAt\n formattedStartDateTime\n extendedBiddingEndAt\n lotID\n sale {\n startAt\n extendedBiddingPeriodMinutes\n extendedBiddingIntervalMinutes\n internalID\n id\n }\n}\n\nfragment PrivateArtworkAdditionalInfo_artwork on Artwork {\n category\n series\n publisher\n manufacturer\n image_rights: imageRights\n canRequestLotConditionsReport\n internalID\n isUnlisted\n framed {\n label\n details\n }\n signatureInfo {\n label\n details\n }\n conditionDescription {\n label\n details\n }\n certificateOfAuthenticity {\n label\n details\n }\n mediumType {\n __typename\n }\n dimensions {\n in\n cm\n }\n attributionClass {\n name\n id\n }\n medium\n ...ArtworkDetailsMediumModal_artwork\n}\n" + "text": "query ArtworkSidebarQuery(\n $artworkID: String!\n) {\n artwork(id: $artworkID) {\n ...ArtworkSidebar_artwork\n id\n }\n me {\n ...ArtworkSidebar_me_2R6IMa\n id\n }\n}\n\nfragment ArtworkDetailsMediumModal_artwork on Artwork {\n mediumType {\n name\n longDescription\n }\n}\n\nfragment ArtworkSidebarArtists_artwork on Artwork {\n culturalMaker\n artists(shallow: true) {\n slug\n name\n id\n }\n}\n\nfragment ArtworkSidebarArtsyGuarantee_artwork on Artwork {\n isUnlisted\n}\n\nfragment ArtworkSidebarArtworkTitle_artwork on Artwork {\n date\n title\n}\n\nfragment ArtworkSidebarAuctionInfoPolling_artwork on Artwork {\n internalID\n sale {\n isClosed\n id\n }\n saleArtwork {\n currentBid {\n display\n }\n id\n }\n ...ArtworkSidebarCurrentBidInfo_artwork\n ...ArtworkSidebarBidAction_artwork\n}\n\nfragment ArtworkSidebarAuctionInfoPolling_me on Me {\n ...ArtworkSidebarBidAction_me\n}\n\nfragment ArtworkSidebarAuctionTimer_artwork on Artwork {\n internalID\n sale {\n cascadingEndTimeIntervalMinutes\n isClosed\n ...AuctionTimer_sale\n startAt\n id\n }\n saleArtwork {\n ...LotTimer_saleArtwork\n endAt\n endedAt\n id\n }\n}\n\nfragment ArtworkSidebarAuthenticityCertificate_artwork on Artwork {\n hasCertificateOfAuthenticity\n isBiddable\n}\n\nfragment ArtworkSidebarBidAction_artwork on Artwork {\n myLotStanding(live: true) {\n most_recent_bid: mostRecentBid {\n max_bid: maxBid {\n cents\n }\n id\n }\n }\n slug\n internalID\n sale {\n slug\n registrationStatus {\n qualified_for_bidding: qualifiedForBidding\n id\n }\n is_preview: isPreview\n is_open: isOpen\n is_live_open: isLiveOpen\n is_closed: isClosed\n is_registration_closed: isRegistrationClosed\n requireIdentityVerification\n id\n }\n sale_artwork: saleArtwork {\n increments {\n cents\n display\n }\n endedAt\n id\n }\n collectorSignals {\n auction {\n bidCount\n lotWatcherCount\n }\n }\n}\n\nfragment ArtworkSidebarBidAction_me on Me {\n isIdentityVerified\n pendingIdentityVerification {\n internalID\n id\n }\n}\n\nfragment ArtworkSidebarBiddingClosedMessage_artwork on Artwork {\n isEligibleToCreateAlert\n artists(shallow: true) {\n internalID\n id\n }\n attributionClass {\n internalID\n id\n }\n mediumType {\n filterGene {\n slug\n id\n }\n }\n}\n\nfragment ArtworkSidebarClassification_artwork on Artwork {\n attributionClass {\n shortArrayDescription\n id\n }\n}\n\nfragment ArtworkSidebarCollectorSignal_artwork on Artwork {\n collectorSignals {\n primaryLabel(ignore: [PARTNER_OFFER])\n runningShow {\n name\n href\n startAt\n endAt\n id\n }\n }\n}\n\nfragment ArtworkSidebarCommercialButtons_artwork on Artwork {\n ...ArtworkSidebarEditionSets_artwork\n isEligibleToCreateAlert\n artists(shallow: true) {\n internalID\n id\n }\n attributionClass {\n internalID\n id\n }\n internalID\n slug\n saleMessage\n isInquireable\n isAcquireable\n isOfferable\n isSold\n priceListedDisplay\n listPrice {\n __typename\n ... on PriceRange {\n display\n }\n ... on Money {\n display\n }\n }\n mediumType {\n filterGene {\n slug\n id\n }\n }\n editionSets {\n id\n internalID\n isAcquireable\n isOfferable\n saleMessage\n dimensions {\n in\n cm\n }\n }\n partner {\n profile {\n icon {\n url(version: \"square140\")\n }\n id\n }\n id\n }\n collectorSignals {\n primaryLabel(ignore: [PARTNER_OFFER])\n }\n sale {\n isClosed\n id\n }\n saleArtwork {\n endedAt\n id\n }\n}\n\nfragment ArtworkSidebarCommercialButtons_me_2R6IMa on Me {\n partnerOffersConnection(artworkID: $artworkID, first: 1) {\n edges {\n node {\n endAt\n internalID\n isAvailable\n note\n priceWithDiscount {\n display\n }\n id\n }\n }\n }\n}\n\nfragment ArtworkSidebarCreateAlert_artwork on Artwork {\n isEligibleToCreateAlert\n}\n\nfragment ArtworkSidebarCurrentBidInfo_artwork on Artwork {\n sale {\n is_closed: isClosed\n is_live_open: isLiveOpen\n internalID\n is_with_buyers_premium: isWithBuyersPremium\n id\n }\n sale_artwork: saleArtwork {\n is_with_reserve: isWithReserve\n reserve_message: reserveMessage\n reserve_status: reserveStatus\n endedAt\n current_bid: currentBid {\n display\n }\n counts {\n bidder_positions: bidderPositions\n }\n id\n }\n myLotStanding(live: true) {\n active_bid: activeBid {\n is_winning: isWinning\n id\n }\n most_recent_bid: mostRecentBid {\n max_bid: maxBid {\n display\n }\n id\n }\n }\n collectorSignals {\n auction {\n lotWatcherCount\n }\n }\n ...ArtworkSidebarBiddingClosedMessage_artwork\n}\n\nfragment ArtworkSidebarDetails_artwork on Artwork {\n isUnlisted\n medium\n dimensions {\n in\n cm\n }\n framed {\n details\n }\n editionOf\n isEdition\n editionSets {\n internalID\n id\n }\n ...ArtworkSidebarClassification_artwork\n ...ArtworkSidebarAuthenticityCertificate_artwork\n ...ArtworkSidebarCollectorSignal_artwork\n}\n\nfragment ArtworkSidebarEditionSets_artwork on Artwork {\n isInquireable\n isOfferable\n isAcquireable\n editionSets {\n id\n internalID\n isOfferable\n isAcquireable\n saleMessage\n dimensions {\n cm\n in\n }\n ...ArtworkSidebarSizeInfo_piece\n }\n}\n\nfragment ArtworkSidebarEstimatedValue_artwork on Artwork {\n saleArtwork {\n estimate\n id\n }\n sale {\n isClosed\n id\n }\n}\n\nfragment ArtworkSidebarLinks_artwork on Artwork {\n isInAuction\n isUnlisted\n sale {\n isClosed\n id\n }\n}\n\nfragment ArtworkSidebarPartnerInfo_artwork on Artwork {\n internalID\n slug\n isInquireable\n isUnlisted\n partner {\n name\n href\n cities\n isInquireable\n id\n }\n sale {\n name\n href\n id\n }\n collectorSignals {\n primaryLabel(ignore: [PARTNER_OFFER])\n }\n}\n\nfragment ArtworkSidebarPrivateArtwork_artwork on Artwork {\n partner {\n name\n slug\n profile {\n isPubliclyVisible\n id\n }\n id\n }\n isUnlisted\n additionalInformation\n}\n\nfragment ArtworkSidebarShippingInformation_artwork on Artwork {\n isUnlisted\n priceIncludesTaxDisplay\n shippingOrigin\n shippingInfo\n taxInfo {\n displayText\n moreInfo {\n displayText\n url\n }\n }\n}\n\nfragment ArtworkSidebarSizeInfo_piece on Sellable {\n __isSellable: __typename\n dimensions {\n in\n cm\n }\n editionOf\n}\n\nfragment ArtworkSidebar_artwork on Artwork {\n ...ArtworkSidebarArtworkTitle_artwork\n ...ArtworkSidebarArtists_artwork\n ...ArtworkSidebarDetails_artwork\n ...ArtworkSidebarCommercialButtons_artwork\n ...ArtworkSidebarShippingInformation_artwork\n ...ArtworkSidebarPartnerInfo_artwork\n ...ArtworkSidebarCreateAlert_artwork\n ...ArtworkSidebarLinks_artwork\n ...ArtworkSidebarEstimatedValue_artwork\n ...ArtworkSidebarBiddingClosedMessage_artwork\n ...ArtworkSidebarAuctionTimer_artwork\n ...ArtworkSidebarAuctionInfoPolling_artwork\n ...ArtworkSidebarPrivateArtwork_artwork\n ...ArtworkSidebarArtsyGuarantee_artwork\n ...PrivateArtworkAdditionalInfo_artwork\n slug\n isSold\n isAcquireable\n isOfferable\n isInAuction\n saleMessage\n isBiddable\n isEligibleForArtsyGuarantee\n isEligibleToCreateAlert\n partner {\n internalID\n id\n }\n sale {\n endAt\n startAt\n isClosed\n isAuction\n id\n }\n saleArtwork {\n lotID\n lotLabel\n extendedBiddingEndAt\n endAt\n endedAt\n id\n }\n artists(shallow: true) {\n internalID\n id\n }\n isUnlisted\n}\n\nfragment ArtworkSidebar_me_2R6IMa on Me {\n ...ArtworkSidebarAuctionInfoPolling_me\n ...ArtworkSidebarCommercialButtons_me_2R6IMa\n}\n\nfragment AuctionTimer_sale on Sale {\n liveStartAt\n endAt\n}\n\nfragment LotTimer_saleArtwork on SaleArtwork {\n endAt\n formattedStartDateTime\n extendedBiddingEndAt\n lotID\n sale {\n startAt\n extendedBiddingPeriodMinutes\n extendedBiddingIntervalMinutes\n internalID\n id\n }\n}\n\nfragment PrivateArtworkAdditionalInfo_artwork on Artwork {\n category\n series\n publisher\n manufacturer\n image_rights: imageRights\n canRequestLotConditionsReport\n internalID\n isUnlisted\n framed {\n label\n details\n }\n signatureInfo {\n label\n details\n }\n conditionDescription {\n label\n details\n }\n certificateOfAuthenticity {\n label\n details\n }\n mediumType {\n __typename\n }\n dimensions {\n in\n cm\n }\n attributionClass {\n name\n id\n }\n medium\n ...ArtworkDetailsMediumModal_artwork\n}\n" } }; })(); diff --git a/src/__generated__/ArtworkSidebar_Test_Query.graphql.ts b/src/__generated__/ArtworkSidebar_Test_Query.graphql.ts index 4712ffb4cad..7e84cac9519 100644 --- a/src/__generated__/ArtworkSidebar_Test_Query.graphql.ts +++ b/src/__generated__/ArtworkSidebar_Test_Query.graphql.ts @@ -1,5 +1,5 @@ /** - * @generated SignedSource<<8c3749667e5f9bd0ddddba734a2ca220>> + * @generated SignedSource<> * @lightSyntaxTransform * @nogrep */ @@ -162,14 +162,14 @@ v20 = { "alias": null, "args": null, "kind": "ScalarField", - "name": "displayText", + "name": "endedAt", "storageKey": null }, v21 = { "alias": null, "args": null, "kind": "ScalarField", - "name": "endedAt", + "name": "displayText", "storageKey": null }, v22 = { @@ -694,58 +694,6 @@ return { ], "storageKey": null }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "priceIncludesTaxDisplay", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "shippingOrigin", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "shippingInfo", - "storageKey": null - }, - { - "alias": null, - "args": null, - "concreteType": "TaxInfo", - "kind": "LinkedField", - "name": "taxInfo", - "plural": false, - "selections": [ - (v20/*: any*/), - { - "alias": null, - "args": null, - "concreteType": "TaxMoreInfo", - "kind": "LinkedField", - "name": "moreInfo", - "plural": false, - "selections": [ - (v20/*: any*/), - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "url", - "storageKey": null - } - ], - "storageKey": null - } - ], - "storageKey": null - }, { "alias": null, "args": null, @@ -754,9 +702,6 @@ return { "name": "sale", "plural": false, "selections": [ - (v2/*: any*/), - (v13/*: any*/), - (v3/*: any*/), { "alias": null, "args": null, @@ -764,6 +709,9 @@ return { "name": "isClosed", "storageKey": null }, + (v3/*: any*/), + (v2/*: any*/), + (v13/*: any*/), { "alias": null, "args": null, @@ -860,13 +808,6 @@ return { ], "storageKey": null }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "isInAuction", - "storageKey": null - }, { "alias": null, "args": null, @@ -875,6 +816,8 @@ return { "name": "saleArtwork", "plural": false, "selections": [ + (v20/*: any*/), + (v3/*: any*/), { "alias": null, "args": null, @@ -882,7 +825,6 @@ return { "name": "estimate", "storageKey": null }, - (v3/*: any*/), (v15/*: any*/), { "alias": null, @@ -933,7 +875,6 @@ return { ], "storageKey": null }, - (v21/*: any*/), { "alias": null, "args": null, @@ -954,6 +895,65 @@ return { ], "storageKey": null }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "priceIncludesTaxDisplay", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "shippingOrigin", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "shippingInfo", + "storageKey": null + }, + { + "alias": null, + "args": null, + "concreteType": "TaxInfo", + "kind": "LinkedField", + "name": "taxInfo", + "plural": false, + "selections": [ + (v21/*: any*/), + { + "alias": null, + "args": null, + "concreteType": "TaxMoreInfo", + "kind": "LinkedField", + "name": "moreInfo", + "plural": false, + "selections": [ + (v21/*: any*/), + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "url", + "storageKey": null + } + ], + "storageKey": null + } + ], + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "isInAuction", + "storageKey": null + }, { "alias": "sale_artwork", "args": null, @@ -983,7 +983,7 @@ return { "name": "reserveStatus", "storageKey": null }, - (v21/*: any*/), + (v20/*: any*/), { "alias": "current_bid", "args": null, @@ -1183,7 +1183,7 @@ return { ] }, "params": { - "cacheID": "d6f237c7fd5ded24749dfd1dc997b9f3", + "cacheID": "3ed6fe300ffa7593c9d889d7b675f6f8", "id": null, "metadata": { "relayTestingSelectionTypeInfo": { @@ -1473,7 +1473,7 @@ return { }, "name": "ArtworkSidebar_Test_Query", "operationKind": "query", - "text": "query ArtworkSidebar_Test_Query {\n artwork(id: \"josef-albers-homage-to-the-square-85\") {\n ...ArtworkSidebar_artwork\n id\n }\n}\n\nfragment ArtworkDetailsMediumModal_artwork on Artwork {\n mediumType {\n name\n longDescription\n }\n}\n\nfragment ArtworkSidebarArtists_artwork on Artwork {\n culturalMaker\n artists(shallow: true) {\n slug\n name\n id\n }\n}\n\nfragment ArtworkSidebarArtsyGuarantee_artwork on Artwork {\n isUnlisted\n}\n\nfragment ArtworkSidebarArtworkTitle_artwork on Artwork {\n date\n title\n}\n\nfragment ArtworkSidebarAuctionInfoPolling_artwork on Artwork {\n internalID\n sale {\n isClosed\n id\n }\n saleArtwork {\n currentBid {\n display\n }\n id\n }\n ...ArtworkSidebarCurrentBidInfo_artwork\n ...ArtworkSidebarBidAction_artwork\n}\n\nfragment ArtworkSidebarAuctionTimer_artwork on Artwork {\n internalID\n sale {\n cascadingEndTimeIntervalMinutes\n isClosed\n ...AuctionTimer_sale\n startAt\n id\n }\n saleArtwork {\n ...LotTimer_saleArtwork\n endAt\n endedAt\n id\n }\n}\n\nfragment ArtworkSidebarAuthenticityCertificate_artwork on Artwork {\n hasCertificateOfAuthenticity\n isBiddable\n}\n\nfragment ArtworkSidebarBidAction_artwork on Artwork {\n myLotStanding(live: true) {\n most_recent_bid: mostRecentBid {\n max_bid: maxBid {\n cents\n }\n id\n }\n }\n slug\n internalID\n sale {\n slug\n registrationStatus {\n qualified_for_bidding: qualifiedForBidding\n id\n }\n is_preview: isPreview\n is_open: isOpen\n is_live_open: isLiveOpen\n is_closed: isClosed\n is_registration_closed: isRegistrationClosed\n requireIdentityVerification\n id\n }\n sale_artwork: saleArtwork {\n increments {\n cents\n display\n }\n endedAt\n id\n }\n collectorSignals {\n auction {\n bidCount\n lotWatcherCount\n }\n }\n}\n\nfragment ArtworkSidebarBiddingClosedMessage_artwork on Artwork {\n isEligibleToCreateAlert\n artists(shallow: true) {\n internalID\n id\n }\n attributionClass {\n internalID\n id\n }\n mediumType {\n filterGene {\n slug\n id\n }\n }\n}\n\nfragment ArtworkSidebarClassification_artwork on Artwork {\n attributionClass {\n shortArrayDescription\n id\n }\n}\n\nfragment ArtworkSidebarCollectorSignal_artwork on Artwork {\n collectorSignals {\n primaryLabel(ignore: [PARTNER_OFFER])\n runningShow {\n name\n href\n startAt\n endAt\n id\n }\n }\n}\n\nfragment ArtworkSidebarCommercialButtons_artwork on Artwork {\n ...ArtworkSidebarEditionSets_artwork\n isEligibleToCreateAlert\n artists(shallow: true) {\n internalID\n id\n }\n attributionClass {\n internalID\n id\n }\n internalID\n slug\n saleMessage\n isInquireable\n isAcquireable\n isOfferable\n isSold\n priceListedDisplay\n listPrice {\n __typename\n ... on PriceRange {\n display\n }\n ... on Money {\n display\n }\n }\n mediumType {\n filterGene {\n slug\n id\n }\n }\n editionSets {\n id\n internalID\n isAcquireable\n isOfferable\n saleMessage\n dimensions {\n in\n cm\n }\n }\n partner {\n profile {\n icon {\n url(version: \"square140\")\n }\n id\n }\n id\n }\n collectorSignals {\n primaryLabel(ignore: [PARTNER_OFFER])\n }\n}\n\nfragment ArtworkSidebarCreateAlert_artwork on Artwork {\n isEligibleToCreateAlert\n}\n\nfragment ArtworkSidebarCurrentBidInfo_artwork on Artwork {\n sale {\n is_closed: isClosed\n is_live_open: isLiveOpen\n internalID\n is_with_buyers_premium: isWithBuyersPremium\n id\n }\n sale_artwork: saleArtwork {\n is_with_reserve: isWithReserve\n reserve_message: reserveMessage\n reserve_status: reserveStatus\n endedAt\n current_bid: currentBid {\n display\n }\n counts {\n bidder_positions: bidderPositions\n }\n id\n }\n myLotStanding(live: true) {\n active_bid: activeBid {\n is_winning: isWinning\n id\n }\n most_recent_bid: mostRecentBid {\n max_bid: maxBid {\n display\n }\n id\n }\n }\n collectorSignals {\n auction {\n lotWatcherCount\n }\n }\n ...ArtworkSidebarBiddingClosedMessage_artwork\n}\n\nfragment ArtworkSidebarDetails_artwork on Artwork {\n isUnlisted\n medium\n dimensions {\n in\n cm\n }\n framed {\n details\n }\n editionOf\n isEdition\n editionSets {\n internalID\n id\n }\n ...ArtworkSidebarClassification_artwork\n ...ArtworkSidebarAuthenticityCertificate_artwork\n ...ArtworkSidebarCollectorSignal_artwork\n}\n\nfragment ArtworkSidebarEditionSets_artwork on Artwork {\n isInquireable\n isOfferable\n isAcquireable\n editionSets {\n id\n internalID\n isOfferable\n isAcquireable\n saleMessage\n dimensions {\n cm\n in\n }\n ...ArtworkSidebarSizeInfo_piece\n }\n}\n\nfragment ArtworkSidebarEstimatedValue_artwork on Artwork {\n saleArtwork {\n estimate\n id\n }\n sale {\n isClosed\n id\n }\n}\n\nfragment ArtworkSidebarLinks_artwork on Artwork {\n isInAuction\n isUnlisted\n sale {\n isClosed\n id\n }\n}\n\nfragment ArtworkSidebarPartnerInfo_artwork on Artwork {\n internalID\n slug\n isInquireable\n isUnlisted\n partner {\n name\n href\n cities\n isInquireable\n id\n }\n sale {\n name\n href\n id\n }\n collectorSignals {\n primaryLabel(ignore: [PARTNER_OFFER])\n }\n}\n\nfragment ArtworkSidebarPrivateArtwork_artwork on Artwork {\n partner {\n name\n slug\n profile {\n isPubliclyVisible\n id\n }\n id\n }\n isUnlisted\n additionalInformation\n}\n\nfragment ArtworkSidebarShippingInformation_artwork on Artwork {\n isUnlisted\n priceIncludesTaxDisplay\n shippingOrigin\n shippingInfo\n taxInfo {\n displayText\n moreInfo {\n displayText\n url\n }\n }\n}\n\nfragment ArtworkSidebarSizeInfo_piece on Sellable {\n __isSellable: __typename\n dimensions {\n in\n cm\n }\n editionOf\n}\n\nfragment ArtworkSidebar_artwork on Artwork {\n ...ArtworkSidebarArtworkTitle_artwork\n ...ArtworkSidebarArtists_artwork\n ...ArtworkSidebarDetails_artwork\n ...ArtworkSidebarCommercialButtons_artwork\n ...ArtworkSidebarShippingInformation_artwork\n ...ArtworkSidebarPartnerInfo_artwork\n ...ArtworkSidebarCreateAlert_artwork\n ...ArtworkSidebarLinks_artwork\n ...ArtworkSidebarEstimatedValue_artwork\n ...ArtworkSidebarBiddingClosedMessage_artwork\n ...ArtworkSidebarAuctionTimer_artwork\n ...ArtworkSidebarAuctionInfoPolling_artwork\n ...ArtworkSidebarPrivateArtwork_artwork\n ...ArtworkSidebarArtsyGuarantee_artwork\n ...PrivateArtworkAdditionalInfo_artwork\n slug\n isSold\n isAcquireable\n isOfferable\n isInAuction\n saleMessage\n isBiddable\n isEligibleForArtsyGuarantee\n isEligibleToCreateAlert\n partner {\n internalID\n id\n }\n sale {\n endAt\n startAt\n isClosed\n isAuction\n id\n }\n saleArtwork {\n lotID\n lotLabel\n extendedBiddingEndAt\n endAt\n endedAt\n id\n }\n artists(shallow: true) {\n internalID\n id\n }\n isUnlisted\n}\n\nfragment AuctionTimer_sale on Sale {\n liveStartAt\n endAt\n}\n\nfragment LotTimer_saleArtwork on SaleArtwork {\n endAt\n formattedStartDateTime\n extendedBiddingEndAt\n lotID\n sale {\n startAt\n extendedBiddingPeriodMinutes\n extendedBiddingIntervalMinutes\n internalID\n id\n }\n}\n\nfragment PrivateArtworkAdditionalInfo_artwork on Artwork {\n category\n series\n publisher\n manufacturer\n image_rights: imageRights\n canRequestLotConditionsReport\n internalID\n isUnlisted\n framed {\n label\n details\n }\n signatureInfo {\n label\n details\n }\n conditionDescription {\n label\n details\n }\n certificateOfAuthenticity {\n label\n details\n }\n mediumType {\n __typename\n }\n dimensions {\n in\n cm\n }\n attributionClass {\n name\n id\n }\n medium\n ...ArtworkDetailsMediumModal_artwork\n}\n" + "text": "query ArtworkSidebar_Test_Query {\n artwork(id: \"josef-albers-homage-to-the-square-85\") {\n ...ArtworkSidebar_artwork\n id\n }\n}\n\nfragment ArtworkDetailsMediumModal_artwork on Artwork {\n mediumType {\n name\n longDescription\n }\n}\n\nfragment ArtworkSidebarArtists_artwork on Artwork {\n culturalMaker\n artists(shallow: true) {\n slug\n name\n id\n }\n}\n\nfragment ArtworkSidebarArtsyGuarantee_artwork on Artwork {\n isUnlisted\n}\n\nfragment ArtworkSidebarArtworkTitle_artwork on Artwork {\n date\n title\n}\n\nfragment ArtworkSidebarAuctionInfoPolling_artwork on Artwork {\n internalID\n sale {\n isClosed\n id\n }\n saleArtwork {\n currentBid {\n display\n }\n id\n }\n ...ArtworkSidebarCurrentBidInfo_artwork\n ...ArtworkSidebarBidAction_artwork\n}\n\nfragment ArtworkSidebarAuctionTimer_artwork on Artwork {\n internalID\n sale {\n cascadingEndTimeIntervalMinutes\n isClosed\n ...AuctionTimer_sale\n startAt\n id\n }\n saleArtwork {\n ...LotTimer_saleArtwork\n endAt\n endedAt\n id\n }\n}\n\nfragment ArtworkSidebarAuthenticityCertificate_artwork on Artwork {\n hasCertificateOfAuthenticity\n isBiddable\n}\n\nfragment ArtworkSidebarBidAction_artwork on Artwork {\n myLotStanding(live: true) {\n most_recent_bid: mostRecentBid {\n max_bid: maxBid {\n cents\n }\n id\n }\n }\n slug\n internalID\n sale {\n slug\n registrationStatus {\n qualified_for_bidding: qualifiedForBidding\n id\n }\n is_preview: isPreview\n is_open: isOpen\n is_live_open: isLiveOpen\n is_closed: isClosed\n is_registration_closed: isRegistrationClosed\n requireIdentityVerification\n id\n }\n sale_artwork: saleArtwork {\n increments {\n cents\n display\n }\n endedAt\n id\n }\n collectorSignals {\n auction {\n bidCount\n lotWatcherCount\n }\n }\n}\n\nfragment ArtworkSidebarBiddingClosedMessage_artwork on Artwork {\n isEligibleToCreateAlert\n artists(shallow: true) {\n internalID\n id\n }\n attributionClass {\n internalID\n id\n }\n mediumType {\n filterGene {\n slug\n id\n }\n }\n}\n\nfragment ArtworkSidebarClassification_artwork on Artwork {\n attributionClass {\n shortArrayDescription\n id\n }\n}\n\nfragment ArtworkSidebarCollectorSignal_artwork on Artwork {\n collectorSignals {\n primaryLabel(ignore: [PARTNER_OFFER])\n runningShow {\n name\n href\n startAt\n endAt\n id\n }\n }\n}\n\nfragment ArtworkSidebarCommercialButtons_artwork on Artwork {\n ...ArtworkSidebarEditionSets_artwork\n isEligibleToCreateAlert\n artists(shallow: true) {\n internalID\n id\n }\n attributionClass {\n internalID\n id\n }\n internalID\n slug\n saleMessage\n isInquireable\n isAcquireable\n isOfferable\n isSold\n priceListedDisplay\n listPrice {\n __typename\n ... on PriceRange {\n display\n }\n ... on Money {\n display\n }\n }\n mediumType {\n filterGene {\n slug\n id\n }\n }\n editionSets {\n id\n internalID\n isAcquireable\n isOfferable\n saleMessage\n dimensions {\n in\n cm\n }\n }\n partner {\n profile {\n icon {\n url(version: \"square140\")\n }\n id\n }\n id\n }\n collectorSignals {\n primaryLabel(ignore: [PARTNER_OFFER])\n }\n sale {\n isClosed\n id\n }\n saleArtwork {\n endedAt\n id\n }\n}\n\nfragment ArtworkSidebarCreateAlert_artwork on Artwork {\n isEligibleToCreateAlert\n}\n\nfragment ArtworkSidebarCurrentBidInfo_artwork on Artwork {\n sale {\n is_closed: isClosed\n is_live_open: isLiveOpen\n internalID\n is_with_buyers_premium: isWithBuyersPremium\n id\n }\n sale_artwork: saleArtwork {\n is_with_reserve: isWithReserve\n reserve_message: reserveMessage\n reserve_status: reserveStatus\n endedAt\n current_bid: currentBid {\n display\n }\n counts {\n bidder_positions: bidderPositions\n }\n id\n }\n myLotStanding(live: true) {\n active_bid: activeBid {\n is_winning: isWinning\n id\n }\n most_recent_bid: mostRecentBid {\n max_bid: maxBid {\n display\n }\n id\n }\n }\n collectorSignals {\n auction {\n lotWatcherCount\n }\n }\n ...ArtworkSidebarBiddingClosedMessage_artwork\n}\n\nfragment ArtworkSidebarDetails_artwork on Artwork {\n isUnlisted\n medium\n dimensions {\n in\n cm\n }\n framed {\n details\n }\n editionOf\n isEdition\n editionSets {\n internalID\n id\n }\n ...ArtworkSidebarClassification_artwork\n ...ArtworkSidebarAuthenticityCertificate_artwork\n ...ArtworkSidebarCollectorSignal_artwork\n}\n\nfragment ArtworkSidebarEditionSets_artwork on Artwork {\n isInquireable\n isOfferable\n isAcquireable\n editionSets {\n id\n internalID\n isOfferable\n isAcquireable\n saleMessage\n dimensions {\n cm\n in\n }\n ...ArtworkSidebarSizeInfo_piece\n }\n}\n\nfragment ArtworkSidebarEstimatedValue_artwork on Artwork {\n saleArtwork {\n estimate\n id\n }\n sale {\n isClosed\n id\n }\n}\n\nfragment ArtworkSidebarLinks_artwork on Artwork {\n isInAuction\n isUnlisted\n sale {\n isClosed\n id\n }\n}\n\nfragment ArtworkSidebarPartnerInfo_artwork on Artwork {\n internalID\n slug\n isInquireable\n isUnlisted\n partner {\n name\n href\n cities\n isInquireable\n id\n }\n sale {\n name\n href\n id\n }\n collectorSignals {\n primaryLabel(ignore: [PARTNER_OFFER])\n }\n}\n\nfragment ArtworkSidebarPrivateArtwork_artwork on Artwork {\n partner {\n name\n slug\n profile {\n isPubliclyVisible\n id\n }\n id\n }\n isUnlisted\n additionalInformation\n}\n\nfragment ArtworkSidebarShippingInformation_artwork on Artwork {\n isUnlisted\n priceIncludesTaxDisplay\n shippingOrigin\n shippingInfo\n taxInfo {\n displayText\n moreInfo {\n displayText\n url\n }\n }\n}\n\nfragment ArtworkSidebarSizeInfo_piece on Sellable {\n __isSellable: __typename\n dimensions {\n in\n cm\n }\n editionOf\n}\n\nfragment ArtworkSidebar_artwork on Artwork {\n ...ArtworkSidebarArtworkTitle_artwork\n ...ArtworkSidebarArtists_artwork\n ...ArtworkSidebarDetails_artwork\n ...ArtworkSidebarCommercialButtons_artwork\n ...ArtworkSidebarShippingInformation_artwork\n ...ArtworkSidebarPartnerInfo_artwork\n ...ArtworkSidebarCreateAlert_artwork\n ...ArtworkSidebarLinks_artwork\n ...ArtworkSidebarEstimatedValue_artwork\n ...ArtworkSidebarBiddingClosedMessage_artwork\n ...ArtworkSidebarAuctionTimer_artwork\n ...ArtworkSidebarAuctionInfoPolling_artwork\n ...ArtworkSidebarPrivateArtwork_artwork\n ...ArtworkSidebarArtsyGuarantee_artwork\n ...PrivateArtworkAdditionalInfo_artwork\n slug\n isSold\n isAcquireable\n isOfferable\n isInAuction\n saleMessage\n isBiddable\n isEligibleForArtsyGuarantee\n isEligibleToCreateAlert\n partner {\n internalID\n id\n }\n sale {\n endAt\n startAt\n isClosed\n isAuction\n id\n }\n saleArtwork {\n lotID\n lotLabel\n extendedBiddingEndAt\n endAt\n endedAt\n id\n }\n artists(shallow: true) {\n internalID\n id\n }\n isUnlisted\n}\n\nfragment AuctionTimer_sale on Sale {\n liveStartAt\n endAt\n}\n\nfragment LotTimer_saleArtwork on SaleArtwork {\n endAt\n formattedStartDateTime\n extendedBiddingEndAt\n lotID\n sale {\n startAt\n extendedBiddingPeriodMinutes\n extendedBiddingIntervalMinutes\n internalID\n id\n }\n}\n\nfragment PrivateArtworkAdditionalInfo_artwork on Artwork {\n category\n series\n publisher\n manufacturer\n image_rights: imageRights\n canRequestLotConditionsReport\n internalID\n isUnlisted\n framed {\n label\n details\n }\n signatureInfo {\n label\n details\n }\n conditionDescription {\n label\n details\n }\n certificateOfAuthenticity {\n label\n details\n }\n mediumType {\n __typename\n }\n dimensions {\n in\n cm\n }\n attributionClass {\n name\n id\n }\n medium\n ...ArtworkDetailsMediumModal_artwork\n}\n" } }; })(); diff --git a/src/__generated__/artworkRoutes_ArtworkQuery.graphql.ts b/src/__generated__/artworkRoutes_ArtworkQuery.graphql.ts index c477d6a6566..922619baab1 100644 --- a/src/__generated__/artworkRoutes_ArtworkQuery.graphql.ts +++ b/src/__generated__/artworkRoutes_ArtworkQuery.graphql.ts @@ -1,5 +1,5 @@ /** - * @generated SignedSource<> + * @generated SignedSource<> * @lightSyntaxTransform * @nogrep */ @@ -399,16 +399,16 @@ v46 = { "name": "editionOf", "storageKey": null }, -v47 = { +v47 = [ + (v10/*: any*/) +], +v48 = { "alias": null, "args": null, "kind": "ScalarField", "name": "displayText", "storageKey": null }, -v48 = [ - (v10/*: any*/) -], v49 = [ (v4/*: any*/), { @@ -768,7 +768,21 @@ return { "storageKey": null }, (v26/*: any*/), - (v27/*: any*/) + (v27/*: any*/), + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "lotID", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "lotLabel", + "storageKey": null + } ], "storageKey": null }, @@ -902,7 +916,8 @@ return { "storageKey": null }, (v30/*: any*/), - (v28/*: any*/) + (v28/*: any*/), + (v26/*: any*/) ], "storageKey": null }, @@ -1921,52 +1936,6 @@ return { ], "storageKey": null }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "priceIncludesTaxDisplay", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "shippingOrigin", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "shippingInfo", - "storageKey": null - }, - { - "alias": null, - "args": null, - "concreteType": "TaxInfo", - "kind": "LinkedField", - "name": "taxInfo", - "plural": false, - "selections": [ - (v47/*: any*/), - { - "alias": null, - "args": null, - "concreteType": "TaxMoreInfo", - "kind": "LinkedField", - "name": "moreInfo", - "plural": false, - "selections": [ - (v47/*: any*/), - (v13/*: any*/) - ], - "storageKey": null - } - ], - "storageKey": null - }, { "alias": null, "args": null, @@ -1977,7 +1946,6 @@ return { "selections": [ (v16/*: any*/), (v6/*: any*/), - (v26/*: any*/), { "alias": "is_closed", "args": null, @@ -2070,13 +2038,6 @@ return { "name": "formattedStartDateTime", "storageKey": null }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "lotID", - "storageKey": null - }, { "alias": null, "args": null, @@ -2106,14 +2067,53 @@ return { "kind": "LinkedField", "name": "currentBid", "plural": false, - "selections": (v48/*: any*/), + "selections": (v47/*: any*/), "storageKey": null - }, + } + ], + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "priceIncludesTaxDisplay", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "shippingOrigin", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "shippingInfo", + "storageKey": null + }, + { + "alias": null, + "args": null, + "concreteType": "TaxInfo", + "kind": "LinkedField", + "name": "taxInfo", + "plural": false, + "selections": [ + (v48/*: any*/), { "alias": null, "args": null, - "kind": "ScalarField", - "name": "lotLabel", + "concreteType": "TaxMoreInfo", + "kind": "LinkedField", + "name": "moreInfo", + "plural": false, + "selections": [ + (v48/*: any*/), + (v13/*: any*/) + ], "storageKey": null } ], @@ -2156,7 +2156,7 @@ return { "kind": "LinkedField", "name": "currentBid", "plural": false, - "selections": (v48/*: any*/), + "selections": (v47/*: any*/), "storageKey": null }, { @@ -2422,7 +2422,7 @@ return { "kind": "LinkedField", "name": "priceWithDiscount", "plural": false, - "selections": (v48/*: any*/), + "selections": (v47/*: any*/), "storageKey": null } ], @@ -2442,12 +2442,12 @@ return { ] }, "params": { - "cacheID": "0fafc17bda2879c14df594b93154c27a", + "cacheID": "65525fb27cdbc3f53b95bf089986280d", "id": null, "metadata": {}, "name": "artworkRoutes_ArtworkQuery", "operationKind": "query", - "text": "query artworkRoutes_ArtworkQuery(\n $artworkID: String!\n $loadSidebar: Boolean!\n) {\n artworkResult(id: $artworkID) {\n __typename\n ...ArtworkApp_artworkResult_45HfMx\n ... on ArtworkError {\n requestError {\n statusCode\n }\n }\n ... on Node {\n __isNode: __typename\n id\n }\n }\n me {\n ...ArtworkApp_me_3Rs6v7\n id\n }\n}\n\nfragment ArtworkActionsSaveButton_artwork on Artwork {\n id\n internalID\n slug\n title\n date\n artistNames\n preview: image {\n url(version: \"square\")\n }\n isInAuction\n isSavedToAnyList\n sale {\n isAuction\n isClosed\n id\n }\n collectorSignals {\n auction {\n lotWatcherCount\n }\n }\n ...ArtworkActionsWatchLotButton_artwork\n}\n\nfragment ArtworkActionsWatchLotButton_artwork on Artwork {\n sale {\n isLiveOpen\n isRegistrationClosed\n liveStartAt\n registrationStatus {\n qualifiedForBidding\n id\n }\n id\n }\n ...ArtworkAuctionRegistrationPanel_artwork\n}\n\nfragment ArtworkActions_artwork_FOvjt on Artwork {\n ...ArtworkActionsSaveButton_artwork\n ...ArtworkDownloadButton_artwork\n ...ArtworkSharePanel_artwork_FOvjt\n ...ViewInRoom_artwork\n isUnlisted\n slug\n downloadableImageUrl\n isDownloadable\n isHangable\n partner {\n slug\n id\n }\n}\n\nfragment ArtworkApp_artworkResult_45HfMx on ArtworkResult {\n __isArtworkResult: __typename\n __typename\n ...ArtworkApp_artwork_45HfMx\n ...ArtworkErrorApp_artworkError\n}\n\nfragment ArtworkApp_artwork_45HfMx on Artwork {\n ...ArtworkMeta_artwork\n ...ArtworkTopContextBar_artwork\n ...ArtworkImageBrowser_artwork\n ...ArtworkSidebar_artwork @include(if: $loadSidebar)\n ...ArtworkAuctionCreateAlertHeader_artwork\n ...PrivateArtworkDetails_artwork\n ...ArtworkPageBanner_artwork\n attributionClass {\n internalID\n id\n }\n slug\n internalID\n isAcquireable\n isOfferable\n published\n availability\n mediumType {\n filterGene {\n slug\n id\n }\n }\n visibilityLevel\n isUnlisted\n listPrice {\n __typename\n ... on PriceRange {\n display\n }\n ... on Money {\n display\n }\n }\n partner {\n __typename\n id\n }\n isInAuction\n sale {\n internalID\n slug\n extendedBiddingIntervalMinutes\n id\n }\n saleMessage\n artists(shallow: true) {\n id\n internalID\n slug\n }\n}\n\nfragment ArtworkApp_me_3Rs6v7 on Me {\n ...ArtworkSidebar_me_2R6IMa @include(if: $loadSidebar)\n ...ArtworkPageBanner_me_2R6IMa\n}\n\nfragment ArtworkAuctionCreateAlertHeader_artwork on Artwork {\n slug\n internalID\n title\n isEligibleToCreateAlert\n isInAuction\n artistNames\n artists(shallow: true) {\n internalID\n name\n slug\n id\n }\n sale {\n startAt\n isClosed\n id\n }\n saleArtwork {\n extendedBiddingEndAt\n endAt\n endedAt\n id\n }\n attributionClass {\n internalID\n id\n }\n mediumType {\n filterGene {\n slug\n name\n id\n }\n }\n myLotStandingManageAlerts: myLotStanding {\n isHighestBidder\n }\n}\n\nfragment ArtworkAuctionRegistrationPanel_artwork on Artwork {\n sale {\n slug\n registrationEndsAt\n isRegistrationClosed\n id\n }\n}\n\nfragment ArtworkChatBubble_artwork on Artwork {\n isAcquireable\n isInquireable\n isOfferable\n isInAuction\n listPrice {\n __typename\n ... on Money {\n currencyCode\n major\n }\n ... on PriceRange {\n maxPrice {\n currencyCode\n major\n }\n }\n }\n saleArtwork {\n currency\n openingBid {\n cents\n }\n id\n }\n}\n\nfragment ArtworkDetailsAdditionalInfo_artwork on Artwork {\n category\n series\n publisher\n manufacturer\n image_rights: imageRights\n canRequestLotConditionsReport\n internalID\n isUnlisted\n framed {\n label\n details\n }\n signatureInfo {\n label\n details\n }\n conditionDescription {\n label\n details\n }\n certificateOfAuthenticity {\n label\n details\n }\n mediumType {\n __typename\n }\n dimensions {\n in\n cm\n }\n attributionClass {\n name\n id\n }\n medium\n ...ArtworkDetailsMediumModal_artwork\n}\n\nfragment ArtworkDetailsMediumModal_artwork on Artwork {\n mediumType {\n name\n longDescription\n }\n}\n\nfragment ArtworkDownloadButton_artwork on Artwork {\n title\n date\n downloadableImageUrl\n artists(shallow: true) {\n name\n id\n }\n}\n\nfragment ArtworkErrorApp_artworkError on ArtworkError {\n artwork {\n slug\n id\n }\n requestError {\n statusCode\n }\n}\n\nfragment ArtworkImageBrowserLarge_artwork_FOvjt on Artwork {\n ...ArtworkLightbox_artwork_FOvjt\n ...ArtworkVideoPlayer_artwork_FOvjt\n isSetVideoAsCover\n figures(includeAll: false) {\n __typename\n ... on Image {\n ...DeepZoom_image\n __typename\n internalID\n isZoomable\n }\n ... on Video {\n __typename\n id\n }\n }\n}\n\nfragment ArtworkImageBrowserSmall_artwork_FOvjt on Artwork {\n ...ArtworkLightbox_artwork_FOvjt\n ...ArtworkVideoPlayer_artwork_FOvjt\n isSetVideoAsCover\n figures(includeAll: false) {\n __typename\n ... on Image {\n ...DeepZoom_image\n internalID\n isZoomable\n type: __typename\n }\n ... on Video {\n type: __typename\n id\n }\n }\n}\n\nfragment ArtworkImageBrowser_artwork on Artwork {\n ...ArtworkActions_artwork_FOvjt\n ...ArtworkImageBrowserSmall_artwork_FOvjt\n ...ArtworkImageBrowserLarge_artwork_FOvjt\n internalID\n figures(includeAll: false) {\n __typename\n ... on Image {\n isDefault\n width\n height\n }\n ... on Video {\n videoWidth: width\n videoHeight: height\n id\n }\n }\n}\n\nfragment ArtworkLightbox_artwork_FOvjt on Artwork {\n formattedMetadata\n images(includeAll: false) {\n internalID\n isDefault\n placeholder: url(version: [\"small\", \"medium\"])\n fallback: cropped(quality: 80, width: 800, height: 800, version: [\"main\", \"normalized\", \"larger\", \"large\"]) {\n width\n height\n src\n srcSet\n }\n resized(quality: 80, width: 800, height: 800, version: [\"main\", \"normalized\", \"larger\", \"large\"]) {\n width\n height\n src\n srcSet\n }\n mobileLightboxSource: resized(quality: 50, width: 800, height: 800, version: [\"main\", \"normalized\", \"larger\", \"large\"]) {\n width\n height\n src\n srcSet\n }\n versions\n }\n}\n\nfragment ArtworkMeta_artwork on Artwork {\n ...SeoDataForArtwork_artwork\n ...ArtworkChatBubble_artwork\n href\n internalID\n isShareable\n isUnlisted\n metaImage: image {\n resized(width: 640, height: 640, version: [\"large\", \"medium\", \"tall\"]) {\n width\n height\n url\n }\n }\n meta {\n title\n description(limit: 155)\n longDescription: description(limit: 200)\n }\n}\n\nfragment ArtworkPageBanner_artwork on Artwork {\n published\n visibilityLevel\n isPurchasable\n sale {\n __typename\n ...CascadingEndTimesBanner_sale\n id\n }\n}\n\nfragment ArtworkPageBanner_me_2R6IMa on Me {\n partnerOffersConnection(artworkID: $artworkID, first: 1) {\n edges {\n node {\n internalID\n isActive\n id\n }\n }\n }\n}\n\nfragment ArtworkSharePanel_artwork_FOvjt on Artwork {\n href\n images(includeAll: false) {\n url\n }\n artworkMeta: meta {\n share\n }\n}\n\nfragment ArtworkSidebarArtists_artwork on Artwork {\n culturalMaker\n artists(shallow: true) {\n slug\n name\n id\n }\n}\n\nfragment ArtworkSidebarArtsyGuarantee_artwork on Artwork {\n isUnlisted\n}\n\nfragment ArtworkSidebarArtworkTitle_artwork on Artwork {\n date\n title\n}\n\nfragment ArtworkSidebarAuctionInfoPolling_artwork on Artwork {\n internalID\n sale {\n isClosed\n id\n }\n saleArtwork {\n currentBid {\n display\n }\n id\n }\n ...ArtworkSidebarCurrentBidInfo_artwork\n ...ArtworkSidebarBidAction_artwork\n}\n\nfragment ArtworkSidebarAuctionInfoPolling_me on Me {\n ...ArtworkSidebarBidAction_me\n}\n\nfragment ArtworkSidebarAuctionTimer_artwork on Artwork {\n internalID\n sale {\n cascadingEndTimeIntervalMinutes\n isClosed\n ...AuctionTimer_sale\n startAt\n id\n }\n saleArtwork {\n ...LotTimer_saleArtwork\n endAt\n endedAt\n id\n }\n}\n\nfragment ArtworkSidebarAuthenticityCertificate_artwork on Artwork {\n hasCertificateOfAuthenticity\n isBiddable\n}\n\nfragment ArtworkSidebarBidAction_artwork on Artwork {\n myLotStanding(live: true) {\n most_recent_bid: mostRecentBid {\n max_bid: maxBid {\n cents\n }\n id\n }\n }\n slug\n internalID\n sale {\n slug\n registrationStatus {\n qualified_for_bidding: qualifiedForBidding\n id\n }\n is_preview: isPreview\n is_open: isOpen\n is_live_open: isLiveOpen\n is_closed: isClosed\n is_registration_closed: isRegistrationClosed\n requireIdentityVerification\n id\n }\n sale_artwork: saleArtwork {\n increments {\n cents\n display\n }\n endedAt\n id\n }\n collectorSignals {\n auction {\n bidCount\n lotWatcherCount\n }\n }\n}\n\nfragment ArtworkSidebarBidAction_me on Me {\n isIdentityVerified\n pendingIdentityVerification {\n internalID\n id\n }\n}\n\nfragment ArtworkSidebarBiddingClosedMessage_artwork on Artwork {\n isEligibleToCreateAlert\n artists(shallow: true) {\n internalID\n id\n }\n attributionClass {\n internalID\n id\n }\n mediumType {\n filterGene {\n slug\n id\n }\n }\n}\n\nfragment ArtworkSidebarClassification_artwork on Artwork {\n attributionClass {\n shortArrayDescription\n id\n }\n}\n\nfragment ArtworkSidebarCollectorSignal_artwork on Artwork {\n collectorSignals {\n primaryLabel(ignore: [PARTNER_OFFER])\n runningShow {\n name\n href\n startAt\n endAt\n id\n }\n }\n}\n\nfragment ArtworkSidebarCommercialButtons_artwork on Artwork {\n ...ArtworkSidebarEditionSets_artwork\n isEligibleToCreateAlert\n artists(shallow: true) {\n internalID\n id\n }\n attributionClass {\n internalID\n id\n }\n internalID\n slug\n saleMessage\n isInquireable\n isAcquireable\n isOfferable\n isSold\n priceListedDisplay\n listPrice {\n __typename\n ... on PriceRange {\n display\n }\n ... on Money {\n display\n }\n }\n mediumType {\n filterGene {\n slug\n id\n }\n }\n editionSets {\n id\n internalID\n isAcquireable\n isOfferable\n saleMessage\n dimensions {\n in\n cm\n }\n }\n partner {\n profile {\n icon {\n url(version: \"square140\")\n }\n id\n }\n id\n }\n collectorSignals {\n primaryLabel(ignore: [PARTNER_OFFER])\n }\n}\n\nfragment ArtworkSidebarCommercialButtons_me_2R6IMa on Me {\n partnerOffersConnection(artworkID: $artworkID, first: 1) {\n edges {\n node {\n endAt\n internalID\n isAvailable\n note\n priceWithDiscount {\n display\n }\n id\n }\n }\n }\n}\n\nfragment ArtworkSidebarCreateAlert_artwork on Artwork {\n isEligibleToCreateAlert\n}\n\nfragment ArtworkSidebarCurrentBidInfo_artwork on Artwork {\n sale {\n is_closed: isClosed\n is_live_open: isLiveOpen\n internalID\n is_with_buyers_premium: isWithBuyersPremium\n id\n }\n sale_artwork: saleArtwork {\n is_with_reserve: isWithReserve\n reserve_message: reserveMessage\n reserve_status: reserveStatus\n endedAt\n current_bid: currentBid {\n display\n }\n counts {\n bidder_positions: bidderPositions\n }\n id\n }\n myLotStanding(live: true) {\n active_bid: activeBid {\n is_winning: isWinning\n id\n }\n most_recent_bid: mostRecentBid {\n max_bid: maxBid {\n display\n }\n id\n }\n }\n collectorSignals {\n auction {\n lotWatcherCount\n }\n }\n ...ArtworkSidebarBiddingClosedMessage_artwork\n}\n\nfragment ArtworkSidebarDetails_artwork on Artwork {\n isUnlisted\n medium\n dimensions {\n in\n cm\n }\n framed {\n details\n }\n editionOf\n isEdition\n editionSets {\n internalID\n id\n }\n ...ArtworkSidebarClassification_artwork\n ...ArtworkSidebarAuthenticityCertificate_artwork\n ...ArtworkSidebarCollectorSignal_artwork\n}\n\nfragment ArtworkSidebarEditionSets_artwork on Artwork {\n isInquireable\n isOfferable\n isAcquireable\n editionSets {\n id\n internalID\n isOfferable\n isAcquireable\n saleMessage\n dimensions {\n cm\n in\n }\n ...ArtworkSidebarSizeInfo_piece\n }\n}\n\nfragment ArtworkSidebarEstimatedValue_artwork on Artwork {\n saleArtwork {\n estimate\n id\n }\n sale {\n isClosed\n id\n }\n}\n\nfragment ArtworkSidebarLinks_artwork on Artwork {\n isInAuction\n isUnlisted\n sale {\n isClosed\n id\n }\n}\n\nfragment ArtworkSidebarPartnerInfo_artwork on Artwork {\n internalID\n slug\n isInquireable\n isUnlisted\n partner {\n name\n href\n cities\n isInquireable\n id\n }\n sale {\n name\n href\n id\n }\n collectorSignals {\n primaryLabel(ignore: [PARTNER_OFFER])\n }\n}\n\nfragment ArtworkSidebarPrivateArtwork_artwork on Artwork {\n partner {\n name\n slug\n profile {\n isPubliclyVisible\n id\n }\n id\n }\n isUnlisted\n additionalInformation\n}\n\nfragment ArtworkSidebarShippingInformation_artwork on Artwork {\n isUnlisted\n priceIncludesTaxDisplay\n shippingOrigin\n shippingInfo\n taxInfo {\n displayText\n moreInfo {\n displayText\n url\n }\n }\n}\n\nfragment ArtworkSidebarSizeInfo_piece on Sellable {\n __isSellable: __typename\n dimensions {\n in\n cm\n }\n editionOf\n}\n\nfragment ArtworkSidebar_artwork on Artwork {\n ...ArtworkSidebarArtworkTitle_artwork\n ...ArtworkSidebarArtists_artwork\n ...ArtworkSidebarDetails_artwork\n ...ArtworkSidebarCommercialButtons_artwork\n ...ArtworkSidebarShippingInformation_artwork\n ...ArtworkSidebarPartnerInfo_artwork\n ...ArtworkSidebarCreateAlert_artwork\n ...ArtworkSidebarLinks_artwork\n ...ArtworkSidebarEstimatedValue_artwork\n ...ArtworkSidebarBiddingClosedMessage_artwork\n ...ArtworkSidebarAuctionTimer_artwork\n ...ArtworkSidebarAuctionInfoPolling_artwork\n ...ArtworkSidebarPrivateArtwork_artwork\n ...ArtworkSidebarArtsyGuarantee_artwork\n ...PrivateArtworkAdditionalInfo_artwork\n slug\n isSold\n isAcquireable\n isOfferable\n isInAuction\n saleMessage\n isBiddable\n isEligibleForArtsyGuarantee\n isEligibleToCreateAlert\n partner {\n internalID\n id\n }\n sale {\n endAt\n startAt\n isClosed\n isAuction\n id\n }\n saleArtwork {\n lotID\n lotLabel\n extendedBiddingEndAt\n endAt\n endedAt\n id\n }\n artists(shallow: true) {\n internalID\n id\n }\n isUnlisted\n}\n\nfragment ArtworkSidebar_me_2R6IMa on Me {\n ...ArtworkSidebarAuctionInfoPolling_me\n ...ArtworkSidebarCommercialButtons_me_2R6IMa\n}\n\nfragment ArtworkTopContextBar_artwork on Artwork {\n partner {\n name\n id\n }\n sale {\n isAuction\n isBenefit\n isGalleryAuction\n coverImage {\n url\n }\n ...RegistrationAuctionTimer_sale\n id\n }\n context {\n __typename\n ... on Sale {\n name\n href\n }\n ... on Fair {\n name\n href\n profile {\n icon {\n url\n }\n id\n }\n }\n ... on Show {\n name\n href\n status\n thumbnail: coverImage {\n url\n }\n }\n ... on Node {\n __isNode: __typename\n id\n }\n }\n}\n\nfragment ArtworkVideoPlayer_artwork_FOvjt on Artwork {\n internalID\n slug\n figures(includeAll: false) {\n __typename\n ... on Video {\n __typename\n playerUrl\n videoWidth: width\n videoHeight: height\n id\n }\n }\n}\n\nfragment AuctionTimer_sale on Sale {\n liveStartAt\n endAt\n}\n\nfragment CascadingEndTimesBanner_sale on Sale {\n isClosed\n cascadingEndTimeIntervalMinutes\n extendedBiddingIntervalMinutes\n}\n\nfragment DeepZoom_image on Image {\n deepZoom {\n Image {\n xmlns\n Url\n Format\n TileSize\n Overlap\n Size {\n Width\n Height\n }\n }\n }\n}\n\nfragment FollowArtistButton_artist on Artist {\n id\n slug\n name\n internalID\n counts {\n follows\n }\n}\n\nfragment LotTimer_saleArtwork on SaleArtwork {\n endAt\n formattedStartDateTime\n extendedBiddingEndAt\n lotID\n sale {\n startAt\n extendedBiddingPeriodMinutes\n extendedBiddingIntervalMinutes\n internalID\n id\n }\n}\n\nfragment PrivateArtworkAboutArtist_artwork on Artwork {\n displayArtistBio\n slug\n artists(shallow: true) {\n ...FollowArtistButton_artist\n internalID\n href\n slug\n name\n initials\n formattedNationalityAndBirthday\n counts {\n follows\n }\n coverArtwork {\n image {\n cropped(width: 145, height: 145) {\n src\n srcSet\n }\n }\n id\n }\n biographyBlurb(format: HTML, partnerBio: false) {\n text\n }\n id\n }\n}\n\nfragment PrivateArtworkAboutWork_artwork on Artwork {\n additionalInformationHTML: additionalInformation(format: HTML)\n}\n\nfragment PrivateArtworkAdditionalInfo_artwork on Artwork {\n category\n series\n publisher\n manufacturer\n image_rights: imageRights\n canRequestLotConditionsReport\n internalID\n isUnlisted\n framed {\n label\n details\n }\n signatureInfo {\n label\n details\n }\n conditionDescription {\n label\n details\n }\n certificateOfAuthenticity {\n label\n details\n }\n mediumType {\n __typename\n }\n dimensions {\n in\n cm\n }\n attributionClass {\n name\n id\n }\n medium\n ...ArtworkDetailsMediumModal_artwork\n}\n\nfragment PrivateArtworkDetails_artwork on Artwork {\n ...PrivateArtworkAboutWork_artwork\n ...PrivateArtworkAboutArtist_artwork\n ...PrivateArtworkMetadata_artwork\n}\n\nfragment PrivateArtworkMetadata_artwork on Artwork {\n ...ArtworkDetailsAdditionalInfo_artwork\n conditionDescription {\n details\n }\n provenance(format: HTML)\n exhibitionHistory(format: HTML)\n}\n\nfragment RegistrationAuctionTimer_sale on Sale {\n registrationEndsAt\n isRegistrationClosed\n}\n\nfragment SeoDataForArtwork_artwork on Artwork {\n href\n date\n is_price_hidden: isPriceHidden\n is_price_range: isPriceRange\n listPrice {\n __typename\n ... on PriceRange {\n minPrice {\n major\n currencyCode\n }\n maxPrice {\n major\n }\n }\n ... on Money {\n major\n currencyCode\n }\n }\n meta_image: image {\n resized(width: 640, height: 640, version: [\"large\", \"medium\", \"tall\"]) {\n width\n height\n url\n }\n }\n meta {\n title\n description(limit: 155)\n }\n partner {\n name\n type\n profile {\n image {\n resized(width: 320, height: 320, version: [\"medium\"]) {\n url\n }\n }\n id\n }\n id\n }\n artistNames\n availability\n category\n dimensions {\n in\n }\n}\n\nfragment ViewInRoomArtwork_artwork on Artwork {\n widthCm\n heightCm\n image {\n resized(width: 800, height: 800, version: [\"main\", \"normalized\", \"larger\", \"large\"]) {\n src\n srcSet\n width\n height\n }\n }\n}\n\nfragment ViewInRoom_artwork on Artwork {\n ...ViewInRoomArtwork_artwork\n}\n" + "text": "query artworkRoutes_ArtworkQuery(\n $artworkID: String!\n $loadSidebar: Boolean!\n) {\n artworkResult(id: $artworkID) {\n __typename\n ...ArtworkApp_artworkResult_45HfMx\n ... on ArtworkError {\n requestError {\n statusCode\n }\n }\n ... on Node {\n __isNode: __typename\n id\n }\n }\n me {\n ...ArtworkApp_me_3Rs6v7\n id\n }\n}\n\nfragment ArtworkActionsSaveButton_artwork on Artwork {\n id\n internalID\n slug\n title\n date\n artistNames\n preview: image {\n url(version: \"square\")\n }\n isInAuction\n isSavedToAnyList\n sale {\n isAuction\n isClosed\n id\n }\n collectorSignals {\n auction {\n lotWatcherCount\n }\n }\n ...ArtworkActionsWatchLotButton_artwork\n}\n\nfragment ArtworkActionsWatchLotButton_artwork on Artwork {\n sale {\n isLiveOpen\n isRegistrationClosed\n liveStartAt\n registrationStatus {\n qualifiedForBidding\n id\n }\n id\n }\n ...ArtworkAuctionRegistrationPanel_artwork\n}\n\nfragment ArtworkActions_artwork_FOvjt on Artwork {\n ...ArtworkActionsSaveButton_artwork\n ...ArtworkDownloadButton_artwork\n ...ArtworkSharePanel_artwork_FOvjt\n ...ViewInRoom_artwork\n isUnlisted\n slug\n downloadableImageUrl\n isDownloadable\n isHangable\n partner {\n slug\n id\n }\n}\n\nfragment ArtworkApp_artworkResult_45HfMx on ArtworkResult {\n __isArtworkResult: __typename\n __typename\n ...ArtworkApp_artwork_45HfMx\n ...ArtworkErrorApp_artworkError\n}\n\nfragment ArtworkApp_artwork_45HfMx on Artwork {\n ...ArtworkMeta_artwork\n ...ArtworkTopContextBar_artwork\n ...ArtworkImageBrowser_artwork\n ...ArtworkSidebar_artwork @include(if: $loadSidebar)\n ...ArtworkAuctionCreateAlertHeader_artwork\n ...PrivateArtworkDetails_artwork\n ...ArtworkPageBanner_artwork\n attributionClass {\n internalID\n id\n }\n slug\n internalID\n isAcquireable\n isOfferable\n published\n availability\n mediumType {\n filterGene {\n slug\n id\n }\n }\n visibilityLevel\n isUnlisted\n listPrice {\n __typename\n ... on PriceRange {\n display\n }\n ... on Money {\n display\n }\n }\n partner {\n __typename\n id\n }\n isInAuction\n sale {\n internalID\n slug\n extendedBiddingIntervalMinutes\n endAt\n startAt\n isClosed\n isAuction\n id\n }\n saleArtwork {\n lotID\n lotLabel\n extendedBiddingEndAt\n endAt\n endedAt\n id\n }\n saleMessage\n artists(shallow: true) {\n id\n internalID\n slug\n }\n}\n\nfragment ArtworkApp_me_3Rs6v7 on Me {\n ...ArtworkSidebar_me_2R6IMa @include(if: $loadSidebar)\n ...ArtworkPageBanner_me_2R6IMa\n}\n\nfragment ArtworkAuctionCreateAlertHeader_artwork on Artwork {\n slug\n internalID\n title\n isEligibleToCreateAlert\n isInAuction\n artistNames\n artists(shallow: true) {\n internalID\n name\n slug\n id\n }\n sale {\n startAt\n isClosed\n id\n }\n saleArtwork {\n extendedBiddingEndAt\n endAt\n endedAt\n id\n }\n attributionClass {\n internalID\n id\n }\n mediumType {\n filterGene {\n slug\n name\n id\n }\n }\n myLotStandingManageAlerts: myLotStanding {\n isHighestBidder\n }\n}\n\nfragment ArtworkAuctionRegistrationPanel_artwork on Artwork {\n sale {\n slug\n registrationEndsAt\n isRegistrationClosed\n id\n }\n}\n\nfragment ArtworkChatBubble_artwork on Artwork {\n isAcquireable\n isInquireable\n isOfferable\n isInAuction\n listPrice {\n __typename\n ... on Money {\n currencyCode\n major\n }\n ... on PriceRange {\n maxPrice {\n currencyCode\n major\n }\n }\n }\n saleArtwork {\n currency\n openingBid {\n cents\n }\n id\n }\n}\n\nfragment ArtworkDetailsAdditionalInfo_artwork on Artwork {\n category\n series\n publisher\n manufacturer\n image_rights: imageRights\n canRequestLotConditionsReport\n internalID\n isUnlisted\n framed {\n label\n details\n }\n signatureInfo {\n label\n details\n }\n conditionDescription {\n label\n details\n }\n certificateOfAuthenticity {\n label\n details\n }\n mediumType {\n __typename\n }\n dimensions {\n in\n cm\n }\n attributionClass {\n name\n id\n }\n medium\n ...ArtworkDetailsMediumModal_artwork\n}\n\nfragment ArtworkDetailsMediumModal_artwork on Artwork {\n mediumType {\n name\n longDescription\n }\n}\n\nfragment ArtworkDownloadButton_artwork on Artwork {\n title\n date\n downloadableImageUrl\n artists(shallow: true) {\n name\n id\n }\n}\n\nfragment ArtworkErrorApp_artworkError on ArtworkError {\n artwork {\n slug\n id\n }\n requestError {\n statusCode\n }\n}\n\nfragment ArtworkImageBrowserLarge_artwork_FOvjt on Artwork {\n ...ArtworkLightbox_artwork_FOvjt\n ...ArtworkVideoPlayer_artwork_FOvjt\n isSetVideoAsCover\n figures(includeAll: false) {\n __typename\n ... on Image {\n ...DeepZoom_image\n __typename\n internalID\n isZoomable\n }\n ... on Video {\n __typename\n id\n }\n }\n}\n\nfragment ArtworkImageBrowserSmall_artwork_FOvjt on Artwork {\n ...ArtworkLightbox_artwork_FOvjt\n ...ArtworkVideoPlayer_artwork_FOvjt\n isSetVideoAsCover\n figures(includeAll: false) {\n __typename\n ... on Image {\n ...DeepZoom_image\n internalID\n isZoomable\n type: __typename\n }\n ... on Video {\n type: __typename\n id\n }\n }\n}\n\nfragment ArtworkImageBrowser_artwork on Artwork {\n ...ArtworkActions_artwork_FOvjt\n ...ArtworkImageBrowserSmall_artwork_FOvjt\n ...ArtworkImageBrowserLarge_artwork_FOvjt\n internalID\n figures(includeAll: false) {\n __typename\n ... on Image {\n isDefault\n width\n height\n }\n ... on Video {\n videoWidth: width\n videoHeight: height\n id\n }\n }\n}\n\nfragment ArtworkLightbox_artwork_FOvjt on Artwork {\n formattedMetadata\n images(includeAll: false) {\n internalID\n isDefault\n placeholder: url(version: [\"small\", \"medium\"])\n fallback: cropped(quality: 80, width: 800, height: 800, version: [\"main\", \"normalized\", \"larger\", \"large\"]) {\n width\n height\n src\n srcSet\n }\n resized(quality: 80, width: 800, height: 800, version: [\"main\", \"normalized\", \"larger\", \"large\"]) {\n width\n height\n src\n srcSet\n }\n mobileLightboxSource: resized(quality: 50, width: 800, height: 800, version: [\"main\", \"normalized\", \"larger\", \"large\"]) {\n width\n height\n src\n srcSet\n }\n versions\n }\n}\n\nfragment ArtworkMeta_artwork on Artwork {\n ...SeoDataForArtwork_artwork\n ...ArtworkChatBubble_artwork\n href\n internalID\n isShareable\n isUnlisted\n metaImage: image {\n resized(width: 640, height: 640, version: [\"large\", \"medium\", \"tall\"]) {\n width\n height\n url\n }\n }\n meta {\n title\n description(limit: 155)\n longDescription: description(limit: 200)\n }\n}\n\nfragment ArtworkPageBanner_artwork on Artwork {\n published\n visibilityLevel\n isPurchasable\n sale {\n __typename\n ...CascadingEndTimesBanner_sale\n id\n }\n}\n\nfragment ArtworkPageBanner_me_2R6IMa on Me {\n partnerOffersConnection(artworkID: $artworkID, first: 1) {\n edges {\n node {\n internalID\n isActive\n id\n }\n }\n }\n}\n\nfragment ArtworkSharePanel_artwork_FOvjt on Artwork {\n href\n images(includeAll: false) {\n url\n }\n artworkMeta: meta {\n share\n }\n}\n\nfragment ArtworkSidebarArtists_artwork on Artwork {\n culturalMaker\n artists(shallow: true) {\n slug\n name\n id\n }\n}\n\nfragment ArtworkSidebarArtsyGuarantee_artwork on Artwork {\n isUnlisted\n}\n\nfragment ArtworkSidebarArtworkTitle_artwork on Artwork {\n date\n title\n}\n\nfragment ArtworkSidebarAuctionInfoPolling_artwork on Artwork {\n internalID\n sale {\n isClosed\n id\n }\n saleArtwork {\n currentBid {\n display\n }\n id\n }\n ...ArtworkSidebarCurrentBidInfo_artwork\n ...ArtworkSidebarBidAction_artwork\n}\n\nfragment ArtworkSidebarAuctionInfoPolling_me on Me {\n ...ArtworkSidebarBidAction_me\n}\n\nfragment ArtworkSidebarAuctionTimer_artwork on Artwork {\n internalID\n sale {\n cascadingEndTimeIntervalMinutes\n isClosed\n ...AuctionTimer_sale\n startAt\n id\n }\n saleArtwork {\n ...LotTimer_saleArtwork\n endAt\n endedAt\n id\n }\n}\n\nfragment ArtworkSidebarAuthenticityCertificate_artwork on Artwork {\n hasCertificateOfAuthenticity\n isBiddable\n}\n\nfragment ArtworkSidebarBidAction_artwork on Artwork {\n myLotStanding(live: true) {\n most_recent_bid: mostRecentBid {\n max_bid: maxBid {\n cents\n }\n id\n }\n }\n slug\n internalID\n sale {\n slug\n registrationStatus {\n qualified_for_bidding: qualifiedForBidding\n id\n }\n is_preview: isPreview\n is_open: isOpen\n is_live_open: isLiveOpen\n is_closed: isClosed\n is_registration_closed: isRegistrationClosed\n requireIdentityVerification\n id\n }\n sale_artwork: saleArtwork {\n increments {\n cents\n display\n }\n endedAt\n id\n }\n collectorSignals {\n auction {\n bidCount\n lotWatcherCount\n }\n }\n}\n\nfragment ArtworkSidebarBidAction_me on Me {\n isIdentityVerified\n pendingIdentityVerification {\n internalID\n id\n }\n}\n\nfragment ArtworkSidebarBiddingClosedMessage_artwork on Artwork {\n isEligibleToCreateAlert\n artists(shallow: true) {\n internalID\n id\n }\n attributionClass {\n internalID\n id\n }\n mediumType {\n filterGene {\n slug\n id\n }\n }\n}\n\nfragment ArtworkSidebarClassification_artwork on Artwork {\n attributionClass {\n shortArrayDescription\n id\n }\n}\n\nfragment ArtworkSidebarCollectorSignal_artwork on Artwork {\n collectorSignals {\n primaryLabel(ignore: [PARTNER_OFFER])\n runningShow {\n name\n href\n startAt\n endAt\n id\n }\n }\n}\n\nfragment ArtworkSidebarCommercialButtons_artwork on Artwork {\n ...ArtworkSidebarEditionSets_artwork\n isEligibleToCreateAlert\n artists(shallow: true) {\n internalID\n id\n }\n attributionClass {\n internalID\n id\n }\n internalID\n slug\n saleMessage\n isInquireable\n isAcquireable\n isOfferable\n isSold\n priceListedDisplay\n listPrice {\n __typename\n ... on PriceRange {\n display\n }\n ... on Money {\n display\n }\n }\n mediumType {\n filterGene {\n slug\n id\n }\n }\n editionSets {\n id\n internalID\n isAcquireable\n isOfferable\n saleMessage\n dimensions {\n in\n cm\n }\n }\n partner {\n profile {\n icon {\n url(version: \"square140\")\n }\n id\n }\n id\n }\n collectorSignals {\n primaryLabel(ignore: [PARTNER_OFFER])\n }\n sale {\n isClosed\n id\n }\n saleArtwork {\n endedAt\n id\n }\n}\n\nfragment ArtworkSidebarCommercialButtons_me_2R6IMa on Me {\n partnerOffersConnection(artworkID: $artworkID, first: 1) {\n edges {\n node {\n endAt\n internalID\n isAvailable\n note\n priceWithDiscount {\n display\n }\n id\n }\n }\n }\n}\n\nfragment ArtworkSidebarCreateAlert_artwork on Artwork {\n isEligibleToCreateAlert\n}\n\nfragment ArtworkSidebarCurrentBidInfo_artwork on Artwork {\n sale {\n is_closed: isClosed\n is_live_open: isLiveOpen\n internalID\n is_with_buyers_premium: isWithBuyersPremium\n id\n }\n sale_artwork: saleArtwork {\n is_with_reserve: isWithReserve\n reserve_message: reserveMessage\n reserve_status: reserveStatus\n endedAt\n current_bid: currentBid {\n display\n }\n counts {\n bidder_positions: bidderPositions\n }\n id\n }\n myLotStanding(live: true) {\n active_bid: activeBid {\n is_winning: isWinning\n id\n }\n most_recent_bid: mostRecentBid {\n max_bid: maxBid {\n display\n }\n id\n }\n }\n collectorSignals {\n auction {\n lotWatcherCount\n }\n }\n ...ArtworkSidebarBiddingClosedMessage_artwork\n}\n\nfragment ArtworkSidebarDetails_artwork on Artwork {\n isUnlisted\n medium\n dimensions {\n in\n cm\n }\n framed {\n details\n }\n editionOf\n isEdition\n editionSets {\n internalID\n id\n }\n ...ArtworkSidebarClassification_artwork\n ...ArtworkSidebarAuthenticityCertificate_artwork\n ...ArtworkSidebarCollectorSignal_artwork\n}\n\nfragment ArtworkSidebarEditionSets_artwork on Artwork {\n isInquireable\n isOfferable\n isAcquireable\n editionSets {\n id\n internalID\n isOfferable\n isAcquireable\n saleMessage\n dimensions {\n cm\n in\n }\n ...ArtworkSidebarSizeInfo_piece\n }\n}\n\nfragment ArtworkSidebarEstimatedValue_artwork on Artwork {\n saleArtwork {\n estimate\n id\n }\n sale {\n isClosed\n id\n }\n}\n\nfragment ArtworkSidebarLinks_artwork on Artwork {\n isInAuction\n isUnlisted\n sale {\n isClosed\n id\n }\n}\n\nfragment ArtworkSidebarPartnerInfo_artwork on Artwork {\n internalID\n slug\n isInquireable\n isUnlisted\n partner {\n name\n href\n cities\n isInquireable\n id\n }\n sale {\n name\n href\n id\n }\n collectorSignals {\n primaryLabel(ignore: [PARTNER_OFFER])\n }\n}\n\nfragment ArtworkSidebarPrivateArtwork_artwork on Artwork {\n partner {\n name\n slug\n profile {\n isPubliclyVisible\n id\n }\n id\n }\n isUnlisted\n additionalInformation\n}\n\nfragment ArtworkSidebarShippingInformation_artwork on Artwork {\n isUnlisted\n priceIncludesTaxDisplay\n shippingOrigin\n shippingInfo\n taxInfo {\n displayText\n moreInfo {\n displayText\n url\n }\n }\n}\n\nfragment ArtworkSidebarSizeInfo_piece on Sellable {\n __isSellable: __typename\n dimensions {\n in\n cm\n }\n editionOf\n}\n\nfragment ArtworkSidebar_artwork on Artwork {\n ...ArtworkSidebarArtworkTitle_artwork\n ...ArtworkSidebarArtists_artwork\n ...ArtworkSidebarDetails_artwork\n ...ArtworkSidebarCommercialButtons_artwork\n ...ArtworkSidebarShippingInformation_artwork\n ...ArtworkSidebarPartnerInfo_artwork\n ...ArtworkSidebarCreateAlert_artwork\n ...ArtworkSidebarLinks_artwork\n ...ArtworkSidebarEstimatedValue_artwork\n ...ArtworkSidebarBiddingClosedMessage_artwork\n ...ArtworkSidebarAuctionTimer_artwork\n ...ArtworkSidebarAuctionInfoPolling_artwork\n ...ArtworkSidebarPrivateArtwork_artwork\n ...ArtworkSidebarArtsyGuarantee_artwork\n ...PrivateArtworkAdditionalInfo_artwork\n slug\n isSold\n isAcquireable\n isOfferable\n isInAuction\n saleMessage\n isBiddable\n isEligibleForArtsyGuarantee\n isEligibleToCreateAlert\n partner {\n internalID\n id\n }\n sale {\n endAt\n startAt\n isClosed\n isAuction\n id\n }\n saleArtwork {\n lotID\n lotLabel\n extendedBiddingEndAt\n endAt\n endedAt\n id\n }\n artists(shallow: true) {\n internalID\n id\n }\n isUnlisted\n}\n\nfragment ArtworkSidebar_me_2R6IMa on Me {\n ...ArtworkSidebarAuctionInfoPolling_me\n ...ArtworkSidebarCommercialButtons_me_2R6IMa\n}\n\nfragment ArtworkTopContextBar_artwork on Artwork {\n partner {\n name\n id\n }\n sale {\n isAuction\n isBenefit\n isGalleryAuction\n coverImage {\n url\n }\n ...RegistrationAuctionTimer_sale\n id\n }\n context {\n __typename\n ... on Sale {\n name\n href\n }\n ... on Fair {\n name\n href\n profile {\n icon {\n url\n }\n id\n }\n }\n ... on Show {\n name\n href\n status\n thumbnail: coverImage {\n url\n }\n }\n ... on Node {\n __isNode: __typename\n id\n }\n }\n}\n\nfragment ArtworkVideoPlayer_artwork_FOvjt on Artwork {\n internalID\n slug\n figures(includeAll: false) {\n __typename\n ... on Video {\n __typename\n playerUrl\n videoWidth: width\n videoHeight: height\n id\n }\n }\n}\n\nfragment AuctionTimer_sale on Sale {\n liveStartAt\n endAt\n}\n\nfragment CascadingEndTimesBanner_sale on Sale {\n isClosed\n cascadingEndTimeIntervalMinutes\n extendedBiddingIntervalMinutes\n}\n\nfragment DeepZoom_image on Image {\n deepZoom {\n Image {\n xmlns\n Url\n Format\n TileSize\n Overlap\n Size {\n Width\n Height\n }\n }\n }\n}\n\nfragment FollowArtistButton_artist on Artist {\n id\n slug\n name\n internalID\n counts {\n follows\n }\n}\n\nfragment LotTimer_saleArtwork on SaleArtwork {\n endAt\n formattedStartDateTime\n extendedBiddingEndAt\n lotID\n sale {\n startAt\n extendedBiddingPeriodMinutes\n extendedBiddingIntervalMinutes\n internalID\n id\n }\n}\n\nfragment PrivateArtworkAboutArtist_artwork on Artwork {\n displayArtistBio\n slug\n artists(shallow: true) {\n ...FollowArtistButton_artist\n internalID\n href\n slug\n name\n initials\n formattedNationalityAndBirthday\n counts {\n follows\n }\n coverArtwork {\n image {\n cropped(width: 145, height: 145) {\n src\n srcSet\n }\n }\n id\n }\n biographyBlurb(format: HTML, partnerBio: false) {\n text\n }\n id\n }\n}\n\nfragment PrivateArtworkAboutWork_artwork on Artwork {\n additionalInformationHTML: additionalInformation(format: HTML)\n}\n\nfragment PrivateArtworkAdditionalInfo_artwork on Artwork {\n category\n series\n publisher\n manufacturer\n image_rights: imageRights\n canRequestLotConditionsReport\n internalID\n isUnlisted\n framed {\n label\n details\n }\n signatureInfo {\n label\n details\n }\n conditionDescription {\n label\n details\n }\n certificateOfAuthenticity {\n label\n details\n }\n mediumType {\n __typename\n }\n dimensions {\n in\n cm\n }\n attributionClass {\n name\n id\n }\n medium\n ...ArtworkDetailsMediumModal_artwork\n}\n\nfragment PrivateArtworkDetails_artwork on Artwork {\n ...PrivateArtworkAboutWork_artwork\n ...PrivateArtworkAboutArtist_artwork\n ...PrivateArtworkMetadata_artwork\n}\n\nfragment PrivateArtworkMetadata_artwork on Artwork {\n ...ArtworkDetailsAdditionalInfo_artwork\n conditionDescription {\n details\n }\n provenance(format: HTML)\n exhibitionHistory(format: HTML)\n}\n\nfragment RegistrationAuctionTimer_sale on Sale {\n registrationEndsAt\n isRegistrationClosed\n}\n\nfragment SeoDataForArtwork_artwork on Artwork {\n href\n date\n is_price_hidden: isPriceHidden\n is_price_range: isPriceRange\n listPrice {\n __typename\n ... on PriceRange {\n minPrice {\n major\n currencyCode\n }\n maxPrice {\n major\n }\n }\n ... on Money {\n major\n currencyCode\n }\n }\n meta_image: image {\n resized(width: 640, height: 640, version: [\"large\", \"medium\", \"tall\"]) {\n width\n height\n url\n }\n }\n meta {\n title\n description(limit: 155)\n }\n partner {\n name\n type\n profile {\n image {\n resized(width: 320, height: 320, version: [\"medium\"]) {\n url\n }\n }\n id\n }\n id\n }\n artistNames\n availability\n category\n dimensions {\n in\n }\n}\n\nfragment ViewInRoomArtwork_artwork on Artwork {\n widthCm\n heightCm\n image {\n resized(width: 800, height: 800, version: [\"main\", \"normalized\", \"larger\", \"large\"]) {\n src\n srcSet\n width\n height\n }\n }\n}\n\nfragment ViewInRoom_artwork on Artwork {\n ...ViewInRoomArtwork_artwork\n}\n" } }; })(); diff --git a/yarn.lock b/yarn.lock index 61feb10825e..015cd7f7682 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1786,20 +1786,20 @@ estree-walker "^2.0.2" picomatch "^4.0.2" -"@rsbuild/core@^1.1.8": - version "1.1.8" - resolved "https://registry.yarnpkg.com/@rsbuild/core/-/core-1.1.8.tgz#62e5e411490220e4168391383220fc3dba0e6b97" - integrity sha512-UhP260og3aJcqGWpnRcQXLVapdOZZ09JXaQKY+tE55A7nBw8DQy+qrtTsFZYvVKas1bq8GzhGfLxuglCst4Lnw== +"@rsbuild/core@^1.1.13": + version "1.1.13" + resolved "https://registry.yarnpkg.com/@rsbuild/core/-/core-1.1.13.tgz#8e6c0304582674b82613d1bb1acdaf6eb553299e" + integrity sha512-XBL2hrin8731W6iTGGL+x3cv07n4vm2D7u6XHRwtQkRfySzAqGx7ThlQLdNX/dJwfsoQrYQuWl/qzaljjXtGtg== dependencies: - "@rspack/core" "~1.1.5" + "@rspack/core" "1.1.8" "@rspack/lite-tapable" "~1.0.1" "@swc/helpers" "^0.5.15" core-js "~3.39.0" -"@rsbuild/plugin-assets-retry@^1.0.6": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@rsbuild/plugin-assets-retry/-/plugin-assets-retry-1.0.6.tgz#1b79ce627c32f3a8adf9c15f9ccad2b9b6c7403e" - integrity sha512-qH1o2R4gMC9i8p70dW9WUku4Ha4XoqA5/pMzysECrrINBI05cbFc/vB7JOqlrciF0NTer1EFZKo1p+mTAI9QSA== +"@rsbuild/plugin-assets-retry@^1.0.7": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@rsbuild/plugin-assets-retry/-/plugin-assets-retry-1.0.7.tgz#6ba0b186506130d88b71d9c5a647c9bc038d079d" + integrity sha512-5b3sHIayNKxgB1rr8SJWjTDKNwoBRDcbLuh1gBoNVz0TvNZxow8GsW6Nlfl8YRLyuLwaLQQw/r/vGnTxcIit5Q== "@rsbuild/plugin-node-polyfill@^1.2.0": version "1.2.0" @@ -1830,13 +1830,13 @@ util "^0.12.5" vm-browserify "^1.1.2" -"@rsbuild/plugin-react@^1.0.7": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@rsbuild/plugin-react/-/plugin-react-1.0.7.tgz#7764cc4f715da94e5b6a0ed7fe8a1a0a9229b447" - integrity sha512-t7T/GqDwodusTAnxGpqVRnQ/G+HYh98zk71qIg19WkjVJJGv57AC1Ppx0/6zzbZAbxU60bfK8TeEEXjhXCdSxA== +"@rsbuild/plugin-react@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@rsbuild/plugin-react/-/plugin-react-1.1.0.tgz#5610e7aebbfe097e98e430cd85cb18f13ef31097" + integrity sha512-uqdRoV2V91G1XIA14dAmxqYTlTDVf0ktpE7TgwG29oQ2j+DerF1kh29WPHK9HvGE34JTfaBrsme2Zmb6bGD0cw== dependencies: "@rspack/plugin-react-refresh" "~1.0.0" - react-refresh "^0.14.2" + react-refresh "^0.16.0" "@rsbuild/plugin-type-check@^1.0.1": version "1.1.0" @@ -1848,73 +1848,73 @@ reduce-configs "^1.0.0" ts-checker-rspack-plugin "^1.0.1" -"@rspack/binding-darwin-arm64@1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.1.5.tgz#fde32a2f939e3a11f46b419a3c00d9822e4cb05d" - integrity sha512-eEynmyPPl+OGYQ9LRFwiQosyRfcca3OQB73akqY4mqDRl39OyiBjq7347DLHJysgbm9z+B1bsiLuh2xc6mdclQ== +"@rspack/binding-darwin-arm64@1.1.8": + version "1.1.8" + resolved "https://registry.yarnpkg.com/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.1.8.tgz#aedce2a27148a2454c0a931030467415c0df042d" + integrity sha512-I7avr471ghQ3LAqKm2fuXuJPLgQ9gffn5Q4nHi8rsukuZUtiLDPfYzK1QuupEp2JXRWM1gG5lIbSUOht3cD6Ug== -"@rspack/binding-darwin-x64@1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.1.5.tgz#f6d39aec9a4068fd5ddd8f2fb123b2e0473c9d19" - integrity sha512-I6HPRgogewU5v1OKe3noEzq2U1FCEYAbW+smy+lPvpTW+3X6PlVMzTT4oelhB0EXDQ+KxjXH9KpOKON1hg/JGg== +"@rspack/binding-darwin-x64@1.1.8": + version "1.1.8" + resolved "https://registry.yarnpkg.com/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.1.8.tgz#42bc8578bdfa00105487186ae8f45b3f7872820b" + integrity sha512-vfqf/c+mcx8rr1M8LnqKmzDdnrgguflZnjGerBLjNerAc+dcUp3lCvNxRIvZ2TkSZZBW8BpCMgjj3n70CZ4VLQ== -"@rspack/binding-linux-arm64-gnu@1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.5.tgz#2c6f7cde6bda07cde6f101c2f3cfc3ca8b74d5f6" - integrity sha512-LQnqucNa6Dr6y3By+/M2ARO4jDR3AM+PuCsHgzlYT0RDRLS+Ow3f50WbNBf7eI/DhrEA0aucYL3sz1ljguB3EA== +"@rspack/binding-linux-arm64-gnu@1.1.8": + version "1.1.8" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.8.tgz#1012dccfb20653c977d3ead4666357937d068f9d" + integrity sha512-lZlO/rAJSeozi+qtVLkGSXfe+riPawCwM4FsrflELfNlvvEXpANwtrdJ+LsaNVXcgvhh50ZX2KicTdmx9G2b6Q== -"@rspack/binding-linux-arm64-musl@1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.5.tgz#25493af1a1be1134369ad7c80d5e7617e940245a" - integrity sha512-b9L/9HJxrWY4cezPWqgj28I9Xe2XxwLHu8x0CMGobwF2XKR0QQVLAst38RW/EusJ8TURdyvNEOuRZlWEIJuYOw== +"@rspack/binding-linux-arm64-musl@1.1.8": + version "1.1.8" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.8.tgz#ff8a1cbe532bbf9a4ae8cf73bd949e773f16a9a9" + integrity sha512-bX7exULSZwy8xtDh6Z65b6sRC4uSxGuyvSLCEKyhmG6AnJkg0gQMxk3hoO0hWnyGEZgdJEn+jEhk0fjl+6ZRAQ== -"@rspack/binding-linux-x64-gnu@1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.5.tgz#3b00fbafee345b466bd977956ab4b383a05439f9" - integrity sha512-0az52ZXTg/ErCGC1v/oFLWByKAiXvng4euv+prwMWF6p1pA7lfLRLzdibDFO4KgC16Zlfcg3hqs7YikLng4x+w== +"@rspack/binding-linux-x64-gnu@1.1.8": + version "1.1.8" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.8.tgz#bdec8ba27e764a926a7f27b90d2da6507558bc68" + integrity sha512-2Prw2USgTJ3aLdLExfik8pAwAHbX4MZrACBGEmR7Vbb56kLjC+++fXkciRc50pUDK4JFr1VQ7eNZrJuDR6GG6Q== -"@rspack/binding-linux-x64-musl@1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.5.tgz#db08affe5b251b484821977ba57ced4722794dc6" - integrity sha512-EF/LJTtCTkuti2gJnCyvXHC5Q2L5M4+RXm5kj9Bfu/t0Zmmfe6Jd5QUsifgogioeL0ZsH/Pou5QiiVcOFcqFKQ== +"@rspack/binding-linux-x64-musl@1.1.8": + version "1.1.8" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.8.tgz#3abaf3e513ed7e3481225293d235f41f4ab0ae8d" + integrity sha512-bnVGB/mQBKEdzOU/CPmcOE3qEXxGOGGW7/i6iLl2MamVOykJq8fYjL9j86yi6L0r009ja16OgWckykQGc4UqGw== -"@rspack/binding-win32-arm64-msvc@1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.5.tgz#1fdc73e7db1df3f6793f3488cd2749ad8ebe8d52" - integrity sha512-VEqhK6HwIHby6gtOkxIx66SkqYndiaP1ddZ3X39RLE40TY3KlNgfG/SzbN9J5Qb+8jjq3ogV8n50+wLEGkhiWw== +"@rspack/binding-win32-arm64-msvc@1.1.8": + version "1.1.8" + resolved "https://registry.yarnpkg.com/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.8.tgz#5c63ffb726ac2d5ea87c36da11f30fd42c7601bc" + integrity sha512-u+na3gxhzeksm4xZyAzn1+XWo5a5j7hgWA/KcFPDQ8qQNkRknx4jnQMxVtcZ9pLskAYV4AcOV/AIximx7zvv8A== -"@rspack/binding-win32-ia32-msvc@1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.1.5.tgz#55d7c682d4c43bfa4518f8f53ee8822af2a5acba" - integrity sha512-Yi2BwYehc5/sRVgI7zTGYJKjnV8UszAJt/stWdFHaq82chHiuuF/tQd1WcBUq0Iin9ylBMo16mRJAuFkFmJ74Q== +"@rspack/binding-win32-ia32-msvc@1.1.8": + version "1.1.8" + resolved "https://registry.yarnpkg.com/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.1.8.tgz#25d41f41a68c84c74f8cd862c53c3110b2c034f3" + integrity sha512-FijUxym1INd5fFHwVCLuVP8XEAb4Sk1sMwEEQUlugiDra9ZsLaPw4OgPGxbxkD6SB0DeUz9Zq46Xbcf6d3OgfA== -"@rspack/binding-win32-x64-msvc@1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.5.tgz#41801064908bd393f10cf5c865ff9a54d9b6918a" - integrity sha512-4UArXYqJO1Ni7TmCw1T11JnrwfpoThDdiQ9k1P1voBWK3bDahPEBOptk9ZPu2+ZuRX8hFrvumRKkLY3oy7fTMw== +"@rspack/binding-win32-x64-msvc@1.1.8": + version "1.1.8" + resolved "https://registry.yarnpkg.com/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.8.tgz#a5881beeedb1058ec39559dc1f4bcfea731ea232" + integrity sha512-SBzIcND4qpDt71jlu1MCDxt335tqInT3YID9V4DoQ4t8wgM/uad7EgKOWKTK6vc2RRaOIShfS2XzqjNUxPXh4w== -"@rspack/binding@1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@rspack/binding/-/binding-1.1.5.tgz#59897fd853172703d7fbb936f041c7bc612ca34d" - integrity sha512-RsSkgi56Q5XUXut0qweLSE1C4Ogcm7g/ueKoOgsbHAYVKrCs9/dTFlPHWSIAaI7QWh0GWEePR/MM2O2HIu+1rw== +"@rspack/binding@1.1.8": + version "1.1.8" + resolved "https://registry.yarnpkg.com/@rspack/binding/-/binding-1.1.8.tgz#4f99f2add813210d58f3d8142ed98bbf60e51078" + integrity sha512-+/JzXx1HctfgPj+XtsCTbRkxiaOfAXGZZLEvs7jgp04WgWRSZ5u97WRCePNPvy+sCfOEH/2zw2ZK36Z7oQRGhQ== optionalDependencies: - "@rspack/binding-darwin-arm64" "1.1.5" - "@rspack/binding-darwin-x64" "1.1.5" - "@rspack/binding-linux-arm64-gnu" "1.1.5" - "@rspack/binding-linux-arm64-musl" "1.1.5" - "@rspack/binding-linux-x64-gnu" "1.1.5" - "@rspack/binding-linux-x64-musl" "1.1.5" - "@rspack/binding-win32-arm64-msvc" "1.1.5" - "@rspack/binding-win32-ia32-msvc" "1.1.5" - "@rspack/binding-win32-x64-msvc" "1.1.5" - -"@rspack/core@~1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@rspack/core/-/core-1.1.5.tgz#cb43c76a2af974a037db9435215248b51faa679d" - integrity sha512-/FmxDeMuW8fJkhz8fHuCu7OiJHFKW78xclEu7LkEujWl4PqJgdWjUL/6FWIj50spRwj6PRfuc31hFSL4hbNfCA== + "@rspack/binding-darwin-arm64" "1.1.8" + "@rspack/binding-darwin-x64" "1.1.8" + "@rspack/binding-linux-arm64-gnu" "1.1.8" + "@rspack/binding-linux-arm64-musl" "1.1.8" + "@rspack/binding-linux-x64-gnu" "1.1.8" + "@rspack/binding-linux-x64-musl" "1.1.8" + "@rspack/binding-win32-arm64-msvc" "1.1.8" + "@rspack/binding-win32-ia32-msvc" "1.1.8" + "@rspack/binding-win32-x64-msvc" "1.1.8" + +"@rspack/core@1.1.8": + version "1.1.8" + resolved "https://registry.yarnpkg.com/@rspack/core/-/core-1.1.8.tgz#46079db6cb01b8e0028ffd2ac54c7a9678674e74" + integrity sha512-pcZtcj5iXLCuw9oElTYC47bp/RQADm/MMEb3djHdwJuSlFWfWPQi5QFgJ/lJAxIW9UNHnTFrYtytycfjpuoEcA== dependencies: "@module-federation/runtime-tools" "0.5.1" - "@rspack/binding" "1.1.5" + "@rspack/binding" "1.1.8" "@rspack/lite-tapable" "1.0.1" caniuse-lite "^1.0.30001616" @@ -11330,10 +11330,10 @@ react-redux@^8.0.2: react-is "^18.0.0" use-sync-external-store "^1.0.0" -react-refresh@^0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9" - integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA== +react-refresh@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.16.0.tgz#e7d45625f05c9709466d09348a25d22f79b2ad23" + integrity sha512-FPvF2XxTSikpJxcr+bHut2H4gJ17+18Uy20D5/F+SKzFap62R3cM5wH6b8WN3LyGSYeQilLEcJcR1fjBSI2S1A== react-relay-network-modern-ssr@1.4.0: version "1.4.0"