PageSourceSearch

https://auricartisan.com/js/common/nav-fab.js

js auricartisan.com collected 2026-10-02 01:25:35 UTC 18,303 bytes, 207 lines download raw bytes

1var te=Object.defineProperty;var o=(T,M)=>te(T,"name",{value:M,configurable:!0});(function(){"use strict";try{if(window.self!==window.top||new URLSearchParams(location.search).has("__splitview"))return}catch{}if(document.body?.matches(".auth-entry-page, .auth-verify-entry-page")||window.__aaNavFab)return;window.__aaNavFab=!0;const T="aa-navfab-styles",M="aa_navfab_pos",s={back:'<polyline points="15 18 9 12 15 6"/>',fwd:'<polyline points="9 18 15 12 9 6"/>',reload:'<polyline points="23 4 23 10 17 10"/><path d="M20.49 15A9 9 0 1 1 21 5.64L23 10"/>',copy:'<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/>',share:'<circle cx="18" cy="5" r="3"/><circle cx="6" cy="12" r="3"/><circle cx="18" cy="19" r="3"/><line x1="8.6" y1="13.5" x2="15.4" y2="17.5"/><line x1="15.4" y1="6.5" x2="8.6" y2="10.5"/>',check:'<polyline points="20 6 9 17 4 12"/>',top:'<line x1="12" y1="19" x2="12" y2="5"/><polyline points="6 11 12 5 18 11"/>',bottom:'<line x1="12" y1="5" x2="12" y2="19"/><polyline points="6 13 12 19 18 13"/>',outline:'<line x1="8" y1="6" x2="21" y2="6"/><line x1="8" y1="12" x2="21" y2="12"/><line x1="8" y1="18" x2="21" y2="18"/><circle cx="3.5" cy="6" r="1.2"/><circle cx="3.5" cy="12" r="1.2"/><circle cx="3.5" cy="18" r="1.2"/>',split:'<rect x="3" y="4" width="8" height="16" rx="1.5"/><rect x="13" y="4" width="8" height="16" rx="1.5"/>',record:'<circle cx="12" cy="12" r="8"/><circle cx="12" cy="12" r="3.4" fill="currentColor" stroke="none"/>',grip:'<circle cx="9" cy="6" r="1.3"/><circle cx="15" cy="6" r="1.3"/><circle cx="9" cy="12" r="1.3"/><circle cx="15" cy="12" r="1.3"/><circle cx="9" cy="18" r="1.3"/><circle cx="15" cy="18" r="1.3"/>'},_=o((e,t=18)=>`<svg viewBox="0 0 24 24" width="${t}" height="${t}" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${e}</svg>`,"svg");function j(){if(document.getElementById(T))return;const e=document.createElement("style");e.id=T,e.textContent=`
2.aa-navfab {
3  position: fixed;
4  z-index: 90000;
5  display: flex;
6  flex-direction: column;
7  align-items: center;
8  gap: 1px;
9  padding: 4px;
10  border-radius: 999px;
11  background: color-mix(in srgb, var(--color-bg-card, #16161a) 92%, transparent);
12  border: 1px solid var(--color-border, rgba(245,245,244,.14));
13  box-shadow: 0 10px 30px rgba(0,0,0,.28);
14  -webkit-backdrop-filter: blur(12px) saturate(120%);
15  backdrop-filter: blur(12px) saturate(120%);
16  opacity: .72;
17  transition: left .24s cubic-bezier(.4,0,.2,1), right .24s cubic-bezier(.4,0,.2,1),
18    opacity .2s ease, box-shadow .2s ease, padding .2s ease;
19  touch-action: none;
20}
21.aa-navfab[data-side="left"]  { left: 12px; }
22.aa-navfab[data-side="right"] { right: 12px; }
23.aa-navfab:hover,
24.aa-navfab:focus-within,
25.aa-navfab.is-dragging { opacity: 1; box-shadow: 0 14px 36px rgba(0,0,0,.36); }
26.aa-navfab.is-dragging { transition: none; cursor: grabbing; }
27
28/* body = full controls; tab = slim collapsed handle */
29.aa-navfab__body {
30  display: flex; flex-direction: column; align-items: center; gap: 1px;
31}
32.aa-navfab__tab {
33  display: none;
34  align-items: center; justify-content: center;
35  width: 24px; height: 46px; padding: 0; border: 0;
36  background: transparent; color: var(--color-text-secondary, #b9bdae);
37  border-radius: 999px; cursor: pointer;
38}
39.aa-navfab__tab:hover { color: var(--color-gold, #d3af37); }
40.aa-navfab__tab svg { transition: transform .2s ease; }
41.aa-navfab[data-side="right"] .aa-navfab__tab svg { transform: scaleX(-1); }
42
43/* collapsed = a faint, unobtrusive line at the edge; only brightens on hover */
44.aa-navfab.is-collapsed {
45  width: 3px;
46  height: 64px;
47  min-height: 0;
48  padding: 0;
49  border: 0;
50  border-radius: 999px;
51  background: rgba(var(--color-gold-rgb, 211,175,55), .28);
52  box-shadow: none;
53  -webkit-backdrop-filter: none;
54  backdrop-filter: none;
55  opacity: .5;
56  overflow: visible;
57  cursor: pointer;
58}
59.aa-navfab.is-collapsed:hover {
60  opacity: 1;
61  background: rgb(var(--color-gold-rgb, 211,175,55));
62}
63.aa-navfab.is-collapsed .aa-navfab__body,
64.aa-navfab.is-collapsed .aa-navfab__tab { display: none; }
65/* invisible, wider hit target so the thin line is easy to grab */
66.aa-navfab.is-collapsed::before {
67  content: "";
68  position: absolute;
69  inset: -12px -14px;
70}
71.aa-navfab.is-collapsed[data-side="left"]  { left: 4px; }
72.aa-navfab.is-collapsed[data-side="right"] { right: 4px; }
73
74.aa-navfab__grip {
75  width: 34px; height: 18px;
76  display: grid; place-items: center;
77  color: var(--color-text-secondary, #b9bdae);
78  opacity: .45; cursor: grab;
79}
80.aa-navfab__grip:active { cursor: grabbing; }
81.aa-navfab.is-dragging .aa-navfab__grip { opacity: .9; }
82
83.aa-navfab__btn {
84  position: relative;
85  display: inline-flex; align-items: center; justify-content: center;
86  width: 36px; height: 36px; padding: 0; border: 0;
87  border-radius: 999px;
88  background: transparent;
89  color: var(--color-text-secondary, #b9bdae);
90  cursor: pointer;
91  transition: background .12s, color .12s, transform .12s;
92}
93.aa-navfab__btn:hover {
94  background: rgba(var(--color-gold-rgb, 211,175,55), .16);
95  color: var(--color-gold, #d3af37);
96}
97.aa-navfab__btn:active { transform: scale(.9); }
98.aa-navfab__btn:disabled { opacity: .3; cursor: default; pointer-events: none; }
99.aa-navfab__btn.is-on {
100  background: rgba(var(--color-gold-rgb, 211,175,55), .18);
101  color: var(--color-gold, #d3af37);
102}
103.aa-navfab__sep { width: 20px; height: 1px; margin: 3px 0; background: var(--color-border, rgba(245,245,244,.14)); }
104
105/* scroll-progress ring around the "to top" button */
106.aa-navfab__top { position: relative; }
107.aa-navfab__ring {
108  position: absolute; inset: 2px; border-radius: 999px;
109  background: conic-gradient(rgb(var(--color-gold-rgb,211,175,55)) calc(var(--sv-progress,0)*1%), transparent 0);
110  -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 2.5px), #000 calc(100% - 2px));
111  mask: radial-gradient(farthest-side, transparent calc(100% - 2.5px), #000 calc(100% - 2px));
112  pointer-events: none; opacity: .9;
113}
114
115.aa-navfab__flip svg { transition: transform .2s ease; }
116.aa-navfab[data-side="right"] .aa-navfab__flip svg { transform: scaleX(-1); }
117
118/* \u2500\u2500 outline popover \u2500\u2500 */
119.aa-navfab-outline {
120  position: fixed;
121  z-index: 90001;
122  width: 268px;
123  max-height: 64vh;
124  overflow-y: auto;
125  padding: 6px;
126  border-radius: 12px;
127  background: var(--color-bg-card, #16161a);
128  border: 1px solid var(--color-border, rgba(245,245,244,.16));
129  box-shadow: 0 18px 46px rgba(0,0,0,.34);
130  font-family: var(--font-sans, system-ui, sans-serif);
131  display: none;
132}
133.aa-navfab-outline[data-open="true"] { display: block; }
134.aa-navfab-outline__head {
135  padding: 7px 10px 8px;
136  font: 800 9px/1 var(--font-mono, monospace);
137  letter-spacing: .12em; text-transform: uppercase;
138  color: var(--color-text-secondary, #b9bdae);
139}
140.aa-navfab-outline__item {
141  display: block; width: 100%; text-align: left;
142  padding: 7px 10px; border: 0; border-radius: 8px;
143  background: none; cursor: pointer;
144  font-size: 13px; line-height: 1.3;
145  color: var(--color-text, #f5f5f4);
146  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
147}
148.aa-navfab-outline__item[data-lvl="3"] { padding-left: 24px; font-size: 12.5px; color: var(--color-text-secondary, #b9bdae); }
149.aa-navfab-outline__item:hover { background: rgba(var(--color-gold-rgb,211,175,55), .14); }
150.aa-navfab-outline__item.active {
151  color: var(--color-gold, #d3af37);
152  background: rgba(var(--color-gold-rgb,211,175,55), .1);
153  font-weight: 650;
154}
155.aa-navfab-outline__empty { padding: 14px 12px; text-align: center; color: var(--color-text-secondary, #b9bdae); font-size: 12.5px; }
156
157@media (max-width: 700px) {
158  .aa-navfab,
159  .aa-navfab[data-side="left"],
160  .aa-navfab[data-side="right"] {
161    flex-direction: row; top: auto !important;
162    bottom: max(16px, env(safe-area-inset-bottom));
163    left: 50%; right: auto; transform: translateX(-50%) !important;
164    max-width: calc(100vw - 16px);
165  }
166  .aa-navfab__body {
167    flex-direction: row;
168    max-width: calc(100vw - 26px);
169    overflow-x: auto;
170    overscroll-behavior-inline: contain;
171    scrollbar-width: none;
172  }
173  .aa-navfab__body::-webkit-scrollbar { display: none; }
174  .aa-navfab__btn { flex: 0 0 40px; width: 40px; height: 40px; }
175  .aa-navfab__grip,
176  .aa-navfab__flip { display: none; }
177  .aa-navfab__sep { width: 1px; height: 20px; margin: 0 3px; }
178  .aa-navfab.is-collapsed,
179  .aa-navfab.is-collapsed[data-side="left"],
180  .aa-navfab.is-collapsed[data-side="right"] {
181    width: 44px;
182    height: 44px;
183    min-height: 44px;
184    padding: 0;
185    left: 50%;
186    right: auto;
187    bottom: max(16px, env(safe-area-inset-bottom));
188    border: 1px solid var(--color-border, rgba(245,245,244,.16));
189    border-radius: 999px;
190    background: color-mix(in srgb, var(--color-bg-card, #16161a) 94%, transparent);
191    box-shadow: 0 8px 24px rgba(0,0,0,.22);
192    opacity: .94;
193    overflow: visible;
194  }
195  .aa-navfab.is-collapsed::before { display: none; }
196  .aa-navfab.is-collapsed .aa-navfab__body { display: none; }
197  .aa-navfab.is-collapsed .aa-navfab__tab {
198    display: inline-flex;
199    width: 44px;
200    height: 44px;
201    color: var(--color-gold, #d3af37);
202  }
203}
204@media (prefers-reduced-motion: reduce) {
205  .aa-navfab, .aa-navfab__btn, .aa-navfab__btn svg, .aa-navfab__flip svg { transition: none; }
206}
207`,document.head.appendChild(e)}o(j,"ensureStyles");let a,B,u,A,S,w,k,v,E,i=null,x=[],R=0,g=!1,N=null;const L=o(()=>window.innerWidth<=700,"isMobileDock");function h(e){g=!!e,a&&a.classList.toggle("is-collapsed",g)}o(h,"setCollapsed");function m(){clearTimeout(N),g&&h(!1)}o(m,"expandDock");function C(e=480){clearTimeout(N),N=setTimeout(()=>{a&&(a.matches(":hover")||a.contains(document.activeElement)||i&&i.dataset.open==="true"||h(!0))},e)}o(C,"scheduleCollapse");function p(e,t,r){const n=document.createElement("button");return n.type="button",n.className="aa-navfab__btn "+(r||""),n.setAttribute("aria-label",t),n.dataset.tooltipTitle=t,n.innerHTML=_(e),n}o(p,"mkBtn");function P(){const e=window.navigation;e&&"canGoBack"in e&&(A.disabled=!e.canGoBack,S.disabled=!e.canGoForward)}o(P,"refreshHistoryButtons");function I(e,t){if(e._busy)return;e._busy=!0;const r=e.dataset.icon;e.innerHTML=_(t||s.check),e.classList.add("is-on"),setTimeout(()=>{e.innerHTML=_(s[r]),e.classList.remove("is-on"),e._busy=!1},1100)}o(I,"flash");function G(){const e=location.href,t=o(()=>I(w),"done"),r=o(()=>{try{const n=document.createElement("textarea");n.value=e,n.style.cssText="position:fixed;left:-9999px",document.body.appendChild(n),n.select(),document.execCommand("copy"),n.remove(),t()}catch{}},"fallback");try{navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(e).then(t).cat
207ch(r):r()}catch{r()}}o(G,"copyLink");function W(){const e={title:document.title,url:location.href};try{if(navigator.share){navigator.share(e).catch(()=>{});return}}catch{}try{navigator.clipboard&&navigator.clipboard.writeText(location.href).then(()=>I(k))}catch{}}o(W,"sharePage");function D(){const e=document.documentElement;return Math.max(1,(e.scrollHeight||0)-window.innerHeight)}o(D,"scrollMax");function z(){const e=window.scrollY||document.documentElement.scrollTop||0;E&&E.style.setProperty("--sv-progress",Math.min(100,Math.round(e/D()*100))),i&&i.dataset.open==="true"&&$()}o(z,"onScroll");function J(){try{return JSON.parse(localStorage.getItem(M))||{}}catch{return{}}}o(J,"loadPos");function Y(e){try{localStorage.setItem(M,JSON.stringify(e))}catch{}}o(Y,"savePos");function K(e){a.dataset.side=e.side==="right"?"right":"left";const t=typeof e.top=="number"?e.top:50;a.style.top=t+"%",a.style.transform="translateY(-50%)"}o(K,"applyPos");function U(e){let t=0,r=50,n=!1;e.addEventListener("pointerdown",d=>{if(window.innerWidth<=700)return;d.preventDefault(),n=!0,a.classList.add("is-dragging"),e.setPointerCapture&&e.setPointerCapture(d.pointerId),t=d.clientY;const f=a.getBoundingClientRect();r=(f.top+f.height/2)/window.innerHeight*100}),e.addEventListener("pointermove",d=>{if(!n)return;const f=d.clientY-t;let b=r+f/window.innerHeight*100;b=Math.max(10,Math.min(90,b)),a.style.top=b+"%";
207const y=d.clientX<window.innerWidth/2?"left":"right";a.dataset.side=y});const c=o(d=>{if(!n)return;n=!1,a.classList.remove("is-dragging");try{e.releasePointerCapture&&e.releasePointerCapture(d.pointerId)}catch{}const f=a.getBoundingClientRect(),b=(f.top+f.height/2)/window.innerHeight*100;Y({side:a.dataset.side,top:Math.round(b)})},"end");e.addEventListener("pointerup",c),e.addEventListener("pointercancel",c)}o(U,"initDrag");function V(){const e=document.querySelector("main")||document.querySelector("[role='main']")||document.body;return x=Array.from(e.querySelectorAll("h1, h2, h3")).filter(r=>{if(r.closest(".aa-navfab, .aa-header, footer, nav, [aria-hidden='true']"))return!1;const n=(r.textContent||"").trim();if(!n||n.length>90)return!1;const c=r.getBoundingClientRect();return c.width>0||c.height>0||r.offsetParent!==null}),x}o(V,"collectHeadings");function q(){const e=document.querySelector(".aa-header");return(e?e.getBoundingClientRect().height:0)+16}o(q,"headingOffset");function $(){if(!i)return;const e=q()+4;let t=0;x.forEach((n,c)=>{n.getBoundingClientRect().top-e<=0&&(t=c)}),i.querySelectorAll(".aa-navfab-outline__item").forEach((n,c)=>{n.classList.toggle("active",c===t)});const r=i.querySelector(".aa-navfab-outline__item.active");r&&r.scrollIntoView({block:"nearest"})}o($,"updateActiveHeading");function Q(){if(i||(i=document.createElement("div"),i.className="aa-navfab-outline",i.setAttribute("role","menu"),i.dataset.open="false",document.body.appendChild(i),document.addEventListener("click",t=>{Date.now()-R<260||i.dataset.open==="true"&&!i.contains(t.target)&&!a.contains(t.target)&&H()}),document.addEventListener("keydown",t=>{t.key==="Escape"&&i.dataset.open==="true"&&H()})),V(),!x.length){i.innerHTML='<div class="aa-navfab-outline__empty">No sections on this page</div>';return}let e='<div class="aa-navfab-outline__head">On this page</div>';x.forEach((t,r)=>{const n=t.tagName==="H3"?3:2,c=(t.textContent||"").trim().replace(/[<>&]/g,d=>({"<":"&lt;",">":"&gt;","&":"&amp;"})[d]);e+=`<button class="aa-navfab-outline__item" data-i="${r}" data-lvl="${n}" role="menuitem">${c}</button>`}),i.innerHTML=e,i.querySelectorAll(".aa-navfab-outline__item").forEach(t=>{t.addEventListener("click",()=>{const r=x[parseInt(t.dataset.i,10)];if(!r)return;const n=r.getBoundingClientRect().top+window.scrollY-q();window.scrollTo({top:Math.max(0,n),behavior:"smooth"}),H()})})}o(Q,"buildOutline");function O(){if(!i||!v)return;const e=v.getBoundingClientRect(),r=a.dataset.side==="left"?Math.round(e.right+10):Math.round(e.left-268-10);i.style.left=Math.max(8,r)+"px";let n=Math.round(e.top);const c=window.innerHeight-Math.min(i.offsetHeight||320,window.innerHeight*.64)-10;i.style.top=Math.max(10,Math.min(n,c))+"px"}o(O,"positionOutline");function Z(){Q(),i.dataset.open="true",R=Date.now(),v.classList.add("is-on"),O(),$()}o(Z,"openOutline");function H(){i&&(i.dataset.open="false",v.classList.remove("is-on"))}o(H,"closeOutline");function ee(){i&&i.dataset.open==="true"?H():Z()}o(ee,"toggleOutline");function F(){j(),a=document.createElement("div"),a.className="aa-navfab",a.setAttribute("role","group"),a.setAttribute("aria-label","Page navigation");const e=document.createElement("div");e.className="aa-navfab__grip",e.setAttribute("aria-hidden","true"),e.title="Drag to move",e.innerHTML=_(s.grip,16),A=p(s.back,"Back"),S=p(s.fwd,"Forward");const t=p(s.reload,"Reload");v=p(s.outline,"Page outline");const r=p(s.split,"Open split view"),n=p(s.record,"Record screen (Alt+Shift+R)");w=p(s.copy,"Copy link"),w.dataset.icon="copy",k=p(s.share,"Share"),k.dataset.icon="share";const c=p(s.top,"Scroll to top","aa-navfab__top");E=document.createElement("span"),E.className="aa-navfab__ring",c.appendChild(E);const d=p(s.bottom,"Scroll to bottom"),f=p(s.fwd,"Flip dock side","aa-navfab__flip");A.addEventListener("click",()=>history.back()),S.addEventListener("click",()=>history.forward()),t.addEventListener("click",()=>location.reload()),v.addEventListener("click",ee),r.addEventListener("click",()=>{try{window.dispatchEvent(new Event("auric:split-toggle"))}catch{}}),n.addEventListener("click",()=>{try{window.AARecorder?.open()}catch{}}),w.addEventListener("click",G),k.addEventListener("click",W),c.addEventListener("click",()=>window.scrollTo({top:0,behavior:"smooth"})),d.addEventListener("click",()=>window.scrollTo({top:D(),behavior:"smooth"})),f.addEventListener("click",()=>{const l=a.dataset.side==="left"?"right":"left";a.dataset.side=l;const X=a.getBoundingClientRect();Y({side:l,top:Math.round((X.top+X.height/2)/window.innerHeight*100)}),i&&i.dataset.open==="true"&&O()});const b=o(()=>{const l=document.createElement("div");return l.className="aa-navfab__sep",l},"mkSep");B=document.createElement("div"),B.className="aa-navfab__body",[e,A,S,t,b(),v,r,n,w,k,b(),c,d,f].forEach(l=>B.appendChild(l)),u=document.createElement("button"),u.type="button",u.className="aa-navfab__tab",u.setAttribute("aria-label","Show navigation"),u.dataset.tooltipTitle="Navigation",u.innerHTML=_(s.outline,18),u.addEventListener("click",()=>{m(),L()&&C(5e3)}),a.appendChild(u),a.appendChild(B),document.body.appendChild(a),K(J()),U(e),a.addEventListener("pointerenter",m),a.addEventListener("pointerleave",()=>C()),a.addEventListener("click",l=>{g&&(l.stopPropagation(),m())}),a.addEventListener("focusin",m),a.addEventListener("focusout",()=>C()),h(L()),L()||setTimeout(()=>C(1600),0),document.addEventListener("click",l=>{L()&&!g&&a&&!a.contains(l.target)&&h(!0)}),window.AANavDock={expand:m,collapse:o(()=>h(!0),"collapse"),toggle:o(()=>g?m():h(!0),"toggle"),isCollapsed:o(()=>g,"isCollapsed")},P();const y=window.navigation;y&&typeof y.addEventListener=="function"?y.addEventListener("currententrychange",P):window.addEventListener("popstate",P),window.addEventListener("scroll",z,{passive:!0}),window.addEventListener("resize",()=>{L()?h(!0):C(200),i&&i.dataset.open==="true"&&O()},{passive:!0}),z();try{typeof window.AAInitTooltips=="function"&&window.AAInitTooltips(a)}catch{}}o(F,"build"),document.body?F():document.addEventListener("DOMContentLoaded",F,{once:!0})})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.