import{a as U}from"./chunk-UXD3EAB2.js";import{s as K}from"./chunk-H66X7AW6.js";import{b as q}from"./chunk-BONSW2E6.js";import{A as F,B as Y,D as T,e as k,f as G,g as L,v as B,x as X}from"./chunk-VYUKN3XQ.js";import{Od as W,a as S,b as x}from"./chunk-XNQ3RS5P.js";function Z(){return{ids:[],entities:{}}}function _(){function t(c={}){return Object.assign(Z(),c)}return{getInitialState:t}}function $(){function t(c){let i=y=>y.ids,d=y=>y.entities,l=B(i,d,(y,h)=>y.map(g=>h[g])),m=B(i,y=>y.length);return c?{selectIds:B(c,i),selectEntities:B(c,d),selectAll:B(c,l),selectTotal:B(c,m)}:{selectIds:i,selectEntities:d,selectAll:l,selectTotal:m}}return{getSelectors:t}}var s=function(t){return t[t.EntitiesOnly=0]="EntitiesOnly",t[t.Both=1]="Both",t[t.None=2]="None",t}(s||{});function f(t){return function(i,d){let l={ids:[...d.ids],entities:S({},d.entities)},m=t(i,l);return m===s.Both?Object.assign({},d,l):m===s.EntitiesOnly?x(S({},d),{entities:l.entities}):d}}function N(t,c){let i=c(t);return W()&&i===void 0&&console.warn("@ngrx/entity: The entity passed to the `selectId` implementation returned undefined.","You should probably provide your own `selectId` implementation.","The entity that was passed:",t,"The `selectId` implementation:",c.toString()),i}function z(t){function c(a,r){let n=N(a,t);return n in r.entities?s.None:(r.ids.push(n),r.entities[n]=a,s.Both)}function i(a,r){let n=!1;for(let e of a)n=c(e,r)!==s.None||n;return n?s.Both:s.None}function d(a,r){return r.ids=[],r.entities={},i(a,r),s.Both}function l(a,r){let n=N(a,t);return n in r.entities?(r.entities[n]=a,s.EntitiesOnly):(r.ids.push(n),r.entities[n]=a,s.Both)}function m(a,r){let n=a.map(e=>l(e,r));switch(!0){case n.some(e=>e===s.Both):return s.Both;case n.some(e=>e===s.EntitiesOnly):return s.EntitiesOnly;default:return s.None}}function y(a,r){return h([a],r)}function h(a,r){let e=(a instanceof Array?a:r.ids.filter(o=>a(r.entities[o]))).filter(o=>o in r.entities).map(o=>delete r.entities[o]).length>0;return e&&(r.ids=r.ids.filter(o=>o in r.entities)),e?s.Both:s.None}function g(a){return Object.assign({},a,{ids:[],entities:{}})}function E(a,r,n){let e=n.entities[r.id],o=Object.assign({},e,r.changes),u=N(o,t),p=u!==r.id;return p&&(a[r.id]=u,delete n.entities[r.id]),n.entities[u]=o,p}function P(a,r){return O([a],r)}function O(a,r){let n={};return a=a.filter(o=>o.id in r.entities),a.length>0?a.filter(u=>E(n,u,r)).length>0?(r.ids=r.ids.map(u=>n[u]||u),s.Both):s.EntitiesOnly:s.None}function b(a,r){let e=r.ids.reduce((o,u)=>{let p=a(r.entities[u]);return p!==r.entities[u]&&o.push({id:u,changes:p}),o},[]).filter(({id:o})=>o in r.entities);return O(e,r)}function w({map:a,id:r},n){let e=n.entities[r];if(!e)return s.None;let o=a(e);return P({id:r,changes:o},n)}function C(a,r){return I([a],r)}function I(a,r){let n=[],e=[];for(let p of a){let M=N(p,t);M in r.entities?e.push({id:M,changes:p}):n.push(p)}let o=O(e,r),u=i(n,r);switch(!0){case(u===s.None&&o===s.None):return s.None;case(u===s.Both||o===s.Both):return s.Both;default:return s.EntitiesOnly}}return{removeAll:g,addOne:f(c),addMany:f(i),setAll:f(d),setOne:f(l),setMany:f(m),updateOne:f(P),updateMany:f(O),upsertOne:f(C),upsertMany:f(I),removeOne:f(y),removeMany:f(h),map:f(b),mapOne:f(w)}}function R(t,c){let{removeOne:i,removeMany:d,removeAll:l}=z(t);function m(n,e){return y([n],e)}function y(n,e){let o=n.filter(u=>!(N(u,t)in e.entities));return o.length===0?s.None:(r(o,e),s.Both)}function h(n,e){return e.entities={},e.ids=[],y(n,e),s.Both}function g(n,e){let o=N(n,t);return o in e.entities?(e.ids=e.ids.filter(u=>u!==o),r([n],e),s.Both):m(n,e)}function E(n,e){let o=n.map(u=>g(u,e));switch(!0){case o.some(u=>u===s.Both):return s.Both;case o.some(u=>u===s.EntitiesOnly):return s.EntitiesOnly;default:return s.None}}function P(n,e){return b([n],e)}function O(n,e,o){if(!(e.id in o.entities))return!1;let u=o.entities[e.id],p=Object.assign({},u,e.changes),M=N(p,t);return delete o.entities[e.id],n.push(p),M!==e.id}function b(n,e){let o=[],u=n.filter(p=>O(o,p,e)).length>0;if(o.length===0)return s.None;{let p=e.ids,M=[];return e.ids=e.ids.filter((A,v)=>A in e.entities?!0:(M.push(v),!1)),r(o,e),!u&&M.every(A=>e.ids[A]===p[A])?s.EntitiesOnly:s.Both}}function w(n,e){let o=e.ids.reduce((u,p)=>{let M=n(e.entities[p]);return M!==e.entities[p]&&u.push({id:p,changes:M}),u},[]);return b(o,e)}function C({map:n,id:e},o){let u=o.entities[e];if(!u)return s.None;let p=n(u);return P({id:e,changes:p},o)}function I(n,e){return a([n],e)}function a(n,e){let o=[],u=[];for(let A of n){let v=N(A,t);v in e.entities?u.push({id:v,changes:A}):o.push(A)}let p=b(u,e),M=y(o,e);switch(!0){case(M===s.None&&p===s.None):return s.None;case(M===s.Both||p===s.Both):return s.Both;default:return s.EntitiesOnly}}function r(n,e){n.sort(c);let o=[],u=0,p=0;for(;u<n.length&&p<e.ids.length;){let M=n[u],A=N(M,t),v=e.ids[p],Q=e.entities[v];c(M,Q)<=0?(o.push(A),u++):(o.push(v),p++)}u<n.length?e.ids=o.concat(n.slice(u).map(t)):e.ids=o.concat(e.ids.slice(p)),n.forEach((M,A)=>{e.entities[t(M)]=M})}return{removeOne:i,removeMany:d,removeAll:l,addOne:f(m),updateOne:f(P),upsertOne:f(I),setAll:f(h),setOne:f(g),setMany:f(E),addMany:f(y),updateMany:f(b),upsertMany:f(a),map:f(w),mapOne:f(C)}}function H(t={}){var y,h;let{selectId:c,sortComparer:i}={selectId:(y=t.selectId)!=null?y:g=>g.id,sortComparer:(h=t.sortComparer)!=null?h:!1},d=_(),l=$(),m=i?R(c,i):z(c);return S(S(S({selectId:c,sortComparer:i},d),l),m)}var V=H(),J=V.getInitialState();var j=G({source:"Category Product Card",events:{getPricesByIds:k(),getPricesByIdsSuccess:k(),getPricesByIdsError:k(),clearPrices:L()}});function D(t,c,i){return(i==null?void 0:i.map(d=>{var l;return{id:d,changes:{variantPriceTypes:x(S({},(l=c.entities[d])==null?void 0:l.variantPriceTypes),{[t]:{priceType:t,price:{status:T.loading}}})}}}))||[]}function ee(t,c,i){let d={};return Object.keys(U).forEach(l=>{let m=c.find(g=>g.productPriceType===l),y=t==null?void 0:t[l].price,h;m?h={data:m,status:m.prices?T.success:T.error}:l===i?h=x(S({},y),{status:T.error}):h=y,d[l]={priceType:l,price:h}}),d}function te(t,c,i){return(i==null?void 0:i.map(d=>{var l;return{id:d.id,changes:{variantPriceTypes:S({},ee((l=c.entities[d.id])==null?void 0:l.variantPriceTypes,d.prices,t))}}}))||[]}function ne(t,c,i){return i==null?void 0:i.map(d=>{var l;return{id:d,changes:{variantPriceTypes:x(S({},(l=c.entities[d])==null?void 0:l.variantPriceTypes),{[t]:{priceType:t,price:{status:T.error}}})}}})}function re(t,c){return t?{data:S({},t),status:T.success}:c||{status:T.initial}}function ie(t,c){let i={};return Object.keys(U).forEach(d=>{let l=t.find(y=>y.productPriceType===d),m=c==null?void 0:c.variantPriceTypes[d].price;i[d]={priceType:d,price:re(l,m)}}),i}function oe(t,c){return t.flatMap(i=>i.variants).map(i=>{let d=c.ids.some(m=>Number(m)===i.id),l;return d&&(l=c.entities[i.id]),{id:i.id,variantPriceTypes:ie(i.prices,l)}})}var be=X({name:"categoryVariantsPricesSearch",reducer:Y(J,F(q,(t,{result:c})=>V.upsertMany(oe(c.content,t),t)),F(j.getPricesByIds,(t,{priceType:c,noPriceIds:i})=>V.updateMany(D(c,t,i),t)),F(j.getPricesByIdsSuccess,(t,{priceType:c,prices:i})=>V.updateMany(te(c,t,i),t)),F(j.getPricesByIdsError,(t,{priceType:c,variantsIds:i})=>V.updateMany(ne(c,t,i),t)),F(j.clearPrices,t=>V.removeAll(t))),extraSelectors:({selectIds:t,selectCategoryVariantsPricesSearchState:c,selectEntities:i})=>{let d=(h,g)=>B(i,E=>{var P,O;return(O=(P=E[g])==null?void 0:P.variantPriceTypes)==null?void 0:O[h].price}),l=(h,g)=>B(K.selectVariant(g),d(h,g),(E,P)=>({variantInfo:E,variantPrice:P})),m=(h,g)=>B(i,K.selectGroupVariants(g),(E,P)=>(P==null?void 0:P.filter(O=>{var w,C,I,a,r;let b=(I=(C=(w=E[O.id])==null?void 0:w.variantPriceTypes)==null?void 0:C[h])==null?void 0:I.price;return O.stockAvailability!=="noStock"&&O.stockAvailability!=="expired"&&(b==null?void 0:b.status)!==T.loading&&!((r=(a=b==null?void 0:b.data)==null?void 0:a.prices)!=null&&r.length)}).map(O=>O.id))||[]);return{selectCurrentVariantAndInStockVariantsWithoutPrice:(h,g,E)=>B(l(h,E),m(h,g),(P,O)=>({currentVariant:P,inStockVariantsWithoutPrice:O})),selectVariantsPrices:i}}});export{j as a,be as b};