@tamagui/group 1.74.3 → 1.74.5

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.
@@ -0,0 +1,181 @@
1
+ import {
2
+ getConfig,
3
+ getExpandedShorthands,
4
+ getTokens,
5
+ getVariableValue,
6
+ isTamaguiElement,
7
+ mergeProps,
8
+ spacedChildren,
9
+ styled,
10
+ useProps,
11
+ withStaticProperties
12
+ } from "@tamagui/core";
13
+ import { createContextScope } from "@tamagui/create-context";
14
+ import { ThemeableStack } from "@tamagui/stacks";
15
+ import { useControllableState } from "@tamagui/use-controllable-state";
16
+ import React, { Children, forwardRef, isValidElement } from "react";
17
+ import { ScrollView } from "react-native";
18
+ import { useIndex, useIndexedChildren } from "reforest";
19
+ import { jsx } from "react/jsx-runtime";
20
+ const GROUP_NAME = "Group", [createGroupContext, createGroupScope] = createContextScope(GROUP_NAME), [GroupProvider, useGroupContext] = createGroupContext(GROUP_NAME), GroupFrame = styled(ThemeableStack, {
21
+ name: "GroupFrame",
22
+ variants: {
23
+ unstyled: {
24
+ false: {
25
+ size: "$true"
26
+ }
27
+ },
28
+ size: (val, { tokens }) => ({
29
+ borderRadius: tokens.radius[val] ?? val ?? tokens.radius.$true
30
+ })
31
+ },
32
+ defaultVariants: {
33
+ unstyled: !1
34
+ }
35
+ });
36
+ function createGroup(verticalDefault) {
37
+ return withStaticProperties(
38
+ forwardRef((props, ref) => {
39
+ const activeProps = useProps(props), {
40
+ __scopeGroup,
41
+ children: childrenProp,
42
+ space,
43
+ size = "$true",
44
+ spaceDirection,
45
+ separator,
46
+ scrollable,
47
+ axis = verticalDefault ? "vertical" : "horizontal",
48
+ orientation = axis,
49
+ disabled: disabledProp,
50
+ disablePassBorderRadius: disablePassBorderRadiusProp,
51
+ borderRadius,
52
+ forceUseItem,
53
+ ...restProps
54
+ } = getExpandedShorthands(activeProps), vertical = orientation === "vertical", [itemChildrenCount, setItemChildrenCount] = useControllableState({
55
+ defaultProp: forceUseItem ? 1 : 0
56
+ }), isUsingItems = itemChildrenCount > 0, radius = borderRadius ?? (size ? getVariableValue(getTokens().radius[size]) - 1 : void 0), disablePassBorderRadius = disablePassBorderRadiusProp ?? !(radius !== void 0), childrenArray = Children.toArray(childrenProp), children = isUsingItems ? Children.toArray(childrenProp).filter(isValidElement) : childrenArray.map((child, i) => {
57
+ if (!isValidElement(child))
58
+ return child;
59
+ const disabled = child.props.disabled ?? disabledProp, isFirst = i === 0, isLast = i === childrenArray.length - 1, radiusStyles = disablePassBorderRadius === !0 ? null : getBorderRadius({
60
+ isFirst,
61
+ isLast,
62
+ radius,
63
+ vertical,
64
+ disable: disablePassBorderRadius
65
+ }), props2 = {
66
+ disabled,
67
+ ...isTamaguiElement(child) ? radiusStyles : { style: radiusStyles }
68
+ };
69
+ return cloneElementWithPropOrder(child, props2);
70
+ }), indexedChildren = useIndexedChildren(
71
+ spacedChildren({
72
+ direction: spaceDirection,
73
+ separator,
74
+ // @ts-ignore
75
+ space,
76
+ children
77
+ })
78
+ ), onItemMount = React.useCallback(
79
+ () => setItemChildrenCount((prev) => prev + 1),
80
+ []
81
+ ), onItemUnmount = React.useCallback(
82
+ () => setItemChildrenCount((prev) => prev - 1),
83
+ []
84
+ );
85
+ return /* @__PURE__ */ jsx(
86
+ GroupProvider,
87
+ {
88
+ disablePassBorderRadius,
89
+ vertical: orientation === "vertical",
90
+ radius,
91
+ disabled: disabledProp,
92
+ onItemMount,
93
+ onItemUnmount,
94
+ scope: __scopeGroup,
95
+ children: /* @__PURE__ */ jsx(
96
+ GroupFrame,
97
+ {
98
+ ref,
99
+ size,
100
+ flexDirection: orientation === "horizontal" ? "row" : "column",
101
+ borderRadius,
102
+ ...restProps,
103
+ children: wrapScroll({ ...activeProps, orientation }, indexedChildren)
104
+ }
105
+ )
106
+ }
107
+ );
108
+ }),
109
+ {
110
+ Item: GroupItem
111
+ }
112
+ );
113
+ }
114
+ const GroupItem = (props) => {
115
+ const { __scopeGroup, children, forcePlacement } = props, groupItemProps = useGroupItem(
116
+ { disabled: isValidElement(children) ? children.props.disabled : void 0 },
117
+ forcePlacement,
118
+ __scopeGroup
119
+ );
120
+ return isValidElement(children) ? isTamaguiElement(children) ? React.cloneElement(children, groupItemProps) : React.cloneElement(children, {
121
+ style: {
122
+ ...children.props?.style,
123
+ ...groupItemProps
124
+ }
125
+ }) : children;
126
+ }, useGroupItem = (childrenProps, forcePlacement, __scopeGroup) => {
127
+ const treeIndex = useIndex(), context = useGroupContext("GroupItem", __scopeGroup);
128
+ if (React.useEffect(() => (context.onItemMount(), () => {
129
+ context.onItemUnmount();
130
+ }), []), !treeIndex)
131
+ throw Error("<Group.Item/> should only be used within a <Group/>");
132
+ const isFirst = forcePlacement === "first" || forcePlacement !== "last" && treeIndex.index === 0, isLast = forcePlacement === "last" || forcePlacement !== "first" && treeIndex.index === treeIndex.maxIndex;
133
+ let propsToPass = {
134
+ disabled: childrenProps.disabled ?? context.disabled
135
+ };
136
+ if (context.disablePassBorderRadius !== !0) {
137
+ const borderRadius = getBorderRadius({
138
+ radius: context.radius,
139
+ isFirst,
140
+ isLast,
141
+ vertical: context.vertical,
142
+ disable: context.disablePassBorderRadius
143
+ });
144
+ return { ...propsToPass, ...borderRadius };
145
+ }
146
+ return propsToPass;
147
+ }, Group = createGroup(!0), YGroup = Group, XGroup = createGroup(!1), wrapScroll = ({ scrollable, orientation, showScrollIndicator = !1 }, children) => scrollable ? /* @__PURE__ */ jsx(
148
+ ScrollView,
149
+ {
150
+ ...orientation === "vertical" && {
151
+ showsVerticalScrollIndicator: showScrollIndicator
152
+ },
153
+ ...orientation === "horizontal" && {
154
+ horizontal: !0,
155
+ showsHorizontalScrollIndicator: showScrollIndicator
156
+ },
157
+ children
158
+ }
159
+ ) : children, getBorderRadius = ({
160
+ isFirst,
161
+ isLast,
162
+ radius,
163
+ vertical,
164
+ disable
165
+ }) => ({
166
+ borderTopLeftRadius: isFirst && disable !== "top" && disable !== "start" ? radius : 0,
167
+ borderTopRightRadius: disable !== "top" && disable !== "end" && (vertical && isFirst || !vertical && isLast) ? radius : 0,
168
+ borderBottomLeftRadius: disable !== "bottom" && disable !== "start" && (vertical && isLast || !vertical && isFirst) ? radius : 0,
169
+ borderBottomRightRadius: isLast && disable !== "bottom" && disable !== "end" ? radius : 0
170
+ }), cloneElementWithPropOrder = (child, props) => {
171
+ const next = mergeProps(child.props, props, getConfig().shorthands);
172
+ return React.cloneElement({ ...child, props: null }, next);
173
+ };
174
+ export {
175
+ Group,
176
+ GroupFrame,
177
+ XGroup,
178
+ YGroup,
179
+ useGroupItem
180
+ };
181
+ //# sourceMappingURL=Group.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/Group.tsx"],
4
+ "mappings": "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",
5
+ "names": ["props"]
6
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./Group";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/index.ts"],
4
+ "mappings": "AAAA,cAAc;",
5
+ "names": []
6
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/group",
3
- "version": "1.74.3",
3
+ "version": "1.74.5",
4
4
  "sideEffects": [
5
5
  "*.css"
6
6
  ],
@@ -23,17 +23,17 @@
23
23
  "clean:build": "tamagui-build clean:build"
24
24
  },
25
25
  "dependencies": {
26
- "@tamagui/core": "1.74.3",
27
- "@tamagui/create-context": "1.74.3",
28
- "@tamagui/stacks": "1.74.3",
29
- "@tamagui/use-controllable-state": "1.74.3",
26
+ "@tamagui/core": "1.74.5",
27
+ "@tamagui/create-context": "1.74.5",
28
+ "@tamagui/stacks": "1.74.5",
29
+ "@tamagui/use-controllable-state": "1.74.5",
30
30
  "reforest": "^0.13.0"
31
31
  },
32
32
  "peerDependencies": {
33
33
  "react": "*"
34
34
  },
35
35
  "devDependencies": {
36
- "@tamagui/build": "1.74.3",
36
+ "@tamagui/build": "1.74.5",
37
37
  "react": "^18.2.0"
38
38
  },
39
39
  "publishConfig": {