PageSourceSearch

https://www.fsanmillan.es/wp-content/cache/min/1/wp-content/plugin…/js/mixitup-multifilter.js?ver=1787998816

js fsanmillan.es collected 2026-10-02 11:45:45 UTC 13,687 bytes, 53 lines download raw bytes

1/**!
2 * MixItUp MultiFilter v3.3.0
3 * A UI-builder for powerful multidimensional filtering
4 * Build 80e5e308-3902-4e4f-8c8c-4e9b732f7132
5 *
6 * Requires mixitup.js >= v^3.1.2
7 *
8 * @copyright Copyright 2014-2017 KunkaLabs Limited.
9 * @author    KunkaLabs Limited.
10 * @link      https://www.kunkalabs.com/mixitup-multifilter/
11 *
12 * @license   Commercial use requires a commercial license.
13 *            https://www.kunkalabs.com/mixitup-multifilter/licenses/
14 *
15 *            Non-commercial use permitted under same terms as  license.
16 *            http://creativecommons.org/licenses/by-nc/3.0/
17 */
18(function(window){'use strict';var mixitupMultifilter=function(mixitup){var h=mixitup.h;if(!mixitup.CORE_VERSION||!h.compareVersions(mixitupMultifilter.REQUIRE_CORE_VERSION,mixitup.CORE_VERSION)){throw new Error('[MixItUp Multifilter] MixItUp Multifilter v'+mixitupMultifilter.EXTENSION_VERSION+' requires at least MixItUp v'+mixitupMultifilter.REQUIRE_CORE_VERSION)}
19mixitup.ConfigCallbacks.registerAction('afterConstruct','multifilter',function(){this.onParseFilterGroups=null});mixitup.ConfigMultifilter=function(){this.enable=!1;this.logicWithinGroup='or';this.logicBetweenGroups='and';this.minSearchLength=3;this.parseOn='change';this.keyupThrottleDuration=350;h.seal(this)};mixitup.Config.registerAction('beforeConstruct','multifilter',function(){this.multifilter=new mixitup.ConfigMultifilter()});mixitup.MultifilterFormEventTracker=function(){this.form=null;this.totalBound=0;this.totalHandled=0;h.seal(this)};mixitup.FilterGroupDom=function(){this.el=null;this.form=null;h.seal(this)};mixitup.FilterGroup=function(){this.name='';this.dom=new mixitup.FilterGroupDom();this.activeSelectors=[];this.activeToggles=[];this.handler=null;this.mixer=null;this.logic='or';this.parseOn='change';this.keyupTimeout=-1;h.seal(this)};h.extend(mixitup.FilterGroup.prototype,{init:function(el,mixer){var self=this,logic=el.getAttribute('data-logic');self.dom.el=el;this.name=self.dom.el.getAttribute('data-filter-group')||'';self.cacheDom();if(self.dom.form){self.enableButtons()}
20self.mixer=mixer;if((logic&&logic.toLowerCase()==='and')||mixer.config.multifilter.logicWithinGroup==='and'){self.logic='and'}
21self.bindEvents()},cacheDom:function(){var self=this;self.dom.form=h.closestParent(self.dom.el,'form',!0)},enableButtons:function(){var self=this,buttons=self.dom.form.querySelectorAll('button[type="submit"]:disabled'),button=null,i=-1;for(i=0;button=buttons[i];i++){if(button.disabled){button.disabled=!1}}},bindEvents:function(){var self=this;self.handler=function(e){switch(e.type){case 'reset':case 'submit':self.handleFormEvent(e);break;default:self['handle'+h.pascalCase(e.type)](e)}};h.on(self.dom.el,'click',self.handler);h.on(self.dom.el,'change',self.handler);h.on(self.dom.el,'keyup',self.handler);if(self.dom.form){h.on(self.dom.form,'reset',self.handler);h.on(self.dom.form,'submit',self.handler)}},unbindEvents:function(){var self=this;h.off(self.dom.el,'click',self.handler);h.off(self.dom.el,'change',self.handler);h.off(self.dom.el,'keyup',self.handler);if(self.dom.form){h.off(self.dom.form,'reset',self.handler);h.off(self.dom.form,'submit',self.handler)}
22self.handler=null},handleClick:function(e){var self=this,controlEl=h.closestParent(e.target,'[data-filter], [data-toggle]',!0),controlSelector='',index=-1,selector='';if(!controlEl)return;if((controlSelector=self.mixer.config.selectors.control)&&!controlEl.matches(controlSelector)){return}
23e.stopPropagation();if(controlEl.matches('[data-filter]')){selector=controlEl.getAttribute('data-filter');self.activeSelectors=self.activeToggles=[selector]}else if(controlEl.matches('[data-toggle]')){selector=controlEl.getAttribute('data-toggle');if((index=self.activeToggles.indexOf(selector))>-1){self.activeToggles.splice(index,1)}else{self.activeToggles.push(selector)}
24if(self.logic==='and'){self.activeSelectors=[self.activeToggles]}else{self.activeSelectors=self.activeToggles}}
25self.updateControls();if(self.mixer.config.multifilter.parseOn==='change'){self.mixer.parseFilterGroups()}},handleChange:function(e){var self=this,input=e.target;e.stopPropagation();switch(input.type){case 'text':case 'search':case 'email':case 'select-one':case 'radio':self.getSingleValue(input);break;case 'checkbox':case 'select-multiple':self.getMultipleValues(input);break}
26if(self.mixer.config.multifilter.parseOn==='change'){self.mixer.parseFilterGroups()}},handleKeyup:function(e){var self=this,input=e.target;if(['text','search','email'].indexOf(input.type)<0)return;if(self.mixer.config.multifilter.parseOn!=='change'){self.mixer.getSingleValue(input);return}
27clearTimeout(self.keyupTimeout);self.keyupTimeout=setTimeout(function(){self.getSingleValue(input);self.mixer.parseFilterGroups()},self.mixer.config.multifilter.keyupThrottleDuration)},handleFormEvent:function(e){var self=this,tracker=null,group=null,i=-1;if(e.type==='submit'){e.preventDefault()}
28if(e.type==='reset'){self.activeToggles=[];self.activeSelectors=[];self.updateControls()}
29if(!self.mixer.multifilterFormEventTracker){tracker=self.mixer.multifilterFormEventTracker=new mixitup.MultifilterFormEventTracker();tracker.form=e.target;for(i=0;group=self.mixer.filterGroups[i];i++){if(group.dom.form!==e.target)continue;tracker.totalBound++}}else{tracker=self.mixer.multifilterFormEventTracker}
30if(e.target===tracker.form){tracker.totalHandled++;if(tracker.totalHandled===tracker.totalBound){self.mixer.multifilterFormEventTracker=null;if(e.type==='submit'||self.mixer.config.multifilter.parseOn==='change'){self.mixer.parseFilterGroups()}}}},getSingleValue:function(input){var self=this,attributeName='',selector='',value='';if(input.type.match(/text|search|email/g)){attributeName=input.getAttribute('data-search-attribute');if(!attributeName){throw new Error('[MixItUp MultiFilter] A valid `data-search-attribute` must be present on text inputs')}
31if(input.value.length<self.mixer.config.multifilter.minSearchLength){self.activeSelectors=self.activeToggles=[''];return}
32value=input.value.replace(/\W+/g,' ').toLowerCase().trim();selector='['+attributeName+'*="'+value+'"]'}else{selector=input.value}
33if(typeof input.value==='string'){self.activeSelectors=self.activeToggles=[selector]}},getMultipleValues:function(input){var self=this,activeToggles=[],query='',item=null,items=null,i=-1;switch(input.type){case 'checkbox':query='input[type="checkbox"]';break;case 'select-multiple':query='option'}
34items=self.dom.el.querySelectorAll(query);for(i=0;item=items[i];i++){if((item.checked||item.selected)&&item.value){activeToggles.push(item.value)}}
35self.activeToggles=activeToggles;if(self.logic==='and'){self.activeSelectors=[activeToggles]}else{self.activeSelectors=activeToggles}},updateControls:function(controlEls){var self=this,controlEl=null,type='filter',i=-1;controlEls=controlEls||self.dom.el.querySelectorAll('[data-filter], [data-toggle]');for(i=0;controlEl=controlEls[i];i++){if(controlEl.getAttribute('data-toggle')){type='toggle'}
36self.updateControl(controlEl,type)}},updateControl:function(controlEl,type){var self=this,selector=controlEl.getAttribute('data-'+type),activeClassName='';activeClassName=h.getClassname(self.mixer.config.classNames,type,self.mixer.config.classNames.modifierActive);if(self.activeToggles.indexOf(selector)>-1){h.addClass(controlEl,activeClassName)}else{h.removeClass(controlEl,activeClassName)}},updateUi:function(){var self=this,controlEls=self.dom.el.querySelectorAll('[data-filter], [data-toggle]'),inputEls=self.dom.el.querySelectorAll('input[type="radio"], input[type="checkbox"], option'),isActive=!1,inputEl=null,i=-1;if(controlEls.length){self.updateControls(controlEls,!0)}
37for(i=0;inputEl=inputEls[i];i++){isActive=self.activeToggles.indexOf(inputEl.value)>-1;switch(inputEl.tagName.toLowerCase()){case 'option':inputEl.selected=isActive;break;case 'input':inputEl.checked=isActive;break}}}});mixitup.MixerDom.registerAction('afterConstruct','multifilter',function(){this.filterGroups=[]});mixitup.Mixer.registerAction('afterConstruct','multifilter',function(){this.filterGroups=[];this.filterGroupsHash={};this.multifilterFormEventTracker=null});mixitup.Mixer.registerAction('afterCacheDom','multifilter',function(){var self=this,parent=null;if(!self.config.multifilter.enable)return;switch(self.config.controls.scope){case 'local':parent=self.dom.container;break;case 'global':parent=self.dom.document;break;default:throw new Error(mixitup.messages.ERROR_CONFIG_INVALID_CONTROLS_SCOPE)}
38self.dom.filterGroups=parent.querySelectorAll('[data-filter-group]')});mixitup.Mixer.registerAction('beforeInitControls','multifilter',function(){var self=this;if(!self.config.multifilter.enable)return;self.config.controls.live=!0});mixitup.Mixer.registerAction('afterSanitizeConfig','multifilter',function(){var self=this;self.config.multifilter.logicBetweenGroups=self.config.multifilter.logicBetweenGroups.toLowerCase().trim();self.config.multifilter.logicWithinGroup=self.config.multifilter.logicWithinGroup.toLowerCase().trim()});mixitup.Mixer.registerAction('afterAttach','multifilter',function(){var self=this;if(self.dom.filterGroups.length){self.indexFilterGroups()}});mixitup.Mixer.registerAction('afterUpdateControls','multifilter',function(){var self=this,group=null,i=-1;for(i=0;group=self.filterGroups[i];i++){group.updateControls()}});mixitup.Mixer.registerAction('beforeDestroy','multifilter',function(){var self=this,group=null,i=-1;for(i=0;group=self.filterGroups[i];i++){group.unbindEvents()}});mixitup.Mixer.extend({indexFilterGroups:function(){var self=this,filterGroup=null,el=null,i=-1;for(i=0;el=self.dom.filterGroups[i];i++){filterGroup=new mixitup.FilterGroup();filterGroup.init(el,self);self.filterGroups.push(filterGroup);if(filterGroup.name){if(typeof self.filterGroupsHash[filterGroup.name]!=='undefined'){throw new Error('[MixItUp MultiFilter] A filter group with name "'+filterGroup.name+'" already exists')}
39self.filterGroupsHash[filterGroup.name]=filterGroup}}},parseParseFilterGroupsArgs:function(args){var self=this,instruction=new mixitup.UserInstruction(),arg=null,i=-1;instruction.animate=self.config.animation.enable;instruction.command=new mixitup.CommandFilter();for(i=0;i<args.length;i++){arg=args[i];if(typeof arg==='boolean'){instruction.animate=arg}else if(typeof arg==='function'){instruction.callback=arg}}
40h.freeze(instruction);return instruction},getFilterGroupPaths:function(){var self=this,buildPath=null,crawl=null,nodes=null,matrix=[],paths=[],trackers=[],i=-1;for(i=0;i<self.filterGroups.length;i++){if((nodes=self.filterGroups[i].activeSelectors).length){matrix.push(nodes);trackers.push(0)}}
41buildPath=function(){var node=null,path=[],i=-1;for(i=0;i<matrix.length;i++){node=matrix[i][trackers[i]];if(Array.isArray(node)){node=node.join('')}
42path.push(node)}
43path=h.clean(path);paths.push(path)};
43crawl=function(index){index=index||0;var nodes=matrix[index];while(trackers[index]<nodes.length){if(index<matrix.length-1){crawl(index+1)}else{buildPath()}
44trackers[index]++}
45trackers[index]=0};if(!matrix.length)return'';crawl();return paths},buildSelectorFromPaths:function(paths){var self=this,path=null,output=[],pathSelector='',nodeDelineator='',i=-1;if(!paths.length){return''}
46if(self.config.multifilter.logicBetweenGroups==='or'){nodeDelineator=', '}
47if(paths.length>1){for(i=0;i<paths.length;i++){path=paths[i];pathSelector=path.join(nodeDelineator);if(output.indexOf(pathSelector)<0){output.push(pathSelector)}}
48return output.join(', ')}else{return paths[0].join(nodeDelineator)}},parseFilterGroups:function(){var self=this,instruction=self.parseFilterArgs(arguments),paths=self.getFilterGroupPaths(),selector=self.buildSelectorFromPaths(paths),callback=null,command={};if(selector===''){selector=self.config.controls.toggleDefault}
49instruction.command.selector=selector;command.filter=instruction.command;if(typeof(callback=self.config.callbacks.onParseFilterGroups)==='function'){command=callback(command)}
50return self.multimix(command,instruction.animate,instruction.callback)},setFilterGroupSelectors:function(groupName,selectors){var self=this,filterGroup=null;selectors=Array.isArray(selectors)?selectors:[selectors];if(typeof(filterGroup=self.filterGroupsHash[groupName])==='undefined'){throw new Error('[MixItUp MultiFilter] No filter group could be found with the name "'+groupName+'"')}
51filterGroup.activeToggles=selectors.slice();if(filterGroup.logic==='and'){filterGroup.activeSelectors=[filterGroup.activeToggles]}else{filterGroup.activeSelectors=filterGroup.activeToggles}
52filterGroup.updateUi(filterGroup.activeToggles)},getFilterGroupSelectors:function(groupName){var self=this,filterGroup=null;if(typeof(filterGroup=self.filterGroupsHash[groupName])==='undefined'){throw new Error('[MixItUp MultiFilter] No filter group could be found with the name "'+groupName+'"')}
53return filterGroup.activeToggles.slice()}});mixitup.Facade.registerAction('afterConstruct','multifilter',function(mixer){this.parseFilterGroups=mixer.parseFilterGroups.bind(mixer);this.setFilterGroupSelectors=mixer.setFilterGroupSelectors.bind(mixer);this.getFilterGroupSelectors=mixer.getFilterGroupSelectors.bind(mixer)})};mixitupMultifilter.TYPE='mixitup-extension';mixitupMultifilter.NAME='mixitup-multifilter';mixitupMultifilter.EXTENSION_VERSION='3.3.0';mixitupMultifilter.REQUIRE_CORE_VERSION='^3.1.2';if(typeof exports==='object'&&typeof module==='object'){module.exports=mixitupMultifilter}else if(typeof define==='function'&&define.amd){define(function(){return mixitupMultifilter})}else if(window.mixitup&&typeof window.mixitup==='function'){mixitupMultifilter(window.mixitup)}else{throw new Error('[MixItUp MultiFilter] MixItUp core not found')}})(window)

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.