@shopbb/helium 0.7.6 → 0.8.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.
- package/dist/analytics/index.d.ts +18 -0
- package/dist/analytics/index.d.ts.map +1 -0
- package/dist/analytics/index.js +16 -0
- package/dist/analytics/index.js.map +1 -0
- package/dist/analytics/queue.d.ts +31 -0
- package/dist/analytics/queue.d.ts.map +1 -0
- package/dist/analytics/queue.js +203 -0
- package/dist/analytics/queue.js.map +1 -0
- package/dist/analytics/react.d.ts +44 -0
- package/dist/analytics/react.d.ts.map +1 -0
- package/dist/analytics/react.js +114 -0
- package/dist/analytics/react.js.map +1 -0
- package/dist/analytics/types.d.ts +68 -0
- package/dist/analytics/types.d.ts.map +1 -0
- package/dist/analytics/types.js +7 -0
- package/dist/analytics/types.js.map +1 -0
- package/dist/components/AddToCartButton.d.ts +7 -0
- package/dist/components/AddToCartButton.d.ts.map +1 -1
- package/dist/components/AddToCartButton.js +13 -2
- package/dist/components/AddToCartButton.js.map +1 -1
- package/dist/components/DiscountComponents.d.ts +3 -0
- package/dist/components/DiscountComponents.d.ts.map +1 -1
- package/dist/components/DiscountComponents.js +4 -4
- package/dist/components/DiscountComponents.js.map +1 -1
- package/dist/react.d.ts +5 -0
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +10 -0
- package/dist/react.js.map +1 -1
- package/package.json +1 -1
- package/src/analytics/index.ts +27 -0
- package/src/analytics/queue.ts +224 -0
- package/src/analytics/react.tsx +146 -0
- package/src/analytics/types.ts +81 -0
- package/src/components/AddToCartButton.tsx +18 -0
- package/src/components/DiscountComponents.tsx +15 -3
- package/src/react.tsx +26 -0
|
@@ -90,6 +90,9 @@ export interface ClaimableDiscountListProps {
|
|
|
90
90
|
/** 当前买家已领取的 claim 列表,用于标记「已领取 / 已使用」状态。
|
|
91
91
|
* 传入时按钮自动切换为 disabled + claimedText / usedText。 */
|
|
92
92
|
myClaims?: DiscountClaim[];
|
|
93
|
+
/** 点击「领取」时商家提供的实现。一般用 fetcher 提交到自己的 action route。
|
|
94
|
+
* 不提供时按钮点击无效果。 */
|
|
95
|
+
onClaim?: (discount: Discount) => Promise<void> | void;
|
|
93
96
|
/** 一次最多渲染几张,默认 10 */
|
|
94
97
|
first?: number;
|
|
95
98
|
className?: string;
|
|
@@ -108,7 +111,7 @@ export interface ClaimItemState {
|
|
|
108
111
|
}
|
|
109
112
|
|
|
110
113
|
export function ClaimableDiscountList(props: ClaimableDiscountListProps) {
|
|
111
|
-
const { discounts = [], myClaims = [], first = 10, className, emptyText = null, renderItem } = props;
|
|
114
|
+
const { discounts = [], myClaims = [], onClaim, first = 10, className, emptyText = null, renderItem } = props;
|
|
112
115
|
if (discounts.length === 0) return <>{emptyText}</>;
|
|
113
116
|
|
|
114
117
|
// 构造 code → claim 索引,O(1) 查询
|
|
@@ -133,7 +136,7 @@ export function ClaimableDiscountList(props: ClaimableDiscountListProps) {
|
|
|
133
136
|
};
|
|
134
137
|
return (
|
|
135
138
|
<React.Fragment key={d.id}>
|
|
136
|
-
{renderItem ? renderItem(d, state) : <DefaultClaimableItem discount={d} state={state} />}
|
|
139
|
+
{renderItem ? renderItem(d, state) : <DefaultClaimableItem discount={d} state={state} onClaim={onClaim} />}
|
|
137
140
|
</React.Fragment>
|
|
138
141
|
);
|
|
139
142
|
})}
|
|
@@ -141,7 +144,15 @@ export function ClaimableDiscountList(props: ClaimableDiscountListProps) {
|
|
|
141
144
|
);
|
|
142
145
|
}
|
|
143
146
|
|
|
144
|
-
function DefaultClaimableItem({
|
|
147
|
+
function DefaultClaimableItem({
|
|
148
|
+
discount: d,
|
|
149
|
+
state,
|
|
150
|
+
onClaim,
|
|
151
|
+
}: {
|
|
152
|
+
discount: Discount;
|
|
153
|
+
state: ClaimItemState;
|
|
154
|
+
onClaim?: (discount: Discount) => Promise<void> | void;
|
|
155
|
+
}) {
|
|
145
156
|
return (
|
|
146
157
|
<div data-claimable-item data-claimed={state.claimed} data-used={state.used}>
|
|
147
158
|
<div data-info>
|
|
@@ -159,6 +170,7 @@ function DefaultClaimableItem({ discount: d, state }: { discount: Discount; stat
|
|
|
159
170
|
{d.code && (
|
|
160
171
|
<DiscountClaimButton
|
|
161
172
|
discount={d}
|
|
173
|
+
onClaim={onClaim}
|
|
162
174
|
claimed={state.claimed}
|
|
163
175
|
claimedText={state.used ? '已使用' : '已领取'}
|
|
164
176
|
>
|
package/src/react.tsx
CHANGED
|
@@ -274,6 +274,32 @@ function escapeHtml(s: string): string {
|
|
|
274
274
|
/**
|
|
275
275
|
* 把 head + react stream + tail 拼成一个 ReadableStream<Uint8Array>
|
|
276
276
|
*/
|
|
277
|
+
// ============================================================
|
|
278
|
+
// Tracking SDK re-export
|
|
279
|
+
// ============================================================
|
|
280
|
+
// 把 5 个核心事件(page_view / product_view / add_to_cart / checkout_start / checkout_paid)
|
|
281
|
+
// 批量发到 platform-api 的 /api/events。
|
|
282
|
+
//
|
|
283
|
+
// 与 components/AnalyticsProvider 解耦:
|
|
284
|
+
// - AnalyticsProvider 是商家用的事件总线(自定义 reporter)
|
|
285
|
+
// - TrackingProvider 是平台的标准埋点(发到 platform-api)
|
|
286
|
+
export {
|
|
287
|
+
TrackingProvider,
|
|
288
|
+
useTracking,
|
|
289
|
+
AnalyticsQueue,
|
|
290
|
+
} from './analytics';
|
|
291
|
+
export type {
|
|
292
|
+
TrackingProviderProps,
|
|
293
|
+
AnalyticsEvent,
|
|
294
|
+
AnalyticsConfig,
|
|
295
|
+
EventType as AnalyticsEventType,
|
|
296
|
+
TrackFn,
|
|
297
|
+
PageViewProps,
|
|
298
|
+
ProductViewProps,
|
|
299
|
+
AddToCartProps,
|
|
300
|
+
CheckoutStartProps,
|
|
301
|
+
} from './analytics';
|
|
302
|
+
|
|
277
303
|
function composeStream(
|
|
278
304
|
head: string,
|
|
279
305
|
body: ReadableStream<Uint8Array>,
|