react-native-divkit 0.1.0-alpha.3 → 0.1.0-alpha.6
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/dist/DivKit.d.ts +4 -1
- package/dist/DivKit.d.ts.map +1 -1
- package/dist/DivKit.js +35 -4
- package/dist/DivKit.js.map +1 -1
- package/dist/components/container/DivContainer.d.ts +0 -14
- package/dist/components/container/DivContainer.d.ts.map +1 -1
- package/dist/components/container/DivContainer.js +24 -34
- package/dist/components/container/DivContainer.js.map +1 -1
- package/dist/components/text/DivText.d.ts.map +1 -1
- package/dist/components/text/DivText.js +17 -7
- package/dist/components/text/DivText.js.map +1 -1
- package/dist/components/utilities/Outer.d.ts.map +1 -1
- package/dist/components/utilities/Outer.js +28 -15
- package/dist/components/utilities/Outer.js.map +1 -1
- package/dist/context/LayoutParamsContext.d.ts +4 -0
- package/dist/context/LayoutParamsContext.d.ts.map +1 -0
- package/dist/context/LayoutParamsContext.js +6 -0
- package/dist/context/LayoutParamsContext.js.map +1 -0
- package/dist/expressions/globalVariablesController.d.ts +13 -0
- package/dist/expressions/globalVariablesController.d.ts.map +1 -0
- package/dist/expressions/globalVariablesController.js +33 -0
- package/dist/expressions/globalVariablesController.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +5 -2
- package/src/DivKit.tsx +49 -4
- package/src/components/container/DivContainer.tsx +28 -34
- package/src/components/text/DivText.tsx +21 -7
- package/src/components/utilities/Outer.tsx +28 -15
- package/src/context/LayoutParamsContext.tsx +8 -0
- package/src/expressions/globalVariablesController.ts +39 -0
- package/src/index.ts +3 -0
- package/src/types/text.d.ts +4 -2
package/dist/DivKit.d.ts
CHANGED
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
import React from 'react';
|
|
21
21
|
import { type ViewStyle } from 'react-native';
|
|
22
22
|
import type { Action, DivJson, Direction } from '../typings/common';
|
|
23
|
+
import { GlobalVariablesController } from './expressions/globalVariablesController';
|
|
23
24
|
import { type WrappedError } from './utils/wrapError';
|
|
24
25
|
/**
|
|
25
26
|
* Callback for logging statistics
|
|
@@ -58,11 +59,13 @@ export interface DivKitProps {
|
|
|
58
59
|
style?: ViewStyle;
|
|
59
60
|
/** Component ID (for debugging) */
|
|
60
61
|
id?: string;
|
|
62
|
+
/** Global variables controller for sharing variables across DivKit instances */
|
|
63
|
+
globalVariablesController?: GlobalVariablesController;
|
|
61
64
|
}
|
|
62
65
|
/**
|
|
63
66
|
* DivKit - Main component
|
|
64
67
|
*
|
|
65
68
|
* Renders DivKit JSON as React Native components
|
|
66
69
|
*/
|
|
67
|
-
export declare function DivKit({ data, onStat, onCustomAction, onError, direction, platform, style, id }: DivKitProps): React.JSX.Element;
|
|
70
|
+
export declare function DivKit({ data, onStat, onCustomAction, onError, direction, platform, style, id, globalVariablesController }: DivKitProps): React.JSX.Element;
|
|
68
71
|
//# sourceMappingURL=DivKit.d.ts.map
|
package/dist/DivKit.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DivKit.d.ts","sourceRoot":"","sources":["../src/DivKit.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"DivKit.d.ts","sourceRoot":"","sources":["../src/DivKit.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAkD,MAAM,OAAO,CAAC;AACvE,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAe,SAAS,EAAE,MAAM,mBAAmB,CAAC;AASjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAEpF,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAQjE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,CAAC;AAE5E;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,CAAC;AAE9E;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,uBAAuB;IACvB,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvB,sCAAsC;IACtC,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB,kCAAkC;IAClC,cAAc,CAAC,EAAE,oBAAoB,CAAC;IAEtC,0BAA0B;IAC1B,OAAO,CAAC,EAAE,aAAa,CAAC;IAExB,sCAAsC;IACtC,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAE/B,0CAA0C;IAC1C,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB,mCAAmC;IACnC,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,gFAAgF;IAChF,yBAAyB,CAAC,EAAE,yBAAyB,CAAC;CACzD;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,EACnB,IAAI,EACJ,MAAM,EACN,cAAc,EACd,OAAO,EACP,SAAiB,EACjB,QAAkB,EAClB,KAAK,EACL,EAAW,EACX,yBAAyB,EAC5B,EAAE,WAAW,qBAmgBb"}
|
package/dist/DivKit.js
CHANGED
|
@@ -17,13 +17,14 @@
|
|
|
17
17
|
* - Custom components
|
|
18
18
|
* - Extensions
|
|
19
19
|
*/
|
|
20
|
-
import React, { useMemo, useCallback, useRef } from 'react';
|
|
20
|
+
import React, { useMemo, useCallback, useRef, useEffect } from 'react';
|
|
21
21
|
import { View, StyleSheet } from 'react-native';
|
|
22
22
|
import { DivKitContext } from './context/DivKitContext';
|
|
23
23
|
import { ActionContext } from './context/ActionContext';
|
|
24
24
|
import { StateContext } from './context/StateContext';
|
|
25
25
|
import { DivComponent } from './components/DivComponent';
|
|
26
26
|
import { createVariable } from './expressions/variable';
|
|
27
|
+
import { GlobalVariablesController } from './expressions/globalVariablesController';
|
|
27
28
|
import { applyTemplatesRecursively } from './utils/applyTemplate';
|
|
28
29
|
import { wrapError } from './utils/wrapError';
|
|
29
30
|
import { arrayInsert, arrayRemove, arraySet } from './actions/array';
|
|
@@ -37,7 +38,7 @@ import { parse } from './expressions/expressions';
|
|
|
37
38
|
*
|
|
38
39
|
* Renders DivKit JSON as React Native components
|
|
39
40
|
*/
|
|
40
|
-
export function DivKit({ data, onStat, onCustomAction, onError, direction = 'ltr', platform = 'touch', style, id = 'root' }) {
|
|
41
|
+
export function DivKit({ data, onStat, onCustomAction, onError, direction = 'ltr', platform = 'touch', style, id = 'root', globalVariablesController }) {
|
|
41
42
|
const componentIdCounter = useRef(0);
|
|
42
43
|
const componentsMap = useRef(new Map());
|
|
43
44
|
const statesMap = useRef(new Map());
|
|
@@ -81,16 +82,33 @@ export function DivKit({ data, onStat, onCustomAction, onError, direction = 'ltr
|
|
|
81
82
|
initialVariables: card.variables || []
|
|
82
83
|
};
|
|
83
84
|
}, [data, logError]);
|
|
84
|
-
//
|
|
85
|
+
// Create or reuse variables controller
|
|
86
|
+
const variablesController = useMemo(() => globalVariablesController || new GlobalVariablesController(), [globalVariablesController]);
|
|
87
|
+
const globalVariables = variablesController.getVariables();
|
|
88
|
+
// Initialize variables: local (from JSON) + global, local has precedence
|
|
85
89
|
const variables = useMemo(() => {
|
|
90
|
+
const localVariables = new Map();
|
|
91
|
+
// Combined map: local and global variables, with local in precedence
|
|
86
92
|
const map = new Map();
|
|
93
|
+
// First, add global variables
|
|
94
|
+
for (const [varName, variable] of globalVariables) {
|
|
95
|
+
map.set(varName, variable);
|
|
96
|
+
}
|
|
97
|
+
// Then, add local variables (from card JSON) — they override globals
|
|
87
98
|
initialVariables.forEach((varData) => {
|
|
88
99
|
try {
|
|
89
100
|
// Skip property variables for MVP (complex feature)
|
|
90
101
|
if (varData.type === 'property') {
|
|
91
102
|
return;
|
|
92
103
|
}
|
|
104
|
+
if (localVariables.has(varData.name)) {
|
|
105
|
+
logError(wrapError(new Error('Duplicate variable'), {
|
|
106
|
+
additional: { name: varData.name }
|
|
107
|
+
}));
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
93
110
|
const variable = createVariable(varData.name, varData.type, varData.value);
|
|
111
|
+
localVariables.set(varData.name, variable);
|
|
94
112
|
map.set(varData.name, variable);
|
|
95
113
|
}
|
|
96
114
|
catch (err) {
|
|
@@ -103,7 +121,20 @@ export function DivKit({ data, onStat, onCustomAction, onError, direction = 'ltr
|
|
|
103
121
|
}
|
|
104
122
|
});
|
|
105
123
|
return map;
|
|
106
|
-
}, [initialVariables, logError]);
|
|
124
|
+
}, [initialVariables, globalVariables, logError]);
|
|
125
|
+
// Subscribe to new global variables added after initialization
|
|
126
|
+
useEffect(() => {
|
|
127
|
+
const store = variablesController.getLastAddedVariableStore();
|
|
128
|
+
const unsubscribe = store.subscribe((newVarName) => {
|
|
129
|
+
if (newVarName && !variables.has(newVarName)) {
|
|
130
|
+
const varInstance = globalVariables.get(newVarName);
|
|
131
|
+
if (varInstance) {
|
|
132
|
+
variables.set(newVarName, varInstance);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
return unsubscribe;
|
|
137
|
+
}, [variablesController, variables, globalVariables]);
|
|
107
138
|
// Generate unique component IDs
|
|
108
139
|
const genId = useCallback((key) => {
|
|
109
140
|
return `${key}_${componentIdCounter.current++}`;
|
package/dist/DivKit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DivKit.js","sourceRoot":"","sources":["../src/DivKit.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DivKit.js","sourceRoot":"","sources":["../src/DivKit.tsx"],"names":[],"mappings":"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"}
|
|
@@ -6,20 +6,6 @@ export interface DivContainerProps {
|
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
8
8
|
* DivContainer component - renders a flex container with child items
|
|
9
|
-
* MVP implementation with basic features:
|
|
10
|
-
* - Vertical/horizontal/overlap orientation
|
|
11
|
-
* - Content alignment (horizontal & vertical)
|
|
12
|
-
* - Item spacing (gap)
|
|
13
|
-
* - Flex layout with proper alignment
|
|
14
|
-
*
|
|
15
|
-
* Deferred for post-MVP:
|
|
16
|
-
* - Wrap layout mode
|
|
17
|
-
* - Separators (show_at_start, show_between, show_at_end)
|
|
18
|
-
* - Line separators (for wrap mode)
|
|
19
|
-
* - Aspect ratio constraints
|
|
20
|
-
* - Item builder (dynamic items from data)
|
|
21
|
-
* - Clip to bounds
|
|
22
|
-
*
|
|
23
9
|
* Based on Web Container.svelte
|
|
24
10
|
*/
|
|
25
11
|
export declare function DivContainer({ componentContext }: DivContainerProps): React.JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DivContainer.d.ts","sourceRoot":"","sources":["../../../src/components/container/DivContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAwB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"DivContainer.d.ts","sourceRoot":"","sources":["../../../src/components/container/DivContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAwB,MAAM,uBAAuB,CAAC;AASpF,MAAM,WAAW,iBAAiB;IAC9B,gBAAgB,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;CACxD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAAE,gBAAgB,EAAE,EAAE,iBAAiB,qBAwHnE"}
|
|
@@ -4,22 +4,9 @@ import { Outer } from '../utilities/Outer';
|
|
|
4
4
|
import { DivComponent } from '../DivComponent';
|
|
5
5
|
import { useDerivedFromVarsSimple } from '../../hooks/useDerivedFromVars';
|
|
6
6
|
import { useDivKitContext } from '../../context/DivKitContext';
|
|
7
|
+
import { LayoutParamsContext } from '../../context/LayoutParamsContext';
|
|
7
8
|
/**
|
|
8
9
|
* DivContainer component - renders a flex container with child items
|
|
9
|
-
* MVP implementation with basic features:
|
|
10
|
-
* - Vertical/horizontal/overlap orientation
|
|
11
|
-
* - Content alignment (horizontal & vertical)
|
|
12
|
-
* - Item spacing (gap)
|
|
13
|
-
* - Flex layout with proper alignment
|
|
14
|
-
*
|
|
15
|
-
* Deferred for post-MVP:
|
|
16
|
-
* - Wrap layout mode
|
|
17
|
-
* - Separators (show_at_start, show_between, show_at_end)
|
|
18
|
-
* - Line separators (for wrap mode)
|
|
19
|
-
* - Aspect ratio constraints
|
|
20
|
-
* - Item builder (dynamic items from data)
|
|
21
|
-
* - Clip to bounds
|
|
22
|
-
*
|
|
23
10
|
* Based on Web Container.svelte
|
|
24
11
|
*/
|
|
25
12
|
export function DivContainer({ componentContext }) {
|
|
@@ -30,11 +17,10 @@ export function DivContainer({ componentContext }) {
|
|
|
30
17
|
const contentAlignmentHorizontal = useDerivedFromVarsSimple(json.content_alignment_horizontal || 'start', variables || new Map());
|
|
31
18
|
const contentAlignmentVertical = useDerivedFromVarsSimple(json.content_alignment_vertical || 'top', variables || new Map());
|
|
32
19
|
const itemSpacing = useDerivedFromVarsSimple(json.item_spacing || 0, variables || new Map());
|
|
33
|
-
// Build container style
|
|
20
|
+
// Build container style — passed to Outer via style prop
|
|
21
|
+
// Outer's View becomes the flex container directly (Background is absolute-positioned)
|
|
34
22
|
const containerStyle = useMemo(() => {
|
|
35
|
-
const style = {
|
|
36
|
-
display: 'flex'
|
|
37
|
-
};
|
|
23
|
+
const style = {};
|
|
38
24
|
// Orientation -> flexDirection
|
|
39
25
|
if (orientation === 'horizontal') {
|
|
40
26
|
style.flexDirection = 'row';
|
|
@@ -43,32 +29,37 @@ export function DivContainer({ componentContext }) {
|
|
|
43
29
|
style.flexDirection = 'column';
|
|
44
30
|
}
|
|
45
31
|
else if (orientation === 'overlap') {
|
|
46
|
-
// Overlap is like CSS position: relative with absolute children
|
|
47
|
-
// In React Native, this is achieved differently
|
|
48
|
-
// For MVP, we'll use a simple approach with View
|
|
49
32
|
style.position = 'relative';
|
|
50
33
|
}
|
|
51
|
-
// Content alignment
|
|
52
|
-
// Maps to justifyContent for row, alignItems for column
|
|
34
|
+
// Content alignment
|
|
53
35
|
if (orientation === 'horizontal') {
|
|
54
|
-
// Horizontal orientation: content_alignment_horizontal -> justifyContent
|
|
55
36
|
style.justifyContent = mapContentAlignmentToJustify(contentAlignmentHorizontal, direction);
|
|
56
|
-
// content_alignment_vertical -> alignItems (cross axis)
|
|
57
37
|
style.alignItems = mapContentAlignmentToAlign(contentAlignmentVertical);
|
|
58
38
|
}
|
|
59
39
|
else if (orientation === 'vertical') {
|
|
60
|
-
// Vertical orientation: content_alignment_vertical -> justifyContent
|
|
61
40
|
style.justifyContent = mapContentAlignmentToJustify(contentAlignmentVertical, direction);
|
|
62
|
-
// content_alignment_horizontal -> alignItems (cross axis)
|
|
63
41
|
style.alignItems = mapContentAlignmentToAlign(contentAlignmentHorizontal, direction);
|
|
64
42
|
}
|
|
65
|
-
// Item spacing
|
|
66
|
-
// React Native 0.71+ supports gap property
|
|
43
|
+
// Item spacing
|
|
67
44
|
if (itemSpacing && itemSpacing > 0 && orientation !== 'overlap') {
|
|
68
45
|
style.gap = itemSpacing;
|
|
69
46
|
}
|
|
70
47
|
return style;
|
|
71
48
|
}, [orientation, contentAlignmentHorizontal, contentAlignmentVertical, itemSpacing, direction]);
|
|
49
|
+
// LayoutParams for children — tells Outer how to handle flex sizing
|
|
50
|
+
const childLayoutParams = useMemo(() => {
|
|
51
|
+
const params = {};
|
|
52
|
+
if (orientation === 'overlap') {
|
|
53
|
+
params.overlapParent = true;
|
|
54
|
+
}
|
|
55
|
+
if (orientation === 'horizontal') {
|
|
56
|
+
params.parentContainerOrientation = 'horizontal';
|
|
57
|
+
}
|
|
58
|
+
else if (orientation === 'vertical') {
|
|
59
|
+
params.parentContainerOrientation = 'vertical';
|
|
60
|
+
}
|
|
61
|
+
return params;
|
|
62
|
+
}, [orientation]);
|
|
72
63
|
// For overlap mode, we need to position children absolutely
|
|
73
64
|
const childWrapperStyle = useMemo(() => {
|
|
74
65
|
if (orientation === 'overlap') {
|
|
@@ -82,9 +73,6 @@ export function DivContainer({ componentContext }) {
|
|
|
82
73
|
}
|
|
83
74
|
return undefined;
|
|
84
75
|
}, [orientation]);
|
|
85
|
-
// Render children
|
|
86
|
-
// We'll import DivComponent dynamically or assume it's available
|
|
87
|
-
// For now, we'll use a placeholder and fix this in the integration phase
|
|
88
76
|
const renderChildren = () => {
|
|
89
77
|
if (!json.items || json.items.length === 0) {
|
|
90
78
|
return null;
|
|
@@ -106,8 +94,10 @@ export function DivContainer({ componentContext }) {
|
|
|
106
94
|
return child;
|
|
107
95
|
});
|
|
108
96
|
};
|
|
109
|
-
return (<Outer componentContext={componentContext}>
|
|
110
|
-
<
|
|
97
|
+
return (<Outer componentContext={componentContext} style={containerStyle}>
|
|
98
|
+
<LayoutParamsContext.Provider value={childLayoutParams}>
|
|
99
|
+
{renderChildren()}
|
|
100
|
+
</LayoutParamsContext.Provider>
|
|
111
101
|
</Outer>);
|
|
112
102
|
}
|
|
113
103
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DivContainer.js","sourceRoot":"","sources":["../../../src/components/container/DivContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,IAAI,EAAa,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"DivContainer.js","sourceRoot":"","sources":["../../../src/components/container/DivContainer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DivText.d.ts","sourceRoot":"","sources":["../../../src/components/text/DivText.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"DivText.d.ts","sourceRoot":"","sources":["../../../src/components/text/DivText.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAsC,MAAM,kBAAkB,CAAC;AAKxF,MAAM,WAAW,YAAY;IACzB,gBAAgB,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;CACnD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,OAAO,CAAC,EAAE,gBAAgB,EAAE,EAAE,YAAY,qBA2JzD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useMemo } from 'react';
|
|
2
|
-
import { Text } from 'react-native';
|
|
2
|
+
import { PixelRatio, Text } from 'react-native';
|
|
3
3
|
import { Outer } from '../utilities/Outer';
|
|
4
4
|
import { useDerivedFromVarsSimple } from '../../hooks/useDerivedFromVars';
|
|
5
5
|
import { useDivKitContext } from '../../context/DivKitContext';
|
|
@@ -31,13 +31,25 @@ export function DivText({ componentContext }) {
|
|
|
31
31
|
const fontSize = useDerivedFromVarsSimple(json.font_size || 12, variables || new Map());
|
|
32
32
|
const textColor = useDerivedFromVarsSimple(json.text_color || '#000000', variables || new Map());
|
|
33
33
|
const textAlignmentHorizontal = useDerivedFromVarsSimple(json.text_alignment_horizontal || 'start', variables || new Map());
|
|
34
|
+
const fontSizeUnit = useDerivedFromVarsSimple(json.font_size_unit || 'sp', variables || new Map());
|
|
34
35
|
const maxLines = useDerivedFromVarsSimple(json.max_lines, variables || new Map());
|
|
36
|
+
// Convert size value based on font_size_unit
|
|
37
|
+
// sp = scalable pixels (allowFontScaling handles this in RN)
|
|
38
|
+
// dp = density-independent pixels (RN default unit)
|
|
39
|
+
// px = physical pixels (need to divide by PixelRatio)
|
|
40
|
+
const convertSize = (value) => {
|
|
41
|
+
if (fontSizeUnit === 'px') {
|
|
42
|
+
return value / PixelRatio.get();
|
|
43
|
+
}
|
|
44
|
+
return value;
|
|
45
|
+
};
|
|
46
|
+
const allowFontScaling = fontSizeUnit === 'sp';
|
|
35
47
|
// Build text style
|
|
36
48
|
const textStyle = useMemo(() => {
|
|
37
49
|
const style = {};
|
|
38
50
|
// Font size
|
|
39
51
|
if (fontSize) {
|
|
40
|
-
style.fontSize = fontSize;
|
|
52
|
+
style.fontSize = convertSize(fontSize);
|
|
41
53
|
}
|
|
42
54
|
// Text color
|
|
43
55
|
if (textColor) {
|
|
@@ -64,9 +76,7 @@ export function DivText({ componentContext }) {
|
|
|
64
76
|
}
|
|
65
77
|
// Line height
|
|
66
78
|
if (json.line_height && fontSize) {
|
|
67
|
-
|
|
68
|
-
// Convert to ratio: line_height / font_size
|
|
69
|
-
style.lineHeight = json.line_height;
|
|
79
|
+
style.lineHeight = convertSize(json.line_height);
|
|
70
80
|
}
|
|
71
81
|
// Letter spacing
|
|
72
82
|
if (json.letter_spacing !== undefined) {
|
|
@@ -109,6 +119,7 @@ export function DivText({ componentContext }) {
|
|
|
109
119
|
return style;
|
|
110
120
|
}, [
|
|
111
121
|
fontSize,
|
|
122
|
+
fontSizeUnit,
|
|
112
123
|
textColor,
|
|
113
124
|
textAlignmentHorizontal,
|
|
114
125
|
json.font_weight,
|
|
@@ -134,8 +145,7 @@ export function DivText({ componentContext }) {
|
|
|
134
145
|
// Vertical alignment is handled by Outer component via alignment props
|
|
135
146
|
// For text, we primarily care about horizontal alignment which is in textStyle
|
|
136
147
|
return (<Outer componentContext={componentContext}>
|
|
137
|
-
<Text style={textStyle} numberOfLines={numberOfLines} ellipsizeMode={ellipsizeMode} allowFontScaling={
|
|
138
|
-
>
|
|
148
|
+
<Text style={textStyle} numberOfLines={numberOfLines} ellipsizeMode={ellipsizeMode} allowFontScaling={allowFontScaling}>
|
|
139
149
|
{text}
|
|
140
150
|
</Text>
|
|
141
151
|
</Outer>);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DivText.js","sourceRoot":"","sources":["../../../src/components/text/DivText.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,IAAI,EAAa,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"DivText.js","sourceRoot":"","sources":["../../../src/components/text/DivText.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Outer.d.ts","sourceRoot":"","sources":["../../../src/components/utilities/Outer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAW,MAAM,OAAO,CAAC;AAClD,OAAO,EAAmB,SAAS,EAAc,MAAM,cAAc,CAAC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"Outer.d.ts","sourceRoot":"","sources":["../../../src/components/utilities/Outer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAW,MAAM,OAAO,CAAC;AAClD,OAAO,EAAmB,SAAS,EAAc,MAAM,cAAc,CAAC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAUpD,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW;IAC3D,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACtC,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,EAAE,EACvD,gBAAgB,EAChB,QAAQ,EACR,KAAK,EAAE,WAAW,EACrB,EAAE,UAAU,CAAC,CAAC,CAAC,4BA+Nf"}
|
|
@@ -3,6 +3,7 @@ import { View, Pressable, StyleSheet } from 'react-native';
|
|
|
3
3
|
import { useDerivedFromVarsSimple } from '../../hooks/useDerivedFromVars';
|
|
4
4
|
import { useActionHandler, useHasActions } from '../../hooks/useAction';
|
|
5
5
|
import { useDivKitContext } from '../../context/DivKitContext';
|
|
6
|
+
import { useLayoutParams } from '../../context/LayoutParamsContext';
|
|
6
7
|
import { Background } from './Background';
|
|
7
8
|
/**
|
|
8
9
|
* Outer component - base wrapper for all DivKit components
|
|
@@ -12,18 +13,19 @@ import { Background } from './Background';
|
|
|
12
13
|
*/
|
|
13
14
|
export function Outer({ componentContext, children, style: customStyle }) {
|
|
14
15
|
const { direction } = useDivKitContext();
|
|
16
|
+
const layoutParams = useLayoutParams();
|
|
15
17
|
const { json, variables } = componentContext;
|
|
16
18
|
// Only use reactive hooks for truly dynamic properties (visibility, alpha)
|
|
17
19
|
// For MVP, other properties are read directly from JSON (can be enhanced later)
|
|
18
20
|
const visibility = useDerivedFromVarsSimple(json.visibility || 'visible', variables || new Map());
|
|
19
21
|
const alpha = useDerivedFromVarsSimple(json.alpha !== undefined ? json.alpha : 1, variables || new Map());
|
|
20
|
-
//
|
|
21
|
-
const paddings = json.paddings;
|
|
22
|
-
const margins = json.margins;
|
|
22
|
+
// Paddings and margins need expression evaluation (e.g. @{safeAreaTop})
|
|
23
|
+
const paddings = useDerivedFromVarsSimple(json.paddings, variables || new Map());
|
|
24
|
+
const margins = useDerivedFromVarsSimple(json.margins, variables || new Map());
|
|
23
25
|
const background = json.background;
|
|
24
|
-
const border = json.border;
|
|
25
|
-
const width = json.width;
|
|
26
|
-
const height = json.height;
|
|
26
|
+
const border = useDerivedFromVarsSimple(json.border, variables || new Map());
|
|
27
|
+
const width = useDerivedFromVarsSimple(json.width, variables || new Map());
|
|
28
|
+
const height = useDerivedFromVarsSimple(json.height, variables || new Map());
|
|
27
29
|
// Actions - use type assertion for now (will be refined in component implementations)
|
|
28
30
|
const jsonAny = json;
|
|
29
31
|
const actions = jsonAny.actions || (jsonAny.action ? [jsonAny.action] : []);
|
|
@@ -44,27 +46,32 @@ export function Outer({ componentContext, children, style: customStyle }) {
|
|
|
44
46
|
styles.opacity = Math.max(0, Math.min(1, alpha));
|
|
45
47
|
}
|
|
46
48
|
// Width
|
|
49
|
+
const parentOrientation = layoutParams.parentContainerOrientation;
|
|
47
50
|
if (width) {
|
|
48
51
|
const widthVal = width;
|
|
49
52
|
if (widthVal.type === 'fixed') {
|
|
50
53
|
styles.width = widthVal.value;
|
|
51
54
|
}
|
|
52
55
|
else if (widthVal.type === 'match_parent') {
|
|
53
|
-
// Use alignSelf: 'stretch' instead of width: '100%' so that
|
|
54
|
-
// margins are subtracted from the available space rather than
|
|
55
|
-
// added on top of 100%, which would cause overflow.
|
|
56
56
|
styles.alignSelf = 'stretch';
|
|
57
|
-
|
|
57
|
+
// flexGrow only on the main axis (horizontal parent)
|
|
58
|
+
if (parentOrientation === 'horizontal') {
|
|
59
|
+
styles.flexGrow = widthVal.weight || 1;
|
|
60
|
+
styles.flexShrink = 1;
|
|
61
|
+
}
|
|
58
62
|
}
|
|
59
63
|
else if (widthVal.type === 'wrap_content') {
|
|
60
64
|
styles.alignSelf = 'flex-start';
|
|
61
|
-
// React Native default is wrap_content-like for View
|
|
62
65
|
}
|
|
63
66
|
}
|
|
64
67
|
else {
|
|
65
68
|
// Default: match_parent
|
|
66
69
|
styles.alignSelf = 'stretch';
|
|
67
|
-
|
|
70
|
+
// flexGrow only on the main axis (horizontal parent) or outside a container
|
|
71
|
+
if (!parentOrientation || parentOrientation === 'horizontal') {
|
|
72
|
+
styles.flexGrow = 1;
|
|
73
|
+
styles.flexShrink = 1;
|
|
74
|
+
}
|
|
68
75
|
}
|
|
69
76
|
// Height
|
|
70
77
|
if (height) {
|
|
@@ -73,8 +80,14 @@ export function Outer({ componentContext, children, style: customStyle }) {
|
|
|
73
80
|
styles.height = heightVal.value;
|
|
74
81
|
}
|
|
75
82
|
else if (heightVal.type === 'match_parent') {
|
|
76
|
-
|
|
77
|
-
|
|
83
|
+
// flexGrow only on the main axis (vertical parent)
|
|
84
|
+
if (parentOrientation === 'vertical') {
|
|
85
|
+
styles.flexGrow = heightVal.weight || 1;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
// Cross axis — stretch via alignSelf or explicit height
|
|
89
|
+
styles.alignSelf = 'stretch';
|
|
90
|
+
}
|
|
78
91
|
}
|
|
79
92
|
// wrap_content is default in React Native
|
|
80
93
|
}
|
|
@@ -190,7 +203,7 @@ export function Outer({ componentContext, children, style: customStyle }) {
|
|
|
190
203
|
}
|
|
191
204
|
}
|
|
192
205
|
return styles;
|
|
193
|
-
}, [visibility, alpha, width, height, paddings, margins, background, border, direction]);
|
|
206
|
+
}, [visibility, alpha, width, height, paddings, margins, background, border, direction, layoutParams]);
|
|
194
207
|
const finalStyle = useMemo(() => {
|
|
195
208
|
return StyleSheet.flatten([containerStyle, customStyle]);
|
|
196
209
|
}, [containerStyle, customStyle]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Outer.js","sourceRoot":"","sources":["../../../src/components/utilities/Outer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAa,OAAO,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAa,UAAU,EAAE,MAAM,cAAc,CAAC;AAMtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAQ1C;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAsC,EACvD,gBAAgB,EAChB,QAAQ,EACR,KAAK,EAAE,WAAW,EACN;IACZ,MAAM,EAAE,SAAS,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACzC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC;IAE7C,2EAA2E;IAC3E,gFAAgF;IAChF,MAAM,UAAU,GAAG,wBAAwB,CAAa,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE,SAAS,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;IAC9G,MAAM,KAAK,GAAG,wBAAwB,CAAS,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;IAElH
|
|
1
|
+
{"version":3,"file":"Outer.js","sourceRoot":"","sources":["../../../src/components/utilities/Outer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LayoutParamsContext.d.ts","sourceRoot":"","sources":["../../src/context/LayoutParamsContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,eAAO,MAAM,mBAAmB,uCAAkC,CAAC;AAEnE,wBAAgB,eAAe,IAAI,YAAY,CAE9C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LayoutParamsContext.js","sourceRoot":"","sources":["../../src/context/LayoutParamsContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGlD,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAe,EAAE,CAAC,CAAC;AAEnE,MAAM,UAAU,eAAe;IAC3B,OAAO,UAAU,CAAC,mBAAmB,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Observable } from '../stores/createObservable';
|
|
2
|
+
import type { Variable } from './variable';
|
|
3
|
+
export declare class GlobalVariablesController {
|
|
4
|
+
private _vars;
|
|
5
|
+
private _lastAddedVariable;
|
|
6
|
+
setVariable(variable: Variable): void;
|
|
7
|
+
getVariable(variableName: string): Variable | undefined;
|
|
8
|
+
list(): IterableIterator<Variable>;
|
|
9
|
+
getVariables(): Map<string, Variable>;
|
|
10
|
+
getLastAddedVariableStore(): Observable<string>;
|
|
11
|
+
}
|
|
12
|
+
export declare function createGlobalVariablesController(): GlobalVariablesController;
|
|
13
|
+
//# sourceMappingURL=globalVariablesController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"globalVariablesController.d.ts","sourceRoot":"","sources":["../../src/expressions/globalVariablesController.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,qBAAa,yBAAyB;IAClC,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,kBAAkB,CAAoC;IAE9D,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAWrC,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIvD,IAAI,IAAI,gBAAgB,CAAC,QAAQ,CAAC;IAIlC,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;IAIrC,yBAAyB,IAAI,UAAU,CAAC,MAAM,CAAC;CAGlD;AAED,wBAAgB,+BAA+B,IAAI,yBAAyB,CAE3E"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { writable } from '../stores/createObservable';
|
|
2
|
+
export class GlobalVariablesController {
|
|
3
|
+
constructor() {
|
|
4
|
+
this._vars = new Map();
|
|
5
|
+
this._lastAddedVariable = writable('');
|
|
6
|
+
}
|
|
7
|
+
setVariable(variable) {
|
|
8
|
+
const name = variable.getName();
|
|
9
|
+
if (this._vars.has(name)) {
|
|
10
|
+
throw new Error('Variable with the same name already exist');
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
this._vars.set(name, variable);
|
|
14
|
+
this._lastAddedVariable.set(name);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
getVariable(variableName) {
|
|
18
|
+
return this._vars.get(variableName);
|
|
19
|
+
}
|
|
20
|
+
list() {
|
|
21
|
+
return this._vars.values();
|
|
22
|
+
}
|
|
23
|
+
getVariables() {
|
|
24
|
+
return this._vars;
|
|
25
|
+
}
|
|
26
|
+
getLastAddedVariableStore() {
|
|
27
|
+
return this._lastAddedVariable;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export function createGlobalVariablesController() {
|
|
31
|
+
return new GlobalVariablesController();
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=globalVariablesController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"globalVariablesController.js","sourceRoot":"","sources":["../../src/expressions/globalVariablesController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAItD,MAAM,OAAO,yBAAyB;IAAtC;QACY,UAAK,GAA0B,IAAI,GAAG,EAAE,CAAC;QACzC,uBAAkB,GAAuB,QAAQ,CAAC,EAAE,CAAC,CAAC;IA4BlE,CAAC;IA1BG,WAAW,CAAC,QAAkB;QAC1B,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QAEhC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC/B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,YAAoB;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;IAED,IAAI;QACA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAC/B,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,yBAAyB;QACrB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACnC,CAAC;CACJ;AAED,MAAM,UAAU,+BAA+B;IAC3C,OAAO,IAAI,yBAAyB,EAAE,CAAC;AAC3C,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ export type { DivBaseData } from './types/base';
|
|
|
19
19
|
export type { ComponentContext } from './types/componentContext';
|
|
20
20
|
export { createVariable, Variable, StringVariable, IntegerVariable, NumberVariable, BooleanVariable, ColorVariable, UrlVariable, DictVariable, ArrayVariable } from './expressions/variable';
|
|
21
21
|
export type { VariableType, VariableValue } from './expressions/variable';
|
|
22
|
+
export { createGlobalVariablesController, GlobalVariablesController } from './expressions/globalVariablesController';
|
|
22
23
|
export { useDivKitContext, DivKitContext } from './context/DivKitContext';
|
|
23
24
|
export type { DivKitContextValue } from './context/DivKitContext';
|
|
24
25
|
export { useDerivedFromVars, useDerivedFromVarsSimple } from './hooks/useDerivedFromVars';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG/F,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEvH,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,OAAO,EACH,cAAc,EACd,QAAQ,EACR,cAAc,EACd,eAAe,EACf,cAAc,EACd,eAAe,EACf,aAAa,EACb,WAAW,EACX,YAAY,EACZ,aAAa,EAChB,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAG1E,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE1E,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGlE,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAE1F,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5G,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAG3F,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG/F,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEvH,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,OAAO,EACH,cAAc,EACd,QAAQ,EACR,cAAc,EACd,eAAe,EACf,cAAc,EACd,eAAe,EACf,aAAa,EACb,WAAW,EACX,YAAY,EACZ,aAAa,EAChB,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAG1E,OAAO,EAAE,+BAA+B,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAGrH,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE1E,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGlE,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAE1F,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5G,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAG3F,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -16,6 +16,8 @@
|
|
|
16
16
|
export { DivKit } from './DivKit';
|
|
17
17
|
// Variables
|
|
18
18
|
export { createVariable, Variable, StringVariable, IntegerVariable, NumberVariable, BooleanVariable, ColorVariable, UrlVariable, DictVariable, ArrayVariable } from './expressions/variable';
|
|
19
|
+
// Global variables controller
|
|
20
|
+
export { createGlobalVariablesController, GlobalVariablesController } from './expressions/globalVariablesController';
|
|
19
21
|
// Context hooks (for advanced usage)
|
|
20
22
|
export { useDivKitContext, DivKitContext } from './context/DivKitContext';
|
|
21
23
|
// Hooks (for custom components)
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,iBAAiB;AACjB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAUlC,YAAY;AACZ,OAAO,EACH,cAAc,EACd,QAAQ,EACR,cAAc,EACd,eAAe,EACf,cAAc,EACd,eAAe,EACf,aAAa,EACb,WAAW,EACX,YAAY,EACZ,aAAa,EAChB,MAAM,wBAAwB,CAAC;AAIhC,qCAAqC;AACrC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAI1E,gCAAgC;AAChC,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAE1F,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5G,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE3F,6BAA6B;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,iBAAiB;AACjB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAUlC,YAAY;AACZ,OAAO,EACH,cAAc,EACd,QAAQ,EACR,cAAc,EACd,eAAe,EACf,cAAc,EACd,eAAe,EACf,aAAa,EACb,WAAW,EACX,YAAY,EACZ,aAAa,EAChB,MAAM,wBAAwB,CAAC;AAIhC,8BAA8B;AAC9B,OAAO,EAAE,+BAA+B,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAErH,qCAAqC;AACrC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAI1E,gCAAgC;AAChC,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAE1F,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5G,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE3F,6BAA6B;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-divkit",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.6",
|
|
4
4
|
"description": "DivKit renderer for React Native - Server-driven UI framework",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
"react-native-svg": "^15.15.2"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
|
+
"@babel/runtime": "^7.28.6",
|
|
43
44
|
"@testing-library/react-native": "^12.0.0",
|
|
44
45
|
"@types/jest": "^29.0.0",
|
|
45
46
|
"@types/react": "^18.2.0",
|
|
@@ -48,12 +49,14 @@
|
|
|
48
49
|
"@typescript-eslint/parser": "^5.59.0",
|
|
49
50
|
"eslint": "^8.47.0",
|
|
50
51
|
"jest": "^29.0.0",
|
|
52
|
+
"react": "^18.2.0",
|
|
53
|
+
"react-native": "^0.72.6",
|
|
51
54
|
"react-test-renderer": "^18.2.0",
|
|
52
55
|
"ts-jest": "^29.0.0",
|
|
53
56
|
"typescript": "^5.7.0"
|
|
54
57
|
},
|
|
55
58
|
"repository": {
|
|
56
59
|
"type": "git",
|
|
57
|
-
"url": "https://github.com/rpulatov/react-native-divkit.git"
|
|
60
|
+
"url": "git+https://github.com/rpulatov/react-native-divkit.git"
|
|
58
61
|
}
|
|
59
62
|
}
|
package/src/DivKit.tsx
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* - Extensions
|
|
19
19
|
*/
|
|
20
20
|
|
|
21
|
-
import React, { useMemo, useCallback, useRef } from 'react';
|
|
21
|
+
import React, { useMemo, useCallback, useRef, useEffect } from 'react';
|
|
22
22
|
import { View, StyleSheet, type ViewStyle } from 'react-native';
|
|
23
23
|
import type { Action, DivJson, DivVariable, Direction } from '../typings/common';
|
|
24
24
|
import type { DivBaseData } from './types/base';
|
|
@@ -29,6 +29,7 @@ import { ActionContext, type ActionContextValue } from './context/ActionContext'
|
|
|
29
29
|
import { StateContext, type StateContextValue, type StateSetter } from './context/StateContext';
|
|
30
30
|
import { DivComponent } from './components/DivComponent';
|
|
31
31
|
import { createVariable, Variable, type VariableType } from './expressions/variable';
|
|
32
|
+
import { GlobalVariablesController } from './expressions/globalVariablesController';
|
|
32
33
|
import { applyTemplatesRecursively } from './utils/applyTemplate';
|
|
33
34
|
import { wrapError, type WrappedError } from './utils/wrapError';
|
|
34
35
|
import { arrayInsert, arrayRemove, arraySet } from './actions/array';
|
|
@@ -80,6 +81,9 @@ export interface DivKitProps {
|
|
|
80
81
|
|
|
81
82
|
/** Component ID (for debugging) */
|
|
82
83
|
id?: string;
|
|
84
|
+
|
|
85
|
+
/** Global variables controller for sharing variables across DivKit instances */
|
|
86
|
+
globalVariablesController?: GlobalVariablesController;
|
|
83
87
|
}
|
|
84
88
|
|
|
85
89
|
/**
|
|
@@ -95,7 +99,8 @@ export function DivKit({
|
|
|
95
99
|
direction = 'ltr',
|
|
96
100
|
platform = 'touch',
|
|
97
101
|
style,
|
|
98
|
-
id = 'root'
|
|
102
|
+
id = 'root',
|
|
103
|
+
globalVariablesController
|
|
99
104
|
}: DivKitProps) {
|
|
100
105
|
const componentIdCounter = useRef(0);
|
|
101
106
|
const componentsMap = useRef<Map<string, ComponentContext>>(new Map());
|
|
@@ -149,10 +154,26 @@ export function DivKit({
|
|
|
149
154
|
};
|
|
150
155
|
}, [data, logError]);
|
|
151
156
|
|
|
152
|
-
//
|
|
157
|
+
// Create or reuse variables controller
|
|
158
|
+
const variablesController = useMemo(
|
|
159
|
+
() => globalVariablesController || new GlobalVariablesController(),
|
|
160
|
+
[globalVariablesController]
|
|
161
|
+
);
|
|
162
|
+
|
|
163
|
+
const globalVariables = variablesController.getVariables();
|
|
164
|
+
|
|
165
|
+
// Initialize variables: local (from JSON) + global, local has precedence
|
|
153
166
|
const variables = useMemo(() => {
|
|
167
|
+
const localVariables = new Map<string, Variable>();
|
|
168
|
+
// Combined map: local and global variables, with local in precedence
|
|
154
169
|
const map = new Map<string, Variable>();
|
|
155
170
|
|
|
171
|
+
// First, add global variables
|
|
172
|
+
for (const [varName, variable] of globalVariables) {
|
|
173
|
+
map.set(varName, variable);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// Then, add local variables (from card JSON) — they override globals
|
|
156
177
|
initialVariables.forEach((varData: DivVariable) => {
|
|
157
178
|
try {
|
|
158
179
|
// Skip property variables for MVP (complex feature)
|
|
@@ -160,7 +181,17 @@ export function DivKit({
|
|
|
160
181
|
return;
|
|
161
182
|
}
|
|
162
183
|
|
|
184
|
+
if (localVariables.has(varData.name)) {
|
|
185
|
+
logError(
|
|
186
|
+
wrapError(new Error('Duplicate variable'), {
|
|
187
|
+
additional: { name: varData.name }
|
|
188
|
+
})
|
|
189
|
+
);
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
|
|
163
193
|
const variable = createVariable(varData.name, varData.type as VariableType, varData.value);
|
|
194
|
+
localVariables.set(varData.name, variable);
|
|
164
195
|
map.set(varData.name, variable);
|
|
165
196
|
} catch (err) {
|
|
166
197
|
logError(
|
|
@@ -175,7 +206,21 @@ export function DivKit({
|
|
|
175
206
|
});
|
|
176
207
|
|
|
177
208
|
return map;
|
|
178
|
-
}, [initialVariables, logError]);
|
|
209
|
+
}, [initialVariables, globalVariables, logError]);
|
|
210
|
+
|
|
211
|
+
// Subscribe to new global variables added after initialization
|
|
212
|
+
useEffect(() => {
|
|
213
|
+
const store = variablesController.getLastAddedVariableStore();
|
|
214
|
+
const unsubscribe = store.subscribe((newVarName: string) => {
|
|
215
|
+
if (newVarName && !variables.has(newVarName)) {
|
|
216
|
+
const varInstance = globalVariables.get(newVarName);
|
|
217
|
+
if (varInstance) {
|
|
218
|
+
variables.set(newVarName, varInstance);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
return unsubscribe;
|
|
223
|
+
}, [variablesController, variables, globalVariables]);
|
|
179
224
|
|
|
180
225
|
// Generate unique component IDs
|
|
181
226
|
const genId = useCallback((key: string): string => {
|
|
@@ -3,10 +3,12 @@ import { View, ViewStyle } from 'react-native';
|
|
|
3
3
|
import type { ComponentContext } from '../../types/componentContext';
|
|
4
4
|
import type { DivContainerData, ContainerOrientation } from '../../types/container';
|
|
5
5
|
import type { ContentAlignmentHorizontal, ContentAlignmentVertical } from '../../types/alignment';
|
|
6
|
+
import type { LayoutParams } from '../../types/layoutParams';
|
|
6
7
|
import { Outer } from '../utilities/Outer';
|
|
7
8
|
import { DivComponent } from '../DivComponent';
|
|
8
9
|
import { useDerivedFromVarsSimple } from '../../hooks/useDerivedFromVars';
|
|
9
10
|
import { useDivKitContext } from '../../context/DivKitContext';
|
|
11
|
+
import { LayoutParamsContext } from '../../context/LayoutParamsContext';
|
|
10
12
|
|
|
11
13
|
export interface DivContainerProps {
|
|
12
14
|
componentContext: ComponentContext<DivContainerData>;
|
|
@@ -14,20 +16,6 @@ export interface DivContainerProps {
|
|
|
14
16
|
|
|
15
17
|
/**
|
|
16
18
|
* DivContainer component - renders a flex container with child items
|
|
17
|
-
* MVP implementation with basic features:
|
|
18
|
-
* - Vertical/horizontal/overlap orientation
|
|
19
|
-
* - Content alignment (horizontal & vertical)
|
|
20
|
-
* - Item spacing (gap)
|
|
21
|
-
* - Flex layout with proper alignment
|
|
22
|
-
*
|
|
23
|
-
* Deferred for post-MVP:
|
|
24
|
-
* - Wrap layout mode
|
|
25
|
-
* - Separators (show_at_start, show_between, show_at_end)
|
|
26
|
-
* - Line separators (for wrap mode)
|
|
27
|
-
* - Aspect ratio constraints
|
|
28
|
-
* - Item builder (dynamic items from data)
|
|
29
|
-
* - Clip to bounds
|
|
30
|
-
*
|
|
31
19
|
* Based on Web Container.svelte
|
|
32
20
|
*/
|
|
33
21
|
export function DivContainer({ componentContext }: DivContainerProps) {
|
|
@@ -52,11 +40,10 @@ export function DivContainer({ componentContext }: DivContainerProps) {
|
|
|
52
40
|
|
|
53
41
|
const itemSpacing = useDerivedFromVarsSimple<number>(json.item_spacing || 0, variables || new Map());
|
|
54
42
|
|
|
55
|
-
// Build container style
|
|
43
|
+
// Build container style — passed to Outer via style prop
|
|
44
|
+
// Outer's View becomes the flex container directly (Background is absolute-positioned)
|
|
56
45
|
const containerStyle = useMemo((): ViewStyle => {
|
|
57
|
-
const style: ViewStyle = {
|
|
58
|
-
display: 'flex'
|
|
59
|
-
};
|
|
46
|
+
const style: ViewStyle = {};
|
|
60
47
|
|
|
61
48
|
// Orientation -> flexDirection
|
|
62
49
|
if (orientation === 'horizontal') {
|
|
@@ -64,28 +51,19 @@ export function DivContainer({ componentContext }: DivContainerProps) {
|
|
|
64
51
|
} else if (orientation === 'vertical') {
|
|
65
52
|
style.flexDirection = 'column';
|
|
66
53
|
} else if (orientation === 'overlap') {
|
|
67
|
-
// Overlap is like CSS position: relative with absolute children
|
|
68
|
-
// In React Native, this is achieved differently
|
|
69
|
-
// For MVP, we'll use a simple approach with View
|
|
70
54
|
style.position = 'relative';
|
|
71
55
|
}
|
|
72
56
|
|
|
73
|
-
// Content alignment
|
|
74
|
-
// Maps to justifyContent for row, alignItems for column
|
|
57
|
+
// Content alignment
|
|
75
58
|
if (orientation === 'horizontal') {
|
|
76
|
-
// Horizontal orientation: content_alignment_horizontal -> justifyContent
|
|
77
59
|
style.justifyContent = mapContentAlignmentToJustify(contentAlignmentHorizontal, direction);
|
|
78
|
-
// content_alignment_vertical -> alignItems (cross axis)
|
|
79
60
|
style.alignItems = mapContentAlignmentToAlign(contentAlignmentVertical);
|
|
80
61
|
} else if (orientation === 'vertical') {
|
|
81
|
-
// Vertical orientation: content_alignment_vertical -> justifyContent
|
|
82
62
|
style.justifyContent = mapContentAlignmentToJustify(contentAlignmentVertical, direction);
|
|
83
|
-
// content_alignment_horizontal -> alignItems (cross axis)
|
|
84
63
|
style.alignItems = mapContentAlignmentToAlign(contentAlignmentHorizontal, direction);
|
|
85
64
|
}
|
|
86
65
|
|
|
87
|
-
// Item spacing
|
|
88
|
-
// React Native 0.71+ supports gap property
|
|
66
|
+
// Item spacing
|
|
89
67
|
if (itemSpacing && itemSpacing > 0 && orientation !== 'overlap') {
|
|
90
68
|
style.gap = itemSpacing;
|
|
91
69
|
}
|
|
@@ -93,6 +71,23 @@ export function DivContainer({ componentContext }: DivContainerProps) {
|
|
|
93
71
|
return style;
|
|
94
72
|
}, [orientation, contentAlignmentHorizontal, contentAlignmentVertical, itemSpacing, direction]);
|
|
95
73
|
|
|
74
|
+
// LayoutParams for children — tells Outer how to handle flex sizing
|
|
75
|
+
const childLayoutParams = useMemo((): LayoutParams => {
|
|
76
|
+
const params: LayoutParams = {};
|
|
77
|
+
|
|
78
|
+
if (orientation === 'overlap') {
|
|
79
|
+
params.overlapParent = true;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
if (orientation === 'horizontal') {
|
|
83
|
+
params.parentContainerOrientation = 'horizontal';
|
|
84
|
+
} else if (orientation === 'vertical') {
|
|
85
|
+
params.parentContainerOrientation = 'vertical';
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return params;
|
|
89
|
+
}, [orientation]);
|
|
90
|
+
|
|
96
91
|
// For overlap mode, we need to position children absolutely
|
|
97
92
|
const childWrapperStyle = useMemo((): ViewStyle | undefined => {
|
|
98
93
|
if (orientation === 'overlap') {
|
|
@@ -107,9 +102,6 @@ export function DivContainer({ componentContext }: DivContainerProps) {
|
|
|
107
102
|
return undefined;
|
|
108
103
|
}, [orientation]);
|
|
109
104
|
|
|
110
|
-
// Render children
|
|
111
|
-
// We'll import DivComponent dynamically or assume it's available
|
|
112
|
-
// For now, we'll use a placeholder and fix this in the integration phase
|
|
113
105
|
const renderChildren = () => {
|
|
114
106
|
if (!json.items || json.items.length === 0) {
|
|
115
107
|
return null;
|
|
@@ -140,8 +132,10 @@ export function DivContainer({ componentContext }: DivContainerProps) {
|
|
|
140
132
|
};
|
|
141
133
|
|
|
142
134
|
return (
|
|
143
|
-
<Outer componentContext={componentContext}>
|
|
144
|
-
<
|
|
135
|
+
<Outer componentContext={componentContext} style={containerStyle}>
|
|
136
|
+
<LayoutParamsContext.Provider value={childLayoutParams}>
|
|
137
|
+
{renderChildren()}
|
|
138
|
+
</LayoutParamsContext.Provider>
|
|
145
139
|
</Outer>
|
|
146
140
|
);
|
|
147
141
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useMemo } from 'react';
|
|
2
|
-
import { Text, TextStyle } from 'react-native';
|
|
2
|
+
import { PixelRatio, Text, TextStyle } from 'react-native';
|
|
3
3
|
import type { ComponentContext } from '../../types/componentContext';
|
|
4
|
-
import type { DivTextData, FontWeight, Truncate } from '../../types/text';
|
|
4
|
+
import type { DivTextData, FontSizeUnit, FontWeight, Truncate } from '../../types/text';
|
|
5
5
|
import { Outer } from '../utilities/Outer';
|
|
6
6
|
import { useDerivedFromVarsSimple } from '../../hooks/useDerivedFromVars';
|
|
7
7
|
import { useDivKitContext } from '../../context/DivKitContext';
|
|
@@ -46,15 +46,30 @@ export function DivText({ componentContext }: DivTextProps) {
|
|
|
46
46
|
variables || new Map()
|
|
47
47
|
);
|
|
48
48
|
|
|
49
|
+
const fontSizeUnit = useDerivedFromVarsSimple<FontSizeUnit>(json.font_size_unit || 'sp', variables || new Map());
|
|
50
|
+
|
|
49
51
|
const maxLines = useDerivedFromVarsSimple<number | undefined>(json.max_lines, variables || new Map());
|
|
50
52
|
|
|
53
|
+
// Convert size value based on font_size_unit
|
|
54
|
+
// sp = scalable pixels (allowFontScaling handles this in RN)
|
|
55
|
+
// dp = density-independent pixels (RN default unit)
|
|
56
|
+
// px = physical pixels (need to divide by PixelRatio)
|
|
57
|
+
const convertSize = (value: number): number => {
|
|
58
|
+
if (fontSizeUnit === 'px') {
|
|
59
|
+
return value / PixelRatio.get();
|
|
60
|
+
}
|
|
61
|
+
return value;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const allowFontScaling = fontSizeUnit === 'sp';
|
|
65
|
+
|
|
51
66
|
// Build text style
|
|
52
67
|
const textStyle = useMemo((): TextStyle => {
|
|
53
68
|
const style: TextStyle = {};
|
|
54
69
|
|
|
55
70
|
// Font size
|
|
56
71
|
if (fontSize) {
|
|
57
|
-
style.fontSize = fontSize;
|
|
72
|
+
style.fontSize = convertSize(fontSize);
|
|
58
73
|
}
|
|
59
74
|
|
|
60
75
|
// Text color
|
|
@@ -84,9 +99,7 @@ export function DivText({ componentContext }: DivTextProps) {
|
|
|
84
99
|
|
|
85
100
|
// Line height
|
|
86
101
|
if (json.line_height && fontSize) {
|
|
87
|
-
|
|
88
|
-
// Convert to ratio: line_height / font_size
|
|
89
|
-
style.lineHeight = json.line_height;
|
|
102
|
+
style.lineHeight = convertSize(json.line_height);
|
|
90
103
|
}
|
|
91
104
|
|
|
92
105
|
// Letter spacing
|
|
@@ -131,6 +144,7 @@ export function DivText({ componentContext }: DivTextProps) {
|
|
|
131
144
|
return style;
|
|
132
145
|
}, [
|
|
133
146
|
fontSize,
|
|
147
|
+
fontSizeUnit,
|
|
134
148
|
textColor,
|
|
135
149
|
textAlignmentHorizontal,
|
|
136
150
|
json.font_weight,
|
|
@@ -165,7 +179,7 @@ export function DivText({ componentContext }: DivTextProps) {
|
|
|
165
179
|
style={textStyle}
|
|
166
180
|
numberOfLines={numberOfLines}
|
|
167
181
|
ellipsizeMode={ellipsizeMode}
|
|
168
|
-
allowFontScaling={
|
|
182
|
+
allowFontScaling={allowFontScaling}
|
|
169
183
|
>
|
|
170
184
|
{text}
|
|
171
185
|
</Text>
|
|
@@ -8,6 +8,7 @@ import type { MaybeMissing } from '../../expressions/json';
|
|
|
8
8
|
import { useDerivedFromVarsSimple } from '../../hooks/useDerivedFromVars';
|
|
9
9
|
import { useActionHandler, useHasActions } from '../../hooks/useAction';
|
|
10
10
|
import { useDivKitContext } from '../../context/DivKitContext';
|
|
11
|
+
import { useLayoutParams } from '../../context/LayoutParamsContext';
|
|
11
12
|
import { Background } from './Background';
|
|
12
13
|
|
|
13
14
|
export interface OuterProps<T extends DivBaseData = DivBaseData> {
|
|
@@ -28,6 +29,7 @@ export function Outer<T extends DivBaseData = DivBaseData>({
|
|
|
28
29
|
style: customStyle
|
|
29
30
|
}: OuterProps<T>) {
|
|
30
31
|
const { direction } = useDivKitContext();
|
|
32
|
+
const layoutParams = useLayoutParams();
|
|
31
33
|
const { json, variables } = componentContext;
|
|
32
34
|
|
|
33
35
|
// Only use reactive hooks for truly dynamic properties (visibility, alpha)
|
|
@@ -35,13 +37,13 @@ export function Outer<T extends DivBaseData = DivBaseData>({
|
|
|
35
37
|
const visibility = useDerivedFromVarsSimple<Visibility>(json.visibility || 'visible', variables || new Map());
|
|
36
38
|
const alpha = useDerivedFromVarsSimple<number>(json.alpha !== undefined ? json.alpha : 1, variables || new Map());
|
|
37
39
|
|
|
38
|
-
//
|
|
39
|
-
const paddings = json.paddings;
|
|
40
|
-
const margins = json.margins;
|
|
40
|
+
// Paddings and margins need expression evaluation (e.g. @{safeAreaTop})
|
|
41
|
+
const paddings = useDerivedFromVarsSimple(json.paddings, variables || new Map());
|
|
42
|
+
const margins = useDerivedFromVarsSimple(json.margins, variables || new Map());
|
|
41
43
|
const background = json.background;
|
|
42
|
-
const border = json.border;
|
|
43
|
-
const width = json.width;
|
|
44
|
-
const height = json.height;
|
|
44
|
+
const border = useDerivedFromVarsSimple(json.border, variables || new Map());
|
|
45
|
+
const width = useDerivedFromVarsSimple(json.width, variables || new Map());
|
|
46
|
+
const height = useDerivedFromVarsSimple(json.height, variables || new Map());
|
|
45
47
|
|
|
46
48
|
// Actions - use type assertion for now (will be refined in component implementations)
|
|
47
49
|
const jsonAny = json as any;
|
|
@@ -66,24 +68,30 @@ export function Outer<T extends DivBaseData = DivBaseData>({
|
|
|
66
68
|
}
|
|
67
69
|
|
|
68
70
|
// Width
|
|
71
|
+
const parentOrientation = layoutParams.parentContainerOrientation;
|
|
72
|
+
|
|
69
73
|
if (width) {
|
|
70
74
|
const widthVal = width as MaybeMissing<any>;
|
|
71
75
|
if (widthVal.type === 'fixed') {
|
|
72
76
|
styles.width = (widthVal as FixedSize).value;
|
|
73
77
|
} else if (widthVal.type === 'match_parent') {
|
|
74
|
-
// Use alignSelf: 'stretch' instead of width: '100%' so that
|
|
75
|
-
// margins are subtracted from the available space rather than
|
|
76
|
-
// added on top of 100%, which would cause overflow.
|
|
77
78
|
styles.alignSelf = 'stretch';
|
|
78
|
-
|
|
79
|
+
// flexGrow only on the main axis (horizontal parent)
|
|
80
|
+
if (parentOrientation === 'horizontal') {
|
|
81
|
+
styles.flexGrow = (widthVal as MatchParentSize).weight || 1;
|
|
82
|
+
styles.flexShrink = 1;
|
|
83
|
+
}
|
|
79
84
|
} else if (widthVal.type === 'wrap_content') {
|
|
80
85
|
styles.alignSelf = 'flex-start';
|
|
81
|
-
// React Native default is wrap_content-like for View
|
|
82
86
|
}
|
|
83
87
|
} else {
|
|
84
88
|
// Default: match_parent
|
|
85
89
|
styles.alignSelf = 'stretch';
|
|
86
|
-
|
|
90
|
+
// flexGrow only on the main axis (horizontal parent) or outside a container
|
|
91
|
+
if (!parentOrientation || parentOrientation === 'horizontal') {
|
|
92
|
+
styles.flexGrow = 1;
|
|
93
|
+
styles.flexShrink = 1;
|
|
94
|
+
}
|
|
87
95
|
}
|
|
88
96
|
|
|
89
97
|
// Height
|
|
@@ -92,8 +100,13 @@ export function Outer<T extends DivBaseData = DivBaseData>({
|
|
|
92
100
|
if (heightVal.type === 'fixed') {
|
|
93
101
|
styles.height = (heightVal as FixedSize).value;
|
|
94
102
|
} else if (heightVal.type === 'match_parent') {
|
|
95
|
-
|
|
96
|
-
|
|
103
|
+
// flexGrow only on the main axis (vertical parent)
|
|
104
|
+
if (parentOrientation === 'vertical') {
|
|
105
|
+
styles.flexGrow = (heightVal as MatchParentSize).weight || 1;
|
|
106
|
+
} else {
|
|
107
|
+
// Cross axis — stretch via alignSelf or explicit height
|
|
108
|
+
styles.alignSelf = 'stretch';
|
|
109
|
+
}
|
|
97
110
|
}
|
|
98
111
|
// wrap_content is default in React Native
|
|
99
112
|
}
|
|
@@ -204,7 +217,7 @@ export function Outer<T extends DivBaseData = DivBaseData>({
|
|
|
204
217
|
}
|
|
205
218
|
|
|
206
219
|
return styles;
|
|
207
|
-
}, [visibility, alpha, width, height, paddings, margins, background, border, direction]);
|
|
220
|
+
}, [visibility, alpha, width, height, paddings, margins, background, border, direction, layoutParams]);
|
|
208
221
|
|
|
209
222
|
const finalStyle = useMemo(() => {
|
|
210
223
|
return StyleSheet.flatten([containerStyle, customStyle]);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { createContext, useContext } from 'react';
|
|
2
|
+
import type { LayoutParams } from '../types/layoutParams';
|
|
3
|
+
|
|
4
|
+
export const LayoutParamsContext = createContext<LayoutParams>({});
|
|
5
|
+
|
|
6
|
+
export function useLayoutParams(): LayoutParams {
|
|
7
|
+
return useContext(LayoutParamsContext);
|
|
8
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { writable } from '../stores/createObservable';
|
|
2
|
+
import type { Observable } from '../stores/createObservable';
|
|
3
|
+
import type { Variable } from './variable';
|
|
4
|
+
|
|
5
|
+
export class GlobalVariablesController {
|
|
6
|
+
private _vars: Map<string, Variable> = new Map();
|
|
7
|
+
private _lastAddedVariable: Observable<string> = writable('');
|
|
8
|
+
|
|
9
|
+
setVariable(variable: Variable): void {
|
|
10
|
+
const name = variable.getName();
|
|
11
|
+
|
|
12
|
+
if (this._vars.has(name)) {
|
|
13
|
+
throw new Error('Variable with the same name already exist');
|
|
14
|
+
} else {
|
|
15
|
+
this._vars.set(name, variable);
|
|
16
|
+
this._lastAddedVariable.set(name);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
getVariable(variableName: string): Variable | undefined {
|
|
21
|
+
return this._vars.get(variableName);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
list(): IterableIterator<Variable> {
|
|
25
|
+
return this._vars.values();
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
getVariables(): Map<string, Variable> {
|
|
29
|
+
return this._vars;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
getLastAddedVariableStore(): Observable<string> {
|
|
33
|
+
return this._lastAddedVariable;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function createGlobalVariablesController(): GlobalVariablesController {
|
|
38
|
+
return new GlobalVariablesController();
|
|
39
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -40,6 +40,9 @@ export {
|
|
|
40
40
|
|
|
41
41
|
export type { VariableType, VariableValue } from './expressions/variable';
|
|
42
42
|
|
|
43
|
+
// Global variables controller
|
|
44
|
+
export { createGlobalVariablesController, GlobalVariablesController } from './expressions/globalVariablesController';
|
|
45
|
+
|
|
43
46
|
// Context hooks (for advanced usage)
|
|
44
47
|
export { useDivKitContext, DivKitContext } from './context/DivKitContext';
|
|
45
48
|
|
package/src/types/text.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ import type { FontVariationSettings } from './fontVariationSettings';
|
|
|
12
12
|
|
|
13
13
|
export type FontWeight = 'light' | 'regular' | 'medium' | 'bold';
|
|
14
14
|
|
|
15
|
+
export type FontSizeUnit = 'dp' | 'sp' | 'px';
|
|
16
|
+
|
|
15
17
|
export type LineStyle = 'none' | 'single';
|
|
16
18
|
|
|
17
19
|
export type Truncate = 'none' | 'end';
|
|
@@ -19,7 +21,7 @@ export type Truncate = 'none' | 'end';
|
|
|
19
21
|
export interface TextStyles {
|
|
20
22
|
font_size?: number;
|
|
21
23
|
font_family?: string;
|
|
22
|
-
|
|
24
|
+
font_size_unit?: FontSizeUnit;
|
|
23
25
|
font_feature_settings?: string;
|
|
24
26
|
letter_spacing?: number;
|
|
25
27
|
font_weight?: FontWeight;
|
|
@@ -109,7 +111,7 @@ export interface TextEllipsis {
|
|
|
109
111
|
|
|
110
112
|
export interface DivTextData extends DivBaseData, DivActionableData, TextStyles {
|
|
111
113
|
type: 'text';
|
|
112
|
-
|
|
114
|
+
font_size_unit?: FontSizeUnit;
|
|
113
115
|
max_lines?: number;
|
|
114
116
|
// min_hidden_lines;
|
|
115
117
|
auto_ellipsize?: BooleanInt;
|