diff --git a/.changeset/pre.json b/.changeset/pre.json index d77c0ef..ad117c8 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -20,9 +20,16 @@ }, "changesets": [ "activity-hide-releases-layout", + "alignself-auto-and-space-evenly", + "ancestor-groups-child-focused", + "center-focus-target-header-edge", "classname-style-updates", + "color-parsing-alpha-hex-hsl-space-rgb", + "compat-layer-types-and-snap-alignment", "css-transform-keyword-colors", "derived-value-withtiming-ticks", + "directional-anchor-internal-redirect", + "directional-focus-enclosing-sibling", "flatten-exit-animation-materialize", "flatten-layout-views", "flatten-scroll-fold-through", @@ -33,7 +40,10 @@ "flexbox-sync-flush-settled", "focus-destination-stale-ref-fallback", "focus-events-bubble", + "focus-restoration-excluded-and-translate-reveal", "focus-skip-empty-groups", + "focusable-view-spatial-target", + "fontweight-scale-textalign-textshadow", "grid-focus-cross-axis", "lightning-animated-transform-and-resting-styles", "lightning-aspect-ratio", @@ -46,23 +56,36 @@ "lightning-input-events", "lightning-pressable-focused-state", "lightning-same-parent-reorder", + "lightning-scrollview-native-scroll-ref", "lightning-shader-partial-update", "lightning-text-intrinsic-sizing", "lightning-virtuallist-parity", "lightning-worker-font-url", + "momentum-scroll-callbacks", "percent-translate-own-size", "pixelratio-scene-truth", "reanimated-dep-inference", + "resizeobserver-per-target-geometry", "rounded-clipping-option", + "scrollview-focus-into-view", "text-color-and-refold", + "text-transform-and-ellipsize-modes", + "translate-clear-and-destinations-every-arrival", "two-geese-stand", + "useanimatedstyle-restart-changed-keys", + "view-focus-capture-optional-rn-prop", "virtual-list-viewport-flex", + "virtuallist-grid-separator-gap", "virtuallist-native-snap-props", + "virtuallist-no-estimate-onlayout", "virtuallist-no-react-compiler-memo", "virtuallist-pin-cross-axis", "virtuallist-pin-section-cross-axis", + "virtuallist-reclamp-and-endreached", "virtuallist-reveal-backstop", "virtuallist-reveal-on-settled", + "withrepeat-nonpositive-infinite", + "withtiming-default-easing", "zindex-stacking-scope" ] } diff --git a/apps/react-lightning-example/CHANGELOG.md b/apps/react-lightning-example/CHANGELOG.md index 2d6d566..5496be5 100644 --- a/apps/react-lightning-example/CHANGELOG.md +++ b/apps/react-lightning-example/CHANGELOG.md @@ -1,5 +1,29 @@ # @plextv/react-lightning-example +## 0.4.4-alpha.2 + +### Patch Changes + +- Updated dependencies [c1b31f7] +- Updated dependencies [d065c91] +- Updated dependencies [9606bd7] +- Updated dependencies [a91bb8b] +- Updated dependencies [0621d7d] +- Updated dependencies [3d54c22] +- Updated dependencies [ec39013] +- Updated dependencies [69fead4] +- Updated dependencies [0d769ad] +- Updated dependencies [4b28d02] +- Updated dependencies [e62db77] +- Updated dependencies [431eeca] +- Updated dependencies [2a8ec62] +- Updated dependencies [55f5849] +- Updated dependencies [eb05bf1] + - @plextv/react-lightning-plugin-flexbox@0.4.3-alpha.2 + - @plextv/react-lightning@0.4.3-alpha.2 + - @plextv/react-lightning-components@0.4.4-alpha.2 + - @plextv/react-lightning-plugin-css-transform@0.4.3-alpha.1 + ## 0.4.4-alpha.1 ### Patch Changes diff --git a/apps/react-lightning-example/package.json b/apps/react-lightning-example/package.json index d850998..8886ca0 100644 --- a/apps/react-lightning-example/package.json +++ b/apps/react-lightning-example/package.json @@ -1,6 +1,6 @@ { "name": "@plextv/react-lightning-example", - "version": "0.4.4-alpha.1", + "version": "0.4.4-alpha.2", "private": true, "description": "Sample implementation of @plextv/react-lightning in a React app", "bugs": { diff --git a/apps/react-native-lightning-example/CHANGELOG.md b/apps/react-native-lightning-example/CHANGELOG.md index abbc062..a15978f 100644 --- a/apps/react-native-lightning-example/CHANGELOG.md +++ b/apps/react-native-lightning-example/CHANGELOG.md @@ -1,5 +1,39 @@ # @plextv/react-native-lightning-example +## 0.4.4-alpha.2 + +### Patch Changes + +- Updated dependencies [c1b31f7] +- Updated dependencies [d065c91] +- Updated dependencies [9606bd7] +- Updated dependencies [a91bb8b] +- Updated dependencies [ab7de08] +- Updated dependencies [0621d7d] +- Updated dependencies [3d54c22] +- Updated dependencies [ec39013] +- Updated dependencies [e40e00d] +- Updated dependencies [69fead4] +- Updated dependencies [77dbe29] +- Updated dependencies [0d769ad] +- Updated dependencies [4b28d02] +- Updated dependencies [e62db77] +- Updated dependencies [566570d] +- Updated dependencies [431eeca] +- Updated dependencies [4e90dfe] +- Updated dependencies [5f820c4] +- Updated dependencies [2a8ec62] +- Updated dependencies [55f5849] +- Updated dependencies [eb05bf1] +- Updated dependencies [b65dcbb] +- Updated dependencies [b5722da] + - @plextv/react-lightning-plugin-flexbox@0.4.3-alpha.2 + - @plextv/react-lightning@0.4.3-alpha.2 + - @plextv/react-lightning-components@0.4.4-alpha.2 + - @plextv/react-lightning-plugin-css-transform@0.4.3-alpha.1 + - @plextv/react-native-lightning@0.4.3-alpha.2 + - @plextv/react-lightning-plugin-reanimated@0.4.3-alpha.2 + ## 0.4.4-alpha.1 ### Patch Changes diff --git a/apps/react-native-lightning-example/package.json b/apps/react-native-lightning-example/package.json index 112c382..9e2ca0f 100644 --- a/apps/react-native-lightning-example/package.json +++ b/apps/react-native-lightning-example/package.json @@ -1,6 +1,6 @@ { "name": "@plextv/react-native-lightning-example", - "version": "0.4.4-alpha.1", + "version": "0.4.4-alpha.2", "private": true, "description": "Sample implementation of @plextv/react-native-lightning in a React Native app", "bugs": { diff --git a/apps/storybook/CHANGELOG.md b/apps/storybook/CHANGELOG.md index c2549dd..e90d080 100644 --- a/apps/storybook/CHANGELOG.md +++ b/apps/storybook/CHANGELOG.md @@ -1,5 +1,39 @@ # @plextv/react-lightning-storybook +## 0.4.4-alpha.2 + +### Patch Changes + +- Updated dependencies [c1b31f7] +- Updated dependencies [d065c91] +- Updated dependencies [9606bd7] +- Updated dependencies [a91bb8b] +- Updated dependencies [ab7de08] +- Updated dependencies [0621d7d] +- Updated dependencies [3d54c22] +- Updated dependencies [ec39013] +- Updated dependencies [e40e00d] +- Updated dependencies [69fead4] +- Updated dependencies [77dbe29] +- Updated dependencies [0d769ad] +- Updated dependencies [4b28d02] +- Updated dependencies [e62db77] +- Updated dependencies [566570d] +- Updated dependencies [431eeca] +- Updated dependencies [4e90dfe] +- Updated dependencies [5f820c4] +- Updated dependencies [2a8ec62] +- Updated dependencies [55f5849] +- Updated dependencies [eb05bf1] +- Updated dependencies [b65dcbb] +- Updated dependencies [b5722da] + - @plextv/react-lightning-plugin-flexbox@0.4.3-alpha.2 + - @plextv/react-lightning@0.4.3-alpha.2 + - @plextv/react-lightning-components@0.4.4-alpha.2 + - @plextv/react-lightning-plugin-css-transform@0.4.3-alpha.1 + - @plextv/react-native-lightning@0.4.3-alpha.2 + - @plextv/react-lightning-plugin-reanimated@0.4.3-alpha.2 + ## 0.4.4-alpha.1 ### Patch Changes diff --git a/apps/storybook/package.json b/apps/storybook/package.json index 4ef896f..42cad28 100644 --- a/apps/storybook/package.json +++ b/apps/storybook/package.json @@ -1,6 +1,6 @@ { "name": "@plextv/react-lightning-storybook", - "version": "0.4.4-alpha.1", + "version": "0.4.4-alpha.2", "private": true, "description": "Documentation for react-lightning", "bugs": { diff --git a/packages/plugin-css-transform/CHANGELOG.md b/packages/plugin-css-transform/CHANGELOG.md index ec9f987..4f822c4 100644 --- a/packages/plugin-css-transform/CHANGELOG.md +++ b/packages/plugin-css-transform/CHANGELOG.md @@ -1,5 +1,28 @@ # @plextv/react-lightning-plugin-css-transform +## 0.4.3-alpha.1 + +### Patch Changes + +- a91bb8b: Color parsing handles 8- and 4-digit alpha hex, `hsl()`/`hsla()`, and the modern space-separated `rgb()` form with a `/` alpha delimiter. These previously fell through unparsed. + + `PlatformColor`/`OpaqueColorValue` objects have no resolvable string form, so they're dropped with a warning (like unresolvable keyword colors) instead of throwing and taking the screen down. + +- 69fead4: `fontWeight` keeps the full 100-900 scale. Weights were collapsed to bold/normal, and a numeric string like `'600'` then fell through to 400 in the renderer; numeric strings are parsed and numbers and keywords pass through untouched. Unsupported `textAlign` values are mapped rather than forwarded as-is. + + Text shadow styles (`shadowColor`, `textShadow*`) are dropped with a warning instead of converted: the shipping SDF text renderer has no shadow, and RN's `textShadow*` props were never wired to the renderer's keys. + +- Updated dependencies [c1b31f7] +- Updated dependencies [d065c91] +- Updated dependencies [0621d7d] +- Updated dependencies [3d54c22] +- Updated dependencies [ec39013] +- Updated dependencies [4b28d02] +- Updated dependencies [e62db77] +- Updated dependencies [431eeca] + - @plextv/react-lightning-plugin-flexbox@0.4.3-alpha.2 + - @plextv/react-lightning@0.4.3-alpha.2 + ## 0.4.3-alpha.0 ### Patch Changes diff --git a/packages/plugin-css-transform/package.json b/packages/plugin-css-transform/package.json index c1d6f5a..8c33f64 100644 --- a/packages/plugin-css-transform/package.json +++ b/packages/plugin-css-transform/package.json @@ -1,6 +1,6 @@ { "name": "@plextv/react-lightning-plugin-css-transform", - "version": "0.4.3-alpha.0", + "version": "0.4.3-alpha.1", "description": "Transforms CSS properties to lightning properties. Requires @plextv/react-lightning-plugin-flexbox", "bugs": { "url": "https://github.com/plexinc/react-lightning/issues/new" diff --git a/packages/plugin-flexbox/CHANGELOG.md b/packages/plugin-flexbox/CHANGELOG.md index 1530089..bedcc24 100644 --- a/packages/plugin-flexbox/CHANGELOG.md +++ b/packages/plugin-flexbox/CHANGELOG.md @@ -1,5 +1,23 @@ # @plextv/react-lightning-plugin-flexbox +## 0.4.3-alpha.2 + +### Patch Changes + +- c1b31f7: `alignSelf: 'auto'` resolves to the parent's `alignItems` (yoga `ALIGN_AUTO`) instead of being mapped to a fixed alignment, matching RN's type and behavior. `space-evenly` maps to yoga's `ALIGN_SPACE_EVENLY` rather than sharing the `space-between` case. +- 431eeca: A `transform` is a complete snapshot of the node's transform, so an axis it omits has returned to identity. Yoga now writes translate 0 for that axis instead of leaving the previous pixel inset in place, which a partial style push would otherwise never repaint (a cleared focus offset stayed where it was). + + A focus group with `destinations` also forwards focus on every arrival, not just the first. `destinations` takes precedence over the remembered child, matching native `TVFocusGuideView`, so a reopened nav drawer returns to its selected item. `autoFocus` remains the separate first-then-remember mechanism. + +- Updated dependencies [d065c91] +- Updated dependencies [0621d7d] +- Updated dependencies [3d54c22] +- Updated dependencies [ec39013] +- Updated dependencies [4b28d02] +- Updated dependencies [e62db77] +- Updated dependencies [431eeca] + - @plextv/react-lightning@0.4.3-alpha.2 + ## 0.4.3-alpha.1 ### Patch Changes diff --git a/packages/plugin-flexbox/package.json b/packages/plugin-flexbox/package.json index bfa326c..e660ca2 100644 --- a/packages/plugin-flexbox/package.json +++ b/packages/plugin-flexbox/package.json @@ -1,6 +1,6 @@ { "name": "@plextv/react-lightning-plugin-flexbox", - "version": "0.4.3-alpha.1", + "version": "0.4.3-alpha.2", "description": "Adds FlexBox layout support to @plextv/react-lightning using yoga", "bugs": { "url": "https://github.com/plexinc/react-lightning/issues/new" diff --git a/packages/plugin-reanimated/CHANGELOG.md b/packages/plugin-reanimated/CHANGELOG.md index 5bf89a2..feed85a 100644 --- a/packages/plugin-reanimated/CHANGELOG.md +++ b/packages/plugin-reanimated/CHANGELOG.md @@ -1,5 +1,33 @@ # @plextv/react-lightning-plugin-reanimated +## 0.4.3-alpha.2 + +### Patch Changes + +- 0d769ad: Surface momentum scroll callbacks. VirtualList now fires `onMomentumScrollBegin`/`onMomentumScrollEnd` once around a focus-driven animated scroll — begin when it starts, end when it settles or is cancelled — mirroring tvOS/AndroidTV. The reanimated `useAnimatedScrollHandler` shim now routes the `onMomentumBegin`/`onMomentumEnd` handler keys by event name instead of only ever calling `onScroll`. Consumers that key off momentum (fast-scroll detection, jump-bar auto-hide) can react to the real end of a scroll instead of an idle timeout. +- 4e90dfe: `useAnimatedStyle` restarts only the keys whose animation actually changed. Every update previously tore down and restarted all runners, so an unrelated key's animation was restarted mid-flight and visibly jumped. +- b65dcbb: `withRepeat` treats any count <= 0 as infinite on both the renderer-looped and composed paths, matching native reanimated. Only `-1` was infinite before, so a `0` count stopped immediately instead of looping forever. +- b5722da: `withTiming` with no easing defaults to reanimated's `Easing.inOut(Easing.quad)`, expressed as the equivalent cubic-bezier the renderer parses. It previously fell back to linear, so every un-eased timing animation ran flat. +- Updated dependencies [c1b31f7] +- Updated dependencies [d065c91] +- Updated dependencies [a91bb8b] +- Updated dependencies [ab7de08] +- Updated dependencies [0621d7d] +- Updated dependencies [3d54c22] +- Updated dependencies [ec39013] +- Updated dependencies [e40e00d] +- Updated dependencies [69fead4] +- Updated dependencies [77dbe29] +- Updated dependencies [4b28d02] +- Updated dependencies [e62db77] +- Updated dependencies [566570d] +- Updated dependencies [431eeca] +- Updated dependencies [5f820c4] + - @plextv/react-lightning-plugin-flexbox@0.4.3-alpha.2 + - @plextv/react-lightning@0.4.3-alpha.2 + - @plextv/react-lightning-plugin-css-transform@0.4.3-alpha.1 + - @plextv/react-native-lightning@0.4.3-alpha.2 + ## 0.4.3-alpha.1 ### Patch Changes diff --git a/packages/plugin-reanimated/package.json b/packages/plugin-reanimated/package.json index 4959a8f..aa81621 100644 --- a/packages/plugin-reanimated/package.json +++ b/packages/plugin-reanimated/package.json @@ -1,6 +1,6 @@ { "name": "@plextv/react-lightning-plugin-reanimated", - "version": "0.4.3-alpha.1", + "version": "0.4.3-alpha.2", "description": "Reanimated plugin for @plextv/react-native-lightning", "bugs": { "url": "https://github.com/plexinc/react-lightning/issues/new" diff --git a/packages/react-lightning-components/CHANGELOG.md b/packages/react-lightning-components/CHANGELOG.md index 3838c54..9ec824a 100644 --- a/packages/react-lightning-components/CHANGELOG.md +++ b/packages/react-lightning-components/CHANGELOG.md @@ -1,5 +1,25 @@ # @plextv/react-lightning-components +## 0.4.4-alpha.2 + +### Patch Changes + +- 9606bd7: A center-aligned focus target stays mid-viewport instead of snapping to the header/footer edge. The edge protection left rows near a header or footer stuck at the top or bottom; center placement now wins (tvOS parity), and the downstream clamp still bounds the resulting target. +- 0d769ad: Surface momentum scroll callbacks. VirtualList now fires `onMomentumScrollBegin`/`onMomentumScrollEnd` once around a focus-driven animated scroll — begin when it starts, end when it settles or is cancelled — mirroring tvOS/AndroidTV. The reanimated `useAnimatedScrollHandler` shim now routes the `onMomentumBegin`/`onMomentumEnd` handler keys by event name instead of only ever calling `onScroll`. Consumers that key off momentum (fast-scroll detection, jump-bar auto-hide) can react to the real end of a scroll instead of an idle timeout. +- 2a8ec62: VirtualList reserves the separator size between grid rows. The `ItemSeparatorComponent` size was left out of the multi-column row offsets, so rows sat a separator's height too high and the total content size came up short. Separators sit between rows rather than between columns (matching FlashList), and zero-height empty rows are skipped. +- 55f5849: VirtualList no longer reports the DEFAULT_ITEM_SIZE guess through onLayout. Callers that derive layout from that width (Grid computes numColumns and re-keys the list) would remount the list on every guess-measure-guess cycle, an infinite loop when the list mounts without a laid-out size (e.g. inside a hidden Activity). resolveCrossSize now flags the fallback as an estimate and the onLayout effect skips it. +- eb05bf1: VirtualList reconciles its scroll offset against the latest content size. A shrink reclamps the offset instead of leaving it past the new end, and a list short enough to fit its viewport primes `onEndReached` on mount. The clamp and threshold decision is now shared by the scroll handler and the content-size effect, so both paths agree. +- Updated dependencies [c1b31f7] +- Updated dependencies [d065c91] +- Updated dependencies [0621d7d] +- Updated dependencies [3d54c22] +- Updated dependencies [ec39013] +- Updated dependencies [4b28d02] +- Updated dependencies [e62db77] +- Updated dependencies [431eeca] + - @plextv/react-lightning-plugin-flexbox@0.4.3-alpha.2 + - @plextv/react-lightning@0.4.3-alpha.2 + ## 0.4.4-alpha.1 ### Patch Changes diff --git a/packages/react-lightning-components/package.json b/packages/react-lightning-components/package.json index b9fed4d..c4f23c6 100644 --- a/packages/react-lightning-components/package.json +++ b/packages/react-lightning-components/package.json @@ -1,6 +1,6 @@ { "name": "@plextv/react-lightning-components", - "version": "0.4.4-alpha.1", + "version": "0.4.4-alpha.2", "description": "React components for react-lightning", "bugs": { "url": "https://github.com/plexinc/react-lightning/issues/new" diff --git a/packages/react-lightning/CHANGELOG.md b/packages/react-lightning/CHANGELOG.md index 9a6717e..9481cea 100644 --- a/packages/react-lightning/CHANGELOG.md +++ b/packages/react-lightning/CHANGELOG.md @@ -1,5 +1,22 @@ # @plextv/react-lightning +## 0.4.3-alpha.2 + +### Patch Changes + +- d065c91: Every ancestor focus group is notified when its own directly-focused child changes, not only the group directly above the leaf. A VirtualList whose cells nest their own focus group never learned that focus had crossed a cell, so its scroll-to-focus stopped following. Matches tvOS, where every ancestor hears about focus crossing its children. +- 0621d7d: Anchor directional focus into a nested group and fix internal-redirect self-cycling. Directional nav now beams from the deepest focused leaf and descends by geometry into the chosen sibling, so a narrow-header-beside-wide-group row lands under the source's cross-axis position instead of on the group's first child; a redirect node is returned for the focus manager to forward to its destination. Separately, `_focusNode`'s upward walk now only hands focus off to external redirects: an internal redirect (destinations within the node's own subtree, e.g. an EPG airings guide pointing at its own cells) is already satisfied by the downward-arrival redirect, and re-firing it while walking back up targeted a descendant just visited and self-cycled, aborting the move and stranding focus on the guide's first child. +- 3d54c22: Directional focus can enter a sibling that fully encloses the source on the movement axis. A screen scene behind a floating header keeps its focusable content below the source, but the distance was measured to the sibling's top edge — above the source — so the move was rejected and focus stayed stuck in the header. Such a container is now entered from the source's trailing edge instead. +- ec39013: `focusRestorationExcluded` nodes are skipped by focus restoration. They never become the parent's mount-time default and never inherit focus when the focused sibling unmounts, so a drawer edge guard can't take focus during launch. + + Separately, a node withheld until layout now waits one extra layout pass while a pixel translate hasn't been folded into its position yet — otherwise it painted at its untransformed origin for a frame. Bounded to that single extra pass, so a mis-detected translate can't strand the node invisible. + +- 4b28d02: The ResizeObserver shim reports each entry against its own target's rect. A single shared layout handler meant every observed element was handed the last-laid-out element's geometry, and the handler couldn't be removed per target on `unobserve`/`disconnect`. +- e62db77: `ScrollView` reveals a focused descendant the way native TV scroll views do: scroll the minimum needed to bring it fully into view, and leave already-visible items where they are. `snapToAlignment` only counts as deliberate placement for `center` and `end` — `start` and `item` (paging) aren't real focus targets, and `item` has no alignment math behind it at all, so both fall through to ensure-visible rather than snapping a focused row out of view. Exports `FocusManagerContext` from react-lightning so the compat layer can observe focus changes. +- 431eeca: A `transform` is a complete snapshot of the node's transform, so an axis it omits has returned to identity. Yoga now writes translate 0 for that axis instead of leaving the previous pixel inset in place, which a partial style push would otherwise never repaint (a cleared focus offset stayed where it was). + + A focus group with `destinations` also forwards focus on every arrival, not just the first. `destinations` takes precedence over the remembered child, matching native `TVFocusGuideView`, so a reopened nav drawer returns to its selected item. `autoFocus` remains the separate first-then-remember mechanism. + ## 0.4.3-alpha.1 ### Patch Changes diff --git a/packages/react-lightning/package.json b/packages/react-lightning/package.json index 33e6638..9b5b675 100644 --- a/packages/react-lightning/package.json +++ b/packages/react-lightning/package.json @@ -1,6 +1,6 @@ { "name": "@plextv/react-lightning", - "version": "0.4.3-alpha.1", + "version": "0.4.3-alpha.2", "description": "React renderer for rendering React apps with Lightning.js", "bugs": { "url": "https://github.com/plexinc/react-lightning/issues/new" diff --git a/packages/react-native-lightning/CHANGELOG.md b/packages/react-native-lightning/CHANGELOG.md index c6b83ac..aa98237 100644 --- a/packages/react-native-lightning/CHANGELOG.md +++ b/packages/react-native-lightning/CHANGELOG.md @@ -1,5 +1,52 @@ # @plextv/react-native-lightning +## 0.4.3-alpha.2 + +### Patch Changes + +- ab7de08: Typing fixes across the react-native compat layer exports: `View`'s `onFocusCapture` accepts either the RN or the Lightning handler (intersecting them produced a signature nothing could satisfy), `Pressable` tolerates null `onFocus`/`onBlur`, and `ActivityIndicator` handles the asset-id vs URL mismatch on its image source. `LightningViewElementStyle` comes from the package entry instead of a `src/` deep path. + + `usesExplicitAlignment` also narrows its argument, so `snapToAlignment: 'item'` falls back to `'start'` in the scroll-into-view math rather than being passed through to alignment code that doesn't implement it. + +- e40e00d: A `View` with `focusable` set is registered as a Lightning spatial-focus target. Native treats any focusable View as a nav target, but react-lightning only knew about `useFocus`/`FocusGroup` elements, so a plain focusable View was unreachable by directional nav and never fired `onFocus`. Only opt-in focusable Views pay for the registration; every other View still renders as a bare node. + + Adds `focusRestorationExcluded` for a directional-only catcher: reachable by a deliberate move, but never by restoration or the mount-time default. + +- 77dbe29: fix(react-native-lightning): implement `ScrollView.getNativeScrollRef()` + + Shared RN code that scrolls a selected child into view calls + `scrollRef.current.getNativeScrollRef()` and measures the child against the + returned node (`child.measureLayout(scrollHostNode, ...)`), expecting a + content-relative offset independent of the current scroll position. The Lightning + `ScrollView` never implemented `getNativeScrollRef`, so the call threw + `getNativeScrollRef is not a function`. It now returns the inner scrolled content + container (the node that carries the scroll offset as its own x/y), so + `measureLayout` against it yields the same content-relative coordinates as native + React Native. + +- e62db77: `ScrollView` reveals a focused descendant the way native TV scroll views do: scroll the minimum needed to bring it fully into view, and leave already-visible items where they are. `snapToAlignment` only counts as deliberate placement for `center` and `end` — `start` and `item` (paging) aren't real focus targets, and `item` has no alignment math behind it at all, so both fall through to ensure-visible rather than snapping a focused row out of view. Exports `FocusManagerContext` from react-lightning so the compat layer can observe focus changes. +- 566570d: `Text` applies `textTransform` from its style, and `ellipsizeMode` `head`/`middle` map to a text overflow instead of being dropped — only `clip` and `tail` were handled before. +- 5f820c4: `View`'s `onFocusCapture` type no longer assumes `react-native`'s `ViewProps` declares the prop. react-native-tvos has it, plain react-native doesn't, so the indexed access was a hard `check:types` error for anyone on upstream react-native. Reads the prop only when it's actually present, so both forks typecheck. +- Updated dependencies [c1b31f7] +- Updated dependencies [d065c91] +- Updated dependencies [9606bd7] +- Updated dependencies [a91bb8b] +- Updated dependencies [0621d7d] +- Updated dependencies [3d54c22] +- Updated dependencies [ec39013] +- Updated dependencies [69fead4] +- Updated dependencies [0d769ad] +- Updated dependencies [4b28d02] +- Updated dependencies [e62db77] +- Updated dependencies [431eeca] +- Updated dependencies [2a8ec62] +- Updated dependencies [55f5849] +- Updated dependencies [eb05bf1] + - @plextv/react-lightning-plugin-flexbox@0.4.3-alpha.2 + - @plextv/react-lightning@0.4.3-alpha.2 + - @plextv/react-lightning-components@0.4.4-alpha.2 + - @plextv/react-lightning-plugin-css-transform@0.4.3-alpha.1 + ## 0.4.3-alpha.1 ### Patch Changes diff --git a/packages/react-native-lightning/package.json b/packages/react-native-lightning/package.json index 9ff9f91..52d6ad5 100644 --- a/packages/react-native-lightning/package.json +++ b/packages/react-native-lightning/package.json @@ -1,6 +1,6 @@ { "name": "@plextv/react-native-lightning", - "version": "0.4.3-alpha.1", + "version": "0.4.3-alpha.2", "description": "@plextv/react-lightning implementation for react-native", "bugs": { "url": "https://github.com/plexinc/react-lightning/issues/new"