@active-reach/web-sdk 1.28.0 → 1.29.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/aegis.min.js +1 -1
- package/dist/aegis.min.js.map +1 -1
- package/dist/inapp/AegisInAppManager.d.ts +39 -2
- package/dist/inapp/AegisInAppManager.d.ts.map +1 -1
- package/dist/inapp/actions.d.ts +76 -0
- package/dist/inapp/actions.d.ts.map +1 -0
- package/dist/inapp/index.d.ts +2 -0
- package/dist/inapp/index.d.ts.map +1 -1
- package/dist/inapp/renderers/card-template.d.ts.map +1 -1
- package/dist/inapp/renderers/types.d.ts +8 -0
- package/dist/inapp/renderers/types.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +219 -22
- package/dist/index.js.map +1 -1
- package/dist/runtime/AegisMessageRuntime.d.ts +10 -1
- package/dist/runtime/AegisMessageRuntime.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
* End-user storefronts use polling + Web Push for background delivery.
|
|
21
21
|
*/
|
|
22
22
|
import type { CartState } from './renderers';
|
|
23
|
+
import { type AegisAction } from './actions';
|
|
23
24
|
export interface InAppCampaign {
|
|
24
25
|
id: string;
|
|
25
26
|
type: 'modal' | 'banner' | 'tooltip' | 'full_screen' | 'half_interstitial' | 'alert' | 'pip' | 'video' | 'stories' | 'carousel_cards' | 'sticky_bar' | 'progress_bar' | 'coachmark_tour' | 'product_recommendation' | 'active_web_chat' | 'custom_html';
|
|
@@ -117,6 +118,21 @@ export interface AegisInAppConfig {
|
|
|
117
118
|
* gamification campaigns are logged and skipped.
|
|
118
119
|
*/
|
|
119
120
|
onInteractiveCampaign?: (campaign: InAppCampaign) => void;
|
|
121
|
+
/**
|
|
122
|
+
* Canonical CTA-action handler (CANONICAL_ACTION_MODEL_TRACKER.md). ONE host
|
|
123
|
+
* callback receives every CTA action (add_to_cart / open_product / open_cart /
|
|
124
|
+
* open_login / navigate / custom …) — the CEP-standard shape. Return `true`
|
|
125
|
+
* when handled; otherwise the SDK applies the canonical fallback (navigate to
|
|
126
|
+
* the product/cart page) so a CTA is never a dead no-op. Legacy `aegis:*` DOM
|
|
127
|
+
* events still fire alongside this during the migration.
|
|
128
|
+
*/
|
|
129
|
+
onAction?: (action: AegisAction) => boolean | void;
|
|
130
|
+
/**
|
|
131
|
+
* Platform-aware product-URL resolver (sku → PDP url). Lets a Shopify/Woo/
|
|
132
|
+
* Magento adapter map to `/products/{handle}` etc. instead of the canonical
|
|
133
|
+
* `/p/{sku}`. Defaults to `/p/{sku}` when unset.
|
|
134
|
+
*/
|
|
135
|
+
productUrl?: (sku: string) => string;
|
|
120
136
|
/**
|
|
121
137
|
* Workspace cascade reader. Set this from the host SDK as
|
|
122
138
|
* `getWorkspaceId: () => aegis.getEffectiveWorkspaceId()` so in-app
|
|
@@ -145,6 +161,8 @@ export declare class AegisInAppManager {
|
|
|
145
161
|
private debugMode;
|
|
146
162
|
private enableSSE;
|
|
147
163
|
private onInteractiveCampaign?;
|
|
164
|
+
private onActionHandler?;
|
|
165
|
+
private productUrl;
|
|
148
166
|
private getWorkspaceId?;
|
|
149
167
|
private getCartState?;
|
|
150
168
|
private campaigns;
|
|
@@ -654,13 +672,32 @@ export declare class AegisInAppManager {
|
|
|
654
672
|
* (in-place state change) without per-host configuration.
|
|
655
673
|
*/
|
|
656
674
|
private navigateToCampaignAction;
|
|
675
|
+
/** Register/replace the canonical CTA-action handler after construction (the
|
|
676
|
+
* config `onAction` is the construct-time equivalent). Idempotent. */
|
|
677
|
+
setOnAction(handler: (action: AegisAction) => boolean | void): void;
|
|
678
|
+
/**
|
|
679
|
+
* Canonical CTA-action dispatcher (CANONICAL_ACTION_MODEL_TRACKER.md). ONE path
|
|
680
|
+
* for every host-facing CTA action:
|
|
681
|
+
* 1. give the host's `onAction` handler first refusal (return `true` = handled);
|
|
682
|
+
* 2. ALSO fire the legacy `aegis:*` DOM event (cancelable) so existing
|
|
683
|
+
* listeners (ACS) keep working unchanged during the migration;
|
|
684
|
+
* 3. if STILL unhandled → canonical fallback (navigate to the product/cart
|
|
685
|
+
* page) so a CTA is never a dead no-op (the rail-"Add" 3rd-party gap).
|
|
686
|
+
* Both add-to-cart paths (card "Add" + the `aegis://cart-add` verb) funnel here,
|
|
687
|
+
* so they're one behaviour with one legacy event (`aegis:add-to-cart`).
|
|
688
|
+
*/
|
|
689
|
+
dispatchAction(action: AegisAction, campaignId?: string): void;
|
|
690
|
+
/** Back-compat mapping: canonical action → the legacy DOM event hosts listen
|
|
691
|
+
* for today. `add_to_cart` always emits `aegis:add-to-cart` (the one ACS
|
|
692
|
+
* handles), collapsing the old `aegis:cart-add` divergence. */
|
|
693
|
+
private _legacyEventFor;
|
|
657
694
|
/**
|
|
658
695
|
* Phase-2 CTA action verbs (`aegis://<verb>?<params>`). Performs an in-app
|
|
659
696
|
* behaviour instead of navigating. Verbs:
|
|
660
697
|
* dismiss — close the message (tracked as dismissed)
|
|
661
698
|
* request-push — prompt for web-push permission, then close
|
|
662
|
-
* cart-add?sku=X —
|
|
663
|
-
*
|
|
699
|
+
* cart-add?sku=X — canonical `add_to_cart` action via dispatchAction
|
|
700
|
+
* (cancelable + product-page fallback)
|
|
664
701
|
*/
|
|
665
702
|
private runCampaignActionVerb;
|
|
666
703
|
/** Remove a rendered campaign's element(s) from the DOM by campaign id. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AegisInAppManager.d.ts","sourceRoot":"","sources":["../../src/inapp/AegisInAppManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"AegisInAppManager.d.ts","sourceRoot":"","sources":["../../src/inapp/AegisInAppManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical in-app CTA action model (CANONICAL_ACTION_MODEL_TRACKER.md).
|
|
3
|
+
*
|
|
4
|
+
* Every CTA across every in-app format resolves to ONE typed `AegisAction`, and
|
|
5
|
+
* is delivered to ONE host handler (`onAction`) — the CEP-standard shape
|
|
6
|
+
* (CleverTap KV-callback + deeplink, WebEngage/MoEngage/Netcore equivalents),
|
|
7
|
+
* replacing the drifted set of bespoke `aegis:*` DOM events. The legacy events
|
|
8
|
+
* are still fired as a back-compat shim during the migration (Phases B–E).
|
|
9
|
+
*/
|
|
10
|
+
export type AegisAction = {
|
|
11
|
+
type: 'dismiss';
|
|
12
|
+
} | {
|
|
13
|
+
type: 'request_push';
|
|
14
|
+
} | {
|
|
15
|
+
type: 'navigate';
|
|
16
|
+
url: string;
|
|
17
|
+
} | {
|
|
18
|
+
type: 'open_product';
|
|
19
|
+
sku?: string;
|
|
20
|
+
productId?: string;
|
|
21
|
+
url?: string;
|
|
22
|
+
platformProductId?: string;
|
|
23
|
+
platformUrl?: string;
|
|
24
|
+
} | {
|
|
25
|
+
type: 'open_cart';
|
|
26
|
+
} | {
|
|
27
|
+
type: 'open_login';
|
|
28
|
+
} | {
|
|
29
|
+
type: 'add_to_cart';
|
|
30
|
+
sku?: string;
|
|
31
|
+
/** Internal Aegis product id — what ACS's add-to-cart handler resolves. */
|
|
32
|
+
productId?: string;
|
|
33
|
+
/**
|
|
34
|
+
* Platform-native product/variant id (Shopify variant, Woo product id),
|
|
35
|
+
* when the rec card carries it (catalog-sync C.2). A plugin's onAction uses
|
|
36
|
+
* THIS for a native add — NOT the internal `productId`. Undefined → the
|
|
37
|
+
* plugin degrades to product search.
|
|
38
|
+
*/
|
|
39
|
+
platformProductId?: string;
|
|
40
|
+
qty?: number;
|
|
41
|
+
title?: string;
|
|
42
|
+
price?: unknown;
|
|
43
|
+
imageUrl?: string;
|
|
44
|
+
url?: string;
|
|
45
|
+
} | {
|
|
46
|
+
type: 'custom';
|
|
47
|
+
name: string;
|
|
48
|
+
payload: Record<string, unknown>;
|
|
49
|
+
};
|
|
50
|
+
/** Extra card/campaign context that helps classify a raw action URL. */
|
|
51
|
+
export interface ActionMeta {
|
|
52
|
+
product_id?: string;
|
|
53
|
+
sku?: string;
|
|
54
|
+
title?: string;
|
|
55
|
+
price?: unknown;
|
|
56
|
+
image_url?: string;
|
|
57
|
+
/** Platform-native ids/urls from the catalog sync (C.2); used by plugins. */
|
|
58
|
+
platform_product_id?: string;
|
|
59
|
+
platform_url?: string;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Map a raw CTA target (an `aegis://<verb>?…` action verb, a `/p/{sku}` PDP path,
|
|
63
|
+
* an http(s) URL, or empty) + card metadata → one canonical `AegisAction`.
|
|
64
|
+
* Single source of truth for "what does this CTA do". Used by both the card
|
|
65
|
+
* renderer and the campaign-CTA dispatcher so the two add-to-cart paths converge.
|
|
66
|
+
*/
|
|
67
|
+
export declare function parseAction(actionUrl: string | undefined, meta?: ActionMeta): AegisAction;
|
|
68
|
+
/**
|
|
69
|
+
* The canonical fallback URL for an action when no host handler claims it — so a
|
|
70
|
+
* CTA on a host without an `onAction`/listener still does something sensible
|
|
71
|
+
* (the gap that made the rail "Add" a dead button on 3rd-party). `productUrl`
|
|
72
|
+
* lets a platform adapter map a sku → its PDP shape (Shopify `/products/{handle}`
|
|
73
|
+
* etc.); defaults to the canonical `/p/{sku}`.
|
|
74
|
+
*/
|
|
75
|
+
export declare function fallbackUrlForAction(a: AegisAction, productUrl?: (sku: string) => string): string | undefined;
|
|
76
|
+
//# sourceMappingURL=actions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/inapp/actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1H;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GACD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC;AAEvE,wEAAwE;AACxE,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAID;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,WAAW,CA8EzF;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,CAAC,EAAE,WAAW,EACd,UAAU,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAiD,GAC7E,MAAM,GAAG,SAAS,CAgBpB"}
|
package/dist/inapp/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export { AegisInAppManager } from './AegisInAppManager';
|
|
2
2
|
export type { InAppCampaign, AegisInAppConfig, CampaignClickEvent, CampaignDismissEvent, AegisErrorEvent, InAppLifecycleEventMap, } from './AegisInAppManager';
|
|
3
3
|
export type { CartState } from './renderers';
|
|
4
|
+
export { parseAction, fallbackUrlForAction } from './actions';
|
|
5
|
+
export type { AegisAction, ActionMeta } from './actions';
|
|
4
6
|
export { renderPreview } from './renderPreview';
|
|
5
7
|
export { pairWebDevice, captureWebScreen, maybeStartPairing, type PairingElementNode, type CapturedWebScreen, type PairWebOptions, } from './devicePairing';
|
|
6
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/inapp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/inapp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAC9D,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card-template.d.ts","sourceRoot":"","sources":["../../../src/inapp/renderers/card-template.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"card-template.d.ts","sourceRoot":"","sources":["../../../src/inapp/renderers/card-template.ts"],"names":[],"mappings":"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"}
|
|
@@ -79,6 +79,14 @@ export interface RenderContext {
|
|
|
79
79
|
* structured cta_target values (page / product / dismiss) resolve correctly.
|
|
80
80
|
*/
|
|
81
81
|
navigate?: (url: string, buttonId?: string) => void;
|
|
82
|
+
/**
|
|
83
|
+
* Canonical CTA-action dispatch (CANONICAL_ACTION_MODEL_TRACKER.md). Renderers
|
|
84
|
+
* funnel CTA intents (add_to_cart / open_product / …) here instead of firing a
|
|
85
|
+
* bespoke `aegis:*` DOM event directly — the manager routes to the host's
|
|
86
|
+
* single `onAction` handler, the legacy DOM event (back-compat), and a
|
|
87
|
+
* graceful fallback. `undefined` outside the manager (e.g. dashboard preview).
|
|
88
|
+
*/
|
|
89
|
+
dispatchAction?: (action: import('../actions').AegisAction) => void;
|
|
82
90
|
/**
|
|
83
91
|
* Submit a widget response (records it + triggers the loyalty/coupon grant on
|
|
84
92
|
* the server). Used by the gamification renderers on their key action
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/inapp/renderers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;;;;;;GASG;AACH,MAAM,WAAW,SAAS;IACxB,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,4FAA4F;IAC5F,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,aAAa,CAAC;IACxB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC;IAC3C;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,UAAU,EAAE,CACV,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,QAAQ,GAAG,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,mBAAmB,EAClF,KAAK,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KACxD,IAAI,CAAC;IACV,yDAAyD;IACzD,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC5C;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IACrH;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,CACb,EAAE,EAAE,WAAW,EACf,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,aAAa,GAAG,WAAW,EAC5D,UAAU,CAAC,EAAE,MAAM;IACnB;uEACmE;IACnE,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,KACxB,IAAI,CAAC;IACV,iFAAiF;IACjF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC;IAC9C,8FAA8F;IAC9F,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACzC,wDAAwD;IACxD,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,KAAK,IAAI,CAAC;IAC7D,0CAA0C;IAC1C,kBAAkB,EAAE,MAAM,IAAI,CAAC;CAChC;AAED,mEAAmE;AACnE,MAAM,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/inapp/renderers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;;;;;;GASG;AACH,MAAM,WAAW,SAAS;IACxB,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,4FAA4F;IAC5F,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,aAAa,CAAC;IACxB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC;IAC3C;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,UAAU,EAAE,CACV,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,QAAQ,GAAG,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,mBAAmB,EAClF,KAAK,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KACxD,IAAI,CAAC;IACV,yDAAyD;IACzD,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC5C;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,YAAY,EAAE,WAAW,KAAK,IAAI,CAAC;IACpE;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IACrH;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,CACb,EAAE,EAAE,WAAW,EACf,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,aAAa,GAAG,WAAW,EAC5D,UAAU,CAAC,EAAE,MAAM;IACnB;uEACmE;IACnE,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,KACxB,IAAI,CAAC;IACV,iFAAiF;IACjF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC;IAC9C,8FAA8F;IAC9F,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACzC,wDAAwD;IACxD,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,KAAK,IAAI,CAAC;IAC7D,0CAA0C;IAC1C,kBAAkB,EAAE,MAAM,IAAI,CAAC;CAChC;AAED,mEAAmE;AACnE,MAAM,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,8 +9,8 @@ export type { OptInChannel } from './core/user-namespace';
|
|
|
9
9
|
export type { Plugin, PluginRegistry } from './types/plugin';
|
|
10
10
|
export { debounce, throttle } from './utils/debounce';
|
|
11
11
|
export type { ConsentPreferences, ConsentCategory, ConsentStatus, } from './utils/consent';
|
|
12
|
-
export type { InAppCampaign, AegisInAppConfig, CartState, CampaignClickEvent, CampaignDismissEvent, AegisErrorEvent, InAppLifecycleEventMap, } from './inapp';
|
|
13
|
-
export { renderPreview } from './inapp';
|
|
12
|
+
export type { InAppCampaign, AegisInAppConfig, CartState, CampaignClickEvent, CampaignDismissEvent, AegisErrorEvent, InAppLifecycleEventMap, AegisAction, ActionMeta, } from './inapp';
|
|
13
|
+
export { renderPreview, parseAction, fallbackUrlForAction } from './inapp';
|
|
14
14
|
export type { WidgetConfig, GamificationPrize, AegisWidgetConfig, } from './widgets';
|
|
15
15
|
export { TriggerEngine } from './triggers';
|
|
16
16
|
export type { TriggerRule, ScrollDepthConfig, TimeOnPageConfig, ExitIntentConfig, InactivityConfig, TriggerEvent, } from './triggers';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,QAAA,MAAM,KAAK,OAAc,CAAC;AAE1B,eAAe,KAAK,CAAC;AAErB,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5E,YAAY,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACtD,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,aAAa,GACd,MAAM,iBAAiB,CAAC;AAIzB,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,sBAAsB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -25,6 +25,94 @@ function throttle(func, limit) {
|
|
|
25
25
|
}
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
|
+
const PDP_SKU_RE = /\/p\/([^/?#]+)/;
|
|
29
|
+
function parseAction(actionUrl, meta) {
|
|
30
|
+
const url = (actionUrl ?? "").trim();
|
|
31
|
+
const m2 = meta ?? {};
|
|
32
|
+
if (url.startsWith("aegis://")) {
|
|
33
|
+
const rest = url.slice("aegis://".length);
|
|
34
|
+
const [verb, qs] = rest.split("?");
|
|
35
|
+
const params = new URLSearchParams(qs || "");
|
|
36
|
+
switch (verb) {
|
|
37
|
+
case "dismiss":
|
|
38
|
+
return { type: "dismiss" };
|
|
39
|
+
case "request-push":
|
|
40
|
+
case "request_push":
|
|
41
|
+
return { type: "request_push" };
|
|
42
|
+
case "cart-add":
|
|
43
|
+
case "add-to-cart":
|
|
44
|
+
return {
|
|
45
|
+
type: "add_to_cart",
|
|
46
|
+
sku: params.get("sku") || m2.sku || void 0,
|
|
47
|
+
productId: params.get("product_id") || m2.product_id || void 0,
|
|
48
|
+
platformProductId: m2.platform_product_id,
|
|
49
|
+
qty: Number(params.get("qty")) || 1,
|
|
50
|
+
title: m2.title,
|
|
51
|
+
price: m2.price,
|
|
52
|
+
imageUrl: m2.image_url,
|
|
53
|
+
url: m2.platform_url
|
|
54
|
+
};
|
|
55
|
+
case "open-cart":
|
|
56
|
+
case "cart":
|
|
57
|
+
return { type: "open_cart" };
|
|
58
|
+
case "open-login":
|
|
59
|
+
case "login":
|
|
60
|
+
return { type: "open_login" };
|
|
61
|
+
case "open-product":
|
|
62
|
+
case "product": {
|
|
63
|
+
const sku = params.get("sku") || m2.sku || void 0;
|
|
64
|
+
return { type: "open_product", sku, productId: m2.product_id, url: sku ? `/p/${sku}` : void 0 };
|
|
65
|
+
}
|
|
66
|
+
default:
|
|
67
|
+
return { type: "custom", name: verb || "unknown", payload: Object.fromEntries(params) };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
const pdp = PDP_SKU_RE.exec(url);
|
|
71
|
+
if (pdp) {
|
|
72
|
+
return {
|
|
73
|
+
type: "open_product",
|
|
74
|
+
sku: decodeURIComponent(pdp[1]),
|
|
75
|
+
productId: m2.product_id,
|
|
76
|
+
url,
|
|
77
|
+
platformProductId: m2.platform_product_id,
|
|
78
|
+
platformUrl: m2.platform_url
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
if (url) {
|
|
82
|
+
return { type: "navigate", url };
|
|
83
|
+
}
|
|
84
|
+
if (m2.sku || m2.product_id) {
|
|
85
|
+
return {
|
|
86
|
+
type: "add_to_cart",
|
|
87
|
+
sku: m2.sku,
|
|
88
|
+
productId: m2.product_id,
|
|
89
|
+
platformProductId: m2.platform_product_id,
|
|
90
|
+
qty: 1,
|
|
91
|
+
title: m2.title,
|
|
92
|
+
price: m2.price,
|
|
93
|
+
imageUrl: m2.image_url,
|
|
94
|
+
url: m2.platform_url
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
return { type: "dismiss" };
|
|
98
|
+
}
|
|
99
|
+
function fallbackUrlForAction(a, productUrl = (sku) => `/p/${encodeURIComponent(sku)}`) {
|
|
100
|
+
switch (a.type) {
|
|
101
|
+
case "navigate":
|
|
102
|
+
return a.url;
|
|
103
|
+
case "open_product":
|
|
104
|
+
return a.url || (a.sku ? productUrl(a.sku) : void 0);
|
|
105
|
+
case "add_to_cart":
|
|
106
|
+
return a.url || (a.sku ? productUrl(a.sku) : void 0);
|
|
107
|
+
case "open_cart":
|
|
108
|
+
return "/cart";
|
|
109
|
+
case "open_login":
|
|
110
|
+
return void 0;
|
|
111
|
+
// host-only; no neutral fallback
|
|
112
|
+
default:
|
|
113
|
+
return void 0;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
28
116
|
const ICONS = {
|
|
29
117
|
x: [
|
|
30
118
|
["path", { d: "M18 6 6 18" }],
|
|
@@ -943,6 +1031,7 @@ function renderCardFromTemplate(card, opts) {
|
|
|
943
1031
|
const fg = contrastFg(frame.bg ? sanitizeColor(frame.bg) : "#ffffff");
|
|
944
1032
|
const muted = fg === "#ffffff" ? "rgba(255,255,255,0.72)" : "#6b7280";
|
|
945
1033
|
const tile = document.createElement("div");
|
|
1034
|
+
tile.setAttribute("data-aegis-reaction-anchor", "");
|
|
946
1035
|
const cardFont = resolveCardFont(frame.fontFamily);
|
|
947
1036
|
ensureCardFontLoaded(cardFont);
|
|
948
1037
|
const radius = frame.radius !== void 0 ? `${parseInt(String(frame.radius), 10) || 12}px` : "12px";
|
|
@@ -1123,15 +1212,30 @@ function renderCardFromTemplate(card, opts) {
|
|
|
1123
1212
|
e.stopPropagation();
|
|
1124
1213
|
trackEvent(campaign.id, "clicked", { stepId: el.id || "add" });
|
|
1125
1214
|
if (inline) {
|
|
1126
|
-
|
|
1215
|
+
const m2 = meta;
|
|
1216
|
+
if (ctx.dispatchAction) {
|
|
1217
|
+
ctx.dispatchAction({
|
|
1218
|
+
type: "add_to_cart",
|
|
1219
|
+
productId: m2.product_id,
|
|
1220
|
+
sku: m2.sku,
|
|
1221
|
+
// Platform-native id (catalog-sync C.2) — plugins use this for a
|
|
1222
|
+
// native add; undefined today → graceful product-search fallback.
|
|
1223
|
+
platformProductId: m2.platform_product_id,
|
|
1224
|
+
title: card.title,
|
|
1225
|
+
price: m2.price ?? card.body,
|
|
1226
|
+
imageUrl: card.image_url,
|
|
1227
|
+
url: m2.platform_url || card.cta_url,
|
|
1228
|
+
qty: 1
|
|
1229
|
+
});
|
|
1230
|
+
} else if (typeof window !== "undefined") {
|
|
1127
1231
|
window.dispatchEvent(
|
|
1128
1232
|
new CustomEvent("aegis:add-to-cart", {
|
|
1129
1233
|
detail: {
|
|
1130
1234
|
campaign_id: campaign.id,
|
|
1131
|
-
product_id:
|
|
1132
|
-
sku:
|
|
1235
|
+
product_id: m2.product_id,
|
|
1236
|
+
sku: m2.sku,
|
|
1133
1237
|
title: card.title,
|
|
1134
|
-
price:
|
|
1238
|
+
price: m2.price ?? card.body,
|
|
1135
1239
|
image_url: card.image_url,
|
|
1136
1240
|
cta_url: card.cta_url
|
|
1137
1241
|
}
|
|
@@ -1156,13 +1260,23 @@ function renderCardFromTemplate(card, opts) {
|
|
|
1156
1260
|
e.stopPropagation();
|
|
1157
1261
|
trackEvent(campaign.id, "clicked");
|
|
1158
1262
|
if (inline) {
|
|
1159
|
-
|
|
1263
|
+
const bm = meta;
|
|
1264
|
+
if (ctx.dispatchAction) {
|
|
1265
|
+
ctx.dispatchAction({
|
|
1266
|
+
type: "open_product",
|
|
1267
|
+
productId: bm.product_id,
|
|
1268
|
+
sku: bm.sku,
|
|
1269
|
+
url: bm.platform_url || card.cta_url,
|
|
1270
|
+
platformProductId: bm.platform_product_id,
|
|
1271
|
+
platformUrl: bm.platform_url
|
|
1272
|
+
});
|
|
1273
|
+
} else if (typeof window !== "undefined") {
|
|
1160
1274
|
window.dispatchEvent(
|
|
1161
1275
|
new CustomEvent("aegis:open-product", {
|
|
1162
1276
|
detail: {
|
|
1163
1277
|
campaign_id: campaign.id,
|
|
1164
|
-
product_id:
|
|
1165
|
-
sku:
|
|
1278
|
+
product_id: bm.product_id,
|
|
1279
|
+
sku: bm.sku,
|
|
1166
1280
|
cta_url: card.cta_url
|
|
1167
1281
|
}
|
|
1168
1282
|
})
|
|
@@ -4922,6 +5036,7 @@ function svgNode(svg) {
|
|
|
4922
5036
|
}
|
|
4923
5037
|
const _AegisInAppManager = class _AegisInAppManager {
|
|
4924
5038
|
constructor(config) {
|
|
5039
|
+
this.productUrl = (sku) => `/p/${encodeURIComponent(sku)}`;
|
|
4925
5040
|
this.campaigns = [];
|
|
4926
5041
|
this.displayedCampaigns = /* @__PURE__ */ new Set();
|
|
4927
5042
|
this._displaySizeMul = 1;
|
|
@@ -4951,6 +5066,8 @@ const _AegisInAppManager = class _AegisInAppManager {
|
|
|
4951
5066
|
this.debugMode = config.debugMode || false;
|
|
4952
5067
|
this.enableSSE = config.enableSSE === true;
|
|
4953
5068
|
this.onInteractiveCampaign = config.onInteractiveCampaign;
|
|
5069
|
+
this.onActionHandler = config.onAction;
|
|
5070
|
+
if (config.productUrl) this.productUrl = config.productUrl;
|
|
4954
5071
|
this.getWorkspaceId = config.getWorkspaceId;
|
|
4955
5072
|
this.getCartState = config.getCartState;
|
|
4956
5073
|
}
|
|
@@ -6116,8 +6233,8 @@ const _AegisInAppManager = class _AegisInAppManager {
|
|
|
6116
6233
|
void this.trackEvent(campaign.id, "clicked");
|
|
6117
6234
|
if (actionUrl) {
|
|
6118
6235
|
window.open(actionUrl, "_blank", "noopener");
|
|
6119
|
-
} else
|
|
6120
|
-
|
|
6236
|
+
} else {
|
|
6237
|
+
this.dispatchAction({ type: "open_login" }, campaign.id);
|
|
6121
6238
|
}
|
|
6122
6239
|
});
|
|
6123
6240
|
row.appendChild(btn);
|
|
@@ -7791,6 +7908,7 @@ const _AegisInAppManager = class _AegisInAppManager {
|
|
|
7791
7908
|
},
|
|
7792
7909
|
sanitizeUrl: (url) => this.sanitizeUrl(url),
|
|
7793
7910
|
navigate: (url, buttonId) => this.navigateToCampaignAction(campaign, url, buttonId),
|
|
7911
|
+
dispatchAction: (action) => this.dispatchAction(action, campaign.id),
|
|
7794
7912
|
submitResponse: (responseType, payload) => this.submitWidgetResponse(campaign, responseType, payload),
|
|
7795
7913
|
playReaction: (el, intent, lottieFile, scope) => this._playReaction(el, intent, lottieFile, campaign.interactive_config, scope),
|
|
7796
7914
|
haptic: (pattern) => {
|
|
@@ -8566,13 +8684,79 @@ const _AegisInAppManager = class _AegisInAppManager {
|
|
|
8566
8684
|
window.location.href = safeUrl;
|
|
8567
8685
|
}
|
|
8568
8686
|
}
|
|
8687
|
+
/** Register/replace the canonical CTA-action handler after construction (the
|
|
8688
|
+
* config `onAction` is the construct-time equivalent). Idempotent. */
|
|
8689
|
+
setOnAction(handler) {
|
|
8690
|
+
this.onActionHandler = handler;
|
|
8691
|
+
}
|
|
8692
|
+
/**
|
|
8693
|
+
* Canonical CTA-action dispatcher (CANONICAL_ACTION_MODEL_TRACKER.md). ONE path
|
|
8694
|
+
* for every host-facing CTA action:
|
|
8695
|
+
* 1. give the host's `onAction` handler first refusal (return `true` = handled);
|
|
8696
|
+
* 2. ALSO fire the legacy `aegis:*` DOM event (cancelable) so existing
|
|
8697
|
+
* listeners (ACS) keep working unchanged during the migration;
|
|
8698
|
+
* 3. if STILL unhandled → canonical fallback (navigate to the product/cart
|
|
8699
|
+
* page) so a CTA is never a dead no-op (the rail-"Add" 3rd-party gap).
|
|
8700
|
+
* Both add-to-cart paths (card "Add" + the `aegis://cart-add` verb) funnel here,
|
|
8701
|
+
* so they're one behaviour with one legacy event (`aegis:add-to-cart`).
|
|
8702
|
+
*/
|
|
8703
|
+
dispatchAction(action, campaignId) {
|
|
8704
|
+
var _a;
|
|
8705
|
+
let handled = false;
|
|
8706
|
+
try {
|
|
8707
|
+
handled = ((_a = this.onActionHandler) == null ? void 0 : _a.call(this, action)) === true;
|
|
8708
|
+
} catch {
|
|
8709
|
+
}
|
|
8710
|
+
if (typeof window !== "undefined") {
|
|
8711
|
+
const legacy = this._legacyEventFor(action, campaignId);
|
|
8712
|
+
if (legacy) {
|
|
8713
|
+
const evt = new CustomEvent(legacy.name, { detail: legacy.detail, cancelable: true });
|
|
8714
|
+
const proceed = window.dispatchEvent(evt);
|
|
8715
|
+
if (!proceed || evt.defaultPrevented) handled = true;
|
|
8716
|
+
}
|
|
8717
|
+
}
|
|
8718
|
+
if (!handled) {
|
|
8719
|
+
const url = fallbackUrlForAction(action, this.productUrl);
|
|
8720
|
+
if (url && typeof window !== "undefined") window.location.href = url;
|
|
8721
|
+
}
|
|
8722
|
+
}
|
|
8723
|
+
/** Back-compat mapping: canonical action → the legacy DOM event hosts listen
|
|
8724
|
+
* for today. `add_to_cart` always emits `aegis:add-to-cart` (the one ACS
|
|
8725
|
+
* handles), collapsing the old `aegis:cart-add` divergence. */
|
|
8726
|
+
_legacyEventFor(a, campaignId) {
|
|
8727
|
+
const base = { campaign_id: campaignId };
|
|
8728
|
+
switch (a.type) {
|
|
8729
|
+
case "add_to_cart":
|
|
8730
|
+
return {
|
|
8731
|
+
name: "aegis:add-to-cart",
|
|
8732
|
+
detail: {
|
|
8733
|
+
...base,
|
|
8734
|
+
product_id: a.productId,
|
|
8735
|
+
sku: a.sku,
|
|
8736
|
+
title: a.title,
|
|
8737
|
+
price: a.price,
|
|
8738
|
+
image_url: a.imageUrl,
|
|
8739
|
+
cta_url: a.url,
|
|
8740
|
+
qty: a.qty ?? 1
|
|
8741
|
+
}
|
|
8742
|
+
};
|
|
8743
|
+
case "open_product":
|
|
8744
|
+
return { name: "aegis:open-product", detail: { ...base, sku: a.sku, product_id: a.productId, url: a.url } };
|
|
8745
|
+
case "open_cart":
|
|
8746
|
+
return { name: "aegis:open-cart", detail: base };
|
|
8747
|
+
case "open_login":
|
|
8748
|
+
return { name: "aegis:open-login", detail: base };
|
|
8749
|
+
default:
|
|
8750
|
+
return null;
|
|
8751
|
+
}
|
|
8752
|
+
}
|
|
8569
8753
|
/**
|
|
8570
8754
|
* Phase-2 CTA action verbs (`aegis://<verb>?<params>`). Performs an in-app
|
|
8571
8755
|
* behaviour instead of navigating. Verbs:
|
|
8572
8756
|
* dismiss — close the message (tracked as dismissed)
|
|
8573
8757
|
* request-push — prompt for web-push permission, then close
|
|
8574
|
-
* cart-add?sku=X —
|
|
8575
|
-
*
|
|
8758
|
+
* cart-add?sku=X — canonical `add_to_cart` action via dispatchAction
|
|
8759
|
+
* (cancelable + product-page fallback)
|
|
8576
8760
|
*/
|
|
8577
8761
|
runCampaignActionVerb(campaign, url) {
|
|
8578
8762
|
const rest = url.slice("aegis://".length);
|
|
@@ -8595,14 +8779,7 @@ const _AegisInAppManager = class _AegisInAppManager {
|
|
|
8595
8779
|
case "cart-add": {
|
|
8596
8780
|
const sku = params.get("sku") || "";
|
|
8597
8781
|
void this.trackEvent(campaign.id, "clicked", { meta: { verb: "cart-add", sku } });
|
|
8598
|
-
|
|
8599
|
-
detail: { sku, qty: 1, campaign_id: campaign.id },
|
|
8600
|
-
cancelable: true
|
|
8601
|
-
});
|
|
8602
|
-
const proceed = window.dispatchEvent(evt);
|
|
8603
|
-
if (proceed && !evt.defaultPrevented && sku) {
|
|
8604
|
-
window.location.href = `/p/${encodeURIComponent(sku)}`;
|
|
8605
|
-
}
|
|
8782
|
+
this.dispatchAction(parseAction(url, { sku }), campaign.id);
|
|
8606
8783
|
break;
|
|
8607
8784
|
}
|
|
8608
8785
|
default:
|
|
@@ -9966,7 +10143,8 @@ const _AegisInAppManager = class _AegisInAppManager {
|
|
|
9966
10143
|
this.addAnimationStyles();
|
|
9967
10144
|
const reduce = typeof window !== "undefined" && window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
9968
10145
|
const viewport = scope === "viewport";
|
|
9969
|
-
const
|
|
10146
|
+
const cardAnchor = !viewport && (host == null ? void 0 : host.closest) ? host.closest("[data-aegis-reaction-anchor]") : null;
|
|
10147
|
+
const anchor = viewport ? document.body : cardAnchor || host || document.body;
|
|
9970
10148
|
const prevPos = anchor.style.position;
|
|
9971
10149
|
if (!viewport && (!prevPos || prevPos === "static")) anchor.style.position = "relative";
|
|
9972
10150
|
const layer = document.createElement("div");
|
|
@@ -10005,7 +10183,7 @@ const _AegisInAppManager = class _AegisInAppManager {
|
|
|
10005
10183
|
g.style.cssText = `position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); width: ${px}px; height: ${px}px; display: flex; align-items: center; justify-content: center; line-height: 0; filter: drop-shadow(0 8px 16px rgba(0,0,0,0.30)); ${motion}`;
|
|
10006
10184
|
layer.appendChild(g);
|
|
10007
10185
|
anchor.appendChild(layer);
|
|
10008
|
-
if (festive && !reduce) this._fireConfetti(host);
|
|
10186
|
+
if (festive && !reduce) this._fireConfetti(cardAnchor || host);
|
|
10009
10187
|
const ra = ic && typeof ic === "object" ? ic.reaction_animations : void 0;
|
|
10010
10188
|
const custom = ra && typeof ra[intent] === "string" ? ra[intent] : void 0;
|
|
10011
10189
|
const file = custom || lottieFile || spec.file;
|
|
@@ -13636,7 +13814,13 @@ class AegisMessageRuntime {
|
|
|
13636
13814
|
getWorkspaceId: config.getWorkspaceId,
|
|
13637
13815
|
// First-party cart reader — renderers (progress-bar) read live cart
|
|
13638
13816
|
// state from here instead of `window.*` cart globals. See setCartState().
|
|
13639
|
-
getCartState: () => this.deriveCartState()
|
|
13817
|
+
getCartState: () => this.deriveCartState(),
|
|
13818
|
+
// Canonical CTA-action handler + platform product-URL resolver
|
|
13819
|
+
// (CANONICAL_ACTION_MODEL_TRACKER.md). A host (ACS / Shopify-Woo plugin /
|
|
13820
|
+
// native) registers ONE `onAction` to handle add_to_cart/open_product/…;
|
|
13821
|
+
// legacy `aegis:*` DOM events still fire for back-compat.
|
|
13822
|
+
onAction: config.onAction,
|
|
13823
|
+
productUrl: config.productUrl
|
|
13640
13824
|
});
|
|
13641
13825
|
this.intentRuleEvaluator = new IntentRuleEvaluator();
|
|
13642
13826
|
if (config.governance) {
|
|
@@ -13788,6 +13972,17 @@ class AegisMessageRuntime {
|
|
|
13788
13972
|
setCartState(state) {
|
|
13789
13973
|
this.applyCart(state);
|
|
13790
13974
|
}
|
|
13975
|
+
/**
|
|
13976
|
+
* Register the canonical CTA-action handler — the CEP-standard single callback
|
|
13977
|
+
* that receives every in-app intent (add_to_cart / open_product / open_cart /
|
|
13978
|
+
* open_login / navigate / custom). Return `true` when handled; otherwise the SDK
|
|
13979
|
+
* applies the graceful fallback. The construct-time `onAction` config is the
|
|
13980
|
+
* equivalent; this lets a host register/replace it once it holds the runtime.
|
|
13981
|
+
* See CANONICAL_ACTION_MODEL_TRACKER.md.
|
|
13982
|
+
*/
|
|
13983
|
+
onAction(handler) {
|
|
13984
|
+
this.inApp.setOnAction(handler);
|
|
13985
|
+
}
|
|
13791
13986
|
/**
|
|
13792
13987
|
* The ONE cart writer. Normalizes any cart-ish shape and funnels it into the
|
|
13793
13988
|
* single `cart` context namespace (read by the Free-Delivery progress card,
|
|
@@ -13995,9 +14190,11 @@ export {
|
|
|
13995
14190
|
debounce,
|
|
13996
14191
|
aegis as default,
|
|
13997
14192
|
deriveDeviceFingerprint,
|
|
14193
|
+
fallbackUrlForAction,
|
|
13998
14194
|
getCurrentLauncher,
|
|
13999
14195
|
m as murmurhash3_x86_32,
|
|
14000
14196
|
openChat,
|
|
14197
|
+
parseAction,
|
|
14001
14198
|
readFirstPartyCookie,
|
|
14002
14199
|
renderPreview,
|
|
14003
14200
|
throttle,
|