1(function($,Drupal){let autocomplete;function autocompleteSplitValues(value){const result=[];let quote=false;let current='';const valueLength=value.length;let character;for(let i=0;i<valueLength;i++){character=value.charAt(i);if(character==='"'){current+=character;quote=!quote;}else if(character===','&&!quote){result.push(current.trim());current='';}else{current+=character;}} 2if(value.length>0){result.push(current.trim());} 3return result;} 4function extractLastTerm(terms){return autocomplete.splitValues(terms).pop();} 5function searchHandler(event){const options=autocomplete.options;if(options.isComposing){return false;} 6const term=autocomplete.extractLastTerm(event.target.value);if(term.length>0&&options.firstCharacterDenyList.includes(term[0])){return false;} 7return term.length>=options.minLength;} 8function sourceData(request,response){const elementId=this.element.attr('id');if(!(elementId in autocomplete.cache)){autocomplete.cache[elementId]={};} 9function showSuggestions(suggestions){const tagged=autocomplete.splitValues(request.term);const il=tagged.length;for(let i=0;i<il;i++){if(suggestions.includes(tagged[i])){suggestions.splice(suggestions.indexOf(tagged[i]),1);}} 10const labels=suggestions.map((item)=>item.label);const duplicates=new Set(labels.filter((item)=>labels.indexOf(item)!==labels.lastIndexOf(item),),);response(suggestions.map((item)=>duplicates.has(item.label)?{...item,showId:true}:item,),);} 11const term=autocomplete.extractLastTerm(request.term);function sourceCallbackHandler(data){autocomplete.cache[elementId][term]=data;showSuggestions(data);} 12if(autocomplete.cache[elementId].hasOwnProperty(term)){showSuggestions(autocomplete.cache[elementId][term]);}else{const options=$.extend({success:sourceCallbackHandler,data:{q:term}},autocomplete.ajax,);$.ajax(this.element.attr('data-autocomplete-path'),options);}} 13function focusHandler(){return false;} 14function selectHandler(event,ui){const terms=autocomplete.splitValues(event.target.value);terms.pop();const hideIds=this.hasAttribute('data-drupal-autocomplete-hide-ids');terms.push(hideIds&&!ui.item.showId?ui.item.label:ui.item.value);event.target.value=terms.join(', ');return false;} 15function renderItem(ul,item){return $('<li>').append($('<a>').html(item.showId?item.value:item.label)).appendTo(ul);} 16Drupal.behaviors.autocomplete={attach(context){once('autocomplete','input.form-autocomplete',context).forEach((element)=>{const $autocomplete=$(element);const blacklist=$autocomplete.attr('data-autocomplete-first-character-blacklist',);if(blacklist!==undefined){Drupal.deprecationError({message:'The data-autocomplete-first-character-blocklist attribute is deprecated in drupal:11.2.0 and is removed from drupal:12.0.0. Use firstCharacterDenyList instead. See https://www.drupal.org/node/3472016.',});} 17const denyList=$autocomplete.attr('data-autocomplete-first-character-denylist',);Drupal.deprecatedProperty({target:autocomplete.options,deprecatedProperty:'firstCharacterBlacklist',message:'The firstCharacterBlacklist property is deprecated in drupal:11.2.0 and is removed from drupal:12.0.0. Use firstCharacterDenyList instead. See https://www.drupal.org/node/3472016.',});$.extend(autocomplete.options,{firstCharacterDenyList:denyList||blacklist,});$autocomplete.autocomplete(autocomplete.options).each(function(){$(this).data('ui-autocomplete')._renderItem=autocomplete.options.renderItem;});$autocomplete.on('compositionstart.autocomplete',()=>{autocomplete.options.isComposing=true;});$autocomplete.on('compositionend.autocomplete',()=>{autocomplete.options.isComposing=false;});},);},detach(context,settings,trigger){if(trigger==='unload'){$(once.remove('autocomplete','input.form-autocomplete',context),).autocomplete('destroy');}},};autocomplete={cache:{},splitValues:autocompleteSplitValues,extractLastTerm,options:{source:sourceData,focus:focusHandler,search:searchHandler,select:selectHandler,renderItem,minLength:1,firstCharacterDenyList:'',isComposing:false,},ajax:{dataType:'json',jsonp:false,},};Drupal.autocomplete=autocomplete;})(jQuery,Drupal);
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.