react-native-divkit 0.1.0-alpha.1
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/LICENSE +176 -0
- package/README.md +340 -0
- package/dist/DivKit.d.ts +68 -0
- package/dist/DivKit.d.ts.map +1 -0
- package/dist/DivKit.js +400 -0
- package/dist/DivKit.js.map +1 -0
- package/dist/actions/array.d.ts +8 -0
- package/dist/actions/array.d.ts.map +1 -0
- package/dist/actions/array.js +139 -0
- package/dist/actions/array.js.map +1 -0
- package/dist/actions/copyToClipboard.d.ts +22 -0
- package/dist/actions/copyToClipboard.d.ts.map +1 -0
- package/dist/actions/copyToClipboard.js +63 -0
- package/dist/actions/copyToClipboard.js.map +1 -0
- package/dist/actions/dict.d.ts +6 -0
- package/dist/actions/dict.d.ts.map +1 -0
- package/dist/actions/dict.js +58 -0
- package/dist/actions/dict.js.map +1 -0
- package/dist/actions/index.d.ts +11 -0
- package/dist/actions/index.d.ts.map +1 -0
- package/dist/actions/index.js +11 -0
- package/dist/actions/index.js.map +1 -0
- package/dist/actions/updateStructure.d.ts +6 -0
- package/dist/actions/updateStructure.d.ts.map +1 -0
- package/dist/actions/updateStructure.js +116 -0
- package/dist/actions/updateStructure.js.map +1 -0
- package/dist/components/DivComponent.d.ts +29 -0
- package/dist/components/DivComponent.d.ts.map +1 -0
- package/dist/components/DivComponent.js +62 -0
- package/dist/components/DivComponent.js.map +1 -0
- package/dist/components/container/DivContainer.d.ts +26 -0
- package/dist/components/container/DivContainer.d.ts.map +1 -0
- package/dist/components/container/DivContainer.js +172 -0
- package/dist/components/container/DivContainer.js.map +1 -0
- package/dist/components/container/index.d.ts +3 -0
- package/dist/components/container/index.d.ts.map +1 -0
- package/dist/components/container/index.js +2 -0
- package/dist/components/container/index.js.map +1 -0
- package/dist/components/image/DivImage.d.ts +29 -0
- package/dist/components/image/DivImage.d.ts.map +1 -0
- package/dist/components/image/DivImage.js +122 -0
- package/dist/components/image/DivImage.js.map +1 -0
- package/dist/components/image/index.d.ts +3 -0
- package/dist/components/image/index.d.ts.map +1 -0
- package/dist/components/image/index.js +2 -0
- package/dist/components/image/index.js.map +1 -0
- package/dist/components/index.d.ts +14 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +11 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/state/DivState.d.ts +26 -0
- package/dist/components/state/DivState.d.ts.map +1 -0
- package/dist/components/state/DivState.js +121 -0
- package/dist/components/state/DivState.js.map +1 -0
- package/dist/components/state/index.d.ts +3 -0
- package/dist/components/state/index.d.ts.map +1 -0
- package/dist/components/state/index.js +2 -0
- package/dist/components/state/index.js.map +1 -0
- package/dist/components/text/DivText.d.ts +28 -0
- package/dist/components/text/DivText.d.ts.map +1 -0
- package/dist/components/text/DivText.js +143 -0
- package/dist/components/text/DivText.js.map +1 -0
- package/dist/components/text/index.d.ts +3 -0
- package/dist/components/text/index.d.ts.map +1 -0
- package/dist/components/text/index.js +2 -0
- package/dist/components/text/index.js.map +1 -0
- package/dist/components/utilities/Outer.d.ts +17 -0
- package/dist/components/utilities/Outer.d.ts.map +1 -0
- package/dist/components/utilities/Outer.js +210 -0
- package/dist/components/utilities/Outer.js.map +1 -0
- package/dist/components/utilities/Unknown.d.ts +11 -0
- package/dist/components/utilities/Unknown.d.ts.map +1 -0
- package/dist/components/utilities/Unknown.js +50 -0
- package/dist/components/utilities/Unknown.js.map +1 -0
- package/dist/components/utilities/index.d.ts +5 -0
- package/dist/components/utilities/index.d.ts.map +1 -0
- package/dist/components/utilities/index.js +3 -0
- package/dist/components/utilities/index.js.map +1 -0
- package/dist/context/ActionContext.d.ts +25 -0
- package/dist/context/ActionContext.d.ts.map +1 -0
- package/dist/context/ActionContext.js +20 -0
- package/dist/context/ActionContext.js.map +1 -0
- package/dist/context/DivKitContext.d.ts +33 -0
- package/dist/context/DivKitContext.d.ts.map +1 -0
- package/dist/context/DivKitContext.js +14 -0
- package/dist/context/DivKitContext.js.map +1 -0
- package/dist/context/EnabledContext.d.ts +31 -0
- package/dist/context/EnabledContext.d.ts.map +1 -0
- package/dist/context/EnabledContext.js +31 -0
- package/dist/context/EnabledContext.js.map +1 -0
- package/dist/context/StateContext.d.ts +57 -0
- package/dist/context/StateContext.d.ts.map +1 -0
- package/dist/context/StateContext.js +20 -0
- package/dist/context/StateContext.js.map +1 -0
- package/dist/context/index.d.ts +9 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +9 -0
- package/dist/context/index.js.map +1 -0
- package/dist/expressions/bigint.d.ts +8 -0
- package/dist/expressions/bigint.d.ts.map +1 -0
- package/dist/expressions/bigint.js +31 -0
- package/dist/expressions/bigint.js.map +1 -0
- package/dist/expressions/const.d.ts +15 -0
- package/dist/expressions/const.d.ts.map +1 -0
- package/dist/expressions/const.js +15 -0
- package/dist/expressions/const.js.map +1 -0
- package/dist/expressions/eval.d.ts +77 -0
- package/dist/expressions/eval.d.ts.map +1 -0
- package/dist/expressions/eval.js +459 -0
- package/dist/expressions/eval.js.map +1 -0
- package/dist/expressions/expressions.d.ts +7 -0
- package/dist/expressions/expressions.d.ts.map +1 -0
- package/dist/expressions/expressions.js +3191 -0
- package/dist/expressions/expressions.js.map +1 -0
- package/dist/expressions/funcs/array.d.ts +2 -0
- package/dist/expressions/funcs/array.d.ts.map +1 -0
- package/dist/expressions/funcs/array.js +381 -0
- package/dist/expressions/funcs/array.js.map +1 -0
- package/dist/expressions/funcs/colors.d.ts +2 -0
- package/dist/expressions/funcs/colors.d.ts.map +1 -0
- package/dist/expressions/funcs/colors.js +75 -0
- package/dist/expressions/funcs/colors.js.map +1 -0
- package/dist/expressions/funcs/customFuncs.d.ts +8 -0
- package/dist/expressions/funcs/customFuncs.d.ts.map +1 -0
- package/dist/expressions/funcs/customFuncs.js +114 -0
- package/dist/expressions/funcs/customFuncs.js.map +1 -0
- package/dist/expressions/funcs/datetime.d.ts +2 -0
- package/dist/expressions/funcs/datetime.d.ts.map +1 -0
- package/dist/expressions/funcs/datetime.js +182 -0
- package/dist/expressions/funcs/datetime.js.map +1 -0
- package/dist/expressions/funcs/dict.d.ts +2 -0
- package/dist/expressions/funcs/dict.d.ts.map +1 -0
- package/dist/expressions/funcs/dict.js +170 -0
- package/dist/expressions/funcs/dict.js.map +1 -0
- package/dist/expressions/funcs/funcs.d.ts +80 -0
- package/dist/expressions/funcs/funcs.d.ts.map +1 -0
- package/dist/expressions/funcs/funcs.js +146 -0
- package/dist/expressions/funcs/funcs.js.map +1 -0
- package/dist/expressions/funcs/index.d.ts +2 -0
- package/dist/expressions/funcs/index.d.ts.map +1 -0
- package/dist/expressions/funcs/index.js +23 -0
- package/dist/expressions/funcs/index.js.map +1 -0
- package/dist/expressions/funcs/interval.d.ts +2 -0
- package/dist/expressions/funcs/interval.d.ts.map +1 -0
- package/dist/expressions/funcs/interval.js +61 -0
- package/dist/expressions/funcs/interval.js.map +1 -0
- package/dist/expressions/funcs/math.d.ts +2 -0
- package/dist/expressions/funcs/math.d.ts.map +1 -0
- package/dist/expressions/funcs/math.js +324 -0
- package/dist/expressions/funcs/math.js.map +1 -0
- package/dist/expressions/funcs/std.d.ts +2 -0
- package/dist/expressions/funcs/std.d.ts.map +1 -0
- package/dist/expressions/funcs/std.js +293 -0
- package/dist/expressions/funcs/std.js.map +1 -0
- package/dist/expressions/funcs/stored.d.ts +4 -0
- package/dist/expressions/funcs/stored.d.ts.map +1 -0
- package/dist/expressions/funcs/stored.js +62 -0
- package/dist/expressions/funcs/stored.js.map +1 -0
- package/dist/expressions/funcs/strings.d.ts +2 -0
- package/dist/expressions/funcs/strings.d.ts.map +1 -0
- package/dist/expressions/funcs/strings.js +158 -0
- package/dist/expressions/funcs/strings.js.map +1 -0
- package/dist/expressions/funcs/trigonometry.d.ts +2 -0
- package/dist/expressions/funcs/trigonometry.d.ts.map +1 -0
- package/dist/expressions/funcs/trigonometry.js +92 -0
- package/dist/expressions/funcs/trigonometry.js.map +1 -0
- package/dist/expressions/json.d.ts +18 -0
- package/dist/expressions/json.d.ts.map +1 -0
- package/dist/expressions/json.js +271 -0
- package/dist/expressions/json.js.map +1 -0
- package/dist/expressions/parserCache.d.ts +4 -0
- package/dist/expressions/parserCache.d.ts.map +1 -0
- package/dist/expressions/parserCache.js +23 -0
- package/dist/expressions/parserCache.js.map +1 -0
- package/dist/expressions/simpleUnescapeString.d.ts +2 -0
- package/dist/expressions/simpleUnescapeString.d.ts.map +1 -0
- package/dist/expressions/simpleUnescapeString.js +61 -0
- package/dist/expressions/simpleUnescapeString.js.map +1 -0
- package/dist/expressions/utils.d.ts +29 -0
- package/dist/expressions/utils.d.ts.map +1 -0
- package/dist/expressions/utils.js +236 -0
- package/dist/expressions/utils.js.map +1 -0
- package/dist/expressions/variable.d.ts +82 -0
- package/dist/expressions/variable.d.ts.map +1 -0
- package/dist/expressions/variable.js +337 -0
- package/dist/expressions/variable.js.map +1 -0
- package/dist/expressions/walk.d.ts +7 -0
- package/dist/expressions/walk.d.ts.map +1 -0
- package/dist/expressions/walk.js +39 -0
- package/dist/expressions/walk.js.map +1 -0
- package/dist/hooks/index.d.ts +8 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +11 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useAction.d.ts +102 -0
- package/dist/hooks/useAction.d.ts.map +1 -0
- package/dist/hooks/useAction.js +116 -0
- package/dist/hooks/useAction.js.map +1 -0
- package/dist/hooks/useDerivedFromVars.d.ts +72 -0
- package/dist/hooks/useDerivedFromVars.d.ts.map +1 -0
- package/dist/hooks/useDerivedFromVars.js +100 -0
- package/dist/hooks/useDerivedFromVars.js.map +1 -0
- package/dist/hooks/useVariable.d.ts +86 -0
- package/dist/hooks/useVariable.d.ts.map +1 -0
- package/dist/hooks/useVariable.js +130 -0
- package/dist/hooks/useVariable.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/stores/createObservable.d.ts +38 -0
- package/dist/stores/createObservable.d.ts.map +1 -0
- package/dist/stores/createObservable.js +49 -0
- package/dist/stores/createObservable.js.map +1 -0
- package/dist/utils/applyTemplate.d.ts +8 -0
- package/dist/utils/applyTemplate.d.ts.map +1 -0
- package/dist/utils/applyTemplate.js +94 -0
- package/dist/utils/applyTemplate.js.map +1 -0
- package/dist/utils/correctColor.d.ts +18 -0
- package/dist/utils/correctColor.d.ts.map +1 -0
- package/dist/utils/correctColor.js +79 -0
- package/dist/utils/correctColor.js.map +1 -0
- package/dist/utils/escapeRegExp.d.ts +2 -0
- package/dist/utils/escapeRegExp.d.ts.map +1 -0
- package/dist/utils/escapeRegExp.js +4 -0
- package/dist/utils/escapeRegExp.js.map +1 -0
- package/dist/utils/formatDate.d.ts +6 -0
- package/dist/utils/formatDate.d.ts.map +1 -0
- package/dist/utils/formatDate.js +325 -0
- package/dist/utils/formatDate.js.map +1 -0
- package/dist/utils/padLeft.d.ts +2 -0
- package/dist/utils/padLeft.d.ts.map +1 -0
- package/dist/utils/padLeft.js +7 -0
- package/dist/utils/padLeft.js.map +1 -0
- package/dist/utils/uniq.d.ts +2 -0
- package/dist/utils/uniq.d.ts.map +1 -0
- package/dist/utils/uniq.js +4 -0
- package/dist/utils/uniq.js.map +1 -0
- package/dist/utils/wrapError.d.ts +10 -0
- package/dist/utils/wrapError.d.ts.map +1 -0
- package/dist/utils/wrapError.js +9 -0
- package/dist/utils/wrapError.js.map +1 -0
- package/package.json +58 -0
- package/src/DivKit.tsx +542 -0
- package/src/actions/array.ts +170 -0
- package/src/actions/copyToClipboard.ts +82 -0
- package/src/actions/dict.ts +71 -0
- package/src/actions/index.ts +11 -0
- package/src/actions/updateStructure.ts +134 -0
- package/src/components/DivComponent.tsx +75 -0
- package/src/components/README.md +230 -0
- package/src/components/container/DivContainer.tsx +222 -0
- package/src/components/container/index.ts +2 -0
- package/src/components/image/DivImage.tsx +172 -0
- package/src/components/image/index.ts +2 -0
- package/src/components/index.ts +20 -0
- package/src/components/state/DivState.tsx +146 -0
- package/src/components/state/index.ts +2 -0
- package/src/components/text/DivText.tsx +186 -0
- package/src/components/text/index.ts +2 -0
- package/src/components/utilities/Outer.tsx +239 -0
- package/src/components/utilities/README.md +175 -0
- package/src/components/utilities/Unknown.tsx +60 -0
- package/src/components/utilities/index.ts +4 -0
- package/src/context/ActionContext.tsx +37 -0
- package/src/context/DivKitContext.tsx +54 -0
- package/src/context/EnabledContext.tsx +50 -0
- package/src/context/StateContext.tsx +75 -0
- package/src/context/index.ts +33 -0
- package/src/expressions/ast.d.ts +101 -0
- package/src/expressions/bigint.ts +38 -0
- package/src/expressions/const.ts +16 -0
- package/src/expressions/eval.ts +669 -0
- package/src/expressions/expressions.peggy +235 -0
- package/src/expressions/expressions.ts +2854 -0
- package/src/expressions/funcs/array.ts +412 -0
- package/src/expressions/funcs/colors.ts +100 -0
- package/src/expressions/funcs/customFuncs.ts +139 -0
- package/src/expressions/funcs/datetime.ts +232 -0
- package/src/expressions/funcs/dict.ts +207 -0
- package/src/expressions/funcs/funcs.ts +323 -0
- package/src/expressions/funcs/index.ts +23 -0
- package/src/expressions/funcs/interval.ts +76 -0
- package/src/expressions/funcs/math.ts +395 -0
- package/src/expressions/funcs/std.ts +392 -0
- package/src/expressions/funcs/stored.ts +62 -0
- package/src/expressions/funcs/strings.ts +200 -0
- package/src/expressions/funcs/trigonometry.ts +108 -0
- package/src/expressions/json.ts +367 -0
- package/src/expressions/parserCache.ts +32 -0
- package/src/expressions/simpleUnescapeString.ts +57 -0
- package/src/expressions/utils.ts +271 -0
- package/src/expressions/variable.ts +429 -0
- package/src/expressions/walk.ts +43 -0
- package/src/hooks/README.md +265 -0
- package/src/hooks/index.ts +28 -0
- package/src/hooks/useAction.ts +152 -0
- package/src/hooks/useDerivedFromVars.ts +187 -0
- package/src/hooks/useVariable.ts +157 -0
- package/src/index.ts +97 -0
- package/src/stores/createObservable.ts +64 -0
- package/src/types/alignment.d.ts +13 -0
- package/src/types/background.d.ts +71 -0
- package/src/types/base.d.ts +224 -0
- package/src/types/border.d.ts +46 -0
- package/src/types/componentContext.d.ts +98 -0
- package/src/types/container.d.ts +40 -0
- package/src/types/edgeInserts.d.ts +9 -0
- package/src/types/general.d.ts +3 -0
- package/src/types/image.d.ts +33 -0
- package/src/types/imageScale.d.ts +1 -0
- package/src/types/layoutParams.d.ts +27 -0
- package/src/types/sizes.d.ts +37 -0
- package/src/types/state.d.ts +19 -0
- package/src/types/text.d.ts +126 -0
- package/src/utils/applyTemplate.ts +145 -0
- package/src/utils/correctColor.ts +102 -0
- package/src/utils/escapeRegExp.ts +3 -0
- package/src/utils/formatDate.ts +385 -0
- package/src/utils/padLeft.ts +6 -0
- package/src/utils/uniq.ts +3 -0
- package/src/utils/wrapError.ts +21 -0
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import React, { useMemo, useState } from 'react';
|
|
2
|
+
import { Image, View, ActivityIndicator } from 'react-native';
|
|
3
|
+
import { Outer } from '../utilities/Outer';
|
|
4
|
+
import { useDerivedFromVarsSimple } from '../../hooks/useDerivedFromVars';
|
|
5
|
+
import { wrapError } from '../../utils/wrapError';
|
|
6
|
+
/**
|
|
7
|
+
* DivImage component - renders images from network URLs
|
|
8
|
+
* MVP implementation with basic features:
|
|
9
|
+
* - Network image loading
|
|
10
|
+
* - Scaling modes (fill, fit, stretch, no_scale)
|
|
11
|
+
* - Placeholder color while loading
|
|
12
|
+
* - Content alignment (horizontal & vertical)
|
|
13
|
+
* - Aspect ratio
|
|
14
|
+
*
|
|
15
|
+
* Deferred for post-MVP:
|
|
16
|
+
* - GIF support (requires native module or library)
|
|
17
|
+
* - Image preview (blur-up technique)
|
|
18
|
+
* - Tint color and tint modes
|
|
19
|
+
* - Image filters (blur, etc.)
|
|
20
|
+
* - Appearance animations
|
|
21
|
+
* - High priority preview
|
|
22
|
+
* - Preload required flag
|
|
23
|
+
* - react-native-fast-image integration
|
|
24
|
+
*
|
|
25
|
+
* Based on Web Image.svelte
|
|
26
|
+
*/
|
|
27
|
+
export function DivImage({ componentContext }) {
|
|
28
|
+
const { json, variables } = componentContext;
|
|
29
|
+
const [loading, setLoading] = useState(true);
|
|
30
|
+
const [error, setError] = useState(false);
|
|
31
|
+
// Reactive properties
|
|
32
|
+
const imageUrl = useDerivedFromVarsSimple(json.image_url || json.gif_url, variables || new Map());
|
|
33
|
+
const scale = useDerivedFromVarsSimple(json.scale || 'fill', variables || new Map());
|
|
34
|
+
const placeholderColor = useDerivedFromVarsSimple(json.placeholder_color, variables || new Map());
|
|
35
|
+
// Map DivKit scale to React Native resizeMode
|
|
36
|
+
const resizeMode = useMemo(() => {
|
|
37
|
+
switch (scale) {
|
|
38
|
+
case 'fill':
|
|
39
|
+
return 'cover'; // Fills the area, may crop
|
|
40
|
+
case 'fit':
|
|
41
|
+
return 'contain'; // Fits within area, no crop
|
|
42
|
+
case 'stretch':
|
|
43
|
+
return 'stretch'; // Stretches to fill, may distort
|
|
44
|
+
case 'no_scale':
|
|
45
|
+
return 'center'; // Original size, centered
|
|
46
|
+
default:
|
|
47
|
+
return 'cover';
|
|
48
|
+
}
|
|
49
|
+
}, [scale]);
|
|
50
|
+
// Container style (for placeholder and loading)
|
|
51
|
+
const containerStyle = useMemo(() => {
|
|
52
|
+
const style = {
|
|
53
|
+
overflow: 'hidden'
|
|
54
|
+
};
|
|
55
|
+
// Placeholder background
|
|
56
|
+
if (placeholderColor && loading) {
|
|
57
|
+
style.backgroundColor = placeholderColor;
|
|
58
|
+
}
|
|
59
|
+
// Aspect ratio
|
|
60
|
+
if (json.aspect?.ratio) {
|
|
61
|
+
style.aspectRatio = json.aspect.ratio;
|
|
62
|
+
}
|
|
63
|
+
return style;
|
|
64
|
+
}, [placeholderColor, loading, json.aspect]);
|
|
65
|
+
// Image style
|
|
66
|
+
const imageStyle = useMemo(() => {
|
|
67
|
+
const style = {
|
|
68
|
+
width: '100%',
|
|
69
|
+
height: '100%'
|
|
70
|
+
};
|
|
71
|
+
// Aspect ratio
|
|
72
|
+
if (json.aspect?.ratio) {
|
|
73
|
+
style.aspectRatio = json.aspect.ratio;
|
|
74
|
+
}
|
|
75
|
+
return style;
|
|
76
|
+
}, [json.aspect]);
|
|
77
|
+
// Handle image load events
|
|
78
|
+
const handleLoadStart = () => {
|
|
79
|
+
setLoading(true);
|
|
80
|
+
setError(false);
|
|
81
|
+
};
|
|
82
|
+
const handleLoadEnd = () => {
|
|
83
|
+
setLoading(false);
|
|
84
|
+
};
|
|
85
|
+
const handleError = () => {
|
|
86
|
+
setLoading(false);
|
|
87
|
+
setError(true);
|
|
88
|
+
componentContext.logError(wrapError(new Error(`Failed to load image: ${imageUrl}`)));
|
|
89
|
+
};
|
|
90
|
+
// Render error state
|
|
91
|
+
if (error) {
|
|
92
|
+
return (<Outer componentContext={componentContext}>
|
|
93
|
+
<View style={[containerStyle, { backgroundColor: placeholderColor || '#EEEEEE' }]}>
|
|
94
|
+
{/* Error placeholder - could be customized */}
|
|
95
|
+
</View>
|
|
96
|
+
</Outer>);
|
|
97
|
+
}
|
|
98
|
+
// Render loading state
|
|
99
|
+
if (!imageUrl) {
|
|
100
|
+
return (<Outer componentContext={componentContext}>
|
|
101
|
+
<View style={[containerStyle, { backgroundColor: placeholderColor || '#EEEEEE' }]}/>
|
|
102
|
+
</Outer>);
|
|
103
|
+
}
|
|
104
|
+
return (<Outer componentContext={componentContext}>
|
|
105
|
+
<View style={containerStyle}>
|
|
106
|
+
<Image source={{ uri: imageUrl }} style={imageStyle} resizeMode={resizeMode} onLoadStart={handleLoadStart} onLoadEnd={handleLoadEnd} onError={handleError}/>
|
|
107
|
+
{loading && (<View style={{
|
|
108
|
+
position: 'absolute',
|
|
109
|
+
top: 0,
|
|
110
|
+
left: 0,
|
|
111
|
+
right: 0,
|
|
112
|
+
bottom: 0,
|
|
113
|
+
justifyContent: 'center',
|
|
114
|
+
alignItems: 'center',
|
|
115
|
+
backgroundColor: placeholderColor || 'transparent'
|
|
116
|
+
}}>
|
|
117
|
+
<ActivityIndicator size="small" color="#999999"/>
|
|
118
|
+
</View>)}
|
|
119
|
+
</View>
|
|
120
|
+
</Outer>);
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=DivImage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DivImage.js","sourceRoot":"","sources":["../../../src/components/image/DivImage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/image/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/image/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export { DivComponent } from './DivComponent';
|
|
2
|
+
export type { DivComponentProps } from './DivComponent';
|
|
3
|
+
export { DivText } from './text';
|
|
4
|
+
export { DivContainer } from './container';
|
|
5
|
+
export { DivImage } from './image';
|
|
6
|
+
export { DivState } from './state';
|
|
7
|
+
export { Outer } from './utilities/Outer';
|
|
8
|
+
export { Unknown } from './utilities/Unknown';
|
|
9
|
+
export type { DivTextProps } from './text';
|
|
10
|
+
export type { DivContainerProps } from './container';
|
|
11
|
+
export type { DivImageProps } from './image';
|
|
12
|
+
export type { DivStateProps } from './state';
|
|
13
|
+
export type { OuterProps } from './utilities/Outer';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGxD,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG9C,YAAY,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC3C,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Component router
|
|
2
|
+
export { DivComponent } from './DivComponent';
|
|
3
|
+
// Individual components
|
|
4
|
+
export { DivText } from './text';
|
|
5
|
+
export { DivContainer } from './container';
|
|
6
|
+
export { DivImage } from './image';
|
|
7
|
+
export { DivState } from './state';
|
|
8
|
+
// Utilities
|
|
9
|
+
export { Outer } from './utilities/Outer';
|
|
10
|
+
export { Unknown } from './utilities/Unknown';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,wBAAwB;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,YAAY;AACZ,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ComponentContext } from '../../types/componentContext';
|
|
3
|
+
import type { DivStateData } from '../../types/state';
|
|
4
|
+
export interface DivStateProps {
|
|
5
|
+
componentContext: ComponentContext<DivStateData>;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* DivState component - renders different content based on state
|
|
9
|
+
* MVP implementation with basic features:
|
|
10
|
+
* - State selection by state_id
|
|
11
|
+
* - Default state
|
|
12
|
+
* - State switching via actions (set_state)
|
|
13
|
+
* - State registration in StateContext
|
|
14
|
+
* - State variable binding (state_id_variable)
|
|
15
|
+
*
|
|
16
|
+
* Deferred for post-MVP:
|
|
17
|
+
* - Transition animations (in/out/change)
|
|
18
|
+
* - Animation timing and interpolation
|
|
19
|
+
* - Clip to bounds
|
|
20
|
+
* - Advanced state management
|
|
21
|
+
* - Multiple concurrent state transitions
|
|
22
|
+
*
|
|
23
|
+
* Based on Web State.svelte
|
|
24
|
+
*/
|
|
25
|
+
export declare function DivState({ componentContext }: DivStateProps): React.JSX.Element;
|
|
26
|
+
//# sourceMappingURL=DivState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DivState.d.ts","sourceRoot":"","sources":["../../../src/components/state/DivState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAE5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAS,MAAM,mBAAmB,CAAC;AAM7D,MAAM,WAAW,aAAa;IAC1B,gBAAgB,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;CACpD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,QAAQ,CAAC,EAAE,gBAAgB,EAAE,EAAE,aAAa,qBAkH3D"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import React, { useState, useEffect, useMemo } from 'react';
|
|
2
|
+
import { View } from 'react-native';
|
|
3
|
+
import { Outer } from '../utilities/Outer';
|
|
4
|
+
import { useStateContext } from '../../context/StateContext';
|
|
5
|
+
import { useDivKitContext } from '../../context/DivKitContext';
|
|
6
|
+
import { wrapError } from '../../utils/wrapError';
|
|
7
|
+
/**
|
|
8
|
+
* DivState component - renders different content based on state
|
|
9
|
+
* MVP implementation with basic features:
|
|
10
|
+
* - State selection by state_id
|
|
11
|
+
* - Default state
|
|
12
|
+
* - State switching via actions (set_state)
|
|
13
|
+
* - State registration in StateContext
|
|
14
|
+
* - State variable binding (state_id_variable)
|
|
15
|
+
*
|
|
16
|
+
* Deferred for post-MVP:
|
|
17
|
+
* - Transition animations (in/out/change)
|
|
18
|
+
* - Animation timing and interpolation
|
|
19
|
+
* - Clip to bounds
|
|
20
|
+
* - Advanced state management
|
|
21
|
+
* - Multiple concurrent state transitions
|
|
22
|
+
*
|
|
23
|
+
* Based on Web State.svelte
|
|
24
|
+
*/
|
|
25
|
+
export function DivState({ componentContext }) {
|
|
26
|
+
const { json } = componentContext;
|
|
27
|
+
const { getVariable } = useDivKitContext();
|
|
28
|
+
const { registerState } = useStateContext();
|
|
29
|
+
// Get state ID for registration
|
|
30
|
+
const stateId = json.div_id || json.id;
|
|
31
|
+
// Find default state
|
|
32
|
+
const defaultStateId = useMemo(() => {
|
|
33
|
+
if (json.default_state_id) {
|
|
34
|
+
return json.default_state_id;
|
|
35
|
+
}
|
|
36
|
+
// If no default, use first state
|
|
37
|
+
if (json.states && json.states.length > 0) {
|
|
38
|
+
return json.states[0].state_id;
|
|
39
|
+
}
|
|
40
|
+
return undefined;
|
|
41
|
+
}, [json.default_state_id, json.states]);
|
|
42
|
+
// State management
|
|
43
|
+
const [currentStateId, setCurrentStateId] = useState(defaultStateId);
|
|
44
|
+
// Handle state_id_variable (two-way binding)
|
|
45
|
+
const stateVariableName = json.state_id_variable;
|
|
46
|
+
const stateVariable = stateVariableName ? getVariable(stateVariableName) : undefined;
|
|
47
|
+
// Sync with state variable
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
if (stateVariable) {
|
|
50
|
+
// Subscribe to variable changes
|
|
51
|
+
const unsubscribe = stateVariable.subscribe((value) => {
|
|
52
|
+
if (typeof value === 'string' && value !== currentStateId) {
|
|
53
|
+
setCurrentStateId(value);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
return unsubscribe;
|
|
57
|
+
}
|
|
58
|
+
return undefined;
|
|
59
|
+
}, [stateVariable, currentStateId]);
|
|
60
|
+
// Update variable when state changes
|
|
61
|
+
useEffect(() => {
|
|
62
|
+
if (stateVariable && currentStateId) {
|
|
63
|
+
const currentValue = stateVariable.getValue();
|
|
64
|
+
if (currentValue !== currentStateId) {
|
|
65
|
+
stateVariable.setValue(currentStateId);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}, [stateVariable, currentStateId]);
|
|
69
|
+
// Register state in context for set_state action
|
|
70
|
+
useEffect(() => {
|
|
71
|
+
if (stateId) {
|
|
72
|
+
const unregister = registerState(stateId, async (newStateId) => {
|
|
73
|
+
setCurrentStateId(newStateId);
|
|
74
|
+
return undefined;
|
|
75
|
+
});
|
|
76
|
+
return unregister;
|
|
77
|
+
}
|
|
78
|
+
return undefined;
|
|
79
|
+
}, [stateId, registerState]);
|
|
80
|
+
// Validate states
|
|
81
|
+
useEffect(() => {
|
|
82
|
+
if (!json.states || json.states.length === 0) {
|
|
83
|
+
componentContext.logError(wrapError(new Error('Empty "states" prop for div "state"')));
|
|
84
|
+
}
|
|
85
|
+
if (!stateId) {
|
|
86
|
+
componentContext.logError(wrapError(new Error('Missing "id" prop for div "state"')));
|
|
87
|
+
}
|
|
88
|
+
}, [json.states, stateId, componentContext]);
|
|
89
|
+
// Find current state
|
|
90
|
+
const currentState = useMemo(() => {
|
|
91
|
+
if (!json.states)
|
|
92
|
+
return undefined;
|
|
93
|
+
const found = json.states.find(s => s.state_id === currentStateId);
|
|
94
|
+
if (!found || !found.state_id)
|
|
95
|
+
return undefined;
|
|
96
|
+
return found;
|
|
97
|
+
}, [json.states, currentStateId]);
|
|
98
|
+
// Create child context for current state
|
|
99
|
+
const childContext = useMemo(() => {
|
|
100
|
+
if (!currentState?.div)
|
|
101
|
+
return undefined;
|
|
102
|
+
return componentContext.produceChildContext(currentState.div, {
|
|
103
|
+
path: currentStateId,
|
|
104
|
+
});
|
|
105
|
+
}, [currentState, currentStateId, componentContext]);
|
|
106
|
+
// Render current state
|
|
107
|
+
const renderContent = () => {
|
|
108
|
+
if (!currentState?.div || !childContext) {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
// Import DivComponent dynamically to avoid circular dependency
|
|
112
|
+
const DivComponent = require('../DivComponent').DivComponent;
|
|
113
|
+
return (<DivComponent componentContext={childContext}/>);
|
|
114
|
+
};
|
|
115
|
+
return (<Outer componentContext={componentContext}>
|
|
116
|
+
<View>
|
|
117
|
+
{renderContent()}
|
|
118
|
+
</View>
|
|
119
|
+
</Outer>);
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=DivState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DivState.js","sourceRoot":"","sources":["../../../src/components/state/DivState.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/state/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/state/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ComponentContext } from '../../types/componentContext';
|
|
3
|
+
import type { DivTextData } from '../../types/text';
|
|
4
|
+
export interface DivTextProps {
|
|
5
|
+
componentContext: ComponentContext<DivTextData>;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* DivText component - renders text with styling
|
|
9
|
+
* MVP implementation with basic features:
|
|
10
|
+
* - Text rendering with variable substitution
|
|
11
|
+
* - Font styling (size, weight, color, family)
|
|
12
|
+
* - Text alignment (horizontal & vertical)
|
|
13
|
+
* - Max lines with ellipsize
|
|
14
|
+
* - Line height, letter spacing
|
|
15
|
+
* - Text decorations (underline, strikethrough)
|
|
16
|
+
*
|
|
17
|
+
* Deferred for post-MVP:
|
|
18
|
+
* - Text ranges (nested styling)
|
|
19
|
+
* - Text images
|
|
20
|
+
* - Text gradients
|
|
21
|
+
* - Text shadows
|
|
22
|
+
* - Auto ellipsize
|
|
23
|
+
* - Selectable text with custom actions
|
|
24
|
+
*
|
|
25
|
+
* Based on Web Text.svelte
|
|
26
|
+
*/
|
|
27
|
+
export declare function DivText({ componentContext }: DivTextProps): React.JSX.Element;
|
|
28
|
+
//# sourceMappingURL=DivText.d.ts.map
|
|
@@ -0,0 +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,EAAwB,MAAM,kBAAkB,CAAC;AAK1E,MAAM,WAAW,YAAY;IACzB,gBAAgB,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;CACnD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,OAAO,CAAC,EAAE,gBAAgB,EAAE,EAAE,YAAY,qBAyJzD"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import React, { useMemo } from 'react';
|
|
2
|
+
import { Text } from 'react-native';
|
|
3
|
+
import { Outer } from '../utilities/Outer';
|
|
4
|
+
import { useDerivedFromVarsSimple } from '../../hooks/useDerivedFromVars';
|
|
5
|
+
import { useDivKitContext } from '../../context/DivKitContext';
|
|
6
|
+
/**
|
|
7
|
+
* DivText component - renders text with styling
|
|
8
|
+
* MVP implementation with basic features:
|
|
9
|
+
* - Text rendering with variable substitution
|
|
10
|
+
* - Font styling (size, weight, color, family)
|
|
11
|
+
* - Text alignment (horizontal & vertical)
|
|
12
|
+
* - Max lines with ellipsize
|
|
13
|
+
* - Line height, letter spacing
|
|
14
|
+
* - Text decorations (underline, strikethrough)
|
|
15
|
+
*
|
|
16
|
+
* Deferred for post-MVP:
|
|
17
|
+
* - Text ranges (nested styling)
|
|
18
|
+
* - Text images
|
|
19
|
+
* - Text gradients
|
|
20
|
+
* - Text shadows
|
|
21
|
+
* - Auto ellipsize
|
|
22
|
+
* - Selectable text with custom actions
|
|
23
|
+
*
|
|
24
|
+
* Based on Web Text.svelte
|
|
25
|
+
*/
|
|
26
|
+
export function DivText({ componentContext }) {
|
|
27
|
+
const { direction } = useDivKitContext();
|
|
28
|
+
const { json, variables } = componentContext;
|
|
29
|
+
// Reactive properties - use hooks for properties that may contain variables
|
|
30
|
+
const text = useDerivedFromVarsSimple(json.text || '', variables || new Map());
|
|
31
|
+
const fontSize = useDerivedFromVarsSimple(json.font_size || 12, variables || new Map());
|
|
32
|
+
const textColor = useDerivedFromVarsSimple(json.text_color || '#000000', variables || new Map());
|
|
33
|
+
const textAlignmentHorizontal = useDerivedFromVarsSimple(json.text_alignment_horizontal || 'start', variables || new Map());
|
|
34
|
+
const maxLines = useDerivedFromVarsSimple(json.max_lines, variables || new Map());
|
|
35
|
+
// Build text style
|
|
36
|
+
const textStyle = useMemo(() => {
|
|
37
|
+
const style = {};
|
|
38
|
+
// Font size
|
|
39
|
+
if (fontSize) {
|
|
40
|
+
style.fontSize = fontSize;
|
|
41
|
+
}
|
|
42
|
+
// Text color
|
|
43
|
+
if (textColor) {
|
|
44
|
+
style.color = textColor;
|
|
45
|
+
}
|
|
46
|
+
// Font weight
|
|
47
|
+
if (json.font_weight) {
|
|
48
|
+
const weightMap = {
|
|
49
|
+
'light': '300',
|
|
50
|
+
'regular': '400',
|
|
51
|
+
'medium': '500',
|
|
52
|
+
'bold': '700'
|
|
53
|
+
};
|
|
54
|
+
style.fontWeight = weightMap[json.font_weight] || '400';
|
|
55
|
+
}
|
|
56
|
+
else if (json.font_weight_value) {
|
|
57
|
+
// Custom weight value (100-900)
|
|
58
|
+
const weight = Math.max(100, Math.min(900, json.font_weight_value));
|
|
59
|
+
style.fontWeight = String(weight);
|
|
60
|
+
}
|
|
61
|
+
// Font family
|
|
62
|
+
if (json.font_family) {
|
|
63
|
+
style.fontFamily = json.font_family;
|
|
64
|
+
}
|
|
65
|
+
// Line height
|
|
66
|
+
if (json.line_height && fontSize) {
|
|
67
|
+
// DivKit line_height is in pixels, React Native expects ratio or pixels
|
|
68
|
+
// Convert to ratio: line_height / font_size
|
|
69
|
+
style.lineHeight = json.line_height;
|
|
70
|
+
}
|
|
71
|
+
// Letter spacing
|
|
72
|
+
if (json.letter_spacing !== undefined) {
|
|
73
|
+
style.letterSpacing = json.letter_spacing;
|
|
74
|
+
}
|
|
75
|
+
// Text alignment
|
|
76
|
+
const alignValue = textAlignmentHorizontal;
|
|
77
|
+
if (alignValue === 'start') {
|
|
78
|
+
style.textAlign = direction === 'rtl' ? 'right' : 'left';
|
|
79
|
+
}
|
|
80
|
+
else if (alignValue === 'end') {
|
|
81
|
+
style.textAlign = direction === 'rtl' ? 'left' : 'right';
|
|
82
|
+
}
|
|
83
|
+
else if (alignValue === 'center') {
|
|
84
|
+
style.textAlign = 'center';
|
|
85
|
+
}
|
|
86
|
+
else if (alignValue === 'left' || alignValue === 'right') {
|
|
87
|
+
style.textAlign = alignValue;
|
|
88
|
+
}
|
|
89
|
+
// Text decoration - underline
|
|
90
|
+
if (json.underline === 'single') {
|
|
91
|
+
style.textDecorationLine = 'underline';
|
|
92
|
+
}
|
|
93
|
+
// Text decoration - strike (strikethrough)
|
|
94
|
+
if (json.strike === 'single') {
|
|
95
|
+
if (style.textDecorationLine === 'underline') {
|
|
96
|
+
style.textDecorationLine = 'underline line-through';
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
style.textDecorationLine = 'line-through';
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Font feature settings (advanced typography)
|
|
103
|
+
if (json.font_feature_settings) {
|
|
104
|
+
// React Native supports fontVariant for some features
|
|
105
|
+
// For full support, this may require native modules
|
|
106
|
+
// MVP: basic support
|
|
107
|
+
style.fontVariant = json.font_feature_settings.split(',').map(s => s.trim());
|
|
108
|
+
}
|
|
109
|
+
return style;
|
|
110
|
+
}, [
|
|
111
|
+
fontSize,
|
|
112
|
+
textColor,
|
|
113
|
+
textAlignmentHorizontal,
|
|
114
|
+
json.font_weight,
|
|
115
|
+
json.font_weight_value,
|
|
116
|
+
json.font_family,
|
|
117
|
+
json.line_height,
|
|
118
|
+
json.letter_spacing,
|
|
119
|
+
json.underline,
|
|
120
|
+
json.strike,
|
|
121
|
+
json.font_feature_settings,
|
|
122
|
+
direction
|
|
123
|
+
]);
|
|
124
|
+
// Determine numberOfLines prop
|
|
125
|
+
const numberOfLines = maxLines && maxLines > 0 ? maxLines : undefined;
|
|
126
|
+
// Ellipsize mode
|
|
127
|
+
const ellipsizeMode = useMemo(() => {
|
|
128
|
+
const truncate = json.truncate;
|
|
129
|
+
if (truncate === 'end' || numberOfLines !== undefined) {
|
|
130
|
+
return 'tail';
|
|
131
|
+
}
|
|
132
|
+
return undefined;
|
|
133
|
+
}, [json.truncate, numberOfLines]);
|
|
134
|
+
// Vertical alignment is handled by Outer component via alignment props
|
|
135
|
+
// For text, we primarily care about horizontal alignment which is in textStyle
|
|
136
|
+
return (<Outer componentContext={componentContext}>
|
|
137
|
+
<Text style={textStyle} numberOfLines={numberOfLines} ellipsizeMode={ellipsizeMode} allowFontScaling={false} // DivKit has fixed sizes
|
|
138
|
+
>
|
|
139
|
+
{text}
|
|
140
|
+
</Text>
|
|
141
|
+
</Outer>);
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=DivText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DivText.js","sourceRoot":"","sources":["../../../src/components/text/DivText.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/text/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/text/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React, { ReactNode } from 'react';
|
|
2
|
+
import { ViewStyle } from 'react-native';
|
|
3
|
+
import type { ComponentContext } from '../../types/componentContext';
|
|
4
|
+
import type { DivBaseData } from '../../types/base';
|
|
5
|
+
export interface OuterProps<T extends DivBaseData = DivBaseData> {
|
|
6
|
+
componentContext: ComponentContext<T>;
|
|
7
|
+
children: ReactNode;
|
|
8
|
+
style?: ViewStyle;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Outer component - base wrapper for all DivKit components
|
|
12
|
+
* Handles visibility, sizing, padding, margins, background, borders, and actions
|
|
13
|
+
*
|
|
14
|
+
* Based on Web Outer.svelte but simplified for React Native MVP
|
|
15
|
+
*/
|
|
16
|
+
export declare function Outer<T extends DivBaseData = DivBaseData>({ componentContext, children, style: customStyle }: OuterProps<T>): React.JSX.Element | null;
|
|
17
|
+
//# sourceMappingURL=Outer.d.ts.map
|
|
@@ -0,0 +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;AAQpD,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,4BAmNf"}
|