{"version":3,"file":"StackHeaderComponent.js","names":[],"sources":["esm/layouts/stack-utils/StackHeaderComponent.js"],"sourcesContent":["import { Children, isValidElement } from \"react\";\nimport { NAVIGATOR_CONFIG } from \"../../headless/children\";\nimport {\n  appendStackHeaderBackButtonPropsToOptions,\n  StackHeaderBackButton\n} from \"./StackHeaderBackButton\";\nimport { StackHeaderLeft, appendStackHeaderLeftPropsToOptions } from \"./StackHeaderLeft\";\nimport {\n  StackHeaderRight,\n  appendStackHeaderRightPropsToOptions\n} from \"./StackHeaderRight\";\nimport {\n  appendStackHeaderSearchBarPropsToOptions,\n  StackHeaderSearchBar\n} from \"./StackHeaderSearchBar\";\nimport {\n  appendStackHeaderTitlePropsToOptions,\n  StackHeaderTitle\n} from \"./StackHeaderTitle\";\nimport { isChildOfType } from \"../../utils/children\";\nimport { flattenStyle } from \"../../utils/style\";\nfunction StackHeaderComponent(_props) {\n  return null;\n}\nObject.assign(StackHeaderComponent, { [NAVIGATOR_CONFIG]: true });\nfunction appendStackHeaderPropsToOptions(options, props) {\n  const flattenedStyle = flattenStyle(props.style);\n  const flattenedLargeStyle = flattenStyle(props.largeStyle);\n  if (props.hidden) {\n    return { ...options, headerShown: false };\n  }\n  if (props.asChild) {\n    return { ...options, header: () => props.children };\n  }\n  const isTransparent = flattenedStyle?.backgroundColor === \"transparent\";\n  const hasCustomShadow = flattenedStyle?.shadowColor !== void 0;\n  const hasBackgroundColor = flattenedStyle?.backgroundColor !== void 0;\n  const hasLargeBackgroundColor = flattenedLargeStyle?.backgroundColor !== void 0;\n  let updatedOptions = {\n    ...options,\n    headerShown: !props.hidden,\n    headerBlurEffect: props.blurEffect,\n    // Set headerTransparent when backgroundColor is 'transparent'\n    // This works on both iOS and Android for normal headers\n    // Note: When using SearchBar on iOS, if you don't have a ScrollView with\n    // contentInsetAdjustmentBehavior=\"automatic\", set headerTransparent: false in options\n    ...isTransparent && { headerTransparent: true },\n    // Only set header styles when explicitly configured to avoid interfering with native defaults\n    ...hasBackgroundColor && {\n      headerStyle: { backgroundColor: flattenedStyle.backgroundColor }\n    },\n    ...hasLargeBackgroundColor && {\n      headerLargeStyle: {\n        backgroundColor: flattenedLargeStyle.backgroundColor\n      }\n    },\n    // Only set shadow visibility when explicitly configured\n    ...hasCustomShadow && {\n      headerShadowVisible: flattenedStyle?.shadowColor !== \"transparent\"\n    },\n    ...flattenedLargeStyle?.shadowColor !== void 0 && {\n      headerLargeTitleShadowVisible: flattenedLargeStyle?.shadowColor !== \"transparent\"\n    }\n  };\n  function appendChildOptions(child, options2) {\n    let result = options2;\n    if (isChildOfType(child, StackHeaderTitle)) {\n      result = appendStackHeaderTitlePropsToOptions(result, child.props);\n    } else if (isChildOfType(child, StackHeaderLeft)) {\n      result = appendStackHeaderLeftPropsToOptions(result, child.props);\n    } else if (isChildOfType(child, StackHeaderRight)) {\n      result = appendStackHeaderRightPropsToOptions(result, child.props);\n    } else if (isChildOfType(child, StackHeaderBackButton)) {\n      result = appendStackHeaderBackButtonPropsToOptions(result, child.props);\n    } else if (isChildOfType(child, StackHeaderSearchBar)) {\n      result = appendStackHeaderSearchBarPropsToOptions(result, child.props);\n    } else {\n      console.warn(\n        `Warning: Unknown child element passed to Stack.Header: ${child.type.name ?? child.type}`\n      );\n    }\n    return result;\n  }\n  Children.forEach(props.children, (child) => {\n    if (isValidElement(child)) {\n      updatedOptions = appendChildOptions(child, updatedOptions);\n    }\n  });\n  return updatedOptions;\n}\nexport {\n  StackHeaderComponent,\n  appendStackHeaderPropsToOptions\n};\n//# sourceMappingURL=StackHeaderComponent.js.map\n"],"mappings":";;;;;;;;;;;AAqBA,SAAS,qBAAqB,QAAQ;CACpC,OAAO;AACT;AACA,OAAO,OAAO,sBAAsB,GAAG,mBAAmB,KAAK,CAAC;AAChE,SAAS,gCAAgC,SAAS,OAAO;CACvD,MAAM,iBAAiB,aAAa,MAAM,KAAK;CAC/C,MAAM,sBAAsB,aAAa,MAAM,UAAU;CACzD,IAAI,MAAM,QAAQ;EAChB,OAAO;GAAE,GAAG;GAAS,aAAa;EAAM;CAC1C;CACA,IAAI,MAAM,SAAS;EACjB,OAAO;GAAE,GAAG;GAAS,cAAc,MAAM;EAAS;CACpD;CACA,MAAM,gBAAgB,gBAAgB,oBAAoB;CAC1D,MAAM,kBAAkB,gBAAgB,gBAAgB,KAAK;CAC7D,MAAM,qBAAqB,gBAAgB,oBAAoB,KAAK;CACpE,MAAM,0BAA0B,qBAAqB,oBAAoB,KAAK;CAC9E,IAAI,iBAAiB;EACnB,GAAG;EACH,aAAa,CAAC,MAAM;EACpB,kBAAkB,MAAM;EAKxB,GAAG,iBAAiB,EAAE,mBAAmB,KAAK;EAE9C,GAAG,sBAAsB,EACvB,aAAa,EAAE,iBAAiB,eAAe,gBAAgB,EACjE;EACA,GAAG,2BAA2B,EAC5B,kBAAkB,EAChB,iBAAiB,oBAAoB,gBACvC,EACF;EAEA,GAAG,mBAAmB,EACpB,qBAAqB,gBAAgB,gBAAgB,cACvD;EACA,GAAG,qBAAqB,gBAAgB,KAAK,KAAK,EAChD,+BAA+B,qBAAqB,gBAAgB,cACtE;CACF;CACA,SAAS,mBAAmB,OAAO,UAAU;EAC3C,IAAI,SAAS;EACb,IAAI,cAAc,OAAO,gBAAgB,GAAG;GAC1C,SAAS,qCAAqC,QAAQ,MAAM,KAAK;EACnE,OAAO,IAAI,cAAc,OAAO,eAAe,GAAG;GAChD,SAAS,oCAAoC,QAAQ,MAAM,KAAK;EAClE,OAAO,IAAI,cAAc,OAAO,gBAAgB,GAAG;GACjD,SAAS,qCAAqC,QAAQ,MAAM,KAAK;EACnE,OAAO,IAAI,cAAc,OAAO,qBAAqB,GAAG;GACtD,SAAS,0CAA0C,QAAQ,MAAM,KAAK;EACxE,OAAO,IAAI,cAAc,OAAO,oBAAoB,GAAG;GACrD,SAAS,yCAAyC,QAAQ,MAAM,KAAK;EACvE,OAAO;GACL,QAAQ,KACN,0DAA0D,MAAM,KAAK,QAAQ,MAAM,MACrF;EACF;EACA,OAAO;CACT;CACA,SAAS,QAAQ,MAAM,WAAW,UAAU;EAC1C,IAAI,eAAe,KAAK,GAAG;GACzB,iBAAiB,mBAAmB,OAAO,cAAc;EAC3D;CACF,CAAC;CACD,OAAO;AACT"}