@gxpl/sdk 0.0.49 → 0.0.50
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.
|
@@ -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);
|