react-native-screen-transitions 3.9.0-alpha.2 → 3.9.0-beta.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/lib/commonjs/shared/components/boundary/components/boundary-target.js +14 -9
- package/lib/commonjs/shared/components/boundary/components/boundary-target.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/create-boundary-component.js +66 -28
- package/lib/commonjs/shared/components/boundary/create-boundary-component.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/hooks/{use-boundary-presence.js → lifecycles/use-boundary-presence.js} +8 -4
- package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-boundary-presence.js.map +1 -0
- package/lib/commonjs/shared/components/boundary/hooks/{use-initial-destination-measurement.js → lifecycles/use-initial-destination-measurement.js} +27 -10
- package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.js.map +1 -0
- package/lib/commonjs/shared/components/boundary/hooks/{use-initial-source-measurement.js → lifecycles/use-initial-source-measurement.js} +5 -7
- package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-initial-source-measurement.js.map +1 -0
- package/lib/commonjs/shared/components/boundary/hooks/{use-refresh-boundary.js → lifecycles/use-refresh-boundary.js} +4 -4
- package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.js.map +1 -0
- package/lib/commonjs/shared/components/boundary/hooks/use-boundary-measurement.js +14 -35
- package/lib/commonjs/shared/components/boundary/hooks/use-boundary-measurement.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/hooks/use-measurer.js +5 -6
- package/lib/commonjs/shared/components/boundary/hooks/use-measurer.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/index.js +26 -29
- package/lib/commonjs/shared/components/boundary/index.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/portal/components/boundary-local-portal-host.js +58 -0
- package/lib/commonjs/shared/components/boundary/portal/components/boundary-local-portal-host.js.map +1 -0
- package/lib/commonjs/shared/components/boundary/portal/components/host.js +20 -4
- package/lib/commonjs/shared/components/boundary/portal/components/host.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/portal/components/portal-boundary-host.js +78 -27
- package/lib/commonjs/shared/components/boundary/portal/components/portal-boundary-host.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/portal/components/portal.js +195 -121
- package/lib/commonjs/shared/components/boundary/portal/components/portal.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/portal/hooks/use-host-measurement.js +14 -2
- package/lib/commonjs/shared/components/boundary/portal/hooks/use-host-measurement.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/portal/hooks/use-placeholder-styles.js +57 -0
- package/lib/commonjs/shared/components/boundary/portal/hooks/use-placeholder-styles.js.map +1 -0
- package/lib/commonjs/shared/components/boundary/portal/stores/host-registry.store.js +5 -44
- package/lib/commonjs/shared/components/boundary/portal/stores/host-registry.store.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/portal/stores/portal-boundary-host.store.js +37 -5
- package/lib/commonjs/shared/components/boundary/portal/stores/portal-boundary-host.store.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/portal/teleport.js +15 -2
- package/lib/commonjs/shared/components/boundary/portal/teleport.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/portal/utils/has-local-slot.js +18 -0
- package/lib/commonjs/shared/components/boundary/portal/utils/has-local-slot.js.map +1 -0
- package/lib/commonjs/shared/components/boundary/portal/utils/naming.js +10 -3
- package/lib/commonjs/shared/components/boundary/portal/utils/naming.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/portal/utils/offset-style.js +28 -48
- package/lib/commonjs/shared/components/boundary/portal/utils/offset-style.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/portal/utils/ownership.js +254 -0
- package/lib/commonjs/shared/components/boundary/portal/utils/ownership.js.map +1 -0
- package/lib/commonjs/shared/components/boundary/portal/utils/resolve-portal.js +38 -0
- package/lib/commonjs/shared/components/boundary/portal/utils/resolve-portal.js.map +1 -0
- package/lib/commonjs/shared/components/boundary/portal/utils/shallow-equal.js +29 -0
- package/lib/commonjs/shared/components/boundary/portal/utils/shallow-equal.js.map +1 -0
- package/lib/commonjs/shared/components/boundary/portal/utils/teleport-control.js +10 -1
- package/lib/commonjs/shared/components/boundary/portal/utils/teleport-control.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/portal/utils/visible-host.js +25 -0
- package/lib/commonjs/shared/components/boundary/portal/utils/visible-host.js.map +1 -0
- package/lib/commonjs/shared/components/boundary/providers/boundary-root.provider.js +6 -7
- package/lib/commonjs/shared/components/boundary/providers/boundary-root.provider.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/utils/destination-signals.js +1 -22
- package/lib/commonjs/shared/components/boundary/utils/destination-signals.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/utils/refresh-signals.js +0 -21
- package/lib/commonjs/shared/components/boundary/utils/refresh-signals.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/utils/source-signals.js +4 -9
- package/lib/commonjs/shared/components/boundary/utils/source-signals.js.map +1 -1
- package/lib/commonjs/shared/components/masked-view.js +5 -0
- package/lib/commonjs/shared/components/masked-view.js.map +1 -1
- package/lib/commonjs/shared/components/screen-container/layers/backdrop.js +18 -8
- package/lib/commonjs/shared/components/screen-container/layers/backdrop.js.map +1 -1
- package/lib/commonjs/shared/components/screen-container/layers/content.js +34 -16
- package/lib/commonjs/shared/components/screen-container/layers/content.js.map +1 -1
- package/lib/commonjs/shared/components/screen-container/layers/render-component.js +10 -0
- package/lib/commonjs/shared/components/screen-container/layers/render-component.js.map +1 -0
- package/lib/commonjs/shared/components/screen-container/layers/surface-container.js +5 -3
- package/lib/commonjs/shared/components/screen-container/layers/surface-container.js.map +1 -1
- package/lib/commonjs/shared/index.js +4 -0
- package/lib/commonjs/shared/index.js.map +1 -1
- package/lib/commonjs/shared/providers/helpers/measured-bounds-writes.js +6 -3
- package/lib/commonjs/shared/providers/helpers/measured-bounds-writes.js.map +1 -1
- package/lib/commonjs/shared/providers/register-bounds.provider.js +6 -0
- package/lib/commonjs/shared/providers/register-bounds.provider.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/animation/helpers/derivations.js +1 -0
- package/lib/commonjs/shared/providers/screen/animation/helpers/derivations.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/animation/helpers/pipeline.js +1 -0
- package/lib/commonjs/shared/providers/screen/animation/helpers/pipeline.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/styles/helpers/compose-slot-style.js +95 -0
- package/lib/commonjs/shared/providers/screen/styles/helpers/compose-slot-style.js.map +1 -0
- package/lib/commonjs/shared/providers/screen/styles/helpers/normalize-slots.js +30 -9
- package/lib/commonjs/shared/providers/screen/styles/helpers/normalize-slots.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/styles/helpers/resolve-slot-styles/index.js +9 -3
- package/lib/commonjs/shared/providers/screen/styles/helpers/resolve-slot-styles/index.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/styles/helpers/resolve-slot-styles/materialize-slot.js +2 -0
- package/lib/commonjs/shared/providers/screen/styles/helpers/resolve-slot-styles/materialize-slot.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/styles/hooks/slot-resolvers.js +96 -0
- package/lib/commonjs/shared/providers/screen/styles/hooks/slot-resolvers.js.map +1 -0
- package/lib/commonjs/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js +16 -3
- package/lib/commonjs/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/styles/index.js +16 -3
- package/lib/commonjs/shared/providers/screen/styles/index.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/styles/slot.provider.js +22 -51
- package/lib/commonjs/shared/providers/screen/styles/slot.provider.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/styles/stores/slot-references.store.js +53 -0
- package/lib/commonjs/shared/providers/screen/styles/stores/slot-references.store.js.map +1 -0
- package/lib/commonjs/shared/stores/bounds/helpers/link-pairs.helpers.js +22 -2
- package/lib/commonjs/shared/stores/bounds/helpers/link-pairs.helpers.js.map +1 -1
- package/lib/commonjs/shared/stores/bounds/internals/entries.js +11 -4
- package/lib/commonjs/shared/stores/bounds/internals/entries.js.map +1 -1
- package/lib/commonjs/shared/stores/bounds/internals/links.js +134 -51
- package/lib/commonjs/shared/stores/bounds/internals/links.js.map +1 -1
- package/lib/commonjs/shared/stores/bounds/internals/resolver.js +1 -3
- package/lib/commonjs/shared/stores/bounds/internals/resolver.js.map +1 -1
- package/lib/commonjs/shared/stores/system.store.js +5 -0
- package/lib/commonjs/shared/stores/system.store.js.map +1 -1
- package/lib/commonjs/shared/utils/bounds/helpers/styles/compute.js +10 -69
- package/lib/commonjs/shared/utils/bounds/helpers/styles/compute.js.map +1 -1
- package/lib/commonjs/shared/utils/bounds/helpers/styles/local-transform.js +59 -0
- package/lib/commonjs/shared/utils/bounds/helpers/styles/local-transform.js.map +1 -0
- package/lib/module/shared/components/boundary/components/boundary-target.js +12 -7
- package/lib/module/shared/components/boundary/components/boundary-target.js.map +1 -1
- package/lib/module/shared/components/boundary/create-boundary-component.js +67 -29
- package/lib/module/shared/components/boundary/create-boundary-component.js.map +1 -1
- package/lib/module/shared/components/boundary/hooks/{use-boundary-presence.js → lifecycles/use-boundary-presence.js} +8 -4
- package/lib/module/shared/components/boundary/hooks/lifecycles/use-boundary-presence.js.map +1 -0
- package/lib/module/shared/components/boundary/hooks/{use-initial-destination-measurement.js → lifecycles/use-initial-destination-measurement.js} +27 -10
- package/lib/module/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.js.map +1 -0
- package/lib/module/shared/components/boundary/hooks/{use-initial-source-measurement.js → lifecycles/use-initial-source-measurement.js} +5 -7
- package/lib/module/shared/components/boundary/hooks/lifecycles/use-initial-source-measurement.js.map +1 -0
- package/lib/module/shared/components/boundary/hooks/{use-refresh-boundary.js → lifecycles/use-refresh-boundary.js} +4 -4
- package/lib/module/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.js.map +1 -0
- package/lib/module/shared/components/boundary/hooks/use-boundary-measurement.js +15 -36
- package/lib/module/shared/components/boundary/hooks/use-boundary-measurement.js.map +1 -1
- package/lib/module/shared/components/boundary/hooks/use-measurer.js +5 -6
- package/lib/module/shared/components/boundary/hooks/use-measurer.js.map +1 -1
- package/lib/module/shared/components/boundary/index.js +26 -29
- package/lib/module/shared/components/boundary/index.js.map +1 -1
- package/lib/module/shared/components/boundary/portal/components/boundary-local-portal-host.js +53 -0
- package/lib/module/shared/components/boundary/portal/components/boundary-local-portal-host.js.map +1 -0
- package/lib/module/shared/components/boundary/portal/components/host.js +21 -5
- package/lib/module/shared/components/boundary/portal/components/host.js.map +1 -1
- package/lib/module/shared/components/boundary/portal/components/portal-boundary-host.js +79 -28
- package/lib/module/shared/components/boundary/portal/components/portal-boundary-host.js.map +1 -1
- package/lib/module/shared/components/boundary/portal/components/portal.js +201 -127
- package/lib/module/shared/components/boundary/portal/components/portal.js.map +1 -1
- package/lib/module/shared/components/boundary/portal/hooks/use-host-measurement.js +15 -3
- package/lib/module/shared/components/boundary/portal/hooks/use-host-measurement.js.map +1 -1
- package/lib/module/shared/components/boundary/portal/hooks/use-placeholder-styles.js +52 -0
- package/lib/module/shared/components/boundary/portal/hooks/use-placeholder-styles.js.map +1 -0
- package/lib/module/shared/components/boundary/portal/stores/host-registry.store.js +4 -41
- package/lib/module/shared/components/boundary/portal/stores/host-registry.store.js.map +1 -1
- package/lib/module/shared/components/boundary/portal/stores/portal-boundary-host.store.js +35 -4
- package/lib/module/shared/components/boundary/portal/stores/portal-boundary-host.store.js.map +1 -1
- package/lib/module/shared/components/boundary/portal/teleport.js +16 -2
- package/lib/module/shared/components/boundary/portal/teleport.js.map +1 -1
- package/lib/module/shared/components/boundary/portal/utils/has-local-slot.js +13 -0
- package/lib/module/shared/components/boundary/portal/utils/has-local-slot.js.map +1 -0
- package/lib/module/shared/components/boundary/portal/utils/naming.js +8 -2
- package/lib/module/shared/components/boundary/portal/utils/naming.js.map +1 -1
- package/lib/module/shared/components/boundary/portal/utils/offset-style.js +29 -48
- package/lib/module/shared/components/boundary/portal/utils/offset-style.js.map +1 -1
- package/lib/module/shared/components/boundary/portal/utils/ownership.js +246 -0
- package/lib/module/shared/components/boundary/portal/utils/ownership.js.map +1 -0
- package/lib/module/shared/components/boundary/portal/utils/resolve-portal.js +33 -0
- package/lib/module/shared/components/boundary/portal/utils/resolve-portal.js.map +1 -0
- package/lib/module/shared/components/boundary/portal/utils/shallow-equal.js +24 -0
- package/lib/module/shared/components/boundary/portal/utils/shallow-equal.js.map +1 -0
- package/lib/module/shared/components/boundary/portal/utils/teleport-control.js +8 -0
- package/lib/module/shared/components/boundary/portal/utils/teleport-control.js.map +1 -1
- package/lib/module/shared/components/boundary/portal/utils/visible-host.js +20 -0
- package/lib/module/shared/components/boundary/portal/utils/visible-host.js.map +1 -0
- package/lib/module/shared/components/boundary/providers/boundary-root.provider.js +6 -7
- package/lib/module/shared/components/boundary/providers/boundary-root.provider.js.map +1 -1
- package/lib/module/shared/components/boundary/utils/destination-signals.js +2 -23
- package/lib/module/shared/components/boundary/utils/destination-signals.js.map +1 -1
- package/lib/module/shared/components/boundary/utils/refresh-signals.js +0 -21
- package/lib/module/shared/components/boundary/utils/refresh-signals.js.map +1 -1
- package/lib/module/shared/components/boundary/utils/source-signals.js +4 -9
- package/lib/module/shared/components/boundary/utils/source-signals.js.map +1 -1
- package/lib/module/shared/components/masked-view.js +5 -0
- package/lib/module/shared/components/masked-view.js.map +1 -1
- package/lib/module/shared/components/screen-container/layers/backdrop.js +19 -9
- package/lib/module/shared/components/screen-container/layers/backdrop.js.map +1 -1
- package/lib/module/shared/components/screen-container/layers/content.js +35 -17
- package/lib/module/shared/components/screen-container/layers/content.js.map +1 -1
- package/lib/module/shared/components/screen-container/layers/render-component.js +6 -0
- package/lib/module/shared/components/screen-container/layers/render-component.js.map +1 -0
- package/lib/module/shared/components/screen-container/layers/surface-container.js +5 -3
- package/lib/module/shared/components/screen-container/layers/surface-container.js.map +1 -1
- package/lib/module/shared/index.js +4 -0
- package/lib/module/shared/index.js.map +1 -1
- package/lib/module/shared/providers/helpers/measured-bounds-writes.js +6 -3
- package/lib/module/shared/providers/helpers/measured-bounds-writes.js.map +1 -1
- package/lib/module/shared/providers/register-bounds.provider.js +6 -0
- package/lib/module/shared/providers/register-bounds.provider.js.map +1 -1
- package/lib/module/shared/providers/screen/animation/helpers/derivations.js +1 -0
- package/lib/module/shared/providers/screen/animation/helpers/derivations.js.map +1 -1
- package/lib/module/shared/providers/screen/animation/helpers/pipeline.js +1 -0
- package/lib/module/shared/providers/screen/animation/helpers/pipeline.js.map +1 -1
- package/lib/module/shared/providers/screen/styles/helpers/compose-slot-style.js +89 -0
- package/lib/module/shared/providers/screen/styles/helpers/compose-slot-style.js.map +1 -0
- package/lib/module/shared/providers/screen/styles/helpers/normalize-slots.js +30 -9
- package/lib/module/shared/providers/screen/styles/helpers/normalize-slots.js.map +1 -1
- package/lib/module/shared/providers/screen/styles/helpers/resolve-slot-styles/index.js +9 -3
- package/lib/module/shared/providers/screen/styles/helpers/resolve-slot-styles/index.js.map +1 -1
- package/lib/module/shared/providers/screen/styles/helpers/resolve-slot-styles/materialize-slot.js +2 -0
- package/lib/module/shared/providers/screen/styles/helpers/resolve-slot-styles/materialize-slot.js.map +1 -1
- package/lib/module/shared/providers/screen/styles/hooks/slot-resolvers.js +87 -0
- package/lib/module/shared/providers/screen/styles/hooks/slot-resolvers.js.map +1 -0
- package/lib/module/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js +16 -3
- package/lib/module/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js.map +1 -1
- package/lib/module/shared/providers/screen/styles/index.js +2 -1
- package/lib/module/shared/providers/screen/styles/index.js.map +1 -1
- package/lib/module/shared/providers/screen/styles/slot.provider.js +22 -47
- package/lib/module/shared/providers/screen/styles/slot.provider.js.map +1 -1
- package/lib/module/shared/providers/screen/styles/stores/slot-references.store.js +47 -0
- package/lib/module/shared/providers/screen/styles/stores/slot-references.store.js.map +1 -0
- package/lib/module/shared/stores/bounds/helpers/link-pairs.helpers.js +19 -1
- package/lib/module/shared/stores/bounds/helpers/link-pairs.helpers.js.map +1 -1
- package/lib/module/shared/stores/bounds/internals/entries.js +11 -4
- package/lib/module/shared/stores/bounds/internals/entries.js.map +1 -1
- package/lib/module/shared/stores/bounds/internals/links.js +135 -53
- package/lib/module/shared/stores/bounds/internals/links.js.map +1 -1
- package/lib/module/shared/stores/bounds/internals/resolver.js +1 -3
- package/lib/module/shared/stores/bounds/internals/resolver.js.map +1 -1
- package/lib/module/shared/stores/system.store.js +5 -0
- package/lib/module/shared/stores/system.store.js.map +1 -1
- package/lib/module/shared/types/animation.types.js.map +1 -1
- package/lib/module/shared/utils/bounds/helpers/styles/compute.js +10 -69
- package/lib/module/shared/utils/bounds/helpers/styles/compute.js.map +1 -1
- package/lib/module/shared/utils/bounds/helpers/styles/local-transform.js +52 -0
- package/lib/module/shared/utils/bounds/helpers/styles/local-transform.js.map +1 -0
- package/lib/typescript/blank-stack/navigators/create-blank-stack-navigator.d.ts +1 -2
- package/lib/typescript/blank-stack/navigators/create-blank-stack-navigator.d.ts.map +1 -1
- package/lib/typescript/component-stack/components/component-screen.d.ts +1 -1
- package/lib/typescript/component-stack/components/component-screen.d.ts.map +1 -1
- package/lib/typescript/component-stack/navigators/create-component-stack-navigator.d.ts +1 -2
- package/lib/typescript/component-stack/navigators/create-component-stack-navigator.d.ts.map +1 -1
- package/lib/typescript/component-stack/types.d.ts +26 -0
- package/lib/typescript/component-stack/types.d.ts.map +1 -1
- package/lib/typescript/native-stack/navigators/createNativeStackNavigator.d.ts +1 -1
- package/lib/typescript/native-stack/navigators/createNativeStackNavigator.d.ts.map +1 -1
- package/lib/typescript/native-stack/views/NativeStackView.d.ts +1 -2
- package/lib/typescript/native-stack/views/NativeStackView.d.ts.map +1 -1
- package/lib/typescript/native-stack/views/useHeaderConfigProps.d.ts +2 -2
- package/lib/typescript/shared/adapters/with-screen-transitions/context.d.ts +1 -1
- package/lib/typescript/shared/adapters/with-screen-transitions/context.d.ts.map +1 -1
- package/lib/typescript/shared/adapters/with-screen-transitions/stack-layout.d.ts +1 -1
- package/lib/typescript/shared/adapters/with-screen-transitions/stack-layout.d.ts.map +1 -1
- package/lib/typescript/shared/components/activity/variants/activity-container.d.ts +1 -1
- package/lib/typescript/shared/components/activity/variants/activity-container.d.ts.map +1 -1
- package/lib/typescript/shared/components/activity/variants/activity-screen.d.ts +1 -1
- package/lib/typescript/shared/components/activity/variants/activity-screen.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/components/boundary-target.d.ts +1 -1
- package/lib/typescript/shared/components/boundary/components/boundary-target.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/create-boundary-component.d.ts +0 -1
- package/lib/typescript/shared/components/boundary/create-boundary-component.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/hooks/lifecycles/use-boundary-presence.d.ts +11 -0
- package/lib/typescript/shared/components/boundary/hooks/lifecycles/use-boundary-presence.d.ts.map +1 -0
- package/lib/typescript/shared/components/boundary/hooks/{use-initial-destination-measurement.d.ts → lifecycles/use-initial-destination-measurement.d.ts} +2 -2
- package/lib/typescript/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.d.ts.map +1 -0
- package/lib/typescript/shared/components/boundary/hooks/lifecycles/use-initial-source-measurement.d.ts +8 -0
- package/lib/typescript/shared/components/boundary/hooks/lifecycles/use-initial-source-measurement.d.ts.map +1 -0
- package/lib/typescript/shared/components/boundary/hooks/{use-refresh-boundary.d.ts → lifecycles/use-refresh-boundary.d.ts} +2 -2
- package/lib/typescript/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.d.ts.map +1 -0
- package/lib/typescript/shared/components/boundary/hooks/use-boundary-measurement.d.ts +5 -9
- package/lib/typescript/shared/components/boundary/hooks/use-boundary-measurement.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/hooks/use-measurer.d.ts +4 -3
- package/lib/typescript/shared/components/boundary/hooks/use-measurer.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/index.d.ts +35 -24
- package/lib/typescript/shared/components/boundary/index.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/portal/components/boundary-local-portal-host.d.ts +8 -0
- package/lib/typescript/shared/components/boundary/portal/components/boundary-local-portal-host.d.ts.map +1 -0
- package/lib/typescript/shared/components/boundary/portal/components/host.d.ts +2 -2
- package/lib/typescript/shared/components/boundary/portal/components/host.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/portal/components/portal-boundary-host.d.ts +2 -2
- package/lib/typescript/shared/components/boundary/portal/components/portal-boundary-host.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/portal/components/portal-provider.d.ts +1 -1
- package/lib/typescript/shared/components/boundary/portal/components/portal-provider.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/portal/components/portal.d.ts +4 -3
- package/lib/typescript/shared/components/boundary/portal/components/portal.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/portal/hooks/use-host-measurement.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/portal/hooks/use-placeholder-styles.d.ts +17 -0
- package/lib/typescript/shared/components/boundary/portal/hooks/use-placeholder-styles.d.ts.map +1 -0
- package/lib/typescript/shared/components/boundary/portal/stores/host-registry.store.d.ts +0 -7
- package/lib/typescript/shared/components/boundary/portal/stores/host-registry.store.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/portal/stores/portal-boundary-host.store.d.ts +16 -1
- package/lib/typescript/shared/components/boundary/portal/stores/portal-boundary-host.store.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/portal/teleport.d.ts +1 -1
- package/lib/typescript/shared/components/boundary/portal/teleport.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/portal/utils/has-local-slot.d.ts +3 -0
- package/lib/typescript/shared/components/boundary/portal/utils/has-local-slot.d.ts.map +1 -0
- package/lib/typescript/shared/components/boundary/portal/utils/naming.d.ts +2 -1
- package/lib/typescript/shared/components/boundary/portal/utils/naming.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/portal/utils/offset-style.d.ts +23 -30
- package/lib/typescript/shared/components/boundary/portal/utils/offset-style.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/portal/utils/ownership.d.ts +35 -0
- package/lib/typescript/shared/components/boundary/portal/utils/ownership.d.ts.map +1 -0
- package/lib/typescript/shared/components/boundary/portal/utils/resolve-portal.d.ts +12 -0
- package/lib/typescript/shared/components/boundary/portal/utils/resolve-portal.d.ts.map +1 -0
- package/lib/typescript/shared/components/boundary/portal/utils/shallow-equal.d.ts +8 -0
- package/lib/typescript/shared/components/boundary/portal/utils/shallow-equal.d.ts.map +1 -0
- package/lib/typescript/shared/components/boundary/portal/utils/teleport-control.d.ts +4 -0
- package/lib/typescript/shared/components/boundary/portal/utils/teleport-control.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/portal/utils/visible-host.d.ts +8 -0
- package/lib/typescript/shared/components/boundary/portal/utils/visible-host.d.ts.map +1 -0
- package/lib/typescript/shared/components/boundary/providers/boundary-root.provider.d.ts +7 -12
- package/lib/typescript/shared/components/boundary/providers/boundary-root.provider.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/types.d.ts +9 -36
- package/lib/typescript/shared/components/boundary/types.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/utils/destination-signals.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/utils/refresh-signals.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/utils/source-signals.d.ts +0 -1
- package/lib/typescript/shared/components/boundary/utils/source-signals.d.ts.map +1 -1
- package/lib/typescript/shared/components/create-transition-aware-component.d.ts +6 -5
- package/lib/typescript/shared/components/create-transition-aware-component.d.ts.map +1 -1
- package/lib/typescript/shared/components/masked-view.d.ts +5 -1
- package/lib/typescript/shared/components/masked-view.d.ts.map +1 -1
- package/lib/typescript/shared/components/overlay/variations/float-overlay.d.ts +1 -1
- package/lib/typescript/shared/components/overlay/variations/float-overlay.d.ts.map +1 -1
- package/lib/typescript/shared/components/overlay/variations/overlay-host.d.ts +1 -1
- package/lib/typescript/shared/components/overlay/variations/overlay-host.d.ts.map +1 -1
- package/lib/typescript/shared/components/scene-view.d.ts +1 -1
- package/lib/typescript/shared/components/scene-view.d.ts.map +1 -1
- package/lib/typescript/shared/components/screen-container/index.d.ts +1 -1
- package/lib/typescript/shared/components/screen-container/index.d.ts.map +1 -1
- package/lib/typescript/shared/components/screen-container/layers/backdrop.d.ts +1 -1
- package/lib/typescript/shared/components/screen-container/layers/backdrop.d.ts.map +1 -1
- package/lib/typescript/shared/components/screen-container/layers/content.d.ts +1 -1
- package/lib/typescript/shared/components/screen-container/layers/content.d.ts.map +1 -1
- package/lib/typescript/shared/components/screen-container/layers/maybe-masked-navigation-container.d.ts +1 -1
- package/lib/typescript/shared/components/screen-container/layers/maybe-masked-navigation-container.d.ts.map +1 -1
- package/lib/typescript/shared/components/screen-container/layers/render-component.d.ts +3 -0
- package/lib/typescript/shared/components/screen-container/layers/render-component.d.ts.map +1 -0
- package/lib/typescript/shared/components/screen-container/layers/surface-container.d.ts +1 -1
- package/lib/typescript/shared/components/screen-container/layers/surface-container.d.ts.map +1 -1
- package/lib/typescript/shared/hooks/navigation/use-stack.d.ts +1 -1
- package/lib/typescript/shared/hooks/navigation/use-stack.d.ts.map +1 -1
- package/lib/typescript/shared/index.d.ts +731 -683
- package/lib/typescript/shared/index.d.ts.map +1 -1
- package/lib/typescript/shared/providers/helpers/measured-bounds-writes.d.ts +3 -3
- package/lib/typescript/shared/providers/helpers/measured-bounds-writes.d.ts.map +1 -1
- package/lib/typescript/shared/providers/register-bounds.provider.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/animation/helpers/derivations.d.ts +1 -0
- package/lib/typescript/shared/providers/screen/animation/helpers/derivations.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/animation/helpers/pipeline.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/descriptors/descriptors.provider.d.ts +1 -1
- package/lib/typescript/shared/providers/screen/descriptors/descriptors.provider.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/screen-composer.d.ts +1 -1
- package/lib/typescript/shared/providers/screen/screen-composer.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/styles/components/floating-overlay-layer.d.ts +1 -1
- package/lib/typescript/shared/providers/screen/styles/components/floating-overlay-layer.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/styles/helpers/compose-slot-style.d.ts +4 -0
- package/lib/typescript/shared/providers/screen/styles/helpers/compose-slot-style.d.ts.map +1 -0
- package/lib/typescript/shared/providers/screen/styles/helpers/normalize-slots.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/styles/helpers/resolve-slot-styles/index.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/styles/helpers/resolve-slot-styles/materialize-slot.d.ts +2 -1
- package/lib/typescript/shared/providers/screen/styles/helpers/resolve-slot-styles/materialize-slot.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/styles/hooks/slot-resolvers.d.ts +11 -0
- package/lib/typescript/shared/providers/screen/styles/hooks/slot-resolvers.d.ts.map +1 -0
- package/lib/typescript/shared/providers/screen/styles/hooks/use-interpolated-style-maps.d.ts +4 -1
- package/lib/typescript/shared/providers/screen/styles/hooks/use-interpolated-style-maps.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/styles/hooks/use-maybe-block-visibility.d.ts +3 -3
- package/lib/typescript/shared/providers/screen/styles/index.d.ts +2 -1
- package/lib/typescript/shared/providers/screen/styles/index.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/styles/slot.provider.d.ts +5 -10
- package/lib/typescript/shared/providers/screen/styles/slot.provider.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/styles/stores/slot-references.store.d.ts +6 -0
- package/lib/typescript/shared/providers/screen/styles/stores/slot-references.store.d.ts.map +1 -0
- package/lib/typescript/shared/stores/bounds/helpers/link-pairs.helpers.d.ts +2 -0
- package/lib/typescript/shared/stores/bounds/helpers/link-pairs.helpers.d.ts.map +1 -1
- package/lib/typescript/shared/stores/bounds/internals/entries.d.ts.map +1 -1
- package/lib/typescript/shared/stores/bounds/internals/links.d.ts +4 -3
- package/lib/typescript/shared/stores/bounds/internals/links.d.ts.map +1 -1
- package/lib/typescript/shared/stores/bounds/internals/resolver.d.ts.map +1 -1
- package/lib/typescript/shared/stores/bounds/types.d.ts +9 -20
- package/lib/typescript/shared/stores/bounds/types.d.ts.map +1 -1
- package/lib/typescript/shared/stores/system.store.d.ts +1 -0
- package/lib/typescript/shared/stores/system.store.d.ts.map +1 -1
- package/lib/typescript/shared/types/animation.types.d.ts +7 -1
- package/lib/typescript/shared/types/animation.types.d.ts.map +1 -1
- package/lib/typescript/shared/types/index.d.ts +1 -1
- package/lib/typescript/shared/types/index.d.ts.map +1 -1
- package/lib/typescript/shared/types/screen.types.d.ts +99 -4
- package/lib/typescript/shared/types/screen.types.d.ts.map +1 -1
- package/lib/typescript/shared/utils/bounds/helpers/styles/compute.d.ts.map +1 -1
- package/lib/typescript/shared/utils/bounds/helpers/styles/local-transform.d.ts +6 -0
- package/lib/typescript/shared/utils/bounds/helpers/styles/local-transform.d.ts.map +1 -0
- package/lib/typescript/shared/utils/bounds/types/options.d.ts +2 -0
- package/lib/typescript/shared/utils/bounds/types/options.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/component-stack/types.ts +26 -0
- package/src/shared/components/boundary/components/boundary-target.tsx +21 -7
- package/src/shared/components/boundary/create-boundary-component.tsx +92 -28
- package/src/shared/components/boundary/hooks/{use-boundary-presence.ts → lifecycles/use-boundary-presence.ts} +16 -5
- package/src/shared/components/boundary/hooks/{use-initial-destination-measurement.ts → lifecycles/use-initial-destination-measurement.ts} +40 -13
- package/src/shared/components/boundary/hooks/{use-initial-source-measurement.ts → lifecycles/use-initial-source-measurement.ts} +7 -9
- package/src/shared/components/boundary/hooks/{use-refresh-boundary.ts → lifecycles/use-refresh-boundary.ts} +6 -6
- package/src/shared/components/boundary/hooks/use-boundary-measurement.ts +15 -45
- package/src/shared/components/boundary/hooks/use-measurer.ts +9 -14
- package/src/shared/components/boundary/index.tsx +55 -29
- package/src/shared/components/boundary/portal/components/boundary-local-portal-host.tsx +66 -0
- package/src/shared/components/boundary/portal/components/host.tsx +20 -5
- package/src/shared/components/boundary/portal/components/portal-boundary-host.tsx +112 -46
- package/src/shared/components/boundary/portal/components/portal.tsx +263 -134
- package/src/shared/components/boundary/portal/hooks/use-host-measurement.ts +23 -2
- package/src/shared/components/boundary/portal/hooks/use-placeholder-styles.ts +55 -0
- package/src/shared/components/boundary/portal/stores/host-registry.store.ts +4 -51
- package/src/shared/components/boundary/portal/stores/portal-boundary-host.store.ts +59 -6
- package/src/shared/components/boundary/portal/teleport.ts +28 -3
- package/src/shared/components/boundary/portal/utils/has-local-slot.ts +16 -0
- package/src/shared/components/boundary/portal/utils/naming.ts +11 -1
- package/src/shared/components/boundary/portal/utils/offset-style.ts +42 -137
- package/src/shared/components/boundary/portal/utils/ownership.ts +371 -0
- package/src/shared/components/boundary/portal/utils/resolve-portal.ts +50 -0
- package/src/shared/components/boundary/portal/utils/shallow-equal.ts +25 -0
- package/src/shared/components/boundary/portal/utils/teleport-control.ts +12 -0
- package/src/shared/components/boundary/portal/utils/visible-host.ts +24 -0
- package/src/shared/components/boundary/providers/boundary-root.provider.tsx +9 -18
- package/src/shared/components/boundary/types.ts +9 -39
- package/src/shared/components/boundary/utils/destination-signals.ts +1 -32
- package/src/shared/components/boundary/utils/refresh-signals.ts +0 -41
- package/src/shared/components/boundary/utils/source-signals.ts +5 -17
- package/src/shared/components/masked-view.tsx +4 -0
- package/src/shared/components/screen-container/layers/backdrop.tsx +31 -10
- package/src/shared/components/screen-container/layers/content.tsx +61 -22
- package/src/shared/components/screen-container/layers/render-component.ts +9 -0
- package/src/shared/components/screen-container/layers/surface-container.tsx +5 -4
- package/src/shared/index.ts +9 -5
- package/src/shared/providers/helpers/measured-bounds-writes.ts +6 -11
- package/src/shared/providers/register-bounds.provider.tsx +5 -0
- package/src/shared/providers/screen/animation/helpers/derivations.ts +3 -0
- package/src/shared/providers/screen/animation/helpers/pipeline.ts +1 -0
- package/src/shared/providers/screen/styles/helpers/compose-slot-style.ts +129 -0
- package/src/shared/providers/screen/styles/helpers/normalize-slots.ts +45 -8
- package/src/shared/providers/screen/styles/helpers/resolve-slot-styles/index.ts +14 -2
- package/src/shared/providers/screen/styles/helpers/resolve-slot-styles/materialize-slot.ts +3 -0
- package/src/shared/providers/screen/styles/hooks/slot-resolvers.tsx +111 -0
- package/src/shared/providers/screen/styles/hooks/use-interpolated-style-maps.tsx +21 -3
- package/src/shared/providers/screen/styles/index.tsx +8 -3
- package/src/shared/providers/screen/styles/slot.provider.tsx +36 -54
- package/src/shared/providers/screen/styles/stores/slot-references.store.ts +71 -0
- package/src/shared/stores/bounds/helpers/link-pairs.helpers.ts +24 -1
- package/src/shared/stores/bounds/internals/entries.ts +13 -5
- package/src/shared/stores/bounds/internals/links.ts +167 -85
- package/src/shared/stores/bounds/internals/resolver.ts +0 -2
- package/src/shared/stores/bounds/types.ts +10 -22
- package/src/shared/stores/system.store.ts +6 -0
- package/src/shared/types/animation.types.ts +8 -1
- package/src/shared/types/index.ts +5 -0
- package/src/shared/types/screen.types.ts +111 -4
- package/src/shared/utils/bounds/helpers/styles/compute.ts +22 -124
- package/src/shared/utils/bounds/helpers/styles/local-transform.ts +86 -0
- package/src/shared/utils/bounds/types/options.ts +2 -0
- package/lib/commonjs/shared/components/boundary/hooks/use-boundary-presence.js.map +0 -1
- package/lib/commonjs/shared/components/boundary/hooks/use-initial-destination-measurement.js.map +0 -1
- package/lib/commonjs/shared/components/boundary/hooks/use-initial-source-measurement.js.map +0 -1
- package/lib/commonjs/shared/components/boundary/hooks/use-refresh-boundary.js.map +0 -1
- package/lib/commonjs/shared/components/boundary/portal/resolve-portal.js +0 -36
- package/lib/commonjs/shared/components/boundary/portal/resolve-portal.js.map +0 -1
- package/lib/commonjs/shared/components/boundary/portal/utils/attachment.js +0 -40
- package/lib/commonjs/shared/components/boundary/portal/utils/attachment.js.map +0 -1
- package/lib/module/shared/components/boundary/hooks/use-boundary-presence.js.map +0 -1
- package/lib/module/shared/components/boundary/hooks/use-initial-destination-measurement.js.map +0 -1
- package/lib/module/shared/components/boundary/hooks/use-initial-source-measurement.js.map +0 -1
- package/lib/module/shared/components/boundary/hooks/use-refresh-boundary.js.map +0 -1
- package/lib/module/shared/components/boundary/portal/resolve-portal.js +0 -31
- package/lib/module/shared/components/boundary/portal/resolve-portal.js.map +0 -1
- package/lib/module/shared/components/boundary/portal/utils/attachment.js +0 -35
- package/lib/module/shared/components/boundary/portal/utils/attachment.js.map +0 -1
- package/lib/typescript/shared/components/boundary/hooks/use-boundary-presence.d.ts +0 -9
- package/lib/typescript/shared/components/boundary/hooks/use-boundary-presence.d.ts.map +0 -1
- package/lib/typescript/shared/components/boundary/hooks/use-initial-destination-measurement.d.ts.map +0 -1
- package/lib/typescript/shared/components/boundary/hooks/use-initial-source-measurement.d.ts +0 -9
- package/lib/typescript/shared/components/boundary/hooks/use-initial-source-measurement.d.ts.map +0 -1
- package/lib/typescript/shared/components/boundary/hooks/use-refresh-boundary.d.ts.map +0 -1
- package/lib/typescript/shared/components/boundary/portal/resolve-portal.d.ts +0 -14
- package/lib/typescript/shared/components/boundary/portal/resolve-portal.d.ts.map +0 -1
- package/lib/typescript/shared/components/boundary/portal/utils/attachment.d.ts +0 -21
- package/lib/typescript/shared/components/boundary/portal/utils/attachment.d.ts.map +0 -1
- package/src/shared/components/boundary/portal/resolve-portal.ts +0 -40
- package/src/shared/components/boundary/portal/utils/attachment.ts +0 -48
|
@@ -1,26 +1,23 @@
|
|
|
1
1
|
import type { MeasuredDimensions, StyleProps } from "react-native-reanimated";
|
|
2
2
|
import {
|
|
3
3
|
createGroupTag,
|
|
4
|
-
createPendingPairKey,
|
|
5
4
|
ensurePairGroups,
|
|
6
5
|
ensurePairLinks,
|
|
6
|
+
ensurePairSourceRequests,
|
|
7
7
|
getGroupKeyFromTag,
|
|
8
8
|
getLinkKeyFromTag,
|
|
9
9
|
getActiveGroupId as getPairActiveGroupId,
|
|
10
10
|
getDestination as getPairDestination,
|
|
11
11
|
getLink as getPairLink,
|
|
12
12
|
getSource as getPairSource,
|
|
13
|
-
getSourceScreenKeyFromPairKey,
|
|
14
|
-
removePairLink,
|
|
15
13
|
} from "../helpers/link-pairs.helpers";
|
|
16
14
|
import type {
|
|
17
|
-
|
|
15
|
+
BoundaryRuntimeFlags,
|
|
18
16
|
GroupKey,
|
|
19
17
|
LinkKey,
|
|
20
18
|
LinkPairsState,
|
|
21
19
|
ScreenKey,
|
|
22
20
|
ScreenPairKey,
|
|
23
|
-
SourceHostRef,
|
|
24
21
|
SourceTagLinkSide,
|
|
25
22
|
TagID,
|
|
26
23
|
TagLink,
|
|
@@ -36,16 +33,151 @@ const syncLinkStatus = (link: TagLink) => {
|
|
|
36
33
|
: "source-incomplete";
|
|
37
34
|
};
|
|
38
35
|
|
|
36
|
+
type SharedValueLike = {
|
|
37
|
+
_isReanimatedSharedValue: true;
|
|
38
|
+
get?: () => unknown;
|
|
39
|
+
value?: unknown;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const isSharedValueLike = (value: unknown): value is SharedValueLike => {
|
|
43
|
+
"worklet";
|
|
44
|
+
return (
|
|
45
|
+
(value as Partial<SharedValueLike> | null)?._isReanimatedSharedValue ===
|
|
46
|
+
true
|
|
47
|
+
);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const snapshotSharedValue = (value: SharedValueLike): unknown => {
|
|
51
|
+
"worklet";
|
|
52
|
+
return value.value;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
const snapshotTransformArrayValue = (
|
|
56
|
+
value: unknown[],
|
|
57
|
+
): unknown[] | undefined => {
|
|
58
|
+
"worklet";
|
|
59
|
+
const snapshot: unknown[] = [];
|
|
60
|
+
|
|
61
|
+
for (let index = 0; index < value.length; index++) {
|
|
62
|
+
const snapshotValue = snapshotTransformEntryValue(value[index]);
|
|
63
|
+
if (snapshotValue !== undefined) {
|
|
64
|
+
snapshot.push(snapshotValue);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return snapshot;
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
const snapshotTransformEntryValue = (value: unknown): unknown => {
|
|
72
|
+
"worklet";
|
|
73
|
+
if (isSharedValueLike(value)) {
|
|
74
|
+
return snapshotSharedValue(value);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if (Array.isArray(value)) {
|
|
78
|
+
return snapshotTransformArrayValue(value);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if (typeof value === "function") {
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return value === null || typeof value !== "object" ? value : undefined;
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
const snapshotTransformItem = (value: unknown): unknown => {
|
|
89
|
+
"worklet";
|
|
90
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
91
|
+
return snapshotTransformEntryValue(value);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const snapshot: Record<string, unknown> = {};
|
|
95
|
+
const source = value as Record<string, unknown>;
|
|
96
|
+
let hasValue = false;
|
|
97
|
+
|
|
98
|
+
for (const key in source) {
|
|
99
|
+
const snapshotValue = snapshotTransformEntryValue(source[key]);
|
|
100
|
+
if (snapshotValue !== undefined) {
|
|
101
|
+
snapshot[key] = snapshotValue;
|
|
102
|
+
hasValue = true;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return hasValue ? snapshot : undefined;
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
const snapshotTransform = (value: unknown): unknown => {
|
|
110
|
+
"worklet";
|
|
111
|
+
if (!Array.isArray(value)) {
|
|
112
|
+
return undefined;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
const snapshot: unknown[] = [];
|
|
116
|
+
|
|
117
|
+
for (let index = 0; index < value.length; index++) {
|
|
118
|
+
const snapshotValue = snapshotTransformItem(value[index]);
|
|
119
|
+
if (snapshotValue !== undefined) {
|
|
120
|
+
snapshot.push(snapshotValue);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return snapshot;
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Link styles are measurement metadata, not a general style serializer.
|
|
129
|
+
* Snapshot only the fields bounds currently consume: primitives, top-level
|
|
130
|
+
* shared values, and transform entries. Object-valued non-transform styles are
|
|
131
|
+
* intentionally omitted to avoid retaining opaque/native style objects.
|
|
132
|
+
*/
|
|
133
|
+
const snapshotStyles = (styles: StyleProps): StyleProps => {
|
|
134
|
+
"worklet";
|
|
135
|
+
if (!styles || typeof styles !== "object" || Array.isArray(styles)) {
|
|
136
|
+
return {};
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
const snapshot: Record<string, unknown> = {};
|
|
140
|
+
const source = styles as Record<string, unknown>;
|
|
141
|
+
|
|
142
|
+
for (const key in source) {
|
|
143
|
+
const value = source[key];
|
|
144
|
+
|
|
145
|
+
if (key === "transform") {
|
|
146
|
+
const transform = snapshotTransform(value);
|
|
147
|
+
|
|
148
|
+
if (transform !== undefined) {
|
|
149
|
+
snapshot.transform = transform;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
if (isSharedValueLike(value)) {
|
|
156
|
+
snapshot[key] = snapshotSharedValue(value);
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
if (value === null || typeof value !== "object") {
|
|
161
|
+
snapshot[key] = value;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
return snapshot as StyleProps;
|
|
166
|
+
};
|
|
167
|
+
|
|
39
168
|
const createLinkSide = (
|
|
40
169
|
screenKey: ScreenKey,
|
|
41
170
|
bounds: MeasuredDimensions,
|
|
42
171
|
styles: StyleProps,
|
|
172
|
+
runtimeFlags: BoundaryRuntimeFlags = {},
|
|
43
173
|
) => {
|
|
44
174
|
"worklet";
|
|
45
175
|
return {
|
|
46
176
|
screenKey,
|
|
47
177
|
bounds,
|
|
48
|
-
styles,
|
|
178
|
+
styles: snapshotStyles(styles),
|
|
179
|
+
handoff: runtimeFlags.handoff ? true : undefined,
|
|
180
|
+
escapeClipping: runtimeFlags.escapeClipping ? true : undefined,
|
|
49
181
|
};
|
|
50
182
|
};
|
|
51
183
|
|
|
@@ -100,7 +232,9 @@ const writeDestination = (
|
|
|
100
232
|
|
|
101
233
|
link.group = group ?? link.group;
|
|
102
234
|
link.destination = destination;
|
|
103
|
-
link.initialDestination
|
|
235
|
+
if (!link.initialDestination) {
|
|
236
|
+
link.initialDestination = destination;
|
|
237
|
+
}
|
|
104
238
|
syncLinkStatus(link);
|
|
105
239
|
|
|
106
240
|
writePairLink(state, pairKey, linkKey, link);
|
|
@@ -110,41 +244,6 @@ const writeDestination = (
|
|
|
110
244
|
}
|
|
111
245
|
};
|
|
112
246
|
|
|
113
|
-
const promotePendingSource = (
|
|
114
|
-
state: LinkPairsState,
|
|
115
|
-
pairKey: ScreenPairKey,
|
|
116
|
-
linkKey: LinkKey,
|
|
117
|
-
) => {
|
|
118
|
-
"worklet";
|
|
119
|
-
if (getPairLink(state, pairKey, linkKey)) return;
|
|
120
|
-
|
|
121
|
-
const sourceScreenKey = getSourceScreenKeyFromPairKey(pairKey);
|
|
122
|
-
const pendingPairKey = createPendingPairKey(sourceScreenKey);
|
|
123
|
-
if (pendingPairKey === pairKey) return;
|
|
124
|
-
|
|
125
|
-
const pendingLink = getPairLink(state, pendingPairKey, linkKey);
|
|
126
|
-
if (!pendingLink) return;
|
|
127
|
-
|
|
128
|
-
writePairLink(state, pairKey, linkKey, pendingLink);
|
|
129
|
-
|
|
130
|
-
if (pendingLink.group) {
|
|
131
|
-
const pendingGroupState =
|
|
132
|
-
state[pendingPairKey]?.groups?.[pendingLink.group];
|
|
133
|
-
|
|
134
|
-
if (pendingGroupState) {
|
|
135
|
-
writeGroup(
|
|
136
|
-
state,
|
|
137
|
-
pairKey,
|
|
138
|
-
pendingLink.group,
|
|
139
|
-
pendingGroupState.activeId,
|
|
140
|
-
pendingGroupState.initialId,
|
|
141
|
-
);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
removePairLink(state, pendingPairKey, linkKey);
|
|
146
|
-
};
|
|
147
|
-
|
|
148
247
|
function setSource(
|
|
149
248
|
pairKey: ScreenPairKey,
|
|
150
249
|
tag: TagID,
|
|
@@ -152,8 +251,7 @@ function setSource(
|
|
|
152
251
|
bounds: MeasuredDimensions,
|
|
153
252
|
styles: StyleProps = {},
|
|
154
253
|
group?: GroupKey,
|
|
155
|
-
|
|
156
|
-
sourceHost?: SourceHostRef,
|
|
254
|
+
runtimeFlags: BoundaryRuntimeFlags = {},
|
|
157
255
|
) {
|
|
158
256
|
"worklet";
|
|
159
257
|
pairs.modify(<T extends LinkPairsState>(state: T): T => {
|
|
@@ -164,13 +262,8 @@ function setSource(
|
|
|
164
262
|
|
|
165
263
|
const existingLink = pairLinks[linkKey];
|
|
166
264
|
|
|
167
|
-
// Refresh paths may re-measure the source without portal context;
|
|
168
|
-
// keep the previously recorded host in that case.
|
|
169
265
|
const source: SourceTagLinkSide = {
|
|
170
|
-
...createLinkSide(screenKey, bounds, styles),
|
|
171
|
-
portalAttachTarget:
|
|
172
|
-
portalAttachTarget ?? existingLink?.source?.portalAttachTarget,
|
|
173
|
-
sourceHost: sourceHost ?? existingLink?.source?.sourceHost,
|
|
266
|
+
...createLinkSide(screenKey, bounds, styles, runtimeFlags),
|
|
174
267
|
};
|
|
175
268
|
const link =
|
|
176
269
|
existingLink ??
|
|
@@ -184,15 +277,13 @@ function setSource(
|
|
|
184
277
|
|
|
185
278
|
link.group = group ?? link.group;
|
|
186
279
|
link.source = source;
|
|
187
|
-
link.initialSource
|
|
280
|
+
if (!link.initialSource) {
|
|
281
|
+
link.initialSource = source;
|
|
282
|
+
}
|
|
188
283
|
syncLinkStatus(link);
|
|
189
284
|
|
|
190
285
|
pairLinks[linkKey] = link;
|
|
191
|
-
|
|
192
|
-
const pendingPairKey = createPendingPairKey(screenKey);
|
|
193
|
-
if (pendingPairKey !== pairKey) {
|
|
194
|
-
removePairLink(state, pendingPairKey, linkKey);
|
|
195
|
-
}
|
|
286
|
+
delete state[pairKey]?.sourceRequests?.[linkKey];
|
|
196
287
|
|
|
197
288
|
return state;
|
|
198
289
|
});
|
|
@@ -210,7 +301,6 @@ function setDestination(
|
|
|
210
301
|
pairs.modify(<T extends LinkPairsState>(state: T): T => {
|
|
211
302
|
"worklet";
|
|
212
303
|
const linkKey = getLinkKeyFromTag(tag);
|
|
213
|
-
promotePendingSource(state, pairKey, linkKey);
|
|
214
304
|
writeDestination(state, pairKey, linkKey, screenKey, bounds, styles, group);
|
|
215
305
|
|
|
216
306
|
return state;
|
|
@@ -226,6 +316,23 @@ function setActiveGroupId(pairKey: ScreenPairKey, group: GroupKey, tag: TagID) {
|
|
|
226
316
|
});
|
|
227
317
|
}
|
|
228
318
|
|
|
319
|
+
function requestSourceMeasure(pairKey: ScreenPairKey, tag: TagID) {
|
|
320
|
+
"worklet";
|
|
321
|
+
pairs.modify(<T extends LinkPairsState>(state: T): T => {
|
|
322
|
+
"worklet";
|
|
323
|
+
const linkKey = getLinkKeyFromTag(tag);
|
|
324
|
+
const link = getPairLink(state, pairKey, linkKey);
|
|
325
|
+
|
|
326
|
+
if (link?.source || state[pairKey]?.sourceRequests?.[linkKey]) {
|
|
327
|
+
return state;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
ensurePairSourceRequests(state, pairKey)[linkKey] = true;
|
|
331
|
+
|
|
332
|
+
return state;
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
|
|
229
336
|
function getActiveGroupId(
|
|
230
337
|
pairKey: ScreenPairKey,
|
|
231
338
|
group: GroupKey,
|
|
@@ -246,20 +353,6 @@ const hasSourceLink = (
|
|
|
246
353
|
return !!link?.source;
|
|
247
354
|
};
|
|
248
355
|
|
|
249
|
-
const getPendingSourceLink = (
|
|
250
|
-
state: LinkPairsState,
|
|
251
|
-
pairKey: ScreenPairKey,
|
|
252
|
-
linkKey: LinkKey,
|
|
253
|
-
): TagLink | null => {
|
|
254
|
-
"worklet";
|
|
255
|
-
const sourceScreenKey = getSourceScreenKeyFromPairKey(pairKey);
|
|
256
|
-
const pendingPairKey = createPendingPairKey(sourceScreenKey);
|
|
257
|
-
|
|
258
|
-
if (pendingPairKey === pairKey) return null;
|
|
259
|
-
|
|
260
|
-
return getPairLink(state, pendingPairKey, linkKey);
|
|
261
|
-
};
|
|
262
|
-
|
|
263
356
|
function getResolvedLink(
|
|
264
357
|
pairKey: ScreenPairKey,
|
|
265
358
|
tag: TagID,
|
|
@@ -268,17 +361,7 @@ function getResolvedLink(
|
|
|
268
361
|
const state = pairs.get();
|
|
269
362
|
const linkKey = getLinkKeyFromTag(tag);
|
|
270
363
|
const group = getGroupKeyFromTag(tag);
|
|
271
|
-
const
|
|
272
|
-
|
|
273
|
-
// Press-triggered zoom captures the source before navigation under a pending
|
|
274
|
-
// source<> pair. If the destination screen has no Boundary.View, nothing
|
|
275
|
-
// promotes that source into source<>destination, but zoom can still animate to
|
|
276
|
-
// its default top target from the pending source bounds.
|
|
277
|
-
const fallbackPendingLink = requestedLink
|
|
278
|
-
? null
|
|
279
|
-
: getPendingSourceLink(state, pairKey, linkKey);
|
|
280
|
-
|
|
281
|
-
const link = requestedLink ?? fallbackPendingLink;
|
|
364
|
+
const link = getPairLink(state, pairKey, linkKey);
|
|
282
365
|
|
|
283
366
|
// Group active ids can update before the new member has a full source/destination
|
|
284
367
|
// link. As soon as the requested member has source bounds, prefer it; only
|
|
@@ -292,9 +375,7 @@ function getResolvedLink(
|
|
|
292
375
|
|
|
293
376
|
const initialId = state[pairKey]?.groups?.[group]?.initialId;
|
|
294
377
|
if (initialId) {
|
|
295
|
-
const initialLink =
|
|
296
|
-
getPairLink(state, pairKey, initialId) ??
|
|
297
|
-
getPendingSourceLink(state, pairKey, initialId);
|
|
378
|
+
const initialLink = getPairLink(state, pairKey, initialId);
|
|
298
379
|
|
|
299
380
|
if (hasSourceLink(initialLink)) {
|
|
300
381
|
return {
|
|
@@ -332,6 +413,7 @@ export {
|
|
|
332
413
|
getLink,
|
|
333
414
|
getResolvedLink,
|
|
334
415
|
getSource,
|
|
416
|
+
requestSourceMeasure,
|
|
335
417
|
setActiveGroupId,
|
|
336
418
|
setDestination,
|
|
337
419
|
setSource,
|
|
@@ -39,8 +39,6 @@ function resolveTransitionPair(
|
|
|
39
39
|
destinationStyles: matchedLink?.destination?.styles ?? null,
|
|
40
40
|
sourceScreenKey: matchedLink?.source?.screenKey ?? null,
|
|
41
41
|
destinationScreenKey: matchedLink?.destination?.screenKey ?? null,
|
|
42
|
-
sourcePortalAttachTarget: matchedLink?.source?.portalAttachTarget,
|
|
43
|
-
sourceHost: matchedLink?.source?.sourceHost,
|
|
44
42
|
};
|
|
45
43
|
}
|
|
46
44
|
|
|
@@ -24,9 +24,13 @@ export interface BoundTag {
|
|
|
24
24
|
linkKey: LinkKey;
|
|
25
25
|
group?: GroupKey;
|
|
26
26
|
}
|
|
27
|
-
export type BoundsPortalAttachTarget = "current-screen" | "matched-screen";
|
|
28
27
|
export type { ScreenKey } from "../../types/screen.types";
|
|
29
28
|
|
|
29
|
+
export type BoundaryRuntimeFlags = {
|
|
30
|
+
handoff?: boolean;
|
|
31
|
+
escapeClipping?: boolean;
|
|
32
|
+
};
|
|
33
|
+
|
|
30
34
|
type BoundaryConfig = {
|
|
31
35
|
anchor?: BoundsAnchor;
|
|
32
36
|
scaleMode?: BoundsScaleMode;
|
|
@@ -38,7 +42,7 @@ export type Entry = {
|
|
|
38
42
|
bounds: MeasuredDimensions | null;
|
|
39
43
|
styles: StyleProps;
|
|
40
44
|
boundaryConfig?: BoundaryConfig;
|
|
41
|
-
};
|
|
45
|
+
} & BoundaryRuntimeFlags;
|
|
42
46
|
|
|
43
47
|
export type MeasuredEntry = Entry & {
|
|
44
48
|
bounds: MeasuredDimensions;
|
|
@@ -48,6 +52,8 @@ export type EntryPatch = {
|
|
|
48
52
|
bounds?: MeasuredDimensions | null;
|
|
49
53
|
styles?: StyleProps | null;
|
|
50
54
|
boundaryConfig?: BoundaryConfig | null;
|
|
55
|
+
handoff?: boolean | null;
|
|
56
|
+
escapeClipping?: boolean | null;
|
|
51
57
|
};
|
|
52
58
|
|
|
53
59
|
export type ScreenIdentifier = {
|
|
@@ -60,24 +66,7 @@ export type BoundsLinkStatus =
|
|
|
60
66
|
| "complete";
|
|
61
67
|
|
|
62
68
|
export type TagLinkSide = ScreenIdentifier & MeasuredEntry;
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* The source screen's active portal host at measure time. Recorded only when
|
|
66
|
-
* that host captures scroll (a Transition.ScrollView scope) — matched-screen
|
|
67
|
-
* placement uses it as a coordinate space to express the source rect in the
|
|
68
|
-
* source ScrollView's live frame. The portal never attaches here.
|
|
69
|
-
*/
|
|
70
|
-
export type SourceHostRef = {
|
|
71
|
-
hostKey: string;
|
|
72
|
-
capturesScroll: boolean;
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
export type SourceTagLinkSide = TagLinkSide & {
|
|
76
|
-
/** Where this boundary's portal content renders during the transition. */
|
|
77
|
-
portalAttachTarget?: BoundsPortalAttachTarget;
|
|
78
|
-
/** Scroll-scoped host the source originated from, if any. */
|
|
79
|
-
sourceHost?: SourceHostRef;
|
|
80
|
-
};
|
|
69
|
+
export type SourceTagLinkSide = TagLinkSide;
|
|
81
70
|
|
|
82
71
|
type TagLinkBase = {
|
|
83
72
|
group?: GroupKey;
|
|
@@ -128,8 +117,6 @@ export type ResolvedTransitionPair = {
|
|
|
128
117
|
destinationStyles: StyleProps | null;
|
|
129
118
|
sourceScreenKey: ScreenKey | null;
|
|
130
119
|
destinationScreenKey: ScreenKey | null;
|
|
131
|
-
sourcePortalAttachTarget?: BoundsPortalAttachTarget;
|
|
132
|
-
sourceHost?: SourceHostRef;
|
|
133
120
|
};
|
|
134
121
|
|
|
135
122
|
export type LinkGroupState = {
|
|
@@ -140,6 +127,7 @@ export type LinkGroupState = {
|
|
|
140
127
|
export type LinkPairState = {
|
|
141
128
|
links: Record<LinkKey, TagLink>;
|
|
142
129
|
groups: Record<GroupKey, LinkGroupState>;
|
|
130
|
+
sourceRequests?: Record<LinkKey, true>;
|
|
143
131
|
};
|
|
144
132
|
|
|
145
133
|
export type LinkPairsState = Record<ScreenPairKey, LinkPairState>;
|
|
@@ -51,6 +51,7 @@ export interface SystemStoreActions {
|
|
|
51
51
|
clearLifecycleTransitionRequest(): void;
|
|
52
52
|
blockLifecycleStart(): void;
|
|
53
53
|
unblockLifecycleStart(): void;
|
|
54
|
+
drainLifecycleStartBlocks(): void;
|
|
54
55
|
}
|
|
55
56
|
|
|
56
57
|
export type SystemStoreMap = SystemStoreState & {
|
|
@@ -108,5 +109,10 @@ export const SystemStore = createStore<SystemStoreState, SystemStoreActions>({
|
|
|
108
109
|
Math.max(0, bag.pendingLifecycleStartBlockCount.get() - 1),
|
|
109
110
|
);
|
|
110
111
|
},
|
|
112
|
+
|
|
113
|
+
drainLifecycleStartBlocks() {
|
|
114
|
+
"worklet";
|
|
115
|
+
bag.pendingLifecycleStartBlockCount.set(0);
|
|
116
|
+
},
|
|
111
117
|
}),
|
|
112
118
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { TextStyle, ViewStyle } from "react-native";
|
|
2
|
-
import type { StyleProps } from "react-native-reanimated";
|
|
2
|
+
import type { StyleProps, TransformArrayItem } from "react-native-reanimated";
|
|
3
3
|
import type { EdgeInsets } from "react-native-safe-area-context";
|
|
4
4
|
import {
|
|
5
5
|
NAVIGATION_MASK_CONTAINER_STYLE_ID,
|
|
@@ -223,6 +223,12 @@ export interface ScreenInterpolationProps {
|
|
|
223
223
|
*/
|
|
224
224
|
progress: number;
|
|
225
225
|
|
|
226
|
+
/**
|
|
227
|
+
* Combined transition progress of current and next screens, without live
|
|
228
|
+
* gesture contribution.
|
|
229
|
+
*/
|
|
230
|
+
transitionProgress: number;
|
|
231
|
+
|
|
226
232
|
/**
|
|
227
233
|
* Accumulated progress from the current screen's position onwards in the stack.
|
|
228
234
|
* Unlike `progress` (0-2), this ranges from 0-N where N is the number of screens
|
|
@@ -346,6 +352,7 @@ export type TransitionInterpolatorOptions = Omit<
|
|
|
346
352
|
export type NormalizedTransitionSlotStyle = {
|
|
347
353
|
style?: StyleProps;
|
|
348
354
|
props?: TransitionSlotProps;
|
|
355
|
+
boundsLocalTransform?: TransformArrayItem[];
|
|
349
356
|
};
|
|
350
357
|
|
|
351
358
|
/**
|
|
@@ -54,7 +54,12 @@ export type {
|
|
|
54
54
|
GestureTracking,
|
|
55
55
|
InactiveBehavior,
|
|
56
56
|
Layout,
|
|
57
|
+
ScreenBackdropComponent,
|
|
58
|
+
ScreenBackdropComponentProps,
|
|
59
|
+
ScreenContentComponent,
|
|
60
|
+
ScreenContentComponentProps,
|
|
57
61
|
ScreenKey,
|
|
62
|
+
ScreenLayerComponentProps,
|
|
58
63
|
ScreenTransitionConfig,
|
|
59
64
|
TransitionAwareProps,
|
|
60
65
|
} from "./screen.types";
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { ComponentType, ReactNode } from "react";
|
|
2
|
+
import type { ViewProps } from "react-native";
|
|
1
3
|
import type { AnimatedProps } from "react-native-reanimated";
|
|
2
4
|
import type {
|
|
3
5
|
ScreenStyleInterpolator,
|
|
@@ -51,6 +53,71 @@ export type SnapPoint = number | "auto";
|
|
|
51
53
|
|
|
52
54
|
export type BackdropBehavior = "block" | "passthrough" | "dismiss" | "collapse";
|
|
53
55
|
|
|
56
|
+
/**
|
|
57
|
+
* Props passed to custom screen layer component renderers such as
|
|
58
|
+
* {@linkcode ScreenTransitionConfig.backdropComponent}.
|
|
59
|
+
*/
|
|
60
|
+
export type ScreenLayerComponentProps = {
|
|
61
|
+
/**
|
|
62
|
+
* Animated styles for the target layer, including the library-owned base
|
|
63
|
+
* layout style for that layer.
|
|
64
|
+
*/
|
|
65
|
+
styles: AnimatedProps<ViewProps>["style"];
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Animated props resolved from the matching `screenStyleInterpolator` slot.
|
|
69
|
+
*/
|
|
70
|
+
props: AnimatedProps<Record<string, unknown>>["animatedProps"];
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Pointer-event behavior resolved for the current layer state.
|
|
74
|
+
*/
|
|
75
|
+
pointerEvents: ViewProps["pointerEvents"];
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Props passed to {@linkcode ScreenTransitionConfig.backdropComponent} when it
|
|
80
|
+
* is provided as a render-style component.
|
|
81
|
+
*/
|
|
82
|
+
export type ScreenBackdropComponentProps = ScreenLayerComponentProps;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Props passed to {@linkcode ScreenTransitionConfig.contentComponent} when it
|
|
86
|
+
* is provided as a render-style component.
|
|
87
|
+
*/
|
|
88
|
+
export type ScreenContentComponentProps = ScreenLayerComponentProps & {
|
|
89
|
+
/**
|
|
90
|
+
* The screen subtree rendered inside the content layer.
|
|
91
|
+
*/
|
|
92
|
+
children: ReactNode;
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Custom renderer for the backdrop layer.
|
|
97
|
+
*
|
|
98
|
+
* Component types such as `BlurView` are still accepted for compatibility.
|
|
99
|
+
* Function components can also receive {@linkcode ScreenBackdropComponentProps}
|
|
100
|
+
* to render the animated styles and props manually.
|
|
101
|
+
*
|
|
102
|
+
* @see {@linkcode ScreenTransitionConfig.backdropComponent}
|
|
103
|
+
*/
|
|
104
|
+
export type ScreenBackdropComponent =
|
|
105
|
+
| ComponentType<any>
|
|
106
|
+
| ComponentType<ScreenBackdropComponentProps>;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Custom renderer for the screen content layer.
|
|
110
|
+
*
|
|
111
|
+
* Component types such as a custom native view are accepted directly. Function
|
|
112
|
+
* components can also receive {@linkcode ScreenContentComponentProps} to render
|
|
113
|
+
* the animated styles, props, pointer-events, and children manually.
|
|
114
|
+
*
|
|
115
|
+
* @see {@linkcode ScreenTransitionConfig.contentComponent}
|
|
116
|
+
*/
|
|
117
|
+
export type ScreenContentComponent =
|
|
118
|
+
| ComponentType<any>
|
|
119
|
+
| ComponentType<ScreenContentComponentProps>;
|
|
120
|
+
|
|
54
121
|
/**
|
|
55
122
|
* Controls how an inactive screen is retained after it is no longer active.
|
|
56
123
|
*
|
|
@@ -117,6 +184,8 @@ export type TransitionAwareProps<T extends object> = AnimatedProps<T> & {
|
|
|
117
184
|
* <Transition.View sharedBoundTag="profile-avatar">
|
|
118
185
|
* <Avatar size="large" />
|
|
119
186
|
* </Transition.View>
|
|
187
|
+
*
|
|
188
|
+
* @deprecated Use `Transition.Boundary` with `id` instead.
|
|
120
189
|
*/
|
|
121
190
|
sharedBoundTag?: string;
|
|
122
191
|
|
|
@@ -127,6 +196,8 @@ export type TransitionAwareProps<T extends object> = AnimatedProps<T> & {
|
|
|
127
196
|
* Useful when layout can change while unfocused (for example, programmatic
|
|
128
197
|
* ScrollView/FlatList scrolling triggered from another screen).
|
|
129
198
|
*
|
|
199
|
+
* @deprecated Legacy `sharedBoundTag` refresh option. The boundary
|
|
200
|
+
* measurement pipeline refreshes layout through `Transition.Boundary`.
|
|
130
201
|
* @default false
|
|
131
202
|
*/
|
|
132
203
|
remeasureOnFocus?: boolean;
|
|
@@ -209,6 +280,8 @@ export type ScreenTransitionConfig = {
|
|
|
209
280
|
/**
|
|
210
281
|
* How much velocity affects snap point targeting. Lower values make snapping
|
|
211
282
|
* feel more deliberate (iOS-like), higher values make it more responsive to flicks.
|
|
283
|
+
*
|
|
284
|
+
* @deprecated Use `gestureSnapVelocityImpact` instead.
|
|
212
285
|
* @default 0.1
|
|
213
286
|
*/
|
|
214
287
|
snapVelocityImpact?: number;
|
|
@@ -400,13 +473,21 @@ export type ScreenTransitionConfig = {
|
|
|
400
473
|
/**
|
|
401
474
|
* Custom component to render as the backdrop layer (between screens).
|
|
402
475
|
*
|
|
403
|
-
*
|
|
404
|
-
*
|
|
476
|
+
* Direct component types are wrapped with `Animated.createAnimatedComponent`
|
|
477
|
+
* internally. Function components can receive `{ styles, props, pointerEvents }`
|
|
478
|
+
* and decide how to render the layer. Animated styles and props are driven by
|
|
479
|
+
* the `backdrop` slot in the interpolator return value.
|
|
405
480
|
*
|
|
406
481
|
* `backdropBehavior` still controls the wrapping Pressable for dismiss/collapse handling.
|
|
407
482
|
*
|
|
408
483
|
* @example
|
|
409
|
-
* backdropComponent:
|
|
484
|
+
* backdropComponent: ({ styles, props, pointerEvents }) => (
|
|
485
|
+
* <AnimatedBlurView
|
|
486
|
+
* style={styles}
|
|
487
|
+
* animatedProps={props}
|
|
488
|
+
* pointerEvents={pointerEvents}
|
|
489
|
+
* />
|
|
490
|
+
* ),
|
|
410
491
|
* screenStyleInterpolator: ({ progress }) => {
|
|
411
492
|
* "worklet";
|
|
412
493
|
* return {
|
|
@@ -419,7 +500,32 @@ export type ScreenTransitionConfig = {
|
|
|
419
500
|
*
|
|
420
501
|
* @default undefined
|
|
421
502
|
*/
|
|
422
|
-
backdropComponent?:
|
|
503
|
+
backdropComponent?: ScreenBackdropComponent;
|
|
504
|
+
|
|
505
|
+
/**
|
|
506
|
+
* Custom component to render as the screen's content layer.
|
|
507
|
+
*
|
|
508
|
+
* The component receives the `content` slot's animated styles and props. A
|
|
509
|
+
* direct component type is wrapped with `Animated.createAnimatedComponent`;
|
|
510
|
+
* a function component can receive `{ styles, props, pointerEvents, children }`
|
|
511
|
+
* and decide how to render the layer.
|
|
512
|
+
*
|
|
513
|
+
* `contentComponent` replaces `surfaceComponent` for custom screen shells.
|
|
514
|
+
*
|
|
515
|
+
* @example
|
|
516
|
+
* contentComponent: ({ styles, props, pointerEvents, children }) => (
|
|
517
|
+
* <AnimatedSquircleView
|
|
518
|
+
* style={styles}
|
|
519
|
+
* animatedProps={props}
|
|
520
|
+
* pointerEvents={pointerEvents}
|
|
521
|
+
* >
|
|
522
|
+
* {children}
|
|
523
|
+
* </AnimatedSquircleView>
|
|
524
|
+
* )
|
|
525
|
+
*
|
|
526
|
+
* @default undefined
|
|
527
|
+
*/
|
|
528
|
+
contentComponent?: ScreenContentComponent;
|
|
423
529
|
|
|
424
530
|
/**
|
|
425
531
|
* Custom component to render as the screen's surface layer.
|
|
@@ -443,6 +549,7 @@ export type ScreenTransitionConfig = {
|
|
|
443
549
|
* }
|
|
444
550
|
*
|
|
445
551
|
* @default undefined
|
|
552
|
+
* @deprecated Use `contentComponent` instead.
|
|
446
553
|
*/
|
|
447
554
|
surfaceComponent?: React.ComponentType<any>;
|
|
448
555
|
};
|