@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.
- package/abortcontroller/abortsignal.js +5 -5
- package/abortcontroller/abortsignal.js.map +1 -1
- package/accessibility/accessibility-common.d.ts +1 -1
- package/accessibility/accessibility-common.js.map +1 -1
- package/accessibility/accessibility-properties.js +5 -13
- package/accessibility/accessibility-properties.js.map +1 -1
- package/accessibility/font-scale.android.js.map +1 -1
- package/accessibility/index.android.d.ts +2 -2
- package/accessibility/index.android.js.map +1 -1
- package/accessibility/index.d.ts +1 -2
- package/accessibility/index.ios.d.ts +1 -2
- package/accessibility/index.ios.js.map +1 -1
- package/animation-frame/animation-native.ios.d.ts +1 -1
- package/application/application-common.d.ts +5 -4
- package/application/application-common.js +5 -5
- package/application/application-common.js.map +1 -1
- package/application/application-interfaces.d.ts +27 -5
- package/application/index.android.d.ts +12 -12
- package/application/index.android.js.map +1 -1
- package/application/index.d.ts +30 -35
- package/application/index.ios.d.ts +1 -0
- package/application/index.ios.js +23 -28
- package/application/index.ios.js.map +1 -1
- package/core-types/index.d.ts +10 -10
- package/css/CSS3Parser.d.ts +3 -3
- package/css/parser.d.ts +17 -17
- package/data/observable/index.d.ts +140 -165
- package/data/observable/index.js +102 -6
- package/data/observable/index.js.map +1 -1
- package/file-system/file-system-access.android.d.ts +13 -0
- package/file-system/file-system-access.android.js +149 -1
- package/file-system/file-system-access.android.js.map +1 -1
- package/file-system/file-system-access.d.ts +12 -0
- package/file-system/file-system-access.ios.d.ts +7 -0
- package/file-system/file-system-access.ios.js +56 -0
- package/file-system/file-system-access.ios.js.map +1 -1
- package/fps-meter/fps-native.android.js.map +1 -1
- package/global-types.d.ts +94 -104
- package/globals/index.js.map +1 -1
- package/image-source/index.android.js +5 -5
- package/image-source/index.android.js.map +1 -1
- package/image-source/index.ios.js +5 -5
- package/image-source/index.ios.js.map +1 -1
- package/index.d.ts +2 -0
- package/index.js +3 -1
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/platform/index.android.d.ts +2 -2
- package/platform/index.ios.d.ts +2 -2
- package/platforms/android/widgets-release.aar +0 -0
- package/profiling/index.js +1 -1
- package/profiling/index.js.map +1 -1
- package/ui/action-bar/action-bar-common.js +4 -4
- package/ui/action-bar/action-bar-common.js.map +1 -1
- package/ui/action-bar/index.d.ts +2 -2
- package/ui/animation/animation-interfaces.d.ts +4 -4
- package/ui/builder/component-builder/index.js.map +1 -1
- package/ui/builder/xml2ui.js +3 -3
- package/ui/builder/xml2ui.js.map +1 -1
- package/ui/button/index.d.ts +2 -2
- package/ui/core/properties/index.js +6 -6
- package/ui/core/properties/index.js.map +1 -1
- package/ui/core/view/index.android.d.ts +1 -1
- package/ui/core/view/index.android.js.map +1 -1
- package/ui/core/view/index.ios.js +39 -23
- package/ui/core/view/index.ios.js.map +1 -1
- package/ui/core/view/view-common.d.ts +5 -1
- package/ui/core/view/view-common.js +33 -12
- package/ui/core/view/view-common.js.map +1 -1
- package/ui/core/view/view-helper/index.d.ts +9 -9
- package/ui/core/view/view-helper/index.ios.d.ts +10 -0
- package/ui/core/view/view-helper/index.ios.js +99 -40
- package/ui/core/view/view-helper/index.ios.js.map +1 -1
- package/ui/core/view-base/index.d.ts +454 -532
- package/ui/core/view-base/index.js +168 -5
- package/ui/core/view-base/index.js.map +1 -1
- package/ui/core/weak-event-listener/index.js.map +1 -1
- package/ui/dialogs/dialogs-common.js +1 -0
- package/ui/dialogs/dialogs-common.js.map +1 -1
- package/ui/dialogs/index.android.js +7 -9
- package/ui/dialogs/index.android.js.map +1 -1
- package/ui/editable-text-base/editable-text-base-common.js +1 -2
- package/ui/editable-text-base/editable-text-base-common.js.map +1 -1
- package/ui/editable-text-base/index.android.js +2 -7
- package/ui/editable-text-base/index.android.js.map +1 -1
- package/ui/frame/fragment.transitions.d.ts +0 -4
- package/ui/frame/frame-common.d.ts +8 -2
- package/ui/frame/frame-common.js +11 -2
- package/ui/frame/frame-common.js.map +1 -1
- package/ui/frame/index.android.d.ts +2 -1
- package/ui/frame/index.android.js +26 -10
- package/ui/frame/index.android.js.map +1 -1
- package/ui/frame/index.d.ts +3 -3
- package/ui/frame/index.ios.js +58 -8
- package/ui/frame/index.ios.js.map +1 -1
- package/ui/gestures/gestures-common.js +5 -5
- package/ui/gestures/gestures-common.js.map +1 -1
- package/ui/gestures/index.android.js +3 -3
- package/ui/gestures/index.android.js.map +1 -1
- package/ui/gestures/index.d.ts +2 -2
- package/ui/gestures/index.ios.js +6 -6
- package/ui/gestures/index.ios.js.map +1 -1
- package/ui/gestures/touch-manager.d.ts +2 -2
- package/ui/image-cache/image-cache-common.d.ts +5 -5
- package/ui/image-cache/image-cache-common.js +2 -2
- package/ui/image-cache/image-cache-common.js.map +1 -1
- package/ui/image-cache/index.d.ts +3 -3
- package/ui/index.d.ts +8 -2
- package/ui/index.js +7 -2
- package/ui/index.js.map +1 -1
- package/ui/label/index.android.js +1 -0
- package/ui/label/index.android.js.map +1 -1
- package/ui/layouts/flexbox-layout/flexbox-layout-common.d.ts +12 -12
- package/ui/layouts/grid-layout/grid-layout-common.d.ts +1 -1
- package/ui/layouts/root-layout/root-layout-common.js +45 -36
- package/ui/layouts/root-layout/root-layout-common.js.map +1 -1
- package/ui/list-view/index.d.ts +6 -6
- package/ui/list-view/list-view-common.js +8 -2
- package/ui/list-view/list-view-common.js.map +1 -1
- package/ui/page/index.ios.d.ts +4 -1
- package/ui/page/index.ios.js +84 -58
- package/ui/page/index.ios.js.map +1 -1
- package/ui/page/page-common.d.ts +72 -39
- package/ui/placeholder/index.android.d.ts +2 -2
- package/ui/placeholder/index.d.ts +2 -2
- package/ui/repeater/index.js +2 -1
- package/ui/repeater/index.js.map +1 -1
- package/ui/scroll-view/scroll-view-common.d.ts +4 -4
- package/ui/scroll-view/scroll-view-common.js.map +1 -1
- package/ui/search-bar/index.d.ts +3 -3
- package/ui/segmented-bar/index.d.ts +2 -2
- package/ui/segmented-bar/segmented-bar-common.d.ts +2 -2
- package/ui/styling/background.ios.js +3 -0
- package/ui/styling/background.ios.js.map +1 -1
- package/ui/styling/css-animation-parser.d.ts +12 -7
- package/ui/styling/css-animation-parser.js +90 -36
- package/ui/styling/css-animation-parser.js.map +1 -1
- package/ui/styling/css-selector.d.ts +1 -1
- package/ui/styling/css-utils.d.ts +1 -0
- package/ui/styling/css-utils.js +12 -0
- package/ui/styling/css-utils.js.map +1 -0
- package/ui/styling/font-common.js +6 -6
- package/ui/styling/font-common.js.map +1 -1
- package/ui/styling/font-interfaces.d.ts +3 -3
- package/ui/styling/font.ios.js +2 -1
- package/ui/styling/font.ios.js.map +1 -1
- package/ui/styling/style/index.d.ts +3 -0
- package/ui/styling/style/index.js.map +1 -1
- package/ui/styling/style-properties.js +5 -13
- package/ui/styling/style-properties.js.map +1 -1
- package/ui/styling/style-scope.js +7 -5
- package/ui/styling/style-scope.js.map +1 -1
- package/ui/tab-view/index.d.ts +2 -2
- package/ui/tab-view/tab-view-common.d.ts +2 -2
- package/ui/text-base/index.ios.js +21 -4
- package/ui/text-base/index.ios.js.map +1 -1
- package/ui/text-base/span.js.map +1 -1
- package/ui/transition/fade-transition.d.ts +1 -3
- package/ui/transition/fade-transition.ios.d.ts +14 -1
- package/ui/transition/fade-transition.ios.js +60 -26
- package/ui/transition/fade-transition.ios.js.map +1 -1
- package/ui/transition/index.android.d.ts +5 -5
- package/ui/transition/index.android.js +7 -6
- package/ui/transition/index.android.js.map +1 -1
- package/ui/transition/index.d.ts +38 -14
- package/ui/transition/index.ios.d.ts +5 -10
- package/ui/transition/index.ios.js +8 -22
- package/ui/transition/index.ios.js.map +1 -1
- package/ui/transition/modal-transition.android.d.ts +5 -0
- package/ui/transition/modal-transition.android.js +7 -0
- package/ui/transition/modal-transition.android.js.map +1 -0
- package/ui/transition/modal-transition.d.ts +2 -0
- package/ui/transition/modal-transition.ios.d.ts +34 -0
- package/ui/transition/modal-transition.ios.js +160 -0
- package/ui/transition/modal-transition.ios.js.map +1 -0
- package/ui/transition/page-transition.android.d.ts +6 -0
- package/ui/transition/page-transition.android.js +182 -0
- package/ui/transition/page-transition.android.js.map +1 -0
- package/ui/transition/page-transition.d.ts +2 -0
- package/ui/transition/page-transition.ios.d.ts +34 -0
- package/ui/transition/page-transition.ios.js +181 -0
- package/ui/transition/page-transition.ios.js.map +1 -0
- package/ui/transition/shared-transition-helper.android.d.ts +5 -0
- package/ui/transition/shared-transition-helper.android.js +6 -0
- package/ui/transition/shared-transition-helper.android.js.map +1 -0
- package/ui/transition/shared-transition-helper.d.ts +10 -0
- package/ui/transition/shared-transition-helper.ios.d.ts +14 -0
- package/ui/transition/shared-transition-helper.ios.js +471 -0
- package/ui/transition/shared-transition-helper.ios.js.map +1 -0
- package/ui/transition/shared-transition.d.ts +230 -0
- package/ui/transition/shared-transition.js +192 -0
- package/ui/transition/shared-transition.js.map +1 -0
- package/ui/transition/slide-transition.android.d.ts +1 -1
- package/ui/transition/slide-transition.android.js +1 -1
- package/ui/transition/slide-transition.android.js.map +1 -1
- package/ui/transition/slide-transition.d.ts +1 -1
- package/ui/transition/slide-transition.ios.d.ts +15 -2
- package/ui/transition/slide-transition.ios.js +86 -52
- package/ui/transition/slide-transition.ios.js.map +1 -1
- package/ui/web-view/index.d.ts +3 -3
- package/ui/web-view/web-view-interfaces.d.ts +1 -1
- package/utils/index.d.ts +0 -82
- package/utils/mainthread-helper.android.js +2 -2
- package/utils/mainthread-helper.android.js.map +1 -1
- package/utils/native-helper.d.ts +35 -0
- package/utils/native-helper.ios.d.ts +13 -0
- package/utils/native-helper.ios.js +73 -0
- package/utils/native-helper.ios.js.map +1 -1
- package/utils/number-utils.d.ts +10 -0
- package/utils/number-utils.js +12 -0
- package/utils/number-utils.js.map +1 -1
- package/utils/typescript-utils.d.ts +6 -0
- package/xhr/index.js +28 -28
- package/xhr/index.js.map +1 -1
- package/xml/index.js.map +1 -1
- package/ui/frame/fragment.transitions.ios.d.ts +0 -2
- package/ui/frame/fragment.transitions.ios.js +0 -71
- 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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"}
|