1
|
{"version":3,"sources":["/missing-js/overflow-nav.js"],"sourcesContent":["import { $, asHtml, attr, behavior, makelogger, on } from \"./19.js\";\n\nconst ilog = makelogger(\"overflow-nav\");\n\n/**\n * @type {import(\"./19.js\").Behavior<{ expandedClass: string }>}\n */\nconst overflowNav = behavior(\"[data-overflow-nav]\", (navbar, {\n options: { expandedClass = \"expanded\" }\n}) => {\n const expandToggle = asHtml($(navbar, \"[data-nav-expander]\"));\n\n if (expandToggle === null) return ilog(\"Expand toggle missing from navbar \", navbar);\n\n /*\n \"The scrollWidth value is equal to the minimum width the element would\n require in order to fit all the content in the viewport without using a\n horizontal scrollbar. The width is measured in the same way as\n clientWidth: it includes the element's padding, but not its border,\n margin or vertical scrollbar (if present). It can also include the\n width of pseudo-elements such as ::before or ::after. If the element's\n content can fit without a need for horizontal scrollbar, its\n scrollWidth is equal to clientWidth\"\n -- MDN, \"Element.scrollWidth\", https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight\n */\n const overflows = () => navbar.scrollWidth > navbar.clientWidth;\n\n const isExpanded = () => navbar.classList.contains(expandedClass);\n\n const toggleExpansion = (expand = !isExpanded()) => {\n if (expand) {\n navbar.classList.add(expandedClass);\n attr(expandToggle, \"aria-pressed\", true);\n expandToggle.textContent = \"×\";\n } else {\n navbar.classList.remove(expandedClass);\n attr(expandToggle, \"aria-pressed\", false);\n expandToggle.textContent = \"☰\";\n }\n };\n\n const update = () => {\n const wasHidden = expandToggle.hidden\n expandToggle.hidden = !overflows();\n if (wasHidden != expandToggle.hidden) toggleExpansion(false);\n };\n\n on(expandToggle, \"click\", () => toggleExpansion());\n\n update();\n\n on(window, \"resize\", () => update(), { addedBy: navbar });\n})\n\nexport default overflowNav;\noverflowNav(document);\n"],"mappings":"AAAA,OAAS,KAAAA,EAAG,UAAAC,EAAQ,QAAAC,EAAM,YAAAC,EAAU,cAAAC,EAAY,MAAAC,MAAU,UAE1D,MAAMC,EAAOF,EAAW,cAAc,EAKhCG,EAAcJ,EAAS,sBAAuB,CAACK,EAAQ,CACzD,QAAS,CAAE,cAAAC,EAAgB,UAAW,CAC1C,IAAM,CACF,MAAMC,EAAeT,EAAOD,EAAEQ,EAAQ,qBAAqB,CAAC,EAE5D,GAAIE,IAAiB,KAAM,OAAOJ,EAAK,qCAAsCE,CAAM,EAanF,MAAMG,EAAY,IAAMH,EAAO,YAAcA,EAAO,YAE9CI,EAAa,IAAMJ,EAAO,UAAU,SAASC,CAAa,EAE1DI,EAAkB,CAACC,EAAS,CAACF,EAAW,IAAM,CAC5CE,GACAN,EAAO,UAAU,IAAIC,CAAa,EAClCP,EAAKQ,EAAc,eAAgB,EAAI,EACvCA,EAAa,YAAc,SAE3BF,EAAO,UAAU,OAAOC,CAAa,EACrCP,EAAKQ,EAAc,eAAgB,EAAK,EACxCA,EAAa,YAAc,SAEnC,EAEMK,EAAS,IAAM,CACjB,MAAMC,EAAYN,EAAa,OAC/BA,EAAa,OAAS,CAACC,EAAU,EAC7BK,GAAaN,EAAa,QAAQG,EAAgB,EAAK,CAC/D,EAEAR,EAAGK,EAAc,QAAS,IAAMG,EAAgB,CAAC,EAEjDE,EAAO,EAEPV,EAAG,OAAQ,SAAU,IAAMU,EAAO,EAAG,CAAE,QAASP,CAAO,CAAC,CAC5D,CAAC,EAED,IAAOS,EAAQV,EACfA,EAAY,QAAQ","names":["$","asHtml","attr","behavior","makelogger","on","ilog","overflowNav","navbar","expandedClass","expandToggle","overflows","isExpanded","toggleExpansion","expand","update","wasHidden","overflow_nav_default"],"sourceRoot":"file:///tmp/b0874495","file":"/missing-js/overflow-nav.js.map"}
|