@faststore/core 3.42.0 → 3.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +55 -55
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/cache/config.json +3 -3
- package/.next/cache/webpack/client-production/0.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack +0 -0
- package/.next/cache/webpack/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/prerender-manifest.js +1 -1
- package/.next/prerender-manifest.json +1 -1
- package/.next/react-loadable-manifest.json +65 -65
- package/.next/routes-manifest.json +1 -1
- package/.next/server/chunks/1506.js +1 -1
- package/.next/server/chunks/2443.js +1 -0
- package/.next/server/chunks/2524.js +1 -0
- package/.next/server/chunks/4289.js +2 -362
- package/.next/server/chunks/4559.js +361 -0
- package/.next/server/chunks/4725.js +1 -0
- package/.next/server/chunks/4746.js +1 -1
- package/.next/server/chunks/5474.js +6 -0
- package/.next/server/chunks/5607.js +1 -0
- package/.next/server/chunks/563.js +1 -1
- package/.next/server/chunks/6594.js +1 -1
- package/.next/server/chunks/674.js +1 -1
- package/.next/server/chunks/6968.js +10 -0
- package/.next/server/chunks/7986.js +6 -1
- package/.next/server/chunks/804.js +1 -0
- package/.next/server/chunks/831.js +1 -1
- package/.next/server/chunks/8562.js +1 -1
- package/.next/server/chunks/8646.js +1 -1
- package/.next/server/chunks/ButtonSignIn.js +1 -1
- package/.next/server/chunks/UIBannerText.js +1 -1
- package/.next/server/chunks/UISKUMatrixSidebar.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.js +1 -1
- package/.next/server/pages/404.js.nft.json +1 -1
- package/.next/server/pages/500.js +1 -1
- package/.next/server/pages/500.js.nft.json +1 -1
- package/.next/server/pages/[...slug].js +1 -1
- package/.next/server/pages/[...slug].js.nft.json +1 -1
- package/.next/server/pages/[slug]/p.js +1 -1
- package/.next/server/pages/[slug]/p.js.nft.json +1 -1
- package/.next/server/pages/_app.js +1 -1
- package/.next/server/pages/_app.js.nft.json +1 -1
- package/.next/server/pages/_document.js +1 -1
- package/.next/server/pages/_document.js.nft.json +1 -1
- package/.next/server/pages/_error.js +1 -1
- package/.next/server/pages/_error.js.nft.json +1 -1
- package/.next/server/pages/account/profile.js +1 -1
- package/.next/server/pages/account/profile.js.nft.json +1 -1
- package/.next/server/pages/account.js +1 -1
- package/.next/server/pages/account.js.nft.json +1 -1
- package/.next/server/pages/api/graphql.js +2 -1
- package/.next/server/pages/api/graphql.js.nft.json +1 -1
- package/.next/server/pages/api/health/live.js.nft.json +1 -1
- package/.next/server/pages/api/health/ready.js.nft.json +1 -1
- package/.next/server/pages/api/preview.js +1 -1
- package/.next/server/pages/api/preview.js.nft.json +1 -1
- package/.next/server/pages/checkout.js +1 -1
- package/.next/server/pages/checkout.js.nft.json +1 -1
- package/.next/server/pages/en-US/404.html +2 -2
- package/.next/server/pages/en-US/500.html +2 -2
- package/.next/server/pages/en-US/checkout.html +2 -2
- package/.next/server/pages/en-US/login.html +2 -2
- package/.next/server/pages/en-US/s.html +2 -2
- package/.next/server/pages/en-US.html +2 -2
- package/.next/server/pages/index.js +1 -1
- package/.next/server/pages/index.js.nft.json +1 -1
- package/.next/server/pages/login.js +1 -1
- package/.next/server/pages/login.js.nft.json +1 -1
- package/.next/server/pages/s.js +1 -1
- package/.next/server/pages/s.js.nft.json +1 -1
- package/.next/server/pages-manifest.json +1 -1
- package/.next/static/U_9W0qMyv_4RQSLFdrtHC/_buildManifest.js +1 -0
- package/.next/static/chunks/{1153.ed17e19083f51bdb.js → 1153.8f0ac867c4ddce90.js} +1 -1
- package/.next/static/chunks/1173.ca14a5bc4e1264f4.js +1 -0
- package/.next/static/chunks/1418-e86227bcf9a5d486.js +28 -0
- package/.next/static/chunks/1552.8751332da83cadc5.js +1 -0
- package/.next/static/chunks/{6076.d80e37e35892bafc.js → 3684.3e6f435506c2c7c9.js} +1 -1
- package/.next/static/chunks/417.edbb75ab2f55482f.js +1 -0
- package/.next/static/chunks/{4349-6fc936580b772e67.js → 4349-87a956a73b97519c.js} +1 -1
- package/.next/static/chunks/{4625-9a273e78866c389b.js → 4625-553d20c86b0ca577.js} +1 -1
- package/.next/static/chunks/{4746.19eddeaeb33ea820.js → 4746.2e16ec0663a3873f.js} +1 -1
- package/.next/static/chunks/{4774.907a71a04126d57c.js → 4774.8e70c01dcd0ed4b3.js} +1 -1
- package/.next/static/chunks/{4865.3e2ae9feb511c870.js → 4865.4017be0f8e7c8cf0.js} +1 -1
- package/.next/static/chunks/5836.c5c244a8cbfa7f7d.js +1 -0
- package/.next/static/chunks/630.13d3dd939b789798.js +6 -0
- package/.next/static/chunks/6335-6eb4ff84af184b88.js +1 -0
- package/.next/static/chunks/6536.d5260107222db13c.js +1 -0
- package/.next/static/chunks/{7195.e88924bd232c58b7.js → 7195.fd4cacc0bef1a233.js} +1 -1
- package/.next/static/chunks/7498-72289e704e7c7056.js +1 -0
- package/.next/static/chunks/7959.7c721505286572c0.js +1 -0
- package/.next/static/chunks/9.89f24163370f3a22.js +1 -0
- package/.next/static/chunks/BannerNewsletter.8982f42e60ed8828.js +1 -0
- package/.next/static/chunks/{ButtonSignIn.df0e3ce490436fe2.js → ButtonSignIn.bff8dc7b2133806c.js} +1 -1
- package/.next/static/chunks/CartItem.f2493be7c504f22f.js +1 -0
- package/.next/static/chunks/{CartSidebar.26d3e39bf93a368f.js → CartSidebar.aa9e43be37034654.js} +1 -1
- package/.next/static/chunks/{Gift.affb75f8f7bcb6db.js → Gift.375356d6a74e2693.js} +1 -1
- package/.next/static/chunks/Newsletter.9db4df2d4fb33227.js +1 -0
- package/.next/static/chunks/OrderSummary.e6e0a3af3c224b4e.js +1 -0
- package/.next/static/chunks/ProductShelf.9cea36116836c161.js +1 -0
- package/.next/static/chunks/ProductTiles.059a4a6360e1d4ea.js +1 -0
- package/.next/static/chunks/RegionModal.4594b707a1092551.js +1 -0
- package/.next/static/chunks/UIBannerText.45cf608e46cde628.js +1 -0
- package/.next/static/chunks/UIButton.3186f933c0ecfb31.js +1 -0
- package/.next/static/chunks/UISKUMatrixSidebar.9ac3980a60cfc358.js +1 -0
- package/.next/static/chunks/UIToast.221eb10681d2f642.js +1 -0
- package/.next/static/chunks/pages/{404-8e61ea158e7b314c.js → 404-6300c433469b7262.js} +1 -1
- package/.next/static/chunks/pages/{500-68f51177e64de6e7.js → 500-2d1dd344c8a8827f.js} +1 -1
- package/.next/static/chunks/pages/[...slug]-c1a62d58f5940747.js +1 -0
- package/.next/static/chunks/pages/[slug]/p-555dc09a5e78260e.js +1 -0
- package/.next/static/chunks/pages/_app-929466ed763a6d46.js +1 -0
- package/.next/static/chunks/pages/account/{profile-1fdb500de8f12b3a.js → profile-23b2e9fbbd95a30b.js} +1 -1
- package/.next/static/chunks/pages/{checkout-0dfe0dc9cee443ba.js → checkout-93b647fc45454d97.js} +1 -1
- package/.next/static/chunks/pages/{index-d36123e232b889d8.js → index-07bc320fc045538c.js} +1 -1
- package/.next/static/chunks/pages/{login-b59ea5561defc0d4.js → login-2454f1cd309c27d2.js} +1 -1
- package/.next/static/chunks/pages/{s-6120de2f57d674fc.js → s-9901e6857f517b8b.js} +1 -1
- package/.next/static/chunks/webpack-c2eed1e0b727b3ee.js +1 -0
- package/.next/static/css/b8945ac5f5327c34.css +1 -0
- package/.next/static/css/{f03f8973f7c72071.css → dbbb10bf2f162a58.css} +1 -1
- package/.next/trace +113 -109
- package/.turbo/turbo-build.log +25 -25
- package/.turbo/turbo-test.log +5 -5
- package/@generated/gql.ts +18 -2
- package/@generated/graphql.ts +58 -1
- package/@generated/persisted-documents.json +3 -1
- package/@generated/schema.graphql +14 -0
- package/CHANGELOG.md +12 -0
- package/cms/faststore/sections.json +110 -1
- package/discovery.config.default.js +12 -0
- package/package.json +7 -6
- package/src/Layout.tsx +2 -0
- package/src/components/cms/GlobalSections.tsx +13 -9
- package/src/components/cms/global/Components.ts +2 -0
- package/src/components/region/RegionBar/RegionBar.tsx +35 -2
- package/src/components/region/RegionButton/RegionButton.tsx +41 -6
- package/src/components/region/RegionModal/RegionModal.tsx +46 -34
- package/src/components/region/RegionModal/useRegion.ts +79 -0
- package/src/components/region/RegionModal/useRegionModal.ts +44 -0
- package/src/components/region/RegionPopover/RegionPopover.tsx +174 -0
- package/src/components/region/RegionPopover/index.ts +1 -0
- package/src/components/region/RegionPopover/section.module.scss +9 -0
- package/src/components/search/SearchInput/SearchInput.tsx +2 -2
- package/src/components/sections/Navbar/section.module.scss +3 -0
- package/src/components/sections/RegionBar/RegionBar.tsx +8 -3
- package/src/components/templates/LandingPage/LandingPage.tsx +22 -18
- package/src/components/templates/ProductListingPage/ProductListing.tsx +6 -1
- package/src/constants.ts +1 -0
- package/src/experimental/searchServerSideFunctions/getServerSideProps.ts +8 -5
- package/src/experimental/searchServerSideFunctions/getStaticProps.ts +9 -7
- package/src/pages/404.tsx +6 -5
- package/src/pages/500.tsx +6 -5
- package/src/pages/[...slug].tsx +11 -4
- package/src/pages/[slug]/p.tsx +16 -6
- package/src/pages/_app.tsx +4 -2
- package/src/pages/api/preview.ts +43 -18
- package/src/pages/index.tsx +9 -7
- package/src/pages/login.tsx +6 -5
- package/src/sdk/error/MissingContentError/MissingContentError.ts +6 -4
- package/src/sdk/error/MultipleContentError/MultipleContentError.ts +6 -4
- package/src/sdk/geolocation/useGeolocation.ts +42 -0
- package/src/sdk/product/index.ts +21 -0
- package/src/sdk/profile/index.ts +31 -0
- package/src/sdk/session/index.ts +37 -0
- package/src/sdk/ui/useOnClickOutside.ts +3 -38
- package/src/server/cms/index.ts +1 -2
- package/src/server/content/service.ts +227 -0
- package/src/server/content/types.ts +26 -0
- package/src/server/content/utils.ts +8 -0
- package/src/utils/utilities.ts +9 -1
- package/test/server/index.test.ts +1 -0
- package/.next/server/chunks/3105.js +0 -6
- package/.next/server/chunks/3779.js +0 -1
- package/.next/server/chunks/4444.js +0 -6
- package/.next/server/chunks/6026.js +0 -9
- package/.next/server/chunks/6030.js +0 -1
- package/.next/server/chunks/7337.js +0 -1
- package/.next/server/chunks/7675.js +0 -1
- package/.next/server/chunks/9594.js +0 -1
- package/.next/static/Ra_8xXVEVCNHcT2KePSUO/_buildManifest.js +0 -1
- package/.next/static/chunks/1036.27f5244aaf7d0915.js +0 -1
- package/.next/static/chunks/1173.5e86a9295010b785.js +0 -1
- package/.next/static/chunks/1552.e7cece605fc2e1cd.js +0 -1
- package/.next/static/chunks/3684.ba7a2a994988063b.js +0 -1
- package/.next/static/chunks/417.c39c1c5e5ef57b4a.js +0 -1
- package/.next/static/chunks/485.a35fab0c7c75a11b.js +0 -1
- package/.next/static/chunks/6167-ecb49640dcb9d566.js +0 -28
- package/.next/static/chunks/6335-5870fc075bf96b86.js +0 -1
- package/.next/static/chunks/6536.cd75ac69c241a35c.js +0 -1
- package/.next/static/chunks/7498-415859c993f5002b.js +0 -1
- package/.next/static/chunks/7959.9d31abae51a7e419.js +0 -1
- package/.next/static/chunks/9.e42e9b7463b94493.js +0 -1
- package/.next/static/chunks/BannerNewsletter.06b2b9724aa3c3ea.js +0 -1
- package/.next/static/chunks/CartItem.44cc90c698a69889.js +0 -1
- package/.next/static/chunks/Newsletter.d775e641d99322e6.js +0 -1
- package/.next/static/chunks/OrderSummary.8f34504b20564fec.js +0 -1
- package/.next/static/chunks/ProductShelf.0b5a71a93bca3148.js +0 -1
- package/.next/static/chunks/ProductTiles.a75612c0bcf990d6.js +0 -1
- package/.next/static/chunks/RegionModal.68b05bfd591d27fc.js +0 -1
- package/.next/static/chunks/UIBannerText.5ee380812ac3772c.js +0 -1
- package/.next/static/chunks/UIButton.c7a3273ac6ee5da5.js +0 -1
- package/.next/static/chunks/UISKUMatrixSidebar.c68540bda6d40e13.js +0 -1
- package/.next/static/chunks/UIToast.85ae30e3e8cc5ec7.js +0 -1
- package/.next/static/chunks/pages/[...slug]-f4fd6c8d7dc53f8f.js +0 -1
- package/.next/static/chunks/pages/[slug]/p-3b513ae37c648620.js +0 -1
- package/.next/static/chunks/pages/_app-0f16b6b5d7dfab2a.js +0 -1
- package/.next/static/chunks/webpack-d72e5eb27bf80195.js +0 -1
- package/.next/static/css/31fb64e064998460.css +0 -1
- /package/.next/static/{Ra_8xXVEVCNHcT2KePSUO → U_9W0qMyv_4RQSLFdrtHC}/_ssgManifest.js +0 -0
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import type { Options } from 'src/server/cms'
|
|
2
|
+
import type { EntryPathParams } from '@vtex/client-cp'
|
|
3
|
+
import { contentSource } from 'discovery.config.default'
|
|
2
4
|
|
|
3
5
|
export default class MultipleContentError extends Error {
|
|
4
|
-
constructor(
|
|
6
|
+
constructor(params: Options | EntryPathParams) {
|
|
5
7
|
super(
|
|
6
|
-
`Multiple content defined on the
|
|
7
|
-
|
|
8
|
+
`Multiple content defined on the ${contentSource.type} for content type ${
|
|
9
|
+
params.contentType
|
|
8
10
|
}. Remove duplicated content before proceeding. Context: ${JSON.stringify(
|
|
9
|
-
|
|
11
|
+
params,
|
|
10
12
|
null,
|
|
11
13
|
2
|
|
12
14
|
)}`
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { useEffect } from 'react'
|
|
2
|
+
|
|
3
|
+
import { deliveryPromise } from 'discovery.config'
|
|
4
|
+
import { TIME_TO_VALIDATE_SESSION } from 'src/constants'
|
|
5
|
+
import { sessionStore, validateSession } from 'src/sdk/session'
|
|
6
|
+
|
|
7
|
+
async function askGeolocationConsent() {
|
|
8
|
+
const { postalCode: stalePostalCode, geoCoordinates: staleGeoCoordinates } =
|
|
9
|
+
sessionStore.read()
|
|
10
|
+
|
|
11
|
+
if (navigator?.geolocation && (!stalePostalCode || !staleGeoCoordinates)) {
|
|
12
|
+
navigator.geolocation.getCurrentPosition(
|
|
13
|
+
async ({ coords: { latitude, longitude } }) => {
|
|
14
|
+
// Revalidate the session because users can set a zip code while granting consent.
|
|
15
|
+
const revalidatedSession = sessionStore.read()
|
|
16
|
+
if (
|
|
17
|
+
revalidatedSession.postalCode ||
|
|
18
|
+
revalidatedSession.geoCoordinates
|
|
19
|
+
) {
|
|
20
|
+
return
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const newSession = {
|
|
24
|
+
...revalidatedSession,
|
|
25
|
+
geoCoordinates: { latitude, longitude },
|
|
26
|
+
}
|
|
27
|
+
const validatedSession = await validateSession(newSession)
|
|
28
|
+
sessionStore.set(validatedSession ?? newSession)
|
|
29
|
+
}
|
|
30
|
+
)
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export default function useGeolocation() {
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
if (!deliveryPromise.enabled) {
|
|
37
|
+
return
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
setTimeout(() => askGeolocationConsent(), TIME_TO_VALIDATE_SESSION)
|
|
41
|
+
}, [])
|
|
42
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { gql } from '@generated'
|
|
2
|
+
|
|
3
|
+
import type {
|
|
4
|
+
ClientProductCountQueryQuery as Query,
|
|
5
|
+
ClientProductCountQueryQueryVariables as Variables,
|
|
6
|
+
} from '@generated/graphql'
|
|
7
|
+
import { request } from '../graphql/request'
|
|
8
|
+
|
|
9
|
+
export const query = gql(`
|
|
10
|
+
query ClientProductCountQuery($term: String) {
|
|
11
|
+
productCount(term: $term) {
|
|
12
|
+
total
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
`)
|
|
16
|
+
|
|
17
|
+
export const getProductCount = async (term?: string) => {
|
|
18
|
+
const { productCount } = await request<Query, Variables>(query, { term })
|
|
19
|
+
|
|
20
|
+
return productCount.total
|
|
21
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { gql } from '@generated'
|
|
2
|
+
|
|
3
|
+
import type {
|
|
4
|
+
ClientProfileQueryQuery as Query,
|
|
5
|
+
ClientProfileQueryQueryVariables as Variables,
|
|
6
|
+
} from '@generated/graphql'
|
|
7
|
+
import { request } from '../graphql/request'
|
|
8
|
+
|
|
9
|
+
export const query = gql(`
|
|
10
|
+
query ClientProfileQuery($id: String!) {
|
|
11
|
+
profile(id: $id) {
|
|
12
|
+
addresses {
|
|
13
|
+
country
|
|
14
|
+
postalCode
|
|
15
|
+
geoCoordinate
|
|
16
|
+
city
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
`)
|
|
21
|
+
|
|
22
|
+
export const getAddresses = async (id: string) => {
|
|
23
|
+
const data = await request<Query, Variables>(query, { id })
|
|
24
|
+
return data.profile.addresses
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export const getSavedAddress = async (id: string) => {
|
|
28
|
+
const addresses = await getAddresses(id)
|
|
29
|
+
// returning the first address of the list because there is no favorite address feature
|
|
30
|
+
return addresses ? addresses[0] : null
|
|
31
|
+
}
|
package/src/sdk/session/index.ts
CHANGED
|
@@ -10,6 +10,7 @@ import type {
|
|
|
10
10
|
import storeConfig from '../../../discovery.config'
|
|
11
11
|
import { cartStore } from '../cart'
|
|
12
12
|
import { request } from '../graphql/request'
|
|
13
|
+
import { getSavedAddress } from '../profile'
|
|
13
14
|
import { createValidationStore, useStore } from '../useStore'
|
|
14
15
|
|
|
15
16
|
export const mutation = gql(`
|
|
@@ -20,6 +21,7 @@ export const mutation = gql(`
|
|
|
20
21
|
country
|
|
21
22
|
addressType
|
|
22
23
|
postalCode
|
|
24
|
+
city
|
|
23
25
|
deliveryMode {
|
|
24
26
|
deliveryChannel
|
|
25
27
|
deliveryMethod
|
|
@@ -58,6 +60,41 @@ export const mutation = gql(`
|
|
|
58
60
|
`)
|
|
59
61
|
|
|
60
62
|
export const validateSession = async (session: Session) => {
|
|
63
|
+
// If deliveryPromise is enabled and there is no postalCode in the session
|
|
64
|
+
if (storeConfig.deliveryPromise?.enabled && !session.postalCode) {
|
|
65
|
+
const isLoggedIn = !!session.person?.id
|
|
66
|
+
|
|
67
|
+
// If user is logged try to get the location (postalCode / geoCoordinates / country) from the user's address
|
|
68
|
+
if (isLoggedIn) {
|
|
69
|
+
const userId = session.person?.id
|
|
70
|
+
const address = await getSavedAddress(userId)
|
|
71
|
+
|
|
72
|
+
// Save the location in the session
|
|
73
|
+
if (address) {
|
|
74
|
+
sessionStore.set({
|
|
75
|
+
...session,
|
|
76
|
+
city: address?.city,
|
|
77
|
+
postalCode: address?.postalCode,
|
|
78
|
+
geoCoordinates: {
|
|
79
|
+
// the values come in the reverse expected order
|
|
80
|
+
latitude: address?.geoCoordinate ? address?.geoCoordinate[1] : null,
|
|
81
|
+
longitude: address?.geoCoordinate
|
|
82
|
+
? address?.geoCoordinate[0]
|
|
83
|
+
: null,
|
|
84
|
+
},
|
|
85
|
+
country: address?.country,
|
|
86
|
+
})
|
|
87
|
+
}
|
|
88
|
+
} else {
|
|
89
|
+
// Use the initial postalCode defined in discovery.config.js
|
|
90
|
+
const initialPostalCode = defaultStore.readInitial().postalCode
|
|
91
|
+
|
|
92
|
+
if (!!initialPostalCode) {
|
|
93
|
+
sessionStore.set({ ...session, postalCode: initialPostalCode })
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
61
98
|
const data = await request<
|
|
62
99
|
ValidateSessionMutation,
|
|
63
100
|
ValidateSessionMutationVariables
|
|
@@ -1,38 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
type Handler = (event: any) => void
|
|
5
|
-
|
|
6
|
-
export default function useOnClickOutside<T extends HTMLElement = HTMLElement>(
|
|
7
|
-
ref: RefObject<T>,
|
|
8
|
-
handler: Handler
|
|
9
|
-
) {
|
|
10
|
-
useEffect(
|
|
11
|
-
() => {
|
|
12
|
-
const listener: Handler = (event) => {
|
|
13
|
-
if (!ref.current || ref.current.contains(event.target)) {
|
|
14
|
-
return
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
handler(event)
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
document.addEventListener('mousedown', listener)
|
|
21
|
-
document.addEventListener('touchstart', listener)
|
|
22
|
-
|
|
23
|
-
return () => {
|
|
24
|
-
document.removeEventListener('mousedown', listener)
|
|
25
|
-
document.removeEventListener('touchstart', listener)
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
/**
|
|
29
|
-
* Add ref and handler to effect dependencies.
|
|
30
|
-
* It's worth noting that because passed in handler is a new
|
|
31
|
-
* function on every render that will cause this effect
|
|
32
|
-
* callback/cleanup to run every render. It's not a big deal
|
|
33
|
-
* but to optimize you can wrap handler in useCallback before
|
|
34
|
-
* passing it into this hook.
|
|
35
|
-
*/
|
|
36
|
-
[ref, handler]
|
|
37
|
-
)
|
|
38
|
-
}
|
|
1
|
+
// This hook was moved to the UI package, this export is to avoid breaking changes
|
|
2
|
+
// TODO: remove in the next major release
|
|
3
|
+
export { useOnClickOutside as default } from '@faststore/ui'
|
package/src/server/cms/index.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { ContentData, ContentTypeOptions, Locator } from '@vtex/client-cms'
|
|
2
2
|
import ClientCMS from '@vtex/client-cms'
|
|
3
3
|
|
|
4
|
-
import MissingContentError from 'src/sdk/error/MissingContentError'
|
|
5
4
|
import MultipleContentError from 'src/sdk/error/MultipleContentError'
|
|
6
5
|
import config from '../../../discovery.config'
|
|
7
6
|
|
|
@@ -57,7 +56,7 @@ export type PageContentType = ContentData & {
|
|
|
57
56
|
}
|
|
58
57
|
}
|
|
59
58
|
|
|
60
|
-
const isLocator = (x: any): x is Locator =>
|
|
59
|
+
export const isLocator = (x: any): x is Locator =>
|
|
61
60
|
typeof x.contentType === 'string' &&
|
|
62
61
|
(typeof x.releaseId === 'string' ||
|
|
63
62
|
typeof x.documentId === 'string' ||
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import type { ContentData, Locator } from '@vtex/client-cms'
|
|
2
|
+
import ClientCP from '@vtex/client-cp'
|
|
3
|
+
import type { ContentEntry, EntryPathParams } from '@vtex/client-cp'
|
|
4
|
+
import { getCMSPage, getPage, type PageContentType } from 'src/server/cms'
|
|
5
|
+
import type { ContentOptions, ContentParams } from './types'
|
|
6
|
+
import config from '../../../discovery.config'
|
|
7
|
+
import { getPLP, type PLPContentType } from '../cms/plp'
|
|
8
|
+
import {
|
|
9
|
+
findBestPDPTemplate,
|
|
10
|
+
findBestPLPTemplate,
|
|
11
|
+
type Rewrite,
|
|
12
|
+
type RewritesConfig,
|
|
13
|
+
} from 'src/utils/multipleTemplates'
|
|
14
|
+
import MissingContentError from 'src/sdk/error/MissingContentError'
|
|
15
|
+
import { getPDP, type PDPContentType } from '../cms/pdp'
|
|
16
|
+
import MultipleContentError from 'src/sdk/error/MultipleContentError'
|
|
17
|
+
import type { ServerProductQueryQuery } from '@generated/graphql'
|
|
18
|
+
import { isContentPlatformSource } from './utils'
|
|
19
|
+
|
|
20
|
+
export class ContentService {
|
|
21
|
+
private clientCP: ClientCP
|
|
22
|
+
|
|
23
|
+
constructor() {
|
|
24
|
+
this.clientCP = new ClientCP({
|
|
25
|
+
tenant: config.api.storeId,
|
|
26
|
+
})
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
async getSingleContent<T extends ContentData>(
|
|
30
|
+
params: ContentParams
|
|
31
|
+
): Promise<T> {
|
|
32
|
+
const options = this.createContentOptions(params)
|
|
33
|
+
|
|
34
|
+
if (isContentPlatformSource()) {
|
|
35
|
+
return this.getFromCP<T>(options)
|
|
36
|
+
}
|
|
37
|
+
return getPage(options.cmsOptions)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
async getContent(params: ContentParams) {
|
|
41
|
+
const options = this.createContentOptions(params)
|
|
42
|
+
|
|
43
|
+
if (isContentPlatformSource()) {
|
|
44
|
+
const serviceParams = this.convertOptionsToParams(options)
|
|
45
|
+
const { entries } = await this.clientCP.listEntries(serviceParams)
|
|
46
|
+
const data = await Promise.all(
|
|
47
|
+
entries.map(async (entry) => {
|
|
48
|
+
const entryData = await this.getSingleEntry(
|
|
49
|
+
{ ...serviceParams, entryId: entry.id },
|
|
50
|
+
!!options.isPreview
|
|
51
|
+
)
|
|
52
|
+
return this.mergeEntryWithData(entry, entryData)
|
|
53
|
+
})
|
|
54
|
+
)
|
|
55
|
+
return { data }
|
|
56
|
+
}
|
|
57
|
+
return getCMSPage(options.cmsOptions)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
async getPlpContent(
|
|
61
|
+
params: ContentParams,
|
|
62
|
+
rewrites: Rewrite[] | RewritesConfig
|
|
63
|
+
): Promise<PLPContentType> {
|
|
64
|
+
const plpParams = { ...params, contentType: 'plp' }
|
|
65
|
+
const options = this.createContentOptions(plpParams)
|
|
66
|
+
|
|
67
|
+
if (isContentPlatformSource()) {
|
|
68
|
+
const pages = (await this.getContent(plpParams)).data
|
|
69
|
+
if (!pages?.length) throw new MissingContentError(options.cmsOptions)
|
|
70
|
+
return findBestPLPTemplate(
|
|
71
|
+
pages,
|
|
72
|
+
options.slug,
|
|
73
|
+
rewrites
|
|
74
|
+
) as PLPContentType
|
|
75
|
+
}
|
|
76
|
+
return getPLP(options.slug, options.cmsOptions as Locator, rewrites)
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
async getPdpContent(
|
|
80
|
+
product: ServerProductQueryQuery['product'],
|
|
81
|
+
params: ContentParams
|
|
82
|
+
): Promise<PDPContentType> {
|
|
83
|
+
const pdpParams = { ...params, contentType: 'pdp' }
|
|
84
|
+
const options = this.createContentOptions(pdpParams)
|
|
85
|
+
|
|
86
|
+
if (isContentPlatformSource()) {
|
|
87
|
+
const pages = (await this.getContent(pdpParams)).data
|
|
88
|
+
if (!pages.length) throw new MissingContentError(options.cmsOptions)
|
|
89
|
+
return findBestPDPTemplate(pages, product) as PDPContentType
|
|
90
|
+
}
|
|
91
|
+
return getPDP(product, options.cmsOptions as Locator)
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
private async getFromCP<T extends ContentData>(
|
|
95
|
+
options: ContentOptions
|
|
96
|
+
): Promise<T> {
|
|
97
|
+
const params = this.convertOptionsToParams(options)
|
|
98
|
+
try {
|
|
99
|
+
const entry: PageContentType =
|
|
100
|
+
params.entryId || params.slug
|
|
101
|
+
? await this.getSingleEntry(params, !!options.isPreview)
|
|
102
|
+
: await this.fetchFirstEntry(params, !!options.isPreview)
|
|
103
|
+
|
|
104
|
+
return entry as T
|
|
105
|
+
} catch (err: unknown) {
|
|
106
|
+
if (isNotFoundError(err)) console.error('Content not found', err)
|
|
107
|
+
else throw err
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
private async getSingleEntry(
|
|
112
|
+
params: EntryPathParams,
|
|
113
|
+
isPreview: boolean
|
|
114
|
+
): Promise<PageContentType> {
|
|
115
|
+
if (isPreview) {
|
|
116
|
+
if (params.entryId)
|
|
117
|
+
return this.clientCP.previewEntryById(
|
|
118
|
+
params
|
|
119
|
+
) as Promise<PageContentType>
|
|
120
|
+
if (params.slug)
|
|
121
|
+
return this.clientCP.previewEntryBySlug(
|
|
122
|
+
params
|
|
123
|
+
) as Promise<PageContentType>
|
|
124
|
+
throw new Error('Preview requires entryId or slug')
|
|
125
|
+
}
|
|
126
|
+
if (params.entryId)
|
|
127
|
+
return this.clientCP.getEntry(params) as Promise<PageContentType>
|
|
128
|
+
if (params.slug)
|
|
129
|
+
return this.clientCP.getEntryBySlug(params) as Promise<PageContentType>
|
|
130
|
+
throw new Error('getEntry requires entryId or slug')
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
private async fetchFirstEntry(
|
|
134
|
+
params: EntryPathParams,
|
|
135
|
+
isPreview: boolean
|
|
136
|
+
): Promise<PageContentType> {
|
|
137
|
+
const { entries } = await this.clientCP.listEntries(params)
|
|
138
|
+
if (!entries || entries.length === 0) {
|
|
139
|
+
console.error('No entries found for params', params)
|
|
140
|
+
return {} as PageContentType
|
|
141
|
+
}
|
|
142
|
+
if (entries.length > 1) {
|
|
143
|
+
throw new MultipleContentError(params)
|
|
144
|
+
}
|
|
145
|
+
return this.getSingleEntry({ ...params, entryId: entries[0].id }, isPreview)
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
private mergeEntryWithData(
|
|
149
|
+
entry: ContentEntry,
|
|
150
|
+
data: PageContentType
|
|
151
|
+
): ContentEntry & PageContentType {
|
|
152
|
+
return {
|
|
153
|
+
...entry,
|
|
154
|
+
...data,
|
|
155
|
+
id: entry.id,
|
|
156
|
+
name: entry.name || '',
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
private convertOptionsToParams(options: ContentOptions): EntryPathParams {
|
|
161
|
+
const { cmsOptions } = options
|
|
162
|
+
const params: Partial<EntryPathParams> = {
|
|
163
|
+
accountName: config.api.storeId,
|
|
164
|
+
storeId: 'faststore',
|
|
165
|
+
contentType: cmsOptions.contentType,
|
|
166
|
+
slug: options.slug,
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
if ('documentId' in cmsOptions && cmsOptions.documentId) {
|
|
170
|
+
params.entryId = cmsOptions.documentId
|
|
171
|
+
}
|
|
172
|
+
if ('versionId' in cmsOptions && cmsOptions.versionId) {
|
|
173
|
+
params.branchId = cmsOptions.versionId
|
|
174
|
+
}
|
|
175
|
+
if ('releaseId' in cmsOptions && cmsOptions.releaseId) {
|
|
176
|
+
params.branchId = cmsOptions.releaseId
|
|
177
|
+
}
|
|
178
|
+
if ('filters' in cmsOptions && cmsOptions.filters) {
|
|
179
|
+
const nested = cmsOptions.filters.filters as Record<string, any>
|
|
180
|
+
if (nested['settings.seo.slug']) {
|
|
181
|
+
const seo = nested['settings.seo.slug'] as string
|
|
182
|
+
params.slug = seo.replace(/^\//, '')
|
|
183
|
+
}
|
|
184
|
+
Object.assign(params, cmsOptions.filters)
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
return params as EntryPathParams
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
private createContentOptions(params: ContentParams): ContentOptions {
|
|
191
|
+
const {
|
|
192
|
+
contentType,
|
|
193
|
+
previewData,
|
|
194
|
+
slug,
|
|
195
|
+
documentId,
|
|
196
|
+
versionId,
|
|
197
|
+
releaseId,
|
|
198
|
+
filters,
|
|
199
|
+
} = params
|
|
200
|
+
|
|
201
|
+
const isPreview = previewData?.contentType === contentType
|
|
202
|
+
const { slug: _, ...previewLocator } = previewData || {}
|
|
203
|
+
|
|
204
|
+
const cmsOptions = {
|
|
205
|
+
contentType,
|
|
206
|
+
...(isPreview ? previewLocator : {}),
|
|
207
|
+
...(documentId !== undefined && { documentId }),
|
|
208
|
+
...(versionId !== undefined && { versionId }),
|
|
209
|
+
...(releaseId !== undefined && { releaseId }),
|
|
210
|
+
...(filters && { filters }),
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
return {
|
|
214
|
+
cmsOptions,
|
|
215
|
+
...(slug !== undefined && { slug }),
|
|
216
|
+
isPreview,
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
function isNotFoundError(err: unknown): boolean {
|
|
222
|
+
if (err instanceof MissingContentError) return true
|
|
223
|
+
if (err instanceof Error && /\b404\b/.test(err.message)) return true
|
|
224
|
+
return false
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
export const contentService = new ContentService()
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Locator } from '@vtex/client-cms'
|
|
2
|
+
import type { Options } from '../cms'
|
|
3
|
+
|
|
4
|
+
export const ContentSourceType = {
|
|
5
|
+
ContentPlatform: 'cp',
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export type PreviewData = Locator & {
|
|
9
|
+
slug?: string
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface ContentParams {
|
|
13
|
+
contentType?: string
|
|
14
|
+
previewData?: PreviewData | null
|
|
15
|
+
slug?: string
|
|
16
|
+
documentId?: string
|
|
17
|
+
versionId?: string
|
|
18
|
+
releaseId?: string
|
|
19
|
+
filters?: Record<string, any>
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface ContentOptions {
|
|
23
|
+
cmsOptions: Options
|
|
24
|
+
slug?: string
|
|
25
|
+
isPreview: boolean
|
|
26
|
+
}
|
package/src/utils/utilities.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//Input "Example Text!". Output: example-text
|
|
1
|
+
// Input "Example Text!". Output: example-text
|
|
2
2
|
export function textToKebabCase(text: string): string {
|
|
3
3
|
// Replace spaces and special characters with hyphens
|
|
4
4
|
let kebabCase = text.replace(/[^\w\s]/gi, '-')
|
|
@@ -11,3 +11,11 @@ export function textToKebabCase(text: string): string {
|
|
|
11
11
|
|
|
12
12
|
return kebabCase ?? ''
|
|
13
13
|
}
|
|
14
|
+
|
|
15
|
+
// Input "EXAMPLE text!". Output: "Example Text!"
|
|
16
|
+
export function textToTitleCase(text: string): string {
|
|
17
|
+
return text.replace(
|
|
18
|
+
/\S+/g,
|
|
19
|
+
(word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()
|
|
20
|
+
)
|
|
21
|
+
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
exports.id=3105,exports.ids=[3105],exports.modules={30033:(e,t,n)=>{"use strict";let r=["strategy","src","children","dangerouslySetInnerHTML"],i=["strategy"],o=["crossOrigin","nonce"],a=["strategy","children","dangerouslySetInnerHTML","src"];function ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(n),!0).forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ownKeys(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function _objectWithoutProperties(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{Head:function(){return Head},NextScript:function(){return NextScript},Html:function(){return Html},Main:function(){return Main},default:function(){return Document}});let s=_interop_require_default(n(16689)),l=n(81123),c=n(67212),u=n(81453),p=_interop_require_default(n(61003)),d=n(75870);function _interop_require_default(e){return e&&e.__esModule?e:{default:e}}let f=new Set;function getDocumentFiles(e,t,n){let r=(0,c.getPageFiles)(e,"/_app"),i=n?[]:(0,c.getPageFiles)(e,t);return{sharedFiles:r,pageFiles:i,allFiles:[...new Set([...r,...i])]}}function getPolyfillScripts(e,t){let{assetPrefix:n,buildManifest:r,assetQueryString:i,disableOptimizedLoading:o,crossOrigin:a}=e;return r.polyfillFiles.filter(e=>e.endsWith(".js")&&!e.endsWith(".module.js")).map(e=>s.default.createElement("script",{key:e,defer:!o,nonce:t.nonce,crossOrigin:t.crossOrigin||a,noModule:!0,src:`${n}/_next/${e}${i}`}))}function AmpStyles({styles:e}){if(!e)return null;let t=Array.isArray(e)?e:[];if(e.props&&Array.isArray(e.props.children)){let hasStyles=e=>{var t,n;return null==e?void 0:null==(n=e.props)?void 0:null==(t=n.dangerouslySetInnerHTML)?void 0:t.__html};e.props.children.forEach(e=>{Array.isArray(e)?e.forEach(e=>hasStyles(e)&&t.push(e)):hasStyles(e)&&t.push(e)})}return s.default.createElement("style",{"amp-custom":"",dangerouslySetInnerHTML:{__html:t.map(e=>e.props.dangerouslySetInnerHTML.__html).join("").replace(/\/\*# sourceMappingURL=.*\*\//g,"").replace(/\/\*@ sourceURL=.*?\*\//g,"")}})}function getDynamicChunks(e,t,n){let{dynamicImports:r,assetPrefix:i,isDevelopment:o,assetQueryString:a,disableOptimizedLoading:l,crossOrigin:c}=e;return r.map(e=>!e.endsWith(".js")||n.allFiles.includes(e)?null:s.default.createElement("script",{async:!o&&l,defer:!l,key:e,src:`${i}/_next/${encodeURI(e)}${a}`,nonce:t.nonce,crossOrigin:t.crossOrigin||c}))}function getScripts(e,t,n){var r;let{assetPrefix:i,buildManifest:o,isDevelopment:a,assetQueryString:l,disableOptimizedLoading:c,crossOrigin:u}=e,p=n.allFiles.filter(e=>e.endsWith(".js")),d=null==(r=o.lowPriorityFiles)?void 0:r.filter(e=>e.endsWith(".js"));return[...p,...d].map(e=>s.default.createElement("script",{key:e,src:`${i}/_next/${encodeURI(e)}${l}`,nonce:t.nonce,async:!a&&c,defer:!c,crossOrigin:t.crossOrigin||u}))}function getPreNextScripts(e,t){let{scriptLoader:n,disableOptimizedLoading:o,crossOrigin:a}=e,l=function(e,t){let{assetPrefix:n,scriptLoader:i,crossOrigin:o,nextScriptWorkers:a}=e;if(!a)return null;try{let{partytownSnippet:e}=require("@builder.io/partytown/integration"),a=Array.isArray(t.children)?t.children:[t.children],l=a.find(e=>{var t,n;return!!e&&!!e.props&&(null==e?void 0:null==(n=e.props)?void 0:null==(t=n.dangerouslySetInnerHTML)?void 0:t.__html.length)&&"data-partytown-config"in e.props});return s.default.createElement(s.default.Fragment,null,!l&&s.default.createElement("script",{"data-partytown-config":"",dangerouslySetInnerHTML:{__html:`
|
|
2
|
-
partytown = {
|
|
3
|
-
lib: "${n}/_next/static/~partytown/"
|
|
4
|
-
};
|
|
5
|
-
`}}),s.default.createElement("script",{"data-partytown":"",dangerouslySetInnerHTML:{__html:e()}}),(i.worker||[]).map((e,n)=>{let{strategy:i,src:a,children:l,dangerouslySetInnerHTML:c}=e,u=_objectWithoutProperties(e,r),p={};if(a)p.src=a;else if(c&&c.__html)p.dangerouslySetInnerHTML={__html:c.__html};else if(l)p.dangerouslySetInnerHTML={__html:"string"==typeof l?l:Array.isArray(l)?l.join(""):""};else throw Error("Invalid usage of next/script. Did you forget to include a src attribute or an inline script? https://nextjs.org/docs/messages/invalid-script");return s.default.createElement("script",_objectSpread(_objectSpread(_objectSpread({},p),u),{},{type:"text/partytown",key:a||n,nonce:t.nonce,"data-nscript":"worker",crossOrigin:t.crossOrigin||o}))}))}catch(e){return(0,p.default)(e)&&"MODULE_NOT_FOUND"!==e.code&&console.warn(`Warning: ${e.message}`),null}}(e,t),c=(n.beforeInteractive||[]).filter(e=>e.src).map((e,n)=>{let{strategy:r}=e,l=_objectWithoutProperties(e,i);return s.default.createElement("script",_objectSpread(_objectSpread({},l),{},{key:l.src||n,defer:l.defer??!o,nonce:t.nonce,"data-nscript":"beforeInteractive",crossOrigin:t.crossOrigin||a}))});return s.default.createElement(s.default.Fragment,null,l,c)}let Head=class Head extends s.default.Component{getCssLinks(e){let{assetPrefix:t,assetQueryString:n,dynamicImports:r,crossOrigin:i,optimizeCss:o,optimizeFonts:a}=this.context,l=e.allFiles.filter(e=>e.endsWith(".css")),c=new Set(e.sharedFiles),u=new Set([]),p=Array.from(new Set(r.filter(e=>e.endsWith(".css"))));if(p.length){let e=new Set(l);p=p.filter(t=>!(e.has(t)||c.has(t))),u=new Set(p),l.push(...p)}let d=[];return l.forEach(e=>{let r=c.has(e);o||d.push(s.default.createElement("link",{key:`${e}-preload`,nonce:this.props.nonce,rel:"preload",href:`${t}/_next/${encodeURI(e)}${n}`,as:"style",crossOrigin:this.props.crossOrigin||i}));let a=u.has(e);d.push(s.default.createElement("link",{key:e,nonce:this.props.nonce,rel:"stylesheet",href:`${t}/_next/${encodeURI(e)}${n}`,crossOrigin:this.props.crossOrigin||i,"data-n-g":a?void 0:r?"":void 0,"data-n-p":a?void 0:r?void 0:""}))}),a&&(d=this.makeStylesheetInert(d)),0===d.length?null:d}getPreloadDynamicChunks(){let{dynamicImports:e,assetPrefix:t,assetQueryString:n,crossOrigin:r}=this.context;return e.map(e=>e.endsWith(".js")?s.default.createElement("link",{rel:"preload",key:e,href:`${t}/_next/${encodeURI(e)}${n}`,as:"script",nonce:this.props.nonce,crossOrigin:this.props.crossOrigin||r}):null).filter(Boolean)}getPreloadMainLinks(e){let{assetPrefix:t,assetQueryString:n,scriptLoader:r,crossOrigin:i}=this.context,o=e.allFiles.filter(e=>e.endsWith(".js"));return[...(r.beforeInteractive||[]).map(e=>s.default.createElement("link",{key:e.src,nonce:this.props.nonce,rel:"preload",href:e.src,as:"script",crossOrigin:this.props.crossOrigin||i})),...o.map(e=>s.default.createElement("link",{key:e,nonce:this.props.nonce,rel:"preload",href:`${t}/_next/${encodeURI(e)}${n}`,as:"script",crossOrigin:this.props.crossOrigin||i}))]}getBeforeInteractiveInlineScripts(){let{scriptLoader:e}=this.context,{nonce:t,crossOrigin:n}=this.props;return(e.beforeInteractive||[]).filter(e=>!e.src&&(e.dangerouslySetInnerHTML||e.children)).map((e,r)=>{let{strategy:i,children:o,dangerouslySetInnerHTML:l,src:c}=e,u=_objectWithoutProperties(e,a),p="";return l&&l.__html?p=l.__html:o&&(p="string"==typeof o?o:Array.isArray(o)?o.join(""):""),s.default.createElement("script",_objectSpread(_objectSpread({},u),{},{dangerouslySetInnerHTML:{__html:p},key:u.id||r,nonce:t,"data-nscript":"beforeInteractive",crossOrigin:n||void 0}))})}getDynamicChunks(e){return getDynamicChunks(this.context,this.props,e)}getPreNextScripts(){return getPreNextScripts(this.context,this.props)}getScripts(e){return getScripts(this.context,this.props,e)}getPolyfillScripts(){return getPolyfillScripts(this.context,this.props)}makeStylesheetInert(e){return s.default.Children.map(e,e=>{var t,n;if((null==e?void 0:e.type)==="link"&&(null==e?void 0:null==(t=e.props)?void 0:t.href)&&l.OPTIMIZED_FONT_PROVIDERS.some(({url:t})=>{var n,r;return null==e?void 0:null==(r=e.props)?void 0:null==(n=r.href)?void 0:n.startsWith(t)})){let t=_objectSpread(_objectSpread({},e.props||{}),{},{"data-href":e.props.href,href:void 0});return s.default.cloneElement(e,t)}if(null==e?void 0:null==(n=e.props)?void 0:n.children){let t=_objectSpread(_objectSpread({},e.props||{}),{},{children:this.makeStylesheetInert(e.props.children)});return s.default.cloneElement(e,t)}return e}).filter(Boolean)}render(){let{styles:e,ampPath:t,inAmpMode:r,hybridAmp:i,canonicalBase:a,__NEXT_DATA__:l,dangerousAsPath:c,headTags:u,unstable_runtimeJS:p,unstable_JsPreload:d,disableOptimizedLoading:f,optimizeCss:m,optimizeFonts:_,assetPrefix:h,nextFontManifest:E}=this.context,g=!1===p,S=!1===d||!f;this.context.docComponentsRendered.Head=!0;let{head:y}=this.context,I=[],T=[];y&&(y.forEach(e=>{let t;this.context.strictNextHead&&(t=s.default.createElement("meta",{name:"next-head",content:"1"})),e&&"link"===e.type&&"preload"===e.props.rel&&"style"===e.props.as?(t&&I.push(t),I.push(e)):e&&(t&&("meta"!==e.type||!e.props.charSet)&&T.push(t),T.push(e))}),y=I.concat(T));let P=s.default.Children.toArray(this.props.children).filter(Boolean);_&&!r&&(P=this.makeStylesheetInert(P));let b=!1,O=!1;y=s.default.Children.map(y||[],e=>{if(!e)return e;let{type:t,props:n}=e;if(r){let r="";if("meta"===t&&"viewport"===n.name?r='name="viewport"':"link"===t&&"canonical"===n.rel?O=!0:"script"===t&&(n.src&&-1>n.src.indexOf("ampproject")||n.dangerouslySetInnerHTML&&(!n.type||"text/javascript"===n.type))&&(r="<script",Object.keys(n).forEach(e=>{r+=` ${e}="${n[e]}"`}),r+="/>"),r)return console.warn(`Found conflicting amp tag "${e.type}" with conflicting prop ${r} in ${l.page}. https://nextjs.org/docs/messages/conflicting-amp-tag`),null}else"link"===t&&"amphtml"===n.rel&&(b=!0);return e});let A=getDocumentFiles(this.context.buildManifest,this.context.__NEXT_DATA__.page,r),v=function(e,t,n=""){if(!e)return{preconnect:null,preload:null};let r=e.pages["/_app"],i=e.pages[t],o=[...r??[],...i??[]],a=!!(0===o.length&&(r||i));return{preconnect:a?s.default.createElement("link",{"data-next-font":e.pagesUsingSizeAdjust?"size-adjust":"",rel:"preconnect",href:"/",crossOrigin:"anonymous"}):null,preload:o?o.map(e=>{let t=/\.(woff|woff2|eot|ttf|otf)$/.exec(e)[1];return s.default.createElement("link",{key:e,rel:"preload",href:`${n}/_next/${encodeURI(e)}`,as:"font",type:`font/${t}`,crossOrigin:"anonymous","data-next-font":e.includes("-s")?"size-adjust":""})}):null}}(E,c,h);return s.default.createElement("head",function(e){let{crossOrigin:t,nonce:n}=e,r=_objectWithoutProperties(e,o);return r}(this.props),this.context.isDevelopment&&s.default.createElement(s.default.Fragment,null,s.default.createElement("style",{"data-next-hide-fouc":!0,"data-ampdevmode":r?"true":void 0,dangerouslySetInnerHTML:{__html:"body{display:none}"}}),s.default.createElement("noscript",{"data-next-hide-fouc":!0,"data-ampdevmode":r?"true":void 0},s.default.createElement("style",{dangerouslySetInnerHTML:{__html:"body{display:block}"}}))),y,this.context.strictNextHead?null:s.default.createElement("meta",{name:"next-head-count",content:s.default.Children.count(y||[]).toString()}),P,_&&s.default.createElement("meta",{name:"next-font-preconnect"}),v.preconnect,v.preload,r&&s.default.createElement(s.default.Fragment,null,s.default.createElement("meta",{name:"viewport",content:"width=device-width,minimum-scale=1,initial-scale=1"}),!O&&s.default.createElement("link",{rel:"canonical",href:a+n(77252).cleanAmpPath(c)}),s.default.createElement("link",{rel:"preload",as:"script",href:"https://cdn.ampproject.org/v0.js"}),s.default.createElement(AmpStyles,{styles:e}),s.default.createElement("style",{"amp-boilerplate":"",dangerouslySetInnerHTML:{__html:"body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}"}}),s.default.createElement("noscript",null,s.default.createElement("style",{"amp-boilerplate":"",dangerouslySetInnerHTML:{__html:"body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}"}})),s.default.createElement("script",{async:!0,src:"https://cdn.ampproject.org/v0.js"})),!r&&s.default.createElement(s.default.Fragment,null,!b&&i&&s.default.createElement("link",{rel:"amphtml",href:a+(t||`${c}${c.includes("?")?"&":"?"}amp=1`)}),this.getBeforeInteractiveInlineScripts(),!m&&this.getCssLinks(A),!m&&s.default.createElement("noscript",{"data-n-css":this.props.nonce??""}),!g&&!S&&this.getPreloadDynamicChunks(),!g&&!S&&this.getPreloadMainLinks(A),!f&&!g&&this.getPolyfillScripts(),!f&&!g&&this.getPreNextScripts(),!f&&!g&&this.getDynamicChunks(A),!f&&!g&&this.getScripts(A),m&&this.getCssLinks(A),m&&s.default.createElement("noscript",{"data-n-css":this.props.nonce??""}),this.context.isDevelopment&&s.default.createElement("noscript",{id:"__next_css__DO_NOT_USE__"}),e||null),s.default.createElement(s.default.Fragment,{},...u||[]))}};Head.contextType=d.HtmlContext;let NextScript=class NextScript extends s.default.Component{getDynamicChunks(e){return getDynamicChunks(this.context,this.props,e)}getPreNextScripts(){return getPreNextScripts(this.context,this.props)}getScripts(e){return getScripts(this.context,this.props,e)}getPolyfillScripts(){return getPolyfillScripts(this.context,this.props)}static getInlineScriptSource(e){let{__NEXT_DATA__:t,largePageDataBytes:r}=e;try{let i=JSON.stringify(t);if(f.has(t.page))return(0,u.htmlEscapeJsonString)(i);let o=Buffer.from(i).byteLength,a=n(80558).Z;return r&&o>r&&(f.add(t.page),console.warn(`Warning: data for page "${t.page}"${t.page===e.dangerousAsPath?"":` (path "${e.dangerousAsPath}")`} is ${a(o)} which exceeds the threshold of ${a(r)}, this amount of data can reduce performance.
|
|
6
|
-
See more info here: https://nextjs.org/docs/messages/large-page-data`)),(0,u.htmlEscapeJsonString)(i)}catch(e){if((0,p.default)(e)&&-1!==e.message.indexOf("circular structure"))throw Error(`Circular structure in "getInitialProps" result of page "${t.page}". https://nextjs.org/docs/messages/circular-structure`);throw e}}render(){let{assetPrefix:e,inAmpMode:t,buildManifest:n,unstable_runtimeJS:r,docComponentsRendered:i,assetQueryString:o,disableOptimizedLoading:a,crossOrigin:l}=this.context,c=!1===r;if(i.NextScript=!0,t)return null;let u=getDocumentFiles(this.context.buildManifest,this.context.__NEXT_DATA__.page,t);return s.default.createElement(s.default.Fragment,null,!c&&n.devFiles?n.devFiles.map(t=>s.default.createElement("script",{key:t,src:`${e}/_next/${encodeURI(t)}${o}`,nonce:this.props.nonce,crossOrigin:this.props.crossOrigin||l})):null,c?null:s.default.createElement("script",{id:"__NEXT_DATA__",type:"application/json",nonce:this.props.nonce,crossOrigin:this.props.crossOrigin||l,dangerouslySetInnerHTML:{__html:NextScript.getInlineScriptSource(this.context)}}),a&&!c&&this.getPolyfillScripts(),a&&!c&&this.getPreNextScripts(),a&&!c&&this.getDynamicChunks(u),a&&!c&&this.getScripts(u))}};function Html(e){let{inAmpMode:t,docComponentsRendered:n,locale:r,scriptLoader:i,__NEXT_DATA__:o}=(0,d.useHtmlContext)();return n.Html=!0,function(e,t,n){var r,i,o,a;if(!n.children)return;let l=[],c=Array.isArray(n.children)?n.children:[n.children],u=null==(i=c.find(e=>e.type===Head))?void 0:null==(r=i.props)?void 0:r.children,p=null==(a=c.find(e=>"body"===e.type))?void 0:null==(o=a.props)?void 0:o.children,d=[...Array.isArray(u)?u:[u],...Array.isArray(p)?p:[p]];s.default.Children.forEach(d,t=>{var n;if(t&&(null==(n=t.type)?void 0:n.__nextScript)){if("beforeInteractive"===t.props.strategy){e.beforeInteractive=(e.beforeInteractive||[]).concat([_objectSpread({},t.props)]);return}if(["lazyOnload","afterInteractive","worker"].includes(t.props.strategy)){l.push(t.props);return}}}),t.scriptLoader=l}(i,o,e),s.default.createElement("html",_objectSpread(_objectSpread({},e),{},{lang:e.lang||r||void 0,amp:t?"":void 0,"data-ampdevmode":void 0}))}function Main(){let{docComponentsRendered:e}=(0,d.useHtmlContext)();return e.Main=!0,s.default.createElement("next-js-internal-body-render-target",null)}NextScript.contextType=d.HtmlContext;let Document=class Document extends s.default.Component{static getInitialProps(e){return e.defaultGetInitialProps(e)}render(){return s.default.createElement(Html,null,s.default.createElement(Head,null),s.default.createElement("body",null,s.default.createElement(Main,null),s.default.createElement(NextScript,null)))}};Document[l.NEXT_BUILTIN_DOCUMENT]=function(){return s.default.createElement(Html,null,s.default.createElement(Head,null),s.default.createElement("body",null,s.default.createElement(Main,null),s.default.createElement(NextScript,null)))}},81123:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{MODERN_BROWSERSLIST_TARGET:function(){return i.default},COMPILER_NAMES:function(){return o},INTERNAL_HEADERS:function(){return a},COMPILER_INDEXES:function(){return s},PHASE_EXPORT:function(){return l},PHASE_PRODUCTION_BUILD:function(){return c},PHASE_PRODUCTION_SERVER:function(){return u},PHASE_DEVELOPMENT_SERVER:function(){return p},PHASE_TEST:function(){return d},PHASE_INFO:function(){return f},PAGES_MANIFEST:function(){return m},APP_PATHS_MANIFEST:function(){return _},APP_PATH_ROUTES_MANIFEST:function(){return h},BUILD_MANIFEST:function(){return E},APP_BUILD_MANIFEST:function(){return g},FUNCTIONS_CONFIG_MANIFEST:function(){return S},SUBRESOURCE_INTEGRITY_MANIFEST:function(){return y},NEXT_FONT_MANIFEST:function(){return I},EXPORT_MARKER:function(){return T},EXPORT_DETAIL:function(){return P},PRERENDER_MANIFEST:function(){return b},ROUTES_MANIFEST:function(){return O},IMAGES_MANIFEST:function(){return A},SERVER_FILES_MANIFEST:function(){return v},DEV_CLIENT_PAGES_MANIFEST:function(){return N},MIDDLEWARE_MANIFEST:function(){return x},DEV_MIDDLEWARE_MANIFEST:function(){return R},REACT_LOADABLE_MANIFEST:function(){return M},FONT_MANIFEST:function(){return L},SERVER_DIRECTORY:function(){return j},CONFIG_FILES:function(){return D},BUILD_ID_FILE:function(){return C},BLOCKED_PAGES:function(){return F},CLIENT_PUBLIC_FILES_PATH:function(){return k},CLIENT_STATIC_FILES_PATH:function(){return w},STRING_LITERAL_DROP_BUNDLE:function(){return U},NEXT_BUILTIN_DOCUMENT:function(){return H},BARREL_OPTIMIZATION_PREFIX:function(){return B},CLIENT_REFERENCE_MANIFEST:function(){return $},SERVER_REFERENCE_MANIFEST:function(){return W},MIDDLEWARE_BUILD_MANIFEST:function(){return G},MIDDLEWARE_REACT_LOADABLE_MANIFEST:function(){return z},CLIENT_STATIC_FILES_RUNTIME_MAIN:function(){return X},CLIENT_STATIC_FILES_RUNTIME_MAIN_APP:function(){return V},APP_CLIENT_INTERNALS:function(){return Y},CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH:function(){return K},CLIENT_STATIC_FILES_RUNTIME_AMP:function(){return q},CLIENT_STATIC_FILES_RUNTIME_WEBPACK:function(){return J},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS:function(){return Z},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL:function(){return Q},EDGE_RUNTIME_WEBPACK:function(){return ee},TEMPORARY_REDIRECT_STATUS:function(){return et},PERMANENT_REDIRECT_STATUS:function(){return en},STATIC_PROPS_ID:function(){return er},SERVER_PROPS_ID:function(){return ei},PAGE_SEGMENT_KEY:function(){return eo},GOOGLE_FONT_PROVIDER:function(){return ea},OPTIMIZED_FONT_PROVIDERS:function(){return es},DEFAULT_SERIF_FONT:function(){return el},DEFAULT_SANS_SERIF_FONT:function(){return ec},STATIC_STATUS_PAGES:function(){return eu},TRACE_OUTPUT_VERSION:function(){return ep},TURBO_TRACE_DEFAULT_MEMORY_LIMIT:function(){return ed},RSC_MODULE_TYPES:function(){return ef},EDGE_UNSUPPORTED_NODE_APIS:function(){return em},SYSTEM_ENTRYPOINTS:function(){return e_}});let r=n(55248),i=r._(n(61672)),o={client:"client",server:"server",edgeServer:"edge-server"},a=["x-invoke-path","x-invoke-status","x-invoke-error","x-invoke-query","x-middleware-invoke"],s={[o.client]:0,[o.server]:1,[o.edgeServer]:2},l="phase-export",c="phase-production-build",u="phase-production-server",p="phase-development-server",d="phase-test",f="phase-info",m="pages-manifest.json",_="app-paths-manifest.json",h="app-path-routes-manifest.json",E="build-manifest.json",g="app-build-manifest.json",S="functions-config-manifest.json",y="subresource-integrity-manifest",I="next-font-manifest",T="export-marker.json",P="export-detail.json",b="prerender-manifest.json",O="routes-manifest.json",A="images-manifest.json",v="required-server-files.json",N="_devPagesManifest.json",x="middleware-manifest.json",R="_devMiddlewareManifest.json",M="react-loadable-manifest.json",L="font-manifest.json",j="server",D=["next.config.js","next.config.mjs"],C="BUILD_ID",F=["/_document","/_app","/_error"],k="public",w="static",U="__NEXT_DROP_CLIENT_FILE__",H="__NEXT_BUILTIN_DOCUMENT__",B="__barrel_optimize__",$="client-reference-manifest",W="server-reference-manifest",G="middleware-build-manifest",z="middleware-react-loadable-manifest",X="main",V=""+X+"-app",Y="app-pages-internals",K="react-refresh",q="amp",J="webpack",Z="polyfills",Q=Symbol(Z),ee="edge-runtime-webpack",et=307,en=308,er="__N_SSG",ei="__N_SSP",eo="__PAGE__",ea="https://fonts.googleapis.com/",es=[{url:ea,preconnect:"https://fonts.gstatic.com"},{url:"https://use.typekit.net",preconnect:"https://use.typekit.net"}],el={name:"Times New Roman",xAvgCharWidth:821,azAvgWidth:854.3953488372093,unitsPerEm:2048},ec={name:"Arial",xAvgCharWidth:904,azAvgWidth:934.5116279069767,unitsPerEm:2048},eu=["/500"],ep=1,ed=6e3,ef={client:"client",server:"server"},em=["clearImmediate","setImmediate","BroadcastChannel","ByteLengthQueuingStrategy","CompressionStream","CountQueuingStrategy","DecompressionStream","DomException","MessageChannel","MessageEvent","MessagePort","ReadableByteStreamController","ReadableStreamBYOBRequest","ReadableStreamDefaultController","TransformStreamDefaultController","WritableStreamDefaultController"],e_=new Set([X,K,q,V]);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},61672:e=>{"use strict";e.exports=["chrome 64","edge 79","firefox 67","opera 51","safari 12"]},99399:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"normalizePagePath",{enumerable:!0,get:function(){return normalizePagePath}});let r=n(4664),i=n(49207),o=n(95422);function normalizePagePath(e){let t=/^\/index(\/|$)/.test(e)&&!(0,i.isDynamicRoute)(e)?"/index"+e:"/"===e?"/index":(0,r.ensureLeadingSlash)(e);{let{posix:e}=n(71017),r=e.normalize(t);if(r!==t)throw new o.NormalizeError("Requested and resolved page mismatch: "+t+" "+r)}return t}},80558:(e,t)=>{"use strict";Object.defineProperty(t,"Z",{enumerable:!0,get:function(){return prettyBytes}});let n=["B","kB","MB","GB","TB","PB","EB","ZB","YB"],toLocaleString=(e,t)=>{let n=e;return"string"==typeof t?n=e.toLocaleString(t):!0===t&&(n=e.toLocaleString()),n};function prettyBytes(e,t){if(!Number.isFinite(e))throw TypeError(`Expected a finite number, got ${typeof e}: ${e}`);if((t=Object.assign({},t)).signed&&0===e)return" 0 B";let r=e<0,i=r?"-":t.signed?"+":"";if(r&&(e=-e),e<1){let n=toLocaleString(e,t.locale);return i+n+" B"}let o=Math.min(Math.floor(Math.log10(e)/3),n.length-1);e=Number((e/Math.pow(1e3,o)).toPrecision(3));let a=toLocaleString(e,t.locale),s=n[o];return i+a+" "+s}},75870:(e,t,n)=>{"use strict";e.exports=n(9339).vendored.contexts.HtmlContext},67212:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getPageFiles",{enumerable:!0,get:function(){return getPageFiles}});let r=n(5333),i=n(99399);function getPageFiles(e,t){let n=(0,r.denormalizePagePath)((0,i.normalizePagePath)(t));return e.pages[n]||(console.warn(`Could not find files for ${n} in .next/build-manifest.json`),[])}},81453:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{ESCAPE_REGEX:function(){return r},htmlEscapeJsonString:function(){return htmlEscapeJsonString}});let n={"&":"\\u0026",">":"\\u003e","<":"\\u003c","\u2028":"\\u2028","\u2029":"\\u2029"},r=/[&><\u2028\u2029]/g;function htmlEscapeJsonString(e){return e.replace(r,e=>n[e])}},77252:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{isBlockedPage:function(){return isBlockedPage},cleanAmpPath:function(){return cleanAmpPath},debounce:function(){return debounce}});let r=n(81123);function isBlockedPage(e){return r.BLOCKED_PAGES.includes(e)}function cleanAmpPath(e){return e.match(/\?amp=(y|yes|true|1)/)&&(e=e.replace(/\?amp=(y|yes|true|1)&?/,"?")),e.match(/&=(y|yes|true|1)/)&&(e=e.replace(/&=(y|yes|true|1)/,"")),e=e.replace(/\?$/,"")}function debounce(e,t,n=1/0){let r,i,o;let a=0,s=0;function run(){let l=Date.now(),c=s+t-l;c<=0||a+n>=l?(r=void 0,e.apply(o,i)):r=setTimeout(run,c)}return function(...e){i=e,o=this,s=Date.now(),void 0===r&&(a=s,r=setTimeout(run,t))}}},77986:(e,t,n)=>{e.exports=n(30033)}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=3779,exports.ids=[3779],exports.modules={42256:(e,t,a)=>{a.d(t,{Z:()=>n});var r=a(16689),l=a.n(r);let i=(0,r.forwardRef)(function({testId:e="fs-input",...t},a){return l().createElement("input",{ref:a,"data-fs-input":!0,"data-testid":e,...t})}),n=i},93779:(e,t,a)=>{a.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var r=a(16689),l=a.n(r),i=a(42256),n=a(31953),d=a(37041),s=a(2614),c=a(83339);let __WEBPACK_DEFAULT_EXPORT__=({id:e,label:t,type:a="text",error:r,displayClearButton:f,actionable:p,buttonActionText:u="Apply",onSubmit:o,onClear:m,placeholder:E=" ",inputRef:_,disabled:Z,value:C,testId:v="fs-input-field",...A})=>{let x=!Z&&r&&""!==r,F=p&&!Z&&""!==C;return l().createElement("div",{"data-fs-input-field":!0,"data-fs-input-field-actionable":p,"data-fs-input-field-error":r&&""!==r,"data-testid":v},l().createElement(i.Z,{id:e,type:a,value:C,ref:_,disabled:Z,placeholder:E,...A}),l().createElement(n.Z,{htmlFor:e},t),F&&(f||r?l().createElement(d.Z,{size:"small","aria-label":"Clear Field",icon:l().createElement(s.Z,{name:"XCircle"}),onClick:()=>{m?.(),_?.current?.focus()}}):l().createElement(c.Z,{variant:"tertiary",size:"small",onClick:o},u)),x&&l().createElement("span",{"data-fs-input-field-error-message":!0},r))}}};
|