react-native-screen-transitions 3.6.0-alpha.4 → 3.6.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.
Files changed (57) hide show
  1. package/lib/commonjs/shared/providers/screen/styles/helpers/resolve-slot-styles/index.js +94 -13
  2. package/lib/commonjs/shared/providers/screen/styles/helpers/resolve-slot-styles/index.js.map +1 -1
  3. package/lib/commonjs/shared/providers/screen/styles/helpers/resolve-slot-styles/materialize-slot.js +4 -1
  4. package/lib/commonjs/shared/providers/screen/styles/helpers/resolve-slot-styles/materialize-slot.js.map +1 -1
  5. package/lib/commonjs/shared/providers/screen/styles/helpers/resolve-slot-styles/types.js +4 -0
  6. package/lib/commonjs/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js +85 -28
  7. package/lib/commonjs/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js.map +1 -1
  8. package/lib/commonjs/shared/providers/screen/styles/hooks/use-resolved-slot-style-map.js +5 -4
  9. package/lib/commonjs/shared/providers/screen/styles/hooks/use-resolved-slot-style-map.js.map +1 -1
  10. package/lib/commonjs/shared/providers/screen/styles/styles.provider.js +2 -2
  11. package/lib/commonjs/shared/providers/screen/styles/styles.provider.js.map +1 -1
  12. package/lib/commonjs/shared/stores/bounds/internals/links.js +18 -3
  13. package/lib/commonjs/shared/stores/bounds/internals/links.js.map +1 -1
  14. package/lib/commonjs/shared/utils/bounds/navigation/zoom/build.js +52 -52
  15. package/lib/commonjs/shared/utils/bounds/navigation/zoom/build.js.map +1 -1
  16. package/lib/commonjs/shared/utils/bounds/navigation/zoom/config.js +1 -1
  17. package/lib/module/shared/providers/screen/styles/helpers/resolve-slot-styles/index.js +95 -14
  18. package/lib/module/shared/providers/screen/styles/helpers/resolve-slot-styles/index.js.map +1 -1
  19. package/lib/module/shared/providers/screen/styles/helpers/resolve-slot-styles/materialize-slot.js +4 -1
  20. package/lib/module/shared/providers/screen/styles/helpers/resolve-slot-styles/materialize-slot.js.map +1 -1
  21. package/lib/module/shared/providers/screen/styles/helpers/resolve-slot-styles/types.js +2 -0
  22. package/lib/module/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js +84 -28
  23. package/lib/module/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js.map +1 -1
  24. package/lib/module/shared/providers/screen/styles/hooks/use-resolved-slot-style-map.js +5 -4
  25. package/lib/module/shared/providers/screen/styles/hooks/use-resolved-slot-style-map.js.map +1 -1
  26. package/lib/module/shared/providers/screen/styles/styles.provider.js +2 -2
  27. package/lib/module/shared/providers/screen/styles/styles.provider.js.map +1 -1
  28. package/lib/module/shared/stores/bounds/internals/links.js +18 -3
  29. package/lib/module/shared/stores/bounds/internals/links.js.map +1 -1
  30. package/lib/module/shared/utils/bounds/navigation/zoom/build.js +50 -50
  31. package/lib/module/shared/utils/bounds/navigation/zoom/build.js.map +1 -1
  32. package/lib/module/shared/utils/bounds/navigation/zoom/config.js +1 -1
  33. package/lib/typescript/shared/providers/screen/styles/helpers/resolve-slot-styles/index.d.ts +4 -4
  34. package/lib/typescript/shared/providers/screen/styles/helpers/resolve-slot-styles/index.d.ts.map +1 -1
  35. package/lib/typescript/shared/providers/screen/styles/helpers/resolve-slot-styles/materialize-slot.d.ts.map +1 -1
  36. package/lib/typescript/shared/providers/screen/styles/helpers/resolve-slot-styles/types.d.ts +2 -0
  37. package/lib/typescript/shared/providers/screen/styles/helpers/resolve-slot-styles/types.d.ts.map +1 -1
  38. package/lib/typescript/shared/providers/screen/styles/hooks/use-interpolated-style-maps.d.ts +6 -6
  39. package/lib/typescript/shared/providers/screen/styles/hooks/use-interpolated-style-maps.d.ts.map +1 -1
  40. package/lib/typescript/shared/providers/screen/styles/hooks/use-resolved-slot-style-map.d.ts +3 -2
  41. package/lib/typescript/shared/providers/screen/styles/hooks/use-resolved-slot-style-map.d.ts.map +1 -1
  42. package/lib/typescript/shared/stores/bounds/internals/links.d.ts.map +1 -1
  43. package/lib/typescript/shared/types/bounds.types.d.ts +27 -0
  44. package/lib/typescript/shared/types/bounds.types.d.ts.map +1 -1
  45. package/lib/typescript/shared/utils/bounds/navigation/zoom/build.d.ts.map +1 -1
  46. package/lib/typescript/shared/utils/bounds/navigation/zoom/config.d.ts +1 -1
  47. package/package.json +1 -1
  48. package/src/shared/providers/screen/styles/helpers/resolve-slot-styles/index.ts +140 -19
  49. package/src/shared/providers/screen/styles/helpers/resolve-slot-styles/materialize-slot.ts +5 -1
  50. package/src/shared/providers/screen/styles/helpers/resolve-slot-styles/types.ts +4 -0
  51. package/src/shared/providers/screen/styles/hooks/use-interpolated-style-maps.tsx +132 -44
  52. package/src/shared/providers/screen/styles/hooks/use-resolved-slot-style-map.tsx +7 -5
  53. package/src/shared/providers/screen/styles/styles.provider.tsx +2 -2
  54. package/src/shared/stores/bounds/internals/links.ts +27 -3
  55. package/src/shared/types/bounds.types.ts +27 -0
  56. package/src/shared/utils/bounds/navigation/zoom/build.ts +68 -73
  57. package/src/shared/utils/bounds/navigation/zoom/config.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"materialize-slot.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shared/providers/screen/styles/helpers/resolve-slot-styles/materialize-slot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AAE1F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAwGpD,eAAO,MAAM,uBAAuB,GAAI,uIAUrC;IACF,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC/C,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC/C,aAAa,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAChD,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC;IAC5C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC;IAC3C,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,OAAO,CAAC;CAC3B,8CA4BA,CAAC"}
1
+ {"version":3,"file":"materialize-slot.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shared/providers/screen/styles/helpers/resolve-slot-styles/materialize-slot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AAE1F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AA4GpD,eAAO,MAAM,uBAAuB,GAAI,uIAUrC;IACF,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC/C,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC/C,aAAa,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAChD,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC;IAC5C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC;IAC3C,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,OAAO,CAAC;CAC3B,8CA4BA,CAAC"}
@@ -1,3 +1,5 @@
1
+ import type { NormalizedTransitionInterpolatedStyle } from "../../../../../types/animation.types";
2
+ export type LocalStyleLayers = NormalizedTransitionInterpolatedStyle[];
1
3
  export type ResettableStyleState = {
2
4
  styleKeys?: Record<string, true>;
3
5
  styleResetValues?: Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shared/providers/screen/styles/helpers/resolve-slot-styles/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAAG;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shared/providers/screen/styles/helpers/resolve-slot-styles/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,sCAAsC,CAAC;AAElG,MAAM,MAAM,gBAAgB,GAAG,qCAAqC,EAAE,CAAC;AAEvE,MAAM,MAAM,oBAAoB,GAAG;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
- import type { NormalizedTransitionInterpolatedStyle } from "../../../../types/animation.types";
1
+ import type { LocalStyleLayers } from "../helpers/resolve-slot-styles";
2
2
  /**
3
- * Builds the raw interpolated styles map for the current screen pass.
3
+ * Builds the raw interpolated style layers for the current screen pass.
4
4
  *
5
5
  * This hook exists to stabilize style ownership during rapid navigation,
6
6
  * especially when an interactive close gesture overlaps with a new navigation
@@ -20,9 +20,9 @@ import type { NormalizedTransitionInterpolatedStyle } from "../../../../types/an
20
20
  * hidden window so animated props and runtime options stay warm, but defer style
21
21
  * buckets so measurement sees the final untransformed layout.
22
22
  *
23
- * The result stays as a single slot map. Resolution happens downstream, where
24
- * slot ids determine whether a slot may inherit from ancestors or must remain
25
- * local to the owning screen container.
23
+ * The result is ordered from lowest to highest priority. Resolution happens
24
+ * downstream, where slot ids determine whether slots inherit from ancestors and
25
+ * where higher owner layers override lower owner layers per key.
26
26
  */
27
- export declare const useInterpolatedStylesMap: () => import("react-native-reanimated").DerivedValue<NormalizedTransitionInterpolatedStyle>;
27
+ export declare const useInterpolatedStylesMap: () => import("react-native-reanimated").DerivedValue<LocalStyleLayers>;
28
28
  //# sourceMappingURL=use-interpolated-style-maps.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-interpolated-style-maps.d.ts","sourceRoot":"","sources":["../../../../../../../src/shared/providers/screen/styles/hooks/use-interpolated-style-maps.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACX,qCAAqC,EAErC,MAAM,mCAAmC,CAAC;AAc3C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,wBAAwB,6FAiHpC,CAAC"}
1
+ {"version":3,"file":"use-interpolated-style-maps.d.ts","sourceRoot":"","sources":["../../../../../../../src/shared/providers/screen/styles/hooks/use-interpolated-style-maps.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAqFvE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,wBAAwB,wEAoHpC,CAAC"}
@@ -1,9 +1,10 @@
1
1
  import { type SharedValue } from "react-native-reanimated";
2
2
  import type { NormalizedTransitionInterpolatedStyle } from "../../../../types/animation.types";
3
+ import { type LocalStyleLayers } from "../helpers/resolve-slot-styles";
3
4
  interface UseResolvedStylesMapParams {
4
- currentStylesMap: SharedValue<NormalizedTransitionInterpolatedStyle>;
5
+ localStylesMaps: SharedValue<LocalStyleLayers>;
5
6
  ancestorStylesMap?: SharedValue<NormalizedTransitionInterpolatedStyle>;
6
7
  }
7
- export declare const useResolvedStylesMap: ({ currentStylesMap, ancestorStylesMap, }: UseResolvedStylesMapParams) => import("react-native-reanimated").DerivedValue<NormalizedTransitionInterpolatedStyle>;
8
+ export declare const useResolvedStylesMap: ({ localStylesMaps, ancestorStylesMap, }: UseResolvedStylesMapParams) => import("react-native-reanimated").DerivedValue<NormalizedTransitionInterpolatedStyle>;
8
9
  export {};
9
10
  //# sourceMappingURL=use-resolved-slot-style-map.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-resolved-slot-style-map.d.ts","sourceRoot":"","sources":["../../../../../../../src/shared/providers/screen/styles/hooks/use-resolved-slot-style-map.tsx"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,WAAW,EAGhB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,mCAAmC,CAAC;AAQ/F,UAAU,0BAA0B;IACnC,gBAAgB,EAAE,WAAW,CAAC,qCAAqC,CAAC,CAAC;IACrE,iBAAiB,CAAC,EAAE,WAAW,CAAC,qCAAqC,CAAC,CAAC;CACvE;AAED,eAAO,MAAM,oBAAoB,GAAI,0CAGlC,0BAA0B,0FAmC5B,CAAC"}
1
+ {"version":3,"file":"use-resolved-slot-style-map.d.ts","sourceRoot":"","sources":["../../../../../../../src/shared/providers/screen/styles/hooks/use-resolved-slot-style-map.tsx"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,WAAW,EAGhB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,mCAAmC,CAAC;AAE/F,OAAO,EACN,KAAK,gBAAgB,EAIrB,MAAM,gCAAgC,CAAC;AAExC,UAAU,0BAA0B;IACnC,eAAe,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC/C,iBAAiB,CAAC,EAAE,WAAW,CAAC,qCAAqC,CAAC,CAAC;CACvE;AAED,eAAO,MAAM,oBAAoB,GAAI,yCAGlC,0BAA0B,0FAoC5B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../../../../../src/shared/stores/bounds/internals/links.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAe9E,OAAO,KAAK,EACX,QAAQ,EACR,OAAO,EAEP,SAAS,EACT,aAAa,EACb,KAAK,EACL,OAAO,EACP,MAAM,UAAU,CAAC;AA4GlB,iBAAS,SAAS,CACjB,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,KAAK,EACV,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,kBAAkB,EAC1B,MAAM,GAAE,UAAe,EACvB,KAAK,CAAC,EAAE,QAAQ,QAiChB;AAED,iBAAS,cAAc,CACtB,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,KAAK,EACV,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,kBAAkB,EAC1B,MAAM,GAAE,UAAe,EACvB,KAAK,CAAC,EAAE,QAAQ,QAWhB;AAED,iBAAS,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,QAO5E;AAED,iBAAS,gBAAgB,CACxB,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,QAAQ,GACb,OAAO,GAAG,IAAI,CAGhB;AAED,iBAAS,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,KAAK,GAAG,OAAO,GAAG,IAAI,CAGnE;AAOD,iBAAS,eAAe,CACvB,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,KAAK,GACR;IAAE,GAAG,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;CAAE,CA+BtC;AAED,iBAAS,SAAS,CACjB,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,KAAK,GACR,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAG1B;AAED,iBAAS,cAAc,CACtB,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,KAAK,GACR,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,CAG/B;AAED,OAAO,EACN,gBAAgB,EAChB,cAAc,EACd,OAAO,EACP,eAAe,EACf,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,SAAS,GACT,CAAC"}
1
+ {"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../../../../../src/shared/stores/bounds/internals/links.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAe9E,OAAO,KAAK,EACX,QAAQ,EACR,OAAO,EAEP,SAAS,EACT,aAAa,EACb,KAAK,EACL,OAAO,EACP,MAAM,UAAU,CAAC;AA4GlB,iBAAS,SAAS,CACjB,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,KAAK,EACV,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,kBAAkB,EAC1B,MAAM,GAAE,UAAe,EACvB,KAAK,CAAC,EAAE,QAAQ,QAiChB;AAED,iBAAS,cAAc,CACtB,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,KAAK,EACV,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,kBAAkB,EAC1B,MAAM,GAAE,UAAe,EACvB,KAAK,CAAC,EAAE,QAAQ,QAWhB;AAED,iBAAS,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,QAO5E;AAED,iBAAS,gBAAgB,CACxB,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,QAAQ,GACb,OAAO,GAAG,IAAI,CAGhB;AAED,iBAAS,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,KAAK,GAAG,OAAO,GAAG,IAAI,CAGnE;AAqBD,iBAAS,eAAe,CACvB,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,KAAK,GACR;IAAE,GAAG,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;CAAE,CAyCtC;AAED,iBAAS,SAAS,CACjB,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,KAAK,GACR,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAG1B;AAED,iBAAS,cAAc,CACtB,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,KAAK,GACR,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,CAG/B;AAED,OAAO,EACN,gBAAgB,EAChB,cAAc,EACd,OAAO,EACP,eAAe,EACf,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,SAAS,GACT,CAAC"}
@@ -62,6 +62,33 @@ export type BoundsNavigationZoomOptions = {
62
62
  * animates above it.
63
63
  */
64
64
  backgroundScale?: number;
65
+ /**
66
+ * Maximum dynamic gesture sensitivity applied by zoom.
67
+ *
68
+ * Zoom lowers gesture sensitivity as the drag gets deeper so the content
69
+ * handoff stays stable. This value controls the starting/highest sensitivity
70
+ * in that curve.
71
+ *
72
+ * @default 0.8
73
+ */
74
+ maxSensitivity?: number;
75
+ /**
76
+ * Velocity-driven depth applied to the dismiss scale handoff.
77
+ *
78
+ * Higher values make fast releases orbit farther around the final scale. Set
79
+ * to `0` to remove the velocity depth effect.
80
+ *
81
+ * @default 0.5
82
+ */
83
+ velocityDepth?: number;
84
+ /**
85
+ * Whether gesture displacement should drive transition progress or remain as
86
+ * freeform gesture values. Zoom defaults to `"freeform"` so drag can move the
87
+ * content without owning the whole screen progress.
88
+ *
89
+ * @default "freeform"
90
+ */
91
+ gestureProgressMode?: GestureProgressMode;
65
92
  /**
66
93
  * Horizontal gesture drag scaling curve, applied when the active dismiss
67
94
  * direction is horizontal.
@@ -1 +1 @@
1
- {"version":3,"file":"bounds.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/bounds.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bounds.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/bounds.types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../../../../../src/shared/utils/bounds/navigation/zoom/build.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAyE5E,wBAAgB,eAAe,CAAC,EAC/B,GAAG,EACH,WAAW,EACX,KAAK,GACL,EAAE,qBAAqB,GAAG,qBAAqB,CA+X/C"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../../../../../src/shared/utils/bounds/navigation/zoom/build.ts"],"names":[],"mappings":"AAwCA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAgC5E,wBAAgB,eAAe,CAAC,EAC/B,GAAG,EACH,WAAW,EACX,KAAK,GACL,EAAE,qBAAqB,GAAG,qBAAqB,CAga/C"}
@@ -8,7 +8,7 @@ export declare const ZOOM_DRAG_DIRECTIONAL_SCALE_EXPONENT = 2;
8
8
  export declare const ZOOM_DRAG_TRANSLATION_NEGATIVE_MAX = 1;
9
9
  export declare const ZOOM_DRAG_TRANSLATION_POSITIVE_MAX = 1;
10
10
  export declare const ZOOM_DRAG_TRANSLATION_EXPONENT = 1;
11
- export declare const ZOOM_DISMISS_SCALE_ORBIT_DEPTH = 0.8;
11
+ export declare const ZOOM_DISMISS_SCALE_ORBIT_DEPTH = 0.5;
12
12
  export declare const ZOOM_BACKGROUND_SCALE = 0.9375;
13
13
  export declare const ZOOM_FOCUSED_ELEMENT_OPEN_OPACITY_RANGE: readonly [0, 0.5, 0, 1];
14
14
  export declare const ZOOM_FOCUSED_ELEMENT_CLOSE_OPACITY_RANGE: readonly [0.6, 1, 0, 1];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-screen-transitions",
3
- "version": "3.6.0-alpha.4",
3
+ "version": "3.6.0",
4
4
  "description": "Easy screen transitions for React Native and Expo",
5
5
  "author": "Ed",
6
6
  "license": "MIT",
@@ -4,16 +4,17 @@ import type {
4
4
  } from "../../../../../types/animation.types";
5
5
  import { shouldSlotInherit } from "../../constants";
6
6
  import { materializeResolvedSlot } from "./materialize-slot";
7
- import { getResolvedSlotState, hasDisappearedKeys } from "./slot-state";
7
+ import { getResolvedSlotState } from "./slot-state";
8
8
  import type {
9
+ LocalStyleLayers,
9
10
  ResettableStyleState,
10
11
  ResettableStyleStatesBySlot,
11
12
  } from "./types";
12
13
 
13
- export type { ResettableStyleStatesBySlot } from "./types";
14
+ export type { LocalStyleLayers, ResettableStyleStatesBySlot } from "./types";
14
15
 
15
16
  type ResolveSlotStylesContext = {
16
- currentStylesMap: NormalizedTransitionInterpolatedStyle;
17
+ localStylesMaps: LocalStyleLayers;
17
18
  ancestorStylesMap: NormalizedTransitionInterpolatedStyle;
18
19
  previousStyleStatesBySlot: ResettableStyleStatesBySlot;
19
20
  deferLocalSlotResets: boolean;
@@ -42,6 +43,35 @@ const hasEitherResetPatch = (
42
43
  return hasStyleResetPatch || hasPropResetPatch;
43
44
  };
44
45
 
46
+ const hasDefinedBucketValue = (value: unknown) => {
47
+ "worklet";
48
+ return value !== undefined && value !== null;
49
+ };
50
+
51
+ const hasResettableDisappearedKeys = (
52
+ previousKeys: Record<string, true> | undefined,
53
+ previousResetValues: Record<string, unknown> | undefined,
54
+ currentKeys: Record<string, true> | undefined,
55
+ ) => {
56
+ "worklet";
57
+
58
+ if (!previousKeys || !previousResetValues) {
59
+ return false;
60
+ }
61
+
62
+ for (const key in previousKeys) {
63
+ if (currentKeys !== undefined && currentKeys[key] === true) {
64
+ continue;
65
+ }
66
+
67
+ if (previousResetValues[key] !== undefined) {
68
+ return true;
69
+ }
70
+ }
71
+
72
+ return false;
73
+ };
74
+
45
75
  const getResolvedSlotOutput = ({
46
76
  slot,
47
77
  previousState,
@@ -58,10 +88,18 @@ const getResolvedSlotOutput = ({
58
88
 
59
89
  const hasStyleResetPatch =
60
90
  resetDroppedKeys &&
61
- hasDisappearedKeys(previousState?.styleKeys, state.styleKeys);
91
+ hasResettableDisappearedKeys(
92
+ previousState?.styleKeys,
93
+ previousState?.styleResetValues,
94
+ state.styleKeys,
95
+ );
62
96
  const hasPropResetPatch =
63
97
  resetDroppedKeys &&
64
- hasDisappearedKeys(previousState?.propKeys, state.propKeys);
98
+ hasResettableDisappearedKeys(
99
+ previousState?.propKeys,
100
+ previousState?.propResetValues,
101
+ state.propKeys,
102
+ );
65
103
  const hasResetPatch = hasEitherResetPatch(
66
104
  hasStyleResetPatch,
67
105
  hasPropResetPatch,
@@ -92,30 +130,105 @@ const getResolvedSlotOutput = ({
92
130
  };
93
131
  };
94
132
 
133
+ const hasLocalStyleSource = (context: ResolveSlotStylesContext) => {
134
+ "worklet";
135
+ return context.localStylesMaps.length > 0;
136
+ };
137
+
138
+ const hasLocalSlot = (context: ResolveSlotStylesContext, slotId: string) => {
139
+ "worklet";
140
+
141
+ for (let index = 0; index < context.localStylesMaps.length; index++) {
142
+ if (context.localStylesMaps[index]?.[slotId] !== undefined) {
143
+ return true;
144
+ }
145
+ }
146
+
147
+ return false;
148
+ };
149
+
95
150
  const shouldDeferMissingLocalSlotReset = (
96
151
  context: ResolveSlotStylesContext,
97
152
  slotId: string,
98
153
  ) => {
99
154
  "worklet";
100
155
  const canInherit = shouldSlotInherit(slotId);
101
- const hasCurrentSlot = context.currentStylesMap[slotId] !== undefined;
156
+ const localSlotExists = hasLocalSlot(context, slotId);
102
157
  const hasInheritedSlot =
103
158
  canInherit && context.ancestorStylesMap[slotId] !== undefined;
104
159
 
105
160
  return (
106
161
  context.deferLocalSlotResets &&
162
+ !hasLocalStyleSource(context) &&
107
163
  !canInherit &&
108
- !hasCurrentSlot &&
164
+ !localSlotExists &&
109
165
  !hasInheritedSlot
110
166
  );
111
167
  };
112
168
 
169
+ const mergeBucket = (
170
+ resolvedBucket: Record<string, unknown> | undefined,
171
+ source: Record<string, unknown> | undefined,
172
+ ) => {
173
+ "worklet";
174
+
175
+ if (!source) {
176
+ return resolvedBucket;
177
+ }
178
+
179
+ let nextBucket = resolvedBucket;
180
+
181
+ for (const key in source) {
182
+ const value = source[key];
183
+
184
+ if (!hasDefinedBucketValue(value)) {
185
+ continue;
186
+ }
187
+
188
+ nextBucket = nextBucket ?? {};
189
+ nextBucket[key] = value;
190
+ }
191
+
192
+ return nextBucket;
193
+ };
194
+
195
+ const getMergedLocalSlot = (
196
+ context: ResolveSlotStylesContext,
197
+ slotId: string,
198
+ ) => {
199
+ "worklet";
200
+ let mergedStyle: Record<string, unknown> | undefined;
201
+ let mergedProps: Record<string, unknown> | undefined;
202
+
203
+ for (let index = 0; index < context.localStylesMaps.length; index++) {
204
+ const slot = context.localStylesMaps[index]?.[slotId];
205
+
206
+ if (slot === undefined) {
207
+ continue;
208
+ }
209
+
210
+ mergedStyle = mergeBucket(
211
+ mergedStyle,
212
+ slot.style as Record<string, unknown> | undefined,
213
+ );
214
+ mergedProps = mergeBucket(mergedProps, slot.props);
215
+ }
216
+
217
+ if (!mergedStyle && !mergedProps) {
218
+ return undefined;
219
+ }
220
+
221
+ return {
222
+ style: mergedStyle,
223
+ props: mergedProps,
224
+ };
225
+ };
226
+
113
227
  const getSlotForId = (context: ResolveSlotStylesContext, slotId: string) => {
114
228
  "worklet";
115
- const currentSlot = context.currentStylesMap[slotId];
116
229
 
117
- if (currentSlot !== undefined) {
118
- return currentSlot;
230
+ if (hasLocalSlot(context, slotId)) {
231
+ return getMergedLocalSlot(context, slotId);
119
232
  }
120
233
 
121
234
  if (shouldSlotInherit(slotId)) {
@@ -326,9 +439,19 @@ const appendResolvedSlot = (
326
439
 
327
440
  const appendCurrentSlots = (context: ResolveSlotStylesContext) => {
328
441
  "worklet";
442
+ const appendedSlotIds: Record<string, true> = {};
443
+
444
+ for (let index = 0; index < context.localStylesMaps.length; index++) {
445
+ const stylesMap = context.localStylesMaps[index];
446
+
447
+ for (const slotId in stylesMap) {
448
+ if (stylesMap[slotId] === undefined || appendedSlotIds[slotId]) {
449
+ continue;
450
+ }
329
451
 
330
- for (const slotId in context.currentStylesMap) {
331
- appendResolvedSlot(context, slotId);
452
+ appendedSlotIds[slotId] = true;
453
+ appendResolvedSlot(context, slotId);
454
+ }
332
455
  }
333
456
  };
334
457
 
@@ -337,9 +460,7 @@ const shouldAppendInheritedSlot = (
337
460
  slotId: string,
338
461
  ) => {
339
462
  "worklet";
340
- return (
341
- shouldSlotInherit(slotId) && context.currentStylesMap[slotId] === undefined
342
- );
463
+ return shouldSlotInherit(slotId) && !hasLocalSlot(context, slotId);
343
464
  };
344
465
 
345
466
  const appendInheritedSlots = (context: ResolveSlotStylesContext) => {
@@ -361,7 +482,7 @@ const shouldAppendPreviousSlot = (
361
482
  shouldSlotInherit(slotId) &&
362
483
  context.ancestorStylesMap[slotId] !== undefined;
363
484
 
364
- return context.currentStylesMap[slotId] === undefined && !inheritedSlotExists;
485
+ return !hasLocalSlot(context, slotId) && !inheritedSlotExists;
365
486
  };
366
487
 
367
488
  const appendPreviousSlots = (context: ResolveSlotStylesContext) => {
@@ -381,12 +502,12 @@ const appendPreviousSlots = (context: ResolveSlotStylesContext) => {
381
502
  * concrete identity values.
382
503
  */
383
504
  export const resolveSlotStyles = ({
384
- currentStylesMap,
505
+ localStylesMaps,
385
506
  ancestorStylesMap,
386
507
  previousStyleStatesBySlot,
387
508
  deferLocalSlotResets = false,
388
509
  }: {
389
- currentStylesMap: NormalizedTransitionInterpolatedStyle;
510
+ localStylesMaps: LocalStyleLayers;
390
511
  ancestorStylesMap: NormalizedTransitionInterpolatedStyle;
391
512
  previousStyleStatesBySlot: ResettableStyleStatesBySlot;
392
513
  deferLocalSlotResets?: boolean;
@@ -395,7 +516,7 @@ export const resolveSlotStyles = ({
395
516
  const resolvedStylesMap: NormalizedTransitionInterpolatedStyle = {};
396
517
  const nextPreviousStyleStatesBySlot: ResettableStyleStatesBySlot = {};
397
518
  const context = {
398
- currentStylesMap,
519
+ localStylesMaps,
399
520
  ancestorStylesMap,
400
521
  previousStyleStatesBySlot,
401
522
  deferLocalSlotResets,
@@ -35,10 +35,14 @@ const materializeResolvedBucket = ({
35
35
  }
36
36
 
37
37
  const previousResetValue = previousResetValues?.[key];
38
- resolvedBucket[key] =
38
+ const resetValue =
39
39
  previousResetValue !== undefined
40
40
  ? previousResetValue
41
41
  : resetValues?.[key];
42
+
43
+ if (resetValue !== undefined) {
44
+ resolvedBucket[key] = resetValue;
45
+ }
42
46
  }
43
47
 
44
48
  if (source) {
@@ -1,3 +1,7 @@
1
+ import type { NormalizedTransitionInterpolatedStyle } from "../../../../../types/animation.types";
2
+
3
+ export type LocalStyleLayers = NormalizedTransitionInterpolatedStyle[];
4
+
1
5
  export type ResettableStyleState = {
2
6
  styleKeys?: Record<string, true>;
3
7
  styleResetValues?: Record<string, unknown>;