@pixelated-tech/components 3.13.15 → 3.14.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/dist/components/admin/site-health/google.api.integration.js +5 -4
- package/dist/components/admin/site-health/site-health-cloudwatch.integration.js +3 -2
- package/dist/components/config/crypto.js +17 -1
- package/dist/components/general/cache-manager.js +19 -2
- package/dist/components/general/carousel.drag.js +21 -24
- package/dist/components/general/intersection-observer.js +4 -0
- package/dist/components/general/metadata.functions.js +1 -1
- package/dist/components/general/sitemap.js +3 -2
- package/dist/components/general/utilities.js +106 -0
- package/dist/components/integrations/contentful.delivery.js +16 -16
- package/dist/components/integrations/contentful.items.components.js +2 -11
- package/dist/components/integrations/flickr.js +7 -4
- package/dist/components/integrations/googleplaces.js +144 -0
- package/dist/components/integrations/socialcard.js +5 -2
- package/dist/components/integrations/wordpress.components.js +2 -1
- package/dist/components/shoppingcart/ebay.components.js +5 -5
- package/dist/components/shoppingcart/ebay.functions.js +5 -3
- package/dist/components/shoppingcart/shipping.to.json +3 -4
- package/dist/components/shoppingcart/shoppingcart.components.js +7 -5
- package/dist/components/shoppingcart/shoppingcart.css +1 -1
- package/dist/components/shoppingcart/shoppingcart.functions.js +5 -14
- package/dist/components/sitebuilder/form/formcomponents.js +151 -0
- package/dist/components/sitebuilder/form/formutils.js +3 -0
- package/dist/components/sitebuilder/page/lib/pageStorageContentful.js +2 -2
- package/dist/config/pixelated.config.json.enc +1 -1
- package/dist/data/form.json +18 -0
- package/dist/index.adminserver.js +1 -3
- package/dist/index.js +1 -1
- package/dist/index.server.js +1 -0
- package/dist/scripts/create-pixelated-app.js +187 -79
- package/dist/scripts/create-pixelated-app.json +51 -1
- package/dist/scripts/pixelated-eslint-plugin.js +142 -0
- package/dist/scripts/release.sh +23 -16
- package/dist/scripts/update.sh +47 -8
- package/dist/types/components/admin/deploy/deployment.integration.d.ts +1 -0
- package/dist/types/components/admin/deploy/deployment.integration.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/google.api.integration.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/site-health-cloudwatch.integration.d.ts.map +1 -1
- package/dist/types/components/config/config.types.d.ts +23 -0
- package/dist/types/components/config/config.types.d.ts.map +1 -1
- package/dist/types/components/config/crypto.d.ts +1 -0
- package/dist/types/components/config/crypto.d.ts.map +1 -1
- package/dist/types/components/general/cache-manager.d.ts +16 -2
- package/dist/types/components/general/cache-manager.d.ts.map +1 -1
- package/dist/types/components/general/carousel.drag.d.ts.map +1 -1
- package/dist/types/components/general/intersection-observer.d.ts.map +1 -1
- package/dist/types/components/general/sitemap.d.ts.map +1 -1
- package/dist/types/components/general/utilities.d.ts +39 -0
- package/dist/types/components/general/utilities.d.ts.map +1 -1
- package/dist/types/components/integrations/contentful.delivery.d.ts +16 -16
- package/dist/types/components/integrations/contentful.items.components.d.ts.map +1 -1
- package/dist/types/components/integrations/flickr.d.ts.map +1 -1
- package/dist/types/components/integrations/googleplaces.d.ts +61 -0
- package/dist/types/components/integrations/googleplaces.d.ts.map +1 -0
- package/dist/types/components/integrations/socialcard.d.ts.map +1 -1
- package/dist/types/components/integrations/wordpress.components.d.ts.map +1 -1
- package/dist/types/components/shoppingcart/ebay.functions.d.ts.map +1 -1
- package/dist/types/components/shoppingcart/shoppingcart.components.d.ts.map +1 -1
- package/dist/types/components/shoppingcart/shoppingcart.functions.d.ts +2 -2
- package/dist/types/components/shoppingcart/shoppingcart.functions.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/form/formcomponents.d.ts +22 -0
- package/dist/types/components/sitebuilder/form/formcomponents.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/form/formutils.d.ts.map +1 -1
- package/dist/types/index.adminserver.d.ts +1 -3
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.server.d.ts +1 -0
- package/dist/types/scripts/create-pixelated-app.d.ts +3 -0
- package/dist/types/scripts/create-pixelated-app.d.ts.map +1 -1
- package/dist/types/scripts/pixelated-eslint-plugin.d.ts +20 -0
- package/dist/types/stories/integrations/contentful.items.stories.d.ts.map +1 -0
- package/dist/types/stories/integrations/contentful.stories.d.ts.map +1 -0
- package/dist/types/stories/integrations/google.reviews.stories.d.ts.map +1 -0
- package/dist/types/stories/integrations/googlesearch.stories.d.ts.map +1 -0
- package/dist/types/stories/integrations/gravatar.stories.d.ts.map +1 -0
- package/dist/types/stories/integrations/instagram.stories.d.ts.map +1 -0
- package/dist/types/stories/integrations/wordpress.stories.d.ts.map +1 -0
- package/dist/types/test/test-utils.d.ts +2 -0
- package/dist/types/test/test-utils.d.ts.map +1 -1
- package/dist/types/tests/404.test.d.ts +2 -0
- package/dist/types/tests/404.test.d.ts.map +1 -0
- package/dist/types/tests/carousel.drag.test.d.ts +2 -0
- package/dist/types/tests/carousel.drag.test.d.ts.map +1 -0
- package/dist/types/tests/carouselDrag.test.d.ts +2 -0
- package/dist/types/tests/carouselDrag.test.d.ts.map +1 -0
- package/dist/types/tests/componentAnalysis.test.d.ts +2 -0
- package/dist/types/tests/componentAnalysis.test.d.ts.map +1 -0
- package/dist/types/tests/componentDiscovery.test.d.ts +2 -0
- package/dist/types/tests/componentDiscovery.test.d.ts.map +1 -0
- package/dist/types/tests/componentMap.test.d.ts +2 -0
- package/dist/types/tests/componentMap.test.d.ts.map +1 -0
- package/dist/types/tests/contentful.items.components.test.d.ts +2 -0
- package/dist/types/tests/contentful.items.components.test.d.ts.map +1 -0
- package/dist/types/tests/contentful.management.test.d.ts +2 -0
- package/dist/types/tests/contentful.management.test.d.ts.map +1 -0
- package/dist/types/tests/contentfulManagement.test.d.ts +2 -0
- package/dist/types/tests/contentfulManagement.test.d.ts.map +1 -0
- package/dist/types/tests/countup.test.d.ts +2 -0
- package/dist/types/tests/countup.test.d.ts.map +1 -0
- package/dist/types/tests/crypto.test.d.ts +2 -0
- package/dist/types/tests/crypto.test.d.ts.map +1 -0
- package/dist/types/tests/deployment.integration.test.d.ts +2 -0
- package/dist/types/tests/deployment.integration.test.d.ts.map +1 -0
- package/dist/types/tests/ebay.components.test.d.ts +2 -0
- package/dist/types/tests/ebay.components.test.d.ts.map +1 -0
- package/dist/types/tests/ebayComponents.test.d.ts +2 -0
- package/dist/types/tests/ebayComponents.test.d.ts.map +1 -0
- package/dist/types/tests/flickr.test.d.ts +2 -0
- package/dist/types/tests/flickr.test.d.ts.map +1 -0
- package/dist/types/tests/formgoogleplacesinput.test.d.ts +2 -0
- package/dist/types/tests/formgoogleplacesinput.test.d.ts.map +1 -0
- package/dist/types/tests/formutils.test.d.ts +2 -0
- package/dist/types/tests/formutils.test.d.ts.map +1 -0
- package/dist/types/tests/formvalidator.test.d.ts +2 -0
- package/dist/types/tests/formvalidator.test.d.ts.map +1 -0
- package/dist/types/tests/gemini-api.client.test.d.ts +2 -0
- package/dist/types/tests/gemini-api.client.test.d.ts.map +1 -0
- package/dist/types/tests/gemini-api.server.test.d.ts +2 -0
- package/dist/types/tests/gemini-api.server.test.d.ts.map +1 -0
- package/dist/types/tests/geminiApi.test.d.ts +2 -0
- package/dist/types/tests/geminiApi.test.d.ts.map +1 -0
- package/dist/types/tests/google.reviews.components.test.d.ts +2 -0
- package/dist/types/tests/google.reviews.components.test.d.ts.map +1 -0
- package/dist/types/tests/googleanalytics.test.d.ts +2 -0
- package/dist/types/tests/googleanalytics.test.d.ts.map +1 -0
- package/dist/types/tests/googlemap.test.d.ts +2 -0
- package/dist/types/tests/googlemap.test.d.ts.map +1 -0
- package/dist/types/tests/gravatar.functions.test.d.ts +2 -0
- package/dist/types/tests/gravatar.functions.test.d.ts.map +1 -0
- package/dist/types/tests/hubspot.components.test.d.ts +2 -0
- package/dist/types/tests/hubspot.components.test.d.ts.map +1 -0
- package/dist/types/tests/image-utils.test.d.ts +2 -0
- package/dist/types/tests/image-utils.test.d.ts.map +1 -0
- package/dist/types/tests/instagram.components.test.d.ts +2 -0
- package/dist/types/tests/instagram.components.test.d.ts.map +1 -0
- package/dist/types/tests/instagram.functions.test.d.ts +2 -0
- package/dist/types/tests/instagram.functions.test.d.ts.map +1 -0
- package/dist/types/tests/intersection-observer.test.d.ts +2 -0
- package/dist/types/tests/intersection-observer.test.d.ts.map +1 -0
- package/dist/types/tests/metadata.functions.test.d.ts +2 -0
- package/dist/types/tests/metadata.functions.test.d.ts.map +1 -0
- package/dist/types/tests/metadataComponents.test.d.ts +2 -0
- package/dist/types/tests/metadataComponents.test.d.ts.map +1 -0
- package/dist/types/tests/page-storage.test.d.ts +2 -0
- package/dist/types/tests/page-storage.test.d.ts.map +1 -0
- package/dist/types/tests/pageStorageContentful.test.d.ts +2 -0
- package/dist/types/tests/pageStorageContentful.test.d.ts.map +1 -0
- package/dist/types/tests/pageStorageLocal.test.d.ts +2 -0
- package/dist/types/tests/pageStorageLocal.test.d.ts.map +1 -0
- package/dist/types/tests/pixelated.test.d.ts +2 -0
- package/dist/types/tests/pixelated.test.d.ts.map +1 -0
- package/dist/types/tests/propTypeIntrospection.test.d.ts +2 -0
- package/dist/types/tests/propTypeIntrospection.test.d.ts.map +1 -0
- package/dist/types/tests/save-route-example.test.d.ts +2 -0
- package/dist/types/tests/save-route-example.test.d.ts.map +1 -0
- package/dist/types/tests/saveRouteExample.test.d.ts +2 -0
- package/dist/types/tests/saveRouteExample.test.d.ts.map +1 -0
- package/dist/types/tests/seoConstants.test.d.ts +2 -0
- package/dist/types/tests/seoConstants.test.d.ts.map +1 -0
- package/dist/types/tests/site-health-accessibility.test.d.ts +2 -0
- package/dist/types/tests/site-health-accessibility.test.d.ts.map +1 -0
- package/dist/types/tests/site-health-cloudwatch.integration.test.d.ts +2 -0
- package/dist/types/tests/site-health-cloudwatch.integration.test.d.ts.map +1 -0
- package/dist/types/tests/site-health-dependency-vulnerabilities.test.d.ts +2 -0
- package/dist/types/tests/site-health-dependency-vulnerabilities.test.d.ts.map +1 -0
- package/dist/types/tests/site-health-github.test.d.ts +2 -0
- package/dist/types/tests/site-health-github.test.d.ts.map +1 -0
- package/dist/types/tests/site-health-google-analytics.integration.test.d.ts +2 -0
- package/dist/types/tests/site-health-google-analytics.integration.test.d.ts.map +1 -0
- package/dist/types/tests/site-health-google-analytics.test.d.ts +2 -0
- package/dist/types/tests/site-health-google-analytics.test.d.ts.map +1 -0
- package/dist/types/tests/site-health-google-search-console.integration.test.d.ts +2 -0
- package/dist/types/tests/site-health-google-search-console.integration.test.d.ts.map +1 -0
- package/dist/types/tests/site-health-google-search-console.test.d.ts +2 -0
- package/dist/types/tests/site-health-google-search-console.test.d.ts.map +1 -0
- package/dist/types/tests/site-health-mock-context.test.d.ts +2 -0
- package/dist/types/tests/site-health-mock-context.test.d.ts.map +1 -0
- package/dist/types/tests/site-health-on-site-seo.test.d.ts +2 -0
- package/dist/types/tests/site-health-on-site-seo.test.d.ts.map +1 -0
- package/dist/types/tests/site-health-performance.test.d.ts +2 -0
- package/dist/types/tests/site-health-performance.test.d.ts.map +1 -0
- package/dist/types/tests/site-health-security.integration.test.d.ts +2 -0
- package/dist/types/tests/site-health-security.integration.test.d.ts.map +1 -0
- package/dist/types/tests/site-health-security.test.d.ts +2 -0
- package/dist/types/tests/site-health-security.test.d.ts.map +1 -0
- package/dist/types/tests/site-health-seo.test.d.ts +2 -0
- package/dist/types/tests/site-health-seo.test.d.ts.map +1 -0
- package/dist/types/tests/site-health-uptime.integration.test.d.ts +2 -0
- package/dist/types/tests/site-health-uptime.integration.test.d.ts.map +1 -0
- package/dist/types/tests/site-health-uptime.test.d.ts +2 -0
- package/dist/types/tests/site-health-uptime.test.d.ts.map +1 -0
- package/dist/types/tests/siteHealthGaIntegration.test.d.ts +2 -0
- package/dist/types/tests/siteHealthGaIntegration.test.d.ts.map +1 -0
- package/dist/types/tests/siteHealthGscIntegration.test.d.ts +2 -0
- package/dist/types/tests/siteHealthGscIntegration.test.d.ts.map +1 -0
- package/dist/types/tests/spotify.components.test.d.ts +2 -0
- package/dist/types/tests/spotify.components.test.d.ts.map +1 -0
- package/dist/types/tests/spotify.functions.test.d.ts +2 -0
- package/dist/types/tests/spotify.functions.test.d.ts.map +1 -0
- package/dist/types/tests/test-utils.d.ts +7 -0
- package/dist/types/tests/test-utils.d.ts.map +1 -0
- package/dist/types/tests/usePageBuilder.test.d.ts +2 -0
- package/dist/types/tests/usePageBuilder.test.d.ts.map +1 -0
- package/package.json +48 -41
- package/dist/components/admin/site-health/site-health-google-analytics.integration.js +0 -6
- package/dist/components/admin/site-health/site-health-google-search-console.integration.js +0 -6
- package/dist/components/general/proxy-csp-listener.js +0 -20
- package/dist/scripts/create-pixelated-app-template-mapper.js +0 -80
- package/dist/types/components/admin/site-health/site-health-google-analytics.integration.d.ts +0 -6
- package/dist/types/components/admin/site-health/site-health-google-analytics.integration.d.ts.map +0 -1
- package/dist/types/components/admin/site-health/site-health-google-search-console.integration.d.ts +0 -6
- package/dist/types/components/admin/site-health/site-health-google-search-console.integration.d.ts.map +0 -1
- package/dist/types/components/general/proxy-csp-listener.d.ts +0 -15
- package/dist/types/components/general/proxy-csp-listener.d.ts.map +0 -1
- package/dist/types/scripts/create-pixelated-app-template-mapper.d.ts +0 -5
- package/dist/types/scripts/create-pixelated-app-template-mapper.d.ts.map +0 -1
- package/dist/types/stories/general/callout.many.stories.d.ts +0 -7
- package/dist/types/stories/general/callout.many.stories.d.ts.map +0 -1
- package/dist/types/stories/general/contentful.item.stories.d.ts +0 -12
- package/dist/types/stories/general/contentful.item.stories.d.ts.map +0 -1
- package/dist/types/stories/general/contentful.items.stories.d.ts.map +0 -1
- package/dist/types/stories/general/contentful.stories.d.ts.map +0 -1
- package/dist/types/stories/general/global-error.stories.d.ts +0 -26
- package/dist/types/stories/general/global-error.stories.d.ts.map +0 -1
- package/dist/types/stories/general/google.reviews.stories.d.ts.map +0 -1
- package/dist/types/stories/general/googleanalytics.stories.d.ts +0 -14
- package/dist/types/stories/general/googleanalytics.stories.d.ts.map +0 -1
- package/dist/types/stories/general/googlesearch.stories.d.ts.map +0 -1
- package/dist/types/stories/general/gravatar.stories.d.ts.map +0 -1
- package/dist/types/stories/general/instagram.stories.d.ts.map +0 -1
- package/dist/types/stories/general/loading.stories.d.ts +0 -11
- package/dist/types/stories/general/loading.stories.d.ts.map +0 -1
- package/dist/types/stories/general/metadata.stories.d.ts +0 -25
- package/dist/types/stories/general/metadata.stories.d.ts.map +0 -1
- package/dist/types/stories/general/schema.stories.d.ts +0 -62
- package/dist/types/stories/general/schema.stories.d.ts.map +0 -1
- package/dist/types/stories/general/sitemap.stories.d.ts +0 -8
- package/dist/types/stories/general/sitemap.stories.d.ts.map +0 -1
- package/dist/types/stories/general/wordpress.stories.d.ts.map +0 -1
- package/dist/types/stories/integrations/schema-podcast.stories.d.ts +0 -45
- package/dist/types/stories/integrations/schema-podcast.stories.d.ts.map +0 -1
- /package/dist/types/stories/{general → integrations}/contentful.items.stories.d.ts +0 -0
- /package/dist/types/stories/{general → integrations}/contentful.stories.d.ts +0 -0
- /package/dist/types/stories/{general → integrations}/google.reviews.stories.d.ts +0 -0
- /package/dist/types/stories/{general → integrations}/googlesearch.stories.d.ts +0 -0
- /package/dist/types/stories/{general → integrations}/gravatar.stories.d.ts +0 -0
- /package/dist/types/stories/{general → integrations}/instagram.stories.d.ts +0 -0
- /package/dist/types/stories/{general → integrations}/wordpress.stories.d.ts +0 -0
|
@@ -178,8 +178,8 @@ export function EbayListItem(props) {
|
|
|
178
178
|
const itemURL = "./store/" + thisItem.legacyItemId;
|
|
179
179
|
const itemURLTarget = "_self"; /* "_blank" */
|
|
180
180
|
const itemImage = (props.cloudinaryProductEnv)
|
|
181
|
-
? getImg({ url: thisItem.thumbnailImages[0].imageUrl, product_env: props.cloudinaryProductEnv })
|
|
182
|
-
: thisItem.thumbnailImages[0].imageUrl;
|
|
181
|
+
? getImg({ url: thisItem.thumbnailImages?.[0]?.imageUrl || thisItem.image?.imageUrl || '', product_env: props.cloudinaryProductEnv })
|
|
182
|
+
: thisItem.thumbnailImages?.[0]?.imageUrl || thisItem.image?.imageUrl || '';
|
|
183
183
|
const shoppingCartItem = getShoppingCartItem({ thisItem: thisItem, cloudinaryProductEnv: props.cloudinaryProductEnv, apiProps: apiProps });
|
|
184
184
|
// CHANGE EBAY URL TO LOCAL EBAY ITEM DETAIL URL
|
|
185
185
|
shoppingCartItem.itemURL = itemURL;
|
|
@@ -189,7 +189,7 @@ export function EbayListItem(props) {
|
|
|
189
189
|
? _jsx("a", { href: itemURL, target: itemURLTarget, rel: "noopener noreferrer", children: itemImageComponent })
|
|
190
190
|
: (itemImageComponent) }), _jsxs("div", { className: "ebay-item-body grid-s5-e13", children: [_jsx("div", { className: "ebay-item-header", children: itemURL
|
|
191
191
|
? _jsx(EbayItemHeader, { url: itemURL, target: itemURLTarget, title: thisItem.title })
|
|
192
|
-
: _jsx(EbayItemHeader, { title: thisItem.title }) }), _jsxs("div", { className: "ebay-item-details grid12", children: [_jsxs("div", { children: [_jsx("b", { children: "Item ID: " }), thisItem.legacyItemId] }), _jsxs("div", { children: [_jsx("b", { children: "Quantity: " }), thisItem.categories[0]
|
|
192
|
+
: _jsx(EbayItemHeader, { title: thisItem.title }) }), _jsxs("div", { className: "ebay-item-details grid12", children: [_jsxs("div", { children: [_jsx("b", { children: "Item ID: " }), thisItem.legacyItemId] }), _jsxs("div", { children: [_jsx("b", { children: "Quantity: " }), thisItem.categories?.[0]?.categoryId == apiProps.itemCategory ? 1 : 10] }), _jsxs("div", { children: [_jsx("b", { children: "Condition: " }), thisItem.condition] }), _jsxs("div", { children: [_jsx("b", { children: "Seller: " }), thisItem.seller?.username, " (", thisItem.seller?.feedbackScore, ")", _jsx("br", {}), thisItem.seller?.feedbackPercentage, "% positive"] }), _jsxs("div", { children: [_jsx("b", { children: "Buying Options: " }), thisItem.buyingOptions?.[0]] }), _jsxs("div", { children: [_jsx("b", { children: "Location: " }), thisItem.itemLocation?.postalCode + ", " + thisItem.itemLocation?.country] }), _jsxs("div", { children: [_jsx("b", { children: "Listing Date: " }), thisItem.itemCreationDate] })] }), _jsx("div", { className: "ebay-item-price", children: itemURL
|
|
193
193
|
? _jsxs("a", { href: itemURL, target: itemURLTarget, rel: "noreferrer", children: ["$", thisItem.price.value + " " + thisItem.price.currency] })
|
|
194
194
|
: "$" + thisItem.price.value + " " + thisItem.price.currency }), _jsx("br", {}), _jsxs("div", { className: "ebay-item-add-to-cart", children: [_jsx(ViewItemDetails, { href: "/store", itemID: thisItem.legacyItemId }), _jsx(AddToCartButton, { handler: addToShoppingCart, item: shoppingCartItem, itemID: thisItem.legacyItemId })] })] })] }));
|
|
195
195
|
}
|
|
@@ -253,7 +253,7 @@ export function EbayItemDetail(props) {
|
|
|
253
253
|
const thisItem = { ...item };
|
|
254
254
|
if (debug)
|
|
255
255
|
console.log(thisItem);
|
|
256
|
-
const images = thisItem.additionalImages.map((thisImage) => ({ image: (props.cloudinaryProductEnv)
|
|
256
|
+
const images = (thisItem.additionalImages || []).map((thisImage) => ({ image: (props.cloudinaryProductEnv)
|
|
257
257
|
? getImg({ url: thisImage.imageUrl, product_env: props.cloudinaryProductEnv })
|
|
258
258
|
: thisImage.imageUrl }));
|
|
259
259
|
const itemURL = undefined;
|
|
@@ -262,7 +262,7 @@ export function EbayItemDetail(props) {
|
|
|
262
262
|
shoppingCartItem.itemURL = itemURL;
|
|
263
263
|
return (_jsx(_Fragment, { children: _jsxs("div", { className: "ebay-item row-12col", children: [_jsx("div", { className: "ebay-item-header grid-s1-e13", children: itemURL
|
|
264
264
|
? _jsx(EbayItemHeader, { url: itemURL, title: thisItem.title })
|
|
265
|
-
: _jsx(EbayItemHeader, { title: thisItem.title }) }), _jsx("br", {}), _jsx("div", { className: "ebay-item-photo-carousel grid-s1-e7", children: _jsx(Carousel, { cards: images, draggable: true, imgFit: "contain" }) }), _jsxs("div", { className: "grid-s7-e13", children: [_jsx("div", { className: "ebay-item-details grid12", children: _jsx("div", { dangerouslySetInnerHTML: { __html: thisItem.description
|
|
265
|
+
: _jsx(EbayItemHeader, { title: thisItem.title }) }), _jsx("br", {}), _jsx("div", { className: "ebay-item-photo-carousel grid-s1-e7", children: _jsx(Carousel, { cards: images, draggable: true, imgFit: "contain" }) }), _jsxs("div", { className: "grid-s7-e13", children: [_jsx("div", { className: "ebay-item-details grid12", children: _jsx("div", { dangerouslySetInnerHTML: { __html: thisItem.description?.replace(/(<br\s*\/?>\s*){2,}/gi, '') || '' } }) }), _jsx("br", {}), _jsxs("div", { className: "ebay-item-details grid12", children: [_jsxs("div", { children: [_jsx("b", { children: "Item ID: " }), thisItem.legacyItemId] }), _jsxs("div", { children: [_jsx("b", { children: "Quantity: " }), thisItem.categoryId == apiProps.itemCategory ? 1 : 10] }), _jsxs("div", { children: [_jsx("b", { children: "Category: " }), thisItem.categoryPath] }), _jsxs("div", { children: [_jsx("b", { children: "Condition: " }), thisItem.condition] }), _jsxs("div", { children: [_jsx("b", { children: "Seller: " }), thisItem.seller?.username, " (", thisItem.seller?.feedbackScore, ")", _jsx("br", {}), thisItem.seller?.feedbackPercentage, "% positive"] }), _jsxs("div", { children: [_jsx("b", { children: "Buying Options: " }), thisItem.buyingOptions?.[0]] }), _jsxs("div", { children: [_jsx("b", { children: "Location: " }), thisItem.itemLocation?.city + ", " + thisItem.itemLocation?.stateOrProvince] }), _jsxs("div", { children: [_jsx("b", { children: "Listing Date: " }), thisItem.itemCreationDate] }), _jsx("br", {})] }), _jsx("div", { className: "ebay-item-price", children: itemURL
|
|
266
266
|
? _jsxs("a", { href: itemURL, target: itemURLTarget, rel: "noreferrer", children: ["$", thisItem.price.value + " " + thisItem.price.currency] })
|
|
267
267
|
: "$" + thisItem.price.value + " " + thisItem.price.currency }), _jsx("br", {}), _jsx("div", { className: "ebay-item-add-to-cart", children: _jsx(AddToCartButton, { handler: addToShoppingCart, item: shoppingCartItem, itemID: thisItem.legacyItemId }) })] })] }) }));
|
|
268
268
|
}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import PropTypes from "prop-types";
|
|
2
2
|
import { getCloudinaryRemoteFetchURL as getImg } from "../integrations/cloudinary";
|
|
3
3
|
import { CacheManager } from "../general/cache-manager";
|
|
4
|
+
import { getDomain } from "../general/utilities";
|
|
4
5
|
const debug = false;
|
|
5
|
-
// Initialize eBay Cache (Session storage, 1 hour TTL)
|
|
6
|
+
// Initialize eBay Cache (Session storage, 1 hour TTL) — isolated per domain
|
|
6
7
|
const ebayCache = new CacheManager({
|
|
7
8
|
mode: 'session',
|
|
8
|
-
|
|
9
|
+
domain: getDomain(),
|
|
10
|
+
namespace: 'ebay',
|
|
9
11
|
ttl: 60 * 60 * 1000
|
|
10
12
|
});
|
|
11
13
|
/* ===== EBAY BROWSE API DOCUMENTATION =====
|
|
@@ -86,7 +88,7 @@ export function getShoppingCartItem(props) {
|
|
|
86
88
|
? thisItem.thumbnailImages[0].imageUrl
|
|
87
89
|
: (thisItem.image && props.cloudinaryProductEnv)
|
|
88
90
|
? getImg({ url: thisItem.image.imageUrl, product_env: props.cloudinaryProductEnv })
|
|
89
|
-
: thisItem.image
|
|
91
|
+
: thisItem.image?.imageUrl || '',
|
|
90
92
|
itemID: thisItem.legacyItemId,
|
|
91
93
|
itemURL: thisItem.itemWebUrl,
|
|
92
94
|
itemTitle: thisItem.title,
|
|
@@ -16,19 +16,18 @@
|
|
|
16
16
|
"tooltip" : "Please enter your First and Last Name"
|
|
17
17
|
}
|
|
18
18
|
},{
|
|
19
|
-
"component" : "
|
|
19
|
+
"component" : "FormGooglePlacesInput",
|
|
20
20
|
"props" : {
|
|
21
|
-
"type" : "text",
|
|
22
21
|
"id" : "street1",
|
|
23
22
|
"name" : "street1",
|
|
24
23
|
"defaultValue" : null,
|
|
25
|
-
"placeholder": "Street Address",
|
|
24
|
+
"placeholder": "Street Address (start typing)",
|
|
26
25
|
"autoComplete" : "street-address",
|
|
27
26
|
"size" : "40",
|
|
28
27
|
"display" : "horizontal",
|
|
29
28
|
"required": true,
|
|
30
29
|
"label" : "Street Address : ",
|
|
31
|
-
"tooltip" : "
|
|
30
|
+
"tooltip" : "Start typing your street address and select from suggestions"
|
|
32
31
|
}
|
|
33
32
|
},{
|
|
34
33
|
"component" : "FormInput",
|
|
@@ -79,7 +79,8 @@ export function ShoppingCart(props) {
|
|
|
79
79
|
useEffect(() => {
|
|
80
80
|
// UPDATE DISCOUNT CODES ON EACH PAGE LOAD
|
|
81
81
|
(async () => {
|
|
82
|
-
|
|
82
|
+
const contentfulConfig = config?.contentful;
|
|
83
|
+
setDiscountCodes(await getRemoteDiscountCodes(contentfulConfig));
|
|
83
84
|
})();
|
|
84
85
|
// UPDATE SHOPPINGCART AND SHIPPINGDATA STATES IF LOCALSTORAGE CHANGES
|
|
85
86
|
function handleStorageChange() {
|
|
@@ -146,10 +147,11 @@ export function ShoppingCart(props) {
|
|
|
146
147
|
}
|
|
147
148
|
if (progressStep === "ThankYou") {
|
|
148
149
|
// ========== SENDMAIL ==========
|
|
150
|
+
const cartConfig = config?.shoppingcart;
|
|
149
151
|
const json = {
|
|
150
|
-
'to':
|
|
151
|
-
'from':
|
|
152
|
-
'subject':
|
|
152
|
+
'to': cartConfig?.orderTo,
|
|
153
|
+
'from': cartConfig?.orderFrom,
|
|
154
|
+
'subject': cartConfig?.orderSubject,
|
|
153
155
|
'orderData': JSON.stringify(orderData, null, 2),
|
|
154
156
|
};
|
|
155
157
|
const sendMailResponse = emailJSON(json);
|
|
@@ -157,7 +159,7 @@ export function ShoppingCart(props) {
|
|
|
157
159
|
console.log("SendMail Response:", sendMailResponse);
|
|
158
160
|
// ========== THANK YOU ==========
|
|
159
161
|
const pmt = orderData.purchase_units[0].payments.captures[0];
|
|
160
|
-
return (_jsxs("div", { className: "pix-cart", children: [_jsx(CalloutHeader, { title: "Shopping Cart : " }), _jsx("br", {}), _jsx("div", { id: "paypal-button-container", className: "paypal-button-container" }), _jsxs("div", { children: [_jsx("h3", { children: "Thank you for your payment!" }), "Payment ID : ", pmt.id, " ", _jsx("br", {}), "Status : ", pmt.status, " ", _jsx("br", {}), "Amount : $", pmt.amount.value + " " + pmt.amount.currency_code, " ", _jsx("br", {}), "Created : ", pmt.create_time, " ", _jsx("br", {})] })] }));
|
|
162
|
+
return (_jsxs("div", { className: "pix-cart", children: [_jsx(CalloutHeader, { title: "Shopping Cart : " }), _jsx("br", {}), _jsx("div", { id: "paypal-button-container", className: "paypal-button-container" }), _jsxs("div", { children: [_jsx("h3", { children: "Thank you for your payment!" }), "Payment ID : ", pmt.id, " ", _jsx("br", {}), "Status : ", pmt.status, " ", _jsx("br", {}), "Amount : $", pmt.amount.value + " " + (config?.shoppingcart?.currency || pmt.amount.currency_code), " ", _jsx("br", {}), "Created : ", pmt.create_time, " ", _jsx("br", {})] })] }));
|
|
161
163
|
}
|
|
162
164
|
else if (progressStep === "Checkout") {
|
|
163
165
|
// ========== CHECKOUT ==========
|
|
@@ -1,24 +1,15 @@
|
|
|
1
1
|
import { getContentfulDiscountCodes } from "../integrations/contentful.delivery";
|
|
2
2
|
import { CacheManager } from "../general/cache-manager";
|
|
3
|
+
import { getDomain } from "../general/utilities";
|
|
3
4
|
// Migration-time verbose tracing per user request — remove after verification
|
|
4
5
|
const debug = false;
|
|
5
|
-
// Use CacheManager
|
|
6
|
-
const cartCache = new CacheManager({ mode: 'local',
|
|
6
|
+
// Use CacheManager with domain + namespace to prevent multi-tenant cache collisions
|
|
7
|
+
const cartCache = new CacheManager({ mode: 'local', domain: getDomain(), namespace: 'checkout' });
|
|
7
8
|
/* ========== LOCALSTORAGE KEYS ========== */
|
|
8
9
|
export const shoppingCartKey = "pixelvividCart";
|
|
9
10
|
export const shippingInfoKey = "pixelvividCartShipping";
|
|
10
11
|
export const discountCodesKey = "pixelvividDiscountCodes";
|
|
11
12
|
export const checkoutInfoKey = "pixelvividCartCheckout";
|
|
12
|
-
// const sbPayPalApiKey = "AT10GG2ZHoApTtEw7dJoU6XRDYkf3wEvK2k_-eZ9GOvOK-REphG8yKCyZCqFi95OrxKgrdctlfWxayHG";
|
|
13
|
-
// const sbPayPalSecret = "EDUrdPonwcNYZwO5j7hNmFSmF-13zptaCndUnO0-Vr_j0GYEW4m-Tfar9IaukHwm0ixL5fUojOOFtZVk";
|
|
14
|
-
// const payPalApiKey = "AeWRwYpsrfslATCndF6xjL4GLcqA1UxQZLC5vxQE-FTvPezXfLbCJO_uAFk5zoXUKRFnP-zJ_73yEkBE";
|
|
15
|
-
// const payPalSecret = "EBvYvynRXZCI6RbK4rg2NiENNG4N8tbgl8qAmpxB6f9nUkZjXMODxXJZ91JycP439kPrQcnB7uRKp0-F";
|
|
16
|
-
const apiProps = {
|
|
17
|
-
base_url: "https://cdn.contentful.com",
|
|
18
|
-
space_id: "soi9w77t7027",
|
|
19
|
-
environment: "master",
|
|
20
|
-
delivery_access_token: "muY9LfpCt4qoXosDsnRkkoH3DAVVuUFEuB0WRKRdBUM",
|
|
21
|
-
};
|
|
22
13
|
/* ========== ARRAYS ========== */
|
|
23
14
|
const shippingOptions = [
|
|
24
15
|
{
|
|
@@ -209,7 +200,7 @@ export function getShippingCost() {
|
|
|
209
200
|
return (option && option.price) ? formatAsHundredths(Number(option.price)) : 0;
|
|
210
201
|
}
|
|
211
202
|
/* ========== DISCOUNT CODE FUNCTIONS ========== */
|
|
212
|
-
export async function validateDiscountCode(field) {
|
|
203
|
+
export async function validateDiscountCode(field, apiProps) {
|
|
213
204
|
try {
|
|
214
205
|
const codeList = await getContentfulDiscountCodes({ apiProps: apiProps, contentType: "discountCodes" });
|
|
215
206
|
if (!codeList) {
|
|
@@ -240,7 +231,7 @@ export async function validateDiscountCode(field) {
|
|
|
240
231
|
throw error; // Or return false;
|
|
241
232
|
}
|
|
242
233
|
}
|
|
243
|
-
export async function getRemoteDiscountCodes() {
|
|
234
|
+
export async function getRemoteDiscountCodes(apiProps) {
|
|
244
235
|
if (debug)
|
|
245
236
|
console.log("Getting Contentful Discount Codes");
|
|
246
237
|
try {
|
|
@@ -5,6 +5,7 @@ import PropTypes from "prop-types";
|
|
|
5
5
|
import { validateField } from "./formvalidator";
|
|
6
6
|
import { useFormValidation } from "./formvalidator";
|
|
7
7
|
import * as FVF from "./formfieldvalidations";
|
|
8
|
+
import { usePixelatedConfig } from "../../config/config.client";
|
|
8
9
|
import "./form.css";
|
|
9
10
|
/*
|
|
10
11
|
InferProps to generate Types
|
|
@@ -168,6 +169,156 @@ function FormTooltip(props) {
|
|
|
168
169
|
let clickHandler = toggleTooltip;
|
|
169
170
|
return (_jsx(_Fragment, { children: _jsxs("div", { id: mode + "-" + props.id, className: `tooltip-container ${props.className || ''}`, children: [_jsx("span", { className: "tooltip-icon tooltip-icon-" + mode, ...mouseEvents, onClick: clickHandler, onKeyDown: handleKeyDown, "aria-label": "Show more info", "aria-expanded": showTooltip, "aria-describedby": showTooltip ? `${props.id}-tooltip` : undefined, tabIndex: 0, role: "button", children: icon }), showTooltip && _jsx("div", { className: "tooltip-text", role: "tooltip", id: `${props.id}-tooltip`, children: content })] }) }));
|
|
170
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* FormGooglePlacesInput — Address input with Google Places autocomplete and address component parsing.
|
|
174
|
+
*
|
|
175
|
+
* @param {string} [props.id] - Input id attribute (required).
|
|
176
|
+
* @param {string} [props.name] - Input name attribute.
|
|
177
|
+
* @param {string} [props.defaultValue] - Default value for uncontrolled inputs.
|
|
178
|
+
* @param {string} [props.placeholder] - Placeholder text.
|
|
179
|
+
* @param {string} [props.autoComplete] - Autocomplete hint.
|
|
180
|
+
* @param {string} [props.size] - Size attribute for text input.
|
|
181
|
+
* @param {string} [props.maxLength] - Maximum characters allowed.
|
|
182
|
+
* @param {string} [props.required] - Required flag.
|
|
183
|
+
* @param {string} [props.display] - Display style (inline/block) for layout purposes.
|
|
184
|
+
* @param {string} [props.label] - Label text associated with the input.
|
|
185
|
+
* @param {string} [props.tooltip] - Tooltip/help text for the input.
|
|
186
|
+
* @param {string} [props.className] - CSS class names applied to the input container.
|
|
187
|
+
* @param {string} [props.validate] - Named validation rule to run for this input.
|
|
188
|
+
* @param {function} [props.onChange] - Change handler invoked when place is selected.
|
|
189
|
+
* @param {function} [props.onAddressParsed] - Callback invoked with parsed address components when place is selected.
|
|
190
|
+
*/
|
|
191
|
+
FormGooglePlacesInput.propTypes = {
|
|
192
|
+
id: PropTypes.string.isRequired,
|
|
193
|
+
name: PropTypes.string,
|
|
194
|
+
defaultValue: PropTypes.string,
|
|
195
|
+
placeholder: PropTypes.string,
|
|
196
|
+
autoComplete: PropTypes.string,
|
|
197
|
+
size: PropTypes.string,
|
|
198
|
+
maxLength: PropTypes.string,
|
|
199
|
+
required: PropTypes.string,
|
|
200
|
+
disabled: PropTypes.string,
|
|
201
|
+
display: PropTypes.string,
|
|
202
|
+
label: PropTypes.string,
|
|
203
|
+
tooltip: PropTypes.string,
|
|
204
|
+
className: PropTypes.string,
|
|
205
|
+
validate: PropTypes.string,
|
|
206
|
+
onChange: PropTypes.func,
|
|
207
|
+
onAddressParsed: PropTypes.func,
|
|
208
|
+
};
|
|
209
|
+
export function FormGooglePlacesInput(props) {
|
|
210
|
+
const [inputValue, setInputValue] = React.useState(props.defaultValue || '');
|
|
211
|
+
const [predictions, setPredictions] = React.useState([]);
|
|
212
|
+
const [showPredictions, setShowPredictions] = React.useState(false);
|
|
213
|
+
const [isLoading, setIsLoading] = React.useState(false);
|
|
214
|
+
const { formValidate, inputProps } = useFormComponent(props);
|
|
215
|
+
const config = usePixelatedConfig();
|
|
216
|
+
const debounceTimer = React.useRef(null);
|
|
217
|
+
const inputRef = React.useRef(null);
|
|
218
|
+
// Debounced fetch predictions
|
|
219
|
+
const fetchPredictions = React.useCallback(async (input) => {
|
|
220
|
+
if (!input || input.length < 2) {
|
|
221
|
+
setPredictions([]);
|
|
222
|
+
setShowPredictions(false);
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
setIsLoading(true);
|
|
226
|
+
try {
|
|
227
|
+
const { getGooglePlacesService } = await import('../../integrations/googleplaces');
|
|
228
|
+
const service = getGooglePlacesService(config);
|
|
229
|
+
const results = await service.getPlacePredictions(input, config);
|
|
230
|
+
setPredictions(results);
|
|
231
|
+
setShowPredictions(true);
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
console.error('Error fetching predictions:', error);
|
|
235
|
+
setPredictions([]);
|
|
236
|
+
}
|
|
237
|
+
finally {
|
|
238
|
+
setIsLoading(false);
|
|
239
|
+
}
|
|
240
|
+
}, [config]);
|
|
241
|
+
// Handle input change with debounce
|
|
242
|
+
const handleInputChange = (e) => {
|
|
243
|
+
const value = e.target.value;
|
|
244
|
+
setInputValue(value);
|
|
245
|
+
// Call parent onChange
|
|
246
|
+
if (props.onChange) {
|
|
247
|
+
props.onChange(value);
|
|
248
|
+
}
|
|
249
|
+
// Clear previous timer
|
|
250
|
+
if (debounceTimer.current) {
|
|
251
|
+
clearTimeout(debounceTimer.current);
|
|
252
|
+
}
|
|
253
|
+
// Set new debounced fetch
|
|
254
|
+
debounceTimer.current = setTimeout(() => fetchPredictions(value), config?.googlePlaces?.debounceDelay || 300);
|
|
255
|
+
};
|
|
256
|
+
// Handle place selection
|
|
257
|
+
const handleSelectPlace = React.useCallback(async (prediction) => {
|
|
258
|
+
setInputValue(prediction.fullText);
|
|
259
|
+
setShowPredictions(false);
|
|
260
|
+
try {
|
|
261
|
+
const { getGooglePlacesService } = await import('../../integrations/googleplaces');
|
|
262
|
+
const service = getGooglePlacesService(config);
|
|
263
|
+
const details = await service.getPlaceDetails(prediction.placeId, config);
|
|
264
|
+
if (details && service.isValidCountry(details, config?.googlePlaces?.countryRestrictions)) {
|
|
265
|
+
// Auto-fill address components
|
|
266
|
+
if (props.onAddressParsed) {
|
|
267
|
+
props.onAddressParsed({
|
|
268
|
+
street1: details.street1,
|
|
269
|
+
city: details.city,
|
|
270
|
+
state: details.state,
|
|
271
|
+
zip: details.zip,
|
|
272
|
+
country: details.country,
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
// Update form fields if available
|
|
276
|
+
const form = (inputRef.current?.closest('form') || document.getElementById('address_to'));
|
|
277
|
+
if (form) {
|
|
278
|
+
if (details.city) {
|
|
279
|
+
const cityElement = form.elements.namedItem('city');
|
|
280
|
+
if (cityElement)
|
|
281
|
+
cityElement.value = details.city;
|
|
282
|
+
}
|
|
283
|
+
if (details.state) {
|
|
284
|
+
const stateElement = form.elements.namedItem('state');
|
|
285
|
+
if (stateElement)
|
|
286
|
+
stateElement.value = details.state;
|
|
287
|
+
}
|
|
288
|
+
if (details.zip) {
|
|
289
|
+
const zipElement = form.elements.namedItem('zip');
|
|
290
|
+
if (zipElement)
|
|
291
|
+
zipElement.value = details.zip;
|
|
292
|
+
}
|
|
293
|
+
if (details.country) {
|
|
294
|
+
const countryElement = form.elements.namedItem('country');
|
|
295
|
+
if (countryElement)
|
|
296
|
+
countryElement.value = details.country;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
console.warn('Selected address is not in allowed countries');
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
catch (error) {
|
|
305
|
+
console.error('Error fetching place details:', error);
|
|
306
|
+
}
|
|
307
|
+
}, [config, props]);
|
|
308
|
+
// Close predictions on blur
|
|
309
|
+
const handleBlur = () => {
|
|
310
|
+
setTimeout(() => setShowPredictions(false), 200);
|
|
311
|
+
};
|
|
312
|
+
// Cleanup timer on unmount
|
|
313
|
+
React.useEffect(() => {
|
|
314
|
+
return () => {
|
|
315
|
+
if (debounceTimer.current) {
|
|
316
|
+
clearTimeout(debounceTimer.current);
|
|
317
|
+
}
|
|
318
|
+
};
|
|
319
|
+
}, []);
|
|
320
|
+
return (_jsxs("div", { className: `form-google-places-input ${props.className || ''}`, children: [_jsx(FormLabel, { id: props.id, label: props.label }, "label-" + props.id), props.tooltip ? _jsx(FormTooltip, { id: props.id, text: [props.tooltip] }) : "", props.display === "vertical" ? formValidate : "", _jsxs("div", { className: "google-places-container", children: [_jsx("input", { ref: inputRef, ...inputProps, role: "combobox", type: "text", value: inputValue, onChange: handleInputChange, onBlur: handleBlur, placeholder: props.placeholder || "Start typing an address...", autoComplete: "off", "aria-autocomplete": "list", "aria-controls": `${props.id}-predictions`, "aria-expanded": showPredictions, defaultValue: undefined }), isLoading && _jsx("div", { className: "google-places-loading", children: "Loading..." }), showPredictions && predictions.length > 0 && (_jsx("ul", { id: `${props.id}-predictions`, className: "google-places-predictions", role: "listbox", children: predictions.map((pred, idx) => (_jsx("li", { role: "option", "aria-selected": false, children: _jsxs("button", { type: "button", onClick: () => handleSelectPlace(pred), className: "prediction-item", children: [_jsx("strong", { children: pred.mainText }), pred.secondaryText && _jsx("small", { children: pred.secondaryText })] }) }, idx))) }))] })] }));
|
|
321
|
+
}
|
|
171
322
|
/**
|
|
172
323
|
* FormInput — Generic input field used by the FormEngine. Supports standard input attributes and validation hooks.
|
|
173
324
|
*
|
|
@@ -3,6 +3,9 @@ const debug = false;
|
|
|
3
3
|
* Maps input type to form component name
|
|
4
4
|
*/
|
|
5
5
|
export function mapTypeToComponent(myType) {
|
|
6
|
+
if (!myType) {
|
|
7
|
+
throw new Error('Field type is required');
|
|
8
|
+
}
|
|
6
9
|
if (debug)
|
|
7
10
|
console.log("Mapping Type Field to Component");
|
|
8
11
|
let myComponent = (["button"].includes(myType)) ? 'FormButton' :
|
|
@@ -18,7 +18,7 @@ function validatePageName(name) {
|
|
|
18
18
|
export async function listContentfulPages(config) {
|
|
19
19
|
// Map management-style config to delivery apiProps for the CDN-based read helper
|
|
20
20
|
const apiProps = {
|
|
21
|
-
base_url: 'https://cdn.contentful.com',
|
|
21
|
+
base_url: config.base_url || 'https://cdn.contentful.com',
|
|
22
22
|
space_id: config.space_id,
|
|
23
23
|
environment: config.environment || 'master',
|
|
24
24
|
delivery_access_token: config.delivery_access_token,
|
|
@@ -45,7 +45,7 @@ export async function loadContentfulPage(name, config) {
|
|
|
45
45
|
}
|
|
46
46
|
// Use delivery API for reads
|
|
47
47
|
const apiProps = {
|
|
48
|
-
base_url: 'https://cdn.contentful.com',
|
|
48
|
+
base_url: config.base_url || 'https://cdn.contentful.com',
|
|
49
49
|
space_id: config.space_id,
|
|
50
50
|
environment: config.environment || 'master',
|
|
51
51
|
delivery_access_token: config.delivery_access_token,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
pxl:v1:
|
|
1
|
+
pxl:v1:d9f7082732565c79e26db1ad:691120e2aaef983caef85075e6f16125:37e5626ae9ee7b8f7dde29f147f751b6e9614b452df29d9199764b08ddba69713524a6eac0affd00c9e5579b7afc215d9588c2dca2e27174ceb2fb454a4690b6acd4671b94e49ce86c0ac125c700e964e3c73b916bc3c4b8fcfa2ed2eb242dceff34019dfff76870cd85d8ccfe8071b4b8ba94367ef0d516f94d1278a0222fe9688c5f04ae8af8f0d12c93c9aef8ead92badbf1dd594a6925c409823032ea0b0b0d102d4dab5fb1bcc78ca3e1252edd09176f89dab929d810f484480d1c1ce8332527281f6a99ef1f27366e48fee6b48456686731e2b4824f9812acc037a638b3d9df0d6b689cec0b6909939c03fec04ec10cfa975b305d4d85f1bfb212096aff5a0901e2a23ef58a01f5d462437d85b3992f402b71f6cd81bc2805ebe1b4dd41e9792d11e651a5c982b1590eabe6644f3fb90f654647bd67fad196851e9b9241b8b154c82fa85f21a400165afc753ed37e1a07897d1c95427ad7df45db371cddc33575a39dde870900803addb30ed3fc439f2e6d3a614bcbcba2a9ea4bcb6d12521f10b475bb65e3055d089da8342d0045838a86a7f2d6cfc25855bba313d2bfc8c2b56f188ec5e5c9d93d925d914b7fce1dd01ed284f5375a0852f78b9b2bbeae6efa7ccce60004629536a6c1cb43f3dcf8356d5a91091b43a1a40191394b9263bbd64e6d429e7597c60d2c9e3776d33b54a0a99f8e4261165cb0ab60b3f78260ab687976d311466e2b779e700302c9a28782e74a46f202af58cf940f30ead55908922c9f0babc5495737733681263fc309abdddc663271e976fef79b465ac880e86164b4c2dec803d6a90ca09ad4d3e69c70a5c6e6d1b256b4ecba04dab8480af77661573c706e7e315937654a10e30f3d3664a258b045be1e3498cfcbe42ca94b87753ae48ec015833f2fb1e0929015876ac5c8a65387a12842a7c0b0939de44188422e8f93e8b132c7de2743e98b3a47b01b25613a52b65aabbadf1a4d162c4140104f7a81734a2674dec23974a3e014317ca8a92cd3038c3c9ba2fdc9aebbfe135fc156664d6deab89a0dce2330576ece9aea54257f3dda3db7bfbfacda4a8ce78da3a7214870064a03b907494a022dbe4ef2494e2c51729d895a58572ab75949970a057ef3bd55e80fb2a19e910bf04ad925b1e61edc63afc7bc911a99562242bb94e3de9854b6a9541fc0f4c96e6d8725035c04a9b4fd0676bed608bb02ed05a2851eff743a6d1a7e67347174860a32bee08d152fb56a82bfcfeb8bc5be56a1868485de4812847dba0795ea4751c68097625fd51e7febcdcc82db8da234fb87b2c711ff55182ccf5e1057a7d80944ea6987e461f4a162496ec9e62a6c805076ed715353983efab831a11b6fda78674c47533ca0c25f4d5f0c851e5f9f1603d588ad1f12956ee82714e4bf45ac0315641ba980fe9dba88c9877abdbdd39c294e255946711dcc550d990044166fc27e41e9afed8005c03e7f5c68a6bb4a5df9f54a4470405f031cdf1f1756063990bd1f7488e0e8863edf7f5625c33df5bf0ffd82a5e8af4ae437ab59b07531d158c55070c3c6b7b7077972dc7d8b037a936fd0a4fa787209932d9cc5d36af6e8c0350bc1bf6429f37d458da35701d57b5b0852be5ccc4590ed0946f7fd9acfdc59f6bda9a904db53d9892ea8d3f95cfb0d45f564ecc46e106ed1751c9efb0310e23a5201f5e0742719257f98bf7b039d1634aa8edb6a967987dc18ef7a0be647aa2eb73f09798ce884373faa77abff3ec3bd623f4bf56b90e718daa65f161ee52eb8aa44bc9b3c037785476595ed26d4db2ad5462a573480ea12bf0046d0c67cc08cae74123826f5c10c219a62963433a6dd2a263091bb16f4115a012a4eb03b01dee1dc0421befa5e333cc260f6cab3b9e67e38e1e2727aaea9f612cb999199baa149ec3bfe588d272188a9e9e0c9082a31b2449463287ba77e84b25f0c17f450d08f4327d00c8244e993d356a885c1d66d3c2d63e61cf6d59e5c464fc7455dbfbf12176afb3a79969a13f402a7f3da0d887f2ce141a289370439fb2aa377db0ddef8fc15a482235831d6596e5f3371a5010d4da078a1e9ce39f4798ff1bb4392fc982dab95dacb85d40eef96b83eeb9231ec01a93c727bf6391f9972d243447dee682b8e503d300d68901ea483e6cf6644b3fd1323ce18e42a0bd3709b98e2b8437f99efe8b28aa4643d81f0d087075a1afac4874616c97eb0913714cade7346c83d2802fbed902692f131633909bbdf2efe5abcf6f27a469d47e01b1ce5e0478024aaa745cee7cde26ca917e318b0d2b8fe3d4e87719f85ed161ff897c28334aabfc67c42d3236da84717083f7b2a75e04ed78da10aa89e57d887b7221ed7a76b58039f520295ec16a7226057ce21bc1c0c87a762352e0fc5db7805a65dd114b727ed6bf13300893b5db63465dac299074354b1fe0b6bef2f06c13859c1d3feb1df4739ae13fc3242463c53be3c552a4d77fde9aa83e0e3501a9e8b0f0ed15ffaf4bf45522865ddf9a6d4e63c68782207c2f562b1fdf203c35e9f2e912f5eee7e7d986609d8f21ef6fb8b322bed829865178fca07aa7b8d503715abc64e804b00e7d308434e1fa4fd4fdad7a8804932b3443d7d33197c33584065fc96de93690228c515fe5a1bb3e4a61461e47b995c6411d610effd952438d305a684c97c6750686a447e7a35cd7d469773c66182f25800f5c97431dd2a10bcfad8c69a91a6cf55b526e60b21043e80dd2be1118505330f1cdd28aa8cba1ece94ee3faac1bff587a0f51a330b3179bf5454c1b564d7b6b797086a6c42df0c155ca9531e472556a5a8633b95d0350e23355be5999e210d1b17253721f8e95b0e42a1d50b054da3b9436503144c68d999faf519194193ded9612655508b358e609eed3626a20e8da46e9136ceb6b0e22ccc44ff8e8785c6d1b954398a756fc18c20aab6d34c6fbe23f4c744673bd282f9bc7582f63091ae78b9275cf441e677fe4e70f543c977013087d65932bd184f7a89f7652e14689e13ebf32792beb08c96ceb03964af26236e82ae04862faed9ff74b880ba68fb837f6b34639032a94665a151d66a5111037fb57426c91371881be33da230b0af2a656a3a88c85f40a588bafa63e386fa7787e9cd1dbdbdfabee9b60e2ca73a1efa8ef17d4797729b106d4d4633a6407400c6c54442f36e15213c3e9748f0167944a83aee4a211ecda81a2e690c99f9b74d1686ad9bc2f43c118fc0f4636d9333ce52bddd1e39e9578362e5a10ca593b8ef2fd35d88f4aaa4d6ebb3fdfc41f89c0b7d73dffa5fd42b83f8db30871a6c2c0370f557d8c7319c5eff2fe0c178ba0ae9ca142f41707ac1d4a356589cf905290c780b300e8e32182a654d44803436f4dcfd7b0374bf4952fe249e4e4c115a9ac82dc60cf8159afd8afb4edc78314aed900ec11aeb75b03f31fecd6e5548cec1cd0748449d8d94a418f7d245c449ebf990cbcf47bda4ce0e1498106619e797d57d09a473c17290465768b2012d64f5ee99da0d43052321b2e502dc2112fa2a3c29a65fd1aed6ad17466519f5d9b17fcf9df0dec4cca3ac3297a437ed4be1f15ee3aa2ad0a54b5e0f236067bb06024402b0c002aab1a56981b0c68577fed0a8a0dca5f61c06042ee53de283138b4eadaa9b867a7686b6399a045351adb59a67b12474c40042597b47db668a3c7c932071798af9bbfc7b3f0dac5fdf92d5060f7d527fe98540cdb2c0fe81f0501ba5bd659d4f0cd4fb53f73905c410b24ebf418be04a9753ced57bba0836474f10c563b2aa0b72c766ff1af623f3bc82d518804ddf398012f9ed34146591f8cf8e1660ecd6c9e54fa0b696b4b2c85469802246c34067c9c8a8ce63c04d44bcdb037dd645f67b3bc34c5043a1eb23a5427270cb47cf2461142ed506eeb8bc5d42a2b95e5d7b17ef9d310b22117a1c1fe55a24be803a75c8f67087a563d2d91018835e09410c9cc15e0d37f7ea766613cc605b0e393a52c71fbbb00bf62978e43d0ce48b0c950902948bc84f7ca7ba8c74639265471a62f80de05cad9dd8b7f1ca2fcd3adb586dc752fa4baf397468dab055a1326c2b9f2a213033c986f8d06108d160a2be02fd0c42c1d5335c6c258e7a8764f93350939910a438295d9002daa1ebc43027e0f001e37c07f89e107b5406b224ab36d1c95201bb0de3a53f0150ea43f85cff1bdf659e8fd6165d96da2bf7b7a1c012bf92b530eeec3c09789ecae2700f7b56e0ec7a2b22d227e9f053290d6bd5996d02bcd15917af8aaa59c264d0b97f38ce64d28edaacec36bfb31842df8a70567e6f53d66d0b3cc420cd353bbb6347d9622848f71e45cca7df70b5935470cc86cb83c652e068b01fceed1d83a6e82d78a15b878ed5d88c627ee479e984c81fe343e4f24c1adbdd900ad2ef809df7b3804703aea1d39e09a54f28d3fc05b1f286a55f27668d0aa2d95a46ca22c5ad332d27f1d73b813636579c1e46bdc8ffe35f2f2caf7574bd3a44aa857be23aa7ce36a5cf2d6db7154112277ab418f1d0ed2fdb5315dc075d6615ac696a7324dcce6e899bbd5ab8b34967794306a3ab9c2b572ac53bed51843852febbfbb009404ec79f078b3cecfec0005ee7dc6b72fb84510e1224b5d5614e54af6118f40b6783af1a52ee863e2c123cf27e269e0b120893af2b84fb63782906d1e9b34771cf63360923857cc60b465780c0ccda7415405638d9112997c66e69089b063d73959f854e6b8b7fb9beb531d8530dd2b0640a0e89534ce30b5b4331812ed1a40790022b2d9f38f1ed6dd0847b7d48ced3fe02864faf14c12689f041015b801b17397fa114a10772f62cbbebc9f191e0f6d1a3056d4ca20bf2f3f38d0142d9f60f83983b01fef35ba6af4a07eaf752fbdca5cf77baf5a332df3af9cb222c6a63fa884ead633ab0eb871d9aa7e895dc12c87bde84e73b381c35b4839a4f97763c6ad5c4f6c8b7bdb06ba15d529ab4b16216a5464861aeb4893e02f5b4607155e6681c2551d64847d9ebbff8f613d3c4e56b7aa794d74174b88a3b6377204e10ff79039a83147d8413336d5c1f02f97d7c89d4ec5270667ff07e8136556e3aed608af5903424c504de9748b106e246ff3378f79c794155ec1b0782f2214d9bcfafebb9f4ff20215fabc98a74705d957d312310c31aafc18f16f525678515453289c19d2fc95c904b97eef8f0964f95222e09c4149c20fa7aa27a78a9759e6d1fb8a6c722702c43301fc884db336f83c3b39ee860dba2e97e49076833b253ae99d9bafc9785181836ed52ded1d124081eaf84b77c19463f092056af3341b17b7b4292905a7cc4b6b69b3cad25cd8025f13a395e1b9737f0d469f4b01f310b211b669cd1396c72aa42f951f44ed24b4b1d5a87529a152fa81fb73eb77111ce49546708c19ab5388a5b14a6cdc4b591730eede8c144c1ba6740887b3e49bdaa25a36f284bede3efb8e27fae5a0829216b6f949943aa254ce3f6ccef5e2dfbb76ff3a620d9e60f26d71534c34069c211faec97a6ea7d4976062de19f36ef17513edd6ad04865677100e9046897cfd7f0189ea6d42d801b1290ac9858f46d5664f711431541bc1cdbfd160e32fe7773903246fec474d9039312a196e0b50534b9e263594bf558e69ce9bad479b82100c99ff77d55c984753bb611c50d552f8952bea307b52f8221d24f6c41b74e3d63dfe2ab65ce4ae93418a59ebee96accbc7fa46bec62f79a5e020c7d899
|
package/dist/data/form.json
CHANGED
|
@@ -370,6 +370,24 @@
|
|
|
370
370
|
"tooltip" : "Add tags by typing and pressing Enter or comma"
|
|
371
371
|
}
|
|
372
372
|
},
|
|
373
|
+
{
|
|
374
|
+
"component" : "FormHoneypot",
|
|
375
|
+
"props" : {
|
|
376
|
+
"id" : "winnie",
|
|
377
|
+
"name" : "website"
|
|
378
|
+
}
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
"component" : "FormGooglePlacesInput",
|
|
382
|
+
"props" : {
|
|
383
|
+
"id" : "delivery_address",
|
|
384
|
+
"name" : "delivery_address",
|
|
385
|
+
"placeholder" : "Enter delivery address",
|
|
386
|
+
"label" : "Delivery Address (Google Places) : ",
|
|
387
|
+
"tooltip" : "Start typing to see address suggestions from Google Places",
|
|
388
|
+
"display" : "horizontal"
|
|
389
|
+
}
|
|
390
|
+
},
|
|
373
391
|
{
|
|
374
392
|
"component" : "FormButton",
|
|
375
393
|
"props" : {
|
|
@@ -8,9 +8,6 @@ export * from './components/admin/site-health/site-health-axe-core.integration';
|
|
|
8
8
|
export * from './components/admin/site-health/site-health-cloudwatch.integration';
|
|
9
9
|
export * from './components/admin/site-health/site-health-core-web-vitals.integration';
|
|
10
10
|
export * from './components/admin/site-health/site-health-github.integration';
|
|
11
|
-
export * from './components/admin/site-health/site-health-google-analytics.integration';
|
|
12
|
-
export * from './components/general/cache-manager';
|
|
13
|
-
export * from './components/admin/site-health/site-health-google-search-console.integration';
|
|
14
11
|
export * from './components/admin/site-health/site-health-indicators';
|
|
15
12
|
export * from './components/admin/site-health/site-health-on-site-seo.integration';
|
|
16
13
|
export * from './components/admin/site-health/site-health-security.integration';
|
|
@@ -18,4 +15,5 @@ export * from './components/admin/site-health/site-health-types';
|
|
|
18
15
|
export * from './components/admin/site-health/site-health-uptime.integration';
|
|
19
16
|
export * from './components/admin/site-health/site-health-utils';
|
|
20
17
|
export * from './components/admin/sites/sites.integration';
|
|
18
|
+
export * from './components/general/cache-manager';
|
|
21
19
|
export * from './components/integrations/contentful.management';
|
package/dist/index.js
CHANGED
|
@@ -24,7 +24,6 @@ export * from './components/general/menu-simple';
|
|
|
24
24
|
export * from './components/general/metadata.components';
|
|
25
25
|
export * from './components/general/metadata.functions';
|
|
26
26
|
export * from './components/general/microinteractions';
|
|
27
|
-
export * from './components/general/proxy-csp-listener';
|
|
28
27
|
export * from './components/general/modal';
|
|
29
28
|
export * from './components/general/nerdjoke';
|
|
30
29
|
export * from './components/general/recipe';
|
|
@@ -53,6 +52,7 @@ export * from './components/integrations/flickr';
|
|
|
53
52
|
export * from './components/integrations/gemini-api.client';
|
|
54
53
|
export * from './components/integrations/google.reviews.components';
|
|
55
54
|
export * from './components/integrations/google.reviews.functions';
|
|
55
|
+
export * from './components/integrations/googleplaces';
|
|
56
56
|
export * from './components/integrations/googleanalytics';
|
|
57
57
|
export * from './components/integrations/googlemap';
|
|
58
58
|
export * from './components/integrations/googlesearch';
|
package/dist/index.server.js
CHANGED
|
@@ -21,6 +21,7 @@ export * from './components/integrations/contentful.delivery';
|
|
|
21
21
|
export * from './components/integrations/contentful.management';
|
|
22
22
|
export * from './components/integrations/flickr';
|
|
23
23
|
export * from './components/integrations/gemini-api.server';
|
|
24
|
+
export * from './components/integrations/googleplaces';
|
|
24
25
|
export * from './components/integrations/googlemap';
|
|
25
26
|
export * from './components/integrations/google.reviews.functions';
|
|
26
27
|
export * from './components/integrations/gravatar.functions';
|