pytech-ui 1.0.30 → 1.0.31
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 +21 -21
- package/README.md +40 -40
- package/android/.gradle/buildOutputCleanup/cache.properties +2 -2
- package/android/.gradle/nb-cache/trust/8732A504261C070E1F639E78DF65F8E6DC6FFC865B3D7178A7609BB57105805F +1 -1
- package/android/build.gradle +47 -47
- package/android/src/main/AndroidManifest.xml +2 -2
- package/android/src/main/java/expo/modules/pytechui/Dialog.kt +39 -39
- package/android/src/main/java/expo/modules/pytechui/ForEach/ForEachRecords.kt +23 -23
- package/android/src/main/java/expo/modules/pytechui/ForEach/index.kt +82 -82
- package/android/src/main/java/expo/modules/pytechui/Gradient/GradientView.kt +124 -124
- package/android/src/main/java/expo/modules/pytechui/Icon/index.kt +36 -36
- package/android/src/main/java/expo/modules/pytechui/Icon/utils.kt +42 -42
- package/android/src/main/java/expo/modules/pytechui/ListItem/Data/ListItemDataRecords.kt +84 -84
- package/android/src/main/java/expo/modules/pytechui/ListItem/Data/ListItemFromData.kt +127 -127
- package/android/src/main/java/expo/modules/pytechui/ListItem/Slots/ListItemFromSlots.kt +60 -60
- package/android/src/main/java/expo/modules/pytechui/ListItem/Slots/types.kt +42 -42
- package/android/src/main/java/expo/modules/pytechui/ListItem/_shared/Decorator/Decorator.kt +79 -79
- package/android/src/main/java/expo/modules/pytechui/ListItem/_shared/Decorator/Divider.kt +36 -36
- package/android/src/main/java/expo/modules/pytechui/ListItem/_shared/Decorator/utilsDecorator.kt +19 -19
- package/android/src/main/java/expo/modules/pytechui/ListItem/_shared/Dynamic/Dynamic.kt +163 -163
- package/android/src/main/java/expo/modules/pytechui/ListItem/_shared/Dynamic/Row.kt +136 -136
- package/android/src/main/java/expo/modules/pytechui/PytechUiModifiers.kt +93 -93
- package/android/src/main/java/expo/modules/pytechui/PytechUiModule.kt +168 -168
- package/android/src/main/java/expo/modules/pytechui/SearchBar.kt +213 -213
- package/android/src/main/java/expo/modules/pytechui/Section/SectionHost.kt +81 -81
- package/android/src/main/java/expo/modules/pytechui/Section/SectionHostView.kt +65 -65
- package/android/src/main/java/expo/modules/pytechui/TextField.kt +251 -251
- package/android/src/main/java/expo/modules/pytechui/TypographySlot/TypographySlotBridge.kt +120 -120
- package/android/src/main/java/expo/modules/pytechui/TypographySlot/constants.kt +47 -47
- package/android/src/main/java/expo/modules/pytechui/extended-theme/ExtendedThemeView.kt +19 -19
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Colors/ExtendedColorBridge.kt +76 -76
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Constants/Constants.kt +10 -10
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/AppBarLargeFlexibleTokens.kt +20 -20
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/AppBarLargeTokens.kt +19 -19
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/AppBarMediumFlexibleTokens.kt +20 -20
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/AppBarMediumTokens.kt +19 -19
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/AppBarSmallTokens.kt +19 -19
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/AppBarTokens.kt +23 -23
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/AssistChipTokens.kt +25 -25
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/BadgeTokens.kt +20 -20
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/BaselineButtonTokens.kt +26 -26
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/BottomAppBarTokens.kt +19 -19
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ButtonGroupSmallTokens.kt +20 -20
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ButtonLargeTokens.kt +24 -24
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ButtonMediumTokens.kt +24 -24
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ButtonSmallTokens.kt +24 -24
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ButtonXLargeTokens.kt +24 -24
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ButtonXSmallTokens.kt +24 -24
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/CheckboxTokens.kt +35 -35
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/CircularProgressIndicatorTokens.kt +25 -25
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ConnectedButtonGroupSmallTokens.kt +21 -21
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/DateInputModalTokens.kt +22 -22
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/DatePickerModalTokens.kt +33 -33
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/DialogTokens.kt +19 -19
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/DividerTokens.kt +19 -19
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/DockedToolbarTokens.kt +23 -23
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/DragHandleTokens.kt +25 -25
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ElevatedButtonTokens.kt +19 -19
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ElevatedCardTokens.kt +20 -20
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ElevationTokens.kt +24 -24
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ExpressiveMotionTokens.kt +28 -28
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ExtendedFabLargeTokens.kt +23 -23
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ExtendedFabMediumTokens.kt +24 -24
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ExtendedFabPrimaryTokens.kt +20 -20
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ExtendedFabSmallTokens.kt +23 -23
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FabBaselineTokens.kt +21 -21
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FabLargeTokens.kt +21 -21
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FabMediumTokens.kt +22 -22
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FabMenuBaselineTokens.kt +28 -28
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FabSmallTokens.kt +21 -21
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FilledAutocompleteTokens.kt +31 -31
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FilledButtonTokens.kt +19 -19
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FilledCardTokens.kt +20 -20
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FilledIconButtonTokens.kt +18 -18
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FilledTextFieldTokens.kt +31 -31
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FilledTonalButtonTokens.kt +23 -23
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FilledTonalIconButtonTokens.kt +18 -18
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FilterChipTokens.kt +28 -28
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FloatingToolbarTokens.kt +23 -23
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/IconButtonTokens.kt +17 -17
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/InputChipTokens.kt +30 -30
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/LargeIconButtonTokens.kt +27 -27
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/LinearProgressIndicatorTokens.kt +28 -28
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ListTokens.kt +57 -57
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/LoadingIndicatorTokens.kt +21 -21
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/MediumIconButtonTokens.kt +27 -27
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/MotionTokens.kt +44 -44
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/NavigationBarHorizontalItemTokens.kt +22 -22
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/NavigationBarTokens.kt +23 -23
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/NavigationBarVerticalItemTokens.kt +22 -22
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/NavigationDrawerTokens.kt +23 -23
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/NavigationRailBaselineItemTokens.kt +25 -25
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/NavigationRailCollapsedTokens.kt +23 -23
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/NavigationRailExpandedTokens.kt +22 -22
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/NavigationRailHorizontalItemTokens.kt +24 -24
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/NavigationRailVerticalItemTokens.kt +24 -24
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/OutlinedAutocompleteTokens.kt +30 -30
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/OutlinedButtonTokens.kt +19 -19
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/OutlinedCardTokens.kt +21 -21
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/OutlinedIconButtonTokens.kt +18 -18
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/OutlinedSegmentedButtonTokens.kt +24 -24
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/OutlinedTextFieldTokens.kt +31 -31
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/PrimaryNavigationTabTokens.kt +24 -24
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/RadioButtonTokens.kt +22 -22
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ScrimTokens.kt +17 -17
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SearchBarTokens.kt +20 -20
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SearchViewTokens.kt +20 -20
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SecondaryNavigationTabTokens.kt +21 -21
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SegmentedMenuTokens.kt +42 -42
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ShapeTokens.kt +74 -74
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SheetBottomTokens.kt +20 -20
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SliderTokens.kt +39 -39
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SmallIconButtonTokens.kt +27 -27
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SnackbarTokens.kt +21 -21
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SplitButtonLargeTokens.kt +26 -26
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SplitButtonMediumTokens.kt +26 -26
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SplitButtonSmallTokens.kt +26 -26
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SplitButtonXLargeTokens.kt +26 -26
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SplitButtonXSmallTokens.kt +27 -27
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/StandardMenuTokens.kt +25 -25
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/StandardMotionTokens.kt +27 -27
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/StateTokens.kt +20 -20
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SuggestionChipTokens.kt +25 -25
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SwitchTokens.kt +37 -37
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/TextButtonTokens.kt +18 -18
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/TimeInputTokens.kt +24 -24
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/TimePickerTokens.kt +30 -30
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/TonalButtonTokens.kt +19 -19
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/TypeScaleTokens.kt +72 -72
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/VibrantMenuTokens.kt +26 -26
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/XLargeIconButtonTokens.kt +27 -27
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/XSmallIconButtonTokens.kt +27 -27
- package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/index.kt +216 -216
- package/android/src/main/java/expo/modules/pytechui/extended-theme/index.kt +38 -38
- package/android/src/main/java/expo/modules/pytechui/utils/children.kt +126 -126
- package/android/src/main/java/expo/modules/pytechui/utils/modifiers.kt +44 -44
- package/build/constants/utils.d.ts +1 -1
- package/build/contexts/alert/components/Alert/index.js +16 -16
- package/build/contexts/alert/components/Button/index.js +5 -5
- package/build/contexts/alert/components/Provider/index.ios.js +2 -2
- package/build/contexts/alert/components/Provider/index.js +3 -3
- package/build/contexts/alert/context/provider.d.ts +1 -1
- package/build/contexts/alert/context/provider.js +1 -1
- package/build/contexts/app/context.d.ts +1 -1
- package/build/contexts/app/context.js +15 -15
- package/build/contexts/app/index.d.ts +2 -2
- package/build/contexts/app/index.js +2 -2
- package/build/contexts/app/src/Head/index.d.ts +1 -1
- package/build/contexts/app/src/Head/index.web.js +12 -12
- package/build/contexts/app/src/Wrapper/index.d.ts +1 -1
- package/build/contexts/app/src/Wrapper/index.js +2 -2
- package/build/contexts/app/src/styles.css +16 -16
- package/build/contexts/app/types.d.ts +1 -1
- package/build/contexts/router/index.d.ts +1 -1
- package/build/contexts/router/index.js +3 -3
- package/build/jetpack-compose/components/Columns/CommonColumn/index.js +2 -2
- package/build/jetpack-compose/components/Columns/CommonColumn/types.d.ts +1 -1
- package/build/jetpack-compose/components/Columns/CommonColumn/utils.d.ts +1 -1
- package/build/jetpack-compose/components/Columns/CommonColumn/utils.js +1 -1
- package/build/jetpack-compose/components/DropdownMenu/index.d.ts +1 -1
- package/build/jetpack-compose/components/DropdownMenu/index.js +3 -3
- package/build/jetpack-compose/components/DropdownPicker/Picker.d.ts +3 -3
- package/build/jetpack-compose/components/DropdownPicker/Picker.js +24 -24
- package/build/jetpack-compose/components/DropdownPicker/PickerItem.js +5 -5
- package/build/jetpack-compose/components/DropdownPicker/context.d.ts +4 -10
- package/build/jetpack-compose/components/ForEach/src/ForEach.d.ts +1 -1
- package/build/jetpack-compose/components/ForEach/src/ForEach.js +5 -5
- package/build/jetpack-compose/components/ForEach/src/ListItem.d.ts +1 -1
- package/build/jetpack-compose/components/ForEach/src/types.d.ts +1 -1
- package/build/jetpack-compose/components/Gradient/Gradient.js +1 -1
- package/build/jetpack-compose/components/Gradient/types.d.ts +1 -1
- package/build/jetpack-compose/components/Icon/Icon/Icon.js +1 -1
- package/build/jetpack-compose/components/Icon/index.d.ts +1 -1
- package/build/jetpack-compose/components/IconSection/IconSection.js +19 -19
- package/build/jetpack-compose/components/IconSection/types.d.ts +1 -1
- package/build/jetpack-compose/components/IconSection/utils.js +1 -1
- package/build/jetpack-compose/components/List/CommonColumn.js +3 -3
- package/build/jetpack-compose/components/List/index.d.ts +1 -1
- package/build/jetpack-compose/components/List/index.js +11 -11
- package/build/jetpack-compose/components/ListItem/SlotListItem.d.ts +2 -2
- package/build/jetpack-compose/components/ListItem/SlotListItem.js +9 -9
- package/build/jetpack-compose/components/Menu/src/components/Divider.js +2 -2
- package/build/jetpack-compose/components/Menu/src/components/Icon.d.ts +1 -1
- package/build/jetpack-compose/components/Menu/src/components/Icon.js +1 -1
- package/build/jetpack-compose/components/Menu/src/components/Item.d.ts +2 -3
- package/build/jetpack-compose/components/Menu/src/components/Item.js +26 -26
- package/build/jetpack-compose/components/Menu/src/components/Label.d.ts +4 -1
- package/build/jetpack-compose/components/Menu/src/components/Label.js +3 -3
- package/build/jetpack-compose/components/Menu/src/components/Menu.d.ts +2 -2
- package/build/jetpack-compose/components/Menu/src/components/Menu.js +26 -26
- package/build/jetpack-compose/components/Menu/src/components/Trigger.js +7 -7
- package/build/jetpack-compose/components/Menu/src/context.d.ts +8 -6
- package/build/jetpack-compose/components/Menu/src/utils.js +3 -3
- package/build/jetpack-compose/components/PagePicker/Item.js +11 -11
- package/build/jetpack-compose/components/PagePicker/Picker.js +5 -5
- package/build/jetpack-compose/components/PagePicker/context/index.d.ts +1 -1
- package/build/jetpack-compose/components/PagePicker/context/index.js +8 -8
- package/build/jetpack-compose/components/PullToRefreshBox.js +1 -1
- package/build/jetpack-compose/components/SearchBar.d.ts +1 -1
- package/build/jetpack-compose/components/SearchBar.js +1 -1
- package/build/jetpack-compose/components/Section/components/Column.d.ts +1 -1
- package/build/jetpack-compose/components/Section/components/Column.js +3 -3
- package/build/jetpack-compose/components/Section/components/Section.js +18 -18
- package/build/jetpack-compose/components/Section/components/Slot.d.ts +1 -1
- package/build/jetpack-compose/components/Section/components/Slot.js +3 -3
- package/build/jetpack-compose/components/SectionHost/index.d.ts +1 -1
- package/build/jetpack-compose/components/SectionHost/index.js +3 -3
- package/build/jetpack-compose/components/TextField.d.ts +1 -1
- package/build/jetpack-compose/components/TextField.js +1 -1
- package/build/jetpack-compose/components/TextSlot.js +2 -3
- package/build/jetpack-compose/extended-theme/assets/Colors/index.js +2 -2
- package/build/jetpack-compose/modifiers/flexWeight.d.ts +1 -1
- package/build/jetpack-compose/modifiers/heightIn.d.ts +1 -1
- package/build/swift-ui/Image.js +2 -2
- package/build/swift-ui/ListItem.js +2 -2
- package/build/swift-ui/Slot.js +2 -2
- package/build/swift-ui/Text.js +2 -2
- package/build/universal/Column/index.android.js +2 -2
- package/build/universal/Column/index.ios.js +2 -2
- package/build/universal/Column/index.js +2 -2
- package/build/universal/Host/index.ios.js +2 -2
- package/build/universal/Row/index.android.js +2 -2
- package/build/universal/Row/index.ios.js +2 -2
- package/build/universal/Row/index.js +2 -2
- package/expo-module.config.json +11 -11
- package/ios/ChevronForwardView.swift +21 -21
- package/ios/GradientView.swift +40 -40
- package/ios/ImageView.swift +32 -32
- package/ios/ListItem.swift +161 -161
- package/ios/PytechUi.podspec +24 -24
- package/ios/PytechUiModule.swift +15 -15
- package/ios/SlotView.swift +107 -107
- package/ios/_shared/utils.swift +58 -58
- package/package.json +19 -15
|
@@ -1,136 +1,136 @@
|
|
|
1
|
-
package expo.modules.pytechui.ListItem
|
|
2
|
-
|
|
3
|
-
import androidx.compose.foundation.layout.Box
|
|
4
|
-
import androidx.compose.foundation.layout.fillMaxWidth
|
|
5
|
-
import androidx.compose.foundation.layout.wrapContentWidth
|
|
6
|
-
import androidx.compose.runtime.Composable
|
|
7
|
-
import androidx.compose.ui.Alignment
|
|
8
|
-
import androidx.compose.ui.Modifier
|
|
9
|
-
import androidx.compose.ui.layout.SubcomposeLayout
|
|
10
|
-
import androidx.compose.ui.unit.Constraints
|
|
11
|
-
import androidx.compose.ui.unit.Dp
|
|
12
|
-
import kotlin.math.max
|
|
13
|
-
|
|
14
|
-
import expo.modules.pytechui.theme.tokens.ListTokens
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Headline + trailing en una fila.
|
|
20
|
-
*
|
|
21
|
-
* - Caben con ancho natural: headline al inicio, trailing al final.
|
|
22
|
-
* - No caben: el que no supera la mitad queda en su ancho natural; el otro ocupa el resto.
|
|
23
|
-
* - Si ambos superan la mitad: reparto 50/50.
|
|
24
|
-
*/
|
|
25
|
-
|
|
26
|
-
@Composable
|
|
27
|
-
internal fun DynamicRow(
|
|
28
|
-
modifier: Modifier = Modifier,
|
|
29
|
-
spacing: Dp = ListTokens.ItemBetweenSpace,
|
|
30
|
-
first: @Composable () -> Unit,
|
|
31
|
-
second: @Composable () -> Unit,
|
|
32
|
-
) {
|
|
33
|
-
SubcomposeLayout(
|
|
34
|
-
modifier = modifier.fillMaxWidth(),
|
|
35
|
-
) { constraints ->
|
|
36
|
-
val spacingPx = spacing.roundToPx()
|
|
37
|
-
val maxWidth = constraints.maxWidth
|
|
38
|
-
|
|
39
|
-
val naturalConstraints = Constraints(
|
|
40
|
-
minWidth = 0,
|
|
41
|
-
maxWidth = maxWidth,
|
|
42
|
-
minHeight = 0,
|
|
43
|
-
maxHeight = constraints.maxHeight,
|
|
44
|
-
)
|
|
45
|
-
|
|
46
|
-
val firstNatural = subcompose(Slot.FirstMeasure) {
|
|
47
|
-
Box(Modifier.wrapContentWidth(Alignment.Start)) { first() }
|
|
48
|
-
}.first().measure(naturalConstraints)
|
|
49
|
-
|
|
50
|
-
val secondNatural = subcompose(Slot.SecondMeasure) {
|
|
51
|
-
Box(Modifier.wrapContentWidth(Alignment.End)) { second() }
|
|
52
|
-
}.first().measure(naturalConstraints)
|
|
53
|
-
|
|
54
|
-
val needsSplit = firstNatural.width + spacingPx + secondNatural.width > maxWidth
|
|
55
|
-
|
|
56
|
-
if (needsSplit) {
|
|
57
|
-
val available = max(0, maxWidth - spacingPx)
|
|
58
|
-
val halfWidth = available / 2
|
|
59
|
-
val firstExceedsHalf = firstNatural.width > halfWidth
|
|
60
|
-
val secondExceedsHalf = secondNatural.width > halfWidth
|
|
61
|
-
|
|
62
|
-
val firstWidth: Int
|
|
63
|
-
val secondWidth: Int
|
|
64
|
-
when {
|
|
65
|
-
firstExceedsHalf && !secondExceedsHalf -> {
|
|
66
|
-
secondWidth = secondNatural.width
|
|
67
|
-
firstWidth = available - secondWidth
|
|
68
|
-
}
|
|
69
|
-
secondExceedsHalf && !firstExceedsHalf -> {
|
|
70
|
-
firstWidth = firstNatural.width
|
|
71
|
-
secondWidth = available - firstWidth
|
|
72
|
-
}
|
|
73
|
-
else -> {
|
|
74
|
-
firstWidth = halfWidth
|
|
75
|
-
secondWidth = halfWidth
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
val firstConstraints = Constraints(
|
|
80
|
-
minWidth = firstWidth,
|
|
81
|
-
maxWidth = firstWidth,
|
|
82
|
-
minHeight = 0,
|
|
83
|
-
maxHeight = constraints.maxHeight,
|
|
84
|
-
)
|
|
85
|
-
val secondConstraints = Constraints(
|
|
86
|
-
minWidth = secondWidth,
|
|
87
|
-
maxWidth = secondWidth,
|
|
88
|
-
minHeight = 0,
|
|
89
|
-
maxHeight = constraints.maxHeight,
|
|
90
|
-
)
|
|
91
|
-
|
|
92
|
-
val firstSplit = subcompose(Slot.FirstSplit) {
|
|
93
|
-
Box(
|
|
94
|
-
modifier = Modifier.fillMaxWidth(),
|
|
95
|
-
contentAlignment = Alignment.CenterStart,
|
|
96
|
-
) {
|
|
97
|
-
first()
|
|
98
|
-
}
|
|
99
|
-
}.first().measure(firstConstraints)
|
|
100
|
-
|
|
101
|
-
val secondSplit = subcompose(Slot.SecondSplit) {
|
|
102
|
-
Box(
|
|
103
|
-
modifier = Modifier.fillMaxWidth(),
|
|
104
|
-
contentAlignment = Alignment.CenterEnd,
|
|
105
|
-
) {
|
|
106
|
-
second()
|
|
107
|
-
}
|
|
108
|
-
}.first().measure(secondConstraints)
|
|
109
|
-
|
|
110
|
-
val height = max(firstSplit.height, secondSplit.height).coerceAtLeast(constraints.minHeight)
|
|
111
|
-
|
|
112
|
-
layout(maxWidth, height) {
|
|
113
|
-
val firstY = (height - firstSplit.height) / 2
|
|
114
|
-
val secondY = (height - secondSplit.height) / 2
|
|
115
|
-
firstSplit.placeRelative(0, firstY)
|
|
116
|
-
secondSplit.placeRelative(firstWidth + spacingPx, secondY)
|
|
117
|
-
}
|
|
118
|
-
} else {
|
|
119
|
-
val height = max(firstNatural.height, secondNatural.height).coerceAtLeast(constraints.minHeight)
|
|
120
|
-
|
|
121
|
-
layout(maxWidth, height) {
|
|
122
|
-
val firstY = (height - firstNatural.height) / 2
|
|
123
|
-
val secondY = (height - secondNatural.height) / 2
|
|
124
|
-
firstNatural.placeRelative(0, firstY)
|
|
125
|
-
secondNatural.placeRelative(maxWidth - secondNatural.width, secondY)
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
private enum class Slot {
|
|
132
|
-
FirstMeasure,
|
|
133
|
-
SecondMeasure,
|
|
134
|
-
FirstSplit,
|
|
135
|
-
SecondSplit,
|
|
136
|
-
}
|
|
1
|
+
package expo.modules.pytechui.ListItem
|
|
2
|
+
|
|
3
|
+
import androidx.compose.foundation.layout.Box
|
|
4
|
+
import androidx.compose.foundation.layout.fillMaxWidth
|
|
5
|
+
import androidx.compose.foundation.layout.wrapContentWidth
|
|
6
|
+
import androidx.compose.runtime.Composable
|
|
7
|
+
import androidx.compose.ui.Alignment
|
|
8
|
+
import androidx.compose.ui.Modifier
|
|
9
|
+
import androidx.compose.ui.layout.SubcomposeLayout
|
|
10
|
+
import androidx.compose.ui.unit.Constraints
|
|
11
|
+
import androidx.compose.ui.unit.Dp
|
|
12
|
+
import kotlin.math.max
|
|
13
|
+
|
|
14
|
+
import expo.modules.pytechui.theme.tokens.ListTokens
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Headline + trailing en una fila.
|
|
20
|
+
*
|
|
21
|
+
* - Caben con ancho natural: headline al inicio, trailing al final.
|
|
22
|
+
* - No caben: el que no supera la mitad queda en su ancho natural; el otro ocupa el resto.
|
|
23
|
+
* - Si ambos superan la mitad: reparto 50/50.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
@Composable
|
|
27
|
+
internal fun DynamicRow(
|
|
28
|
+
modifier: Modifier = Modifier,
|
|
29
|
+
spacing: Dp = ListTokens.ItemBetweenSpace,
|
|
30
|
+
first: @Composable () -> Unit,
|
|
31
|
+
second: @Composable () -> Unit,
|
|
32
|
+
) {
|
|
33
|
+
SubcomposeLayout(
|
|
34
|
+
modifier = modifier.fillMaxWidth(),
|
|
35
|
+
) { constraints ->
|
|
36
|
+
val spacingPx = spacing.roundToPx()
|
|
37
|
+
val maxWidth = constraints.maxWidth
|
|
38
|
+
|
|
39
|
+
val naturalConstraints = Constraints(
|
|
40
|
+
minWidth = 0,
|
|
41
|
+
maxWidth = maxWidth,
|
|
42
|
+
minHeight = 0,
|
|
43
|
+
maxHeight = constraints.maxHeight,
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
val firstNatural = subcompose(Slot.FirstMeasure) {
|
|
47
|
+
Box(Modifier.wrapContentWidth(Alignment.Start)) { first() }
|
|
48
|
+
}.first().measure(naturalConstraints)
|
|
49
|
+
|
|
50
|
+
val secondNatural = subcompose(Slot.SecondMeasure) {
|
|
51
|
+
Box(Modifier.wrapContentWidth(Alignment.End)) { second() }
|
|
52
|
+
}.first().measure(naturalConstraints)
|
|
53
|
+
|
|
54
|
+
val needsSplit = firstNatural.width + spacingPx + secondNatural.width > maxWidth
|
|
55
|
+
|
|
56
|
+
if (needsSplit) {
|
|
57
|
+
val available = max(0, maxWidth - spacingPx)
|
|
58
|
+
val halfWidth = available / 2
|
|
59
|
+
val firstExceedsHalf = firstNatural.width > halfWidth
|
|
60
|
+
val secondExceedsHalf = secondNatural.width > halfWidth
|
|
61
|
+
|
|
62
|
+
val firstWidth: Int
|
|
63
|
+
val secondWidth: Int
|
|
64
|
+
when {
|
|
65
|
+
firstExceedsHalf && !secondExceedsHalf -> {
|
|
66
|
+
secondWidth = secondNatural.width
|
|
67
|
+
firstWidth = available - secondWidth
|
|
68
|
+
}
|
|
69
|
+
secondExceedsHalf && !firstExceedsHalf -> {
|
|
70
|
+
firstWidth = firstNatural.width
|
|
71
|
+
secondWidth = available - firstWidth
|
|
72
|
+
}
|
|
73
|
+
else -> {
|
|
74
|
+
firstWidth = halfWidth
|
|
75
|
+
secondWidth = halfWidth
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
val firstConstraints = Constraints(
|
|
80
|
+
minWidth = firstWidth,
|
|
81
|
+
maxWidth = firstWidth,
|
|
82
|
+
minHeight = 0,
|
|
83
|
+
maxHeight = constraints.maxHeight,
|
|
84
|
+
)
|
|
85
|
+
val secondConstraints = Constraints(
|
|
86
|
+
minWidth = secondWidth,
|
|
87
|
+
maxWidth = secondWidth,
|
|
88
|
+
minHeight = 0,
|
|
89
|
+
maxHeight = constraints.maxHeight,
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
val firstSplit = subcompose(Slot.FirstSplit) {
|
|
93
|
+
Box(
|
|
94
|
+
modifier = Modifier.fillMaxWidth(),
|
|
95
|
+
contentAlignment = Alignment.CenterStart,
|
|
96
|
+
) {
|
|
97
|
+
first()
|
|
98
|
+
}
|
|
99
|
+
}.first().measure(firstConstraints)
|
|
100
|
+
|
|
101
|
+
val secondSplit = subcompose(Slot.SecondSplit) {
|
|
102
|
+
Box(
|
|
103
|
+
modifier = Modifier.fillMaxWidth(),
|
|
104
|
+
contentAlignment = Alignment.CenterEnd,
|
|
105
|
+
) {
|
|
106
|
+
second()
|
|
107
|
+
}
|
|
108
|
+
}.first().measure(secondConstraints)
|
|
109
|
+
|
|
110
|
+
val height = max(firstSplit.height, secondSplit.height).coerceAtLeast(constraints.minHeight)
|
|
111
|
+
|
|
112
|
+
layout(maxWidth, height) {
|
|
113
|
+
val firstY = (height - firstSplit.height) / 2
|
|
114
|
+
val secondY = (height - secondSplit.height) / 2
|
|
115
|
+
firstSplit.placeRelative(0, firstY)
|
|
116
|
+
secondSplit.placeRelative(firstWidth + spacingPx, secondY)
|
|
117
|
+
}
|
|
118
|
+
} else {
|
|
119
|
+
val height = max(firstNatural.height, secondNatural.height).coerceAtLeast(constraints.minHeight)
|
|
120
|
+
|
|
121
|
+
layout(maxWidth, height) {
|
|
122
|
+
val firstY = (height - firstNatural.height) / 2
|
|
123
|
+
val secondY = (height - secondNatural.height) / 2
|
|
124
|
+
firstNatural.placeRelative(0, firstY)
|
|
125
|
+
secondNatural.placeRelative(maxWidth - secondNatural.width, secondY)
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
private enum class Slot {
|
|
132
|
+
FirstMeasure,
|
|
133
|
+
SecondMeasure,
|
|
134
|
+
FirstSplit,
|
|
135
|
+
SecondSplit,
|
|
136
|
+
}
|
|
@@ -1,94 +1,94 @@
|
|
|
1
|
-
package expo.modules.pytechui
|
|
2
|
-
|
|
3
|
-
import android.graphics.Color as AndroidColor
|
|
4
|
-
import androidx.compose.foundation.layout.heightIn
|
|
5
|
-
import androidx.compose.ui.Modifier
|
|
6
|
-
import androidx.compose.ui.draw.drawBehind
|
|
7
|
-
import androidx.compose.ui.geometry.Offset
|
|
8
|
-
import androidx.compose.ui.graphics.Brush
|
|
9
|
-
import androidx.compose.ui.graphics.Color as ComposeColor
|
|
10
|
-
import androidx.compose.ui.platform.LocalConfiguration
|
|
11
|
-
import androidx.compose.ui.unit.Dp
|
|
12
|
-
import androidx.compose.ui.unit.dp
|
|
13
|
-
import expo.modules.ui.ModifierRegistry
|
|
14
|
-
import expo.modules.ui.columnScope
|
|
15
|
-
import expo.modules.ui.rowScope
|
|
16
|
-
|
|
17
|
-
private fun normalizeColorString(s: String): String {
|
|
18
|
-
val t = s.trim()
|
|
19
|
-
return if (t.startsWith("#")) t else "#$t"
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Registra modificadores extra para Jetpack Compose (p. ej. degradados con [Brush]).
|
|
24
|
-
* Debe llamarse al crear el módulo nativo; [ModifierRegistry] es el mismo que usa @expo/ui.
|
|
25
|
-
*/
|
|
26
|
-
fun registerModifiers() {
|
|
27
|
-
|
|
28
|
-
// --------------------------- backgroundLinearGradient---------------------------
|
|
29
|
-
|
|
30
|
-
ModifierRegistry.register("backgroundLinearGradient") { map, _, _, _ ->
|
|
31
|
-
val raw = map["colors"] as? List<*> ?: return@register Modifier
|
|
32
|
-
val composeColors = raw.mapNotNull { item ->
|
|
33
|
-
val hex = (item as? String)?.trim()?.takeIf { it.isNotEmpty() } ?: return@mapNotNull null
|
|
34
|
-
runCatching {
|
|
35
|
-
val argb = AndroidColor.parseColor(normalizeColorString(hex))
|
|
36
|
-
ComposeColor(argb)
|
|
37
|
-
}.getOrNull()
|
|
38
|
-
}
|
|
39
|
-
if (composeColors.size < 2) return@register Modifier
|
|
40
|
-
|
|
41
|
-
val sx = (map["startX"] as? Number)?.toFloat() ?: 0f
|
|
42
|
-
val sy = (map["startY"] as? Number)?.toFloat() ?: 0f
|
|
43
|
-
val ex = (map["endX"] as? Number)?.toFloat() ?: 0f
|
|
44
|
-
val ey = (map["endY"] as? Number)?.toFloat() ?: 1f
|
|
45
|
-
|
|
46
|
-
Modifier.drawBehind {
|
|
47
|
-
val brush = Brush.linearGradient(
|
|
48
|
-
colors = composeColors,
|
|
49
|
-
start = Offset(size.width * sx, size.height * sy),
|
|
50
|
-
end = Offset(size.width * ex, size.height * ey)
|
|
51
|
-
)
|
|
52
|
-
drawRect(brush = brush, size = size)
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// --------------------------- heightIn ------------------------------------------
|
|
57
|
-
|
|
58
|
-
ModifierRegistry.register("heightIn") { map, _, _, _ ->
|
|
59
|
-
val minDp = (map["min"] as? Number)?.toFloat()
|
|
60
|
-
val maxDp = (map["max"] as? Number)?.toFloat()
|
|
61
|
-
val minFraction = (map["minFraction"] as? Number)?.toFloat()
|
|
62
|
-
val maxFraction = (map["maxFraction"] as? Number)?.toFloat()
|
|
63
|
-
|
|
64
|
-
val screenHeightDp = LocalConfiguration.current.screenHeightDp.toFloat()
|
|
65
|
-
|
|
66
|
-
val resolvedMin = when {
|
|
67
|
-
minDp != null -> minDp.dp
|
|
68
|
-
minFraction != null -> (screenHeightDp * minFraction).dp
|
|
69
|
-
else -> Dp.Unspecified
|
|
70
|
-
}
|
|
71
|
-
val resolvedMax = when {
|
|
72
|
-
maxFraction != null -> (screenHeightDp * maxFraction).dp
|
|
73
|
-
maxDp != null -> maxDp.dp
|
|
74
|
-
else -> Dp.Unspecified
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
Modifier.heightIn(min = resolvedMin, max = resolvedMax)
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
// --------------------------- flexWeight ----------------------------------------
|
|
81
|
-
|
|
82
|
-
ModifierRegistry.register("flexWeight") { map, scope, _, _ ->
|
|
83
|
-
val weight = (map["weight"] as? Number)?.toFloat() ?: 1f
|
|
84
|
-
val fill = map["fill"] as? Boolean ?: false
|
|
85
|
-
|
|
86
|
-
scope?.rowScope?.run {
|
|
87
|
-
Modifier.weight(weight, fill = fill)
|
|
88
|
-
} ?: scope?.columnScope?.run {
|
|
89
|
-
Modifier.weight(weight, fill = fill)
|
|
90
|
-
} ?: Modifier
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
// -------------------------------------------------------------------------------
|
|
1
|
+
package expo.modules.pytechui
|
|
2
|
+
|
|
3
|
+
import android.graphics.Color as AndroidColor
|
|
4
|
+
import androidx.compose.foundation.layout.heightIn
|
|
5
|
+
import androidx.compose.ui.Modifier
|
|
6
|
+
import androidx.compose.ui.draw.drawBehind
|
|
7
|
+
import androidx.compose.ui.geometry.Offset
|
|
8
|
+
import androidx.compose.ui.graphics.Brush
|
|
9
|
+
import androidx.compose.ui.graphics.Color as ComposeColor
|
|
10
|
+
import androidx.compose.ui.platform.LocalConfiguration
|
|
11
|
+
import androidx.compose.ui.unit.Dp
|
|
12
|
+
import androidx.compose.ui.unit.dp
|
|
13
|
+
import expo.modules.ui.ModifierRegistry
|
|
14
|
+
import expo.modules.ui.columnScope
|
|
15
|
+
import expo.modules.ui.rowScope
|
|
16
|
+
|
|
17
|
+
private fun normalizeColorString(s: String): String {
|
|
18
|
+
val t = s.trim()
|
|
19
|
+
return if (t.startsWith("#")) t else "#$t"
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Registra modificadores extra para Jetpack Compose (p. ej. degradados con [Brush]).
|
|
24
|
+
* Debe llamarse al crear el módulo nativo; [ModifierRegistry] es el mismo que usa @expo/ui.
|
|
25
|
+
*/
|
|
26
|
+
fun registerModifiers() {
|
|
27
|
+
|
|
28
|
+
// --------------------------- backgroundLinearGradient---------------------------
|
|
29
|
+
|
|
30
|
+
ModifierRegistry.register("backgroundLinearGradient") { map, _, _, _ ->
|
|
31
|
+
val raw = map["colors"] as? List<*> ?: return@register Modifier
|
|
32
|
+
val composeColors = raw.mapNotNull { item ->
|
|
33
|
+
val hex = (item as? String)?.trim()?.takeIf { it.isNotEmpty() } ?: return@mapNotNull null
|
|
34
|
+
runCatching {
|
|
35
|
+
val argb = AndroidColor.parseColor(normalizeColorString(hex))
|
|
36
|
+
ComposeColor(argb)
|
|
37
|
+
}.getOrNull()
|
|
38
|
+
}
|
|
39
|
+
if (composeColors.size < 2) return@register Modifier
|
|
40
|
+
|
|
41
|
+
val sx = (map["startX"] as? Number)?.toFloat() ?: 0f
|
|
42
|
+
val sy = (map["startY"] as? Number)?.toFloat() ?: 0f
|
|
43
|
+
val ex = (map["endX"] as? Number)?.toFloat() ?: 0f
|
|
44
|
+
val ey = (map["endY"] as? Number)?.toFloat() ?: 1f
|
|
45
|
+
|
|
46
|
+
Modifier.drawBehind {
|
|
47
|
+
val brush = Brush.linearGradient(
|
|
48
|
+
colors = composeColors,
|
|
49
|
+
start = Offset(size.width * sx, size.height * sy),
|
|
50
|
+
end = Offset(size.width * ex, size.height * ey)
|
|
51
|
+
)
|
|
52
|
+
drawRect(brush = brush, size = size)
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// --------------------------- heightIn ------------------------------------------
|
|
57
|
+
|
|
58
|
+
ModifierRegistry.register("heightIn") { map, _, _, _ ->
|
|
59
|
+
val minDp = (map["min"] as? Number)?.toFloat()
|
|
60
|
+
val maxDp = (map["max"] as? Number)?.toFloat()
|
|
61
|
+
val minFraction = (map["minFraction"] as? Number)?.toFloat()
|
|
62
|
+
val maxFraction = (map["maxFraction"] as? Number)?.toFloat()
|
|
63
|
+
|
|
64
|
+
val screenHeightDp = LocalConfiguration.current.screenHeightDp.toFloat()
|
|
65
|
+
|
|
66
|
+
val resolvedMin = when {
|
|
67
|
+
minDp != null -> minDp.dp
|
|
68
|
+
minFraction != null -> (screenHeightDp * minFraction).dp
|
|
69
|
+
else -> Dp.Unspecified
|
|
70
|
+
}
|
|
71
|
+
val resolvedMax = when {
|
|
72
|
+
maxFraction != null -> (screenHeightDp * maxFraction).dp
|
|
73
|
+
maxDp != null -> maxDp.dp
|
|
74
|
+
else -> Dp.Unspecified
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
Modifier.heightIn(min = resolvedMin, max = resolvedMax)
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// --------------------------- flexWeight ----------------------------------------
|
|
81
|
+
|
|
82
|
+
ModifierRegistry.register("flexWeight") { map, scope, _, _ ->
|
|
83
|
+
val weight = (map["weight"] as? Number)?.toFloat() ?: 1f
|
|
84
|
+
val fill = map["fill"] as? Boolean ?: false
|
|
85
|
+
|
|
86
|
+
scope?.rowScope?.run {
|
|
87
|
+
Modifier.weight(weight, fill = fill)
|
|
88
|
+
} ?: scope?.columnScope?.run {
|
|
89
|
+
Modifier.weight(weight, fill = fill)
|
|
90
|
+
} ?: Modifier
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// -------------------------------------------------------------------------------
|
|
94
94
|
}
|