@namiml/web-sdk 3.4.11-dev.202609040555 → 3.4.11-dev.202609092330

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.
@@ -16,19 +16,22 @@ export declare class NamiButton extends NamiElement {
16
16
  protected updated(changedProperties: PropertyValueMap<this>): void;
17
17
  private _handleFocus;
18
18
  /**
19
- * NAM-3607: on CTV, focus is the selection signal — there is no tap to select a product.
20
- * Bridge a focused product button into `state.selectedProducts` so conditions and smart
21
- * text authored against `${state.selectedProducts.${state.currentGroupId}}` resolve
22
- * against the *focused* product. Buttons outside a product card carry no `sku` (it is
23
- * attached per card by `appendSkuToComponents`) and are ignored, as is every non-television
24
- * form factor, where tap already drives selection.
19
+ * On CTV, focus is the selection signal — there is no tap to select a product (NAM-3607).
25
20
  *
26
- * This button path only ever sets a selection, never clears one: a blur/non-product
27
- * clear here would fight the template's `initialState` selection on incidental focus
28
- * churn. The clear lives on the positive signal instead — focusing the group toggle
29
- * clears the current group's selection (`NamiSegmentPicker._handleFocusIn` →
30
- * `clearSelectedProduct`, NAM-3606), matching Apple's `setFocusedSku(nil)`. `selectSKU`
31
- * is idempotent, so repeat focus events on the same card do not trigger a re-render.
21
+ * - A focused PRODUCT button (one carrying a `sku`, attached per card by `appendSkuToComponents`)
22
+ * is bridged into `state.selectedProducts`, so conditions and smart text authored against
23
+ * `${state.selectedProducts.${state.currentGroupId}}` resolve against the *focused* product.
24
+ * `selectSKU` is idempotent, so repeat focus events on the same card do not re-render.
25
+ * - A focused NON-product button (login / restore / TV-provider — no `sku`) CLEARS the current
26
+ * group's selection (NAM-4270, decision 3 on NAM-4265), the same positive signal the group
27
+ * toggle already uses (`NamiSegmentPicker._handleFocusIn` → `clearSelectedProduct`, NAM-3606).
28
+ * Every `${sku.*}`-conditioned tile then takes its non-premium branch, matching Apple's
29
+ * `setFocusedSku(nil)` and Roku. This supersedes the earlier set-only rule from NAM-3607.
30
+ *
31
+ * Only focus-IN clears; `_handleBlur` never touches the selection, so focus merely leaving a
32
+ * card does nothing, and on web focus moves only under user input (TVJS), never as a side
33
+ * effect of a re-render — the Compose recomposition-loop hazard behind Android's settle guard
34
+ * does not apply here. Every non-television form factor is ignored: tap drives selection there.
32
35
  */
33
36
  private _selectFocusedProductOnTelevision;
34
37
  private _handleBlur;