From c5cfe1d8b80d9131269672370067433712752676 Mon Sep 17 00:00:00 2001 From: Kevin Meijer Date: Tue, 20 Jan 2026 11:09:54 +0100 Subject: [PATCH 1/5] WIP statamic 6 support --- composer.json | 10 ++++++++-- package.json | 4 ++-- vite.config.js | 4 ++-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/composer.json b/composer.json index e419377..87f8e83 100644 --- a/composer.json +++ b/composer.json @@ -28,8 +28,8 @@ "elasticsearch/elasticsearch": "^8.19", "rapidez/core": "^4.0", "rapidez/laravel-scout-elasticsearch": "^1.0", - "rapidez/statamic": "^5.0|^6.0", - "statamic/cms": "^5.0" + "rapidez/statamic": "@dev", + "statamic/cms": "^6.0.0-alpha.18" }, "require-dev": { "larastan/larastan": "^3.7", @@ -39,6 +39,12 @@ "phpstan/phpstan-mockery": "^2.0", "phpunit/phpunit": "^12.3" }, + "repositories": [ + { + "type": "path", + "url": "/Users/kevinmeijer/sites/statamic-packages/statamic" + } + ], "config": { "sort-packages": true, "allow-plugins": { diff --git a/package.json b/package.json index bc57b0b..2e0002c 100644 --- a/package.json +++ b/package.json @@ -5,11 +5,11 @@ "build": "vite build" }, "devDependencies": { - "@vitejs/plugin-vue2": "^2.2.0", + "@statamic/cms": "file:./vendor/statamic/cms/resources/dist-package", "laravel-vite-plugin": "^0.7.2", "postcss": "^8.4.41", "tailwindcss": "^3.4.10", "vite": "^4.0.0", - "vue": "^2.6.11" + "vue": "^3.4.27" } } diff --git a/vite.config.js b/vite.config.js index 3f44007..b886dda 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,15 +1,15 @@ import { defineConfig } from 'vite'; import laravel from 'laravel-vite-plugin'; -import vue from '@vitejs/plugin-vue2'; +import statamic from '@statamic/cms/vite-plugin'; export default defineConfig({ plugins: [ + statamic(), laravel({ input: [ 'resources/js/statamic-query-builder.js' ], publicDirectory: 'resources/dist', }), - vue(), ], }); From c9f134a2826506b0b37f9b40fb68b6490e36938e Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 26 Jan 2026 15:16:56 +0100 Subject: [PATCH 2/5] Compatibility with Statamic 6 and vue 3 --- composer.json | 15 +- package.json | 9 +- .../assets/statamic-query-builder-BD4UnHGk.js | 6 + ...ss => statamic-query-builder-CVyH-oa3.css} | 2 +- .../assets/statamic-query-builder-be794af5.js | 1 - resources/dist/build/manifest.json | 15 +- .../QueryBuilder/QueryCondition.vue | 270 ++-- .../js/components/QueryBuilder/QueryGroup.vue | 360 +++--- .../QueryBuilder/inputs/BetweenValueInput.vue | 76 +- .../QueryBuilder/inputs/DateValueInput.vue | 274 ++-- .../QueryBuilder/inputs/DaysValueInput.vue | 29 +- .../QueryBuilder/inputs/SelectValueInput.vue | 47 +- .../QueryBuilder/inputs/TextValueInput.vue | 30 +- .../fieldtypes/ProductQueryBuilder.vue | 254 ++-- .../js/components/fieldtypes/QueryBuilder.vue | 1127 ++++++++--------- resources/js/statamic-query-builder.js | 2 +- .../CP/ProductAttributeController.php | 14 +- vite.config.js | 4 +- 18 files changed, 1286 insertions(+), 1249 deletions(-) create mode 100644 resources/dist/build/assets/statamic-query-builder-BD4UnHGk.js rename resources/dist/build/assets/{statamic-query-builder-d534377b.css => statamic-query-builder-CVyH-oa3.css} (86%) delete mode 100644 resources/dist/build/assets/statamic-query-builder-be794af5.js diff --git a/composer.json b/composer.json index 87f8e83..b2431b2 100644 --- a/composer.json +++ b/composer.json @@ -12,6 +12,11 @@ "name": "Kevin Meijer", "email": "kevin@justbetter.nl", "role": "Developer" + }, + { + "name": "Bob Wezelman", + "email": "bob@justbetter.nl", + "role": "Developer" } ], "autoload": { @@ -28,21 +33,21 @@ "elasticsearch/elasticsearch": "^8.19", "rapidez/core": "^4.0", "rapidez/laravel-scout-elasticsearch": "^1.0", - "rapidez/statamic": "@dev", - "statamic/cms": "^6.0.0-alpha.18" + "rapidez/statamic": "dev-feature/statamic-6", + "statamic/cms": "^6.0" }, "require-dev": { "larastan/larastan": "^3.7", "laravel/pint": "^1.22", - "orchestra/testbench": "^9.0", + "orchestra/testbench": "^10.0", "pestphp/pest": "^4.1", "phpstan/phpstan-mockery": "^2.0", "phpunit/phpunit": "^12.3" }, "repositories": [ { - "type": "path", - "url": "/Users/kevinmeijer/sites/statamic-packages/statamic" + "type": "vcs", + "url": "git@github.com:kevinmeijer97/statamic-builder.git" } ], "config": { diff --git a/package.json b/package.json index 2e0002c..195677c 100644 --- a/package.json +++ b/package.json @@ -4,12 +4,15 @@ "dev": "vite", "build": "vite build" }, - "devDependencies": { + "dependencies": { "@statamic/cms": "file:./vendor/statamic/cms/resources/dist-package", - "laravel-vite-plugin": "^0.7.2", + "axios": "^1.13.3" + }, + "devDependencies": { + "laravel-vite-plugin": "^1.2.0", "postcss": "^8.4.41", "tailwindcss": "^3.4.10", - "vite": "^4.0.0", + "vite": "^6.3.4", "vue": "^3.4.27" } } diff --git a/resources/dist/build/assets/statamic-query-builder-BD4UnHGk.js b/resources/dist/build/assets/statamic-query-builder-BD4UnHGk.js new file mode 100644 index 0000000..df570b7 --- /dev/null +++ b/resources/dist/build/assets/statamic-query-builder-BD4UnHGk.js @@ -0,0 +1,6 @@ +const on=window.Vue,{BaseTransition:kr,BaseTransitionPropsValidators:Ir,Comment:Pr,DeprecationTypes:Ur,EffectScope:Lr,ErrorCodes:Fr,ErrorTypeStrings:Mr,Fragment:we,KeepAlive:Br,ReactiveEffect:Hr,Static:jr,Suspense:$r,Teleport:qr,Text:Vr,TrackOpTypes:Gr,Transition:Yr,TransitionGroup:zr,TriggerOpTypes:Wr,VueElement:Kr,__esModule:Jr,assertNumber:Xr,callWithAsyncErrorHandling:Qr,callWithErrorHandling:Zr,camelize:es,capitalize:ts,cloneVNode:ns,compatUtils:os,compile:rs,computed:le,createApp:ss,createBlock:q,createCommentVNode:M,createElementBlock:L,createElementVNode:P,createHydrationRenderer:is,createPropsRestProxy:as,createRenderer:ls,createSSRApp:us,createSlots:cs,createStaticVNode:ds,createTextVNode:z,createVNode:D,customRef:ps,defineAsyncComponent:fs,defineComponent:ms,defineCustomElement:hs,defineEmits:bs,defineExpose:ys,defineModel:vs,defineOptions:gs,defineProps:_s,defineSSRCustomElement:Ss,defineSlots:ws,devtools:Ts,effect:Es,effectScope:Os,getCurrentInstance:rn,getCurrentScope:Rs,getCurrentWatcher:As,getTransitionRawChildren:Cs,guardReactiveProps:xs,h:Ns,handleError:Ds,hasInjectionContext:ks,hydrate:Is,hydrateOnIdle:Ps,hydrateOnInteraction:Us,hydrateOnMediaQuery:Ls,hydrateOnVisible:Fs,initCustomFormatter:Ms,initDirectivesForSSR:Bs,inject:Hs,isMemoSame:js,isProxy:$s,isReactive:qs,isReadonly:Vs,isRef:Gs,isRuntimeOnly:Ys,isShallow:zs,isVNode:Ws,markRaw:Ks,mergeDefaults:Js,mergeModels:Xs,mergeProps:Qs,nextTick:Zs,nodeOps:ei,normalizeClass:ot,normalizeProps:ti,normalizeStyle:ni,onActivated:oi,onBeforeMount:ri,onBeforeUnmount:si,onBeforeUpdate:ii,onDeactivated:ai,onErrorCaptured:li,onMounted:_t,onRenderTracked:ui,onRenderTriggered:ci,onScopeDispose:di,onServerPrefetch:pi,onUnmounted:fi,onUpdated:mi,onWatcherCleanup:hi,openBlock:C,patchProp:bi,popScopeId:yi,provide:vi,proxyRefs:gi,pushScopeId:_i,queuePostFlushCb:Si,reactive:wi,readonly:Ti,ref:W,registerRuntimeCompiler:Ei,render:Oi,renderList:St,renderSlot:Ri,resolveComponent:sn,resolveDirective:Ai,resolveDynamicComponent:an,resolveFilter:Ci,resolveTransitionHooks:xi,setBlockTracking:Ni,setDevtoolsHook:Di,setTransitionHooks:ki,shallowReactive:Ii,shallowReadonly:Pi,shallowRef:Ui,ssrContextKey:Li,ssrUtils:Fi,stop:Mi,toDisplayString:F,toHandlerKey:Bi,toHandlers:Hi,toRaw:ji,toRef:$i,toRefs:qi,toValue:Vi,transformVNodeArgs:Gi,triggerRef:Yi,unref:R,useAttrs:zi,useCssModule:Wi,useCssVars:Ki,useHost:Ji,useId:Xi,useModel:Qi,useSSRContext:Zi,useShadowRoot:ea,useSlots:ta,useTemplateRef:na,useTransitionState:oa,vModelCheckbox:ra,vModelDynamic:sa,vModelRadio:ia,vModelSelect:aa,vModelText:la,vShow:ua,version:ca,warn:da,watch:ln,watchEffect:pa,watchPostEffect:fa,watchSyncEffect:ma,withAsyncContext:ha,withCtx:I,withDefaults:ba,withDirectives:ya,withKeys:va,withMemo:ga,withModifiers:_a,withScopeId:Sa}=on,{Fieldtype:qe,IndexFieldtype:wa,FieldtypeMixin:Ta,HasActionsMixin:Ea,HasInputOptionsMixin:Oa,HasPreferencesMixin:Ra,IndexFieldtypeMixin:Aa,InlineEditForm:Ca,DateFormatter:xa,ItemActions:Na,RelatedItem:Da,RestoreRevision:ka,RevisionHistory:Ia,RevisionPreview:Pa,SaveButtonOptions:Ua,SortableList:La,requireElevatedSession:Fa,requireElevatedSessionIf:Ma,clone:Ba,deepClone:Ha,resetValuesFromResponse:ja}=__STATAMIC__.core;function wt(e,t){return function(){return e.apply(t,arguments)}}const{toString:un}=Object.prototype,{getPrototypeOf:Xe}=Object,{iterator:Fe,toStringTag:Tt}=Symbol,Me=(e=>t=>{const n=un.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),oe=e=>(e=e.toLowerCase(),t=>Me(t)===e),Be=e=>t=>typeof t===e,{isArray:ve}=Array,ye=Be("undefined");function Te(e){return e!==null&&!ye(e)&&e.constructor!==null&&!ye(e.constructor)&&J(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const Et=oe("ArrayBuffer");function cn(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&Et(e.buffer),t}const dn=Be("string"),J=Be("function"),Ot=Be("number"),Ee=e=>e!==null&&typeof e=="object",pn=e=>e===!0||e===!1,Ie=e=>{if(Me(e)!=="object")return!1;const t=Xe(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Tt in e)&&!(Fe in e)},fn=e=>{if(!Ee(e)||Te(e))return!1;try{return Object.keys(e).length===0&&Object.getPrototypeOf(e)===Object.prototype}catch{return!1}},mn=oe("Date"),hn=oe("File"),bn=oe("Blob"),yn=oe("FileList"),vn=e=>Ee(e)&&J(e.pipe),gn=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||J(e.append)&&((t=Me(e))==="formdata"||t==="object"&&J(e.toString)&&e.toString()==="[object FormData]"))},_n=oe("URLSearchParams"),[Sn,wn,Tn,En]=["ReadableStream","Request","Response","Headers"].map(oe),On=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Oe(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let o,r;if(typeof e!="object"&&(e=[e]),ve(e))for(o=0,r=e.length;o0;)if(r=n[o],t===r.toLowerCase())return r;return null}const pe=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,At=e=>!ye(e)&&e!==pe;function ze(){const{caseless:e,skipUndefined:t}=At(this)&&this||{},n={},o=(r,i)=>{const s=e&&Rt(n,i)||i;Ie(n[s])&&Ie(r)?n[s]=ze(n[s],r):Ie(r)?n[s]=ze({},r):ve(r)?n[s]=r.slice():(!t||!ye(r))&&(n[s]=r)};for(let r=0,i=arguments.length;r(Oe(t,(r,i)=>{n&&J(r)?Object.defineProperty(e,i,{value:wt(r,n),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(e,i,{value:r,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:o}),e),An=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),Cn=(e,t,n,o)=>{e.prototype=Object.create(t.prototype,o),Object.defineProperty(e.prototype,"constructor",{value:e,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},xn=(e,t,n,o)=>{let r,i,s;const a={};if(t=t||{},e==null)return t;do{for(r=Object.getOwnPropertyNames(e),i=r.length;i-- >0;)s=r[i],(!o||o(s,e,t))&&!a[s]&&(t[s]=e[s],a[s]=!0);e=n!==!1&&Xe(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},Nn=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const o=e.indexOf(t,n);return o!==-1&&o===n},Dn=e=>{if(!e)return null;if(ve(e))return e;let t=e.length;if(!Ot(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},kn=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&Xe(Uint8Array)),In=(e,t)=>{const o=(e&&e[Fe]).call(e);let r;for(;(r=o.next())&&!r.done;){const i=r.value;t.call(e,i[0],i[1])}},Pn=(e,t)=>{let n;const o=[];for(;(n=e.exec(t))!==null;)o.push(n);return o},Un=oe("HTMLFormElement"),Ln=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,o,r){return o.toUpperCase()+r}),rt=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),Fn=oe("RegExp"),Ct=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),o={};Oe(n,(r,i)=>{let s;(s=t(r,i,e))!==!1&&(o[i]=s||r)}),Object.defineProperties(e,o)},Mn=e=>{Ct(e,(t,n)=>{if(J(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const o=e[n];if(J(o)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},Bn=(e,t)=>{const n={},o=r=>{r.forEach(i=>{n[i]=!0})};return ve(e)?o(e):o(String(e).split(t)),n},Hn=()=>{},jn=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function $n(e){return!!(e&&J(e.append)&&e[Tt]==="FormData"&&e[Fe])}const qn=e=>{const t=new Array(10),n=(o,r)=>{if(Ee(o)){if(t.indexOf(o)>=0)return;if(Te(o))return o;if(!("toJSON"in o)){t[r]=o;const i=ve(o)?[]:{};return Oe(o,(s,a)=>{const m=n(s,r+1);!ye(m)&&(i[a]=m)}),t[r]=void 0,i}}return o};return n(e,0)},Vn=oe("AsyncFunction"),Gn=e=>e&&(Ee(e)||J(e))&&J(e.then)&&J(e.catch),xt=((e,t)=>e?setImmediate:t?((n,o)=>(pe.addEventListener("message",({source:r,data:i})=>{r===pe&&i===n&&o.length&&o.shift()()},!1),r=>{o.push(r),pe.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",J(pe.postMessage)),Yn=typeof queueMicrotask<"u"?queueMicrotask.bind(pe):typeof process<"u"&&process.nextTick||xt,zn=e=>e!=null&&J(e[Fe]),u={isArray:ve,isArrayBuffer:Et,isBuffer:Te,isFormData:gn,isArrayBufferView:cn,isString:dn,isNumber:Ot,isBoolean:pn,isObject:Ee,isPlainObject:Ie,isEmptyObject:fn,isReadableStream:Sn,isRequest:wn,isResponse:Tn,isHeaders:En,isUndefined:ye,isDate:mn,isFile:hn,isBlob:bn,isRegExp:Fn,isFunction:J,isStream:vn,isURLSearchParams:_n,isTypedArray:kn,isFileList:yn,forEach:Oe,merge:ze,extend:Rn,trim:On,stripBOM:An,inherits:Cn,toFlatObject:xn,kindOf:Me,kindOfTest:oe,endsWith:Nn,toArray:Dn,forEachEntry:In,matchAll:Pn,isHTMLForm:Un,hasOwnProperty:rt,hasOwnProp:rt,reduceDescriptors:Ct,freezeMethods:Mn,toObjectSet:Bn,toCamelCase:Ln,noop:Hn,toFiniteNumber:jn,findKey:Rt,global:pe,isContextDefined:At,isSpecCompliantForm:$n,toJSONObject:qn,isAsyncFn:Vn,isThenable:Gn,setImmediate:xt,asap:Yn,isIterable:zn};let O=class Nt extends Error{static from(t,n,o,r,i,s){const a=new Nt(t.message,n||t.code,o,r,i);return a.cause=t,a.name=t.name,s&&Object.assign(a,s),a}constructor(t,n,o,r,i){super(t),this.name="AxiosError",this.isAxiosError=!0,n&&(this.code=n),o&&(this.config=o),r&&(this.request=r),i&&(this.response=i,this.status=i.status)}toJSON(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:u.toJSONObject(this.config),code:this.code,status:this.status}}};O.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE";O.ERR_BAD_OPTION="ERR_BAD_OPTION";O.ECONNABORTED="ECONNABORTED";O.ETIMEDOUT="ETIMEDOUT";O.ERR_NETWORK="ERR_NETWORK";O.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS";O.ERR_DEPRECATED="ERR_DEPRECATED";O.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE";O.ERR_BAD_REQUEST="ERR_BAD_REQUEST";O.ERR_CANCELED="ERR_CANCELED";O.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT";O.ERR_INVALID_URL="ERR_INVALID_URL";const Wn=null;function We(e){return u.isPlainObject(e)||u.isArray(e)}function Dt(e){return u.endsWith(e,"[]")?e.slice(0,-2):e}function st(e,t,n){return e?e.concat(t).map(function(r,i){return r=Dt(r),!n&&i?"["+r+"]":r}).join(n?".":""):t}function Kn(e){return u.isArray(e)&&!e.some(We)}const Jn=u.toFlatObject(u,{},null,function(t){return/^is[A-Z]/.test(t)});function He(e,t,n){if(!u.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=u.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(g,b){return!u.isUndefined(b[g])});const o=n.metaTokens,r=n.visitor||d,i=n.dots,s=n.indexes,m=(n.Blob||typeof Blob<"u"&&Blob)&&u.isSpecCompliantForm(t);if(!u.isFunction(r))throw new TypeError("visitor must be a function");function c(p){if(p===null)return"";if(u.isDate(p))return p.toISOString();if(u.isBoolean(p))return p.toString();if(!m&&u.isBlob(p))throw new O("Blob is not supported. Use a Buffer instead.");return u.isArrayBuffer(p)||u.isTypedArray(p)?m&&typeof Blob=="function"?new Blob([p]):Buffer.from(p):p}function d(p,g,b){let T=p;if(p&&!b&&typeof p=="object"){if(u.endsWith(g,"{}"))g=o?g:g.slice(0,-2),p=JSON.stringify(p);else if(u.isArray(p)&&Kn(p)||(u.isFileList(p)||u.endsWith(g,"[]"))&&(T=u.toArray(p)))return g=Dt(g),T.forEach(function(h,E){!(u.isUndefined(h)||h===null)&&t.append(s===!0?st([g],E,i):s===null?g:g+"[]",c(h))}),!1}return We(p)?!0:(t.append(st(b,g,i),c(p)),!1)}const f=[],w=Object.assign(Jn,{defaultVisitor:d,convertValue:c,isVisitable:We});function x(p,g){if(!u.isUndefined(p)){if(f.indexOf(p)!==-1)throw Error("Circular reference detected in "+g.join("."));f.push(p),u.forEach(p,function(T,A){(!(u.isUndefined(T)||T===null)&&r.call(t,T,u.isString(A)?A.trim():A,g,w))===!0&&x(T,g?g.concat(A):[A])}),f.pop()}}if(!u.isObject(e))throw new TypeError("data must be an object");return x(e),t}function it(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(o){return t[o]})}function Qe(e,t){this._pairs=[],e&&He(e,this,t)}const kt=Qe.prototype;kt.append=function(t,n){this._pairs.push([t,n])};kt.toString=function(t){const n=t?function(o){return t.call(this,o,it)}:it;return this._pairs.map(function(r){return n(r[0])+"="+n(r[1])},"").join("&")};function Xn(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function It(e,t,n){if(!t)return e;const o=n&&n.encode||Xn,r=u.isFunction(n)?{serialize:n}:n,i=r&&r.serialize;let s;if(i?s=i(t,r):s=u.isURLSearchParams(t)?t.toString():new Qe(t,r).toString(o),s){const a=e.indexOf("#");a!==-1&&(e=e.slice(0,a)),e+=(e.indexOf("?")===-1?"?":"&")+s}return e}class at{constructor(){this.handlers=[]}use(t,n,o){return this.handlers.push({fulfilled:t,rejected:n,synchronous:o?o.synchronous:!1,runWhen:o?o.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){u.forEach(this.handlers,function(o){o!==null&&t(o)})}}const Pt={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Qn=typeof URLSearchParams<"u"?URLSearchParams:Qe,Zn=typeof FormData<"u"?FormData:null,eo=typeof Blob<"u"?Blob:null,to={isBrowser:!0,classes:{URLSearchParams:Qn,FormData:Zn,Blob:eo},protocols:["http","https","file","blob","url","data"]},Ze=typeof window<"u"&&typeof document<"u",Ke=typeof navigator=="object"&&navigator||void 0,no=Ze&&(!Ke||["ReactNative","NativeScript","NS"].indexOf(Ke.product)<0),oo=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",ro=Ze&&window.location.href||"http://localhost",so=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:Ze,hasStandardBrowserEnv:no,hasStandardBrowserWebWorkerEnv:oo,navigator:Ke,origin:ro},Symbol.toStringTag,{value:"Module"})),V={...so,...to};function io(e,t){return He(e,new V.classes.URLSearchParams,{visitor:function(n,o,r,i){return V.isNode&&u.isBuffer(n)?(this.append(o,n.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)},...t})}function ao(e){return u.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function lo(e){const t={},n=Object.keys(e);let o;const r=n.length;let i;for(o=0;o=n.length;return s=!s&&u.isArray(r)?r.length:s,m?(u.hasOwnProp(r,s)?r[s]=[r[s],o]:r[s]=o,!a):((!r[s]||!u.isObject(r[s]))&&(r[s]=[]),t(n,o,r[s],i)&&u.isArray(r[s])&&(r[s]=lo(r[s])),!a)}if(u.isFormData(e)&&u.isFunction(e.entries)){const n={};return u.forEachEntry(e,(o,r)=>{t(ao(o),r,n,0)}),n}return null}function uo(e,t,n){if(u.isString(e))try{return(t||JSON.parse)(e),u.trim(e)}catch(o){if(o.name!=="SyntaxError")throw o}return(n||JSON.stringify)(e)}const Re={transitional:Pt,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const o=n.getContentType()||"",r=o.indexOf("application/json")>-1,i=u.isObject(t);if(i&&u.isHTMLForm(t)&&(t=new FormData(t)),u.isFormData(t))return r?JSON.stringify(Ut(t)):t;if(u.isArrayBuffer(t)||u.isBuffer(t)||u.isStream(t)||u.isFile(t)||u.isBlob(t)||u.isReadableStream(t))return t;if(u.isArrayBufferView(t))return t.buffer;if(u.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let a;if(i){if(o.indexOf("application/x-www-form-urlencoded")>-1)return io(t,this.formSerializer).toString();if((a=u.isFileList(t))||o.indexOf("multipart/form-data")>-1){const m=this.env&&this.env.FormData;return He(a?{"files[]":t}:t,m&&new m,this.formSerializer)}}return i||r?(n.setContentType("application/json",!1),uo(t)):t}],transformResponse:[function(t){const n=this.transitional||Re.transitional,o=n&&n.forcedJSONParsing,r=this.responseType==="json";if(u.isResponse(t)||u.isReadableStream(t))return t;if(t&&u.isString(t)&&(o&&!this.responseType||r)){const s=!(n&&n.silentJSONParsing)&&r;try{return JSON.parse(t,this.parseReviver)}catch(a){if(s)throw a.name==="SyntaxError"?O.from(a,O.ERR_BAD_RESPONSE,this,null,this.response):a}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:V.classes.FormData,Blob:V.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};u.forEach(["delete","get","head","post","put","patch"],e=>{Re.headers[e]={}});const co=u.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),po=e=>{const t={};let n,o,r;return e&&e.split(` +`).forEach(function(s){r=s.indexOf(":"),n=s.substring(0,r).trim().toLowerCase(),o=s.substring(r+1).trim(),!(!n||t[n]&&co[n])&&(n==="set-cookie"?t[n]?t[n].push(o):t[n]=[o]:t[n]=t[n]?t[n]+", "+o:o)}),t},lt=Symbol("internals");function Se(e){return e&&String(e).trim().toLowerCase()}function Pe(e){return e===!1||e==null?e:u.isArray(e)?e.map(Pe):String(e)}function fo(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let o;for(;o=n.exec(e);)t[o[1]]=o[2];return t}const mo=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function Ve(e,t,n,o,r){if(u.isFunction(o))return o.call(this,t,n);if(r&&(t=n),!!u.isString(t)){if(u.isString(o))return t.indexOf(o)!==-1;if(u.isRegExp(o))return o.test(t)}}function ho(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,o)=>n.toUpperCase()+o)}function bo(e,t){const n=u.toCamelCase(" "+t);["get","set","has"].forEach(o=>{Object.defineProperty(e,o+n,{value:function(r,i,s){return this[o].call(this,t,r,i,s)},configurable:!0})})}let X=class{constructor(t){t&&this.set(t)}set(t,n,o){const r=this;function i(a,m,c){const d=Se(m);if(!d)throw new Error("header name must be a non-empty string");const f=u.findKey(r,d);(!f||r[f]===void 0||c===!0||c===void 0&&r[f]!==!1)&&(r[f||m]=Pe(a))}const s=(a,m)=>u.forEach(a,(c,d)=>i(c,d,m));if(u.isPlainObject(t)||t instanceof this.constructor)s(t,n);else if(u.isString(t)&&(t=t.trim())&&!mo(t))s(po(t),n);else if(u.isObject(t)&&u.isIterable(t)){let a={},m,c;for(const d of t){if(!u.isArray(d))throw TypeError("Object iterator must return a key-value pair");a[c=d[0]]=(m=a[c])?u.isArray(m)?[...m,d[1]]:[m,d[1]]:d[1]}s(a,n)}else t!=null&&i(n,t,o);return this}get(t,n){if(t=Se(t),t){const o=u.findKey(this,t);if(o){const r=this[o];if(!n)return r;if(n===!0)return fo(r);if(u.isFunction(n))return n.call(this,r,o);if(u.isRegExp(n))return n.exec(r);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=Se(t),t){const o=u.findKey(this,t);return!!(o&&this[o]!==void 0&&(!n||Ve(this,this[o],o,n)))}return!1}delete(t,n){const o=this;let r=!1;function i(s){if(s=Se(s),s){const a=u.findKey(o,s);a&&(!n||Ve(o,o[a],a,n))&&(delete o[a],r=!0)}}return u.isArray(t)?t.forEach(i):i(t),r}clear(t){const n=Object.keys(this);let o=n.length,r=!1;for(;o--;){const i=n[o];(!t||Ve(this,this[i],i,t,!0))&&(delete this[i],r=!0)}return r}normalize(t){const n=this,o={};return u.forEach(this,(r,i)=>{const s=u.findKey(o,i);if(s){n[s]=Pe(r),delete n[i];return}const a=t?ho(i):String(i).trim();a!==i&&delete n[i],n[a]=Pe(r),o[a]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return u.forEach(this,(o,r)=>{o!=null&&o!==!1&&(n[r]=t&&u.isArray(o)?o.join(", "):o)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(` +`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const o=new this(t);return n.forEach(r=>o.set(r)),o}static accessor(t){const o=(this[lt]=this[lt]={accessors:{}}).accessors,r=this.prototype;function i(s){const a=Se(s);o[a]||(bo(r,s),o[a]=!0)}return u.isArray(t)?t.forEach(i):i(t),this}};X.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);u.reduceDescriptors(X.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(o){this[n]=o}}});u.freezeMethods(X);function Ge(e,t){const n=this||Re,o=t||n,r=X.from(o.headers);let i=o.data;return u.forEach(e,function(a){i=a.call(n,i,r.normalize(),t?t.status:void 0)}),r.normalize(),i}function Lt(e){return!!(e&&e.__CANCEL__)}let Ae=class extends O{constructor(t,n,o){super(t??"canceled",O.ERR_CANCELED,n,o),this.name="CanceledError",this.__CANCEL__=!0}};function Ft(e,t,n){const o=n.config.validateStatus;!n.status||!o||o(n.status)?e(n):t(new O("Request failed with status code "+n.status,[O.ERR_BAD_REQUEST,O.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function yo(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function vo(e,t){e=e||10;const n=new Array(e),o=new Array(e);let r=0,i=0,s;return t=t!==void 0?t:1e3,function(m){const c=Date.now(),d=o[i];s||(s=c),n[r]=m,o[r]=c;let f=i,w=0;for(;f!==r;)w+=n[f++],f=f%e;if(r=(r+1)%e,r===i&&(i=(i+1)%e),c-s{n=d,r=null,i&&(clearTimeout(i),i=null),e(...c)};return[(...c)=>{const d=Date.now(),f=d-n;f>=o?s(c,d):(r=c,i||(i=setTimeout(()=>{i=null,s(r)},o-f)))},()=>r&&s(r)]}const Le=(e,t,n=3)=>{let o=0;const r=vo(50,250);return go(i=>{const s=i.loaded,a=i.lengthComputable?i.total:void 0,m=s-o,c=r(m),d=s<=a;o=s;const f={loaded:s,total:a,progress:a?s/a:void 0,bytes:m,rate:c||void 0,estimated:c&&a&&d?(a-s)/c:void 0,event:i,lengthComputable:a!=null,[t?"download":"upload"]:!0};e(f)},n)},ut=(e,t)=>{const n=e!=null;return[o=>t[0]({lengthComputable:n,total:e,loaded:o}),t[1]]},ct=e=>(...t)=>u.asap(()=>e(...t)),_o=V.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,V.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(V.origin),V.navigator&&/(msie|trident)/i.test(V.navigator.userAgent)):()=>!0,So=V.hasStandardBrowserEnv?{write(e,t,n,o,r,i,s){if(typeof document>"u")return;const a=[`${e}=${encodeURIComponent(t)}`];u.isNumber(n)&&a.push(`expires=${new Date(n).toUTCString()}`),u.isString(o)&&a.push(`path=${o}`),u.isString(r)&&a.push(`domain=${r}`),i===!0&&a.push("secure"),u.isString(s)&&a.push(`SameSite=${s}`),document.cookie=a.join("; ")},read(e){if(typeof document>"u")return null;const t=document.cookie.match(new RegExp("(?:^|; )"+e+"=([^;]*)"));return t?decodeURIComponent(t[1]):null},remove(e){this.write(e,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function wo(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function To(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function Mt(e,t,n){let o=!wo(t);return e&&(o||n==!1)?To(e,t):t}const dt=e=>e instanceof X?{...e}:e;function me(e,t){t=t||{};const n={};function o(c,d,f,w){return u.isPlainObject(c)&&u.isPlainObject(d)?u.merge.call({caseless:w},c,d):u.isPlainObject(d)?u.merge({},d):u.isArray(d)?d.slice():d}function r(c,d,f,w){if(u.isUndefined(d)){if(!u.isUndefined(c))return o(void 0,c,f,w)}else return o(c,d,f,w)}function i(c,d){if(!u.isUndefined(d))return o(void 0,d)}function s(c,d){if(u.isUndefined(d)){if(!u.isUndefined(c))return o(void 0,c)}else return o(void 0,d)}function a(c,d,f){if(f in t)return o(c,d);if(f in e)return o(void 0,c)}const m={url:i,method:i,data:i,baseURL:s,transformRequest:s,transformResponse:s,paramsSerializer:s,timeout:s,timeoutMessage:s,withCredentials:s,withXSRFToken:s,adapter:s,responseType:s,xsrfCookieName:s,xsrfHeaderName:s,onUploadProgress:s,onDownloadProgress:s,decompress:s,maxContentLength:s,maxBodyLength:s,beforeRedirect:s,transport:s,httpAgent:s,httpsAgent:s,cancelToken:s,socketPath:s,responseEncoding:s,validateStatus:a,headers:(c,d,f)=>r(dt(c),dt(d),f,!0)};return u.forEach(Object.keys({...e,...t}),function(d){const f=m[d]||r,w=f(e[d],t[d],d);u.isUndefined(w)&&f!==a||(n[d]=w)}),n}const Bt=e=>{const t=me({},e);let{data:n,withXSRFToken:o,xsrfHeaderName:r,xsrfCookieName:i,headers:s,auth:a}=t;if(t.headers=s=X.from(s),t.url=It(Mt(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),a&&s.set("Authorization","Basic "+btoa((a.username||"")+":"+(a.password?unescape(encodeURIComponent(a.password)):""))),u.isFormData(n)){if(V.hasStandardBrowserEnv||V.hasStandardBrowserWebWorkerEnv)s.setContentType(void 0);else if(u.isFunction(n.getHeaders)){const m=n.getHeaders(),c=["content-type","content-length"];Object.entries(m).forEach(([d,f])=>{c.includes(d.toLowerCase())&&s.set(d,f)})}}if(V.hasStandardBrowserEnv&&(o&&u.isFunction(o)&&(o=o(t)),o||o!==!1&&_o(t.url))){const m=r&&i&&So.read(i);m&&s.set(r,m)}return t},Eo=typeof XMLHttpRequest<"u",Oo=Eo&&function(e){return new Promise(function(n,o){const r=Bt(e);let i=r.data;const s=X.from(r.headers).normalize();let{responseType:a,onUploadProgress:m,onDownloadProgress:c}=r,d,f,w,x,p;function g(){x&&x(),p&&p(),r.cancelToken&&r.cancelToken.unsubscribe(d),r.signal&&r.signal.removeEventListener("abort",d)}let b=new XMLHttpRequest;b.open(r.method.toUpperCase(),r.url,!0),b.timeout=r.timeout;function T(){if(!b)return;const h=X.from("getAllResponseHeaders"in b&&b.getAllResponseHeaders()),N={data:!a||a==="text"||a==="json"?b.responseText:b.response,status:b.status,statusText:b.statusText,headers:h,config:e,request:b};Ft(function(j){n(j),g()},function(j){o(j),g()},N),b=null}"onloadend"in b?b.onloadend=T:b.onreadystatechange=function(){!b||b.readyState!==4||b.status===0&&!(b.responseURL&&b.responseURL.indexOf("file:")===0)||setTimeout(T)},b.onabort=function(){b&&(o(new O("Request aborted",O.ECONNABORTED,e,b)),b=null)},b.onerror=function(E){const N=E&&E.message?E.message:"Network Error",Q=new O(N,O.ERR_NETWORK,e,b);Q.event=E||null,o(Q),b=null},b.ontimeout=function(){let E=r.timeout?"timeout of "+r.timeout+"ms exceeded":"timeout exceeded";const N=r.transitional||Pt;r.timeoutErrorMessage&&(E=r.timeoutErrorMessage),o(new O(E,N.clarifyTimeoutError?O.ETIMEDOUT:O.ECONNABORTED,e,b)),b=null},i===void 0&&s.setContentType(null),"setRequestHeader"in b&&u.forEach(s.toJSON(),function(E,N){b.setRequestHeader(N,E)}),u.isUndefined(r.withCredentials)||(b.withCredentials=!!r.withCredentials),a&&a!=="json"&&(b.responseType=r.responseType),c&&([w,p]=Le(c,!0),b.addEventListener("progress",w)),m&&b.upload&&([f,x]=Le(m),b.upload.addEventListener("progress",f),b.upload.addEventListener("loadend",x)),(r.cancelToken||r.signal)&&(d=h=>{b&&(o(!h||h.type?new Ae(null,e,b):h),b.abort(),b=null)},r.cancelToken&&r.cancelToken.subscribe(d),r.signal&&(r.signal.aborted?d():r.signal.addEventListener("abort",d)));const A=yo(r.url);if(A&&V.protocols.indexOf(A)===-1){o(new O("Unsupported protocol "+A+":",O.ERR_BAD_REQUEST,e));return}b.send(i||null)})},Ro=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let o=new AbortController,r;const i=function(c){if(!r){r=!0,a();const d=c instanceof Error?c:this.reason;o.abort(d instanceof O?d:new Ae(d instanceof Error?d.message:d))}};let s=t&&setTimeout(()=>{s=null,i(new O(`timeout of ${t}ms exceeded`,O.ETIMEDOUT))},t);const a=()=>{e&&(s&&clearTimeout(s),s=null,e.forEach(c=>{c.unsubscribe?c.unsubscribe(i):c.removeEventListener("abort",i)}),e=null)};e.forEach(c=>c.addEventListener("abort",i));const{signal:m}=o;return m.unsubscribe=()=>u.asap(a),m}},Ao=function*(e,t){let n=e.byteLength;if(n{const r=Co(e,t);let i=0,s,a=m=>{s||(s=!0,o&&o(m))};return new ReadableStream({async pull(m){try{const{done:c,value:d}=await r.next();if(c){a(),m.close();return}let f=d.byteLength;if(n){let w=i+=f;n(w)}m.enqueue(new Uint8Array(d))}catch(c){throw a(c),c}},cancel(m){return a(m),r.return()}},{highWaterMark:2})},ft=64*1024,{isFunction:ke}=u,No=(({Request:e,Response:t})=>({Request:e,Response:t}))(u.global),{ReadableStream:mt,TextEncoder:ht}=u.global,bt=(e,...t)=>{try{return!!e(...t)}catch{return!1}},Do=e=>{e=u.merge.call({skipUndefined:!0},No,e);const{fetch:t,Request:n,Response:o}=e,r=t?ke(t):typeof fetch=="function",i=ke(n),s=ke(o);if(!r)return!1;const a=r&&ke(mt),m=r&&(typeof ht=="function"?(p=>g=>p.encode(g))(new ht):async p=>new Uint8Array(await new n(p).arrayBuffer())),c=i&&a&&bt(()=>{let p=!1;const g=new n(V.origin,{body:new mt,method:"POST",get duplex(){return p=!0,"half"}}).headers.has("Content-Type");return p&&!g}),d=s&&a&&bt(()=>u.isReadableStream(new o("").body)),f={stream:d&&(p=>p.body)};r&&["text","arrayBuffer","blob","formData","stream"].forEach(p=>{!f[p]&&(f[p]=(g,b)=>{let T=g&&g[p];if(T)return T.call(g);throw new O(`Response type '${p}' is not supported`,O.ERR_NOT_SUPPORT,b)})});const w=async p=>{if(p==null)return 0;if(u.isBlob(p))return p.size;if(u.isSpecCompliantForm(p))return(await new n(V.origin,{method:"POST",body:p}).arrayBuffer()).byteLength;if(u.isArrayBufferView(p)||u.isArrayBuffer(p))return p.byteLength;if(u.isURLSearchParams(p)&&(p=p+""),u.isString(p))return(await m(p)).byteLength},x=async(p,g)=>{const b=u.toFiniteNumber(p.getContentLength());return b??w(g)};return async p=>{let{url:g,method:b,data:T,signal:A,cancelToken:h,timeout:E,onDownloadProgress:N,onUploadProgress:Q,responseType:j,headers:S,withCredentials:v="same-origin",fetchOptions:U}=Bt(p),H=t||fetch;j=j?(j+"").toLowerCase():"text";let K=Ro([A,h&&h.toAbortSignal()],E),G=null;const re=K&&K.unsubscribe&&(()=>{K.unsubscribe()});let Ce;try{if(Q&&c&&b!=="get"&&b!=="head"&&(Ce=await x(S,T))!==0){let ie=new n(g,{method:"POST",body:T,duplex:"half"}),ne;if(u.isFormData(T)&&(ne=ie.headers.get("content-type"))&&S.setContentType(ne),ie.body){const[ge,ce]=ut(Ce,Le(ct(Q)));T=pt(ie.body,ft,ge,ce)}}u.isString(v)||(v=v?"include":"omit");const Z=i&&"credentials"in n.prototype,xe={...U,signal:K,method:b.toUpperCase(),headers:S.normalize().toJSON(),body:T,duplex:"half",credentials:Z?v:void 0};G=i&&new n(g,xe);let se=await(i?H(G,U):H(g,xe));const Ne=d&&(j==="stream"||j==="response");if(d&&(N||Ne&&re)){const ie={};["status","statusText","headers"].forEach(De=>{ie[De]=se[De]});const ne=u.toFiniteNumber(se.headers.get("content-length")),[ge,ce]=N&&ut(ne,Le(ct(N),!0))||[];se=new o(pt(se.body,ft,ge,()=>{ce&&ce(),re&&re()}),ie)}j=j||"text";let $e=await f[u.findKey(f,j)||"text"](se,p);return!Ne&&re&&re(),await new Promise((ie,ne)=>{Ft(ie,ne,{data:$e,headers:X.from(se.headers),status:se.status,statusText:se.statusText,config:p,request:G})})}catch(Z){throw re&&re(),Z&&Z.name==="TypeError"&&/Load failed|fetch/i.test(Z.message)?Object.assign(new O("Network Error",O.ERR_NETWORK,p,G),{cause:Z.cause||Z}):O.from(Z,Z&&Z.code,p,G)}}},ko=new Map,Ht=e=>{let t=e&&e.env||{};const{fetch:n,Request:o,Response:r}=t,i=[o,r,n];let s=i.length,a=s,m,c,d=ko;for(;a--;)m=i[a],c=d.get(m),c===void 0&&d.set(m,c=a?new Map:Do(t)),d=c;return c};Ht();const et={http:Wn,xhr:Oo,fetch:{get:Ht}};u.forEach(et,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const yt=e=>`- ${e}`,Io=e=>u.isFunction(e)||e===null||e===!1;function Po(e,t){e=u.isArray(e)?e:[e];const{length:n}=e;let o,r;const i={};for(let s=0;s`adapter ${m} `+(c===!1?"is not supported by the environment":"is not available in the build"));let a=n?s.length>1?`since : +`+s.map(yt).join(` +`):" "+yt(s[0]):"as no adapter specified";throw new O("There is no suitable adapter to dispatch the request "+a,"ERR_NOT_SUPPORT")}return r}const jt={getAdapter:Po,adapters:et};function Ye(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Ae(null,e)}function vt(e){return Ye(e),e.headers=X.from(e.headers),e.data=Ge.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),jt.getAdapter(e.adapter||Re.adapter,e)(e).then(function(o){return Ye(e),o.data=Ge.call(e,e.transformResponse,o),o.headers=X.from(o.headers),o},function(o){return Lt(o)||(Ye(e),o&&o.response&&(o.response.data=Ge.call(e,e.transformResponse,o.response),o.response.headers=X.from(o.response.headers))),Promise.reject(o)})}const $t="1.13.3",je={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{je[e]=function(o){return typeof o===e||"a"+(t<1?"n ":" ")+e}});const gt={};je.transitional=function(t,n,o){function r(i,s){return"[Axios v"+$t+"] Transitional option '"+i+"'"+s+(o?". "+o:"")}return(i,s,a)=>{if(t===!1)throw new O(r(s," has been removed"+(n?" in "+n:"")),O.ERR_DEPRECATED);return n&&!gt[s]&&(gt[s]=!0,console.warn(r(s," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(i,s,a):!0}};je.spelling=function(t){return(n,o)=>(console.warn(`${o} is likely a misspelling of ${t}`),!0)};function Uo(e,t,n){if(typeof e!="object")throw new O("options must be an object",O.ERR_BAD_OPTION_VALUE);const o=Object.keys(e);let r=o.length;for(;r-- >0;){const i=o[r],s=t[i];if(s){const a=e[i],m=a===void 0||s(a,i,e);if(m!==!0)throw new O("option "+i+" must be "+m,O.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new O("Unknown option "+i,O.ERR_BAD_OPTION)}}const Ue={assertOptions:Uo,validators:je},ae=Ue.validators;let fe=class{constructor(t){this.defaults=t||{},this.interceptors={request:new at,response:new at}}async request(t,n){try{return await this._request(t,n)}catch(o){if(o instanceof Error){let r={};Error.captureStackTrace?Error.captureStackTrace(r):r=new Error;const i=r.stack?r.stack.replace(/^.+\n/,""):"";try{o.stack?i&&!String(o.stack).endsWith(i.replace(/^.+\n.+\n/,""))&&(o.stack+=` +`+i):o.stack=i}catch{}}throw o}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=me(this.defaults,n);const{transitional:o,paramsSerializer:r,headers:i}=n;o!==void 0&&Ue.assertOptions(o,{silentJSONParsing:ae.transitional(ae.boolean),forcedJSONParsing:ae.transitional(ae.boolean),clarifyTimeoutError:ae.transitional(ae.boolean)},!1),r!=null&&(u.isFunction(r)?n.paramsSerializer={serialize:r}:Ue.assertOptions(r,{encode:ae.function,serialize:ae.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),Ue.assertOptions(n,{baseUrl:ae.spelling("baseURL"),withXsrfToken:ae.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let s=i&&u.merge(i.common,i[n.method]);i&&u.forEach(["delete","get","head","post","put","patch","common"],p=>{delete i[p]}),n.headers=X.concat(s,i);const a=[];let m=!0;this.interceptors.request.forEach(function(g){typeof g.runWhen=="function"&&g.runWhen(n)===!1||(m=m&&g.synchronous,a.unshift(g.fulfilled,g.rejected))});const c=[];this.interceptors.response.forEach(function(g){c.push(g.fulfilled,g.rejected)});let d,f=0,w;if(!m){const p=[vt.bind(this),void 0];p.unshift(...a),p.push(...c),w=p.length,d=Promise.resolve(n);let g=n;for(;f{g=b!==void 0?b:g}).catch(p[f++]).then(()=>g);return d}w=a.length;let x=n;for(;f{if(!o._listeners)return;let i=o._listeners.length;for(;i-- >0;)o._listeners[i](r);o._listeners=null}),this.promise.then=r=>{let i;const s=new Promise(a=>{o.subscribe(a),i=a}).then(r);return s.cancel=function(){o.unsubscribe(i)},s},t(function(i,s,a){o.reason||(o.reason=new Ae(i,s,a),n(o.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=o=>{t.abort(o)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new qt(function(r){t=r}),cancel:t}}};function Fo(e){return function(n){return e.apply(null,n)}}function Mo(e){return u.isObject(e)&&e.isAxiosError===!0}const Je={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(Je).forEach(([e,t])=>{Je[t]=e});function Vt(e){const t=new fe(e),n=wt(fe.prototype.request,t);return u.extend(n,fe.prototype,t,{allOwnKeys:!0}),u.extend(n,t,null,{allOwnKeys:!0}),n.create=function(r){return Vt(me(e,r))},n}const B=Vt(Re);B.Axios=fe;B.CanceledError=Ae;B.CancelToken=Lo;B.isCancel=Lt;B.VERSION=$t;B.toFormData=He;B.AxiosError=O;B.Cancel=B.CanceledError;B.all=function(t){return Promise.all(t)};B.spread=Fo;B.isAxiosError=Mo;B.mergeConfig=me;B.AxiosHeaders=X;B.formToJSON=e=>Ut(u.isHTMLForm(e)?new FormData(e):e);B.getAdapter=jt.getAdapter;B.HttpStatusCode=Je;B.default=B;const{Axios:Ga,AxiosError:Ya,CanceledError:za,isCancel:Wa,CancelToken:Ka,VERSION:Ja,all:Xa,Cancel:Qa,isAxiosError:Za,spread:el,toFormData:tl,AxiosHeaders:nl,HttpStatusCode:ol,formToJSON:rl,getAdapter:sl,mergeConfig:il}=B,{Alert:al,AuthCard:ll,Avatar:ul,Badge:cl,Button:ee,ButtonGroup:dl,Calendar:pl,Card:fl,CardList:ml,CardListItem:hl,CardPanel:bl,CharacterCounter:yl,Checkbox:Bo,CheckboxGroup:vl,CodeEditor:gl,Combobox:_l,CommandPaletteItem:Sl,ConfirmationModal:wl,Context:Tl,ContextFooter:El,ContextHeader:Ol,ContextItem:Rl,ContextLabel:Al,ContextMenu:Cl,ContextSeparator:xl,CreateForm:Nl,DatePicker:Dl,DateRangePicker:kl,Description:Il,DocsCallout:Pl,DragHandle:Ul,Dropdown:Ll,DropdownItem:Fl,DropdownLabel:Ml,DropdownMenu:Bl,DropdownSeparator:Hl,DropdownFooter:jl,DropdownHeader:$l,Editable:ql,ErrorMessage:Vl,EmptyStateItem:Gl,EmptyStateMenu:Yl,Field:de,Header:zl,Heading:Wl,HoverCard:Kl,Icon:Jl,Input:ue,InputGroup:Xl,InputGroupAppend:Ql,InputGroupPrepend:Zl,Label:be,Listing:eu,ListingCustomizeColumns:tu,ListingFilters:nu,ListingHeaderCell:ou,ListingPagination:ru,ListingPresets:su,ListingPresetTrigger:iu,ListingRowActions:au,ListingSearch:lu,ListingTable:uu,ListingTableBody:cu,ListingTableHead:du,ListingToggleAll:pu,LivePreview:fu,LivePreviewPopout:mu,Modal:hu,ModalClose:bu,ModalTitle:yu,Pagination:vu,Panel:gu,PanelFooter:_u,PanelHeader:Su,Popover:wu,PublishComponents:Tu,PublishContainer:Eu,publishContextKey:Ou,injectPublishContext:Ru,PublishField:Au,PublishFields:Cu,PublishFieldsProvider:xu,PublishForm:Nu,PublishLocalizations:Du,PublishSections:ku,PublishTabs:Iu,Radio:Pu,RadioGroup:Uu,Select:te,Separator:Lu,Slider:Fu,Skeleton:Mu,SplitterGroup:Bu,SplitterPanel:Hu,SplitterResizeHandle:ju,StatusIndicator:$u,Subheading:qu,Switch:Vu,TabContent:Gu,Stack:Yu,StackClose:zu,StackHeader:Wu,StackFooter:Ku,StackContent:Ju,Table:Xu,TableCell:Qu,TableColumn:Zu,TableColumns:ec,TableRow:tc,TableRows:nc,TabList:oc,TabProvider:rc,Tabs:sc,TabTrigger:ic,Textarea:ac,TimePicker:lc,ToggleGroup:uc,ToggleItem:cc,Widget:dc,registerIconSet:pc,registerIconSetFromStrings:fc}=__STATAMIC__.ui,Ho={class:"flex items-center space-x-2 flex-1"},jo={class:"text-sm font-medium text-gray-600"},$o={__name:"DateValueInput",props:{condition:{type:Object,required:!0},field:{type:Object,required:!0}},emits:["update-value"],setup(e,{emit:t}){const n=e,o=t,r=()=>{const f=n.condition.value;if(!f||typeof f=="string")return{selectedOption:"TODAY",offset:1,manualDate:""};if(f.type==="relative"){if(f.value)return{selectedOption:f.value,offset:1,manualDate:""};if(f.base){const w=f.offset>=0?"PLUS":"MINUS";return{selectedOption:`${f.base}_${w}_${f.unit.toUpperCase()}`,offset:Math.abs(f.offset),manualDate:""}}}else if(f.type==="manual")return{selectedOption:"OTHER",offset:1,manualDate:f.value};return{selectedOption:"TODAY",offset:1,manualDate:""}},i=()=>[{value:"TODAY",label:__("Today")},{value:"TOMORROW",label:__("Tomorrow")},{value:"YESTERDAY",label:__("Yesterday")},{value:"TODAY_PLUS_DAYS",label:__("Today + X days")},{value:"TODAY_PLUS_WEEKS",label:__("Today + X weeks")},{value:"TODAY_PLUS_MONTHS",label:__("Today + X months")},{value:"TODAY_PLUS_YEARS",label:__("Today + X years")},{value:"TODAY_MINUS_DAYS",label:__("Today - X days")},{value:"TODAY_MINUS_WEEKS",label:__("Today - X weeks")},{value:"TODAY_MINUS_MONTHS",label:__("Today - X months")},{value:"TODAY_MINUS_YEARS",label:__("Today - X years")},{value:"OTHER",label:__("Other...")}],s=f=>["TODAY_PLUS_DAYS","TODAY_PLUS_WEEKS","TODAY_PLUS_MONTHS","TODAY_PLUS_YEARS","TODAY_MINUS_DAYS","TODAY_MINUS_WEEKS","TODAY_MINUS_MONTHS","TODAY_MINUS_YEARS"].includes(f),a=f=>({TODAY_PLUS_DAYS:__("Days"),TODAY_MINUS_DAYS:__("Days"),TODAY_PLUS_WEEKS:__("Weeks"),TODAY_MINUS_WEEKS:__("Weeks"),TODAY_PLUS_MONTHS:__("Months"),TODAY_MINUS_MONTHS:__("Months"),TODAY_PLUS_YEARS:__("Years"),TODAY_MINUS_YEARS:__("Years")})[f]||"",m=f=>{if(["TODAY","TOMORROW","YESTERDAY"].includes(f))o("update-value",{type:"relative",value:f});else if(s(f)){const w=f.split("_"),x=w[0],p=w[1],g=w[2].toLowerCase();o("update-value",{type:"relative",base:x,offset:p==="MINUS"?-1:1,unit:g})}else f==="OTHER"&&o("update-value",{type:"manual",value:""})},c=f=>{const w=n.condition.value;if(w.type==="relative"&&w.base){const x=w.offset>=0?1:-1;o("update-value",{...w,offset:x*Math.abs(parseInt(f)||1)})}},d=f=>{o("update-value",{type:"manual",value:f})};return(f,w)=>(C(),L("div",Ho,[D(R(te),{"model-value":r().selectedOption,options:i(),reduce:x=>x.value,label:"label",class:"flex-1",placeholder:f.__("Select date option"),"onUpdate:modelValue":m},null,8,["model-value","options","reduce","placeholder"]),s(r().selectedOption)?(C(),L(we,{key:0},[D(R(ue),{type:"number",value:r().offset,class:"input-text w-20",placeholder:1,min:"1",onInput:w[0]||(w[0]=x=>c(x.target.value))},null,8,["value"]),P("span",jo,F(a(r().selectedOption)),1)],64)):M("",!0),r().selectedOption==="OTHER"?(C(),q(R(ue),{key:1,type:"date",value:r().manualDate,class:"input-text flex-1",onInput:w[1]||(w[1]=x=>d(x.target.value))},null,8,["value"])):M("",!0)]))}},qo={class:"flex-1 min-w-0"},Vo={__name:"SelectValueInput",props:{condition:{type:Object,required:!0},field:{type:Object,required:!0}},emits:["update-value"],setup(e){const t=e,n=le(()=>{var o;return((o=t.field)==null?void 0:o.type)==="select"&&["IN","NOT IN"].includes(t.condition.operator)});return(o,r)=>(C(),L("div",qo,[n.value?(C(),q(R(te),{key:0,"model-value":e.condition.value,options:e.field.options||[],reduce:i=>i.value,label:"label",multiple:"",placeholder:o.__("Select Values"),"onUpdate:modelValue":r[0]||(r[0]=i=>o.$emit("update-value",i))},null,8,["model-value","options","reduce","placeholder"])):(C(),q(R(te),{key:1,"model-value":e.condition.value,options:e.field.options||[],reduce:i=>i.value,label:"label",placeholder:o.__("Select Value"),"onUpdate:modelValue":r[1]||(r[1]=i=>o.$emit("update-value",i))},null,8,["model-value","options","reduce","placeholder"]))]))}},Go={class:"flex items-center space-x-2 flex-1"},Yo={__name:"BetweenValueInput",props:{condition:{type:Object,required:!0},field:{type:Object,required:!0}},emits:["update-value"],setup(e,{emit:t}){const n=e,o=t,r=()=>{const a=n.condition.value;return!a||typeof a=="string"?{min:"",max:""}:Array.isArray(a)?{min:a[0]||"",max:a[1]||""}:a},i=a=>{const m=r();o("update-value",[a,m.max])},s=a=>{const m=r();o("update-value",[m.min,a])};return(a,m)=>(C(),L("div",Go,[D(R(ue),{type:"text",value:r().min,class:"input-text flex-1",placeholder:a.__("Min value"),onInput:m[0]||(m[0]=c=>i(c.target.value))},null,8,["value","placeholder"]),P("span",null,F(a.__("and")),1),D(R(ue),{type:"text",value:r().max,class:"input-text flex-1",placeholder:a.__("Max value"),onInput:m[1]||(m[1]=c=>s(c.target.value))},null,8,["value","placeholder"])]))}},zo={class:"flex items-center space-x-2 flex-1"},Wo={__name:"DaysValueInput",props:{condition:{type:Object,required:!0},field:{type:Object,required:!0}},emits:["update-value"],setup(e){return(t,n)=>(C(),L("div",zo,[D(R(ue),{type:"number",value:e.condition.value,class:"input-text flex-1",placeholder:t.__("Number of days"),min:"1",onInput:n[0]||(n[0]=o=>t.$emit("update-value",parseInt(o.target.value)||1))},null,8,["value","placeholder"]),P("span",null,F(t.__("days")),1)]))}},Ko={__name:"TextValueInput",props:{condition:{type:Object,required:!0},field:{type:Object,required:!0}},emits:["update-value"],setup(e){return(t,n)=>(C(),q(R(ue),{type:"text",value:e.condition.value,class:"input-text flex-1",placeholder:t.__("Enter value"),onInput:n[0]||(n[0]=o=>t.$emit("update-value",o.target.value))},null,8,["value","placeholder"]))}},Jo={class:"flex items-center space-x-4 p-3 rounded-md"},Xo={__name:"QueryCondition",props:{condition:{type:Object,required:!0},conditionIndex:{type:Number,required:!0},groupIndex:{type:Number,required:!0},fields:{type:Array,required:!0},operators:{type:Object,required:!0}},emits:["update-condition","remove-condition"],setup(e,{emit:t}){const n=e,o=t,r=()=>n.fields.find(h=>h.value===n.condition.attribute),i=h=>{const E=n.fields.find(N=>N.value===h);return(E==null?void 0:E.type)==="date"},s=h=>{const E=n.fields.find(N=>N.value===(h==null?void 0:h.attribute));return(E==null?void 0:E.type)==="select"&&["IN","NOT IN"].includes(h==null?void 0:h.operator)},a=h=>{const E=n.fields.find(N=>N.value===(h==null?void 0:h.attribute));return(E==null?void 0:E.type)==="select"&&!["IN","NOT IN"].includes(h==null?void 0:h.operator)},m=h=>!["IS_NULL","IS_NOT_NULL","THIS_WEEK","THIS_MONTH","THIS_YEAR"].includes(h),c=h=>["BETWEEN","NOT_BETWEEN"].includes(h),d=h=>["LAST_X_DAYS","NEXT_X_DAYS"].includes(h),f=()=>s(n.condition)||a(n.condition)?Vo:c(n.condition.operator)?Yo:d(n.condition.operator)?Wo:i(n.condition.attribute)?$o:Ko,w=h=>{const E=r();return E&&E.operators?E.operators.map(N=>({value:N,label:x(N)})):E&&n.operators[E.type]?n.operators[E.type]:n.operators.text},x=h=>{const N=[...n.operators.text,...n.operators.select,...n.operators.number,...n.operators.date].find(Q=>Q.value===h);return N?N.label:h},p=h=>{var N;const E={...n.condition,attribute:h,operator:((N=w()[0])==null?void 0:N.value)||"=",value:T(h)};o("update-condition",n.conditionIndex,E)},g=h=>{const E={...n.condition,operator:h,value:A(h)};o("update-condition",n.conditionIndex,E)},b=h=>{const E={...n.condition,value:h};o("update-condition",n.conditionIndex,E)},T=h=>{const E=n.fields.find(N=>N.value===h);return(E==null?void 0:E.type)==="date"?{type:"relative",value:"TODAY"}:""},A=h=>c(h)?{min:"",max:""}:m(h)?n.condition.value:null;return(h,E)=>(C(),L("div",Jo,[D(R(te),{"model-value":e.condition.attribute,options:e.fields,reduce:N=>N.value,label:"label",class:"w-1/3",placeholder:h.__("Select Field"),"onUpdate:modelValue":p},null,8,["model-value","options","reduce","placeholder"]),D(R(te),{"model-value":e.condition.operator,options:w(e.condition.attribute),reduce:N=>N.value,label:"label",class:"w-1/4",placeholder:h.__("Select Operator"),"onUpdate:modelValue":g},null,8,["model-value","options","reduce","placeholder"]),m(e.condition.operator)?(C(),q(an(f()),{key:0,condition:e.condition,field:r(),onUpdateValue:b},null,40,["condition","field"])):M("",!0),D(R(ee),{class:"btn-danger",onClick:E[0]||(E[0]=N=>h.$emit("remove-condition",e.conditionIndex)),title:"Remove condition"},{default:I(()=>[...E[1]||(E[1]=[z(" × ",-1)])]),_:1})]))}},Qo={class:"flex items-center justify-between mb-4 pb-2 border-b border-gray-200"},Zo={class:"flex items-center space-x-4"},er={class:"flex items-center space-x-2"},tr={key:0,class:"text-blue-600"},nr={class:"flex items-center space-x-2"},or={class:"flex items-center space-x-1"},rr={key:0,class:"text-sm text-gray-600"},sr={key:1,class:"space-y-3"},ir={key:2,class:"text-center py-4 text-gray-500 text-sm"},ar={__name:"QueryGroup",props:{group:{type:Object,required:!0},groupIndex:{type:Number,required:!0},parentGroupIndex:{type:Number,default:null},fields:{type:Array,required:!0},operators:{type:Object,required:!0},isNested:{type:Boolean,default:!1},displayIndex:{type:[Number,String],default:null},canMoveUp:{type:Boolean,default:!1},canMoveDown:{type:Boolean,default:!1},canRemove:{type:Boolean,default:!0},canDuplicate:{type:Boolean,default:!0}},emits:["update-group","remove-group","duplicate-group","move-group-up","move-group-down","add-condition","add-nested-group","add-condition-to-nested","add-nested-group-to-nested","update-condition","update-nested-condition","remove-condition","remove-nested-condition"],setup(e,{emit:t}){const n=e,o=t,r=["AND","OR"],i=W(!1),s=W({...n.group});ln(()=>n.group,S=>{s.value={...S}},{deep:!0});const a=le(()=>[{label:__("Add Condition"),value:"condition"},{label:__("Add Nested Group"),value:"nested-group"}]),m=le(()=>s.value.conditions&&s.value.conditions.length>0);le(()=>n.displayIndex!==null?n.displayIndex:n.groupIndex+1);const c=S=>{o(S==="condition"?"add-condition":"add-nested-group",n.groupIndex)},d=()=>{i.value=!i.value},f=()=>{const S=s.value.conditions.filter(H=>!H.type||H.type!=="group"),v=s.value.conditions.filter(H=>H.type==="group"),U=[];return S.length>0&&U.push(`${S.length} condition${S.length!==1?"s":""}`),v.length>0&&U.push(`${v.length} nested group${v.length!==1?"s":""}`),U.join(", ")||__("No conditions")},w=(S,v)=>S.type==="group"?`nested-group-${v}`:`condition-${v}`,x=S=>{let v=0;for(let U=0;U{s.value.name=S.target.value,o("update-group",n.groupIndex,{...s.value})},g=S=>{s.value={...s.value,conjunction:S},o("update-group",n.groupIndex,{...s.value})},b=(S,v)=>{o("update-condition",n.groupIndex,S,v)},T=S=>{o("remove-condition",n.groupIndex,S)},A=(S,v)=>{const U={...s.value};U.conditions[S]={...v,type:"group"},o("update-group",n.groupIndex,U)},h=S=>{const v={...s.value};v.conditions.splice(S,1),o("update-group",n.groupIndex,v)},E=S=>{const v={...s.value},U=v.conditions[S];v.conditions.splice(S+1,0,{...U,type:"group"}),o("update-group",n.groupIndex,v)},N=S=>{if(S>0){const v={...s.value},U=v.conditions[S];v.conditions[S]=v.conditions[S-1],v.conditions[S-1]=U,o("update-group",n.groupIndex,v)}},Q=S=>{if(S{o(S,n.groupIndex,...v)};return(S,v)=>{const U=sn("query-group",!0);return C(),L("div",{class:ot(["border rounded-lg p-4",e.isNested?"border-blue-200 bg-blue-50/30":"border-gray-300"])},[P("div",Qo,[P("div",Zo,[P("div",er,[e.isNested?(C(),L("span",tr,"⚬")):M("",!0),P("h3",{class:ot(["font-bold",e.isNested?"text-sm text-blue-700":"text-base"])},[D(R(ue),{type:"text",value:s.value.name,class:"input-text",placeholder:(e.isNested?S.__("Nested Group"):S.__("Group"))+" "+e.displayIndex,onInput:p},null,8,["value","placeholder"])],2),m.value?(C(),q(R(ee),{key:1,onClick:d,class:"text-blue-600 hover:text-blue-800",title:i.value?S.__("Expand"):S.__("Collapse")},{default:I(()=>[z(F(i.value?"▶":"▼"),1)]),_:1},8,["title"])):M("",!0)]),D(R(te),{"model-value":s.value.conjunction,options:r,class:"w-32","onUpdate:modelValue":g},null,8,["model-value"])]),P("div",nr,[D(R(te),{options:a.value,reduce:H=>H.value,label:"label",placeholder:S.__("Add..."),class:"w-40","onUpdate:modelValue":c},null,8,["options","reduce","placeholder"]),P("div",or,[e.canMoveUp?(C(),q(R(ee),{key:0,class:"btn p-2",onClick:v[0]||(v[0]=H=>S.$emit("move-group-up",e.groupIndex)),title:S.__("Move group up")},{default:I(()=>[...v[8]||(v[8]=[z(" ↑ ",-1)])]),_:1},8,["title"])):M("",!0),e.canMoveDown?(C(),q(R(ee),{key:1,class:"btn p-2",onClick:v[1]||(v[1]=H=>S.$emit("move-group-down",e.groupIndex)),title:S.__("Move group down")},{default:I(()=>[...v[9]||(v[9]=[z(" ↓ ",-1)])]),_:1},8,["title"])):M("",!0)]),e.canRemove?(C(),q(R(ee),{key:0,class:"btn-danger",onClick:v[2]||(v[2]=H=>S.$emit("remove-group",e.groupIndex))},{default:I(()=>[z(F(S.__("Remove Group")),1)]),_:1})):M("",!0),e.canDuplicate?(C(),q(R(ee),{key:1,class:"btn-primary",onClick:v[3]||(v[3]=H=>S.$emit("duplicate-group",e.groupIndex))},{default:I(()=>[...v[10]||(v[10]=[P("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor",class:"size-6"},[P("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 12h3.75M9 15h3.75M9 18h3.75m3 .75H18a2.25 2.25 0 0 0 2.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 0 0-1.123-.08m-5.801 0c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15c1.012 0 1.867.668 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m0 0H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V9.375c0-.621-.504-1.125-1.125-1.125H8.25ZM6.75 12h.008v.008H6.75V12Zm0 3h.008v.008H6.75V15Zm0 3h.008v.008H6.75V18Z"})],-1)])]),_:1})):M("",!0)])]),i.value&&m.value?(C(),L("div",rr,F(f()),1)):M("",!0),i.value?M("",!0):(C(),L("div",sr,[(C(!0),L(we,null,St(s.value.conditions,(H,K)=>(C(),L(we,{key:w(H,K)},[!H.type||H.type!=="group"?(C(),q(Xo,{key:0,condition:H,"condition-index":K,"group-index":e.groupIndex,fields:e.fields,operators:e.operators,onUpdateCondition:b,onRemoveCondition:T},null,8,["condition","condition-index","group-index","fields","operators"])):(C(),q(U,{key:1,group:H,"group-index":K,"parent-group-index":e.groupIndex,fields:e.fields,operators:e.operators,"is-nested":!0,"display-index":x(K)+1,"can-move-up":K>0,"can-move-down":Kj("add-condition-to-nested",G)),onAddNestedGroup:v[5]||(v[5]=G=>j("add-nested-group-to-nested",G)),onUpdateCondition:v[6]||(v[6]=G=>j("update-nested-condition",G)),onRemoveCondition:v[7]||(v[7]=G=>j("remove-nested-condition",G))},null,8,["group","group-index","parent-group-index","fields","operators","display-index","can-move-up","can-move-down"]))],64))),128))])),m.value?M("",!0):(C(),L("div",ir,F(S.__("No conditions added yet")),1))],2)}}},lr=(e,t)=>{const n=e.__vccOpts||e;for(const[o,r]of t)n[o]=r;return n},ur={class:"query-builder max-w-4xl mx-auto"},cr={class:"flex flex-col justify-between w-full space-x-4 gap-4"},dr={class:"flex gap-2"},pr={class:"flex gap-2"},fr={class:"flex items-center space-x-2"},mr={key:0,class:"font-semibold text-gray-600 px-2 py-1 bg-gray-50 border-b"},hr={key:1,class:"px-4 py-2 hover:bg-blue-50"},br={class:"font-medium"},yr={key:0,class:"text-sm text-gray-500 mt-1"},vr={class:"space-y-6"},gr={key:0,class:"flex justify-center"},_r={key:0,class:"text-center py-8 bg-gray-50 rounded-lg"},Sr={class:"text-gray-500 mb-4"},wr={key:1,class:"mt-6 pt-4 border-t border-gray-200"},Tr={key:2,class:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50"},Er={class:"bg-white p-6 rounded-lg shadow-lg max-w-md w-full mx-4"},Or={class:"text-lg font-semibold mb-4"},Rr={class:"text-gray-600 mb-6"},Ar={class:"flex space-x-3"},Cr={__name:"QueryBuilder",props:{fields:{type:Array,required:!0,validator:e=>e.length===0?!0:e[0].label&&e[0].options?e.every(t=>"label"in t&&"options"in t&&t.options.every(n=>"label"in n&&"value"in n&&"type"in n)):e.every(t=>"label"in t&&"value"in t&&"type"in t)},sortFields:{type:Array,required:!0,validator:e=>e.every(t=>"label"in t&&"value"in t&&"type"in t)},defaultSortField:{type:String,default:""},defaultSortDirection:{type:String,default:"desc"},defaultBuilderTemplate:{type:String,default:""},builderTemplates:{type:Array,default:[]},operators:{type:Object,default:()=>({text:[{value:"=",label:__("Is exactly")},{value:"!=",label:__("Is not")},{value:"LIKE",label:__("Contains")},{value:"NOT LIKE",label:__("Does not contain")},{value:"STARTS_WITH",label:__("Starts with")},{value:"ENDS_WITH",label:__("Ends with")},{value:"IS_NULL",label:__("Is empty")},{value:"IS_NOT_NULL",label:__("Is not empty")}],select:[{value:"=",label:__("Is")},{value:"!=",label:__("Is not")},{value:"IN",label:__("Is any of")},{value:"NOT IN",label:__("Is none of")},{value:"IS_NULL",label:__("Nothing selected")},{value:"IS_NOT_NULL",label:__("Has selection")}],number:[{value:"=",label:__("Equals")},{value:"!=",label:__("Does not equal")},{value:">",label:__("Greater than")},{value:"<",label:__("Less than")},{value:">=",label:__("Greater than or equal to")},{value:"<=",label:__("Less than or equal to")},{value:"BETWEEN",label:__("Is between")},{value:"NOT_BETWEEN",label:__("Is not between")},{value:"IS_NULL",label:__("Is empty")},{value:"IS_NOT_NULL",label:__("Is not empty")}],date:[{value:"=",label:__("Is on")},{value:"!=",label:__("Is not on")},{value:">",label:__("Is after")},{value:"<",label:__("Is before")},{value:">=",label:__("Is on or after")},{value:"<=",label:__("Is on or before")},{value:"BETWEEN",label:__("Is between")},{value:"NOT_BETWEEN",label:__("Is not between")},{value:"LAST_X_DAYS",label:__("In the last days")},{value:"NEXT_X_DAYS",label:__("In the next days")},{value:"THIS_WEEK",label:__("This week")},{value:"THIS_MONTH",label:__("This month")},{value:"THIS_YEAR",label:__("This year")},{value:"IS_NULL",label:__("No date set")},{value:"IS_NOT_NULL",label:__("Has date")}]})},defaultLimit:{type:Number,default:100},showLimit:{type:Boolean,default:!0},value:{type:Object,default:()=>({})}},emits:["update:model-value"],setup(e,{emit:t}){const n=e,o=t,r=rn(),i=r==null?void 0:r.appContext.config.globalProperties.$toast,s=W([]),a=W(""),m=W(100),c=W(!0),d=W("AND"),f=["AND","OR"],w=W(""),x=W(""),p=["ASC","DESC"],g=W({}),b=W(!1),T=W(null),A=le(()=>{var l;return(l=n.fields[0])!=null&&l.options?n.fields.flatMap(y=>y.options):n.fields}),h=le(()=>{const l=[];return Object.keys(g.value).forEach(y=>{const _=g.value[y];l.push({name:_.label,category:_.label,disabled:!0,isHeader:!0}),_.presets.forEach(k=>{l.push({...k,categoryKey:y,isHeader:!1})})}),l}),E=le(()=>!n.builderTemplates||!Array.isArray(n.builderTemplates)?null:n.builderTemplates.find(l=>(l.value||l)===a.value)||null),N=le(()=>{if(!n.showLimit)return!1;const l=E.value;return!(l&&typeof l=="object"&&l.hideLimit)}),Q=async()=>{try{const l=await B.get("/cp/rapidez/query-presets");l.data.success?g.value=l.data.categories:i==null||i.error(__("Failed to load query presets"))}catch(l){console.error("Error fetching presets:",l),i==null||i.error(__("Error loading presets"))}},j=l=>{!l||l.disabled||l.isHeader||(s.value.length>0?(T.value=l,b.value=!0):U(l))},S=l=>{b.value=!1,l==="override"?(s.value=[],U(T.value)):l==="merge"&&U(T.value,!0),T.value=null},v=()=>{b.value=!1,T.value=null},U=(l,y=!1)=>{const _=H(l.query);y?s.value.push(..._.groups):(s.value=_.groups,d.value=_.globalConjunction),$()},H=l=>{const y={groups:[],globalConjunction:l.globalConjunction||"AND"},_=[];return l.groups.forEach(k=>{const Y=K(k,_);Y.conditions.length>0&&y.groups.push(Y)}),_.length>0&&_.forEach(k=>{i==null||i.info(k)}),y},K=(l,y)=>{const _={conjunction:l.conjunction||"AND",conditions:[]};return l.conditions.forEach(k=>{if(k.type==="group"){const Y=K(k,y);Y.conditions.length>0&&_.conditions.push({...Y,type:"group"})}else{const Y=G(k,y);Y&&_.conditions.push(Y)}}),_},G=(l,y)=>{var nt;const _=A.value.find(he=>he.value===l.attribute);if(!_)return y.push(`Field "${l.attribute}" not found - skipping condition`),null;const k={...l},Y=re(_);if(!Y.some(he=>he.value===l.operator)){const he=((nt=Y[0])==null?void 0:nt.value)||"=";y.push(`Operator "${l.operator}" not valid for field "${_.label}" - using "${he}"`),k.operator=he}return k},re=l=>l&&l.operators?l.operators.map(y=>({value:y,label:Ce(y)})):l&&n.operators[l.type]||n.operators.text,Ce=l=>{const _=[...n.operators.text,...n.operators.select,...n.operators.number,...n.operators.date].find(k=>k.value===l);return _?_.label:l},Z=()=>{var l,y;return(y=(l=n.value)==null?void 0:l.groups)!=null&&y.length?n.value.groups:[{conjunction:"AND",conditions:[]}]},xe=()=>{var l;return(l=n.value)!=null&&l.limit?n.value.limit:n.defaultLimit},se=()=>{var l;return(l=n.value)!=null&&l.sortField?n.value.sortField:n.defaultSortField},Ne=()=>{var l;return(l=n.value)!=null&&l.sortDirection?n.value.sortDirection:n.defaultSortDirection},$e=()=>{var l;return typeof((l=n.value)==null?void 0:l.useDefaultQuery)<"u"?!!n.value.useDefaultQuery:!0},ie=()=>{var l;return(l=n.value)!=null&&l.builderTemplate?n.value.builderTemplate:n.defaultBuilderTemplate},ne=()=>({name:"",conjunction:"AND",conditions:[]}),ge=()=>{s.value.push(ne()),$()},ce=l=>{s.value.splice(l,0,ne()),$()},De=l=>{const y=s.value[l];s.value.splice(l+1,0,{...y}),$()},Gt=l=>{s.value.splice(l,1),$()},Yt=(l,y)=>{s.value[l]=y,$()},zt=l=>{if(l>0){const y=s.value[l];s.value[l]=s.value[l-1],s.value[l-1]=y,$()}},Wt=l=>{if(l{const y=tt();s.value[l].conditions.push(y),$()},Jt=(l,y,_)=>{s.value[l].conditions[y]=_,$()},Xt=(l,y)=>{s.value[l].conditions.splice(y,1),$()},Qt=l=>{const y={type:"group",...ne()};s.value[l].conditions.push(y),$()},Zt=(l,y)=>{const _=tt();s.value[l].conditions[y].conditions.push(_),$()},en=(l,y)=>{const _={type:"group",...ne()};s.value[l].conditions[y].conditions.push(_),$()},tn=(l,y,_,k)=>{s.value[l].conditions[y].conditions[_]=k,$()},nn=(l,y,_)=>{s.value[l].conditions[y].conditions.splice(_,1),$()},tt=()=>{var k;const l=A.value[0],y=((k=re(l)[0])==null?void 0:k.value)||"=";let _="";return(l==null?void 0:l.type)==="date"&&(_={type:"relative",value:"TODAY"}),{attribute:(l==null?void 0:l.value)||"",operator:y,value:_}},$=()=>{const l={groups:s.value,globalConjunction:d.value,limit:m.value,useDefaultQuery:c.value,builderTemplate:a.value,sortField:w.value,sortDirection:x.value};o("update:model-value",l)},_e=()=>{const l={...n.value};l.limit=parseInt(m.value)||n.defaultLimit,l.useDefaultQuery=!!c.value,l.builderTemplate=a.value||n.defaultBuilderTemplate,l.sortField=w.value||n.defaultSortField,l.sortDirection=x.value||n.defaultSortDirection,o("update:model-value",l)};return _t(()=>{s.value=Z(),m.value=xe(),w.value=se(),x.value=Ne(),a.value=ie(),c.value=$e(),Q()}),(l,y)=>(C(),L("div",ur,[P("div",cr,[P("div",dr,[D(R(de),{class:"self-end"},{default:I(()=>[D(R(Bo),{id:"useDefaultQuery",label:l.__("Use default Query"),modelValue:c.value,"onUpdate:modelValue":y[0]||(y[0]=_=>c.value=_),onChange:y[1]||(y[1]=_=>{c.value=_.target.checked,_e()})},null,8,["label","modelValue"])]),_:1}),e.builderTemplates?(C(),q(R(de),{key:0},{default:I(()=>[D(R(be),{for:"template",class:"text-sm"},{default:I(()=>[z(F(l.__("Template")),1)]),_:1}),D(R(te),{name:"builderTemplate","model-value":a.value,options:e.builderTemplates,reduce:_=>_.value,class:"w-36","onUpdate:modelValue":y[2]||(y[2]=_=>{a.value=_,_e()})},null,8,["model-value","options","reduce"])]),_:1})):M("",!0),N.value?(C(),q(R(de),{key:1},{default:I(()=>[D(R(be),{for:"limit",class:"text-sm"},{default:I(()=>[z(F(l.__("Limit results")),1)]),_:1}),D(R(ue),{type:"number",name:"limit",id:"limit",value:m.value,class:"input-text w-24",min:"1",onInput:y[3]||(y[3]=_=>{m.value=parseInt(_.target.value)||n.defaultLimit,_e()})},null,8,["value"])]),_:1})):M("",!0)]),P("div",pr,[e.sortFields?(C(),q(R(de),{key:0},{default:I(()=>[D(R(be),{for:"template",class:"text-sm"},{default:I(()=>[z(F(l.__("Sort")),1)]),_:1}),D(R(te),{name:"sortField","model-value":w.value,options:e.sortFields,reduce:_=>_.value,class:"w-36","onUpdate:modelValue":y[4]||(y[4]=_=>{w.value=_,_e()})},null,8,["model-value","options","reduce"])]),_:1})):M("",!0),e.sortFields?(C(),q(R(de),{key:1},{default:I(()=>[D(R(be),{for:"template",class:"text-sm"},{default:I(()=>[z(F(l.__("Sort Direction")),1)]),_:1}),D(R(te),{name:"sortDirection","model-value":x.value,options:p,class:"w-36","onUpdate:modelValue":y[5]||(y[5]=_=>{x.value=_,_e()})},null,8,["model-value"])]),_:1})):M("",!0)])]),P("div",fr,[h.value.length>0?(C(),q(R(de),{key:0},{default:I(()=>[D(R(be),{class:"text-sm"},{default:I(()=>[z(F(l.__("Presets")),1)]),_:1}),D(R(te),{options:h.value,reduce:_=>_,label:"name",placeholder:l.__("Select Preset"),class:"w-48","onUpdate:modelValue":j},{option:I(({name:_,isHeader:k,description:Y})=>[k?(C(),L("div",mr,F(_),1)):(C(),L("div",hr,[P("div",br,F(_),1),Y?(C(),L("div",yr,F(Y),1)):M("",!0)]))]),_:1},8,["options","reduce","placeholder"])]),_:1})):M("",!0),D(R(ee),{class:"btn-primary",onClick:ge},{default:I(()=>[z(F(l.__("Add Group")),1)]),_:1})]),P("div",vr,[s.value.length>0?(C(),L("div",gr,[D(R(ee),{class:"insert-group-btn",onClick:y[6]||(y[6]=_=>ce(0)),title:l.__("Insert group here")},{default:I(()=>[...y[10]||(y[10]=[P("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[P("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 6v6m0 0v6m0-6h6m-6 0H6"})],-1)])]),_:1},8,["title"])])):M("",!0),(C(!0),L(we,null,St(s.value,(_,k)=>(C(),L(we,{key:`group-${k}`},[D(ar,{group:_,"group-index":k,fields:A.value,operators:e.operators,"display-index":k+1,"can-move-up":k>0,"can-move-down":k1,onUpdateGroup:Yt,onRemoveGroup:Gt,onDuplicateGroup:De,onMoveGroupUp:zt,onMoveGroupDown:Wt,onAddCondition:Kt,onAddNestedGroup:Qt,onAddConditionToNested:Zt,onAddNestedGroupToNested:en,onUpdateCondition:Jt,onUpdateNestedCondition:tn,onRemoveCondition:Xt,onRemoveNestedCondition:nn},null,8,["group","group-index","fields","operators","display-index","can-move-up","can-move-down","can-remove"]),kce(k+1),title:l.__("Insert group here")},{default:I(()=>[...y[11]||(y[11]=[P("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[P("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 6v6m0 0v6m0-6h6m-6 0H6"})],-1)])]),_:1},8,["onClick","title"])])):M("",!0)],64))),128))]),s.value.length?M("",!0):(C(),L("div",_r,[P("p",Sr,F(l.__('No groups added yet. Click "Add Group" to start building your query.')),1)])),s.value.length>1?(C(),L("div",wr,[D(R(de),null,{default:I(()=>[D(R(be),{class:"font-bold"},{default:I(()=>[z(F(l.__("Combine Groups with:")),1)]),_:1}),D(R(te),{"model-value":d.value,options:f,class:"w-32","onUpdate:modelValue":y[7]||(y[7]=_=>{d.value=_,$()})},null,8,["model-value"])]),_:1})])):M("",!0),b.value?(C(),L("div",Tr,[P("div",Er,[P("h3",Or,F(l.__("Apply Preset")),1),P("p",Rr,F(l.__("You have an existing query. How would you like to apply this preset?")),1),P("div",Ar,[D(R(ee),{class:"btn flex-1",onClick:y[8]||(y[8]=_=>S("merge"))},{default:I(()=>[z(F(l.__("Merge")),1)]),_:1}),D(R(ee),{class:"btn-primary flex-1",onClick:y[9]||(y[9]=_=>S("override"))},{default:I(()=>[z(F(l.__("Override")),1)]),_:1}),D(R(ee),{class:"btn flex-1",onClick:v},{default:I(()=>[z(F(l.__("Cancel")),1)]),_:1})])])])):M("",!0)]))}},xr=lr(Cr,[["__scopeId","data-v-99de8cc4"]]),Nr={__name:"ProductQueryBuilder",props:qe.props,emits:qe.emits,setup(e,{expose:t,emit:n}){const o=n,r=e,{expose:i,update:s}=qe.use(o,r);t(i);const a=W([]),m=W([]),c=W([]),d=[{label:"Slider",value:"slider"},{label:"Listing",value:"listing",hideLimit:!0}],f=[{key:"attribute",label:"Attributes",prefix:"attribute."},{key:"stock",label:"Stock",prefix:"",fields:[{label:"Stock Status",value:"stock_status",type:"select",operators:["=","!="],options:[{label:"In Stock",value:"in_stock"},{label:"Out of Stock",value:"out_of_stock"}]}]}],w=async()=>{try{const T=await B.get("/cp/rapidez/product-attributes");a.value=T.data.map(A=>({label:A.frontend_label?A.frontend_label+` (${A.code})`:A.code,value:`attribute.${A.code}`,type:g(A.input),options:b(A.attribute_options)})),p()}catch(T){console.error("Error fetching attributes:",T)}},x=async()=>{try{const T=await B.get("/cp/rapidez/sorting-options"),A=Array.isArray(T.data)?T.data:[];if(!A.length)return;c.value=A.filter(h=>h&&h.value)}catch(T){console.error("Error fetching sorting options:",T),c.value=[{label:"Newest",value:"created_at"},{label:"Oldest",value:"created_at"}]}},p=()=>{m.value=f.map(T=>T.key==="attribute"?{label:T.label,options:a.value}:{label:T.label,options:T.fields.map(A=>({...A,value:T.prefix?`${T.prefix}${A.value}`:A.value}))})},g=T=>({text:"text",textarea:"text",select:"select",multiselect:"select",boolean:"select",price:"number",weight:"number",date:"date",datetime:"date",timestamp:"date"})[T]||"text",b=T=>T.length?(typeof T=="object"&&!Array.isArray(T)&&(T=Object.values(T)),T.map(A=>({label:A.store_value||A.option_id,value:A.store_value||A.option_id}))):[];return _t(()=>{w(),x()}),(T,A)=>{var h;return C(),L("div",null,[D(xr,{fields:m.value,"sort-fields":c.value,"default-sort-field":(h=c.value[0])==null?void 0:h.value,"default-limit":100,"show-limit":!0,"builder-templates":d,"default-builder-template":"slider",value:T.value,"onUpdate:modelValue":R(s)},null,8,["fields","sort-fields","default-sort-field","value","onUpdate:modelValue"])])}}};Statamic.booting(()=>{Statamic.$components.register("product_query_builder-fieldtype",Nr)}); diff --git a/resources/dist/build/assets/statamic-query-builder-d534377b.css b/resources/dist/build/assets/statamic-query-builder-CVyH-oa3.css similarity index 86% rename from resources/dist/build/assets/statamic-query-builder-d534377b.css rename to resources/dist/build/assets/statamic-query-builder-CVyH-oa3.css index 3f187cc..2786587 100644 --- a/resources/dist/build/assets/statamic-query-builder-d534377b.css +++ b/resources/dist/build/assets/statamic-query-builder-CVyH-oa3.css @@ -1 +1 @@ -.insert-group-btn[data-v-6704df36]{display:flex;height:2rem;width:2rem;align-items:center;justify-content:center;border-radius:9999px;border-width:2px;border-style:dashed;--tw-border-opacity: 1;border-color:rgb(147 197 253 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.insert-group-btn[data-v-6704df36]:hover{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)} +.insert-group-btn[data-v-99de8cc4]{display:flex;height:2rem;width:2rem;align-items:center;justify-content:center;border-radius:9999px;border-width:2px;border-style:dashed;--tw-border-opacity: 1;border-color:rgb(147 197 253 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.insert-group-btn[data-v-99de8cc4]:hover{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)} diff --git a/resources/dist/build/assets/statamic-query-builder-be794af5.js b/resources/dist/build/assets/statamic-query-builder-be794af5.js deleted file mode 100644 index d9f1381..0000000 --- a/resources/dist/build/assets/statamic-query-builder-be794af5.js +++ /dev/null @@ -1 +0,0 @@ -function u(t,e,s,i,a,o,p,n){var r=typeof t=="function"?t.options:t;e&&(r.render=e,r.staticRenderFns=s,r._compiled=!0),i&&(r.functional=!0),o&&(r._scopeId="data-v-"+o);var d;if(p?(d=function(l){l=l||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,!l&&typeof __VUE_SSR_CONTEXT__<"u"&&(l=__VUE_SSR_CONTEXT__),a&&a.call(this,l),l&&l._registeredComponents&&l._registeredComponents.add(p)},r._ssrRegister=d):a&&(d=n?function(){a.call(this,(r.functional?this.parent:this).$root.$options.shadowRoot)}:a),d)if(r.functional){r._injectStyles=d;var f=r.render;r.render=function(v,_){return d.call(_),f(v,_)}}else{var c=r.beforeCreate;r.beforeCreate=c?[].concat(c,d):[d]}return{exports:t,options:r}}const m={props:{condition:{type:Object,required:!0},field:{type:Object,required:!0}},methods:{getDateValue(){const t=this.condition.value;if(!t||typeof t=="string")return{selectedOption:"TODAY",offset:1,manualDate:""};if(t.type==="relative"){if(t.value)return{selectedOption:t.value,offset:1,manualDate:""};if(t.base){const e=t.offset>=0?"PLUS":"MINUS";return{selectedOption:`${t.base}_${e}_${t.unit.toUpperCase()}`,offset:Math.abs(t.offset),manualDate:""}}}else if(t.type==="manual")return{selectedOption:"OTHER",offset:1,manualDate:t.value};return{selectedOption:"TODAY",offset:1,manualDate:""}},getDateValueOptions(){return[{value:"TODAY",label:this.__("Today")},{value:"TOMORROW",label:this.__("Tomorrow")},{value:"YESTERDAY",label:this.__("Yesterday")},{value:"TODAY_PLUS_DAYS",label:this.__("Today + X days")},{value:"TODAY_PLUS_WEEKS",label:this.__("Today + X weeks")},{value:"TODAY_PLUS_MONTHS",label:this.__("Today + X months")},{value:"TODAY_PLUS_YEARS",label:this.__("Today + X years")},{value:"TODAY_MINUS_DAYS",label:this.__("Today - X days")},{value:"TODAY_MINUS_WEEKS",label:this.__("Today - X weeks")},{value:"TODAY_MINUS_MONTHS",label:this.__("Today - X months")},{value:"TODAY_MINUS_YEARS",label:this.__("Today - X years")},{value:"OTHER",label:this.__("Other...")}]},needsOffsetInput(t){return["TODAY_PLUS_DAYS","TODAY_PLUS_WEEKS","TODAY_PLUS_MONTHS","TODAY_PLUS_YEARS","TODAY_MINUS_DAYS","TODAY_MINUS_WEEKS","TODAY_MINUS_MONTHS","TODAY_MINUS_YEARS"].includes(t)},getOffsetLabel(t){return{TODAY_PLUS_DAYS:this.__("Days"),TODAY_MINUS_DAYS:this.__("Days"),TODAY_PLUS_WEEKS:this.__("Weeks"),TODAY_MINUS_WEEKS:this.__("Weeks"),TODAY_PLUS_MONTHS:this.__("Months"),TODAY_MINUS_MONTHS:this.__("Months"),TODAY_PLUS_YEARS:this.__("Years"),TODAY_MINUS_YEARS:this.__("Years")}[t]||""},onDateOptionChange(t){if(["TODAY","TOMORROW","YESTERDAY"].includes(t))this.$emit("update-value",{type:"relative",value:t});else if(this.needsOffsetInput(t)){const e=t.split("_"),s=e[0],i=e[1],a=e[2].toLowerCase();this.$emit("update-value",{type:"relative",base:s,offset:i==="MINUS"?-1:1,unit:a})}else t==="OTHER"&&this.$emit("update-value",{type:"manual",value:""})},updateDateOffset(t){const e=this.condition.value;if(e.type==="relative"&&e.base){const s=e.offset>=0?1:-1;this.$emit("update-value",{...e,offset:s*Math.abs(parseInt(t)||1)})}},updateManualDate(t){this.$emit("update-value",{type:"manual",value:t})}}};var g=function(){var e=this,s=e._self._c;return s("div",{staticClass:"flex items-center space-x-2 flex-1"},[s("v-select",{staticClass:"flex-1",attrs:{value:e.getDateValue().selectedOption,options:e.getDateValueOptions(),reduce:i=>i.value,label:"label",placeholder:e.__("Select date option")},on:{input:e.onDateOptionChange}}),e.needsOffsetInput(e.getDateValue().selectedOption)?[s("input",{staticClass:"input-text w-20",attrs:{type:"number",placeholder:1,min:"1"},domProps:{value:e.getDateValue().offset},on:{input:function(i){return e.updateDateOffset(i.target.value)}}}),s("span",{staticClass:"text-sm font-medium text-gray-600"},[e._v(" "+e._s(e.getOffsetLabel(e.getDateValue().selectedOption))+" ")])]:e._e(),e.getDateValue().selectedOption==="OTHER"?s("input",{staticClass:"input-text flex-1",attrs:{type:"date"},domProps:{value:e.getDateValue().manualDate},on:{input:function(i){return e.updateManualDate(i.target.value)}}}):e._e()],2)},b=[],y=u(m,g,b,!1,null,null,null,null);const C=y.exports,x={props:{condition:{type:Object,required:!0},field:{type:Object,required:!0}},computed:{isMultiSelect(){var t;return((t=this.field)==null?void 0:t.type)==="select"&&["IN","NOT IN"].includes(this.condition.operator)}}};var D=function(){var e=this,s=e._self._c;return s("div",{staticClass:"flex-1 min-w-0"},[e.isMultiSelect?s("v-select",{attrs:{value:e.condition.value,options:e.field.options||[],reduce:i=>i.value,label:"label",multiple:"",placeholder:e.__("Select Values")},on:{input:function(i){return e.$emit("update-value",i)}}}):s("v-select",{attrs:{value:e.condition.value,options:e.field.options||[],reduce:i=>i.value,label:"label",placeholder:e.__("Select Value")},on:{input:function(i){return e.$emit("update-value",i)}}})],1)},O=[],T=u(x,D,O,!1,null,null,null,null);const S=T.exports,N={props:{condition:{type:Object,required:!0},field:{type:Object,required:!0}},methods:{getBetweenValue(){const t=this.condition.value;return!t||typeof t=="string"?{min:"",max:""}:Array.isArray(t)?{min:t[0]||"",max:t[1]||""}:t},updateMin(t){const e=this.getBetweenValue();this.$emit("update-value",[t,e.max])},updateMax(t){const e=this.getBetweenValue();this.$emit("update-value",[e.min,t])}}};var $=function(){var e=this,s=e._self._c;return s("div",{staticClass:"flex items-center space-x-2 flex-1"},[s("input",{staticClass:"input-text flex-1",attrs:{type:"text",placeholder:e.__("Min value")},domProps:{value:e.getBetweenValue().min},on:{input:function(i){return e.updateMin(i.target.value)}}}),s("span",[e._v(e._s(e.__("and")))]),s("input",{staticClass:"input-text flex-1",attrs:{type:"text",placeholder:e.__("Max value")},domProps:{value:e.getBetweenValue().max},on:{input:function(i){return e.updateMax(i.target.value)}}})])},A=[],I=u(N,$,A,!1,null,null,null,null);const w=I.exports,V={props:{condition:{type:Object,required:!0},field:{type:Object,required:!0}}};var E=function(){var e=this,s=e._self._c;return s("div",{staticClass:"flex items-center space-x-2 flex-1"},[s("input",{staticClass:"input-text flex-1",attrs:{type:"number",placeholder:e.__("Number of days"),min:"1"},domProps:{value:e.condition.value},on:{input:function(i){e.$emit("update-value",parseInt(i.target.value)||1)}}}),s("span",[e._v(e._s(e.__("days")))])])},G=[],F=u(V,E,G,!1,null,null,null,null);const M=F.exports,k={props:{condition:{type:Object,required:!0},field:{type:Object,required:!0}}};var L=function(){var e=this,s=e._self._c;return s("input",{staticClass:"input-text flex-1",attrs:{type:"text",placeholder:e.__("Enter value")},domProps:{value:e.condition.value},on:{input:function(i){return e.$emit("update-value",i.target.value)}}})},Y=[],P=u(k,L,Y,!1,null,null,null,null);const U=P.exports,h={methods:{getField(t){return this.fields.find(e=>e.value===t)},getFieldOperators(t){return this.operators[t]||this.operators.text},getFieldOptions(t){const e=this.fields.find(s=>s.value===t);return(e==null?void 0:e.options)||[]},isDateField(t){const e=this.fields.find(s=>s.value===t);return(e==null?void 0:e.type)==="date"},isMultiSelectVisible(t){const e=this.fields.find(s=>s.value===(t==null?void 0:t.attribute));return(e==null?void 0:e.type)==="select"&&["IN","NOT IN"].includes(t==null?void 0:t.operator)},isSingleSelectVisible(t){const e=this.fields.find(s=>s.value===(t==null?void 0:t.attribute));return(e==null?void 0:e.type)==="select"&&!["IN","NOT IN"].includes(t==null?void 0:t.operator)},needsValueInput(t){return!["IS_NULL","IS_NOT_NULL","THIS_WEEK","THIS_MONTH","THIS_YEAR"].includes(t)},needsBetweenInput(t){return["BETWEEN","NOT_BETWEEN"].includes(t)},needsDaysInput(t){return["LAST_X_DAYS","NEXT_X_DAYS"].includes(t)},getOperatorsForType(t){var s;const e=this.fields.find(i=>i.value===t);return e?((s=this.operators)==null?void 0:s[e.type])||[]:[]},initializeGroups(){var t,e;return(e=(t=this.value)==null?void 0:t.groups)!=null&&e.length?this.value.groups:[{conjunction:"AND",conditions:[]}]}}},j={components:{DateValueInput:C,SelectValueInput:S,BetweenValueInput:w,DaysValueInput:M,TextValueInput:U},mixins:[h],props:{condition:{type:Object,required:!0},conditionIndex:{type:Number,required:!0},groupIndex:{type:Number,required:!0},fields:{type:Array,required:!0},operators:{type:Object,required:!0}},methods:{getValueInputComponent(){return this.isMultiSelectVisible(this.condition)||this.isSingleSelectVisible(this.condition)?"SelectValueInput":this.needsBetweenInput(this.condition.operator)?"BetweenValueInput":this.needsDaysInput(this.condition.operator)?"DaysValueInput":this.isDateField(this.condition.attribute)?"DateValueInput":"TextValueInput"},getCurrentField(){return this.fields.find(t=>t.value===this.condition.attribute)},getOperatorsForType(t){const e=this.getCurrentField();return e&&e.operators?e.operators.map(s=>({value:s,label:this.getOperatorLabel(s)})):e&&this.operators[e.type]?this.operators[e.type]:this.operators.text},getOperatorLabel(t){const s=[...this.operators.text,...this.operators.select,...this.operators.number,...this.operators.date].find(i=>i.value===t);return s?s.label:t},updateAttribute(t){var s;const e={...this.condition,attribute:t,operator:((s=this.getOperatorsForType(t)[0])==null?void 0:s.value)||"=",value:this.getDefaultValueForField(t)};this.$emit("update-condition",this.conditionIndex,e)},updateOperator(t){const e={...this.condition,operator:t,value:this.getDefaultValueForOperator(t)};this.$emit("update-condition",this.conditionIndex,e)},updateValue(t){const e={...this.condition,value:t};this.$emit("update-condition",this.conditionIndex,e)},getDefaultValueForField(t){const e=this.fields.find(s=>s.value===t);return(e==null?void 0:e.type)==="date"?{type:"relative",value:"TODAY"}:""},getDefaultValueForOperator(t){return this.needsBetweenInput(t)?{min:"",max:""}:this.needsValueInput(t)?this.condition.value:null}}};var R=function(){var e=this,s=e._self._c;return s("div",{staticClass:"flex items-center space-x-4 p-3 rounded-md"},[s("v-select",{staticClass:"w-1/3",attrs:{value:e.condition.attribute,options:e.fields,reduce:i=>i.value,label:"label",placeholder:e.__("Select Field")},on:{input:e.updateAttribute}}),s("v-select",{staticClass:"w-1/4",attrs:{value:e.condition.operator,options:e.getOperatorsForType(e.condition.attribute),reduce:i=>i.value,label:"label",placeholder:e.__("Select Operator")},on:{input:e.updateOperator}}),e.needsValueInput(e.condition.operator)?[s(e.getValueInputComponent(),{tag:"component",attrs:{condition:e.condition,field:e.getCurrentField()},on:{"update-value":e.updateValue}})]:e._e(),s("button",{staticClass:"btn-danger",attrs:{title:"Remove condition"},on:{click:function(i){return e.$emit("remove-condition",e.conditionIndex)}}},[e._v(" × ")])],2)},H=[],q=u(j,R,H,!1,null,null,null,null);const B=q.exports,Q={name:"QueryGroup",components:{QueryCondition:B},props:{group:{type:Object,required:!0},groupIndex:{type:Number,required:!0},parentGroupIndex:{type:Number,default:null},fields:{type:Array,required:!0},operators:{type:Object,required:!0},isNested:{type:Boolean,default:!1},displayIndex:{type:[Number,String],default:null},canMoveUp:{type:Boolean,default:!1},canMoveDown:{type:Boolean,default:!1},canRemove:{type:Boolean,default:!0},canDuplicate:{type:Boolean,default:!0}},data(){return{logicalOperators:["AND","OR"],isCollapsed:!1}},computed:{addOptions(){return[{label:__("Add Condition"),value:"condition"},{label:__("Add Nested Group"),value:"nested-group"}]},hasConditions(){return this.group.conditions&&this.group.conditions.length>0},actualDisplayIndex(){return this.displayIndex!==null?this.displayIndex:this.groupIndex+1}},methods:{handleAddSelection(t){this.$emit(t==="condition"?"add-condition":"add-nested-group",this.groupIndex)},toggleCollapsed(){this.isCollapsed=!this.isCollapsed},getCollapsedSummary(){const t=this.group.conditions.filter(i=>!i.type||i.type!=="group"),e=this.group.conditions.filter(i=>i.type==="group"),s=[];return t.length>0&&s.push(`${t.length} condition${t.length!==1?"s":""}`),e.length>0&&s.push(`${e.length} nested group${e.length!==1?"s":""}`),s.join(", ")||__("No conditions")},getItemKey(t,e){return t.type==="group"?`nested-group-${e}`:`condition-${e}`},getNestedGroupIndex(t){let e=0;for(let s=0;s0){const e={...this.group},s=e.conditions[t];e.conditions[t]=e.conditions[t-1],e.conditions[t-1]=s,this.$emit("update-group",this.groupIndex,e)}},moveNestedGroupDown(t){if(ti.value,label:"label",placeholder:e.__("Add...")},on:{input:e.handleAddSelection}}),s("div",{staticClass:"flex items-center space-x-1"},[e.canMoveUp?s("button",{staticClass:"btn p-2",attrs:{title:e.__("Move group up")},on:{click:function(i){return e.$emit("move-group-up",e.groupIndex)}}},[e._v(" ↑ ")]):e._e(),e.canMoveDown?s("button",{staticClass:"btn p-2",attrs:{title:e.__("Move group down")},on:{click:function(i){return e.$emit("move-group-down",e.groupIndex)}}},[e._v(" ↓ ")]):e._e()]),e.canRemove?s("button",{staticClass:"btn-danger",on:{click:function(i){return e.$emit("remove-group",e.groupIndex)}}},[e._v(" "+e._s(e.__("Remove Group"))+" ")]):e._e(),e.canDuplicate?s("button",{staticClass:"btn-primary",on:{click:function(i){return e.$emit("duplicate-group",e.groupIndex)}}},[s("svg",{staticClass:"size-6",attrs:{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor"}},[s("path",{attrs:{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 12h3.75M9 15h3.75M9 18h3.75m3 .75H18a2.25 2.25 0 0 0 2.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 0 0-1.123-.08m-5.801 0c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15c1.012 0 1.867.668 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m0 0H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V9.375c0-.621-.504-1.125-1.125-1.125H8.25ZM6.75 12h.008v.008H6.75V12Zm0 3h.008v.008H6.75V15Zm0 3h.008v.008H6.75V18Z"}})])]):e._e()],1)]),e.isCollapsed&&e.hasConditions?s("div",{staticClass:"text-sm text-gray-600"},[e._v(" "+e._s(e.getCollapsedSummary())+" ")]):e._e(),e.isCollapsed?e._e():s("div",{staticClass:"space-y-3"},[e._l(e.group.conditions,function(i,a){return[!i.type||i.type!=="group"?s("query-condition",{key:e.getItemKey(i,a),attrs:{condition:i,"condition-index":a,"group-index":e.groupIndex,fields:e.fields,operators:e.operators},on:{"update-condition":e.updateCondition,"remove-condition":e.removeCondition}}):s("query-group",{key:e.getItemKey(i,a),attrs:{group:i,"group-index":a,"parent-group-index":e.groupIndex,fields:e.fields,operators:e.operators,"is-nested":!0,"display-index":e.getNestedGroupIndex(a)+1,"can-move-up":a>0,"can-move-down":at.length===0?!0:t[0].label&&t[0].options?t.every(e=>"label"in e&&"options"in e&&e.options.every(s=>"label"in s&&"value"in s&&"type"in s)):t.every(e=>"label"in e&&"value"in e&&"type"in e)},sortFields:{type:Array,required:!0,validator:t=>t.every(e=>"label"in e&&"value"in e&&"type"in e)},defaultSortField:{type:String,default:""},defaultSortDirection:{type:String,default:"desc"},defaultBuilderTemplate:{type:String,default:""},builderTemplates:{type:Array,default:[]},operators:{type:Object,default:()=>({text:[{value:"=",label:__("Is exactly")},{value:"!=",label:__("Is not")},{value:"LIKE",label:__("Contains")},{value:"NOT LIKE",label:__("Does not contain")},{value:"STARTS_WITH",label:__("Starts with")},{value:"ENDS_WITH",label:__("Ends with")},{value:"IS_NULL",label:__("Is empty")},{value:"IS_NOT_NULL",label:__("Is not empty")}],select:[{value:"=",label:__("Is")},{value:"!=",label:__("Is not")},{value:"IN",label:__("Is any of")},{value:"NOT IN",label:__("Is none of")},{value:"IS_NULL",label:__("Nothing selected")},{value:"IS_NOT_NULL",label:__("Has selection")}],number:[{value:"=",label:__("Equals")},{value:"!=",label:__("Does not equal")},{value:">",label:__("Greater than")},{value:"<",label:__("Less than")},{value:">=",label:__("Greater than or equal to")},{value:"<=",label:__("Less than or equal to")},{value:"BETWEEN",label:__("Is between")},{value:"NOT_BETWEEN",label:__("Is not between")},{value:"IS_NULL",label:__("Is empty")},{value:"IS_NOT_NULL",label:__("Is not empty")}],date:[{value:"=",label:__("Is on")},{value:"!=",label:__("Is not on")},{value:">",label:__("Is after")},{value:"<",label:__("Is before")},{value:">=",label:__("Is on or after")},{value:"<=",label:__("Is on or before")},{value:"BETWEEN",label:__("Is between")},{value:"NOT_BETWEEN",label:__("Is not between")},{value:"LAST_X_DAYS",label:__("In the last days")},{value:"NEXT_X_DAYS",label:__("In the next days")},{value:"THIS_WEEK",label:__("This week")},{value:"THIS_MONTH",label:__("This month")},{value:"THIS_YEAR",label:__("This year")},{value:"IS_NULL",label:__("No date set")},{value:"IS_NOT_NULL",label:__("Has date")}]})},defaultLimit:{type:Number,default:100},showLimit:{type:Boolean,default:!0}},data(){return{groups:[],builderTemplate:"",limit:100,useDefaultQuery:!0,globalConjunction:"AND",logicalOperators:["AND","OR"],sortField:"",sortDirection:"",sortDirections:["ASC","DESC"],presets:[],showConflictModal:!1,pendingPreset:null}},computed:{flattenedFields(){var t;return(t=this.fields[0])!=null&&t.options?this.fields.flatMap(e=>e.options):this.fields},groupedPresets(){const t=[];return Object.keys(this.presets).forEach(e=>{const s=this.presets[e];t.push({name:s.label,category:s.label,disabled:!0,isHeader:!0}),s.presets.forEach(i=>{t.push({...i,categoryKey:e,isHeader:!1})})}),t},currentTemplateConfig(){return!this.builderTemplates||!Array.isArray(this.builderTemplates)?null:this.builderTemplates.find(t=>(t.value||t)===this.builderTemplate)||null},isLimitVisible(){if(!this.showLimit)return!1;const t=this.currentTemplateConfig;return!(t&&typeof t=="object"&&t.hideLimit)}},methods:{async fetchPresets(){try{const t=await this.$axios.get("/cp/rapidez/query-presets");t.data.success?this.presets=t.data.categories:this.$toast.error(__("Failed to load query presets"))}catch(t){console.error("Error fetching presets:",t),this.$toast.error(__("Error loading presets"))}},handlePresetSelection(t){!t||t.disabled||t.isHeader||(this.groups.length>0?(this.pendingPreset=t,this.showConflictModal=!0):this.applyPresetDirectly(t))},applyPreset(t){this.showConflictModal=!1,t==="override"?(this.groups=[],this.applyPresetDirectly(this.pendingPreset)):t==="merge"&&this.applyPresetDirectly(this.pendingPreset,!0),this.pendingPreset=null},cancelPresetApplication(){this.showConflictModal=!1,this.pendingPreset=null},applyPresetDirectly(t,e=!1){const s=this.validateAndCorrectPreset(t.query);e?this.groups.push(...s.groups):(this.groups=s.groups,this.globalConjunction=s.globalConjunction),this.updateValue()},validateAndCorrectPreset(t){const e={groups:[],globalConjunction:t.globalConjunction||"AND"},s=[];return t.groups.forEach((i,a)=>{const o=this.validateGroup(i,s);o.conditions.length>0&&e.groups.push(o)}),s.length>0&&s.forEach(i=>{this.$toast.info(i)}),e},validateGroup(t,e){const s={conjunction:t.conjunction||"AND",conditions:[]};return t.conditions.forEach(i=>{if(i.type==="group"){const a=this.validateGroup(i,e);a.conditions.length>0&&s.conditions.push({...a,type:"group"})}else{const a=this.validateCondition(i,e);a&&s.conditions.push(a)}}),s},validateCondition(t,e){var p;const s=this.flattenedFields.find(n=>n.value===t.attribute);if(!s)return e.push(`Field "${t.attribute}" not found - skipping condition`),null;const i={...t},a=this.getOperatorsForField(s);if(!a.some(n=>n.value===t.operator)){const n=((p=a[0])==null?void 0:p.value)||"=";e.push(`Operator "${t.operator}" not valid for field "${s.label}" - using "${n}"`),i.operator=n}return i},getOperatorsForField(t){return t&&t.operators?t.operators.map(e=>({value:e,label:this.getOperatorLabel(e)})):t?this.operators[t.type]||this.operators.text:this.operators.text},getOperatorLabel(t){const s=[...this.operators.text,...this.operators.select,...this.operators.number,...this.operators.date].find(i=>i.value===t);return s?s.label:t},initializeLimit(){var t;return(t=this.value)!=null&&t.limit?this.value.limit:this.defaultLimit},initializeSortField(){var t;return(t=this.value)!=null&&t.sortField?this.value.sortField:this.defaultSortField},initializeSortDirection(){var t;return(t=this.value)!=null&&t.sortDirection?this.value.sortDirection:this.defaultSortDirection},initializeUseDefaultQuery(){var t;return typeof((t=this.value)==null?void 0:t.useDefaultQuery)<"u"?!!this.value.useDefaultQuery:!0},initializeBuilderTemplate(){var t;return(t=this.value)!=null&&t.builderTemplate?this.value.builderTemplate:this.defaultBuilderTemplate},createDefaultGroup(){return{name:"",conjunction:"AND",conditions:[]}},addGroup(){this.groups.push(this.createDefaultGroup()),this.updateValue()},insertGroupAt(t){this.groups.splice(t,0,this.createDefaultGroup()),this.updateValue()},duplicateGroup(t){const e=this.groups[t];this.groups.splice(t+1,0,{...e}),this.updateValue()},removeGroup(t){this.groups.splice(t,1),this.updateValue()},updateGroup(t,e){this.$set(this.groups,t,e),this.updateValue()},moveGroupUp(t){if(t>0){const e=this.groups[t];this.$set(this.groups,t,this.groups[t-1]),this.$set(this.groups,t-1,e),this.updateValue()}},moveGroupDown(t){if(t-1:e.useDefaultQuery},on:{change:[function(i){var a=e.useDefaultQuery,o=i.target,p=!!o.checked;if(Array.isArray(a)){var n=null,r=e._i(a,n);o.checked?r<0&&(e.useDefaultQuery=a.concat([n])):r>-1&&(e.useDefaultQuery=a.slice(0,r).concat(a.slice(r+1)))}else e.useDefaultQuery=p},e.updateSettingValues]}}),s("label",{staticClass:"text-sm",attrs:{for:"useDefaultQuery"}},[e._v(e._s(e.__("Use default Query")))])]),e.builderTemplates?s("div",{staticClass:"flex items-center space-x-2"},[s("label",{staticClass:"text-sm",attrs:{for:"template"}},[e._v(e._s(e.__("Template")))]),s("v-select",{staticClass:"w-36",attrs:{name:"builderTemplate",options:e.builderTemplates,reduce:i=>i.value},on:{input:e.updateSettingValues},model:{value:e.builderTemplate,callback:function(i){e.builderTemplate=i},expression:"builderTemplate"}})],1):e._e(),e.isLimitVisible?s("div",{staticClass:"flex items-center space-x-2"},[s("label",{staticClass:"text-sm",attrs:{for:"limit"}},[e._v(e._s(e.__("Limit results")))]),s("input",{directives:[{name:"model",rawName:"v-model",value:e.limit,expression:"limit"}],staticClass:"input-text w-24",attrs:{type:"number",name:"limit",id:"limit",min:"1"},domProps:{value:e.limit},on:{input:[function(i){i.target.composing||(e.limit=i.target.value)},e.updateSettingValues]}})]):e._e()]),s("div",{staticClass:"flex gap-2"},[e.sortFields?s("div",{staticClass:"flex items-center space-x-2"},[s("label",{staticClass:"text-sm",attrs:{for:"template"}},[e._v(e._s(e.__("Sort")))]),s("v-select",{staticClass:"w-36",attrs:{name:"sortField",options:e.sortFields,reduce:i=>i.value},on:{input:e.updateSettingValues},model:{value:e.sortField,callback:function(i){e.sortField=i},expression:"sortField"}})],1):e._e(),e.sortFields?s("div",{staticClass:"flex items-center space-x-2"},[s("label",{staticClass:"text-sm",attrs:{for:"template"}},[e._v(e._s(e.__("Sort Direction")))]),s("v-select",{staticClass:"w-36",attrs:{name:"sortDirection",options:e.sortDirections},on:{input:e.updateSettingValues},model:{value:e.sortDirection,callback:function(i){e.sortDirection=i},expression:"sortDirection"}})],1):e._e()])]),s("div",{staticClass:"flex items-center space-x-2"},[e.groupedPresets.length>0?s("div",{staticClass:"flex items-center space-x-2"},[s("label",{staticClass:"text-sm"},[e._v(e._s(e.__("Presets")))]),s("v-select",{staticClass:"w-48",attrs:{options:e.groupedPresets,reduce:i=>i,label:"name",placeholder:e.__("Select Preset")},on:{input:e.handlePresetSelection},scopedSlots:e._u([{key:"option",fn:function(i){return[i.isHeader?s("div",{staticClass:"font-semibold text-gray-600 px-2 py-1 bg-gray-50 border-b"},[e._v(" "+e._s(i.name)+" ")]):s("div",{staticClass:"px-4 py-2 hover:bg-blue-50"},[s("div",{staticClass:"font-medium"},[e._v(e._s(i.name))]),i.description?s("div",{staticClass:"text-sm text-gray-500 mt-1"},[e._v(" "+e._s(i.description)+" ")]):e._e()])]}}],null,!1,2299860552)})],1):e._e(),s("button",{staticClass:"btn-primary self-start",on:{click:e.addGroup}},[e._v(e._s(e.__("Add Group")))])])]),s("div",{staticClass:"space-y-6"},[e.groups.length>0?s("div",{staticClass:"flex justify-center"},[s("button",{staticClass:"insert-group-btn",attrs:{title:e.__("Insert group here")},on:{click:function(i){return e.insertGroupAt(0)}}},[s("svg",{staticClass:"w-4 h-4",attrs:{fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"}},[s("path",{attrs:{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 6v6m0 0v6m0-6h6m-6 0H6"}})])])]):e._e(),e._l(e.groups,function(i,a){return[s("query-group",{key:`group-${a}`,attrs:{group:i,"group-index":a,fields:e.flattenedFields,operators:e.operators,"display-index":a+1,"can-move-up":a>0,"can-move-down":a1},on:{"update-group":e.updateGroup,"remove-group":e.removeGroup,"duplicate-group":e.duplicateGroup,"move-group-up":e.moveGroupUp,"move-group-down":e.moveGroupDown,"add-condition":e.addConditionToGroup,"add-nested-group":e.addNestedGroupToGroup,"add-condition-to-nested":e.addConditionToNestedGroup,"add-nested-group-to-nested":e.addNestedGroupToNestedGroup,"update-condition":e.updateCondition,"update-nested-condition":e.updateNestedCondition,"remove-condition":e.removeCondition,"remove-nested-condition":e.removeNestedCondition}}),a1?s("div",{staticClass:"mt-6 pt-4 border-t border-gray-200"},[s("div",{staticClass:"flex items-center space-x-4"},[s("label",{staticClass:"font-bold"},[e._v(e._s(e.__("Combine Groups with:")))]),s("v-select",{staticClass:"w-32",attrs:{options:e.logicalOperators},on:{input:e.updateValue},model:{value:e.globalConjunction,callback:function(i){e.globalConjunction=i},expression:"globalConjunction"}})],1)]):e._e(),e.showConflictModal?s("div",{staticClass:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50"},[s("div",{staticClass:"bg-white p-6 rounded-lg shadow-lg max-w-md w-full mx-4"},[s("h3",{staticClass:"text-lg font-semibold mb-4"},[e._v(e._s(e.__("Apply Preset")))]),s("p",{staticClass:"text-gray-600 mb-6"},[e._v(" "+e._s(e.__("You have an existing query. How would you like to apply this preset?"))+" ")]),s("div",{staticClass:"flex space-x-3"},[s("button",{staticClass:"btn flex-1",on:{click:function(i){return e.applyPreset("merge")}}},[e._v(" "+e._s(e.__("Merge"))+" ")]),s("button",{staticClass:"btn-primary flex-1",on:{click:function(i){return e.applyPreset("override")}}},[e._v(" "+e._s(e.__("Override"))+" ")]),s("button",{staticClass:"btn flex-1",on:{click:e.cancelPresetApplication}},[e._v(" "+e._s(e.__("Cancel"))+" ")])])])]):e._e()])},ee=[],te=u(Z,J,ee,!1,null,"6704df36",null,null);const se=te.exports,ie={components:{QueryBuilder:se},mixins:[Fieldtype],data(){return{attributes:[],groupedFields:[],sortingOptions:[],templates:[{label:"Slider",value:"slider"},{label:"Listing",value:"listing",hideLimit:!0}],fieldGroups:[{key:"attribute",label:"Attributes",prefix:"attribute."},{key:"stock",label:"Stock",prefix:"",fields:[{label:"Stock Status",value:"stock_status",type:"select",operators:["=","!="],options:[{label:"In Stock",value:"in_stock"},{label:"Out of Stock",value:"out_of_stock"}]}]}]}},methods:{async fetchAttributes(){try{const t=await this.$axios.get("/cp/rapidez/product-attributes");this.attributes=t.data.map(e=>({label:e.frontend_label?e.frontend_label+` (${e.code})`:e.code,value:`attribute.${e.code}`,type:this.mapAttributeType(e.input),options:this.mapAttributeOptions(e.attribute_options)})),this.buildGroupedFields()}catch(t){console.error("Error fetching attributes:",t)}},async fetchSortingOptions(){try{const t=await this.$axios.get("/cp/rapidez/sorting-options"),e=Array.isArray(t.data)?t.data:[];if(!e.length)return;this.sortingOptions=e.filter(s=>s&&s.value)}catch(t){console.error("Error fetching sorting options:",t),this.sortingOptions=[{label:"Newest",value:"created_at"},{label:"Oldest",value:"created_at"}]}},buildGroupedFields(){this.groupedFields=this.fieldGroups.map(t=>t.key==="attribute"?{label:t.label,options:this.attributes}:{label:t.label,options:t.fields.map(e=>({...e,value:t.prefix?`${t.prefix}${e.value}`:e.value}))})},mapAttributeType(t){return{text:"text",textarea:"text",select:"select",multiselect:"select",boolean:"select",price:"number",weight:"number",date:"date",datetime:"date",timestamp:"date"}[t]||"text"},mapAttributeOptions(t){return t.length?(typeof t=="object"&&!Array.isArray(t)&&(t=Object.values(t)),t.map(e=>({label:e.store_value||e.option_id,value:e.store_value||e.option_id}))):[]}},mounted(){this.fetchAttributes(),this.fetchSortingOptions()}};var ae=function(){var i;var e=this,s=e._self._c;return s("query-builder",{attrs:{fields:e.groupedFields,"sort-fields":e.sortingOptions,"default-sort-field":(i=e.sortingOptions[0])==null?void 0:i.value,"default-limit":100,"show-limit":!0,"builder-templates":e.templates,"default-builder-template":"slider",value:e.value},on:{input:function(a){return e.$emit("input",a)}}})},re=[],oe=u(ie,ae,re,!1,null,null,null,null);const ne=oe.exports;Statamic.booting(()=>{Statamic.component("product_query_builder-fieldtype",ne)}); diff --git a/resources/dist/build/manifest.json b/resources/dist/build/manifest.json index 1aeb7df..208e30e 100644 --- a/resources/dist/build/manifest.json +++ b/resources/dist/build/manifest.json @@ -1,14 +1,11 @@ { - "resources/js/statamic-query-builder.css": { - "file": "assets/statamic-query-builder-d534377b.css", - "src": "resources/js/statamic-query-builder.css" - }, "resources/js/statamic-query-builder.js": { - "css": [ - "assets/statamic-query-builder-d534377b.css" - ], - "file": "assets/statamic-query-builder-be794af5.js", + "file": "assets/statamic-query-builder-BD4UnHGk.js", + "name": "statamic-query-builder", + "src": "resources/js/statamic-query-builder.js", "isEntry": true, - "src": "resources/js/statamic-query-builder.js" + "css": [ + "assets/statamic-query-builder-CVyH-oa3.css" + ] } } \ No newline at end of file diff --git a/resources/js/components/QueryBuilder/QueryCondition.vue b/resources/js/components/QueryBuilder/QueryCondition.vue index fbbee89..fc8e45a 100644 --- a/resources/js/components/QueryBuilder/QueryCondition.vue +++ b/resources/js/components/QueryBuilder/QueryCondition.vue @@ -1,23 +1,23 @@ - diff --git a/resources/js/components/QueryBuilder/QueryGroup.vue b/resources/js/components/QueryBuilder/QueryGroup.vue index c30f0e8..36f4620 100644 --- a/resources/js/components/QueryBuilder/QueryGroup.vue +++ b/resources/js/components/QueryBuilder/QueryGroup.vue @@ -11,65 +11,66 @@ 'font-bold', isNested ? 'text-sm text-blue-700' : 'text-base' ]"> - - + -
- - +
- - +
- - +
@@ -86,10 +87,9 @@
-