PageSourceSearch

https://umaine.edu/academics/wp-content/plugins/search-filter/asse…/combobox.js?ver=cc6927f5437c5824732d

js umaine.edu collected 2026-10-01 07:30:13 UTC 13,601 bytes, 1 lines download raw bytes

1!function(){"use strict";var e=window.window.searchAndFilter.frontend.packages.core,t=window.window.searchAndFilter.frontend.packages.core.hooks,l=window.searchAndFilter.frontend.packages.utils,n=window.searchAndFilter.frontend.packages.hooks,o=window.searchAndFilter.frontend.packages.components;function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var l=arguments[t];for(var n in l)({}).hasOwnProperty.call(l,n)&&(e[n]=l[n])}return e},s.apply(null,arguments)}const a=()=>{},i=()=>!0,c=()=>!1,r=({value:n,baseClass:o,label:s,index:a,listboxId:i,activeOptionIndex:c,onSelect:r,updateSelected:u,isActive:p=!1,depth:d=-1,focusInput:h,countLabel:b})=>{const f=(0,t.useRef)(null),g=c===a;return(0,e.h)(e.Fragment,null,(0,e.h)("li",{tabIndex:"-1","aria-selected":g,role:"option","data-option-value":n,className:(0,l.classNames)({[o+"__listbox-option"]:!0,[o+"__listbox-option--selected"]:g,[o+"__listbox-option--active"]:p,[o+"__listbox-option--depth-"+d]:-1!==d}),id:i+"-option--"+n,ref:f,onClick:()=>{r(a)},onMouseMove:()=>{a!==c&&u(a)},onMouseUp:e=>{h()}},s,b?(0,e.h)("span",{className:o+"__listbox-option-count",translate:"no"},b):null))};var u=({listboxRef:n,sourceRef:u,id:p,baseClass:d,className:h,options:b,onClickOutside:f=a,activeOptionIndex:g,onSelectOption:v,onOptionChange:m,shouldRenderOption:x=i,isOptionActive:C=c,focusInput:_,contentOverride:O,showCount:k,noResultsText:w="No results",attachment:y="attached",...I})=>{let N=(0,t.useRef)(null);n&&(N=n);const[S,F]=(0,t.useState)(!0),L=e=>{F(!1),m(e)};(0,t.useEffect)((()=>{if(S){if(N.current){const e=(e=>{if(N.current){const t=N.current.querySelector(`li:nth-child(${e+1})`);if(t)return t}return null})(g);e&&((e,t)=>{parseFloat(t.offsetTop)-parseFloat(e.scrollTop)<0&&(e.scrollTop=t.offsetTop);const l=parseFloat(e.scrollTop)+parseFloat(e.clientHeight);parseFloat(t.offsetTop)+parseFloat(t.clientHeight)>l&&(e.scrollTop=parseFloat(t.offsetTop)-(parseFloat(e.clientHeight)-parseFloat(t.clientHeight)))})(N.current,e)}}else F(!0)}),[g,N]);const R={[d+"__listbox"]:d,[d+"__listbox--"+y]:!0};h&&(R[h]=!0);const A=[];return O||b.forEach(((t,l)=>{x(t)&&A.push((0,e.h)(r,{key:t.value,index:l,value:t.value,label:t.label,activeOptionIndex:g,depth:t.depth,listboxId:p,onSelect:v,updateSelected:L,baseClass:d,isActive:C(t),focusInput:_,countLabel:k?t.countLabel:null}))})),(0,e.h)(o.Popover,s({name:p,id:p,className:(0,l.classNames)(R),sourceRef:u,matchWidth:!0,onClickOutside:f},I),(0,e.h)("ul",{className:d+"__listbox-list",role:"listbox",ref:N},O||A,O||0!==b.length?null:(0,e.h)("li",{className:(0,l.classNames)(d+"__listbox-option",d+"__listbox-option--disabled")},w)))};function p(){return p=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var l=arguments[t];for(var n in l)({}).hasOwnProperty.call(l,n)&&(e[n]=l[n])}return e},p.apply(null,arguments)}const d=()=>{},h={},b=({value:s="",icon:a,placeholder:i,showLabel:c,hasClear:r=!0,label:f,isInteractive:g=!0,options:v=[],onChange:m=d,onEnter:x=d,listboxProps:C=h,InputComponent:_,clickAction:O="open",onSelectOption:k,shouldRenderOption:w,isOptionActive:y,onKeyDownCallback:I=d,onKeyUpCallback:N=d,onControlEscape:S=d,closeListboxOnScroll:F=!0,updateListboxOnScroll:L=!1,onLoseFocus:R=d,onShowListbox:A,listboxClassName:E,listboxContent:T,listboxAttachment:P="attached",hideSuggestionsOnEmpty:D=!1,onClear:$=d,inputClassName:V,showCount:j=!1,inputProps:M,enableSearch:H=!0,noResultsText:K="No results",singularResultsCountText:U="%d result available",pluralResultsCountText:B="%d results available",disabled:q=!1,...z})=>{const W="search-filter-component-combobox-base",G=(0,t.useRef)(null),J=(0,t.useRef)(null),Q=(0,t.useRef)(null),X=s,Y=m,Z=(0,n.useInstanceId)(b),ee="search-filter-input-combobox-"+Z,te="search-filter-input-combobox-listbox-"+Z,{isVisible:le,toggle:ne,position:oe}=(0,o.usePopover)(te),se=(0,o.useFocusDispatch)(),[ae,ie]=(0,t.useState)("text"),ce=(0,t.useMemo)((()=>Array.isArray(v)?v.map((e=>"string"==typeof e?{label:e,value:e}:e)):[]),[v]),[re,ue]=(0,t.useState)(0),pe=(0,t.useMemo)((()=>ce.filter((e=>(""!==e.value||""===s)&&!!e.label&&String(e.label).toLowerCase().includes(String(s).toLowerCase())))),[s,ce]);(0,t.useLayoutEffect)((()=>{he()}),[pe]);const de=e=>!D||""!==e;(0,t.useLayoutEffect)((()=>{de(X)||ve(!1)}),[X]);const he=()=>{ue((e=>pe.length>0?0:e))},be=()=>{ue((e=>pe.length>0?pe.length-1:e))},fe=e=>{g&&!q&&(xe(!0),ge(),de(s)&&("open"===O?ve(!0):"toggle"===O&&ve()))},ge=()=>{g&&!q&&se({type:"SET",id:ee})},ve=e=>{if(!g||q)return;let t=e;void 0===e&&(t=!le),ne(t),t?A?A({setActiveOption:ue,setFirstOption:he,filteredOptions:pe}):he():ue(-1)},[me,xe]=(0,t.useState)(!1),Ce=(0,t.useCallback)((e=>{xe(!1),ve(!1)}),[]),_e=(0,t.useCallback)((e=>{const t=pe[e];k?k(t):Y(t.label),ve(!1),ge()}),[pe,k]),Oe=(0,t.useCallback)((e=>{ue(e)}),[]),[ke,we]=(0,t.useState)(-1),ye=()=>{if(H&&G.current){const e=G.current,t=e.selectionStart;t===e.selectionEnd&&we(t)}},Ie=e=>{H&&e.target?.activeElement&&e.target.activeElement.id===ee&&ye()};if((0,t.useEffect)((()=>(document.addEventListener("selectionchange",Ie),()=>{document.removeEventListener("selectionchange",Ie)})),[]),!_)return null;const Ne=pe.length;let Se;
1return Se=0===Ne?K:(0,l.getNumericString)(U,B,Ne),(0,e.h)(e.Fragment,null,(0,e.h)(_,p({id:ee,icon:a,inputRef:G,controlRef:J,label:f,showLabel:c,hasClear:r,onChange:e=>{Y(e),de(e)&&(ve(!0),he(),ye())},onClear:$,value:X,placeholder:i,readOnly:!g,onEnter:x,onClick:fe,isInteractive:g,disabled:q,focusInput:ge,onSelectOption:k,popupVisible:le,inputClassName:V,inputProps:{maxlength:"2048",autocomplete:"off",autocorrect:"off",autocapitalize:"off",spellcheck:"false",role:"combobox","aria-autocomplete":"list","aria-controls":te,"aria-haspopup":"listbox","aria-expanded":le,"aria-activedescendant":le&&-1!==re&&pe.length>0?te+"-option--"+pe[re].value:null,readOnly:!g,tabIndex:g?null:-1,onKeyDown:e=>{let t="text";const l=0===ke,n=ke===e.target?.value?.length;switch(e.keyCode){case 9:ve(!1),xe(!1);break;case 40:!le&&de(X)?ve(!0):le&&ue((e=>e<pe.length-1?e+1:e)),t="listbox",e.preventDefault();break;case 38:le&&ue((e=>e>0?e-1:e)),t="listbox",e.preventDefault();break;case 13:if(le&&v[re])return void _e(re);x(),e.preventDefault();break;case 32:break;case 36:if(!le)break;0===re?l&&(t="listbox"):("listbox"===ae||l)&&(t="listbox",(e=>{he(),e.preventDefault()})(e));break;case 35:if(!le)break;re===pe.length-1?n&&(t="listbox"):("listbox"===ae||n)&&(t="listbox",(e=>{be(),e.preventDefault()})(e));break;case 33:t="listbox",(e=>{const t=re-5;t>=0?ue(t):he(),e.preventDefault()})(e);break;case 34:t="listbox",(e=>{const t=re+5;t<=pe.length-1?ue(t):be(),e.preventDefault()})(e)}ie(t),I(e.keyCode,l,n)},onKeyUp:e=>{switch(e.keyCode){case 27:(e=>{H&&(le?ve(!1):S(e))})(e);break;case 46:case 8:ye()}N(e.keyCode)},onFocus:()=>{g&&!q&&xe(!0)},onBlur:e=>{g&&!q&&(e.relatedTarget&&Q.current.contains(e.relatedTarget)||R(e))},...M},controlProps:{onClick:fe,tabIndex:g?null:-1,className:(0,l.classNames)(W,{[`${W}--listbox-visible`]:le,[`${W}--listbox-position-${oe}`]:le&&oe?oe:null,[`${W}--focused`]:me,[`${W}--disabled`]:q,[`${W}--listbox-${P}`]:!0})},showCount:j,options:v,enableSearch:!q&&H,listboxId:te},z)),(0,e.h)("div",{"aria-live":"polite",role:"status",className:W+"__screen-reader-text"},Se),g?(0,e.h)(u,p({className:E,attachment:P,listboxRef:Q,baseClass:W,sourceRef:J,id:te,options:pe,activeOptionIndex:re,onSelectOption:_e,onOptionChange:Oe,onClickOutside:Ce,shouldRenderOption:w,isOptionActive:y,closeOnScroll:F,updateOnScroll:L,focusInput:ge,contentOverride:T,showCount:j,noResultsText:K},C)):null)};function f(){return f=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var l=arguments[t];for(var n in l)({}).hasOwnProperty.call(l,n)&&(e[n]=l[n])}return e},f.apply(null,arguments)}const g=({inputId:n,inputRef:s,inputProps:a,baseClass:i,listboxId:c,labelId:r,showLabel:u,label:p,enableSearch:d,multiple:h,placeholder:b,interactive:g,selection:v,searchValue:m,setSearchValue:x,toggleOption:C,focusInput:_,showCount:O})=>{const{toggle:k,isVisible:w}=(0,o.usePopover)(c),[y,I]=(0,t.useState)(!1),[N,S]=(0,t.useState)(-1);let F={className:i+"__selection"};d||(F.role="combobox",F.tabindex="0",F["aria-expanded"]="false",F["aria-controls"]=c,F["aria-haspopup"]="listbox",F["aria-labelledby"]="yes"===u?r:null,F["aria-label"]="yes"===u?null:p);let L={};if(d)if(L={type:"text",value:m,"aria-labelledby":"yes"===u?r:null,"aria-label":"yes"===u?null:p,id:n,className:i+"__actions-input",onInput:e=>{const t=e.target.value;x(t),g&&k(true)},tabIndex:g?null:-1,readOnly:!g,placeholder:0===v.length?b:"",...a},h){let e=m?.length>0?m.length:1;0===v.length&&b?.length&&b.length>e&&(e=b.length),L.style={width:`calc( ${e}ch + 6px )`}}else 0===v.length&&(L.placeholder=b);const R={onClick:e=>{d&&"function"==typeof e.currentTarget.select&&e.currentTarget.select(),I(!1)},ref:s};d?L=(0,l.mergeObjects)(L,R):F=(0,l.mergeObjects)(F,R);const A=v.length>0;let E=A?v[0].label:"";const T=0===v.length?b:"";return d||h||0!==v.length||(F.className+=` ${i}__selection-placeholder`,E=b),(0,e.h)(e.Fragment,null,h&&(0,e.h)("div",F,v.map(((t,l)=>{let n="";return y&&l===v.length-1&&(n=" "+i+"__selection-item--active"),(0,e.h)("div",{key:l,className:i+"__selection-item"+n},(0,e.h)("div",{className:i+"__selection-label"},t.label,O&&(0,e.h)("span",{className:i+"__selection-count",translate:"no"},t.countLabel)),(0,e.h)(o.Icon,{icon:"clear",className:i+"__selection-remove",onClick:e=>{C(t),_(),e.stopPropagation(),e.preventDefault()}}))})),d&&(0,e.h)("input",f({},L,{placeholder:T}
1)),!d&&0===v.length&&(0,e.h)("div",{className:i+"__selection-placeholder"},T)),!h&&(0,e.h)(e.Fragment,null,""===m&&(0,e.h)("div",F,E,O&&A?(0,e.h)("span",{className:i+"__selection-count",translate:"no"},v[0].countLabel):null),d&&(0,e.h)("input",L)))};g.templateVars=["selectionLabel","placeholderText",["multiple",{type:"control"}],["selection",{type:"list",child:{type:"object",props:["label"]}}]];var v=g,m=({baseClass:t,show:n,onClick:s=()=>{}})=>(0,e.h)("div",{className:(0,l.classNames)({[t+"__clear-selection"]:!0,[t+"--hidden"]:!n})},(0,e.h)(o.Icon,{icon:"clear",onClick:s,isInteractive:!0,isDestructive:!0,label:"Clear selection",className:t+"__clear-button"}));function x(){return x=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var l=arguments[t];for(var n in l)({}).hasOwnProperty.call(l,n)&&(e[n]=l[n])}return e},x.apply(null,arguments)}const C=s=>{const a="search-filter-component-combobox",{id:i,icon:c,inputRef:r,controlRef:u,label:p,showLabel:d,hasClear:h=!0,onChange:b,value:f,placeholder:g,labelProps:_,isInteractive:O,inputProps:k,controlProps:w,options:y,fieldValue:I,setFieldValue:N,onSelectOption:S,onClear:F,multiple:L,enableSearch:R=!0,scale:A=4,escClears:E,focusInput:T,description:P,showDescription:D,inputClassName:$,showCount:V,showDivider:j=!0,listboxId:M}=s,H=(0,n.useInstanceId)(C),K=i??"search-filter-input-combobox-"+H;(0,o.useFocusEvent)(r,K);const U="search-filter-label-"+(0,n.useInstanceId)(o.Label);let B={};R?B=w:(B.className=w.className,B.onClick=w.onClick);const q=[a+"__actions"];!1===L&&0===I.length&&q.push(a+"__actions--empty");const[z,W]=(0,t.useState)([]);(0,t.useEffect)((()=>{if(!y)return;const e=[];I.forEach((t=>{const l=y.findIndex((e=>e.value===t));-1!==l&&e.push(y[l])})),W(e)}),[y,I]);const G=z.length>0;return(0,e.h)(e.Fragment,null,(0,e.h)(o.Label,x({showLabel:d,label:p,id:U,forId:K,isInteractive:O},_)),(0,e.h)(o.Description,{description:P,showDescription:D}),(0,e.h)("div",x({},B,{"aria-labelledby":"yes"===d?U:null,"aria-label":"yes"===d?null:p,ref:u,className:(0,l.classNames)(w.className,a,$,`${a}--mode-${L?"multiple":"single"}`,`${a}--search-${R?"enabled":"disabled"}`,{[`${a}--has-icon`]:c})}),(0,e.h)("div",{className:a+"__header"},c&&(0,e.h)(o.Icon,{icon:c,className:a+"__icon"}),(0,e.h)("div",{className:(0,l.classNames)(q)},(0,e.h)(v,{baseClass:a,listboxId:M,inputId:K,labelId:U,showLabel:d,label:p,inputRef:r,inputProps:k,multiple:L,enableSearch:R,interactive:O,selection:z,fieldValue:I,searchValue:f,setFieldValue:N,setSearchValue:b,escClears:E,placeholder:g,toggleOption:S,focusInput:T,showCount:"yes"===V,onClear:F,onChange:b,hasClear:h})),(0,e.h)(m,{baseClass:a,show:h&&G,onClick:e=>{"click"===e.type&&e.stopPropagation(),N([]),F?F():b(""),T()}}),j?(0,e.h)("div",{className:a+"__input-divider"}):null,(0,e.h)("div",{className:a+"__listbox-toggle"},(0,e.h)(o.Icon,{icon:"arrow-down"})))))};var _=window.searchAndFilter.frontend.packages.registry;(0,_.register)(["packages","components"],"ComboboxControl",(l=>{const n=l.value,o=l.onChange,[s,a]=(0,t.useState)(""),i=(0,t.useCallback)((e=>!(l.multiple&&(!l.multiple||l.hideSelectedOptions))&&n.includes(e.value)),[n]),c=(0,t.useCallback)((e=>!l.multiple||!l.hideSelectedOptions||!n.includes(e.value)),[n]);return(0,e.h)(b,x({InputComponent:C},l,{clickAction:"toggle",fieldValue:n,setFieldValue:o,value:s,onChange:a,onSelectOption:e=>{a(""),(e=>{l.enableSearch&&a("");let t=[...n];if(l.multiple){const l=n.findIndex((t=>t===e.value));-1!==l?(t.splice(l,1),o(t)):t.push(e.value)}else t=[e.value];o(t)})(e)},isOptionActive:i,shouldRenderOption:c,onLoseFocus:e=>{a("")},onControlEscape:l.escClears?()=>{s.length>0?a(""):!l.multiple&&n.length>0&&o([])}:void 0,onShowListbox:({setActiveOption:e,setFirstOption:t,filteredOptions:o})=>{if(l.multiple)return void t();if(0===n.length)return void t();const s=n[0],a=o.findIndex((e=>e.value===s));-1!==a?e(a):t()}}))})),(0,_.register)(["packages","components"],"ComboboxBase",b)}();

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