@nextgis/properties-filter
Version:
Filtering objects by its properties using expressions
3 lines (2 loc) • 1.51 kB
JavaScript
var PropertiesFilter=function(e){"use strict";var r=Object.defineProperty,t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable,o=(e,t,n)=>t in e?r(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;function l(e,r,t){if((r=String(r))===(e=String(e)))return!0;if(t&&r.toUpperCase()===e.toUpperCase())return!0;const n=`^${i=r,i.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}$`.replace(/%/g,".*").replace("_",".");var i;return null!==new RegExp(n,t?"i":"").exec(e)}const p={gt:(e,r)=>e>r,lt:(e,r)=>e<r,ge:(e,r)=>e>=r,le:(e,r)=>e<=r,eq:(e,r)=>e===r,ne:(e,r)=>e!==r,in:(e,r)=>-1!==r.indexOf(e),notin:(e,r)=>-1===r.indexOf(e),like:(e,r)=>l(e,r),ilike:(e,r)=>l(e,r,!0)};function c(e){return 3===e.length&&"string"==typeof e[0]&&"string"==typeof e[1]}function f(e,r){const t="string"==typeof r[0]?r[0]:"all",n=r=>{if(c(r)){const[t,n,i]=r,o=p[n];if(o){if(("like"===n||"ilike"===n)&&"string"==typeof t){let r="";const n=t.replace(/^%?(\w+)%?$/,(n,o)=>(r=e[o],t.replace(o,i)));return o(r,n)}return o(e[t],i)}return!1}return f(e,r)},i=r.filter(e=>Array.isArray(e));return"any"===t?i.some(n):i.every(n)}return e.checkIfPropertyFilter=function(e){return c(e)},e.featureFilter=function(e,r){const l=((e,r)=>{for(var l in r||(r={}))n.call(r,l)&&o(e,l,r[l]);if(t)for(var l of t(r))i.call(r,l)&&o(e,l,r[l]);return e})({},e.properties);return!!l&&(l.$id=e.id,f(l,r))},e.isPropertyFilter=c,e.propertiesFilter=f,e}({});
//# sourceMappingURL=properties-filter.global.prod.js.map