@yaoxiu/marketing-dsl 2.7.0 → 2.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.
@@ -477,9 +477,14 @@ countdown_end // \u5012\u8BA1\u65F6\u5F52\u96F6`
477
477
  "`close` \u7684 `extra.name`\uFF08`reason` \u4ECD\u662F\u5173\u95ED\u539F\u56E0\uFF09"
478
478
  ],
479
479
  [
480
- "\u5173\u95ED\u6309\u94AE\u7684 `action` \u91CC\uFF08\u548C `close` \u5199\u5728\u540C\u4E00\u4E2A `sequence`\uFF09",
480
+ "\u5173\u95ED\u6309\u94AE\u7684 `action` \u91CC\uFF08\u548C `close` \u5199\u5728\u540C\u4E00\u4E2A `sequence`\uFF0C\u4E14**\u4E0D\u8DF3\u8F6C**\uFF09",
481
481
  "**\u4E0D\u7B97\u70B9\u51FB**\uFF0C\u5E76\u8FDB\u90A3\u6761\u5173\u95ED",
482
482
  "`close` \u7684 `extra.name`"
483
+ ],
484
+ [
485
+ "\u4E3B\u6309\u94AE\u7684 `action` \u91CC\uFF08`sequence` \u91CC\u65E2\u6709 `close` / `closeAll`\uFF0C\u53C8\u6709 `navigate`\uFF09",
486
+ "**\u7B97\u4E00\u6761 `click`**\uFF08\u8DF3\u8D70\u4E86\u5C31\u662F\u8F6C\u5316\uFF09",
487
+ "`extra.name`\uFF1B\u8DF3\u8F6C\u5730\u5740\u5E76\u8FDB `extra.url`"
483
488
  ]
484
489
  ]
485
490
  },
@@ -491,7 +496,12 @@ countdown_end // \u5012\u8BA1\u65F6\u5F52\u96F6`
491
496
  {
492
497
  t: "note",
493
498
  tone: "warn",
494
- text: '**\u5173\u95ED\u52A8\u4F5C\u4E0D\u4EA7\u751F\u70B9\u51FB\u3002**\u53EA\u8981\u8FD9\u4E00\u4E0B\u6267\u884C\u4E86 `close` / `closeAll`\uFF0C\u5B83\u7684\u672C\u8D28\u5C31\u662F\u300C\u5173\u6389\u5B83\u300D\u800C\u4E0D\u662F\u300C\u70B9\u4E86\u5B83\u300D\u2014\u2014\u540E\u7AEF\u7B97\u70B9\u51FB\u7387\u65F6\u5206\u6BCD\u662F\u66DD\u5149\u3001\u5206\u5B50\u662F\u70B9\u51FB\uFF0C\u628A\u5173\u95ED\u7B97\u8FDB\u70B9\u51FB\u4F1A\u8BA9\u70B9\u51FB\u7387\u865A\u9AD8\u3002\u4F60\u914D\u5728\u5173\u95ED\u6309\u94AE\u4E0A\u7684\u57CB\u70B9\u540D\u4E0D\u4F1A\u4E22\uFF0C\u5B83\u8FDB\u4E86 `close` \u7684 `extra`\u3002\u60F3\u533A\u5206\u300C\u4ECE\u54EA\u4E2A\u5165\u53E3\u5173\u7684\u300D\uFF0C\u66F4\u63A8\u8350\u7528 `close` \u52A8\u4F5C\u7684 `reason`\uFF08\u5982 `reason: "user-dismiss"`\uFF09\u3002'
499
+ text: '**\u7EAF\u5173\u95ED\u52A8\u4F5C\u4E0D\u4EA7\u751F\u70B9\u51FB\u3002**\u8FD9\u4E00\u4E0B\u6267\u884C\u4E86 `close` / `closeAll`\u3001\u53C8\u6CA1\u6709\u8DF3\u8F6C\uFF0C\u5B83\u7684\u672C\u8D28\u5C31\u662F\u300C\u5173\u6389\u5B83\u300D\u800C\u4E0D\u662F\u300C\u70B9\u4E86\u5B83\u300D\u2014\u2014\u540E\u7AEF\u7B97\u70B9\u51FB\u7387\u65F6\u5206\u6BCD\u662F\u66DD\u5149\u3001\u5206\u5B50\u662F\u70B9\u51FB\uFF0C\u628A\u5173\u95ED\u7B97\u8FDB\u70B9\u51FB\u4F1A\u8BA9\u70B9\u51FB\u7387\u865A\u9AD8\u3002\u4F60\u914D\u5728\u5173\u95ED\u6309\u94AE\u4E0A\u7684\u57CB\u70B9\u540D\u4E0D\u4F1A\u4E22\uFF0C\u5B83\u8FDB\u4E86 `close` \u7684 `extra`\u3002\u60F3\u533A\u5206\u300C\u4ECE\u54EA\u4E2A\u5165\u53E3\u5173\u7684\u300D\uFF0C\u66F4\u63A8\u8350\u7528 `close` \u52A8\u4F5C\u7684 `reason`\uFF08\u5982 `reason: "user-dismiss"`\uFF09\u3002'
500
+ },
501
+ {
502
+ t: "note",
503
+ tone: "info",
504
+ text: "**\u4F46\u300C\u70B9\u4E86\u5C31\u8DF3\u8D70\u300D\u7684\u6309\u94AE\u5373\u4F7F\u5E26\u5173\u95ED\u4E5F\u7B97\u4E00\u6B21\u70B9\u51FB\u3002**\u4E3B CTA \u5E38\u5199\u6210 `sequence: [track, closeAll, navigate]`\uFF08\u8DF3\u8D70\u524D\u987A\u624B\u628A\u5F39\u7A97\u6536\u6389\uFF09\uFF0C\u540C\u4E00\u6B21\u624B\u52BF\u91CC\u53EA\u8981\u6709 `navigate`\uFF0C\u5C31\u7167\u5E38\u4E0A\u62A5\u4E00\u6761 `click`\u2014\u2014\u7528\u6237\u771F\u7684\u8DF3\u8FC7\u53BB\u4E86\uFF0C\u8FD9\u662F\u8F6C\u5316\u884C\u4E3A\uFF0C\u5173\u95ED\u53EA\u662F\u5B83\u7684\u526F\u4F5C\u7528\u3002\u8FD9\u6761 `click` \u7684 `extra` \u91CC\u65E2\u6709\u4F60\u914D\u7684\u57CB\u70B9\u540D\uFF0C\u4E5F\u6709\u8DF3\u8F6C\u5730\u5740\uFF1B\u8FD9\u4E00\u4E0B\u4E0D\u4F1A\u518D\u628A\u57CB\u70B9\u540D\u5E76\u8FDB `close`\uFF0C\u540C\u4E00\u4E2A\u540D\u5B57\u4E0D\u4F1A\u88AB\u62A5\u4E24\u904D\u3002"
495
505
  },
496
506
  {
497
507
  t: "note",
@@ -1,4 +1,4 @@
1
- import { D as Dsl } from '../types-8FNxDXp0.cjs';
1
+ import { D as Dsl } from '../types-DDOAHxQt.cjs';
2
2
 
3
3
  /**
4
4
  * 开发文档的数据结构。
@@ -1,4 +1,4 @@
1
- import { D as Dsl } from '../types-8FNxDXp0.js';
1
+ import { D as Dsl } from '../types-DDOAHxQt.js';
2
2
 
3
3
  /**
4
4
  * 开发文档的数据结构。
@@ -316,9 +316,14 @@ countdown_end // \u5012\u8BA1\u65F6\u5F52\u96F6`
316
316
  "`close` \u7684 `extra.name`\uFF08`reason` \u4ECD\u662F\u5173\u95ED\u539F\u56E0\uFF09"
317
317
  ],
318
318
  [
319
- "\u5173\u95ED\u6309\u94AE\u7684 `action` \u91CC\uFF08\u548C `close` \u5199\u5728\u540C\u4E00\u4E2A `sequence`\uFF09",
319
+ "\u5173\u95ED\u6309\u94AE\u7684 `action` \u91CC\uFF08\u548C `close` \u5199\u5728\u540C\u4E00\u4E2A `sequence`\uFF0C\u4E14**\u4E0D\u8DF3\u8F6C**\uFF09",
320
320
  "**\u4E0D\u7B97\u70B9\u51FB**\uFF0C\u5E76\u8FDB\u90A3\u6761\u5173\u95ED",
321
321
  "`close` \u7684 `extra.name`"
322
+ ],
323
+ [
324
+ "\u4E3B\u6309\u94AE\u7684 `action` \u91CC\uFF08`sequence` \u91CC\u65E2\u6709 `close` / `closeAll`\uFF0C\u53C8\u6709 `navigate`\uFF09",
325
+ "**\u7B97\u4E00\u6761 `click`**\uFF08\u8DF3\u8D70\u4E86\u5C31\u662F\u8F6C\u5316\uFF09",
326
+ "`extra.name`\uFF1B\u8DF3\u8F6C\u5730\u5740\u5E76\u8FDB `extra.url`"
322
327
  ]
323
328
  ]
324
329
  },
@@ -330,7 +335,12 @@ countdown_end // \u5012\u8BA1\u65F6\u5F52\u96F6`
330
335
  {
331
336
  t: "note",
332
337
  tone: "warn",
333
- text: '**\u5173\u95ED\u52A8\u4F5C\u4E0D\u4EA7\u751F\u70B9\u51FB\u3002**\u53EA\u8981\u8FD9\u4E00\u4E0B\u6267\u884C\u4E86 `close` / `closeAll`\uFF0C\u5B83\u7684\u672C\u8D28\u5C31\u662F\u300C\u5173\u6389\u5B83\u300D\u800C\u4E0D\u662F\u300C\u70B9\u4E86\u5B83\u300D\u2014\u2014\u540E\u7AEF\u7B97\u70B9\u51FB\u7387\u65F6\u5206\u6BCD\u662F\u66DD\u5149\u3001\u5206\u5B50\u662F\u70B9\u51FB\uFF0C\u628A\u5173\u95ED\u7B97\u8FDB\u70B9\u51FB\u4F1A\u8BA9\u70B9\u51FB\u7387\u865A\u9AD8\u3002\u4F60\u914D\u5728\u5173\u95ED\u6309\u94AE\u4E0A\u7684\u57CB\u70B9\u540D\u4E0D\u4F1A\u4E22\uFF0C\u5B83\u8FDB\u4E86 `close` \u7684 `extra`\u3002\u60F3\u533A\u5206\u300C\u4ECE\u54EA\u4E2A\u5165\u53E3\u5173\u7684\u300D\uFF0C\u66F4\u63A8\u8350\u7528 `close` \u52A8\u4F5C\u7684 `reason`\uFF08\u5982 `reason: "user-dismiss"`\uFF09\u3002'
338
+ text: '**\u7EAF\u5173\u95ED\u52A8\u4F5C\u4E0D\u4EA7\u751F\u70B9\u51FB\u3002**\u8FD9\u4E00\u4E0B\u6267\u884C\u4E86 `close` / `closeAll`\u3001\u53C8\u6CA1\u6709\u8DF3\u8F6C\uFF0C\u5B83\u7684\u672C\u8D28\u5C31\u662F\u300C\u5173\u6389\u5B83\u300D\u800C\u4E0D\u662F\u300C\u70B9\u4E86\u5B83\u300D\u2014\u2014\u540E\u7AEF\u7B97\u70B9\u51FB\u7387\u65F6\u5206\u6BCD\u662F\u66DD\u5149\u3001\u5206\u5B50\u662F\u70B9\u51FB\uFF0C\u628A\u5173\u95ED\u7B97\u8FDB\u70B9\u51FB\u4F1A\u8BA9\u70B9\u51FB\u7387\u865A\u9AD8\u3002\u4F60\u914D\u5728\u5173\u95ED\u6309\u94AE\u4E0A\u7684\u57CB\u70B9\u540D\u4E0D\u4F1A\u4E22\uFF0C\u5B83\u8FDB\u4E86 `close` \u7684 `extra`\u3002\u60F3\u533A\u5206\u300C\u4ECE\u54EA\u4E2A\u5165\u53E3\u5173\u7684\u300D\uFF0C\u66F4\u63A8\u8350\u7528 `close` \u52A8\u4F5C\u7684 `reason`\uFF08\u5982 `reason: "user-dismiss"`\uFF09\u3002'
339
+ },
340
+ {
341
+ t: "note",
342
+ tone: "info",
343
+ text: "**\u4F46\u300C\u70B9\u4E86\u5C31\u8DF3\u8D70\u300D\u7684\u6309\u94AE\u5373\u4F7F\u5E26\u5173\u95ED\u4E5F\u7B97\u4E00\u6B21\u70B9\u51FB\u3002**\u4E3B CTA \u5E38\u5199\u6210 `sequence: [track, closeAll, navigate]`\uFF08\u8DF3\u8D70\u524D\u987A\u624B\u628A\u5F39\u7A97\u6536\u6389\uFF09\uFF0C\u540C\u4E00\u6B21\u624B\u52BF\u91CC\u53EA\u8981\u6709 `navigate`\uFF0C\u5C31\u7167\u5E38\u4E0A\u62A5\u4E00\u6761 `click`\u2014\u2014\u7528\u6237\u771F\u7684\u8DF3\u8FC7\u53BB\u4E86\uFF0C\u8FD9\u662F\u8F6C\u5316\u884C\u4E3A\uFF0C\u5173\u95ED\u53EA\u662F\u5B83\u7684\u526F\u4F5C\u7528\u3002\u8FD9\u6761 `click` \u7684 `extra` \u91CC\u65E2\u6709\u4F60\u914D\u7684\u57CB\u70B9\u540D\uFF0C\u4E5F\u6709\u8DF3\u8F6C\u5730\u5740\uFF1B\u8FD9\u4E00\u4E0B\u4E0D\u4F1A\u518D\u628A\u57CB\u70B9\u540D\u5E76\u8FDB `close`\uFF0C\u540C\u4E00\u4E2A\u540D\u5B57\u4E0D\u4F1A\u88AB\u62A5\u4E24\u904D\u3002"
334
344
  },
335
345
  {
336
346
  t: "note",
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { D as Dsl, R as RuntimeOptions, a as RenderTree, b as DslView, c as DslStyle, C as CssStyle } from './types-8FNxDXp0.cjs';
2
- export { s as DslAction, j as DslActionBase, h as DslAnimate, q as DslCallAction, l as DslCloseAction, m as DslCloseAllAction, v as DslCloseButton, u as DslClosePosition, y as DslDerived, E as DslHandler, G as DslInteractionEvent, F as DslInteractionTrigger, i as DslKeyframe, f as DslLength, k as DslNavigateAction, t as DslNode, e as DslNodeType, n as DslOpenAction, g as DslRect, r as DslSequenceAction, o as DslSetStateAction, B as DslSource, x as DslSourceRef, w as DslStage, p as DslTrackAction, d as DslViewType, z as RenderElement, A as RenderLayer, J as RuntimeEmit, I as RuntimeEventName, H as RuntimeEvents } from './types-8FNxDXp0.cjs';
1
+ import { D as Dsl, R as RuntimeOptions, a as RenderTree, b as DslView, c as DslStyle, C as CssStyle } from './types-DDOAHxQt.cjs';
2
+ export { s as DslAction, j as DslActionBase, h as DslAnimate, q as DslCallAction, l as DslCloseAction, m as DslCloseAllAction, v as DslCloseButton, u as DslClosePosition, y as DslDerived, E as DslHandler, G as DslInteractionEvent, F as DslInteractionTrigger, i as DslKeyframe, f as DslLength, k as DslNavigateAction, t as DslNode, e as DslNodeType, n as DslOpenAction, g as DslRect, r as DslSequenceAction, o as DslSetStateAction, B as DslSource, x as DslSourceRef, w as DslStage, p as DslTrackAction, d as DslViewType, z as RenderElement, A as RenderLayer, J as RuntimeEmit, I as RuntimeEventName, H as RuntimeEvents } from './types-DDOAHxQt.cjs';
3
3
 
4
4
  /**
5
5
  * 运行时。
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { D as Dsl, R as RuntimeOptions, a as RenderTree, b as DslView, c as DslStyle, C as CssStyle } from './types-8FNxDXp0.js';
2
- export { s as DslAction, j as DslActionBase, h as DslAnimate, q as DslCallAction, l as DslCloseAction, m as DslCloseAllAction, v as DslCloseButton, u as DslClosePosition, y as DslDerived, E as DslHandler, G as DslInteractionEvent, F as DslInteractionTrigger, i as DslKeyframe, f as DslLength, k as DslNavigateAction, t as DslNode, e as DslNodeType, n as DslOpenAction, g as DslRect, r as DslSequenceAction, o as DslSetStateAction, B as DslSource, x as DslSourceRef, w as DslStage, p as DslTrackAction, d as DslViewType, z as RenderElement, A as RenderLayer, J as RuntimeEmit, I as RuntimeEventName, H as RuntimeEvents } from './types-8FNxDXp0.js';
1
+ import { D as Dsl, R as RuntimeOptions, a as RenderTree, b as DslView, c as DslStyle, C as CssStyle } from './types-DDOAHxQt.js';
2
+ export { s as DslAction, j as DslActionBase, h as DslAnimate, q as DslCallAction, l as DslCloseAction, m as DslCloseAllAction, v as DslCloseButton, u as DslClosePosition, y as DslDerived, E as DslHandler, G as DslInteractionEvent, F as DslInteractionTrigger, i as DslKeyframe, f as DslLength, k as DslNavigateAction, t as DslNode, e as DslNodeType, n as DslOpenAction, g as DslRect, r as DslSequenceAction, o as DslSetStateAction, B as DslSource, x as DslSourceRef, w as DslStage, p as DslTrackAction, d as DslViewType, z as RenderElement, A as RenderLayer, J as RuntimeEmit, I as RuntimeEventName, H as RuntimeEvents } from './types-DDOAHxQt.js';
3
3
 
4
4
  /**
5
5
  * 运行时。
@@ -46,7 +46,7 @@ function mapRuntimeEventToReport(id, event, payload) {
46
46
  if (event !== "interaction") return null;
47
47
  const data = payload != null ? payload : {};
48
48
  if (data.trigger !== "action") return null;
49
- if (data.closes) return null;
49
+ if (data.closes && !data.navigate) return null;
50
50
  const extra = buildClickExtra(data);
51
51
  if (!extra) return null;
52
52
  return { id, event: "click", extra };
@@ -1,4 +1,4 @@
1
- import { I as RuntimeEventName, G as DslInteractionEvent } from '../types-8FNxDXp0.cjs';
1
+ import { I as RuntimeEventName, G as DslInteractionEvent } from '../types-DDOAHxQt.cjs';
2
2
 
3
3
  /**
4
4
  * 营销物料上报载荷类型(上报契约的唯一数据源)。
@@ -184,8 +184,10 @@ declare function buildCloseReport(id: string | undefined | null, options?: {
184
184
  * - `interaction` 且 `trigger='action'` → 一条 `click`,`extra` 见 {@link buildClickExtra}
185
185
  * - `interaction` 且 `trigger='show'` / `'close'` → `null`:曝光 / 关闭由宿主统一上报,
186
186
  * 运营配在这两个时机上的埋点名走 {@link buildExposureReport} / {@link buildCloseReport} 的 `extra`
187
- * - `interaction` 且 `trigger='action'` `closes` 为真(手势里执行了关闭动作)→ `null`:
188
- * 点关闭按钮的本质是关闭,不再算一次点击
187
+ * - `interaction` 且 `trigger='action'`、`closes` 为真(手势里执行了关闭动作)但**没有** `navigate`
188
+ * → `null`:纯关闭手势的本质是关闭,不再算一次点击
189
+ * - `interaction` 且 `trigger='action'`、`closes` 为真但同一次交互里**有** `navigate`
190
+ * → 照常产出 `click`:跳走了就是一次转化行为,「顺手关掉弹窗」只是它的副作用
189
191
  * - 其余事件(`track` / `navigate` / `close` / `call` / `error` / `state-change` /
190
192
  * `view-change` / `ready` / `open`)不产生上报 —— 它们是动作粒度的事件,按它们上报会重复计数
191
193
  *
@@ -1,4 +1,4 @@
1
- import { I as RuntimeEventName, G as DslInteractionEvent } from '../types-8FNxDXp0.js';
1
+ import { I as RuntimeEventName, G as DslInteractionEvent } from '../types-DDOAHxQt.js';
2
2
 
3
3
  /**
4
4
  * 营销物料上报载荷类型(上报契约的唯一数据源)。
@@ -184,8 +184,10 @@ declare function buildCloseReport(id: string | undefined | null, options?: {
184
184
  * - `interaction` 且 `trigger='action'` → 一条 `click`,`extra` 见 {@link buildClickExtra}
185
185
  * - `interaction` 且 `trigger='show'` / `'close'` → `null`:曝光 / 关闭由宿主统一上报,
186
186
  * 运营配在这两个时机上的埋点名走 {@link buildExposureReport} / {@link buildCloseReport} 的 `extra`
187
- * - `interaction` 且 `trigger='action'` `closes` 为真(手势里执行了关闭动作)→ `null`:
188
- * 点关闭按钮的本质是关闭,不再算一次点击
187
+ * - `interaction` 且 `trigger='action'`、`closes` 为真(手势里执行了关闭动作)但**没有** `navigate`
188
+ * → `null`:纯关闭手势的本质是关闭,不再算一次点击
189
+ * - `interaction` 且 `trigger='action'`、`closes` 为真但同一次交互里**有** `navigate`
190
+ * → 照常产出 `click`:跳走了就是一次转化行为,「顺手关掉弹窗」只是它的副作用
189
191
  * - 其余事件(`track` / `navigate` / `close` / `call` / `error` / `state-change` /
190
192
  * `view-change` / `ready` / `open`)不产生上报 —— 它们是动作粒度的事件,按它们上报会重复计数
191
193
  *
@@ -44,7 +44,7 @@ function mapRuntimeEventToReport(id, event, payload) {
44
44
  if (event !== "interaction") return null;
45
45
  const data = payload != null ? payload : {};
46
46
  if (data.trigger !== "action") return null;
47
- if (data.closes) return null;
47
+ if (data.closes && !data.navigate) return null;
48
48
  const extra = buildClickExtra(data);
49
49
  if (!extra) return null;
50
50
  return { id, event: "click", extra };
@@ -383,9 +383,14 @@ interface DslInteractionEvent {
383
383
  /**
384
384
  * 这次交互里执行了关闭动作(`close` / `closeAll`)。
385
385
  *
386
- * 用来把「点关闭按钮」和「点营销内容」区分开:前者的本质是关闭,不该再算一次点击。
387
- * 运营常把埋点配进关闭按钮的 `sequence: [track, close]`,不标记的话这一下会同时
388
- * 产出 close 和 click 两条,点击量照样虚增。埋点名不会丢 —— 宿主把它并进 close 上报。
386
+ * 用来把「点关闭按钮」和「点营销内容」区分开:**纯关闭手势**(有关闭动作、又没有
387
+ * `navigate`)的本质是关闭,不该再算一次点击。运营常把埋点配进关闭按钮的
388
+ * `sequence: [track, close]`,不标记的话这一下会同时产出 close 和 click 两条,
389
+ * 点击量虚增。埋点名不会丢 —— 宿主把它并进 close 上报。
390
+ *
391
+ * 例外:同一次交互里还有 `navigate` 时仍算一次 click。转化型主 CTA 常写成
392
+ * `sequence: [track, closeAll, navigate]`(跳走前顺手收掉弹窗),真跳转了就是转化行为,
393
+ * 关闭只是副作用。此时埋点名已进 click 的 `extra`,宿主不再把它并进 close。
389
394
  */
390
395
  closes?: boolean;
391
396
  }
@@ -383,9 +383,14 @@ interface DslInteractionEvent {
383
383
  /**
384
384
  * 这次交互里执行了关闭动作(`close` / `closeAll`)。
385
385
  *
386
- * 用来把「点关闭按钮」和「点营销内容」区分开:前者的本质是关闭,不该再算一次点击。
387
- * 运营常把埋点配进关闭按钮的 `sequence: [track, close]`,不标记的话这一下会同时
388
- * 产出 close 和 click 两条,点击量照样虚增。埋点名不会丢 —— 宿主把它并进 close 上报。
386
+ * 用来把「点关闭按钮」和「点营销内容」区分开:**纯关闭手势**(有关闭动作、又没有
387
+ * `navigate`)的本质是关闭,不该再算一次点击。运营常把埋点配进关闭按钮的
388
+ * `sequence: [track, close]`,不标记的话这一下会同时产出 close 和 click 两条,
389
+ * 点击量虚增。埋点名不会丢 —— 宿主把它并进 close 上报。
390
+ *
391
+ * 例外:同一次交互里还有 `navigate` 时仍算一次 click。转化型主 CTA 常写成
392
+ * `sequence: [track, closeAll, navigate]`(跳走前顺手收掉弹窗),真跳转了就是转化行为,
393
+ * 关闭只是副作用。此时埋点名已进 click 的 `extra`,宿主不再把它并进 close。
389
394
  */
390
395
  closes?: boolean;
391
396
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yaoxiu/marketing-dsl",
3
- "version": "2.7.0",
3
+ "version": "2.8.0",
4
4
  "type": "module",
5
5
  "description": "营销弹窗 DSL 解释器核心,纯逻辑无框架依赖",
6
6
  "license": "MIT",