one
Version:
One is a React framework for web, iOS, and Android apps.
1 lines • 31.7 kB
Source Map (JSON)
{"version":3,"file":"stackToolbarDescriptors.js","names":[],"sources":["esm/layouts/stack-utils/stackToolbarDescriptors.js"],"sourcesContent":["import { Children, isValidElement } from \"react\";\nconst TOOLBAR_KIND = \"__oneStackToolbarKind\";\nfunction kindOf(element) {\n if (!isValidElement(element)) return void 0;\n return element.type?.[TOOLBAR_KIND];\n}\nfunction isKind(element, kind) {\n return kindOf(element) === kind;\n}\nfunction warn(message) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(message);\n }\n}\nfunction childName(child) {\n if (!isValidElement(child)) return \"unknown\";\n const type = child.type;\n if (typeof type === \"string\") return type;\n if (typeof type === \"symbol\") return \"Fragment\";\n return type?.name ?? \"unknown\";\n}\nfunction fallbackIdentifier(slot, index, title) {\n const slug = (title ?? \"item\").toLowerCase().replace(/[^a-z0-9]+/g, \"-\").slice(0, 24) || \"item\";\n return `stack-toolbar-${slot}-${slug}-${index}`;\n}\nfunction firstChildOfKind(children, kind) {\n let found = null;\n Children.forEach(children, (child) => {\n if (found || !isValidElement(child)) return;\n if (isKind(child, kind)) found = child;\n });\n return found;\n}\nfunction toolbarChildrenToString(children) {\n return Children.toArray(children).filter(\n (child) => typeof child === \"string\" || typeof child === \"number\"\n ).join(\"\");\n}\nfunction resolveIcon(iconProp, children) {\n const iconChild = firstChildOfKind(children, \"icon\");\n if (iconChild) {\n const props = iconChild.props;\n if (\"sf\" in props) return { form: \"sf\", name: props.sf };\n if (\"xcasset\" in props)\n return { form: \"xcasset\", name: props.xcasset, renderingMode: props.renderingMode };\n return { form: \"src\", source: props.src, renderingMode: props.renderingMode };\n }\n if (typeof iconProp === \"string\") return { form: \"sf\", name: iconProp };\n if (iconProp) return { form: \"src\", source: iconProp };\n return void 0;\n}\nfunction checkButtonChildren(children) {\n if (process.env.NODE_ENV === \"production\" || typeof children === \"string\") return;\n const all = Children.toArray(children);\n const valid = all.filter(\n (child) => typeof child === \"string\" || typeof child === \"number\" || isValidElement(child) && (isKind(child, \"label\") || isKind(child, \"icon\") || isKind(child, \"badge\"))\n );\n if (all.length !== valid.length) {\n throw new Error(\n \"Stack.Toolbar.Button only accepts a single string or Stack.Toolbar.Label, Stack.Toolbar.Icon, and Stack.Toolbar.Badge as its children.\"\n );\n }\n}\nfunction checkMenuChildren(children) {\n if (process.env.NODE_ENV === \"production\") return;\n const all = Children.toArray(children);\n const valid = all.filter(\n (child) => isValidElement(child) && (isKind(child, \"menu\") || isKind(child, \"menuAction\") || isKind(child, \"label\") || isKind(child, \"icon\") || isKind(child, \"badge\"))\n );\n if (all.length !== valid.length) {\n throw new Error(\n \"Stack.Toolbar.Menu only accepts Stack.Toolbar.Menu, Stack.Toolbar.MenuAction, Stack.Toolbar.Label, Stack.Toolbar.Icon, and Stack.Toolbar.Badge as its children.\"\n );\n }\n}\nfunction labelFromChildren(children) {\n const labelChild = firstChildOfKind(children, \"label\");\n if (labelChild)\n return labelChild.props.children ?? \"\";\n return toolbarChildrenToString(children);\n}\nfunction badgeFromChildren(children) {\n const badgeChild = firstChildOfKind(children, \"badge\");\n if (!badgeChild) return void 0;\n const props = badgeChild.props;\n const style = props.style;\n return {\n value: props.children ?? \"\",\n ...style?.backgroundColor !== void 0 && { backgroundColor: style.backgroundColor },\n ...style?.color !== void 0 && { color: style.color },\n ...style?.fontFamily !== void 0 && { fontFamily: style.fontFamily },\n ...style?.fontSize !== void 0 && { fontSize: style.fontSize },\n ...style?.fontWeight !== void 0 && { fontWeight: style.fontWeight }\n };\n}\nfunction labelStyleFromStyle(style) {\n if (!style) return void 0;\n const flat = style;\n const picked = {\n ...flat.fontFamily !== void 0 && { fontFamily: flat.fontFamily },\n ...flat.fontSize !== void 0 && { fontSize: flat.fontSize },\n ...flat.fontWeight !== void 0 && { fontWeight: flat.fontWeight },\n ...flat.color !== void 0 && { color: flat.color }\n };\n return Object.keys(picked).length ? picked : void 0;\n}\nfunction headerIconFromResolution(resolution, iconRenderingMode, tintColor) {\n if (!resolution) return void 0;\n if (resolution.form === \"sf\") {\n return { type: \"sfSymbol\", name: resolution.name };\n }\n const source = resolution.form === \"src\" ? resolution.source : { uri: resolution.name };\n const effectiveMode = resolution.renderingMode ?? iconRenderingMode ?? (tintColor ? \"template\" : \"original\");\n return {\n type: \"image\",\n source,\n tinted: effectiveMode === \"template\"\n };\n}\nfunction buttonPropsToHeaderButton(props) {\n if (props.hidden) return null;\n checkButtonChildren(props.children);\n const label = labelFromChildren(props.children);\n const icon = headerIconFromResolution(\n resolveIcon(props.icon, props.children),\n props.iconRenderingMode,\n props.tintColor\n );\n const badge = badgeFromChildren(props.children);\n return {\n type: \"button\",\n label,\n ...icon && { icon },\n ...props.variant !== void 0 && { variant: props.variant },\n ...props.tintColor !== void 0 && { tintColor: props.tintColor },\n ...props.disabled !== void 0 && { disabled: props.disabled },\n sharesBackground: !props.separateBackground,\n ...props.hidesSharedBackground !== void 0 && {\n hidesSharedBackground: props.hidesSharedBackground\n },\n ...badge && {\n badge: {\n value: badge.value,\n ...(badge.color !== void 0 || badge.backgroundColor !== void 0 || badge.fontFamily !== void 0 || badge.fontSize !== void 0 || badge.fontWeight !== void 0) && {\n style: {\n ...badge.color !== void 0 && { color: badge.color },\n ...badge.backgroundColor !== void 0 && {\n backgroundColor: badge.backgroundColor\n },\n ...badge.fontFamily !== void 0 && { fontFamily: badge.fontFamily },\n ...badge.fontSize !== void 0 && { fontSize: badge.fontSize },\n ...badge.fontWeight !== void 0 && { fontWeight: badge.fontWeight }\n }\n }\n }\n },\n ...labelStyleFromStyle(props.style) && {\n labelStyle: labelStyleFromStyle(props.style)\n },\n ...props.accessibilityLabel !== void 0 && {\n accessibilityLabel: props.accessibilityLabel\n },\n ...props.accessibilityHint !== void 0 && {\n accessibilityHint: props.accessibilityHint\n },\n onPress: props.onPress ?? (() => {\n }),\n selected: !!props.selected\n };\n}\nfunction menuLabelAndTitle(children, title) {\n const labelChild = firstChildOfKind(children, \"label\");\n const labelFromChild = labelChild?.props?.children;\n return { label: labelFromChild ?? title ?? \"\", menuTitle: title ?? \"\" };\n}\nfunction menuActionPropsToHeaderAction(props) {\n const {\n children,\n subtitle,\n isOn,\n unstable_keepPresented,\n icon,\n image,\n iconRenderingMode,\n ...rest\n } = props;\n void image;\n const shared = labelFromChildren(children);\n const iconResolution = resolveIcon(icon, children);\n const item = {\n ...rest,\n description: subtitle,\n type: \"action\",\n label: shared,\n state: isOn ? \"on\" : \"off\",\n onPress: props.onPress ?? (() => {\n })\n };\n if (unstable_keepPresented !== void 0) {\n item.keepsMenuPresented = unstable_keepPresented;\n }\n const headerIcon = headerIconFromResolution(iconResolution, iconRenderingMode, void 0);\n if (headerIcon) item.icon = headerIcon;\n return item;\n}\nfunction menuElementToHeaderSubmenu(element, placement) {\n const props = element.props;\n if (props.hidden) return null;\n checkMenuChildren(props.children);\n const items = menuChildrenToHeaderMenuItems(props.children, placement);\n return {\n type: \"submenu\",\n label: labelFromChildren(props.children) || props.title || \"\",\n multiselectable: true,\n ...props.inline !== void 0 && { inline: props.inline },\n ...props.palette !== void 0 && {\n layout: props.palette ? \"palette\" : \"default\"\n },\n ...props.destructive !== void 0 && { destructive: props.destructive },\n ...headerIconFromResolution(\n resolveIcon(props.icon, props.children),\n props.iconRenderingMode,\n props.tintColor\n ) && {\n icon: headerIconFromResolution(\n resolveIcon(props.icon, props.children),\n props.iconRenderingMode,\n props.tintColor\n )\n },\n items\n };\n}\nfunction menuChildrenToHeaderMenuItems(children, placement) {\n const items = [];\n Children.forEach(children, (child) => {\n if (!isValidElement(child)) return;\n if (isKind(child, \"menuAction\")) {\n items.push(menuActionPropsToHeaderAction(child.props));\n } else if (isKind(child, \"menu\")) {\n const submenu = menuElementToHeaderSubmenu(child, placement);\n if (submenu) items.push(submenu);\n }\n });\n return items;\n}\nfunction menuPropsToHeaderMenu(element, placement) {\n const props = element.props;\n if (props.hidden) return null;\n checkMenuChildren(props.children);\n const { label, menuTitle } = menuLabelAndTitle(props.children, props.title);\n const icon = headerIconFromResolution(\n resolveIcon(props.icon, props.children),\n props.iconRenderingMode,\n props.tintColor\n );\n const badge = badgeFromChildren(props.children);\n return {\n type: \"menu\",\n label,\n ...icon && { icon },\n ...props.variant !== void 0 && { variant: props.variant },\n ...props.tintColor !== void 0 && { tintColor: props.tintColor },\n ...props.disabled !== void 0 && { disabled: props.disabled },\n sharesBackground: !props.separateBackground,\n ...props.hidesSharedBackground !== void 0 && {\n hidesSharedBackground: props.hidesSharedBackground\n },\n ...badge && { badge: { value: badge.value } },\n ...props.accessibilityLabel !== void 0 && {\n accessibilityLabel: props.accessibilityLabel\n },\n ...props.accessibilityHint !== void 0 && {\n accessibilityHint: props.accessibilityHint\n },\n menu: {\n ...menuTitle ? { title: menuTitle } : null,\n multiselectable: true,\n ...props.palette !== void 0 && {\n layout: props.palette ? \"palette\" : \"default\"\n },\n items: menuChildrenToHeaderMenuItems(props.children, placement)\n }\n };\n}\nfunction spacerPropsToHeaderSpacing(props, placement) {\n if (props.hidden) return null;\n if (props.width === void 0) {\n warn(\n `Warning: Stack.Toolbar.Spacer requires \\`width\\` when used in ${placement} placement. Flexible spacers are only supported in bottom placement.`\n );\n return null;\n }\n return { type: \"spacing\", spacing: props.width };\n}\nfunction toolbarChildrenToHeaderItems(children, placement) {\n const items = [];\n Children.forEach(children, (child) => {\n if (!isValidElement(child)) return;\n if (isKind(child, \"button\")) {\n const item = buttonPropsToHeaderButton(child.props);\n if (item) items.push(item);\n } else if (isKind(child, \"menu\")) {\n const menu = menuPropsToHeaderMenu(child, placement);\n if (menu) items.push(menu);\n } else if (isKind(child, \"spacer\")) {\n const spacing = spacerPropsToHeaderSpacing(\n child.props,\n placement\n );\n if (spacing) items.push(spacing);\n } else {\n warn(\n `Warning: Stack.Toolbar with placement=\"${placement}\" only accepts <Stack.Toolbar.Button>, <Stack.Toolbar.Menu>, and <Stack.Toolbar.Spacer> as children. Found invalid child: ${childName(child)}`\n );\n }\n });\n return items;\n}\nfunction bottomIconFields(iconProp, imageProp, iconRenderingMode, tintColor, children, component) {\n const resolution = resolveIcon(iconProp, children);\n if (!resolution) {\n return {\n ...imageProp !== void 0 && {\n image: imageProp,\n imageRenderingMode: iconRenderingMode ?? (tintColor !== void 0 ? \"template\" : \"original\")\n }\n };\n }\n if (resolution.form === \"sf\") return { sfName: resolution.name };\n if (resolution.form === \"xcasset\") {\n return {\n xcassetName: resolution.name,\n imageRenderingMode: resolution.renderingMode ?? iconRenderingMode\n };\n }\n warn(\n `Warning: Stack.Toolbar.${component} in bottom placement does not support image icons via the \\`icon\\` prop or <Stack.Toolbar.Icon src={...} />; the image will not render. Use the \\`icon\\` prop with an SF Symbol name, the \\`image\\` prop, or <Stack.Toolbar.Icon xcasset=\"...\" />.`\n );\n return {};\n}\nfunction bottomButtonData(props, index) {\n checkButtonChildren(props.children);\n const title = labelFromChildren(props.children) || void 0;\n const { sfName, ...iconRest } = bottomIconFields(\n props.icon,\n props.image,\n props.iconRenderingMode,\n props.tintColor,\n props.children,\n \"Button\"\n );\n return {\n kind: \"button\",\n identifier: fallbackIdentifier(\"bottom\", index, title),\n ...title !== void 0 && { title },\n ...sfName !== void 0 && { systemImageName: sfName },\n ...iconRest,\n tintColor: props.tintColor,\n ...props.variant !== void 0 && { barButtonItemStyle: props.variant },\n sharesBackground: !props.separateBackground,\n hidesSharedBackground: props.hidesSharedBackground,\n hidden: props.hidden,\n selected: props.selected,\n disabled: props.disabled,\n // Badges render on bottom toolbarItems items (proven on the iOS 27\n // simulator by the B2 probe), so One passes them through. Intentional\n // divergence from Expo, which calls bottom badges an iOS limitation.\n badgeConfiguration: badgeFromChildren(props.children),\n ...labelStyleFromStyle(props.style) && { titleStyle: labelStyleFromStyle(props.style) },\n accessibilityLabel: props.accessibilityLabel,\n accessibilityHint: props.accessibilityHint,\n handler: props.onPress ?? (() => {\n })\n };\n}\nfunction bottomMenuActionData(props, index, path) {\n const title = labelFromChildren(props.children);\n const { sfName, ...iconRest } = bottomIconFields(\n props.icon,\n props.image,\n props.iconRenderingMode,\n void 0,\n props.children,\n \"MenuAction\"\n );\n return {\n kind: \"action\",\n identifier: fallbackIdentifier(path, index, title),\n title,\n ...sfName !== void 0 && { icon: sfName },\n ...iconRest,\n disabled: props.disabled,\n destructive: props.destructive,\n hidden: props.hidden,\n isOn: props.isOn,\n keepPresented: props.unstable_keepPresented,\n discoverabilityLabel: props.discoverabilityLabel,\n subtitle: props.subtitle,\n accessibilityLabel: props.accessibilityLabel,\n accessibilityHint: props.accessibilityHint,\n handler: props.onPress ?? (() => {\n })\n };\n}\nfunction bottomMenuChildren(children, path) {\n const data = [];\n Children.forEach(children, (child, index) => {\n if (!isValidElement(child)) return;\n if (isKind(child, \"menuAction\")) {\n data.push(\n bottomMenuActionData(child.props, index, path)\n );\n } else if (isKind(child, \"menu\")) {\n data.push(bottomSubmenuData(child, index, path));\n }\n });\n return data;\n}\nfunction bottomSubmenuData(element, index, path) {\n const props = element.props;\n checkMenuChildren(props.children);\n const title = labelFromChildren(props.children) || props.title || \"\";\n const { sfName, ...iconRest } = bottomIconFields(\n props.icon,\n props.image,\n props.iconRenderingMode,\n props.tintColor,\n props.children,\n \"Menu\"\n );\n return {\n kind: \"submenu\",\n identifier: fallbackIdentifier(path, index, title),\n title,\n ...sfName !== void 0 && { icon: sfName },\n ...iconRest,\n destructive: props.destructive,\n hidden: props.hidden,\n inline: props.inline,\n palette: props.palette,\n accessibilityLabel: props.accessibilityLabel,\n accessibilityHint: props.accessibilityHint,\n children: bottomMenuChildren(props.children, `${path}-submenu-${index}`)\n };\n}\nfunction bottomMenuData(props, index) {\n checkMenuChildren(props.children);\n const { label, menuTitle } = menuLabelAndTitle(props.children, props.title);\n const { sfName, ...iconRest } = bottomIconFields(\n props.icon,\n props.image,\n props.iconRenderingMode,\n props.tintColor,\n props.children,\n \"Menu\"\n );\n return {\n kind: \"menu\",\n identifier: fallbackIdentifier(\"bottom\", index, label || menuTitle),\n title: menuTitle,\n label,\n ...sfName !== void 0 && { systemImageName: sfName },\n ...iconRest,\n tintColor: props.tintColor,\n ...props.variant !== void 0 && { barButtonItemStyle: props.variant },\n sharesBackground: !props.separateBackground,\n hidesSharedBackground: props.hidesSharedBackground,\n disabled: props.disabled,\n destructive: props.destructive,\n hidden: props.hidden,\n inline: props.inline,\n palette: props.palette,\n elementSize: props.elementSize,\n accessibilityLabel: props.accessibilityLabel,\n accessibilityHint: props.accessibilityHint,\n children: bottomMenuChildren(props.children, `bottom-menu-${index}`)\n };\n}\nfunction toolbarChildrenToBottomData(children) {\n const data = [];\n Children.forEach(children, (child, index) => {\n if (!isValidElement(child)) return;\n if (isKind(child, \"button\")) {\n data.push(bottomButtonData(child.props, index));\n } else if (isKind(child, \"menu\")) {\n data.push(bottomMenuData(child.props, index));\n } else if (isKind(child, \"spacer\")) {\n const props = child.props;\n data.push({\n kind: \"spacer\",\n identifier: fallbackIdentifier(\"bottom\", index, \"spacer\"),\n ...props.width !== void 0 && { width: props.width },\n // omitted unless explicit: the native spacer keeps the UIKit default.\n ...props.sharesBackground !== void 0 && {\n sharesBackground: props.sharesBackground\n },\n ...props.hidden !== void 0 && { hidden: props.hidden }\n });\n } else if (isKind(child, \"searchBarSlot\")) {\n const props = child.props;\n data.push({\n kind: \"searchBar\",\n identifier: fallbackIdentifier(\"bottom\", index, \"search\"),\n sharesBackground: !props.separateBackground,\n hidesSharedBackground: props.hidesSharedBackground,\n hidden: props.hidden\n });\n } else {\n warn(\n `Warning: Stack.Toolbar with bottom placement only accepts <Stack.Toolbar.Button>, <Stack.Toolbar.Menu>, <Stack.Toolbar.Spacer>, and <Stack.Toolbar.SearchBarSlot> as children. Found invalid child: ${childName(child)}`\n );\n }\n });\n return data;\n}\nfunction appendStackToolbarPropsToOptions(options, props) {\n const placement = props.placement ?? \"bottom\";\n if (placement === \"bottom\") {\n if (process.env.NODE_ENV !== \"production\") {\n warn(\n \"Warning: Stack.Toolbar with bottom placement in layout config has no effect. Mount it in screen content so the toolbar host sits inside the screen view controller.\"\n );\n }\n return options;\n }\n if (props.asChild) {\n const key2 = placement === \"left\" ? \"headerLeft\" : \"headerRight\";\n return { ...options, headerShown: true, [key2]: () => props.children };\n }\n const items = toolbarChildrenToHeaderItems(props.children, placement);\n const key = placement === \"left\" ? \"unstable_headerLeftItems\" : \"unstable_headerRightItems\";\n return { ...options, headerShown: true, [key]: () => items };\n}\nexport {\n TOOLBAR_KIND,\n appendStackToolbarPropsToOptions,\n isKind as isToolbarKind,\n toolbarChildrenToBottomData,\n toolbarChildrenToHeaderItems,\n toolbarChildrenToString\n};\n//# sourceMappingURL=stackToolbarDescriptors.js.map\n"],"mappings":"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"}