@columbia-libraries/cul-toolkit 5.2.0 → 5.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -6
- package/dist/assets/main.js +1 -1
- package/dist/bundles/cul-menu.bundle.es.js +2 -2
- package/dist/bundles/cul-menu.bundle.js +2 -2
- package/package.json +3 -2
- package/src/scss/_cul.scss +122 -0
- package/src/scss/_sidebars.scss +40 -0
- package/src/scss/_variables.scss +3 -0
- package/src/scss/styles.scss +5 -0
package/README.md
CHANGED
|
@@ -212,13 +212,13 @@ Standalone bundle:
|
|
|
212
212
|
|
|
213
213
|
#### ES module app usage
|
|
214
214
|
|
|
215
|
-
*Installation*
|
|
215
|
+
##### *Installation*
|
|
216
216
|
|
|
217
217
|
```bash
|
|
218
218
|
npm install @columbia-libraries/cul-toolkit
|
|
219
219
|
```
|
|
220
220
|
|
|
221
|
-
*Import and usage*
|
|
221
|
+
##### *Import and usage*
|
|
222
222
|
|
|
223
223
|
```js
|
|
224
224
|
import '@columbia-libraries/cul-toolkit/styles';
|
|
@@ -233,7 +233,35 @@ const MENU_URL =
|
|
|
233
233
|
makeCULmenu(MENU_URL);
|
|
234
234
|
```
|
|
235
235
|
|
|
236
|
-
*
|
|
236
|
+
##### *Importing Individual SCSS Partials*
|
|
237
|
+
|
|
238
|
+
SCSS source files are exposed enabling finer‑grained control and theming.
|
|
239
|
+
|
|
240
|
+
**Important:** To ensure CUL Toolkit variable overrides work, import `_variables.scss` **before** Bootstrap's variables:
|
|
241
|
+
|
|
242
|
+
```scss
|
|
243
|
+
// Step 1: Bootstrap core functions
|
|
244
|
+
@import "bootstrap/scss/functions";
|
|
245
|
+
|
|
246
|
+
// Step 2: CUL Toolkit variables (must come before Bootstrap variables)
|
|
247
|
+
@import "@columbia-libraries/cul-toolkit/src/scss/_variables";
|
|
248
|
+
|
|
249
|
+
// Step 3: Bootstrap variables and core
|
|
250
|
+
@import "bootstrap/scss/variables";
|
|
251
|
+
@import "bootstrap/scss/bootstrap";
|
|
252
|
+
|
|
253
|
+
// Step 4: Blacklight overrides (optional)
|
|
254
|
+
@import "blacklight-frontend/app/assets/stylesheets/blacklight/blacklight";
|
|
255
|
+
|
|
256
|
+
// Step 5: CUL Toolkit components
|
|
257
|
+
@import "@columbia-libraries/cul-toolkit/src/scss/_cul";
|
|
258
|
+
@import "@columbia-libraries/cul-toolkit/src/scss/_sidebars";
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
This allows you to override variables, functions, or partials before compiling with your own build pipeline (Sass, Rails asset pipeline, Webpack, Vite, etc.).
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
##### *Framework Notes*
|
|
237
265
|
|
|
238
266
|
makeCULmenu(MENU_URL) manipulates DOM elements with [data-cul-menu].
|
|
239
267
|
It must be called after the elements exist in the DOM:
|
|
@@ -241,7 +269,7 @@ makeCULmenu(MENU_URL);
|
|
|
241
269
|
- Vue: call after app.mount() or inside onMounted() / nextTick().
|
|
242
270
|
- React: call inside useEffect(() => { ... }, []).
|
|
243
271
|
|
|
244
|
-
*Vue note:*
|
|
272
|
+
###### *Vue note:*
|
|
245
273
|
```js
|
|
246
274
|
import { createApp, nextTick } from 'vue';
|
|
247
275
|
import App from './App.vue';
|
|
@@ -261,11 +289,11 @@ onMounted(() => {
|
|
|
261
289
|
});
|
|
262
290
|
```
|
|
263
291
|
|
|
264
|
-
*React/other frameworks:*
|
|
292
|
+
###### *React/other frameworks:*
|
|
265
293
|
|
|
266
294
|
Call after the component that contains [data-my-menu] has mounted.
|
|
267
295
|
|
|
268
|
-
*Markup requirement*
|
|
296
|
+
##### *Markup requirement*
|
|
269
297
|
|
|
270
298
|
Must include target element: <nav data-my-menu></nav>
|
|
271
299
|
|
package/dist/assets/main.js
CHANGED
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
* Bootstrap v5.3.8 (https://getbootstrap.com/)
|
|
3
3
|
* Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
4
4
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
5
|
-
*/const Z=new Map,we={set(s,t,e){Z.has(s)||Z.set(s,new Map);const i=Z.get(s);if(!i.has(t)&&i.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(i.keys())[0]}.`);return}i.set(t,e)},get(s,t){return Z.has(s)&&Z.get(s).get(t)||null},remove(s,t){if(!Z.has(s))return;const e=Z.get(s);e.delete(t),e.size===0&&Z.delete(s)}},qn=1e6,Xn=1e3,Fe="transitionend",Si=s=>(s&&window.CSS&&window.CSS.escape&&(s=s.replace(/#([^\s"#']+)/g,(t,e)=>`#${CSS.escape(e)}`)),s),Qn=s=>s==null?`${s}`:Object.prototype.toString.call(s).match(/\s([a-z]+)/i)[1].toLowerCase(),Jn=s=>{do s+=Math.floor(Math.random()*qn);while(document.getElementById(s));return s},Zn=s=>{if(!s)return 0;let{transitionDuration:t,transitionDelay:e}=window.getComputedStyle(s);const i=Number.parseFloat(t),n=Number.parseFloat(e);return!i&&!n?0:(t=t.split(",")[0],e=e.split(",")[0],(Number.parseFloat(t)+Number.parseFloat(e))*Xn)},Li=s=>{s.dispatchEvent(new Event(Fe))},G=s=>!s||typeof s!="object"?!1:(typeof s.jquery<"u"&&(s=s[0]),typeof s.nodeType<"u"),tt=s=>G(s)?s.jquery?s[0]:s:typeof s=="string"&&s.length>0?document.querySelector(Si(s)):null,Mt=s=>{if(!G(s)||s.getClientRects().length===0)return!1;const t=getComputedStyle(s).getPropertyValue("visibility")==="visible",e=s.closest("details:not([open])");if(!e)return t;if(e!==s){const i=s.closest("summary");if(i&&i.parentNode!==e||i===null)return!1}return t},et=s=>!s||s.nodeType!==Node.ELEMENT_NODE||s.classList.contains("disabled")?!0:typeof s.disabled<"u"?s.disabled:s.hasAttribute("disabled")&&s.getAttribute("disabled")!=="false",Di=s=>{if(!document.documentElement.attachShadow)return null;if(typeof s.getRootNode=="function"){const t=s.getRootNode();return t instanceof ShadowRoot?t:null}return s instanceof ShadowRoot?s:s.parentNode?Di(s.parentNode):null},ue=()=>{},Kt=s=>{s.offsetHeight},$i=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,Ce=[],tr=s=>{document.readyState==="loading"?(Ce.length||document.addEventListener("DOMContentLoaded",()=>{for(const t of Ce)t()}),Ce.push(s)):s()},H=()=>document.documentElement.dir==="rtl",j=s=>{tr(()=>{const t=$i();if(t){const e=s.NAME,i=t.fn[e];t.fn[e]=s.jQueryInterface,t.fn[e].Constructor=s,t.fn[e].noConflict=()=>(t.fn[e]=i,s.jQueryInterface)}})},M=(s,t=[],e=s)=>typeof s=="function"?s.call(...t):e,Ii=(s,t,e=!0)=>{if(!e){M(s);return}const n=Zn(t)+5;let r=!1;const o=({target:a})=>{a===t&&(r=!0,t.removeEventListener(Fe,o),M(s))};t.addEventListener(Fe,o),setTimeout(()=>{r||Li(t)},n)},ss=(s,t,e,i)=>{const n=s.length;let r=s.indexOf(t);return r===-1?!e&&i?s[n-1]:s[0]:(r+=e?1:-1,i&&(r=(r+n)%n),s[Math.max(0,Math.min(r,n-1))])},er=/[^.]*(?=\..*)\.|.*/,sr=/\..*/,ir=/::\d+$/,Oe={};let ws=1;const Mi={mouseenter:"mouseover",mouseleave:"mouseout"},nr=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function xi(s,t){return t&&`${t}::${ws++}`||s.uidEvent||ws++}function Pi(s){const t=xi(s);return s.uidEvent=t,Oe[t]=Oe[t]||{},Oe[t]}function rr(s,t){return function e(i){return is(i,{delegateTarget:s}),e.oneOff&&c.off(s,i.type,t),t.apply(s,[i])}}function or(s,t,e){return function i(n){const r=s.querySelectorAll(t);for(let{target:o}=n;o&&o!==this;o=o.parentNode)for(const a of r)if(a===o)return is(n,{delegateTarget:o}),i.oneOff&&c.off(s,n.type,t,e),e.apply(o,[n])}}function Ri(s,t,e=null){return Object.values(s).find(i=>i.callable===t&&i.delegationSelector===e)}function ki(s,t,e){const i=typeof t=="string",n=i?e:t||e;let r=Vi(s);return nr.has(r)||(r=s),[i,n,r]}function Cs(s,t,e,i,n){if(typeof t!="string"||!s)return;let[r,o,a]=ki(t,e,i);t in Mi&&(o=(y=>function(_){if(!_.relatedTarget||_.relatedTarget!==_.delegateTarget&&!_.delegateTarget.contains(_.relatedTarget))return y.call(this,_)})(o));const l=Pi(s),h=l[a]||(l[a]={}),u=Ri(h,o,r?e:null);if(u){u.oneOff=u.oneOff&&n;return}const f=xi(o,t.replace(er,"")),m=r?or(s,e,o):rr(s,o);m.delegationSelector=r?e:null,m.callable=o,m.oneOff=n,m.uidEvent=f,h[f]=m,s.addEventListener(a,m,r)}function Ke(s,t,e,i,n){const r=Ri(t[e],i,n);r&&(s.removeEventListener(e,r,!!n),delete t[e][r.uidEvent])}function ar(s,t,e,i){const n=t[e]||{};for(const[r,o]of Object.entries(n))r.includes(i)&&Ke(s,t,e,o.callable,o.delegationSelector)}function Vi(s){return s=s.replace(sr,""),Mi[s]||s}const c={on(s,t,e,i){Cs(s,t,e,i,!1)},one(s,t,e,i){Cs(s,t,e,i,!0)},off(s,t,e,i){if(typeof t!="string"||!s)return;const[n,r,o]=ki(t,e,i),a=o!==t,l=Pi(s),h=l[o]||{},u=t.startsWith(".");if(typeof r<"u"){if(!Object.keys(h).length)return;Ke(s,l,o,r,n?e:null);return}if(u)for(const f of Object.keys(l))ar(s,l,f,t.slice(1));for(const[f,m]of Object.entries(h)){const p=f.replace(ir,"");(!a||t.includes(p))&&Ke(s,l,o,m.callable,m.delegationSelector)}},trigger(s,t,e){if(typeof t!="string"||!s)return null;const i=$i(),n=Vi(t),r=t!==n;let o=null,a=!0,l=!0,h=!1;r&&i&&(o=i.Event(t,e),i(s).trigger(o),a=!o.isPropagationStopped(),l=!o.isImmediatePropagationStopped(),h=o.isDefaultPrevented());const u=is(new Event(t,{bubbles:a,cancelable:!0}),e);return h&&u.preventDefault(),l&&s.dispatchEvent(u),u.defaultPrevented&&o&&o.preventDefault(),u}};function is(s,t={}){for(const[e,i]of Object.entries(t))try{s[e]=i}catch{Object.defineProperty(s,e,{configurable:!0,get(){return i}})}return s}function Os(s){if(s==="true")return!0;if(s==="false")return!1;if(s===Number(s).toString())return Number(s);if(s===""||s==="null")return null;if(typeof s!="string")return s;try{return JSON.parse(decodeURIComponent(s))}catch{return s}}function Ne(s){return s.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}const q={setDataAttribute(s,t,e){s.setAttribute(`data-bs-${Ne(t)}`,e)},removeDataAttribute(s,t){s.removeAttribute(`data-bs-${Ne(t)}`)},getDataAttributes(s){if(!s)return{};const t={},e=Object.keys(s.dataset).filter(i=>i.startsWith("bs")&&!i.startsWith("bsConfig"));for(const i of e){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1),t[n]=Os(s.dataset[i])}return t},getDataAttribute(s,t){return Os(s.getAttribute(`data-bs-${Ne(t)}`))}};class Yt{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=G(e)?q.getDataAttribute(e,"config"):{};return{...this.constructor.Default,...typeof i=="object"?i:{},...G(e)?q.getDataAttributes(e):{},...typeof t=="object"?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[i,n]of Object.entries(e)){const r=t[i],o=G(r)?"element":Qn(r);if(!new RegExp(n).test(o))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${o}" but expected type "${n}".`)}}}const lr="5.3.8";class K extends Yt{constructor(t,e){super(),t=tt(t),t&&(this._element=t,this._config=this._getConfig(e),we.set(this._element,this.constructor.DATA_KEY,this))}dispose(){we.remove(this._element,this.constructor.DATA_KEY),c.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){Ii(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return we.get(tt(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,typeof e=="object"?e:null)}static get VERSION(){return lr}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const Se=s=>{let t=s.getAttribute("data-bs-target");if(!t||t==="#"){let e=s.getAttribute("href");if(!e||!e.includes("#")&&!e.startsWith("."))return null;e.includes("#")&&!e.startsWith("#")&&(e=`#${e.split("#")[1]}`),t=e&&e!=="#"?e.trim():null}return t?t.split(",").map(e=>Si(e)).join(","):null},d={find(s,t=document.documentElement){return[].concat(...Element.prototype.querySelectorAll.call(t,s))},findOne(s,t=document.documentElement){return Element.prototype.querySelector.call(t,s)},children(s,t){return[].concat(...s.children).filter(e=>e.matches(t))},parents(s,t){const e=[];let i=s.parentNode.closest(t);for(;i;)e.push(i),i=i.parentNode.closest(t);return e},prev(s,t){let e=s.previousElementSibling;for(;e;){if(e.matches(t))return[e];e=e.previousElementSibling}return[]},next(s,t){let e=s.nextElementSibling;for(;e;){if(e.matches(t))return[e];e=e.nextElementSibling}return[]},focusableChildren(s){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(e=>`${e}:not([tabindex^="-"])`).join(",");return this.find(t,s).filter(e=>!et(e)&&Mt(e))},getSelectorFromElement(s){const t=Se(s);return t&&d.findOne(t)?t:null},getElementFromSelector(s){const t=Se(s);return t?d.findOne(t):null},getMultipleElementsFromSelector(s){const t=Se(s);return t?d.find(t):[]}},me=(s,t="hide")=>{const e=`click.dismiss${s.EVENT_KEY}`,i=s.NAME;c.on(document,e,`[data-bs-dismiss="${i}"]`,function(n){if(["A","AREA"].includes(this.tagName)&&n.preventDefault(),et(this))return;const r=d.getElementFromSelector(this)||this.closest(`.${i}`);s.getOrCreateInstance(r)[t]()})},cr="alert",ur="bs.alert",Hi=`.${ur}`,hr=`close${Hi}`,dr=`closed${Hi}`,fr="fade",pr="show";class _e extends K{static get NAME(){return cr}close(){if(c.trigger(this._element,hr).defaultPrevented)return;this._element.classList.remove(pr);const e=this._element.classList.contains(fr);this._queueCallback(()=>this._destroyElement(),this._element,e)}_destroyElement(){this._element.remove(),c.trigger(this._element,dr),this.dispose()}static jQueryInterface(t){return this.each(function(){const e=_e.getOrCreateInstance(this);if(typeof t=="string"){if(e[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);e[t](this)}})}}me(_e,"close");j(_e);const mr="button",_r="bs.button",gr=`.${_r}`,Er=".data-api",vr="active",Ns='[data-bs-toggle="button"]',br=`click${gr}${Er}`;class ge extends K{static get NAME(){return mr}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle(vr))}static jQueryInterface(t){return this.each(function(){const e=ge.getOrCreateInstance(this);t==="toggle"&&e[t]()})}}c.on(document,br,Ns,s=>{s.preventDefault();const t=s.target.closest(Ns);ge.getOrCreateInstance(t).toggle()});j(ge);const yr="swipe",xt=".bs.swipe",Ar=`touchstart${xt}`,Tr=`touchmove${xt}`,wr=`touchend${xt}`,Cr=`pointerdown${xt}`,Or=`pointerup${xt}`,Nr="touch",Sr="pen",Lr="pointer-event",Dr=40,$r={endCallback:null,leftCallback:null,rightCallback:null},Ir={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class he extends Yt{constructor(t,e){super(),this._element=t,!(!t||!he.isSupported())&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=!!window.PointerEvent,this._initEvents())}static get Default(){return $r}static get DefaultType(){return Ir}static get NAME(){return yr}dispose(){c.off(this._element,xt)}_start(t){if(!this._supportPointerEvents){this._deltaX=t.touches[0].clientX;return}this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX)}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),M(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=Dr)return;const e=t/this._deltaX;this._deltaX=0,e&&M(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(c.on(this._element,Cr,t=>this._start(t)),c.on(this._element,Or,t=>this._end(t)),this._element.classList.add(Lr)):(c.on(this._element,Ar,t=>this._start(t)),c.on(this._element,Tr,t=>this._move(t)),c.on(this._element,wr,t=>this._end(t)))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&(t.pointerType===Sr||t.pointerType===Nr)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const Mr="carousel",xr="bs.carousel",nt=`.${xr}`,Wi=".data-api",Pr="ArrowLeft",Rr="ArrowRight",kr=500,Vt="next",vt="prev",At="left",ae="right",Vr=`slide${nt}`,Le=`slid${nt}`,Hr=`keydown${nt}`,Wr=`mouseenter${nt}`,jr=`mouseleave${nt}`,Br=`dragstart${nt}`,Fr=`load${nt}${Wi}`,Kr=`click${nt}${Wi}`,ji="carousel",te="active",Yr="slide",Ur="carousel-item-end",zr="carousel-item-start",Gr="carousel-item-next",qr="carousel-item-prev",Bi=".active",Fi=".carousel-item",Xr=Bi+Fi,Qr=".carousel-item img",Jr=".carousel-indicators",Zr="[data-bs-slide], [data-bs-slide-to]",to='[data-bs-ride="carousel"]',eo={[Pr]:ae,[Rr]:At},so={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},io={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class Ut extends K{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=d.findOne(Jr,this._element),this._addEventListeners(),this._config.ride===ji&&this.cycle()}static get Default(){return so}static get DefaultType(){return io}static get NAME(){return Mr}next(){this._slide(Vt)}nextWhenVisible(){!document.hidden&&Mt(this._element)&&this.next()}prev(){this._slide(vt)}pause(){this._isSliding&&Li(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval(()=>this.nextWhenVisible(),this._config.interval)}_maybeEnableCycle(){if(this._config.ride){if(this._isSliding){c.one(this._element,Le,()=>this.cycle());return}this.cycle()}}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding){c.one(this._element,Le,()=>this.to(t));return}const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?Vt:vt;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&c.on(this._element,Hr,t=>this._keydown(t)),this._config.pause==="hover"&&(c.on(this._element,Wr,()=>this.pause()),c.on(this._element,jr,()=>this._maybeEnableCycle())),this._config.touch&&he.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const i of d.find(Qr,this._element))c.on(i,Br,n=>n.preventDefault());const e={leftCallback:()=>this._slide(this._directionToOrder(At)),rightCallback:()=>this._slide(this._directionToOrder(ae)),endCallback:()=>{this._config.pause==="hover"&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(()=>this._maybeEnableCycle(),kr+this._config.interval))}};this._swipeHelper=new he(this._element,e)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=eo[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=d.findOne(Bi,this._indicatorsElement);e.classList.remove(te),e.removeAttribute("aria-current");const i=d.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(te),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===Vt,r=e||ss(this._getItems(),i,n,this._config.wrap);if(r===i)return;const o=this._getItemIndex(r),a=p=>c.trigger(this._element,p,{relatedTarget:r,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(a(Vr).defaultPrevented||!i||!r)return;const h=!!this._interval;this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=r;const u=n?zr:Ur,f=n?Gr:qr;r.classList.add(f),Kt(r),i.classList.add(u),r.classList.add(u);const m=()=>{r.classList.remove(u,f),r.classList.add(te),i.classList.remove(te,f,u),this._isSliding=!1,a(Le)};this._queueCallback(m,i,this._isAnimated()),h&&this.cycle()}_isAnimated(){return this._element.classList.contains(Yr)}_getActive(){return d.findOne(Xr,this._element)}_getItems(){return d.find(Fi,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return H()?t===At?vt:Vt:t===At?Vt:vt}_orderToDirection(t){return H()?t===vt?At:ae:t===vt?ae:At}static jQueryInterface(t){return this.each(function(){const e=Ut.getOrCreateInstance(this,t);if(typeof t=="number"){e.to(t);return}if(typeof t=="string"){if(e[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);e[t]()}})}}c.on(document,Kr,Zr,function(s){const t=d.getElementFromSelector(this);if(!t||!t.classList.contains(ji))return;s.preventDefault();const e=Ut.getOrCreateInstance(t),i=this.getAttribute("data-bs-slide-to");if(i){e.to(i),e._maybeEnableCycle();return}if(q.getDataAttribute(this,"slide")==="next"){e.next(),e._maybeEnableCycle();return}e.prev(),e._maybeEnableCycle()});c.on(window,Fr,()=>{const s=d.find(to);for(const t of s)Ut.getOrCreateInstance(t)});j(Ut);const no="collapse",ro="bs.collapse",zt=`.${ro}`,oo=".data-api",ao=`show${zt}`,lo=`shown${zt}`,co=`hide${zt}`,uo=`hidden${zt}`,ho=`click${zt}${oo}`,De="show",wt="collapse",ee="collapsing",fo="collapsed",po=`:scope .${wt} .${wt}`,mo="collapse-horizontal",_o="width",go="height",Eo=".collapse.show, .collapse.collapsing",Ye='[data-bs-toggle="collapse"]',vo={parent:null,toggle:!0},bo={parent:"(null|element)",toggle:"boolean"};class Bt extends K{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=d.find(Ye);for(const n of i){const r=d.getSelectorFromElement(n),o=d.find(r).filter(a=>a===this._element);r!==null&&o.length&&this._triggerArray.push(n)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return vo}static get DefaultType(){return bo}static get NAME(){return no}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(Eo).filter(a=>a!==this._element).map(a=>Bt.getOrCreateInstance(a,{toggle:!1}))),t.length&&t[0]._isTransitioning||c.trigger(this._element,ao).defaultPrevented)return;for(const a of t)a.hide();const i=this._getDimension();this._element.classList.remove(wt),this._element.classList.add(ee),this._element.style[i]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=()=>{this._isTransitioning=!1,this._element.classList.remove(ee),this._element.classList.add(wt,De),this._element.style[i]="",c.trigger(this._element,lo)},o=`scroll${i[0].toUpperCase()+i.slice(1)}`;this._queueCallback(n,this._element,!0),this._element.style[i]=`${this._element[o]}px`}hide(){if(this._isTransitioning||!this._isShown()||c.trigger(this._element,co).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,Kt(this._element),this._element.classList.add(ee),this._element.classList.remove(wt,De);for(const n of this._triggerArray){const r=d.getElementFromSelector(n);r&&!this._isShown(r)&&this._addAriaAndCollapsedClass([n],!1)}this._isTransitioning=!0;const i=()=>{this._isTransitioning=!1,this._element.classList.remove(ee),this._element.classList.add(wt),c.trigger(this._element,uo)};this._element.style[e]="",this._queueCallback(i,this._element,!0)}_isShown(t=this._element){return t.classList.contains(De)}_configAfterMerge(t){return t.toggle=!!t.toggle,t.parent=tt(t.parent),t}_getDimension(){return this._element.classList.contains(mo)?_o:go}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Ye);for(const e of t){const i=d.getElementFromSelector(e);i&&this._addAriaAndCollapsedClass([e],this._isShown(i))}}_getFirstLevelChildren(t){const e=d.find(po,this._config.parent);return d.find(t,this._config.parent).filter(i=>!e.includes(i))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle(fo,!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return typeof t=="string"&&/show|hide/.test(t)&&(e.toggle=!1),this.each(function(){const i=Bt.getOrCreateInstance(this,e);if(typeof t=="string"){if(typeof i[t]>"u")throw new TypeError(`No method named "${t}"`);i[t]()}})}}c.on(document,ho,Ye,function(s){(s.target.tagName==="A"||s.delegateTarget&&s.delegateTarget.tagName==="A")&&s.preventDefault();for(const t of d.getMultipleElementsFromSelector(this))Bt.getOrCreateInstance(t,{toggle:!1}).toggle()});j(Bt);const Ss="dropdown",yo="bs.dropdown",_t=`.${yo}`,ns=".data-api",Ao="Escape",Ls="Tab",To="ArrowUp",Ds="ArrowDown",wo=2,Co=`hide${_t}`,Oo=`hidden${_t}`,No=`show${_t}`,So=`shown${_t}`,Ki=`click${_t}${ns}`,Yi=`keydown${_t}${ns}`,Lo=`keyup${_t}${ns}`,Tt="show",Do="dropup",$o="dropend",Io="dropstart",Mo="dropup-center",xo="dropdown-center",ht='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',Po=`${ht}.${Tt}`,le=".dropdown-menu",Ro=".navbar",ko=".navbar-nav",Vo=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",Ho=H()?"top-end":"top-start",Wo=H()?"top-start":"top-end",jo=H()?"bottom-end":"bottom-start",Bo=H()?"bottom-start":"bottom-end",Fo=H()?"left-start":"right-start",Ko=H()?"right-start":"left-start",Yo="top",Uo="bottom",zo={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},Go={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class U extends K{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=d.next(this._element,le)[0]||d.prev(this._element,le)[0]||d.findOne(le,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return zo}static get DefaultType(){return Go}static get NAME(){return Ss}toggle(){return this._isShown()?this.hide():this.show()}show(){if(et(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!c.trigger(this._element,No,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(ko))for(const i of[].concat(...document.body.children))c.on(i,"mouseover",ue);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(Tt),this._element.classList.add(Tt),c.trigger(this._element,So,t)}}hide(){if(et(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!c.trigger(this._element,Co,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const i of[].concat(...document.body.children))c.off(i,"mouseover",ue);this._popper&&this._popper.destroy(),this._menu.classList.remove(Tt),this._element.classList.remove(Tt),this._element.setAttribute("aria-expanded","false"),q.removeDataAttribute(this._menu,"popper"),c.trigger(this._element,Oo,t)}}_getConfig(t){if(t=super._getConfig(t),typeof t.reference=="object"&&!G(t.reference)&&typeof t.reference.getBoundingClientRect!="function")throw new TypeError(`${Ss.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(typeof Ni>"u")throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org/docs/v2/)");let t=this._element;this._config.reference==="parent"?t=this._parent:G(this._config.reference)?t=tt(this._config.reference):typeof this._config.reference=="object"&&(t=this._config.reference);const e=this._getPopperConfig();this._popper=es(t,this._menu,e)}_isShown(){return this._menu.classList.contains(Tt)}_getPlacement(){const t=this._parent;if(t.classList.contains($o))return Fo;if(t.classList.contains(Io))return Ko;if(t.classList.contains(Mo))return Yo;if(t.classList.contains(xo))return Uo;const e=getComputedStyle(this._menu).getPropertyValue("--bs-position").trim()==="end";return t.classList.contains(Do)?e?Wo:Ho:e?Bo:jo}_detectNavbar(){return this._element.closest(Ro)!==null}_getOffset(){const{offset:t}=this._config;return typeof t=="string"?t.split(",").map(e=>Number.parseInt(e,10)):typeof t=="function"?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||this._config.display==="static")&&(q.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...M(this._config.popperConfig,[void 0,t])}}_selectMenuItem({key:t,target:e}){const i=d.find(Vo,this._menu).filter(n=>Mt(n));i.length&&ss(i,e,t===Ds,!i.includes(e)).focus()}static jQueryInterface(t){return this.each(function(){const e=U.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof e[t]>"u")throw new TypeError(`No method named "${t}"`);e[t]()}})}static clearMenus(t){if(t.button===wo||t.type==="keyup"&&t.key!==Ls)return;const e=d.find(Po);for(const i of e){const n=U.getInstance(i);if(!n||n._config.autoClose===!1)continue;const r=t.composedPath(),o=r.includes(n._menu);if(r.includes(n._element)||n._config.autoClose==="inside"&&!o||n._config.autoClose==="outside"&&o||n._menu.contains(t.target)&&(t.type==="keyup"&&t.key===Ls||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const a={relatedTarget:n._element};t.type==="click"&&(a.clickEvent=t),n._completeHide(a)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i=t.key===Ao,n=[To,Ds].includes(t.key);if(!n&&!i||e&&!i)return;t.preventDefault();const r=this.matches(ht)?this:d.prev(this,ht)[0]||d.next(this,ht)[0]||d.findOne(ht,t.delegateTarget.parentNode),o=U.getOrCreateInstance(r);if(n){t.stopPropagation(),o.show(),o._selectMenuItem(t);return}o._isShown()&&(t.stopPropagation(),o.hide(),r.focus())}}c.on(document,Yi,ht,U.dataApiKeydownHandler);c.on(document,Yi,le,U.dataApiKeydownHandler);c.on(document,Ki,U.clearMenus);c.on(document,Lo,U.clearMenus);c.on(document,Ki,ht,function(s){s.preventDefault(),U.getOrCreateInstance(this).toggle()});j(U);const Ui="backdrop",qo="fade",$s="show",Is=`mousedown.bs.${Ui}`,Xo={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Qo={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class zi extends Yt{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Xo}static get DefaultType(){return Qo}static get NAME(){return Ui}show(t){if(!this._config.isVisible){M(t);return}this._append();const e=this._getElement();this._config.isAnimated&&Kt(e),e.classList.add($s),this._emulateAnimation(()=>{M(t)})}hide(t){if(!this._config.isVisible){M(t);return}this._getElement().classList.remove($s),this._emulateAnimation(()=>{this.dispose(),M(t)})}dispose(){this._isAppended&&(c.off(this._element,Is),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add(qo),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=tt(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),c.on(t,Is,()=>{M(this._config.clickCallback)}),this._isAppended=!0}_emulateAnimation(t){Ii(t,this._getElement(),this._config.isAnimated)}}const Jo="focustrap",Zo="bs.focustrap",de=`.${Zo}`,ta=`focusin${de}`,ea=`keydown.tab${de}`,sa="Tab",ia="forward",Ms="backward",na={autofocus:!0,trapElement:null},ra={autofocus:"boolean",trapElement:"element"};class Gi extends Yt{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return na}static get DefaultType(){return ra}static get NAME(){return Jo}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),c.off(document,de),c.on(document,ta,t=>this._handleFocusin(t)),c.on(document,ea,t=>this._handleKeydown(t)),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,c.off(document,de))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=d.focusableChildren(e);i.length===0?e.focus():this._lastTabNavDirection===Ms?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){t.key===sa&&(this._lastTabNavDirection=t.shiftKey?Ms:ia)}}const xs=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Ps=".sticky-top",se="padding-right",Rs="margin-right";class Ue{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,se,e=>e+t),this._setElementAttributes(xs,se,e=>e+t),this._setElementAttributes(Ps,Rs,e=>e-t)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,se),this._resetElementAttributes(xs,se),this._resetElementAttributes(Ps,Rs)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth(),r=o=>{if(o!==this._element&&window.innerWidth>o.clientWidth+n)return;this._saveInitialAttribute(o,e);const a=window.getComputedStyle(o).getPropertyValue(e);o.style.setProperty(e,`${i(Number.parseFloat(a))}px`)};this._applyManipulationCallback(t,r)}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&q.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){const i=n=>{const r=q.getDataAttribute(n,e);if(r===null){n.style.removeProperty(e);return}q.removeDataAttribute(n,e),n.style.setProperty(e,r)};this._applyManipulationCallback(t,i)}_applyManipulationCallback(t,e){if(G(t)){e(t);return}for(const i of d.find(t,this._element))e(i)}}const oa="modal",aa="bs.modal",W=`.${aa}`,la=".data-api",ca="Escape",ua=`hide${W}`,ha=`hidePrevented${W}`,qi=`hidden${W}`,Xi=`show${W}`,da=`shown${W}`,fa=`resize${W}`,pa=`click.dismiss${W}`,ma=`mousedown.dismiss${W}`,_a=`keydown.dismiss${W}`,ga=`click${W}${la}`,ks="modal-open",Ea="fade",Vs="show",$e="modal-static",va=".modal.show",ba=".modal-dialog",ya=".modal-body",Aa='[data-bs-toggle="modal"]',Ta={backdrop:!0,focus:!0,keyboard:!0},wa={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Dt extends K{constructor(t,e){super(t,e),this._dialog=d.findOne(ba,this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new Ue,this._addEventListeners()}static get Default(){return Ta}static get DefaultType(){return wa}static get NAME(){return oa}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||c.trigger(this._element,Xi,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(ks),this._adjustDialog(),this._backdrop.show(()=>this._showElement(t)))}hide(){!this._isShown||this._isTransitioning||c.trigger(this._element,ua).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(Vs),this._queueCallback(()=>this._hideModal(),this._element,this._isAnimated()))}dispose(){c.off(window,W),c.off(this._dialog,W),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new zi({isVisible:!!this._config.backdrop,isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Gi({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=d.findOne(ya,this._dialog);e&&(e.scrollTop=0),Kt(this._element),this._element.classList.add(Vs);const i=()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,c.trigger(this._element,da,{relatedTarget:t})};this._queueCallback(i,this._dialog,this._isAnimated())}_addEventListeners(){c.on(this._element,_a,t=>{if(t.key===ca){if(this._config.keyboard){this.hide();return}this._triggerBackdropTransition()}}),c.on(window,fa,()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()}),c.on(this._element,ma,t=>{c.one(this._element,pa,e=>{if(!(this._element!==t.target||this._element!==e.target)){if(this._config.backdrop==="static"){this._triggerBackdropTransition();return}this._config.backdrop&&this.hide()}})})}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(ks),this._resetAdjustments(),this._scrollBar.reset(),c.trigger(this._element,qi)})}_isAnimated(){return this._element.classList.contains(Ea)}_triggerBackdropTransition(){if(c.trigger(this._element,ha).defaultPrevented)return;const e=this._element.scrollHeight>document.documentElement.clientHeight,i=this._element.style.overflowY;i==="hidden"||this._element.classList.contains($e)||(e||(this._element.style.overflowY="hidden"),this._element.classList.add($e),this._queueCallback(()=>{this._element.classList.remove($e),this._queueCallback(()=>{this._element.style.overflowY=i},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const n=H()?"paddingLeft":"paddingRight";this._element.style[n]=`${e}px`}if(!i&&t){const n=H()?"paddingRight":"paddingLeft";this._element.style[n]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each(function(){const i=Dt.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof i[t]>"u")throw new TypeError(`No method named "${t}"`);i[t](e)}})}}c.on(document,ga,Aa,function(s){const t=d.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&s.preventDefault(),c.one(t,Xi,n=>{n.defaultPrevented||c.one(t,qi,()=>{Mt(this)&&this.focus()})});const e=d.findOne(va);e&&Dt.getInstance(e).hide(),Dt.getOrCreateInstance(t).toggle(this)});me(Dt);j(Dt);const Ca="offcanvas",Oa="bs.offcanvas",Q=`.${Oa}`,Qi=".data-api",Na=`load${Q}${Qi}`,Sa="Escape",Hs="show",Ws="showing",js="hiding",La="offcanvas-backdrop",Ji=".offcanvas.show",Da=`show${Q}`,$a=`shown${Q}`,Ia=`hide${Q}`,Bs=`hidePrevented${Q}`,Zi=`hidden${Q}`,Ma=`resize${Q}`,xa=`click${Q}${Qi}`,Pa=`keydown.dismiss${Q}`,Ra='[data-bs-toggle="offcanvas"]',ka={backdrop:!0,keyboard:!0,scroll:!1},Va={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class st extends K{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return ka}static get DefaultType(){return Va}static get NAME(){return Ca}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){if(this._isShown||c.trigger(this._element,Da,{relatedTarget:t}).defaultPrevented)return;this._isShown=!0,this._backdrop.show(),this._config.scroll||new Ue().hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Ws);const i=()=>{(!this._config.scroll||this._config.backdrop)&&this._focustrap.activate(),this._element.classList.add(Hs),this._element.classList.remove(Ws),c.trigger(this._element,$a,{relatedTarget:t})};this._queueCallback(i,this._element,!0)}hide(){if(!this._isShown||c.trigger(this._element,Ia).defaultPrevented)return;this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(js),this._backdrop.hide();const e=()=>{this._element.classList.remove(Hs,js),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||new Ue().reset(),c.trigger(this._element,Zi)};this._queueCallback(e,this._element,!0)}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=()=>{if(this._config.backdrop==="static"){c.trigger(this._element,Bs);return}this.hide()},e=!!this._config.backdrop;return new zi({className:La,isVisible:e,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:e?t:null})}_initializeFocusTrap(){return new Gi({trapElement:this._element})}_addEventListeners(){c.on(this._element,Pa,t=>{if(t.key===Sa){if(this._config.keyboard){this.hide();return}c.trigger(this._element,Bs)}})}static jQueryInterface(t){return this.each(function(){const e=st.getOrCreateInstance(this,t);if(typeof t=="string"){if(e[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);e[t](this)}})}}c.on(document,xa,Ra,function(s){const t=d.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&s.preventDefault(),et(this))return;c.one(t,Zi,()=>{Mt(this)&&this.focus()});const e=d.findOne(Ji);e&&e!==t&&st.getInstance(e).hide(),st.getOrCreateInstance(t).toggle(this)});c.on(window,Na,()=>{for(const s of d.find(Ji))st.getOrCreateInstance(s).show()});c.on(window,Ma,()=>{for(const s of d.find("[aria-modal][class*=show][class*=offcanvas-]"))getComputedStyle(s).position!=="fixed"&&st.getOrCreateInstance(s).hide()});me(st);j(st);const Ha=/^aria-[\w-]*$/i,tn={"*":["class","dir","id","lang","role",Ha],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Wa=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),ja=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Ba=(s,t)=>{const e=s.nodeName.toLowerCase();return t.includes(e)?Wa.has(e)?!!ja.test(s.nodeValue):!0:t.filter(i=>i instanceof RegExp).some(i=>i.test(e))};function Fa(s,t,e){if(!s.length)return s;if(e&&typeof e=="function")return e(s);const n=new window.DOMParser().parseFromString(s,"text/html"),r=[].concat(...n.body.querySelectorAll("*"));for(const o of r){const a=o.nodeName.toLowerCase();if(!Object.keys(t).includes(a)){o.remove();continue}const l=[].concat(...o.attributes),h=[].concat(t["*"]||[],t[a]||[]);for(const u of l)Ba(u,h)||o.removeAttribute(u.nodeName)}return n.body.innerHTML}const Ka="TemplateFactory",Ya={allowList:tn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},Ua={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},za={entry:"(string|element|function|null)",selector:"(string|element)"};class Ga extends Yt{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Ya}static get DefaultType(){return Ua}static get NAME(){return Ka}getContent(){return Object.values(this._config.content).map(t=>this._resolvePossibleFunction(t)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[n,r]of Object.entries(this._config.content))this._setContent(t,r,n);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},za)}_setContent(t,e,i){const n=d.findOne(i,t);if(n){if(e=this._resolvePossibleFunction(e),!e){n.remove();return}if(G(e)){this._putElementInTemplate(tt(e),n);return}if(this._config.html){n.innerHTML=this._maybeSanitize(e);return}n.textContent=e}}_maybeSanitize(t){return this._config.sanitize?Fa(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return M(t,[void 0,this])}_putElementInTemplate(t,e){if(this._config.html){e.innerHTML="",e.append(t);return}e.textContent=t.textContent}}const qa="tooltip",Xa=new Set(["sanitize","allowList","sanitizeFn"]),Ie="fade",Qa="modal",ie="show",Ja=".tooltip-inner",Fs=`.${Qa}`,Ks="hide.bs.modal",Ht="hover",Me="focus",xe="click",Za="manual",tl="hide",el="hidden",sl="show",il="shown",nl="inserted",rl="click",ol="focusin",al="focusout",ll="mouseenter",cl="mouseleave",ul={AUTO:"auto",TOP:"top",RIGHT:H()?"left":"right",BOTTOM:"bottom",LEFT:H()?"right":"left"},hl={allowList:tn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},dl={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Pt extends K{constructor(t,e){if(typeof Ni>"u")throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return hl}static get DefaultType(){return dl}static get NAME(){return qa}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){if(this._isEnabled){if(this._isShown()){this._leave();return}this._enter()}}dispose(){clearTimeout(this._timeout),c.off(this._element.closest(Fs),Ks,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!(this._isWithContent()&&this._isEnabled))return;const t=c.trigger(this._element,this.constructor.eventName(sl)),i=(Di(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!i)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:r}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(r.append(n),c.trigger(this._element,this.constructor.eventName(nl))),this._popper=this._createPopper(n),n.classList.add(ie),"ontouchstart"in document.documentElement)for(const a of[].concat(...document.body.children))c.on(a,"mouseover",ue);const o=()=>{c.trigger(this._element,this.constructor.eventName(il)),this._isHovered===!1&&this._leave(),this._isHovered=!1};this._queueCallback(o,this.tip,this._isAnimated())}hide(){if(!this._isShown()||c.trigger(this._element,this.constructor.eventName(tl)).defaultPrevented)return;if(this._getTipElement().classList.remove(ie),"ontouchstart"in document.documentElement)for(const n of[].concat(...document.body.children))c.off(n,"mouseover",ue);this._activeTrigger[xe]=!1,this._activeTrigger[Me]=!1,this._activeTrigger[Ht]=!1,this._isHovered=null;const i=()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),c.trigger(this._element,this.constructor.eventName(el)))};this._queueCallback(i,this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return!!this._getTitle()}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(Ie,ie),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=Jn(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(Ie),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Ga({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[Ja]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Ie)}_isShown(){return this.tip&&this.tip.classList.contains(ie)}_createPopper(t){const e=M(this._config.placement,[this,t,this._element]),i=ul[e.toUpperCase()];return es(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return typeof t=="string"?t.split(",").map(e=>Number.parseInt(e,10)):typeof t=="function"?e=>t(e,this._element):t}_resolvePossibleFunction(t){return M(t,[this._element,this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:i=>{this._getTipElement().setAttribute("data-popper-placement",i.state.placement)}}]};return{...e,...M(this._config.popperConfig,[void 0,e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if(e==="click")c.on(this._element,this.constructor.eventName(rl),this._config.selector,i=>{const n=this._initializeOnDelegatedTarget(i);n._activeTrigger[xe]=!(n._isShown()&&n._activeTrigger[xe]),n.toggle()});else if(e!==Za){const i=e===Ht?this.constructor.eventName(ll):this.constructor.eventName(ol),n=e===Ht?this.constructor.eventName(cl):this.constructor.eventName(al);c.on(this._element,i,this._config.selector,r=>{const o=this._initializeOnDelegatedTarget(r);o._activeTrigger[r.type==="focusin"?Me:Ht]=!0,o._enter()}),c.on(this._element,n,this._config.selector,r=>{const o=this._initializeOnDelegatedTarget(r);o._activeTrigger[r.type==="focusout"?Me:Ht]=o._element.contains(r.relatedTarget),o._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},c.on(this._element.closest(Fs),Ks,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(!this._element.getAttribute("aria-label")&&!this._element.textContent.trim()&&this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){if(this._isShown()||this._isHovered){this._isHovered=!0;return}this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show)}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=q.getDataAttributes(this._element);for(const i of Object.keys(e))Xa.has(i)&&delete e[i];return t={...e,...typeof t=="object"&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=t.container===!1?document.body:tt(t.container),typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),typeof t.title=="number"&&(t.title=t.title.toString()),typeof t.content=="number"&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each(function(){const e=Pt.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof e[t]>"u")throw new TypeError(`No method named "${t}"`);e[t]()}})}}j(Pt);const fl="popover",pl=".popover-header",ml=".popover-body",_l={...Pt.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},gl={...Pt.DefaultType,content:"(null|string|element|function)"};class rs extends Pt{static get Default(){return _l}static get DefaultType(){return gl}static get NAME(){return fl}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{[pl]:this._getTitle(),[ml]:this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each(function(){const e=rs.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof e[t]>"u")throw new TypeError(`No method named "${t}"`);e[t]()}})}}j(rs);const El="scrollspy",vl="bs.scrollspy",os=`.${vl}`,bl=".data-api",yl=`activate${os}`,Ys=`click${os}`,Al=`load${os}${bl}`,Tl="dropdown-item",bt="active",wl='[data-bs-spy="scroll"]',Pe="[href]",Cl=".nav, .list-group",Us=".nav-link",Ol=".nav-item",Nl=".list-group-item",Sl=`${Us}, ${Ol} > ${Us}, ${Nl}`,Ll=".dropdown",Dl=".dropdown-toggle",$l={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},Il={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Ee extends K{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement=getComputedStyle(this._element).overflowY==="visible"?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return $l}static get DefaultType(){return Il}static get NAME(){return El}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=tt(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,typeof t.threshold=="string"&&(t.threshold=t.threshold.split(",").map(e=>Number.parseFloat(e))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(c.off(this._config.target,Ys),c.on(this._config.target,Ys,Pe,t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo){i.scrollTo({top:n,behavior:"smooth"});return}i.scrollTop=n}}))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver(e=>this._observerCallback(e),t)}_observerCallback(t){const e=o=>this._targetLinks.get(`#${o.target.id}`),i=o=>{this._previousScrollData.visibleEntryTop=o.target.offsetTop,this._process(e(o))},n=(this._rootElement||document.documentElement).scrollTop,r=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const a=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(r&&a){if(i(o),!n)return;continue}!r&&!a&&i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=d.find(Pe,this._config.target);for(const e of t){if(!e.hash||et(e))continue;const i=d.findOne(decodeURI(e.hash),this._element);Mt(i)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,i))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(bt),this._activateParents(t),c.trigger(this._element,yl,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains(Tl)){d.findOne(Dl,t.closest(Ll)).classList.add(bt);return}for(const e of d.parents(t,Cl))for(const i of d.prev(e,Sl))i.classList.add(bt)}_clearActiveClass(t){t.classList.remove(bt);const e=d.find(`${Pe}.${bt}`,t);for(const i of e)i.classList.remove(bt)}static jQueryInterface(t){return this.each(function(){const e=Ee.getOrCreateInstance(this,t);if(typeof t=="string"){if(e[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);e[t]()}})}}c.on(window,Al,()=>{for(const s of d.find(wl))Ee.getOrCreateInstance(s)});j(Ee);const Ml="tab",xl="bs.tab",gt=`.${xl}`,Pl=`hide${gt}`,Rl=`hidden${gt}`,kl=`show${gt}`,Vl=`shown${gt}`,Hl=`click${gt}`,Wl=`keydown${gt}`,jl=`load${gt}`,Bl="ArrowLeft",zs="ArrowRight",Fl="ArrowUp",Gs="ArrowDown",Re="Home",qs="End",dt="active",Xs="fade",ke="show",Kl="dropdown",en=".dropdown-toggle",Yl=".dropdown-menu",Ve=`:not(${en})`,Ul='.list-group, .nav, [role="tablist"]',zl=".nav-item, .list-group-item",Gl=`.nav-link${Ve}, .list-group-item${Ve}, [role="tab"]${Ve}`,sn='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',He=`${Gl}, ${sn}`,ql=`.${dt}[data-bs-toggle="tab"], .${dt}[data-bs-toggle="pill"], .${dt}[data-bs-toggle="list"]`;class $t extends K{constructor(t){super(t),this._parent=this._element.closest(Ul),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),c.on(this._element,Wl,e=>this._keydown(e)))}static get NAME(){return Ml}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?c.trigger(e,Pl,{relatedTarget:t}):null;c.trigger(t,kl,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){if(!t)return;t.classList.add(dt),this._activate(d.getElementFromSelector(t));const i=()=>{if(t.getAttribute("role")!=="tab"){t.classList.add(ke);return}t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),c.trigger(t,Vl,{relatedTarget:e})};this._queueCallback(i,t,t.classList.contains(Xs))}_deactivate(t,e){if(!t)return;t.classList.remove(dt),t.blur(),this._deactivate(d.getElementFromSelector(t));const i=()=>{if(t.getAttribute("role")!=="tab"){t.classList.remove(ke);return}t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),c.trigger(t,Rl,{relatedTarget:e})};this._queueCallback(i,t,t.classList.contains(Xs))}_keydown(t){if(![Bl,zs,Fl,Gs,Re,qs].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter(n=>!et(n));let i;if([Re,qs].includes(t.key))i=e[t.key===Re?0:e.length-1];else{const n=[zs,Gs].includes(t.key);i=ss(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),$t.getOrCreateInstance(i).show())}_getChildren(){return d.find(He,this._parent)}_getActiveElem(){return this._getChildren().find(t=>this._elemIsActive(t))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const i of e)this._setInitialAttributesOnChild(i)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=d.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains(Kl))return;const n=(r,o)=>{const a=d.findOne(r,i);a&&a.classList.toggle(o,e)};n(en,dt),n(Yl,ke),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(dt)}_getInnerElement(t){return t.matches(He)?t:d.findOne(He,t)}_getOuterElement(t){return t.closest(zl)||t}static jQueryInterface(t){return this.each(function(){const e=$t.getOrCreateInstance(this);if(typeof t=="string"){if(e[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);e[t]()}})}}c.on(document,Hl,sn,function(s){["A","AREA"].includes(this.tagName)&&s.preventDefault(),!et(this)&&$t.getOrCreateInstance(this).show()});c.on(window,jl,()=>{for(const s of d.find(ql))$t.getOrCreateInstance(s)});j($t);const Xl="toast",Ql="bs.toast",rt=`.${Ql}`,Jl=`mouseover${rt}`,Zl=`mouseout${rt}`,tc=`focusin${rt}`,ec=`focusout${rt}`,sc=`hide${rt}`,ic=`hidden${rt}`,nc=`show${rt}`,rc=`shown${rt}`,oc="fade",Qs="hide",ne="show",re="showing",ac={animation:"boolean",autohide:"boolean",delay:"number"},lc={animation:!0,autohide:!0,delay:5e3};class ve extends K{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return lc}static get DefaultType(){return ac}static get NAME(){return Xl}show(){if(c.trigger(this._element,nc).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add(oc);const e=()=>{this._element.classList.remove(re),c.trigger(this._element,rc),this._maybeScheduleHide()};this._element.classList.remove(Qs),Kt(this._element),this._element.classList.add(ne,re),this._queueCallback(e,this._element,this._config.animation)}hide(){if(!this.isShown()||c.trigger(this._element,sc).defaultPrevented)return;const e=()=>{this._element.classList.add(Qs),this._element.classList.remove(re,ne),c.trigger(this._element,ic)};this._element.classList.add(re),this._queueCallback(e,this._element,this._config.animation)}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(ne),super.dispose()}isShown(){return this._element.classList.contains(ne)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":{this._hasMouseInteraction=e;break}case"focusin":case"focusout":{this._hasKeyboardInteraction=e;break}}if(e){this._clearTimeout();return}const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){c.on(this._element,Jl,t=>this._onInteraction(t,!0)),c.on(this._element,Zl,t=>this._onInteraction(t,!1)),c.on(this._element,tc,t=>this._onInteraction(t,!0)),c.on(this._element,ec,t=>this._onInteraction(t,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each(function(){const e=ve.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof e[t]>"u")throw new TypeError(`No method named "${t}"`);e[t](this)}})}}me(ve);j(ve);const cc=[{href:"https://library.columbia.edu/libraries.html",value:"Libraries & Affiliates"},{href:"https://library.columbia.edu/libraries/avery.html",value:"Avery Architectural & Fine Arts Library"},{href:"https://library.columbia.edu/libraries/burke.html",value:"Burke Library at Union Theological Seminary"},{href:"https://library.columbia.edu/libraries/business.html",value:"Business & Economics Library in Uris"},{href:"https://library.columbia.edu/libraries/business-manhattanville.html",value:"Business Library at Manhattanville"},{href:"https://library.columbia.edu/libraries/butler.html",value:"Butler Library"},{href:"https://library.columbia.edu/libraries/eastasian.html",value:"C.V. Starr East Asian Library"},{href:"https://library.columbia.edu/libraries/music.html",value:"Gabe M. Wiener Music & Arts Library"},{href:"https://library.cumc.columbia.edu/",value:"Health Sciences Library"},{href:"https://library.columbia.edu/libraries/journalism.html",value:"Journalism Library"},{href:"https://library.columbia.edu/libraries/lehman.html",value:"Lehman Social Sciences Library"},{href:"http://www.law.columbia.edu/library/",value:"Li Lu Law Library"},{href:"https://library.columbia.edu/libraries/math.html",value:"Mathematics Library"},{href:"https://library.columbia.edu/libraries/rbml.html",value:"Rare Book & Manuscript Library"},{href:"https://library.columbia.edu/libraries/science-engineering.html",value:"Science & Engineering Library"},{href:"https://library.columbia.edu/libraries/social-work.html",value:"Social Work Library"}],uc=[{href:"https://library.columbia.edu/collections.html",value:"About Our Collections"},{href:"https://academiccommons.columbia.edu/",value:"Academic Commons"},{href:"https://library.columbia.edu/collections/archives-portal.html",value:"Archival Collections"},{href:"https://resolver.library.columbia.edu/clio",value:"CLIO: Columbia Libraries Catalog"},{href:"https://library.columbia.edu/about/policies/collection-development.html",value:"Collection Development"},{href:"https://dlc.library.columbia.edu",value:"Digital Collections"},{href:"https://library.columbia.edu/collections/eresources.html",value:"E-Resources"},{href:"https://resolver.library.columbia.edu/lweb0004",value:"Recommend a Title for Purchase"},{href:"https://library.columbia.edu/about/policies/collection-development/repatriation-return.html",value:"Repatriation"},{href:"https://library.columbia.edu/about/staff/subject-specialists-by-subject.html",value:"Subject Specialists"}],hc=[{href:"https://library.columbia.edu/about.html",value:"About the Libraries"},{href:"https://library.columbia.edu/about/jobs-internships.html",value:"Jobs & Internships"},{href:"https://library.columbia.edu/about/news/alert.html",value:"Library Status Updates"},{href:"https://library.columbia.edu/about/news.html",value:"News"},{href:"https://library.columbia.edu/about/values.html",value:"Our Values & Commitment in Action"},{href:"https://library.columbia.edu/about/policies.html",value:"Policies"},{href:"https://library.columbia.edu/about/staff.html",value:"Staff"},{href:"https://strategicdirections.library.columbia.edu/",value:"Strategic Directions"},{href:"https://library.columbia.edu/about/student_advisory_committee.html",value:"Student Library Advisory Committee"}],dc={"Services & Tools":[{href:"https://library.columbia.edu/services.html",value:"Services & Tools"},{href:"https://library.columbia.edu/using-libraries/alumni.html",value:"For Alumni"},{href:"https://library.columbia.edu/services/faculty.html",value:"For Faculty"},{href:"https://library.columbia.edu/services.html#audience=student",value:"For Students"},{href:"https://library.columbia.edu/using-libraries/visitors.html",value:"For Visitors"}],Libraries:cc,Collections:uc,"Using the Libraries":[{href:"https://library.columbia.edu/using-libraries.html",value:"Using the Libraries"},{href:"https://library.columbia.edu/using-libraries/access-privileges.html",value:"Access Privileges"},{href:"https://library.columbia.edu/using-libraries/disability.html",value:"Accessibility"},{href:"https://library.columbia.edu/using-libraries/borrowing.html",value:"Borrow, Request, Renew"},{href:"https://library.columbia.edu/services/reserves.html",value:"Course Reserves"},{href:"https://hours.library.columbia.edu/",value:"Hours"},{href:"https://library.columbia.edu/using-libraries/printing.html",value:"Print, Scan, Digitize"}],"Research & Teaching":[{href:"https://library.columbia.edu/research-teaching.html",value:"Research & Teaching"},{href:"https://library.columbia.edu/research-teaching/copyright.html",value:"Copyright Information"},{href:"https://library.columbia.edu/research-teaching/getting-started.html",value:"Getting Started with the Libraries"},{href:"https://library.columbia.edu/research-teaching/global.html",value:"Global Studies"},{href:"https://library.columbia.edu/research-teaching/open-scholarship.html",value:"Open Scholarship Services"},{href:"https://library.columbia.edu/services/research-data-services.html",value:"Research Data Services"},{href:"https://library.columbia.edu/services/subject-guides.html",value:"Subject & Course Guides"},{href:"https://library.columbia.edu/research-teaching/workshops.html",value:"Workshops & Training"}],About:hc};async function nn(s){const t=s;try{const e=await fetch(fc(t),{cache:"no-store",signal:AbortSignal.timeout(3e3)});if(!e.ok)throw new Error("Menu fetch failed");return await e.json()}catch(e){return console.warn("[CUL Menu] Remote menu unavailable, using bundled example.",e),dc}}function fc(s){return s.includes("?")?s:`${s}?v=5.2.0`}async function pc(s){const t=document.querySelectorAll("[data-cul-menu]");if(!t.length)return;const e=await nn(s);t.forEach((i,n)=>{const r=_c(i,n),o=gc(e,r);i.replaceChildren(o),mc(i)})}function mc(s){s.classList.remove("cul-menu-loading"),s.classList.add("cul-menu-loaded")}function _c(s,t){return{prefix:s.dataset.menuId||`culmenu-${t}`,toggleTag:s.dataset.toggleTag||"button",toggleClasses:s.dataset.toggleClasses||"btn btn-toggle ps-0 d-inline-flex w-100 align-items-center rounded border-0 collapsed",listClasses:s.dataset.listClasses||"list-unstyled w-100",itemClasses:s.dataset.itemClasses||"d-block",useCollapse:s.dataset.useCollapse!=="false"}}function gc(s,t){const e=document.createElement("ul");e.className=t.listClasses;for(const i in s){const n=document.createElement("li");n.className="mb-1";const r=`${t.prefix}-${Ec(i)}-collapse`,o=document.createElement(t.toggleTag);o.className=t.toggleClasses,o.textContent=i,t.useCollapse&&(o.setAttribute("data-bs-toggle","collapse"),o.setAttribute("data-bs-target",`#${r}`),o.setAttribute("aria-expanded","false")),n.appendChild(o);const a=document.createElement("div");a.className=t.useCollapse?"collapse":"",a.id=r;const l=document.createElement("ul");l.className="btn-toggle-nav list-unstyled fw-normal pb-1",s[i].forEach(h=>{const u=document.createElement("li"),f=document.createElement("a");f.href=h.href,f.textContent=h.value,f.className=t.itemClasses,u.appendChild(f),l.appendChild(u)}),a.appendChild(l),n.appendChild(a),e.appendChild(n)}return e}function Ec(s){return s.toLowerCase().replace(/\s+/g,"-")}async function vc(s,t){const e=document.querySelector(s);if(!e)return;const i=e.querySelector("ul");if(!i){console.warn("CUL navbar menu: <ul> not found");return}const n=await nn(t),r=e.dataset.menuId||"cul-navbar";i.replaceChildren(yc(n,r)),bc(e)}function bc(s){s.classList.remove("cul-menu-loading"),s.classList.add("cul-menu-loaded")}function yc(s,t){const e=document.createDocumentFragment();for(const i in s){const n=`${t}-${Ac(i)}`,r=document.createElement("li");r.className="nav-item dropdown position-static d-inline-flex";const o=document.createElement("a");o.href="#",o.className="nav-link dropdown-toggle my-2 me-3",o.setAttribute("data-bs-toggle","dropdown"),o.setAttribute("aria-expanded","false"),o.textContent=i,r.appendChild(o);const a=document.createElement("div");a.id=`${n}-dropdown`,a.className="dropdown-menu w-100 border-top-0 border-left-0 border-right-0 rounded-0 py-0 my-0";const l=document.createElement("div");l.className="py-3 bg-secondary text-white";const h=document.createElement("div");h.className="container cul-cols",s[i].forEach(u=>{const f=document.createElement("a");f.href=u.href,f.className="d-block py-1 text-white dropdown-item bg-secondary",f.textContent=u.value,h.appendChild(f)}),l.appendChild(h),a.appendChild(l),r.appendChild(a),e.appendChild(r)}return e}function Ac(s){return s.toLowerCase().replace(/\s+/g,"-")}const rn="https://toolkit-dev.library.columbia.edu/v5/assets/cul-main-menu.json";pc(rn);vc("[data-cul-navbar]",rn);
|
|
5
|
+
*/const Z=new Map,we={set(s,t,e){Z.has(s)||Z.set(s,new Map);const i=Z.get(s);if(!i.has(t)&&i.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(i.keys())[0]}.`);return}i.set(t,e)},get(s,t){return Z.has(s)&&Z.get(s).get(t)||null},remove(s,t){if(!Z.has(s))return;const e=Z.get(s);e.delete(t),e.size===0&&Z.delete(s)}},qn=1e6,Xn=1e3,Fe="transitionend",Si=s=>(s&&window.CSS&&window.CSS.escape&&(s=s.replace(/#([^\s"#']+)/g,(t,e)=>`#${CSS.escape(e)}`)),s),Qn=s=>s==null?`${s}`:Object.prototype.toString.call(s).match(/\s([a-z]+)/i)[1].toLowerCase(),Jn=s=>{do s+=Math.floor(Math.random()*qn);while(document.getElementById(s));return s},Zn=s=>{if(!s)return 0;let{transitionDuration:t,transitionDelay:e}=window.getComputedStyle(s);const i=Number.parseFloat(t),n=Number.parseFloat(e);return!i&&!n?0:(t=t.split(",")[0],e=e.split(",")[0],(Number.parseFloat(t)+Number.parseFloat(e))*Xn)},Li=s=>{s.dispatchEvent(new Event(Fe))},G=s=>!s||typeof s!="object"?!1:(typeof s.jquery<"u"&&(s=s[0]),typeof s.nodeType<"u"),tt=s=>G(s)?s.jquery?s[0]:s:typeof s=="string"&&s.length>0?document.querySelector(Si(s)):null,Mt=s=>{if(!G(s)||s.getClientRects().length===0)return!1;const t=getComputedStyle(s).getPropertyValue("visibility")==="visible",e=s.closest("details:not([open])");if(!e)return t;if(e!==s){const i=s.closest("summary");if(i&&i.parentNode!==e||i===null)return!1}return t},et=s=>!s||s.nodeType!==Node.ELEMENT_NODE||s.classList.contains("disabled")?!0:typeof s.disabled<"u"?s.disabled:s.hasAttribute("disabled")&&s.getAttribute("disabled")!=="false",Di=s=>{if(!document.documentElement.attachShadow)return null;if(typeof s.getRootNode=="function"){const t=s.getRootNode();return t instanceof ShadowRoot?t:null}return s instanceof ShadowRoot?s:s.parentNode?Di(s.parentNode):null},ue=()=>{},Kt=s=>{s.offsetHeight},$i=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,Ce=[],tr=s=>{document.readyState==="loading"?(Ce.length||document.addEventListener("DOMContentLoaded",()=>{for(const t of Ce)t()}),Ce.push(s)):s()},H=()=>document.documentElement.dir==="rtl",j=s=>{tr(()=>{const t=$i();if(t){const e=s.NAME,i=t.fn[e];t.fn[e]=s.jQueryInterface,t.fn[e].Constructor=s,t.fn[e].noConflict=()=>(t.fn[e]=i,s.jQueryInterface)}})},M=(s,t=[],e=s)=>typeof s=="function"?s.call(...t):e,Ii=(s,t,e=!0)=>{if(!e){M(s);return}const n=Zn(t)+5;let r=!1;const o=({target:a})=>{a===t&&(r=!0,t.removeEventListener(Fe,o),M(s))};t.addEventListener(Fe,o),setTimeout(()=>{r||Li(t)},n)},ss=(s,t,e,i)=>{const n=s.length;let r=s.indexOf(t);return r===-1?!e&&i?s[n-1]:s[0]:(r+=e?1:-1,i&&(r=(r+n)%n),s[Math.max(0,Math.min(r,n-1))])},er=/[^.]*(?=\..*)\.|.*/,sr=/\..*/,ir=/::\d+$/,Oe={};let ws=1;const Mi={mouseenter:"mouseover",mouseleave:"mouseout"},nr=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function xi(s,t){return t&&`${t}::${ws++}`||s.uidEvent||ws++}function Pi(s){const t=xi(s);return s.uidEvent=t,Oe[t]=Oe[t]||{},Oe[t]}function rr(s,t){return function e(i){return is(i,{delegateTarget:s}),e.oneOff&&c.off(s,i.type,t),t.apply(s,[i])}}function or(s,t,e){return function i(n){const r=s.querySelectorAll(t);for(let{target:o}=n;o&&o!==this;o=o.parentNode)for(const a of r)if(a===o)return is(n,{delegateTarget:o}),i.oneOff&&c.off(s,n.type,t,e),e.apply(o,[n])}}function Ri(s,t,e=null){return Object.values(s).find(i=>i.callable===t&&i.delegationSelector===e)}function ki(s,t,e){const i=typeof t=="string",n=i?e:t||e;let r=Vi(s);return nr.has(r)||(r=s),[i,n,r]}function Cs(s,t,e,i,n){if(typeof t!="string"||!s)return;let[r,o,a]=ki(t,e,i);t in Mi&&(o=(y=>function(_){if(!_.relatedTarget||_.relatedTarget!==_.delegateTarget&&!_.delegateTarget.contains(_.relatedTarget))return y.call(this,_)})(o));const l=Pi(s),h=l[a]||(l[a]={}),u=Ri(h,o,r?e:null);if(u){u.oneOff=u.oneOff&&n;return}const f=xi(o,t.replace(er,"")),m=r?or(s,e,o):rr(s,o);m.delegationSelector=r?e:null,m.callable=o,m.oneOff=n,m.uidEvent=f,h[f]=m,s.addEventListener(a,m,r)}function Ke(s,t,e,i,n){const r=Ri(t[e],i,n);r&&(s.removeEventListener(e,r,!!n),delete t[e][r.uidEvent])}function ar(s,t,e,i){const n=t[e]||{};for(const[r,o]of Object.entries(n))r.includes(i)&&Ke(s,t,e,o.callable,o.delegationSelector)}function Vi(s){return s=s.replace(sr,""),Mi[s]||s}const c={on(s,t,e,i){Cs(s,t,e,i,!1)},one(s,t,e,i){Cs(s,t,e,i,!0)},off(s,t,e,i){if(typeof t!="string"||!s)return;const[n,r,o]=ki(t,e,i),a=o!==t,l=Pi(s),h=l[o]||{},u=t.startsWith(".");if(typeof r<"u"){if(!Object.keys(h).length)return;Ke(s,l,o,r,n?e:null);return}if(u)for(const f of Object.keys(l))ar(s,l,f,t.slice(1));for(const[f,m]of Object.entries(h)){const p=f.replace(ir,"");(!a||t.includes(p))&&Ke(s,l,o,m.callable,m.delegationSelector)}},trigger(s,t,e){if(typeof t!="string"||!s)return null;const i=$i(),n=Vi(t),r=t!==n;let o=null,a=!0,l=!0,h=!1;r&&i&&(o=i.Event(t,e),i(s).trigger(o),a=!o.isPropagationStopped(),l=!o.isImmediatePropagationStopped(),h=o.isDefaultPrevented());const u=is(new Event(t,{bubbles:a,cancelable:!0}),e);return h&&u.preventDefault(),l&&s.dispatchEvent(u),u.defaultPrevented&&o&&o.preventDefault(),u}};function is(s,t={}){for(const[e,i]of Object.entries(t))try{s[e]=i}catch{Object.defineProperty(s,e,{configurable:!0,get(){return i}})}return s}function Os(s){if(s==="true")return!0;if(s==="false")return!1;if(s===Number(s).toString())return Number(s);if(s===""||s==="null")return null;if(typeof s!="string")return s;try{return JSON.parse(decodeURIComponent(s))}catch{return s}}function Ne(s){return s.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}const q={setDataAttribute(s,t,e){s.setAttribute(`data-bs-${Ne(t)}`,e)},removeDataAttribute(s,t){s.removeAttribute(`data-bs-${Ne(t)}`)},getDataAttributes(s){if(!s)return{};const t={},e=Object.keys(s.dataset).filter(i=>i.startsWith("bs")&&!i.startsWith("bsConfig"));for(const i of e){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1),t[n]=Os(s.dataset[i])}return t},getDataAttribute(s,t){return Os(s.getAttribute(`data-bs-${Ne(t)}`))}};class Yt{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=G(e)?q.getDataAttribute(e,"config"):{};return{...this.constructor.Default,...typeof i=="object"?i:{},...G(e)?q.getDataAttributes(e):{},...typeof t=="object"?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[i,n]of Object.entries(e)){const r=t[i],o=G(r)?"element":Qn(r);if(!new RegExp(n).test(o))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${o}" but expected type "${n}".`)}}}const lr="5.3.8";class K extends Yt{constructor(t,e){super(),t=tt(t),t&&(this._element=t,this._config=this._getConfig(e),we.set(this._element,this.constructor.DATA_KEY,this))}dispose(){we.remove(this._element,this.constructor.DATA_KEY),c.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){Ii(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return we.get(tt(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,typeof e=="object"?e:null)}static get VERSION(){return lr}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const Se=s=>{let t=s.getAttribute("data-bs-target");if(!t||t==="#"){let e=s.getAttribute("href");if(!e||!e.includes("#")&&!e.startsWith("."))return null;e.includes("#")&&!e.startsWith("#")&&(e=`#${e.split("#")[1]}`),t=e&&e!=="#"?e.trim():null}return t?t.split(",").map(e=>Si(e)).join(","):null},d={find(s,t=document.documentElement){return[].concat(...Element.prototype.querySelectorAll.call(t,s))},findOne(s,t=document.documentElement){return Element.prototype.querySelector.call(t,s)},children(s,t){return[].concat(...s.children).filter(e=>e.matches(t))},parents(s,t){const e=[];let i=s.parentNode.closest(t);for(;i;)e.push(i),i=i.parentNode.closest(t);return e},prev(s,t){let e=s.previousElementSibling;for(;e;){if(e.matches(t))return[e];e=e.previousElementSibling}return[]},next(s,t){let e=s.nextElementSibling;for(;e;){if(e.matches(t))return[e];e=e.nextElementSibling}return[]},focusableChildren(s){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(e=>`${e}:not([tabindex^="-"])`).join(",");return this.find(t,s).filter(e=>!et(e)&&Mt(e))},getSelectorFromElement(s){const t=Se(s);return t&&d.findOne(t)?t:null},getElementFromSelector(s){const t=Se(s);return t?d.findOne(t):null},getMultipleElementsFromSelector(s){const t=Se(s);return t?d.find(t):[]}},me=(s,t="hide")=>{const e=`click.dismiss${s.EVENT_KEY}`,i=s.NAME;c.on(document,e,`[data-bs-dismiss="${i}"]`,function(n){if(["A","AREA"].includes(this.tagName)&&n.preventDefault(),et(this))return;const r=d.getElementFromSelector(this)||this.closest(`.${i}`);s.getOrCreateInstance(r)[t]()})},cr="alert",ur="bs.alert",Hi=`.${ur}`,hr=`close${Hi}`,dr=`closed${Hi}`,fr="fade",pr="show";class _e extends K{static get NAME(){return cr}close(){if(c.trigger(this._element,hr).defaultPrevented)return;this._element.classList.remove(pr);const e=this._element.classList.contains(fr);this._queueCallback(()=>this._destroyElement(),this._element,e)}_destroyElement(){this._element.remove(),c.trigger(this._element,dr),this.dispose()}static jQueryInterface(t){return this.each(function(){const e=_e.getOrCreateInstance(this);if(typeof t=="string"){if(e[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);e[t](this)}})}}me(_e,"close");j(_e);const mr="button",_r="bs.button",gr=`.${_r}`,Er=".data-api",vr="active",Ns='[data-bs-toggle="button"]',br=`click${gr}${Er}`;class ge extends K{static get NAME(){return mr}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle(vr))}static jQueryInterface(t){return this.each(function(){const e=ge.getOrCreateInstance(this);t==="toggle"&&e[t]()})}}c.on(document,br,Ns,s=>{s.preventDefault();const t=s.target.closest(Ns);ge.getOrCreateInstance(t).toggle()});j(ge);const yr="swipe",xt=".bs.swipe",Ar=`touchstart${xt}`,Tr=`touchmove${xt}`,wr=`touchend${xt}`,Cr=`pointerdown${xt}`,Or=`pointerup${xt}`,Nr="touch",Sr="pen",Lr="pointer-event",Dr=40,$r={endCallback:null,leftCallback:null,rightCallback:null},Ir={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class he extends Yt{constructor(t,e){super(),this._element=t,!(!t||!he.isSupported())&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=!!window.PointerEvent,this._initEvents())}static get Default(){return $r}static get DefaultType(){return Ir}static get NAME(){return yr}dispose(){c.off(this._element,xt)}_start(t){if(!this._supportPointerEvents){this._deltaX=t.touches[0].clientX;return}this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX)}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),M(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=Dr)return;const e=t/this._deltaX;this._deltaX=0,e&&M(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(c.on(this._element,Cr,t=>this._start(t)),c.on(this._element,Or,t=>this._end(t)),this._element.classList.add(Lr)):(c.on(this._element,Ar,t=>this._start(t)),c.on(this._element,Tr,t=>this._move(t)),c.on(this._element,wr,t=>this._end(t)))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&(t.pointerType===Sr||t.pointerType===Nr)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const Mr="carousel",xr="bs.carousel",nt=`.${xr}`,Wi=".data-api",Pr="ArrowLeft",Rr="ArrowRight",kr=500,Vt="next",vt="prev",At="left",ae="right",Vr=`slide${nt}`,Le=`slid${nt}`,Hr=`keydown${nt}`,Wr=`mouseenter${nt}`,jr=`mouseleave${nt}`,Br=`dragstart${nt}`,Fr=`load${nt}${Wi}`,Kr=`click${nt}${Wi}`,ji="carousel",te="active",Yr="slide",Ur="carousel-item-end",zr="carousel-item-start",Gr="carousel-item-next",qr="carousel-item-prev",Bi=".active",Fi=".carousel-item",Xr=Bi+Fi,Qr=".carousel-item img",Jr=".carousel-indicators",Zr="[data-bs-slide], [data-bs-slide-to]",to='[data-bs-ride="carousel"]',eo={[Pr]:ae,[Rr]:At},so={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},io={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class Ut extends K{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=d.findOne(Jr,this._element),this._addEventListeners(),this._config.ride===ji&&this.cycle()}static get Default(){return so}static get DefaultType(){return io}static get NAME(){return Mr}next(){this._slide(Vt)}nextWhenVisible(){!document.hidden&&Mt(this._element)&&this.next()}prev(){this._slide(vt)}pause(){this._isSliding&&Li(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval(()=>this.nextWhenVisible(),this._config.interval)}_maybeEnableCycle(){if(this._config.ride){if(this._isSliding){c.one(this._element,Le,()=>this.cycle());return}this.cycle()}}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding){c.one(this._element,Le,()=>this.to(t));return}const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?Vt:vt;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&c.on(this._element,Hr,t=>this._keydown(t)),this._config.pause==="hover"&&(c.on(this._element,Wr,()=>this.pause()),c.on(this._element,jr,()=>this._maybeEnableCycle())),this._config.touch&&he.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const i of d.find(Qr,this._element))c.on(i,Br,n=>n.preventDefault());const e={leftCallback:()=>this._slide(this._directionToOrder(At)),rightCallback:()=>this._slide(this._directionToOrder(ae)),endCallback:()=>{this._config.pause==="hover"&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(()=>this._maybeEnableCycle(),kr+this._config.interval))}};this._swipeHelper=new he(this._element,e)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=eo[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=d.findOne(Bi,this._indicatorsElement);e.classList.remove(te),e.removeAttribute("aria-current");const i=d.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(te),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===Vt,r=e||ss(this._getItems(),i,n,this._config.wrap);if(r===i)return;const o=this._getItemIndex(r),a=p=>c.trigger(this._element,p,{relatedTarget:r,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(a(Vr).defaultPrevented||!i||!r)return;const h=!!this._interval;this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=r;const u=n?zr:Ur,f=n?Gr:qr;r.classList.add(f),Kt(r),i.classList.add(u),r.classList.add(u);const m=()=>{r.classList.remove(u,f),r.classList.add(te),i.classList.remove(te,f,u),this._isSliding=!1,a(Le)};this._queueCallback(m,i,this._isAnimated()),h&&this.cycle()}_isAnimated(){return this._element.classList.contains(Yr)}_getActive(){return d.findOne(Xr,this._element)}_getItems(){return d.find(Fi,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return H()?t===At?vt:Vt:t===At?Vt:vt}_orderToDirection(t){return H()?t===vt?At:ae:t===vt?ae:At}static jQueryInterface(t){return this.each(function(){const e=Ut.getOrCreateInstance(this,t);if(typeof t=="number"){e.to(t);return}if(typeof t=="string"){if(e[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);e[t]()}})}}c.on(document,Kr,Zr,function(s){const t=d.getElementFromSelector(this);if(!t||!t.classList.contains(ji))return;s.preventDefault();const e=Ut.getOrCreateInstance(t),i=this.getAttribute("data-bs-slide-to");if(i){e.to(i),e._maybeEnableCycle();return}if(q.getDataAttribute(this,"slide")==="next"){e.next(),e._maybeEnableCycle();return}e.prev(),e._maybeEnableCycle()});c.on(window,Fr,()=>{const s=d.find(to);for(const t of s)Ut.getOrCreateInstance(t)});j(Ut);const no="collapse",ro="bs.collapse",zt=`.${ro}`,oo=".data-api",ao=`show${zt}`,lo=`shown${zt}`,co=`hide${zt}`,uo=`hidden${zt}`,ho=`click${zt}${oo}`,De="show",wt="collapse",ee="collapsing",fo="collapsed",po=`:scope .${wt} .${wt}`,mo="collapse-horizontal",_o="width",go="height",Eo=".collapse.show, .collapse.collapsing",Ye='[data-bs-toggle="collapse"]',vo={parent:null,toggle:!0},bo={parent:"(null|element)",toggle:"boolean"};class Bt extends K{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=d.find(Ye);for(const n of i){const r=d.getSelectorFromElement(n),o=d.find(r).filter(a=>a===this._element);r!==null&&o.length&&this._triggerArray.push(n)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return vo}static get DefaultType(){return bo}static get NAME(){return no}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(Eo).filter(a=>a!==this._element).map(a=>Bt.getOrCreateInstance(a,{toggle:!1}))),t.length&&t[0]._isTransitioning||c.trigger(this._element,ao).defaultPrevented)return;for(const a of t)a.hide();const i=this._getDimension();this._element.classList.remove(wt),this._element.classList.add(ee),this._element.style[i]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=()=>{this._isTransitioning=!1,this._element.classList.remove(ee),this._element.classList.add(wt,De),this._element.style[i]="",c.trigger(this._element,lo)},o=`scroll${i[0].toUpperCase()+i.slice(1)}`;this._queueCallback(n,this._element,!0),this._element.style[i]=`${this._element[o]}px`}hide(){if(this._isTransitioning||!this._isShown()||c.trigger(this._element,co).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,Kt(this._element),this._element.classList.add(ee),this._element.classList.remove(wt,De);for(const n of this._triggerArray){const r=d.getElementFromSelector(n);r&&!this._isShown(r)&&this._addAriaAndCollapsedClass([n],!1)}this._isTransitioning=!0;const i=()=>{this._isTransitioning=!1,this._element.classList.remove(ee),this._element.classList.add(wt),c.trigger(this._element,uo)};this._element.style[e]="",this._queueCallback(i,this._element,!0)}_isShown(t=this._element){return t.classList.contains(De)}_configAfterMerge(t){return t.toggle=!!t.toggle,t.parent=tt(t.parent),t}_getDimension(){return this._element.classList.contains(mo)?_o:go}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Ye);for(const e of t){const i=d.getElementFromSelector(e);i&&this._addAriaAndCollapsedClass([e],this._isShown(i))}}_getFirstLevelChildren(t){const e=d.find(po,this._config.parent);return d.find(t,this._config.parent).filter(i=>!e.includes(i))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle(fo,!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return typeof t=="string"&&/show|hide/.test(t)&&(e.toggle=!1),this.each(function(){const i=Bt.getOrCreateInstance(this,e);if(typeof t=="string"){if(typeof i[t]>"u")throw new TypeError(`No method named "${t}"`);i[t]()}})}}c.on(document,ho,Ye,function(s){(s.target.tagName==="A"||s.delegateTarget&&s.delegateTarget.tagName==="A")&&s.preventDefault();for(const t of d.getMultipleElementsFromSelector(this))Bt.getOrCreateInstance(t,{toggle:!1}).toggle()});j(Bt);const Ss="dropdown",yo="bs.dropdown",_t=`.${yo}`,ns=".data-api",Ao="Escape",Ls="Tab",To="ArrowUp",Ds="ArrowDown",wo=2,Co=`hide${_t}`,Oo=`hidden${_t}`,No=`show${_t}`,So=`shown${_t}`,Ki=`click${_t}${ns}`,Yi=`keydown${_t}${ns}`,Lo=`keyup${_t}${ns}`,Tt="show",Do="dropup",$o="dropend",Io="dropstart",Mo="dropup-center",xo="dropdown-center",ht='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',Po=`${ht}.${Tt}`,le=".dropdown-menu",Ro=".navbar",ko=".navbar-nav",Vo=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",Ho=H()?"top-end":"top-start",Wo=H()?"top-start":"top-end",jo=H()?"bottom-end":"bottom-start",Bo=H()?"bottom-start":"bottom-end",Fo=H()?"left-start":"right-start",Ko=H()?"right-start":"left-start",Yo="top",Uo="bottom",zo={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},Go={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class U extends K{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=d.next(this._element,le)[0]||d.prev(this._element,le)[0]||d.findOne(le,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return zo}static get DefaultType(){return Go}static get NAME(){return Ss}toggle(){return this._isShown()?this.hide():this.show()}show(){if(et(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!c.trigger(this._element,No,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(ko))for(const i of[].concat(...document.body.children))c.on(i,"mouseover",ue);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(Tt),this._element.classList.add(Tt),c.trigger(this._element,So,t)}}hide(){if(et(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!c.trigger(this._element,Co,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const i of[].concat(...document.body.children))c.off(i,"mouseover",ue);this._popper&&this._popper.destroy(),this._menu.classList.remove(Tt),this._element.classList.remove(Tt),this._element.setAttribute("aria-expanded","false"),q.removeDataAttribute(this._menu,"popper"),c.trigger(this._element,Oo,t)}}_getConfig(t){if(t=super._getConfig(t),typeof t.reference=="object"&&!G(t.reference)&&typeof t.reference.getBoundingClientRect!="function")throw new TypeError(`${Ss.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(typeof Ni>"u")throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org/docs/v2/)");let t=this._element;this._config.reference==="parent"?t=this._parent:G(this._config.reference)?t=tt(this._config.reference):typeof this._config.reference=="object"&&(t=this._config.reference);const e=this._getPopperConfig();this._popper=es(t,this._menu,e)}_isShown(){return this._menu.classList.contains(Tt)}_getPlacement(){const t=this._parent;if(t.classList.contains($o))return Fo;if(t.classList.contains(Io))return Ko;if(t.classList.contains(Mo))return Yo;if(t.classList.contains(xo))return Uo;const e=getComputedStyle(this._menu).getPropertyValue("--bs-position").trim()==="end";return t.classList.contains(Do)?e?Wo:Ho:e?Bo:jo}_detectNavbar(){return this._element.closest(Ro)!==null}_getOffset(){const{offset:t}=this._config;return typeof t=="string"?t.split(",").map(e=>Number.parseInt(e,10)):typeof t=="function"?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||this._config.display==="static")&&(q.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...M(this._config.popperConfig,[void 0,t])}}_selectMenuItem({key:t,target:e}){const i=d.find(Vo,this._menu).filter(n=>Mt(n));i.length&&ss(i,e,t===Ds,!i.includes(e)).focus()}static jQueryInterface(t){return this.each(function(){const e=U.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof e[t]>"u")throw new TypeError(`No method named "${t}"`);e[t]()}})}static clearMenus(t){if(t.button===wo||t.type==="keyup"&&t.key!==Ls)return;const e=d.find(Po);for(const i of e){const n=U.getInstance(i);if(!n||n._config.autoClose===!1)continue;const r=t.composedPath(),o=r.includes(n._menu);if(r.includes(n._element)||n._config.autoClose==="inside"&&!o||n._config.autoClose==="outside"&&o||n._menu.contains(t.target)&&(t.type==="keyup"&&t.key===Ls||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const a={relatedTarget:n._element};t.type==="click"&&(a.clickEvent=t),n._completeHide(a)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i=t.key===Ao,n=[To,Ds].includes(t.key);if(!n&&!i||e&&!i)return;t.preventDefault();const r=this.matches(ht)?this:d.prev(this,ht)[0]||d.next(this,ht)[0]||d.findOne(ht,t.delegateTarget.parentNode),o=U.getOrCreateInstance(r);if(n){t.stopPropagation(),o.show(),o._selectMenuItem(t);return}o._isShown()&&(t.stopPropagation(),o.hide(),r.focus())}}c.on(document,Yi,ht,U.dataApiKeydownHandler);c.on(document,Yi,le,U.dataApiKeydownHandler);c.on(document,Ki,U.clearMenus);c.on(document,Lo,U.clearMenus);c.on(document,Ki,ht,function(s){s.preventDefault(),U.getOrCreateInstance(this).toggle()});j(U);const Ui="backdrop",qo="fade",$s="show",Is=`mousedown.bs.${Ui}`,Xo={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Qo={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class zi extends Yt{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Xo}static get DefaultType(){return Qo}static get NAME(){return Ui}show(t){if(!this._config.isVisible){M(t);return}this._append();const e=this._getElement();this._config.isAnimated&&Kt(e),e.classList.add($s),this._emulateAnimation(()=>{M(t)})}hide(t){if(!this._config.isVisible){M(t);return}this._getElement().classList.remove($s),this._emulateAnimation(()=>{this.dispose(),M(t)})}dispose(){this._isAppended&&(c.off(this._element,Is),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add(qo),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=tt(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),c.on(t,Is,()=>{M(this._config.clickCallback)}),this._isAppended=!0}_emulateAnimation(t){Ii(t,this._getElement(),this._config.isAnimated)}}const Jo="focustrap",Zo="bs.focustrap",de=`.${Zo}`,ta=`focusin${de}`,ea=`keydown.tab${de}`,sa="Tab",ia="forward",Ms="backward",na={autofocus:!0,trapElement:null},ra={autofocus:"boolean",trapElement:"element"};class Gi extends Yt{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return na}static get DefaultType(){return ra}static get NAME(){return Jo}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),c.off(document,de),c.on(document,ta,t=>this._handleFocusin(t)),c.on(document,ea,t=>this._handleKeydown(t)),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,c.off(document,de))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=d.focusableChildren(e);i.length===0?e.focus():this._lastTabNavDirection===Ms?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){t.key===sa&&(this._lastTabNavDirection=t.shiftKey?Ms:ia)}}const xs=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Ps=".sticky-top",se="padding-right",Rs="margin-right";class Ue{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,se,e=>e+t),this._setElementAttributes(xs,se,e=>e+t),this._setElementAttributes(Ps,Rs,e=>e-t)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,se),this._resetElementAttributes(xs,se),this._resetElementAttributes(Ps,Rs)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth(),r=o=>{if(o!==this._element&&window.innerWidth>o.clientWidth+n)return;this._saveInitialAttribute(o,e);const a=window.getComputedStyle(o).getPropertyValue(e);o.style.setProperty(e,`${i(Number.parseFloat(a))}px`)};this._applyManipulationCallback(t,r)}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&q.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){const i=n=>{const r=q.getDataAttribute(n,e);if(r===null){n.style.removeProperty(e);return}q.removeDataAttribute(n,e),n.style.setProperty(e,r)};this._applyManipulationCallback(t,i)}_applyManipulationCallback(t,e){if(G(t)){e(t);return}for(const i of d.find(t,this._element))e(i)}}const oa="modal",aa="bs.modal",W=`.${aa}`,la=".data-api",ca="Escape",ua=`hide${W}`,ha=`hidePrevented${W}`,qi=`hidden${W}`,Xi=`show${W}`,da=`shown${W}`,fa=`resize${W}`,pa=`click.dismiss${W}`,ma=`mousedown.dismiss${W}`,_a=`keydown.dismiss${W}`,ga=`click${W}${la}`,ks="modal-open",Ea="fade",Vs="show",$e="modal-static",va=".modal.show",ba=".modal-dialog",ya=".modal-body",Aa='[data-bs-toggle="modal"]',Ta={backdrop:!0,focus:!0,keyboard:!0},wa={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Dt extends K{constructor(t,e){super(t,e),this._dialog=d.findOne(ba,this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new Ue,this._addEventListeners()}static get Default(){return Ta}static get DefaultType(){return wa}static get NAME(){return oa}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||c.trigger(this._element,Xi,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(ks),this._adjustDialog(),this._backdrop.show(()=>this._showElement(t)))}hide(){!this._isShown||this._isTransitioning||c.trigger(this._element,ua).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(Vs),this._queueCallback(()=>this._hideModal(),this._element,this._isAnimated()))}dispose(){c.off(window,W),c.off(this._dialog,W),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new zi({isVisible:!!this._config.backdrop,isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Gi({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=d.findOne(ya,this._dialog);e&&(e.scrollTop=0),Kt(this._element),this._element.classList.add(Vs);const i=()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,c.trigger(this._element,da,{relatedTarget:t})};this._queueCallback(i,this._dialog,this._isAnimated())}_addEventListeners(){c.on(this._element,_a,t=>{if(t.key===ca){if(this._config.keyboard){this.hide();return}this._triggerBackdropTransition()}}),c.on(window,fa,()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()}),c.on(this._element,ma,t=>{c.one(this._element,pa,e=>{if(!(this._element!==t.target||this._element!==e.target)){if(this._config.backdrop==="static"){this._triggerBackdropTransition();return}this._config.backdrop&&this.hide()}})})}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(ks),this._resetAdjustments(),this._scrollBar.reset(),c.trigger(this._element,qi)})}_isAnimated(){return this._element.classList.contains(Ea)}_triggerBackdropTransition(){if(c.trigger(this._element,ha).defaultPrevented)return;const e=this._element.scrollHeight>document.documentElement.clientHeight,i=this._element.style.overflowY;i==="hidden"||this._element.classList.contains($e)||(e||(this._element.style.overflowY="hidden"),this._element.classList.add($e),this._queueCallback(()=>{this._element.classList.remove($e),this._queueCallback(()=>{this._element.style.overflowY=i},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const n=H()?"paddingLeft":"paddingRight";this._element.style[n]=`${e}px`}if(!i&&t){const n=H()?"paddingRight":"paddingLeft";this._element.style[n]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each(function(){const i=Dt.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof i[t]>"u")throw new TypeError(`No method named "${t}"`);i[t](e)}})}}c.on(document,ga,Aa,function(s){const t=d.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&s.preventDefault(),c.one(t,Xi,n=>{n.defaultPrevented||c.one(t,qi,()=>{Mt(this)&&this.focus()})});const e=d.findOne(va);e&&Dt.getInstance(e).hide(),Dt.getOrCreateInstance(t).toggle(this)});me(Dt);j(Dt);const Ca="offcanvas",Oa="bs.offcanvas",Q=`.${Oa}`,Qi=".data-api",Na=`load${Q}${Qi}`,Sa="Escape",Hs="show",Ws="showing",js="hiding",La="offcanvas-backdrop",Ji=".offcanvas.show",Da=`show${Q}`,$a=`shown${Q}`,Ia=`hide${Q}`,Bs=`hidePrevented${Q}`,Zi=`hidden${Q}`,Ma=`resize${Q}`,xa=`click${Q}${Qi}`,Pa=`keydown.dismiss${Q}`,Ra='[data-bs-toggle="offcanvas"]',ka={backdrop:!0,keyboard:!0,scroll:!1},Va={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class st extends K{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return ka}static get DefaultType(){return Va}static get NAME(){return Ca}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){if(this._isShown||c.trigger(this._element,Da,{relatedTarget:t}).defaultPrevented)return;this._isShown=!0,this._backdrop.show(),this._config.scroll||new Ue().hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Ws);const i=()=>{(!this._config.scroll||this._config.backdrop)&&this._focustrap.activate(),this._element.classList.add(Hs),this._element.classList.remove(Ws),c.trigger(this._element,$a,{relatedTarget:t})};this._queueCallback(i,this._element,!0)}hide(){if(!this._isShown||c.trigger(this._element,Ia).defaultPrevented)return;this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(js),this._backdrop.hide();const e=()=>{this._element.classList.remove(Hs,js),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||new Ue().reset(),c.trigger(this._element,Zi)};this._queueCallback(e,this._element,!0)}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=()=>{if(this._config.backdrop==="static"){c.trigger(this._element,Bs);return}this.hide()},e=!!this._config.backdrop;return new zi({className:La,isVisible:e,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:e?t:null})}_initializeFocusTrap(){return new Gi({trapElement:this._element})}_addEventListeners(){c.on(this._element,Pa,t=>{if(t.key===Sa){if(this._config.keyboard){this.hide();return}c.trigger(this._element,Bs)}})}static jQueryInterface(t){return this.each(function(){const e=st.getOrCreateInstance(this,t);if(typeof t=="string"){if(e[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);e[t](this)}})}}c.on(document,xa,Ra,function(s){const t=d.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&s.preventDefault(),et(this))return;c.one(t,Zi,()=>{Mt(this)&&this.focus()});const e=d.findOne(Ji);e&&e!==t&&st.getInstance(e).hide(),st.getOrCreateInstance(t).toggle(this)});c.on(window,Na,()=>{for(const s of d.find(Ji))st.getOrCreateInstance(s).show()});c.on(window,Ma,()=>{for(const s of d.find("[aria-modal][class*=show][class*=offcanvas-]"))getComputedStyle(s).position!=="fixed"&&st.getOrCreateInstance(s).hide()});me(st);j(st);const Ha=/^aria-[\w-]*$/i,tn={"*":["class","dir","id","lang","role",Ha],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Wa=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),ja=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Ba=(s,t)=>{const e=s.nodeName.toLowerCase();return t.includes(e)?Wa.has(e)?!!ja.test(s.nodeValue):!0:t.filter(i=>i instanceof RegExp).some(i=>i.test(e))};function Fa(s,t,e){if(!s.length)return s;if(e&&typeof e=="function")return e(s);const n=new window.DOMParser().parseFromString(s,"text/html"),r=[].concat(...n.body.querySelectorAll("*"));for(const o of r){const a=o.nodeName.toLowerCase();if(!Object.keys(t).includes(a)){o.remove();continue}const l=[].concat(...o.attributes),h=[].concat(t["*"]||[],t[a]||[]);for(const u of l)Ba(u,h)||o.removeAttribute(u.nodeName)}return n.body.innerHTML}const Ka="TemplateFactory",Ya={allowList:tn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},Ua={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},za={entry:"(string|element|function|null)",selector:"(string|element)"};class Ga extends Yt{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Ya}static get DefaultType(){return Ua}static get NAME(){return Ka}getContent(){return Object.values(this._config.content).map(t=>this._resolvePossibleFunction(t)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[n,r]of Object.entries(this._config.content))this._setContent(t,r,n);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},za)}_setContent(t,e,i){const n=d.findOne(i,t);if(n){if(e=this._resolvePossibleFunction(e),!e){n.remove();return}if(G(e)){this._putElementInTemplate(tt(e),n);return}if(this._config.html){n.innerHTML=this._maybeSanitize(e);return}n.textContent=e}}_maybeSanitize(t){return this._config.sanitize?Fa(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return M(t,[void 0,this])}_putElementInTemplate(t,e){if(this._config.html){e.innerHTML="",e.append(t);return}e.textContent=t.textContent}}const qa="tooltip",Xa=new Set(["sanitize","allowList","sanitizeFn"]),Ie="fade",Qa="modal",ie="show",Ja=".tooltip-inner",Fs=`.${Qa}`,Ks="hide.bs.modal",Ht="hover",Me="focus",xe="click",Za="manual",tl="hide",el="hidden",sl="show",il="shown",nl="inserted",rl="click",ol="focusin",al="focusout",ll="mouseenter",cl="mouseleave",ul={AUTO:"auto",TOP:"top",RIGHT:H()?"left":"right",BOTTOM:"bottom",LEFT:H()?"right":"left"},hl={allowList:tn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},dl={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Pt extends K{constructor(t,e){if(typeof Ni>"u")throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return hl}static get DefaultType(){return dl}static get NAME(){return qa}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){if(this._isEnabled){if(this._isShown()){this._leave();return}this._enter()}}dispose(){clearTimeout(this._timeout),c.off(this._element.closest(Fs),Ks,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!(this._isWithContent()&&this._isEnabled))return;const t=c.trigger(this._element,this.constructor.eventName(sl)),i=(Di(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!i)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:r}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(r.append(n),c.trigger(this._element,this.constructor.eventName(nl))),this._popper=this._createPopper(n),n.classList.add(ie),"ontouchstart"in document.documentElement)for(const a of[].concat(...document.body.children))c.on(a,"mouseover",ue);const o=()=>{c.trigger(this._element,this.constructor.eventName(il)),this._isHovered===!1&&this._leave(),this._isHovered=!1};this._queueCallback(o,this.tip,this._isAnimated())}hide(){if(!this._isShown()||c.trigger(this._element,this.constructor.eventName(tl)).defaultPrevented)return;if(this._getTipElement().classList.remove(ie),"ontouchstart"in document.documentElement)for(const n of[].concat(...document.body.children))c.off(n,"mouseover",ue);this._activeTrigger[xe]=!1,this._activeTrigger[Me]=!1,this._activeTrigger[Ht]=!1,this._isHovered=null;const i=()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),c.trigger(this._element,this.constructor.eventName(el)))};this._queueCallback(i,this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return!!this._getTitle()}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(Ie,ie),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=Jn(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(Ie),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Ga({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[Ja]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Ie)}_isShown(){return this.tip&&this.tip.classList.contains(ie)}_createPopper(t){const e=M(this._config.placement,[this,t,this._element]),i=ul[e.toUpperCase()];return es(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return typeof t=="string"?t.split(",").map(e=>Number.parseInt(e,10)):typeof t=="function"?e=>t(e,this._element):t}_resolvePossibleFunction(t){return M(t,[this._element,this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:i=>{this._getTipElement().setAttribute("data-popper-placement",i.state.placement)}}]};return{...e,...M(this._config.popperConfig,[void 0,e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if(e==="click")c.on(this._element,this.constructor.eventName(rl),this._config.selector,i=>{const n=this._initializeOnDelegatedTarget(i);n._activeTrigger[xe]=!(n._isShown()&&n._activeTrigger[xe]),n.toggle()});else if(e!==Za){const i=e===Ht?this.constructor.eventName(ll):this.constructor.eventName(ol),n=e===Ht?this.constructor.eventName(cl):this.constructor.eventName(al);c.on(this._element,i,this._config.selector,r=>{const o=this._initializeOnDelegatedTarget(r);o._activeTrigger[r.type==="focusin"?Me:Ht]=!0,o._enter()}),c.on(this._element,n,this._config.selector,r=>{const o=this._initializeOnDelegatedTarget(r);o._activeTrigger[r.type==="focusout"?Me:Ht]=o._element.contains(r.relatedTarget),o._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},c.on(this._element.closest(Fs),Ks,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(!this._element.getAttribute("aria-label")&&!this._element.textContent.trim()&&this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){if(this._isShown()||this._isHovered){this._isHovered=!0;return}this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show)}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=q.getDataAttributes(this._element);for(const i of Object.keys(e))Xa.has(i)&&delete e[i];return t={...e,...typeof t=="object"&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=t.container===!1?document.body:tt(t.container),typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),typeof t.title=="number"&&(t.title=t.title.toString()),typeof t.content=="number"&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each(function(){const e=Pt.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof e[t]>"u")throw new TypeError(`No method named "${t}"`);e[t]()}})}}j(Pt);const fl="popover",pl=".popover-header",ml=".popover-body",_l={...Pt.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},gl={...Pt.DefaultType,content:"(null|string|element|function)"};class rs extends Pt{static get Default(){return _l}static get DefaultType(){return gl}static get NAME(){return fl}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{[pl]:this._getTitle(),[ml]:this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each(function(){const e=rs.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof e[t]>"u")throw new TypeError(`No method named "${t}"`);e[t]()}})}}j(rs);const El="scrollspy",vl="bs.scrollspy",os=`.${vl}`,bl=".data-api",yl=`activate${os}`,Ys=`click${os}`,Al=`load${os}${bl}`,Tl="dropdown-item",bt="active",wl='[data-bs-spy="scroll"]',Pe="[href]",Cl=".nav, .list-group",Us=".nav-link",Ol=".nav-item",Nl=".list-group-item",Sl=`${Us}, ${Ol} > ${Us}, ${Nl}`,Ll=".dropdown",Dl=".dropdown-toggle",$l={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},Il={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Ee extends K{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement=getComputedStyle(this._element).overflowY==="visible"?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return $l}static get DefaultType(){return Il}static get NAME(){return El}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=tt(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,typeof t.threshold=="string"&&(t.threshold=t.threshold.split(",").map(e=>Number.parseFloat(e))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(c.off(this._config.target,Ys),c.on(this._config.target,Ys,Pe,t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo){i.scrollTo({top:n,behavior:"smooth"});return}i.scrollTop=n}}))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver(e=>this._observerCallback(e),t)}_observerCallback(t){const e=o=>this._targetLinks.get(`#${o.target.id}`),i=o=>{this._previousScrollData.visibleEntryTop=o.target.offsetTop,this._process(e(o))},n=(this._rootElement||document.documentElement).scrollTop,r=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const a=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(r&&a){if(i(o),!n)return;continue}!r&&!a&&i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=d.find(Pe,this._config.target);for(const e of t){if(!e.hash||et(e))continue;const i=d.findOne(decodeURI(e.hash),this._element);Mt(i)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,i))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(bt),this._activateParents(t),c.trigger(this._element,yl,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains(Tl)){d.findOne(Dl,t.closest(Ll)).classList.add(bt);return}for(const e of d.parents(t,Cl))for(const i of d.prev(e,Sl))i.classList.add(bt)}_clearActiveClass(t){t.classList.remove(bt);const e=d.find(`${Pe}.${bt}`,t);for(const i of e)i.classList.remove(bt)}static jQueryInterface(t){return this.each(function(){const e=Ee.getOrCreateInstance(this,t);if(typeof t=="string"){if(e[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);e[t]()}})}}c.on(window,Al,()=>{for(const s of d.find(wl))Ee.getOrCreateInstance(s)});j(Ee);const Ml="tab",xl="bs.tab",gt=`.${xl}`,Pl=`hide${gt}`,Rl=`hidden${gt}`,kl=`show${gt}`,Vl=`shown${gt}`,Hl=`click${gt}`,Wl=`keydown${gt}`,jl=`load${gt}`,Bl="ArrowLeft",zs="ArrowRight",Fl="ArrowUp",Gs="ArrowDown",Re="Home",qs="End",dt="active",Xs="fade",ke="show",Kl="dropdown",en=".dropdown-toggle",Yl=".dropdown-menu",Ve=`:not(${en})`,Ul='.list-group, .nav, [role="tablist"]',zl=".nav-item, .list-group-item",Gl=`.nav-link${Ve}, .list-group-item${Ve}, [role="tab"]${Ve}`,sn='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',He=`${Gl}, ${sn}`,ql=`.${dt}[data-bs-toggle="tab"], .${dt}[data-bs-toggle="pill"], .${dt}[data-bs-toggle="list"]`;class $t extends K{constructor(t){super(t),this._parent=this._element.closest(Ul),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),c.on(this._element,Wl,e=>this._keydown(e)))}static get NAME(){return Ml}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?c.trigger(e,Pl,{relatedTarget:t}):null;c.trigger(t,kl,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){if(!t)return;t.classList.add(dt),this._activate(d.getElementFromSelector(t));const i=()=>{if(t.getAttribute("role")!=="tab"){t.classList.add(ke);return}t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),c.trigger(t,Vl,{relatedTarget:e})};this._queueCallback(i,t,t.classList.contains(Xs))}_deactivate(t,e){if(!t)return;t.classList.remove(dt),t.blur(),this._deactivate(d.getElementFromSelector(t));const i=()=>{if(t.getAttribute("role")!=="tab"){t.classList.remove(ke);return}t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),c.trigger(t,Rl,{relatedTarget:e})};this._queueCallback(i,t,t.classList.contains(Xs))}_keydown(t){if(![Bl,zs,Fl,Gs,Re,qs].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter(n=>!et(n));let i;if([Re,qs].includes(t.key))i=e[t.key===Re?0:e.length-1];else{const n=[zs,Gs].includes(t.key);i=ss(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),$t.getOrCreateInstance(i).show())}_getChildren(){return d.find(He,this._parent)}_getActiveElem(){return this._getChildren().find(t=>this._elemIsActive(t))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const i of e)this._setInitialAttributesOnChild(i)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=d.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains(Kl))return;const n=(r,o)=>{const a=d.findOne(r,i);a&&a.classList.toggle(o,e)};n(en,dt),n(Yl,ke),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(dt)}_getInnerElement(t){return t.matches(He)?t:d.findOne(He,t)}_getOuterElement(t){return t.closest(zl)||t}static jQueryInterface(t){return this.each(function(){const e=$t.getOrCreateInstance(this);if(typeof t=="string"){if(e[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);e[t]()}})}}c.on(document,Hl,sn,function(s){["A","AREA"].includes(this.tagName)&&s.preventDefault(),!et(this)&&$t.getOrCreateInstance(this).show()});c.on(window,jl,()=>{for(const s of d.find(ql))$t.getOrCreateInstance(s)});j($t);const Xl="toast",Ql="bs.toast",rt=`.${Ql}`,Jl=`mouseover${rt}`,Zl=`mouseout${rt}`,tc=`focusin${rt}`,ec=`focusout${rt}`,sc=`hide${rt}`,ic=`hidden${rt}`,nc=`show${rt}`,rc=`shown${rt}`,oc="fade",Qs="hide",ne="show",re="showing",ac={animation:"boolean",autohide:"boolean",delay:"number"},lc={animation:!0,autohide:!0,delay:5e3};class ve extends K{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return lc}static get DefaultType(){return ac}static get NAME(){return Xl}show(){if(c.trigger(this._element,nc).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add(oc);const e=()=>{this._element.classList.remove(re),c.trigger(this._element,rc),this._maybeScheduleHide()};this._element.classList.remove(Qs),Kt(this._element),this._element.classList.add(ne,re),this._queueCallback(e,this._element,this._config.animation)}hide(){if(!this.isShown()||c.trigger(this._element,sc).defaultPrevented)return;const e=()=>{this._element.classList.add(Qs),this._element.classList.remove(re,ne),c.trigger(this._element,ic)};this._element.classList.add(re),this._queueCallback(e,this._element,this._config.animation)}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(ne),super.dispose()}isShown(){return this._element.classList.contains(ne)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":{this._hasMouseInteraction=e;break}case"focusin":case"focusout":{this._hasKeyboardInteraction=e;break}}if(e){this._clearTimeout();return}const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){c.on(this._element,Jl,t=>this._onInteraction(t,!0)),c.on(this._element,Zl,t=>this._onInteraction(t,!1)),c.on(this._element,tc,t=>this._onInteraction(t,!0)),c.on(this._element,ec,t=>this._onInteraction(t,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each(function(){const e=ve.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof e[t]>"u")throw new TypeError(`No method named "${t}"`);e[t](this)}})}}me(ve);j(ve);const cc=[{href:"https://library.columbia.edu/libraries.html",value:"Libraries & Affiliates"},{href:"https://library.columbia.edu/libraries/avery.html",value:"Avery Architectural & Fine Arts Library"},{href:"https://library.columbia.edu/libraries/burke.html",value:"Burke Library at Union Theological Seminary"},{href:"https://library.columbia.edu/libraries/business.html",value:"Business & Economics Library in Uris"},{href:"https://library.columbia.edu/libraries/business-manhattanville.html",value:"Business Library at Manhattanville"},{href:"https://library.columbia.edu/libraries/butler.html",value:"Butler Library"},{href:"https://library.columbia.edu/libraries/eastasian.html",value:"C.V. Starr East Asian Library"},{href:"https://library.columbia.edu/libraries/music.html",value:"Gabe M. Wiener Music & Arts Library"},{href:"https://library.cumc.columbia.edu/",value:"Health Sciences Library"},{href:"https://library.columbia.edu/libraries/journalism.html",value:"Journalism Library"},{href:"https://library.columbia.edu/libraries/lehman.html",value:"Lehman Social Sciences Library"},{href:"http://www.law.columbia.edu/library/",value:"Li Lu Law Library"},{href:"https://library.columbia.edu/libraries/math.html",value:"Mathematics Library"},{href:"https://library.columbia.edu/libraries/rbml.html",value:"Rare Book & Manuscript Library"},{href:"https://library.columbia.edu/libraries/science-engineering.html",value:"Science & Engineering Library"},{href:"https://library.columbia.edu/libraries/social-work.html",value:"Social Work Library"}],uc=[{href:"https://library.columbia.edu/collections.html",value:"About Our Collections"},{href:"https://academiccommons.columbia.edu/",value:"Academic Commons"},{href:"https://library.columbia.edu/collections/archives-portal.html",value:"Archival Collections"},{href:"https://resolver.library.columbia.edu/clio",value:"CLIO: Columbia Libraries Catalog"},{href:"https://library.columbia.edu/about/policies/collection-development.html",value:"Collection Development"},{href:"https://dlc.library.columbia.edu",value:"Digital Collections"},{href:"https://library.columbia.edu/collections/eresources.html",value:"E-Resources"},{href:"https://resolver.library.columbia.edu/lweb0004",value:"Recommend a Title for Purchase"},{href:"https://library.columbia.edu/about/policies/collection-development/repatriation-return.html",value:"Repatriation"},{href:"https://library.columbia.edu/about/staff/subject-specialists-by-subject.html",value:"Subject Specialists"}],hc=[{href:"https://library.columbia.edu/about.html",value:"About the Libraries"},{href:"https://library.columbia.edu/about/jobs-internships.html",value:"Jobs & Internships"},{href:"https://library.columbia.edu/about/news/alert.html",value:"Library Status Updates"},{href:"https://library.columbia.edu/about/news.html",value:"News"},{href:"https://library.columbia.edu/about/values.html",value:"Our Values & Commitment in Action"},{href:"https://library.columbia.edu/about/policies.html",value:"Policies"},{href:"https://library.columbia.edu/about/staff.html",value:"Staff"},{href:"https://strategicdirections.library.columbia.edu/",value:"Strategic Directions"},{href:"https://library.columbia.edu/about/student_advisory_committee.html",value:"Student Library Advisory Committee"}],dc={"Services & Tools":[{href:"https://library.columbia.edu/services.html",value:"Services & Tools"},{href:"https://library.columbia.edu/using-libraries/alumni.html",value:"For Alumni"},{href:"https://library.columbia.edu/services/faculty.html",value:"For Faculty"},{href:"https://library.columbia.edu/services.html#audience=student",value:"For Students"},{href:"https://library.columbia.edu/using-libraries/visitors.html",value:"For Visitors"}],Libraries:cc,Collections:uc,"Using the Libraries":[{href:"https://library.columbia.edu/using-libraries.html",value:"Using the Libraries"},{href:"https://library.columbia.edu/using-libraries/access-privileges.html",value:"Access Privileges"},{href:"https://library.columbia.edu/using-libraries/disability.html",value:"Accessibility"},{href:"https://library.columbia.edu/using-libraries/borrowing.html",value:"Borrow, Request, Renew"},{href:"https://library.columbia.edu/services/reserves.html",value:"Course Reserves"},{href:"https://hours.library.columbia.edu/",value:"Hours"},{href:"https://library.columbia.edu/using-libraries/printing.html",value:"Print, Scan, Digitize"}],"Research & Teaching":[{href:"https://library.columbia.edu/research-teaching.html",value:"Research & Teaching"},{href:"https://library.columbia.edu/research-teaching/copyright.html",value:"Copyright Information"},{href:"https://library.columbia.edu/research-teaching/getting-started.html",value:"Getting Started with the Libraries"},{href:"https://library.columbia.edu/research-teaching/global.html",value:"Global Studies"},{href:"https://library.columbia.edu/research-teaching/open-scholarship.html",value:"Open Scholarship Services"},{href:"https://library.columbia.edu/services/research-data-services.html",value:"Research Data Services"},{href:"https://library.columbia.edu/services/subject-guides.html",value:"Subject & Course Guides"},{href:"https://library.columbia.edu/research-teaching/workshops.html",value:"Workshops & Training"}],About:hc};async function nn(s){const t=s;try{const e=await fetch(fc(t),{cache:"no-store",signal:AbortSignal.timeout(3e3)});if(!e.ok)throw new Error("Menu fetch failed");return await e.json()}catch(e){return console.warn("[CUL Menu] Remote menu unavailable, using bundled example.",e),dc}}function fc(s){return s.includes("?")?s:`${s}?v=5.3.0`}async function pc(s){const t=document.querySelectorAll("[data-cul-menu]");if(!t.length)return;const e=await nn(s);t.forEach((i,n)=>{const r=_c(i,n),o=gc(e,r);i.replaceChildren(o),mc(i)})}function mc(s){s.classList.remove("cul-menu-loading"),s.classList.add("cul-menu-loaded")}function _c(s,t){return{prefix:s.dataset.menuId||`culmenu-${t}`,toggleTag:s.dataset.toggleTag||"button",toggleClasses:s.dataset.toggleClasses||"btn btn-toggle ps-0 d-inline-flex w-100 align-items-center rounded border-0 collapsed",listClasses:s.dataset.listClasses||"list-unstyled w-100",itemClasses:s.dataset.itemClasses||"d-block",useCollapse:s.dataset.useCollapse!=="false"}}function gc(s,t){const e=document.createElement("ul");e.className=t.listClasses;for(const i in s){const n=document.createElement("li");n.className="mb-1";const r=`${t.prefix}-${Ec(i)}-collapse`,o=document.createElement(t.toggleTag);o.className=t.toggleClasses,o.textContent=i,t.useCollapse&&(o.setAttribute("data-bs-toggle","collapse"),o.setAttribute("data-bs-target",`#${r}`),o.setAttribute("aria-expanded","false")),n.appendChild(o);const a=document.createElement("div");a.className=t.useCollapse?"collapse":"",a.id=r;const l=document.createElement("ul");l.className="btn-toggle-nav list-unstyled fw-normal pb-1",s[i].forEach(h=>{const u=document.createElement("li"),f=document.createElement("a");f.href=h.href,f.textContent=h.value,f.className=t.itemClasses,u.appendChild(f),l.appendChild(u)}),a.appendChild(l),n.appendChild(a),e.appendChild(n)}return e}function Ec(s){return s.toLowerCase().replace(/\s+/g,"-")}async function vc(s,t){const e=document.querySelector(s);if(!e)return;const i=e.querySelector("ul");if(!i){console.warn("CUL navbar menu: <ul> not found");return}const n=await nn(t),r=e.dataset.menuId||"cul-navbar";i.replaceChildren(yc(n,r)),bc(e)}function bc(s){s.classList.remove("cul-menu-loading"),s.classList.add("cul-menu-loaded")}function yc(s,t){const e=document.createDocumentFragment();for(const i in s){const n=`${t}-${Ac(i)}`,r=document.createElement("li");r.className="nav-item dropdown position-static d-inline-flex";const o=document.createElement("a");o.href="#",o.className="nav-link dropdown-toggle my-2 me-3",o.setAttribute("data-bs-toggle","dropdown"),o.setAttribute("aria-expanded","false"),o.textContent=i,r.appendChild(o);const a=document.createElement("div");a.id=`${n}-dropdown`,a.className="dropdown-menu w-100 border-top-0 border-left-0 border-right-0 rounded-0 py-0 my-0";const l=document.createElement("div");l.className="py-3 bg-secondary text-white";const h=document.createElement("div");h.className="container cul-cols",s[i].forEach(u=>{const f=document.createElement("a");f.href=u.href,f.className="d-block py-1 text-white dropdown-item bg-secondary",f.textContent=u.value,h.appendChild(f)}),l.appendChild(h),a.appendChild(l),r.appendChild(a),e.appendChild(r)}return e}function Ac(s){return s.toLowerCase().replace(/\s+/g,"-")}const rn="https://toolkit-dev.library.columbia.edu/v5/assets/cul-main-menu.json";pc(rn);vc("[data-cul-navbar]",rn);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* CUL Menu v5.
|
|
2
|
+
* CUL Menu v5.3.0
|
|
3
3
|
* (c) 2026
|
|
4
4
|
*/
|
|
5
5
|
const b = [{ href: "https://library.columbia.edu/libraries.html", value: "Libraries & Affiliates" }, { href: "https://library.columbia.edu/libraries/avery.html", value: "Avery Architectural & Fine Arts Library" }, { href: "https://library.columbia.edu/libraries/burke.html", value: "Burke Library at Union Theological Seminary" }, { href: "https://library.columbia.edu/libraries/business.html", value: "Business & Economics Library in Uris" }, { href: "https://library.columbia.edu/libraries/business-manhattanville.html", value: "Business Library at Manhattanville" }, { href: "https://library.columbia.edu/libraries/butler.html", value: "Butler Library" }, { href: "https://library.columbia.edu/libraries/eastasian.html", value: "C.V. Starr East Asian Library" }, { href: "https://library.columbia.edu/libraries/music.html", value: "Gabe M. Wiener Music & Arts Library" }, { href: "https://library.cumc.columbia.edu/", value: "Health Sciences Library" }, { href: "https://library.columbia.edu/libraries/journalism.html", value: "Journalism Library" }, { href: "https://library.columbia.edu/libraries/lehman.html", value: "Lehman Social Sciences Library" }, { href: "http://www.law.columbia.edu/library/", value: "Li Lu Law Library" }, { href: "https://library.columbia.edu/libraries/math.html", value: "Mathematics Library" }, { href: "https://library.columbia.edu/libraries/rbml.html", value: "Rare Book & Manuscript Library" }, { href: "https://library.columbia.edu/libraries/science-engineering.html", value: "Science & Engineering Library" }, { href: "https://library.columbia.edu/libraries/social-work.html", value: "Social Work Library" }], n = [{ href: "https://library.columbia.edu/collections.html", value: "About Our Collections" }, { href: "https://academiccommons.columbia.edu/", value: "Academic Commons" }, { href: "https://library.columbia.edu/collections/archives-portal.html", value: "Archival Collections" }, { href: "https://resolver.library.columbia.edu/clio", value: "CLIO: Columbia Libraries Catalog" }, { href: "https://library.columbia.edu/about/policies/collection-development.html", value: "Collection Development" }, { href: "https://dlc.library.columbia.edu", value: "Digital Collections" }, { href: "https://library.columbia.edu/collections/eresources.html", value: "E-Resources" }, { href: "https://resolver.library.columbia.edu/lweb0004", value: "Recommend a Title for Purchase" }, { href: "https://library.columbia.edu/about/policies/collection-development/repatriation-return.html", value: "Repatriation" }, { href: "https://library.columbia.edu/about/staff/subject-specialists-by-subject.html", value: "Subject Specialists" }], u = [{ href: "https://library.columbia.edu/about.html", value: "About the Libraries" }, { href: "https://library.columbia.edu/about/jobs-internships.html", value: "Jobs & Internships" }, { href: "https://library.columbia.edu/about/news/alert.html", value: "Library Status Updates" }, { href: "https://library.columbia.edu/about/news.html", value: "News" }, { href: "https://library.columbia.edu/about/values.html", value: "Our Values & Commitment in Action" }, { href: "https://library.columbia.edu/about/policies.html", value: "Policies" }, { href: "https://library.columbia.edu/about/staff.html", value: "Staff" }, { href: "https://strategicdirections.library.columbia.edu/", value: "Strategic Directions" }, { href: "https://library.columbia.edu/about/student_advisory_committee.html", value: "Student Library Advisory Committee" }], A = {
|
|
@@ -28,7 +28,7 @@ async function m(i) {
|
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
function d(i) {
|
|
31
|
-
return i.includes("?") ? i : `${i}?v=5.
|
|
31
|
+
return i.includes("?") ? i : `${i}?v=5.3.0`;
|
|
32
32
|
}
|
|
33
33
|
async function W(i) {
|
|
34
34
|
const e = document.querySelectorAll("[data-cul-menu]");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var CULMenu=(function(r){"use strict";/*!
|
|
2
|
-
* CUL Menu v5.
|
|
2
|
+
* CUL Menu v5.3.0
|
|
3
3
|
* (c) 2026
|
|
4
|
-
*/const u={"Services & Tools":[{href:"https://library.columbia.edu/services.html",value:"Services & Tools"},{href:"https://library.columbia.edu/using-libraries/alumni.html",value:"For Alumni"},{href:"https://library.columbia.edu/services/faculty.html",value:"For Faculty"},{href:"https://library.columbia.edu/services.html#audience=student",value:"For Students"},{href:"https://library.columbia.edu/using-libraries/visitors.html",value:"For Visitors"}],Libraries:[{href:"https://library.columbia.edu/libraries.html",value:"Libraries & Affiliates"},{href:"https://library.columbia.edu/libraries/avery.html",value:"Avery Architectural & Fine Arts Library"},{href:"https://library.columbia.edu/libraries/burke.html",value:"Burke Library at Union Theological Seminary"},{href:"https://library.columbia.edu/libraries/business.html",value:"Business & Economics Library in Uris"},{href:"https://library.columbia.edu/libraries/business-manhattanville.html",value:"Business Library at Manhattanville"},{href:"https://library.columbia.edu/libraries/butler.html",value:"Butler Library"},{href:"https://library.columbia.edu/libraries/eastasian.html",value:"C.V. Starr East Asian Library"},{href:"https://library.columbia.edu/libraries/music.html",value:"Gabe M. Wiener Music & Arts Library"},{href:"https://library.cumc.columbia.edu/",value:"Health Sciences Library"},{href:"https://library.columbia.edu/libraries/journalism.html",value:"Journalism Library"},{href:"https://library.columbia.edu/libraries/lehman.html",value:"Lehman Social Sciences Library"},{href:"http://www.law.columbia.edu/library/",value:"Li Lu Law Library"},{href:"https://library.columbia.edu/libraries/math.html",value:"Mathematics Library"},{href:"https://library.columbia.edu/libraries/rbml.html",value:"Rare Book & Manuscript Library"},{href:"https://library.columbia.edu/libraries/science-engineering.html",value:"Science & Engineering Library"},{href:"https://library.columbia.edu/libraries/social-work.html",value:"Social Work Library"}],Collections:[{href:"https://library.columbia.edu/collections.html",value:"About Our Collections"},{href:"https://academiccommons.columbia.edu/",value:"Academic Commons"},{href:"https://library.columbia.edu/collections/archives-portal.html",value:"Archival Collections"},{href:"https://resolver.library.columbia.edu/clio",value:"CLIO: Columbia Libraries Catalog"},{href:"https://library.columbia.edu/about/policies/collection-development.html",value:"Collection Development"},{href:"https://dlc.library.columbia.edu",value:"Digital Collections"},{href:"https://library.columbia.edu/collections/eresources.html",value:"E-Resources"},{href:"https://resolver.library.columbia.edu/lweb0004",value:"Recommend a Title for Purchase"},{href:"https://library.columbia.edu/about/policies/collection-development/repatriation-return.html",value:"Repatriation"},{href:"https://library.columbia.edu/about/staff/subject-specialists-by-subject.html",value:"Subject Specialists"}],"Using the Libraries":[{href:"https://library.columbia.edu/using-libraries.html",value:"Using the Libraries"},{href:"https://library.columbia.edu/using-libraries/access-privileges.html",value:"Access Privileges"},{href:"https://library.columbia.edu/using-libraries/disability.html",value:"Accessibility"},{href:"https://library.columbia.edu/using-libraries/borrowing.html",value:"Borrow, Request, Renew"},{href:"https://library.columbia.edu/services/reserves.html",value:"Course Reserves"},{href:"https://hours.library.columbia.edu/",value:"Hours"},{href:"https://library.columbia.edu/using-libraries/printing.html",value:"Print, Scan, Digitize"}],"Research & Teaching":[{href:"https://library.columbia.edu/research-teaching.html",value:"Research & Teaching"},{href:"https://library.columbia.edu/research-teaching/copyright.html",value:"Copyright Information"},{href:"https://library.columbia.edu/research-teaching/getting-started.html",value:"Getting Started with the Libraries"},{href:"https://library.columbia.edu/research-teaching/global.html",value:"Global Studies"},{href:"https://library.columbia.edu/research-teaching/open-scholarship.html",value:"Open Scholarship Services"},{href:"https://library.columbia.edu/services/research-data-services.html",value:"Research Data Services"},{href:"https://library.columbia.edu/services/subject-guides.html",value:"Subject & Course Guides"},{href:"https://library.columbia.edu/research-teaching/workshops.html",value:"Workshops & Training"}],About:[{href:"https://library.columbia.edu/about.html",value:"About the Libraries"},{href:"https://library.columbia.edu/about/jobs-internships.html",value:"Jobs & Internships"},{href:"https://library.columbia.edu/about/news/alert.html",value:"Library Status Updates"},{href:"https://library.columbia.edu/about/news.html",value:"News"},{href:"https://library.columbia.edu/about/values.html",value:"Our Values & Commitment in Action"},{href:"https://library.columbia.edu/about/policies.html",value:"Policies"},{href:"https://library.columbia.edu/about/staff.html",value:"Staff"},{href:"https://strategicdirections.library.columbia.edu/",value:"Strategic Directions"},{href:"https://library.columbia.edu/about/student_advisory_committee.html",value:"Student Library Advisory Committee"}]},A="data:application/json;base64,ewogICJTZXJ2aWNlcyAmIFRvb2xzIjogWwogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3NlcnZpY2VzLmh0bWwiLAogICAgICAidmFsdWUiOiAiU2VydmljZXMgJiBUb29scyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvdXNpbmctbGlicmFyaWVzL2FsdW1uaS5odG1sIiwKICAgICAgInZhbHVlIjogIkZvciBBbHVtbmkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3NlcnZpY2VzL2ZhY3VsdHkuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJGb3IgRmFjdWx0eSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvc2VydmljZXMuaHRtbCNhdWRpZW5jZT1zdHVkZW50IiwKICAgICAgInZhbHVlIjogIkZvciBTdHVkZW50cyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvdXNpbmctbGlicmFyaWVzL3Zpc2l0b3JzLmh0bWwiLAogICAgICAidmFsdWUiOiAiRm9yIFZpc2l0b3JzIgogICAgfQogIF0sCiAgIkxpYnJhcmllcyI6IFsKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9saWJyYXJpZXMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJMaWJyYXJpZXMgJiBBZmZpbGlhdGVzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9saWJyYXJpZXMvYXZlcnkuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJBdmVyeSBBcmNoaXRlY3R1cmFsICYgRmluZSBBcnRzIExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9idXJrZS5odG1sIiwKICAgICAgInZhbHVlIjogIkJ1cmtlIExpYnJhcnkgYXQgVW5pb24gVGhlb2xvZ2ljYWwgU2VtaW5hcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9idXNpbmVzcy5odG1sIiwKICAgICAgInZhbHVlIjogIkJ1c2luZXNzICYgRWNvbm9taWNzIExpYnJhcnkgaW4gVXJpcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL2J1c2luZXNzLW1hbmhhdHRhbnZpbGxlLmh0bWwiLAogICAgICAidmFsdWUiOiAiQnVzaW5lc3MgTGlicmFyeSBhdCBNYW5oYXR0YW52aWxsZSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL2J1dGxlci5odG1sIiwKICAgICAgInZhbHVlIjogIkJ1dGxlciBMaWJyYXJ5IgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9saWJyYXJpZXMvZWFzdGFzaWFuLmh0bWwiLAogICAgICAidmFsdWUiOiAiQy5WLiBTdGFyciBFYXN0IEFzaWFuIExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9tdXNpYy5odG1sIiwKICAgICAgInZhbHVlIjogIkdhYmUgTS4gV2llbmVyIE11c2ljICYgQXJ0cyBMaWJyYXJ5IgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmN1bWMuY29sdW1iaWEuZWR1LyIsCiAgICAgICJ2YWx1ZSI6ICJIZWFsdGggU2NpZW5jZXMgTGlicmFyeSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL2pvdXJuYWxpc20uaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJKb3VybmFsaXNtIExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9sZWhtYW4uaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJMZWhtYW4gU29jaWFsIFNjaWVuY2VzIExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwOi8vd3d3Lmxhdy5jb2x1bWJpYS5lZHUvbGlicmFyeS8iLAogICAgICAidmFsdWUiOiAiTGkgTHUgTGF3IExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9tYXRoLmh0bWwiLAogICAgICAidmFsdWUiOiAiTWF0aGVtYXRpY3MgTGlicmFyeSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL3JibWwuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJSYXJlIEJvb2sgJiBNYW51c2NyaXB0IExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9zY2llbmNlLWVuZ2luZWVyaW5nLmh0bWwiLAogICAgICAidmFsdWUiOiAiU2NpZW5jZSAmIEVuZ2luZWVyaW5nIExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9zb2NpYWwtd29yay5odG1sIiwKICAgICAgInZhbHVlIjogIlNvY2lhbCBXb3JrIExpYnJhcnkiCiAgICB9CiAgXSwKICAiQ29sbGVjdGlvbnMiOiBbCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvY29sbGVjdGlvbnMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJBYm91dCBPdXIgQ29sbGVjdGlvbnMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2FjYWRlbWljY29tbW9ucy5jb2x1bWJpYS5lZHUvIiwKICAgICAgInZhbHVlIjogIkFjYWRlbWljIENvbW1vbnMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2NvbGxlY3Rpb25zL2FyY2hpdmVzLXBvcnRhbC5odG1sIiwKICAgICAgInZhbHVlIjogIkFyY2hpdmFsIENvbGxlY3Rpb25zIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9yZXNvbHZlci5saWJyYXJ5LmNvbHVtYmlhLmVkdS9jbGlvIiwKICAgICAgInZhbHVlIjogIkNMSU86IENvbHVtYmlhIExpYnJhcmllcyBDYXRhbG9nIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC9wb2xpY2llcy9jb2xsZWN0aW9uLWRldmVsb3BtZW50Lmh0bWwiLAogICAgICAidmFsdWUiOiAiQ29sbGVjdGlvbiBEZXZlbG9wbWVudCIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vZGxjLmxpYnJhcnkuY29sdW1iaWEuZWR1IiwKICAgICAgInZhbHVlIjogIkRpZ2l0YWwgQ29sbGVjdGlvbnMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2NvbGxlY3Rpb25zL2VyZXNvdXJjZXMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJFLVJlc291cmNlcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vcmVzb2x2ZXIubGlicmFyeS5jb2x1bWJpYS5lZHUvbHdlYjAwMDQiLAogICAgICAidmFsdWUiOiAiUmVjb21tZW5kIGEgVGl0bGUgZm9yIFB1cmNoYXNlIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC9wb2xpY2llcy9jb2xsZWN0aW9uLWRldmVsb3BtZW50L3JlcGF0cmlhdGlvbi1yZXR1cm4uaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJSZXBhdHJpYXRpb24iCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2Fib3V0L3N0YWZmL3N1YmplY3Qtc3BlY2lhbGlzdHMtYnktc3ViamVjdC5odG1sIiwKICAgICAgInZhbHVlIjogIlN1YmplY3QgU3BlY2lhbGlzdHMiCiAgICB9CiAgXSwKICAiVXNpbmcgdGhlIExpYnJhcmllcyI6IFsKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS91c2luZy1saWJyYXJpZXMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJVc2luZyB0aGUgTGlicmFyaWVzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS91c2luZy1saWJyYXJpZXMvYWNjZXNzLXByaXZpbGVnZXMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJBY2Nlc3MgUHJpdmlsZWdlcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvdXNpbmctbGlicmFyaWVzL2Rpc2FiaWxpdHkuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJBY2Nlc3NpYmlsaXR5IgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS91c2luZy1saWJyYXJpZXMvYm9ycm93aW5nLmh0bWwiLAogICAgICAidmFsdWUiOiAiQm9ycm93LCBSZXF1ZXN0LCBSZW5ldyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvc2VydmljZXMvcmVzZXJ2ZXMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJDb3Vyc2UgUmVzZXJ2ZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2hvdXJzLmxpYnJhcnkuY29sdW1iaWEuZWR1LyIsCiAgICAgICJ2YWx1ZSI6ICJIb3VycyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvdXNpbmctbGlicmFyaWVzL3ByaW50aW5nLmh0bWwiLAogICAgICAidmFsdWUiOiAiUHJpbnQsIFNjYW4sIERpZ2l0aXplIgogICAgfQogIF0sCiAgIlJlc2VhcmNoICYgVGVhY2hpbmciOiBbCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvcmVzZWFyY2gtdGVhY2hpbmcuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJSZXNlYXJjaCAmIFRlYWNoaW5nIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9yZXNlYXJjaC10ZWFjaGluZy9jb3B5cmlnaHQuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJDb3B5cmlnaHQgSW5mb3JtYXRpb24iCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3Jlc2VhcmNoLXRlYWNoaW5nL2dldHRpbmctc3RhcnRlZC5odG1sIiwKICAgICAgInZhbHVlIjogIkdldHRpbmcgU3RhcnRlZCB3aXRoIHRoZSBMaWJyYXJpZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3Jlc2VhcmNoLXRlYWNoaW5nL2dsb2JhbC5odG1sIiwKICAgICAgInZhbHVlIjogIkdsb2JhbCBTdHVkaWVzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9yZXNlYXJjaC10ZWFjaGluZy9vcGVuLXNjaG9sYXJzaGlwLmh0bWwiLAogICAgICAidmFsdWUiOiAiT3BlbiBTY2hvbGFyc2hpcCBTZXJ2aWNlcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvc2VydmljZXMvcmVzZWFyY2gtZGF0YS1zZXJ2aWNlcy5odG1sIiwKICAgICAgInZhbHVlIjogIlJlc2VhcmNoIERhdGEgU2VydmljZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3NlcnZpY2VzL3N1YmplY3QtZ3VpZGVzLmh0bWwiLAogICAgICAidmFsdWUiOiAiU3ViamVjdCAmIENvdXJzZSBHdWlkZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3Jlc2VhcmNoLXRlYWNoaW5nL3dvcmtzaG9wcy5odG1sIiwKICAgICAgInZhbHVlIjogIldvcmtzaG9wcyAmIFRyYWluaW5nIgogICAgfQogIF0sCiAgIkFib3V0IjogWwogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2Fib3V0Lmh0bWwiLAogICAgICAidmFsdWUiOiAiQWJvdXQgdGhlIExpYnJhcmllcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvYWJvdXQvam9icy1pbnRlcm5zaGlwcy5odG1sIiwKICAgICAgInZhbHVlIjogIkpvYnMgJiBJbnRlcm5zaGlwcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvYWJvdXQvbmV3cy9hbGVydC5odG1sIiwKICAgICAgInZhbHVlIjogIkxpYnJhcnkgU3RhdHVzIFVwZGF0ZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2Fib3V0L25ld3MuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJOZXdzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC92YWx1ZXMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJPdXIgVmFsdWVzICYgQ29tbWl0bWVudCBpbiBBY3Rpb24iCiAgICB9LAogICAgICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC9wb2xpY2llcy5odG1sIiwKICAgICAgInZhbHVlIjogIlBvbGljaWVzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC9zdGFmZi5odG1sIiwKICAgICAgInZhbHVlIjogIlN0YWZmIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9zdHJhdGVnaWNkaXJlY3Rpb25zLmxpYnJhcnkuY29sdW1iaWEuZWR1LyIsCiAgICAgICJ2YWx1ZSI6ICJTdHJhdGVnaWMgRGlyZWN0aW9ucyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvYWJvdXQvc3R1ZGVudF9hZHZpc29yeV9jb21taXR0ZWUuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJTdHVkZW50IExpYnJhcnkgQWR2aXNvcnkgQ29tbWl0dGVlIgogICAgfQogIF0KfQo=";async function b(i){const e=i||A;try{const l=await fetch(d(e),{cache:"no-store",signal:AbortSignal.timeout(3e3)});if(!l.ok)throw new Error("Menu fetch failed");return await l.json()}catch(l){return console.warn("[CUL Menu] Remote menu unavailable, using bundled example.",l),u}}function d(i){return i.includes("?")?i:`${i}?v=5.2.0`}async function n(i){const e=document.querySelectorAll("[data-cul-menu]");if(!e.length)return;const l=await b(i);e.forEach((a,g)=>{const t=W(a,g),I=y(l,t);a.replaceChildren(I),h(a)})}function h(i){i.classList.remove("cul-menu-loading"),i.classList.add("cul-menu-loaded")}function W(i,e){return{prefix:i.dataset.menuId||`culmenu-${e}`,toggleTag:i.dataset.toggleTag||"button",toggleClasses:i.dataset.toggleClasses||"btn btn-toggle ps-0 d-inline-flex w-100 align-items-center rounded border-0 collapsed",listClasses:i.dataset.listClasses||"list-unstyled w-100",itemClasses:i.dataset.itemClasses||"d-block",useCollapse:i.dataset.useCollapse!=="false"}}function y(i,e){const l=document.createElement("ul");l.className=e.listClasses;for(const a in i){const g=document.createElement("li");g.className="mb-1";const t=`${e.prefix}-${p(a)}-collapse`,I=document.createElement(e.toggleTag);I.className=e.toggleClasses,I.textContent=a,e.useCollapse&&(I.setAttribute("data-bs-toggle","collapse"),I.setAttribute("data-bs-target",`#${t}`),I.setAttribute("aria-expanded","false")),g.appendChild(I);const C=document.createElement("div");C.className=e.useCollapse?"collapse":"",C.id=t;const c=document.createElement("ul");c.className="btn-toggle-nav list-unstyled fw-normal pb-1",i[a].forEach(o=>{const m=document.createElement("li"),s=document.createElement("a");s.href=o.href,s.textContent=o.value,s.className=e.itemClasses,m.appendChild(s),c.appendChild(m)}),C.appendChild(c),g.appendChild(C),l.appendChild(g)}return l}function p(i){return i.toLowerCase().replace(/\s+/g,"-")}async function J(i,e){const l=document.querySelector(i);if(!l)return;const a=l.querySelector("ul");if(!a){console.warn("CUL navbar menu: <ul> not found");return}const g=await b(e),t=l.dataset.menuId||"cul-navbar";a.replaceChildren(Z(g,t)),Y(l)}function Y(i){i.classList.remove("cul-menu-loading"),i.classList.add("cul-menu-loaded")}function Z(i,e){const l=document.createDocumentFragment();for(const a in i){const g=`${e}-${v(a)}`,t=document.createElement("li");t.className="nav-item dropdown position-static d-inline-flex";const I=document.createElement("a");I.href="#",I.className="nav-link dropdown-toggle my-2 me-3",I.setAttribute("data-bs-toggle","dropdown"),I.setAttribute("aria-expanded","false"),I.textContent=a,t.appendChild(I);const C=document.createElement("div");C.id=`${g}-dropdown`,C.className="dropdown-menu w-100 border-top-0 border-left-0 border-right-0 rounded-0 py-0 my-0";const c=document.createElement("div");c.className="py-3 bg-secondary text-white";const o=document.createElement("div");o.className="container cul-cols",i[a].forEach(m=>{const s=document.createElement("a");s.href=m.href,s.className="d-block py-1 text-white dropdown-item bg-secondary",s.textContent=m.value,o.appendChild(s)}),c.appendChild(o),C.appendChild(c),t.appendChild(C),l.appendChild(t)}return l}function v(i){return i.toLowerCase().replace(/\s+/g,"-")}function H(i){return n(i.url)}function L(i){return J(i.selector,i.url)}return r.initCollapse=H,r.initNavbar=L,r.makeCULmenu=n,Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}),r})({});
|
|
4
|
+
*/const u={"Services & Tools":[{href:"https://library.columbia.edu/services.html",value:"Services & Tools"},{href:"https://library.columbia.edu/using-libraries/alumni.html",value:"For Alumni"},{href:"https://library.columbia.edu/services/faculty.html",value:"For Faculty"},{href:"https://library.columbia.edu/services.html#audience=student",value:"For Students"},{href:"https://library.columbia.edu/using-libraries/visitors.html",value:"For Visitors"}],Libraries:[{href:"https://library.columbia.edu/libraries.html",value:"Libraries & Affiliates"},{href:"https://library.columbia.edu/libraries/avery.html",value:"Avery Architectural & Fine Arts Library"},{href:"https://library.columbia.edu/libraries/burke.html",value:"Burke Library at Union Theological Seminary"},{href:"https://library.columbia.edu/libraries/business.html",value:"Business & Economics Library in Uris"},{href:"https://library.columbia.edu/libraries/business-manhattanville.html",value:"Business Library at Manhattanville"},{href:"https://library.columbia.edu/libraries/butler.html",value:"Butler Library"},{href:"https://library.columbia.edu/libraries/eastasian.html",value:"C.V. Starr East Asian Library"},{href:"https://library.columbia.edu/libraries/music.html",value:"Gabe M. Wiener Music & Arts Library"},{href:"https://library.cumc.columbia.edu/",value:"Health Sciences Library"},{href:"https://library.columbia.edu/libraries/journalism.html",value:"Journalism Library"},{href:"https://library.columbia.edu/libraries/lehman.html",value:"Lehman Social Sciences Library"},{href:"http://www.law.columbia.edu/library/",value:"Li Lu Law Library"},{href:"https://library.columbia.edu/libraries/math.html",value:"Mathematics Library"},{href:"https://library.columbia.edu/libraries/rbml.html",value:"Rare Book & Manuscript Library"},{href:"https://library.columbia.edu/libraries/science-engineering.html",value:"Science & Engineering Library"},{href:"https://library.columbia.edu/libraries/social-work.html",value:"Social Work Library"}],Collections:[{href:"https://library.columbia.edu/collections.html",value:"About Our Collections"},{href:"https://academiccommons.columbia.edu/",value:"Academic Commons"},{href:"https://library.columbia.edu/collections/archives-portal.html",value:"Archival Collections"},{href:"https://resolver.library.columbia.edu/clio",value:"CLIO: Columbia Libraries Catalog"},{href:"https://library.columbia.edu/about/policies/collection-development.html",value:"Collection Development"},{href:"https://dlc.library.columbia.edu",value:"Digital Collections"},{href:"https://library.columbia.edu/collections/eresources.html",value:"E-Resources"},{href:"https://resolver.library.columbia.edu/lweb0004",value:"Recommend a Title for Purchase"},{href:"https://library.columbia.edu/about/policies/collection-development/repatriation-return.html",value:"Repatriation"},{href:"https://library.columbia.edu/about/staff/subject-specialists-by-subject.html",value:"Subject Specialists"}],"Using the Libraries":[{href:"https://library.columbia.edu/using-libraries.html",value:"Using the Libraries"},{href:"https://library.columbia.edu/using-libraries/access-privileges.html",value:"Access Privileges"},{href:"https://library.columbia.edu/using-libraries/disability.html",value:"Accessibility"},{href:"https://library.columbia.edu/using-libraries/borrowing.html",value:"Borrow, Request, Renew"},{href:"https://library.columbia.edu/services/reserves.html",value:"Course Reserves"},{href:"https://hours.library.columbia.edu/",value:"Hours"},{href:"https://library.columbia.edu/using-libraries/printing.html",value:"Print, Scan, Digitize"}],"Research & Teaching":[{href:"https://library.columbia.edu/research-teaching.html",value:"Research & Teaching"},{href:"https://library.columbia.edu/research-teaching/copyright.html",value:"Copyright Information"},{href:"https://library.columbia.edu/research-teaching/getting-started.html",value:"Getting Started with the Libraries"},{href:"https://library.columbia.edu/research-teaching/global.html",value:"Global Studies"},{href:"https://library.columbia.edu/research-teaching/open-scholarship.html",value:"Open Scholarship Services"},{href:"https://library.columbia.edu/services/research-data-services.html",value:"Research Data Services"},{href:"https://library.columbia.edu/services/subject-guides.html",value:"Subject & Course Guides"},{href:"https://library.columbia.edu/research-teaching/workshops.html",value:"Workshops & Training"}],About:[{href:"https://library.columbia.edu/about.html",value:"About the Libraries"},{href:"https://library.columbia.edu/about/jobs-internships.html",value:"Jobs & Internships"},{href:"https://library.columbia.edu/about/news/alert.html",value:"Library Status Updates"},{href:"https://library.columbia.edu/about/news.html",value:"News"},{href:"https://library.columbia.edu/about/values.html",value:"Our Values & Commitment in Action"},{href:"https://library.columbia.edu/about/policies.html",value:"Policies"},{href:"https://library.columbia.edu/about/staff.html",value:"Staff"},{href:"https://strategicdirections.library.columbia.edu/",value:"Strategic Directions"},{href:"https://library.columbia.edu/about/student_advisory_committee.html",value:"Student Library Advisory Committee"}]},A="data:application/json;base64,ewogICJTZXJ2aWNlcyAmIFRvb2xzIjogWwogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3NlcnZpY2VzLmh0bWwiLAogICAgICAidmFsdWUiOiAiU2VydmljZXMgJiBUb29scyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvdXNpbmctbGlicmFyaWVzL2FsdW1uaS5odG1sIiwKICAgICAgInZhbHVlIjogIkZvciBBbHVtbmkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3NlcnZpY2VzL2ZhY3VsdHkuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJGb3IgRmFjdWx0eSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvc2VydmljZXMuaHRtbCNhdWRpZW5jZT1zdHVkZW50IiwKICAgICAgInZhbHVlIjogIkZvciBTdHVkZW50cyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvdXNpbmctbGlicmFyaWVzL3Zpc2l0b3JzLmh0bWwiLAogICAgICAidmFsdWUiOiAiRm9yIFZpc2l0b3JzIgogICAgfQogIF0sCiAgIkxpYnJhcmllcyI6IFsKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9saWJyYXJpZXMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJMaWJyYXJpZXMgJiBBZmZpbGlhdGVzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9saWJyYXJpZXMvYXZlcnkuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJBdmVyeSBBcmNoaXRlY3R1cmFsICYgRmluZSBBcnRzIExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9idXJrZS5odG1sIiwKICAgICAgInZhbHVlIjogIkJ1cmtlIExpYnJhcnkgYXQgVW5pb24gVGhlb2xvZ2ljYWwgU2VtaW5hcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9idXNpbmVzcy5odG1sIiwKICAgICAgInZhbHVlIjogIkJ1c2luZXNzICYgRWNvbm9taWNzIExpYnJhcnkgaW4gVXJpcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL2J1c2luZXNzLW1hbmhhdHRhbnZpbGxlLmh0bWwiLAogICAgICAidmFsdWUiOiAiQnVzaW5lc3MgTGlicmFyeSBhdCBNYW5oYXR0YW52aWxsZSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL2J1dGxlci5odG1sIiwKICAgICAgInZhbHVlIjogIkJ1dGxlciBMaWJyYXJ5IgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9saWJyYXJpZXMvZWFzdGFzaWFuLmh0bWwiLAogICAgICAidmFsdWUiOiAiQy5WLiBTdGFyciBFYXN0IEFzaWFuIExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9tdXNpYy5odG1sIiwKICAgICAgInZhbHVlIjogIkdhYmUgTS4gV2llbmVyIE11c2ljICYgQXJ0cyBMaWJyYXJ5IgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmN1bWMuY29sdW1iaWEuZWR1LyIsCiAgICAgICJ2YWx1ZSI6ICJIZWFsdGggU2NpZW5jZXMgTGlicmFyeSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL2pvdXJuYWxpc20uaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJKb3VybmFsaXNtIExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9sZWhtYW4uaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJMZWhtYW4gU29jaWFsIFNjaWVuY2VzIExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwOi8vd3d3Lmxhdy5jb2x1bWJpYS5lZHUvbGlicmFyeS8iLAogICAgICAidmFsdWUiOiAiTGkgTHUgTGF3IExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9tYXRoLmh0bWwiLAogICAgICAidmFsdWUiOiAiTWF0aGVtYXRpY3MgTGlicmFyeSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL3JibWwuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJSYXJlIEJvb2sgJiBNYW51c2NyaXB0IExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9zY2llbmNlLWVuZ2luZWVyaW5nLmh0bWwiLAogICAgICAidmFsdWUiOiAiU2NpZW5jZSAmIEVuZ2luZWVyaW5nIExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9zb2NpYWwtd29yay5odG1sIiwKICAgICAgInZhbHVlIjogIlNvY2lhbCBXb3JrIExpYnJhcnkiCiAgICB9CiAgXSwKICAiQ29sbGVjdGlvbnMiOiBbCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvY29sbGVjdGlvbnMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJBYm91dCBPdXIgQ29sbGVjdGlvbnMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2FjYWRlbWljY29tbW9ucy5jb2x1bWJpYS5lZHUvIiwKICAgICAgInZhbHVlIjogIkFjYWRlbWljIENvbW1vbnMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2NvbGxlY3Rpb25zL2FyY2hpdmVzLXBvcnRhbC5odG1sIiwKICAgICAgInZhbHVlIjogIkFyY2hpdmFsIENvbGxlY3Rpb25zIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9yZXNvbHZlci5saWJyYXJ5LmNvbHVtYmlhLmVkdS9jbGlvIiwKICAgICAgInZhbHVlIjogIkNMSU86IENvbHVtYmlhIExpYnJhcmllcyBDYXRhbG9nIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC9wb2xpY2llcy9jb2xsZWN0aW9uLWRldmVsb3BtZW50Lmh0bWwiLAogICAgICAidmFsdWUiOiAiQ29sbGVjdGlvbiBEZXZlbG9wbWVudCIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vZGxjLmxpYnJhcnkuY29sdW1iaWEuZWR1IiwKICAgICAgInZhbHVlIjogIkRpZ2l0YWwgQ29sbGVjdGlvbnMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2NvbGxlY3Rpb25zL2VyZXNvdXJjZXMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJFLVJlc291cmNlcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vcmVzb2x2ZXIubGlicmFyeS5jb2x1bWJpYS5lZHUvbHdlYjAwMDQiLAogICAgICAidmFsdWUiOiAiUmVjb21tZW5kIGEgVGl0bGUgZm9yIFB1cmNoYXNlIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC9wb2xpY2llcy9jb2xsZWN0aW9uLWRldmVsb3BtZW50L3JlcGF0cmlhdGlvbi1yZXR1cm4uaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJSZXBhdHJpYXRpb24iCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2Fib3V0L3N0YWZmL3N1YmplY3Qtc3BlY2lhbGlzdHMtYnktc3ViamVjdC5odG1sIiwKICAgICAgInZhbHVlIjogIlN1YmplY3QgU3BlY2lhbGlzdHMiCiAgICB9CiAgXSwKICAiVXNpbmcgdGhlIExpYnJhcmllcyI6IFsKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS91c2luZy1saWJyYXJpZXMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJVc2luZyB0aGUgTGlicmFyaWVzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS91c2luZy1saWJyYXJpZXMvYWNjZXNzLXByaXZpbGVnZXMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJBY2Nlc3MgUHJpdmlsZWdlcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvdXNpbmctbGlicmFyaWVzL2Rpc2FiaWxpdHkuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJBY2Nlc3NpYmlsaXR5IgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS91c2luZy1saWJyYXJpZXMvYm9ycm93aW5nLmh0bWwiLAogICAgICAidmFsdWUiOiAiQm9ycm93LCBSZXF1ZXN0LCBSZW5ldyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvc2VydmljZXMvcmVzZXJ2ZXMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJDb3Vyc2UgUmVzZXJ2ZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2hvdXJzLmxpYnJhcnkuY29sdW1iaWEuZWR1LyIsCiAgICAgICJ2YWx1ZSI6ICJIb3VycyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvdXNpbmctbGlicmFyaWVzL3ByaW50aW5nLmh0bWwiLAogICAgICAidmFsdWUiOiAiUHJpbnQsIFNjYW4sIERpZ2l0aXplIgogICAgfQogIF0sCiAgIlJlc2VhcmNoICYgVGVhY2hpbmciOiBbCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvcmVzZWFyY2gtdGVhY2hpbmcuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJSZXNlYXJjaCAmIFRlYWNoaW5nIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9yZXNlYXJjaC10ZWFjaGluZy9jb3B5cmlnaHQuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJDb3B5cmlnaHQgSW5mb3JtYXRpb24iCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3Jlc2VhcmNoLXRlYWNoaW5nL2dldHRpbmctc3RhcnRlZC5odG1sIiwKICAgICAgInZhbHVlIjogIkdldHRpbmcgU3RhcnRlZCB3aXRoIHRoZSBMaWJyYXJpZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3Jlc2VhcmNoLXRlYWNoaW5nL2dsb2JhbC5odG1sIiwKICAgICAgInZhbHVlIjogIkdsb2JhbCBTdHVkaWVzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9yZXNlYXJjaC10ZWFjaGluZy9vcGVuLXNjaG9sYXJzaGlwLmh0bWwiLAogICAgICAidmFsdWUiOiAiT3BlbiBTY2hvbGFyc2hpcCBTZXJ2aWNlcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvc2VydmljZXMvcmVzZWFyY2gtZGF0YS1zZXJ2aWNlcy5odG1sIiwKICAgICAgInZhbHVlIjogIlJlc2VhcmNoIERhdGEgU2VydmljZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3NlcnZpY2VzL3N1YmplY3QtZ3VpZGVzLmh0bWwiLAogICAgICAidmFsdWUiOiAiU3ViamVjdCAmIENvdXJzZSBHdWlkZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3Jlc2VhcmNoLXRlYWNoaW5nL3dvcmtzaG9wcy5odG1sIiwKICAgICAgInZhbHVlIjogIldvcmtzaG9wcyAmIFRyYWluaW5nIgogICAgfQogIF0sCiAgIkFib3V0IjogWwogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2Fib3V0Lmh0bWwiLAogICAgICAidmFsdWUiOiAiQWJvdXQgdGhlIExpYnJhcmllcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvYWJvdXQvam9icy1pbnRlcm5zaGlwcy5odG1sIiwKICAgICAgInZhbHVlIjogIkpvYnMgJiBJbnRlcm5zaGlwcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvYWJvdXQvbmV3cy9hbGVydC5odG1sIiwKICAgICAgInZhbHVlIjogIkxpYnJhcnkgU3RhdHVzIFVwZGF0ZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2Fib3V0L25ld3MuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJOZXdzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC92YWx1ZXMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJPdXIgVmFsdWVzICYgQ29tbWl0bWVudCBpbiBBY3Rpb24iCiAgICB9LAogICAgICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC9wb2xpY2llcy5odG1sIiwKICAgICAgInZhbHVlIjogIlBvbGljaWVzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC9zdGFmZi5odG1sIiwKICAgICAgInZhbHVlIjogIlN0YWZmIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9zdHJhdGVnaWNkaXJlY3Rpb25zLmxpYnJhcnkuY29sdW1iaWEuZWR1LyIsCiAgICAgICJ2YWx1ZSI6ICJTdHJhdGVnaWMgRGlyZWN0aW9ucyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvYWJvdXQvc3R1ZGVudF9hZHZpc29yeV9jb21taXR0ZWUuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJTdHVkZW50IExpYnJhcnkgQWR2aXNvcnkgQ29tbWl0dGVlIgogICAgfQogIF0KfQo=";async function b(i){const e=i||A;try{const l=await fetch(d(e),{cache:"no-store",signal:AbortSignal.timeout(3e3)});if(!l.ok)throw new Error("Menu fetch failed");return await l.json()}catch(l){return console.warn("[CUL Menu] Remote menu unavailable, using bundled example.",l),u}}function d(i){return i.includes("?")?i:`${i}?v=5.3.0`}async function n(i){const e=document.querySelectorAll("[data-cul-menu]");if(!e.length)return;const l=await b(i);e.forEach((a,g)=>{const t=W(a,g),I=y(l,t);a.replaceChildren(I),h(a)})}function h(i){i.classList.remove("cul-menu-loading"),i.classList.add("cul-menu-loaded")}function W(i,e){return{prefix:i.dataset.menuId||`culmenu-${e}`,toggleTag:i.dataset.toggleTag||"button",toggleClasses:i.dataset.toggleClasses||"btn btn-toggle ps-0 d-inline-flex w-100 align-items-center rounded border-0 collapsed",listClasses:i.dataset.listClasses||"list-unstyled w-100",itemClasses:i.dataset.itemClasses||"d-block",useCollapse:i.dataset.useCollapse!=="false"}}function y(i,e){const l=document.createElement("ul");l.className=e.listClasses;for(const a in i){const g=document.createElement("li");g.className="mb-1";const t=`${e.prefix}-${p(a)}-collapse`,I=document.createElement(e.toggleTag);I.className=e.toggleClasses,I.textContent=a,e.useCollapse&&(I.setAttribute("data-bs-toggle","collapse"),I.setAttribute("data-bs-target",`#${t}`),I.setAttribute("aria-expanded","false")),g.appendChild(I);const C=document.createElement("div");C.className=e.useCollapse?"collapse":"",C.id=t;const c=document.createElement("ul");c.className="btn-toggle-nav list-unstyled fw-normal pb-1",i[a].forEach(o=>{const m=document.createElement("li"),s=document.createElement("a");s.href=o.href,s.textContent=o.value,s.className=e.itemClasses,m.appendChild(s),c.appendChild(m)}),C.appendChild(c),g.appendChild(C),l.appendChild(g)}return l}function p(i){return i.toLowerCase().replace(/\s+/g,"-")}async function J(i,e){const l=document.querySelector(i);if(!l)return;const a=l.querySelector("ul");if(!a){console.warn("CUL navbar menu: <ul> not found");return}const g=await b(e),t=l.dataset.menuId||"cul-navbar";a.replaceChildren(Z(g,t)),Y(l)}function Y(i){i.classList.remove("cul-menu-loading"),i.classList.add("cul-menu-loaded")}function Z(i,e){const l=document.createDocumentFragment();for(const a in i){const g=`${e}-${v(a)}`,t=document.createElement("li");t.className="nav-item dropdown position-static d-inline-flex";const I=document.createElement("a");I.href="#",I.className="nav-link dropdown-toggle my-2 me-3",I.setAttribute("data-bs-toggle","dropdown"),I.setAttribute("aria-expanded","false"),I.textContent=a,t.appendChild(I);const C=document.createElement("div");C.id=`${g}-dropdown`,C.className="dropdown-menu w-100 border-top-0 border-left-0 border-right-0 rounded-0 py-0 my-0";const c=document.createElement("div");c.className="py-3 bg-secondary text-white";const o=document.createElement("div");o.className="container cul-cols",i[a].forEach(m=>{const s=document.createElement("a");s.href=m.href,s.className="d-block py-1 text-white dropdown-item bg-secondary",s.textContent=m.value,o.appendChild(s)}),c.appendChild(o),C.appendChild(c),t.appendChild(C),l.appendChild(t)}return l}function v(i){return i.toLowerCase().replace(/\s+/g,"-")}function H(i){return n(i.url)}function L(i){return J(i.selector,i.url)}return r.initCollapse=H,r.initNavbar=L,r.makeCULmenu=n,Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}),r})({});
|
|
5
5
|
//# sourceMappingURL=cul-menu.bundle.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@columbia-libraries/cul-toolkit",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.3.0",
|
|
4
4
|
"description": "CUL customized Bootstrap 5 with Vite! Intended only for CUL projects and therefore unsupported.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/bundles/cul-menu.bundle.js",
|
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
"dist/bundles",
|
|
18
18
|
"dist/js",
|
|
19
19
|
"dist/setup.js",
|
|
20
|
-
"dist/setup.css"
|
|
20
|
+
"dist/setup.css",
|
|
21
|
+
"src/scss"
|
|
21
22
|
],
|
|
22
23
|
"keywords": [
|
|
23
24
|
"cul"
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--a-link-color: #2c6bac;
|
|
3
|
+
--a-visited-color: #769ac5;
|
|
4
|
+
--nav-a-link-color: #3a6fa2;
|
|
5
|
+
--icon-grey-color: #595959;
|
|
6
|
+
--nav-tabs-link-active-color: #f8f9fa;
|
|
7
|
+
--text-shadow-color: 1px 1px 1px rgba(0,0,0,0.5);
|
|
8
|
+
--cul-darkblue-color: #093552;
|
|
9
|
+
}
|
|
10
|
+
a:link:not(.btn) {
|
|
11
|
+
color:var(--a-link-color);
|
|
12
|
+
}
|
|
13
|
+
a:visited:not(.btn) {
|
|
14
|
+
color:var(--a-link-color);
|
|
15
|
+
}
|
|
16
|
+
#CULnavbar,#header {
|
|
17
|
+
.navbar-brand .img-fluid {
|
|
18
|
+
min-height: 1em;
|
|
19
|
+
}
|
|
20
|
+
a {
|
|
21
|
+
text-decoration: none;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
#CULbrand {
|
|
25
|
+
max-width:400px;
|
|
26
|
+
}
|
|
27
|
+
@media (min-width: 576px) {
|
|
28
|
+
#global-menu {
|
|
29
|
+
font-size: 80%;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
#site-name {
|
|
33
|
+
display: block;
|
|
34
|
+
padding: 1rem 0;
|
|
35
|
+
margin-bottom: 0;
|
|
36
|
+
img {
|
|
37
|
+
width:100vw;
|
|
38
|
+
height:auto;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
#main-menu a:link {
|
|
42
|
+
color:var(--nav-a-link-color);
|
|
43
|
+
}
|
|
44
|
+
#main-menu a:visited {
|
|
45
|
+
color:var(--nav-a-link-color);
|
|
46
|
+
}
|
|
47
|
+
.jumbotron {
|
|
48
|
+
border-radius: 0;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/* full-width dropdown menu */
|
|
52
|
+
#main-menu .nav-item.show > a {
|
|
53
|
+
color:var(--secondary);
|
|
54
|
+
}
|
|
55
|
+
.cul-cols {
|
|
56
|
+
column-width: 18em;
|
|
57
|
+
column-gap: 2em;
|
|
58
|
+
column-rule: 1px solid #e3e3e3;
|
|
59
|
+
a {
|
|
60
|
+
break-inside: avoid;
|
|
61
|
+
white-space: normal;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/* /full-width dropdown menu */
|
|
65
|
+
|
|
66
|
+
/* #fat-footer */
|
|
67
|
+
#fat-footer {
|
|
68
|
+
background-color:var(--cul-darkblue-color);
|
|
69
|
+
font-size: .75rem;
|
|
70
|
+
}
|
|
71
|
+
.fatf-icon i {
|
|
72
|
+
font-size: 1.5rem;
|
|
73
|
+
}
|
|
74
|
+
/* /#fat-footer */
|
|
75
|
+
|
|
76
|
+
/* misc */
|
|
77
|
+
.bg-CULDarkBlue {
|
|
78
|
+
background-color: var(--cul-darkblue-color);
|
|
79
|
+
}
|
|
80
|
+
/* /misc */
|
|
81
|
+
|
|
82
|
+
.tt-menu { padding: 1em 0.5em; width:100%; background-color: var(--bs-primary-bg-subtle); word-wrap: break-word; border-bottom: 1px solid #ccc; border-radius: var(--bs-border-radius) !important; }
|
|
83
|
+
.best-bet-result { margin-bottom: 1em; }
|
|
84
|
+
.offcanvas .tt-menu { position: static !important; }
|
|
85
|
+
.twitter-typeahead { width: 100%; }
|
|
86
|
+
input[type="search"]::-webkit-search-decoration,
|
|
87
|
+
input[type="search"]::-webkit-search-cancel-button,
|
|
88
|
+
input[type="search"]::-webkit-search-results-button,
|
|
89
|
+
input[type="search"]::-webkit-search-results-decoration {
|
|
90
|
+
-webkit-appearance:none;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/* animations */
|
|
94
|
+
.animate {
|
|
95
|
+
animation-duration: 0.75s;
|
|
96
|
+
animation-delay: 0.1s;
|
|
97
|
+
animation-name: animate-fade;
|
|
98
|
+
animation-timing-function: cubic-bezier(.26, .53, .74, 1.48);
|
|
99
|
+
animation-fill-mode: backwards;
|
|
100
|
+
}
|
|
101
|
+
/* Roll In */
|
|
102
|
+
.animate.roll { animation-name: animate-roll; }
|
|
103
|
+
|
|
104
|
+
@keyframes animate-roll {
|
|
105
|
+
0% {
|
|
106
|
+
opacity: 0;
|
|
107
|
+
transform: scale(0, 0) rotate(360deg);
|
|
108
|
+
}
|
|
109
|
+
100% {
|
|
110
|
+
opacity: 1;
|
|
111
|
+
transform: scale(1, 1) rotate(0deg);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/* menu loading */
|
|
116
|
+
.cul-menu-loading {
|
|
117
|
+
opacity: 0.6;
|
|
118
|
+
}
|
|
119
|
+
.cul-menu-loaded {
|
|
120
|
+
opacity: 1;
|
|
121
|
+
}
|
|
122
|
+
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
.btn-toggle {
|
|
2
|
+
padding: .25rem .5rem;
|
|
3
|
+
font-weight: 600;
|
|
4
|
+
color: var(--bs-emphasis-color);
|
|
5
|
+
background-color: transparent;
|
|
6
|
+
}
|
|
7
|
+
.btn-toggle:hover,
|
|
8
|
+
.btn-toggle:focus {
|
|
9
|
+
color: rgba(var(--bs-emphasis-color-rgb), .85);
|
|
10
|
+
background-color: var(--bs-tertiary-bg);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.btn-toggle::before {
|
|
14
|
+
width: 1.25em;
|
|
15
|
+
line-height: 0;
|
|
16
|
+
content: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%280,0,0,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e");
|
|
17
|
+
transition: transform .35s ease;
|
|
18
|
+
transform-origin: .5em 50%;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
[data-bs-theme="dark"] .btn-toggle::before {
|
|
22
|
+
content: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%28255,255,255,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e");
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.btn-toggle[aria-expanded="true"] {
|
|
26
|
+
color: rgba(var(--bs-emphasis-color-rgb), .85);
|
|
27
|
+
}
|
|
28
|
+
.btn-toggle[aria-expanded="true"]::before {
|
|
29
|
+
transform: rotate(90deg);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.btn-toggle-nav a {
|
|
33
|
+
padding: .1875rem .5rem;
|
|
34
|
+
margin-top: .125rem;
|
|
35
|
+
margin-left: 1.25rem;
|
|
36
|
+
}
|
|
37
|
+
.btn-toggle-nav a:hover,
|
|
38
|
+
.btn-toggle-nav a:focus {
|
|
39
|
+
background-color: var(--bs-tertiary-bg);
|
|
40
|
+
}
|