@fast-simon/dashboard-utilities 1.0.128 → 1.0.129

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.
@@ -63,6 +63,7 @@ export interface smartCollectionsProps {
63
63
  with_product_analytics?: boolean;
64
64
  market_context?: string | null;
65
65
  variation_id?: string | null;
66
+ ps?: 'new' | 'returning' | null;
66
67
  }
67
68
  export type FacetRequired = 0 | 1 | 2;
68
69
  export type smartCollectionsCallback = ({}: {
@@ -1 +1 @@
1
- {"version":3,"file":"categories.js","sourceRoot":"","sources":["../../src/@types/categories.ts"],"names":[],"mappings":"","sourcesContent":["import {SortBy} from \"./sortBy\";\nimport {Narrow, ServerNarrow} from \"./narrow\";\nimport { ServerProduct} from \"./product\";\nimport {ServerFacet} from \"./facets\";\nimport {ContextFilteringData, QueryUnderstanding} from \"./results\";\n\n\nexport type AncestorCategory = [string, string, string] // category_id, category_name, category_url\nexport interface RelatedCategory {\n id: string\n l: string\n t: string\n u: string\n}\nexport type CategoryAncestor = [string, string, string]\nexport interface Category {\n d: string\n id: string\n l: string\n p_id: string\n t: string\n u: string\n parent_name?: string\n}\nexport interface FastCategory {\n d: string\n id: string\n l: string\n p_id: string\n t: string\n u: string\n parent_name?: string\n}\nexport interface smartCollectionsProps {\n storeID: number\n uuid: string\n siteKey?:string\n cdn: number\n categoryID: string,\n userToken: string,\n sessionStart: number,\n page?: number\n productsPerPage?: number\n sortBy?: SortBy\n narrowBy?: ServerNarrow[]\n facetRequired?: FacetRequired\n withAttributes?: boolean\n recent?: string\n rec?: boolean\n searchWithinSearch?: string,\n segments?: string[],\n hasShopifyMarkets?: boolean,\n disable_turbolinks?:boolean\n disable_strategies?:boolean\n disable_merchandising?:boolean\n disable_semantics?:boolean\n disable_merchandising_rules?:boolean\n disable_antonyms?:boolean\n custom_sort_settings?:{personalization_rank: number, creation_date: number, popularity: number, inventory: number}\n with_product_analytics?:boolean\n market_context?: string | null // Region code for market-specific filtering (e.g., \"US\", \"CA\", \"UK\")\n variation_id?: string | null // A/B test variation ID for reasoning/experiment tracking\n}\nexport type FacetRequired = 0 | 1 | 2\nexport type smartCollectionsCallback = ({}: {\n action: \"products\" | \"facets and products\"\n payload: smartCollectionsResults\n}) => void\nexport interface smartCollectionsResults {\n ancestors: CategoryAncestor[]\n categoryID: string\n name: string\n category_name: string\n products: ServerProduct[]\n facets?: ServerFacet[]\n totalResults: number\n sortBy?: SortBy,\n narrow?: Narrow[],\n isNoResults?: boolean\n page?: number\n pageCount?: number\n avoidPrefixList?: string[]\n merch?: any\n bannerHTML?: string\n turbolink?:string\n hiddenProducts?:ServerProduct[]\n within_search_results_for?:string\n results_for?: string\n id_list?:number[]\n context?: ContextFilteringData // Context-based filtering data (market contexts)\n analytics?: {\n badges?: {\n winners?: Record<string, string> // Product ID -> tooltip message\n overexposed?: Record<string, string> // Product ID -> tooltip message\n new_arrivals?: string[]\n }\n key_hidden_winners?: string\n key_overexposed?: string\n }\n query_understanding?: QueryUnderstanding\n reformulation_source?: string\n request_url?: string // Full URL with all params that was executed (for debugging)\n\n}\nexport type inventoryCallback = ({}: {\n action: \"products inventory\"\n payload: {productsInventory: productsInventoryResults[]}\n}) => void\nexport interface productsInventoryResults {\n id: string;\n totalInventory: number;\n}"]}
1
+ {"version":3,"file":"categories.js","sourceRoot":"","sources":["../../src/@types/categories.ts"],"names":[],"mappings":"","sourcesContent":["import {SortBy} from \"./sortBy\";\nimport {Narrow, ServerNarrow} from \"./narrow\";\nimport { ServerProduct} from \"./product\";\nimport {ServerFacet} from \"./facets\";\nimport {ContextFilteringData, QueryUnderstanding} from \"./results\";\n\n\nexport type AncestorCategory = [string, string, string] // category_id, category_name, category_url\nexport interface RelatedCategory {\n id: string\n l: string\n t: string\n u: string\n}\nexport type CategoryAncestor = [string, string, string]\nexport interface Category {\n d: string\n id: string\n l: string\n p_id: string\n t: string\n u: string\n parent_name?: string\n}\nexport interface FastCategory {\n d: string\n id: string\n l: string\n p_id: string\n t: string\n u: string\n parent_name?: string\n}\nexport interface smartCollectionsProps {\n storeID: number\n uuid: string\n siteKey?:string\n cdn: number\n categoryID: string,\n userToken: string,\n sessionStart: number,\n page?: number\n productsPerPage?: number\n sortBy?: SortBy\n narrowBy?: ServerNarrow[]\n facetRequired?: FacetRequired\n withAttributes?: boolean\n recent?: string\n rec?: boolean\n searchWithinSearch?: string,\n segments?: string[],\n hasShopifyMarkets?: boolean,\n disable_turbolinks?:boolean\n disable_strategies?:boolean\n disable_merchandising?:boolean\n disable_semantics?:boolean\n disable_merchandising_rules?:boolean\n disable_antonyms?:boolean\n custom_sort_settings?:{personalization_rank: number, creation_date: number, popularity: number, inventory: number}\n with_product_analytics?:boolean\n market_context?: string | null // Region code for market-specific filtering (e.g., \"US\", \"CA\", \"UK\")\n variation_id?: string | null // A/B test variation ID for reasoning/experiment tracking\n ps?: 'new' | 'returning' | null // Personalization segment for user segment coefficient preview (new/returning user)\n}\nexport type FacetRequired = 0 | 1 | 2\nexport type smartCollectionsCallback = ({}: {\n action: \"products\" | \"facets and products\"\n payload: smartCollectionsResults\n}) => void\nexport interface smartCollectionsResults {\n ancestors: CategoryAncestor[]\n categoryID: string\n name: string\n category_name: string\n products: ServerProduct[]\n facets?: ServerFacet[]\n totalResults: number\n sortBy?: SortBy,\n narrow?: Narrow[],\n isNoResults?: boolean\n page?: number\n pageCount?: number\n avoidPrefixList?: string[]\n merch?: any\n bannerHTML?: string\n turbolink?:string\n hiddenProducts?:ServerProduct[]\n within_search_results_for?:string\n results_for?: string\n id_list?:number[]\n context?: ContextFilteringData // Context-based filtering data (market contexts)\n analytics?: {\n badges?: {\n winners?: Record<string, string> // Product ID -> tooltip message\n overexposed?: Record<string, string> // Product ID -> tooltip message\n new_arrivals?: string[]\n }\n key_hidden_winners?: string\n key_overexposed?: string\n }\n query_understanding?: QueryUnderstanding\n reformulation_source?: string\n request_url?: string // Full URL with all params that was executed (for debugging)\n\n}\nexport type inventoryCallback = ({}: {\n action: \"products inventory\"\n payload: {productsInventory: productsInventoryResults[]}\n}) => void\nexport interface productsInventoryResults {\n id: string;\n totalInventory: number;\n}"]}
@@ -19,13 +19,14 @@ var __rest = (this && this.__rest) || function (s, e) {
19
19
  return t;
20
20
  };
21
21
  import { jsx as _jsx } from "react/jsx-runtime";
22
- import React, { useEffect, useReducer, useState, useMemo, useCallback } from "react";
22
+ import React, { useEffect, useReducer, useRef, useState, useMemo, useCallback } from "react";
23
23
  import { FastState, FastStateFunctions } from "./context";
24
24
  import { ThemeProvider } from "react-jss";
25
25
  import { fastStateReducer } from "./reducer";
26
26
  import { newObject } from "../common";
27
27
  import { getShowSalesAnalyticsSetting } from "../../utils/getSalesAnalyticsSettings";
28
28
  import { getLSVectorSearchOn } from "../../utils/getLSVectorSearch";
29
+ import { getPersonalizationSegment } from "../../utils/userSegmentPreview";
29
30
  import { FullTextSearch } from "../../services/search";
30
31
  import { SmartCollections } from "../../services/smartCollections";
31
32
  import { Autocomplete } from "../../services/autocomplete";
@@ -60,10 +61,16 @@ const FastSimonApi = (_a) => {
60
61
  custom_sort_settings: undefined,
61
62
  isAutocomplete: false,
62
63
  variation_id: variationId,
64
+ user_segment_preview: 'none',
63
65
  // Compare Mode state
64
66
  comparisonData: null,
65
67
  isComparing: false
66
68
  });
69
+ // Ref for user_segment_preview: enables synchronous reads across closures
70
+ // so that any fetch triggered in the same handler (e.g. setCustomSort) reads the latest value
71
+ const userSegmentPreviewRef = useRef(state.user_segment_preview);
72
+ const lastFetchedSegmentRef = useRef(state.user_segment_preview);
73
+ userSegmentPreviewRef.current = state.user_segment_preview;
67
74
  const [categories, setCategories] = useState([]);
68
75
  const [analyticsFetched, setAnalyticsFetched] = useState(false);
69
76
  const [lastAnalyticsQuery, setLastAnalyticsQuery] = useState('');
@@ -99,6 +106,10 @@ const FastSimonApi = (_a) => {
99
106
  function setIsComparing(isComparing) {
100
107
  dispatch === null || dispatch === void 0 ? void 0 : dispatch({ type: 'setIsComparing', payload: isComparing });
101
108
  }
109
+ function setUserSegmentPreview(preview) {
110
+ userSegmentPreviewRef.current = preview;
111
+ dispatch === null || dispatch === void 0 ? void 0 : dispatch({ type: 'setUserSegmentPreview', payload: preview });
112
+ }
102
113
  // Compute detailed comparison between Hybrid ON and Hybrid OFF using full ID lists
103
114
  function computeComparisonFromIds(hybridOnIds, hybridOffIds) {
104
115
  // Create rank maps (1-based index)
@@ -480,6 +491,13 @@ const FastSimonApi = (_a) => {
480
491
  window.removeEventListener('fast-simon-update-is-autocomplete', handleSetIsAutocomplete);
481
492
  };
482
493
  }, []);
494
+ // Refetch collection when user_segment_preview changes, but only if not already fetched with this value
495
+ // (e.g. setCustomSort may have already triggered a fetch with the correct ref value)
496
+ useEffect(() => {
497
+ if (state.collectionID && state.user_segment_preview !== lastFetchedSegmentRef.current) {
498
+ setCollectionID(state.collectionID);
499
+ }
500
+ }, [state.user_segment_preview]);
483
501
  const onSearch = (props, isInfiniteScroll) => {
484
502
  setIsLoading({ products: true, filters: true });
485
503
  // Clear previous comparison data when starting new search
@@ -614,7 +632,9 @@ const FastSimonApi = (_a) => {
614
632
  const currentCollection = props.categoryID || '';
615
633
  const currentForceAnalytics = forceProductAnalytics || getShowSalesAnalyticsSetting();
616
634
  const shouldFetchAnalytics = currentForceAnalytics || (isAnalyticsEnabled && (currentCollection !== lastAnalyticsCollection || lastAnalyticsMode !== 'collection'));
617
- SmartCollections.getSmartCollections(Object.assign(Object.assign({}, props), { withAttributes: promoTiles || withProductAttributes, with_product_analytics: shouldFetchAnalytics, market_context: marketContext, variation_id: state.variation_id }))
635
+ const personalizationSegment = getPersonalizationSegment(userSegmentPreviewRef.current);
636
+ lastFetchedSegmentRef.current = userSegmentPreviewRef.current;
637
+ SmartCollections.getSmartCollections(Object.assign(Object.assign({}, props), { withAttributes: promoTiles || withProductAttributes, with_product_analytics: shouldFetchAnalytics, market_context: marketContext, variation_id: state.variation_id, ps: personalizationSegment }))
618
638
  .then((response) => __awaiter(void 0, void 0, void 0, function* () {
619
639
  var _a;
620
640
  // Mark analytics as fetched only if response contains analytics data with badges
@@ -632,6 +652,7 @@ const FastSimonApi = (_a) => {
632
652
  listIdRequestProps.page = 1;
633
653
  listIdRequestProps.market_context = marketContext;
634
654
  listIdRequestProps.variation_id = state.variation_id;
655
+ listIdRequestProps.ps = personalizationSegment;
635
656
  let listIdRes = yield SmartCollections.getSmartCollectionsProductsIds(listIdRequestProps).then((response) => {
636
657
  return response;
637
658
  });
@@ -643,6 +664,7 @@ const FastSimonApi = (_a) => {
643
664
  facetsRequestProps.page = props.page;
644
665
  facetsRequestProps.market_context = marketContext;
645
666
  facetsRequestProps.variation_id = state.variation_id;
667
+ facetsRequestProps.ps = personalizationSegment;
646
668
  let facetsRes = yield SmartCollections.getSmartCollections(facetsRequestProps).then((response) => {
647
669
  return response;
648
670
  });
@@ -750,7 +772,8 @@ const FastSimonApi = (_a) => {
750
772
  setFlag,
751
773
  setCustomSort,
752
774
  setIsAutocomplete,
753
- setVariationId
775
+ setVariationId,
776
+ setUserSegmentPreview
754
777
  } }, { children: _jsx(FastState.Provider, Object.assign({ value: stateContextValue }, { children: _jsx(ThemeProvider, Object.assign({ theme: mergedTheme }, { children: children })) })) })));
755
778
  };
756
779
  // Memoize component to prevent unnecessary re-renders when parent updates
@@ -1 +1 @@
1
- {"version":3,"file":"FastSimonApi.js","sourceRoot":"","sources":["../../../src/components/FastSimonApi/FastSimonApi.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {useEffect, useReducer, useState, useMemo, useCallback} from \"react\";\nimport {ComparisonData, ProductRankChange, CustomSortSettings, FastState, FastStateFunctions, IsLoading, SetStateProps} from \"./context\";\nimport {ThemeProvider} from \"react-jss\";\nimport {fastStateReducer} from \"./reducer\";\nimport {newObject} from \"../common\";\n\nimport {SortBy} from \"../../@types/sortBy\";\nimport {fullTextSearchProps, FullTextServerResponseAll} from \"../../@types/results\";\nimport {getShowSalesAnalyticsSetting} from \"../../utils/getSalesAnalyticsSettings\";\nimport {getLSVectorSearchOn} from \"../../utils/getLSVectorSearch\";\n\nimport {Product} from \"../../@types/product\";\nimport {FastCategory, smartCollectionsProps, smartCollectionsResults} from \"../../@types/categories\";\nimport {Narrow, ServerNarrow} from \"../../@types/narrow\";\nimport {FullTextSearch} from \"../../services/search\";\nimport {SmartCollections} from \"../../services/smartCollections\";\nimport {autocompleteProps, AutocompleteReasoningResponse} from \"../../@types/autocomplete\";\nimport {Autocomplete} from \"../../services/autocomplete\";\n\nexport type AppType = \"SPA\" | \"MPA\";\n\ninterface Props {\n storeID: number;\n uuid: string;\n type?: AppType;\n onReady?: VoidFunction;\n cartToken?: string;\n defaultSort?: SortBy\n collectionID?: string\n withProductAttributes?: boolean\n promoTiles?: boolean\n getTitle?: ({}: { categoryID?: string, query?: string }) => string\n isInfiniteScroll?: boolean\n useFilters?: boolean\n noReport?: boolean\n customTitleChange?: (results?: FullTextServerResponseAll | smartCollectionsResults) => void\n theme?: Partial<MainTheme>\n children?: React.ReactNode;\n siteKey?:string\n isEnterpriseMerchandising?: boolean;\n subscription?: number;\n marketContext?: string | null; // Region code for market-specific product filtering (e.g., \"US\", \"CA\", \"UK\")\n forceProductAnalytics?: boolean; // When true, always pass with_product_analytics regardless of other conditions\n variationId?: string | null; // A/B test variation ID for reasoning/experiment tracking\n}\n\nexport interface MainTheme {\n primaryColor: string\n lighterPrimary: string\n successGreen: string\n errorRed: string\n loadingYellow: string,\n}\n\nconst mainTheme: MainTheme = {\n primaryColor: \"#1976d2\",\n lighterPrimary: \"rgba(25,118,210,0.71)\",\n successGreen: \"#4BB543\",\n errorRed: \"#ff0033\",\n loadingYellow: \"#f3b706\",\n}\n\n\nconst FastSimonApi: React.FC<Props> = ({\n storeID, uuid,siteKey, children,\n defaultSort , promoTiles = false, theme,\n withProductAttributes = false, isInfiniteScroll = false, getTitle,\n useFilters, noReport = false, customTitleChange,\n isEnterpriseMerchandising = false, subscription = 0,\n marketContext = null,\n forceProductAnalytics = false,\n variationId = null,\n ...props\n }) => {\n const [state, dispatch] = (useReducer as any)?.(fastStateReducer, {\n isReady: false,\n type: props.type ?? 'SPA',\n page: 1,\n query: '',\n sortBy: defaultSort,\n isLoading: {\n products: false,\n filters: false,\n },\n collectionID: props.collectionID,\n narrow: undefined,\n results: undefined,\n recommendations: {},\n singleProducts: {},\n searchWithinSearch: \"\",\n segments: undefined,\n flag:[],\n custom_sort_settings:undefined,\n isAutocomplete:false,\n variation_id: variationId, // Initialize from prop, then updated via setVariationId\n // Compare Mode state\n comparisonData: null,\n isComparing: false\n });\n\n const [categories, setCategories] = useState<FastCategory[]>([]);\n const [analyticsFetched, setAnalyticsFetched] = useState(false);\n const [lastAnalyticsQuery, setLastAnalyticsQuery] = useState<string>('');\n const [lastAnalyticsCollection, setLastAnalyticsCollection] = useState<string>('');\n const [lastAnalyticsMode, setLastAnalyticsMode] = useState<'search' | 'collection' | ''>('');\n\n // Only enable analytics for enterprise merchants or subscription level 5\n const isAnalyticsEnabled = isEnterpriseMerchandising || subscription === 5;\n\n const {results, isLoading, query, sortBy, type, collectionID, page, narrow, recommendations, singleProducts, isReady, autocomplete, segments,isAutocomplete\n\n } = state;\n\n function setResults(results: FullTextServerResponseAll | smartCollectionsResults | AutocompleteReasoningResponse | undefined) {\n (dispatch as any)?.({type: 'setResults', payload: results});\n }\n\n function mergeResults(results: FullTextServerResponseAll | smartCollectionsResults | AutocompleteReasoningResponse, infiniteScroll: boolean) {\n (dispatch as any)?.({type: 'mergeResults', payload: {results, infiniteScroll}});\n }\n function mergeFacetsWithResults(facets:Narrow[]) {\n (dispatch as any)?.({type: 'mergeFacetsWithResults', payload: facets});\n }\n\n function mergeResultsKeepProduct(results: FullTextServerResponseAll | smartCollectionsResults) {\n (dispatch as any)?.({type: 'mergeResultsKeepProduct', payload: {results}});\n }\n\n function setIsLoading(isLoading: IsLoading) {\n (dispatch as any)?.({type: 'setIsLoading', payload: isLoading});\n }\n\n function setIsAutocomplete(isAutocomplete:boolean)\n {\n (dispatch as any)?.({type: 'setIsAutocomplete', payload: isAutocomplete});\n }\n\n function setVariationId(variationId: string | null) {\n (dispatch as any)?.({type: 'setVariationId', payload: variationId});\n }\n\n function setComparisonData(comparisonData: ComparisonData | null) {\n (dispatch as any)?.({type: 'setComparisonData', payload: comparisonData});\n }\n\n function setIsComparing(isComparing: boolean) {\n (dispatch as any)?.({type: 'setIsComparing', payload: isComparing});\n }\n\n // Compute detailed comparison between Hybrid ON and Hybrid OFF using full ID lists\n function computeComparisonFromIds(hybridOnIds: string[], hybridOffIds: string[]): ComparisonData {\n // Create rank maps (1-based index)\n const onRankMap = new Map<string, number>();\n const offRankMap = new Map<string, number>();\n\n hybridOnIds.forEach((id, index) => onRankMap.set(id.toString(), index + 1));\n hybridOffIds.forEach((id, index) => offRankMap.set(id.toString(), index + 1));\n\n const productChanges = new Map<string, ProductRankChange>();\n let totalImproved = 0;\n let totalDeclined = 0;\n let totalNew = 0;\n let totalUnchanged = 0;\n\n // Analyze all products in hybrid ON results\n hybridOnIds.forEach((id) => {\n const idStr = id.toString();\n const rankWithHybrid = onRankMap.get(idStr) || -1;\n const rankWithoutHybrid = offRankMap.get(idStr) || -1;\n\n let status: ProductRankChange['status'];\n let rankDelta = 0;\n\n if (rankWithoutHybrid === -1) {\n // Product not in results without hybrid - it's new due to hybrid\n status = 'new';\n totalNew++;\n } else {\n rankDelta = rankWithoutHybrid - rankWithHybrid; // Positive = improved (moved up)\n\n if (rankDelta > 0) {\n status = 'improved';\n totalImproved++;\n } else if (rankDelta < 0) {\n status = 'declined';\n totalDeclined++;\n } else {\n status = 'unchanged';\n totalUnchanged++;\n }\n }\n\n productChanges.set(idStr, {\n productId: idStr,\n rankWithHybrid,\n rankWithoutHybrid,\n rankDelta,\n status\n });\n });\n\n return {\n hybridOnIds: hybridOnIds.map(id => id.toString()),\n hybridOffIds: hybridOffIds.map(id => id.toString()),\n productChanges,\n totalImproved,\n totalDeclined,\n totalNew,\n totalUnchanged\n };\n }\n\n function setQuery(query: string , isAutocomplete?:boolean) {\n (dispatch as any)?.({type: 'setQuery', payload: query});\n (dispatch as any)?.({type: 'setIsAutocomplete', payload: isAutocomplete?isAutocomplete:false});\n\n // Create the object with the computed property\n let fetchParams = {\n siteKey:siteKey,\n uuid:uuid,\n storeID:storeID,\n term: query,\n sortBy: defaultSort,\n segments: state.segments,\n withProductAttributes:withProductAttributes,\n custom_sort_settings:state.custom_sort_settings,\n disable_merchandising:state.flag.find((f:string)=>f==\"disable_merchandising\")?1:0,\n disable_semantics:state.flag.find((f:string)=>f==\"disable_semantics\")?1:0,\n disable_turbolinks:state.flag.find((f:string)=>f==\"disable_turbolinks\")?1:0,\n disable_strategies:state.flag.find((f:string)=>f==\"disable_strategies\")?1:0,\n disable_merchandising_rules:state.flag.find((f:string)=>f==\"disable_merchandising_rules\")?1:0,\n disable_antonyms:state.flag.find((f:string)=>f==\"disable_antonyms\")?1:0,\n variation_id: state.variation_id,\n };\n\n fetchResults(fetchParams, isInfiniteScroll,isAutocomplete?isAutocomplete:false);\n }\n function setCustomSort(customSortSettings:CustomSortSettings) {\n (dispatch as any)?.({type: 'setCustomSort', payload: customSortSettings});\n // Create the object with the computed property\n let fetchParams = {\n siteKey:siteKey,\n uuid:uuid,\n storeID:storeID,\n term: state.query,\n narrowBy: state.narrow,\n sortBy: state.sortBy,\n categoryID: state.collectionID,\n segments: state.segments,\n withProductAttributes:state.withProductAttributes,\n searchWithinSearch:state.searchWithinSearch,\n custom_sort_settings:customSortSettings,\n disable_merchandising:state.flag.find((f:string)=>f==\"disable_merchandising\")?1:0,\n disable_semantics:state.flag.find((f:string)=>f==\"disable_semantics\")?1:0,\n disable_turbolinks:state.flag.find((f:string)=>f==\"disable_turbolinks\")?1:0,\n disable_strategies:state.flag.find((f:string)=>f==\"disable_strategies\")?1:0,\n disable_merchandising_rules:state.flag.find((f:string)=>f==\"disable_merchandising_rules\")?1:0,\n disable_antonyms:state.flag.find((f:string)=>f==\"disable_antonyms\")?1:0,\n variation_id: state.variation_id,\n };\n\n fetchResults(fetchParams, isInfiniteScroll);\n\n }\n\n function setFlag(flags: string[]) {\n const flagsToData=flags.map((f)=>{return \"disable_\" + f;});\n (dispatch as any)?.({type: 'setFlag', payload: flagsToData });\n\n // Create the object with the computed property\n let fetchParams = {\n siteKey:siteKey,\n uuid: uuid,\n storeID: storeID,\n term: state.query,\n narrowBy: state.narrow,\n sortBy: state.defaultSort,\n segments: state.segments,\n categoryID: state.collectionID,\n withProductAttributes: withProductAttributes,\n searchWithinSearch:state.searchWithinSearch,\n custom_sort_settings:state.custom_sort_settings,\n variation_id: state.variation_id,\n };\n\n if(flags.length>0)\n {\n flags.forEach((f)=>{\n let flagProp = \"disable_\" + f;\n // Add the dynamic key to the object\n // @ts-ignore\n fetchParams[flagProp as any] = true;\n });\n }\n\n\n fetchResults(fetchParams, isInfiniteScroll,state.isAutocomplete);\n }\n\n function setSortBy(sortBy: SortBy) {\n (dispatch as any)?.({type: 'setSortBy', payload: sortBy});\n // Create the object with the computed property\n let fetchParams = {\n siteKey:siteKey,\n uuid:uuid,\n storeID:storeID,\n term: state.query,\n narrowBy: state.narrow,\n sortBy: sortBy,\n categoryID: state.collectionID,\n segments: state.segments,\n withProductAttributes:withProductAttributes,\n searchWithinSearch:state.searchWithinSearch,\n custom_sort_settings:state.custom_sort_settings,\n disable_merchandising:state.flag.find((f:string)=>f==\"disable_merchandising\")?1:0,\n disable_semantics:state.flag.find((f:string)=>f==\"disable_semantics\")?1:0,\n disable_turbolinks:state.flag.find((f:string)=>f==\"disable_turbolinks\")?1:0,\n disable_strategies:state.flag.find((f:string)=>f==\"disable_strategies\")?1:0,\n disable_merchandising_rules:state.flag.find((f:string)=>f==\"disable_merchandising_rules\")?1:0,\n disable_antonyms:state.flag.find((f:string)=>f==\"disable_antonyms\")?1:0,\n variation_id: state.variation_id,\n };\n\n fetchResults(fetchParams, isInfiniteScroll);\n\n }\n function setSegments(segments: string[]) {\n (dispatch as any)?.({type: 'setSegments', payload: segments});\n\n let fetchParams = {\n withProductAttributes:withProductAttributes,\n siteKey:siteKey,\n uuid:uuid,\n storeID:storeID,\n term: state.query,\n narrowBy: state.narrow,\n sortBy: state.sortBy,\n categoryID: state.collectionID,\n segments: segments,\n searchWithinSearch:state.searchWithinSearch,\n custom_sort_settings:state.custom_sort_settings,\n disable_merchandising:state.flag.find((f:string)=>f==\"disable_merchandising\")?1:0,\n disable_semantics:state.flag.find((f:string)=>f==\"disable_semantics\")?1:0,\n disable_turbolinks:state.flag.find((f:string)=>f==\"disable_turbolinks\")?1:0,\n disable_strategies:state.flag.find((f:string)=>f==\"disable_strategies\")?1:0,\n disable_merchandising_rules:state.flag.find((f:string)=>f==\"disable_merchandising_rules\")?1:0,\n disable_antonyms:state.flag.find((f:string)=>f==\"disable_antonyms\")?1:0,\n variation_id: state.variation_id,\n };\n\n fetchResults(fetchParams, isInfiniteScroll,state.isAutocomplete);\n\n }\n function setType(type: AppType) {\n (dispatch as any)?.({type: 'setType', payload: type});\n }\n\n function setCollectionID(collectionID: string) {\n (dispatch as any)?.({type: 'setCollectionID', payload: collectionID});\n (dispatch as any)?.({type: 'setIsAutocomplete', payload: false});\n\n // Create the object with the computed property\n let fetchParams = {\n siteKey:siteKey,\n uuid:uuid,\n storeID:storeID,\n categoryID: collectionID,\n sortBy: defaultSort,\n segments: state.segments,\n custom_sort_settings:state.custom_sort_settings,\n disable_merchandising:state.flag.find((f:string)=>f==\"disable_merchandising\")?1:0,\n disable_semantics:state.flag.find((f:string)=>f==\"disable_semantics\")?1:0,\n disable_turbolinks:state.flag.find((f:string)=>f==\"disable_turbolinks\")?1:0,\n disable_strategies:state.flag.find((f:string)=>f==\"disable_strategies\")?1:0,\n disable_merchandising_rules:state.flag.find((f:string)=>f==\"disable_merchandising_rules\")?1:0,\n disable_antonyms:state.flag.find((f:string)=>f==\"disable_antonyms\")?1:0,\n variation_id: state.variation_id,\n };\n\n fetchResults(fetchParams, isInfiniteScroll);\n\n }\n\n function setPage(page: number) {\n (dispatch as any)?.({type: 'setPage', payload: page});\n\n let fetchParams = {\n withProductAttributes:withProductAttributes,\n siteKey:siteKey,\n uuid:uuid,\n storeID:storeID,\n term: state.query,\n narrowBy: state.narrow,\n sortBy: state.sortBy,\n categoryID: state.collectionID,\n page: page,\n segments: state.segments,\n searchWithinSearch:state.searchWithinSearch,\n custom_sort_settings:state.custom_sort_settings,\n disable_merchandising:state.flag.find((f:string)=>f==\"disable_merchandising\")?1:0,\n disable_semantics:state.flag.find((f:string)=>f==\"disable_semantics\")?1:0,\n disable_turbolinks:state.flag.find((f:string)=>f==\"disable_turbolinks\")?1:0,\n disable_strategies:state.flag.find((f:string)=>f==\"disable_strategies\")?1:0,\n disable_merchandising_rules:state.flag.find((f:string)=>f==\"disable_merchandising_rules\")?1:0,\n disable_antonyms:state.flag.find((f:string)=>f==\"disable_antonyms\")?1:0,\n variation_id: state.variation_id,\n };\n\n fetchResults(fetchParams, isInfiniteScroll);\n\n }\n\n function setNarrow(narrow: ServerNarrow[] | undefined) {\n (dispatch as any)?.({type: 'setNarrow', payload: narrow});\n\n let fetchParams = {\n withProductAttributes:withProductAttributes,\n siteKey:siteKey,\n uuid:uuid,\n storeID:storeID,\n term: state.query,\n narrowBy: narrow,\n sortBy: state.sortBy,\n categoryID: state.collectionID,\n segments: state.segments,\n searchWithinSearch:state.searchWithinSearch,\n custom_sort_settings:state.custom_sort_settings,\n disable_merchandising:state.flag.find((f:string)=>f==\"disable_merchandising\")?1:0,\n disable_semantics:state.flag.find((f:string)=>f==\"disable_semantics\")?1:0,\n disable_turbolinks:state.flag.find((f:string)=>f==\"disable_turbolinks\")?1:0,\n disable_strategies:state.flag.find((f:string)=>f==\"disable_strategies\")?1:0,\n disable_merchandising_rules:state.flag.find((f:string)=>f==\"disable_merchandising_rules\")?1:0,\n disable_antonyms:state.flag.find((f:string)=>f==\"disable_antonyms\")?1:0,\n variation_id: state.variation_id,\n };\n\n fetchResults(fetchParams, isInfiniteScroll);\n\n }\n\n function setState({...newState}: SetStateProps) {\n console.log(\"state\", state);\n console.log(\"setState\", newState);\n\n (dispatch as any)?.({type: 'setState', payload: newState});\n\n fetchResults({\n siteKey:siteKey,\n uuid:uuid,\n storeID:storeID,\n term: newState.query,\n narrowBy: newState.narrow?newState.narrow:undefined,\n sortBy: newState.sortBy ?? defaultSort,\n categoryID: newState.collectionID,\n page: newState.page,\n segments: newState.segments,\n variation_id: state.variation_id,\n }, Boolean(!results && isInfiniteScroll && newState.page && newState.page > 1));\n }\n\n\n function setSingleProducts(products: Product[]) {\n (dispatch as any)?.({type: \"setSingleProducts\", payload: products});\n }\n\n\n function setReady(isReady: boolean) {\n (dispatch as any)?.({type: \"setReady\", payload: isReady});\n }\n\n function setSearchWithinSearch(searchWithinSearch: string) {\n (dispatch as any)?.({type: \"setSearchWithinSearch\", payload: searchWithinSearch});\n\n let fetchParams = {\n withProductAttributes:withProductAttributes,\n siteKey:siteKey,\n uuid:uuid,\n storeID:storeID,\n term: query,\n narrowBy: state.narrow,\n sortBy: state.sortBy,\n categoryID: state.collectionID,\n segments: state.segments,\n searchWithinSearch:searchWithinSearch,\n custom_sort_settings:state.custom_sort_settings,\n disable_merchandising:state.flag.find((f:string)=>f==\"disable_merchandising\")?1:0,\n disable_semantics:state.flag.find((f:string)=>f==\"disable_semantics\")?1:0,\n disable_turbolinks:state.flag.find((f:string)=>f==\"disable_turbolinks\")?1:0,\n disable_strategies:state.flag.find((f:string)=>f==\"disable_strategies\")?1:0,\n disable_merchandising_rules:state.flag.find((f:string)=>f==\"disable_merchandising_rules\")?1:0,\n disable_antonyms:state.flag.find((f:string)=>f==\"disable_antonyms\")?1:0,\n variation_id: state.variation_id,\n };\n\n fetchResults(fetchParams, isInfiniteScroll);\n\n }\n\n function fetchResults(props:{\n uuid:string, storeID:number,siteKey?:string, term?: string, page?: number, narrowBy?: ServerNarrow[] | undefined,\n sortBy?: SortBy, categoryID?: string, searchWithinSearch?: string, segments?: string[] ,withProductAttributes?:boolean,\n disable_semantics?:number,disable_merchandising?:number,disable_strategies?:number,disable_turbolinks?:number,disable_personalization?:number,custom_sort_settings?:CustomSortSettings,\n variation_id?: string | null\n },\n isInfiniteScroll: boolean,\n autocomplete:boolean=false) {\n\n // on first request check if we need to fetch more then 1 product\n\n if (props.term && !autocomplete) {\n onSearch(newObject({\n ...props,\n page: props.page || 1,\n infiniteScrollPage: isInfiniteScroll,\n }) as Omit<fullTextSearchProps, \"callback\">, isInfiniteScroll);\n } else if(props.term && autocomplete){\n onAutocompleteSearch(newObject({\n ...props\n }) as Omit<autocompleteProps, \"callback\" | \"page\" | \"narrowBy\" | \"sortBy\" | \"categoryID\" | \"searchWithinSearch\" | \"custom_sort_settings\">);\n } else if (props.categoryID) {\n onCollection(newObject({\n ...props,\n page: props.page || 1,\n infiniteScrollPage: isInfiniteScroll,\n }) as Omit<smartCollectionsProps, \"callback\">, isInfiniteScroll);\n }\n\n return;\n\n }\n\n\n\n useEffect(() => {\n function handleSetQueryEvent(event: any) {\n // Support both string (legacy) and object with isAutocomplete flag\n if (typeof event.detail === 'string') {\n setQuery(event.detail);\n } else {\n setQuery(event.detail.query, event.detail.isAutocomplete);\n }\n }\n\n function handleSetFlagEvent(event: any){\n setFlag(event.details)\n\n }\n function handleSetCollectionEvent(event: any) {\n setCollectionID(event.detail);\n }\n\n function handleSetCollectionURLEvent(event: any) {\n getAllCategories().then(r => {\n const id = r.find(c => c.u === event.detail)?.id;\n\n if (id) {\n setCollectionID(id);\n return;\n }\n\n window.location.href = event.detail;\n })\n }\n\n function handleSetPageEvent(event: any) {\n setPage(event.detail);\n }\n\n function handleSetSortEvent(event: any) {\n setSortBy(event.detail);\n }\n\n function handleSetNarrowEvent(event: any) {\n setNarrow(event.detail);\n }\n\n function handleSetSegmentsEvent(event: any) {\n setSegments(event.detail);\n }\n function handleSetIsAutocomplete(event:any){\n setIsAutocomplete(event.detail)\n }\n window.addEventListener('fast-simon-update-query', handleSetQueryEvent);\n window.addEventListener('fast-simon-update-collection', handleSetCollectionEvent);\n window.addEventListener('fast-simon-update-collection-url', handleSetCollectionURLEvent);\n window.addEventListener('fast-simon-update-page', handleSetPageEvent);\n window.addEventListener('fast-simon-update-sort', handleSetSortEvent);\n window.addEventListener('fast-simon-update-narrow', handleSetNarrowEvent);\n window.addEventListener('fast-simon-update-segments', handleSetSegmentsEvent);\n window.addEventListener('fast-simon-update-flag', handleSetFlagEvent);\n window.addEventListener('fast-simon-update-is-autocomplete', handleSetIsAutocomplete);\n\n return () => {\n window.removeEventListener('fast-simon-update-query', handleSetQueryEvent);\n window.removeEventListener('fast-simon-update-collection', handleSetCollectionEvent);\n window.removeEventListener('fast-simon-update-collection-url', handleSetCollectionURLEvent);\n window.removeEventListener('fast-simon-update-page', handleSetPageEvent);\n window.removeEventListener('fast-simon-update-sort', handleSetSortEvent);\n window.removeEventListener('fast-simon-update-narrow', handleSetNarrowEvent);\n window.removeEventListener('fast-simon-update-segments', handleSetSegmentsEvent);\n window.removeEventListener('fast-simon-update-flag', handleSetFlagEvent);\n window.removeEventListener('fast-simon-update-is-autocomplete', handleSetIsAutocomplete);\n }\n\n }, []);\n\n const onSearch = (props: Omit<fullTextSearchProps, \"callback\">, isInfiniteScroll: boolean) => {\n setIsLoading({products: true, filters: true});\n\n // Clear previous comparison data when starting new search\n setComparisonData(null);\n\n // Pass with_product_analytics only on first request for this query OR when switching from collection to search\n // AND only if merchant is enterprise or subscription level 5\n // forceProductAnalytics bypasses all conditions and always passes with_product_analytics\n // Read from localStorage directly to get the current value (handles setting changes in SettingsModal)\n const currentQuery = props.term || '';\n const currentForceAnalytics = forceProductAnalytics || getShowSalesAnalyticsSetting();\n const shouldFetchAnalytics = currentForceAnalytics || (isAnalyticsEnabled && (currentQuery !== lastAnalyticsQuery || lastAnalyticsMode !== 'search'));\n\n // Check if hybrid search is enabled - we'll need to make a comparison call\n const isHybridEnabled = getLSVectorSearchOn();\n\n FullTextSearch.getReasoningFullTextSearch({\n ...props,\n withAttributes: promoTiles || withProductAttributes,\n with_product_analytics: shouldFetchAnalytics,\n market_context: marketContext,\n variation_id: state.variation_id\n }).then(async(response) => {\n // Mark analytics as fetched only if response contains analytics data with badges\n if (shouldFetchAnalytics && response.analytics?.badges) {\n setAnalyticsFetched(true);\n setLastAnalyticsQuery(currentQuery);\n setLastAnalyticsMode('search');\n }\n\n // Preserve existing analytics if new response doesn't have it\n const existingAnalytics = (results as any)?.analytics;\n response=getFormatedData(response, existingAnalytics);\n\n // Handle turbolink responses - skip additional API calls to prevent errors\n if (response.turbolink && response.totalResults === 0) {\n mergeResults(response, isInfiniteScroll);\n\n if (!customTitleChange) {\n document.title = `Search Result for ${query}`;\n } else {\n customTitleChange(results);\n }\n\n setIsLoading({filters: false, products: false});\n return;\n }\n\n const listIdRequestProps = { ...props };\n listIdRequestProps.searchWithinSearch=undefined;\n listIdRequestProps.productsPerPage=1000000;\n listIdRequestProps.page=1;\n listIdRequestProps.market_context = marketContext;\n listIdRequestProps.variation_id = state.variation_id;\n let listIdRes=await FullTextSearch.getReasoningFullTextSearchProductsIds(listIdRequestProps).then((response)=>{\n return response;\n });\n response.id_list=listIdRes.id_list;\n\n const facetsRequestProps = { ...props };\n facetsRequestProps.facetRequired=2;\n facetsRequestProps.searchWithinSearch=props.searchWithinSearch;\n facetsRequestProps.productsPerPage=props.productsPerPage;\n facetsRequestProps.page=props.page;\n facetsRequestProps.market_context = marketContext;\n facetsRequestProps.variation_id = state.variation_id;\n let facetsRes=await FullTextSearch.getReasoningFullTextSearch(facetsRequestProps).then((response)=>{\n return response;\n });\n response.facets=facetsRes.facets;\n\n mergeResults(response, isInfiniteScroll);\n\n if (!customTitleChange) {\n document.title = `Search Result for ${query}`;\n } else {\n customTitleChange(results);\n }\n\n if (!response) {\n setIsLoading({\n filters: true, products: false\n });\n } else {\n setIsLoading({\n filters: false, products: false\n });\n }\n\n // Compare Mode: Make comparison call using IDs endpoint if hybrid search is enabled\n console.log(\"[Compare Mode] isHybridEnabled:\", isHybridEnabled, \"hasIdList:\", !!response.id_list);\n if (isHybridEnabled && response.id_list && response.id_list.length > 0) {\n setIsComparing(true);\n console.log(\"[Compare Mode] Making comparison IDs call...\");\n try {\n // Get all IDs WITHOUT hybrid_search_settings\n const comparisonResponse = await FullTextSearch.getComparisonProductIds({\n ...props,\n market_context: marketContext,\n variation_id: state.variation_id\n });\n\n const hybridOffIds = (comparisonResponse.id_list || []).map(id => id.toString());\n const hybridOnIds = (response.id_list || []).map(id => id.toString());\n console.log(\"[Compare Mode] Hybrid ON IDs count:\", hybridOnIds.length);\n console.log(\"[Compare Mode] Hybrid OFF IDs count:\", hybridOffIds.length);\n\n if (hybridOffIds.length > 0) {\n const diff = computeComparisonFromIds(hybridOnIds, hybridOffIds);\n console.log(\"[Compare Mode] Diff computed - improved:\", diff.totalImproved, \"declined:\", diff.totalDeclined, \"new:\", diff.totalNew);\n setComparisonData(diff);\n }\n } catch (error) {\n console.error(\"[Compare Mode] Failed to fetch comparison IDs:\", error);\n setComparisonData(null);\n } finally {\n setIsComparing(false);\n }\n }\n });\n }\n const onAutocompleteSearch = (props: Omit<autocompleteProps, \"callback\">) => {\n setIsLoading({products: true, filters: true});\n Autocomplete.getAutocompleteReasoning({\n ...props,\n withAttributes: promoTiles || withProductAttributes,\n market_context: marketContext,\n variation_id: state.variation_id\n }).then(async(response) => {\n response=getFormatedData(response);\n\n mergeResults(response, false);\n\n if (!customTitleChange) {\n document.title = `Autocomplete Result for ${query}`;\n } else {\n customTitleChange(results);\n }\n\n if (!response) {\n setIsLoading({\n filters: true, products: false\n });\n } else {\n setIsLoading({\n filters: false, products: false\n });\n }\n });\n }\n\n const onCollection = (props: Omit<smartCollectionsProps, \"callback\">, isInfiniteScroll: boolean) => {\n setIsLoading({products: true, filters: true});\n\n // Pass with_product_analytics only on first request for this collection OR when switching from search to collection\n // AND only if merchant is enterprise or subscription level 5\n // forceProductAnalytics bypasses all conditions and always passes with_product_analytics\n // Read from localStorage directly to get the current value (handles setting changes in SettingsModal)\n const currentCollection = props.categoryID || '';\n const currentForceAnalytics = forceProductAnalytics || getShowSalesAnalyticsSetting();\n const shouldFetchAnalytics = currentForceAnalytics || (isAnalyticsEnabled && (currentCollection !== lastAnalyticsCollection || lastAnalyticsMode !== 'collection'));\n\n SmartCollections.getSmartCollections({\n ...props,\n withAttributes: promoTiles || withProductAttributes,\n with_product_analytics: shouldFetchAnalytics,\n market_context: marketContext,\n variation_id: state.variation_id})\n .then( async (response) => {\n // Mark analytics as fetched only if response contains analytics data with badges\n if (shouldFetchAnalytics && response.analytics?.badges) {\n setAnalyticsFetched(true);\n setLastAnalyticsCollection(currentCollection);\n setLastAnalyticsMode('collection');\n }\n\n // Preserve existing analytics if new response doesn't have it\n const existingAnalytics = (results as any)?.analytics;\n response=getFormatedData(response, existingAnalytics);\n\n const listIdRequestProps = { ...props };\n listIdRequestProps.searchWithinSearch=undefined;\n listIdRequestProps.productsPerPage=1000000;\n listIdRequestProps.page=1;\n listIdRequestProps.market_context = marketContext;\n listIdRequestProps.variation_id = state.variation_id;\n let listIdRes=await SmartCollections.getSmartCollectionsProductsIds(listIdRequestProps).then((response)=>{\n return response;\n });\n response.id_list=listIdRes.id_list;\n\n const facetsRequestProps = { ...props };\n facetsRequestProps.facetRequired=2;\n facetsRequestProps.searchWithinSearch=props.searchWithinSearch;\n facetsRequestProps.productsPerPage=props.productsPerPage;\n facetsRequestProps.page=props.page;\n facetsRequestProps.market_context = marketContext;\n facetsRequestProps.variation_id = state.variation_id;\n let facetsRes= await SmartCollections.getSmartCollections(facetsRequestProps).then((response)=>{\n return response;\n });\n response.facets=facetsRes.facets;\n\n mergeResults(response, isInfiniteScroll);\n\n if (!response) {\n setIsLoading({\n filters: true, products: false\n });\n } else {\n setIsLoading({\n filters: false, products: false\n });\n }\n\n getAllCategories().then(r => {\n if (!customTitleChange) {\n document.title = r.find(c => c.id === props.categoryID)?.l ?? \"Collection\";\n } else {\n customTitleChange(results);\n }\n });\n }).then(()=>{\n\n });\n }\n\n // Memoize to prevent unnecessary recreation\n const getAllCategories = useCallback(async () => {\n if (categories.length > 0) {\n return new Promise<FastCategory[]>(resolve => resolve(categories))\n }\n\n const data = categories || [];\n\n setCategories(data)\n\n return data;\n }, [categories]);\n\n const getFormatedData = (response: any, existingAnalytics?: any) => {\n const results = response;\n\n results.products = response.items;\n delete results.items;\n results.totalResults = response.total_results;\n delete results.total_results;\n if (response.sort_by) {\n results.sortBy = response.sort_by;\n delete results.sort_by;\n }\n\n if (response.pop_products_no_results) {\n results.isNoResults = true;\n }\n\n if (response.total_p) {\n results.pageCount = response.total_p;\n delete results.total_p;\n }\n\n\n if (response.ancestor_categories) {\n results.ancestors = response.ancestor_categories;\n delete results.ancestor_categories;\n }\n\n if (response.avoid_tag_prefixes) {\n results.avoidPrefixList = response.avoid_tag_prefixes.split(\",\");\n }\n\n\n results.page = response.p || 1;\n delete results.p;\n\n // Preserve analytics field if present (contains winners/overexposed data)\n // If response has new analytics, use it; otherwise keep existing analytics\n if (response.analytics) {\n results.analytics = response.analytics;\n } else if (existingAnalytics) {\n results.analytics = existingAnalytics;\n }\n\n return results;\n };\n\n\n // Memoize state context to prevent unnecessary re-renders\n const stateContextValue = useMemo(() => ({\n narrow,\n results,\n page,\n query,\n sortBy,\n type,\n collectionID,\n isLoading,\n recommendations,\n singleProducts,\n isReady,\n autocomplete,\n isAutocomplete,\n variation_id: state.variation_id,\n comparisonData: state.comparisonData,\n isComparing: state.isComparing\n }), [narrow, results, page, query, sortBy, type, collectionID, isLoading, recommendations, singleProducts, isReady, autocomplete, isAutocomplete, state.variation_id, state.comparisonData, state.isComparing]);\n\n // Memoize theme to prevent unnecessary object creation\n const mergedTheme = useMemo(() => ({...mainTheme, ...theme}), [theme]);\n\n // @ts-ignore\n return (\n <FastStateFunctions.Provider\n value={{\n setQuery,\n setSort: setSortBy,\n setNarrow,\n setPage,\n getAllCategories,\n setCollection: setCollectionID,\n setState,\n setSearchWithinSearch,\n setSegments,\n setFlag,\n setCustomSort,\n setIsAutocomplete,\n setVariationId\n }}>\n <FastState.Provider value={stateContextValue}>\n <ThemeProvider theme={mergedTheme}>\n {children}\n </ThemeProvider>\n </FastState.Provider>\n </FastStateFunctions.Provider>\n )\n};\n\n// Memoize component to prevent unnecessary re-renders when parent updates\nexport default React.memo(FastSimonApi);"]}
1
+ {"version":3,"file":"FastSimonApi.js","sourceRoot":"","sources":["../../../src/components/FastSimonApi/FastSimonApi.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {useEffect, useReducer, useRef, useState, useMemo, useCallback} from \"react\";\nimport {ComparisonData, ProductRankChange, CustomSortSettings, FastState, FastStateFunctions, IsLoading, SetStateProps} from \"./context\";\nimport {ThemeProvider} from \"react-jss\";\nimport {fastStateReducer} from \"./reducer\";\nimport {newObject} from \"../common\";\n\nimport {SortBy} from \"../../@types/sortBy\";\nimport {fullTextSearchProps, FullTextServerResponseAll} from \"../../@types/results\";\nimport {getShowSalesAnalyticsSetting} from \"../../utils/getSalesAnalyticsSettings\";\nimport {getLSVectorSearchOn} from \"../../utils/getLSVectorSearch\";\nimport {getPersonalizationSegment, UserSegmentPreview} from \"../../utils/userSegmentPreview\";\n\nimport {Product} from \"../../@types/product\";\nimport {FastCategory, smartCollectionsProps, smartCollectionsResults} from \"../../@types/categories\";\nimport {Narrow, ServerNarrow} from \"../../@types/narrow\";\nimport {FullTextSearch} from \"../../services/search\";\nimport {SmartCollections} from \"../../services/smartCollections\";\nimport {autocompleteProps, AutocompleteReasoningResponse} from \"../../@types/autocomplete\";\nimport {Autocomplete} from \"../../services/autocomplete\";\n\nexport type AppType = \"SPA\" | \"MPA\";\n\ninterface Props {\n storeID: number;\n uuid: string;\n type?: AppType;\n onReady?: VoidFunction;\n cartToken?: string;\n defaultSort?: SortBy\n collectionID?: string\n withProductAttributes?: boolean\n promoTiles?: boolean\n getTitle?: ({}: { categoryID?: string, query?: string }) => string\n isInfiniteScroll?: boolean\n useFilters?: boolean\n noReport?: boolean\n customTitleChange?: (results?: FullTextServerResponseAll | smartCollectionsResults) => void\n theme?: Partial<MainTheme>\n children?: React.ReactNode;\n siteKey?:string\n isEnterpriseMerchandising?: boolean;\n subscription?: number;\n marketContext?: string | null; // Region code for market-specific product filtering (e.g., \"US\", \"CA\", \"UK\")\n forceProductAnalytics?: boolean; // When true, always pass with_product_analytics regardless of other conditions\n variationId?: string | null; // A/B test variation ID for reasoning/experiment tracking\n}\n\nexport interface MainTheme {\n primaryColor: string\n lighterPrimary: string\n successGreen: string\n errorRed: string\n loadingYellow: string,\n}\n\nconst mainTheme: MainTheme = {\n primaryColor: \"#1976d2\",\n lighterPrimary: \"rgba(25,118,210,0.71)\",\n successGreen: \"#4BB543\",\n errorRed: \"#ff0033\",\n loadingYellow: \"#f3b706\",\n}\n\n\nconst FastSimonApi: React.FC<Props> = ({\n storeID, uuid,siteKey, children,\n defaultSort , promoTiles = false, theme,\n withProductAttributes = false, isInfiniteScroll = false, getTitle,\n useFilters, noReport = false, customTitleChange,\n isEnterpriseMerchandising = false, subscription = 0,\n marketContext = null,\n forceProductAnalytics = false,\n variationId = null,\n ...props\n }) => {\n const [state, dispatch] = (useReducer as any)?.(fastStateReducer, {\n isReady: false,\n type: props.type ?? 'SPA',\n page: 1,\n query: '',\n sortBy: defaultSort,\n isLoading: {\n products: false,\n filters: false,\n },\n collectionID: props.collectionID,\n narrow: undefined,\n results: undefined,\n recommendations: {},\n singleProducts: {},\n searchWithinSearch: \"\",\n segments: undefined,\n flag:[],\n custom_sort_settings:undefined,\n isAutocomplete:false,\n variation_id: variationId, // Initialize from prop, then updated via setVariationId\n user_segment_preview: 'none' as UserSegmentPreview, // User segment preview mode for AI Explainer\n // Compare Mode state\n comparisonData: null,\n isComparing: false\n });\n\n // Ref for user_segment_preview: enables synchronous reads across closures\n // so that any fetch triggered in the same handler (e.g. setCustomSort) reads the latest value\n const userSegmentPreviewRef = useRef<UserSegmentPreview>(state.user_segment_preview);\n const lastFetchedSegmentRef = useRef<UserSegmentPreview>(state.user_segment_preview);\n userSegmentPreviewRef.current = state.user_segment_preview;\n\n const [categories, setCategories] = useState<FastCategory[]>([]);\n const [analyticsFetched, setAnalyticsFetched] = useState(false);\n const [lastAnalyticsQuery, setLastAnalyticsQuery] = useState<string>('');\n const [lastAnalyticsCollection, setLastAnalyticsCollection] = useState<string>('');\n const [lastAnalyticsMode, setLastAnalyticsMode] = useState<'search' | 'collection' | ''>('');\n\n // Only enable analytics for enterprise merchants or subscription level 5\n const isAnalyticsEnabled = isEnterpriseMerchandising || subscription === 5;\n\n const {results, isLoading, query, sortBy, type, collectionID, page, narrow, recommendations, singleProducts, isReady, autocomplete, segments,isAutocomplete\n\n } = state;\n\n function setResults(results: FullTextServerResponseAll | smartCollectionsResults | AutocompleteReasoningResponse | undefined) {\n (dispatch as any)?.({type: 'setResults', payload: results});\n }\n\n function mergeResults(results: FullTextServerResponseAll | smartCollectionsResults | AutocompleteReasoningResponse, infiniteScroll: boolean) {\n (dispatch as any)?.({type: 'mergeResults', payload: {results, infiniteScroll}});\n }\n function mergeFacetsWithResults(facets:Narrow[]) {\n (dispatch as any)?.({type: 'mergeFacetsWithResults', payload: facets});\n }\n\n function mergeResultsKeepProduct(results: FullTextServerResponseAll | smartCollectionsResults) {\n (dispatch as any)?.({type: 'mergeResultsKeepProduct', payload: {results}});\n }\n\n function setIsLoading(isLoading: IsLoading) {\n (dispatch as any)?.({type: 'setIsLoading', payload: isLoading});\n }\n\n function setIsAutocomplete(isAutocomplete:boolean)\n {\n (dispatch as any)?.({type: 'setIsAutocomplete', payload: isAutocomplete});\n }\n\n function setVariationId(variationId: string | null) {\n (dispatch as any)?.({type: 'setVariationId', payload: variationId});\n }\n\n function setComparisonData(comparisonData: ComparisonData | null) {\n (dispatch as any)?.({type: 'setComparisonData', payload: comparisonData});\n }\n\n function setIsComparing(isComparing: boolean) {\n (dispatch as any)?.({type: 'setIsComparing', payload: isComparing});\n }\n\n function setUserSegmentPreview(preview: UserSegmentPreview) {\n userSegmentPreviewRef.current = preview;\n (dispatch as any)?.({type: 'setUserSegmentPreview', payload: preview});\n }\n\n // Compute detailed comparison between Hybrid ON and Hybrid OFF using full ID lists\n function computeComparisonFromIds(hybridOnIds: string[], hybridOffIds: string[]): ComparisonData {\n // Create rank maps (1-based index)\n const onRankMap = new Map<string, number>();\n const offRankMap = new Map<string, number>();\n\n hybridOnIds.forEach((id, index) => onRankMap.set(id.toString(), index + 1));\n hybridOffIds.forEach((id, index) => offRankMap.set(id.toString(), index + 1));\n\n const productChanges = new Map<string, ProductRankChange>();\n let totalImproved = 0;\n let totalDeclined = 0;\n let totalNew = 0;\n let totalUnchanged = 0;\n\n // Analyze all products in hybrid ON results\n hybridOnIds.forEach((id) => {\n const idStr = id.toString();\n const rankWithHybrid = onRankMap.get(idStr) || -1;\n const rankWithoutHybrid = offRankMap.get(idStr) || -1;\n\n let status: ProductRankChange['status'];\n let rankDelta = 0;\n\n if (rankWithoutHybrid === -1) {\n // Product not in results without hybrid - it's new due to hybrid\n status = 'new';\n totalNew++;\n } else {\n rankDelta = rankWithoutHybrid - rankWithHybrid; // Positive = improved (moved up)\n\n if (rankDelta > 0) {\n status = 'improved';\n totalImproved++;\n } else if (rankDelta < 0) {\n status = 'declined';\n totalDeclined++;\n } else {\n status = 'unchanged';\n totalUnchanged++;\n }\n }\n\n productChanges.set(idStr, {\n productId: idStr,\n rankWithHybrid,\n rankWithoutHybrid,\n rankDelta,\n status\n });\n });\n\n return {\n hybridOnIds: hybridOnIds.map(id => id.toString()),\n hybridOffIds: hybridOffIds.map(id => id.toString()),\n productChanges,\n totalImproved,\n totalDeclined,\n totalNew,\n totalUnchanged\n };\n }\n\n function setQuery(query: string , isAutocomplete?:boolean) {\n (dispatch as any)?.({type: 'setQuery', payload: query});\n (dispatch as any)?.({type: 'setIsAutocomplete', payload: isAutocomplete?isAutocomplete:false});\n\n // Create the object with the computed property\n let fetchParams = {\n siteKey:siteKey,\n uuid:uuid,\n storeID:storeID,\n term: query,\n sortBy: defaultSort,\n segments: state.segments,\n withProductAttributes:withProductAttributes,\n custom_sort_settings:state.custom_sort_settings,\n disable_merchandising:state.flag.find((f:string)=>f==\"disable_merchandising\")?1:0,\n disable_semantics:state.flag.find((f:string)=>f==\"disable_semantics\")?1:0,\n disable_turbolinks:state.flag.find((f:string)=>f==\"disable_turbolinks\")?1:0,\n disable_strategies:state.flag.find((f:string)=>f==\"disable_strategies\")?1:0,\n disable_merchandising_rules:state.flag.find((f:string)=>f==\"disable_merchandising_rules\")?1:0,\n disable_antonyms:state.flag.find((f:string)=>f==\"disable_antonyms\")?1:0,\n variation_id: state.variation_id,\n };\n\n fetchResults(fetchParams, isInfiniteScroll,isAutocomplete?isAutocomplete:false);\n }\n function setCustomSort(customSortSettings:CustomSortSettings) {\n (dispatch as any)?.({type: 'setCustomSort', payload: customSortSettings});\n // Create the object with the computed property\n let fetchParams = {\n siteKey:siteKey,\n uuid:uuid,\n storeID:storeID,\n term: state.query,\n narrowBy: state.narrow,\n sortBy: state.sortBy,\n categoryID: state.collectionID,\n segments: state.segments,\n withProductAttributes:state.withProductAttributes,\n searchWithinSearch:state.searchWithinSearch,\n custom_sort_settings:customSortSettings,\n disable_merchandising:state.flag.find((f:string)=>f==\"disable_merchandising\")?1:0,\n disable_semantics:state.flag.find((f:string)=>f==\"disable_semantics\")?1:0,\n disable_turbolinks:state.flag.find((f:string)=>f==\"disable_turbolinks\")?1:0,\n disable_strategies:state.flag.find((f:string)=>f==\"disable_strategies\")?1:0,\n disable_merchandising_rules:state.flag.find((f:string)=>f==\"disable_merchandising_rules\")?1:0,\n disable_antonyms:state.flag.find((f:string)=>f==\"disable_antonyms\")?1:0,\n variation_id: state.variation_id,\n };\n\n fetchResults(fetchParams, isInfiniteScroll);\n\n }\n\n function setFlag(flags: string[]) {\n const flagsToData=flags.map((f)=>{return \"disable_\" + f;});\n (dispatch as any)?.({type: 'setFlag', payload: flagsToData });\n\n // Create the object with the computed property\n let fetchParams = {\n siteKey:siteKey,\n uuid: uuid,\n storeID: storeID,\n term: state.query,\n narrowBy: state.narrow,\n sortBy: state.defaultSort,\n segments: state.segments,\n categoryID: state.collectionID,\n withProductAttributes: withProductAttributes,\n searchWithinSearch:state.searchWithinSearch,\n custom_sort_settings:state.custom_sort_settings,\n variation_id: state.variation_id,\n };\n\n if(flags.length>0)\n {\n flags.forEach((f)=>{\n let flagProp = \"disable_\" + f;\n // Add the dynamic key to the object\n // @ts-ignore\n fetchParams[flagProp as any] = true;\n });\n }\n\n\n fetchResults(fetchParams, isInfiniteScroll,state.isAutocomplete);\n }\n\n function setSortBy(sortBy: SortBy) {\n (dispatch as any)?.({type: 'setSortBy', payload: sortBy});\n // Create the object with the computed property\n let fetchParams = {\n siteKey:siteKey,\n uuid:uuid,\n storeID:storeID,\n term: state.query,\n narrowBy: state.narrow,\n sortBy: sortBy,\n categoryID: state.collectionID,\n segments: state.segments,\n withProductAttributes:withProductAttributes,\n searchWithinSearch:state.searchWithinSearch,\n custom_sort_settings:state.custom_sort_settings,\n disable_merchandising:state.flag.find((f:string)=>f==\"disable_merchandising\")?1:0,\n disable_semantics:state.flag.find((f:string)=>f==\"disable_semantics\")?1:0,\n disable_turbolinks:state.flag.find((f:string)=>f==\"disable_turbolinks\")?1:0,\n disable_strategies:state.flag.find((f:string)=>f==\"disable_strategies\")?1:0,\n disable_merchandising_rules:state.flag.find((f:string)=>f==\"disable_merchandising_rules\")?1:0,\n disable_antonyms:state.flag.find((f:string)=>f==\"disable_antonyms\")?1:0,\n variation_id: state.variation_id,\n };\n\n fetchResults(fetchParams, isInfiniteScroll);\n\n }\n function setSegments(segments: string[]) {\n (dispatch as any)?.({type: 'setSegments', payload: segments});\n\n let fetchParams = {\n withProductAttributes:withProductAttributes,\n siteKey:siteKey,\n uuid:uuid,\n storeID:storeID,\n term: state.query,\n narrowBy: state.narrow,\n sortBy: state.sortBy,\n categoryID: state.collectionID,\n segments: segments,\n searchWithinSearch:state.searchWithinSearch,\n custom_sort_settings:state.custom_sort_settings,\n disable_merchandising:state.flag.find((f:string)=>f==\"disable_merchandising\")?1:0,\n disable_semantics:state.flag.find((f:string)=>f==\"disable_semantics\")?1:0,\n disable_turbolinks:state.flag.find((f:string)=>f==\"disable_turbolinks\")?1:0,\n disable_strategies:state.flag.find((f:string)=>f==\"disable_strategies\")?1:0,\n disable_merchandising_rules:state.flag.find((f:string)=>f==\"disable_merchandising_rules\")?1:0,\n disable_antonyms:state.flag.find((f:string)=>f==\"disable_antonyms\")?1:0,\n variation_id: state.variation_id,\n };\n\n fetchResults(fetchParams, isInfiniteScroll,state.isAutocomplete);\n\n }\n function setType(type: AppType) {\n (dispatch as any)?.({type: 'setType', payload: type});\n }\n\n function setCollectionID(collectionID: string) {\n (dispatch as any)?.({type: 'setCollectionID', payload: collectionID});\n (dispatch as any)?.({type: 'setIsAutocomplete', payload: false});\n\n // Create the object with the computed property\n let fetchParams = {\n siteKey:siteKey,\n uuid:uuid,\n storeID:storeID,\n categoryID: collectionID,\n sortBy: defaultSort,\n segments: state.segments,\n custom_sort_settings:state.custom_sort_settings,\n disable_merchandising:state.flag.find((f:string)=>f==\"disable_merchandising\")?1:0,\n disable_semantics:state.flag.find((f:string)=>f==\"disable_semantics\")?1:0,\n disable_turbolinks:state.flag.find((f:string)=>f==\"disable_turbolinks\")?1:0,\n disable_strategies:state.flag.find((f:string)=>f==\"disable_strategies\")?1:0,\n disable_merchandising_rules:state.flag.find((f:string)=>f==\"disable_merchandising_rules\")?1:0,\n disable_antonyms:state.flag.find((f:string)=>f==\"disable_antonyms\")?1:0,\n variation_id: state.variation_id,\n };\n\n fetchResults(fetchParams, isInfiniteScroll);\n\n }\n\n function setPage(page: number) {\n (dispatch as any)?.({type: 'setPage', payload: page});\n\n let fetchParams = {\n withProductAttributes:withProductAttributes,\n siteKey:siteKey,\n uuid:uuid,\n storeID:storeID,\n term: state.query,\n narrowBy: state.narrow,\n sortBy: state.sortBy,\n categoryID: state.collectionID,\n page: page,\n segments: state.segments,\n searchWithinSearch:state.searchWithinSearch,\n custom_sort_settings:state.custom_sort_settings,\n disable_merchandising:state.flag.find((f:string)=>f==\"disable_merchandising\")?1:0,\n disable_semantics:state.flag.find((f:string)=>f==\"disable_semantics\")?1:0,\n disable_turbolinks:state.flag.find((f:string)=>f==\"disable_turbolinks\")?1:0,\n disable_strategies:state.flag.find((f:string)=>f==\"disable_strategies\")?1:0,\n disable_merchandising_rules:state.flag.find((f:string)=>f==\"disable_merchandising_rules\")?1:0,\n disable_antonyms:state.flag.find((f:string)=>f==\"disable_antonyms\")?1:0,\n variation_id: state.variation_id,\n };\n\n fetchResults(fetchParams, isInfiniteScroll);\n\n }\n\n function setNarrow(narrow: ServerNarrow[] | undefined) {\n (dispatch as any)?.({type: 'setNarrow', payload: narrow});\n\n let fetchParams = {\n withProductAttributes:withProductAttributes,\n siteKey:siteKey,\n uuid:uuid,\n storeID:storeID,\n term: state.query,\n narrowBy: narrow,\n sortBy: state.sortBy,\n categoryID: state.collectionID,\n segments: state.segments,\n searchWithinSearch:state.searchWithinSearch,\n custom_sort_settings:state.custom_sort_settings,\n disable_merchandising:state.flag.find((f:string)=>f==\"disable_merchandising\")?1:0,\n disable_semantics:state.flag.find((f:string)=>f==\"disable_semantics\")?1:0,\n disable_turbolinks:state.flag.find((f:string)=>f==\"disable_turbolinks\")?1:0,\n disable_strategies:state.flag.find((f:string)=>f==\"disable_strategies\")?1:0,\n disable_merchandising_rules:state.flag.find((f:string)=>f==\"disable_merchandising_rules\")?1:0,\n disable_antonyms:state.flag.find((f:string)=>f==\"disable_antonyms\")?1:0,\n variation_id: state.variation_id,\n };\n\n fetchResults(fetchParams, isInfiniteScroll);\n\n }\n\n function setState({...newState}: SetStateProps) {\n console.log(\"state\", state);\n console.log(\"setState\", newState);\n\n (dispatch as any)?.({type: 'setState', payload: newState});\n\n fetchResults({\n siteKey:siteKey,\n uuid:uuid,\n storeID:storeID,\n term: newState.query,\n narrowBy: newState.narrow?newState.narrow:undefined,\n sortBy: newState.sortBy ?? defaultSort,\n categoryID: newState.collectionID,\n page: newState.page,\n segments: newState.segments,\n variation_id: state.variation_id,\n }, Boolean(!results && isInfiniteScroll && newState.page && newState.page > 1));\n }\n\n\n function setSingleProducts(products: Product[]) {\n (dispatch as any)?.({type: \"setSingleProducts\", payload: products});\n }\n\n\n function setReady(isReady: boolean) {\n (dispatch as any)?.({type: \"setReady\", payload: isReady});\n }\n\n function setSearchWithinSearch(searchWithinSearch: string) {\n (dispatch as any)?.({type: \"setSearchWithinSearch\", payload: searchWithinSearch});\n\n let fetchParams = {\n withProductAttributes:withProductAttributes,\n siteKey:siteKey,\n uuid:uuid,\n storeID:storeID,\n term: query,\n narrowBy: state.narrow,\n sortBy: state.sortBy,\n categoryID: state.collectionID,\n segments: state.segments,\n searchWithinSearch:searchWithinSearch,\n custom_sort_settings:state.custom_sort_settings,\n disable_merchandising:state.flag.find((f:string)=>f==\"disable_merchandising\")?1:0,\n disable_semantics:state.flag.find((f:string)=>f==\"disable_semantics\")?1:0,\n disable_turbolinks:state.flag.find((f:string)=>f==\"disable_turbolinks\")?1:0,\n disable_strategies:state.flag.find((f:string)=>f==\"disable_strategies\")?1:0,\n disable_merchandising_rules:state.flag.find((f:string)=>f==\"disable_merchandising_rules\")?1:0,\n disable_antonyms:state.flag.find((f:string)=>f==\"disable_antonyms\")?1:0,\n variation_id: state.variation_id,\n };\n\n fetchResults(fetchParams, isInfiniteScroll);\n\n }\n\n function fetchResults(props:{\n uuid:string, storeID:number,siteKey?:string, term?: string, page?: number, narrowBy?: ServerNarrow[] | undefined,\n sortBy?: SortBy, categoryID?: string, searchWithinSearch?: string, segments?: string[] ,withProductAttributes?:boolean,\n disable_semantics?:number,disable_merchandising?:number,disable_strategies?:number,disable_turbolinks?:number,disable_personalization?:number,custom_sort_settings?:CustomSortSettings,\n variation_id?: string | null\n },\n isInfiniteScroll: boolean,\n autocomplete:boolean=false) {\n\n // on first request check if we need to fetch more then 1 product\n\n if (props.term && !autocomplete) {\n onSearch(newObject({\n ...props,\n page: props.page || 1,\n infiniteScrollPage: isInfiniteScroll,\n }) as Omit<fullTextSearchProps, \"callback\">, isInfiniteScroll);\n } else if(props.term && autocomplete){\n onAutocompleteSearch(newObject({\n ...props\n }) as Omit<autocompleteProps, \"callback\" | \"page\" | \"narrowBy\" | \"sortBy\" | \"categoryID\" | \"searchWithinSearch\" | \"custom_sort_settings\">);\n } else if (props.categoryID) {\n onCollection(newObject({\n ...props,\n page: props.page || 1,\n infiniteScrollPage: isInfiniteScroll,\n }) as Omit<smartCollectionsProps, \"callback\">, isInfiniteScroll);\n }\n\n return;\n\n }\n\n\n\n useEffect(() => {\n function handleSetQueryEvent(event: any) {\n // Support both string (legacy) and object with isAutocomplete flag\n if (typeof event.detail === 'string') {\n setQuery(event.detail);\n } else {\n setQuery(event.detail.query, event.detail.isAutocomplete);\n }\n }\n\n function handleSetFlagEvent(event: any){\n setFlag(event.details)\n\n }\n function handleSetCollectionEvent(event: any) {\n setCollectionID(event.detail);\n }\n\n function handleSetCollectionURLEvent(event: any) {\n getAllCategories().then(r => {\n const id = r.find(c => c.u === event.detail)?.id;\n\n if (id) {\n setCollectionID(id);\n return;\n }\n\n window.location.href = event.detail;\n })\n }\n\n function handleSetPageEvent(event: any) {\n setPage(event.detail);\n }\n\n function handleSetSortEvent(event: any) {\n setSortBy(event.detail);\n }\n\n function handleSetNarrowEvent(event: any) {\n setNarrow(event.detail);\n }\n\n function handleSetSegmentsEvent(event: any) {\n setSegments(event.detail);\n }\n function handleSetIsAutocomplete(event:any){\n setIsAutocomplete(event.detail)\n }\n window.addEventListener('fast-simon-update-query', handleSetQueryEvent);\n window.addEventListener('fast-simon-update-collection', handleSetCollectionEvent);\n window.addEventListener('fast-simon-update-collection-url', handleSetCollectionURLEvent);\n window.addEventListener('fast-simon-update-page', handleSetPageEvent);\n window.addEventListener('fast-simon-update-sort', handleSetSortEvent);\n window.addEventListener('fast-simon-update-narrow', handleSetNarrowEvent);\n window.addEventListener('fast-simon-update-segments', handleSetSegmentsEvent);\n window.addEventListener('fast-simon-update-flag', handleSetFlagEvent);\n window.addEventListener('fast-simon-update-is-autocomplete', handleSetIsAutocomplete);\n\n return () => {\n window.removeEventListener('fast-simon-update-query', handleSetQueryEvent);\n window.removeEventListener('fast-simon-update-collection', handleSetCollectionEvent);\n window.removeEventListener('fast-simon-update-collection-url', handleSetCollectionURLEvent);\n window.removeEventListener('fast-simon-update-page', handleSetPageEvent);\n window.removeEventListener('fast-simon-update-sort', handleSetSortEvent);\n window.removeEventListener('fast-simon-update-narrow', handleSetNarrowEvent);\n window.removeEventListener('fast-simon-update-segments', handleSetSegmentsEvent);\n window.removeEventListener('fast-simon-update-flag', handleSetFlagEvent);\n window.removeEventListener('fast-simon-update-is-autocomplete', handleSetIsAutocomplete);\n }\n\n }, []);\n\n // Refetch collection when user_segment_preview changes, but only if not already fetched with this value\n // (e.g. setCustomSort may have already triggered a fetch with the correct ref value)\n useEffect(() => {\n if (state.collectionID && state.user_segment_preview !== lastFetchedSegmentRef.current) {\n setCollectionID(state.collectionID);\n }\n }, [state.user_segment_preview]);\n\n const onSearch = (props: Omit<fullTextSearchProps, \"callback\">, isInfiniteScroll: boolean) => {\n setIsLoading({products: true, filters: true});\n\n // Clear previous comparison data when starting new search\n setComparisonData(null);\n\n // Pass with_product_analytics only on first request for this query OR when switching from collection to search\n // AND only if merchant is enterprise or subscription level 5\n // forceProductAnalytics bypasses all conditions and always passes with_product_analytics\n // Read from localStorage directly to get the current value (handles setting changes in SettingsModal)\n const currentQuery = props.term || '';\n const currentForceAnalytics = forceProductAnalytics || getShowSalesAnalyticsSetting();\n const shouldFetchAnalytics = currentForceAnalytics || (isAnalyticsEnabled && (currentQuery !== lastAnalyticsQuery || lastAnalyticsMode !== 'search'));\n\n // Check if hybrid search is enabled - we'll need to make a comparison call\n const isHybridEnabled = getLSVectorSearchOn();\n\n FullTextSearch.getReasoningFullTextSearch({\n ...props,\n withAttributes: promoTiles || withProductAttributes,\n with_product_analytics: shouldFetchAnalytics,\n market_context: marketContext,\n variation_id: state.variation_id\n }).then(async(response) => {\n // Mark analytics as fetched only if response contains analytics data with badges\n if (shouldFetchAnalytics && response.analytics?.badges) {\n setAnalyticsFetched(true);\n setLastAnalyticsQuery(currentQuery);\n setLastAnalyticsMode('search');\n }\n\n // Preserve existing analytics if new response doesn't have it\n const existingAnalytics = (results as any)?.analytics;\n response=getFormatedData(response, existingAnalytics);\n\n // Handle turbolink responses - skip additional API calls to prevent errors\n if (response.turbolink && response.totalResults === 0) {\n mergeResults(response, isInfiniteScroll);\n\n if (!customTitleChange) {\n document.title = `Search Result for ${query}`;\n } else {\n customTitleChange(results);\n }\n\n setIsLoading({filters: false, products: false});\n return;\n }\n\n const listIdRequestProps = { ...props };\n listIdRequestProps.searchWithinSearch=undefined;\n listIdRequestProps.productsPerPage=1000000;\n listIdRequestProps.page=1;\n listIdRequestProps.market_context = marketContext;\n listIdRequestProps.variation_id = state.variation_id;\n let listIdRes=await FullTextSearch.getReasoningFullTextSearchProductsIds(listIdRequestProps).then((response)=>{\n return response;\n });\n response.id_list=listIdRes.id_list;\n\n const facetsRequestProps = { ...props };\n facetsRequestProps.facetRequired=2;\n facetsRequestProps.searchWithinSearch=props.searchWithinSearch;\n facetsRequestProps.productsPerPage=props.productsPerPage;\n facetsRequestProps.page=props.page;\n facetsRequestProps.market_context = marketContext;\n facetsRequestProps.variation_id = state.variation_id;\n let facetsRes=await FullTextSearch.getReasoningFullTextSearch(facetsRequestProps).then((response)=>{\n return response;\n });\n response.facets=facetsRes.facets;\n\n mergeResults(response, isInfiniteScroll);\n\n if (!customTitleChange) {\n document.title = `Search Result for ${query}`;\n } else {\n customTitleChange(results);\n }\n\n if (!response) {\n setIsLoading({\n filters: true, products: false\n });\n } else {\n setIsLoading({\n filters: false, products: false\n });\n }\n\n // Compare Mode: Make comparison call using IDs endpoint if hybrid search is enabled\n console.log(\"[Compare Mode] isHybridEnabled:\", isHybridEnabled, \"hasIdList:\", !!response.id_list);\n if (isHybridEnabled && response.id_list && response.id_list.length > 0) {\n setIsComparing(true);\n console.log(\"[Compare Mode] Making comparison IDs call...\");\n try {\n // Get all IDs WITHOUT hybrid_search_settings\n const comparisonResponse = await FullTextSearch.getComparisonProductIds({\n ...props,\n market_context: marketContext,\n variation_id: state.variation_id\n });\n\n const hybridOffIds = (comparisonResponse.id_list || []).map(id => id.toString());\n const hybridOnIds = (response.id_list || []).map(id => id.toString());\n console.log(\"[Compare Mode] Hybrid ON IDs count:\", hybridOnIds.length);\n console.log(\"[Compare Mode] Hybrid OFF IDs count:\", hybridOffIds.length);\n\n if (hybridOffIds.length > 0) {\n const diff = computeComparisonFromIds(hybridOnIds, hybridOffIds);\n console.log(\"[Compare Mode] Diff computed - improved:\", diff.totalImproved, \"declined:\", diff.totalDeclined, \"new:\", diff.totalNew);\n setComparisonData(diff);\n }\n } catch (error) {\n console.error(\"[Compare Mode] Failed to fetch comparison IDs:\", error);\n setComparisonData(null);\n } finally {\n setIsComparing(false);\n }\n }\n });\n }\n const onAutocompleteSearch = (props: Omit<autocompleteProps, \"callback\">) => {\n setIsLoading({products: true, filters: true});\n Autocomplete.getAutocompleteReasoning({\n ...props,\n withAttributes: promoTiles || withProductAttributes,\n market_context: marketContext,\n variation_id: state.variation_id\n }).then(async(response) => {\n response=getFormatedData(response);\n\n mergeResults(response, false);\n\n if (!customTitleChange) {\n document.title = `Autocomplete Result for ${query}`;\n } else {\n customTitleChange(results);\n }\n\n if (!response) {\n setIsLoading({\n filters: true, products: false\n });\n } else {\n setIsLoading({\n filters: false, products: false\n });\n }\n });\n }\n\n const onCollection = (props: Omit<smartCollectionsProps, \"callback\">, isInfiniteScroll: boolean) => {\n setIsLoading({products: true, filters: true});\n\n // Pass with_product_analytics only on first request for this collection OR when switching from search to collection\n // AND only if merchant is enterprise or subscription level 5\n // forceProductAnalytics bypasses all conditions and always passes with_product_analytics\n // Read from localStorage directly to get the current value (handles setting changes in SettingsModal)\n const currentCollection = props.categoryID || '';\n const currentForceAnalytics = forceProductAnalytics || getShowSalesAnalyticsSetting();\n const shouldFetchAnalytics = currentForceAnalytics || (isAnalyticsEnabled && (currentCollection !== lastAnalyticsCollection || lastAnalyticsMode !== 'collection'));\n\n const personalizationSegment = getPersonalizationSegment(userSegmentPreviewRef.current);\n lastFetchedSegmentRef.current = userSegmentPreviewRef.current;\n\n SmartCollections.getSmartCollections({\n ...props,\n withAttributes: promoTiles || withProductAttributes,\n with_product_analytics: shouldFetchAnalytics,\n market_context: marketContext,\n variation_id: state.variation_id,\n ps: personalizationSegment})\n .then( async (response) => {\n // Mark analytics as fetched only if response contains analytics data with badges\n if (shouldFetchAnalytics && response.analytics?.badges) {\n setAnalyticsFetched(true);\n setLastAnalyticsCollection(currentCollection);\n setLastAnalyticsMode('collection');\n }\n\n // Preserve existing analytics if new response doesn't have it\n const existingAnalytics = (results as any)?.analytics;\n response=getFormatedData(response, existingAnalytics);\n\n const listIdRequestProps = { ...props };\n listIdRequestProps.searchWithinSearch=undefined;\n listIdRequestProps.productsPerPage=1000000;\n listIdRequestProps.page=1;\n listIdRequestProps.market_context = marketContext;\n listIdRequestProps.variation_id = state.variation_id;\n listIdRequestProps.ps = personalizationSegment;\n let listIdRes=await SmartCollections.getSmartCollectionsProductsIds(listIdRequestProps).then((response)=>{\n return response;\n });\n response.id_list=listIdRes.id_list;\n\n const facetsRequestProps = { ...props };\n facetsRequestProps.facetRequired=2;\n facetsRequestProps.searchWithinSearch=props.searchWithinSearch;\n facetsRequestProps.productsPerPage=props.productsPerPage;\n facetsRequestProps.page=props.page;\n facetsRequestProps.market_context = marketContext;\n facetsRequestProps.variation_id = state.variation_id;\n facetsRequestProps.ps = personalizationSegment;\n let facetsRes= await SmartCollections.getSmartCollections(facetsRequestProps).then((response)=>{\n return response;\n });\n response.facets=facetsRes.facets;\n\n mergeResults(response, isInfiniteScroll);\n\n if (!response) {\n setIsLoading({\n filters: true, products: false\n });\n } else {\n setIsLoading({\n filters: false, products: false\n });\n }\n\n getAllCategories().then(r => {\n if (!customTitleChange) {\n document.title = r.find(c => c.id === props.categoryID)?.l ?? \"Collection\";\n } else {\n customTitleChange(results);\n }\n });\n }).then(()=>{\n\n });\n }\n\n // Memoize to prevent unnecessary recreation\n const getAllCategories = useCallback(async () => {\n if (categories.length > 0) {\n return new Promise<FastCategory[]>(resolve => resolve(categories))\n }\n\n const data = categories || [];\n\n setCategories(data)\n\n return data;\n }, [categories]);\n\n const getFormatedData = (response: any, existingAnalytics?: any) => {\n const results = response;\n\n results.products = response.items;\n delete results.items;\n results.totalResults = response.total_results;\n delete results.total_results;\n if (response.sort_by) {\n results.sortBy = response.sort_by;\n delete results.sort_by;\n }\n\n if (response.pop_products_no_results) {\n results.isNoResults = true;\n }\n\n if (response.total_p) {\n results.pageCount = response.total_p;\n delete results.total_p;\n }\n\n\n if (response.ancestor_categories) {\n results.ancestors = response.ancestor_categories;\n delete results.ancestor_categories;\n }\n\n if (response.avoid_tag_prefixes) {\n results.avoidPrefixList = response.avoid_tag_prefixes.split(\",\");\n }\n\n\n results.page = response.p || 1;\n delete results.p;\n\n // Preserve analytics field if present (contains winners/overexposed data)\n // If response has new analytics, use it; otherwise keep existing analytics\n if (response.analytics) {\n results.analytics = response.analytics;\n } else if (existingAnalytics) {\n results.analytics = existingAnalytics;\n }\n\n return results;\n };\n\n\n // Memoize state context to prevent unnecessary re-renders\n const stateContextValue = useMemo(() => ({\n narrow,\n results,\n page,\n query,\n sortBy,\n type,\n collectionID,\n isLoading,\n recommendations,\n singleProducts,\n isReady,\n autocomplete,\n isAutocomplete,\n variation_id: state.variation_id,\n comparisonData: state.comparisonData,\n isComparing: state.isComparing\n }), [narrow, results, page, query, sortBy, type, collectionID, isLoading, recommendations, singleProducts, isReady, autocomplete, isAutocomplete, state.variation_id, state.comparisonData, state.isComparing]);\n\n // Memoize theme to prevent unnecessary object creation\n const mergedTheme = useMemo(() => ({...mainTheme, ...theme}), [theme]);\n\n // @ts-ignore\n return (\n <FastStateFunctions.Provider\n value={{\n setQuery,\n setSort: setSortBy,\n setNarrow,\n setPage,\n getAllCategories,\n setCollection: setCollectionID,\n setState,\n setSearchWithinSearch,\n setSegments,\n setFlag,\n setCustomSort,\n setIsAutocomplete,\n setVariationId,\n setUserSegmentPreview\n }}>\n <FastState.Provider value={stateContextValue}>\n <ThemeProvider theme={mergedTheme}>\n {children}\n </ThemeProvider>\n </FastState.Provider>\n </FastStateFunctions.Provider>\n )\n};\n\n// Memoize component to prevent unnecessary re-renders when parent updates\nexport default React.memo(FastSimonApi);"]}
@@ -58,6 +58,7 @@ export interface FastStateProps {
58
58
  custom_sort_settings?: CustomSortSettings;
59
59
  isAutocomplete?: boolean;
60
60
  variation_id?: string | null;
61
+ user_segment_preview?: 'none' | 'new' | 'returning';
61
62
  comparisonData?: ComparisonData | null;
62
63
  isComparing?: boolean;
63
64
  }
@@ -75,6 +76,7 @@ export interface FastStateFunctionsProps {
75
76
  setCustomSort: (customSortSettings: CustomSortSettings) => void;
76
77
  setIsAutocomplete: (isAutocomplete: boolean) => void;
77
78
  setVariationId: (variationId: string | null) => void;
79
+ setUserSegmentPreview: (preview: 'none' | 'new' | 'returning') => void;
78
80
  }
79
81
  export declare const FastState: React.Context<FastStateProps>;
80
82
  export declare const FastStateFunctions: React.Context<FastStateFunctionsProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/components/FastSimonApi/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,UAAU,EAAC,MAAM,OAAO,CAAC;AA8FxC,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,EAAoB,CAAC,CAAA;AAClE,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC,aAAa,CAAC,EAA6B,CAAC,CAAA;AAEpF,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,EAAE;IACtC,OAAO,UAAU,CAAC,kBAAkB,CAAC,CAAC;AAC1C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE;IAC7B,OAAO,UAAU,CAAC,SAAS,CAAC,CAAA;AAChC,CAAC,CAAA","sourcesContent":["import React, {useContext} from \"react\";\n\n\nimport {FullTextServerResponseAll} from \"../../@types/results\";\nimport {Narrow, ServerNarrow} from \"../../@types/narrow\";\nimport {SortBy} from \"../../@types/sortBy\";\nimport {Product} from \"../../@types/product\";\nimport {FastCategory, smartCollectionsResults} from \"../../@types/categories\";\nimport {AppType} from \"./FastSimonApi\";\nimport {Widget} from \"../../@types/widget\";\nimport {AutocompleteReasoningResponse, AutocompleteResults} from \"../../@types/autocomplete\";\n\n\nexport interface SetStateProps extends Partial<FastStateProps> {\n\n}\n\nexport interface IsLoading {\n products: boolean,\n filters: boolean,\n}\nexport interface CustomSortSettings{\n personalization_rank: number,\n creation_date: number,\n popularity: number,\n inventory: number\n}\n\n// Compare Mode: Shows impact of Hybrid Search by comparing results WITH vs WITHOUT hybrid_search_settings\nexport interface ProductRankChange {\n productId: string;\n rankWithHybrid: number; // Position in results WITH hybrid (1-based, -1 if not found)\n rankWithoutHybrid: number; // Position in results WITHOUT hybrid (1-based, -1 if not found)\n rankDelta: number; // Positive = moved up with hybrid, negative = moved down\n status: 'improved' | 'declined' | 'new' | 'unchanged'; // How hybrid affected this product\n}\n\nexport interface ComparisonData {\n // Full ID lists for detailed comparison\n hybridOnIds: string[]; // All product IDs with Hybrid ON\n hybridOffIds: string[]; // All product IDs with Hybrid OFF\n // Per-product rank changes (for products currently displayed)\n productChanges: Map<string, ProductRankChange>;\n // Summary stats\n totalImproved: number; // Products that moved up in rank\n totalDeclined: number; // Products that moved down in rank\n totalNew: number; // Products that appeared due to hybrid (not in top N without)\n totalUnchanged: number;\n}\n\nexport interface FastStateProps {\n isReady: boolean\n isLoading: IsLoading,\n results?: FullTextServerResponseAll | smartCollectionsResults | AutocompleteReasoningResponse\n query: string\n page: number,\n narrow?: ServerNarrow[]\n type: AppType\n collectionID?: string\n sortBy?: SortBy\n recommendations?: {\n [id: string]: Widget\n },\n singleProducts?: {\n [id: string]: Product\n }\n autocomplete?: AutocompleteResults\n searchWithinSearch?: string,\n segments?: string[],\n flag?:string[]\n custom_sort_settings?:CustomSortSettings\n isAutocomplete?:boolean\n variation_id?: string | null\n // Compare Mode state\n comparisonData?: ComparisonData | null\n isComparing?: boolean\n}\n\nexport interface FastStateFunctionsProps {\n setQuery: (query: string, isAutocomplete?:boolean) => void,\n setSort: (sortBy: SortBy) => void,\n setNarrow: (narrow?: ServerNarrow[]) => void,\n setPage: (page: number) => void,\n getAllCategories: () => Promise<FastCategory[]>\n setCollection: (id: string) => void\n setState: (newState: SetStateProps) => void\n setFlag:(flags:string[])=>void\n setSearchWithinSearch: (query: string) => void,\n setSegments: (segments: string[]) => void,\n setCustomSort:(customSortSettings:CustomSortSettings)=>void,\n setIsAutocomplete:(isAutocomplete:boolean)=>void,\n setVariationId:(variationId: string | null)=>void,\n}\n\nexport const FastState = React.createContext({} as FastStateProps)\nexport const FastStateFunctions = React.createContext({} as FastStateFunctionsProps)\n\nexport const useFastStateFunctions = () => {\n return useContext(FastStateFunctions);\n}\n\nexport const useFastState = () => {\n return useContext(FastState)\n}"]}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/components/FastSimonApi/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,UAAU,EAAC,MAAM,OAAO,CAAC;AAgGxC,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,EAAoB,CAAC,CAAA;AAClE,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC,aAAa,CAAC,EAA6B,CAAC,CAAA;AAEpF,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,EAAE;IACtC,OAAO,UAAU,CAAC,kBAAkB,CAAC,CAAC;AAC1C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE;IAC7B,OAAO,UAAU,CAAC,SAAS,CAAC,CAAA;AAChC,CAAC,CAAA","sourcesContent":["import React, {useContext} from \"react\";\n\n\nimport {FullTextServerResponseAll} from \"../../@types/results\";\nimport {Narrow, ServerNarrow} from \"../../@types/narrow\";\nimport {SortBy} from \"../../@types/sortBy\";\nimport {Product} from \"../../@types/product\";\nimport {FastCategory, smartCollectionsResults} from \"../../@types/categories\";\nimport {AppType} from \"./FastSimonApi\";\nimport {Widget} from \"../../@types/widget\";\nimport {AutocompleteReasoningResponse, AutocompleteResults} from \"../../@types/autocomplete\";\n\n\nexport interface SetStateProps extends Partial<FastStateProps> {\n\n}\n\nexport interface IsLoading {\n products: boolean,\n filters: boolean,\n}\nexport interface CustomSortSettings{\n personalization_rank: number,\n creation_date: number,\n popularity: number,\n inventory: number\n}\n\n// Compare Mode: Shows impact of Hybrid Search by comparing results WITH vs WITHOUT hybrid_search_settings\nexport interface ProductRankChange {\n productId: string;\n rankWithHybrid: number; // Position in results WITH hybrid (1-based, -1 if not found)\n rankWithoutHybrid: number; // Position in results WITHOUT hybrid (1-based, -1 if not found)\n rankDelta: number; // Positive = moved up with hybrid, negative = moved down\n status: 'improved' | 'declined' | 'new' | 'unchanged'; // How hybrid affected this product\n}\n\nexport interface ComparisonData {\n // Full ID lists for detailed comparison\n hybridOnIds: string[]; // All product IDs with Hybrid ON\n hybridOffIds: string[]; // All product IDs with Hybrid OFF\n // Per-product rank changes (for products currently displayed)\n productChanges: Map<string, ProductRankChange>;\n // Summary stats\n totalImproved: number; // Products that moved up in rank\n totalDeclined: number; // Products that moved down in rank\n totalNew: number; // Products that appeared due to hybrid (not in top N without)\n totalUnchanged: number;\n}\n\nexport interface FastStateProps {\n isReady: boolean\n isLoading: IsLoading,\n results?: FullTextServerResponseAll | smartCollectionsResults | AutocompleteReasoningResponse\n query: string\n page: number,\n narrow?: ServerNarrow[]\n type: AppType\n collectionID?: string\n sortBy?: SortBy\n recommendations?: {\n [id: string]: Widget\n },\n singleProducts?: {\n [id: string]: Product\n }\n autocomplete?: AutocompleteResults\n searchWithinSearch?: string,\n segments?: string[],\n flag?:string[]\n custom_sort_settings?:CustomSortSettings\n isAutocomplete?:boolean\n variation_id?: string | null\n user_segment_preview?: 'none' | 'new' | 'returning' // User segment preview mode for AI Explainer\n // Compare Mode state\n comparisonData?: ComparisonData | null\n isComparing?: boolean\n}\n\nexport interface FastStateFunctionsProps {\n setQuery: (query: string, isAutocomplete?:boolean) => void,\n setSort: (sortBy: SortBy) => void,\n setNarrow: (narrow?: ServerNarrow[]) => void,\n setPage: (page: number) => void,\n getAllCategories: () => Promise<FastCategory[]>\n setCollection: (id: string) => void\n setState: (newState: SetStateProps) => void\n setFlag:(flags:string[])=>void\n setSearchWithinSearch: (query: string) => void,\n setSegments: (segments: string[]) => void,\n setCustomSort:(customSortSettings:CustomSortSettings)=>void,\n setIsAutocomplete:(isAutocomplete:boolean)=>void,\n setVariationId:(variationId: string | null)=>void,\n setUserSegmentPreview:(preview: 'none' | 'new' | 'returning')=>void,\n}\n\nexport const FastState = React.createContext({} as FastStateProps)\nexport const FastStateFunctions = React.createContext({} as FastStateFunctionsProps)\n\nexport const useFastStateFunctions = () => {\n return useContext(FastStateFunctions);\n}\n\nexport const useFastState = () => {\n return useContext(FastState)\n}"]}
@@ -81,6 +81,9 @@ type FastStateAction = {
81
81
  } | {
82
82
  type: 'setVariationId';
83
83
  payload: string | null;
84
+ } | {
85
+ type: 'setUserSegmentPreview';
86
+ payload: 'none' | 'new' | 'returning';
84
87
  } | {
85
88
  type: 'setComparisonData';
86
89
  payload: ComparisonData | null;
@@ -458,6 +461,7 @@ export declare function fastStateReducer(state: FastStateProps, action: FastStat
458
461
  custom_sort_settings?: CustomSortSettings | undefined;
459
462
  isAutocomplete?: boolean | undefined;
460
463
  variation_id?: string | null | undefined;
464
+ user_segment_preview?: "none" | "new" | "returning" | undefined;
461
465
  comparisonData?: ComparisonData | null | undefined;
462
466
  isComparing?: boolean | undefined;
463
467
  } | {
@@ -483,6 +487,7 @@ export declare function fastStateReducer(state: FastStateProps, action: FastStat
483
487
  custom_sort_settings?: CustomSortSettings | undefined;
484
488
  isAutocomplete?: boolean | undefined;
485
489
  variation_id?: string | null | undefined;
490
+ user_segment_preview?: "none" | "new" | "returning" | undefined;
486
491
  comparisonData?: ComparisonData | null | undefined;
487
492
  isComparing?: boolean | undefined;
488
493
  };
@@ -76,6 +76,8 @@ export function fastStateReducer(state, action) {
76
76
  return Object.assign(Object.assign({}, state), { custom_sort_settings: action.payload });
77
77
  case 'setVariationId':
78
78
  return Object.assign(Object.assign({}, state), { variation_id: action.payload });
79
+ case 'setUserSegmentPreview':
80
+ return Object.assign(Object.assign({}, state), { user_segment_preview: action.payload });
79
81
  case 'setComparisonData':
80
82
  return Object.assign(Object.assign({}, state), { comparisonData: action.payload });
81
83
  case 'setIsComparing':
@@ -1 +1 @@
1
- {"version":3,"file":"reducer.js","sourceRoot":"","sources":["../../../src/components/FastSimonApi/reducer.ts"],"names":[],"mappings":"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","sourcesContent":["import {ComparisonData, CustomSortSettings, FastStateProps, IsLoading} from \"./context\";\nimport {AppType} from \"./FastSimonApi\";\nimport {SortBy} from \"../../@types/sortBy\";\nimport {FullTextServerResponseAll} from \"../../@types/results\";\nimport {smartCollectionsResults} from \"../../@types/categories\";\nimport {Narrow, ServerNarrow} from \"../../@types/narrow\";\nimport {Product} from \"../../@types/product\";\n\nimport {Widget} from \"../../@types/widget\";\nimport {AutocompleteReasoningResponse, AutocompleteResults} from \"../../@types/autocomplete\";\n\ntype FastStateAction =\n | { type: 'setReady', payload: boolean }\n | { type: 'setType', payload: AppType }\n | { type: 'setPage', payload: number }\n | { type: 'setQuery', payload: string }\n | { type: 'setSortBy', payload: SortBy }\n | { type: 'setIsLoading', payload: IsLoading }\n | { type: 'setCollectionID', payload: string }\n | { type: 'setNarrow', payload: ServerNarrow[] | undefined }\n | { type: 'setResults', payload: FullTextServerResponseAll | smartCollectionsResults | AutocompleteReasoningResponse | undefined }\n | { type: 'mergeResults', payload: { results: FullTextServerResponseAll | smartCollectionsResults | AutocompleteReasoningResponse, infiniteScroll: boolean } }\n | { type: 'mergeFacetsWithResults', payload:Narrow[] }\n | { type: 'mergeResultsKeepProduct', payload: { results: FullTextServerResponseAll | smartCollectionsResults } }\n | { type: 'setState', payload: Partial<FastStateProps> }\n | { type: 'setRecommendations', payload: { id: string, widget: Widget } }\n | { type: 'setSingleProducts', payload: Product[] }\n | { type: 'setIsAutocomplete', payload: boolean }\n | { type: 'setAutocomplete', payload: AutocompleteResults }\n | { type: 'setSearchWithinSearch', payload: string }\n | { type: 'setSegments', payload: string[] }\n | { type: 'setFlag', payload: string[] }\n | { type: 'setCustomSort',payload:CustomSortSettings}\n | { type: 'setVariationId', payload: string | null }\n | { type: 'setComparisonData', payload: ComparisonData | null }\n | { type: 'setIsComparing', payload: boolean }\n\n\n\nexport function fastStateReducer(state: FastStateProps, action: FastStateAction) {\n switch (action.type) {\n case \"setReady\":\n return {...state, isReady: action.payload}\n\n case 'setType':\n return {...state, type: action.payload};\n\n case 'setPage':\n return {...state, page: action.payload};\n\n case 'setQuery':\n return {...state, query: action.payload, collectionID: undefined, page: 1, narrow: undefined, searchWithinSearch: undefined, sortBy:undefined};\n\n case 'setSortBy':\n return {...state, sortBy: action.payload, page: 1};\n\n case 'setSegments':\n return {...state, segments: action.payload, page: 1};\n\n case 'setIsLoading':\n return {...state, isLoading: action.payload};\n\n case 'setCollectionID':\n return {...state, collectionID: action.payload, query: \"\", page: 1, narrow: undefined, searchWithinSearch: undefined , sortBy:undefined};\n\n case 'setNarrow':\n return {...state, narrow: action.payload, page: 1};\n\n case 'setResults':\n return {...state, results: {isNoResults: false, ...action.payload}} as FastStateProps;\n\n case 'mergeResultsKeepProduct': {\n return {...state, results: {...state.results, ...action.payload.results, products: state.results?.products || []}};\n }\n\n case 'mergeFacetsWithResults':{\n return {...state, narrow: action.payload};\n }\n\n case 'mergeResults': {\n const sortBy = action.payload.results?.sortBy ?? state.sortBy\n\n if (!action.payload.infiniteScroll) {\n return {...state,sortBy, results: { ...action.payload.results}} as FastStateProps;\n }\n\n const products = state.results?.products ?? [];\n const newProducts = action.payload.results.products ?? [];\n\n // Optimize: Use Set for O(1) lookup instead of O(n) find() - prevents O(n²)\n const existingIds = new Set(products.map(p => p.id));\n const uniqueNewProducts = newProducts.filter(p => !existingIds.has(p.id));\n\n // Only merge if there are actually new products\n if (uniqueNewProducts.length > 0) {\n return {\n ...state,\n results: {...state.results, isNoResults: false, ...action.payload.results, products: [...products, ...uniqueNewProducts]}\n } as FastStateProps;\n }\n\n return {\n ...state,\n results: {...state.results, isNoResults: false, ...action.payload.results, products: products}\n } as FastStateProps;\n\n }\n\n case 'setState': {\n if (action.payload.query) {\n return {...state, ...action.payload, collectionID: undefined, searchWithinSearch: undefined, segments: undefined}\n } else {\n return {...state, ...action.payload, query: \"\", searchWithinSearch: undefined, segments: undefined};\n }\n }\n\n case \"setRecommendations\": {\n return {\n ...state,\n recommendations: {\n ...state.recommendations,\n [action.payload.id]: action.payload.widget\n }\n }\n }\n\n case \"setSingleProducts\": {\n const products: { [id: string]: Product } = {...state.singleProducts};\n\n for (const product of action.payload) {\n products[product.id] = product;\n }\n\n return {...state, singleProducts: products}\n }\n case \"setIsAutocomplete\":{\n return {...state, isAutocomplete: action.payload}\n }\n\n case \"setAutocomplete\": {\n return {...state, autocomplete: action.payload}\n }\n\n case \"setSearchWithinSearch\": {\n return {...state, searchWithinSearch: action.payload}\n }\n case 'setFlag':\n return {...state, flag: action.payload};\n\n case 'setCustomSort':\n return {...state, custom_sort_settings: action.payload};\n\n case 'setVariationId':\n return {...state, variation_id: action.payload};\n\n case 'setComparisonData':\n return {...state, comparisonData: action.payload};\n\n case 'setIsComparing':\n return {...state, isComparing: action.payload};\n\n }\n}\n\n"]}
1
+ {"version":3,"file":"reducer.js","sourceRoot":"","sources":["../../../src/components/FastSimonApi/reducer.ts"],"names":[],"mappings":"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","sourcesContent":["import {ComparisonData, CustomSortSettings, FastStateProps, IsLoading} from \"./context\";\nimport {AppType} from \"./FastSimonApi\";\nimport {SortBy} from \"../../@types/sortBy\";\nimport {FullTextServerResponseAll} from \"../../@types/results\";\nimport {smartCollectionsResults} from \"../../@types/categories\";\nimport {Narrow, ServerNarrow} from \"../../@types/narrow\";\nimport {Product} from \"../../@types/product\";\n\nimport {Widget} from \"../../@types/widget\";\nimport {AutocompleteReasoningResponse, AutocompleteResults} from \"../../@types/autocomplete\";\n\ntype FastStateAction =\n | { type: 'setReady', payload: boolean }\n | { type: 'setType', payload: AppType }\n | { type: 'setPage', payload: number }\n | { type: 'setQuery', payload: string }\n | { type: 'setSortBy', payload: SortBy }\n | { type: 'setIsLoading', payload: IsLoading }\n | { type: 'setCollectionID', payload: string }\n | { type: 'setNarrow', payload: ServerNarrow[] | undefined }\n | { type: 'setResults', payload: FullTextServerResponseAll | smartCollectionsResults | AutocompleteReasoningResponse | undefined }\n | { type: 'mergeResults', payload: { results: FullTextServerResponseAll | smartCollectionsResults | AutocompleteReasoningResponse, infiniteScroll: boolean } }\n | { type: 'mergeFacetsWithResults', payload:Narrow[] }\n | { type: 'mergeResultsKeepProduct', payload: { results: FullTextServerResponseAll | smartCollectionsResults } }\n | { type: 'setState', payload: Partial<FastStateProps> }\n | { type: 'setRecommendations', payload: { id: string, widget: Widget } }\n | { type: 'setSingleProducts', payload: Product[] }\n | { type: 'setIsAutocomplete', payload: boolean }\n | { type: 'setAutocomplete', payload: AutocompleteResults }\n | { type: 'setSearchWithinSearch', payload: string }\n | { type: 'setSegments', payload: string[] }\n | { type: 'setFlag', payload: string[] }\n | { type: 'setCustomSort',payload:CustomSortSettings}\n | { type: 'setVariationId', payload: string | null }\n | { type: 'setUserSegmentPreview', payload: 'none' | 'new' | 'returning' }\n | { type: 'setComparisonData', payload: ComparisonData | null }\n | { type: 'setIsComparing', payload: boolean }\n\n\n\nexport function fastStateReducer(state: FastStateProps, action: FastStateAction) {\n switch (action.type) {\n case \"setReady\":\n return {...state, isReady: action.payload}\n\n case 'setType':\n return {...state, type: action.payload};\n\n case 'setPage':\n return {...state, page: action.payload};\n\n case 'setQuery':\n return {...state, query: action.payload, collectionID: undefined, page: 1, narrow: undefined, searchWithinSearch: undefined, sortBy:undefined};\n\n case 'setSortBy':\n return {...state, sortBy: action.payload, page: 1};\n\n case 'setSegments':\n return {...state, segments: action.payload, page: 1};\n\n case 'setIsLoading':\n return {...state, isLoading: action.payload};\n\n case 'setCollectionID':\n return {...state, collectionID: action.payload, query: \"\", page: 1, narrow: undefined, searchWithinSearch: undefined , sortBy:undefined};\n\n case 'setNarrow':\n return {...state, narrow: action.payload, page: 1};\n\n case 'setResults':\n return {...state, results: {isNoResults: false, ...action.payload}} as FastStateProps;\n\n case 'mergeResultsKeepProduct': {\n return {...state, results: {...state.results, ...action.payload.results, products: state.results?.products || []}};\n }\n\n case 'mergeFacetsWithResults':{\n return {...state, narrow: action.payload};\n }\n\n case 'mergeResults': {\n const sortBy = action.payload.results?.sortBy ?? state.sortBy\n\n if (!action.payload.infiniteScroll) {\n return {...state,sortBy, results: { ...action.payload.results}} as FastStateProps;\n }\n\n const products = state.results?.products ?? [];\n const newProducts = action.payload.results.products ?? [];\n\n // Optimize: Use Set for O(1) lookup instead of O(n) find() - prevents O(n²)\n const existingIds = new Set(products.map(p => p.id));\n const uniqueNewProducts = newProducts.filter(p => !existingIds.has(p.id));\n\n // Only merge if there are actually new products\n if (uniqueNewProducts.length > 0) {\n return {\n ...state,\n results: {...state.results, isNoResults: false, ...action.payload.results, products: [...products, ...uniqueNewProducts]}\n } as FastStateProps;\n }\n\n return {\n ...state,\n results: {...state.results, isNoResults: false, ...action.payload.results, products: products}\n } as FastStateProps;\n\n }\n\n case 'setState': {\n if (action.payload.query) {\n return {...state, ...action.payload, collectionID: undefined, searchWithinSearch: undefined, segments: undefined}\n } else {\n return {...state, ...action.payload, query: \"\", searchWithinSearch: undefined, segments: undefined};\n }\n }\n\n case \"setRecommendations\": {\n return {\n ...state,\n recommendations: {\n ...state.recommendations,\n [action.payload.id]: action.payload.widget\n }\n }\n }\n\n case \"setSingleProducts\": {\n const products: { [id: string]: Product } = {...state.singleProducts};\n\n for (const product of action.payload) {\n products[product.id] = product;\n }\n\n return {...state, singleProducts: products}\n }\n case \"setIsAutocomplete\":{\n return {...state, isAutocomplete: action.payload}\n }\n\n case \"setAutocomplete\": {\n return {...state, autocomplete: action.payload}\n }\n\n case \"setSearchWithinSearch\": {\n return {...state, searchWithinSearch: action.payload}\n }\n case 'setFlag':\n return {...state, flag: action.payload};\n\n case 'setCustomSort':\n return {...state, custom_sort_settings: action.payload};\n\n case 'setVariationId':\n return {...state, variation_id: action.payload};\n\n case 'setUserSegmentPreview':\n return {...state, user_segment_preview: action.payload};\n\n case 'setComparisonData':\n return {...state, comparisonData: action.payload};\n\n case 'setIsComparing':\n return {...state, isComparing: action.payload};\n\n }\n}\n\n"]}
package/dist/index.d.ts CHANGED
@@ -39,5 +39,6 @@ import { AutocompleteReasoningResponse } from "./@types/autocomplete";
39
39
  import { getUseCacheSetting, setUseCacheSetting } from "./utils/getCacheSettings";
40
40
  import { getShowSalesAnalyticsSetting, setShowSalesAnalyticsSetting } from "./utils/getSalesAnalyticsSettings";
41
41
  import { getShowRequestUrlSetting, setShowRequestUrlSetting } from "./utils/getRequestUrlSettings";
42
- export type { MenuItemName, CustomClasses, SideMenuType, SideMenuItem, ProductLabelType, Banner, EditorProduct, IconProps, ServerProduct, ProductAnalytics, FullTextServerResponseAll, QueryUnderstanding, smartCollectionsResults, AutocompleteReasoningResponse, FeaturedRanking, ComparisonData };
43
- export { BackOfficeFiltersMenu, InStoreFiltersMenu, Droppable, DndContextWrapper, SortableItem, ProductGrid, RenderIfVisible, useDragToSelect, LandingPage, FullTextSearch, BackOfficeFiltersIcon, BannersIcon, HelpIcon, InStoreFiltersIcon, PromoteIcon, RestoreIcon, RemoveIcon, GeneralIcon, videoFormats, isEditorProduct, useFastState, useFastStateFunctions, FastSimonApi, MainTheme, Products, getFormatProducts, useProductsPerRow, ProductLabel, CustomTagsFilters, SelectCard, getLSVectorSearchOn, getLSVectorSearchDict, getUseCacheSetting, setUseCacheSetting, getShowSalesAnalyticsSetting, setShowSalesAnalyticsSetting, getShowRequestUrlSetting, setShowRequestUrlSetting };
42
+ import { getPersonalizationSegment, getUserSegmentPreviewSettings, setUserSegmentPreviewSettings, UserSegmentPreview, UserSegmentPreviewSettings } from "./utils/userSegmentPreview";
43
+ export type { MenuItemName, CustomClasses, SideMenuType, SideMenuItem, ProductLabelType, Banner, EditorProduct, IconProps, ServerProduct, ProductAnalytics, FullTextServerResponseAll, QueryUnderstanding, smartCollectionsResults, AutocompleteReasoningResponse, FeaturedRanking, ComparisonData, UserSegmentPreview, UserSegmentPreviewSettings };
44
+ export { BackOfficeFiltersMenu, InStoreFiltersMenu, Droppable, DndContextWrapper, SortableItem, ProductGrid, RenderIfVisible, useDragToSelect, LandingPage, FullTextSearch, BackOfficeFiltersIcon, BannersIcon, HelpIcon, InStoreFiltersIcon, PromoteIcon, RestoreIcon, RemoveIcon, GeneralIcon, videoFormats, isEditorProduct, useFastState, useFastStateFunctions, FastSimonApi, MainTheme, Products, getFormatProducts, useProductsPerRow, ProductLabel, CustomTagsFilters, SelectCard, getLSVectorSearchOn, getLSVectorSearchDict, getUseCacheSetting, setUseCacheSetting, getShowSalesAnalyticsSetting, setShowSalesAnalyticsSetting, getShowRequestUrlSetting, setShowRequestUrlSetting, getPersonalizationSegment, getUserSegmentPreviewSettings, setUserSegmentPreviewSettings };
package/dist/index.js CHANGED
@@ -31,5 +31,6 @@ import { getLSVectorSearchDict, getLSVectorSearchOn } from "./utils/getLSVectorS
31
31
  import { getUseCacheSetting, setUseCacheSetting } from "./utils/getCacheSettings";
32
32
  import { getShowSalesAnalyticsSetting, setShowSalesAnalyticsSetting } from "./utils/getSalesAnalyticsSettings";
33
33
  import { getShowRequestUrlSetting, setShowRequestUrlSetting } from "./utils/getRequestUrlSettings";
34
- export { BackOfficeFiltersMenu, InStoreFiltersMenu, Droppable, DndContextWrapper, SortableItem, ProductGrid, RenderIfVisible, useDragToSelect, LandingPage, FullTextSearch, BackOfficeFiltersIcon, BannersIcon, HelpIcon, InStoreFiltersIcon, PromoteIcon, RestoreIcon, RemoveIcon, GeneralIcon, videoFormats, isEditorProduct, useFastState, useFastStateFunctions, FastSimonApi, MainTheme, Products, getFormatProducts, useProductsPerRow, ProductLabel, CustomTagsFilters, SelectCard, getLSVectorSearchOn, getLSVectorSearchDict, getUseCacheSetting, setUseCacheSetting, getShowSalesAnalyticsSetting, setShowSalesAnalyticsSetting, getShowRequestUrlSetting, setShowRequestUrlSetting };
34
+ import { getPersonalizationSegment, getUserSegmentPreviewSettings, setUserSegmentPreviewSettings } from "./utils/userSegmentPreview";
35
+ export { BackOfficeFiltersMenu, InStoreFiltersMenu, Droppable, DndContextWrapper, SortableItem, ProductGrid, RenderIfVisible, useDragToSelect, LandingPage, FullTextSearch, BackOfficeFiltersIcon, BannersIcon, HelpIcon, InStoreFiltersIcon, PromoteIcon, RestoreIcon, RemoveIcon, GeneralIcon, videoFormats, isEditorProduct, useFastState, useFastStateFunctions, FastSimonApi, MainTheme, Products, getFormatProducts, useProductsPerRow, ProductLabel, CustomTagsFilters, SelectCard, getLSVectorSearchOn, getLSVectorSearchDict, getUseCacheSetting, setUseCacheSetting, getShowSalesAnalyticsSetting, setShowSalesAnalyticsSetting, getShowRequestUrlSetting, setShowRequestUrlSetting, getPersonalizationSegment, getUserSegmentPreviewSettings, setUserSegmentPreviewSettings };
35
36
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,YAAY,EAAS,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAgB,eAAe,EAAC,MAAM,wBAAwB,CAAA;AAGrE,OAAO,EAAC,qBAAqB,EAAC,MAAM,+BAA+B,CAAA;AACnE,OAAO,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAA;AAC/C,OAAO,qBAAqB,MAAM,oCAAoC,CAAA;AACtE,OAAO,kBAAkB,MAAM,iCAAiC,CAAA;AAChE,OAAO,iBAAiB,MAAM,4CAA4C,CAAA;AAC1E,OAAO,SAAS,MAAM,oCAAoC,CAAA;AAC1D,OAAO,YAAY,MAAM,wCAAwC,CAAA;AACjE,OAAO,EAAC,YAAY,EAAC,MAAM,uCAAuC,CAAA;AAClE,OAAO,WAAW,MAAM,sCAAsC,CAAC;AAC/D,OAAO,UAAU,MAAM,oCAAoC,CAAC;AAC5D,OAAO,eAAe,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAC,eAAe,EAAC,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAC,iBAAiB,EAAC,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAC,iBAAiB,EAAC,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAC,YAAY,EAAE,qBAAqB,EAAiB,MAAM,2BAA2B,CAAA;AAI7F,OAAO,YAAY,MAAM,wCAAwC,CAAA;AACjE,OAAO,SAAS,MAAM,2BAA2B,CAAA;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAC,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAErF,OAAO,EAAC,kBAAkB,EAAE,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAC/E,OAAO,EAAC,4BAA4B,EAAE,4BAA4B,EAAC,MAAM,mCAAmC,CAAA;AAC5G,OAAO,EAAC,wBAAwB,EAAE,wBAAwB,EAAC,MAAM,+BAA+B,CAAA;AAsBhG,OAAO,EACH,qBAAqB,EAAE,kBAAkB,EAAE,SAAS,EAAE,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EACnH,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,qBAAqB,EAAE,WAAW,EAAE,QAAQ,EAAE,kBAAkB,EAAE,WAAW,EAC3H,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAC,YAAY,EAAE,qBAAqB,EAAC,YAAY,EAAC,SAAS,EAC9H,QAAQ,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,mBAAmB,EAAC,qBAAqB,EACtI,kBAAkB,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,4BAA4B,EAClG,wBAAwB,EAAE,wBAAwB,EACrD,CAAC","sourcesContent":["import {CustomClasses, SideMenuType, SideMenuItem, MenuItemName} from \"./@types/sideMenu\"\nimport {ProductLabelType} from \"./@types/productLabel\"\nimport {videoFormats, Banner} from \"./@types/banner\"\nimport {EditorProduct, isEditorProduct} from \"./@types/editorProduct\"\nimport {IconProps} from \"./@types/iconProps\"\n\nimport {BackOfficeFiltersIcon} from \"./icons/BackOfficeFiltersIcon\"\nimport {BannersIcon} from \"./icons/BannersIcon\"\nimport {HelpIcon} from \"./icons/HelpIcon\"\nimport {InStoreFiltersIcon} from \"./icons/InStoreFiltersIcon\"\nimport {PromoteIcon} from \"./icons/PromoteIcon\"\nimport {RemoveIcon} from \"./icons/RemoveIcon\"\nimport {RestoreIcon} from \"./icons/RestoreIcon\"\nimport {GeneralIcon} from \"./icons/GeneralIcon\"\nimport BackOfficeFiltersMenu from './components/BackOfficeFiltersMenu'\nimport InStoreFiltersMenu from './components/InStoreFiltersMenu'\nimport DndContextWrapper from './components/DragAndDrop/DndContextWrapper'\nimport Droppable from './components/DragAndDrop/Droppable'\nimport ProductLabel from './components/ProductLabel/ProductLabel'\nimport {SortableItem} from './components/DragAndDrop/SortableItem'\nimport ProductGrid from \"./components/productGrid/ProductGrid\";\nimport SelectCard from \"./components/SelectCard/SelectCard\";\nimport RenderIfVisible from \"./components/RenderIfVisible\";\nimport {useDragToSelect} from \"./utils/useDragToSelect\";\nimport {CustomTagsFilters} from \"./utils/customTagsFilters\";\nimport {useProductsPerRow} from \"./utils/useProductsPerRow\";\nimport { LandingPage } from \"./services/landingPage\";\nimport { FullTextSearch } from \"./services/search\";\nimport { getFormatProducts } from \"./services/getFormatProducts\";\nimport {useFastState, useFastStateFunctions, ComparisonData} from \"./components/FastSimonApi\"\nimport { ServerProduct, ProductAnalytics } from \"./@types/product\"\nimport { FullTextServerResponseAll, QueryUnderstanding } from \"./@types/results\"\nimport { smartCollectionsResults } from \"./@types/categories\"\nimport FastSimonApi from \"./components/FastSimonApi/FastSimonApi\"\nimport MainTheme from \"./components/FastSimonApi\"\nimport { FeaturedRanking } from \"@fast-simon/utilities/lib/@types/product\"\nimport { Products } from \"./services/products\"\nimport {getLSVectorSearchDict, getLSVectorSearchOn } from \"./utils/getLSVectorSearch\"\nimport { AutocompleteReasoningResponse } from \"./@types/autocomplete\"\nimport {getUseCacheSetting, setUseCacheSetting} from \"./utils/getCacheSettings\"\nimport {getShowSalesAnalyticsSetting, setShowSalesAnalyticsSetting} from \"./utils/getSalesAnalyticsSettings\"\nimport {getShowRequestUrlSetting, setShowRequestUrlSetting} from \"./utils/getRequestUrlSettings\"\n// export * from './components';\n\nexport type {\n MenuItemName,\n CustomClasses,\n SideMenuType,\n SideMenuItem,\n ProductLabelType,\n Banner,\n EditorProduct,\n IconProps,\n ServerProduct,\n ProductAnalytics,\n FullTextServerResponseAll,\n QueryUnderstanding,\n smartCollectionsResults,\n AutocompleteReasoningResponse,\n FeaturedRanking,\n ComparisonData\n};\n\nexport {\n BackOfficeFiltersMenu, InStoreFiltersMenu, Droppable, DndContextWrapper, SortableItem, ProductGrid, RenderIfVisible,\n useDragToSelect, LandingPage, FullTextSearch, BackOfficeFiltersIcon, BannersIcon, HelpIcon, InStoreFiltersIcon, PromoteIcon,\n RestoreIcon, RemoveIcon, GeneralIcon, videoFormats, isEditorProduct,useFastState, useFastStateFunctions,FastSimonApi,MainTheme,\n Products, getFormatProducts, useProductsPerRow, ProductLabel, CustomTagsFilters, SelectCard ,getLSVectorSearchOn,getLSVectorSearchDict,\n getUseCacheSetting, setUseCacheSetting, getShowSalesAnalyticsSetting, setShowSalesAnalyticsSetting,\n getShowRequestUrlSetting, setShowRequestUrlSetting\n};"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,YAAY,EAAS,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAgB,eAAe,EAAC,MAAM,wBAAwB,CAAA;AAGrE,OAAO,EAAC,qBAAqB,EAAC,MAAM,+BAA+B,CAAA;AACnE,OAAO,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAA;AAC/C,OAAO,qBAAqB,MAAM,oCAAoC,CAAA;AACtE,OAAO,kBAAkB,MAAM,iCAAiC,CAAA;AAChE,OAAO,iBAAiB,MAAM,4CAA4C,CAAA;AAC1E,OAAO,SAAS,MAAM,oCAAoC,CAAA;AAC1D,OAAO,YAAY,MAAM,wCAAwC,CAAA;AACjE,OAAO,EAAC,YAAY,EAAC,MAAM,uCAAuC,CAAA;AAClE,OAAO,WAAW,MAAM,sCAAsC,CAAC;AAC/D,OAAO,UAAU,MAAM,oCAAoC,CAAC;AAC5D,OAAO,eAAe,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAC,eAAe,EAAC,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAC,iBAAiB,EAAC,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAC,iBAAiB,EAAC,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAC,YAAY,EAAE,qBAAqB,EAAiB,MAAM,2BAA2B,CAAA;AAI7F,OAAO,YAAY,MAAM,wCAAwC,CAAA;AACjE,OAAO,SAAS,MAAM,2BAA2B,CAAA;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAC,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAErF,OAAO,EAAC,kBAAkB,EAAE,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAC/E,OAAO,EAAC,4BAA4B,EAAE,4BAA4B,EAAC,MAAM,mCAAmC,CAAA;AAC5G,OAAO,EAAC,wBAAwB,EAAE,wBAAwB,EAAC,MAAM,+BAA+B,CAAA;AAChG,OAAO,EAAC,yBAAyB,EAAE,6BAA6B,EAAE,6BAA6B,EAAiD,MAAM,4BAA4B,CAAA;AAwBlL,OAAO,EACH,qBAAqB,EAAE,kBAAkB,EAAE,SAAS,EAAE,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EACnH,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,qBAAqB,EAAE,WAAW,EAAE,QAAQ,EAAE,kBAAkB,EAAE,WAAW,EAC3H,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAC,YAAY,EAAE,qBAAqB,EAAC,YAAY,EAAC,SAAS,EAC9H,QAAQ,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,mBAAmB,EAAC,qBAAqB,EACtI,kBAAkB,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,4BAA4B,EAClG,wBAAwB,EAAE,wBAAwB,EAClD,yBAAyB,EAAE,6BAA6B,EAAE,6BAA6B,EAC1F,CAAC","sourcesContent":["import {CustomClasses, SideMenuType, SideMenuItem, MenuItemName} from \"./@types/sideMenu\"\nimport {ProductLabelType} from \"./@types/productLabel\"\nimport {videoFormats, Banner} from \"./@types/banner\"\nimport {EditorProduct, isEditorProduct} from \"./@types/editorProduct\"\nimport {IconProps} from \"./@types/iconProps\"\n\nimport {BackOfficeFiltersIcon} from \"./icons/BackOfficeFiltersIcon\"\nimport {BannersIcon} from \"./icons/BannersIcon\"\nimport {HelpIcon} from \"./icons/HelpIcon\"\nimport {InStoreFiltersIcon} from \"./icons/InStoreFiltersIcon\"\nimport {PromoteIcon} from \"./icons/PromoteIcon\"\nimport {RemoveIcon} from \"./icons/RemoveIcon\"\nimport {RestoreIcon} from \"./icons/RestoreIcon\"\nimport {GeneralIcon} from \"./icons/GeneralIcon\"\nimport BackOfficeFiltersMenu from './components/BackOfficeFiltersMenu'\nimport InStoreFiltersMenu from './components/InStoreFiltersMenu'\nimport DndContextWrapper from './components/DragAndDrop/DndContextWrapper'\nimport Droppable from './components/DragAndDrop/Droppable'\nimport ProductLabel from './components/ProductLabel/ProductLabel'\nimport {SortableItem} from './components/DragAndDrop/SortableItem'\nimport ProductGrid from \"./components/productGrid/ProductGrid\";\nimport SelectCard from \"./components/SelectCard/SelectCard\";\nimport RenderIfVisible from \"./components/RenderIfVisible\";\nimport {useDragToSelect} from \"./utils/useDragToSelect\";\nimport {CustomTagsFilters} from \"./utils/customTagsFilters\";\nimport {useProductsPerRow} from \"./utils/useProductsPerRow\";\nimport { LandingPage } from \"./services/landingPage\";\nimport { FullTextSearch } from \"./services/search\";\nimport { getFormatProducts } from \"./services/getFormatProducts\";\nimport {useFastState, useFastStateFunctions, ComparisonData} from \"./components/FastSimonApi\"\nimport { ServerProduct, ProductAnalytics } from \"./@types/product\"\nimport { FullTextServerResponseAll, QueryUnderstanding } from \"./@types/results\"\nimport { smartCollectionsResults } from \"./@types/categories\"\nimport FastSimonApi from \"./components/FastSimonApi/FastSimonApi\"\nimport MainTheme from \"./components/FastSimonApi\"\nimport { FeaturedRanking } from \"@fast-simon/utilities/lib/@types/product\"\nimport { Products } from \"./services/products\"\nimport {getLSVectorSearchDict, getLSVectorSearchOn } from \"./utils/getLSVectorSearch\"\nimport { AutocompleteReasoningResponse } from \"./@types/autocomplete\"\nimport {getUseCacheSetting, setUseCacheSetting} from \"./utils/getCacheSettings\"\nimport {getShowSalesAnalyticsSetting, setShowSalesAnalyticsSetting} from \"./utils/getSalesAnalyticsSettings\"\nimport {getShowRequestUrlSetting, setShowRequestUrlSetting} from \"./utils/getRequestUrlSettings\"\nimport {getPersonalizationSegment, getUserSegmentPreviewSettings, setUserSegmentPreviewSettings, UserSegmentPreview, UserSegmentPreviewSettings} from \"./utils/userSegmentPreview\"\n// export * from './components';\n\nexport type {\n MenuItemName,\n CustomClasses,\n SideMenuType,\n SideMenuItem,\n ProductLabelType,\n Banner,\n EditorProduct,\n IconProps,\n ServerProduct,\n ProductAnalytics,\n FullTextServerResponseAll,\n QueryUnderstanding,\n smartCollectionsResults,\n AutocompleteReasoningResponse,\n FeaturedRanking,\n ComparisonData,\n UserSegmentPreview,\n UserSegmentPreviewSettings\n};\n\nexport {\n BackOfficeFiltersMenu, InStoreFiltersMenu, Droppable, DndContextWrapper, SortableItem, ProductGrid, RenderIfVisible,\n useDragToSelect, LandingPage, FullTextSearch, BackOfficeFiltersIcon, BannersIcon, HelpIcon, InStoreFiltersIcon, PromoteIcon,\n RestoreIcon, RemoveIcon, GeneralIcon, videoFormats, isEditorProduct,useFastState, useFastStateFunctions,FastSimonApi,MainTheme,\n Products, getFormatProducts, useProductsPerRow, ProductLabel, CustomTagsFilters, SelectCard ,getLSVectorSearchOn,getLSVectorSearchDict,\n getUseCacheSetting, setUseCacheSetting, getShowSalesAnalyticsSetting, setShowSalesAnalyticsSetting,\n getShowRequestUrlSetting, setShowRequestUrlSetting,\n getPersonalizationSegment, getUserSegmentPreviewSettings, setUserSegmentPreviewSettings\n};"]}
@@ -1,5 +1,5 @@
1
1
  import { smartCollectionsProps, smartCollectionsResults } from "../@types/categories";
2
2
  export declare const SmartCollections: {
3
- getSmartCollections: ({ uuid, storeID, siteKey, cdn, facetRequired, narrowBy, page, productsPerPage, sortBy, withAttributes, categoryID, recent, rec, searchWithinSearch, segments, disable_semantics, disable_merchandising, disable_strategies, disable_turbolinks, disable_merchandising_rules, disable_antonyms, custom_sort_settings, with_product_analytics, market_context, variation_id }: smartCollectionsProps) => Promise<smartCollectionsResults>;
4
- getSmartCollectionsProductsIds: ({ uuid, storeID, siteKey, cdn, facetRequired, narrowBy, page, productsPerPage, sortBy, withAttributes, categoryID, recent, rec, searchWithinSearch, segments, disable_semantics, disable_merchandising, disable_strategies, disable_turbolinks, disable_merchandising_rules, disable_antonyms, custom_sort_settings, market_context, variation_id }: smartCollectionsProps) => Promise<smartCollectionsResults>;
3
+ getSmartCollections: ({ uuid, storeID, siteKey, cdn, facetRequired, narrowBy, page, productsPerPage, sortBy, withAttributes, categoryID, recent, rec, searchWithinSearch, segments, disable_semantics, disable_merchandising, disable_strategies, disable_turbolinks, disable_merchandising_rules, disable_antonyms, custom_sort_settings, with_product_analytics, market_context, variation_id, ps }: smartCollectionsProps) => Promise<smartCollectionsResults>;
4
+ getSmartCollectionsProductsIds: ({ uuid, storeID, siteKey, cdn, facetRequired, narrowBy, page, productsPerPage, sortBy, withAttributes, categoryID, recent, rec, searchWithinSearch, segments, disable_semantics, disable_merchandising, disable_strategies, disable_turbolinks, disable_merchandising_rules, disable_antonyms, custom_sort_settings, market_context, variation_id, ps }: smartCollectionsProps) => Promise<smartCollectionsResults>;
5
5
  };
@@ -12,7 +12,7 @@ import { getInternalURL } from "../utils/getInternalURL";
12
12
  import { getUseCacheSetting } from "../utils/getCacheSettings";
13
13
  const BASE_URL = "https://internal-v3joil6oqa-uc.a.run.app";
14
14
  export const SmartCollections = {
15
- getSmartCollections: ({ uuid, storeID, siteKey, cdn, facetRequired, narrowBy, page, productsPerPage, sortBy, withAttributes, categoryID, recent, rec, searchWithinSearch, segments, disable_semantics, disable_merchandising, disable_strategies, disable_turbolinks, disable_merchandising_rules, disable_antonyms, custom_sort_settings, with_product_analytics, market_context, variation_id }) => __awaiter(void 0, void 0, void 0, function* () {
15
+ getSmartCollections: ({ uuid, storeID, siteKey, cdn, facetRequired, narrowBy, page, productsPerPage, sortBy, withAttributes, categoryID, recent, rec, searchWithinSearch, segments, disable_semantics, disable_merchandising, disable_strategies, disable_turbolinks, disable_merchandising_rules, disable_antonyms, custom_sort_settings, with_product_analytics, market_context, variation_id, ps }) => __awaiter(void 0, void 0, void 0, function* () {
16
16
  var internal_url = getInternalURL();
17
17
  if (internal_url == "") {
18
18
  internal_url = BASE_URL;
@@ -24,7 +24,7 @@ export const SmartCollections = {
24
24
  const params = Object.assign(Object.assign({ site_key: siteKey,
25
25
  // UUID: uuid,
26
26
  // store_id: storeID,
27
- cdn_cache_key: cdn, facets_required: facetRequired, category_id: categoryID, page_num: page !== null && page !== void 0 ? page : 1, with_product_attributes: withAttributes, narrow: JSON.stringify(narrowBy), products_per_page: productsPerPage, sort_by: sortBy, sp: recent }, (!use_cache ? { m: 1 } : {})), { search_within_search: searchWithinSearch, st: JSON.stringify(segments) || undefined, disable_semantics: disable_semantics ? 1 : 0, disable_merchandising: disable_merchandising ? 1 : 0, disable_strategies: disable_strategies ? 1 : 0, disable_turbolinks: disable_turbolinks ? 1 : 0, disable_merchandising_rules: disable_merchandising_rules ? 1 : 0, disable_antonyms: disable_antonyms ? 1 : 0, custom_sort_settings: JSON.stringify(custom_sort_settings), with_product_analytics: with_product_analytics ? true : undefined, market_context: market_context || undefined, variation_id: variation_id || undefined });
27
+ cdn_cache_key: cdn, facets_required: facetRequired, category_id: categoryID, page_num: page !== null && page !== void 0 ? page : 1, with_product_attributes: withAttributes, narrow: JSON.stringify(narrowBy), products_per_page: productsPerPage, sort_by: sortBy, sp: recent }, (!use_cache ? { m: 1 } : {})), { search_within_search: searchWithinSearch, st: JSON.stringify(segments) || undefined, disable_semantics: disable_semantics ? 1 : 0, disable_merchandising: disable_merchandising ? 1 : 0, disable_strategies: disable_strategies ? 1 : 0, disable_turbolinks: disable_turbolinks ? 1 : 0, disable_merchandising_rules: disable_merchandising_rules ? 1 : 0, disable_antonyms: disable_antonyms ? 1 : 0, custom_sort_settings: JSON.stringify(custom_sort_settings), with_product_analytics: with_product_analytics ? true : undefined, market_context: market_context || undefined, variation_id: variation_id || undefined, ps: ps || undefined });
28
28
  params["segments"] = JSON.stringify(segments) || undefined;
29
29
  // Use getWithUrl to capture the full request URL for debugging
30
30
  const result = yield API.getWithUrl({
@@ -34,7 +34,7 @@ export const SmartCollections = {
34
34
  // Return response with request_url included
35
35
  return Object.assign(Object.assign({}, result.data), { request_url: result.request_url });
36
36
  }),
37
- getSmartCollectionsProductsIds: ({ uuid, storeID, siteKey, cdn, facetRequired, narrowBy, page, productsPerPage, sortBy, withAttributes, categoryID, recent, rec, searchWithinSearch, segments, disable_semantics, disable_merchandising, disable_strategies, disable_turbolinks, disable_merchandising_rules, disable_antonyms, custom_sort_settings, market_context, variation_id }) => {
37
+ getSmartCollectionsProductsIds: ({ uuid, storeID, siteKey, cdn, facetRequired, narrowBy, page, productsPerPage, sortBy, withAttributes, categoryID, recent, rec, searchWithinSearch, segments, disable_semantics, disable_merchandising, disable_strategies, disable_turbolinks, disable_merchandising_rules, disable_antonyms, custom_sort_settings, market_context, variation_id, ps }) => {
38
38
  var internal_url = getInternalURL();
39
39
  if (internal_url == "") {
40
40
  internal_url = BASE_URL;
@@ -46,7 +46,7 @@ export const SmartCollections = {
46
46
  const params = Object.assign(Object.assign({ site_key: siteKey,
47
47
  // UUID: uuid,
48
48
  // store_id: storeID,
49
- cdn_cache_key: cdn, facets_required: facetRequired, category_id: categoryID, page_num: page !== null && page !== void 0 ? page : 1, with_product_attributes: withAttributes, narrow: JSON.stringify(narrowBy), products_per_page: productsPerPage, sort_by: sortBy, sp: recent }, (!use_cache ? { m: 1 } : {})), { search_within_search: searchWithinSearch, st: JSON.stringify(segments) || undefined, disable_semantics: disable_semantics ? 1 : 0, disable_merchandising: disable_merchandising ? 1 : 0, disable_strategies: disable_strategies ? 1 : 0, disable_turbolinks: disable_turbolinks ? 1 : 0, disable_merchandising_rules: disable_merchandising_rules ? 1 : 0, disable_antonyms: disable_antonyms ? 1 : 0, ids_only: 1, custom_sort_settings: JSON.stringify(custom_sort_settings), market_context: market_context || undefined, variation_id: variation_id || undefined });
49
+ cdn_cache_key: cdn, facets_required: facetRequired, category_id: categoryID, page_num: page !== null && page !== void 0 ? page : 1, with_product_attributes: withAttributes, narrow: JSON.stringify(narrowBy), products_per_page: productsPerPage, sort_by: sortBy, sp: recent }, (!use_cache ? { m: 1 } : {})), { search_within_search: searchWithinSearch, st: JSON.stringify(segments) || undefined, disable_semantics: disable_semantics ? 1 : 0, disable_merchandising: disable_merchandising ? 1 : 0, disable_strategies: disable_strategies ? 1 : 0, disable_turbolinks: disable_turbolinks ? 1 : 0, disable_merchandising_rules: disable_merchandising_rules ? 1 : 0, disable_antonyms: disable_antonyms ? 1 : 0, ids_only: 1, custom_sort_settings: JSON.stringify(custom_sort_settings), market_context: market_context || undefined, variation_id: variation_id || undefined, ps: ps || undefined });
50
50
  params["segments"] = JSON.stringify(segments) || undefined;
51
51
  return API.get({
52
52
  url: `${internal_url}/categories_navigation`,
@@ -1 +1 @@
1
- {"version":3,"file":"smartCollections.js","sourceRoot":"","sources":["../../src/services/smartCollections.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,cAAc,EAAC,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAC,kBAAkB,EAAC,MAAM,2BAA2B,CAAC;AAE7D,MAAM,QAAQ,GAAG,0CAA0C,CAAC;AAG5D,MAAM,CAAC,MAAM,gBAAgB,GAAG;IACxB,mBAAmB,EAAE,CAAO,EACF,IAAI,EAAE,OAAO,EAAC,OAAO,EAAE,GAAG,EAC1B,aAAa,EAAE,QAAQ,EAAE,IAAI,EAC7B,eAAe,EAAE,MAAM,EACrB,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,kBAAkB,EAAE,QAAQ,EACvE,iBAAiB,EAAC,qBAAqB,EAAC,kBAAkB,EAAC,kBAAkB,EAAC,2BAA2B,EAAC,gBAAgB,EAC1H,oBAAoB,EAAE,sBAAsB,EAAE,cAAc,EAAE,YAAY,EACtD,EAAoC,EAAE;QAChF,IAAI,YAAY,GAAC,cAAc,EAAE,CAAC;QAClC,IAAG,YAAY,IAAE,EAAE,EACnB;YACI,YAAY,GAAC,QAAQ,CAAC;SACzB;QAED,gEAAgE;QAChE,0EAA0E;QAC1E,4EAA4E;QAC5E,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;QAEvC,MAAM,MAAM,iCACR,QAAQ,EAAC,OAAO;YAChB,cAAc;YACd,qBAAqB;YACrB,aAAa,EAAE,GAAG,EAClB,eAAe,EAAE,aAAa,EAC9B,WAAW,EAAE,UAAU,EACvB,QAAQ,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,CAAC,EACnB,uBAAuB,EAAE,cAAc,EACvC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAChC,iBAAiB,EAAE,eAAe,EAClC,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,IACP,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAC/B,oBAAoB,EAAE,kBAAkB,EACxC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAE,SAAS,EACvC,iBAAiB,EAAC,iBAAiB,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,EACvC,qBAAqB,EAAC,qBAAqB,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,EAC/C,kBAAkB,EAAC,kBAAkB,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,EACzC,kBAAkB,EAAC,kBAAkB,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,EACzC,2BAA2B,EAAC,2BAA2B,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,EAC3D,gBAAgB,EAAC,gBAAgB,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,EACrC,oBAAoB,EAAC,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,EACzD,sBAAsB,EAAE,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EACjE,cAAc,EAAE,cAAc,IAAI,SAAS,EAC3C,YAAY,EAAE,YAAY,IAAI,SAAS,GAE1C,CAAC;QAED,MAAc,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC;QAEpE,+DAA+D;QAC/D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,CAA0B;YACzD,GAAG,EAAE,GAAG,YAAY,kCAAkC;YACtD,MAAM;SACT,CAAC,CAAC;QAEH,4CAA4C;QAC5C,uCACO,MAAM,CAAC,IAAI,KACd,WAAW,EAAE,MAAM,CAAC,WAAW,IACjC;IACN,CAAC,CAAA;IACD,8BAA8B,EAAE,CAAC,EACP,IAAI,EAAE,OAAO,EAAC,OAAO,EAAE,GAAG,EAC1B,aAAa,EAAE,QAAQ,EAAE,IAAI,EAC7B,eAAe,EAAE,MAAM,EACrB,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,kBAAkB,EAAE,QAAQ,EACvE,iBAAiB,EAAC,qBAAqB,EAAC,kBAAkB,EAAC,kBAAkB,EAAC,2BAA2B,EAAC,gBAAgB,EAC1H,oBAAoB,EAAE,cAAc,EAAE,YAAY,EAC9B,EAAE,EAAE;QAC9C,IAAI,YAAY,GAAC,cAAc,EAAE,CAAC;QAClC,IAAG,YAAY,IAAE,EAAE,EACnB;YACI,YAAY,GAAC,QAAQ,CAAC;SACzB;QAED,gEAAgE;QAChE,0EAA0E;QAC1E,4EAA4E;QAC5E,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;QAEvC,MAAM,MAAM,iCACR,QAAQ,EAAC,OAAO;YAChB,cAAc;YACd,qBAAqB;YACrB,aAAa,EAAE,GAAG,EAClB,eAAe,EAAE,aAAa,EAC9B,WAAW,EAAE,UAAU,EACvB,QAAQ,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,CAAC,EACnB,uBAAuB,EAAE,cAAc,EACvC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAChC,iBAAiB,EAAE,eAAe,EAClC,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,IACP,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAC/B,oBAAoB,EAAE,kBAAkB,EACxC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAE,SAAS,EACvC,iBAAiB,EAAC,iBAAiB,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,EACvC,qBAAqB,EAAC,qBAAqB,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,EAC/C,kBAAkB,EAAC,kBAAkB,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,EACzC,kBAAkB,EAAC,kBAAkB,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,EACzC,2BAA2B,EAAC,2BAA2B,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,EAC3D,gBAAgB,EAAC,gBAAgB,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,EACrC,QAAQ,EAAC,CAAC,EACV,oBAAoB,EAAC,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,EACzD,cAAc,EAAE,cAAc,IAAI,SAAS,EAC3C,YAAY,EAAE,YAAY,IAAI,SAAS,GAE1C,CAAC;QAED,MAAc,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC;QACpE,OAAO,GAAG,CAAC,GAAG,CAA0B;YACpC,GAAG,EAAE,GAAG,YAAY,wBAAwB;YAC5C,MAAM;SACT,CAAC,CAAC;IACP,CAAC;CACJ,CACJ","sourcesContent":["import {API} from \"./API\";\nimport {smartCollectionsProps, smartCollectionsResults} from \"../@types/categories\";\nimport {getInternalURL} from \"../utils/getInternalURL\";\nimport {getUseCacheSetting} from \"../utils/getCacheSettings\";\n\nconst BASE_URL = \"https://internal-v3joil6oqa-uc.a.run.app\";\n\n\nexport const SmartCollections = {\n getSmartCollections: async ({\n uuid, storeID,siteKey, cdn,\n facetRequired, narrowBy, page,\n productsPerPage, sortBy\n , withAttributes, categoryID, recent, rec, searchWithinSearch, segments,\n disable_semantics,disable_merchandising,disable_strategies,disable_turbolinks,disable_merchandising_rules,disable_antonyms,\n custom_sort_settings, with_product_analytics, market_context, variation_id\n }: smartCollectionsProps): Promise<smartCollectionsResults> => {\n var internal_url=getInternalURL();\n if(internal_url==\"\")\n {\n internal_url=BASE_URL;\n }\n\n // Cache setting: Controls whether 'm' param is added to request\n // When true (default): omit 'm' - backend uses cache for faster responses\n // When false: add 'm: 1' - backend forces fresh data (useful for debugging)\n const use_cache = getUseCacheSetting();\n\n const params = {\n site_key:siteKey,\n // UUID: uuid,\n // store_id: storeID,\n cdn_cache_key: cdn,\n facets_required: facetRequired,\n category_id: categoryID,\n page_num: page ?? 1,\n with_product_attributes: withAttributes,\n narrow: JSON.stringify(narrowBy),\n products_per_page: productsPerPage,\n sort_by: sortBy,\n sp: recent,\n ...(!use_cache ? { m: 1 } : {}),\n search_within_search: searchWithinSearch,\n st: JSON.stringify(segments)||undefined,\n disable_semantics:disable_semantics?1:0,\n disable_merchandising:disable_merchandising?1:0,\n disable_strategies:disable_strategies?1:0,\n disable_turbolinks:disable_turbolinks?1:0,\n disable_merchandising_rules:disable_merchandising_rules?1:0,\n disable_antonyms:disable_antonyms?1:0,\n custom_sort_settings:JSON.stringify(custom_sort_settings),\n with_product_analytics: with_product_analytics ? true : undefined,\n market_context: market_context || undefined,\n variation_id: variation_id || undefined\n\n };\n\n (params as any)[\"segments\"] = JSON.stringify(segments) || undefined;\n\n // Use getWithUrl to capture the full request URL for debugging\n const result = await API.getWithUrl<smartCollectionsResults>({\n url: `${internal_url}/categories_navigation_reasoning`,\n params,\n });\n\n // Return response with request_url included\n return {\n ...result.data,\n request_url: result.request_url\n };\n },\n getSmartCollectionsProductsIds: ({\n uuid, storeID,siteKey, cdn,\n facetRequired, narrowBy, page,\n productsPerPage, sortBy\n , withAttributes, categoryID, recent, rec, searchWithinSearch, segments,\n disable_semantics,disable_merchandising,disable_strategies,disable_turbolinks,disable_merchandising_rules,disable_antonyms,\n custom_sort_settings, market_context, variation_id\n }: smartCollectionsProps) => {\n var internal_url=getInternalURL();\n if(internal_url==\"\")\n {\n internal_url=BASE_URL;\n }\n\n // Cache setting: Controls whether 'm' param is added to request\n // When true (default): omit 'm' - backend uses cache for faster responses\n // When false: add 'm: 1' - backend forces fresh data (useful for debugging)\n const use_cache = getUseCacheSetting();\n\n const params = {\n site_key:siteKey,\n // UUID: uuid,\n // store_id: storeID,\n cdn_cache_key: cdn,\n facets_required: facetRequired,\n category_id: categoryID,\n page_num: page ?? 1,\n with_product_attributes: withAttributes,\n narrow: JSON.stringify(narrowBy),\n products_per_page: productsPerPage,\n sort_by: sortBy,\n sp: recent,\n ...(!use_cache ? { m: 1 } : {}),\n search_within_search: searchWithinSearch,\n st: JSON.stringify(segments)||undefined,\n disable_semantics:disable_semantics?1:0,\n disable_merchandising:disable_merchandising?1:0,\n disable_strategies:disable_strategies?1:0,\n disable_turbolinks:disable_turbolinks?1:0,\n disable_merchandising_rules:disable_merchandising_rules?1:0,\n disable_antonyms:disable_antonyms?1:0,\n ids_only:1,\n custom_sort_settings:JSON.stringify(custom_sort_settings),\n market_context: market_context || undefined,\n variation_id: variation_id || undefined\n\n };\n\n (params as any)[\"segments\"] = JSON.stringify(segments) || undefined;\n return API.get<smartCollectionsResults>({\n url: `${internal_url}/categories_navigation`,\n params,\n });\n },\n }\n;"]}
1
+ {"version":3,"file":"smartCollections.js","sourceRoot":"","sources":["../../src/services/smartCollections.ts"],"names":[],"mappings":"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","sourcesContent":["import {API} from \"./API\";\nimport {smartCollectionsProps, smartCollectionsResults} from \"../@types/categories\";\nimport {getInternalURL} from \"../utils/getInternalURL\";\nimport {getUseCacheSetting} from \"../utils/getCacheSettings\";\n\nconst BASE_URL = \"https://internal-v3joil6oqa-uc.a.run.app\";\n\n\nexport const SmartCollections = {\n getSmartCollections: async ({\n uuid, storeID,siteKey, cdn,\n facetRequired, narrowBy, page,\n productsPerPage, sortBy\n , withAttributes, categoryID, recent, rec, searchWithinSearch, segments,\n disable_semantics,disable_merchandising,disable_strategies,disable_turbolinks,disable_merchandising_rules,disable_antonyms,\n custom_sort_settings, with_product_analytics, market_context, variation_id, ps\n }: smartCollectionsProps): Promise<smartCollectionsResults> => {\n var internal_url=getInternalURL();\n if(internal_url==\"\")\n {\n internal_url=BASE_URL;\n }\n\n // Cache setting: Controls whether 'm' param is added to request\n // When true (default): omit 'm' - backend uses cache for faster responses\n // When false: add 'm: 1' - backend forces fresh data (useful for debugging)\n const use_cache = getUseCacheSetting();\n\n const params = {\n site_key:siteKey,\n // UUID: uuid,\n // store_id: storeID,\n cdn_cache_key: cdn,\n facets_required: facetRequired,\n category_id: categoryID,\n page_num: page ?? 1,\n with_product_attributes: withAttributes,\n narrow: JSON.stringify(narrowBy),\n products_per_page: productsPerPage,\n sort_by: sortBy,\n sp: recent,\n ...(!use_cache ? { m: 1 } : {}),\n search_within_search: searchWithinSearch,\n st: JSON.stringify(segments)||undefined,\n disable_semantics:disable_semantics?1:0,\n disable_merchandising:disable_merchandising?1:0,\n disable_strategies:disable_strategies?1:0,\n disable_turbolinks:disable_turbolinks?1:0,\n disable_merchandising_rules:disable_merchandising_rules?1:0,\n disable_antonyms:disable_antonyms?1:0,\n custom_sort_settings:JSON.stringify(custom_sort_settings),\n with_product_analytics: with_product_analytics ? true : undefined,\n market_context: market_context || undefined,\n variation_id: variation_id || undefined,\n ps: ps || undefined\n\n };\n\n (params as any)[\"segments\"] = JSON.stringify(segments) || undefined;\n\n // Use getWithUrl to capture the full request URL for debugging\n const result = await API.getWithUrl<smartCollectionsResults>({\n url: `${internal_url}/categories_navigation_reasoning`,\n params,\n });\n\n // Return response with request_url included\n return {\n ...result.data,\n request_url: result.request_url\n };\n },\n getSmartCollectionsProductsIds: ({\n uuid, storeID,siteKey, cdn,\n facetRequired, narrowBy, page,\n productsPerPage, sortBy\n , withAttributes, categoryID, recent, rec, searchWithinSearch, segments,\n disable_semantics,disable_merchandising,disable_strategies,disable_turbolinks,disable_merchandising_rules,disable_antonyms,\n custom_sort_settings, market_context, variation_id, ps\n }: smartCollectionsProps) => {\n var internal_url=getInternalURL();\n if(internal_url==\"\")\n {\n internal_url=BASE_URL;\n }\n\n // Cache setting: Controls whether 'm' param is added to request\n // When true (default): omit 'm' - backend uses cache for faster responses\n // When false: add 'm: 1' - backend forces fresh data (useful for debugging)\n const use_cache = getUseCacheSetting();\n\n const params = {\n site_key:siteKey,\n // UUID: uuid,\n // store_id: storeID,\n cdn_cache_key: cdn,\n facets_required: facetRequired,\n category_id: categoryID,\n page_num: page ?? 1,\n with_product_attributes: withAttributes,\n narrow: JSON.stringify(narrowBy),\n products_per_page: productsPerPage,\n sort_by: sortBy,\n sp: recent,\n ...(!use_cache ? { m: 1 } : {}),\n search_within_search: searchWithinSearch,\n st: JSON.stringify(segments)||undefined,\n disable_semantics:disable_semantics?1:0,\n disable_merchandising:disable_merchandising?1:0,\n disable_strategies:disable_strategies?1:0,\n disable_turbolinks:disable_turbolinks?1:0,\n disable_merchandising_rules:disable_merchandising_rules?1:0,\n disable_antonyms:disable_antonyms?1:0,\n ids_only:1,\n custom_sort_settings:JSON.stringify(custom_sort_settings),\n market_context: market_context || undefined,\n variation_id: variation_id || undefined,\n ps: ps || undefined\n\n };\n\n (params as any)[\"segments\"] = JSON.stringify(segments) || undefined;\n return API.get<smartCollectionsResults>({\n url: `${internal_url}/categories_navigation`,\n params,\n });\n },\n }\n;"]}
@@ -0,0 +1,20 @@
1
+ export type UserSegmentPreview = 'none' | 'new' | 'returning';
2
+ export interface UserSegmentPreviewSettings {
3
+ enabled: boolean;
4
+ type: 'new' | 'returning';
5
+ }
6
+ /**
7
+ * Get the personalization segment value for previewing user segment coefficients.
8
+ *
9
+ * @param userType - 'none' (no segment), 'new', or 'returning'
10
+ * @returns 'new' | 'returning' | undefined
11
+ */
12
+ export declare function getPersonalizationSegment(userType: UserSegmentPreview): 'new' | 'returning' | undefined;
13
+ /**
14
+ * Get user segment preview settings from localStorage.
15
+ */
16
+ export declare function getUserSegmentPreviewSettings(): UserSegmentPreviewSettings;
17
+ /**
18
+ * Save user segment preview settings to localStorage.
19
+ */
20
+ export declare function setUserSegmentPreviewSettings(settings: UserSegmentPreviewSettings): void;
@@ -0,0 +1,35 @@
1
+ const USER_SEGMENT_PREVIEW_KEY = 'ai_explainer_user_segment_preview';
2
+ /**
3
+ * Get the personalization segment value for previewing user segment coefficients.
4
+ *
5
+ * @param userType - 'none' (no segment), 'new', or 'returning'
6
+ * @returns 'new' | 'returning' | undefined
7
+ */
8
+ export function getPersonalizationSegment(userType) {
9
+ if (userType === 'none') {
10
+ return undefined;
11
+ }
12
+ return userType;
13
+ }
14
+ /**
15
+ * Get user segment preview settings from localStorage.
16
+ */
17
+ export function getUserSegmentPreviewSettings() {
18
+ try {
19
+ const stored = localStorage.getItem(USER_SEGMENT_PREVIEW_KEY);
20
+ if (stored) {
21
+ return JSON.parse(stored);
22
+ }
23
+ }
24
+ catch (e) {
25
+ // Ignore parsing errors
26
+ }
27
+ return { enabled: false, type: 'new' };
28
+ }
29
+ /**
30
+ * Save user segment preview settings to localStorage.
31
+ */
32
+ export function setUserSegmentPreviewSettings(settings) {
33
+ localStorage.setItem(USER_SEGMENT_PREVIEW_KEY, JSON.stringify(settings));
34
+ }
35
+ //# sourceMappingURL=userSegmentPreview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userSegmentPreview.js","sourceRoot":"","sources":["../../src/utils/userSegmentPreview.ts"],"names":[],"mappings":"AAEA,MAAM,wBAAwB,GAAG,mCAAmC,CAAC;AAOrE;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAA4B;IAClE,IAAI,QAAQ,KAAK,MAAM,EAAE;QACrB,OAAO,SAAS,CAAC;KACpB;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B;IACzC,IAAI;QACA,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAC9D,IAAI,MAAM,EAAE;YACR,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SAC7B;KACJ;IAAC,OAAO,CAAC,EAAE;QACR,wBAAwB;KAC3B;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAAC,QAAoC;IAC9E,YAAY,CAAC,OAAO,CAAC,wBAAwB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7E,CAAC","sourcesContent":["export type UserSegmentPreview = 'none' | 'new' | 'returning';\n\nconst USER_SEGMENT_PREVIEW_KEY = 'ai_explainer_user_segment_preview';\n\nexport interface UserSegmentPreviewSettings {\n enabled: boolean;\n type: 'new' | 'returning';\n}\n\n/**\n * Get the personalization segment value for previewing user segment coefficients.\n *\n * @param userType - 'none' (no segment), 'new', or 'returning'\n * @returns 'new' | 'returning' | undefined\n */\nexport function getPersonalizationSegment(userType: UserSegmentPreview): 'new' | 'returning' | undefined {\n if (userType === 'none') {\n return undefined;\n }\n return userType;\n}\n\n/**\n * Get user segment preview settings from localStorage.\n */\nexport function getUserSegmentPreviewSettings(): UserSegmentPreviewSettings {\n try {\n const stored = localStorage.getItem(USER_SEGMENT_PREVIEW_KEY);\n if (stored) {\n return JSON.parse(stored);\n }\n } catch (e) {\n // Ignore parsing errors\n }\n return { enabled: false, type: 'new' };\n}\n\n/**\n * Save user segment preview settings to localStorage.\n */\nexport function setUserSegmentPreviewSettings(settings: UserSegmentPreviewSettings): void {\n localStorage.setItem(USER_SEGMENT_PREVIEW_KEY, JSON.stringify(settings));\n}\n"]}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@fast-simon/dashboard-utilities",
3
- "version": "1.0.128",
3
+ "version": "1.0.129",
4
4
  "scripts": {
5
5
  "dev": "vite",
6
6
  "preview": "vite preview",
7
7
  "build": "tsc -p tsconfig-build.json",
8
- "prepublishOnly": "npm version patch && npm run build",
8
+ "prepublishOnly": "npm run build",
9
9
  "postbuild": "copyfiles -u 2 src/components/**/*.css dist/components && copyfiles -u 2 src/icons/**/*.css dist/icons && copyfiles -u 2 src/assets/**/*.gif dist/assets"
10
10
  },
11
11
  "main": "dist/index.js",