-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfacets.min.js
8 lines (8 loc) · 2.95 KB
/
facets.min.js
1
2
3
4
5
6
7
8
/**
* facets.js
*
* @author Richard Butler <rich@smartcasual.io>
* @license MIT <https://github.com/richardbutler/facets/blob/master/LICENSE>
* @version 0.1.0
*/
!function(n,t){"function"==typeof define&&define.amd?define(["trilby"],t):"object"==typeof exports?module.exports=t(require("trilby")):n.facets=t(n.trilby)}(this,function(n){function t(e){function i(){return c}e=e||{};var f,o,c={},a=n();return c.data=function(t){var a;if("undefined"==typeof t)return f;f=n(t),a=u(f);var s=(e.fields||Object.keys(a)).map(function(n){return"string"==typeof n?{name:n,type:"string"}:n});return o=s.reduce(function(n,t){var e=t.name;return t.facets=i,n[e]=r(t,a[e]),n},{}),c},c.sortsOn=function(n){return a.add(n),c},c.field=function(n){return o[n]},c.fields=function(){return Object.keys(o).map(c.field)},c.exec=function(){function n(t){return function(r,e){var f=t(r,e);if(0===f){var o=u[++i];return o?n(o)(r,e):0}return f}}var r=f.slice();if(a.length){var u,i=0;u=a.map(c.field).invoke("sort").filter(t.filter.maybe()),r=r.sort(n(u[0]))}return c.fields().forEach(function(n){n.filters().forEach(function(n){r=r.filter(n)})}),t(e).data(r)},c}function r(t,r){function u(n){return"function"==typeof s.map?s.map(n):n}function o(n){return e(s,n,t.facets().data())}function c(n){return function(t){return n(u(t[s.name]))}}var a,s={},l=n(),d=f[t.type]||f["default"];if(r===!0)throw new Error("Sound the alarm");return Object.keys(t).forEach(function(n){s[n]=t[n]}),r=n(r).map(u).map(o),s.sort=function(n){return"function"==typeof n?(a=n,s):function(n,t){var r=a||i;return r(u(n[s.name]),u(t[s.name]))}},s.filters=function(t){return arguments.length?(l.add(n(t)),s):l.map(c)},"function"==typeof d&&d(s,r),s}function e(n,r,e){var u,i={};return i.field=n,i.value=r,i.results=function(){return u||(u=e.filter(t.filter.equals(r),n.name)),u},i.count=function(){return i.results().length},i}function u(n){return n.reduce(function(t,r){return Object.keys(r).forEach(function(r){r in t||(t[r]=n.pluck(r).unique())}),t},{})}function i(n,t){return t>n?-1:n>t?1:0}t.filter={range:function(n,t){return function(r){return Number(r)>=n&&Number(r)<=t}},equals:function(n){return function(t){return t===n}},greaterThan:function(n){return function(t){return t>n}},lessThan:function(n){return function(t){return n>t}},contains:function(n,t){function r(n){return t?n:n.toLowerCase()}return n=r(n),function(t){return(Array.isArray(t)?t.map(r):r(t)).indexOf(n)>=0}},maybe:function(){return function(n){return!!n}}};var f={number:function(n,t){t.forEach(function(t){var r=Number(t.value);n.min="undefined"==typeof n.min?r:Math.min(n.min,r),n.max="undefined"==typeof n.max?r:Math.max(n.max,r)})},"default":function(n,t){var r=t.reduce(function(n,t){return n[t.value]=t,n},{});n.options=function(n){return"undefined"==typeof n?t:t[n]},n.option=function(n){return r[n]},n.index=function(){return t.invoke("results"),this},n.sortOptions=function(){return t.sort(function(n,t){return i(n.value,t.value)}),n},n.sortOptions()}};return t});