UNPKG

react-querybuilder

Version:

React Query Builder component for constructing queries and filters, with utilities for executing them in various database and evaluation contexts

1 lines 119 kB
"use strict";var Gn=Object.create;var fo=Object.defineProperty;var Nn=Object.getOwnPropertyDescriptor;var An=Object.getOwnPropertyNames;var xn=Object.getPrototypeOf,$n=Object.prototype.hasOwnProperty;var Cn=(t,e)=>{for(var r in e)fo(t,r,{get:e[r],enumerable:!0})},ul=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let l of An(e))!$n.call(t,l)&&l!==r&&fo(t,l,{get:()=>e[l],enumerable:!(o=Nn(e,l))||o.enumerable});return t};var _t=(t,e,r)=>(r=t!=null?Gn(xn(t)):{},ul(e||!t||!t.__esModule?fo(r,"default",{value:t,enumerable:!0}):r,t)),Sn=t=>ul(fo({},"__esModule",{value:!0}),t);var Aa={};Cn(Aa,{ActionElement:()=>Ze,DragHandle:()=>or,InlineCombinator:()=>sr,LogType:()=>ve,NotToggle:()=>ir,QueryBuilder:()=>pn,QueryBuilderContext:()=>Ye,QueryBuilderStateContext:()=>dt,QueryBuilderStateProvider:()=>Yr,Rule:()=>Br,RuleComponents:()=>zl,RuleGroup:()=>Qr,RuleGroupBodyComponents:()=>qr,RuleGroupHeaderComponents:()=>Vr,ShiftActions:()=>Fr,TestID:()=>F,ValueEditor:()=>jr,ValueSelector:()=>Ct,add:()=>Uo,celCombinatorMap:()=>Po,convertFromIC:()=>ut,convertQuery:()=>Tn,convertToIC:()=>cr,default:()=>pn,defaultCELValueProcessor:()=>Zn,defaultCombinators:()=>ze,defaultCombinatorsExtended:()=>Dn,defaultControlClassnames:()=>lr,defaultControlElements:()=>Vt,defaultExportOperatorMap:()=>yr,defaultJoinChar:()=>Ut,defaultMongoDBValueProcessor:()=>Yn,defaultNLTranslations:()=>Do,defaultOperatorNegationMap:()=>wn,defaultOperatorProcessorNL:()=>Fo,defaultOperators:()=>rr,defaultPlaceholderFieldGroupLabel:()=>hl,defaultPlaceholderFieldLabel:()=>fl,defaultPlaceholderFieldName:()=>bo,defaultPlaceholderLabel:()=>ht,defaultPlaceholderName:()=>ho,defaultPlaceholderOperatorGroupLabel:()=>gl,defaultPlaceholderOperatorLabel:()=>bl,defaultPlaceholderOperatorName:()=>go,defaultPlaceholderValueGroupLabel:()=>Rl,defaultPlaceholderValueLabel:()=>yl,defaultPlaceholderValueName:()=>vl,defaultRuleProcessorCEL:()=>Et,defaultRuleProcessorElasticSearch:()=>Bo,defaultRuleProcessorJSONata:()=>Vo,defaultRuleProcessorJsonLogic:()=>qo,defaultRuleProcessorMongoDB:()=>Tt,defaultRuleProcessorMongoDBQuery:()=>kt,defaultRuleProcessorNL:()=>Rr,defaultRuleProcessorParameterized:()=>ro,defaultRuleProcessorSQL:()=>At,defaultRuleProcessorSpEL:()=>It,defaultSpELValueProcessor:()=>ea,defaultTranslations:()=>zt,defaultValidator:()=>In,defaultValueProcessor:()=>Xn,defaultValueProcessorByRule:()=>Je,defaultValueProcessorCELByRule:()=>ta,defaultValueProcessorMongoDBByRule:()=>oa,defaultValueProcessorNL:()=>Bt,defaultValueProcessorSpELByRule:()=>ra,filterFieldsByComparator:()=>Yt,findPath:()=>fe,formatQuery:()=>Jn,generateAccessibleDescription:()=>xr,generateID:()=>De,getCommonAncestorPath:()=>Mo,getCompatContextProvider:()=>ua,getFirstOption:()=>Ne,getNLTranslataion:()=>Lt,getOption:()=>me,getParentPath:()=>ce,getParseNumberMethod:()=>yt,getQuerySelectorById:()=>ot,getQuoteFieldNamesWithArray:()=>Eo,getQuotedFieldName:()=>et,getValidationClassNames:()=>so,getValueSourcesUtil:()=>Cr,group:()=>kr,groupInvalidReasons:()=>Jt,insert:()=>ma,isAncestor:()=>la,isFlexibleOptionArray:()=>wo,isFlexibleOptionGroupArray:()=>Ve,isFullOptionArray:()=>El,isFullOptionGroupArray:()=>Qn,isOptionGroupArray:()=>So,isPojo:()=>we,isRuleGroup:()=>Q,isRuleGroupType:()=>ue,isRuleGroupTypeIC:()=>We,isRuleOrGroupValid:()=>be,isValidValue:()=>ke,isValidationResult:()=>Gr,isValueProcessorLegacy:()=>hr,joinWith:()=>it,jsonLogicAdditionalOperators:()=>Vn,mapSQLOperator:()=>fr,mergeClassnames:()=>$r,mergeTranslation:()=>ge,mergeTranslations:()=>pa,messages:()=>lt,mongoOperators:()=>Oo,move:()=>Er,normalizeConstituentWordOrder:()=>br,nullFreeArray:()=>En,nullOrUndefinedOrEmpty:()=>nt,numericRegex:()=>ur,numerifyValues:()=>Lo,objectEntries:()=>Sr,objectKeys:()=>io,parseNumber:()=>U,pathIsDisabled:()=>pt,pathsAreEqual:()=>tt,preferProp:()=>Ml,prepareRule:()=>Dr,prepareRuleGroup:()=>uo,prepareRuleOrGroup:()=>_o,queryBuilderStore:()=>Xr,regenerateID:()=>Or,regenerateIDs:()=>xt,remove:()=>Lr,rootPath:()=>nr,shouldRenderAsNumber:()=>M,splitBy:()=>No,sqlDialectPresets:()=>Ar,standardClassnames:()=>q,toArray:()=>_,toFlatOptionArray:()=>pr,toFullOption:()=>Qe,toFullOptionList:()=>Ee,toFullOptionMap:()=>Co,toOptions:()=>Tr,transformQuery:()=>fa,trimIfString:()=>ne,uniqByIdentifier:()=>vt,uniqByName:()=>Bn,uniqOptGroups:()=>Xt,uniqOptList:()=>mr,update:()=>Pr,useControlledOrUncontrolled:()=>Hr,useDeprecatedProps:()=>gt,useMergedContext:()=>qt,usePreferAnyProp:()=>sa,usePreferProp:()=>no,usePrevious:()=>Wr,useQueryBuilder:()=>Kr,useQueryBuilderQuery:()=>ba,useQueryBuilderSchema:()=>zr,useQueryBuilderSelector:()=>Ur,useQueryBuilderSetup:()=>Jr,useReactDndWarning:()=>Kt,useRule:()=>Jl,useRuleGroup:()=>Kl,useSelectElementChangeHandler:()=>Mr,useStopEventPropagation:()=>Be,useValueEditor:()=>Zl,useValueSelector:()=>tn});module.exports=Sn(Aa);var cl=require("react"),Ye=(0,cl.createContext)({});var dl=require("react/jsx-runtime"),Ze=t=>(0,dl.jsx)("button",{type:"button","data-testid":t.testID,disabled:t.disabled&&!t.disabledTranslation,className:t.className,title:t.disabledTranslation&&t.disabled?t.disabledTranslation.title:t.title,onClick:e=>t.handleOnClick(e),children:t.disabledTranslation&&t.disabled?t.disabledTranslation.label:t.label});var pl=require("react/jsx-runtime"),ml=require("react"),or=(0,ml.forwardRef)((t,e)=>(0,pl.jsx)("span",{"data-testid":t.testID,ref:e,className:t.className,title:t.title,children:t.label}));var ar=require("react/jsx-runtime");var ho="~",ht="------",bo=ho,fl=ht,hl=ht,go=ho,bl=ht,gl=ht,vl=ho,yl=ht,Rl=ht,Ut=",",zt={fields:{title:"Fields",placeholderName:bo,placeholderLabel:fl,placeholderGroupLabel:hl},operators:{title:"Operators",placeholderName:go,placeholderLabel:bl,placeholderGroupLabel:gl},values:{title:"Values",placeholderName:vl,placeholderLabel:yl,placeholderGroupLabel:Rl},value:{title:"Value"},removeRule:{label:"\u2A2F",title:"Remove rule"},removeGroup:{label:"\u2A2F",title:"Remove group"},addRule:{label:"+ Rule",title:"Add rule"},addGroup:{label:"+ Group",title:"Add group"},combinators:{title:"Combinators"},notToggle:{label:"Not",title:"Invert this group"},cloneRule:{label:"\u29C9",title:"Clone rule"},cloneRuleGroup:{label:"\u29C9",title:"Clone group"},shiftActionUp:{label:"\u02C4",title:"Shift up"},shiftActionDown:{label:"\u02C5",title:"Shift down"},dragHandle:{label:"\u205E\u205E",title:"Drag handle"},lockRule:{label:"\u{1F513}",title:"Lock rule"},lockGroup:{label:"\u{1F513}",title:"Lock group"},lockRuleDisabled:{label:"\u{1F512}",title:"Unlock rule"},lockGroupDisabled:{label:"\u{1F512}",title:"Unlock group"},valueSourceSelector:{title:"Value source"}},rr=[{name:"=",value:"=",label:"="},{name:"!=",value:"!=",label:"!="},{name:"<",value:"<",label:"<"},{name:">",value:">",label:">"},{name:"<=",value:"<=",label:"<="},{name:">=",value:">=",label:">="},{name:"contains",value:"contains",label:"contains"},{name:"beginsWith",value:"beginsWith",label:"begins with"},{name:"endsWith",value:"endsWith",label:"ends with"},{name:"doesNotContain",value:"doesNotContain",label:"does not contain"},{name:"doesNotBeginWith",value:"doesNotBeginWith",label:"does not begin with"},{name:"doesNotEndWith",value:"doesNotEndWith",label:"does not end with"},{name:"null",value:"null",label:"is null"},{name:"notNull",value:"notNull",label:"is not null"},{name:"in",value:"in",label:"in"},{name:"notIn",value:"notIn",label:"not in"},{name:"between",value:"between",label:"between"},{name:"notBetween",value:"notBetween",label:"not between"}],wn={"=":"!=","!=":"=","<":">=","<=":">",">":"<=",">=":"<",beginsWith:"doesNotBeginWith",doesNotBeginWith:"beginsWith",endsWith:"doesNotEndWith",doesNotEndWith:"endsWith",contains:"doesNotContain",doesNotContain:"contains",between:"notBetween",notBetween:"between",in:"notIn",notIn:"in",notNull:"null",null:"notNull"},ze=[{name:"and",value:"and",label:"AND"},{name:"or",value:"or",label:"OR"}],Dn=[...ze,{name:"xor",value:"xor",label:"XOR"}],q={queryBuilder:"queryBuilder",ruleGroup:"ruleGroup",header:"ruleGroup-header",body:"ruleGroup-body",combinators:"ruleGroup-combinators",addRule:"ruleGroup-addRule",addGroup:"ruleGroup-addGroup",cloneRule:"rule-cloneRule",cloneGroup:"ruleGroup-cloneGroup",removeGroup:"ruleGroup-remove",notToggle:"ruleGroup-notToggle",rule:"rule",fields:"rule-fields",operators:"rule-operators",value:"rule-value",removeRule:"rule-remove",betweenRules:"betweenRules",valid:"queryBuilder-valid",invalid:"queryBuilder-invalid",shiftActions:"shiftActions",dndDragging:"dndDragging",dndOver:"dndOver",dndCopy:"dndCopy",dndGroup:"dndGroup",dragHandle:"queryBuilder-dragHandle",disabled:"queryBuilder-disabled",lockRule:"rule-lock",lockGroup:"ruleGroup-lock",valueSource:"rule-valueSource",valueListItem:"rule-value-list-item",branches:"queryBuilder-branches"},lr={queryBuilder:"",ruleGroup:"",header:"",body:"",combinators:"",addRule:"",addGroup:"",cloneRule:"",cloneGroup:"",removeGroup:"",notToggle:"",rule:"",fields:"",operators:"",value:"",removeRule:"",shiftActions:"",dragHandle:"",lockRule:"",lockGroup:"",valueSource:"",actionElement:"",valueSelector:"",betweenRules:"",valid:"",invalid:"",dndDragging:"",dndOver:"",dndGroup:"",dndCopy:"",disabled:"",valueListItem:"",branches:""},Jt={empty:"empty",invalidCombinator:"invalid combinator",invalidIndependentCombinators:"invalid independent combinators"},F={rule:"rule",ruleGroup:"rule-group",inlineCombinator:"inline-combinator",addGroup:"add-group",removeGroup:"remove-group",cloneGroup:"clone-group",cloneRule:"clone-rule",addRule:"add-rule",removeRule:"remove-rule",combinators:"combinators",fields:"fields",operators:"operators",valueEditor:"value-editor",notToggle:"not-toggle",shiftActions:"shift-actions",dragHandle:"drag-handle",lockRule:"lock-rule",lockGroup:"lock-group",valueSourceSelector:"value-source-selector"},ve={parentPathDisabled:"action aborted: parent path disabled",pathDisabled:"action aborted: path is disabled",queryUpdate:"query updated",onAddRuleFalse:"onAddRule callback returned false",onAddGroupFalse:"onAddGroup callback returned false",onGroupRuleFalse:"onGroupRule callback returned false",onGroupGroupFalse:"onGroupGroup callback returned false",onMoveRuleFalse:"onMoveRule callback returned false",onMoveGroupFalse:"onMoveGroup callback returned false",onRemoveFalse:"onRemove callback returned false",add:"rule or group added",remove:"rule or group removed",update:"rule or group updated",move:"rule or group moved",group:"rule or group grouped with another"},nr=[];function Gl(t){let e,r,o="";if(typeof t=="string"||typeof t=="number")o+=t;else if(typeof t=="object")if(Array.isArray(t)){let l=t.length;for(e=0;e<l;e++)t[e]&&(r=Gl(t[e]))&&(o&&(o+=" "),o+=r)}else for(r in t)t[r]&&(o&&(o+=" "),o+=r);return o}function Y(){let t=0,e,r,o="",l=arguments.length;for(;t<l;t++)(e=t<0||arguments.length<=t?void 0:arguments[t])&&(r=Gl(e))&&(o&&(o+=" "),o+=r);return o}var Nl=Y;var sr=t=>{let{component:e,...r}=t,o=Y(r.schema.suppressStandardClassnames||q.betweenRules,r.schema.classNames.betweenRules);return(0,ar.jsx)("div",{className:o,"data-testid":F.inlineCombinator,children:(0,ar.jsx)(e,{...r,testID:F.combinators})})};var vo=require("react/jsx-runtime"),ir=t=>(0,vo.jsxs)("label",{"data-testid":t.testID,className:t.className,title:t.title,children:[(0,vo.jsx)("input",{type:"checkbox",onChange:e=>t.handleOnChange(e.target.checked),checked:!!t.checked,disabled:t.disabled}),t.label]});var xl=_t(require("react")),Al=Symbol.for("react.memo_cache_sentinel");function Ge(t){return xl.useMemo(()=>{let e=Array.from({length:t});for(let r=0;r<t;r++)e[r]=Al;return e[Al]=!0,e},[])}var Ae=require("react/jsx-runtime"),Ir=_t(require("react")),ae=require("react");var lt={errorInvalidIndependentCombinatorsProp:"QueryBuilder was rendered with a truthy independentCombinators prop. This prop is deprecated and unnecessary. Furthermore, the initial query/defaultQuery prop was of type RuleGroupType instead of type RuleGroupIC. More info: https://react-querybuilder.js.org/docs/components/querybuilder#independent-combinators",errorUnnecessaryIndependentCombinatorsProp:"QueryBuilder was rendered with the deprecated and unnecessary independentCombinators prop. To use independent combinators, make sure the query/defaultQuery prop is of type RuleGroupIC when the component mounts. More info: https://react-querybuilder.js.org/docs/components/querybuilder#independent-combinators",errorDeprecatedRuleGroupProps:"A custom RuleGroup component has rendered a standard RuleGroup component with deprecated props. The combinator, not, and rules props should not be used. Instead, the full group object should be passed as the ruleGroup prop.",errorDeprecatedRuleProps:"A custom RuleGroup component has rendered a standard Rule component with deprecated props. The field, operator, value, and valueSource props should not be used. Instead, the full rule object should be passed as the rule prop.",errorBothQueryDefaultQuery:"QueryBuilder was rendered with both query and defaultQuery props. QueryBuilder must be either controlled or uncontrolled (specify either the query prop, or the defaultQuery prop, but not both). Decide between using a controlled or uncontrolled query builder and remove one of these props. More info: https://reactjs.org/link/controlled-components",errorUncontrolledToControlled:"QueryBuilder is changing from an uncontrolled component to be controlled. This is likely caused by the query changing from undefined to a defined value, which should not happen. Decide between using a controlled or uncontrolled query builder for the lifetime of the component. More info: https://reactjs.org/link/controlled-components",errorControlledToUncontrolled:"QueryBuilder is changing from a controlled component to be uncontrolled. This is likely caused by the query changing from defined to undefined, which should not happen. Decide between using a controlled or uncontrolled query builder for the lifetime of the component. More info: https://reactjs.org/link/controlled-components",errorEnabledDndWithoutReactDnD:"QueryBuilder was rendered with the enableDragAndDrop prop set to true, but either react-dnd was not detected or one of react-dnd-html5-backend or react-dnd-touch-backend was not detected. To enable drag-and-drop functionality, install react-dnd and one of the backend packages and wrap QueryBuilder in QueryBuilderDnD from @react-querybuilder/dnd."};var Ro=require("react-redux");var $l=require("@reduxjs/toolkit"),On={},bt=(0,$l.createSlice)({name:"queries",initialState:On,reducers:{setQueryState:(t,e)=>{let{payload:{qbId:r,query:o}}=e;t[r]=o}},selectors:{getQuerySelectorById:(t,e)=>t[e]}});var Cl=_t(require("react")),dt=Cl.createContext(null);var Sl=require("@reduxjs/toolkit");var Pn={[lt.errorInvalidIndependentCombinatorsProp]:!1,[lt.errorUnnecessaryIndependentCombinatorsProp]:!1,[lt.errorDeprecatedRuleGroupProps]:!1,[lt.errorDeprecatedRuleProps]:!1,[lt.errorBothQueryDefaultQuery]:!1,[lt.errorUncontrolledToControlled]:!1,[lt.errorControlledToUncontrolled]:!1,[lt.errorEnabledDndWithoutReactDnD]:!1},yo=(0,Sl.createSlice)({name:"warnings",initialState:Pn,reducers:{rqbWarn:(t,e)=>{let{payload:r}=e;t[r]||(console.error(r),t[r]=!0)}}});var Go=t=>{let{payload:e,onQueryChange:r}=t;return o=>{o(bt.actions.setQueryState(e)),typeof r=="function"&&r(e.query)}},Pt=(0,Ro.createDispatchHook)(dt),wl=(0,Ro.createStoreHook)(dt),{rqbWarn:Wa}=yo.actions;var Ln={queries:bt.getInitialState(),warnings:yo.getInitialState()},Dl={reducer:{queries:bt.reducer,warnings:yo.reducer},preloadedState:Ln,middleware:t=>t({serializableCheck:{ignoredActions:[bt.actions.setQueryState.type],ignoredPaths:[/^queries\b.*\.rules\.\d+\.value$/]}})};function gt(t,e,r){Pt()}var Kt=(t,e)=>{};var Ka=require("react"),Be=t=>{let e=Ge(2),r;return e[0]!==t?(r=(o,l)=>{o?.preventDefault(),o?.stopPropagation(),t(o,l)},e[0]=t,e[1]=r):r=e[1],r};var No=function(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Ut;return typeof t=="string"?t.split(`\\${e}`).map(r=>r.split(e)).reduce((r,o,l)=>l===0?o:[...r.slice(0,-1),`${r.at(-1)}${e}${o[0]}`,...o.slice(1)],[]):[]},it=function(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Ut;return t.map(r=>`${r??""}`.replaceAll(e[0],`\\${e[0]}`)).join(e)},ne=t=>typeof t=="string"?t.trim():t,_=function(t){let{retainEmptyStrings:e}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Array.isArray(t)?t.map(r=>ne(r)):typeof t=="string"?No(t,Ut).filter(e?()=>!0:r=>!/^\s*$/.test(r)).map(r=>r.trim()):typeof t=="number"?[t]:[]},En=t=>t.every(e=>e===!1||(e??!1)!==!1);var Ll=require("immer");var Ol=require("numeric-quantity"),ur=new RegExp(Ol.numericRegex.source.replace(/^\^/,String.raw`^\s*`).replace(/\$$/,String.raw`\s*$`)),we=t=>t===null||typeof t!="object"?!1:Object.getPrototypeOf(t)===Object.prototype,nt=t=>t==null||t==="";var Q=t=>we(t)&&Array.isArray(t.rules),ue=t=>Q(t)&&typeof t.combinator=="string",We=t=>Q(t)&&t.combinator===void 0;var Pl=["or","xor","and"],kn=(t,e)=>typeof t=="string"&&t.toLowerCase()===e,Ao=function(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,r=Pl[e];return t.rules.includes(r)?(0,Ll.produce)(t,o=>{let l=0;for(;l<o.rules.length-2;){if(kn(o.rules[l+1],r)){l+=2;continue}let s=o.rules.findIndex((a,c)=>c>l&&typeof a=="string"&&a.toLowerCase()===r);if(s===-1){o.rules.splice(l,o.rules.length,Ao({rules:o.rules.slice(l)},e+1));break}else o.rules.splice(l,s-l,Ao({rules:o.rules.slice(l,s)},e+1))}}):e<Pl.length-2?Ao(t,e+1):t},ut=t=>{if(ue(t))return t;let e=Ao(t),r=e.rules.map(s=>typeof s=="string"||!Q(s)?s:ut(s)),o=r.length<2?"and":r[1],l=r.filter(s=>typeof s!="string");return{...e,combinator:o,rules:l}},cr=t=>{if(We(t))return t;let{combinator:e,...r}=t,o=[],{length:l}=t.rules;for(let[s,a]of t.rules.entries())Q(a)?o.push(cr(a)):o.push(a),e&&s<l-1&&o.push(e);return{...r,rules:o}};function Tn(t){return We(t)?ut(t):cr(t)}var In=t=>{let e={},r=l=>{},o=l=>{let s=[];if(l.rules.length===0)s.push(Jt.empty);else if(!ue(l)){let a=!1;for(let c=0;c<l.rules.length&&!a;c++)(c%2===0&&typeof l.rules[c]=="string"||c%2===1&&typeof l.rules[c]!="string"||c%2===1&&typeof l.rules[c]=="string"&&!ze.map(h=>h.name).includes(l.rules[c]))&&(a=!0);a&&s.push(Jt.invalidIndependentCombinators)}ue(l)&&!ze.map(a=>a.name).includes(l.combinator)&&l.rules.length>1&&s.push(Jt.invalidCombinator),l.id&&(e[l.id]=s.length>0?{valid:!1,reasons:s}:!0);for(let a of l.rules)typeof a=="string"||(Q(a)?o(a):r(a))};return o(t),e};var dr=require("immer");var xo=t=>we(t)&&"name"in t&&typeof t.name=="string",$o=t=>we(t)&&"value"in t&&typeof t.value=="string";function Qe(t,e){return(0,dr.produce)(o=>{let l={},s=!!e;if(xo(o)&&!$o(o)?(l.value=o.name,s=!0):!xo(o)&&$o(o)&&(l.name=o.value,s=!0),s)return Object.assign({},e,o,l)})(t)}function Ee(t,e){return Array.isArray(t)?(0,dr.produce)(o=>{if(Ve(o))for(let l of o)for(let[s,a]of l.options.entries())l.options[s]=Qe(a,e);else for(let[l,s]of o.entries())o[l]=Qe(s,e)})(t):[]}function Co(t,e){return Object.fromEntries(Object.entries(t).map(r=>{let[o,l]=r;return[o,Qe(l,e)]}))}var Bn=t=>vt(t),vt=t=>{let e=new Set,r=[];for(let o of t)e.has(o.value??o.name)||(e.add(o.value??o.name),r.push(o));return t.length===r.length?t:r},So=t=>Array.isArray(t)&&t.length>0&&we(t[0])&&"options"in t[0]&&Array.isArray(t[0].options),wo=t=>{let e=!1;if(Array.isArray(t))for(let r of t)if(xo(r)||$o(r))e=!0;else return!1;return e},El=t=>{let e=!1;if(Array.isArray(t))for(let r of t)if(xo(r)&&$o(r))e=!0;else return!1;return e},Ve=function(t){let{allowEmpty:e=!1}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=!1;if(Array.isArray(t))for(let o of t)if(we(o)&&"options"in o&&(wo(o.options)||e&&Array.isArray(o.options)&&o.options.length===0))r=!0;else return!1;return r},Qn=function(t){let{allowEmpty:e=!1}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=!1;if(Array.isArray(t))for(let o of t)if(we(o)&&"options"in o&&(El(o.options)||e&&Array.isArray(o.options)&&o.options.length===0))r=!0;else return!1;return r},me=(t,e)=>(Ve(t,{allowEmpty:!0})?t.flatMap(r=>r.options):t).find(r=>r.value===e||r.name===e),Ne=t=>{if(!Array.isArray(t)||t.length===0)return null;if(Ve(t,{allowEmpty:!0})){for(let e of t)if(e.options.length>0)return e.options[0].value??e.options[0].name;return null}return t[0].value??t[0].name},pr=t=>vt(So(t)?t.flatMap(e=>e.options):t),Xt=t=>{let e=new Set,r=new Set,o=[];for(let l of t)if(!e.has(l.label)){e.add(l.label);let s=[];for(let a of l.options)r.has(a.value??a.name)||(r.add(a.value??a.name),s.push(Qe(a)));o.push({...l,options:s})}return o},mr=t=>Ve(t)?Xt(t):vt(t.map(e=>Qe(e)));var kl=(t,e,r)=>{let o=Qe(t),l=Qe(r);return o.value===l.value?!1:typeof o.comparator=="string"?o[o.comparator]===l[o.comparator]:o.comparator?.(l,e)??!1},Yt=(t,e,r)=>{if(!t.comparator){let o=l=>(l.value??l.name)!==(t.value??t.name);return Ve(e)?e.map(l=>({...l,options:l.options.filter(s=>o(s))})):e.filter(l=>o(l))}return Ve(e)?e.map(o=>({...o,options:o.options.filter(l=>kl(t,r,l))})).filter(o=>o.options.length>0):e.filter(o=>kl(t,r,o))};var Tl=require("numeric-quantity"),U=function(t){let{parseNumbers:e}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!e||typeof t=="bigint"||typeof t=="number")return t;if(e==="native")return parseFloat(t);let r=(0,Tl.numericQuantity)(t,{allowTrailingInvalid:e==="enhanced",romanNumerals:!1,round:!1});return isNaN(r)?t:r};var yt=t=>{let{parseNumbers:e,inputType:r}=t;if(typeof e=="string"){let[o,l]=e.split("-");return l==="limited"?r==="number"?o:!1:o}return e?"strict":!1};var fr=t=>{switch(t.toLowerCase()){case"null":return"is null";case"notnull":return"is not null";case"notin":return"not in";case"notbetween":return"not between";case"contains":case"beginswith":case"endswith":return"like";case"doesnotcontain":case"doesnotbeginwith":case"doesnotendwith":return"not like";default:return t}},Oo={"=":"$eq","!=":"$ne","<":"$lt","<=":"$lte",">":"$gt",">=":"$gte",in:"$in",notin:"$nin",notIn:"$nin"},Po={and:"&&",or:"||"},Vn={startsWith:(t,e)=>typeof t=="string"&&t.startsWith(e),endsWith:(t,e)=>typeof t=="string"&&t.endsWith(e)},Lo=(t,e)=>({...t,rules:t.rules.map(r=>{if(typeof r=="string")return r;if(Q(r))return Lo(r,e);let o=me(e.fields,r.field),l=yt({parseNumbers:e.parseNumbers,inputType:o?.inputType});if(Array.isArray(r.value))return{...r,value:r.value.map(a=>U(a,{parseNumbers:l}))};let s=_(r.value,{retainEmptyStrings:!0}).map(a=>U(a,{parseNumbers:l}));if(s.every(a=>typeof a=="number")){if(s.length>1)return{...r,value:s};if(s.length===1)return{...r,value:s[0]}}return r})}),ke=t=>typeof t=="string"&&t.length>0||typeof t=="number"&&!isNaN(t)||typeof t!="string"&&typeof t!="number",M=(t,e)=>!!e&&(typeof t=="number"||typeof t=="bigint"||typeof t=="string"&&ur.test(t)),hr=t=>t.length>=3,Eo=function(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["",""];return Array.isArray(t)?t:typeof t=="string"?[t,t]:t??["",""]},et=(t,e)=>{let{quoteFieldNamesWith:r,fieldIdentifierSeparator:o}=e,[l,s]=Eo(r);return typeof o=="string"&&o.length>0?it(No(t,o).map(a=>`${l}${a}${s}`),o):`${l}${t}${s}`},Il=["S","V","O"],br=t=>{let e=[],r=new Set(Il);for(let o of t.toUpperCase())if(r.has(o)&&(e.push(o),r.delete(o),r.size===0))break;for(let o of Il)r.has(o)&&e.push(o);return e},Do={groupPrefix:"",groupPrefix_not_xor:"either zero or more than one of",groupPrefix_xor:"exactly one of",groupSuffix:"is true",groupSuffix_not:"is not true"},Bl=(t,e,r)=>e.startsWith(t)&&r.every(o=>e.includes(`_${o}`)&&e.match(/_/g)?.length===r.length),Lt=function(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[];return r.length===0?e[t]??Do[t]??"":Object.entries(e).find(o=>{let[l]=o;return Bl(t,l,r)})?.[1]??Object.entries(Do).find(o=>{let[l]=o;return Bl(t,l,r)})?.[1]??Do[t]??""};var ko=t=>t.startsWith("not")||t.startsWith("doesnot"),Rt=(t,e)=>typeof t!="string"||!e?t:t.replaceAll('"','\\"'),Et=function(t){let{field:e,operator:r,value:o,valueSource:l}=t,{escapeQuotes:s,parseNumbers:a,preserveValueOrder:c}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},h=l==="field",d=(r==="="?"==":r).toLowerCase(),p=typeof o=="number"||typeof o=="boolean"||typeof o=="bigint"||M(o,a);switch(d){case"<":case"<=":case"==":case"!=":case">":case">=":return`${e} ${d} ${h||p?ne(o):`"${Rt(o,s)}"`}`;case"contains":case"doesnotcontain":return`${ko(d)?"!":""}${e}.contains(${h?ne(o):`"${Rt(o,s)}"`})`;case"beginswith":case"doesnotbeginwith":return`${ko(d)?"!":""}${e}.startsWith(${h?ne(o):`"${Rt(o,s)}"`})`;case"endswith":case"doesnotendwith":return`${ko(d)?"!":""}${e}.endsWith(${h?ne(o):`"${Rt(o,s)}"`})`;case"null":return`${e} == null`;case"notnull":return`${e} != null`;case"in":case"notin":{let[b,g]=ko(d)?["!(",")"]:["",""],i=_(o);return`${b}${e} in [${i.map(G=>h||M(G,a)?`${ne(G)}`:`"${Rt(G,s)}"`).join(", ")}]${g}`}case"between":case"notbetween":{let b=_(o);if(b.length>=2&&!nt(b[0])&&!nt(b[1])){let[g,i]=b,G=M(g,!0)?U(g,{parseNumbers:!0}):NaN,v=M(i,!0)?U(i,{parseNumbers:!0}):NaN,y=isNaN(G)?h?`${g}`:`"${Rt(g,s)}"`:G,f=isNaN(v)?h?`${i}`:`"${Rt(i,s)}"`:v;if(!c&&y===G&&f===v&&v<G){let m=v;f=G,y=m}return d==="between"?`(${e} >= ${y} && ${e} <= ${f})`:`(${e} < ${y} || ${e} > ${f})`}else return""}}return""};var kt=function(t){let{field:e,operator:r,value:o,valueSource:l}=t,{parseNumbers:s,preserveValueOrder:a}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},c=l==="field";if(r==="="&&!c)return{[e]:M(o,s)?U(o,{parseNumbers:"strict"}):o};let h=r.toLowerCase();switch(h){case"<":case"<=":case"=":case"!=":case">":case">=":{let d=Oo[h];return c?{$expr:{[d]:[`$${e}`,`$${o}`]}}:{[e]:{[d]:M(o,s)?U(o,{parseNumbers:"strict"}):o}}}case"contains":return c?{$where:`this.${e}.includes(this.${o})`}:{[e]:{$regex:o}};case"beginswith":return c?{$where:`this.${e}.startsWith(this.${o})`}:{[e]:{$regex:`^${o}`}};case"endswith":return c?{$where:`this.${e}.endsWith(this.${o})`}:{[e]:{$regex:`${o}$`}};case"doesnotcontain":return c?{$where:`!this.${e}.includes(this.${o})`}:{[e]:{$not:{$regex:o}}};case"doesnotbeginwith":return c?{$where:`!this.${e}.startsWith(this.${o})`}:{[e]:{$not:{$regex:`^${o}`}}};case"doesnotendwith":return c?{$where:`!this.${e}.endsWith(this.${o})`}:{[e]:{$not:{$regex:`${o}$`}}};case"null":return{[e]:null};case"notnull":return{[e]:{$ne:null}};case"in":case"notin":{let d=_(o);return c?{$where:`${h==="notin"?"!":""}[${d.map(p=>`this.${p}`).join(",")}].includes(this.${e})`}:{[e]:{[Oo[h]]:d.map(p=>M(p,s)?U(p,{parseNumbers:"strict"}):p)}}}case"between":case"notbetween":{let d=_(o);if(d.length>=2&&ke(d[0])&&ke(d[1])){let[p,b]=d,g=M(p,!0)?U(p,{parseNumbers:"strict"}):NaN,i=M(b,!0)?U(b,{parseNumbers:"strict"}):NaN,G=c||isNaN(g)?p:g,v=c||isNaN(i)?b:i;if(!a&&G===g&&v===i&&i<g){let y=i;v=g,G=y}return h==="between"?c?{$and:[{$expr:{$gte:[`$${e}`,`$${G}`]}},{$expr:{$lte:[`$${e}`,`$${v}`]}}]}:{[e]:{$gte:G,$lte:v}}:c?{$or:[{$expr:{$lt:[`$${e}`,`$${G}`]}},{$expr:{$gt:[`$${e}`,`$${v}`]}}]}:{$or:[{[e]:{$lt:G}},{[e]:{$gt:v}}]}}else return""}}return""};var Tt=(t,e)=>{let r=kt(t,e);return r?JSON.stringify(r):""};var To=t=>t.startsWith("not")||t.startsWith("doesnot"),gr=(t,e)=>e?`!(${t})`:`${t}`,Gt=(t,e)=>typeof t!="string"||!e?t:t.replaceAll("'","\\'"),It=function(t){let{field:e,operator:r,value:o,valueSource:l}=t,{escapeQuotes:s,parseNumbers:a,preserveValueOrder:c}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},h=l==="field",d=(r==="="?"==":r).toLowerCase(),p=typeof o=="number"||typeof o=="boolean"||typeof o=="bigint"||M(o,a);switch(d){case"<":case"<=":case"==":case"!=":case">":case">=":return`${e} ${d} ${h||p?ne(o):`'${Gt(o,s)}'`}`;case"contains":case"doesnotcontain":return gr(`${e} matches ${h||p?ne(o):`'${Gt(o,s)}'`}`,To(d));case"beginswith":case"doesnotbeginwith":{let b=h?`'^'.concat(${ne(o)})`:`'${typeof o=="string"&&!o.startsWith("^")||p?"^":""}${Gt(o,s)}'`;return gr(`${e} matches ${b}`,To(d))}case"endswith":case"doesnotendwith":{let b=h?`${ne(o)}.concat('$')`:`'${Gt(o,s)}${typeof o=="string"&&!o.endsWith("$")||p?"$":""}'`;return gr(`${e} matches ${b}`,To(d))}case"null":return`${e} == null`;case"notnull":return`${e} != null`;case"in":case"notin":{let b=To(d)?"!":"",g=_(o);return g.length>0?`${b}(${g.map(i=>`${e} == ${h||M(i,a)?`${ne(i)}`:`'${Gt(i,s)}'`}`).join(" or ")})`:""}case"between":case"notbetween":{let b=_(o);if(b.length>=2&&!nt(b[0])&&!nt(b[1])){let[g,i]=b,G=M(g,!0)?U(g,{parseNumbers:!0}):NaN,v=M(i,!0)?U(i,{parseNumbers:!0}):NaN,y=isNaN(G)?h?`${g}`:`'${Gt(g,s)}'`:G,f=isNaN(v)?h?`${i}`:`'${Gt(i,s)}'`:v;if(!c&&y===G&&f===v&&v<G){let m=v;f=G,y=m}return d==="between"?`(${e} >= ${y} and ${e} <= ${f})`:`(${e} < ${y} or ${e} > ${f})`}else return""}}return""};var qn=(t,e,r)=>r&&typeof t=="string"?t.replaceAll(`${e}`,`${e}${e}`):t,Je=function(t){let{operator:e,value:r,valueSource:o}=t,{escapeQuotes:l,parseNumbers:s,preserveValueOrder:a,quoteFieldNamesWith:c,quoteValuesWith:h,concatOperator:d="||",fieldIdentifierSeparator:p,wrapValueWith:b=["",""],translations:g}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=o==="field",G=e.toLowerCase(),v=h||"'",y=S=>`${b[0]}${v}${S}${v}${b[1]}`,f=S=>qn(S,v,l),m=S=>y(f(S)),T=S=>et(S,{quoteFieldNamesWith:c,fieldIdentifierSeparator:p}),C=function(){for(var S=arguments.length,k=new Array(S),E=0;E<S;E++)k[E]=arguments[E];return d.toUpperCase()==="CONCAT"?`CONCAT(${k.join(", ")})`:k.join(` ${d} `)};switch(G){case"null":case"notnull":return"";case"in":case"notin":{let S=_(r);return S.length>0?`(${S.map(k=>i?T(k):M(k,s)?`${ne(k)}`:`${m(k)}`).join(", ")})`:""}case"between":case"notbetween":{let S=_(r,{retainEmptyStrings:!0});if(S.length<2||!ke(S[0])||!ke(S[1]))return"";let[k,E]=S,u=M(k,s)?U(k,{parseNumbers:"strict"}):NaN,n=M(E,s)?U(E,{parseNumbers:"strict"}):NaN,z=isNaN(u)?i?`${k}`:k:u,W=isNaN(n)?i?`${E}`:E:n,B=[z,W];return!a&&z===u&&W===n&&n<u&&(B[0]=n,B[1]=u),(i?B.map(x=>T(x)):B.every(x=>M(x,s))?B.map(x=>U(x,{parseNumbers:"strict"})):B.map(x=>m(x))).join(` ${g?.and??"and"} `)}case"contains":case"doesnotcontain":return i?C(y("%"),T(r),y("%")):y(`%${f(r)}%`);case"beginswith":case"doesnotbeginwith":return i?C(T(r),y("%")):y(`${f(r)}%`);case"endswith":case"doesnotendwith":return i?C(y("%"),T(r)):y(`%${f(r)}`)}return typeof r=="boolean"?r?"TRUE":"FALSE":i?T(r):M(r,s)?`${ne(r)}`:`${m(r)}`};var Fn={"<":"lt","<=":"lte",">":"gt",">=":"gte"},Io=(t,e)=>t.startsWith("not")||t.startsWith("doesnot")?{bool:{must_not:e}}:e,vr=t=>t?.replace(/('|\\)/g,"\\$1"),jn={beginswith:"startsWith",doesnotbeginwith:"startsWith",doesnotcontain:"contains",doesnotendwith:"endsWith",endswith:"endsWith"},Mn=(t,e,r)=>{let o=`doc['${t}'].value.${jn[e]??e}(doc['${r}'].value)`;return e.startsWith("d")?`!${o}`:o},Zt=(t,e)=>typeof t=="boolean"?t:M(t,e)?U(t,{parseNumbers:e}):t,Bo=function(t){let{field:e,operator:r,value:o,valueSource:l}=t,{parseNumbers:s,preserveValueOrder:a}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},c=r.toLowerCase();if(l==="field"){if(_(o).some(d=>typeof d!="string"))return!1;let h=vr(e);switch(c){case"=":case"!=":case">":case">=":case"<":case"<=":{let d=c==="="?"==":c,p=vr(o);return p?{bool:{filter:{script:{script:`doc['${h}'].value ${d} doc['${p}'].value`}}}}:!1}case"in":case"notin":{let d=_(o);if(d.length>0){let p=d.map(b=>({bool:{filter:{script:{script:`doc['${h}'].value == doc['${b}'].value`}}}}));return{bool:c==="in"?{should:p}:{must_not:p}}}return!1}case"between":case"notbetween":{let d=_(o);if(d.length>=2&&d[0]&&d[1]){let p=`doc['${h}'].value >= doc['${d[0]}'].value && doc['${h}'].value <= doc['${d[1]}'].value`;return{bool:{filter:{script:{script:c==="notbetween"?`!(${p})`:p}}}}}return!1}case"contains":case"doesnotcontain":case"beginswith":case"doesnotbeginwith":case"endswith":case"doesnotendwith":{let d=vr(o);return d?{bool:{filter:{script:{script:Mn(h,c,d)}}}}:!1}}}switch(c){case"<":case"<=":case">":case">=":return{range:{[e]:{[Fn[c]]:Zt(o,s)}}};case"=":return{term:{[e]:Zt(o,s)}};case"!=":return{bool:{must_not:{term:{[e]:Zt(o,s)}}}};case"null":return{bool:{must_not:{exists:{field:e}}}};case"notnull":return{exists:{field:e}};case"in":case"notin":{let h=_(o).map(d=>Zt(d,s));if(h.length>0){let d=h.map(p=>({term:{[e]:Zt(p,s)}}));return{bool:c==="in"?{should:d}:{must_not:d}}}return!1}case"between":case"notbetween":{let h=_(o);if(h.length>=2&&ke(h[0])&&ke(h[1])){let[d,p]=h;if(M(d,!0)&&M(p,!0)){let b=U(d,{parseNumbers:!0}),g=U(p,{parseNumbers:!0});if(!a&&g<b){let i=g;p=b,d=i}else d=b,p=g}return Io(c,{range:{[e]:{gte:d,lte:p}}})}return!1}case"contains":case"doesnotcontain":return Io(c,{regexp:{[e]:{value:`.*${o}.*`}}});case"beginswith":case"doesnotbeginwith":return Io(c,{regexp:{[e]:{value:`${o}.*`}}});case"endswith":case"doesnotendwith":return Io(c,{regexp:{[e]:{value:`.*${o}`}}})}return!1};var Qo=t=>t.startsWith("not")||t.startsWith("doesnot"),eo=(t,e)=>`"${typeof t!="string"||!e?t:t.replaceAll('"','\\"')}"`,to=(t,e)=>e?`$not(${t})`:`${t}`,Ql=t=>`${t}`.replaceAll(/[$()*+.?[\\\]^{|}]/g,String.raw`\$&`).replaceAll("-",String.raw`\x2d`),Vo=function(t){let{field:e,operator:r,value:o,valueSource:l}=t,{escapeQuotes:s,parseNumbers:a=!0,preserveValueOrder:c,quoteFieldNamesWith:h=["",""],fieldIdentifierSeparator:d=""}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},p=l==="field",b=typeof o=="number"||typeof o=="boolean"||typeof o=="bigint"||M(o,a),g=G=>et(G,{quoteFieldNamesWith:h,fieldIdentifierSeparator:d}),i=r.toLowerCase();switch(i){case"<":case"<=":case"=":case"!=":case">":case">=":return`${g(e)} ${i} ${p?g(ne(o)):b?ne(o):eo(o,s)}`;case"contains":case"doesnotcontain":return to(`$contains(${g(e)}, ${p?g(ne(o)):eo(o,s)})`,Qo(i));case"beginswith":case"doesnotbeginwith":return to(p?`$substring(${g(e)}, 0, $length(${g(ne(o))})) = ${g(ne(o))}`:`$contains(${g(e)}, /^${Ql(o)}/)`,Qo(i));case"endswith":case"doesnotendwith":return to(p?`$substring(${g(e)}, $length(${g(e)}) - $length(${g(ne(o))})) = ${g(ne(o))}`:`$contains(${g(e)}, /${Ql(o)}$/)`,Qo(i));case"null":return`${g(e)} = null`;case"notnull":return`${g(e)} != null`;case"in":case"notin":{let G=_(o);return to(`${g(e)} in [${G.map(v=>p?`${g(ne(v))}`:M(v,a)?`${ne(v)}`:eo(v,s)).join(", ")}]`,Qo(i))}case"between":case"notbetween":{let G=_(o);if(G.length<2||nt(G[0])||nt(G[1]))return"";let[v,y]=G,f=M(v,!0)?U(v,{parseNumbers:!0}):NaN,m=M(y,!0)?U(y,{parseNumbers:!0}):NaN,T=isNaN(f)?p?`${v}`:v:f,C=isNaN(m)?p?`${y}`:y:m;if(!c&&T===f&&C===m&&m<f){let E=m;C=f,T=E}let S=M(v,a)&&M(y,a),k=`${g(e)} >= ${p?g(v):S?T:eo(T,s)} and ${g(e)} <= ${p?g(y):S?C:eo(C,s)}`;return i==="between"?`(${k})`:to(k,!0)}}return""};var Wn=t=>t.replace(/^(=)$/,"$1=").replace(/^notnull$/i,"!=").replace(/^null$/i,"=="),oo=(t,e)=>t.startsWith("not")||t.startsWith("doesnot")?{"!":e}:e,qo=function(t){let{field:e,operator:r,value:o,valueSource:l}=t,{parseNumbers:s,preserveValueOrder:a}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},c=l==="field",h={var:e},d=b=>c?{var:`${b}`}:M(b,s)?U(b,{parseNumbers:s}):b,p=r.toLowerCase();switch(p){case"<":case"<=":case"=":case"!=":case">":case">=":return{[Wn(p)]:[h,d(o)]};case"null":case"notnull":return{[`${p==="notnull"?"!":"="}=`]:[h,null]};case"in":case"notin":{let b=_(o).map(g=>d(g));return oo(p,{in:[h,b]})}case"between":case"notbetween":{let b=_(o);if(b.length>=2&&ke(b[0])&&ke(b[1])){let[g,i]=b;if(!c&&M(g,!0)&&M(i,!0)){let v=U(g,{parseNumbers:!0}),y=U(i,{parseNumbers:!0});if(!a&&y<v){let f=y;i=v,g=f}else g=v,i=y}else c&&(g={var:g},i={var:i});return oo(p,{"<=":[g,h,i]})}return!1}case"contains":case"doesnotcontain":{let b={in:[d(o),h]};return oo(p,b)}case"beginswith":case"doesnotbeginwith":{let b={startsWith:[h,d(o)]};return oo(p,b)}case"endswith":case"doesnotendwith":{let b={endsWith:[h,d(o)]};return oo(p,b)}}return!1};var Hn=(t,e,r)=>r&&typeof t=="string"?t.replaceAll(`${e}`,`${e}${e}`):t,Bt=function(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{escapeQuotes:r,fields:o,parseNumbers:l,quoteFieldNamesWith:s,quoteValuesWith:a,fieldIdentifierSeparator:c,translations:h}=e,d=t.valueSource==="field",p=t.operator.toLowerCase(),b=a||"'",g=C=>`${b}${C}${b}`,i=C=>Hn(C,b,r),G=C=>g(i(C)),v=C=>et(C,{quoteFieldNamesWith:s,fieldIdentifierSeparator:c}),y=h??{},f=y.or??"or",m=y.true??"true",T=y.false??"false";switch(p){case"null":case"notnull":return"";case"between":case"notbetween":{if(!d)return Je(t,e);let C=_(t.value,{retainEmptyStrings:!0}).slice(0,2).map(S=>v(me(o??[],S)?.label??S));return C.length<2||!ke(C[0])||!ke(C[1])?"":Je({...t,value:C},e)}case"in":case"notin":{let C=_(t.value);if(C.length===0)return"";let S=C.map(k=>d?v(me(o??[],k)?.label??k):M(k,l)?`${ne(k)}`:`${G(k)}`);return`${S.slice(0,-1).join(", ")}${S.length>2?",":""} ${f} ${S.at(-1)}`}}return typeof t.value=="boolean"?t.value?m:T:d?v(me(o??[],t.value)?.label??t.value):M(t.value,l)?`${ne(t.value)}`:`${G(t.value)}`};var yr={"=":["is","is the same as the value in"],"!=":["is not","is not the same as the value in"],"<":["is less than","is less than the value in"],">":["is greater than","is greater than the value in"],"<=":["is less than or equal to","is less than or equal to the value in"],">=":["is greater than or equal to","is greater than or equal to the value in"],contains:["contains","contains the value in"],beginswith:["starts with","starts with the value in"],endswith:["ends with","ends with the value in"],doesnotcontain:["does not contain","does not contain the value in"],doesnotbeginwith:["does not start with","does not start with the value in"],doesnotendwith:["does not end with","does not end with the value in"],null:"is null",notnull:"is not null",in:["is one of the values","is the same as a value in"],notin:["is not one of the values","is not the same as any value in"],between:["is between","is between the values in"],notbetween:["is not between","is not between the values in"]},_n=()=>[],Fo=function(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{valueSource:r="value"}=t,{getOperators:o=_n,operatorMap:l=yr}=e,s=new Map(Object.entries(yr));for(let[p,b]of Object.entries(l))s.set(p.toLowerCase(),b);let a=Object.fromEntries(s),{value:c,label:h}=me(Ee(o(t.field,{fieldData:e.fieldData??{name:t.field,value:t.field,label:t.field}})??[]),t.operator)??{name:t.operator,value:t.operator,label:t.operator},d=a[c]??a[c.toLowerCase()]??[h,h];return typeof d=="string"?d:d[r==="field"?1:0]},Rr=(t,e)=>{let{fieldData:r,quoteFieldNamesWith:o=["",""],fieldIdentifierSeparator:l="",quoteValuesWith:s="'",operatorProcessor:a=Fo,valueProcessor:c=Bt,concatOperator:h="||",wordOrder:d="SVO"}=e??{},p=c(t,{...e,quoteFieldNamesWith:o,fieldIdentifierSeparator:l,quoteValuesWith:s,concatOperator:h}),b=t.operator.toLowerCase();if((b==="in"||b==="notin"||b==="between"||b==="notbetween")&&!p)return"";let g=et(r?.label??t.field,{quoteFieldNamesWith:o,fieldIdentifierSeparator:l}),i=a(t,e),G={S:g,V:i,O:p};return br(d).map(v=>`${G[v]}`).join(" ").trim()};var Nt=t=>fr(t.operator).toLowerCase(),At=function(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{quoteFieldNamesWith:r=["",""],fieldIdentifierSeparator:o="",quoteValuesWith:l="'",operatorProcessor:s=Nt,valueProcessor:a=Je,concatOperator:c="||"}=e,h=a(t,{...e,quoteFieldNamesWith:r,fieldIdentifierSeparator:o,quoteValuesWith:l,concatOperator:c}),d=s(t,e),p=d.toLowerCase();return(p==="in"||p==="not in"||p==="between"||p==="not between")&&!h?"":`${et(t.field,{quoteFieldNamesWith:r,fieldIdentifierSeparator:o})} ${d} ${h}`.trim()};var ro=(t,e,r)=>{let{fieldData:o,format:l,getNextNamedParam:s,parseNumbers:a,paramPrefix:c,paramsKeepPrefix:h,numberedParams:d,quoteFieldNamesWith:p=["",""],concatOperator:b,operatorProcessor:g=Nt,valueProcessor:i=Je}=e??{},{processedParams:G=[]}=r??{},v=l==="parameterized",y=[],f={},m=z=>v?{sql:z,params:y}:{sql:z,params:f},T=i(t,{parseNumbers:a,quoteFieldNamesWith:p,concatOperator:b,fieldData:o,format:l}),C=g(t,e),S=C.toLowerCase(),[k,E]=p;if((S==="in"||S==="not in"||S==="between"||S==="not between")&&!T)return m("");if(S==="is null"||S==="is not null")return m(`${k}${t.field}${E} ${C}`);if(t.valueSource==="field")return m(`${k}${t.field}${E} ${C} ${T}`.trim());if(S==="in"||S==="not in"){let z=_(t.value);if(v){for(let B of z)y.push(M(B,a)?U(B,{parseNumbers:a}):B);return m(`${k}${t.field}${E} ${C} (${z.map((B,x)=>d?`${c}${G.length+1+z.length-(z.length-x)}`:"?").join(", ")})`)}let W=[];for(let B of z){let x=s(t.field);W.push(`${c}${x}`),f[`${h?c:""}${x}`]=M(B,a)?U(B,{parseNumbers:a}):B}return m(`${k}${t.field}${E} ${C} (${W.join(", ")})`)}else if(S==="between"||S==="not between"){let z=_(t.value,{retainEmptyStrings:!0}),[W,B]=z.slice(0,2).map(w=>M(w,a)?U(w,{parseNumbers:a}):w);if(v)return y.push(W,B),m(`${k}${t.field}${E} ${C} ${d?`${c}${G.length+1}`:"?"} and ${d?`${c}${G.length+2}`:"?"}`);let x=s(t.field),$=s(t.field);return f[`${h?c:""}${x}`]=W,f[`${h?c:""}${$}`]=B,m(`${k}${t.field}${E} ${C} ${c}${x} and ${c}${$}`)}let u=t.value;typeof t.value=="string"&&(M(t.value,a)?u=U(t.value,{parseNumbers:a}):u=/^'.*'$/g.test(T)?T.replaceAll(/(^'|'$)/g,""):T);let n="";return v?y.push(u):(n=s(t.field),f[`${h?c:""}${n}`]=u),m(`${k}${t.field}${E} ${C} ${v?d?`${c}${G.length+1}`:"?":`${c}${n}`}`.trim())};var jl=require("immer");var Gr=t=>we(t)&&typeof t.valid=="boolean",be=(t,e,r)=>{if(typeof e=="boolean")return e;if(Gr(e))return e.valid;if(typeof r=="function"&&!Q(t)){let o=r(t);if(typeof o=="boolean")return o;if(Gr(o))return o.valid}return!0};var Ar={ansi:{},sqlite:{paramsKeepPrefix:!0},oracle:{},mssql:{concatOperator:"+",quoteFieldNamesWith:["[","]"],fieldIdentifierSeparator:".",paramPrefix:"@"},mysql:{concatOperator:"CONCAT"},postgresql:{quoteFieldNamesWith:'"',numberedParams:!0,paramPrefix:"$"}},Vl={cel:Et,elasticsearch:Bo,json_without_ids:At,json:At,jsonata:Vo,jsonlogic:qo,mongodb_query:kt,mongodb:Tt,natural_language:Rr,parameterized_named:ro,parameterized:ro,spel:It,sql:At},at=t=>t.operator,Un={cel:at,elasticsearch:at,json_without_ids:at,json:at,jsonata:at,jsonlogic:at,mongodb_query:at,mongodb:at,natural_language:Fo,parameterized_named:Nt,parameterized:Nt,spel:at,sql:Nt},ql={cel:"1 == 1",mongodb:'"$and":[{"$expr":true}]',natural_language:"1 is 1",spel:"1 == 1",sql:"(1 = 1)"},Nr={$and:[{$expr:!0}]},zn={format:"json",fields:[],quoteFieldNamesWith:["",""],fieldIdentifierSeparator:"",getOperators:()=>[],paramPrefix:":",paramsKeepPrefix:!1,numberedParams:!1,parseNumbers:!1,preserveValueOrder:!1,placeholderFieldName:bo,placeholderOperatorName:go,quoteValuesWith:"'",concatOperator:"||",preset:"ansi",wordOrder:"SVO",translations:{},operatorMap:{}},Fl=t=>t==="mongodb"||t==="mongodb_query"||t==="cel"||t==="spel"||t==="jsonlogic"||t==="elasticsearch"||t==="jsonata";function Jn(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r={...zn,...Ar[e.preset??"ansi"]??null,...typeof e=="string"?{format:e}:e,...typeof e!="string"&&!e.format&&(Object.keys(Ar).includes(e.preset??"")?{format:"sql"}:null)},{fallbackExpression:o,getOperators:l,operatorProcessor:s,parseNumbers:a,placeholderFieldName:c,placeholderOperatorName:h,placeholderValueName:d,quoteFieldNamesWith:p,ruleProcessor:b,validator:g,valueProcessor:i,translations:G}=r,v=x=>!!yt({parseNumbers:a,inputType:x}),y=r.format.toLowerCase(),f=typeof s=="function"?s:Un[y]??at,m=typeof i=="function"?hr(i)?x=>i(x.field,x.operator,x.value,x.valueSource):i:y==="natural_language"?Bt:Fl(y)?b??Vl[y]:Je,T=(typeof b=="function"?b:null)??(Fl(y)&&typeof b!="function"&&i?m:null)??Vl[y]??At,C=Eo(p),S=Ee(r.fields),k=(x,$)=>Ee(l(x,$)??[]),E=o??ql[y]??ql.sql,u={...r,fallbackExpression:E,fields:S,format:y,getOperators:k,quoteFieldNamesWith:C,operatorProcessor:f,ruleProcessor:T,valueProcessor:m};if(y==="json"||y==="json_without_ids"){let x=a?(0,jl.produce)(t,$=>Lo($,u)):t;return y==="json_without_ids"?JSON.stringify(x,($,w)=>$==="id"||$==="path"?void 0:w):JSON.stringify(x,null,2)}let n={};if(typeof g=="function"){let x=g(t);if(typeof x=="boolean"){if(x===!1)return y==="parameterized"?{sql:E,params:[]}:y==="parameterized_named"?{sql:E,params:{}}:y==="mongodb"?`{${E}}`:y==="mongodb_query"?Nr:y==="jsonlogic"?!1:y==="elasticsearch"?{}:E}else n=x}let z={},W=pr(S);for(let x of W)typeof x.validator=="function"&&(z[x.value??x.name]=x.validator);let B=x=>{let $,w;if(x.id&&($=n[x.id]),W.length>0){let O=W.filter(L=>L.name===x.field);if(O.length>0){let L=O[0];typeof L.validator=="function"&&(w=L.validator)}}return[$,w]};if(y==="sql"){let x=($,w)=>{if(!be($,n[$.id??""]))return w?E:"";let O=$.rules.map(L=>{if(typeof L=="string")return L;if(Q(L))return x(L,$.rules.length===1);let[A,N]=B(L);if(!be(L,A,N)||L.field===c||L.operator===h||d!==void 0&&L.value===d)return"";let D=(L.valueSource??"value")==="value",R=me(S,L.field);return T(L,{...u,parseNumbers:v(R?.inputType),escapeQuotes:D,fieldData:R})}).filter(Boolean);return O.length===0?E:`${$.not?"NOT ":""}(${O.join(ue($)?` ${$.combinator} `:" ")})`};return x(t,!0)}if(y==="parameterized"||y==="parameterized_named"){let x=y==="parameterized",$=[],w={},O=new Map,L=D=>{O.has(D)||O.set(D,new Set);let R=`${D}_${O.get(D).size+1}`;return O.get(D).add(R),R},A=D=>{let[R,V]=B(D);if(!be(D,R,V)||D.field===c||D.operator===h||d!==void 0&&D.value===d)return"";let J=me(S,D.field),xe=Object.fromEntries([...O.entries()].map(Oe=>{let[He,_e]=Oe;return[He,[..._e]]})),H=T(D,{...u,parseNumbers:v(J?.inputType),getNextNamedParam:L,fieldParamNames:xe,fieldData:J},{processedParams:$});if(!we(H))return"";let{sql:$e,params:Ce}=H;if(typeof $e!="string"||!$e)return"";if(y==="parameterized"&&Array.isArray(Ce))$.push(...Ce);else if(y==="parameterized_named"&&we(Ce)){Object.assign(w,Ce);for(let Oe of Object.keys(Ce))O.get(D.field)?.add(Oe)}return $e},N=(D,R)=>{if(!be(D,n[D.id??""]))return R?E:"";let V=D.rules.map(J=>typeof J=="string"?J:Q(J)?N(J,D.rules.length===1):A(J)).filter(Boolean);return V.length===0?E:`${D.not?"NOT ":""}(${V.join(ue(D)?` ${D.combinator} `:" ")})`};return x?{sql:N(t,!0),params:$}:{sql:N(t,!0),params:w}}if(y==="mongodb"){let x=(O,L)=>{if(!be(O,n[O.id??""]))return L?E:"";let A=`"$${O.combinator.toLowerCase()}"`,N=!1,D=O.rules.map(R=>{if(Q(R)){let H=x(R);return H?(N=!0,/^\{.+\}$/.test(H)?H:`{${H}}`):""}let[V,J]=B(R);if(!be(R,V,J)||R.field===c||R.operator===h||d!==void 0&&R.value===d)return"";let xe=me(S,R.field);return T(R,{...u,parseNumbers:v(xe?.inputType),fieldData:xe})}).filter(Boolean);return D.length>0?D.length===1&&!N?D[0]:`${A}:[${D.join(",")}]`:E},$=ue(t)?t:ut(t),w=x($,!0);return/^\{.+\}$/.test(w)?w:`{${w}}`}if(y==="mongodb_query"){let x=($,w)=>{if(!be($,n[$.id??""]))return w?Nr:!1;let O=`$${$.combinator.toLowerCase()}`,L=!1,A=$.rules.map(N=>{if(Q(N)){let J=x(N);return J?(L=!0,J):!1}let[D,R]=B(N);if(!be(N,D,R)||N.field===c||N.operator===h||d!==void 0&&N.value===d)return!1;let V=me(S,N.field);return T(N,{...u,parseNumbers:v(V?.inputType),fieldData:V})}).filter(Boolean);return A.length>0?A.length===1&&!L?A[0]:{[O]:A}:Nr};return x(ut(t),!0)}if(y==="cel"){let x=($,w)=>{if(!be($,n[$.id??""]))return w?E:"";let O=$.rules.map(N=>{if(typeof N=="string")return Po[N];if(Q(N))return x(N);let[D,R]=B(N);if(!be(N,D,R)||N.field===c||N.operator===h||d!==void 0&&N.value===d)return"";let V=me(S,N.field);return T(N,{...u,parseNumbers:v(V?.inputType),escapeQuotes:(N.valueSource??"value")==="value",fieldData:V})}).filter(Boolean).join(ue($)?` ${Po[$.combinator]} `:" "),[L,A]=$.not||!w?[`${$.not?"!":""}(`,")"]:["",""];return O?`${L}${O}${A}`:E};return x(t,!0)}if(y==="spel"){let x=($,w)=>{if(!be($,n[$.id??""]))return w?E:"";let O=$.rules.map(N=>{if(typeof N=="string")return N;if(Q(N))return x(N);let[D,R]=B(N);if(!be(N,D,R)||N.field===c||N.operator===h||d!==void 0&&N.value===d)return"";let V=me(S,N.field);return T(N,{...u,parseNumbers:v(V?.inputType),escapeQuotes:(N.valueSource??"value")==="value",fieldData:V})}).filter(Boolean).join(ue($)?` ${$.combinator} `:" "),[L,A]=$.not||!w?[`${$.not?"!":""}(`,")"]:["",""];return O?`${L}${O}${A}`:E};return x(t,!0)}if(y==="jsonata"){let x=($,w)=>{if(!be($,n[$.id??""]))return w?E:"";let O=$.rules.map(N=>{if(typeof N=="string")return N;if(Q(N))return x(N);let[D,R]=B(N);if(!be(N,D,R)||N.field===c||N.operator===h||d!==void 0&&N.value===d)return"";let V=me(S,N.field);return T(N,{...u,parseNumbers:v(V?.inputType),escapeQuotes:(N.valueSource??"value")==="value",fieldData:V})}).filter(Boolean).join(ue($)?` ${$.combinator} `:" "),[L,A]=$.not||!w?[`${$.not?"$not":""}(`,")"]:["",""];return O?`${L}${O}${A}`:E};return x(t,!0)}if(y==="jsonlogic"){let x=ue(t)?t:ut(t),$=(w,O)=>{if(!be(w,n[w.id??""]))return!1;let L=w.rules.map(N=>{if(Q(N))return $(N);let[D,R]=B(N);if(!be(N,D,R)||N.field===c||N.operator===h||d!==void 0&&N.value===d)return!1;let V=me(S,N.field);return T(N,{...u,parseNumbers:v(V?.inputType),fieldData:V})}).filter(Boolean);if(L.length===0)return!1;let A={[w.combinator]:L};return w.not?{"!":A}:A};return $(x,!0)}if(y==="elasticsearch"){let x=ue(t)?t:ut(t),$=O=>{if(!be(O,n[O.id??""]))return!1;let L=O.rules.map(A=>{if(Q(A))return $(A);let[N,D]=B(A);if(!be(A,N,D)||A.field===c||A.operator===h||d!==void 0&&A.value===d)return!1;let R=me(S,A.field);return T(A,{...u,parseNumbers:v(R?.inputType),fieldData:R})}).filter(Boolean);return L.length===0?!1:{bool:O.not?{must_not:/^or$/i.test(O.combinator)?{bool:{should:L}}:L}:{[/^or$/i.test(O.combinator)?"should":"must"]:L}}},w=$(x);return w===!1?{}:w}if(y==="natural_language"){let x=($,w)=>{if(!be($,n[$.id??""]))return w?E:"";let O=$;We($)&&$.rules.some(H=>typeof H=="string"&&H.toLowerCase()==="xor")&&(O=ut($));let L=O.rules.map(H=>{if(typeof H=="string")return`, ${G[H]??H} `;if(Q(H))return x(H,O.rules.length===1&&!(O.not||/^xor$/i.test(O.combinator??"")));let[$e,Ce]=B(H);if(!be(H,$e,Ce)||H.field===c||H.operator===h||d!==void 0&&H.value===d)return"";let Oe=(H.valueSource??"value")==="value",He=me(S,H.field);return T(H,{...u,parseNumbers:v(He?.inputType),escapeQuotes:Oe,fieldData:He})});if(L.length===0)return E;let A=(O.combinator??"").toLowerCase()==="xor",N=A?O.combinator.slice(1):O.combinator,D=O.not||!w||A&&L.length>1,[R,V]=["groupPrefix","groupSuffix"].map(H=>O.not?A?Lt(H,G,["not","xor"]):Lt(H,G,["not"]):A?Lt(H,G,["xor"]):Lt(H,G)),J=D?`${R} (`.trim():"",xe=D?`) ${V}`.trim():"";return`${J}${L.filter(Boolean).join(ue(O)?`, ${G[N]??N} `:"")}${xe}`};return x(t,!0)}