@kosdev-code/kos-dispense-sdk 2.0.5 → 2.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- "use strict";var Re=Object.defineProperty;var Oe=(e,t,s)=>t in e?Re(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s;var L=(e,t,s)=>(Oe(e,typeof t!="symbol"?t+"":t,s),s);const l=require("@emotion/react/jsx-runtime"),u=require("@kosdev-code/kos-ui-sdk"),n=require("react"),v=require("./dispense-registration-manager-f0b1L6Mt.cjs"),X=()=>{const e=v.Assembly.type;return u.useKosModel({modelId:e,modelType:v.Assembly.type,options:{}})};function Ye(e){return t=>{const{model:s,status:r,KosModelLoader:o}=X();return l.jsx(o,{...r,children:l.jsx(e,{...t,assembly:s})})}}const Z=()=>{const e=v.Availability.type;return u.useKosModel({modelId:e,modelType:v.Availability.type,options:{}})};function _e(e){return t=>{const{model:s,status:r,KosModelLoader:o}=Z();return l.jsx(o,{...r,children:l.jsx(e,{...t,beverage:s})})}}const z=e=>{const t=e;return u.useKosModel({modelId:t,modelType:v.Board.type,options:{}})};function Ge(e){return t=>s=>{const{model:r,status:o,KosModelLoader:i}=z(t);return l.jsx(i,{...o,children:l.jsx(e,{...s,board:r})})}}const ee=()=>{const e=v.BoardContainer.type;return u.useKosModel({modelId:e,modelType:v.BoardContainer.type,options:{}})};function Ue(e){return t=>{const{model:s,status:r,KosModelLoader:o}=ee();return l.jsx(o,{...r,children:l.jsx(e,{...t,boardContainer:s})})}}const te=e=>{const t=e;return u.useKosModel({modelId:t,modelType:v.Nozzle.type,options:{path:e}})},ce=n.createContext(void 0),de=({children:e,path:t})=>{const{model:s,ready:r}=te(t),o=n.useMemo(()=>r&&s?{model:s}:{},[r,s]);return l.jsx(ce.Provider,{value:o,children:e})},A=()=>{const e=n.useContext(ce);if(!e)throw new Error("useNozzleContext must be used within a NozzleProvider");return e},le=({onBeverageSelected:e,onClearBeverage:t,companionType:s})=>{const{model:r}=A(),[o,i]=n.useState([]),[c,p]=n.useState(null),m=n.useMemo(()=>s?o.map(b=>u.getKosCompanionModel(b,s)):[],[o,s]),f=n.useCallback(async b=>{p(b),await(r==null?void 0:r.setSelectedPourable({beverage:b})),e==null||e(b)},[r,e]),d=n.useCallback(async()=>{p(null),await(r==null?void 0:r.setSelectedPourable({beverage:void 0})),t==null||t()},[r,t]);return n.useEffect(()=>{const b=u.kosAutoEffect(()=>{if(!r)return;const a=r.selectedBrand;if(!a){const x=r.getGroupAvailabilityItems("beverages").filter(h=>h.visible);i(x??[]);return}const g=r.getAvailabilityByParent(a.id).filter(x=>x.visible);i(g??[])});return()=>{b()}},[r]),{beverages:o,beverageCompanions:m,selectBeverage:f,selectedBeverage:c,clearBeverage:d}},pe=({onBrandSelected:e,onBrandCleared:t,companionType:s})=>{const{model:r}=A(),[o,i]=n.useState(null),c=n.useMemo(()=>(r==null?void 0:r.getGroupAvailabilityItems("brands").filter(d=>d.visible))??[],[r]),p=n.useMemo(()=>s?c.map(d=>u.getKosCompanionModel(d,s)):[],[c,s]),m=n.useCallback(async d=>{i(d),r==null||r.setSelectedBrand(d),e==null||e(d)},[r,e]),f=n.useCallback(()=>{i(null),r==null||r.setSelectedBrand(void 0),t==null||t()},[r,t]);return{brands:c,brandCompanions:p,selectedBrand:o,selectBrand:m,clearBrand:f}},Ve=u.KosLog.createLogger({name:"HoldToPourStrategy",group:"kos-hooks"}),be={name:"HoldToPourStrategy",initiate(e){if(!(e!=null&&e.canPour)){Ve.debug(`Nozzle ${e==null?void 0:e.id} cannot pour. Returning early.`);return}e==null||e.pour()},initiateEnded(e){e==null||e.cancelPour()}},F=u.KosLog.createLogger({name:"useNozzlePour",group:"kos-hooks"}),me=({onPour:e,onPourCancel:t,strategy:s=be})=>{const{model:r}=A(),o=n.useCallback(()=>{F.debug(`[${s==null?void 0:s.name}] - Pour initiated for nozzle ${r==null?void 0:r.id}.`),s==null||s.initiate(r),e==null||e()},[e,r,s]),i=n.useCallback(()=>{var m;F.debug(`[${s==null?void 0:s.name}] - Pour initiate ended called for nozzle ${r==null?void 0:r.id}.`),(m=s==null?void 0:s.initiateEnded)==null||m.call(s,r),t==null||t()},[t,r,s]),c=n.useCallback(()=>{F.debug(`Force cancelling pour for nozzle ${r==null?void 0:r.id}.`),r==null||r.cancelPour(),t==null||t()},[t,r]);return{handlers:u.usePressGesture({onPressed:o,onRelease:i}).dom,cancel:c,status:r}},fe=({onFlavorSelected:e,onFlavorCleared:t,companionType:s})=>{const{model:r}=A(),o=n.useMemo(()=>(r==null?void 0:r.getGroupAvailabilityItems("flavors").filter(d=>d.visible))??[],[r]),i=n.useMemo(()=>s?o.map(d=>u.getKosCompanionModel(d,s)):[],[o,s]),[c,p]=n.useState([]),m=n.useCallback(async d=>{if(p(b=>b!=null&&b.includes(d)?[...b.filter(a=>a!==d)]:[...b??[],d]),r!=null&&r.selectedPourable){const{beverage:b}=r.selectedPourable;await r.setSelectedPourable({beverage:b,additional:c??[]})}e==null||e(d,c??[])},[r,e,c]),f=n.useCallback(async()=>{if(p([]),r!=null&&r.selectedPourable){const{beverage:d}=r.selectedPourable;r.setSelectedPourable({beverage:d}),t==null||t()}},[r,t]);return{flavors:o,flavorCompanions:i,selectFlavor:m,selectedFlavors:c,clearFlavors:f}},$="brands",N="beverages",H="flavors",he=({initialGroup:e=$,options:t={}})=>{var B,Y,_;const[s,r]=n.useState(e),{model:o}=A(),i=n.useCallback(C=>{r(H);const E=`/kos/dispense/${o==null?void 0:o.path}/brand/selected/`;u.EventBus.publish(E,C)},[o==null?void 0:o.path]),c=n.useCallback(()=>{const C=`/kos/dispense/${o==null?void 0:o.path}/brand/cleared/`;u.EventBus.publish(C,{})},[o==null?void 0:o.path]),p=n.useCallback(C=>{r(H);const E=`/kos/dispense/${o==null?void 0:o.path}/beverage/selected/`;u.EventBus.publish(E,C)},[o==null?void 0:o.path]),m=n.useCallback(()=>{const C=`/kos/dispense/${o==null?void 0:o.path}/beverage/cleared/`;u.EventBus.publish(C,{})},[o==null?void 0:o.path]),f=n.useCallback(C=>{const E=`/kos/dispense/${o==null?void 0:o.path}/flavor/selected/`;u.EventBus.publish(E,C)},[o==null?void 0:o.path]),d=n.useCallback(()=>{const C=`/kos/dispense/${o==null?void 0:o.path}/flavor/cleared/`;u.EventBus.publish(C,{})},[o==null?void 0:o.path]),b=n.useCallback(()=>{const C=`/kos/dispense/${o==null?void 0:o.path}/pour/`;u.EventBus.publish(C,{})},[o==null?void 0:o.path]),a=n.useCallback(()=>{const C=`/kos/dispense/${o==null?void 0:o.path}/pour/cancel/`;u.EventBus.publish(C,{})},[o==null?void 0:o.path]),{brands:g,selectBrand:x,selectedBrand:h,clearBrand:T,brandCompanions:M}=pe({companionType:(B=t.companionTypes)==null?void 0:B.brand,onBrandSelected:i,onBrandCleared:c}),{beverages:y,selectBeverage:D,selectedBeverage:R,clearBeverage:I,beverageCompanions:U}=le({companionType:(Y=t.companionTypes)==null?void 0:Y.beverage,onBeverageSelected:p,onClearBeverage:m}),{clearFlavors:V,flavors:S,selectFlavor:w,selectedFlavors:q,flavorCompanions:O}=fe({companionType:(_=t.companionTypes)==null?void 0:_.flavor,onFlavorSelected:f,onFlavorCleared:d}),P=me({onPour:b,onPourCancel:a}),K=n.useCallback(()=>{switch(s){case $:I(),T();break;case N:case H:r(e),I(),T();break}},[I,T,s,e]),k=n.useCallback(()=>{r(e),e===$&&(I(),T()),e===N&&I()},[I,T,e]);return{nav:{currentGroup:s,back:K,home:k},pour:P,selections:{[$]:h,[N]:R,[H]:q},[$]:{models:g,companions:M,clear:T,handlers:{onSelected:x}},[N]:{models:y,companions:U,clear:I,handlers:{onSelected:D}},[H]:{models:S,companions:O,clear:V,handlers:{onSelected:w}}}},qe=e=>{const{model:t}=A(),[s,r]=n.useState(null),{onAmbientTimer:o,onAttractTimer:i,onResetAttractTimer:c,onResumeAttractTimer:p,defaultAttractTime:m,defaultAmbientTime:f}=e,d=n.useCallback(()=>{o&&(u.KosLog.info("Ambient timer expired. Calling callback"),o==null||o())},[o]),b=n.useCallback(()=>{i&&(u.KosLog.info("Attract timer expired. Calling callback"),i==null||i())},[i]),a=n.useCallback(()=>{s&&(s.restart(),c==null||c())},[s,c]),g=n.useCallback(()=>{s&&(s.reset(),c==null||c())},[s,c]),x=n.useCallback(()=>{s&&(s.pause(),p==null||p())},[s,p]);return n.useEffect(()=>{if(t&&m){u.KosLog.info("Nozzle is available. Creating timers");const h=u.TimerManager.createTimer("attract-timer-"+t.path,m);return m&&(h==null||h.addTimeoutAction({name:"attract-timer",remainingTime:0,action:b})),f&&(h==null||h.addTimeoutAction({name:"ambient-timer",remainingTime:f,action:d})),m&&(h==null||h.start()),r(h??null),()=>{h==null||h.reset(),r(null)}}return()=>{u.KosLog.info("Nozzle is not available. No timers to clear")}},[f,m,d,b,t]),{attractTimer:s,restart:a,pause:g,resume:x}},Fe=(e,t)=>{if(t)return u.EventBus.subscribe(e,t).unsubscribe},ge=({onInit:e,onBrandSelected:t,onBrandCleared:s,onBeverageCleared:r,onBeverageSelected:o,onFlavorCleared:i,onFlavorSelected:c,onPour:p,onPourCancel:m,onAmbientTimer:f,onAttractTimer:d,onResumeAttractTimer:b})=>{const{model:a}=A();n.useEffect(()=>{const x=[{topic:`/kos/dispense/${a==null?void 0:a.path}/brand/selected/`,callback:t},{topic:`/kos/dispense/${a==null?void 0:a.path}/brand/cleared/`,callback:s},{topic:`/kos/dispense/${a==null?void 0:a.path}/beverage/selected/`,callback:o},{topic:`/kos/dispense/${a==null?void 0:a.path}/beverage/cleared/`,callback:r},{topic:`/kos/dispense/${a==null?void 0:a.path}/flavor/selected/`,callback:c},{topic:`/kos/dispense/${a==null?void 0:a.path}/flavor/cleared/`,callback:i},{topic:`/kos/dispense/${a==null?void 0:a.path}/pour/`,callback:p},{topic:`/kos/dispense/${a==null?void 0:a.path}/pour/cancel/`,callback:m},{topic:`/kos/dispense/${a==null?void 0:a.path}/ambient/start/`,callback:f},{topic:`/kos/dispense/${a==null?void 0:a.path}/attract/start/`,callback:d},{topic:`/kos/dispense/${a==null?void 0:a.path}/attract/resume/`,callback:b},{topic:`/kos/dispense/${a==null?void 0:a.path}/init/`,callback:e}].map(({topic:h,callback:T})=>Fe(h,T));return()=>{x.forEach(h=>h==null?void 0:h())}},[a==null?void 0:a.path,f,d,r,o,s,t,i,c,p,m,b,e])},Q=e=>{const{model:t}=A(),[s,r]=n.useState(null),{onAreYouThereTimer:o,onIdleTimer:i,onResetIdleTimer:c,defaultAreYouThereTime:p=10,defaultIdleTime:m=20}=e,f=n.useCallback(()=>{o&&(u.KosLog.info("Are you there timer expired. Calling callback"),o==null||o())},[o]),d=n.useCallback(()=>{i&&(u.KosLog.info("Idle timer expired. Calling callback"),i==null||i())},[i]),b=n.useCallback(()=>{s&&(s.restart(),c==null||c())},[s,c]),a=n.useCallback(()=>{s&&(s.reset(),c==null||c())},[s,c]);return n.useEffect(()=>{if(t){u.KosLog.info("Nozzle is available. Creating timers");const g=u.TimerManager.createTimer(`${e.prefix??""}idle-timer-${t.path}`,m);return g==null||g.addTimeoutAction({name:"idle-timer",remainingTime:0,action:d}),g==null||g.addTimeoutAction({name:"are-you-there-timer",remainingTime:p,action:f}),r(g??null),()=>{g==null||g.reset(),r(null)}}return()=>{u.KosLog.info("Nozzle is not available. No timers to clear")}},[p,m,f,d,t,e.prefix]),{idleTimer:s,restart:b,pause:a}},We=({kit:e,inactivity:t,pour:s,screens:r})=>{var ue;const[o,i]=n.useState(!1),[c,p]=n.useState(!1),[m,f]=n.useState(!1),{model:d}=A(),[b,a]=n.useState(!1),g=(t==null?void 0:t.idleTimeout)??15,x=(t==null?void 0:t.areYouThereTimeoutOffset)??10,h=(s==null?void 0:s.idleTimeout)??(t==null?void 0:t.idleTimeout)??10,T=(s==null?void 0:s.areYouThereTimeoutOffset)??(t==null?void 0:t.areYouThereTimeoutOffset)??5,M=r==null?void 0:r.ambientTimeoutOffset,y=r==null?void 0:r.attractTimeout,D=n.useCallback(()=>{i(!0)},[]),R=n.useCallback(()=>{i(!1),e==null||e.nav.home()},[(ue=e==null?void 0:e.nav)==null?void 0:ue.home]),I=n.useCallback(()=>{M&&(p(!0),f(!1))},[M]),U=n.useCallback(()=>{y&&(f(!0),p(!1))},[y]),V=n.useCallback(()=>{y&&(f(!1),p(!1),e==null||e.nav.home())},[e==null?void 0:e.nav,y]),{pause:S,restart:w,resume:q,attractTimer:O}=qe({defaultAmbientTime:M,defaultAttractTime:y,onAmbientTimer:I,onAttractTimer:U,onResumeAttractTimer:V}),{pause:P,restart:K}=Q({defaultAreYouThereTime:x,defaultIdleTime:g,onAreYouThereTimer:D,onIdleTimer:R}),{pause:k,restart:B}=Q({defaultAreYouThereTime:T,defaultIdleTime:h,onAreYouThereTimer:D,onIdleTimer:R,prefix:"pour-"}),Y=n.useCallback(()=>{a(!1),k(),P()},[P,k]),_=n.useCallback(()=>{a(!0),console.log("restarting pour timer"),B(),P()},[P,B]),C=n.useCallback(()=>{i(!1),b?(B(),P()):(K(),k())},[b,P,k,K,B]),E=n.useCallback(()=>{S(),f(!1),p(!1),K()},[S,K]),He=n.useCallback(()=>{f(!1),p(!1),a(!1),k(),w()},[w,k]),Me=n.useCallback(()=>{f(!1),p(!1),a(!1),S(),K()},[S,K]),Le=n.useCallback(()=>{f(!1),p(!1),a(!1),w(),P(),k()},[w,P,k]),je=n.useCallback(()=>{f(!1),p(!1),w(),P()},[w,P]);ge({onBrandSelected:E,onBrandCleared:He,onBeverageSelected:Me,onBeverageCleared:Le,onPour:Y,onPourCancel:_,onInit:je});const Ne=b?T:x;return n.useEffect(()=>{if(d&&O){const De=`/kos/dispense/${d==null?void 0:d.path}/init/`;u.EventBus.publish(De,{})}},[d,O]),{showAreYouThere:o,clearAreYouThere:C,areYouThereCountdown:Ne,showAmbientScreen:c,showAttractScreen:m,pauseScreenTimer:q}},se=()=>{const e=v.DeviceAssembly.type;return u.useKosModel({modelId:e,modelType:v.DeviceAssembly.type,options:{}})};function Je(e){return t=>{const{model:s,status:r,KosModelLoader:o}=se();return l.jsx(o,{...r,children:l.jsx(e,{...t,deviceAssembly:s})})}}const re=e=>{const t=e;return u.useKosModel({modelId:t,modelType:v.Holder.type,options:{}})};function Qe(e,t){return s=>{const{model:r,status:o,KosModelLoader:i}=re(e);return l.jsx(i,{...o,children:l.jsx(t,{...s,holder:r})})}}const oe=()=>{const e=v.HolderContainer.type;return u.useKosModel({modelId:e,modelType:v.HolderContainer.type,options:{}})};function Xe(e){return t=>{const{model:s,status:r,KosModelLoader:o}=oe();return l.jsx(o,{...r,children:l.jsx(e,{...t,holderContainer:s})})}}const ne=()=>{const e=v.Ingredient.type;return u.useKosModel({modelId:e,modelType:v.Ingredient.type,options:{}})},W=u.KosLog.createLogger({name:"HoldToPourIntentStrategy",group:"kos-hooks"}),ve={name:"HoldToPourIntentStrategy",initiate(e,t){if(!(e!=null&&e.canPour)){W.debug(`${e==null?void 0:e.id} cannot pour. Returning early.`);return}t?(W.debug(`performing intent: ${t}`),e==null||e.performIntent(t)):W.debug("no intent provided. Returning early.")},initiateEnded(e){e==null||e.cancelPour()}},J=u.KosLog.createLogger({name:"useNozzlePour",group:"kos-hooks"}),Ze=({onPour:e,onPourCancel:t,intentContainer:s,strategy:r=ve})=>{const o=n.useCallback(()=>{J.debug(`[${r==null?void 0:r.name}] - Pour initiated for model ${s==null?void 0:s.id}.`),r==null||r.initiate(s),e==null||e()},[e,s,r]),i=n.useCallback(()=>{var m;J.debug(`[${r==null?void 0:r.name}] - Pour initiate ended called for nozzle ${s==null?void 0:s.id}.`),(m=r==null?void 0:r.initiateEnded)==null||m.call(r,s),t==null||t()},[t,s,r]),c=n.useCallback(()=>{J.debug(`Force cancelling pour for nozzle ${s==null?void 0:s.id}.`),s==null||s.cancelPour(),t==null||t()},[t,s]);return{handlers:u.usePressGesture({onPressed:o,onRelease:i}).dom,cancel:c,status:s}};function ze(e){return t=>{const{model:s,status:r,KosModelLoader:o}=ne();return l.jsx(o,{...r,children:l.jsx(e,{...t,ingredient:s})})}}const ae=()=>{const e=v.IngredientContainer.type;return u.useKosModel({modelId:e,modelType:v.IngredientContainer.type,options:{}})};function et(e){return t=>{const{model:s,status:r,KosModelLoader:o}=ae();return l.jsx(o,{...r,children:l.jsx(e,{...t,ingredientContainer:s})})}}function tt(e,t){return s=>{const{model:r,status:o,KosModelLoader:i}=te(e);return l.jsx(i,{...o,children:l.jsx(t,{...s,nozzle:r})})}}const j=u.KosLog.createLogger({name:"TapOrHoldIntentStrategy",group:"kos-hooks"});class st{constructor(t){L(this,"intent");L(this,"name","TapOrHoldIntentStrategy");L(this,"isHold",!1);L(this,"disposer",null);this.intent=t}initiate(t,s){if(this.disposer=setTimeout(()=>{this.isHold=!0},250),t!=null&&t.isPouring&&!this.isHold){j.debug("additional tap detected. cancelling pour"),t.cancelPour();return}if(!(t!=null&&t.canPour)){j.debug(`${t==null?void 0:t.id} cannot pour. Returning early.`);return}s?(j.debug(`performing intent: ${s}`),t==null||t.performIntent(s)):j.debug("no intent provided. Returning early.")}initiateEnded(t){if(this.disposer&&clearTimeout(this.disposer),this.disposer=null,!this.isHold){j.debug("Tap detected. don't cancel and return.");return}t==null||t.cancelPour()}}const G=u.KosLog.createLogger({name:"TapToPourIntentStrategy",group:"kos-hooks"}),rt={name:"TapToPourIntentStrategy",initiate(e,t){if(e!=null&&e.isPouring){G.debug(`Nozzle ${e==null?void 0:e.id} is already pouring. cancelling pour`),e.cancelPour();return}if(!(e!=null&&e.canPour)){G.debug(`Nozzle ${e==null?void 0:e.id} cannot pour. Returning early.`);return}t?(G.debug(`performing intent: ${t}`),e==null||e.performIntent(t)):G.debug("no intent provided. Returning early.")},initiateEnded(e){}},ie=u.KosLog.createLogger({name:"HoldToPourStrategy",group:"kos-hooks"}),ot={name:"TapToPourStrategy",initiate(e){if(e!=null&&e.isPouring){ie.debug(`Nozzle ${e==null?void 0:e.id} is already pouring. cancelling pour`),e.cancelPour();return}if(!(e!=null&&e.canPour)){ie.debug(`Nozzle ${e==null?void 0:e.id} cannot pour. Returning early.`);return}e==null||e.pour()},initiateEnded(e){}},Ce=n.createContext(void 0),nt=({children:e})=>{const{model:t,ready:s}=X(),r=n.useMemo(()=>s&&t?{model:t}:{},[s,t]);return l.jsx(Ce.Provider,{value:r,children:e})},at=()=>{const e=n.useContext(Ce);if(!e)throw new Error("useAssemblyContext must be used within a AssemblyProvider");return e},xe=n.createContext(void 0),ut=({children:e})=>{const{model:t,ready:s}=Z(),r=n.useMemo(()=>s&&t?{model:t}:{},[s,t]);return l.jsx(xe.Provider,{value:r,children:e})},it=()=>{const e=n.useContext(xe);if(!e)throw new Error("useAvailabilityContext must be used within a AvailabilityProvider");return e},Pe=n.createContext(void 0),ct=({children:e,id:t})=>{const{model:s,ready:r}=z(t),o=n.useMemo(()=>r&&s?{model:s}:{},[r,s]);return l.jsx(Pe.Provider,{value:o,children:e})},dt=()=>{const e=n.useContext(Pe);if(!e)throw new Error("useBoardContext must be used within a BoardProvider");return e},Te=n.createContext(void 0),lt=({children:e})=>{const{model:t,ready:s}=ee(),r=n.useMemo(()=>s&&t?{model:t}:{},[s,t]);return l.jsx(Te.Provider,{value:r,children:e})},pt=()=>{const e=n.useContext(Te);if(!e)throw new Error("useBoardContainerContext must be used within a BoardContainerProvider");return e},ke=n.createContext(void 0),Ae=({children:e})=>{const{model:t,ready:s}=se(),r=n.useMemo(()=>{if(s&&t){const i=t.nozzlePaths;return{model:t,nozzlePaths:i}}return{}},[s,t]),o=s&&t?e:null;return l.jsx(ke.Provider,{value:r,children:o})},Ie=()=>{const e=n.useContext(ke);if(!e)throw new Error("useDeviceAssemblyContext must be used within a DeviceAssemblyProvider");return e};function bt(){const e=n.createContext(null);return[()=>{const s=n.useContext(e);if(s===void 0)throw new Error("useDispenseKitContext must be used within a Provider");return s},e.Provider]}function we({children:e,provider:t,props:s}){const r=he(s);return l.jsx(t,{value:r,children:e({})})}function mt({children:e,provider:t,props:s}){const{nozzlePaths:r}=Ie();return(r==null?void 0:r.map(i=>l.jsx(de,{path:i,children:l.jsx(we,{provider:t,props:s,children:e})},i)))||[]}function Ke({provider:e,props:t}){return({children:s})=>e?l.jsx(Ae,{children:l.jsx(mt,{provider:e,props:t,children:s})}):null}function ft(e){const[t,s]=bt();return[t,Ke({provider:s,props:e})]}const ye=n.createContext(void 0),ht=({children:e,id:t})=>{const{model:s,ready:r}=re(t||""),o=n.useMemo(()=>r&&s?{model:s}:{},[r,s]);return l.jsx(ye.Provider,{value:o,children:e})},gt=()=>{const e=n.useContext(ye);if(!e)throw new Error("useHolderContext must be used within a HolderProvider");return e},Be=n.createContext(void 0),vt=({children:e})=>{const{model:t,ready:s}=oe(),r=n.useMemo(()=>s&&t?{model:t}:{},[s,t]);return l.jsx(Be.Provider,{value:r,children:e})},Ct=()=>{const e=n.useContext(Be);if(!e)throw new Error("useHolderContainerContext must be used within a HolderContainerProvider");return e},Ee=n.createContext(void 0),xt=({children:e})=>{const{model:t,ready:s}=ne(),r=n.useMemo(()=>s&&t?{model:t}:{},[s,t]);return l.jsx(Ee.Provider,{value:r,children:e})},Pt=()=>{const e=n.useContext(Ee);if(!e)throw new Error("useIngredientContext must be used within a IngredientProvider");return e},Se=n.createContext(void 0),Tt=({children:e})=>{const{model:t,ready:s}=ae(),r=n.useMemo(()=>s&&t?{model:t}:{},[s,t]);return l.jsx(Se.Provider,{value:r,children:e})},kt=()=>{const e=n.useContext(Se);if(!e)throw new Error("useIngredientContainerContext must be used within a IngredientContainerProvider");return e},At=()=>{const e=v.Pump.type;return u.useKosModel({modelId:e,modelType:v.Pump.type,options:{}})},$e=n.createContext(void 0),It=({children:e})=>{const{model:t,ready:s}=At(),r=n.useMemo(()=>s&&t?{model:t}:{},[s,t]);return l.jsx($e.Provider,{value:r,children:e})},wt=()=>{const e=n.useContext($e);if(!e)throw new Error("usePumpContext must be used within a PumpProvider");return e};exports.AssemblyProvider=nt;exports.AvailabilityProvider=ut;exports.BoardContainerProvider=lt;exports.BoardProvider=ct;exports.CuiKit=Ke;exports.CuiKitWrapper=we;exports.DISPENSE_GROUP_BEVERAGE=N;exports.DISPENSE_GROUP_BRAND=$;exports.DISPENSE_GROUP_FLAVOR=H;exports.DeviceAssemblyProvider=Ae;exports.HoldToPourIntentStrategy=ve;exports.HoldToPourStrategy=be;exports.HolderContainerProvider=vt;exports.HolderProvider=ht;exports.IngredientContainerProvider=Tt;exports.IngredientProvider=xt;exports.NozzleProvider=de;exports.PumpProvider=It;exports.TapOrHoldIntentStrategy=st;exports.TapToPourIntentStrategy=rt;exports.TapToPourStrategy=ot;exports.initializeCuiKit=ft;exports.useAssembly=X;exports.useAssemblyContext=at;exports.useAvailability=Z;exports.useAvailabilityContext=it;exports.useBeverages=le;exports.useBoard=z;exports.useBoardContainer=ee;exports.useBoardContainerContext=pt;exports.useBoardContext=dt;exports.useBrands=pe;exports.useCuiKit=he;exports.useCuiKitTimers=Q;exports.useDefaultCuiKitLifecycle=We;exports.useDeviceAssembly=se;exports.useDeviceAssemblyContext=Ie;exports.useDispenseLifecycle=ge;exports.useFlavors=fe;exports.useHolder=re;exports.useHolderContainer=oe;exports.useHolderContainerContext=Ct;exports.useHolderContext=gt;exports.useIngredient=ne;exports.useIngredientContainer=ae;exports.useIngredientContainerContext=kt;exports.useIngredientContext=Pt;exports.useIngredientPour=Ze;exports.useNozzle=te;exports.useNozzleContext=A;exports.useNozzlePour=me;exports.usePumpContext=wt;exports.withAssembly=Ye;exports.withBeverage=_e;exports.withBoard=Ge;exports.withBoardContainer=Ue;exports.withDeviceAssembly=Je;exports.withHolder=Qe;exports.withHolderContainer=Xe;exports.withIngredient=ze;exports.withIngredientContainer=et;exports.withNozzle=tt;
2
- //# sourceMappingURL=pump-provider-DX58hw88.cjs.map
1
+ "use strict";var Re=Object.defineProperty;var Oe=(e,t,s)=>t in e?Re(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s;var L=(e,t,s)=>(Oe(e,typeof t!="symbol"?t+"":t,s),s);const l=require("@emotion/react/jsx-runtime"),u=require("@kosdev-code/kos-ui-sdk"),n=require("react"),v=require("./dispense-registration-manager-CyWSYz58.cjs"),X=()=>{const e=v.Assembly.type;return u.useKosModel({modelId:e,modelType:v.Assembly.type,options:{}})};function Ye(e){return t=>{const{model:s,status:r,KosModelLoader:o}=X();return l.jsx(o,{...r,children:l.jsx(e,{...t,assembly:s})})}}const Z=()=>{const e=v.Availability.type;return u.useKosModel({modelId:e,modelType:v.Availability.type,options:{}})};function _e(e){return t=>{const{model:s,status:r,KosModelLoader:o}=Z();return l.jsx(o,{...r,children:l.jsx(e,{...t,beverage:s})})}}const z=e=>{const t=e;return u.useKosModel({modelId:t,modelType:v.Board.type,options:{}})};function Ge(e){return t=>s=>{const{model:r,status:o,KosModelLoader:i}=z(t);return l.jsx(i,{...o,children:l.jsx(e,{...s,board:r})})}}const ee=()=>{const e=v.BoardContainer.type;return u.useKosModel({modelId:e,modelType:v.BoardContainer.type,options:{}})};function Ue(e){return t=>{const{model:s,status:r,KosModelLoader:o}=ee();return l.jsx(o,{...r,children:l.jsx(e,{...t,boardContainer:s})})}}const te=e=>{const t=e;return u.useKosModel({modelId:t,modelType:v.Nozzle.type,options:{path:e}})},ce=n.createContext(void 0),de=({children:e,path:t})=>{const{model:s,ready:r}=te(t),o=n.useMemo(()=>r&&s?{model:s}:{},[r,s]);return l.jsx(ce.Provider,{value:o,children:e})},A=()=>{const e=n.useContext(ce);if(!e)throw new Error("useNozzleContext must be used within a NozzleProvider");return e},le=({onBeverageSelected:e,onClearBeverage:t,companionType:s})=>{const{model:r}=A(),[o,i]=n.useState([]),[c,p]=n.useState(null),m=n.useMemo(()=>s?o.map(b=>u.getKosCompanionModel(b,s)):[],[o,s]),f=n.useCallback(async b=>{p(b),await(r==null?void 0:r.setSelectedPourable({beverage:b})),e==null||e(b)},[r,e]),d=n.useCallback(async()=>{p(null),await(r==null?void 0:r.setSelectedPourable({beverage:void 0})),t==null||t()},[r,t]);return n.useEffect(()=>{const b=u.kosAutoEffect(()=>{if(!r)return;const a=r.selectedBrand;if(!a){const x=r.getGroupAvailabilityItems("beverages").filter(h=>h.visible);i(x??[]);return}const g=r.getAvailabilityByParent(a.id).filter(x=>x.visible);i(g??[])});return()=>{b()}},[r]),{beverages:o,beverageCompanions:m,selectBeverage:f,selectedBeverage:c,clearBeverage:d}},pe=({onBrandSelected:e,onBrandCleared:t,companionType:s})=>{const{model:r}=A(),[o,i]=n.useState(null),c=n.useMemo(()=>(r==null?void 0:r.getGroupAvailabilityItems("brands").filter(d=>d.visible))??[],[r]),p=n.useMemo(()=>s?c.map(d=>u.getKosCompanionModel(d,s)):[],[c,s]),m=n.useCallback(async d=>{i(d),r==null||r.setSelectedBrand(d),e==null||e(d)},[r,e]),f=n.useCallback(()=>{i(null),r==null||r.setSelectedBrand(void 0),t==null||t()},[r,t]);return{brands:c,brandCompanions:p,selectedBrand:o,selectBrand:m,clearBrand:f}},Ve=u.KosLog.createLogger({name:"HoldToPourStrategy",group:"kos-hooks"}),be={name:"HoldToPourStrategy",initiate(e){if(!(e!=null&&e.canPour)){Ve.debug(`Nozzle ${e==null?void 0:e.id} cannot pour. Returning early.`);return}e==null||e.pour()},initiateEnded(e){e==null||e.cancelPour()}},F=u.KosLog.createLogger({name:"useNozzlePour",group:"kos-hooks"}),me=({onPour:e,onPourCancel:t,strategy:s=be})=>{const{model:r}=A(),o=n.useCallback(()=>{F.debug(`[${s==null?void 0:s.name}] - Pour initiated for nozzle ${r==null?void 0:r.id}.`),s==null||s.initiate(r),e==null||e()},[e,r,s]),i=n.useCallback(()=>{var m;F.debug(`[${s==null?void 0:s.name}] - Pour initiate ended called for nozzle ${r==null?void 0:r.id}.`),(m=s==null?void 0:s.initiateEnded)==null||m.call(s,r),t==null||t()},[t,r,s]),c=n.useCallback(()=>{F.debug(`Force cancelling pour for nozzle ${r==null?void 0:r.id}.`),r==null||r.cancelPour(),t==null||t()},[t,r]);return{handlers:u.usePressGesture({onPressed:o,onRelease:i}).dom,cancel:c,status:r}},fe=({onFlavorSelected:e,onFlavorCleared:t,companionType:s})=>{const{model:r}=A(),o=n.useMemo(()=>(r==null?void 0:r.getGroupAvailabilityItems("flavors").filter(d=>d.visible))??[],[r]),i=n.useMemo(()=>s?o.map(d=>u.getKosCompanionModel(d,s)):[],[o,s]),[c,p]=n.useState([]),m=n.useCallback(async d=>{if(p(b=>b!=null&&b.includes(d)?[...b.filter(a=>a!==d)]:[...b??[],d]),r!=null&&r.selectedPourable){const{beverage:b}=r.selectedPourable;await r.setSelectedPourable({beverage:b,additional:c??[]})}e==null||e(d,c??[])},[r,e,c]),f=n.useCallback(async()=>{if(p([]),r!=null&&r.selectedPourable){const{beverage:d}=r.selectedPourable;r.setSelectedPourable({beverage:d}),t==null||t()}},[r,t]);return{flavors:o,flavorCompanions:i,selectFlavor:m,selectedFlavors:c,clearFlavors:f}},$="brands",N="beverages",H="flavors",he=({initialGroup:e=$,options:t={}})=>{var B,Y,_;const[s,r]=n.useState(e),{model:o}=A(),i=n.useCallback(C=>{r(H);const E=`/kos/dispense/${o==null?void 0:o.path}/brand/selected/`;u.EventBus.publish(E,C)},[o==null?void 0:o.path]),c=n.useCallback(()=>{const C=`/kos/dispense/${o==null?void 0:o.path}/brand/cleared/`;u.EventBus.publish(C,{})},[o==null?void 0:o.path]),p=n.useCallback(C=>{r(H);const E=`/kos/dispense/${o==null?void 0:o.path}/beverage/selected/`;u.EventBus.publish(E,C)},[o==null?void 0:o.path]),m=n.useCallback(()=>{const C=`/kos/dispense/${o==null?void 0:o.path}/beverage/cleared/`;u.EventBus.publish(C,{})},[o==null?void 0:o.path]),f=n.useCallback(C=>{const E=`/kos/dispense/${o==null?void 0:o.path}/flavor/selected/`;u.EventBus.publish(E,C)},[o==null?void 0:o.path]),d=n.useCallback(()=>{const C=`/kos/dispense/${o==null?void 0:o.path}/flavor/cleared/`;u.EventBus.publish(C,{})},[o==null?void 0:o.path]),b=n.useCallback(()=>{const C=`/kos/dispense/${o==null?void 0:o.path}/pour/`;u.EventBus.publish(C,{})},[o==null?void 0:o.path]),a=n.useCallback(()=>{const C=`/kos/dispense/${o==null?void 0:o.path}/pour/cancel/`;u.EventBus.publish(C,{})},[o==null?void 0:o.path]),{brands:g,selectBrand:x,selectedBrand:h,clearBrand:T,brandCompanions:M}=pe({companionType:(B=t.companionTypes)==null?void 0:B.brand,onBrandSelected:i,onBrandCleared:c}),{beverages:y,selectBeverage:D,selectedBeverage:R,clearBeverage:I,beverageCompanions:U}=le({companionType:(Y=t.companionTypes)==null?void 0:Y.beverage,onBeverageSelected:p,onClearBeverage:m}),{clearFlavors:V,flavors:S,selectFlavor:w,selectedFlavors:q,flavorCompanions:O}=fe({companionType:(_=t.companionTypes)==null?void 0:_.flavor,onFlavorSelected:f,onFlavorCleared:d}),P=me({onPour:b,onPourCancel:a}),K=n.useCallback(()=>{switch(s){case $:I(),T();break;case N:case H:r(e),I(),T();break}},[I,T,s,e]),k=n.useCallback(()=>{r(e),e===$&&(I(),T()),e===N&&I()},[I,T,e]);return{nav:{currentGroup:s,back:K,home:k},pour:P,selections:{[$]:h,[N]:R,[H]:q},[$]:{models:g,companions:M,clear:T,handlers:{onSelected:x}},[N]:{models:y,companions:U,clear:I,handlers:{onSelected:D}},[H]:{models:S,companions:O,clear:V,handlers:{onSelected:w}}}},qe=e=>{const{model:t}=A(),[s,r]=n.useState(null),{onAmbientTimer:o,onAttractTimer:i,onResetAttractTimer:c,onResumeAttractTimer:p,defaultAttractTime:m,defaultAmbientTime:f}=e,d=n.useCallback(()=>{o&&(u.KosLog.info("Ambient timer expired. Calling callback"),o==null||o())},[o]),b=n.useCallback(()=>{i&&(u.KosLog.info("Attract timer expired. Calling callback"),i==null||i())},[i]),a=n.useCallback(()=>{s&&(s.restart(),c==null||c())},[s,c]),g=n.useCallback(()=>{s&&(s.reset(),c==null||c())},[s,c]),x=n.useCallback(()=>{s&&(s.pause(),p==null||p())},[s,p]);return n.useEffect(()=>{if(t&&m){u.KosLog.info("Nozzle is available. Creating timers");const h=u.TimerManager.createTimer("attract-timer-"+t.path,m);return m&&(h==null||h.addTimeoutAction({name:"attract-timer",remainingTime:0,action:b})),f&&(h==null||h.addTimeoutAction({name:"ambient-timer",remainingTime:f,action:d})),m&&(h==null||h.start()),r(h??null),()=>{h==null||h.reset(),r(null)}}return()=>{u.KosLog.info("Nozzle is not available. No timers to clear")}},[f,m,d,b,t]),{attractTimer:s,restart:a,pause:g,resume:x}},Fe=(e,t)=>{if(t)return u.EventBus.subscribe(e,t).unsubscribe},ge=({onInit:e,onBrandSelected:t,onBrandCleared:s,onBeverageCleared:r,onBeverageSelected:o,onFlavorCleared:i,onFlavorSelected:c,onPour:p,onPourCancel:m,onAmbientTimer:f,onAttractTimer:d,onResumeAttractTimer:b})=>{const{model:a}=A();n.useEffect(()=>{const x=[{topic:`/kos/dispense/${a==null?void 0:a.path}/brand/selected/`,callback:t},{topic:`/kos/dispense/${a==null?void 0:a.path}/brand/cleared/`,callback:s},{topic:`/kos/dispense/${a==null?void 0:a.path}/beverage/selected/`,callback:o},{topic:`/kos/dispense/${a==null?void 0:a.path}/beverage/cleared/`,callback:r},{topic:`/kos/dispense/${a==null?void 0:a.path}/flavor/selected/`,callback:c},{topic:`/kos/dispense/${a==null?void 0:a.path}/flavor/cleared/`,callback:i},{topic:`/kos/dispense/${a==null?void 0:a.path}/pour/`,callback:p},{topic:`/kos/dispense/${a==null?void 0:a.path}/pour/cancel/`,callback:m},{topic:`/kos/dispense/${a==null?void 0:a.path}/ambient/start/`,callback:f},{topic:`/kos/dispense/${a==null?void 0:a.path}/attract/start/`,callback:d},{topic:`/kos/dispense/${a==null?void 0:a.path}/attract/resume/`,callback:b},{topic:`/kos/dispense/${a==null?void 0:a.path}/init/`,callback:e}].map(({topic:h,callback:T})=>Fe(h,T));return()=>{x.forEach(h=>h==null?void 0:h())}},[a==null?void 0:a.path,f,d,r,o,s,t,i,c,p,m,b,e])},Q=e=>{const{model:t}=A(),[s,r]=n.useState(null),{onAreYouThereTimer:o,onIdleTimer:i,onResetIdleTimer:c,defaultAreYouThereTime:p=10,defaultIdleTime:m=20}=e,f=n.useCallback(()=>{o&&(u.KosLog.info("Are you there timer expired. Calling callback"),o==null||o())},[o]),d=n.useCallback(()=>{i&&(u.KosLog.info("Idle timer expired. Calling callback"),i==null||i())},[i]),b=n.useCallback(()=>{s&&(s.restart(),c==null||c())},[s,c]),a=n.useCallback(()=>{s&&(s.reset(),c==null||c())},[s,c]);return n.useEffect(()=>{if(t){u.KosLog.info("Nozzle is available. Creating timers");const g=u.TimerManager.createTimer(`${e.prefix??""}idle-timer-${t.path}`,m);return g==null||g.addTimeoutAction({name:"idle-timer",remainingTime:0,action:d}),g==null||g.addTimeoutAction({name:"are-you-there-timer",remainingTime:p,action:f}),r(g??null),()=>{g==null||g.reset(),r(null)}}return()=>{u.KosLog.info("Nozzle is not available. No timers to clear")}},[p,m,f,d,t,e.prefix]),{idleTimer:s,restart:b,pause:a}},We=({kit:e,inactivity:t,pour:s,screens:r})=>{var ue;const[o,i]=n.useState(!1),[c,p]=n.useState(!1),[m,f]=n.useState(!1),{model:d}=A(),[b,a]=n.useState(!1),g=(t==null?void 0:t.idleTimeout)??15,x=(t==null?void 0:t.areYouThereTimeoutOffset)??10,h=(s==null?void 0:s.idleTimeout)??(t==null?void 0:t.idleTimeout)??10,T=(s==null?void 0:s.areYouThereTimeoutOffset)??(t==null?void 0:t.areYouThereTimeoutOffset)??5,M=r==null?void 0:r.ambientTimeoutOffset,y=r==null?void 0:r.attractTimeout,D=n.useCallback(()=>{i(!0)},[]),R=n.useCallback(()=>{i(!1),e==null||e.nav.home()},[(ue=e==null?void 0:e.nav)==null?void 0:ue.home]),I=n.useCallback(()=>{M&&(p(!0),f(!1))},[M]),U=n.useCallback(()=>{y&&(f(!0),p(!1))},[y]),V=n.useCallback(()=>{y&&(f(!1),p(!1),e==null||e.nav.home())},[e==null?void 0:e.nav,y]),{pause:S,restart:w,resume:q,attractTimer:O}=qe({defaultAmbientTime:M,defaultAttractTime:y,onAmbientTimer:I,onAttractTimer:U,onResumeAttractTimer:V}),{pause:P,restart:K}=Q({defaultAreYouThereTime:x,defaultIdleTime:g,onAreYouThereTimer:D,onIdleTimer:R}),{pause:k,restart:B}=Q({defaultAreYouThereTime:T,defaultIdleTime:h,onAreYouThereTimer:D,onIdleTimer:R,prefix:"pour-"}),Y=n.useCallback(()=>{a(!1),k(),P()},[P,k]),_=n.useCallback(()=>{a(!0),console.log("restarting pour timer"),B(),P()},[P,B]),C=n.useCallback(()=>{i(!1),b?(B(),P()):(K(),k())},[b,P,k,K,B]),E=n.useCallback(()=>{S(),f(!1),p(!1),K()},[S,K]),He=n.useCallback(()=>{f(!1),p(!1),a(!1),k(),w()},[w,k]),Me=n.useCallback(()=>{f(!1),p(!1),a(!1),S(),K()},[S,K]),Le=n.useCallback(()=>{f(!1),p(!1),a(!1),w(),P(),k()},[w,P,k]),je=n.useCallback(()=>{f(!1),p(!1),w(),P()},[w,P]);ge({onBrandSelected:E,onBrandCleared:He,onBeverageSelected:Me,onBeverageCleared:Le,onPour:Y,onPourCancel:_,onInit:je});const Ne=b?T:x;return n.useEffect(()=>{if(d&&O){const De=`/kos/dispense/${d==null?void 0:d.path}/init/`;u.EventBus.publish(De,{})}},[d,O]),{showAreYouThere:o,clearAreYouThere:C,areYouThereCountdown:Ne,showAmbientScreen:c,showAttractScreen:m,pauseScreenTimer:q}},se=()=>{const e=v.DeviceAssembly.type;return u.useKosModel({modelId:e,modelType:v.DeviceAssembly.type,options:{}})};function Je(e){return t=>{const{model:s,status:r,KosModelLoader:o}=se();return l.jsx(o,{...r,children:l.jsx(e,{...t,deviceAssembly:s})})}}const re=e=>{const t=e;return u.useKosModel({modelId:t,modelType:v.Holder.type,options:{}})};function Qe(e,t){return s=>{const{model:r,status:o,KosModelLoader:i}=re(e);return l.jsx(i,{...o,children:l.jsx(t,{...s,holder:r})})}}const oe=()=>{const e=v.HolderContainer.type;return u.useKosModel({modelId:e,modelType:v.HolderContainer.type,options:{}})};function Xe(e){return t=>{const{model:s,status:r,KosModelLoader:o}=oe();return l.jsx(o,{...r,children:l.jsx(e,{...t,holderContainer:s})})}}const ne=()=>{const e=v.Ingredient.type;return u.useKosModel({modelId:e,modelType:v.Ingredient.type,options:{}})},W=u.KosLog.createLogger({name:"HoldToPourIntentStrategy",group:"kos-hooks"}),ve={name:"HoldToPourIntentStrategy",initiate(e,t){if(!(e!=null&&e.canPour)){W.debug(`${e==null?void 0:e.id} cannot pour. Returning early.`);return}t?(W.debug(`performing intent: ${t}`),e==null||e.performIntent(t)):W.debug("no intent provided. Returning early.")},initiateEnded(e){e==null||e.cancelPour()}},J=u.KosLog.createLogger({name:"useNozzlePour",group:"kos-hooks"}),Ze=({onPour:e,onPourCancel:t,intentContainer:s,strategy:r=ve})=>{const o=n.useCallback(()=>{J.debug(`[${r==null?void 0:r.name}] - Pour initiated for model ${s==null?void 0:s.id}.`),r==null||r.initiate(s),e==null||e()},[e,s,r]),i=n.useCallback(()=>{var m;J.debug(`[${r==null?void 0:r.name}] - Pour initiate ended called for nozzle ${s==null?void 0:s.id}.`),(m=r==null?void 0:r.initiateEnded)==null||m.call(r,s),t==null||t()},[t,s,r]),c=n.useCallback(()=>{J.debug(`Force cancelling pour for nozzle ${s==null?void 0:s.id}.`),s==null||s.cancelPour(),t==null||t()},[t,s]);return{handlers:u.usePressGesture({onPressed:o,onRelease:i}).dom,cancel:c,status:s}};function ze(e){return t=>{const{model:s,status:r,KosModelLoader:o}=ne();return l.jsx(o,{...r,children:l.jsx(e,{...t,ingredient:s})})}}const ae=()=>{const e=v.IngredientContainer.type;return u.useKosModel({modelId:e,modelType:v.IngredientContainer.type,options:{}})};function et(e){return t=>{const{model:s,status:r,KosModelLoader:o}=ae();return l.jsx(o,{...r,children:l.jsx(e,{...t,ingredientContainer:s})})}}function tt(e,t){return s=>{const{model:r,status:o,KosModelLoader:i}=te(e);return l.jsx(i,{...o,children:l.jsx(t,{...s,nozzle:r})})}}const j=u.KosLog.createLogger({name:"TapOrHoldIntentStrategy",group:"kos-hooks"});class st{constructor(t){L(this,"intent");L(this,"name","TapOrHoldIntentStrategy");L(this,"isHold",!1);L(this,"disposer",null);this.intent=t}initiate(t,s){if(this.disposer=setTimeout(()=>{this.isHold=!0},250),t!=null&&t.isPouring&&!this.isHold){j.debug("additional tap detected. cancelling pour"),t.cancelPour();return}if(!(t!=null&&t.canPour)){j.debug(`${t==null?void 0:t.id} cannot pour. Returning early.`);return}s?(j.debug(`performing intent: ${s}`),t==null||t.performIntent(s)):j.debug("no intent provided. Returning early.")}initiateEnded(t){if(this.disposer&&clearTimeout(this.disposer),this.disposer=null,!this.isHold){j.debug("Tap detected. don't cancel and return.");return}t==null||t.cancelPour()}}const G=u.KosLog.createLogger({name:"TapToPourIntentStrategy",group:"kos-hooks"}),rt={name:"TapToPourIntentStrategy",initiate(e,t){if(e!=null&&e.isPouring){G.debug(`Nozzle ${e==null?void 0:e.id} is already pouring. cancelling pour`),e.cancelPour();return}if(!(e!=null&&e.canPour)){G.debug(`Nozzle ${e==null?void 0:e.id} cannot pour. Returning early.`);return}t?(G.debug(`performing intent: ${t}`),e==null||e.performIntent(t)):G.debug("no intent provided. Returning early.")},initiateEnded(e){}},ie=u.KosLog.createLogger({name:"HoldToPourStrategy",group:"kos-hooks"}),ot={name:"TapToPourStrategy",initiate(e){if(e!=null&&e.isPouring){ie.debug(`Nozzle ${e==null?void 0:e.id} is already pouring. cancelling pour`),e.cancelPour();return}if(!(e!=null&&e.canPour)){ie.debug(`Nozzle ${e==null?void 0:e.id} cannot pour. Returning early.`);return}e==null||e.pour()},initiateEnded(e){}},Ce=n.createContext(void 0),nt=({children:e})=>{const{model:t,ready:s}=X(),r=n.useMemo(()=>s&&t?{model:t}:{},[s,t]);return l.jsx(Ce.Provider,{value:r,children:e})},at=()=>{const e=n.useContext(Ce);if(!e)throw new Error("useAssemblyContext must be used within a AssemblyProvider");return e},xe=n.createContext(void 0),ut=({children:e})=>{const{model:t,ready:s}=Z(),r=n.useMemo(()=>s&&t?{model:t}:{},[s,t]);return l.jsx(xe.Provider,{value:r,children:e})},it=()=>{const e=n.useContext(xe);if(!e)throw new Error("useAvailabilityContext must be used within a AvailabilityProvider");return e},Pe=n.createContext(void 0),ct=({children:e,id:t})=>{const{model:s,ready:r}=z(t),o=n.useMemo(()=>r&&s?{model:s}:{},[r,s]);return l.jsx(Pe.Provider,{value:o,children:e})},dt=()=>{const e=n.useContext(Pe);if(!e)throw new Error("useBoardContext must be used within a BoardProvider");return e},Te=n.createContext(void 0),lt=({children:e})=>{const{model:t,ready:s}=ee(),r=n.useMemo(()=>s&&t?{model:t}:{},[s,t]);return l.jsx(Te.Provider,{value:r,children:e})},pt=()=>{const e=n.useContext(Te);if(!e)throw new Error("useBoardContainerContext must be used within a BoardContainerProvider");return e},ke=n.createContext(void 0),Ae=({children:e})=>{const{model:t,ready:s}=se(),r=n.useMemo(()=>{if(s&&t){const i=t.nozzlePaths;return{model:t,nozzlePaths:i}}return{}},[s,t]),o=s&&t?e:null;return l.jsx(ke.Provider,{value:r,children:o})},Ie=()=>{const e=n.useContext(ke);if(!e)throw new Error("useDeviceAssemblyContext must be used within a DeviceAssemblyProvider");return e};function bt(){const e=n.createContext(null);return[()=>{const s=n.useContext(e);if(s===void 0)throw new Error("useDispenseKitContext must be used within a Provider");return s},e.Provider]}function we({children:e,provider:t,props:s}){const r=he(s);return l.jsx(t,{value:r,children:e({})})}function mt({children:e,provider:t,props:s}){const{nozzlePaths:r}=Ie();return(r==null?void 0:r.map(i=>l.jsx(de,{path:i,children:l.jsx(we,{provider:t,props:s,children:e})},i)))||[]}function Ke({provider:e,props:t}){return({children:s})=>e?l.jsx(Ae,{children:l.jsx(mt,{provider:e,props:t,children:s})}):null}function ft(e){const[t,s]=bt();return[t,Ke({provider:s,props:e})]}const ye=n.createContext(void 0),ht=({children:e,id:t})=>{const{model:s,ready:r}=re(t||""),o=n.useMemo(()=>r&&s?{model:s}:{},[r,s]);return l.jsx(ye.Provider,{value:o,children:e})},gt=()=>{const e=n.useContext(ye);if(!e)throw new Error("useHolderContext must be used within a HolderProvider");return e},Be=n.createContext(void 0),vt=({children:e})=>{const{model:t,ready:s}=oe(),r=n.useMemo(()=>s&&t?{model:t}:{},[s,t]);return l.jsx(Be.Provider,{value:r,children:e})},Ct=()=>{const e=n.useContext(Be);if(!e)throw new Error("useHolderContainerContext must be used within a HolderContainerProvider");return e},Ee=n.createContext(void 0),xt=({children:e})=>{const{model:t,ready:s}=ne(),r=n.useMemo(()=>s&&t?{model:t}:{},[s,t]);return l.jsx(Ee.Provider,{value:r,children:e})},Pt=()=>{const e=n.useContext(Ee);if(!e)throw new Error("useIngredientContext must be used within a IngredientProvider");return e},Se=n.createContext(void 0),Tt=({children:e})=>{const{model:t,ready:s}=ae(),r=n.useMemo(()=>s&&t?{model:t}:{},[s,t]);return l.jsx(Se.Provider,{value:r,children:e})},kt=()=>{const e=n.useContext(Se);if(!e)throw new Error("useIngredientContainerContext must be used within a IngredientContainerProvider");return e},At=()=>{const e=v.Pump.type;return u.useKosModel({modelId:e,modelType:v.Pump.type,options:{}})},$e=n.createContext(void 0),It=({children:e})=>{const{model:t,ready:s}=At(),r=n.useMemo(()=>s&&t?{model:t}:{},[s,t]);return l.jsx($e.Provider,{value:r,children:e})},wt=()=>{const e=n.useContext($e);if(!e)throw new Error("usePumpContext must be used within a PumpProvider");return e};exports.AssemblyProvider=nt;exports.AvailabilityProvider=ut;exports.BoardContainerProvider=lt;exports.BoardProvider=ct;exports.CuiKit=Ke;exports.CuiKitWrapper=we;exports.DISPENSE_GROUP_BEVERAGE=N;exports.DISPENSE_GROUP_BRAND=$;exports.DISPENSE_GROUP_FLAVOR=H;exports.DeviceAssemblyProvider=Ae;exports.HoldToPourIntentStrategy=ve;exports.HoldToPourStrategy=be;exports.HolderContainerProvider=vt;exports.HolderProvider=ht;exports.IngredientContainerProvider=Tt;exports.IngredientProvider=xt;exports.NozzleProvider=de;exports.PumpProvider=It;exports.TapOrHoldIntentStrategy=st;exports.TapToPourIntentStrategy=rt;exports.TapToPourStrategy=ot;exports.initializeCuiKit=ft;exports.useAssembly=X;exports.useAssemblyContext=at;exports.useAvailability=Z;exports.useAvailabilityContext=it;exports.useBeverages=le;exports.useBoard=z;exports.useBoardContainer=ee;exports.useBoardContainerContext=pt;exports.useBoardContext=dt;exports.useBrands=pe;exports.useCuiKit=he;exports.useCuiKitTimers=Q;exports.useDefaultCuiKitLifecycle=We;exports.useDeviceAssembly=se;exports.useDeviceAssemblyContext=Ie;exports.useDispenseLifecycle=ge;exports.useFlavors=fe;exports.useHolder=re;exports.useHolderContainer=oe;exports.useHolderContainerContext=Ct;exports.useHolderContext=gt;exports.useIngredient=ne;exports.useIngredientContainer=ae;exports.useIngredientContainerContext=kt;exports.useIngredientContext=Pt;exports.useIngredientPour=Ze;exports.useNozzle=te;exports.useNozzleContext=A;exports.useNozzlePour=me;exports.usePumpContext=wt;exports.withAssembly=Ye;exports.withBeverage=_e;exports.withBoard=Ge;exports.withBoardContainer=Ue;exports.withDeviceAssembly=Je;exports.withHolder=Qe;exports.withHolderContainer=Xe;exports.withIngredient=ze;exports.withIngredientContainer=et;exports.withNozzle=tt;
2
+ //# sourceMappingURL=pump-provider-TiFSFuPe.cjs.map