{"version":3,"sources":["Header.tsx"],"sourcesContent":["import { Component } from \"uix/components/Component.ts\";\nimport { Selector } from \"../../elements/selector/Selector.tsx\";\nimport { Path } from \"datex-core-legacy/utils/path.ts\";\nimport { Icon } from \"../../elements/icon/Icon.tsx\";\nimport { BackgroundImage } from \"../../elements/background-image/BackgroundImage.tsx\";\nimport { HamburgerMenu } from \"./HamburgerMenu.tsx\";\nexport type HeaderOptions = {\n\tsize?: number | string;\n\tmode?: \"light\" | \"dark\" | \"auto\";\n\tlogo?: string | URL | { dark: string | URL, light: string | URL };\n\tlabel?: HTMLElement | string;\n\tbackgroundColor?: string;\n\tposition?: \"sticky\" | \"fixed\" | \"relative\" | \"absolute\";\n\tnavigation?: Array<NavigationItem>;\n\tdisableHamburgerMenu?: boolean;\n\thamburgerMenuMaxWidth?: number | string;\n\tmaxWidth?: number | string;\n\tbanner?: string | HTMLElement;\n\tdisableHoverNavigation?: boolean;\n\ticonRight?: string | HTMLElement;\n\tstylesheet?: URL | string;\n}\nexport type NavigationItem = { title: string | HTMLElement, link?: string, children?: Array<NavigationItem | HTMLElement> }\n\n\n\nexport const Header = blankTemplate<HeaderOptions & { children?: any}>(({children, ...props}) => {\n\tconst left = children?.find((child: HTMLElement) => child?.getAttribute(\"slot\") === \"left\");\n\tconst right = children?.find((child: HTMLElement) => child?.getAttribute(\"slot\") === \"right\");\n\treturn <HeaderWrapper {...props} left={left} right={right}/> as HTMLDivElement\n})\n\n@template(function({ iconRight, disableHoverNavigation, banner, maxWidth, left, right, hamburgerMenuMaxWidth, disableHamburgerMenu, position, navigation, backgroundColor, label, logo, mode, size, stylesheet }) {\n\tif (logo === undefined)\n\t\tlogo = {\n\t\t\tdark: \"https://cdn.unyt.org/unyt-resources/logos/unyt/text-light-transparent-3.svg\",\n\t\t\tlight: \"https://cdn.unyt.org/unyt-resources/logos/unyt/text-dark-transparent-3.svg\"\n\t\t}\n\t\n\treturn <shadow-root>\n\t\t<link rel=\"stylesheet\" href={\"../../theme/unyt.css\"}/>\n\t\t{stylesheet ? <link rel=\"stylesheet\" href={stylesheet}/> : null}\n\t\t{banner ? <div id=\"banner\" class=\"global-banner\" data-mode={mode ?? \"auto\"} >\n\t\t\t<div class=\"content\">\n\t\t\t\t{banner}\n\t\t\t</div>\n\t\t\t<Icon name=\"fa-times\"/>\n\t\t</div> : null}\n\t\t<div id=\"header\" data-mode={mode ?? \"auto\"} class=\"header\" \n\t\t\tstyle={{\n\t\t\t\tposition: position ?? \"unset\",\n\t\t\t\t\"--size\": `${typeof size === \"number\" ? `${size}px` : (size ?? '70px')}`,\n\t\t\t\t\"--bg-color\": `${backgroundColor ?? \"transparent\"}`\n\t\t\t}}>\n\t\t\t{disableHamburgerMenu ? null : <HamburgerMenu id=\"hamburgerMenu\" mode={mode ?? \"auto\"} maxWidth={hamburgerMenuMaxWidth} logo={logo} label={label instanceof HTMLElement ? (label.cloneNode(true) as HTMLElement) : label} navigation={navigation}/>}\n\t\t\t<a class=\"header-icon static\" href=\"/\" title=\"Home\">\n\t\t\t\t<BackgroundImage\n\t\t\t\t\tdark={(typeof logo != \"string\" && \"dark\" in logo) ? logo.dark : logo}\n\t\t\t\t\tlight={(typeof logo != \"string\" && \"dark\" in logo) ? logo.light : logo}\n\t\t\t\t\tclass={\"logo\"}\n\t\t\t\t\tmode={mode ?? \"auto\"}/>\n\n\t\t\t\t{label ? (label instanceof HTMLElement ? (label.cloneNode(true) as HTMLElement) : <span class=\"label\">{label}</span>) : undefined}\n\t\t\t</a>\n\t\t\t<a class=\"header-icon\" href=\"/\" title=\"Home\">\n\t\t\t\t<BackgroundImage\n\t\t\t\t\tdark={(typeof logo != \"string\" && \"dark\" in logo) ? logo.dark : logo}\n\t\t\t\t\tlight={(typeof logo != \"string\" && \"dark\" in logo) ? logo.light : logo}\n\t\t\t\t\tclass={\"logo\"}\n\t\t\t\t\tmode={mode ?? \"auto\"}/>\n\t\t\t\t{label ? (label instanceof HTMLElement ? (label.cloneNode(true) as HTMLElement) : <span class=\"label\">{label}</span>) : undefined}\n\t\t\t</a>\n\t\t\t<div id=\"content\" class=\"content\" style={{\n\t\t\t\tmaxWidth: maxWidth ? (typeof maxWidth === \"number\" ? `${maxWidth + \"px\"}` : maxWidth) : \"unset\",\n\t\t\t}}>\n\t\t\t\t<div class=\"left\">\n\t\t\t\t\t{\n\t\t\t\t\t\tnavigation ? \n\t\t\t\t\t\t\tthis.getNavigation(navigation, disableHoverNavigation) : \n\t\t\t\t\t\t\tArray.from((left?.children ?? []) as HTMLElement[])\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t</div>\n\t\t\t\t<div class=\"right\">\n\t\t\t\t\t{...(right?.children ?? []) as HTMLElement[]}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t{iconRight ? typeof iconRight === \"string\" ? <Icon name={iconRight} class=\"action-right\"/> : <div class=\"action-right\">{iconRight}</div> : null}\n\t\t</div>\n\t</shadow-root>\n})\n@standalone\nexport class HeaderWrapper extends Component<HeaderOptions & { stylesheet?: URL | string, left?: HTMLSlotElement, right?: HTMLSlotElement }> {\n\t@id header!: HTMLDivElement;\n\t@id banner!: HTMLDivElement;\n\t@id content!: HTMLDivElement;\n\t@id hamburgerMenu?: HTMLElement;\n\n\tpublic getNavigation(nav?: NavigationItem[], disableHover?: boolean) {\n\t\tif (!nav || !nav.length)\n\t\t\treturn null;\n\t\treturn <header class=\"navigation\">\n\t\t\t{nav.map(({ title, link, children }) => {\n\t\t\t\tconst isLink = !(children && children.length);\n\t\t\t\treturn <Selector openOnHover={!disableHover} stylesheet={new Path(\"./Selector.css\")} \n\t\t\t\t\thideChevron={isLink}\n\t\t\t\t\thideCheck\n\t\t\t\t\tlabel={(\n\t\t\t\t\t\tisLink ? <a href={link}>{title}</a> : <div>{title}</div>\n\t\t\t\t\t) as HTMLElement}>\n\t\t\t\t\t{\n\t\t\t\t\t\t(children ?? []).map((item) =>\n\t\t\t\t\t\t\titem instanceof HTMLElement ? item : <option value={\"\"}>\n\t\t\t\t\t\t\t\t<a href={item.link}>{item.title}</a>\n\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t)\n\t\n\t\t\t\t\t}\n\t\t\t\t</Selector>\n\t\t\t})}\n\t\t</header>\n\t}\n\n\tpublic get mode() {\n\t\treturn this.header.dataset.mode as \"dark\" | \"light\" | \"auto\";\n\t}\n\tpublic setMode(mode: \"dark\" | \"light\" | \"auto\") {\n\t\tthis.header.dataset.mode = mode;\n\t\tif (this.banner)\n\t\t\tthis.banner.dataset.mode = mode;\n\t\tif (this.hamburgerMenu)\n\t\t\tthis.hamburgerMenu.dataset.mode = mode;\n\t}\n\n\tprivate listenForScroll() {\n\t\tconst update = () => \n\t\t\tthis.header.classList.toggle(\"top\", !((document.documentElement.scrollTop || document.body.scrollTop) === 0));\n\t\tglobalThis.addEventListener(\"scroll\", update.bind(this));\n\t\tif (\"anchored\" in this)\n\t\t\t(this.anchored as Promise<unknown>)!.then(() => update());\n\t\telse update();\n\t}\n\n\tprivate listenForOverflow() {\n\t\tfunction isOverflowing(container: HTMLElement) {\n\t\t\treturn container.scrollWidth > container.offsetWidth;\n\t\t}\n\t\tconst left = this.content.querySelector('.left') as HTMLDivElement;\n\t\tconst onResize = () =>\n\t\t\tthis.header.classList.toggle('compact', isOverflowing(left));\n\t\tconst observer = new ResizeObserver(() => onResize());\n\t\tobserver.observe(this.content);\n\t\tonResize();\n\t}\n\tprivate hideBanner() {\n\t\tlocalStorage.setItem(\"banner-hidden\", \"true\");\n\t\tthis.banner.classList.toggle(\"visible\", false);\n\t\tsetTimeout(() => this.banner.remove(), 1000);\n\t}\n\tprivate isBannerHidden() {\n\t\treturn localStorage.getItem(\"banner-hidden\") === \"true\";\n\t}\n\n\tprotected override onDisplay(): void | Promise<void> {\n\t\tif (this.banner) {\n\t\t\tif (this.isBannerHidden())\n\t\t\t\tthis.hideBanner();\n\t\t\telse this.banner.classList.toggle(\"visible\", !this.isBannerHidden());\n\t\t\tthis.banner.querySelector(\"&>span\")?.addEventListener(\"click\", () => this.hideBanner());\n\t\t}\n\t\tthis.listenForOverflow();\n\t\tthis.listenForScroll();\n\t}\n}"],"names":["Component","header","banner","content","hamburgerMenu","Selector","Path","Icon","BackgroundImage","HamburgerMenu","Header","blankTemplate","children","props","left","find","child","getAttribute","right","HeaderWrapper","template","iconRight","disableHoverNavigation","maxWidth","hamburgerMenuMaxWidth","disableHamburgerMenu","position","navigation","backgroundColor","label","logo","mode","size","stylesheet","undefined","dark","light","shadow-root","link","rel","href","div","id","class","data-mode","name","style","HTMLElement","cloneNode","a","title","span","getNavigation","Array","from","standalone","nav","disableHover","length","map","isLink","openOnHover","hideChevron","hideCheck","item","option","value","dataset","setMode","listenForScroll","update","classList","toggle","document","documentElement","scrollTop","body","globalThis","addEventListener","bind","anchored","then","listenForOverflow","isOverflowing","container","scrollWidth","offsetWidth","querySelector","onResize","ResizeObserver","observe","hideBanner","localStorage","setItem","setTimeout","remove","isBannerHidden","getItem","onDisplay"],"mappings":"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","sourceRoot":"/lib/unyt-components-0.0.17/components/header/","file":"Header.tsx"}