@kosdev-code/kos-dispense-sdk 2.0.20 → 2.0.21

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