@megaads/wm
Version:
To install the library, use npm:
156 lines (119 loc) • 4.16 kB
Markdown
# @megaads/wm
## Installation
To install the library, use npm:
```sh
npm install @megaads/wm
```
## Usage
```typescript
// Variant Builder
import fetch from "node-fetch";
import WM from "@megaads/wm";
interface Variant {
id: number;
slug: string;
values: Array<{ id: number }>;
}
interface ProductVariant {
id: number;
sku: string,
variants: number[];
price: number;
high_price: number;
}
interface Galleries {
[key: number]: string[];
}
interface FetchDataResult {
variants: Variant[];
productVariants: ProductVariant[];
galleries: Galleries;
}
async function fetchData(productId: number): Promise<FetchDataResult> {
const variantResponse = await fetch(`https://us-variant.printerval.com/v2/variant/${productId}?ignore_localization=1`);
const variantDataJson = await variantResponse.json() as { result: { variants: Variant[], productVariants: ProductVariant[] } };
const variants = variantDataJson.result.variants;
const productVariants = variantDataJson.result.productVariants;
const galleryResponse = await fetch(`https://us-variant.printerval.com/gallery/${productId}?ignore_localization=1`);
const galleriesDataJson = await galleryResponse.json() as { result: Galleries };
const galleries = galleriesDataJson.result;
return { variants, productVariants, galleries };
}
async function getDetails(productId: number, productSkuId: number): Promise<void> {
const { variants, productVariants, galleries } = await fetchData(productId);
const variantsService = WM.initVarians({
variants: variants,
productVariants: productVariants,
galleries: galleries
});
const retVal = variantsService.getProductSkuDetails(productSkuId);
console.log(JSON.stringify(retVal));
}
getDetails(1000400032, 159658972).then(() => {});
// Get Image Cdn
function getCdnUrl(url: string): void {
const imagesService = WM.initImages({
baseCdnUrl: 'https://cdn.printerval.com'
})
console.log(imagesWM.getImageCdn(url, 960, 960, false, false, {}));
}
getCdnUrl('https://assets.printerval.com/seller/2024/02/15/womens-espresso-martini-drinking-coffee-lovers-cocktail-bartender-v-neck-t-shirt-15f0742d17528a2355b987d587766f8b.png');
// Format Price
function getPrice(): void {
const priceService = WM.initPrice({
currencyUnit: 'USD'
});
console.log(priceService.formatPrice(1000000));
}
getPrice();
// print location
const printLocationsService = WM.initPrintLocations([
{
"id": 1,
"name": "Front",
"value": "front"
},
{
"id": 2,
"name": "Chest",
"value": "chest"
},
{
"id": 3,
"name": "Back",
"value": "back"
},
{
"id": 4,
"name": "Chest & Back",
"value": "chest_back"
}
], 'us');
console.log(printLocationsService.getAdditionalPrice('chest_back', 7, 10));
```
### TeeInBlue customization
```typescript
import WM from "@megaads/wm";
const service = WM.initCustomizationTeeinblue(campaignData, {
templateId: savedState?.templateId,
state: savedState,
});
let snapshot = service.getSnapshot();
// Render in app:
// snapshot.templateOptions: template choices
// snapshot.layerOptions: personalization controls
// snapshot.mockup / snapshot.printAreas / snapshot.designLayers: preview descriptors
// snapshot.config: data for add-to-cart configuration
service.selectTemplate(snapshot.templateOptions[0].optionValues[1].id);
snapshot = service.getSnapshot();
const optionLayer = snapshot.layerOptions.find(layer => layer.input_type === "option");
service.changeLayerOptionValue(optionLayer.option_items[0], optionLayer);
const textLayer = service.getLayerOptions().find(layer => layer.input_type === "text");
service.changeInputValue(textLayer, "Alex");
const photoLayer = service.getLayerOptions().find(layer => layer.input_type === "photo");
service.changeUploadValue(photoLayer, "https://example.com/uploaded-image.webp");
snapshot = service.getSnapshot();
const stateToPersist = service.getState();
```
## Contact
Email: duytungnguyen.bkhn.95@gmail.com