@tapcart/mobile-components 0.7.26 → 0.7.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/contexts/translationContext.d.ts +9 -0
- package/dist/components/contexts/translationContext.d.ts.map +1 -0
- package/dist/components/contexts/translationContext.js +5 -0
- package/dist/components/hooks/use-destination.d.ts +23 -0
- package/dist/components/hooks/use-destination.d.ts.map +1 -0
- package/dist/components/hooks/use-destination.js +13 -0
- package/dist/components/hooks/use-products.d.ts +2 -0
- package/dist/components/hooks/use-products.d.ts.map +1 -1
- package/dist/components/hooks/use-products.js +40 -5
- package/dist/components/ui/use-tap.d.ts +8 -0
- package/dist/components/ui/use-tap.d.ts.map +1 -0
- package/dist/components/ui/use-tap.js +100 -0
- package/dist/components/ui/video copy.d.ts +18 -0
- package/dist/components/ui/video copy.d.ts.map +1 -0
- package/dist/components/ui/video copy.js +70 -0
- package/dist/components/ui/video.v2.d.ts +18 -0
- package/dist/components/ui/video.v2.d.ts.map +1 -0
- package/dist/components/ui/video.v2.js +70 -0
- package/dist/index copy.d.ts +59 -0
- package/dist/index copy.d.ts.map +1 -0
- package/dist/index copy.js +59 -0
- package/dist/lib/utils/destination.d.ts +17 -0
- package/dist/lib/utils/destination.d.ts.map +1 -0
- package/dist/lib/utils/destination.js +15 -0
- package/dist/lib/utils/id.d.ts +5 -0
- package/dist/lib/utils/id.d.ts.map +1 -0
- package/dist/lib/utils/id.js +29 -0
- package/dist/lib/utils/index.d.ts +18 -0
- package/dist/lib/utils/index.d.ts.map +1 -0
- package/dist/lib/utils/index.js +55 -0
- package/dist/lib/utils/misc.d.ts +1 -0
- package/dist/lib/utils/misc.d.ts.map +1 -0
- package/dist/lib/utils/style.d.ts +154 -0
- package/dist/lib/utils/style.d.ts.map +1 -0
- package/dist/lib/utils/style.js +148 -0
- package/dist/lib/utils.deprecated.d.ts +181 -0
- package/dist/lib/utils.deprecated.d.ts.map +1 -0
- package/dist/lib/utils.deprecated.js +222 -0
- package/dist/v2.d.ts +59 -0
- package/dist/v2.d.ts.map +1 -0
- package/dist/v2.js +59 -0
- package/package.json +1 -1
- package/dist/jest.config.d.ts +0 -1
- package/dist/jest.config.d.ts.map +0 -1
- package/dist/lib/__tests__/utils.test.d.ts +0 -1
- package/dist/lib/__tests__/utils.test.d.ts.map +0 -1
- package/dist/lib/__tests__/utils.test.js +0 -1
- /package/dist/{jest.config.js → lib/utils/misc.js} +0 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
type TranslationMap = Record<string, string>;
|
|
3
|
+
export declare const TranslationProvider: ({ translations, children, }: {
|
|
4
|
+
translations: TranslationMap;
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare const useTranslation: () => TranslationMap;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=translationContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translationContext.d.ts","sourceRoot":"","sources":["../../../components/contexts/translationContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAA;AAExD,KAAK,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAI5C,eAAO,MAAM,mBAAmB;kBAIhB,cAAc;cAClB,MAAM,SAAS;6CAK1B,CAAA;AAED,eAAO,MAAM,cAAc,sBAAuC,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useContext } from "react";
|
|
3
|
+
const TranslationContext = createContext({});
|
|
4
|
+
export const TranslationProvider = ({ translations, children, }) => (_jsx(TranslationContext.Provider, Object.assign({ value: translations }, { children: children })));
|
|
5
|
+
export const useTranslation = () => useContext(TranslationContext);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
type OpenProductFn = (arg: {
|
|
2
|
+
productId: string;
|
|
3
|
+
}) => void;
|
|
4
|
+
type OpenCollectionFn = (arg: {
|
|
5
|
+
collectionId: string;
|
|
6
|
+
}) => void;
|
|
7
|
+
type OpenScreenFn = (arg: {
|
|
8
|
+
destination: {
|
|
9
|
+
type: "internal" | "web";
|
|
10
|
+
url: string;
|
|
11
|
+
};
|
|
12
|
+
}) => void;
|
|
13
|
+
type DestinationType = "product" | "collection" | "url" | "app-screen";
|
|
14
|
+
interface UseDestinationProps {
|
|
15
|
+
openProduct: OpenProductFn;
|
|
16
|
+
openCollection: OpenCollectionFn;
|
|
17
|
+
openScreen: OpenScreenFn;
|
|
18
|
+
type: DestinationType;
|
|
19
|
+
location: string;
|
|
20
|
+
}
|
|
21
|
+
export declare const useDestination: ({ openProduct, openCollection, openScreen, type, location, }: UseDestinationProps) => (() => void);
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=use-destination.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-destination.d.ts","sourceRoot":"","sources":["../../../components/hooks/use-destination.ts"],"names":[],"mappings":"AAEA,KAAK,aAAa,GAAG,CAAC,GAAG,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,CAAA;AACzD,KAAK,gBAAgB,GAAG,CAAC,GAAG,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,CAAA;AAC/D,KAAK,YAAY,GAAG,CAAC,GAAG,EAAE;IACxB,WAAW,EAAE;QAAE,IAAI,EAAE,UAAU,GAAG,KAAK,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CACvD,KAAK,IAAI,CAAA;AAEV,KAAK,eAAe,GAAG,SAAS,GAAG,YAAY,GAAG,KAAK,GAAG,YAAY,CAAA;AAEtE,UAAU,mBAAmB;IAC3B,WAAW,EAAE,aAAa,CAAA;IAC1B,cAAc,EAAE,gBAAgB,CAAA;IAChC,UAAU,EAAE,YAAY,CAAA;IACxB,IAAI,EAAE,eAAe,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,eAAO,MAAM,cAAc,iEAMxB,mBAAmB,KAAG,CAAC,MAAM,IAAI,CAYnC,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
export const useDestination = ({ openProduct, openCollection, openScreen, type, location, }) => {
|
|
3
|
+
switch (type) {
|
|
4
|
+
case "product":
|
|
5
|
+
return () => openProduct({ productId: location });
|
|
6
|
+
case "collection":
|
|
7
|
+
return () => openCollection({ collectionId: location });
|
|
8
|
+
case "url":
|
|
9
|
+
return () => openScreen({ destination: { type: "web", url: location } });
|
|
10
|
+
case "app-screen":
|
|
11
|
+
return () => openScreen({ destination: { type: "internal", url: location } });
|
|
12
|
+
}
|
|
13
|
+
};
|
|
@@ -12,6 +12,8 @@ type UseProductsProps = {
|
|
|
12
12
|
queryVariables?: Record<string, any>;
|
|
13
13
|
fetcher?: (url: string, body?: Record<string, any> | null) => Promise<any>;
|
|
14
14
|
metafields?: MetafieldInput[];
|
|
15
|
+
mock?: boolean;
|
|
16
|
+
onlyAvailableProducts?: boolean;
|
|
15
17
|
};
|
|
16
18
|
type UseProductsReturn = {
|
|
17
19
|
products: Product[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-products.d.ts","sourceRoot":"","sources":["../../../components/hooks/use-products.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"use-products.d.ts","sourceRoot":"","sources":["../../../components/hooks/use-products.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAI1C,KAAK,GAAG,GAAG,MAAM,CAAA;AACjB,KAAK,cAAc,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAA;AACxD,KAAK,gBAAgB,GAAG;IACtB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,OAAO,EAAE,GAAG,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACpC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IAC1E,UAAU,CAAC,EAAE,cAAc,EAAE,CAAA;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AACD,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,KAAK,EAAE,GAAG,CAAA;IACV,SAAS,EAAE,OAAO,CAAA;CACnB,CAAA;AA8BD,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAAG,iBAAiB,CAwF7E"}
|
|
@@ -1,11 +1,43 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import useSWR from "swr";
|
|
3
3
|
import { getProductGidsFromIds } from "../../lib/utils";
|
|
4
|
+
import { useCollection } from "./use-collection";
|
|
5
|
+
const isUseProductsProps = (props) => {
|
|
6
|
+
return Boolean(props);
|
|
7
|
+
};
|
|
8
|
+
const formatProductData = ({ data, onlyAvailableProducts = false, }) => {
|
|
9
|
+
const isProductsObject = (value) => {
|
|
10
|
+
return value && "products" in value;
|
|
11
|
+
};
|
|
12
|
+
const products = isProductsObject(data) ? data.products : data || [];
|
|
13
|
+
return onlyAvailableProducts
|
|
14
|
+
? products === null || products === void 0 ? void 0 : products.filter((p) => {
|
|
15
|
+
if (!onlyAvailableProducts)
|
|
16
|
+
return true;
|
|
17
|
+
return p.availableForSale;
|
|
18
|
+
})
|
|
19
|
+
: products;
|
|
20
|
+
};
|
|
4
21
|
export function useProducts(props) {
|
|
22
|
+
var _a, _b, _c;
|
|
5
23
|
let url = null;
|
|
6
24
|
let body = null;
|
|
7
|
-
|
|
8
|
-
|
|
25
|
+
const shouldMockProducts = Boolean(props === null || props === void 0 ? void 0 : props.mock);
|
|
26
|
+
const { collections } = useCollection({
|
|
27
|
+
apiUrl: (props === null || props === void 0 ? void 0 : props.baseURL) || "",
|
|
28
|
+
appId: ((_a = props === null || props === void 0 ? void 0 : props.queryVariables) === null || _a === void 0 ? void 0 : _a.appId) || "",
|
|
29
|
+
language: ((_b = props === null || props === void 0 ? void 0 : props.queryVariables) === null || _b === void 0 ? void 0 : _b.language) || "en",
|
|
30
|
+
collectionId: undefined,
|
|
31
|
+
getCollections: shouldMockProducts,
|
|
32
|
+
limit: 1,
|
|
33
|
+
});
|
|
34
|
+
if (isUseProductsProps(props)) {
|
|
35
|
+
let { baseURL, productIds, productHandles, metafields, collection, queryVariables, } = props;
|
|
36
|
+
if (shouldMockProducts) {
|
|
37
|
+
const collectionToFetchID = (_c = collections[0]) === null || _c === void 0 ? void 0 : _c.id;
|
|
38
|
+
queryVariables = Object.assign(Object.assign({}, queryVariables), { collectionId: collectionToFetchID });
|
|
39
|
+
collection = collectionToFetchID;
|
|
40
|
+
}
|
|
9
41
|
let queryParams = new URLSearchParams();
|
|
10
42
|
if ((productIds === null || productIds === void 0 ? void 0 : productIds.length) > 0) {
|
|
11
43
|
queryParams.set("ids", getProductGidsFromIds(productIds).join(","));
|
|
@@ -39,10 +71,13 @@ export function useProducts(props) {
|
|
|
39
71
|
body: body ? JSON.stringify(body) : undefined,
|
|
40
72
|
}).then((res) => res.json());
|
|
41
73
|
const fetcher = (props === null || props === void 0 ? void 0 : props.fetcher) || defaultFetcher;
|
|
42
|
-
const { data, error } = useSWR(url ? [url, body] : null, ([url, body]) => fetcher(url, body));
|
|
74
|
+
const { data, error, isLoading } = useSWR(url ? [url, body] : null, ([url, body]) => fetcher(url, body));
|
|
43
75
|
return {
|
|
44
|
-
products: (
|
|
76
|
+
products: formatProductData({
|
|
77
|
+
data,
|
|
78
|
+
onlyAvailableProducts: (props === null || props === void 0 ? void 0 : props.mock) && (props === null || props === void 0 ? void 0 : props.onlyAvailableProducts),
|
|
79
|
+
}),
|
|
45
80
|
error,
|
|
46
|
-
isLoading
|
|
81
|
+
isLoading,
|
|
47
82
|
};
|
|
48
83
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
declare const useTap: (tapThreshold?: number) => {
|
|
3
|
+
onTap: (handler: (event: any) => void) => (event: any) => void;
|
|
4
|
+
isPressed: boolean;
|
|
5
|
+
ref: React.MutableRefObject<null>;
|
|
6
|
+
};
|
|
7
|
+
export { useTap };
|
|
8
|
+
//# sourceMappingURL=use-tap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-tap.d.ts","sourceRoot":"","sources":["../../../components/ui/use-tap.ts"],"names":[],"mappings":"AACA,OAAO,KAAmD,MAAM,OAAO,CAAA;AAuFvE,QAAA,MAAM,MAAM;6BAuBkC,GAAG,KAAK,IAAI,aACvC,GAAG;;;CAerB,CAAA;AAED,OAAO,EAAE,MAAM,EAAE,CAAA"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useState, useEffect, useCallback, useRef } from "react";
|
|
3
|
+
// Shared manager for all instances of the hook
|
|
4
|
+
const tapManager = (() => {
|
|
5
|
+
const elements = new Map();
|
|
6
|
+
let isListening = false;
|
|
7
|
+
const startListening = () => {
|
|
8
|
+
if (isListening)
|
|
9
|
+
return;
|
|
10
|
+
const handleTouchStart = (e) => {
|
|
11
|
+
const touch = e.touches[0];
|
|
12
|
+
elements.forEach((data, el) => {
|
|
13
|
+
if (el.contains(touch.target)) {
|
|
14
|
+
data.touchStarted = true;
|
|
15
|
+
data.touchMoved = false;
|
|
16
|
+
data.startPosition = { x: touch.clientX, y: touch.clientY };
|
|
17
|
+
// Don't set isPressed here, wait to determine if it's a tap or drag
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
const handleTouchMove = (e) => {
|
|
22
|
+
const touch = e.touches[0];
|
|
23
|
+
elements.forEach((data, el) => {
|
|
24
|
+
if (data.touchStarted) {
|
|
25
|
+
const deltaX = Math.abs(touch.clientX - data.startPosition.x);
|
|
26
|
+
const deltaY = Math.abs(touch.clientY - data.startPosition.y);
|
|
27
|
+
if (deltaX > data.tapThreshold || deltaY > data.tapThreshold) {
|
|
28
|
+
data.touchMoved = true;
|
|
29
|
+
data.setIsPressed(false);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
const handleTouchEnd = () => {
|
|
35
|
+
elements.forEach((data) => {
|
|
36
|
+
if (data.touchStarted) {
|
|
37
|
+
data.touchStarted = false;
|
|
38
|
+
if (!data.touchMoved) {
|
|
39
|
+
// It's a tap, set isPressed briefly
|
|
40
|
+
data.setIsPressed(true);
|
|
41
|
+
setTimeout(() => data.setIsPressed(false), 100);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
document.addEventListener("touchstart", (e) => handleTouchStart(e), { passive: true });
|
|
47
|
+
document.addEventListener("touchmove", (e) => handleTouchMove(e), { passive: true });
|
|
48
|
+
document.addEventListener("touchend", () => handleTouchEnd(), {
|
|
49
|
+
passive: true,
|
|
50
|
+
});
|
|
51
|
+
isListening = true;
|
|
52
|
+
};
|
|
53
|
+
return {
|
|
54
|
+
register: (el, data) => {
|
|
55
|
+
elements.set(el, data);
|
|
56
|
+
startListening();
|
|
57
|
+
},
|
|
58
|
+
unregister: (el) => {
|
|
59
|
+
elements.delete(el);
|
|
60
|
+
},
|
|
61
|
+
elements,
|
|
62
|
+
};
|
|
63
|
+
})();
|
|
64
|
+
const useTap = (tapThreshold = 10) => {
|
|
65
|
+
const [isPressed, setIsPressed] = useState(false);
|
|
66
|
+
const elementRef = useRef(null);
|
|
67
|
+
useEffect(() => {
|
|
68
|
+
const element = elementRef.current;
|
|
69
|
+
if (!element)
|
|
70
|
+
return;
|
|
71
|
+
const data = {
|
|
72
|
+
touchStarted: false,
|
|
73
|
+
touchMoved: false,
|
|
74
|
+
startPosition: { x: 0, y: 0 },
|
|
75
|
+
setIsPressed,
|
|
76
|
+
tapThreshold,
|
|
77
|
+
};
|
|
78
|
+
tapManager.register(element, data);
|
|
79
|
+
return () => {
|
|
80
|
+
tapManager.unregister(element);
|
|
81
|
+
};
|
|
82
|
+
}, [tapThreshold]);
|
|
83
|
+
const onTap = useCallback((handler) => {
|
|
84
|
+
return (event) => {
|
|
85
|
+
const data = tapManager.elements.get(elementRef.current);
|
|
86
|
+
if (!data)
|
|
87
|
+
return;
|
|
88
|
+
if (event.type === "touchend" && !data.touchMoved) {
|
|
89
|
+
handler(event);
|
|
90
|
+
}
|
|
91
|
+
else if (event.type === "click" && !data.touchStarted) {
|
|
92
|
+
handler(event);
|
|
93
|
+
setIsPressed(true);
|
|
94
|
+
setTimeout(() => setIsPressed(false), 100);
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
}, []);
|
|
98
|
+
return { onTap, isPressed, ref: elementRef };
|
|
99
|
+
};
|
|
100
|
+
export { useTap };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
type VideoAttributes = {
|
|
3
|
+
enabled: boolean;
|
|
4
|
+
aspectRatio: string;
|
|
5
|
+
videoFit: "fill" | "fit";
|
|
6
|
+
overlayOpacity: number;
|
|
7
|
+
autoplay: boolean;
|
|
8
|
+
videoSound: boolean;
|
|
9
|
+
};
|
|
10
|
+
interface VideoProps extends React.VideoHTMLAttributes<HTMLVideoElement> {
|
|
11
|
+
src: string;
|
|
12
|
+
videoAttributes: VideoAttributes;
|
|
13
|
+
naturalAspectRatio?: string;
|
|
14
|
+
className?: string;
|
|
15
|
+
}
|
|
16
|
+
declare const Video: ({ src, videoAttributes, naturalAspectRatio, className, ...props }: VideoProps) => import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export { Video };
|
|
18
|
+
//# sourceMappingURL=video%20copy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video copy.d.ts","sourceRoot":"","sources":["../../../components/ui/video copy.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAW9B,KAAK,eAAe,GAAG;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,UAAU,UAAW,SAAQ,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;IACtE,GAAG,EAAE,MAAM,CAAA;IACX,eAAe,EAAE,eAAe,CAAA;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,QAAA,MAAM,KAAK,sEAMR,UAAU,4CA0DZ,CAAA;AAED,OAAO,EAAE,KAAK,EAAE,CAAA"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
11
|
+
var t = {};
|
|
12
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
13
|
+
t[p] = s[p];
|
|
14
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
15
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
16
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
17
|
+
t[p[i]] = s[p[i]];
|
|
18
|
+
}
|
|
19
|
+
return t;
|
|
20
|
+
};
|
|
21
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
22
|
+
import * as React from "react";
|
|
23
|
+
import { cn } from "../../lib/utils";
|
|
24
|
+
const videoVariants = {
|
|
25
|
+
base: "w-full",
|
|
26
|
+
fit: {
|
|
27
|
+
cover: "object-cover",
|
|
28
|
+
contain: "object-contain",
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
const Video = (_a) => {
|
|
32
|
+
var { src, videoAttributes, naturalAspectRatio = "1/1", className } = _a, props = __rest(_a, ["src", "videoAttributes", "naturalAspectRatio", "className"]);
|
|
33
|
+
const videoRef = React.useRef(null);
|
|
34
|
+
React.useEffect(() => {
|
|
35
|
+
const video = videoRef.current;
|
|
36
|
+
if (!video)
|
|
37
|
+
return;
|
|
38
|
+
// Handle autoplay with sound restrictions
|
|
39
|
+
const setupVideo = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
40
|
+
try {
|
|
41
|
+
if (videoAttributes.autoplay) {
|
|
42
|
+
// Always start muted to ensure autoplay works
|
|
43
|
+
video.muted = true;
|
|
44
|
+
yield video.play();
|
|
45
|
+
// If sound is enabled, unmute after autoplay starts
|
|
46
|
+
if (videoAttributes.videoSound) {
|
|
47
|
+
video.muted = false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
console.error("Error setting up video:", error);
|
|
53
|
+
// Fallback to showing controls if autoplay fails
|
|
54
|
+
if (video) {
|
|
55
|
+
video.controls = true;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
setupVideo();
|
|
60
|
+
}, [videoAttributes.autoplay, videoAttributes.videoSound]);
|
|
61
|
+
const videoStyle = {
|
|
62
|
+
aspectRatio: videoAttributes.enabled && videoAttributes.aspectRatio !== "auto"
|
|
63
|
+
? videoAttributes.aspectRatio.replace(":", "/")
|
|
64
|
+
: naturalAspectRatio.replace(":", "/"),
|
|
65
|
+
};
|
|
66
|
+
return (_jsx("video", Object.assign({ ref: videoRef, className: cn(videoVariants.base, videoAttributes.videoFit === "fill"
|
|
67
|
+
? videoVariants.fit.cover
|
|
68
|
+
: videoVariants.fit.contain, className), style: videoStyle, preload: "metadata", playsInline: true, loop: videoAttributes.enabled, controls: videoAttributes.enabled && !videoAttributes.autoplay, src: src }, props)));
|
|
69
|
+
};
|
|
70
|
+
export { Video };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
type VideoAttributes = {
|
|
3
|
+
enabled: boolean;
|
|
4
|
+
aspectRatio: string;
|
|
5
|
+
videoFit: "fill" | "fit";
|
|
6
|
+
overlayOpacity: number;
|
|
7
|
+
autoplay: boolean;
|
|
8
|
+
videoSound: boolean;
|
|
9
|
+
};
|
|
10
|
+
interface VideoProps extends React.VideoHTMLAttributes<HTMLVideoElement> {
|
|
11
|
+
src: string;
|
|
12
|
+
videoAttributes: VideoAttributes;
|
|
13
|
+
naturalAspectRatio?: string;
|
|
14
|
+
className?: string;
|
|
15
|
+
}
|
|
16
|
+
declare const Video: ({ src, videoAttributes, naturalAspectRatio, className, ...props }: VideoProps) => import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export { Video as VideoV2 };
|
|
18
|
+
//# sourceMappingURL=video.v2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video.v2.d.ts","sourceRoot":"","sources":["../../../components/ui/video.v2.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAW9B,KAAK,eAAe,GAAG;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,UAAU,UAAW,SAAQ,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;IACtE,GAAG,EAAE,MAAM,CAAA;IACX,eAAe,EAAE,eAAe,CAAA;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,QAAA,MAAM,KAAK,sEAMR,UAAU,4CA0DZ,CAAA;AAED,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,CAAA"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
11
|
+
var t = {};
|
|
12
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
13
|
+
t[p] = s[p];
|
|
14
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
15
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
16
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
17
|
+
t[p[i]] = s[p[i]];
|
|
18
|
+
}
|
|
19
|
+
return t;
|
|
20
|
+
};
|
|
21
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
22
|
+
import * as React from "react";
|
|
23
|
+
import { cn } from "../../lib/utils";
|
|
24
|
+
const videoVariants = {
|
|
25
|
+
base: "w-full",
|
|
26
|
+
fit: {
|
|
27
|
+
cover: "object-cover",
|
|
28
|
+
contain: "object-contain",
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
const Video = (_a) => {
|
|
32
|
+
var { src, videoAttributes, naturalAspectRatio = "1/1", className } = _a, props = __rest(_a, ["src", "videoAttributes", "naturalAspectRatio", "className"]);
|
|
33
|
+
const videoRef = React.useRef(null);
|
|
34
|
+
React.useEffect(() => {
|
|
35
|
+
const video = videoRef.current;
|
|
36
|
+
if (!video)
|
|
37
|
+
return;
|
|
38
|
+
// Handle autoplay with sound restrictions
|
|
39
|
+
const setupVideo = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
40
|
+
try {
|
|
41
|
+
if (videoAttributes.autoplay) {
|
|
42
|
+
// Always start muted to ensure autoplay works
|
|
43
|
+
video.muted = true;
|
|
44
|
+
yield video.play();
|
|
45
|
+
// If sound is enabled, unmute after autoplay starts
|
|
46
|
+
if (videoAttributes.videoSound) {
|
|
47
|
+
video.muted = false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
console.error("Error setting up video:", error);
|
|
53
|
+
// Fallback to showing controls if autoplay fails
|
|
54
|
+
if (video) {
|
|
55
|
+
video.controls = true;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
setupVideo();
|
|
60
|
+
}, [videoAttributes.autoplay, videoAttributes.videoSound]);
|
|
61
|
+
const videoStyle = {
|
|
62
|
+
aspectRatio: videoAttributes.enabled && videoAttributes.aspectRatio !== "auto"
|
|
63
|
+
? videoAttributes.aspectRatio.replace(":", "/")
|
|
64
|
+
: naturalAspectRatio.replace(":", "/"),
|
|
65
|
+
};
|
|
66
|
+
return (_jsx("video", Object.assign({ ref: videoRef, className: cn(videoVariants.base, videoAttributes.videoFit === "fill"
|
|
67
|
+
? videoVariants.fit.cover
|
|
68
|
+
: videoVariants.fit.contain, className), style: videoStyle, preload: "metadata", playsInline: true, loop: videoAttributes.enabled, controls: videoAttributes.enabled && !videoAttributes.autoplay, src: src }, props)));
|
|
69
|
+
};
|
|
70
|
+
export { Video as VideoV2 };
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export { cn, cva, getColor, getBackgroundAndPaddingStyle, getBorderSidesStyle, getTextStyle, getVerticalAlignmentStyle, getBackgroundAndSpacingStyle, getIdFromGid, productGidFromId, variantGidFromId, getPaddingStyle, getVerticalAlignment, mapFlexToAlignment, formatRelativeTime, stringRatioToInt, getOverlayStyle, getDestinationHandler, createCollectionImageMap, } from "./lib/utils";
|
|
2
|
+
export * from "./components/hooks/use-collection";
|
|
3
|
+
export * from "./components/hooks/use-infinite-scroll";
|
|
4
|
+
export * from "./components/hooks/use-recommendations";
|
|
5
|
+
export * from "./components/hooks/use-products";
|
|
6
|
+
export * from "./components/hooks/use-scroll-direction";
|
|
7
|
+
export * from "./components/hooks/use-sort-filter";
|
|
8
|
+
export * from "./components/hooks/use-product-options";
|
|
9
|
+
export * from "./components/hooks/use-shop";
|
|
10
|
+
export * from "./components/hooks/use-tap";
|
|
11
|
+
export * from "./components/ui/accordion";
|
|
12
|
+
export * from "./components/ui/aspect-ratio";
|
|
13
|
+
export * from "./components/ui/badge";
|
|
14
|
+
export * from "./components/ui/button";
|
|
15
|
+
export * from "./components/ui/carousel";
|
|
16
|
+
export * from "./components/ui/checkbox";
|
|
17
|
+
export * from "./components/ui/chip";
|
|
18
|
+
export * from "./components/ui/color-swatch";
|
|
19
|
+
export * from "./components/ui/container";
|
|
20
|
+
export * from "./components/ui/drawer";
|
|
21
|
+
export * from "./components/ui/dropdown";
|
|
22
|
+
export * from "./components/ui/empty-message";
|
|
23
|
+
export * from "./components/ui/favorite";
|
|
24
|
+
export * from "./components/ui/grid";
|
|
25
|
+
export * from "./components/ui/icon";
|
|
26
|
+
export * from "./components/ui/image";
|
|
27
|
+
export * from "./components/ui/Input/input";
|
|
28
|
+
export * from "./components/ui/label";
|
|
29
|
+
export * from "./components/ui/line-item-text-icons";
|
|
30
|
+
export * from "./components/ui/money";
|
|
31
|
+
export * from "./components/ui/price";
|
|
32
|
+
export * from "./components/ui/product-card";
|
|
33
|
+
export * from "./components/ui/quantity-picker";
|
|
34
|
+
export * from "./components/ui/radio-group";
|
|
35
|
+
export * from "./components/ui/scroll-area";
|
|
36
|
+
export * from "./components/ui/selectors";
|
|
37
|
+
export * from "./components/ui/separator";
|
|
38
|
+
export * from "./components/ui/skeleton";
|
|
39
|
+
export * from "./components/ui/slider";
|
|
40
|
+
export * from "./components/ui/subscription";
|
|
41
|
+
export * from "./components/ui/switch";
|
|
42
|
+
export * from "./components/ui/tabs";
|
|
43
|
+
export * from "./components/ui/text";
|
|
44
|
+
export * from "./components/ui/textarea";
|
|
45
|
+
export * from "./components/ui/toast";
|
|
46
|
+
export * from "./components/ui/toaster";
|
|
47
|
+
export * from "./components/ui/toggle-group";
|
|
48
|
+
export * from "./components/ui/toggle";
|
|
49
|
+
export * from "./components/ui/use-toast";
|
|
50
|
+
export * from "./components/ui/video";
|
|
51
|
+
export * from "./components/ui/video.v2";
|
|
52
|
+
export * from "./components/ui/wishlist";
|
|
53
|
+
export * from "./components/ui/wishlist-select";
|
|
54
|
+
export * from "./components/hooks/use-shop";
|
|
55
|
+
export * from "./components/libs/sort-filter/search-integration";
|
|
56
|
+
export * from "./components/hooks/use-reviews";
|
|
57
|
+
export * from "./components/ui/subcollection-tabs";
|
|
58
|
+
export * from "./components/libs/sort-filter/search-integration";
|
|
59
|
+
//# sourceMappingURL=index%20copy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index copy.d.ts","sourceRoot":"","sources":["../index copy.ts"],"names":[],"mappings":"AACA,OAAO,EACL,EAAE,EACF,GAAG,EACH,QAAQ,EACR,4BAA4B,EAC5B,mBAAmB,EACnB,YAAY,EACZ,yBAAyB,EACzB,4BAA4B,EAC5B,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,aAAa,CAAA;AACpB,cAAc,mCAAmC,CAAA;AACjD,cAAc,wCAAwC,CAAA;AACtD,cAAc,wCAAwC,CAAA;AACtD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,yCAAyC,CAAA;AACvD,cAAc,oCAAoC,CAAA;AAClD,cAAc,wCAAwC,CAAA;AACtD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,2BAA2B,CAAA;AACzC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA;AACxC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,uBAAuB,CAAA;AACrC,cAAc,sCAAsC,CAAA;AACpD,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kDAAkD,CAAA;AAChE,cAAc,gCAAgC,CAAA;AAC9C,cAAc,oCAAoC,CAAA;AAClD,cAAc,kDAAkD,CAAA"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// component exports
|
|
2
|
+
export { cn, cva, getColor, getBackgroundAndPaddingStyle, getBorderSidesStyle, getTextStyle, getVerticalAlignmentStyle, getBackgroundAndSpacingStyle, getIdFromGid, productGidFromId, variantGidFromId, getPaddingStyle, getVerticalAlignment, mapFlexToAlignment, formatRelativeTime, stringRatioToInt, getOverlayStyle, getDestinationHandler, createCollectionImageMap, } from "./lib/utils";
|
|
3
|
+
export * from "./components/hooks/use-collection";
|
|
4
|
+
export * from "./components/hooks/use-infinite-scroll";
|
|
5
|
+
export * from "./components/hooks/use-recommendations";
|
|
6
|
+
export * from "./components/hooks/use-products";
|
|
7
|
+
export * from "./components/hooks/use-scroll-direction";
|
|
8
|
+
export * from "./components/hooks/use-sort-filter";
|
|
9
|
+
export * from "./components/hooks/use-product-options";
|
|
10
|
+
export * from "./components/hooks/use-shop";
|
|
11
|
+
export * from "./components/hooks/use-tap";
|
|
12
|
+
export * from "./components/ui/accordion";
|
|
13
|
+
export * from "./components/ui/aspect-ratio";
|
|
14
|
+
export * from "./components/ui/badge";
|
|
15
|
+
export * from "./components/ui/button";
|
|
16
|
+
export * from "./components/ui/carousel";
|
|
17
|
+
export * from "./components/ui/checkbox";
|
|
18
|
+
export * from "./components/ui/chip";
|
|
19
|
+
export * from "./components/ui/color-swatch";
|
|
20
|
+
export * from "./components/ui/container";
|
|
21
|
+
export * from "./components/ui/drawer";
|
|
22
|
+
export * from "./components/ui/dropdown";
|
|
23
|
+
export * from "./components/ui/empty-message";
|
|
24
|
+
export * from "./components/ui/favorite";
|
|
25
|
+
export * from "./components/ui/grid";
|
|
26
|
+
export * from "./components/ui/icon";
|
|
27
|
+
export * from "./components/ui/image";
|
|
28
|
+
export * from "./components/ui/Input/input";
|
|
29
|
+
export * from "./components/ui/label";
|
|
30
|
+
export * from "./components/ui/line-item-text-icons";
|
|
31
|
+
export * from "./components/ui/money";
|
|
32
|
+
export * from "./components/ui/price";
|
|
33
|
+
export * from "./components/ui/product-card";
|
|
34
|
+
export * from "./components/ui/quantity-picker";
|
|
35
|
+
export * from "./components/ui/radio-group";
|
|
36
|
+
export * from "./components/ui/scroll-area";
|
|
37
|
+
export * from "./components/ui/selectors";
|
|
38
|
+
export * from "./components/ui/separator";
|
|
39
|
+
export * from "./components/ui/skeleton";
|
|
40
|
+
export * from "./components/ui/slider";
|
|
41
|
+
export * from "./components/ui/subscription";
|
|
42
|
+
export * from "./components/ui/switch";
|
|
43
|
+
export * from "./components/ui/tabs";
|
|
44
|
+
export * from "./components/ui/text";
|
|
45
|
+
export * from "./components/ui/textarea";
|
|
46
|
+
export * from "./components/ui/toast";
|
|
47
|
+
export * from "./components/ui/toaster";
|
|
48
|
+
export * from "./components/ui/toggle-group";
|
|
49
|
+
export * from "./components/ui/toggle";
|
|
50
|
+
export * from "./components/ui/use-toast";
|
|
51
|
+
export * from "./components/ui/video";
|
|
52
|
+
export * from "./components/ui/video.v2";
|
|
53
|
+
export * from "./components/ui/wishlist";
|
|
54
|
+
export * from "./components/ui/wishlist-select";
|
|
55
|
+
export * from "./components/hooks/use-shop";
|
|
56
|
+
export * from "./components/libs/sort-filter/search-integration";
|
|
57
|
+
export * from "./components/hooks/use-reviews";
|
|
58
|
+
export * from "./components/ui/subcollection-tabs";
|
|
59
|
+
export * from "./components/libs/sort-filter/search-integration";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
type DestinationActions = {
|
|
2
|
+
openScreen: (arg: {
|
|
3
|
+
destination: {
|
|
4
|
+
type: "internal" | "web";
|
|
5
|
+
url: string;
|
|
6
|
+
};
|
|
7
|
+
}) => void;
|
|
8
|
+
openProduct: (arg: {
|
|
9
|
+
productId: string;
|
|
10
|
+
}) => void;
|
|
11
|
+
openCollection: (arg: {
|
|
12
|
+
collectionId: string;
|
|
13
|
+
}) => void;
|
|
14
|
+
};
|
|
15
|
+
export declare const getDestinationHandler: (type: "app-screen" | "url" | "product" | "collection" | "none") => ((location: string, actions: DestinationActions) => void) | ((location: string, actions: DestinationActions) => void) | ((location: string, actions: DestinationActions) => void) | ((location: string, actions: DestinationActions) => void) | (() => void);
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=destination.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"destination.d.ts","sourceRoot":"","sources":["../../../lib/utils/destination.ts"],"names":[],"mappings":"AAAA,KAAK,kBAAkB,GAAG;IACxB,UAAU,EAAE,CAAC,GAAG,EAAE;QAChB,WAAW,EAAE;YAAE,IAAI,EAAE,UAAU,GAAG,KAAK,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAA;KACvD,KAAK,IAAI,CAAA;IACV,WAAW,EAAE,CAAC,GAAG,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACjD,cAAc,EAAE,CAAC,GAAG,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;CACxD,CAAA;AAmBD,eAAO,MAAM,qBAAqB,SAC1B,YAAY,GAAG,KAAK,GAAG,SAAS,GAAG,YAAY,GAAG,MAAM,iBAjBrC,MAAM,WAAW,kBAAkB,yBAE5C,MAAM,WAAW,kBAAkB,yBAO/B,MAAM,WAAW,kBAAkB,yBAEhC,MAAM,WAAW,kBAAkB,yBAS3D,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const DESTINATION_HANDLERS = {
|
|
2
|
+
"app-screen": (location, actions) => actions.openScreen({ destination: { type: "internal", url: location } }),
|
|
3
|
+
url: (location, actions) => actions.openScreen({
|
|
4
|
+
destination: {
|
|
5
|
+
type: "web",
|
|
6
|
+
url: location.includes("https://") ? location : `https://${location}`,
|
|
7
|
+
},
|
|
8
|
+
}),
|
|
9
|
+
product: (location, actions) => actions.openProduct({ productId: location }),
|
|
10
|
+
collection: (location, actions) => actions.openCollection({ collectionId: location }),
|
|
11
|
+
none: () => { },
|
|
12
|
+
};
|
|
13
|
+
export const getDestinationHandler = (type) => {
|
|
14
|
+
return DESTINATION_HANDLERS[type];
|
|
15
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function getIdFromGid(gid: string | undefined): string;
|
|
2
|
+
export declare function productGidFromId(id: string | null | undefined): string | null;
|
|
3
|
+
export declare function variantGidFromId(id: string | null | undefined): string | null;
|
|
4
|
+
export declare function getProductGidsFromIds(ids: string[]): string[];
|
|
5
|
+
//# sourceMappingURL=id.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../../../lib/utils/id.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAK5D;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAI7E;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAI7E;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,YAOlD"}
|