@nativescript/core 8.5.0-alpha.0 → 8.5.0-alpha.10

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 (218) hide show
  1. package/abortcontroller/abortsignal.js +5 -5
  2. package/abortcontroller/abortsignal.js.map +1 -1
  3. package/accessibility/accessibility-common.d.ts +1 -1
  4. package/accessibility/accessibility-common.js.map +1 -1
  5. package/accessibility/accessibility-properties.js +5 -13
  6. package/accessibility/accessibility-properties.js.map +1 -1
  7. package/accessibility/font-scale.android.js.map +1 -1
  8. package/accessibility/index.android.d.ts +2 -2
  9. package/accessibility/index.android.js.map +1 -1
  10. package/accessibility/index.d.ts +1 -2
  11. package/accessibility/index.ios.d.ts +1 -2
  12. package/accessibility/index.ios.js.map +1 -1
  13. package/animation-frame/animation-native.ios.d.ts +1 -1
  14. package/application/application-common.d.ts +5 -4
  15. package/application/application-common.js +5 -5
  16. package/application/application-common.js.map +1 -1
  17. package/application/application-interfaces.d.ts +27 -5
  18. package/application/index.android.d.ts +12 -12
  19. package/application/index.android.js.map +1 -1
  20. package/application/index.d.ts +30 -35
  21. package/application/index.ios.d.ts +1 -0
  22. package/application/index.ios.js +23 -28
  23. package/application/index.ios.js.map +1 -1
  24. package/core-types/index.d.ts +10 -10
  25. package/css/CSS3Parser.d.ts +3 -3
  26. package/css/parser.d.ts +17 -17
  27. package/data/observable/index.d.ts +140 -165
  28. package/data/observable/index.js +102 -6
  29. package/data/observable/index.js.map +1 -1
  30. package/file-system/file-system-access.android.d.ts +13 -0
  31. package/file-system/file-system-access.android.js +149 -1
  32. package/file-system/file-system-access.android.js.map +1 -1
  33. package/file-system/file-system-access.d.ts +12 -0
  34. package/file-system/file-system-access.ios.d.ts +7 -0
  35. package/file-system/file-system-access.ios.js +56 -0
  36. package/file-system/file-system-access.ios.js.map +1 -1
  37. package/fps-meter/fps-native.android.js.map +1 -1
  38. package/global-types.d.ts +94 -104
  39. package/globals/index.js.map +1 -1
  40. package/image-source/index.android.js +5 -5
  41. package/image-source/index.android.js.map +1 -1
  42. package/image-source/index.ios.js +5 -5
  43. package/image-source/index.ios.js.map +1 -1
  44. package/index.d.ts +2 -0
  45. package/index.js +3 -1
  46. package/index.js.map +1 -1
  47. package/package.json +1 -1
  48. package/platform/index.android.d.ts +2 -2
  49. package/platform/index.ios.d.ts +2 -2
  50. package/platforms/android/widgets-release.aar +0 -0
  51. package/profiling/index.js +1 -1
  52. package/profiling/index.js.map +1 -1
  53. package/ui/action-bar/action-bar-common.js +4 -4
  54. package/ui/action-bar/action-bar-common.js.map +1 -1
  55. package/ui/action-bar/index.d.ts +2 -2
  56. package/ui/animation/animation-interfaces.d.ts +4 -4
  57. package/ui/builder/component-builder/index.js.map +1 -1
  58. package/ui/builder/xml2ui.js +3 -3
  59. package/ui/builder/xml2ui.js.map +1 -1
  60. package/ui/button/index.d.ts +2 -2
  61. package/ui/core/properties/index.js +6 -6
  62. package/ui/core/properties/index.js.map +1 -1
  63. package/ui/core/view/index.android.d.ts +1 -1
  64. package/ui/core/view/index.android.js.map +1 -1
  65. package/ui/core/view/index.ios.js +39 -23
  66. package/ui/core/view/index.ios.js.map +1 -1
  67. package/ui/core/view/view-common.d.ts +5 -1
  68. package/ui/core/view/view-common.js +33 -12
  69. package/ui/core/view/view-common.js.map +1 -1
  70. package/ui/core/view/view-helper/index.d.ts +9 -9
  71. package/ui/core/view/view-helper/index.ios.d.ts +10 -0
  72. package/ui/core/view/view-helper/index.ios.js +99 -40
  73. package/ui/core/view/view-helper/index.ios.js.map +1 -1
  74. package/ui/core/view-base/index.d.ts +454 -532
  75. package/ui/core/view-base/index.js +168 -5
  76. package/ui/core/view-base/index.js.map +1 -1
  77. package/ui/core/weak-event-listener/index.js.map +1 -1
  78. package/ui/dialogs/dialogs-common.js +1 -0
  79. package/ui/dialogs/dialogs-common.js.map +1 -1
  80. package/ui/dialogs/index.android.js +7 -9
  81. package/ui/dialogs/index.android.js.map +1 -1
  82. package/ui/editable-text-base/editable-text-base-common.js +1 -2
  83. package/ui/editable-text-base/editable-text-base-common.js.map +1 -1
  84. package/ui/editable-text-base/index.android.js +2 -7
  85. package/ui/editable-text-base/index.android.js.map +1 -1
  86. package/ui/frame/fragment.transitions.d.ts +0 -4
  87. package/ui/frame/frame-common.d.ts +8 -2
  88. package/ui/frame/frame-common.js +11 -2
  89. package/ui/frame/frame-common.js.map +1 -1
  90. package/ui/frame/index.android.d.ts +2 -1
  91. package/ui/frame/index.android.js +26 -10
  92. package/ui/frame/index.android.js.map +1 -1
  93. package/ui/frame/index.d.ts +3 -3
  94. package/ui/frame/index.ios.js +58 -8
  95. package/ui/frame/index.ios.js.map +1 -1
  96. package/ui/gestures/gestures-common.js +5 -5
  97. package/ui/gestures/gestures-common.js.map +1 -1
  98. package/ui/gestures/index.android.js +3 -3
  99. package/ui/gestures/index.android.js.map +1 -1
  100. package/ui/gestures/index.d.ts +2 -2
  101. package/ui/gestures/index.ios.js +6 -6
  102. package/ui/gestures/index.ios.js.map +1 -1
  103. package/ui/gestures/touch-manager.d.ts +2 -2
  104. package/ui/image-cache/image-cache-common.d.ts +5 -5
  105. package/ui/image-cache/image-cache-common.js +2 -2
  106. package/ui/image-cache/image-cache-common.js.map +1 -1
  107. package/ui/image-cache/index.d.ts +3 -3
  108. package/ui/index.d.ts +8 -2
  109. package/ui/index.js +7 -2
  110. package/ui/index.js.map +1 -1
  111. package/ui/label/index.android.js +1 -0
  112. package/ui/label/index.android.js.map +1 -1
  113. package/ui/layouts/flexbox-layout/flexbox-layout-common.d.ts +12 -12
  114. package/ui/layouts/grid-layout/grid-layout-common.d.ts +1 -1
  115. package/ui/layouts/root-layout/root-layout-common.js +45 -36
  116. package/ui/layouts/root-layout/root-layout-common.js.map +1 -1
  117. package/ui/list-view/index.d.ts +6 -6
  118. package/ui/list-view/list-view-common.js +8 -2
  119. package/ui/list-view/list-view-common.js.map +1 -1
  120. package/ui/page/index.ios.d.ts +4 -1
  121. package/ui/page/index.ios.js +84 -58
  122. package/ui/page/index.ios.js.map +1 -1
  123. package/ui/page/page-common.d.ts +72 -39
  124. package/ui/placeholder/index.android.d.ts +2 -2
  125. package/ui/placeholder/index.d.ts +2 -2
  126. package/ui/repeater/index.js +2 -1
  127. package/ui/repeater/index.js.map +1 -1
  128. package/ui/scroll-view/scroll-view-common.d.ts +4 -4
  129. package/ui/scroll-view/scroll-view-common.js.map +1 -1
  130. package/ui/search-bar/index.d.ts +3 -3
  131. package/ui/segmented-bar/index.d.ts +2 -2
  132. package/ui/segmented-bar/segmented-bar-common.d.ts +2 -2
  133. package/ui/styling/background.ios.js +3 -0
  134. package/ui/styling/background.ios.js.map +1 -1
  135. package/ui/styling/css-animation-parser.d.ts +12 -7
  136. package/ui/styling/css-animation-parser.js +90 -36
  137. package/ui/styling/css-animation-parser.js.map +1 -1
  138. package/ui/styling/css-selector.d.ts +1 -1
  139. package/ui/styling/css-utils.d.ts +1 -0
  140. package/ui/styling/css-utils.js +12 -0
  141. package/ui/styling/css-utils.js.map +1 -0
  142. package/ui/styling/font-common.js +6 -6
  143. package/ui/styling/font-common.js.map +1 -1
  144. package/ui/styling/font-interfaces.d.ts +3 -3
  145. package/ui/styling/font.ios.js +2 -1
  146. package/ui/styling/font.ios.js.map +1 -1
  147. package/ui/styling/style/index.d.ts +3 -0
  148. package/ui/styling/style/index.js.map +1 -1
  149. package/ui/styling/style-properties.js +5 -13
  150. package/ui/styling/style-properties.js.map +1 -1
  151. package/ui/styling/style-scope.js +7 -5
  152. package/ui/styling/style-scope.js.map +1 -1
  153. package/ui/tab-view/index.d.ts +2 -2
  154. package/ui/tab-view/tab-view-common.d.ts +2 -2
  155. package/ui/text-base/index.ios.js +21 -4
  156. package/ui/text-base/index.ios.js.map +1 -1
  157. package/ui/text-base/span.js.map +1 -1
  158. package/ui/transition/fade-transition.d.ts +1 -3
  159. package/ui/transition/fade-transition.ios.d.ts +14 -1
  160. package/ui/transition/fade-transition.ios.js +60 -26
  161. package/ui/transition/fade-transition.ios.js.map +1 -1
  162. package/ui/transition/index.android.d.ts +5 -5
  163. package/ui/transition/index.android.js +7 -6
  164. package/ui/transition/index.android.js.map +1 -1
  165. package/ui/transition/index.d.ts +38 -14
  166. package/ui/transition/index.ios.d.ts +5 -10
  167. package/ui/transition/index.ios.js +8 -22
  168. package/ui/transition/index.ios.js.map +1 -1
  169. package/ui/transition/modal-transition.android.d.ts +5 -0
  170. package/ui/transition/modal-transition.android.js +7 -0
  171. package/ui/transition/modal-transition.android.js.map +1 -0
  172. package/ui/transition/modal-transition.d.ts +2 -0
  173. package/ui/transition/modal-transition.ios.d.ts +34 -0
  174. package/ui/transition/modal-transition.ios.js +160 -0
  175. package/ui/transition/modal-transition.ios.js.map +1 -0
  176. package/ui/transition/page-transition.android.d.ts +6 -0
  177. package/ui/transition/page-transition.android.js +182 -0
  178. package/ui/transition/page-transition.android.js.map +1 -0
  179. package/ui/transition/page-transition.d.ts +2 -0
  180. package/ui/transition/page-transition.ios.d.ts +34 -0
  181. package/ui/transition/page-transition.ios.js +181 -0
  182. package/ui/transition/page-transition.ios.js.map +1 -0
  183. package/ui/transition/shared-transition-helper.android.d.ts +5 -0
  184. package/ui/transition/shared-transition-helper.android.js +6 -0
  185. package/ui/transition/shared-transition-helper.android.js.map +1 -0
  186. package/ui/transition/shared-transition-helper.d.ts +10 -0
  187. package/ui/transition/shared-transition-helper.ios.d.ts +14 -0
  188. package/ui/transition/shared-transition-helper.ios.js +471 -0
  189. package/ui/transition/shared-transition-helper.ios.js.map +1 -0
  190. package/ui/transition/shared-transition.d.ts +230 -0
  191. package/ui/transition/shared-transition.js +192 -0
  192. package/ui/transition/shared-transition.js.map +1 -0
  193. package/ui/transition/slide-transition.android.d.ts +1 -1
  194. package/ui/transition/slide-transition.android.js +1 -1
  195. package/ui/transition/slide-transition.android.js.map +1 -1
  196. package/ui/transition/slide-transition.d.ts +1 -1
  197. package/ui/transition/slide-transition.ios.d.ts +15 -2
  198. package/ui/transition/slide-transition.ios.js +86 -52
  199. package/ui/transition/slide-transition.ios.js.map +1 -1
  200. package/ui/web-view/index.d.ts +3 -3
  201. package/ui/web-view/web-view-interfaces.d.ts +1 -1
  202. package/utils/index.d.ts +0 -82
  203. package/utils/mainthread-helper.android.js +2 -2
  204. package/utils/mainthread-helper.android.js.map +1 -1
  205. package/utils/native-helper.d.ts +35 -0
  206. package/utils/native-helper.ios.d.ts +13 -0
  207. package/utils/native-helper.ios.js +73 -0
  208. package/utils/native-helper.ios.js.map +1 -1
  209. package/utils/number-utils.d.ts +10 -0
  210. package/utils/number-utils.js +12 -0
  211. package/utils/number-utils.js.map +1 -1
  212. package/utils/typescript-utils.d.ts +6 -0
  213. package/xhr/index.js +28 -28
  214. package/xhr/index.js.map +1 -1
  215. package/xml/index.js.map +1 -1
  216. package/ui/frame/fragment.transitions.ios.d.ts +0 -2
  217. package/ui/frame/fragment.transitions.ios.js +0 -71
  218. package/ui/frame/fragment.transitions.ios.js.map +0 -1
@@ -0,0 +1,471 @@
1
+ import { getPageStartDefaultsForType, getRectFromProps, getSpringFromProps, SharedTransition, SharedTransitionAnimationType } from './shared-transition';
2
+ import { isNumber } from '../../utils/types';
3
+ import { Screen } from '../../platform';
4
+ import { iOSNativeHelper } from '../../utils/native-helper';
5
+ export class SharedTransitionHelper {
6
+ static animate(state, transitionContext, type) {
7
+ const transition = state.instance;
8
+ setTimeout(() => {
9
+ // Run on next tick
10
+ // ensures that existing UI state finishes before snapshotting
11
+ // (eg, button touch up state)
12
+ switch (state.activeType) {
13
+ case SharedTransitionAnimationType.present: {
14
+ // console.log('-- Transition present --');
15
+ SharedTransition.events().notify({
16
+ eventName: SharedTransition.startedEvent,
17
+ data: {
18
+ id: transition.id,
19
+ type,
20
+ action: 'present',
21
+ },
22
+ });
23
+ if (type === 'modal') {
24
+ transitionContext.containerView.addSubview(transition.presented.view);
25
+ }
26
+ else if (type === 'page') {
27
+ transitionContext.containerView.insertSubviewAboveSubview(transition.presented.view, transition.presenting.view);
28
+ }
29
+ transition.presented.view.layoutIfNeeded();
30
+ const { sharedElements, presented, presenting } = SharedTransition.getSharedElements(state.page, state.toPage);
31
+ if (!transition.sharedElements) {
32
+ transition.sharedElements = {
33
+ presented: [],
34
+ presenting: [],
35
+ independent: [],
36
+ };
37
+ }
38
+ if (SharedTransition.DEBUG) {
39
+ console.log(` ${type}: Present`);
40
+ console.log(`1. Found sharedTransitionTags to animate:`, sharedElements.map((v) => v.sharedTransitionTag));
41
+ console.log(`2. Take snapshots of shared elements and position them based on presenting view:`);
42
+ }
43
+ const pageStart = state.pageStart;
44
+ const startFrame = getRectFromProps(pageStart, getPageStartDefaultsForType(type));
45
+ const pageEnd = state.pageEnd;
46
+ const pageEndIndependentTags = Object.keys(pageEnd?.sharedTransitionTags || {});
47
+ // console.log('pageEndIndependentTags:', pageEndIndependentTags);
48
+ for (const presentingView of sharedElements) {
49
+ const presentingSharedElement = presentingView.ios;
50
+ // console.log('fromTarget instanceof UIImageView:', fromTarget instanceof UIImageView)
51
+ // TODO: discuss whether we should check if UIImage/UIImageView type to always snapshot images or if other view types could be duped/added vs. snapshotted
52
+ // Note: snapshot may be most efficient/simple
53
+ // console.log('---> ', presentingView.sharedTransitionTag, ': ', presentingSharedElement)
54
+ const presentedView = presented.find((v) => v.sharedTransitionTag === presentingView.sharedTransitionTag);
55
+ const presentedSharedElement = presentedView.ios;
56
+ const snapshot = UIImageView.alloc().init();
57
+ // treat images differently...
58
+ if (presentedSharedElement instanceof UIImageView) {
59
+ // in case the image is loaded async, we need to update the snapshot when it changes
60
+ // todo: remove listener on transition end
61
+ presentedView.on('imageSourceChange', () => {
62
+ snapshot.image = iOSNativeHelper.snapshotView(presentedSharedElement, Screen.mainScreen.scale);
63
+ snapshot.tintColor = presentedSharedElement.tintColor;
64
+ });
65
+ snapshot.tintColor = presentedSharedElement.tintColor;
66
+ snapshot.contentMode = presentedSharedElement.contentMode;
67
+ }
68
+ iOSNativeHelper.copyLayerProperties(snapshot, presentingSharedElement);
69
+ snapshot.clipsToBounds = true;
70
+ // console.log('---> snapshot: ', snapshot);
71
+ const startFrame = presentingSharedElement.convertRectToView(presentingSharedElement.bounds, transitionContext.containerView);
72
+ const endFrame = presentedSharedElement.convertRectToView(presentedSharedElement.bounds, transitionContext.containerView);
73
+ snapshot.frame = startFrame;
74
+ if (SharedTransition.DEBUG) {
75
+ console.log('---> ', presentingView.sharedTransitionTag, ' frame:', iOSNativeHelper.printCGRect(snapshot.frame));
76
+ }
77
+ transition.sharedElements.presenting.push({
78
+ view: presentingView,
79
+ startFrame,
80
+ endFrame,
81
+ snapshot,
82
+ startOpacity: presentingView.opacity,
83
+ endOpacity: presentedView.opacity,
84
+ });
85
+ transition.sharedElements.presented.push({
86
+ view: presentedView,
87
+ startFrame: endFrame,
88
+ endFrame: startFrame,
89
+ startOpacity: presentedView.opacity,
90
+ endOpacity: presentingView.opacity,
91
+ });
92
+ // set initial opacity to match the source view opacity
93
+ snapshot.alpha = presentingView.opacity;
94
+ // hide both while animating within the transition context
95
+ presentingView.opacity = 0;
96
+ presentedView.opacity = 0;
97
+ // add snapshot to animate
98
+ transitionContext.containerView.addSubview(snapshot);
99
+ }
100
+ for (const tag of pageEndIndependentTags) {
101
+ // only consider start when there's a matching end
102
+ const pageStartIndependentProps = pageStart?.sharedTransitionTags ? pageStart?.sharedTransitionTags[tag] : null;
103
+ // console.log('start:', tag, pageStartIndependentProps);
104
+ const pageEndIndependentProps = pageEnd?.sharedTransitionTags[tag];
105
+ let independentView = presenting.find((v) => v.sharedTransitionTag === tag);
106
+ let isPresented = false;
107
+ if (!independentView) {
108
+ independentView = presented.find((v) => v.sharedTransitionTag === tag);
109
+ if (!independentView) {
110
+ break;
111
+ }
112
+ isPresented = true;
113
+ }
114
+ const independentSharedElement = independentView.ios;
115
+ let snapshot;
116
+ // if (isPresented) {
117
+ // snapshot = UIImageView.alloc().init();
118
+ // } else {
119
+ snapshot = UIImageView.alloc().initWithImage(iOSNativeHelper.snapshotView(independentSharedElement, Screen.mainScreen.scale));
120
+ // }
121
+ if (independentSharedElement instanceof UIImageView) {
122
+ // in case the image is loaded async, we need to update the snapshot when it changes
123
+ // todo: remove listener on transition end
124
+ // if (isPresented) {
125
+ // independentView.on('imageSourceChange', () => {
126
+ // snapshot.image = iOSNativeHelper.snapshotView(independentSharedElement, Screen.mainScreen.scale);
127
+ // snapshot.tintColor = independentSharedElement.tintColor;
128
+ // });
129
+ // }
130
+ snapshot.tintColor = independentSharedElement.tintColor;
131
+ snapshot.contentMode = independentSharedElement.contentMode;
132
+ }
133
+ snapshot.clipsToBounds = true;
134
+ const startFrame = independentSharedElement.convertRectToView(independentSharedElement.bounds, transitionContext.containerView);
135
+ const startFrameRect = getRectFromProps(pageStartIndependentProps);
136
+ // adjust for any specified start positions
137
+ const startFrameAdjusted = CGRectMake(startFrame.origin.x + startFrameRect.x, startFrame.origin.y + startFrameRect.y, startFrame.size.width, startFrame.size.height);
138
+ console.log('startFrameAdjusted:', tag, iOSNativeHelper.printCGRect(startFrameAdjusted));
139
+ // if (pageStartIndependentProps?.scale) {
140
+ // snapshot.transform = CGAffineTransformConcat(CGAffineTransformMakeTranslation(startFrameAdjusted.origin.x, startFrameAdjusted.origin.y), CGAffineTransformMakeScale(pageStartIndependentProps.scale.x, pageStartIndependentProps.scale.y))
141
+ // } else {
142
+ snapshot.frame = startFrame; //startFrameAdjusted;
143
+ // }
144
+ if (SharedTransition.DEBUG) {
145
+ console.log('---> ', independentView.sharedTransitionTag, ' frame:', iOSNativeHelper.printCGRect(snapshot.frame));
146
+ }
147
+ const endFrameRect = getRectFromProps(pageEndIndependentProps);
148
+ const endFrame = CGRectMake(startFrame.origin.x + endFrameRect.x, startFrame.origin.y + endFrameRect.y, startFrame.size.width, startFrame.size.height);
149
+ console.log('endFrame:', tag, iOSNativeHelper.printCGRect(endFrame));
150
+ transition.sharedElements.independent.push({
151
+ view: independentView,
152
+ isPresented,
153
+ startFrame,
154
+ snapshot,
155
+ endFrame,
156
+ startTransform: independentSharedElement.transform,
157
+ scale: pageEndIndependentProps.scale,
158
+ startOpacity: independentView.opacity,
159
+ endOpacity: isNumber(pageEndIndependentProps.opacity) ? pageEndIndependentProps.opacity : 0,
160
+ });
161
+ independentView.opacity = 0;
162
+ // add snapshot to animate
163
+ transitionContext.containerView.addSubview(snapshot);
164
+ }
165
+ // Important: always set after above shared element positions have had their start positions set
166
+ transition.presented.view.alpha = isNumber(pageStart?.opacity) ? pageStart?.opacity : 0;
167
+ transition.presented.view.frame = CGRectMake(startFrame.x, startFrame.y, startFrame.width, startFrame.height);
168
+ const cleanupPresent = () => {
169
+ for (const presented of transition.sharedElements.presented) {
170
+ presented.view.opacity = presented.startOpacity;
171
+ }
172
+ for (const presenting of transition.sharedElements.presenting) {
173
+ presenting.snapshot.removeFromSuperview();
174
+ }
175
+ for (const independent of transition.sharedElements.independent) {
176
+ independent.snapshot.removeFromSuperview();
177
+ if (independent.isPresented) {
178
+ independent.view.opacity = independent.startOpacity;
179
+ }
180
+ }
181
+ SharedTransition.updateState(transition.id, {
182
+ activeType: SharedTransitionAnimationType.dismiss,
183
+ });
184
+ if (type === 'page') {
185
+ transition.presenting.view.removeFromSuperview();
186
+ }
187
+ transitionContext.completeTransition(true);
188
+ SharedTransition.events().notify({
189
+ eventName: SharedTransition.finishedEvent,
190
+ data: {
191
+ id: transition?.id,
192
+ type,
193
+ action: 'present',
194
+ },
195
+ });
196
+ };
197
+ const animateProperties = () => {
198
+ if (SharedTransition.DEBUG) {
199
+ console.log('3. Animating shared elements:');
200
+ }
201
+ transition.presented.view.alpha = isNumber(pageEnd?.opacity) ? pageEnd?.opacity : 1;
202
+ const endFrame = getRectFromProps(pageEnd);
203
+ transition.presented.view.frame = CGRectMake(endFrame.x, endFrame.y, endFrame.width, endFrame.height);
204
+ // animate page properties to the following:
205
+ // https://stackoverflow.com/a/27997678/1418981
206
+ // In order to have proper layout. Seems mostly needed when presenting.
207
+ // For instance during presentation, destination view doesn't account navigation bar height.
208
+ // Not sure if best to leave all the time?
209
+ // owner.presented.view.setNeedsLayout();
210
+ // owner.presented.view.layoutIfNeeded();
211
+ for (const presented of transition.sharedElements.presented) {
212
+ const presentingMatch = transition.sharedElements.presenting.find((v) => v.view.sharedTransitionTag === presented.view.sharedTransitionTag);
213
+ // Workaround wrong origin due ongoing layout process.
214
+ const updatedEndFrame = presented.view.ios.convertRectToView(presented.view.ios.bounds, transitionContext.containerView);
215
+ const correctedEndFrame = CGRectMake(updatedEndFrame.origin.x, updatedEndFrame.origin.y, presentingMatch.endFrame.size.width, presentingMatch.endFrame.size.height);
216
+ presentingMatch.snapshot.frame = correctedEndFrame;
217
+ // apply view and layer properties to the snapshot view to match the source/presented view
218
+ iOSNativeHelper.copyLayerProperties(presentingMatch.snapshot, presented.view.ios);
219
+ // create a snapshot of the presented view
220
+ presentingMatch.snapshot.image = iOSNativeHelper.snapshotView(presented.view.ios, Screen.mainScreen.scale);
221
+ // apply correct alpha
222
+ presentingMatch.snapshot.alpha = presentingMatch.endOpacity;
223
+ if (SharedTransition.DEBUG) {
224
+ console.log(`---> ${presentingMatch.view.sharedTransitionTag} animate to: `, iOSNativeHelper.printCGRect(correctedEndFrame));
225
+ }
226
+ }
227
+ for (const independent of transition.sharedElements.independent) {
228
+ let endFrame = independent.endFrame;
229
+ // if (independent.isPresented) {
230
+ // const updatedEndFrame = independent.view.ios.convertRectToView(independent.view.ios.bounds, transitionContext.containerView);
231
+ // endFrame = CGRectMake(updatedEndFrame.origin.x, updatedEndFrame.origin.y, independent.endFrame.size.width, independent.endFrame.size.height);
232
+ // }
233
+ if (independent.scale) {
234
+ independent.snapshot.transform = CGAffineTransformConcat(CGAffineTransformMakeTranslation(endFrame.origin.x, endFrame.origin.y), CGAffineTransformMakeScale(independent.scale.x, independent.scale.y));
235
+ }
236
+ else {
237
+ independent.snapshot.frame = endFrame;
238
+ }
239
+ independent.snapshot.alpha = independent.endOpacity;
240
+ if (SharedTransition.DEBUG) {
241
+ console.log(`---> ${independent.view.sharedTransitionTag} animate to: `, iOSNativeHelper.printCGRect(independent.endFrame));
242
+ }
243
+ }
244
+ };
245
+ if (isNumber(pageEnd?.duration)) {
246
+ // override spring and use only linear animation
247
+ UIView.animateWithDurationAnimationsCompletion(pageEnd?.duration / 1000, () => {
248
+ animateProperties();
249
+ }, () => {
250
+ cleanupPresent();
251
+ });
252
+ }
253
+ else {
254
+ iOSNativeHelper.animateWithSpring({
255
+ ...getSpringFromProps(pageEnd?.spring),
256
+ animations: () => {
257
+ animateProperties();
258
+ },
259
+ completion: () => {
260
+ cleanupPresent();
261
+ },
262
+ });
263
+ }
264
+ break;
265
+ }
266
+ case SharedTransitionAnimationType.dismiss: {
267
+ // console.log('-- Transition dismiss --');
268
+ SharedTransition.events().notify({
269
+ eventName: SharedTransition.startedEvent,
270
+ data: {
271
+ id: transition?.id,
272
+ type,
273
+ action: 'dismiss',
274
+ },
275
+ });
276
+ if (type === 'page') {
277
+ transitionContext.containerView.insertSubviewBelowSubview(transition.presenting.view, transition.presented.view);
278
+ }
279
+ // console.log('transitionContext.containerView.subviews.count:', transitionContext.containerView.subviews.count);
280
+ if (SharedTransition.DEBUG) {
281
+ console.log(` ${type}: Dismiss`);
282
+ console.log(`1. Dismiss sharedTransitionTags to animate:`, transition.sharedElements.presented.map((p) => p.view.sharedTransitionTag));
283
+ console.log(`2. Add back previously stored sharedElements to dismiss:`);
284
+ }
285
+ for (const p of transition.sharedElements.presented) {
286
+ p.view.opacity = 0;
287
+ }
288
+ for (const p of transition.sharedElements.presenting) {
289
+ p.snapshot.alpha = p.endOpacity;
290
+ transitionContext.containerView.addSubview(p.snapshot);
291
+ }
292
+ for (const independent of transition.sharedElements.independent) {
293
+ independent.snapshot.alpha = independent.endOpacity;
294
+ transitionContext.containerView.addSubview(independent.snapshot);
295
+ }
296
+ const pageReturn = state.pageReturn;
297
+ const cleanupDismiss = () => {
298
+ for (const presenting of transition.sharedElements.presenting) {
299
+ presenting.view.opacity = presenting.startOpacity;
300
+ presenting.snapshot.removeFromSuperview();
301
+ }
302
+ for (const independent of transition.sharedElements.independent) {
303
+ independent.view.opacity = independent.startOpacity;
304
+ independent.snapshot.removeFromSuperview();
305
+ }
306
+ SharedTransition.finishState(transition.id);
307
+ transition.sharedElements = null;
308
+ transitionContext.completeTransition(true);
309
+ SharedTransition.events().notify({
310
+ eventName: SharedTransition.finishedEvent,
311
+ data: {
312
+ id: transition?.id,
313
+ type,
314
+ action: 'dismiss',
315
+ },
316
+ });
317
+ };
318
+ const animateProperties = () => {
319
+ if (SharedTransition.DEBUG) {
320
+ console.log('3. Dismissing shared elements:');
321
+ }
322
+ transition.presented.view.alpha = isNumber(pageReturn?.opacity) ? pageReturn?.opacity : 0;
323
+ const endFrame = getRectFromProps(pageReturn, getPageStartDefaultsForType(type));
324
+ transition.presented.view.frame = CGRectMake(endFrame.x, endFrame.y, endFrame.width, endFrame.height);
325
+ for (const presenting of transition.sharedElements.presenting) {
326
+ iOSNativeHelper.copyLayerProperties(presenting.snapshot, presenting.view.ios);
327
+ presenting.snapshot.frame = presenting.startFrame;
328
+ presenting.snapshot.alpha = presenting.startOpacity;
329
+ if (SharedTransition.DEBUG) {
330
+ console.log(`---> ${presenting.view.sharedTransitionTag} animate to: `, iOSNativeHelper.printCGRect(presenting.startFrame));
331
+ }
332
+ }
333
+ for (const independent of transition.sharedElements.independent) {
334
+ independent.snapshot.alpha = independent.startOpacity;
335
+ if (independent.scale) {
336
+ independent.snapshot.transform = independent.startTransform;
337
+ }
338
+ else {
339
+ independent.snapshot.frame = independent.startFrame;
340
+ }
341
+ if (SharedTransition.DEBUG) {
342
+ console.log(`---> ${independent.view.sharedTransitionTag} animate to: `, iOSNativeHelper.printCGRect(independent.startFrame));
343
+ }
344
+ }
345
+ };
346
+ if (isNumber(pageReturn?.duration)) {
347
+ // override spring and use only linear animation
348
+ UIView.animateWithDurationAnimationsCompletion(pageReturn?.duration / 1000, () => {
349
+ animateProperties();
350
+ }, () => {
351
+ cleanupDismiss();
352
+ });
353
+ }
354
+ else {
355
+ iOSNativeHelper.animateWithSpring({
356
+ ...getSpringFromProps(pageReturn?.spring),
357
+ animations: () => {
358
+ animateProperties();
359
+ },
360
+ completion: () => {
361
+ cleanupDismiss();
362
+ },
363
+ });
364
+ }
365
+ break;
366
+ }
367
+ }
368
+ });
369
+ }
370
+ static interactiveStart(state, interactiveState, type) {
371
+ SharedTransition.events().notify({
372
+ eventName: SharedTransition.startedEvent,
373
+ data: {
374
+ id: state?.instance?.id,
375
+ type,
376
+ action: 'interactiveStart',
377
+ },
378
+ });
379
+ switch (type) {
380
+ case 'page':
381
+ interactiveState.transitionContext.containerView.insertSubviewBelowSubview(state.instance.presenting.view, state.instance.presented.view);
382
+ break;
383
+ }
384
+ }
385
+ static interactiveUpdate(state, interactiveState, type, percent) {
386
+ if (!interactiveState?.added) {
387
+ interactiveState.added = true;
388
+ for (const p of state.instance.sharedElements.presented) {
389
+ p.view.opacity = 0;
390
+ }
391
+ for (const p of state.instance.sharedElements.presenting) {
392
+ p.snapshot.alpha = p.endOpacity;
393
+ interactiveState.transitionContext.containerView.addSubview(p.snapshot);
394
+ }
395
+ const pageStart = state.pageStart;
396
+ const startFrame = getRectFromProps(pageStart, getPageStartDefaultsForType(type));
397
+ interactiveState.propertyAnimator = UIViewPropertyAnimator.alloc().initWithDurationDampingRatioAnimations(1, 1, () => {
398
+ for (const p of state.instance.sharedElements.presenting) {
399
+ p.snapshot.frame = p.startFrame;
400
+ iOSNativeHelper.copyLayerProperties(p.snapshot, p.view.ios);
401
+ p.snapshot.alpha = 1;
402
+ }
403
+ state.instance.presented.view.alpha = isNumber(state.pageReturn?.opacity) ? state.pageReturn?.opacity : 0;
404
+ state.instance.presented.view.frame = CGRectMake(startFrame.x, startFrame.y, state.instance.presented.view.bounds.size.width, state.instance.presented.view.bounds.size.height);
405
+ });
406
+ }
407
+ interactiveState.propertyAnimator.fractionComplete = percent;
408
+ SharedTransition.events().notify({
409
+ eventName: SharedTransition.interactiveUpdateEvent,
410
+ data: {
411
+ id: state?.instance?.id,
412
+ type,
413
+ percent,
414
+ },
415
+ });
416
+ }
417
+ static interactiveCancel(state, interactiveState, type) {
418
+ if (state?.instance && interactiveState?.added && interactiveState?.propertyAnimator) {
419
+ interactiveState.propertyAnimator.reversed = true;
420
+ const duration = isNumber(state.pageEnd?.duration) ? state.pageEnd?.duration / 1000 : 0.35;
421
+ interactiveState.propertyAnimator.continueAnimationWithTimingParametersDurationFactor(null, duration);
422
+ setTimeout(() => {
423
+ for (const p of state.instance.sharedElements.presented) {
424
+ p.view.opacity = 1;
425
+ }
426
+ for (const p of state.instance.sharedElements.presenting) {
427
+ p.snapshot.removeFromSuperview();
428
+ }
429
+ state.instance.presented.view.alpha = 1;
430
+ interactiveState.propertyAnimator = null;
431
+ interactiveState.added = false;
432
+ interactiveState.transitionContext.cancelInteractiveTransition();
433
+ interactiveState.transitionContext.completeTransition(false);
434
+ SharedTransition.events().notify({
435
+ eventName: SharedTransition.interactiveCancelledEvent,
436
+ data: {
437
+ id: state?.instance?.id,
438
+ type,
439
+ },
440
+ });
441
+ }, duration * 1000);
442
+ }
443
+ }
444
+ static interactiveFinish(state, interactiveState, type) {
445
+ if (state?.instance && interactiveState?.added && interactiveState?.propertyAnimator) {
446
+ interactiveState.propertyAnimator.reversed = false;
447
+ const duration = isNumber(state.pageReturn?.duration) ? state.pageReturn?.duration / 1000 : 0.35;
448
+ interactiveState.propertyAnimator.continueAnimationWithTimingParametersDurationFactor(null, duration);
449
+ setTimeout(() => {
450
+ for (const presenting of state.instance.sharedElements.presenting) {
451
+ presenting.view.opacity = presenting.startOpacity;
452
+ presenting.snapshot.removeFromSuperview();
453
+ }
454
+ SharedTransition.finishState(state.instance.id);
455
+ interactiveState.propertyAnimator = null;
456
+ interactiveState.added = false;
457
+ interactiveState.transitionContext.finishInteractiveTransition();
458
+ interactiveState.transitionContext.completeTransition(true);
459
+ SharedTransition.events().notify({
460
+ eventName: SharedTransition.finishedEvent,
461
+ data: {
462
+ id: state?.instance?.id,
463
+ type,
464
+ action: 'interactiveFinish',
465
+ },
466
+ });
467
+ }, duration * 1000);
468
+ }
469
+ }
470
+ }
471
+ //# sourceMappingURL=shared-transition-helper.ios.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-transition-helper.ios.js","sourceRoot":"","sources":["../../../../../packages/core/ui/transition/shared-transition-helper.ios.ts"],"names":[],"mappings":"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"}