{"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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"}