@kosdev-code/kos-dispense-sdk 2.1.13 → 2.1.15
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.
- package/index.cjs +1 -1
- package/index.js +1 -1
- package/package.json +2 -2
- package/{pump-provider-B0n-z7GU.cjs → pump-provider-86479YU2.cjs} +2 -2
- package/{pump-provider-B0n-z7GU.cjs.map → pump-provider-86479YU2.cjs.map} +1 -1
- package/{pump-provider-DodZo0It.js → pump-provider-DSyiDoPF.js} +28 -27
- package/{pump-provider-DodZo0It.js.map → pump-provider-DSyiDoPF.js.map} +1 -1
- package/ui/hooks/generic-pour/use-generic-pour.d.ts +2 -1
- package/ui/hooks/generic-pour/use-generic-pour.d.ts.map +1 -1
- package/ui.cjs +1 -1
- package/ui.js +1 -1
package/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./dispense-registration-manager-BZ5L3AWX.cjs"),o=require("./extension-utils-DUel3wIz.cjs"),e=require("./pump-provider-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./dispense-registration-manager-BZ5L3AWX.cjs"),o=require("./extension-utils-DUel3wIz.cjs"),e=require("./pump-provider-86479YU2.cjs"),i=require("@kosdev-code/kos-ui-plugin/utilities");require("@kosdev-code/kos-ui-sdk");require("react");require("@emotion/react/jsx-runtime");require("@kosdev-code/kos-dispense-sdk");const t=i.createExtensionSchema({},{rankable:!1}),n=i.extensionPointId("cui","control","pour"),u=i.defineExtensionPoint({id:n,contributionKey:"controlPour",displayName:"Control Pour",description:"Extension point for controlled pour plugin configurations with view support",hasView:!0,isRankable:!1,schema:t,metadata:{exportName:"ControlPourExtension",category:"Dispense",tags:["pour","control","beverage"]},validate:(s,a)=>{i.validateWithSchema(t,s,a)},transform:i.createViewAwareTransform()}),d=n;exports.Assembly=r.Assembly;exports.Availability=r.Availability;exports.Board=r.Board;exports.BoardContainer=r.BoardContainer;Object.defineProperty(exports,"BoardContainerModel",{enumerable:!0,get:()=>r.BoardContainerModel});exports.CONTEXT_ASSEMBLY_DATA=r.CONTEXT_ASSEMBLY_DATA;exports.CONTEXT_ASSEMBLY_RAW_DATA=r.CONTEXT_ASSEMBLY_RAW_DATA;exports.DeviceAssembly=r.DeviceAssembly;exports.DispenseModelType=r.DispenseModelType;exports.DispenserModels=r.kosModels;exports.ExtensionType=r.ExtensionType;exports.GenericPour=r.GenericPour;exports.Holder=r.Holder;exports.HolderContainer=r.HolderContainer;exports.Ingredient=r.Ingredient;exports.IngredientContainer=r.IngredientContainer;exports.KosModelRegistry=r.KosModelRegistry;exports.Nozzle=r.Nozzle;exports.PourState=r.PourState;exports.Pump=r.Pump;exports.PumpContainer=r.PumpContainer;exports.PumpIndex=r.PumpIndex;exports.TOPIC_BOARD_LINKED=r.TOPIC_BOARD_LINKED;exports.TOPIC_BOARD_UNLINKED=r.TOPIC_BOARD_UNLINKED;exports.kosModels=r.kosModels;exports.registerDispenseModels=r.registerDispenseModels;exports.AssemblyServices=o.index;exports.AssemblyTypes=o.assembly;exports.DispenseExtensionManager=o.DispenseExtensionManager;exports.GenericPourServices=o.index$1;exports.HolderServices=o.index$2;exports.IngredientServices=o.index$3;exports.KosExtensionManager=o.KosExtensionManager;exports.NozzleServices=o.index$4;exports.PumpServices=o.index$5;exports.getFuelGaugeValue=o.getFuelGaugeValue;exports.AssemblyProvider=e.AssemblyProvider;exports.AvailabilityProvider=e.AvailabilityProvider;exports.BoardContainerProvider=e.BoardContainerProvider;exports.BoardProvider=e.BoardProvider;exports.CuiKit=e.CuiKit;exports.CuiKitWrapper=e.CuiKitWrapper;exports.DISPENSE_GROUP_BEVERAGE=e.DISPENSE_GROUP_BEVERAGE;exports.DISPENSE_GROUP_BRAND=e.DISPENSE_GROUP_BRAND;exports.DISPENSE_GROUP_FLAVOR=e.DISPENSE_GROUP_FLAVOR;exports.DeviceAssemblyProvider=e.DeviceAssemblyProvider;exports.HoldToPourIntentStrategy=e.HoldToPourIntentStrategy;exports.HoldToPourStrategy=e.HoldToPourStrategy;exports.HolderContainerProvider=e.HolderContainerProvider;exports.HolderProvider=e.HolderProvider;exports.IngredientContainerProvider=e.IngredientContainerProvider;exports.IngredientProvider=e.IngredientProvider;exports.NozzleProvider=e.NozzleProvider;exports.PourContext=e.PourContext;exports.PumpProvider=e.PumpProvider;exports.TapOrHoldIntentStrategy=e.TapOrHoldIntentStrategy;exports.TapToPourIntentStrategy=e.TapToPourIntentStrategy;exports.TapToPourStrategy=e.TapToPourStrategy;exports.initializeCuiKit=e.initializeCuiKit;exports.useAssembly=e.useAssembly;exports.useAssemblyContext=e.useAssemblyContext;exports.useAvailability=e.useAvailability;exports.useAvailabilityContext=e.useAvailabilityContext;exports.useBeverages=e.useBeverages;exports.useBoard=e.useBoard;exports.useBoardContainer=e.useBoardContainer;exports.useBoardContainerContext=e.useBoardContainerContext;exports.useBoardContext=e.useBoardContext;exports.useBrands=e.useBrands;exports.useCuiKit=e.useCuiKit;exports.useCuiKitTimers=e.useCuiKitTimers;exports.useDefaultCuiKitLifecycle=e.useDefaultCuiKitLifecycle;exports.useDeviceAssembly=e.useDeviceAssembly;exports.useDeviceAssemblyContext=e.useDeviceAssemblyContext;exports.useDispenseLifecycle=e.useDispenseLifecycle;exports.useFlavors=e.useFlavors;exports.useGenericPour=e.useGenericPour;exports.useHolder=e.useHolder;exports.useHolderContainer=e.useHolderContainer;exports.useHolderContainerContext=e.useHolderContainerContext;exports.useHolderContext=e.useHolderContext;exports.useIngredient=e.useIngredient;exports.useIngredientContainer=e.useIngredientContainer;exports.useIngredientContainerContext=e.useIngredientContainerContext;exports.useIngredientContext=e.useIngredientContext;exports.useIngredientPour=e.useIngredientPour;exports.useNozzle=e.useNozzle;exports.useNozzleContext=e.useNozzleContext;exports.useNozzlePour=e.useNozzlePour;exports.usePourTarget=e.usePourTarget;exports.usePumpContext=e.usePumpContext;exports.withAssembly=e.withAssembly;exports.withBeverage=e.withBeverage;exports.withBoard=e.withBoard;exports.withBoardContainer=e.withBoardContainer;exports.withDeviceAssembly=e.withDeviceAssembly;exports.withGenericPour=e.withGenericPour;exports.withHolder=e.withHolder;exports.withHolderContainer=e.withHolderContainer;exports.withIngredient=e.withIngredient;exports.withIngredientContainer=e.withIngredientContainer;exports.withNozzle=e.withNozzle;exports.ControlPourExtension=u;exports.EXTENSION_POINT_CONTROL_POUR=d;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { A as y, b as A, e as I, d as E, B as x, C as S, a as T, f as D, D as N, l as b, E as B, G as h, H as _, g as O, I as f, h as w, K as z, N as H, k as K, P as R, i as G, j as M, T as L, c as U, l as V, r as k } from "./dispense-registration-manager-CB_nSTZw.js";
|
|
2
2
|
import { i as F, f as W, D as Y, a as j, b as q, c as J, K as Q, d as Z, e as $, g as ee } from "./extension-utils-CkYqorcG.js";
|
|
3
|
-
import { A as ae, a as oe, d as re, B as te, f as ie, C as ne, G as ue, F as le, J as de, D as Pe, a4 as Ce, a5 as ce, j as pe, H as me, m as ge, I as ve, N as ye, ab as Ae, P as Ie, a6 as Ee, a7 as xe, a8 as Se, i as Te, q as De, u as Ne, r as be, b as Be, z as he, t as _e, x as Oe, e as fe, c as we, E as ze, K as He, O as Ke, L as Re, R as Ge, g as Me, M as Le, Q as Ue, a9 as Ve, T as ke, V as Xe, k as Fe, h as We, X as Ye, _ as je, n as qe, l as Je, Y as Qe, a0 as Ze, o as $e, a2 as es, a3 as ss, p as as, w as os, s as rs, v as ts, y as is, S as ns, aa as us, U as ls, W as ds, Z as Ps, $ as Cs, a1 as cs } from "./pump-provider-
|
|
3
|
+
import { A as ae, a as oe, d as re, B as te, f as ie, C as ne, G as ue, F as le, J as de, D as Pe, a4 as Ce, a5 as ce, j as pe, H as me, m as ge, I as ve, N as ye, ab as Ae, P as Ie, a6 as Ee, a7 as xe, a8 as Se, i as Te, q as De, u as Ne, r as be, b as Be, z as he, t as _e, x as Oe, e as fe, c as we, E as ze, K as He, O as Ke, L as Re, R as Ge, g as Me, M as Le, Q as Ue, a9 as Ve, T as ke, V as Xe, k as Fe, h as We, X as Ye, _ as je, n as qe, l as Je, Y as Qe, a0 as Ze, o as $e, a2 as es, a3 as ss, p as as, w as os, s as rs, v as ts, y as is, S as ns, aa as us, U as ls, W as ds, Z as Ps, $ as Cs, a1 as cs } from "./pump-provider-DSyiDoPF.js";
|
|
4
4
|
import { createExtensionSchema as r, extensionPointId as t, defineExtensionPoint as i, createViewAwareTransform as n, validateWithSchema as u } from "@kosdev-code/kos-ui-plugin/utilities";
|
|
5
5
|
import "@kosdev-code/kos-ui-sdk";
|
|
6
6
|
import "react";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kosdev-code/kos-dispense-sdk",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.15",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"types": "./index.d.ts",
|
|
6
6
|
"main": "./index.js",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
},
|
|
34
34
|
"kos": {
|
|
35
35
|
"build": {
|
|
36
|
-
"gitHash": "
|
|
36
|
+
"gitHash": "3bb0811ca81d24afe38877523bc534b5ea6fc15e"
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var et=Object.defineProperty;var tt=(e,t,s)=>t in e?et(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s;var Y=(e,t,s)=>(tt(e,typeof t!="symbol"?t+"":t,s),s);const b=require("@emotion/react/jsx-runtime"),st=require("@kosdev-code/kos-dispense-sdk"),u=require("@kosdev-code/kos-ui-sdk"),o=require("react"),g=require("./dispense-registration-manager-BZ5L3AWX.cjs"),he=()=>{const e=g.Assembly.type;return u.useKosModel({modelId:e,modelType:g.Assembly.type,options:{}})};function rt(e){return t=>{const{model:s,status:n,KosModelLoader:r}=he();return b.jsx(r,{...n,children:b.jsx(e,{...t,assembly:s})})}}const pe=()=>{const e=g.Availability.type;return u.useKosModel({modelId:e,modelType:g.Availability.type,options:{}})};function nt(e){return t=>{const{model:s,status:n,KosModelLoader:r}=pe();return b.jsx(r,{...n,children:b.jsx(e,{...t,beverage:s})})}}const fe=e=>{const t=e;return u.useKosModel({modelId:t,modelType:g.Board.type,options:{}})};function ot(e){return t=>s=>{const{model:n,status:r,KosModelLoader:i}=fe(t);return b.jsx(i,{...r,children:b.jsx(e,{...s,board:n})})}}const ve=()=>{const e=g.BoardContainer.type;return u.useKosModel({modelId:e,modelType:g.BoardContainer.type,options:{}})};function at(e){return t=>{const{model:s,status:n,KosModelLoader:r}=ve();return b.jsx(r,{...n,children:b.jsx(e,{...t,boardContainer:s})})}}const Ce=e=>{const t=e;return u.useKosModel({modelId:t,modelType:g.Nozzle.type,options:{path:e}})},Se=o.createContext(void 0),Be=({children:e,path:t})=>{const{model:s,ready:n}=Ce(t),r=o.useMemo(()=>n&&s?{model:s}:{},[n,s]);return b.jsx(Se.Provider,{value:r,children:e})},S=()=>{const e=o.useContext(Se);if(!e)throw new Error("useNozzleContext must be used within a NozzleProvider");return e},Me=({onBeverageSelected:e,onClearBeverage:t,companionType:s})=>{const{model:n}=S(),[r,i]=o.useState([]),[a,d]=o.useState(null),C=o.useMemo(()=>s?r.map(m=>u.getKosCompanionModel(m,s)):[],[r,s]),f=o.useCallback(async m=>{d(m),await(n==null?void 0:n.setSelectedPourable({beverage:m})),e==null||e(m)},[n,e]),l=o.useCallback(async()=>{d(null),await(n==null?void 0:n.setSelectedPourable({beverage:void 0})),t==null||t()},[n,t]);return o.useEffect(()=>{const m=u.kosAutoEffect(()=>{if(!n)return;const x=n.selectedBrand;if(!x){const v=n.getGroupAvailabilityItems("beverages").filter(h=>h.visible);i(v??[]);return}const k=n.getAvailabilityByParent(x.id).filter(v=>v.visible);i(k??[])});return()=>{m()}},[n]),{beverages:r,beverageCompanions:C,selectBeverage:f,selectedBeverage:a,clearBeverage:l}},Le=({onBrandSelected:e,onBrandCleared:t,companionType:s})=>{const{model:n}=S(),[r,i]=o.useState(null),[a,d]=o.useState([]),C=o.useMemo(()=>s?a.map(m=>u.getKosCompanionModel(m,s)):[],[a,s]),f=o.useCallback(async m=>{i(m),n==null||n.setSelectedBrand(m),e==null||e(m)},[n,e]),l=o.useCallback(()=>{i(null),n==null||n.setSelectedBrand(void 0),t==null||t()},[n,t]);return o.useEffect(()=>{const m=u.kosAutoEffect(()=>{n&&d(n.visibleBrands)});return()=>{m()}},[n]),{brands:a,brandCompanions:C,selectedBrand:r,selectBrand:f,clearBrand:l}};class xe{constructor(){Y(this,"_data",new Map)}get(t){return this._data.get(t)}set(t,s){this._data.set(t,s)}remove(t){this._data.delete(t)}has(t){return this._data.has(t)}}const it=u.KosLog.createLogger({name:"HoldToPourStrategy",group:"kos-hooks"}),ge={name:"HoldToPourStrategy",async initiate(e){if(!(e!=null&&e.canPour)){it.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())}},te=u.KosLog.createLogger({name:"useNozzlePour",group:"kos-hooks"}),ye=({onPour:e,onPourCancel:t,onBeforePour:s,onBeforePourRejected:n,pourContext:r,strategy:i=ge})=>{const{model:a}=S(),[d,C]=o.useState(r||new xe),f=o.useCallback(async()=>{(s?await(s==null?void 0:s(d)):!0)?(te.debug(`[${i==null?void 0:i.name}] - Pour initiated for nozzle ${a==null?void 0:a.id}.`),i==null||i.initiate(a),e==null||e()):(te.debug(`[${i==null?void 0:i.name}] - Did not pass onBeforePour gate for nozzle ${a==null?void 0:a.id}. Cancelling pour.`),n==null||n())},[e,a,i,s,t,d,n]),l=o.useCallback(()=>{var h;te.debug(`[${i==null?void 0:i.name}] - Pour initiate ended called for nozzle ${a==null?void 0:a.id}.`),(h=i==null?void 0:i.initiateEnded)==null||h.call(i,a),t==null||t()},[t,a,i]),m=o.useCallback(()=>{te.debug(`Force cancelling pour for nozzle ${a==null?void 0:a.id}.`),a==null||a.cancelPour(),t==null||t()},[t,a]),x=o.useCallback((h,c)=>{d.set(h,c)},[d]),k=o.useCallback(h=>{d.remove(h)},[d]);return{handlers:u.usePressGesture({onPressed:f,onRelease:l}).dom,cancel:m,updatePourContext:x,removeFromPourContext:k,status:a}},He=({onFlavorSelected:e,onFlavorCleared:t,companionType:s})=>{const{model:n}=S(),r=o.useMemo(()=>(n==null?void 0:n.getGroupAvailabilityItems("flavors").filter(l=>l.visible))??[],[n]),i=o.useMemo(()=>s?r.map(l=>u.getKosCompanionModel(l,s)):[],[r,s]),[a,d]=o.useState([]),C=o.useCallback(async l=>{if(d(m=>m!=null&&m.includes(l)?[...m.filter(x=>x!==l)]:[...m??[],l]),n!=null&&n.selectedPourable){const{beverage:m}=n.selectedPourable;await n.setSelectedPourable({beverage:m,additional:a??[]})}e==null||e(l,a??[])},[n,e,a]),f=o.useCallback(async()=>{if(d([]),n!=null&&n.selectedPourable){const{beverage:l}=n.selectedPourable;n.setSelectedPourable({beverage:l}),t==null||t()}},[n,t]);return{flavors:r,flavorCompanions:i,selectFlavor:C,selectedFlavors:a,clearFlavors:f}},F="brands",X="beverages",U="flavors",N=u.KosLog.createLogger({name:"use-cui-kit"}),Ne=({initialGroup:e=F,options:t={}})=>{var Z,z,ee;const[s,n]=o.useState(e),{model:r}=S(),i=o.useRef([]),a=o.useRef(),d=o.useRef(),C=o.useCallback(p=>{n(U);const w=`/kos/dispense/${r==null?void 0:r.path}/brand/selected/`;u.EventBus.publish(w,p)},[r==null?void 0:r.path]),f=o.useCallback(()=>{const p=`/kos/dispense/${r==null?void 0:r.path}/brand/cleared/`;u.EventBus.publish(p,{})},[r==null?void 0:r.path]),l=o.useCallback(p=>{var W;n(U),(W=a.current)==null||W.call(a,"selectedBeverage",p);const w=`/kos/dispense/${r==null?void 0:r.path}/beverage/selected/`;u.EventBus.publish(w,p)},[r==null?void 0:r.path]),m=o.useCallback(()=>{var w;const p=`/kos/dispense/${r==null?void 0:r.path}/beverage/cleared/`;(w=d.current)==null||w.call(d,"selectedBeverage"),u.EventBus.publish(p,{})},[r==null?void 0:r.path]),x=o.useCallback(p=>{const w=`/kos/dispense/${r==null?void 0:r.path}/flavor/selected/`;u.EventBus.publish(w,p)},[r==null?void 0:r.path]),k=o.useCallback(()=>{const p=`/kos/dispense/${r==null?void 0:r.path}/flavor/cleared/`;u.EventBus.publish(p,{})},[r==null?void 0:r.path]),v=o.useCallback(()=>{const p=`/kos/dispense/${r==null?void 0:r.path}/pour/`;u.EventBus.publish(p,{})},[r==null?void 0:r.path]),h=o.useCallback(async p=>{const w=`/kos/dispense/${r==null?void 0:r.path}/pre/pour/`;return u.EventBus.publish(w,{}),await(L==null?void 0:L(p))||!0},[r==null?void 0:r.path]),c=o.useCallback(async()=>{const p=`/kos/dispense/${r==null?void 0:r.path}/pre/pour/rejected/`;u.EventBus.publish(p,{})},[r==null?void 0:r.path]),R=o.useCallback(()=>{const p=`/kos/dispense/${r==null?void 0:r.path}/pour/cancel/`;u.EventBus.publish(p,{})},[r==null?void 0:r.path]),{brands:B,selectBrand:I,selectedBrand:q,clearBrand:H,brandCompanions:re}=Le({companionType:(Z=t.companionTypes)==null?void 0:Z.brand,onBrandSelected:C,onBrandCleared:f}),{beverages:ne,selectBeverage:K,selectedBeverage:M,clearBeverage:A,beverageCompanions:oe}=Me({companionType:(z=t.companionTypes)==null?void 0:z.beverage,onBeverageSelected:l,onClearBeverage:m}),{clearFlavors:D,flavors:P,selectFlavor:E,selectedFlavors:_,flavorCompanions:T}=He({companionType:(ee=t.companionTypes)==null?void 0:ee.flavor,onFlavorSelected:x,onFlavorCleared:k}),[L,O]=o.useState(),G=o.useCallback(p=>{O(()=>p)},[]),V=ye({onPour:v,onPourCancel:R,onBeforePour:h,onBeforePourRejected:c});a.current=V.updatePourContext,d.current=V.removeFromPourContext;const ae=o.useCallback(()=>{switch(N.debug(`Navigating back from group: ${s}`),s){case F:A(),H();break;case X:case U:n(e),A(),H();break}},[A,H,s,e]),ie=o.useCallback(()=>{const p=`/kos/dispense/${r==null?void 0:r.path}/home/`;u.EventBus.publish(p,{}),n(e),e===F&&(A(),H()),e===X&&A()},[A,H,e]),ce=o.useCallback(()=>{if(i.current.length===0){N.debug("No timers to pause.");return}N.debug(`Pausing ${i.current.length} timers.`),i.current.forEach(p=>{N.debug(`Pausing timer with id ${p.id}.`),p.pause()})},[]),ue=o.useCallback(()=>{if(i.current.length===0){N.debug("No timers to restart.");return}N.debug(`Restarting ${i.current.length} timers.`),i.current.forEach(p=>{N.debug(`Restarting timer with id ${p.id}.`),p.restart()})},[]);return{timers:{add:o.useCallback(p=>{if(p){if(i.current.some(w=>w.id===p.id)){N.debug(`Timer with id ${p.id} already exists.`);return}i.current.push(p)}},[]),pause:ce,restart:ue},nav:{currentGroup:s,back:ae,home:ie},pour:V,updateOnBeforePour:G,selections:{[F]:q,[X]:M,[U]:_},[F]:{models:B,companions:re,clear:H,handlers:{onSelected:I}},[X]:{models:ne,companions:oe,clear:A,handlers:{onSelected:K}},[U]:{models:P,companions:T,clear:D,handlers:{onSelected:E}}}},ct=e=>{const{model:t}=S(),[s,n]=o.useState(null),{onAmbientTimer:r,onAttractTimer:i,onResetAttractTimer:a,onResumeAttractTimer:d,defaultAttractTime:C,defaultAmbientTime:f}=e,l=o.useCallback(()=>{r&&(u.KosLog.info("Ambient timer expired. Calling callback"),r==null||r())},[r]),m=o.useCallback(()=>{i&&(u.KosLog.info("Attract timer expired. Calling callback"),i==null||i())},[i]),x=o.useCallback(()=>{s&&(s.restart(),a==null||a())},[s,a]),k=o.useCallback(()=>{s&&(s.reset(),a==null||a())},[s,a]),v=o.useCallback(()=>{s&&(s.pause(),d==null||d())},[s,d]);return o.useEffect(()=>{if(t&&C){u.KosLog.info("Nozzle is available. Creating timers");const h=u.TimerManager.createTimer("attract-timer-"+t.path,C);return C&&(h==null||h.addTimeoutAction({name:"attract-timer",remainingTime:0,action:m})),f&&(h==null||h.addTimeoutAction({name:"ambient-timer",remainingTime:f,action:l})),C&&(h==null||h.start()),n(h??null),()=>{h==null||h.reset(),n(null)}}return()=>{u.KosLog.info("Nozzle is not available. No timers to clear")}},[f,C,l,m,t]),{attractTimer:s,restart:x,pause:k,resume:v}},ut=(e,t)=>{if(t)return u.EventBus.subscribe(e,t).unsubscribe},je=({onInit:e,onBrandSelected:t,onBrandCleared:s,onBeverageCleared:n,onBeverageSelected:r,onFlavorCleared:i,onFlavorSelected:a,onReturnToHome:d,onPour:C,onPourCancel:f,onBeforePourRejected:l,onAmbientTimer:m,onAttractTimer:x,onResumeAttractTimer:k,onIdleTimeout:v,onAreYouThereTimeout:h})=>{const{model:c}=S();o.useEffect(()=>{const B=[{topic:`/kos/dispense/${c==null?void 0:c.path}/brand/selected/`,callback:t},{topic:`/kos/dispense/${c==null?void 0:c.path}/brand/cleared/`,callback:s},{topic:`/kos/dispense/${c==null?void 0:c.path}/beverage/selected/`,callback:r},{topic:`/kos/dispense/${c==null?void 0:c.path}/beverage/cleared/`,callback:n},{topic:`/kos/dispense/${c==null?void 0:c.path}/flavor/selected/`,callback:a},{topic:`/kos/dispense/${c==null?void 0:c.path}/flavor/cleared/`,callback:i},{topic:`/kos/dispense/${c==null?void 0:c.path}/pour/`,callback:C},{topic:`/kos/dispense/${c==null?void 0:c.path}/pour/cancel/`,callback:f},{topic:`/kos/dispense/${c==null?void 0:c.path}/pre/pour/rejected/`,callback:l},{topic:`/kos/dispense/${c==null?void 0:c.path}/ambient/start/`,callback:m},{topic:`/kos/dispense/${c==null?void 0:c.path}/attract/start/`,callback:x},{topic:`/kos/dispense/${c==null?void 0:c.path}/attract/resume/`,callback:k},{topic:`/kos/dispense/${c==null?void 0:c.path}/idle/timeout/`,callback:v},{topic:`/kos/dispense/${c==null?void 0:c.path}/are-you-there/timeout/`,callback:h},{topic:`/kos/dispense/${c==null?void 0:c.path}/init/`,callback:e},{topic:`/kos/dispense/${c==null?void 0:c.path}/home/`,callback:d}].map(({topic:I,callback:q})=>ut(I,q));return()=>{B.forEach(I=>I==null?void 0:I())}},[c==null?void 0:c.path,m,x,n,r,s,t,i,a,C,f,k,v,h,e,d])},y=u.KosLog.createLogger({name:"useCuiKitTimers"}),be=e=>{const{model:t}=S(),[s,n]=o.useState(null),{onAreYouThereTimer:r,onIdleTimer:i,onResetIdleTimer:a,defaultAreYouThereTime:d=10,defaultIdleTime:C=20}=e,f=o.useRef(!1),l=o.useCallback(()=>{!f.current&&r&&(u.KosLog.info("Are you there timer expired. Calling callback"),f.current=!0,r==null||r())},[r]),m=o.useCallback(()=>{y.debug("handleIdleTimer called in useCuiKitTimers, onIdleTimer exists:",!!i),i?(y.debug("Idle timer expired. Calling callback"),i==null||i()):y.debug("No onIdleTimer callback provided!")},[i]),x=o.useCallback(()=>{y.debug(`TIMER RESTART called for ${e.prefix??""}timer`),s&&(s.restart(),f.current=!1,a==null||a())},[s,a,e.prefix]),k=o.useCallback(()=>{y.debug(`TIMER PAUSE/RESET called for ${e.prefix??""}timer`),s&&(s.reset(),f.current=!1,a==null||a())},[s,a,e.prefix]);return o.useEffect(()=>{if(y.debug(`useCuiKitTimers effect triggered - nozzle: ${!!t}, path: ${t==null?void 0:t.path}, callbacks: handleIdle=${!!m}, handleAreYouThere=${!!l}`),t){y.info("Nozzle is available. Creating timers");const v=u.TimerManager.createTimer(`${e.prefix??""}idle-timer-${t.path}`,C);return y.debug(`Adding idle timer action for ${e.prefix??""}idle-timer-${t.path} with callback:`,!!m),v==null||v.addTimeoutAction({name:"idle-timer",remainingTime:0,action:m}),v==null||v.addTimeoutAction({name:"are-you-there-timer",remainingTime:d,action:l}),n(v??null),()=>{v==null||v.reset(),n(null)}}return()=>{y.info("Nozzle is not available. No timers to clear")}},[d,C,l,m,t,e.prefix]),{idleTimer:s,restart:x,pause:k}},j=u.KosLog.createLogger({name:"useDefaultCuiKitLifecycle"}),dt=({kit:e,inactivity:t,pour:s,screens:n,onBeforeAreYouThereTimer:r,areYouThereRejectionPolicy:i="pause"})=>{var w,W,Ae,Ee;const[a,d]=o.useState(!1),[C,f]=o.useState(!1),{model:l}=S(),[m,x]=o.useState(!1),k=(t==null?void 0:t.idleTimeout)??15,v=(t==null?void 0:t.areYouThereTimeoutOffset)??10,h=(s==null?void 0:s.idleTimeout)??(t==null?void 0:t.idleTimeout)??10,c=(s==null?void 0:s.areYouThereTimeoutOffset)??(t==null?void 0:t.areYouThereTimeoutOffset)??5,R=n==null?void 0:n.ambientTimeoutOffset,B=n==null?void 0:n.attractTimeout,I=o.useCallback(()=>{if(j.info("handleIdleTimeout called - navigating home and publishing event"),D(!1),e==null||e.nav.home(),l){const $=`/kos/dispense/${l.path}/idle/timeout/`;u.EventBus.publish($,{})}},[(w=e==null?void 0:e.nav)==null?void 0:w.home,l]),q=o.useCallback(()=>{j.info("handleResetIdleTimer called - resetting idle timer"),D(!1)},[]),H=o.useCallback(()=>{if(R&&(d(!0),f(!1),l)){const $=`/kos/dispense/${l.path}/ambient/start/`;u.EventBus.publish($,{})}},[R,l]),re=o.useCallback(()=>{if(B&&(f(!0),d(!1),l)){const $=`/kos/dispense/${l.path}/attract/start/`;u.EventBus.publish($,{})}},[B,l]),ne=o.useCallback(()=>{if(B&&(f(!1),d(!1),e==null||e.nav.home(),l)){const $=`/kos/dispense/${l.path}/attract/resume/`;u.EventBus.publish($,{})}},[e==null?void 0:e.nav,B,l]),{pause:K,restart:M,attractTimer:A}=ct({defaultAmbientTime:R,defaultAttractTime:B,onAmbientTimer:H,onAttractTimer:re,onResumeAttractTimer:ne});(W=e==null?void 0:e.timers)==null||W.add(A);const[oe,D]=o.useState(!1);j.info("Creating idle timer with timeout:",k,"seconds and callback:",!!I);const{pause:P,restart:E,idleTimer:_}=be({defaultAreYouThereTime:v,defaultIdleTime:k,onIdleTimer:I,onResetIdleTimer:q});j.info(`Creating pour timer with timeout: ${h} seconds and callback: ${!!I}`);const{pause:T,restart:L,idleTimer:O}=be({defaultAreYouThereTime:c,defaultIdleTime:h,onIdleTimer:I,prefix:"pour-"}),G=o.useCallback(async()=>{let $=!0;if(r)try{$=await r()}catch(de){j.error(`onBeforeAreYouThereTimer callback failed: ${de}`),$=!1}if($){if(l){const de=`/kos/dispense/${l.path}/are-you-there/timeout/`;u.EventBus.publish(de,{})}D(!0),m?T():P()}else switch(i){case"pause":m?T():P();break;case"restart":m?L():E();break}},[r,l,i,m]),V=o.useCallback(()=>{D(!1),K(),m?(L(),P()):(E(),T())},[m,P,T,E,L]);o.useEffect(()=>{_&&_.addTimeoutAction({name:"are-you-there-timer",remainingTime:v,action:G})},[_,v,G]),o.useEffect(()=>{O&&O.addTimeoutAction({name:"pour-are-you-there-timer",remainingTime:c,action:G})},[O,c,G]),(Ae=e==null?void 0:e.timers)==null||Ae.add(_),(Ee=e==null?void 0:e.timers)==null||Ee.add(O);const ae=o.useCallback(()=>{x(!1),T(),P(),K()},[P,T]),ie=o.useCallback(()=>{x(!0),j.info("restarting pour timer"),L(),K(),P()},[P,L]),ce=o.useCallback(()=>{x(!1),j.info("restarting pour timer on before pour rejected"),T(),E()},[]),ue=o.useCallback(()=>{K(),f(!1),d(!1),E()},[K,E]),Ie=o.useCallback(()=>{f(!1),d(!1),x(!1),T(),M()},[M,T]),Z=o.useCallback(()=>{f(!1),d(!1),x(!1),K(),E()},[K,E]),z=o.useCallback(()=>{f(!1),d(!1),x(!1),M(),P(),T()},[M,P,T]),ee=o.useCallback(()=>{f(!1),d(!1),M(),P()},[M,P]);je({onBrandSelected:ue,onBrandCleared:Ie,onBeverageSelected:Z,onBeverageCleared:z,onPour:ae,onPourCancel:ie,onBeforePourRejected:ce,onInit:ee});const p=m?c:v;return o.useEffect(()=>{if(l&&A){const $=`/kos/dispense/${l==null?void 0:l.path}/init/`;u.EventBus.publish($,{})}},[l,A]),{showAreYouThere:oe,clearAreYouThere:V,pauseIdleTimer:P,restartIdleTimer:E,areYouThereCountdown:p,showAmbientScreen:a,showAttractScreen:C,pauseScreenTimer:K,restartScreenTimer:M}},ke=()=>{const e=g.DeviceAssembly.type;return u.useKosModel({modelId:e,modelType:g.DeviceAssembly.type,options:{}})};function lt(e){return t=>{const{model:s,status:n,KosModelLoader:r}=ke();return b.jsx(r,{...n,children:b.jsx(e,{...t,deviceAssembly:s})})}}const Pe=e=>{const t=e;return u.useKosModel({modelId:t,modelType:g.Holder.type,options:{}})};function mt(e,t){return s=>{const{model:n,status:r,KosModelLoader:i}=Pe(e);return b.jsx(i,{...r,children:b.jsx(t,{...s,holder:n})})}}const we=()=>{const e=g.HolderContainer.type;return u.useKosModel({modelId:e,modelType:g.HolderContainer.type,options:{}})};function bt(e){return t=>{const{model:s,status:n,KosModelLoader:r}=we();return b.jsx(r,{...n,children:b.jsx(e,{...t,holderContainer:s})})}}const Te=()=>{const e=g.Ingredient.type;return u.useKosModel({modelId:e,modelType:g.Ingredient.type,options:{}})},le=u.KosLog.createLogger({name:"HoldToPourIntentStrategy",group:"kos-hooks"}),Re={name:"HoldToPourIntentStrategy",async initiate(e,t){if(!(e!=null&&e.canPour)){le.debug(`${e==null?void 0:e.id} cannot pour. Returning early.`);return}t?(le.debug(`performing intent: ${t}`),await(e==null?void 0:e.performIntent(t))):le.debug("no intent provided. Returning early.")},async initiateEnded(e){await(e==null?void 0:e.cancelPour())}},me=u.KosLog.createLogger({name:"useNozzlePour",group:"kos-hooks"}),ht=({onPour:e,onPourCancel:t,intentContainer:s,strategy:n=Re})=>{const r=o.useCallback(()=>{me.debug(`[${n==null?void 0:n.name}] - Pour initiated for model ${s==null?void 0:s.id}.`),n==null||n.initiate(s),e==null||e()},[e,s,n]),i=o.useCallback(()=>{var C;me.debug(`[${n==null?void 0:n.name}] - Pour initiate ended called for nozzle ${s==null?void 0:s.id}.`),(C=n==null?void 0:n.initiateEnded)==null||C.call(n,s),t==null||t()},[t,s,n]),a=o.useCallback(()=>{me.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:r,onRelease:i}).dom,cancel:a,status:s}};function pt(e){return t=>{const{model:s,status:n,KosModelLoader:r}=Te();return b.jsx(r,{...n,children:b.jsx(e,{...t,ingredient:s})})}}const $e=()=>{const e=g.IngredientContainer.type;return u.useKosModel({modelId:e,modelType:g.IngredientContainer.type,options:{}})};function ft(e){return t=>{const{model:s,status:n,KosModelLoader:r}=$e();return b.jsx(r,{...n,children:b.jsx(e,{...t,ingredientContainer:s})})}}function vt(e,t){return s=>{const{model:n,status:r,KosModelLoader:i}=Ce(e);return b.jsx(i,{...r,children:b.jsx(t,{...s,nozzle:n})})}}const J=u.KosLog.createLogger({name:"usePour",group:"kos-hooks"}),Ct=({onBeforePour:e,onPour:t,onPourCancel:s,onPourAbort:n,pourTarget:r,pourContext:i,strategy:a=ge})=>{const[d,C]=o.useState(i||new xe),f=o.useCallback(async()=>{J.debug(`[${a==null?void 0:a.name}] - calling before pour for pour target ${r==null?void 0:r.id}.`),(e?await(e==null?void 0:e(d)):!0)?(J.debug(`[${a==null?void 0:a.name}] - Pour initiated for pour target ${r==null?void 0:r.id}.`),await(a==null?void 0:a.initiate(r)),t==null||t(),r!=null&&r.isPouring||n==null||n()):(J.debug(`[${a==null?void 0:a.name}] - Pour cancelled for pour target ${r==null?void 0:r.id}.`),s==null||s())},[t,e,n,r,a,d]),l=o.useCallback(async()=>{var c;J.debug(`[${a==null?void 0:a.name}] - Pour initiate ended called for pour target ${r==null?void 0:r.id}.`),await((c=a==null?void 0:a.initiateEnded)==null?void 0:c.call(a,r))||s==null||s()},[s,r,a]),m=o.useCallback(async()=>{J.debug(`Force cancelling pour for pour target ${r==null?void 0:r.id}.`),await(r==null?void 0:r.cancelPour()),s==null||s()},[s,r]),x=o.useCallback((h,c)=>{d.set(h,c)},[d]),k=o.useCallback(h=>{d.remove(h)},[d]);return{handlers:u.usePressGesture({onPressed:f,onRelease:l}).dom,cancel:m,updatePourContext:x,removeFromPourContext:k,status:r}},Q=u.KosLog.createLogger({name:"TapOrHoldIntentStrategy",group:"kos-hooks"});class xt{constructor(t){Y(this,"intent");Y(this,"name","TapOrHoldIntentStrategy");Y(this,"isHold",!1);Y(this,"disposer",null);this.intent=t}async initiate(t,s){if(this.disposer=setTimeout(()=>{this.isHold=!0},250),t!=null&&t.isPouring&&!this.isHold){Q.debug("additional tap detected. cancelling pour"),await t.cancelPour();return}if(!(t!=null&&t.canPour)){Q.debug(`${t==null?void 0:t.id} cannot pour. Returning early.`);return}s?(Q.debug(`performing intent: ${s}`),await(t==null?void 0:t.performIntent(s))):Q.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):(Q.debug("Tap detected. don't cancel and return."),!0)}}const se=u.KosLog.createLogger({name:"TapToPourIntentStrategy",group:"kos-hooks"}),gt={name:"TapToPourIntentStrategy",async initiate(e,t){if(e!=null&&e.isPouring){se.debug(`Nozzle ${e==null?void 0:e.id} is already pouring. cancelling pour`),await e.cancelPour();return}if(!(e!=null&&e.canPour)){se.debug(`Nozzle ${e==null?void 0:e.id} cannot pour. Returning early.`);return}t?(se.debug(`performing intent: ${t}`),await(e==null?void 0:e.performIntent(t))):se.debug("no intent provided. Returning early.")},async initiateEnded(e){return!0}},Ke=u.KosLog.createLogger({name:"HoldToPourStrategy",group:"kos-hooks"}),kt={name:"TapToPourStrategy",async initiate(e){if(e!=null&&e.isPouring){Ke.debug(`Nozzle ${e==null?void 0:e.id} is already pouring. cancelling pour`),await e.cancelPour();return}if(!(e!=null&&e.canPour)){Ke.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}},De=(e,t,s)=>{const n=e;return u.useKosModel({modelId:n,modelType:st.GenericPour.type,options:{servicePathFactory:t,selectedId:s}})};function Pt(e){return t=>{const{model:s,status:n,KosModelLoader:r}=De(t.id,t.servicePathFactory,t.itemId);return b.jsx(r,{...n,children:b.jsx(e,{...t,genericPour:s})})}}const _e=o.createContext(void 0),wt=({children:e})=>{const{model:t,ready:s}=he(),n=o.useMemo(()=>s&&t?{model:t}:{},[s,t]);return b.jsx(_e.Provider,{value:n,children:e})},Tt=()=>{const e=o.useContext(_e);if(!e)throw new Error("useAssemblyContext must be used within a AssemblyProvider");return e},Oe=o.createContext(void 0),$t=({children:e})=>{const{model:t,ready:s}=pe(),n=o.useMemo(()=>s&&t?{model:t}:{},[s,t]);return b.jsx(Oe.Provider,{value:n,children:e})},It=()=>{const e=o.useContext(Oe);if(!e)throw new Error("useAvailabilityContext must be used within a AvailabilityProvider");return e},Ge=o.createContext(void 0),At=({children:e,id:t})=>{const{model:s,ready:n}=fe(t),r=o.useMemo(()=>n&&s?{model:s}:{},[n,s]);return b.jsx(Ge.Provider,{value:r,children:e})},Et=()=>{const e=o.useContext(Ge);if(!e)throw new Error("useBoardContext must be used within a BoardProvider");return e},Ye=o.createContext(void 0),Kt=({children:e})=>{const{model:t,ready:s}=ve(),n=o.useMemo(()=>s&&t?{model:t}:{},[s,t]);return b.jsx(Ye.Provider,{value:n,children:e})},St=()=>{const e=o.useContext(Ye);if(!e)throw new Error("useBoardContainerContext must be used within a BoardContainerProvider");return e},Fe=o.createContext(void 0),Ue=({children:e})=>{const{model:t,ready:s}=ke(),n=o.useMemo(()=>{if(s&&t){const i=t.nozzlePaths;return{model:t,nozzlePaths:i}}return{}},[s,t]),r=s&&t?e:null;return b.jsx(Fe.Provider,{value:n,children:r})},qe=()=>{const e=o.useContext(Fe);if(!e)throw new Error("useDeviceAssemblyContext must be used within a DeviceAssemblyProvider");return e};function Bt(){const e=o.createContext(null);return[()=>{const s=o.useContext(e);if(s===void 0)throw new Error("useDispenseKitContext must be used within a Provider");return s},e.Provider]}function Ve({children:e,provider:t,props:s,nozzleProps:n}){const r=Ne(s);return b.jsx(t,{value:r,children:e(n||{})})}function Mt({children:e,provider:t,props:s}){const{nozzlePaths:n}=qe(),r=(n==null?void 0:n.length)||0;return(n==null?void 0:n.map((a,d)=>b.jsx(Be,{path:a,children:b.jsx(Ve,{provider:t,props:s,nozzleProps:{nozzleIndex:d,nozzlePath:a,totalNozzles:r,isFirstNozzle:d===0,isLastNozzle:d===r-1},children:e})},a)))||[]}function We({provider:e,props:t}){return({children:s})=>e?b.jsx(Ue,{children:b.jsx(Mt,{provider:e,props:t,children:s})}):null}function Lt(e){const[t,s]=Bt();return[t,We({provider:s,props:e})]}const Je=o.createContext(void 0),yt=({children:e,id:t})=>{const{model:s,ready:n}=Pe(t||""),r=o.useMemo(()=>n&&s?{model:s}:{},[n,s]);return b.jsx(Je.Provider,{value:r,children:e})},Ht=()=>{const e=o.useContext(Je);if(!e)throw new Error("useHolderContext must be used within a HolderProvider");return e},Qe=o.createContext(void 0),Nt=({children:e})=>{const{model:t,ready:s}=we(),n=o.useMemo(()=>s&&t?{model:t}:{},[s,t]);return b.jsx(Qe.Provider,{value:n,children:e})},jt=()=>{const e=o.useContext(Qe);if(!e)throw new Error("useHolderContainerContext must be used within a HolderContainerProvider");return e},Xe=o.createContext(void 0),Rt=({children:e})=>{const{model:t,ready:s}=Te(),n=o.useMemo(()=>s&&t?{model:t}:{},[s,t]);return b.jsx(Xe.Provider,{value:n,children:e})},Dt=()=>{const e=o.useContext(Xe);if(!e)throw new Error("useIngredientContext must be used within a IngredientProvider");return e},Ze=o.createContext(void 0),_t=({children:e})=>{const{model:t,ready:s}=$e(),n=o.useMemo(()=>s&&t?{model:t}:{},[s,t]);return b.jsx(Ze.Provider,{value:n,children:e})},Ot=()=>{const e=o.useContext(Ze);if(!e)throw new Error("useIngredientContainerContext must be used within a IngredientContainerProvider");return e},Gt=()=>{const e=g.Pump.type;return u.useKosModel({modelId:e,modelType:g.Pump.type,options:{}})},ze=o.createContext(void 0),Yt=({children:e})=>{const{model:t,ready:s}=Gt(),n=o.useMemo(()=>s&&t?{model:t}:{},[s,t]);return b.jsx(ze.Provider,{value:n,children:e})},Ft=()=>{const e=o.useContext(ze);if(!e)throw new Error("usePumpContext must be used within a PumpProvider");return e};exports.AssemblyProvider=wt;exports.AvailabilityProvider=$t;exports.BoardContainerProvider=Kt;exports.BoardProvider=At;exports.CuiKit=We;exports.CuiKitWrapper=Ve;exports.DISPENSE_GROUP_BEVERAGE=X;exports.DISPENSE_GROUP_BRAND=F;exports.DISPENSE_GROUP_FLAVOR=U;exports.DeviceAssemblyProvider=Ue;exports.HoldToPourIntentStrategy=Re;exports.HoldToPourStrategy=ge;exports.HolderContainerProvider=Nt;exports.HolderProvider=yt;exports.IngredientContainerProvider=_t;exports.IngredientProvider=Rt;exports.NozzleProvider=Be;exports.PourContext=xe;exports.PumpProvider=Yt;exports.TapOrHoldIntentStrategy=xt;exports.TapToPourIntentStrategy=gt;exports.TapToPourStrategy=kt;exports.initializeCuiKit=Lt;exports.useAssembly=he;exports.useAssemblyContext=Tt;exports.useAvailability=pe;exports.useAvailabilityContext=It;exports.useBeverages=Me;exports.useBoard=fe;exports.useBoardContainer=ve;exports.useBoardContainerContext=St;exports.useBoardContext=Et;exports.useBrands=Le;exports.useCuiKit=Ne;exports.useCuiKitTimers=be;exports.useDefaultCuiKitLifecycle=dt;exports.useDeviceAssembly=ke;exports.useDeviceAssemblyContext=qe;exports.useDispenseLifecycle=je;exports.useFlavors=He;exports.useGenericPour=De;exports.useHolder=Pe;exports.useHolderContainer=we;exports.useHolderContainerContext=jt;exports.useHolderContext=Ht;exports.useIngredient=Te;exports.useIngredientContainer=$e;exports.useIngredientContainerContext=Ot;exports.useIngredientContext=Dt;exports.useIngredientPour=ht;exports.useNozzle=Ce;exports.useNozzleContext=S;exports.useNozzlePour=ye;exports.usePourTarget=Ct;exports.usePumpContext=Ft;exports.withAssembly=rt;exports.withBeverage=nt;exports.withBoard=ot;exports.withBoardContainer=at;exports.withDeviceAssembly=lt;exports.withGenericPour=Pt;exports.withHolder=mt;exports.withHolderContainer=bt;exports.withIngredient=pt;exports.withIngredientContainer=ft;exports.withNozzle=vt;
|
|
2
|
-
//# sourceMappingURL=pump-provider-
|
|
1
|
+
"use strict";var et=Object.defineProperty;var tt=(e,t,s)=>t in e?et(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s;var Y=(e,t,s)=>(tt(e,typeof t!="symbol"?t+"":t,s),s);const b=require("@emotion/react/jsx-runtime"),st=require("@kosdev-code/kos-dispense-sdk"),u=require("@kosdev-code/kos-ui-sdk"),o=require("react"),g=require("./dispense-registration-manager-BZ5L3AWX.cjs"),he=()=>{const e=g.Assembly.type;return u.useKosModel({modelId:e,modelType:g.Assembly.type,options:{}})};function rt(e){return t=>{const{model:s,status:n,KosModelLoader:r}=he();return b.jsx(r,{...n,children:b.jsx(e,{...t,assembly:s})})}}const pe=()=>{const e=g.Availability.type;return u.useKosModel({modelId:e,modelType:g.Availability.type,options:{}})};function nt(e){return t=>{const{model:s,status:n,KosModelLoader:r}=pe();return b.jsx(r,{...n,children:b.jsx(e,{...t,beverage:s})})}}const fe=e=>{const t=e;return u.useKosModel({modelId:t,modelType:g.Board.type,options:{}})};function ot(e){return t=>s=>{const{model:n,status:r,KosModelLoader:i}=fe(t);return b.jsx(i,{...r,children:b.jsx(e,{...s,board:n})})}}const ve=()=>{const e=g.BoardContainer.type;return u.useKosModel({modelId:e,modelType:g.BoardContainer.type,options:{}})};function at(e){return t=>{const{model:s,status:n,KosModelLoader:r}=ve();return b.jsx(r,{...n,children:b.jsx(e,{...t,boardContainer:s})})}}const Ce=e=>{const t=e;return u.useKosModel({modelId:t,modelType:g.Nozzle.type,options:{path:e}})},Se=o.createContext(void 0),Be=({children:e,path:t})=>{const{model:s,ready:n}=Ce(t),r=o.useMemo(()=>n&&s?{model:s}:{},[n,s]);return b.jsx(Se.Provider,{value:r,children:e})},S=()=>{const e=o.useContext(Se);if(!e)throw new Error("useNozzleContext must be used within a NozzleProvider");return e},Me=({onBeverageSelected:e,onClearBeverage:t,companionType:s})=>{const{model:n}=S(),[r,i]=o.useState([]),[a,d]=o.useState(null),C=o.useMemo(()=>s?r.map(m=>u.getKosCompanionModel(m,s)):[],[r,s]),f=o.useCallback(async m=>{d(m),await(n==null?void 0:n.setSelectedPourable({beverage:m})),e==null||e(m)},[n,e]),l=o.useCallback(async()=>{d(null),await(n==null?void 0:n.setSelectedPourable({beverage:void 0})),t==null||t()},[n,t]);return o.useEffect(()=>{const m=u.kosAutoEffect(()=>{if(!n)return;const x=n.selectedBrand;if(!x){const v=n.getGroupAvailabilityItems("beverages").filter(h=>h.visible);i(v??[]);return}const k=n.getAvailabilityByParent(x.id).filter(v=>v.visible);i(k??[])});return()=>{m()}},[n]),{beverages:r,beverageCompanions:C,selectBeverage:f,selectedBeverage:a,clearBeverage:l}},Le=({onBrandSelected:e,onBrandCleared:t,companionType:s})=>{const{model:n}=S(),[r,i]=o.useState(null),[a,d]=o.useState([]),C=o.useMemo(()=>s?a.map(m=>u.getKosCompanionModel(m,s)):[],[a,s]),f=o.useCallback(async m=>{i(m),n==null||n.setSelectedBrand(m),e==null||e(m)},[n,e]),l=o.useCallback(()=>{i(null),n==null||n.setSelectedBrand(void 0),t==null||t()},[n,t]);return o.useEffect(()=>{const m=u.kosAutoEffect(()=>{n&&d(n.visibleBrands)});return()=>{m()}},[n]),{brands:a,brandCompanions:C,selectedBrand:r,selectBrand:f,clearBrand:l}};class xe{constructor(){Y(this,"_data",new Map)}get(t){return this._data.get(t)}set(t,s){this._data.set(t,s)}remove(t){this._data.delete(t)}has(t){return this._data.has(t)}}const it=u.KosLog.createLogger({name:"HoldToPourStrategy",group:"kos-hooks"}),ge={name:"HoldToPourStrategy",async initiate(e){if(!(e!=null&&e.canPour)){it.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())}},te=u.KosLog.createLogger({name:"useNozzlePour",group:"kos-hooks"}),ye=({onPour:e,onPourCancel:t,onBeforePour:s,onBeforePourRejected:n,pourContext:r,strategy:i=ge})=>{const{model:a}=S(),[d,C]=o.useState(r||new xe),f=o.useCallback(async()=>{(s?await(s==null?void 0:s(d)):!0)?(te.debug(`[${i==null?void 0:i.name}] - Pour initiated for nozzle ${a==null?void 0:a.id}.`),i==null||i.initiate(a),e==null||e()):(te.debug(`[${i==null?void 0:i.name}] - Did not pass onBeforePour gate for nozzle ${a==null?void 0:a.id}. Cancelling pour.`),n==null||n())},[e,a,i,s,t,d,n]),l=o.useCallback(()=>{var h;te.debug(`[${i==null?void 0:i.name}] - Pour initiate ended called for nozzle ${a==null?void 0:a.id}.`),(h=i==null?void 0:i.initiateEnded)==null||h.call(i,a),t==null||t()},[t,a,i]),m=o.useCallback(()=>{te.debug(`Force cancelling pour for nozzle ${a==null?void 0:a.id}.`),a==null||a.cancelPour(),t==null||t()},[t,a]),x=o.useCallback((h,c)=>{d.set(h,c)},[d]),k=o.useCallback(h=>{d.remove(h)},[d]);return{handlers:u.usePressGesture({onPressed:f,onRelease:l}).dom,cancel:m,updatePourContext:x,removeFromPourContext:k,status:a}},He=({onFlavorSelected:e,onFlavorCleared:t,companionType:s})=>{const{model:n}=S(),r=o.useMemo(()=>(n==null?void 0:n.getGroupAvailabilityItems("flavors").filter(l=>l.visible))??[],[n]),i=o.useMemo(()=>s?r.map(l=>u.getKosCompanionModel(l,s)):[],[r,s]),[a,d]=o.useState([]),C=o.useCallback(async l=>{if(d(m=>m!=null&&m.includes(l)?[...m.filter(x=>x!==l)]:[...m??[],l]),n!=null&&n.selectedPourable){const{beverage:m}=n.selectedPourable;await n.setSelectedPourable({beverage:m,additional:a??[]})}e==null||e(l,a??[])},[n,e,a]),f=o.useCallback(async()=>{if(d([]),n!=null&&n.selectedPourable){const{beverage:l}=n.selectedPourable;n.setSelectedPourable({beverage:l}),t==null||t()}},[n,t]);return{flavors:r,flavorCompanions:i,selectFlavor:C,selectedFlavors:a,clearFlavors:f}},F="brands",X="beverages",U="flavors",N=u.KosLog.createLogger({name:"use-cui-kit"}),Ne=({initialGroup:e=F,options:t={}})=>{var Z,z,ee;const[s,n]=o.useState(e),{model:r}=S(),i=o.useRef([]),a=o.useRef(),d=o.useRef(),C=o.useCallback(p=>{n(U);const w=`/kos/dispense/${r==null?void 0:r.path}/brand/selected/`;u.EventBus.publish(w,p)},[r==null?void 0:r.path]),f=o.useCallback(()=>{const p=`/kos/dispense/${r==null?void 0:r.path}/brand/cleared/`;u.EventBus.publish(p,{})},[r==null?void 0:r.path]),l=o.useCallback(p=>{var W;n(U),(W=a.current)==null||W.call(a,"selectedBeverage",p);const w=`/kos/dispense/${r==null?void 0:r.path}/beverage/selected/`;u.EventBus.publish(w,p)},[r==null?void 0:r.path]),m=o.useCallback(()=>{var w;const p=`/kos/dispense/${r==null?void 0:r.path}/beverage/cleared/`;(w=d.current)==null||w.call(d,"selectedBeverage"),u.EventBus.publish(p,{})},[r==null?void 0:r.path]),x=o.useCallback(p=>{const w=`/kos/dispense/${r==null?void 0:r.path}/flavor/selected/`;u.EventBus.publish(w,p)},[r==null?void 0:r.path]),k=o.useCallback(()=>{const p=`/kos/dispense/${r==null?void 0:r.path}/flavor/cleared/`;u.EventBus.publish(p,{})},[r==null?void 0:r.path]),v=o.useCallback(()=>{const p=`/kos/dispense/${r==null?void 0:r.path}/pour/`;u.EventBus.publish(p,{})},[r==null?void 0:r.path]),h=o.useCallback(async p=>{const w=`/kos/dispense/${r==null?void 0:r.path}/pre/pour/`;return u.EventBus.publish(w,{}),await(L==null?void 0:L(p))||!0},[r==null?void 0:r.path]),c=o.useCallback(async()=>{const p=`/kos/dispense/${r==null?void 0:r.path}/pre/pour/rejected/`;u.EventBus.publish(p,{})},[r==null?void 0:r.path]),R=o.useCallback(()=>{const p=`/kos/dispense/${r==null?void 0:r.path}/pour/cancel/`;u.EventBus.publish(p,{})},[r==null?void 0:r.path]),{brands:B,selectBrand:I,selectedBrand:q,clearBrand:H,brandCompanions:re}=Le({companionType:(Z=t.companionTypes)==null?void 0:Z.brand,onBrandSelected:C,onBrandCleared:f}),{beverages:ne,selectBeverage:K,selectedBeverage:M,clearBeverage:A,beverageCompanions:oe}=Me({companionType:(z=t.companionTypes)==null?void 0:z.beverage,onBeverageSelected:l,onClearBeverage:m}),{clearFlavors:D,flavors:P,selectFlavor:E,selectedFlavors:_,flavorCompanions:T}=He({companionType:(ee=t.companionTypes)==null?void 0:ee.flavor,onFlavorSelected:x,onFlavorCleared:k}),[L,O]=o.useState(),G=o.useCallback(p=>{O(()=>p)},[]),V=ye({onPour:v,onPourCancel:R,onBeforePour:h,onBeforePourRejected:c});a.current=V.updatePourContext,d.current=V.removeFromPourContext;const ae=o.useCallback(()=>{switch(N.debug(`Navigating back from group: ${s}`),s){case F:A(),H();break;case X:case U:n(e),A(),H();break}},[A,H,s,e]),ie=o.useCallback(()=>{const p=`/kos/dispense/${r==null?void 0:r.path}/home/`;u.EventBus.publish(p,{}),n(e),e===F&&(A(),H()),e===X&&A()},[A,H,e]),ce=o.useCallback(()=>{if(i.current.length===0){N.debug("No timers to pause.");return}N.debug(`Pausing ${i.current.length} timers.`),i.current.forEach(p=>{N.debug(`Pausing timer with id ${p.id}.`),p.pause()})},[]),ue=o.useCallback(()=>{if(i.current.length===0){N.debug("No timers to restart.");return}N.debug(`Restarting ${i.current.length} timers.`),i.current.forEach(p=>{N.debug(`Restarting timer with id ${p.id}.`),p.restart()})},[]);return{timers:{add:o.useCallback(p=>{if(p){if(i.current.some(w=>w.id===p.id)){N.debug(`Timer with id ${p.id} already exists.`);return}i.current.push(p)}},[]),pause:ce,restart:ue},nav:{currentGroup:s,back:ae,home:ie},pour:V,updateOnBeforePour:G,selections:{[F]:q,[X]:M,[U]:_},[F]:{models:B,companions:re,clear:H,handlers:{onSelected:I}},[X]:{models:ne,companions:oe,clear:A,handlers:{onSelected:K}},[U]:{models:P,companions:T,clear:D,handlers:{onSelected:E}}}},ct=e=>{const{model:t}=S(),[s,n]=o.useState(null),{onAmbientTimer:r,onAttractTimer:i,onResetAttractTimer:a,onResumeAttractTimer:d,defaultAttractTime:C,defaultAmbientTime:f}=e,l=o.useCallback(()=>{r&&(u.KosLog.info("Ambient timer expired. Calling callback"),r==null||r())},[r]),m=o.useCallback(()=>{i&&(u.KosLog.info("Attract timer expired. Calling callback"),i==null||i())},[i]),x=o.useCallback(()=>{s&&(s.restart(),a==null||a())},[s,a]),k=o.useCallback(()=>{s&&(s.reset(),a==null||a())},[s,a]),v=o.useCallback(()=>{s&&(s.pause(),d==null||d())},[s,d]);return o.useEffect(()=>{if(t&&C){u.KosLog.info("Nozzle is available. Creating timers");const h=u.TimerManager.createTimer("attract-timer-"+t.path,C);return C&&(h==null||h.addTimeoutAction({name:"attract-timer",remainingTime:0,action:m})),f&&(h==null||h.addTimeoutAction({name:"ambient-timer",remainingTime:f,action:l})),C&&(h==null||h.start()),n(h??null),()=>{h==null||h.reset(),n(null)}}return()=>{u.KosLog.info("Nozzle is not available. No timers to clear")}},[f,C,l,m,t]),{attractTimer:s,restart:x,pause:k,resume:v}},ut=(e,t)=>{if(t)return u.EventBus.subscribe(e,t).unsubscribe},je=({onInit:e,onBrandSelected:t,onBrandCleared:s,onBeverageCleared:n,onBeverageSelected:r,onFlavorCleared:i,onFlavorSelected:a,onReturnToHome:d,onPour:C,onPourCancel:f,onBeforePourRejected:l,onAmbientTimer:m,onAttractTimer:x,onResumeAttractTimer:k,onIdleTimeout:v,onAreYouThereTimeout:h})=>{const{model:c}=S();o.useEffect(()=>{const B=[{topic:`/kos/dispense/${c==null?void 0:c.path}/brand/selected/`,callback:t},{topic:`/kos/dispense/${c==null?void 0:c.path}/brand/cleared/`,callback:s},{topic:`/kos/dispense/${c==null?void 0:c.path}/beverage/selected/`,callback:r},{topic:`/kos/dispense/${c==null?void 0:c.path}/beverage/cleared/`,callback:n},{topic:`/kos/dispense/${c==null?void 0:c.path}/flavor/selected/`,callback:a},{topic:`/kos/dispense/${c==null?void 0:c.path}/flavor/cleared/`,callback:i},{topic:`/kos/dispense/${c==null?void 0:c.path}/pour/`,callback:C},{topic:`/kos/dispense/${c==null?void 0:c.path}/pour/cancel/`,callback:f},{topic:`/kos/dispense/${c==null?void 0:c.path}/pre/pour/rejected/`,callback:l},{topic:`/kos/dispense/${c==null?void 0:c.path}/ambient/start/`,callback:m},{topic:`/kos/dispense/${c==null?void 0:c.path}/attract/start/`,callback:x},{topic:`/kos/dispense/${c==null?void 0:c.path}/attract/resume/`,callback:k},{topic:`/kos/dispense/${c==null?void 0:c.path}/idle/timeout/`,callback:v},{topic:`/kos/dispense/${c==null?void 0:c.path}/are-you-there/timeout/`,callback:h},{topic:`/kos/dispense/${c==null?void 0:c.path}/init/`,callback:e},{topic:`/kos/dispense/${c==null?void 0:c.path}/home/`,callback:d}].map(({topic:I,callback:q})=>ut(I,q));return()=>{B.forEach(I=>I==null?void 0:I())}},[c==null?void 0:c.path,m,x,n,r,s,t,i,a,C,f,k,v,h,e,d])},y=u.KosLog.createLogger({name:"useCuiKitTimers"}),be=e=>{const{model:t}=S(),[s,n]=o.useState(null),{onAreYouThereTimer:r,onIdleTimer:i,onResetIdleTimer:a,defaultAreYouThereTime:d=10,defaultIdleTime:C=20}=e,f=o.useRef(!1),l=o.useCallback(()=>{!f.current&&r&&(u.KosLog.info("Are you there timer expired. Calling callback"),f.current=!0,r==null||r())},[r]),m=o.useCallback(()=>{y.debug("handleIdleTimer called in useCuiKitTimers, onIdleTimer exists:",!!i),i?(y.debug("Idle timer expired. Calling callback"),i==null||i()):y.debug("No onIdleTimer callback provided!")},[i]),x=o.useCallback(()=>{y.debug(`TIMER RESTART called for ${e.prefix??""}timer`),s&&(s.restart(),f.current=!1,a==null||a())},[s,a,e.prefix]),k=o.useCallback(()=>{y.debug(`TIMER PAUSE/RESET called for ${e.prefix??""}timer`),s&&(s.reset(),f.current=!1,a==null||a())},[s,a,e.prefix]);return o.useEffect(()=>{if(y.debug(`useCuiKitTimers effect triggered - nozzle: ${!!t}, path: ${t==null?void 0:t.path}, callbacks: handleIdle=${!!m}, handleAreYouThere=${!!l}`),t){y.info("Nozzle is available. Creating timers");const v=u.TimerManager.createTimer(`${e.prefix??""}idle-timer-${t.path}`,C);return y.debug(`Adding idle timer action for ${e.prefix??""}idle-timer-${t.path} with callback:`,!!m),v==null||v.addTimeoutAction({name:"idle-timer",remainingTime:0,action:m}),v==null||v.addTimeoutAction({name:"are-you-there-timer",remainingTime:d,action:l}),n(v??null),()=>{v==null||v.reset(),n(null)}}return()=>{y.info("Nozzle is not available. No timers to clear")}},[d,C,l,m,t,e.prefix]),{idleTimer:s,restart:x,pause:k}},j=u.KosLog.createLogger({name:"useDefaultCuiKitLifecycle"}),dt=({kit:e,inactivity:t,pour:s,screens:n,onBeforeAreYouThereTimer:r,areYouThereRejectionPolicy:i="pause"})=>{var w,W,Ae,Ee;const[a,d]=o.useState(!1),[C,f]=o.useState(!1),{model:l}=S(),[m,x]=o.useState(!1),k=(t==null?void 0:t.idleTimeout)??15,v=(t==null?void 0:t.areYouThereTimeoutOffset)??10,h=(s==null?void 0:s.idleTimeout)??(t==null?void 0:t.idleTimeout)??10,c=(s==null?void 0:s.areYouThereTimeoutOffset)??(t==null?void 0:t.areYouThereTimeoutOffset)??5,R=n==null?void 0:n.ambientTimeoutOffset,B=n==null?void 0:n.attractTimeout,I=o.useCallback(()=>{if(j.info("handleIdleTimeout called - navigating home and publishing event"),D(!1),e==null||e.nav.home(),l){const $=`/kos/dispense/${l.path}/idle/timeout/`;u.EventBus.publish($,{})}},[(w=e==null?void 0:e.nav)==null?void 0:w.home,l]),q=o.useCallback(()=>{j.info("handleResetIdleTimer called - resetting idle timer"),D(!1)},[]),H=o.useCallback(()=>{if(R&&(d(!0),f(!1),l)){const $=`/kos/dispense/${l.path}/ambient/start/`;u.EventBus.publish($,{})}},[R,l]),re=o.useCallback(()=>{if(B&&(f(!0),d(!1),l)){const $=`/kos/dispense/${l.path}/attract/start/`;u.EventBus.publish($,{})}},[B,l]),ne=o.useCallback(()=>{if(B&&(f(!1),d(!1),e==null||e.nav.home(),l)){const $=`/kos/dispense/${l.path}/attract/resume/`;u.EventBus.publish($,{})}},[e==null?void 0:e.nav,B,l]),{pause:K,restart:M,attractTimer:A}=ct({defaultAmbientTime:R,defaultAttractTime:B,onAmbientTimer:H,onAttractTimer:re,onResumeAttractTimer:ne});(W=e==null?void 0:e.timers)==null||W.add(A);const[oe,D]=o.useState(!1);j.info("Creating idle timer with timeout:",k,"seconds and callback:",!!I);const{pause:P,restart:E,idleTimer:_}=be({defaultAreYouThereTime:v,defaultIdleTime:k,onIdleTimer:I,onResetIdleTimer:q});j.info(`Creating pour timer with timeout: ${h} seconds and callback: ${!!I}`);const{pause:T,restart:L,idleTimer:O}=be({defaultAreYouThereTime:c,defaultIdleTime:h,onIdleTimer:I,prefix:"pour-"}),G=o.useCallback(async()=>{let $=!0;if(r)try{$=await r()}catch(de){j.error(`onBeforeAreYouThereTimer callback failed: ${de}`),$=!1}if($){if(l){const de=`/kos/dispense/${l.path}/are-you-there/timeout/`;u.EventBus.publish(de,{})}D(!0),m?T():P()}else switch(i){case"pause":m?T():P();break;case"restart":m?L():E();break}},[r,l,i,m]),V=o.useCallback(()=>{D(!1),K(),m?(L(),P()):(E(),T())},[m,P,T,E,L]);o.useEffect(()=>{_&&_.addTimeoutAction({name:"are-you-there-timer",remainingTime:v,action:G})},[_,v,G]),o.useEffect(()=>{O&&O.addTimeoutAction({name:"pour-are-you-there-timer",remainingTime:c,action:G})},[O,c,G]),(Ae=e==null?void 0:e.timers)==null||Ae.add(_),(Ee=e==null?void 0:e.timers)==null||Ee.add(O);const ae=o.useCallback(()=>{x(!1),T(),P(),K()},[P,T]),ie=o.useCallback(()=>{x(!0),j.info("restarting pour timer"),L(),K(),P()},[P,L]),ce=o.useCallback(()=>{x(!1),j.info("restarting pour timer on before pour rejected"),T(),E()},[]),ue=o.useCallback(()=>{K(),f(!1),d(!1),E()},[K,E]),Ie=o.useCallback(()=>{f(!1),d(!1),x(!1),T(),M()},[M,T]),Z=o.useCallback(()=>{f(!1),d(!1),x(!1),K(),E()},[K,E]),z=o.useCallback(()=>{f(!1),d(!1),x(!1),M(),P(),T()},[M,P,T]),ee=o.useCallback(()=>{f(!1),d(!1),M(),P()},[M,P]);je({onBrandSelected:ue,onBrandCleared:Ie,onBeverageSelected:Z,onBeverageCleared:z,onPour:ae,onPourCancel:ie,onBeforePourRejected:ce,onInit:ee});const p=m?c:v;return o.useEffect(()=>{if(l&&A){const $=`/kos/dispense/${l==null?void 0:l.path}/init/`;u.EventBus.publish($,{})}},[l,A]),{showAreYouThere:oe,clearAreYouThere:V,pauseIdleTimer:P,restartIdleTimer:E,areYouThereCountdown:p,showAmbientScreen:a,showAttractScreen:C,pauseScreenTimer:K,restartScreenTimer:M}},ke=()=>{const e=g.DeviceAssembly.type;return u.useKosModel({modelId:e,modelType:g.DeviceAssembly.type,options:{}})};function lt(e){return t=>{const{model:s,status:n,KosModelLoader:r}=ke();return b.jsx(r,{...n,children:b.jsx(e,{...t,deviceAssembly:s})})}}const Pe=e=>{const t=e;return u.useKosModel({modelId:t,modelType:g.Holder.type,options:{}})};function mt(e,t){return s=>{const{model:n,status:r,KosModelLoader:i}=Pe(e);return b.jsx(i,{...r,children:b.jsx(t,{...s,holder:n})})}}const we=()=>{const e=g.HolderContainer.type;return u.useKosModel({modelId:e,modelType:g.HolderContainer.type,options:{}})};function bt(e){return t=>{const{model:s,status:n,KosModelLoader:r}=we();return b.jsx(r,{...n,children:b.jsx(e,{...t,holderContainer:s})})}}const Te=()=>{const e=g.Ingredient.type;return u.useKosModel({modelId:e,modelType:g.Ingredient.type,options:{}})},le=u.KosLog.createLogger({name:"HoldToPourIntentStrategy",group:"kos-hooks"}),Re={name:"HoldToPourIntentStrategy",async initiate(e,t){if(!(e!=null&&e.canPour)){le.debug(`${e==null?void 0:e.id} cannot pour. Returning early.`);return}t?(le.debug(`performing intent: ${t}`),await(e==null?void 0:e.performIntent(t))):le.debug("no intent provided. Returning early.")},async initiateEnded(e){await(e==null?void 0:e.cancelPour())}},me=u.KosLog.createLogger({name:"useNozzlePour",group:"kos-hooks"}),ht=({onPour:e,onPourCancel:t,intentContainer:s,strategy:n=Re})=>{const r=o.useCallback(()=>{me.debug(`[${n==null?void 0:n.name}] - Pour initiated for model ${s==null?void 0:s.id}.`),n==null||n.initiate(s),e==null||e()},[e,s,n]),i=o.useCallback(()=>{var C;me.debug(`[${n==null?void 0:n.name}] - Pour initiate ended called for nozzle ${s==null?void 0:s.id}.`),(C=n==null?void 0:n.initiateEnded)==null||C.call(n,s),t==null||t()},[t,s,n]),a=o.useCallback(()=>{me.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:r,onRelease:i}).dom,cancel:a,status:s}};function pt(e){return t=>{const{model:s,status:n,KosModelLoader:r}=Te();return b.jsx(r,{...n,children:b.jsx(e,{...t,ingredient:s})})}}const $e=()=>{const e=g.IngredientContainer.type;return u.useKosModel({modelId:e,modelType:g.IngredientContainer.type,options:{}})};function ft(e){return t=>{const{model:s,status:n,KosModelLoader:r}=$e();return b.jsx(r,{...n,children:b.jsx(e,{...t,ingredientContainer:s})})}}function vt(e,t){return s=>{const{model:n,status:r,KosModelLoader:i}=Ce(e);return b.jsx(i,{...r,children:b.jsx(t,{...s,nozzle:n})})}}const J=u.KosLog.createLogger({name:"usePour",group:"kos-hooks"}),Ct=({onBeforePour:e,onPour:t,onPourCancel:s,onPourAbort:n,pourTarget:r,pourContext:i,strategy:a=ge})=>{const[d,C]=o.useState(i||new xe),f=o.useCallback(async()=>{J.debug(`[${a==null?void 0:a.name}] - calling before pour for pour target ${r==null?void 0:r.id}.`),(e?await(e==null?void 0:e(d)):!0)?(J.debug(`[${a==null?void 0:a.name}] - Pour initiated for pour target ${r==null?void 0:r.id}.`),await(a==null?void 0:a.initiate(r)),t==null||t(),r!=null&&r.isPouring||n==null||n()):(J.debug(`[${a==null?void 0:a.name}] - Pour cancelled for pour target ${r==null?void 0:r.id}.`),s==null||s())},[t,e,n,r,a,d]),l=o.useCallback(async()=>{var c;J.debug(`[${a==null?void 0:a.name}] - Pour initiate ended called for pour target ${r==null?void 0:r.id}.`),await((c=a==null?void 0:a.initiateEnded)==null?void 0:c.call(a,r))||s==null||s()},[s,r,a]),m=o.useCallback(async()=>{J.debug(`Force cancelling pour for pour target ${r==null?void 0:r.id}.`),await(r==null?void 0:r.cancelPour()),s==null||s()},[s,r]),x=o.useCallback((h,c)=>{d.set(h,c)},[d]),k=o.useCallback(h=>{d.remove(h)},[d]);return{handlers:u.usePressGesture({onPressed:f,onRelease:l}).dom,cancel:m,updatePourContext:x,removeFromPourContext:k,status:r}},Q=u.KosLog.createLogger({name:"TapOrHoldIntentStrategy",group:"kos-hooks"});class xt{constructor(t){Y(this,"intent");Y(this,"name","TapOrHoldIntentStrategy");Y(this,"isHold",!1);Y(this,"disposer",null);this.intent=t}async initiate(t,s){if(this.disposer=setTimeout(()=>{this.isHold=!0},250),t!=null&&t.isPouring&&!this.isHold){Q.debug("additional tap detected. cancelling pour"),await t.cancelPour();return}if(!(t!=null&&t.canPour)){Q.debug(`${t==null?void 0:t.id} cannot pour. Returning early.`);return}s?(Q.debug(`performing intent: ${s}`),await(t==null?void 0:t.performIntent(s))):Q.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):(Q.debug("Tap detected. don't cancel and return."),!0)}}const se=u.KosLog.createLogger({name:"TapToPourIntentStrategy",group:"kos-hooks"}),gt={name:"TapToPourIntentStrategy",async initiate(e,t){if(e!=null&&e.isPouring){se.debug(`Nozzle ${e==null?void 0:e.id} is already pouring. cancelling pour`),await e.cancelPour();return}if(!(e!=null&&e.canPour)){se.debug(`Nozzle ${e==null?void 0:e.id} cannot pour. Returning early.`);return}t?(se.debug(`performing intent: ${t}`),await(e==null?void 0:e.performIntent(t))):se.debug("no intent provided. Returning early.")},async initiateEnded(e){return!0}},Ke=u.KosLog.createLogger({name:"HoldToPourStrategy",group:"kos-hooks"}),kt={name:"TapToPourStrategy",async initiate(e){if(e!=null&&e.isPouring){Ke.debug(`Nozzle ${e==null?void 0:e.id} is already pouring. cancelling pour`),await e.cancelPour();return}if(!(e!=null&&e.canPour)){Ke.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}},De=(e,t,s)=>{const n=e;return u.useKosModel({modelId:n,modelType:st.GenericPour.type,forceUpdate:!0,options:{servicePathFactory:t,selectedId:s}})};function Pt(e){return t=>{const{model:s,status:n,KosModelLoader:r}=De(t.id,t.servicePathFactory,t.itemId);return b.jsx(r,{...n,children:b.jsx(e,{...t,genericPour:s})})}}const _e=o.createContext(void 0),wt=({children:e})=>{const{model:t,ready:s}=he(),n=o.useMemo(()=>s&&t?{model:t}:{},[s,t]);return b.jsx(_e.Provider,{value:n,children:e})},Tt=()=>{const e=o.useContext(_e);if(!e)throw new Error("useAssemblyContext must be used within a AssemblyProvider");return e},Oe=o.createContext(void 0),$t=({children:e})=>{const{model:t,ready:s}=pe(),n=o.useMemo(()=>s&&t?{model:t}:{},[s,t]);return b.jsx(Oe.Provider,{value:n,children:e})},It=()=>{const e=o.useContext(Oe);if(!e)throw new Error("useAvailabilityContext must be used within a AvailabilityProvider");return e},Ge=o.createContext(void 0),At=({children:e,id:t})=>{const{model:s,ready:n}=fe(t),r=o.useMemo(()=>n&&s?{model:s}:{},[n,s]);return b.jsx(Ge.Provider,{value:r,children:e})},Et=()=>{const e=o.useContext(Ge);if(!e)throw new Error("useBoardContext must be used within a BoardProvider");return e},Ye=o.createContext(void 0),Kt=({children:e})=>{const{model:t,ready:s}=ve(),n=o.useMemo(()=>s&&t?{model:t}:{},[s,t]);return b.jsx(Ye.Provider,{value:n,children:e})},St=()=>{const e=o.useContext(Ye);if(!e)throw new Error("useBoardContainerContext must be used within a BoardContainerProvider");return e},Fe=o.createContext(void 0),Ue=({children:e})=>{const{model:t,ready:s}=ke(),n=o.useMemo(()=>{if(s&&t){const i=t.nozzlePaths;return{model:t,nozzlePaths:i}}return{}},[s,t]),r=s&&t?e:null;return b.jsx(Fe.Provider,{value:n,children:r})},qe=()=>{const e=o.useContext(Fe);if(!e)throw new Error("useDeviceAssemblyContext must be used within a DeviceAssemblyProvider");return e};function Bt(){const e=o.createContext(null);return[()=>{const s=o.useContext(e);if(s===void 0)throw new Error("useDispenseKitContext must be used within a Provider");return s},e.Provider]}function Ve({children:e,provider:t,props:s,nozzleProps:n}){const r=Ne(s);return b.jsx(t,{value:r,children:e(n||{})})}function Mt({children:e,provider:t,props:s}){const{nozzlePaths:n}=qe(),r=(n==null?void 0:n.length)||0;return(n==null?void 0:n.map((a,d)=>b.jsx(Be,{path:a,children:b.jsx(Ve,{provider:t,props:s,nozzleProps:{nozzleIndex:d,nozzlePath:a,totalNozzles:r,isFirstNozzle:d===0,isLastNozzle:d===r-1},children:e})},a)))||[]}function We({provider:e,props:t}){return({children:s})=>e?b.jsx(Ue,{children:b.jsx(Mt,{provider:e,props:t,children:s})}):null}function Lt(e){const[t,s]=Bt();return[t,We({provider:s,props:e})]}const Je=o.createContext(void 0),yt=({children:e,id:t})=>{const{model:s,ready:n}=Pe(t||""),r=o.useMemo(()=>n&&s?{model:s}:{},[n,s]);return b.jsx(Je.Provider,{value:r,children:e})},Ht=()=>{const e=o.useContext(Je);if(!e)throw new Error("useHolderContext must be used within a HolderProvider");return e},Qe=o.createContext(void 0),Nt=({children:e})=>{const{model:t,ready:s}=we(),n=o.useMemo(()=>s&&t?{model:t}:{},[s,t]);return b.jsx(Qe.Provider,{value:n,children:e})},jt=()=>{const e=o.useContext(Qe);if(!e)throw new Error("useHolderContainerContext must be used within a HolderContainerProvider");return e},Xe=o.createContext(void 0),Rt=({children:e})=>{const{model:t,ready:s}=Te(),n=o.useMemo(()=>s&&t?{model:t}:{},[s,t]);return b.jsx(Xe.Provider,{value:n,children:e})},Dt=()=>{const e=o.useContext(Xe);if(!e)throw new Error("useIngredientContext must be used within a IngredientProvider");return e},Ze=o.createContext(void 0),_t=({children:e})=>{const{model:t,ready:s}=$e(),n=o.useMemo(()=>s&&t?{model:t}:{},[s,t]);return b.jsx(Ze.Provider,{value:n,children:e})},Ot=()=>{const e=o.useContext(Ze);if(!e)throw new Error("useIngredientContainerContext must be used within a IngredientContainerProvider");return e},Gt=()=>{const e=g.Pump.type;return u.useKosModel({modelId:e,modelType:g.Pump.type,options:{}})},ze=o.createContext(void 0),Yt=({children:e})=>{const{model:t,ready:s}=Gt(),n=o.useMemo(()=>s&&t?{model:t}:{},[s,t]);return b.jsx(ze.Provider,{value:n,children:e})},Ft=()=>{const e=o.useContext(ze);if(!e)throw new Error("usePumpContext must be used within a PumpProvider");return e};exports.AssemblyProvider=wt;exports.AvailabilityProvider=$t;exports.BoardContainerProvider=Kt;exports.BoardProvider=At;exports.CuiKit=We;exports.CuiKitWrapper=Ve;exports.DISPENSE_GROUP_BEVERAGE=X;exports.DISPENSE_GROUP_BRAND=F;exports.DISPENSE_GROUP_FLAVOR=U;exports.DeviceAssemblyProvider=Ue;exports.HoldToPourIntentStrategy=Re;exports.HoldToPourStrategy=ge;exports.HolderContainerProvider=Nt;exports.HolderProvider=yt;exports.IngredientContainerProvider=_t;exports.IngredientProvider=Rt;exports.NozzleProvider=Be;exports.PourContext=xe;exports.PumpProvider=Yt;exports.TapOrHoldIntentStrategy=xt;exports.TapToPourIntentStrategy=gt;exports.TapToPourStrategy=kt;exports.initializeCuiKit=Lt;exports.useAssembly=he;exports.useAssemblyContext=Tt;exports.useAvailability=pe;exports.useAvailabilityContext=It;exports.useBeverages=Me;exports.useBoard=fe;exports.useBoardContainer=ve;exports.useBoardContainerContext=St;exports.useBoardContext=Et;exports.useBrands=Le;exports.useCuiKit=Ne;exports.useCuiKitTimers=be;exports.useDefaultCuiKitLifecycle=dt;exports.useDeviceAssembly=ke;exports.useDeviceAssemblyContext=qe;exports.useDispenseLifecycle=je;exports.useFlavors=He;exports.useGenericPour=De;exports.useHolder=Pe;exports.useHolderContainer=we;exports.useHolderContainerContext=jt;exports.useHolderContext=Ht;exports.useIngredient=Te;exports.useIngredientContainer=$e;exports.useIngredientContainerContext=Ot;exports.useIngredientContext=Dt;exports.useIngredientPour=ht;exports.useNozzle=Ce;exports.useNozzleContext=S;exports.useNozzlePour=ye;exports.usePourTarget=Ct;exports.usePumpContext=Ft;exports.withAssembly=rt;exports.withBeverage=nt;exports.withBoard=ot;exports.withBoardContainer=at;exports.withDeviceAssembly=lt;exports.withGenericPour=Pt;exports.withHolder=mt;exports.withHolderContainer=bt;exports.withIngredient=pt;exports.withIngredientContainer=ft;exports.withNozzle=vt;
|
|
2
|
+
//# sourceMappingURL=pump-provider-86479YU2.cjs.map
|