react-native-screen-transitions 3.4.0-alpha.5 → 3.4.0-alpha.7

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 (234) hide show
  1. package/README.md +1058 -11
  2. package/lib/commonjs/blank-stack/navigators/create-blank-stack-navigator.js +27 -45
  3. package/lib/commonjs/blank-stack/navigators/create-blank-stack-navigator.js.map +1 -1
  4. package/lib/commonjs/component-stack/navigators/create-component-stack-navigator.js +1 -1
  5. package/lib/commonjs/shared/components/create-boundary-component/components/boundary-target.js +39 -0
  6. package/lib/commonjs/shared/components/create-boundary-component/components/boundary-target.js.map +1 -0
  7. package/lib/commonjs/shared/components/create-boundary-component/create-boundary-component.js +232 -0
  8. package/lib/commonjs/shared/components/create-boundary-component/create-boundary-component.js.map +1 -0
  9. package/lib/commonjs/shared/components/create-boundary-component/hooks/helpers/measurement-rules.js +2 -4
  10. package/lib/commonjs/shared/components/create-boundary-component/hooks/helpers/measurement-rules.js.map +1 -1
  11. package/lib/commonjs/shared/components/create-boundary-component/hooks/use-boundary-measure-and-store.js +4 -3
  12. package/lib/commonjs/shared/components/create-boundary-component/hooks/use-boundary-measure-and-store.js.map +1 -1
  13. package/lib/commonjs/shared/components/create-boundary-component/hooks/use-pending-destination-retry-measurement.js +2 -1
  14. package/lib/commonjs/shared/components/create-boundary-component/hooks/use-pending-destination-retry-measurement.js.map +1 -1
  15. package/lib/commonjs/shared/components/create-boundary-component/index.js +20 -214
  16. package/lib/commonjs/shared/components/create-boundary-component/index.js.map +1 -1
  17. package/lib/commonjs/shared/components/create-boundary-component/providers/boundary-owner.provider.js +63 -0
  18. package/lib/commonjs/shared/components/create-boundary-component/providers/boundary-owner.provider.js.map +1 -0
  19. package/lib/commonjs/shared/components/create-transition-aware-component.js +29 -7
  20. package/lib/commonjs/shared/components/create-transition-aware-component.js.map +1 -1
  21. package/lib/commonjs/shared/components/overlay/variations/float-overlay.js +1 -1
  22. package/lib/commonjs/shared/components/screen-container/hooks/use-backdrop-pointer-events.js.map +1 -1
  23. package/lib/commonjs/shared/components/screen-container/index.js +12 -8
  24. package/lib/commonjs/shared/components/screen-container/index.js.map +1 -1
  25. package/lib/commonjs/shared/components/screen-container/layers/backdrop.js +8 -10
  26. package/lib/commonjs/shared/components/screen-container/layers/backdrop.js.map +1 -1
  27. package/lib/commonjs/shared/components/screen-container/layers/content.js +7 -10
  28. package/lib/commonjs/shared/components/screen-container/layers/content.js.map +1 -1
  29. package/lib/commonjs/shared/components/screen-container/layers/maybe-masked-navigation-container.js +4 -4
  30. package/lib/commonjs/shared/components/screen-container/layers/maybe-masked-navigation-container.js.map +1 -1
  31. package/lib/commonjs/shared/components/screen-container/layers/surface-container.js +4 -4
  32. package/lib/commonjs/shared/components/screen-container/layers/surface-container.js.map +1 -1
  33. package/lib/commonjs/shared/constants.js +4 -1
  34. package/lib/commonjs/shared/constants.js.map +1 -1
  35. package/lib/commonjs/shared/providers/screen/animation/helpers/hydrate-transition-state.js +33 -1
  36. package/lib/commonjs/shared/providers/screen/animation/helpers/hydrate-transition-state.js.map +1 -1
  37. package/lib/commonjs/shared/providers/screen/animation/helpers/pipeline.js +2 -0
  38. package/lib/commonjs/shared/providers/screen/animation/helpers/pipeline.js.map +1 -1
  39. package/lib/commonjs/shared/providers/screen/animation/helpers/use-build-transition-state.js +1 -0
  40. package/lib/commonjs/shared/providers/screen/animation/helpers/use-build-transition-state.js.map +1 -1
  41. package/lib/commonjs/shared/providers/screen/screen-composer.js +1 -1
  42. package/lib/commonjs/shared/providers/screen/screen-composer.js.map +1 -1
  43. package/lib/commonjs/shared/providers/screen/styles/helpers/build-resolved-style-map.js +144 -0
  44. package/lib/commonjs/shared/providers/screen/styles/helpers/build-resolved-style-map.js.map +1 -0
  45. package/lib/commonjs/shared/providers/screen/styles/helpers/resolve-interpolated-style-output.js +28 -0
  46. package/lib/commonjs/shared/providers/screen/styles/helpers/resolve-interpolated-style-output.js.map +1 -0
  47. package/lib/commonjs/shared/providers/screen/styles/helpers/split-normalized-style-maps.js +39 -0
  48. package/lib/commonjs/shared/providers/screen/styles/helpers/split-normalized-style-maps.js.map +1 -0
  49. package/lib/commonjs/shared/providers/screen/styles/index.js +25 -0
  50. package/lib/commonjs/shared/providers/screen/styles/index.js.map +1 -0
  51. package/lib/commonjs/shared/providers/screen/{styles.provider.js → styles/styles.provider.js} +47 -39
  52. package/lib/commonjs/shared/providers/screen/styles/styles.provider.js.map +1 -0
  53. package/lib/commonjs/shared/utils/bounds/helpers/compute-bounds-styles.js +1 -1
  54. package/lib/commonjs/shared/utils/bounds/helpers/compute-bounds-styles.js.map +1 -1
  55. package/lib/commonjs/shared/utils/bounds/helpers/style-composers.js +21 -10
  56. package/lib/commonjs/shared/utils/bounds/helpers/style-composers.js.map +1 -1
  57. package/lib/commonjs/shared/utils/bounds/zoom/build.js +57 -31
  58. package/lib/commonjs/shared/utils/bounds/zoom/build.js.map +1 -1
  59. package/lib/module/blank-stack/navigators/create-blank-stack-navigator.js +27 -45
  60. package/lib/module/blank-stack/navigators/create-blank-stack-navigator.js.map +1 -1
  61. package/lib/module/component-stack/navigators/create-component-stack-navigator.js +1 -1
  62. package/lib/module/shared/components/create-boundary-component/components/boundary-target.js +34 -0
  63. package/lib/module/shared/components/create-boundary-component/components/boundary-target.js.map +1 -0
  64. package/lib/module/shared/components/create-boundary-component/create-boundary-component.js +227 -0
  65. package/lib/module/shared/components/create-boundary-component/create-boundary-component.js.map +1 -0
  66. package/lib/module/shared/components/create-boundary-component/hooks/helpers/measurement-rules.js +2 -4
  67. package/lib/module/shared/components/create-boundary-component/hooks/helpers/measurement-rules.js.map +1 -1
  68. package/lib/module/shared/components/create-boundary-component/hooks/use-boundary-measure-and-store.js +4 -3
  69. package/lib/module/shared/components/create-boundary-component/hooks/use-boundary-measure-and-store.js.map +1 -1
  70. package/lib/module/shared/components/create-boundary-component/hooks/use-pending-destination-retry-measurement.js +2 -1
  71. package/lib/module/shared/components/create-boundary-component/hooks/use-pending-destination-retry-measurement.js.map +1 -1
  72. package/lib/module/shared/components/create-boundary-component/index.js +16 -213
  73. package/lib/module/shared/components/create-boundary-component/index.js.map +1 -1
  74. package/lib/module/shared/components/create-boundary-component/providers/boundary-owner.provider.js +56 -0
  75. package/lib/module/shared/components/create-boundary-component/providers/boundary-owner.provider.js.map +1 -0
  76. package/lib/module/shared/components/create-transition-aware-component.js +30 -8
  77. package/lib/module/shared/components/create-transition-aware-component.js.map +1 -1
  78. package/lib/module/shared/components/overlay/variations/float-overlay.js +1 -1
  79. package/lib/module/shared/components/overlay/variations/float-overlay.js.map +1 -1
  80. package/lib/module/shared/components/screen-container/hooks/use-backdrop-pointer-events.js.map +1 -1
  81. package/lib/module/shared/components/screen-container/index.js +12 -8
  82. package/lib/module/shared/components/screen-container/index.js.map +1 -1
  83. package/lib/module/shared/components/screen-container/layers/backdrop.js +8 -10
  84. package/lib/module/shared/components/screen-container/layers/backdrop.js.map +1 -1
  85. package/lib/module/shared/components/screen-container/layers/content.js +7 -10
  86. package/lib/module/shared/components/screen-container/layers/content.js.map +1 -1
  87. package/lib/module/shared/components/screen-container/layers/maybe-masked-navigation-container.js +4 -4
  88. package/lib/module/shared/components/screen-container/layers/maybe-masked-navigation-container.js.map +1 -1
  89. package/lib/module/shared/components/screen-container/layers/surface-container.js +4 -4
  90. package/lib/module/shared/components/screen-container/layers/surface-container.js.map +1 -1
  91. package/lib/module/shared/constants.js +4 -1
  92. package/lib/module/shared/constants.js.map +1 -1
  93. package/lib/module/shared/providers/screen/animation/helpers/hydrate-transition-state.js +32 -1
  94. package/lib/module/shared/providers/screen/animation/helpers/hydrate-transition-state.js.map +1 -1
  95. package/lib/module/shared/providers/screen/animation/helpers/pipeline.js +2 -0
  96. package/lib/module/shared/providers/screen/animation/helpers/pipeline.js.map +1 -1
  97. package/lib/module/shared/providers/screen/animation/helpers/use-build-transition-state.js +1 -0
  98. package/lib/module/shared/providers/screen/animation/helpers/use-build-transition-state.js.map +1 -1
  99. package/lib/module/shared/providers/screen/screen-composer.js +1 -1
  100. package/lib/module/shared/providers/screen/screen-composer.js.map +1 -1
  101. package/lib/module/shared/providers/screen/styles/helpers/build-resolved-style-map.js +139 -0
  102. package/lib/module/shared/providers/screen/styles/helpers/build-resolved-style-map.js.map +1 -0
  103. package/lib/module/shared/providers/screen/styles/helpers/resolve-interpolated-style-output.js +23 -0
  104. package/lib/module/shared/providers/screen/styles/helpers/resolve-interpolated-style-output.js.map +1 -0
  105. package/lib/module/shared/providers/screen/styles/helpers/split-normalized-style-maps.js +34 -0
  106. package/lib/module/shared/providers/screen/styles/helpers/split-normalized-style-maps.js.map +1 -0
  107. package/lib/module/shared/providers/screen/styles/index.js +4 -0
  108. package/lib/module/shared/providers/screen/styles/index.js.map +1 -0
  109. package/lib/module/shared/providers/screen/{styles.provider.js → styles/styles.provider.js} +48 -40
  110. package/lib/module/shared/providers/screen/styles/styles.provider.js.map +1 -0
  111. package/lib/module/shared/utils/bounds/helpers/compute-bounds-styles.js +2 -2
  112. package/lib/module/shared/utils/bounds/helpers/compute-bounds-styles.js.map +1 -1
  113. package/lib/module/shared/utils/bounds/helpers/style-composers.js +21 -10
  114. package/lib/module/shared/utils/bounds/helpers/style-composers.js.map +1 -1
  115. package/lib/module/shared/utils/bounds/zoom/build.js +56 -29
  116. package/lib/module/shared/utils/bounds/zoom/build.js.map +1 -1
  117. package/lib/typescript/blank-stack/navigators/create-blank-stack-navigator.d.ts +9 -15
  118. package/lib/typescript/blank-stack/navigators/create-blank-stack-navigator.d.ts.map +1 -1
  119. package/lib/typescript/blank-stack/types.d.ts +6 -4
  120. package/lib/typescript/blank-stack/types.d.ts.map +1 -1
  121. package/lib/typescript/component-stack/navigators/create-component-stack-navigator.d.ts +1 -1
  122. package/lib/typescript/shared/components/create-boundary-component/components/boundary-target.d.ts +209 -0
  123. package/lib/typescript/shared/components/create-boundary-component/components/boundary-target.d.ts.map +1 -0
  124. package/lib/typescript/shared/components/create-boundary-component/create-boundary-component.d.ts +8 -0
  125. package/lib/typescript/shared/components/create-boundary-component/create-boundary-component.d.ts.map +1 -0
  126. package/lib/typescript/shared/components/create-boundary-component/hooks/helpers/measurement-rules.d.ts.map +1 -1
  127. package/lib/typescript/shared/components/create-boundary-component/hooks/use-boundary-measure-and-store.d.ts +2 -8
  128. package/lib/typescript/shared/components/create-boundary-component/hooks/use-boundary-measure-and-store.d.ts.map +1 -1
  129. package/lib/typescript/shared/components/create-boundary-component/hooks/use-pending-destination-retry-measurement.d.ts +0 -1
  130. package/lib/typescript/shared/components/create-boundary-component/hooks/use-pending-destination-retry-measurement.d.ts.map +1 -1
  131. package/lib/typescript/shared/components/create-boundary-component/index.d.ts +216 -12
  132. package/lib/typescript/shared/components/create-boundary-component/index.d.ts.map +1 -1
  133. package/lib/typescript/shared/components/create-boundary-component/providers/boundary-owner.provider.d.ts +35 -0
  134. package/lib/typescript/shared/components/create-boundary-component/providers/boundary-owner.provider.d.ts.map +1 -0
  135. package/lib/typescript/shared/components/create-transition-aware-component.d.ts.map +1 -1
  136. package/lib/typescript/shared/components/screen-container/hooks/use-backdrop-pointer-events.d.ts +1 -1
  137. package/lib/typescript/shared/components/screen-container/hooks/use-backdrop-pointer-events.d.ts.map +1 -1
  138. package/lib/typescript/shared/components/screen-container/index.d.ts.map +1 -1
  139. package/lib/typescript/shared/components/screen-container/layers/backdrop.d.ts +5 -1
  140. package/lib/typescript/shared/components/screen-container/layers/backdrop.d.ts.map +1 -1
  141. package/lib/typescript/shared/components/screen-container/layers/content.d.ts +3 -1
  142. package/lib/typescript/shared/components/screen-container/layers/content.d.ts.map +1 -1
  143. package/lib/typescript/shared/components/screen-container/layers/maybe-masked-navigation-container.d.ts.map +1 -1
  144. package/lib/typescript/shared/constants.d.ts +1 -0
  145. package/lib/typescript/shared/constants.d.ts.map +1 -1
  146. package/lib/typescript/shared/index.d.ts +209 -2
  147. package/lib/typescript/shared/index.d.ts.map +1 -1
  148. package/lib/typescript/shared/providers/screen/animation/helpers/hydrate-transition-state.d.ts +16 -0
  149. package/lib/typescript/shared/providers/screen/animation/helpers/hydrate-transition-state.d.ts.map +1 -1
  150. package/lib/typescript/shared/providers/screen/animation/helpers/pipeline.d.ts.map +1 -1
  151. package/lib/typescript/shared/providers/screen/animation/helpers/use-build-transition-state.d.ts +1 -0
  152. package/lib/typescript/shared/providers/screen/animation/helpers/use-build-transition-state.d.ts.map +1 -1
  153. package/lib/typescript/shared/providers/screen/styles/helpers/build-resolved-style-map.d.ts +11 -0
  154. package/lib/typescript/shared/providers/screen/styles/helpers/build-resolved-style-map.d.ts.map +1 -0
  155. package/lib/typescript/shared/providers/screen/styles/helpers/resolve-interpolated-style-output.d.ts +7 -0
  156. package/lib/typescript/shared/providers/screen/styles/helpers/resolve-interpolated-style-output.d.ts.map +1 -0
  157. package/lib/typescript/shared/providers/screen/styles/helpers/split-normalized-style-maps.d.ts +6 -0
  158. package/lib/typescript/shared/providers/screen/styles/helpers/split-normalized-style-maps.d.ts.map +1 -0
  159. package/lib/typescript/shared/providers/screen/styles/index.d.ts +2 -0
  160. package/lib/typescript/shared/providers/screen/styles/index.d.ts.map +1 -0
  161. package/lib/typescript/shared/providers/screen/{styles.provider.d.ts → styles/styles.provider.d.ts} +3 -5
  162. package/lib/typescript/shared/providers/screen/styles/styles.provider.d.ts.map +1 -0
  163. package/lib/typescript/shared/types/animation.types.d.ts +16 -9
  164. package/lib/typescript/shared/types/animation.types.d.ts.map +1 -1
  165. package/lib/typescript/shared/types/index.d.ts +1 -1
  166. package/lib/typescript/shared/types/index.d.ts.map +1 -1
  167. package/lib/typescript/shared/types/screen.types.d.ts +4 -5
  168. package/lib/typescript/shared/types/screen.types.d.ts.map +1 -1
  169. package/lib/typescript/shared/utils/bounds/helpers/compute-bounds-styles.d.ts +1 -11
  170. package/lib/typescript/shared/utils/bounds/helpers/compute-bounds-styles.d.ts.map +1 -1
  171. package/lib/typescript/shared/utils/bounds/helpers/style-composers.d.ts.map +1 -1
  172. package/lib/typescript/shared/utils/bounds/zoom/build.d.ts +1 -1
  173. package/lib/typescript/shared/utils/bounds/zoom/build.d.ts.map +1 -1
  174. package/package.json +1 -1
  175. package/src/blank-stack/navigators/create-blank-stack-navigator.tsx +37 -80
  176. package/src/blank-stack/types.ts +7 -4
  177. package/src/component-stack/navigators/create-component-stack-navigator.tsx +1 -1
  178. package/src/shared/components/create-boundary-component/components/boundary-target.tsx +45 -0
  179. package/src/shared/components/create-boundary-component/create-boundary-component.tsx +282 -0
  180. package/src/shared/components/create-boundary-component/hooks/helpers/measurement-rules.ts +2 -7
  181. package/src/shared/components/create-boundary-component/hooks/use-boundary-measure-and-store.ts +6 -10
  182. package/src/shared/components/create-boundary-component/hooks/use-pending-destination-retry-measurement.ts +3 -2
  183. package/src/shared/components/create-boundary-component/index.tsx +16 -252
  184. package/src/shared/components/create-boundary-component/providers/boundary-owner.provider.tsx +109 -0
  185. package/src/shared/components/create-transition-aware-component.tsx +33 -5
  186. package/src/shared/components/overlay/variations/float-overlay.tsx +1 -1
  187. package/src/shared/components/screen-container/hooks/use-backdrop-pointer-events.ts +1 -2
  188. package/src/shared/components/screen-container/index.tsx +12 -6
  189. package/src/shared/components/screen-container/layers/backdrop.tsx +13 -7
  190. package/src/shared/components/screen-container/layers/content.tsx +47 -43
  191. package/src/shared/components/screen-container/layers/maybe-masked-navigation-container.tsx +6 -4
  192. package/src/shared/components/screen-container/layers/surface-container.tsx +4 -4
  193. package/src/shared/constants.ts +3 -0
  194. package/src/shared/index.ts +0 -1
  195. package/src/shared/providers/screen/animation/helpers/hydrate-transition-state.ts +49 -1
  196. package/src/shared/providers/screen/animation/helpers/pipeline.ts +2 -0
  197. package/src/shared/providers/screen/animation/helpers/use-build-transition-state.ts +2 -0
  198. package/src/shared/providers/screen/screen-composer.tsx +1 -1
  199. package/src/shared/providers/screen/styles/helpers/build-resolved-style-map.ts +185 -0
  200. package/src/shared/providers/screen/styles/helpers/resolve-interpolated-style-output.ts +31 -0
  201. package/src/shared/providers/screen/styles/helpers/split-normalized-style-maps.ts +44 -0
  202. package/src/shared/providers/screen/styles/index.tsx +5 -0
  203. package/src/shared/providers/screen/styles/styles.provider.tsx +173 -0
  204. package/src/shared/types/animation.types.ts +18 -10
  205. package/src/shared/types/index.ts +0 -1
  206. package/src/shared/types/screen.types.ts +5 -5
  207. package/src/shared/utils/bounds/helpers/compute-bounds-styles.ts +2 -1
  208. package/src/shared/utils/bounds/helpers/style-composers.ts +11 -0
  209. package/src/shared/utils/bounds/zoom/build.ts +94 -59
  210. package/lib/commonjs/shared/components/screen-container/deferred-visibility-host.js +0 -43
  211. package/lib/commonjs/shared/components/screen-container/deferred-visibility-host.js.map +0 -1
  212. package/lib/commonjs/shared/hooks/animation/use-associated-style.js +0 -234
  213. package/lib/commonjs/shared/hooks/animation/use-associated-style.js.map +0 -1
  214. package/lib/commonjs/shared/providers/screen/helpers/resolve-interpolated-style-output.js +0 -50
  215. package/lib/commonjs/shared/providers/screen/helpers/resolve-interpolated-style-output.js.map +0 -1
  216. package/lib/commonjs/shared/providers/screen/styles.provider.js.map +0 -1
  217. package/lib/module/shared/components/screen-container/deferred-visibility-host.js +0 -38
  218. package/lib/module/shared/components/screen-container/deferred-visibility-host.js.map +0 -1
  219. package/lib/module/shared/hooks/animation/use-associated-style.js +0 -229
  220. package/lib/module/shared/hooks/animation/use-associated-style.js.map +0 -1
  221. package/lib/module/shared/providers/screen/helpers/resolve-interpolated-style-output.js +0 -44
  222. package/lib/module/shared/providers/screen/helpers/resolve-interpolated-style-output.js.map +0 -1
  223. package/lib/module/shared/providers/screen/styles.provider.js.map +0 -1
  224. package/lib/typescript/shared/components/screen-container/deferred-visibility-host.d.ts +0 -13
  225. package/lib/typescript/shared/components/screen-container/deferred-visibility-host.d.ts.map +0 -1
  226. package/lib/typescript/shared/hooks/animation/use-associated-style.d.ts +0 -32
  227. package/lib/typescript/shared/hooks/animation/use-associated-style.d.ts.map +0 -1
  228. package/lib/typescript/shared/providers/screen/helpers/resolve-interpolated-style-output.d.ts +0 -14
  229. package/lib/typescript/shared/providers/screen/helpers/resolve-interpolated-style-output.d.ts.map +0 -1
  230. package/lib/typescript/shared/providers/screen/styles.provider.d.ts.map +0 -1
  231. package/src/shared/components/screen-container/deferred-visibility-host.tsx +0 -37
  232. package/src/shared/hooks/animation/use-associated-style.ts +0 -297
  233. package/src/shared/providers/screen/helpers/resolve-interpolated-style-output.ts +0 -61
  234. package/src/shared/providers/screen/styles.provider.tsx +0 -164
@@ -53,6 +53,15 @@ export type ScreenTransitionState = {
53
53
  */
54
54
  settled: number;
55
55
 
56
+ /**
57
+ * Whether this screen is logically complete for choreography purposes.
58
+ * - `0`: The screen is still meaningfully away from its animation target
59
+ * - `1`: The screen is visually close enough to its target to be treated as done
60
+ *
61
+ * Unlike `settled`, this may become `1` before the underlying spring fully stops.
62
+ */
63
+ logicallySettled: number;
64
+
56
65
  /**
57
66
  * Live gesture values for this screen.
58
67
  * Contains translation (x, y), normalized values (-1 to 1),
@@ -176,6 +185,12 @@ export interface ScreenInterpolationProps {
176
185
  */
177
186
  snapIndex: number;
178
187
 
188
+ /**
189
+ * Whether the active transition is visually close enough to its target to be
190
+ * treated as complete, even if the animation is still physically settling.
191
+ */
192
+ logicallySettled: number;
193
+
179
194
  /**
180
195
  * Function that provides access to bounds helpers for shared screen transitions.
181
196
  */
@@ -194,19 +209,12 @@ export interface ScreenInterpolationProps {
194
209
  }
195
210
 
196
211
  /**
197
- * Explicit signal for hiding a screen's visual subtree until the interpolator
198
- * becomes ready for the current transition frame.
199
- */
200
- export type DeferredScreenStyleSignal = "defer";
201
-
202
- /**
203
- * Returning `'defer'` explicitly hides the screen's visual subtree until the
204
- * transition is ready. Returning `null`, `undefined`, or `{}` applies no
205
- * transition styles for the current frame.
212
+ * Returning `null`, `undefined`, or `{}` applies no transition styles for the
213
+ * current frame.
206
214
  */
207
215
  export type ScreenStyleInterpolator = (
208
216
  props: ScreenInterpolationProps,
209
- ) => TransitionInterpolatedStyle | DeferredScreenStyleSignal | null | undefined;
217
+ ) => TransitionInterpolatedStyle | null | undefined;
210
218
 
211
219
  /**
212
220
  * Animated style properties with full autocomplete.
@@ -2,7 +2,6 @@ export { FALSE, TRUE } from "../constants";
2
2
  export type {
3
3
  AnimatedViewStyle,
4
4
  AnimationConfig,
5
- DeferredScreenStyleSignal,
6
5
  ScreenInterpolationProps,
7
6
  ScreenStyleInterpolator,
8
7
  ScreenTransitionState,
@@ -22,6 +22,8 @@ export type SheetScrollGestureBehavior =
22
22
  */
23
23
  export type SnapPoint = number | "auto";
24
24
 
25
+ export type BackdropBehavior = "block" | "passthrough" | "dismiss" | "collapse";
26
+
25
27
  export type TransitionAwareProps<T extends object> = AnimatedProps<T> & {
26
28
  /**
27
29
  * Connects this component to custom animated styles defined in screenStyleInterpolator.
@@ -81,10 +83,8 @@ export type ScreenTransitionConfig = {
81
83
  /**
82
84
  * The user-provided function to calculate styles based on animation progress.
83
85
  *
84
- * Return `null` to explicitly defer rendering of the screen's visual subtree
85
- * until a later frame. This is useful for transitions such as
86
- * `bounds().navigation.zoom()` where the screen should stay hidden until the
87
- * interpolator has enough state to produce a safe first frame.
86
+ * Return `null`, `undefined`, or `{}` to apply no transition styles for the
87
+ * current frame.
88
88
  */
89
89
  screenStyleInterpolator?: ScreenStyleInterpolator;
90
90
 
@@ -282,7 +282,7 @@ export type ScreenTransitionConfig = {
282
282
  *
283
283
  * @default 'block' (or 'passthrough' for component stacks)
284
284
  */
285
- backdropBehavior?: "block" | "passthrough" | "dismiss" | "collapse";
285
+ backdropBehavior?: BackdropBehavior;
286
286
 
287
287
  /**
288
288
  * Custom component to render as the backdrop layer (between screens).
@@ -5,6 +5,7 @@ import {
5
5
  EXIT_RANGE,
6
6
  FULLSCREEN_DIMENSIONS,
7
7
  HIDDEN_STYLE,
8
+ NO_STYLES,
8
9
  } from "../../../constants";
9
10
  import {
10
11
  BoundStore,
@@ -127,7 +128,7 @@ export const computeBoundStyles = (
127
128
  if (computeOptions.raw) {
128
129
  return EMPTY_BOUND_HELPER_RESULT_RAW;
129
130
  }
130
- return HIDDEN_STYLE;
131
+ return NO_STYLES;
131
132
  }
132
133
 
133
134
  const {
@@ -1,4 +1,5 @@
1
1
  import type { MeasuredDimensions, StyleProps } from "react-native-reanimated";
2
+ import { VISIBLE_STYLE } from "../../../constants";
2
3
  import type {
3
4
  ContentTransformGeometry,
4
5
  RelativeGeometry,
@@ -132,6 +133,7 @@ export function composeSizeAbsolute(params: ElementComposeParams): StyleProps {
132
133
  height,
133
134
  translateX,
134
135
  translateY,
136
+ ...VISIBLE_STYLE,
135
137
  };
136
138
  }
137
139
 
@@ -139,6 +141,7 @@ export function composeSizeAbsolute(params: ElementComposeParams): StyleProps {
139
141
  width,
140
142
  height,
141
143
  transform: [{ translateX }, { translateY }],
144
+ ...VISIBLE_STYLE,
142
145
  };
143
146
  }
144
147
 
@@ -175,6 +178,7 @@ export function composeSizeRelative(params: ElementComposeParams): StyleProps {
175
178
  translateY,
176
179
  width,
177
180
  height,
181
+ ...VISIBLE_STYLE,
178
182
  };
179
183
  }
180
184
 
@@ -182,6 +186,7 @@ export function composeSizeRelative(params: ElementComposeParams): StyleProps {
182
186
  transform: [{ translateX }, { translateY }],
183
187
  width,
184
188
  height,
189
+ ...VISIBLE_STYLE,
185
190
  };
186
191
  }
187
192
 
@@ -210,11 +215,13 @@ export function composeTransformAbsolute(
210
215
  translateY,
211
216
  scaleX,
212
217
  scaleY,
218
+ ...VISIBLE_STYLE,
213
219
  };
214
220
  }
215
221
 
216
222
  return {
217
223
  transform: [{ translateX }, { translateY }, { scaleX }, { scaleY }],
224
+ ...VISIBLE_STYLE,
218
225
  };
219
226
  }
220
227
 
@@ -243,6 +250,7 @@ export function composeTransformRelative(
243
250
  translateY,
244
251
  scaleX,
245
252
  scaleY,
253
+ ...VISIBLE_STYLE,
246
254
  };
247
255
  }
248
256
 
@@ -255,6 +263,7 @@ export function composeTransformRelative(
255
263
  { scaleX },
256
264
  { scaleY },
257
265
  ],
266
+ ...VISIBLE_STYLE,
258
267
  };
259
268
  }
260
269
 
@@ -283,10 +292,12 @@ export function composeContentStyle(params: ContentComposeParams): StyleProps {
283
292
  translateX,
284
293
  translateY,
285
294
  scale,
295
+ ...VISIBLE_STYLE,
286
296
  };
287
297
  }
288
298
 
289
299
  return {
290
300
  transform: [{ translateX }, { translateY }, { scale }],
301
+ ...VISIBLE_STYLE,
291
302
  };
292
303
  }
@@ -34,17 +34,19 @@ import type { BuildZoomStylesParams, ZoomInterpolatedStyle } from "./types";
34
34
 
35
35
  const IDENTITY_DRAG_SCALE_OUTPUT = [1, 1] as const;
36
36
 
37
- const getSourceBorderRadius = (
38
- resolvedPair: ResolvedTransitionPair,
39
- ): number => {
37
+ /* -------------------------------------------------------------------------- */
38
+ /* LOCAL HELPERS */
39
+ /* -------------------------------------------------------------------------- */
40
+
41
+ function getSourceBorderRadius(resolvedPair: ResolvedTransitionPair): number {
40
42
  "worklet";
41
43
 
42
44
  return typeof resolvedPair.sourceStyles?.borderRadius === "number"
43
45
  ? resolvedPair.sourceStyles.borderRadius
44
46
  : 0;
45
- };
47
+ }
46
48
 
47
- const getZoomContentTarget = ({
49
+ function getZoomContentTarget({
48
50
  explicitTarget,
49
51
  screenLayout,
50
52
  anchor,
@@ -54,7 +56,7 @@ const getZoomContentTarget = ({
54
56
  screenLayout: Layout;
55
57
  anchor: BoundsOptions["anchor"] | undefined;
56
58
  resolvedPair: ResolvedTransitionPair;
57
- }) => {
59
+ }) {
58
60
  "worklet";
59
61
 
60
62
  if (explicitTarget) return explicitTarget;
@@ -90,28 +92,34 @@ const getZoomContentTarget = ({
90
92
  width: screenWidth,
91
93
  height,
92
94
  };
93
- };
95
+ }
96
+
97
+ /* -------------------------------------------------------------------------- */
98
+ /* BUILD ZOOM STYLES */
99
+ /* -------------------------------------------------------------------------- */
94
100
 
95
- export const buildZoomStyles = ({
101
+ export function buildZoomStyles({
96
102
  resolvedTag,
97
103
  zoomOptions,
98
104
  props,
99
- }: BuildZoomStylesParams): ZoomInterpolatedStyle => {
105
+ }: BuildZoomStylesParams): ZoomInterpolatedStyle {
100
106
  "worklet";
101
107
 
102
108
  if (!resolvedTag) return {};
103
109
 
110
+ /* ------------------------------ Shared Setup ------------------------------ */
111
+
104
112
  const explicitTarget = zoomOptions?.target;
105
113
  const debug = zoomOptions?.DEBUG === true;
106
-
107
114
  const focused = props.focused;
108
115
  const progress = props.progress;
116
+ const screenLayout = props.layouts.screen;
117
+ const isEnteringTransition = !props.next;
109
118
  const currentRouteKey = props.current?.route.key;
110
119
  const previousRouteKey = props.previous?.route.key;
111
120
  const nextRouteKey = props.next?.route.key;
112
- const entering = !props.next;
113
- const screenLayout = props.layouts.screen;
114
121
  const resolvedZoomAnchor = getZoomAnchor(explicitTarget);
122
+
115
123
  const zoomComputeParams = {
116
124
  id: resolvedTag,
117
125
  previous: props.previous,
@@ -120,6 +128,7 @@ export const buildZoomStyles = ({
120
128
  progress,
121
129
  dimensions: screenLayout,
122
130
  } as const;
131
+
123
132
  const baseRawOptions = {
124
133
  id: resolvedTag,
125
134
  raw: true,
@@ -130,31 +139,40 @@ export const buildZoomStyles = ({
130
139
  currentScreenKey: currentRouteKey,
131
140
  previousScreenKey: previousRouteKey,
132
141
  nextScreenKey: nextRouteKey,
133
- entering,
142
+ entering: isEnteringTransition,
134
143
  });
135
144
 
136
145
  const sourceBorderRadius = getSourceBorderRadius(resolvedPair);
137
146
  const targetBorderRadius = zoomOptions?.borderRadius ?? sourceBorderRadius;
138
-
139
- const focusedVisibilityStyles = {
147
+ const sourceVisibilityStyle = {
140
148
  [resolvedTag]: VISIBLE_STYLE,
141
149
  } satisfies TransitionInterpolatedStyle;
142
- const focusedContainerStyleId = props.navigationMaskEnabled
150
+ const focusedContentSlot = props.navigationMaskEnabled
143
151
  ? NAVIGATION_MASK_CONTAINER_STYLE_ID
144
152
  : "content";
145
153
 
154
+ /* --------------------------- Missing Source Guard -------------------------- */
155
+
146
156
  // To avoid initial flickering, we'll want to hide if there are no source bounds
147
157
  // But to also avoid scenarios where activeId changes in dst and theres a failed measurement,
148
158
  // we should only hide if entering and there is no source bounds.
149
159
  if (!resolvedPair.sourceBounds && props.active.entering) {
150
160
  return {
151
- [focusedContainerStyleId]: HIDDEN_STYLE,
161
+ [focusedContentSlot]: HIDDEN_STYLE,
152
162
  };
153
163
  }
154
164
 
165
+ /* --------------------------- Gesture / Drag Values ------------------------- */
166
+
155
167
  const normX = props.active.gesture.normX;
156
168
  const normY = props.active.gesture.normY;
157
169
  const initialDirection = props.active.gesture.direction;
170
+ const isHorizontalDismiss =
171
+ initialDirection === "horizontal" ||
172
+ initialDirection === "horizontal-inverted";
173
+ const isVerticalDismiss =
174
+ initialDirection === "vertical" || initialDirection === "vertical-inverted";
175
+
158
176
  const dragX = normalizedToTranslation({
159
177
  normalized: normX,
160
178
  dimension: screenLayout.width,
@@ -165,35 +183,33 @@ export const buildZoomStyles = ({
165
183
  dimension: screenLayout.height,
166
184
  resistance: ZOOM_DRAG_RESISTANCE,
167
185
  });
168
- const dragXScale =
169
- initialDirection === "horizontal" ||
170
- initialDirection === "horizontal-inverted"
171
- ? resolveDirectionalDragScale({
172
- normalized: normX,
173
- dismissDirection:
174
- initialDirection === "horizontal-inverted"
175
- ? "negative"
176
- : "positive",
177
- shrinkMin: ZOOM_DRAG_DIRECTIONAL_SCALE_MIN,
178
- growMax: ZOOM_DRAG_DIRECTIONAL_SCALE_MAX,
179
- exponent: 2,
180
- })
181
- : IDENTITY_DRAG_SCALE_OUTPUT[0];
182
- const dragYScale =
183
- initialDirection === "vertical" || initialDirection === "vertical-inverted"
184
- ? resolveDirectionalDragScale({
185
- normalized: normY,
186
- dismissDirection:
187
- initialDirection === "vertical-inverted" ? "negative" : "positive",
188
- shrinkMin: ZOOM_DRAG_DIRECTIONAL_SCALE_MIN,
189
- growMax: ZOOM_DRAG_DIRECTIONAL_SCALE_MAX,
190
- exponent: 2,
191
- })
192
- : IDENTITY_DRAG_SCALE_OUTPUT[1];
186
+
187
+ const dragXScale = isHorizontalDismiss
188
+ ? resolveDirectionalDragScale({
189
+ normalized: normX,
190
+ dismissDirection:
191
+ initialDirection === "horizontal-inverted" ? "negative" : "positive",
192
+ shrinkMin: ZOOM_DRAG_DIRECTIONAL_SCALE_MIN,
193
+ growMax: ZOOM_DRAG_DIRECTIONAL_SCALE_MAX,
194
+ exponent: 2,
195
+ })
196
+ : IDENTITY_DRAG_SCALE_OUTPUT[0];
197
+ const dragYScale = isVerticalDismiss
198
+ ? resolveDirectionalDragScale({
199
+ normalized: normY,
200
+ dismissDirection:
201
+ initialDirection === "vertical-inverted" ? "negative" : "positive",
202
+ shrinkMin: ZOOM_DRAG_DIRECTIONAL_SCALE_MIN,
203
+ growMax: ZOOM_DRAG_DIRECTIONAL_SCALE_MAX,
204
+ exponent: 2,
205
+ })
206
+ : IDENTITY_DRAG_SCALE_OUTPUT[1];
193
207
  const dragScale = combineScales(dragXScale, dragYScale);
194
208
 
209
+ /* ----------------------------- Focused Screen ----------------------------- */
210
+
195
211
  if (focused) {
196
- const contentTarget = getZoomContentTarget({
212
+ const focusedContentTarget = getZoomContentTarget({
197
213
  explicitTarget,
198
214
  screenLayout,
199
215
  anchor: ZOOM_SHARED_OPTIONS.anchor,
@@ -206,7 +222,7 @@ export const buildZoomStyles = ({
206
222
  ...baseRawOptions,
207
223
  anchor: resolvedZoomAnchor,
208
224
  method: "content",
209
- target: contentTarget,
225
+ target: focusedContentTarget,
210
226
  },
211
227
  resolvedPair,
212
228
  ) as Record<string, unknown>;
@@ -247,6 +263,7 @@ export const buildZoomStyles = ({
247
263
  const contentScale = toNumber(contentRaw.scale, 1) * dragScale;
248
264
  const maskTranslateX = toNumber(maskRaw.translateX) + dragX - left;
249
265
  const maskTranslateY = toNumber(maskRaw.translateY) + dragY - top;
266
+
250
267
  const focusedContentStyle = {
251
268
  opacity: focusedFade,
252
269
  transform: [
@@ -259,10 +276,10 @@ export const buildZoomStyles = ({
259
276
  };
260
277
 
261
278
  const focusedStyles: ZoomInterpolatedStyle = {
262
- [focusedContainerStyleId]: {
279
+ [focusedContentSlot]: {
263
280
  style: focusedContentStyle,
264
281
  },
265
- ...focusedVisibilityStyles,
282
+ ...sourceVisibilityStyle,
266
283
  };
267
284
 
268
285
  if (props.navigationMaskEnabled) {
@@ -283,14 +300,18 @@ export const buildZoomStyles = ({
283
300
  return focusedStyles;
284
301
  }
285
302
 
303
+ /* ---------------------------- Unfocused Screen ---------------------------- */
304
+
286
305
  const unfocusedFade = props.active?.closing
287
306
  ? interpolate(progress, [1.6, 2], [1, debug ? 1 : 0], "clamp")
288
307
  : interpolate(progress, [1, 1.5], [1, debug ? 1 : 0], "clamp");
289
-
290
308
  const unfocusedScale = interpolate(progress, [1, 2], [1, 0.95], "clamp");
291
309
  const isUnfocusedIdle = props.active.settled === 1;
292
310
  const shouldHideUnfocusedIdle = isUnfocusedIdle && !debug;
293
- const elementTarget =
311
+ const shouldFreezeUnfocusedElement =
312
+ props.active.logicallySettled && !props.active.closing;
313
+
314
+ const unfocusedElementTarget =
294
315
  explicitTarget !== undefined || resolvedPair.destinationBounds
295
316
  ? getZoomContentTarget({
296
317
  explicitTarget,
@@ -307,10 +328,11 @@ export const buildZoomStyles = ({
307
328
  anchor: resolvedZoomAnchor,
308
329
  method: "transform",
309
330
  space: "relative",
310
- target: elementTarget,
331
+ target: unfocusedElementTarget,
311
332
  },
312
333
  resolvedPair,
313
334
  ) as Record<string, unknown>;
335
+
314
336
  const boundTargetCenterX =
315
337
  explicitTarget === "bound" && resolvedPair.destinationBounds
316
338
  ? resolvedPair.destinationBounds.pageX +
@@ -321,16 +343,18 @@ export const buildZoomStyles = ({
321
343
  ? resolvedPair.destinationBounds.pageY +
322
344
  resolvedPair.destinationBounds.height / 2
323
345
  : undefined;
346
+
324
347
  const elementCenterX =
325
348
  boundTargetCenterX ??
326
- (typeof elementTarget === "object"
327
- ? elementTarget.pageX + elementTarget.width / 2
349
+ (typeof unfocusedElementTarget === "object"
350
+ ? unfocusedElementTarget.pageX + unfocusedElementTarget.width / 2
328
351
  : screenLayout.width / 2);
329
352
  const elementCenterY =
330
353
  boundTargetCenterY ??
331
- (typeof elementTarget === "object"
332
- ? elementTarget.pageY + elementTarget.height / 2
354
+ (typeof unfocusedElementTarget === "object"
355
+ ? unfocusedElementTarget.pageY + unfocusedElementTarget.height / 2
333
356
  : screenLayout.height / 2);
357
+
334
358
  const scaleShiftX = computeCenterScaleShift({
335
359
  center: elementCenterX,
336
360
  containerCenter: screenLayout.width / 2,
@@ -341,6 +365,7 @@ export const buildZoomStyles = ({
341
365
  containerCenter: screenLayout.height / 2,
342
366
  scale: dragScale,
343
367
  });
368
+
344
369
  const compensatedGestureX = composeCompensatedTranslation({
345
370
  gesture: dragX,
346
371
  parentScale: unfocusedScale,
@@ -353,12 +378,14 @@ export const buildZoomStyles = ({
353
378
  centerShift: scaleShiftY,
354
379
  epsilon: EPSILON,
355
380
  });
381
+
356
382
  const elementTranslateX =
357
383
  toNumber(elementRaw.translateX) + compensatedGestureX;
358
384
  const elementTranslateY =
359
385
  toNumber(elementRaw.translateY) + compensatedGestureY;
360
386
  const elementScaleX = toNumber(elementRaw.scaleX, 1) * dragScale;
361
387
  const elementScaleY = toNumber(elementRaw.scaleY, 1) * dragScale;
388
+
362
389
  const resolvedElementStyle = shouldHideUnfocusedIdle
363
390
  ? {
364
391
  transform: [
@@ -373,12 +400,20 @@ export const buildZoomStyles = ({
373
400
  }
374
401
  : {
375
402
  transform: [
376
- { translateX: props.active.settled ? 0 : elementTranslateX },
377
- { translateY: props.active.settled ? 0 : elementTranslateY },
378
- { scaleX: props.active.settled ? 1 : elementScaleX },
379
- { scaleY: props.active.settled ? 1 : elementScaleY },
403
+ {
404
+ translateX: shouldFreezeUnfocusedElement ? 0 : elementTranslateX,
405
+ },
406
+ {
407
+ translateY: shouldFreezeUnfocusedElement ? 0 : elementTranslateY,
408
+ },
409
+ {
410
+ scaleX: shouldFreezeUnfocusedElement ? 1 : elementScaleX,
411
+ },
412
+ {
413
+ scaleY: shouldFreezeUnfocusedElement ? 1 : elementScaleY,
414
+ },
380
415
  ],
381
- opacity: debug ? 1 : unfocusedFade,
416
+ opacity: debug ? 0.5 : unfocusedFade,
382
417
  zIndex: 9999,
383
418
  elevation: 9999,
384
419
  };
@@ -393,4 +428,4 @@ export const buildZoomStyles = ({
393
428
  style: resolvedElementStyle,
394
429
  },
395
430
  };
396
- };
431
+ }
@@ -1,43 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.DeferredVisibilityHost = void 0;
7
- var _react = require("react");
8
- var _reactNative = require("react-native");
9
- var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
10
- var _constants = require("../../constants");
11
- var _styles = require("../../providers/screen/styles.provider");
12
- var _jsxRuntime = require("react/jsx-runtime");
13
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
14
- /**
15
- * Hides the full screen visual subtree while an interpolator explicitly reports
16
- * that it is not safe to reveal yet.
17
- *
18
- * This sits above backdrop/content/mask/surface so a deferred transition does
19
- * not leak raw first-paint UI from nested layers.
20
- */
21
- const DeferredVisibilityHost = exports.DeferredVisibilityHost = /*#__PURE__*/(0, _react.memo)(({
22
- children
23
- }) => {
24
- const {
25
- resolutionMode
26
- } = (0, _styles.useScreenStyles)();
27
- const animatedStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => {
28
- "worklet";
29
-
30
- return resolutionMode.value === "deferred" ? _constants.HIDDEN_STYLE : _constants.VISIBLE_STYLE;
31
- });
32
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeReanimated.default.View, {
33
- collapsable: false,
34
- style: [styles.host, animatedStyle],
35
- children: children
36
- });
37
- });
38
- const styles = _reactNative.StyleSheet.create({
39
- host: {
40
- flex: 1
41
- }
42
- });
43
- //# sourceMappingURL=deferred-visibility-host.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_react","require","_reactNative","_reactNativeReanimated","_interopRequireWildcard","_constants","_styles","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DeferredVisibilityHost","exports","memo","children","resolutionMode","useScreenStyles","animatedStyle","useAnimatedStyle","value","HIDDEN_STYLE","VISIBLE_STYLE","jsx","View","collapsable","style","styles","host","StyleSheet","create","flex"],"sourceRoot":"../../../../../src","sources":["shared/components/screen-container/deferred-visibility-host.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAC,uBAAA,CAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AACA,IAAAK,OAAA,GAAAL,OAAA;AAAyE,IAAAM,WAAA,GAAAN,OAAA;AAAA,SAAAG,wBAAAI,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAN,uBAAA,YAAAA,CAAAI,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAMzE;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMkB,sBAAsB,GAAAC,OAAA,CAAAD,sBAAA,gBAAG,IAAAE,WAAI,EAAC,CAAC;EAAEC;AAAgB,CAAC,KAAK;EACnE,MAAM;IAAEC;EAAe,CAAC,GAAG,IAAAC,uBAAe,EAAC,CAAC;EAE5C,MAAMC,aAAa,GAAG,IAAAC,uCAAgB,EAAC,MAAM;IAC5C,SAAS;;IACT,OAAOH,cAAc,CAACI,KAAK,KAAK,UAAU,GAAGC,uBAAY,GAAGC,wBAAa;EAC1E,CAAC,CAAC;EAEF,oBACC,IAAA9B,WAAA,CAAA+B,GAAA,EAACnC,sBAAA,CAAAe,OAAQ,CAACqB,IAAI;IAACC,WAAW,EAAE,KAAM;IAACC,KAAK,EAAE,CAACC,MAAM,CAACC,IAAI,EAAEV,aAAa,CAAE;IAAAH,QAAA,EACrEA;EAAQ,CACK,CAAC;AAElB,CAAC,CAAC;AAEF,MAAMY,MAAM,GAAGE,uBAAU,CAACC,MAAM,CAAC;EAChCF,IAAI,EAAE;IACLG,IAAI,EAAE;EACP;AACD,CAAC,CAAC","ignoreList":[]}