@woopze/react-native-sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +66 -0
  3. package/dist/assets/cam-icon.d.ts +2 -0
  4. package/dist/assets/cam-icon.js +7 -0
  5. package/dist/assets/cam-icon.js.map +1 -0
  6. package/dist/assets/cam-icon.png +0 -0
  7. package/dist/assets/chevron-icon.d.ts +2 -0
  8. package/dist/assets/chevron-icon.js +7 -0
  9. package/dist/assets/chevron-icon.js.map +1 -0
  10. package/dist/assets/chevron-icon.png +0 -0
  11. package/dist/assets/close-icon.d.ts +2 -0
  12. package/dist/assets/close-icon.js +7 -0
  13. package/dist/assets/close-icon.js.map +1 -0
  14. package/dist/assets/close-icon.png +0 -0
  15. package/dist/assets/filter-icon.d.ts +2 -0
  16. package/dist/assets/filter-icon.js +7 -0
  17. package/dist/assets/filter-icon.js.map +1 -0
  18. package/dist/assets/filter-icon.png +0 -0
  19. package/dist/assets/search-icon.d.ts +2 -0
  20. package/dist/assets/search-icon.js +7 -0
  21. package/dist/assets/search-icon.js.map +1 -0
  22. package/dist/assets/search-icon.png +0 -0
  23. package/dist/cam-icon-II34AEJC.png +0 -0
  24. package/dist/chevron-icon-7YWXX66A.png +0 -0
  25. package/dist/close-icon-VE65QPHD.png +0 -0
  26. package/dist/comments/AllCommentsModal.d.ts +11 -0
  27. package/dist/comments/AllCommentsModal.js +84 -0
  28. package/dist/comments/AllCommentsModal.js.map +1 -0
  29. package/dist/comments/index.d.ts +9 -0
  30. package/dist/comments/index.js +67 -0
  31. package/dist/comments/index.js.map +1 -0
  32. package/dist/components/ProductCard.d.ts +16 -0
  33. package/dist/components/ProductCard.js +123 -0
  34. package/dist/components/ProductCard.js.map +1 -0
  35. package/dist/components/SearchInput.d.ts +16 -0
  36. package/dist/components/SearchInput.js +186 -0
  37. package/dist/components/SearchInput.js.map +1 -0
  38. package/dist/constants.d.ts +7 -0
  39. package/dist/constants.js +31 -0
  40. package/dist/constants.js.map +1 -0
  41. package/dist/filter-icon-TNVJNKA2.png +0 -0
  42. package/dist/index.d.ts +18 -0
  43. package/dist/index.js +22 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/search/FilterModal.d.ts +28 -0
  46. package/dist/search/FilterModal.js +444 -0
  47. package/dist/search/FilterModal.js.map +1 -0
  48. package/dist/search/index.d.ts +39 -0
  49. package/dist/search/index.js +652 -0
  50. package/dist/search/index.js.map +1 -0
  51. package/dist/search-icon-6SVD6L4Q.png +0 -0
  52. package/dist/tracking.d.ts +11 -0
  53. package/dist/tracking.js +79 -0
  54. package/dist/tracking.js.map +1 -0
  55. package/dist/types.d.ts +14 -0
  56. package/dist/types.js +4 -0
  57. package/dist/types.js.map +1 -0
  58. package/package.json +47 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/search/index.tsx"],"names":["useMemo","useState","useRef","useEffect","useCallback","_a","fetchVisualSearch","React","SafeAreaView","View","SearchInput","ScrollView","Text","TouchableOpacity","Image","ProductCard","ActivityIndicator","FilterModal","StyleSheet"],"mappings":"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","file":"index.js","sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n ActivityIndicator,\n Image,\n Pressable,\n ScrollView,\n StyleSheet,\n Text,\n TextInput,\n TouchableOpacity,\n View,\n ViewStyle,\n} from \"react-native\";\nimport { SafeAreaView } from \"react-native-safe-area-context\";\nimport FilterModal, { AppliedFilters } from \"./FilterModal\";\nimport { ProductItem } from \"../types\";\nimport ProductCard from \"../components/ProductCard\";\nimport { fetchVisualSearch } from \"../constants\";\nimport SearchInput from \"../components/SearchInput\";\n\nconst recentSearches = [\n \"Çıkarılabilir Broş Detaylı Cepli Giy Çık\",\n \"etek\",\n \"mont\",\n \"ayakkabı\",\n \"kürk\",\n];\n\nconst popularSearches = [\"Tunik Takım\", \"Elbise\", \"Ferace\", \"Kaban\", \"Triko\"];\n\nexport type WoopzeSearchTheme = {\n backgroundColor: string;\n inputBackgroundColor: string;\n borderColor: string;\n textPrimaryColor: string;\n textSecondaryColor: string;\n mutedTextColor: string;\n chipBackgroundColor: string;\n buttonTextColor: string;\n accentColor: string;\n dangerColor: string;\n iconTintColor: string;\n cameraButtonBackgroundColor: string;\n};\n\nconst DEFAULT_SEARCH_THEME: WoopzeSearchTheme = {\n backgroundColor: \"#FFFFFF\",\n inputBackgroundColor: \"#efefef\",\n borderColor: \"#1f1f1f\",\n textPrimaryColor: \"#111\",\n textSecondaryColor: \"#333\",\n mutedTextColor: \"#6f6f6f\",\n chipBackgroundColor: \"#efefef\",\n buttonTextColor: \"#6a6a6a\",\n accentColor: \"#000\",\n dangerColor: \"#d00000\",\n iconTintColor: \"#111\",\n cameraButtonBackgroundColor: \"#fff\",\n};\n\ntype ApiHit = {\n id: number;\n name: string;\n photo: string;\n url: string;\n price: number;\n market_price: number;\n discount_price: number;\n model_code: string;\n photo_embedding: boolean;\n ids: string[];\n};\n\ntype ApiResponse = {\n page: number;\n limit: number;\n total: number;\n hits: ApiHit[];\n facetDistribution?: Record<string, Record<string, number>>;\n facetConfig?: Record<\n string,\n {\n type: string;\n label: string;\n order: number;\n visible: boolean;\n }\n >;\n};\n\nconst SEARCH_API_URL = \"https://search.woopze.com/api/mod7/search\";\nconst DEBOUNCE_MS = 800;\nconst EMPTY_FILTERS: AppliedFilters = {\n categories: [],\n facets: {},\n minPrice: null,\n maxPrice: null,\n};\n\nconst formatPrice = (value: number): string =>\n `${value.toLocaleString(\"tr-TR\", { minimumFractionDigits: 2, maximumFractionDigits: 2 })} TL`;\n\nconst parsePriceBounds = (\n facetDistribution?: Record<string, Record<string, number>>,\n) => {\n const entries = Object.keys(facetDistribution?.price || {})\n .map((key) => Number(key))\n .filter((value) => Number.isFinite(value) && value > 0)\n .sort((a, b) => a - b);\n\n if (entries.length === 0) {\n return { min: 0, max: 0 };\n }\n\n return {\n min: Math.floor(entries[0]),\n max: Math.ceil(entries[entries.length - 1]),\n };\n};\n\nconst escapeFilterValue = (value: string) => value.replace(/'/g, \"\\\\'\");\n\nconst buildFilterQuery = (\n applied: AppliedFilters,\n defaultMin: number,\n defaultMax: number,\n) => {\n const clauses: string[] = [];\n\n if (applied.categories.length === 1) {\n clauses.push(`product_group = '${applied.categories[0]}'`);\n } else if (applied.categories.length > 1) {\n const categoryExpression = applied.categories\n .map((category) => `product_group = '${category}'`)\n .join(\" OR \");\n clauses.push(`(${categoryExpression})`);\n }\n\n if (\n defaultMin > 0 &&\n defaultMax > 0 &&\n applied.minPrice !== null &&\n applied.maxPrice !== null &&\n (applied.minPrice !== defaultMin || applied.maxPrice !== defaultMax)\n ) {\n clauses.push(`price>=${Math.floor(applied.minPrice)}`);\n clauses.push(`price<=${Math.ceil(applied.maxPrice)}`);\n }\n\n Object.entries(applied.facets).forEach(([facetKey, values]) => {\n if (!values.length) return;\n\n if (values.length === 1) {\n clauses.push(`${facetKey} = '${escapeFilterValue(values[0])}'`);\n return;\n }\n\n const facetExpression = values\n .map((value) => `${facetKey} = '${escapeFilterValue(value)}'`)\n .join(\" OR \");\n clauses.push(`(${facetExpression})`);\n });\n\n return clauses.join(\" AND \");\n};\n\nconst mapApiProduct = (item: ApiHit): ProductItem => {\n const oldPriceValue =\n item.market_price > item.discount_price ? item.market_price : 0;\n const discountRate =\n oldPriceValue > 0\n ? Math.round(\n ((oldPriceValue - item.discount_price) / oldPriceValue) * 100,\n )\n : 0;\n return {\n id: String(item.id),\n imageUrl: item.photo,\n title: item.name,\n oldPrice: oldPriceValue > 0 ? formatPrice(oldPriceValue) : \"\",\n discount: discountRate > 0 ? `%${discountRate}` : \"\",\n newPrice: formatPrice(item.discount_price || item.price),\n url: item.url,\n model_code: item.model_code,\n photo_embedding: item.photo_embedding,\n ids: item.ids,\n };\n};\n\nexport type WoopzeSearchProps = {\n apiKey: string;\n uid: string;\n originDomain: string;\n onProductPressed?: (product: { id: string; url: string }) => void;\n onClosePress?: () => void;\n hideHeaderCloseIcon?: boolean;\n hideRecentSearchCloseIcon?: boolean;\n theme?: Partial<WoopzeSearchTheme>;\n containerStyle?: ViewStyle;\n route?: { params?: { model_code?: string } };\n};\n\nexport default function WoopzeSearchScreen({\n apiKey,\n uid,\n originDomain,\n onProductPressed,\n onClosePress,\n hideHeaderCloseIcon = false,\n hideRecentSearchCloseIcon = false,\n theme,\n containerStyle,\n route,\n}: WoopzeSearchProps) {\n if (!apiKey || !uid || !originDomain) {\n throw new Error(\n \"Woopze.Search requires `apiKey`, `uid`, and `originDomain` props.\",\n );\n }\n\n const origin = `https://${originDomain}`;\n const mergedTheme = useMemo(\n () => ({ ...DEFAULT_SEARCH_THEME, ...(theme || {}) }),\n [theme],\n );\n const [query, setQuery] = useState(\"\");\n const [debouncedQuery, setDebouncedQuery] = useState(\"\");\n\n const [items, setItems] = useState<ProductItem[]>([]);\n const [page, setPage] = useState(0);\n const [isLoading, setIsLoading] = useState(false);\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n const [hasMore, setHasMore] = useState(false);\n const [totalCount, setTotalCount] = useState(0);\n const [errorText, setErrorText] = useState(\"\");\n const [baseFacetDistribution, setBaseFacetDistribution] = useState<\n Record<string, Record<string, number>>\n >({});\n const [facetConfig, setFacetConfig] = useState<\n Record<\n string,\n {\n type: string;\n label: string;\n order: number;\n visible: boolean;\n }\n >\n >({});\n const [isFilterModalVisible, setIsFilterModalVisible] = useState(false);\n const [defaultMinPrice, setDefaultMinPrice] = useState(0);\n const [defaultMaxPrice, setDefaultMaxPrice] = useState(0);\n const [appliedFiltersState, setAppliedFiltersState] =\n useState<AppliedFilters>(EMPTY_FILTERS);\n const [appliedFilter, setAppliedFilter] = useState(\"\");\n const [activeQuery, setActiveQuery] = useState(\"\");\n const isPaginatingRef = useRef(false);\n const inFlightRequestSignaturesRef = useRef<Set<string>>(new Set());\n\n useEffect(() => {\n const timeout = setTimeout(() => {\n setDebouncedQuery(query.trim());\n }, DEBOUNCE_MS);\n\n return () => clearTimeout(timeout);\n }, [query]);\n\n const searchProducts = useCallback(\n async (nextQuery: string, nextPage: number, filterExpression: string) => {\n const requestSignature = `${nextQuery}::${nextPage}::${filterExpression}`;\n if (inFlightRequestSignaturesRef.current.has(requestSignature)) {\n return;\n }\n\n inFlightRequestSignaturesRef.current.add(requestSignature);\n const isFirstPage = nextPage === 0;\n if (isFirstPage) {\n setIsLoading(true);\n setErrorText(\"\");\n } else {\n setIsLoadingMore(true);\n }\n\n try {\n const response = await fetch(SEARCH_API_URL, {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n \"x-origin-domain\": originDomain,\n \"x-woopze-api-key\": apiKey,\n \"x-woopze-uid\": uid,\n },\n body: JSON.stringify({\n apiKey,\n q: nextQuery,\n page: nextPage,\n filter: filterExpression,\n response_time: null,\n }),\n });\n\n if (!response.ok) {\n throw new Error(`Request failed with status ${response.status}`);\n }\n\n const json = (await response.json()) as ApiResponse;\n const mapped = json.hits.map(mapApiProduct);\n const loadedCount = (nextPage + 1) * json.limit;\n const moreAvailable = loadedCount < json.total;\n\n setItems((prev) => (isFirstPage ? mapped : [...prev, ...mapped]));\n setPage(json.page);\n setTotalCount(json.total);\n setHasMore(moreAvailable);\n if (isFirstPage && !filterExpression) {\n setBaseFacetDistribution(json.facetDistribution || {});\n setFacetConfig(json.facetConfig || {});\n }\n\n if (isFirstPage && !filterExpression) {\n const { min, max } = parsePriceBounds(json.facetDistribution);\n if (min > 0 && max > 0) {\n setDefaultMinPrice(min);\n setDefaultMaxPrice(max);\n }\n }\n } catch (e) {\n console.log(e, \"<--- woopze search error\", \" send body\", {\n apiKey,\n q: nextQuery,\n page: nextPage,\n filter: filterExpression,\n response_time: null,\n });\n setErrorText(\"Arama sırasında bir hata oluştu.\");\n if (isFirstPage) {\n setItems([]);\n }\n setHasMore(false);\n } finally {\n inFlightRequestSignaturesRef.current.delete(requestSignature);\n setIsLoading(false);\n setIsLoadingMore(false);\n isPaginatingRef.current = false;\n }\n },\n [apiKey, origin, originDomain, uid],\n );\n\n useEffect(() => {\n console.log(route, \"<-- route from woopze\");\n if (route?.params?.model_code) {\n console.log(\"visual search working\");\n handleVisualSearch(route.params.model_code);\n }\n }, [route?.params?.model_code]);\n\n useEffect(() => {\n if (!debouncedQuery) {\n if (query.trim().length > 0) {\n return;\n }\n\n setAppliedFilter(\"\");\n setAppliedFiltersState(EMPTY_FILTERS);\n setActiveQuery(\"\");\n setItems([]);\n setPage(0);\n setTotalCount(0);\n setHasMore(false);\n setErrorText(\"\");\n isPaginatingRef.current = false;\n searchProducts(\"\", 0, \"\");\n return;\n }\n\n setAppliedFilter(\"\");\n setAppliedFiltersState(EMPTY_FILTERS);\n setActiveQuery(debouncedQuery);\n setItems([]);\n setPage(0);\n setTotalCount(0);\n setHasMore(false);\n isPaginatingRef.current = false;\n searchProducts(debouncedQuery, 0, \"\");\n }, [debouncedQuery, query, searchProducts]);\n\n const loadNextPage = useCallback(() => {\n if (isLoading || isLoadingMore || !hasMore || isPaginatingRef.current) {\n return;\n }\n\n isPaginatingRef.current = true;\n searchProducts(activeQuery, page + 1, appliedFilter);\n }, [\n activeQuery,\n appliedFilter,\n hasMore,\n isLoading,\n isLoadingMore,\n page,\n searchProducts,\n ]);\n\n const onScroll = useCallback(\n (event: any) => {\n const { layoutMeasurement, contentOffset, contentSize } =\n event.nativeEvent;\n const threshold = 180;\n const isCloseToBottom =\n layoutMeasurement.height + contentOffset.y >=\n contentSize.height - threshold;\n\n if (isCloseToBottom) {\n loadNextPage();\n }\n },\n [loadNextPage],\n );\n\n const hasTypedQuery = query.trim().length > 0;\n const isResultsMode = hasTypedQuery || debouncedQuery.length > 0;\n const showResultsHeader = debouncedQuery.length > 0 && !errorText;\n const showInitialSections =\n !showResultsHeader &&\n query.trim().length === 0 &&\n debouncedQuery.length === 0;\n const applyFilters = (nextFilters: AppliedFilters) => {\n if (!debouncedQuery) return;\n\n const expression = buildFilterQuery(\n nextFilters,\n defaultMinPrice,\n defaultMaxPrice,\n );\n setAppliedFiltersState(nextFilters);\n setAppliedFilter(expression);\n setItems([]);\n setPage(0);\n setHasMore(false);\n isPaginatingRef.current = false;\n searchProducts(debouncedQuery, 0, expression);\n };\n\n const resetFilters = () => {\n setAppliedFiltersState(EMPTY_FILTERS);\n setAppliedFilter(\"\");\n\n if (debouncedQuery) {\n setItems([]);\n setPage(0);\n setHasMore(false);\n isPaginatingRef.current = false;\n searchProducts(debouncedQuery, 0, \"\");\n }\n };\n\n const clearSearch = () => {\n setQuery(\"\");\n setDebouncedQuery(\"\");\n setItems([]);\n setPage(0);\n setTotalCount(0);\n setHasMore(false);\n setErrorText(\"\");\n setBaseFacetDistribution({});\n setFacetConfig({});\n setAppliedFiltersState(EMPTY_FILTERS);\n setDefaultMinPrice(0);\n setDefaultMaxPrice(0);\n };\n\n const handleVisualSearch = async (model_code: string) => {\n try {\n const result = await fetchVisualSearch({ apiKey, model_code });\n if (result?.results?.length) {\n const mapped = result.results.map(mapApiProduct);\n setItems(mapped);\n setPage(1);\n setTotalCount(result.results.length);\n setHasMore(false);\n }\n } catch (e) {\n console.log(e, \"<--- woopze visual search error\", \" send body\", {\n apiKey,\n model_code,\n });\n setErrorText(\"Arama sırasında bir hata oluştu.\");\n setItems([]);\n setHasMore(false);\n }\n };\n\n return (\n <SafeAreaView\n style={[\n styles.outer,\n { backgroundColor: mergedTheme.backgroundColor },\n containerStyle,\n ]}\n >\n <View style={styles.contentWrap}>\n <SearchInput\n query={query}\n hideHeaderCloseIcon={hideHeaderCloseIcon}\n setQuery={setQuery}\n isResultsMode={isResultsMode}\n clearSearch={clearSearch}\n onClosePress={onClosePress}\n mergedTheme={mergedTheme}\n />\n <ScrollView\n contentContainerStyle={[\n styles.content,\n {\n backgroundColor: mergedTheme.backgroundColor,\n paddingBottom: 120,\n },\n ]}\n showsVerticalScrollIndicator={false}\n keyboardShouldPersistTaps=\"handled\"\n keyboardDismissMode=\"none\"\n onScroll={onScroll}\n scrollEventThrottle={16}\n >\n {query ? (\n <>\n <Text\n style={[\n styles.resultsCountText,\n { color: mergedTheme.textPrimaryColor },\n ]}\n >\n \"{query}\" ile ilgili{\" \"}\n <Text style={styles.resultsCountBold}>{totalCount}</Text> ürün\n listelendi.\n </Text>\n <TouchableOpacity\n activeOpacity={0.7}\n style={styles.filterRow}\n onPress={() => setIsFilterModalVisible(true)}\n >\n <Text\n style={[\n styles.filterText,\n { color: mergedTheme.textPrimaryColor },\n ]}\n >\n Filtreyi Göster\n </Text>\n <Image\n source={require(\"../assets/filter-icon.png\")}\n style={[\n styles.filterIcon,\n { tintColor: mergedTheme.iconTintColor },\n ]}\n />\n </TouchableOpacity>\n </>\n ) : null}\n {showInitialSections ? (\n <>\n <Text\n style={[\n styles.sectionTitle,\n { color: mergedTheme.accentColor },\n ]}\n >\n Son Aramalar\n </Text>\n <View style={styles.chipWrap}>\n {recentSearches.map((label) => (\n <TouchableOpacity\n key={label}\n activeOpacity={0.7}\n onPress={() => setQuery(label)}\n style={[\n styles.chip,\n { backgroundColor: mergedTheme.chipBackgroundColor },\n ]}\n >\n <Text\n numberOfLines={1}\n style={[\n styles.chipText,\n { color: mergedTheme.textSecondaryColor },\n ]}\n >\n {label}\n </Text>\n {!hideRecentSearchCloseIcon ? (\n <TouchableOpacity style={styles.chipCloseContainer}>\n <Image\n source={require(\"../assets/close-icon.png\")}\n style={[\n styles.chipClose,\n { tintColor: mergedTheme.iconTintColor },\n ]}\n />\n </TouchableOpacity>\n ) : null}\n </TouchableOpacity>\n ))}\n </View>\n\n <Text\n style={[\n styles.sectionTitle,\n { color: mergedTheme.accentColor },\n ]}\n >\n Popüler Aramalar\n </Text>\n <View style={styles.popularWrap}>\n {popularSearches.map((item) => (\n <TouchableOpacity\n activeOpacity={0.7}\n onPress={() => setQuery(item)}\n key={item}\n >\n <Text\n style={[\n styles.popularText,\n { color: mergedTheme.textSecondaryColor },\n ]}\n >\n {item}\n </Text>\n </TouchableOpacity>\n ))}\n </View>\n </>\n ) : null}\n\n {items.length > 0 ? (\n <View style={styles.grid}>\n {items.map((item) => (\n <ProductCard\n key={item.id}\n item={item}\n onProductPress={(product) => onProductPressed?.(product)}\n onVisualSearchPress={() =>\n handleVisualSearch(item.model_code)\n }\n theme={mergedTheme}\n />\n ))}\n </View>\n ) : null}\n {!isLoading &&\n !errorText &&\n debouncedQuery.length > 0 &&\n items.length === 0 ? (\n <Text\n style={[styles.emptyText, { color: mergedTheme.mutedTextColor }]}\n >\n Sonuç bulunamadı.\n </Text>\n ) : null}\n {isLoadingMore ? (\n <View style={styles.statusWrap}>\n <ActivityIndicator size=\"small\" color={mergedTheme.accentColor} />\n </View>\n ) : null}\n {errorText ? (\n <Text\n style={[styles.errorText, { color: mergedTheme.dangerColor }]}\n >\n {errorText}\n </Text>\n ) : null}\n </ScrollView>\n </View>\n\n <FilterModal\n visible={isFilterModalVisible}\n onClose={() => setIsFilterModalVisible(false)}\n facetDistribution={baseFacetDistribution}\n facetConfig={facetConfig}\n defaultMinPrice={defaultMinPrice}\n defaultMaxPrice={defaultMaxPrice}\n appliedFilters={appliedFiltersState}\n onApply={applyFilters}\n onReset={resetFilters}\n />\n </SafeAreaView>\n );\n}\n\nconst styles = StyleSheet.create({\n outer: {\n flex: 1,\n backgroundColor: \"#FFFFFF\",\n padding: 16,\n },\n content: {\n backgroundColor: \"#FFFFFF\",\n minHeight: \"100%\",\n },\n contentWrap: {\n flex: 1,\n position: \"relative\",\n },\n sectionTitle: {\n marginTop: 28,\n marginBottom: 12,\n fontSize: 12,\n fontWeight: \"700\",\n color: \"#000\",\n },\n chipWrap: {\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n gap: 10,\n },\n chip: {\n flexDirection: \"row\",\n alignItems: \"center\",\n backgroundColor: \"#efefef\",\n borderRadius: 3,\n paddingLeft: 12,\n paddingRight: 8,\n paddingVertical: 7,\n maxWidth: \"100%\",\n },\n chipText: {\n fontSize: 13,\n fontWeight: \"500\",\n color: \"#333\",\n marginRight: 8,\n },\n chipCloseContainer: {\n width: 16,\n height: 16,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n chipClose: {\n width: 8,\n height: 8,\n },\n popularWrap: {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 22,\n marginBottom: 20,\n },\n popularText: {\n fontSize: 12,\n color: \"#333\",\n fontWeight: \"500\",\n },\n resultsCountText: {\n marginTop: 56,\n marginBottom: 18,\n fontSize: 15,\n color: \"#111\",\n },\n resultsCountBold: {\n fontWeight: \"700\",\n },\n filterRow: {\n flexDirection: \"row\",\n alignItems: \"center\",\n marginBottom: 22,\n },\n filterText: {\n fontSize: 15,\n color: \"#111\",\n fontWeight: \"600\",\n marginRight: 8,\n },\n filterIcon: {\n width: 18,\n height: 18,\n },\n grid: {\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n justifyContent: \"space-between\",\n rowGap: 28,\n },\n statusWrap: {\n paddingVertical: 16,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n errorText: {\n color: \"#d00000\",\n textAlign: \"center\",\n fontSize: 12,\n marginTop: 12,\n },\n emptyText: {\n color: \"#666\",\n textAlign: \"center\",\n fontSize: 12,\n marginTop: 16,\n },\n});\n"]}
Binary file
@@ -0,0 +1,11 @@
1
+ type WoopzeEventBody = Record<string, unknown>;
2
+ type WoopzeInitialize = {
3
+ apiKey: string;
4
+ uid: string;
5
+ originDomain: string;
6
+ headers?: Record<string, string>;
7
+ };
8
+ declare function initializeFunc(config: WoopzeInitialize): void;
9
+ declare function trackEvent(eventName: string, eventBody?: WoopzeEventBody, moduleName?: string): Promise<any>;
10
+
11
+ export { type WoopzeEventBody, type WoopzeInitialize, initializeFunc, trackEvent };
@@ -0,0 +1,79 @@
1
+ 'use strict';
2
+
3
+ var constants = require('./constants');
4
+
5
+ let trackConfig = {};
6
+ function initializeFunc(config) {
7
+ var _a;
8
+ const nextOriginDomain = (_a = config.originDomain) != null ? _a : trackConfig.originDomain;
9
+ trackConfig = {
10
+ apiKey: config.apiKey,
11
+ uid: config.uid,
12
+ originDomain: nextOriginDomain,
13
+ headers: {
14
+ ...trackConfig.headers || {},
15
+ ...config.headers || {}
16
+ }
17
+ };
18
+ }
19
+ async function trackEvent(eventName, eventBody = {}, moduleName = "custom") {
20
+ if (!eventName || !eventName.trim()) {
21
+ throw new Error("`eventName` is required for Woopze.track");
22
+ }
23
+ if (!trackConfig.apiKey) {
24
+ throw new Error(
25
+ "`apiKey` is required. Call Woopze.configure({ apiKey, uid, originDomain }) before Woopze.track."
26
+ );
27
+ }
28
+ if (!trackConfig.uid) {
29
+ throw new Error(
30
+ "`uid` is required. Call Woopze.configure({ apiKey, uid, originDomain }) before Woopze.track."
31
+ );
32
+ }
33
+ if (!trackConfig.originDomain) {
34
+ throw new Error(
35
+ "`originDomain` is required. Call Woopze.configure({ apiKey, uid, originDomain }) before Woopze.track."
36
+ );
37
+ }
38
+ const originDomain = trackConfig.originDomain;
39
+ const apiKey = trackConfig.apiKey;
40
+ const uid = trackConfig.uid;
41
+ const headers = {
42
+ accept: "*/*",
43
+ "content-type": "application/json",
44
+ "x-origin-domain": originDomain,
45
+ ...trackConfig.headers || {}
46
+ };
47
+ headers["x-woopze-api-key"] = apiKey;
48
+ headers["x-woopze-uid"] = uid;
49
+ console.log(`Sending request for woopze tracking headers: `, headers);
50
+ console.log(`Sending request for woopze tracking body: `, {
51
+ module: moduleName,
52
+ event: eventName,
53
+ data: eventBody
54
+ });
55
+ const response = await fetch(constants.TRACK_ENDPOINT, {
56
+ method: "POST",
57
+ headers,
58
+ body: JSON.stringify({
59
+ module: moduleName,
60
+ event: eventName,
61
+ data: eventBody
62
+ })
63
+ });
64
+ const responseBody = await response.json();
65
+ console.log(
66
+ `Received response from woopze tracking body: `,
67
+ response.status,
68
+ responseBody
69
+ );
70
+ if (!response.ok) {
71
+ throw new Error(`Woopze.track failed with status ${response.status}`);
72
+ }
73
+ return responseBody;
74
+ }
75
+
76
+ exports.initializeFunc = initializeFunc;
77
+ exports.trackEvent = trackEvent;
78
+ //# sourceMappingURL=tracking.js.map
79
+ //# sourceMappingURL=tracking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tracking.ts"],"names":["TRACK_ENDPOINT"],"mappings":";;;;AAaA,IAAI,cAAwC,EAAC;AAEtC,SAAS,eAAe,MAAA,EAA0B;AAfzD,EAAA,IAAA,EAAA;AAgBE,EAAA,MAAM,gBAAA,GAAA,CAAmB,EAAA,GAAA,MAAA,CAAO,YAAA,KAAP,IAAA,GAAA,EAAA,GAAuB,WAAA,CAAY,YAAA;AAE5D,EAAA,WAAA,GAAc;AAAA,IACZ,QAAQ,MAAA,CAAO,MAAA;AAAA,IACf,KAAK,MAAA,CAAO,GAAA;AAAA,IACZ,YAAA,EAAc,gBAAA;AAAA,IACd,OAAA,EAAS;AAAA,MACP,GAAI,WAAA,CAAY,OAAA,IAAW,EAAC;AAAA,MAC5B,GAAI,MAAA,CAAO,OAAA,IAAW;AAAC;AACzB,GACF;AACF;AAEA,eAAsB,WACpB,SAAA,EACA,SAAA,GAA6B,EAAC,EAC9B,aAAa,QAAA,EACb;AACA,EAAA,IAAI,CAAC,SAAA,IAAa,CAAC,SAAA,CAAU,MAAK,EAAG;AACnC,IAAA,MAAM,IAAI,MAAM,0CAA0C,CAAA;AAAA,EAC5D;AACA,EAAA,IAAI,CAAC,YAAY,MAAA,EAAQ;AACvB,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,IAAI,CAAC,YAAY,GAAA,EAAK;AACpB,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,IAAI,CAAC,YAAY,YAAA,EAAc;AAC7B,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,MAAM,eAAe,WAAA,CAAY,YAAA;AACjC,EAAA,MAAM,SAAS,WAAA,CAAY,MAAA;AAC3B,EAAA,MAAM,MAAM,WAAA,CAAY,GAAA;AAExB,EAAA,MAAM,OAAA,GAAkC;AAAA,IACtC,MAAA,EAAQ,KAAA;AAAA,IACR,cAAA,EAAgB,kBAAA;AAAA,IAChB,iBAAA,EAAmB,YAAA;AAAA,IACnB,GAAI,WAAA,CAAY,OAAA,IAAW;AAAC,GAC9B;AAEA,EAAA,OAAA,CAAQ,kBAAkB,CAAA,GAAI,MAAA;AAC9B,EAAA,OAAA,CAAQ,cAAc,CAAA,GAAI,GAAA;AAE1B,EAAA,OAAA,CAAQ,GAAA,CAAI,iDAAiD,OAAO,CAAA;AACpE,EAAA,OAAA,CAAQ,IAAI,CAAA,0CAAA,CAAA,EAA8C;AAAA,IACxD,MAAA,EAAQ,UAAA;AAAA,IACR,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM;AAAA,GACP,CAAA;AAED,EAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAMA,wBAAA,EAAgB;AAAA,IAC3C,MAAA,EAAQ,MAAA;AAAA,IACR,OAAA;AAAA,IACA,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,MACnB,MAAA,EAAQ,UAAA;AAAA,MACR,KAAA,EAAO,SAAA;AAAA,MACP,IAAA,EAAM;AAAA,KACP;AAAA,GACF,CAAA;AACD,EAAA,MAAM,YAAA,GAAe,MAAM,QAAA,CAAS,IAAA,EAAK;AACzC,EAAA,OAAA,CAAQ,GAAA;AAAA,IACN,CAAA,6CAAA,CAAA;AAAA,IACA,QAAA,CAAS,MAAA;AAAA,IACT;AAAA,GACF;AAEA,EAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,gCAAA,EAAmC,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,EACtE;AAEA,EAAA,OAAO,YAAA;AACT","file":"tracking.js","sourcesContent":["import { TRACK_ENDPOINT } from \"./constants\";\n\nexport type WoopzeEventBody = Record<string, unknown>;\n\nexport type WoopzeInitialize = {\n apiKey: string;\n uid: string;\n originDomain: string;\n headers?: Record<string, string>;\n};\n\ntype WoopzeTrackRuntimeConfig = Partial<WoopzeInitialize>;\n\nlet trackConfig: WoopzeTrackRuntimeConfig = {};\n\nexport function initializeFunc(config: WoopzeInitialize) {\n const nextOriginDomain = config.originDomain ?? trackConfig.originDomain;\n\n trackConfig = {\n apiKey: config.apiKey,\n uid: config.uid,\n originDomain: nextOriginDomain,\n headers: {\n ...(trackConfig.headers || {}),\n ...(config.headers || {}),\n },\n };\n}\n\nexport async function trackEvent(\n eventName: string,\n eventBody: WoopzeEventBody = {},\n moduleName = \"custom\",\n) {\n if (!eventName || !eventName.trim()) {\n throw new Error(\"`eventName` is required for Woopze.track\");\n }\n if (!trackConfig.apiKey) {\n throw new Error(\n \"`apiKey` is required. Call Woopze.configure({ apiKey, uid, originDomain }) before Woopze.track.\",\n );\n }\n if (!trackConfig.uid) {\n throw new Error(\n \"`uid` is required. Call Woopze.configure({ apiKey, uid, originDomain }) before Woopze.track.\",\n );\n }\n if (!trackConfig.originDomain) {\n throw new Error(\n \"`originDomain` is required. Call Woopze.configure({ apiKey, uid, originDomain }) before Woopze.track.\",\n );\n }\n const originDomain = trackConfig.originDomain;\n const apiKey = trackConfig.apiKey;\n const uid = trackConfig.uid;\n\n const headers: Record<string, string> = {\n accept: \"*/*\",\n \"content-type\": \"application/json\",\n \"x-origin-domain\": originDomain,\n ...(trackConfig.headers || {}),\n };\n\n headers[\"x-woopze-api-key\"] = apiKey;\n headers[\"x-woopze-uid\"] = uid;\n\n console.log(`Sending request for woopze tracking headers: `, headers);\n console.log(`Sending request for woopze tracking body: `, {\n module: moduleName,\n event: eventName,\n data: eventBody,\n });\n\n const response = await fetch(TRACK_ENDPOINT, {\n method: \"POST\",\n headers,\n body: JSON.stringify({\n module: moduleName,\n event: eventName,\n data: eventBody,\n }),\n });\n const responseBody = await response.json();\n console.log(\n `Received response from woopze tracking body: `,\n response.status,\n responseBody,\n );\n\n if (!response.ok) {\n throw new Error(`Woopze.track failed with status ${response.status}`);\n }\n\n return responseBody;\n}\n"]}
@@ -0,0 +1,14 @@
1
+ type ProductItem = {
2
+ id: string;
3
+ imageUrl: string;
4
+ title: string;
5
+ oldPrice: string;
6
+ discount: string;
7
+ newPrice: string;
8
+ url: string;
9
+ model_code: string;
10
+ photo_embedding: boolean;
11
+ ids: string[];
12
+ };
13
+
14
+ export type { ProductItem };
package/dist/types.js ADDED
@@ -0,0 +1,4 @@
1
+ 'use strict';
2
+
3
+ //# sourceMappingURL=types.js.map
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"types.js"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@woopze/react-native-sdk",
3
+ "version": "0.1.0",
4
+ "description": "React Native SDK for Woopze services.",
5
+ "license": "MIT",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "files": [
9
+ "dist",
10
+ "README.md",
11
+ "LICENSE"
12
+ ],
13
+ "sideEffects": false,
14
+ "scripts": {
15
+ "clean": "rimraf dist",
16
+ "copy:assets": "mkdir -p dist/assets && cp -R src/assets/. dist/assets/",
17
+ "build": "npm run clean && tsup && npm run copy:assets",
18
+ "dev": "npm run copy:assets && tsup --watch",
19
+ "local": "npm run build && yalc publish --push",
20
+ "typecheck": "tsc --noEmit",
21
+ "prepublishOnly": "npm run build"
22
+ },
23
+ "keywords": [
24
+ "react-native",
25
+ "sdk",
26
+ "woopze"
27
+ ],
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "https://github.com/woopze/react-native-sdk.git"
31
+ },
32
+ "engines": {
33
+ "node": ">=18"
34
+ },
35
+ "peerDependencies": {
36
+ "@miblanchard/react-native-slider": ">=2.3.1",
37
+ "react": ">=18",
38
+ "react-native": ">=0.72",
39
+ "react-native-safe-area-context": ">=4.8.2"
40
+ },
41
+ "devDependencies": {
42
+ "@types/react": "^19.2.0",
43
+ "rimraf": "^6.0.1",
44
+ "tsup": "^8.5.0",
45
+ "typescript": "^5.8.2"
46
+ }
47
+ }