{"version":3,"sources":["jquery.fastFilter.js"],"names":["jQuery","fn","fastLiveFilter","list","options","keyTimeout","input","this","lastFilter","timeout","callback","lis","children","len","length","oldDisplay","style","display","change","val","showFolders","li","filter","toLowerCase","numShown","i","selector","$","find","text","textContent","innerText","indexOf","keydown","clearTimeout","setTimeout","fastFilterDocLibCallBack","total","componentClass","$inputBox","addClass","each","index","_thisGroup","thisGroup","css","prev","removeClass","console","log","click","trigger","cleanUp","headers","v","next","first","empty"],"mappings":"AAQAA,OAAOC,GAAGC,eAAiB,SAAUC,EAAMC,GAEvCA,EAAUA,GAAW,GACrBD,EAAOH,OAAOG,GACd,IAKIE,EALAC,EAAQC,KACRC,EAAa,GACbC,EAAUL,EAAQK,SAAW,EAC7BC,EAAWN,EAAQM,UAAY,aAO/BC,EAAMR,EAAKS,WACXC,EAAMF,EAAIG,OACVC,EAAaF,EAAM,EAAIF,EAAI,GAAGK,MAAMC,QAAU,QA+ClD,OA9CAP,EAASG,GAETP,EAAMY,QAAO,WACkB,IAAvBZ,EAAMa,MAAML,OACZM,aAAY,GAGZA,aAAY,GAOhB,IAHA,IACIC,EADAC,EAAShB,EAAMa,MAAMI,cAErBC,EAAW,EACNC,EAAI,EAAGA,EAAIZ,EAAKY,IACrBJ,EAAKV,EAAIc,IACIrB,EAAQsB,SAAmDC,EAAEN,GAAIO,KAAKxB,EAAQsB,UAAUG,OAApER,EAAGS,aAAeT,EAAGU,WAAa,IAGrDR,cAAcS,QAAQV,IAAW,GAClB,SAArBD,EAAGL,MAAMC,UACTI,EAAGL,MAAMC,QAAUF,GAIvBS,KAIyB,SAArBH,EAAGL,MAAMC,UACTI,EAAGL,MAAMC,QAAU,QAO/B,OAHAP,EAASc,IAGF,KACRS,SAAQ,WACPC,aAAa7B,GACbA,EAAa8B,YAAW,WAChB7B,EAAMa,QAAUX,IACpBA,EAAaF,EAAMa,MACnBb,EAAMY,YACPT,MAEAF,MAGX,IAAI6B,yBAA2B,SAAUC,EAAOC,GAM5C,IAAIC,EAAYZ,EAAE,gBAAkBW,GAEhCC,EAAUzB,QAAUyB,EAAUpB,MAAML,OAAS,GAI7Ca,EAAE,QAAUW,EAAiB,oCAAoCE,SAAS,QAEzDb,EAAE,sBAGRc,MAAK,SAAUC,EAAOC,GAC7B,IAAIC,EAAYjB,EAAEgB,GACkH,IAAhIC,EAAUhB,KAAK,qBAAqBhB,SAAS,MAAMU,QAAO,WAAc,MAAkC,SAA3BK,EAAEpB,MAAMsC,IAAI,cAA0B/B,OAErH8B,EAAUE,OAAOC,YAAY,UAG7BH,EAAUE,OAAON,SAAS,eAKlCQ,QAAQC,IAAI,oBACZtB,EAAE,QAAUW,EAAiB,uBAAuBS,YAAY,QAChEpB,EAAE,QAAUW,EAAiB,4BAA4BS,YAAY,WAIzEpB,EAAE,4BAA4BuB,OAAM,WAChCvB,EAAE,4BAA4BR,IAAI,IAAIgC,QAAQ,cAGlDC,WAGJ,SAASA,UACL,IAAIC,EAAU1B,EAAE,kBAChBA,EAAEc,KAAKY,GAAS,SAAU5B,EAAG6B,GAC4E,IAAjG3B,EAAE2B,GAAGC,OAAO3C,WAAW4C,QAAQ5B,KAAK,kDAAkDd,QACtFa,EAAE2B,GAAGT,IAAI,UAAW,WAIhC,SAASzB,YAAYqC,GAGjB,IAAIJ,EAAU1B,EAAE,kBAChBA,EAAEc,KAAKY,GAAS,SAAU5B,EAAG6B,IACX,IAAVG,EAEA9B,EAAE,kBAAkBkB,IAAI,UAAW,SAI/BlB,EAAE2B,GAAGC,OAAO3B,KAAK,kDAAkDd,OAAS,GAC5Ea,EAAE2B,GAAGT,IAAI,UAAW","file":"../jquery.fastFilter.js","sourcesContent":["/**\r\n * fastLiveFilter jQuery plugin 1.0.3\r\n * \r\n * Copyright (c) 2011, Anthony Bush\r\n * License: \r\n * Project Website: http://anthonybush.com/projects/jquery_fast_live_filter/\r\n **/\r\n\r\njQuery.fn.fastLiveFilter = function (list, options) {\r\n // Options: input, list, timeout, callback\r\n options = options || {};\r\n list = jQuery(list);\r\n var input = this;\r\n var lastFilter = '';\r\n var timeout = options.timeout || 0;\r\n var callback = options.callback || function () { };\r\n\r\n var keyTimeout;\r\n\r\n // NOTE: because we cache lis & len here, users would need to re-init the plugin\r\n // if they modify the list in the DOM later. This doesn't give us that much speed\r\n // boost, so perhaps it's not worth putting it here.\r\n var lis = list.children();\r\n var len = lis.length;\r\n var oldDisplay = len > 0 ? lis[0].style.display : \"block\";\r\n callback(len); // do a one-time callback on initialization to make sure everything's in sync\r\n\r\n input.change(function () {\r\n if (input.val().length === 0) {\r\n showFolders(true);\r\n }\r\n else {\r\n showFolders(false);\r\n }\r\n\r\n\r\n var filter = input.val().toLowerCase();\r\n var li, innerText;\r\n var numShown = 0;\r\n for (var i = 0; i < len; i++) {\r\n li = lis[i];\r\n innerText = !options.selector ? li.textContent || li.innerText || \"\" : $(li).find(options.selector).text();\r\n\r\n\r\n if (innerText.toLowerCase().indexOf(filter) >= 0) {\r\n if (li.style.display === \"none\") {\r\n li.style.display = oldDisplay;\r\n\r\n // li.closest($(\".folder-header\")).css(\"display\", \"block\");\r\n }\r\n numShown++;\r\n //console.log(\"Li: %o\", li);\r\n\r\n } else {\r\n if (li.style.display !== \"none\") {\r\n li.style.display = \"none\";\r\n }\r\n }\r\n }\r\n callback(numShown);\r\n // var endTime = new Date().getTime();\r\n // console.log('Search for ' + filter + ' took: ' + (endTime - startTime) + ' (' + numShown + ' results)');\r\n return false;\r\n }).keydown(function () {\r\n clearTimeout(keyTimeout);\r\n keyTimeout = setTimeout(function () {\r\n if (input.val() === lastFilter) return;\r\n lastFilter = input.val();\r\n input.change();\r\n }, timeout);\r\n });\r\n return this; // maintain jQuery chainability\r\n};\r\n\r\nvar fastFilterDocLibCallBack = function (total, componentClass) {\r\n\r\n //console.log(\"=============================================\");\r\n\r\n\r\n //console.log('fastFilterDocLibCallBack : %o ', $('.searchInput_' + componentClass).length);\r\n var $inputBox = $('.searchInput_' + componentClass);\r\n\r\n if ($inputBox.length && $inputBox.val().length > 0) {\r\n\r\n // open all the things that are closed\r\n //console.log('.doc_' + componentClass + ' h4.panel-title a[aria-expanded=\"false\"]');\r\n $('.doc_' + componentClass + ' .doc-list__section:not(\".open\")').addClass('open');\r\n\r\n var containers = $(\".doc-list__section\");\r\n //var tools = $('.file-list__container');\r\n\r\n containers.each(function (index, _thisGroup) {\r\n var thisGroup = $(_thisGroup);\r\n if (thisGroup.find('ul.doc-list__list').children('li').filter(function () { return $(this).css(\"display\") !== \"none\"; }).length !== 0) {\r\n //console.log('Got visible items %o', thisGroup);\r\n thisGroup.prev().removeClass('hidden');\r\n } else {\r\n //console.log('No visible items %o', thisGroup);\r\n thisGroup.prev().addClass('hidden');\r\n }\r\n });\r\n }\r\n else {\r\n console.log('Show all headers');\r\n $('.doc_' + componentClass + ' .doc-list__section').removeClass('open');\r\n $('.doc_' + componentClass + ' .doc-list__title.hidden').removeClass('hidden');\r\n \r\n }\r\n\r\n $('.document-library__clear').click(function(){\r\n $('.document-library__input').val(\"\").trigger('keydown');\r\n });\r\n\r\n cleanUp();\r\n};\r\n\r\nfunction cleanUp() {\r\n var headers = $(\".panel-heading\");\r\n $.each(headers, function (i, v) { \r\n if ($(v).next().children().first().find(\".file-list__item:not([style='display: none;'])\").length === 0) {\r\n $(v).css(\"display\", \"none\");\r\n }\r\n });\r\n}\r\nfunction showFolders(empty) {\r\n \r\n // console.log(\"Show folders\");\r\n var headers = $(\".folder-header\");\r\n $.each(headers, function (i, v) {\r\n if (empty === true) {\r\n \r\n $(\".folder-header\").css(\"display\", \"block\");\r\n }\r\n else {\r\n //console.log($(v).next().find(\".file-list__item:not([style='display: none;'])\").length);\r\n if ($(v).next().find(\".file-list__item:not([style='display: none;'])\").length > 0) {\r\n $(v).css(\"display\", \"block\");\r\n }\r\n }\r\n });\r\n}"]}