@gxpl/sdk 0.0.49 → 0.0.51
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.
|
@@ -12,7 +12,8 @@ const getScenesOnEnd_1 = require("./utils/getScenesOnEnd");
|
|
|
12
12
|
const getScenesOnInstantTransition_1 = require("./utils/getScenesOnInstantTransition");
|
|
13
13
|
const isActiveSwipeTransition_1 = require("./utils/isActiveSwipeTransition");
|
|
14
14
|
const getDeltaAndProgress_1 = require("./utils/getDeltaAndProgress");
|
|
15
|
-
const
|
|
15
|
+
const SWIPE_SLIDE_SUCCESS_THRESHOLD = 130;
|
|
16
|
+
const SWIPE_FADE_SUCCESS_THRESHOLD = 20;
|
|
16
17
|
exports.transitionMachine = (0, xstate_1.setup)({
|
|
17
18
|
types: {
|
|
18
19
|
input: {},
|
|
@@ -171,7 +172,8 @@ exports.transitionMachine = (0, xstate_1.setup)({
|
|
|
171
172
|
const { transition } = context;
|
|
172
173
|
if (!(0, isActiveSwipeTransition_1.isActiveSwipeTransition)(transition))
|
|
173
174
|
return null;
|
|
174
|
-
const
|
|
175
|
+
const threshold = transition.type === 'slide' ? SWIPE_SLIDE_SUCCESS_THRESHOLD : SWIPE_FADE_SUCCESS_THRESHOLD;
|
|
176
|
+
const transitionSuccess = (0, isTransitionSuccess_1.isTransitionSuccess)(transition, threshold);
|
|
175
177
|
return {
|
|
176
178
|
stage: 'settling',
|
|
177
179
|
success: transitionSuccess,
|
|
@@ -185,7 +187,8 @@ exports.transitionMachine = (0, xstate_1.setup)({
|
|
|
185
187
|
if (!(0, isActiveSwipeTransition_1.isActiveSwipeTransition)(transition))
|
|
186
188
|
return scenes;
|
|
187
189
|
const { type } = transition;
|
|
188
|
-
const
|
|
190
|
+
const threshold = transition.type === 'slide' ? SWIPE_SLIDE_SUCCESS_THRESHOLD : SWIPE_FADE_SUCCESS_THRESHOLD;
|
|
191
|
+
const transitionSuccess = (0, isTransitionSuccess_1.isTransitionSuccess)(transition, threshold);
|
|
189
192
|
const newScenes = type === 'slide'
|
|
190
193
|
? (0, getScenesOnEnd_1.getScenesOnSlideEnd)(scenes, transition, transitionSuccess)
|
|
191
194
|
: (0, getScenesOnEnd_1.getScenesOnFadeEnd)(scenes);
|
|
@@ -4,6 +4,7 @@ import { Article } from '../../sdk/types/article/Article';
|
|
|
4
4
|
export declare class InteractionsRegistry implements InteractionsRegistryPort {
|
|
5
5
|
private ctrls;
|
|
6
6
|
private items;
|
|
7
|
+
private articleWidth;
|
|
7
8
|
private interactions;
|
|
8
9
|
private stateItemsIdsMap;
|
|
9
10
|
private interactionStateMap;
|
|
@@ -14,6 +15,7 @@ export declare class InteractionsRegistry implements InteractionsRegistryPort {
|
|
|
14
15
|
private activeStateIdInteractionIdMap;
|
|
15
16
|
constructor(article: Article, isStartSceneInitialized: boolean);
|
|
16
17
|
register(itemId: ItemId, ctrl: ItemInteractionCtrl): void;
|
|
18
|
+
setArticleWidth(width: number): void;
|
|
17
19
|
getStatePropsForItem(itemId: string): StateProps;
|
|
18
20
|
getItemAvailableTriggers(itemId: string): Set<InteractionItemTrigger['type']>;
|
|
19
21
|
notifySceneInTransition(): void;
|
|
@@ -7,6 +7,7 @@ const ulid_1 = require("ulid");
|
|
|
7
7
|
class InteractionsRegistry {
|
|
8
8
|
constructor(article, isStartSceneInitialized) {
|
|
9
9
|
this.ctrls = new Map();
|
|
10
|
+
this.articleWidth = 1;
|
|
10
11
|
this.inTransitionDefaultStateId = (0, ulid_1.ulid)();
|
|
11
12
|
this.outTransitionStartStateId = (0, ulid_1.ulid)();
|
|
12
13
|
this.isStartSceneInitialized = isStartSceneInitialized;
|
|
@@ -52,6 +53,9 @@ class InteractionsRegistry {
|
|
|
52
53
|
register(itemId, ctrl) {
|
|
53
54
|
this.ctrls.set(itemId, ctrl);
|
|
54
55
|
}
|
|
56
|
+
setArticleWidth(width) {
|
|
57
|
+
this.articleWidth = width;
|
|
58
|
+
}
|
|
55
59
|
getStatePropsForItem(itemId) {
|
|
56
60
|
var _a, _b, _c;
|
|
57
61
|
const { items } = this;
|
|
@@ -225,7 +229,7 @@ class InteractionsRegistry {
|
|
|
225
229
|
const matchingTrigger = interaction.triggers.find((trigger) => {
|
|
226
230
|
if (!('position' in trigger) || trigger.position === 0)
|
|
227
231
|
return false;
|
|
228
|
-
const triggerPosition = trigger.position *
|
|
232
|
+
const triggerPosition = trigger.position * this.articleWidth;
|
|
229
233
|
const isScrolledPastTrigger = triggerPosition < position;
|
|
230
234
|
if (!isScrolledPastTrigger && !trigger.isReverse)
|
|
231
235
|
return false;
|
|
@@ -234,7 +238,7 @@ class InteractionsRegistry {
|
|
|
234
238
|
});
|
|
235
239
|
if (!matchingTrigger || !('position' in matchingTrigger) || !activeStateId)
|
|
236
240
|
continue;
|
|
237
|
-
const triggerPosition = matchingTrigger.position *
|
|
241
|
+
const triggerPosition = matchingTrigger.position * this.articleWidth;
|
|
238
242
|
const isScrolledPastTrigger = triggerPosition < position;
|
|
239
243
|
const targetStateId = isScrolledPastTrigger ? matchingTrigger.to : matchingTrigger.from;
|
|
240
244
|
this.setCurrentStateForInteraction(interaction.id, targetStateId);
|
|
@@ -25,6 +25,15 @@ const InteractionsProvider = ({ article, children }) => {
|
|
|
25
25
|
};
|
|
26
26
|
return articleRectObserver.on('scroll', handleScroll);
|
|
27
27
|
}, [registry, articleRectObserver]);
|
|
28
|
+
(0, react_1.useEffect)(() => {
|
|
29
|
+
if (!registry || !articleRectObserver)
|
|
30
|
+
return;
|
|
31
|
+
registry.setArticleWidth(articleRectObserver.width);
|
|
32
|
+
const handleResize = () => {
|
|
33
|
+
registry.setArticleWidth(articleRectObserver.width);
|
|
34
|
+
};
|
|
35
|
+
return articleRectObserver.on('resize', handleResize);
|
|
36
|
+
}, [registry, articleRectObserver]);
|
|
28
37
|
const notifyLoad = (0, react_1.useCallback)(() => {
|
|
29
38
|
if (startScene === article.id) {
|
|
30
39
|
setIsStartSceneInitialized(true);
|