react-native-divkit 1.6.5 → 1.8.0
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/README.md +18 -15
- package/dist/DivKit.d.ts.map +1 -1
- package/dist/DivKit.js +115 -4
- package/dist/DivKit.js.map +1 -1
- package/dist/components/DivComponent.d.ts.map +1 -1
- package/dist/components/DivComponent.js +6 -2
- package/dist/components/DivComponent.js.map +1 -1
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/indicator/DivIndicator.d.ts +19 -0
- package/dist/components/indicator/DivIndicator.d.ts.map +1 -0
- package/dist/components/indicator/DivIndicator.js +112 -0
- package/dist/components/indicator/DivIndicator.js.map +1 -0
- package/dist/components/indicator/index.d.ts +3 -0
- package/dist/components/indicator/index.d.ts.map +1 -0
- package/dist/components/indicator/index.js +2 -0
- package/dist/components/indicator/index.js.map +1 -0
- package/dist/components/indicator/utils.d.ts +61 -0
- package/dist/components/indicator/utils.d.ts.map +1 -0
- package/dist/components/indicator/utils.js +104 -0
- package/dist/components/indicator/utils.js.map +1 -0
- package/dist/components/pager/DivPager.d.ts +22 -0
- package/dist/components/pager/DivPager.d.ts.map +1 -0
- package/dist/components/pager/DivPager.js +269 -0
- package/dist/components/pager/DivPager.js.map +1 -0
- package/dist/components/pager/index.d.ts +3 -0
- package/dist/components/pager/index.d.ts.map +1 -0
- package/dist/components/pager/index.js +2 -0
- package/dist/components/pager/index.js.map +1 -0
- package/dist/components/pager/utils.d.ts +96 -0
- package/dist/components/pager/utils.d.ts.map +1 -0
- package/dist/components/pager/utils.js +142 -0
- package/dist/components/pager/utils.js.map +1 -0
- package/dist/components/state/DivState.d.ts +11 -12
- package/dist/components/state/DivState.d.ts.map +1 -1
- package/dist/components/state/DivState.js +263 -35
- package/dist/components/state/DivState.js.map +1 -1
- package/dist/components/utilities/Background.d.ts.map +1 -1
- package/dist/components/utilities/Background.js +4 -3
- package/dist/components/utilities/Background.js.map +1 -1
- package/dist/components/utilities/Outer.d.ts.map +1 -1
- package/dist/components/utilities/Outer.js +175 -78
- package/dist/components/utilities/Outer.js.map +1 -1
- package/dist/context/DivStateScopeContext.d.ts +18 -0
- package/dist/context/DivStateScopeContext.d.ts.map +1 -0
- package/dist/context/DivStateScopeContext.js +7 -0
- package/dist/context/DivStateScopeContext.js.map +1 -0
- package/dist/context/PagerContext.d.ts +30 -0
- package/dist/context/PagerContext.d.ts.map +1 -0
- package/dist/context/PagerContext.js +76 -0
- package/dist/context/PagerContext.js.map +1 -0
- package/dist/context/index.d.ts +1 -0
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +1 -0
- package/dist/context/index.js.map +1 -1
- package/dist/hooks/useAppearanceTransition.d.ts +86 -0
- package/dist/hooks/useAppearanceTransition.d.ts.map +1 -0
- package/dist/hooks/useAppearanceTransition.js +490 -0
- package/dist/hooks/useAppearanceTransition.js.map +1 -0
- package/dist/hooks/useChangeBoundsTransition.d.ts +46 -0
- package/dist/hooks/useChangeBoundsTransition.d.ts.map +1 -0
- package/dist/hooks/useChangeBoundsTransition.js +151 -0
- package/dist/hooks/useChangeBoundsTransition.js.map +1 -0
- package/dist/utils/configureChangeBoundsLayout.d.ts +11 -0
- package/dist/utils/configureChangeBoundsLayout.d.ts.map +1 -0
- package/dist/utils/configureChangeBoundsLayout.js +65 -0
- package/dist/utils/configureChangeBoundsLayout.js.map +1 -0
- package/dist/utils/flattenTransition.d.ts +5 -0
- package/dist/utils/flattenTransition.d.ts.map +1 -0
- package/dist/utils/flattenTransition.js +27 -0
- package/dist/utils/flattenTransition.js.map +1 -0
- package/package.json +3 -1
- package/src/DivKit.tsx +131 -5
- package/src/components/DivComponent.tsx +8 -2
- package/src/components/README.md +59 -5
- package/src/components/index.ts +4 -0
- package/src/components/indicator/DivIndicator.tsx +175 -0
- package/src/components/indicator/index.ts +2 -0
- package/src/components/indicator/utils.ts +149 -0
- package/src/components/pager/DivPager.tsx +393 -0
- package/src/components/pager/index.ts +2 -0
- package/src/components/pager/utils.ts +214 -0
- package/src/components/state/DivState.tsx +308 -39
- package/src/components/utilities/Background.tsx +4 -3
- package/src/components/utilities/Outer.tsx +192 -75
- package/src/context/DivStateScopeContext.tsx +23 -0
- package/src/context/PagerContext.tsx +108 -0
- package/src/context/index.ts +8 -0
- package/src/hooks/useAppearanceTransition.ts +621 -0
- package/src/hooks/useChangeBoundsTransition.ts +193 -0
- package/src/types/indicator.d.ts +32 -0
- package/src/types/pager.d.ts +36 -0
- package/src/types/shape.d.ts +26 -0
- package/src/utils/configureChangeBoundsLayout.ts +74 -0
- package/src/utils/flattenTransition.ts +36 -0
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure helpers for DivPager. Extracted so they can be unit-tested without
|
|
3
|
+
* having to render the React tree.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Compute the size of a single page along the main axis. Mirrors the Web
|
|
7
|
+
* Pager.svelte autoSizeVal calculation:
|
|
8
|
+
* - fixed + center: containerSize − 2·neighbour − 2·spacing
|
|
9
|
+
* - fixed + start/end: containerSize − neighbour − spacing
|
|
10
|
+
* - percentage: containerSize · page_width / 100
|
|
11
|
+
* - wrap_content / unknown: usable area (containerSize − paddings)
|
|
12
|
+
*/
|
|
13
|
+
export function computePageSize(args) {
|
|
14
|
+
const { containerSize, layoutMode, scrollAxisAlignment, itemSpacing, innerPadStart, innerPadEnd } = args;
|
|
15
|
+
if (containerSize <= 0)
|
|
16
|
+
return 0;
|
|
17
|
+
const usable = containerSize - innerPadStart - innerPadEnd;
|
|
18
|
+
const lm = layoutMode;
|
|
19
|
+
if (lm && lm.type === 'fixed') {
|
|
20
|
+
const neighbourW = lm.neighbour_page_width?.value ?? 0;
|
|
21
|
+
if (scrollAxisAlignment === 'center') {
|
|
22
|
+
return Math.max(0, containerSize - 2 * neighbourW - 2 * itemSpacing);
|
|
23
|
+
}
|
|
24
|
+
return Math.max(0, containerSize - neighbourW - itemSpacing);
|
|
25
|
+
}
|
|
26
|
+
if (lm && lm.type === 'percentage') {
|
|
27
|
+
const pageW = lm.page_width?.value ?? 100;
|
|
28
|
+
return Math.max(0, (containerSize * pageW) / 100);
|
|
29
|
+
}
|
|
30
|
+
return Math.max(0, usable);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Compute the contentContainer paddings the inner ScrollView needs so that the
|
|
34
|
+
* first/last items snap to the right visual position (centre/start/end). In
|
|
35
|
+
* infinite mode the duplicates take that role and we use zero padding.
|
|
36
|
+
*/
|
|
37
|
+
export function computeContentPad(args) {
|
|
38
|
+
const { containerSize, pageSize, innerPadStart, innerPadEnd, layoutMode, scrollAxisAlignment, itemSpacing, isInfinite } = args;
|
|
39
|
+
if (containerSize <= 0 || pageSize <= 0) {
|
|
40
|
+
return { start: innerPadStart, end: innerPadEnd };
|
|
41
|
+
}
|
|
42
|
+
if (isInfinite) {
|
|
43
|
+
return { start: 0, end: 0 };
|
|
44
|
+
}
|
|
45
|
+
const lm = layoutMode;
|
|
46
|
+
if (lm && lm.type === 'fixed') {
|
|
47
|
+
const neighbourW = lm.neighbour_page_width?.value ?? 0;
|
|
48
|
+
if (scrollAxisAlignment === 'center') {
|
|
49
|
+
const pad = neighbourW + itemSpacing;
|
|
50
|
+
return { start: pad, end: pad };
|
|
51
|
+
}
|
|
52
|
+
if (scrollAxisAlignment === 'start') {
|
|
53
|
+
return { start: innerPadStart, end: neighbourW + itemSpacing + innerPadEnd };
|
|
54
|
+
}
|
|
55
|
+
if (scrollAxisAlignment === 'end') {
|
|
56
|
+
return { start: neighbourW + itemSpacing + innerPadStart, end: innerPadEnd };
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return { start: innerPadStart, end: innerPadEnd };
|
|
60
|
+
}
|
|
61
|
+
export const DUPLICATES_IN_INFINITE = 2;
|
|
62
|
+
/**
|
|
63
|
+
* Map a "real" item index (0..size-1) to its rendered position.
|
|
64
|
+
* In infinite mode the real items live in [DUPLICATES, DUPLICATES + size).
|
|
65
|
+
*/
|
|
66
|
+
export function realToPosition(realIdx, isInfinite, duplicates = DUPLICATES_IN_INFINITE) {
|
|
67
|
+
return isInfinite ? duplicates + realIdx : realIdx;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Map a rendered position back to the real index. Wraps modulo `size` when
|
|
71
|
+
* the position lands inside the duplicate region.
|
|
72
|
+
*/
|
|
73
|
+
export function positionToReal(pos, isInfinite, size, duplicates = DUPLICATES_IN_INFINITE) {
|
|
74
|
+
if (size <= 0)
|
|
75
|
+
return 0;
|
|
76
|
+
if (!isInfinite) {
|
|
77
|
+
return Math.max(0, Math.min(size - 1, pos));
|
|
78
|
+
}
|
|
79
|
+
const inner = pos - duplicates;
|
|
80
|
+
return ((inner % size) + size) % size;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* True when `pos` corresponds to one of the duplicate entries (only meaningful
|
|
84
|
+
* in infinite mode).
|
|
85
|
+
*/
|
|
86
|
+
export function isInDuplicateRegion(pos, isInfinite, size, duplicates = DUPLICATES_IN_INFINITE) {
|
|
87
|
+
if (!isInfinite)
|
|
88
|
+
return false;
|
|
89
|
+
return pos < duplicates || pos >= duplicates + size;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Build the list of items to render. In infinite mode this prefixes the array
|
|
93
|
+
* with `duplicates` copies of the last items and suffixes it with `duplicates`
|
|
94
|
+
* copies of the first items, so the user can swipe past either edge and land
|
|
95
|
+
* on something visually identical to the wrap-around target.
|
|
96
|
+
*/
|
|
97
|
+
export function buildRenderedItems(items, isInfinite, duplicates = DUPLICATES_IN_INFINITE) {
|
|
98
|
+
if (!items.length)
|
|
99
|
+
return [];
|
|
100
|
+
if (!isInfinite) {
|
|
101
|
+
return items.map((item, index) => ({ item, realIndex: index, key: `r-${index}` }));
|
|
102
|
+
}
|
|
103
|
+
const size = items.length;
|
|
104
|
+
const head = [];
|
|
105
|
+
const tail = [];
|
|
106
|
+
for (let i = 0; i < duplicates; i++) {
|
|
107
|
+
const realIdx = (size - duplicates + i + size) % size;
|
|
108
|
+
head.push({ item: items[realIdx], realIndex: realIdx, key: `dup-h-${i}` });
|
|
109
|
+
}
|
|
110
|
+
for (let i = 0; i < duplicates; i++) {
|
|
111
|
+
const realIdx = i % size;
|
|
112
|
+
tail.push({ item: items[realIdx], realIndex: realIdx, key: `dup-t-${i}` });
|
|
113
|
+
}
|
|
114
|
+
const real = items.map((item, index) => ({
|
|
115
|
+
item,
|
|
116
|
+
realIndex: index,
|
|
117
|
+
key: `r-${index}`
|
|
118
|
+
}));
|
|
119
|
+
return [...head, ...real, ...tail];
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Decide whether infinite_scroll should actually be active.
|
|
123
|
+
* Mirrors Web's correctBooleanInt + the `items.length >= DUPLICATES_IN_INFINITE`
|
|
124
|
+
* gate.
|
|
125
|
+
*/
|
|
126
|
+
export function isInfiniteEnabled(infiniteValue, itemsLength) {
|
|
127
|
+
const truthy = infiniteValue === true ||
|
|
128
|
+
infiniteValue === 1 ||
|
|
129
|
+
infiniteValue === '1' ||
|
|
130
|
+
infiniteValue === 'true';
|
|
131
|
+
return truthy && itemsLength >= DUPLICATES_IN_INFINITE;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Convert a scroll offset (in px) into a snap position (rounded). Returns 0
|
|
135
|
+
* when snapInterval <= 0.
|
|
136
|
+
*/
|
|
137
|
+
export function offsetToPosition(offset, snapInterval) {
|
|
138
|
+
if (snapInterval <= 0)
|
|
139
|
+
return 0;
|
|
140
|
+
return Math.round(offset / snapInterval);
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/components/pager/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,21 +6,20 @@ export interface DivStateProps {
|
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
8
8
|
* DivState component - renders different content based on state
|
|
9
|
-
*
|
|
9
|
+
*
|
|
10
|
+
* Supports:
|
|
10
11
|
* - State selection by state_id
|
|
11
12
|
* - Default state
|
|
12
|
-
* - State switching via actions (set_state)
|
|
13
|
-
* -
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* - Clip to bounds
|
|
20
|
-
* - Advanced state management
|
|
21
|
-
* - Multiple concurrent state transitions
|
|
13
|
+
* - State switching via actions (set_state) and via state_id_variable two-way binding
|
|
14
|
+
* - transition_change on the state container (smooth layout transitions for neighbours via
|
|
15
|
+
* configureChangeBoundsLayout)
|
|
16
|
+
* - Per-element transition_out for children declaring it in the OUTGOING state JSON
|
|
17
|
+
* (children register a playOut via DivStateScopeContext; DivState awaits them in parallel
|
|
18
|
+
* before mounting the new state). Transition_in for the INCOMING children plays automatically
|
|
19
|
+
* on mount via Outer's mode='auto-in'.
|
|
22
20
|
*
|
|
23
|
-
* Based on Web State.svelte
|
|
21
|
+
* Based on Web State.svelte (simplified — no per-element bbox tracking for transition_change
|
|
22
|
+
* within state subtree).
|
|
24
23
|
*/
|
|
25
24
|
export declare function DivState({ componentContext }: DivStateProps): React.JSX.Element;
|
|
26
25
|
//# sourceMappingURL=DivState.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DivState.d.ts","sourceRoot":"","sources":["../../../src/components/state/DivState.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"DivState.d.ts","sourceRoot":"","sources":["../../../src/components/state/DivState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAEjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAS,MAAM,mBAAmB,CAAC;AAW7D,MAAM,WAAW,aAAa;IAC1B,gBAAgB,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;CACpD;AAcD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,QAAQ,CAAC,EAAE,gBAAgB,EAAE,EAAE,aAAa,qBAuR3D"}
|
|
@@ -1,63 +1,154 @@
|
|
|
1
|
-
import React, { useState, useEffect, useMemo } from 'react';
|
|
2
|
-
import { View } from 'react-native';
|
|
1
|
+
import React, { useState, useEffect, useMemo, useCallback, useRef } from 'react';
|
|
2
|
+
import { Animated, Easing, View } from 'react-native';
|
|
3
3
|
import { Outer } from '../utilities/Outer';
|
|
4
4
|
import { useStateContext } from '../../context/StateContext';
|
|
5
5
|
import { useDivKitContext } from '../../context/DivKitContext';
|
|
6
|
+
import { DivStateScopeContext } from '../../context/DivStateScopeContext';
|
|
7
|
+
import { LayoutParamsContext } from '../../context/LayoutParamsContext';
|
|
6
8
|
import { wrapError } from '../../utils/wrapError';
|
|
9
|
+
import { flattenChangeTransition } from '../../utils/flattenTransition';
|
|
7
10
|
/**
|
|
8
11
|
* DivState component - renders different content based on state
|
|
9
|
-
*
|
|
12
|
+
*
|
|
13
|
+
* Supports:
|
|
10
14
|
* - State selection by state_id
|
|
11
15
|
* - Default state
|
|
12
|
-
* - State switching via actions (set_state)
|
|
13
|
-
* -
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* - Clip to bounds
|
|
20
|
-
* - Advanced state management
|
|
21
|
-
* - Multiple concurrent state transitions
|
|
16
|
+
* - State switching via actions (set_state) and via state_id_variable two-way binding
|
|
17
|
+
* - transition_change on the state container (smooth layout transitions for neighbours via
|
|
18
|
+
* configureChangeBoundsLayout)
|
|
19
|
+
* - Per-element transition_out for children declaring it in the OUTGOING state JSON
|
|
20
|
+
* (children register a playOut via DivStateScopeContext; DivState awaits them in parallel
|
|
21
|
+
* before mounting the new state). Transition_in for the INCOMING children plays automatically
|
|
22
|
+
* on mount via Outer's mode='auto-in'.
|
|
22
23
|
*
|
|
23
|
-
* Based on Web State.svelte
|
|
24
|
+
* Based on Web State.svelte (simplified — no per-element bbox tracking for transition_change
|
|
25
|
+
* within state subtree).
|
|
24
26
|
*/
|
|
25
27
|
export function DivState({ componentContext }) {
|
|
26
28
|
const { json } = componentContext;
|
|
27
29
|
const { getVariable } = useDivKitContext();
|
|
28
30
|
const { registerState } = useStateContext();
|
|
29
|
-
// Get state ID for registration
|
|
30
31
|
const stateId = json.div_id || json.id;
|
|
31
|
-
// Find default state
|
|
32
32
|
const defaultStateId = useMemo(() => {
|
|
33
33
|
if (json.default_state_id) {
|
|
34
34
|
return json.default_state_id;
|
|
35
35
|
}
|
|
36
|
-
// If no default, use first state
|
|
37
36
|
if (json.states && json.states.length > 0) {
|
|
38
37
|
return json.states[0].state_id;
|
|
39
38
|
}
|
|
40
39
|
return undefined;
|
|
41
40
|
}, [json.default_state_id, json.states]);
|
|
42
|
-
// State management
|
|
43
41
|
const [currentStateId, setCurrentStateId] = useState(defaultStateId);
|
|
42
|
+
const [stagedStateChange, setStagedStateChange] = useState(null);
|
|
43
|
+
const [contentSize, setContentSize] = useState(null);
|
|
44
|
+
// True while we're awaiting transition_out of the previous state — we keep rendering the
|
|
45
|
+
// outgoing children during this window so their out-animations remain visible.
|
|
46
|
+
const [pendingStateId, setPendingStateId] = useState(undefined);
|
|
47
|
+
// Registry of transition_out players from children inside this state's scope.
|
|
48
|
+
// The set is REPLACED each time the state swaps (because children unmount), so we don't need
|
|
49
|
+
// explicit clearing — old entries are pruned naturally by Outer's cleanup effect.
|
|
50
|
+
const outPlayersRef = useRef(new Set());
|
|
51
|
+
const scopeValue = useMemo(() => ({
|
|
52
|
+
registerTransitionOutPlayer(play) {
|
|
53
|
+
outPlayersRef.current.add(play);
|
|
54
|
+
return () => {
|
|
55
|
+
outPlayersRef.current.delete(play);
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
}), []);
|
|
59
|
+
const transitionChange = json.transition_change;
|
|
60
|
+
const stageTimerRef = useRef(null);
|
|
61
|
+
const animatedFrame = useRef({
|
|
62
|
+
left: new Animated.Value(0),
|
|
63
|
+
top: new Animated.Value(0),
|
|
64
|
+
width: new Animated.Value(0),
|
|
65
|
+
height: new Animated.Value(0),
|
|
66
|
+
}).current;
|
|
67
|
+
const applyStateChange = useCallback(async (newStateId) => {
|
|
68
|
+
if (newStateId === currentStateId || newStateId === pendingStateId)
|
|
69
|
+
return;
|
|
70
|
+
const outPlayers = Array.from(outPlayersRef.current);
|
|
71
|
+
if (outPlayers.length > 0) {
|
|
72
|
+
setPendingStateId(newStateId);
|
|
73
|
+
try {
|
|
74
|
+
await Promise.all(outPlayers.map(p => p()));
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
componentContext.logError(wrapError(err, {
|
|
78
|
+
additional: { phase: 'state_transition_out' }
|
|
79
|
+
}));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const nextState = json.states?.find(state => state.state_id === newStateId);
|
|
83
|
+
const previousState = json.states?.find(state => state.state_id === currentStateId);
|
|
84
|
+
const nextTransitionChange = nextState?.div?.transition_change;
|
|
85
|
+
const currentTransitionChange = previousState?.div?.transition_change;
|
|
86
|
+
const effectiveTransitionChange = nextTransitionChange || currentTransitionChange || transitionChange;
|
|
87
|
+
const duration = getChangeBoundsDuration(effectiveTransitionChange);
|
|
88
|
+
if (previousState?.div && nextState?.div && contentSize && duration > 0) {
|
|
89
|
+
const fromFrame = getChildFrame(previousState.div, contentSize);
|
|
90
|
+
const toFrame = getChildFrame(nextState.div, contentSize);
|
|
91
|
+
animatedFrame.left.setValue(fromFrame.left);
|
|
92
|
+
animatedFrame.top.setValue(fromFrame.top);
|
|
93
|
+
animatedFrame.width.setValue(fromFrame.width);
|
|
94
|
+
animatedFrame.height.setValue(fromFrame.height);
|
|
95
|
+
setPendingStateId(newStateId);
|
|
96
|
+
setStagedStateChange({
|
|
97
|
+
targetStateId: newStateId,
|
|
98
|
+
div: createOverlayDiv(previousState.div)
|
|
99
|
+
});
|
|
100
|
+
await new Promise(resolve => {
|
|
101
|
+
if (stageTimerRef.current) {
|
|
102
|
+
clearTimeout(stageTimerRef.current);
|
|
103
|
+
}
|
|
104
|
+
Animated.parallel([
|
|
105
|
+
Animated.timing(animatedFrame.left, {
|
|
106
|
+
toValue: toFrame.left,
|
|
107
|
+
duration,
|
|
108
|
+
easing: Easing.inOut(Easing.ease),
|
|
109
|
+
useNativeDriver: false,
|
|
110
|
+
}),
|
|
111
|
+
Animated.timing(animatedFrame.top, {
|
|
112
|
+
toValue: toFrame.top,
|
|
113
|
+
duration,
|
|
114
|
+
easing: Easing.inOut(Easing.ease),
|
|
115
|
+
useNativeDriver: false,
|
|
116
|
+
}),
|
|
117
|
+
Animated.timing(animatedFrame.width, {
|
|
118
|
+
toValue: toFrame.width,
|
|
119
|
+
duration,
|
|
120
|
+
easing: Easing.inOut(Easing.ease),
|
|
121
|
+
useNativeDriver: false,
|
|
122
|
+
}),
|
|
123
|
+
Animated.timing(animatedFrame.height, {
|
|
124
|
+
toValue: toFrame.height,
|
|
125
|
+
duration,
|
|
126
|
+
easing: Easing.inOut(Easing.ease),
|
|
127
|
+
useNativeDriver: false,
|
|
128
|
+
}),
|
|
129
|
+
]).start(() => {
|
|
130
|
+
resolve();
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
setCurrentStateId(newStateId);
|
|
135
|
+
setStagedStateChange(null);
|
|
136
|
+
setPendingStateId(undefined);
|
|
137
|
+
}, [currentStateId, pendingStateId, json.states, transitionChange, contentSize, animatedFrame, componentContext]);
|
|
44
138
|
// Handle state_id_variable (two-way binding)
|
|
45
139
|
const stateVariableName = json.state_id_variable;
|
|
46
140
|
const stateVariable = stateVariableName ? getVariable(stateVariableName) : undefined;
|
|
47
|
-
// Sync with state variable
|
|
48
141
|
useEffect(() => {
|
|
49
142
|
if (stateVariable) {
|
|
50
|
-
// Subscribe to variable changes
|
|
51
143
|
const unsubscribe = stateVariable.subscribe((value) => {
|
|
52
144
|
if (typeof value === 'string' && value !== currentStateId) {
|
|
53
|
-
|
|
145
|
+
void applyStateChange(value);
|
|
54
146
|
}
|
|
55
147
|
});
|
|
56
148
|
return unsubscribe;
|
|
57
149
|
}
|
|
58
150
|
return undefined;
|
|
59
|
-
}, [stateVariable, currentStateId]);
|
|
60
|
-
// Update variable when state changes
|
|
151
|
+
}, [stateVariable, currentStateId, applyStateChange]);
|
|
61
152
|
useEffect(() => {
|
|
62
153
|
if (stateVariable && currentStateId) {
|
|
63
154
|
const currentValue = stateVariable.getValue();
|
|
@@ -66,18 +157,16 @@ export function DivState({ componentContext }) {
|
|
|
66
157
|
}
|
|
67
158
|
}
|
|
68
159
|
}, [stateVariable, currentStateId]);
|
|
69
|
-
// Register state in context for set_state action
|
|
70
160
|
useEffect(() => {
|
|
71
161
|
if (stateId) {
|
|
72
162
|
const unregister = registerState(stateId, async (newStateId) => {
|
|
73
|
-
|
|
163
|
+
await applyStateChange(newStateId);
|
|
74
164
|
return undefined;
|
|
75
165
|
});
|
|
76
166
|
return unregister;
|
|
77
167
|
}
|
|
78
168
|
return undefined;
|
|
79
|
-
}, [stateId, registerState]);
|
|
80
|
-
// Validate states
|
|
169
|
+
}, [stateId, registerState, applyStateChange]);
|
|
81
170
|
useEffect(() => {
|
|
82
171
|
if (!json.states || json.states.length === 0) {
|
|
83
172
|
componentContext.logError(wrapError(new Error('Empty "states" prop for div "state"')));
|
|
@@ -86,7 +175,14 @@ export function DivState({ componentContext }) {
|
|
|
86
175
|
componentContext.logError(wrapError(new Error('Missing "id" prop for div "state"')));
|
|
87
176
|
}
|
|
88
177
|
}, [json.states, stateId, componentContext]);
|
|
89
|
-
|
|
178
|
+
useEffect(() => {
|
|
179
|
+
return () => {
|
|
180
|
+
if (stageTimerRef.current) {
|
|
181
|
+
clearTimeout(stageTimerRef.current);
|
|
182
|
+
stageTimerRef.current = null;
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
}, []);
|
|
90
186
|
const currentState = useMemo(() => {
|
|
91
187
|
if (!json.states)
|
|
92
188
|
return undefined;
|
|
@@ -95,17 +191,29 @@ export function DivState({ componentContext }) {
|
|
|
95
191
|
return undefined;
|
|
96
192
|
return found;
|
|
97
193
|
}, [json.states, currentStateId]);
|
|
98
|
-
|
|
194
|
+
const renderedDiv = currentState?.div;
|
|
99
195
|
const childContext = useMemo(() => {
|
|
100
|
-
if (!
|
|
196
|
+
if (!renderedDiv)
|
|
101
197
|
return undefined;
|
|
102
|
-
return componentContext.produceChildContext(
|
|
198
|
+
return componentContext.produceChildContext(renderedDiv, {
|
|
103
199
|
path: currentStateId
|
|
104
200
|
});
|
|
105
|
-
}, [
|
|
106
|
-
|
|
201
|
+
}, [renderedDiv, currentStateId, componentContext]);
|
|
202
|
+
const contentStyle = useMemo(() => {
|
|
203
|
+
const child = renderedDiv;
|
|
204
|
+
const style = {
|
|
205
|
+
width: '100%',
|
|
206
|
+
alignItems: mapAlignmentToFlex(child?.alignment_horizontal),
|
|
207
|
+
justifyContent: mapAlignmentToFlex(child?.alignment_vertical),
|
|
208
|
+
};
|
|
209
|
+
const heightType = json.height?.type;
|
|
210
|
+
if (heightType === 'fixed' || heightType === 'match_parent') {
|
|
211
|
+
style.flex = 1;
|
|
212
|
+
}
|
|
213
|
+
return style;
|
|
214
|
+
}, [renderedDiv, json.height]);
|
|
107
215
|
const renderContent = () => {
|
|
108
|
-
if (!
|
|
216
|
+
if (!renderedDiv || !childContext) {
|
|
109
217
|
return null;
|
|
110
218
|
}
|
|
111
219
|
// Import DivComponent dynamically to avoid circular dependency
|
|
@@ -113,8 +221,128 @@ export function DivState({ componentContext }) {
|
|
|
113
221
|
const DivComponent = require('../DivComponent').DivComponent;
|
|
114
222
|
return <DivComponent componentContext={childContext}/>;
|
|
115
223
|
};
|
|
224
|
+
const overlayContext = useMemo(() => {
|
|
225
|
+
if (!stagedStateChange?.div)
|
|
226
|
+
return undefined;
|
|
227
|
+
return componentContext.produceChildContext(stagedStateChange.div, {
|
|
228
|
+
path: currentStateId
|
|
229
|
+
});
|
|
230
|
+
}, [stagedStateChange, currentStateId, componentContext]);
|
|
231
|
+
const renderOverlay = () => {
|
|
232
|
+
if (!stagedStateChange?.div || !overlayContext) {
|
|
233
|
+
return null;
|
|
234
|
+
}
|
|
235
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
236
|
+
const DivComponent = require('../DivComponent').DivComponent;
|
|
237
|
+
return (<Animated.View pointerEvents="none" style={{
|
|
238
|
+
position: 'absolute',
|
|
239
|
+
left: animatedFrame.left,
|
|
240
|
+
top: animatedFrame.top,
|
|
241
|
+
width: animatedFrame.width,
|
|
242
|
+
height: animatedFrame.height,
|
|
243
|
+
overflow: 'hidden',
|
|
244
|
+
}}>
|
|
245
|
+
<LayoutParamsContext.Provider value={{ parentContainerOrientation: 'vertical' }}>
|
|
246
|
+
<DivComponent componentContext={overlayContext}/>
|
|
247
|
+
</LayoutParamsContext.Provider>
|
|
248
|
+
</Animated.View>);
|
|
249
|
+
};
|
|
250
|
+
const handleContentLayout = useCallback((event) => {
|
|
251
|
+
const { width, height } = event.nativeEvent.layout;
|
|
252
|
+
setContentSize(prev => {
|
|
253
|
+
if (prev && prev.width === width && prev.height === height)
|
|
254
|
+
return prev;
|
|
255
|
+
return { width, height };
|
|
256
|
+
});
|
|
257
|
+
}, []);
|
|
116
258
|
return (<Outer componentContext={componentContext}>
|
|
117
|
-
<
|
|
259
|
+
<DivStateScopeContext.Provider value={scopeValue}>
|
|
260
|
+
<View style={[contentStyle, { position: 'relative' }]} onLayout={handleContentLayout}>
|
|
261
|
+
{stagedStateChange ? (<View style={{ opacity: 0 }}>
|
|
262
|
+
<LayoutParamsContext.Provider value={{ parentContainerOrientation: 'vertical' }}>
|
|
263
|
+
{renderContent()}
|
|
264
|
+
</LayoutParamsContext.Provider>
|
|
265
|
+
</View>) : (<LayoutParamsContext.Provider value={{ parentContainerOrientation: 'vertical' }}>
|
|
266
|
+
{renderContent()}
|
|
267
|
+
</LayoutParamsContext.Provider>)}
|
|
268
|
+
{renderOverlay()}
|
|
269
|
+
</View>
|
|
270
|
+
</DivStateScopeContext.Provider>
|
|
118
271
|
</Outer>);
|
|
119
272
|
}
|
|
273
|
+
function mapAlignmentToFlex(alignment) {
|
|
274
|
+
switch (alignment) {
|
|
275
|
+
case 'center':
|
|
276
|
+
return 'center';
|
|
277
|
+
case 'right':
|
|
278
|
+
case 'bottom':
|
|
279
|
+
case 'end':
|
|
280
|
+
return 'flex-end';
|
|
281
|
+
case 'left':
|
|
282
|
+
case 'top':
|
|
283
|
+
case 'start':
|
|
284
|
+
default:
|
|
285
|
+
return 'flex-start';
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
function getChangeBoundsDuration(transition) {
|
|
289
|
+
if (!transition)
|
|
290
|
+
return 0;
|
|
291
|
+
return flattenChangeTransition(transition).reduce((max, item) => {
|
|
292
|
+
const duration = Math.max(0, item.duration ?? 300);
|
|
293
|
+
const delay = Math.max(0, item.start_delay ?? 0);
|
|
294
|
+
return Math.max(max, duration + delay);
|
|
295
|
+
}, 0);
|
|
296
|
+
}
|
|
297
|
+
function createOverlayDiv(previousDiv) {
|
|
298
|
+
return {
|
|
299
|
+
...previousDiv,
|
|
300
|
+
alignment_horizontal: 'left',
|
|
301
|
+
alignment_vertical: 'top',
|
|
302
|
+
width: { type: 'match_parent' },
|
|
303
|
+
height: { type: 'match_parent' },
|
|
304
|
+
margins: undefined,
|
|
305
|
+
transition_change: undefined,
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
function getChildFrame(div, container) {
|
|
309
|
+
const margins = div?.margins || {};
|
|
310
|
+
const leftMargin = numberOrZero(margins.left ?? margins.start);
|
|
311
|
+
const rightMargin = numberOrZero(margins.right ?? margins.end);
|
|
312
|
+
const topMargin = numberOrZero(margins.top);
|
|
313
|
+
const bottomMargin = numberOrZero(margins.bottom);
|
|
314
|
+
const availableWidth = Math.max(0, container.width - leftMargin - rightMargin);
|
|
315
|
+
const availableHeight = Math.max(0, container.height - topMargin - bottomMargin);
|
|
316
|
+
const width = resolveSize(div?.width, availableWidth);
|
|
317
|
+
const height = resolveSize(div?.height, availableHeight);
|
|
318
|
+
return {
|
|
319
|
+
left: resolvePosition(div?.alignment_horizontal, leftMargin, availableWidth, width),
|
|
320
|
+
top: resolvePosition(div?.alignment_vertical, topMargin, availableHeight, height),
|
|
321
|
+
width,
|
|
322
|
+
height,
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
function resolveSize(size, available) {
|
|
326
|
+
if (size?.type === 'fixed')
|
|
327
|
+
return Math.max(0, numberOrZero(size.value));
|
|
328
|
+
return available;
|
|
329
|
+
}
|
|
330
|
+
function resolvePosition(alignment, start, available, size) {
|
|
331
|
+
switch (alignment) {
|
|
332
|
+
case 'center':
|
|
333
|
+
return start + (available - size) / 2;
|
|
334
|
+
case 'right':
|
|
335
|
+
case 'bottom':
|
|
336
|
+
case 'end':
|
|
337
|
+
return start + available - size;
|
|
338
|
+
case 'left':
|
|
339
|
+
case 'top':
|
|
340
|
+
case 'start':
|
|
341
|
+
default:
|
|
342
|
+
return start;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
function numberOrZero(value) {
|
|
346
|
+
return typeof value === 'number' && Number.isFinite(value) ? value : 0;
|
|
347
|
+
}
|
|
120
348
|
//# sourceMappingURL=DivState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DivState.js","sourceRoot":"","sources":["../../../src/components/state/DivState.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DivState.js","sourceRoot":"","sources":["../../../src/components/state/DivState.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Background.d.ts","sourceRoot":"","sources":["../../../src/components/utilities/Background.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAoB,SAAS,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,KAAK,EAAE,UAAU,IAAI,cAAc,EAAoB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"Background.d.ts","sourceRoot":"","sources":["../../../src/components/utilities/Background.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAoB,SAAS,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,KAAK,EAAE,UAAU,IAAI,cAAc,EAAoB,MAAM,wBAAwB,CAAC;AAG7F,MAAM,WAAW,eAAe;IAC5B,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAoFD,eAAO,MAAM,UAAU,GAAI,mBAAmB,eAAe,6BAyB5D,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { StyleSheet, View } from 'react-native';
|
|
3
3
|
import Svg, { Defs, RadialGradient, Stop, Rect } from 'react-native-svg';
|
|
4
|
+
import { correctColor } from '../../utils/correctColor';
|
|
4
5
|
const RadialGradientLayer = ({ layer }) => {
|
|
5
6
|
// Default to 50% 50% if not specified
|
|
6
7
|
let cx = '50%';
|
|
@@ -26,10 +27,10 @@ const RadialGradientLayer = ({ layer }) => {
|
|
|
26
27
|
// If color_map provided, use it
|
|
27
28
|
let stops = [];
|
|
28
29
|
if (layer.colors) {
|
|
29
|
-
stops = layer.colors.map((color, index) => (<Stop key={index} offset={index / (layer.colors.length - 1)} stopColor={color} stopOpacity={1}/>));
|
|
30
|
+
stops = layer.colors.map((color, index) => (<Stop key={index} offset={index / (layer.colors.length - 1)} stopColor={correctColor(color)} stopOpacity={1}/>));
|
|
30
31
|
}
|
|
31
32
|
else if (layer.color_map) {
|
|
32
|
-
stops = layer.color_map.map((point, index) => (<Stop key={index} offset={point.position} stopColor={point.color} stopOpacity={1}/>));
|
|
33
|
+
stops = layer.color_map.map((point, index) => (<Stop key={index} offset={point.position} stopColor={correctColor(point.color)} stopOpacity={1}/>));
|
|
33
34
|
}
|
|
34
35
|
// Radius
|
|
35
36
|
// DivKit defaults: farthest_corner
|
|
@@ -59,7 +60,7 @@ export const Background = ({ layers, style }) => {
|
|
|
59
60
|
return (<View style={[StyleSheet.absoluteFill, style, { zIndex: -1, overflow: 'hidden' }]} pointerEvents="none">
|
|
60
61
|
{layers.map((layer, index) => {
|
|
61
62
|
if (layer.type === 'solid') {
|
|
62
|
-
return (<View key={index} style={[StyleSheet.absoluteFill, { backgroundColor: layer.color }]}/>);
|
|
63
|
+
return (<View key={index} style={[StyleSheet.absoluteFill, { backgroundColor: correctColor(layer.color) }]}/>);
|
|
63
64
|
}
|
|
64
65
|
if (layer.type === 'radial_gradient') {
|
|
65
66
|
return (<View key={index} style={StyleSheet.absoluteFill}>
|