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 • 66.4 kB
JavaScript
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`@react-querybuilder/core`),l=require(`react`);l=s(l);let u=require(`@reduxjs/toolkit`),d=require(`react-redux`),f=require(`immer`);const p=e=>l.createElement(`button`,{type:`button`,"data-testid":e.testID,disabled:e.disabled&&!e.disabledTranslation,className:e.className,title:e.disabledTranslation&&e.disabled?e.disabledTranslation.title:e.title,onClick:t=>e.handleOnClick(t)},e.disabledTranslation&&e.disabled?e.disabledTranslation.label:e.label),m=(0,l.forwardRef)((e,t)=>l.createElement(`span`,{"data-testid":e.testID,ref:t,className:e.className,title:e.title},e.label)),h=e=>{let{component:t,...n}=e,r=(0,c.clsx)(n.schema.suppressStandardClassnames||c.standardClassnames.betweenRules,n.schema.classNames.betweenRules);return l.createElement(`div`,{className:r,"data-testid":c.TestID.inlineCombinator},l.createElement(t,{...n,testID:c.TestID.combinators}))},g={name:``,value:``,label:``},_=e=>[`atleast`,`atmost`,`exactly`].includes((0,c.lc)(e)??``),v=[],ee=e=>{let{match:t,options:n,title:r,className:i,disabled:a,testID:o,schema:s,selectorComponent:c=e.schema.controls.valueSelector,numericEditorComponent:u=e.schema.controls.valueEditor}=e,{thresholdNum:d,thresholdRule:f,thresholdSchema:p,handleChangeMode:m,handleChangeThreshold:h}=y(e);return l.createElement(l.Fragment,null,l.createElement(c,{schema:s,testID:o,className:i,title:r,handleOnChange:m,disabled:a,value:t.mode,options:n,multiple:!1,listsAsArrays:!1,path:v,level:0}),_(t.mode)&&l.createElement(u,{skipHook:!0,testID:o,inputType:`number`,title:r,className:i,disabled:a,handleOnChange:h,field:``,operator:``,value:d,valueSource:`value`,fieldData:g,schema:p,path:v,level:0,rule:f}))},y=e=>{let{match:t,handleOnChange:n}=e,r=l.useMemo(()=>typeof t.threshold==`number`?Math.max(0,t.threshold):1,[t.threshold]);return{thresholdNum:r,thresholdRule:l.useMemo(()=>({field:``,operator:`=`,value:r}),[r]),thresholdSchema:l.useMemo(()=>({...e.schema,parseNumbers:!0}),[e.schema]),handleChangeMode:(0,l.useCallback)(e=>{_(e)&&typeof t.threshold!=`number`?n({...t,mode:e,threshold:1}):n({...t,mode:e})},[n,t]),handleChangeThreshold:(0,l.useCallback)(e=>{n({...t,threshold:(0,c.parseNumber)(e,{parseNumbers:!0})})},[n,t])}},b=e=>{let t=l.useId();return l.createElement(`label`,{"data-testid":e.testID,className:e.className,title:e.title,htmlFor:t},l.createElement(`input`,{id:t,type:`checkbox`,onChange:t=>e.handleOnChange(t.target.checked),checked:!!e.checked,disabled:e.disabled}),e.label)},x={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.`,errorDeprecatedDebugImport:`Importing from react-querybuilder/debug is deprecated. To enable Redux DevTools for React Query Builder's internal store, set globalThis.__RQB_DEVTOOLS__ = true.`},te={},S=(0,u.createSlice)({name:`queries`,initialState:te,reducers:{setQueryState:(e,{payload:{qbId:t,query:n}})=>{e[t]=n}},selectors:{getQuerySelectorById:(e,t)=>e[t]}}),C=l.createContext(null),ne={[x.errorInvalidIndependentCombinatorsProp]:!1,[x.errorUnnecessaryIndependentCombinatorsProp]:!1,[x.errorDeprecatedRuleGroupProps]:!1,[x.errorDeprecatedRuleProps]:!1,[x.errorBothQueryDefaultQuery]:!1,[x.errorUncontrolledToControlled]:!1,[x.errorControlledToUncontrolled]:!1,[x.errorEnabledDndWithoutReactDnD]:!1,[x.errorDeprecatedDebugImport]:!1},w=(0,u.createSlice)({name:`warnings`,initialState:ne,reducers:{rqbWarn:(e,{payload:t})=>{e[t]||(console.error(t),e[t]=!0)}}}),re=(0,u.combineSlices)(S,w).withLazyLoadedSlices(),T=e=>(0,d.createDispatchHook)(e),ie=e=>(0,d.createStoreHook)(e),E=e=>(0,d.createSelectorHook)(e),D=e=>({useRQB_INTERNAL_QueryBuilderDispatch:T(e),useRQB_INTERNAL_QueryBuilderStore:ie(e),useRQB_INTERNAL_QueryBuilderSelector:E(e)}),O=({payload:e,onQueryChange:t})=>n=>{n(S.actions.setQueryState(e)),typeof t==`function`&&t(e.query)},k=D(C),A=k.useRQB_INTERNAL_QueryBuilderDispatch,j=k.useRQB_INTERNAL_QueryBuilderStore,M=k.useRQB_INTERNAL_QueryBuilderSelector,{rqbWarn:N}=w.actions,P=e=>t=>{setTimeout(()=>t(N(e)))},F={queries:S.getInitialState(),warnings:w.getInitialState()},I={reducer:re,preloadedState:F,middleware:e=>e({serializableCheck:{ignoredActions:[S.actions.setQueryState.type],ignoredPaths:[/^queries\b.*\.rules\.\d+\.value$/]}})},L=e=>{let t=(0,l.useRef)({value:e,prev:null}),n=t.current.value;return e!==n&&(t.current.prev=n,t.current.value=e),t.current.prev},R=e=>{let t=A(),{defaultQuery:n,queryProp:r}=e,i=L(!!r);process.env.NODE_ENV!==`production`&&(r&&n?t(P(x.errorBothQueryDefaultQuery)):i===!0&&!r&&n?t(P(x.errorControlledToUncontrolled)):i===!1&&r&&!n&&t(P(x.errorUncontrolledToControlled)))};function ae(e,t,n){let r=A();process.env.NODE_ENV!==`production`&&t&&(e===`independentCombinators`&&(n===`invalid`&&r(P(x.errorInvalidIndependentCombinatorsProp)),n===`unnecessary`&&r(P(x.errorUnnecessaryIndependentCombinatorsProp))),e===`rule`&&r(P(x.errorDeprecatedRuleProps)),e===`ruleGroup`&&r(P(x.errorDeprecatedRuleGroupProps)))}const z=e=>{let{optionList:t,optionsMap:n,defaultOption:r}=(0,l.useMemo)(()=>(0,c.prepareOptionList)({placeholder:e.translations.fields,optionList:e.fields,autoSelectOption:e.autoSelectField,baseOption:e.baseField}),[e.autoSelectField,e.baseField,e.fields,e.translations.fields]);return{fields:t,fieldMap:n,defaultField:r}},B=e=>{let t=(0,u.configureStore)({...I,devTools:e?{name:`React Query Builder`}:!1});return t.addSlice=e=>{re.inject(e),t.dispatch({type:crypto.randomUUID().slice(0,8),meta:`Initializing state for slice "${e.name}"`})},t};let oe=null;function V(e){return oe||=B(e||globalThis?.__RQB_DEVTOOLS__),oe}const se=e=>V().addSlice(e),H=e=>t=>S.selectors.getQuerySelectorById({queries:t.queries},e),ce=(e,t)=>{let n=l.useContext(G);return M(e,t)??n?.initialQuery},le=e=>{let t=l.useContext(G);return M(H(e?.schema.qbId??t.qbId??``))??t?.initialQuery},ue={},de={},fe=[],pe={},me=()=>null,he=()=>``,U=()=>!0,W=(...e)=>{console.log(...e)};function ge(e,t){let{query:n,defaultQuery:r,getValueEditorSeparator:i=me,getRuleClassname:a=he,getRuleGroupClassname:o=he,onAddRule:s=U,onAddGroup:u=U,onMoveRule:d=U,onMoveGroup:f=U,onGroupRule:p=U,onGroupGroup:m=U,onRemove:h=U,onQueryChange:g,showCombinatorsBetweenRules:_=!1,showNotToggle:v=!1,showShiftActions:ee=!1,showCloneButtons:y=!1,showLockButtons:b=!1,showMuteButtons:x=!1,suppressStandardClassnames:te=!1,resetOnFieldChange:S=!0,resetOnOperatorChange:C=!1,autoSelectField:ne=!0,autoSelectOperator:w=!0,autoSelectValue:re=!0,addRuleToNewGroups:T=!1,listsAsArrays:ie=!1,parseNumbers:E=!1,disabled:D=!1,validator:k,onLog:M=W,idGenerator:N,accessibleDescriptionGenerator:P=c.generateAccessibleDescription}=e,{qbId:F,rqbContext:I,fields:L,fieldMap:z,combinators:B,getOperatorsMain:oe,getMatchModesMain:V,getRuleDefaultOperator:se,getSubQueryBuilderPropsMain:le,getValueEditorTypeMain:ge,getValueSourcesMain:_e,getValuesMain:ve,getRuleDefaultValue:ye,getInputTypeMain:G,createRule:be,createRuleGroup:xe}=t,{controlClassnames:K,controlElements:Se,debugMode:Ce,enableDragAndDrop:we,enableMountQueryChange:Te,translations:Ee}=I,De=!!_,Oe=!!v,ke=!!ee,Ae=!!y,je=!!b,Me=!!x,Ne=!!S,Pe=!!C,Fe=!!ne,Ie=!!w,Le=!!re,Re=!!T,ze=!!ie,Be=!!te,Ve=(e.maxLevels??0)>0?Number(e.maxLevels):1/0,q=(0,l.useCallback)((...e)=>{Ce&&M(...e)},[Ce,M]);R({defaultQuery:r,queryProp:n});let J=j(),He=A(),Y=(0,l.useMemo)(()=>H(F),[F]),Ue=ce(Y),We=(0,l.useCallback)(()=>Y(J.getState()),[J,Y]),Ge=(0,l.useMemo)(()=>xe(),[xe]),Ke=n??Ue??r??Ge,X=Ke.id?Ke:(0,c.prepareRuleGroup)(Ke,{idGenerator:N}),[qe]=(0,l.useState)(X),Je=(0,l.useMemo)(()=>({...I,initialQuery:qe}),[I,qe]);(0,l.useEffect)(()=>{n&&!Object.is(n,Ue)&&He(O({payload:{qbId:F,query:n},onQueryChange:void 0}))},[n,F,Ue,He]);let Z=(0,l.useMemo)(()=>(0,c.isRuleGroupTypeIC)(X),[X]),Ye=!!e.independentCombinators&&!Z;ae(`independentCombinators`,Ye||!Ye&&(e.independentCombinators??`not present`)!==`not present`,Ye?`invalid`:`unnecessary`);let Xe=(0,l.useRef)(!1);(0,l.useEffect)(()=>{Xe.current||(Xe.current=!0,He(O({payload:{qbId:F,query:X},onQueryChange:Te&&typeof g==`function`?g:void 0})))},[Te,g,F,He,X]);let Q=(0,l.useCallback)(e=>{He(O({payload:{qbId:F,query:e},onQueryChange:g}))},[g,F,He]),Ze=Array.isArray(D)&&D||fe,$=D===!0,Qe=X.disabled||Ze.some(e=>e.length===0),$e=(0,l.useCallback)((e,t,n)=>{let r=H(F)(J.getState());if(!r)return;if((0,c.pathIsDisabled)(t,r)||$){q({qbId:F,type:c.LogType.parentPathDisabled,rule:e,parentPath:t,query:r});return}let i=s(e,t,r,n);if(!i){q({qbId:F,type:c.LogType.onAddRuleFalse,rule:e,parentPath:t,query:r});return}let a=i===!0?e:i,o=(0,c.add)(r,a,t,{combinators:B,combinatorPreceding:a.combinatorPreceding??void 0,idGenerator:N});q({qbId:F,type:c.LogType.add,query:r,newQuery:o,newRule:a,parentPath:t}),Q(o)},[B,Q,N,q,s,F,J,$]),et=(0,l.useCallback)((e,t,n)=>{if(t.length>=Ve)return;let r=H(F)(J.getState());if(!r)return;if((0,c.pathIsDisabled)(t,r)||$){q({qbId:F,type:c.LogType.parentPathDisabled,ruleGroup:e,parentPath:t,query:r});return}let i=u(e,t,r,n);if(!i){q({qbId:F,type:c.LogType.onAddGroupFalse,ruleGroup:e,parentPath:t,query:r});return}let a=i===!0?e:i,o=(0,c.add)(r,a,t,{combinators:B,combinatorPreceding:a.combinatorPreceding??void 0,idGenerator:N});q({qbId:F,type:c.LogType.add,query:r,newQuery:o,newGroup:a,parentPath:t}),Q(o)},[B,Q,N,q,Ve,u,F,J,$]),tt=(0,l.useCallback)((e,t,n)=>{let r=H(F)(J.getState());if(!r)return;if((0,c.pathIsDisabled)(n,r)&&e!==`disabled`||$){q({qbId:F,type:c.LogType.pathDisabled,path:n,prop:e,value:t,query:r});return}let i=(0,c.update)(r,e,t,n,{resetOnFieldChange:Ne,resetOnOperatorChange:Pe,getRuleDefaultOperator:se,getValueSources:_e,getRuleDefaultValue:ye,getMatchModes:V});q({qbId:F,type:c.LogType.update,query:r,newQuery:i,prop:e,value:t,path:n}),Q(i)},[Q,V,se,ye,_e,q,F,J,$,Ne,Pe]),nt=(0,l.useCallback)((e,t)=>{let n=H(F)(J.getState());if(!n)return;if((0,c.pathIsDisabled)(e,n)||$){q({qbId:F,type:c.LogType.pathDisabled,path:e,query:n});return}let r=(0,c.findPath)(e,n);if(r)if(h(r,e,n,t)){let t=(0,c.remove)(n,e);q({qbId:F,type:c.LogType.remove,query:n,newQuery:t,path:e,ruleOrGroup:r}),Q(t)}else q({qbId:F,type:c.LogType.onRemoveFalse,ruleOrGroup:r,path:e,query:n})},[Q,q,h,F,J,$]),rt=(0,l.useCallback)((e,t,n,r)=>{let i=H(F)(J.getState());if(!i)return;if((0,c.pathIsDisabled)(e,i)||$){q({qbId:F,type:c.LogType.pathDisabled,oldPath:e,newPath:t,query:i});return}let a=(0,c.move)(i,e,t,{clone:n,combinators:B,idGenerator:N}),o=(0,c.findPath)(e,i),s=(0,c.isRuleGroup)(o),l=(s?f:d)(o,e,t,i,a,{clone:n,combinators:B},r);if(!l){q({qbId:F,type:s?c.LogType.onMoveGroupFalse:c.LogType.onMoveRuleFalse,ruleOrGroup:o,oldPath:e,newPath:t,clone:n,query:i,nextQuery:a});return}let u=(0,c.isRuleGroup)(l)?l:a;q({qbId:F,type:c.LogType.move,query:i,newQuery:u,oldPath:e,newPath:t,clone:n}),Q(u)},[B,Q,N,q,f,d,F,J,$]),it=(0,l.useCallback)((e,t,n,r)=>{let i=H(F)(J.getState());if(!i)return;if((0,c.pathIsDisabled)(e,i)||$){q({qbId:F,type:c.LogType.pathDisabled,sourcePath:e,targetPath:t,query:i});return}let a=(0,c.group)(i,e,t,{clone:n,combinators:B,idGenerator:N}),o=(0,c.findPath)(e,i),s=(0,c.isRuleGroup)(o),l=(s?m:p)(o,e,t,i,a,{clone:n,combinators:B},r);if(!l){q({qbId:F,type:s?c.LogType.onGroupGroupFalse:c.LogType.onGroupRuleFalse,ruleOrGroup:o,sourcePath:e,targetPath:t,clone:n,query:i,nextQuery:a});return}let u=(0,c.isRuleGroup)(l)?l:a;q({qbId:F,type:c.LogType.group,query:i,newQuery:u,sourcePath:e,targetPath:t,clone:n}),Q(u)},[B,Q,N,q,m,p,F,J,$]),{validationResult:at,validationMap:ot}=(0,l.useMemo)(()=>{let e=typeof k==`function`&&X?k(X):ue;return{validationResult:e,validationMap:typeof e==`boolean`?de:e}},[X,k]),st=we?`enabled`:`disabled`,ct=Z||De?`enabled`:`disabled`,lt=(0,l.useMemo)(()=>typeof X.combinator==`string`?{combinator:X.combinator}:pe,[X.combinator]),ut=(0,l.useMemo)(()=>(0,c.clsx)(Be||c.standardClassnames.queryBuilder,(0,c.clsx)(K.queryBuilder),$&&K.disabled,typeof at==`boolean`&&at&&K.valid,typeof at==`boolean`&&!at&&K.invalid,Be||{[c.standardClassnames.disabled]:$,[c.standardClassnames.valid]:typeof at==`boolean`&&at,[c.standardClassnames.invalid]:typeof at==`boolean`&&!at}),[K.disabled,K.invalid,K.queryBuilder,K.valid,$,Be,at]),dt=(0,l.useCallback)(e=>xe(e??Z),[xe,Z]),ft=(0,l.useMemo)(()=>({addRuleToNewGroups:Re,accessibleDescriptionGenerator:P,autoSelectField:Fe,autoSelectOperator:Ie,autoSelectValue:Le,classNames:K,combinators:B,controls:Se,createRule:be,createRuleGroup:dt,disabledPaths:Ze,enableDragAndDrop:we,fieldMap:z,fields:L,dispatchQuery:Q,getQuery:We,getInputType:G,getOperators:oe,getMatchModes:V,getRuleClassname:a,getRuleGroupClassname:o,getSubQueryBuilderProps:le,getValueEditorSeparator:i,getValueEditorType:ge,getValues:ve,getValueSources:_e,independentCombinators:Z,listsAsArrays:ze,maxLevels:Ve,parseNumbers:E,qbId:F,showCloneButtons:Ae,showCombinatorsBetweenRules:De,showLockButtons:je,showMuteButtons:Me,showNotToggle:Oe,showShiftActions:ke,suppressStandardClassnames:Be,validationMap:ot}),[P,Re,Fe,Ie,Le,B,K,Se,be,dt,Ze,Q,we,z,L,G,oe,V,We,a,o,le,i,ge,ve,_e,Z,ze,Ve,E,F,Ae,De,je,Me,Oe,ke,Be,ot]);return{actions:(0,l.useMemo)(()=>({moveRule:rt,onGroupAdd:et,onGroupRemove:nt,onPropChange:tt,onRuleAdd:$e,onRuleRemove:nt,groupRule:it}),[it,rt,et,tt,$e,nt]),rootGroup:X,rootGroupDisabled:Qe,queryDisabled:$,rqbContext:Je,schema:ft,translations:Ee,wrapperClassName:ut,dndEnabledAttr:st,inlineCombinatorsAttr:ct,combinatorPropObject:lt}}const _e=(e,t,n)=>{let r=(0,c.getFirstOption)(e);if(t.operator===`between`||t.operator===`notBetween`){let e=[r,r];return n?e:(0,c.joinWith)(e.map(e=>e??``),`,`)}return r},ve=e=>{let[t]=(0,l.useState)(c.generateID),{fields:n,baseField:r,operators:i,baseOperator:a,combinators:o,baseCombinator:s,translations:u,enableMountQueryChange:d=!0,controlClassnames:f,controlElements:p,getDefaultField:m,getDefaultOperator:h,getDefaultValue:g,getMatchModes:_,getOperators:v,getSubQueryBuilderProps:ee,getValueEditorType:y,getValueSources:b,getInputType:x,getValues:te,autoSelectField:S=!0,autoSelectOperator:C=!0,autoSelectValue:ne=!0,addRuleToNewGroups:w=!1,enableDragAndDrop:re,listsAsArrays:T=!1,debugMode:ie=!1,idGenerator:E=c.generateID}=e,[D]=(0,l.useState)(e.query??e.defaultQuery),O=Re({controlClassnames:f,controlElements:p,debugMode:ie,enableDragAndDrop:re,enableMountQueryChange:d,translations:u,initialQuery:D,qbId:t,finalize:!0}),{translations:k}=O,{fields:A,fieldMap:j}=z({fields:n,baseField:r,autoSelectField:S,translations:k}),{optionList:M}=(0,l.useMemo)(()=>(0,c.prepareOptionList)({optionList:o??c.defaultCombinators,labelMap:c.defaultCombinatorLabelMap,baseOption:s,autoSelectOption:!0}),[s,o]),{optionList:N}=(0,l.useMemo)(()=>(0,c.prepareOptionList)({optionList:i??c.defaultOperators,placeholder:k.operators,labelMap:c.defaultOperatorLabelMap,baseOption:a,autoSelectOption:C}),[C,a,i,k.operators]),P=(0,l.useCallback)((e,{fieldData:t})=>(0,c.prepareOptionList)({optionList:t?.operators??v?.(e,{fieldData:t})??N,placeholder:k.operators,baseOption:a,labelMap:c.defaultOperatorLabelMap,autoSelectOption:C}).optionList,[C,a,v,N,k.operators]),F=(0,l.useCallback)(e=>{let t=j[e];return t?.defaultOperator?t.defaultOperator:h?typeof h==`function`?h(e,{fieldData:t}):h:(0,c.getFirstOption)(P(e,{fieldData:t})??[])??``},[j,h,P]),I=(0,l.useCallback)((e,t,{fieldData:n})=>n.valueEditorType?typeof n.valueEditorType==`function`?n.valueEditorType(t):n.valueEditorType:y?.(e,t,{fieldData:n})??`text`,[y]),L=(0,l.useCallback)((e,t,n)=>(0,c.getValueSourcesUtil)(j[e],t,b),[j,b]),R=(0,l.useCallback)((e,t)=>(0,c.getMatchModesUtil)(j[e],_),[j,_]),ae=(0,l.useCallback)((e,t)=>ee?.(e,t)??{},[ee]),B=(0,l.useCallback)((e,t,{fieldData:n})=>(0,c.prepareOptionList)({optionList:n?.values??te?.(e,t,{fieldData:n})??[],placeholder:k.values,autoSelectOption:ne}).optionList,[ne,te,k.values]),oe=(0,l.useCallback)(e=>{let t=j[e.field]??{};if(t?.defaultValue!==void 0&&t.defaultValue!==null)return t.defaultValue;if(g)return g(e,{fieldData:t});let n=``,r=B(e.field,e.operator,{fieldData:t});if(e.valueSource===`field`){let r=(0,c.filterFieldsByComparator)(t,A,e.operator);n=r.length>0?_e(r,e,T):``}else if(r.length>0){let i=I(e.field,e.operator,{fieldData:t});i===`multiselect`?n=T?[]:``:(i===`select`||i===`radio`)&&(n=_e(r,e,T))}else I(e.field,e.operator,{fieldData:t})===`checkbox`&&(n=!1);return n},[j,A,g,I,B,T]),V=(0,l.useCallback)((e,t,{fieldData:n})=>{if(x){let r=x(e,t,{fieldData:n});if(r)return r}return`text`},[x]),se=(0,l.useCallback)(()=>{let e=``,t=A;if(t?.length>0&&t[0]){let n=(0,c.getFirstOption)(t);n&&(e=n)}if(m)if(typeof m==`function`){let n=m(t);n&&(e=n)}else e=m;let n=F(e),r=(0,c.getFirstOption)(L(e,n,{fieldData:(0,c.getOption)(t,e)}))??`value`,i=(0,c.getFirstOption)(R(e,{fieldData:(0,c.getOption)(t,e)})),a={id:E(),field:e,operator:n,valueSource:r,value:``,...i?{match:{mode:i,threshold:1}}:null},o=oe(a);return{...a,value:o}},[A,m,R,F,oe,L,E]);return{qbId:t,rqbContext:O,fields:A,fieldMap:j,combinators:M,getMatchModesMain:R,getOperatorsMain:P,getRuleDefaultOperator:F,getSubQueryBuilderPropsMain:ae,getValueEditorTypeMain:I,getValueSourcesMain:L,getValuesMain:B,getRuleDefaultValue:oe,getInputTypeMain:V,createRule:se,createRuleGroup:(0,l.useCallback)(e=>e?{id:E(),rules:w?[se()]:[],not:!1}:{id:E(),rules:w?[se()]:[],combinator:(0,c.getFirstOption)(M)??``,not:!1},[w,M,se,E])}},ye=e=>ge(e,ve(e)),G=(0,l.createContext)({}),be=l.memo(function(e){let t=Se(e),{schema:{controls:{ruleGroupBodyElements:n,ruleGroupHeaderElements:r}}}=t,i=Y(t.addRule),a=Y(t.addGroup),o=Y(t.cloneGroup),s=Y(t.toggleLockGroup),u=Y(t.toggleMuteGroup),d=Y(t.removeGroup),f=Y(t.shiftGroupUp),p=Y(t.shiftGroupDown),m=(0,l.useMemo)(()=>({addRule:i,addGroup:a,cloneGroup:o,toggleLockGroup:s,toggleMuteGroup:u,removeGroup:d,shiftGroupUp:f,shiftGroupDown:p}),[i,a,o,s,u,d,f,p]);return l.createElement(`div`,{ref:t.previewRef,title:t.accessibleDescription,className:t.outerClassName,"data-testid":c.TestID.ruleGroup,"data-dragmonitorid":t.dragMonitorId,"data-dropmonitorid":t.dropMonitorId,"data-rule-group-id":t.id,"data-level":t.path.length,"data-path":JSON.stringify(t.path)},l.createElement(`div`,{ref:t.dropRef,className:t.classNames.header},l.createElement(r,{...t,...m})),l.createElement(`div`,{className:t.classNames.body},l.createElement(n,{...t,...m})))}),xe=l.memo(function(e){let{schema:{controls:{shiftActions:t,dragHandle:n,combinatorSelector:r,notToggle:i,addRuleAction:a,addGroupAction:o,cloneGroupAction:s,lockGroupAction:u,muteGroupAction:d,removeGroupAction:f}}}=e,p=(0,l.useMemo)(()=>({level:e.path.length,path:e.path,disabled:e.disabled,context:e.context,validation:e.validationResult,schema:e.schema}),[e.path,e.disabled,e.context,e.validationResult,e.schema]),m=(0,l.useMemo)(()=>e.schema.showShiftActions?{shiftUp:e.translations.shiftActionUp.title,shiftDown:e.translations.shiftActionDown.title}:void 0,[e.schema.showShiftActions,e.translations]),h=(0,l.useMemo)(()=>e.schema.showShiftActions?{shiftUp:e.translations.shiftActionUp.label,shiftDown:e.translations.shiftActionDown.label}:void 0,[e.schema.showShiftActions,e.translations]);return l.createElement(l.Fragment,null,e.schema.showShiftActions&&e.path.length>0&&l.createElement(t,{key:c.TestID.shiftActions,...p,testID:c.TestID.shiftActions,titles:m,labels:h,className:e.classNames.shiftActions,shiftUp:e.shiftGroupUp,shiftDown:e.shiftGroupDown,shiftUpDisabled:e.shiftUpDisabled,shiftDownDisabled:e.shiftDownDisabled,ruleOrGroup:e.ruleGroup}),e.path.length>0&&e.schema.enableDragAndDrop&&l.createElement(n,{key:c.TestID.dragHandle,...p,testID:c.TestID.dragHandle,ref:e.dragRef,title:e.translations.dragHandle.title,label:e.translations.dragHandle.label,className:e.classNames.dragHandle,ruleOrGroup:e.ruleGroup}),!e.schema.showCombinatorsBetweenRules&&!e.schema.independentCombinators&&l.createElement(r,{key:c.TestID.combinators,...p,testID:c.TestID.combinators,options:e.schema.combinators,value:e.combinator,title:e.translations.combinators.title,className:e.classNames.combinators,handleOnChange:e.onCombinatorChange,rules:e.ruleGroup.rules,ruleGroup:e.ruleGroup}),e.schema.showNotToggle&&l.createElement(i,{key:c.TestID.notToggle,...p,testID:c.TestID.notToggle,className:e.classNames.notToggle,title:e.translations.notToggle.title,label:e.translations.notToggle.label,checked:e.ruleGroup.not,handleOnChange:e.onNotToggleChange,ruleGroup:e.ruleGroup}),l.createElement(a,{key:c.TestID.addRule,...p,testID:c.TestID.addRule,label:e.translations.addRule.label,title:e.translations.addRule.title,className:e.classNames.addRule,handleOnClick:e.addRule,rules:e.ruleGroup.rules,ruleOrGroup:e.ruleGroup}),e.schema.maxLevels>e.path.length&&l.createElement(o,{key:c.TestID.addGroup,...p,testID:c.TestID.addGroup,label:e.translations.addGroup.label,title:e.translations.addGroup.title,className:e.classNames.addGroup,handleOnClick:e.addGroup,rules:e.ruleGroup.rules,ruleOrGroup:e.ruleGroup}),e.schema.showCloneButtons&&e.path.length>0&&l.createElement(s,{key:c.TestID.cloneGroup,...p,testID:c.TestID.cloneGroup,label:e.translations.cloneRuleGroup.label,title:e.translations.cloneRuleGroup.title,className:e.classNames.cloneGroup,handleOnClick:e.cloneGroup,rules:e.ruleGroup.rules,ruleOrGroup:e.ruleGroup}),e.schema.showLockButtons&&l.createElement(u,{key:c.TestID.lockGroup,...p,testID:c.TestID.lockGroup,label:e.translations.lockGroup.label,title:e.translations.lockGroup.title,className:e.classNames.lockGroup,handleOnClick:e.toggleLockGroup,rules:e.ruleGroup.rules,disabledTranslation:e.parentDisabled?void 0:e.translations.lockGroupDisabled,ruleOrGroup:e.ruleGroup}),e.schema.showMuteButtons&&l.createElement(d,{key:c.TestID.muteGroup,...p,testID:c.TestID.muteGroup,label:e.ruleGroup.muted?e.translations.unmuteGroup.label:e.translations.muteGroup.label,title:e.ruleGroup.muted?e.translations.unmuteGroup.title:e.translations.muteGroup.title,className:e.classNames.muteGroup,handleOnClick:e.toggleMuteGroup,rules:e.ruleGroup.rules,ruleOrGroup:e.ruleGroup}),e.path.length>0&&l.createElement(f,{key:c.TestID.removeGroup,...p,testID:c.TestID.removeGroup,label:e.translations.removeGroup.label,title:e.translations.removeGroup.title,className:e.classNames.removeGroup,handleOnClick:e.removeGroup,rules:e.ruleGroup.rules,ruleOrGroup:e.ruleGroup}))}),K=l.memo(function(e){let{schema:{controls:{combinatorSelector:t,inlineCombinator:n,ruleGroup:r,rule:i}}}=e;return l.createElement(l.Fragment,null,e.ruleGroup.rules.map((a,o,{length:s})=>{let u=e.pathsMemo[o],d=u.path,f=u.disabled||typeof a!=`string`&&a.disabled,p=(0,c.pathsAreEqual)([0],d),m=e.path.length===0&&o===s-1,h=typeof a==`string`?[...d,a].join(`-`):a.id;return l.createElement(l.Fragment,{key:h},o>0&&!e.schema.independentCombinators&&e.schema.showCombinatorsBetweenRules&&l.createElement(n,{key:c.TestID.inlineCombinator,options:e.schema.combinators,value:e.combinator,title:e.translations.combinators.title,className:e.classNames.combinators,handleOnChange:e.onCombinatorChange,rules:e.ruleGroup.rules,level:e.path.length,context:e.context,validation:e.validationResult,component:t,path:d,disabled:e.disabled,schema:e.schema,ruleGroup:e.ruleGroup}),typeof a==`string`?l.createElement(n,{key:`${c.TestID.inlineCombinator}-independent`,options:e.schema.combinators,value:a,title:e.translations.combinators.title,className:e.classNames.combinators,handleOnChange:t=>e.onIndependentCombinatorChange(t,o),rules:e.ruleGroup.rules,level:e.path.length,context:e.context,validation:e.validationResult,component:t,path:d,disabled:f,schema:e.schema,ruleGroup:e.ruleGroup}):(0,c.isRuleGroup)(a)?l.createElement(r,{key:c.TestID.ruleGroup,id:a.id,schema:e.schema,actions:e.actions,path:d,translations:e.translations,ruleGroup:a,rules:a.rules,combinator:(0,c.isRuleGroupType)(a)?a.combinator:void 0,not:!!a.not,disabled:f,parentDisabled:e.parentDisabled||e.disabled,parentMuted:e.parentMuted||e.muted,shiftUpDisabled:p,shiftDownDisabled:m,context:e.context}):l.createElement(i,{key:c.TestID.rule,id:a.id,rule:a,field:a.field,operator:a.operator,value:a.value,valueSource:a.valueSource,schema:e.schema,actions:e.actions,path:d,disabled:f,parentDisabled:e.parentDisabled||e.disabled,parentMuted:e.parentMuted||e.muted,translations:e.translations,shiftUpDisabled:p,shiftDownDisabled:m,context:e.context}))}))}),Se=e=>{let{id:t,path:n,ruleGroup:r,schema:{qbId:i,accessibleDescriptionGenerator:a,classNames:o,combinators:s,createRule:u,createRuleGroup:d,disabledPaths:f,independentCombinators:p,validationMap:m,enableDragAndDrop:h,getRuleGroupClassname:g,suppressStandardClassnames:_},actions:{onGroupAdd:v,onGroupRemove:ee,onPropChange:y,onRuleAdd:b,moveRule:x},disabled:te,parentDisabled:S,parentMuted:C,shiftUpDisabled:ne,shiftDownDisabled:w,combinator:re,rules:T,not:ie,dropEffect:E=`move`,groupItems:D=!1,dragMonitorId:O=``,dropMonitorId:k=``,previewRef:A=null,dragRef:j=null,dropRef:M=null,isDragging:N=!1,isOver:P=!1,dropNotAllowed:F=!1}=e;ae(`ruleGroup`,!r),He(h,!!(O||k||A||j||M));let I=!!S||!!te,L=!!C||!!r?.muted,R=(0,l.useMemo)(()=>r&&(0,c.isRuleGroupType)(r)?r.combinator:r?(0,c.getFirstOption)(s):re??(0,c.getFirstOption)(s),[re,s,r]),z=(0,l.useMemo)(()=>{if(r){if(r.combinator===R||p)return r;let e=structuredClone(r);return e.combinator=R,e}return{rules:T,not:ie}},[R,p,ie,r,T]),B=(0,l.useMemo)(()=>({header:(0,c.clsx)(_||c.standardClassnames.header,o.header,P&&E===`copy`&&o.dndCopy,F&&o.dndDropNotAllowed,_||{[c.standardClassnames.dndOver]:P,[c.standardClassnames.dndCopy]:P&&E===`copy`,[c.standardClassnames.dndDropNotAllowed]:F}),shiftActions:(0,c.clsx)(_||c.standardClassnames.shiftActions,o.shiftActions),dragHandle:(0,c.clsx)(_||c.standardClassnames.dragHandle,o.dragHandle),combinators:(0,c.clsx)(_||c.standardClassnames.combinators,o.valueSelector,o.combinators),notToggle:(0,c.clsx)(_||c.standardClassnames.notToggle,o.notToggle),addRule:(0,c.clsx)(_||c.standardClassnames.addRule,o.actionElement,o.addRule),addGroup:(0,c.clsx)(_||c.standardClassnames.addGroup,o.actionElement,o.addGroup),cloneGroup:(0,c.clsx)(_||c.standardClassnames.cloneGroup,o.actionElement,o.cloneGroup),lockGroup:(0,c.clsx)(_||c.standardClassnames.lockGroup,o.actionElement,o.lockGroup),muteGroup:(0,c.clsx)(_||c.standardClassnames.muteGroup,o.actionElement,o.muteGroup),removeGroup:(0,c.clsx)(_||c.standardClassnames.removeGroup,o.actionElement,o.removeGroup),body:(0,c.clsx)(_||c.standardClassnames.body,o.body)}),[o.actionElement,o.addGroup,o.addRule,o.body,o.cloneGroup,o.combinators,o.dndCopy,o.dndDropNotAllowed,o.dragHandle,o.header,o.lockGroup,o.muteGroup,o.notToggle,o.removeGroup,o.shiftActions,o.valueSelector,E,F,P,_]),oe=(0,l.useCallback)(e=>{I||y(`combinator`,e,n)},[I,y,n]),V=(0,l.useCallback)((e,t,r)=>{I||y(`combinator`,e,[...n,t])},[I,y,n]),se=(0,l.useCallback)((e,t)=>{I||y(`not`,e,n)},[I,y,n]),H=(0,l.useCallback)((e,t)=>{I||b(u(),n,t)},[u,I,b,n]),ce=(0,l.useCallback)((e,t)=>{I||v(d(),n,t)},[d,I,v,n]),le=(0,l.useCallback)(()=>{I||x(n,[...(0,c.getParentPath)(n),n.at(-1)+1],!0)},[I,x,n]),ue=(0,l.useCallback)((e,t)=>{!I&&!ne&&x(n,`up`,e?.altKey)},[I,x,n,ne]),de=(0,l.useCallback)((e,t)=>{!I&&!w&&x(n,`down`,e?.altKey)},[I,x,n,w]),fe=(0,l.useCallback)(()=>{y(`disabled`,!I,n)},[I,y,n]),pe=(0,l.useCallback)(()=>{y(`muted`,!z.muted,n)},[z.muted,y,n]),me=(0,l.useCallback)(()=>{I||ee(n)},[I,ee,n]),he=m[t??``],U=(0,l.useMemo)(()=>(0,c.getValidationClassNames)(he),[he]),W=(0,l.useMemo)(()=>p?null:(0,c.getOption)(s,R)?.className??``,[R,s,p]),ge=(0,l.useMemo)(()=>g(z),[g,z]),_e=(0,l.useMemo)(()=>(0,c.clsx)(ge,W,_||c.standardClassnames.ruleGroup,o.ruleGroup,I&&o.disabled,L&&o.muted,N&&o.dndDragging,P&&D&&o.dndGroup,_||{[c.standardClassnames.disabled]:I,[c.standardClassnames.muted]:L,[c.standardClassnames.dndDragging]:N,[c.standardClassnames.dndGroup]:P&&D},U),[o.disabled,o.muted,o.dndDragging,o.dndGroup,o.ruleGroup,W,I,L,D,N,P,ge,_,U]),ve=Be({disabled:I,disabledPaths:f,path:n,nestedArray:z.rules}),ye=(0,l.useMemo)(()=>a({path:n,qbId:i}),[a,n,i]);return{...e,addGroup:ce,addRule:H,accessibleDescription:ye,classNames:B,cloneGroup:le,combinator:R,disabled:I,dragMonitorId:O,dragRef:j,dropMonitorId:k,dropRef:M,isDragging:N,isOver:P,muted:L,onCombinatorChange:oe,onGroupAdd:v,onIndependentCombinatorChange:V,onNotToggleChange:se,outerClassName:_e,parentDisabled:S,pathsMemo:ve,previewRef:A,removeGroup:me,ruleGroup:z,shiftGroupUp:ue,shiftGroupDown:de,toggleLockGroup:fe,toggleMuteGroup:pe,validationClassName:U,validationResult:he}},Ce=e=>l.createElement(`div`,{"data-testid":e.testID,className:e.className},l.createElement(`button`,{disabled:e.disabled||e.shiftUpDisabled,onClick:e.shiftUp,title:e.titles?.shiftUp},e.labels?.shiftUp),l.createElement(`button`,{disabled:e.disabled||e.shiftDownDisabled,onClick:e.shiftDown,title:e.titles?.shiftDown},e.labels?.shiftDown)),we=({name:e,disabled:t,checked:n,label:r,handleOnChange:i})=>{let a=l.useId();return l.createElement(`label`,{htmlFor:a},l.createElement(`input`,{id:a,type:`radio`,value:e,disabled:t,checked:n,onChange:e=>i(e.target.value)}),r)},Te=e=>{let{operator:t,value:n,handleOnChange:r,title:i,className:a,type:o=`text`,inputType:s,values:u=[],listsAsArrays:d,fieldData:f,disabled:p,separator:m=null,testID:h,selectorComponent:g=e.schema.controls.valueSelector,parseNumbers:_,skipHook:v,valueSource:ee,...y}=e,{valueAsArray:b,multiValueHandler:x,bigIntValueHandler:te,parseNumberMethod:S,valueListItemClassName:C,inputTypeCoerced:ne}=Ee(e);if(t===`null`||t===`notNull`)return null;let w=f?.placeholder??``;if((t===`between`||t===`notBetween`)&&(o===`select`||o===`text`)){let t=[`from`,`to`].map((t,n)=>o===`text`?l.createElement(`input`,{key:t,type:ne,placeholder:w,value:b[n]??``,className:C,disabled:p,onChange:e=>x(e.target.value,n)}):l.createElement(g,{key:t,...y,schema:e.schema,className:C,handleOnChange:e=>x(e,n),disabled:p,value:b[n]??(0,c.getFirstOption)(u),options:u,listsAsArrays:d}));return l.createElement(`span`,{"data-testid":h,className:a,title:i},t[0],m,t[1])}switch(o){case`select`:case`multiselect`:return l.createElement(g,{...y,schema:e.schema,testID:h,className:a,title:i,handleOnChange:r,disabled:p,value:n,options:u,multiple:o===`multiselect`,listsAsArrays:d});case`textarea`:return l.createElement(`textarea`,{"data-testid":h,placeholder:w,value:n,title:i,className:a,disabled:p,onChange:e=>r(e.target.value)});case`switch`:case`checkbox`:return l.createElement(`input`,{"data-testid":h,type:`checkbox`,className:a,title:i,onChange:e=>r(e.target.checked),checked:!!n,disabled:p});case`radio`:return l.createElement(`span`,{"data-testid":h,className:a,title:i},u.map(e=>l.createElement(we,{key:e.name,name:e.name,disabled:p,checked:n===e.name,handleOnChange:r,label:e.label})))}return s===`bigint`?l.createElement(`input`,{"data-testid":h,type:ne,placeholder:w,value:`${n}`,title:i,className:a,disabled:p,onChange:e=>te(e.target.value)}):l.createElement(`input`,{"data-testid":h,type:ne,placeholder:w,value:n,title:i,className:a,disabled:p,onChange:e=>r((0,c.parseNumber)(e.target.value,{parseNumbers:S}))})},Ee=e=>{let{handleOnChange:t,inputType:n,operator:r,value:i,listsAsArrays:a,parseNumbers:o,values:s,type:u,skipHook:d,schema:{classNames:p,suppressStandardClassnames:m}}=e;(0,l.useEffect)(()=>{!d&&u!==`multiselect`&&![`between`,`notBetween`,`in`,`notIn`].includes(r)&&(Array.isArray(i)||n===`number`&&typeof i==`string`&&i.includes(`,`))&&t((0,c.toArray)(i,{retainEmptyStrings:!0})[0]??``)},[t,n,r,d,u,i]);let h=(0,l.useMemo)(()=>(0,c.toArray)(i,{retainEmptyStrings:!0}),[i]),g=(0,l.useMemo)(()=>(0,c.getParseNumberMethod)({parseNumbers:o,inputType:n}),[n,o]);return{valueAsArray:h,multiValueHandler:(0,l.useCallback)((e,n)=>{let i=(0,f.produce)(h,t=>{t[n]=(0,c.parseNumber)(e,{parseNumbers:g}),n===0&&(r===`between`||r===`notBetween`)&&(t.length<2||t[1]===void 0)&&(t[1]=(0,c.getFirstOption)(s))});t(a?i:(0,c.joinWith)(i,`,`))},[t,a,r,g,h,s]),bigIntValueHandler:(0,l.useCallback)(e=>{let n=(0,c.parseNumber)(e,{parseNumbers:g,bigIntOnOverflow:!0}),r;try{r=BigInt(n)}catch{t(n);return}t(r)},[t,g]),parseNumberMethod:g,valueListItemClassName:(0,c.clsx)(m||c.standardClassnames.valueListItem,p?.valueListItem),inputTypeCoerced:n===`bigint`||r===`in`||r===`notIn`?`text`:n||`text`}},De=e=>{let{multiple:t,onChange:n}=e;return(0,l.useMemo)(()=>t?e=>n(Array.from(e.target.selectedOptions).map(e=>e.value)):e=>n(e.target.value),[t,n])},Oe=e=>{let t=t=>{let n=Re(e);return l.createElement(G.Provider,{value:n},t.children)},n=e=>{let t=Re(e);return l.createElement(G.Provider,{value:t},e.children)};return e=>l.createElement(t,null,l.createElement(n,e,e.children))},ke=(e,...t)=>(0,c.mergeAnyTranslations)(e,...t),Ae=(e,t,n)=>(0,c.mergeAnyTranslation)(e,t,n?c.defaultTranslations:void 0),je=e=>(0,c.isOptionGroupArray)(e)?e.map(e=>l.createElement(`optgroup`,{key:e.label,label:e.label},e.options.map(e=>l.createElement(`option`,{key:e.name,value:e.name,disabled:e.disabled},e.label)))):Array.isArray(e)?e.map(e=>l.createElement(`option`,{key:e.name,value:e.name,disabled:e.disabled},e.label)):null,Me=e=>{let{onChange:t,val:n}=Ne(e),r=De({multiple:e.multiple,onChange:t});return l.createElement(`select`,{"data-testid":e.testID,className:e.className,value:n,title:e.title,disabled:e.disabled,multiple:!!e.multiple,onChange:r},je(e.options))},Ne=e=>{let{handleOnChange:t,listsAsArrays:n=!1,multiple:r=!1,value:i}=e;return{onChange:(0,l.useCallback)(e=>{if(r){let r=(0,c.toArray)(e);t(n?r:(0,c.joinWith)(r,`,`))}else t(e)},[t,n,r]),val:(0,l.useMemo)(()=>r?(0,c.toArray)(i):i,[r,i])}},Pe=({props:e})=>{let t=ye(e),n=t.schema.controls.ruleGroup,r=G;return l.createElement(r.Provider,{key:t.dndEnabledAttr,value:t.rqbContext},l.createElement(`div`,{role:`form`,className:t.wrapperClassName,"data-dnd":t.dndEnabledAttr,"data-inlinecombinators":t.inlineCombinatorsAttr},l.createElement(n,{translations:t.translations,ruleGroup:t.rootGroup,rules:t.rootGroup.rules,...t.combinatorPropObject,not:!!t.rootGroup.not,schema:t.schema,actions:t.actions,id:t.rootGroup.id,path:c.rootPath,disabled:t.rootGroupDisabled,shiftUpDisabled:!0,shiftDownDisabled:!0,parentDisabled:t.queryDisabled,context:e.context})))},Fe=()=>null,Ie=(0,l.forwardRef)(Fe),Le={},Re=({finalize:e,...t})=>{let n=(0,l.useContext)(G),r=(0,l.useMemo)(()=>(0,c.preferFlagProps)(t,n,e),[t,n,e]),i=e?n.enableDragAndDrop!==!1&&(0,c.preferProp)(!1,t.enableDragAndDrop,n.enableDragAndDrop):t.enableDragAndDrop??n.enableDragAndDrop,a=(0,l.useMemo)(()=>(0,c.mergeClassnames)(e?Object.assign({},c.defaultControlClassnames):Le,n.controlClassnames,t.controlClassnames),[n.controlClassnames,t.controlClassnames,e]),o=(0,l.useMemo)(()=>({actionElement:a.actionElement,addGroup:a.addGroup,addRule:a.addRule,body:a.body,cloneGroup:a.cloneGroup,cloneRule:a.cloneRule,combinators:a.combinators,dragHandle:a.dragHandle,fields:a.fields,header:a.header,lockGroup:a.lockGroup,lockRule:a.lockRule,muteGroup:a.muteGroup,muteRule:a.muteRule,muted:a.muted,notToggle:a.notToggle,operators:a.operators,queryBuilder:a.queryBuilder,removeGroup:a.removeGroup,removeRule:a.removeRule,rule:a.rule,ruleGroup:a.ruleGroup,shiftActions:a.shiftActions,value:a.value,valueSelector:a.valueSelector,valueSource:a.valueSource,betweenRules:a.betweenRules,valid:a.valid,invalid:a.invalid,dndDragging:a.dndDragging,dndOver:a.dndOver,dndCopy:a.dndCopy,dndGroup:a.dndGroup,dndDropNotAllowed:a.dndDropNotAllowed,disabled:a.disabled,valueListItem:a.valueListItem,matchMode:a.matchMode,matchThreshold:a.matchThreshold,branches:a.branches,hasSubQuery:a.hasSubQuery,loading:a.loading}),[a.actionElement,a.addGroup,a.addRule,a.betweenRules,a.body,a.branches,a.cloneGroup,a.cloneRule,a.combinators,a.disabled,a.dndCopy,a.dndDropNotAllowed,a.dndGroup,a.dndDragging,a.dndOver,a.dragHandle,a.fields,a.hasSubQuery,a.header,a.invalid,a.loading,a.lockGroup,a.lockRule,a.muteGroup,a.muteRule,a.muted,a.matchMode,a.matchThreshold,a.notToggle,a.operators,a.queryBuilder,a.removeGroup,a.removeRule,a.rule,a.ruleGroup,a.shiftActions,a.valid,a.value,a.valueListItem,a.valueSelector,a.valueSource]),s=n.controlElements??Le,u=t.controlElements??Le,d=(0,l.useCallback)((t,n,r)=>{let i=t===`dragHandle`?Ie:Fe,a=(t.endsWith(`Action`)&&u.actionElement?u.actionElement:void 0)??(t.endsWith(`Selector`)&&u.valueSelector?u.valueSelector:void 0),o=(t.endsWith(`Action`)&&s.actionElement?s.actionElement:void 0)??(t.endsWith(`Selector`)&&s.valueSelector?s.valueSelector:void 0),c=n===null?i:n??(e?a:void 0)??(r===null?i:r??(e?o:void 0));return c?{[t]:c}:e?{[t]:Z[t]}:Le},[s.actionElement,s.valueSelector,e,u.actionElement,u.valueSelector]),f=(0,l.useMemo)(()=>Object.assign({},d(`addGroupAction`,u.addGroupAction,s.addGroupAction),d(`addRuleAction`,u.addRuleAction,s.addRuleAction),d(`cloneGroupAction`,u.cloneGroupAction,s.cloneGroupAction),d(`cloneRuleAction`,u.cloneRuleAction,s.cloneRuleAction),d(`combinatorSelector`,u.combinatorSelector,s.combinatorSelector),d(`dragHandle`,u.dragHandle,s.dragHandle),d(`fieldSelector`,u.fieldSelector,s.fieldSelector),d(`inlineCombinator`,u.inlineCombinator,s.inlineCombinator),d(`lockGroupAction`,u.lockGroupAction,s.lockGroupAction),d(`lockRuleAction`,u.lockRuleAction,s.lockRuleAction),d(`muteGroupAction`,u.muteGroupAction,s.muteGroupAction),d(`muteRuleAction`,u.muteRuleAction,s.muteRuleAction),d(`notToggle`,u.notToggle,s.notToggle),d(`operatorSelector`,u.operatorSelector,s.operatorSelector),d(`removeGroupAction`,u.removeGroupAction,s.removeGroupAction),d(`removeRuleAction`,u.removeRuleAction,s.removeRuleAction),d(`shiftActions`,u.shiftActions,s.shiftActions),{valueEditor:u.valueEditor===null?Fe:u.valueEditor??(s.valueEditor===null?Fe:s.valueEditor)??Z.valueEditor},d(`valueSourceSelector`,u.valueSourceSelector,s.valueSourceSelector),d(`matchModeEditor`,u.matchModeEditor,s.matchModeEditor),d(`rule`,u.rule,s.rule),d(`ruleGroup`,u.ruleGroup,s.ruleGroup),d(`ruleGroupBodyElements`,u.ruleGroupBodyElements,s.ruleGroupBodyElements),d(`ruleGroupHeaderElements`,u.ruleGroupHeaderElements,s.ruleGroupHeaderElements),{actionElement:u.actionElement??s.actionElement??(e?Z.actionElement:void 0)},{valueSelector:u.valueSelector??s.valueSelector??(e?Z.valueSelector:void 0)}),[s.actionElement,s.addGroupAction,s.addRuleAction,s.cloneGroupAction,s.cloneRuleAction,s.combinatorSelector,s.dragHandle,s.fieldSelector,s.inlineCombinator,s.lockGroupAction,s.lockRuleAction,s.muteGroupAction,s.muteRuleAction,s.matchModeEditor,s.notToggle,s.operatorSelector,s.removeGroupAction,s.removeRuleAction,s.rule,s.ruleGroup,s.ruleGroupBodyElements,s.ruleGroupHeaderElements,s.shiftActions,s.valueEditor,s.valueSelector,s.valueSourceSelector,d,e,u.actionElement,u.addGroupAction,u.addRuleAction,u.cloneGroupAction,u.cloneRuleAction,u.combinatorSelector,u.dragHandle,u.fieldSelector,u.inlineCombinator,u.lockGroupAction,u.lockRuleAction,u.muteGroupAction,u.muteRuleAction,u.matchModeEditor,u.notToggle,u.operatorSelector,u.removeGroupAction,u.removeRuleAction,u.rule,u.ruleGroup,u.ruleGroupBodyElements,u.ruleGroupHeaderElements,u.shiftActions,u.valueEditor,u.valueSelector,u.valueSourceSelector]),p=t.translations??Le,m=n.translations??Le,h=(0,l.useMemo)(()=>Object.assign({},(0,c.mergeAnyTranslation)(`addGroup`,{label:[p.addGroup?.label,m.addGroup?.label],title:[p.addGroup?.title,m.addGroup?.title]},e?c.defaultTranslations:void 0),(0,c.mergeAnyTranslation)(`addRule`,{label:[p.addRule?.label,m.addRule?.label],title:[p.addRule?.title,m.addRule?.title]},e?c.defaultTranslations:void 0),(0,c.mergeAnyTranslation)(`cloneRule`,{label:[p.cloneRule?.label,m.cloneRule?.label],title:[p.cloneRule?.title,m.cloneRule?.title]},e?c.defaultTranslations:void 0),(0,c.mergeAnyTranslation)(`cloneRuleGroup`,{label:[p.cloneRuleGroup?.label,m.cloneRuleGroup?.label],title:[p.cloneRuleGroup?.title,m.cloneRuleGroup?.title]},e?c.defaultTranslations:void 0),(0,c.mergeAnyTranslation)(`combinators`,{title:[p.combinators?.title,m.combinators?.title]},e?c.defaultTranslations:void 0),(0,c.mergeAnyTranslation)(`dragHandle`,{label:[p.dragHandle?.label,m.dragHandle?.label],title:[p.dragHandle?.title,m.dragHandle?.title]},e?c.defaultTranslations:void 0),(0,c.mergeAnyTranslation)(`fields`,{placeholderGroupLabel:[p.fields?.placeholderGroupLabel,m.fields?.placeholderGroupLabel],placeholderLabel:[p.fields?.placeholderLabel,m.fields?.placeholderLabel],placeholderName:[p.fields?.placeholderName,m.fields?.placeholderName],title:[p.fields?.title,m.fields?.title]},e?c.defaultTranslations:void 0),(0,c.mergeAnyTranslation)(`lockGroup`,{label:[p.lockGroup?.label,m.lockGroup?.label],title:[p.lockGroup?.title,m.lockGroup?.title]},e?c.defaultTranslations:void 0),(0,c.mergeAnyTranslation)(`lockGroupDisabled`,{label:[p.lockGroupDisabled?.label,m.lockGroupDisabled?.label],title:[p.lockGroupDisabled?.title,m.lockGroupDisabled?.title]},e?c.defaultTranslations:void 0),(0,c.mergeAnyTranslation)(`lockRule`,{label:[p.lockRule?.label,m.lockRule?.label],title:[p.lockRule?.title,m.lockRule?.title]},e?c.defaultTranslations:void 0),(0,c.mergeAnyTranslation)(`lockRuleDisabled`,{label:[p.lockRuleDisabled?.label,m.lockRuleDisabled?.label],title:[p.lockRuleDisabled?.title,m.lockRuleDisabled?.title]},e?c.defaultTranslations:void 0),(0,c.mergeAnyTranslation)(`muteGroup`,{label:[p.muteGroup?.label,m.muteGroup?.label],title:[p.muteGroup?.title,m.muteGroup?.title]},e?c.defaultTranslations:void 0),(0,c.mergeAnyTranslation)(`unmuteGroup`,{label:[p.unmuteGroup?.label,m.unmuteGroup?.label],title:[p.unmuteGroup?.title,m.unmuteGroup?.title]},e?c.defaultTranslations:void 0),(0,c.mergeAnyTranslation)(`muteRule`,{label:[p.muteRule?.label,m.muteRule?.label],title:[p.muteRule?.title,m.muteRule?.title]},e?c.defaultTranslations:void 0),(0,c.mergeAnyTranslation)(`unmuteRule`,{label:[p.unmuteRule?.label,m.unmuteRule?.label],title:[p.unmuteRule?.title,m.unmuteRule?.title]},e?c.defaultTranslations:void 0),(0,c.mergeAnyTranslation)(`notToggle`,{label:[p.notToggle?.label,m.notToggle?.label],title:[p.notToggle?.title,m.notToggle?.title]},e?c.defaultTranslations:void 0),(0,c.mergeAnyTranslation)(`operators`,{placeholderGroupLabel:[p.operators?.placeholderGroupLabel,m.operators?.placeholderGroupLabel],placeholderLabel:[p.operators?.placeholderLabel,m.operators?.placeholderLabel],placeholderName:[p.operators?.placeholderName,m.operators?.placeholderName],title:[p.operators?.title,m.operators?.title]},e?c.defaultTranslations:void 0),(0,c.mergeAnyTranslation)(`values`,{placeholderGroupLabel:[p.values?.placeholderGroupLabel,m.values?.placeholderGroupLabel],placeholderLabel:[p.values?.placeholderLabel,m.values?.placeholderLabel],placeholderName:[p.values?.placeholderName,m.values?.placeholderName],title:[p.values?.title,m.values?.title]},e?c.defaultTranslations:void 0),(0,c.mergeAnyTranslation)(`removeGroup`,{label:[p.removeGroup?.label,m.removeGroup?.label],title:[p.removeGroup?.title,m.removeGroup?.title]},e?c.defaultTranslations:void 0),(0,c.mergeAnyTranslation)(`removeRule`,{label:[p.removeRule?.label,m.removeRule?.label],title:[p.removeRule?.title,m.removeRule?.title]},e?c.defaultTranslations:void 0),(0,c.mergeAnyTranslation)(`shiftActionDown`,{label:[p.shiftActionDown?.label,m.shiftActionDown?.label],title:[p.shiftActionDown?.title,m.shiftActionDown?.title]},e?c.defaultTranslations:void 0),(0,c.mergeAnyTranslation)(`shiftActionUp`,{label:[p.shiftActionUp?.label,m.shiftActionUp?.label],title:[p.shiftActionUp?.title,m.shiftActionUp?.title]},e?c.defaultTranslations:void 0),(0,c.mergeAnyTranslation)(`matchMode`,{title:[p.matchMode?.title,m.matchMode?.title]},e?c.defaultTranslations:void 0),(0,c.mergeAnyTranslation)(`matchThreshold`,{title:[p.matchThreshold?.title,m.matchThreshold?.title]},e?c.defaultTranslations:void 0),(0,c.mergeAnyTranslation)(`value`,{title:[p.value?.title,m.value?.title]},e?c.defaultTranslations:void 0),(0,c.mergeAnyTranslation)(`valueSourceSelector`,{title:[p.valueSourceSelector?.title,m.valueSourceSelector?.title]},e?c.defaultTranslations:void 0)),[m.addGroup?.label,m.addGroup?.title,m.addRule?.label,m.addRule?.title,m.cloneRule?.label,m.cloneRule?.title,m.cloneRuleGroup?.label,m.cloneRuleGroup?.title,m.combinators?.title,m.dragHandle?.label,m.dragHandle?.title,m.fields?.placeholderGroupLabel,m.fields?.placeholderLabel,m.fields?.placeholderName,m.fields?.title,m.lockGroup?.label,m.lockGroup?.title,m.lockGroupDisabled?.label,m.lockGroupDisabled?.title,m.lockRule?.label,m.lockRule?.title,m.lockRuleDisabled?.label,m.lockRuleDisabled?.title,m.muteGroup?.label,m.muteGroup?.title,m.unmuteGroup?.label,m.unmuteGroup?.title,m.muteRule?.label,m.muteRule?.title,m.unmuteRule?.label,m.unmuteRule?.title,m.matchMode?.title,m.matchThreshold?.title,m.notToggle?.label,m.notToggle?.title,m.operators?.placeholderGroupLabel,m.operators?.placeholderLabel,m.operators?.placeholderName,m.operators?.title,m.removeGroup?.label,m.removeGroup?.title,m.removeRule?.label,m.removeRule?.title,m.shiftActionDown?.label,m.shiftActionDown?.title,m.shiftActionUp?.label,m.shiftActionUp?.title,m.value?.title,m.values?.placeholderGroupLabel,m.values?.placeholderLabel,m.values?.placeholderName,m.values?.title,m.valueSourceSelector?.title,e,p.addGroup?.label,p.addGroup?.title,p.addRule?.label,p.addRule?.title,p.cloneRule?.label,p.cloneRule?.title,p.cloneRuleGroup?.label,p.cloneRuleGroup?.title,p.combinators?.title,p.dragHandle?.label,p.dragHandle?.title,p.fields?.placeholderGroupLabel,p.fields?.placeholderLabel,p.fields?.placeholderName,p.fields?.title,p.lockGroup?.label,p.lockGroup?.title,p.lockGroupDisabled?.label,p.lockGroupDisabled?.title,p.lockRule?.label,p.lockRule?.title,p.lockRuleDisabled?.label,p.lockRuleDisabled?.title,p.muteGroup?.label,p.muteGroup?.title,p.unmuteGroup?.label,p.unmuteGroup?.title,p.muteRule?.label,p.muteRule?.title,p.unmuteRule?.label,p.unmuteRule?.title,p.matchMode?.title,p.matchThreshold?.title,p.notToggle?.label,p.notToggle?.title,p.operators?.placeholderGroupLabel,p.operators?.placeholderLabel,p.operators?.placeholderName,p.operators?.title,p.removeGroup?.label,p.removeGroup?.title,p.removeRule?.label,p.removeRule?.title,p.shiftActionDown?.label,p.shiftActionDown?.title,p.shiftActionUp?.label,p.shiftActionUp?.title,p.value?.title,p.values?.placeholderGroupLabel,p.values?.placeholderLabel,p.values?.placeholderName,p.values?.title,p.valueSourceSelector?.title]);return{...r,controlClassnames:o,controlElements:f,enableDragAndDrop:i,translations:h,initialQuery:t.initialQuery,qbId:t.qbId}},ze=e=>(0,l.useMemo)(()=>(0,c.prepareOptionList)(e),Object.values(e)),Be=({disabled:e,path:t,nestedArray:n,disabledPaths:r})=>{let i=n.length;return(0,l.useMemo)(()=>{let n=[];for(let a=0;a<i;a++){let i=[...t,a];n[a]={path:i,disabled:e||r.some(e=>(0,c.pathsAreEqual)(i,e))}}return n},[e,t,i,r])},Ve=(e,t,n,r)=>(0,c.preferProp)(e,t,n,r),q=(e,t,n)=>(0,c.preferAnyProp)(e,t,n);let J=!1;const He=(e,t)=>{process.env.NODE_ENV!==`production`&&!J&&e&&!t&&(console.error(x.errorEnabledDndWithoutReactDnD),J=!0)},Y=e=>(0,l.useCallback)((t,n)=>{t?.preventDefault(),t?.stopPropagation(),e(t,n)},[e]),Ue={mode:`all`},We=[{name:``,value:``,label:``}],Ge=l.memo(function(e){let t=Je(e),n=Y(t.cloneRule),r=Y(t.toggleLockRule),i=Y(t.toggleMuteRule),a=Y(t.removeRule),o=Y(t.shiftRuleUp),s=Y(t.shiftRuleDown),u=(0