@getgreenspark/widgets
Version:
An SDK design to help the use of Greenspark's widget API in the browser
226 lines (202 loc) • 8.32 kB
text/typescript
import { ApiConsumer } from '@/network'
import {
ByPercentageOfRevenueWidget,
ByPercentageWidget,
CartWidget,
FullWidthBannerWidget,
FullWidthBannerWidgetById,
PerOrderWidget,
PerOrderWidgetById,
PerProductWidget,
PerPurchaseWidget,
SpendLevelWidget,
StaticWidgetById,
TieredSpendLevelWidget,
TieredSpendLevelWidgetById,
TopStatsWidget,
} from '@/widgets'
import { DEFAULT_CONTAINER_CSS_SELECTOR } from '@/constants'
import type {
ByPercentageOfRevenueWidgetByIdParams,
ByPercentageOfRevenueWidgetParams,
ByPercentageWidgetByIdParams,
ByPercentageWidgetParams,
CartWidgetByIdParams,
CartWidgetParams,
FullWidthBannerWidgetByIdParams,
FullWidthBannerWidgetParams,
PerOrderWidgetByIdParams,
PerOrderWidgetParams,
PerProductWidgetByIdParams,
PerProductWidgetParams,
PerPurchaseWidgetParams,
SpendLevelWidgetByIdParams,
SpendLevelWidgetParams,
StaticWidgetByIdParams,
StaticWidgetParams,
TieredSpendLevelWidgetByIdParams,
TieredSpendLevelWidgetParams,
TopStatsWidgetByIdParams,
TopStatsWidgetParams,
WidgetParams,
} from '@/interfaces'
import { StaticWidget } from '@/widgets/static'
import { CartWidgetById } from '@/widgets/cartById'
import { SpendLevelWidgetById } from '@/widgets/spendLevelById'
import { PerProductWidgetById } from '@/widgets/perProductById'
import { ByPercentageWidgetById } from '@/widgets/byPercentageById'
import { ByPercentageOfRevenueWidgetById } from '@/widgets/byPercentageOfRevenueById'
import { TopStatsWidgetById } from '@/widgets/topStatsById'
export default class GreensparkWidgets extends ApiConsumer {
cart(params: CartWidgetParams & { containerSelector?: string; useShadowDom?: boolean }) {
const { containerSelector = DEFAULT_CONTAINER_CSS_SELECTOR, useShadowDom } = params
return new CartWidget({ ...params, api: this.api, containerSelector, useShadowDom })
}
cartById(params: CartWidgetByIdParams & { containerSelector?: string; useShadowDom?: boolean }) {
const { containerSelector = DEFAULT_CONTAINER_CSS_SELECTOR, useShadowDom } = params
return new CartWidgetById({ ...params, api: this.api, containerSelector, useShadowDom })
}
spendLevel(
params: SpendLevelWidgetParams & { containerSelector?: string; useShadowDom?: boolean },
) {
const { containerSelector = DEFAULT_CONTAINER_CSS_SELECTOR, useShadowDom } = params
return new SpendLevelWidget({ ...params, api: this.api, containerSelector, useShadowDom })
}
spendLevelById(
params: SpendLevelWidgetByIdParams & { containerSelector?: string; useShadowDom?: boolean },
) {
const { containerSelector = DEFAULT_CONTAINER_CSS_SELECTOR, useShadowDom } = params
return new SpendLevelWidgetById({ ...params, api: this.api, containerSelector, useShadowDom })
}
perOrder(params: PerOrderWidgetParams & { containerSelector?: string; useShadowDom?: boolean }) {
const { containerSelector = DEFAULT_CONTAINER_CSS_SELECTOR, useShadowDom } = params
return new PerOrderWidget({ ...params, api: this.api, containerSelector, useShadowDom })
}
perOrderById(
params: PerOrderWidgetByIdParams & { containerSelector?: string; useShadowDom?: boolean },
) {
const { containerSelector = DEFAULT_CONTAINER_CSS_SELECTOR, useShadowDom } = params
return new PerOrderWidgetById({ ...params, api: this.api, containerSelector, useShadowDom })
}
perPurchase(
params: PerPurchaseWidgetParams &
Required<WidgetParams> & { containerSelector?: string; useShadowDom?: boolean },
) {
const { containerSelector = DEFAULT_CONTAINER_CSS_SELECTOR, useShadowDom } = params
return new PerPurchaseWidget({ ...params, api: this.api, containerSelector, useShadowDom })
}
byPercentage(
params: ByPercentageWidgetParams & { containerSelector?: string; useShadowDom?: boolean },
) {
const { containerSelector = DEFAULT_CONTAINER_CSS_SELECTOR, useShadowDom } = params
return new ByPercentageWidget({ ...params, api: this.api, containerSelector, useShadowDom })
}
byPercentageById(
params: ByPercentageWidgetByIdParams & { containerSelector?: string; useShadowDom?: boolean },
) {
const { containerSelector = DEFAULT_CONTAINER_CSS_SELECTOR, useShadowDom } = params
return new ByPercentageWidgetById({ ...params, api: this.api, containerSelector, useShadowDom })
}
tieredSpendLevel(
params: TieredSpendLevelWidgetParams & { containerSelector?: string; useShadowDom?: boolean },
) {
const { containerSelector = DEFAULT_CONTAINER_CSS_SELECTOR, useShadowDom } = params
return new TieredSpendLevelWidget({ ...params, api: this.api, containerSelector, useShadowDom })
}
tieredSpendLevelById(
params: TieredSpendLevelWidgetByIdParams & {
containerSelector?: string
useShadowDom?: boolean
},
) {
const { containerSelector = DEFAULT_CONTAINER_CSS_SELECTOR, useShadowDom } = params
return new TieredSpendLevelWidgetById({
...params,
api: this.api,
containerSelector,
useShadowDom,
})
}
byPercentageOfRevenue(
params: ByPercentageOfRevenueWidgetParams & {
containerSelector?: string
useShadowDom?: boolean
},
) {
const { containerSelector = DEFAULT_CONTAINER_CSS_SELECTOR, useShadowDom } = params
return new ByPercentageOfRevenueWidget({
...params,
api: this.api,
containerSelector,
useShadowDom,
})
}
byPercentageOfRevenueById(
params: ByPercentageOfRevenueWidgetByIdParams & {
containerSelector?: string
useShadowDom?: boolean
},
) {
const { containerSelector = DEFAULT_CONTAINER_CSS_SELECTOR, useShadowDom } = params
return new ByPercentageOfRevenueWidgetById({
...params,
api: this.api,
containerSelector,
useShadowDom,
})
}
perProduct(
params: PerProductWidgetParams & { containerSelector?: string; useShadowDom?: boolean },
) {
const { containerSelector = DEFAULT_CONTAINER_CSS_SELECTOR, useShadowDom } = params
return new PerProductWidget({ ...params, api: this.api, containerSelector, useShadowDom })
}
perProductById(
params: PerProductWidgetByIdParams & { containerSelector?: string; useShadowDom?: boolean },
) {
const { containerSelector = DEFAULT_CONTAINER_CSS_SELECTOR, useShadowDom } = params
return new PerProductWidgetById({ ...params, api: this.api, containerSelector, useShadowDom })
}
static(params: StaticWidgetParams & { containerSelector?: string; useShadowDom?: boolean }) {
const { containerSelector = DEFAULT_CONTAINER_CSS_SELECTOR, useShadowDom } = params
return new StaticWidget({ ...params, api: this.api, containerSelector, useShadowDom })
}
staticById(
params: StaticWidgetByIdParams & { containerSelector?: string; useShadowDom?: boolean },
) {
const { containerSelector = DEFAULT_CONTAINER_CSS_SELECTOR, useShadowDom } = params
return new StaticWidgetById({ ...params, api: this.api, containerSelector, useShadowDom })
}
topStats(params: TopStatsWidgetParams & { containerSelector?: string; useShadowDom?: boolean }) {
const { containerSelector = DEFAULT_CONTAINER_CSS_SELECTOR, useShadowDom } = params
return new TopStatsWidget({ ...params, api: this.api, containerSelector, useShadowDom })
}
topStatsById(params: TopStatsWidgetByIdParams & {
containerSelector?: string;
useShadowDom?: boolean
}) {
const { containerSelector = DEFAULT_CONTAINER_CSS_SELECTOR, useShadowDom } = params
return new TopStatsWidgetById({ ...params, api: this.api, containerSelector, useShadowDom })
}
fullWidthBanner(
params: FullWidthBannerWidgetParams & { containerSelector?: string; useShadowDom?: boolean },
) {
const { containerSelector = DEFAULT_CONTAINER_CSS_SELECTOR, useShadowDom } = params
return new FullWidthBannerWidget({ ...params, api: this.api, containerSelector, useShadowDom })
}
fullWidthBannerById(
params: FullWidthBannerWidgetByIdParams & {
containerSelector?: string;
useShadowDom?: boolean
},
) {
const { containerSelector = DEFAULT_CONTAINER_CSS_SELECTOR, useShadowDom } = params
return new FullWidthBannerWidgetById({
...params,
api: this.api,
containerSelector,
useShadowDom,
})
}
}
window.GreensparkWidgets = GreensparkWidgets