@onlive.ai/flow-client 0.1.238 → 0.1.271

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/flow-client v0.1.238 | © 2026 Onlive.ai */
2
- "use strict";var g=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var $=Object.prototype.hasOwnProperty;var B=(a,o,e)=>o in a?g(a,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[o]=e;var W=(a,o)=>{for(var e in o)g(a,e,{get:o[e],enumerable:!0})},Y=(a,o,e,n)=>{if(o&&typeof o=="object"||typeof o=="function")for(let i of q(o))!$.call(a,i)&&i!==e&&g(a,i,{get:()=>o[i],enumerable:!(n=U(o,i))||n.enumerable});return a};var K=a=>Y(g({},"__esModule",{value:!0}),a);var p=(a,o,e)=>B(a,typeof o!="symbol"?o+"":o,e);var pt={};W(pt,{FlowClient:()=>x,default:()=>st});module.exports=K(pt);var M=require("@onlive.ai/common-121/utils/browser-preferences.js"),G=require("@onlive.ai/common-121/utils/merge.js");var w=require("@onlive.ai/common-121/utils/browser-preferences.js"),I=require("@onlive.ai/common-121/utils/merge.js"),d=require("@onlive.ai/tracker/session"),A=require("@onlive.ai/tracker/tracker");var s=require("zod"),u="flow_form",j="onlive-analytics-event",b=s.z.object({enabled:s.z.boolean().default(!1).optional(),conditions:s.z.custom().optional(),data:s.z.custom().optional(),removeExtraneousValues:s.z.boolean().default(!0).optional(),allowBotTraffic:s.z.boolean().default(!1).optional(),adapters:s.z.array(s.z.string()).default([]).optional(),apiUrl:s.z.string().url().optional(),emitters:s.z.object({windowEvent:s.z.boolean().optional(),dataLayer:s.z.boolean().optional(),windowPostMessage:s.z.boolean().optional()}).optional()});var _=class{constructor(o,e,n,i){p(this,"taskSuccessMappers",{create_i_event_registration:o=>({task_name:"ievent_registration",task_data:this.getRecord(o.fields)})});p(this,"options");p(this,"tracker");p(this,"eventListeners",[]);this.options=b.parse(n),this.tracker=new A.Tracker({apiUrl:this.options.apiUrl||"",conditions:this.options.conditions,removeExtraneousValues:this.options.removeExtraneousValues,allowBotTraffic:this.options.allowBotTraffic,adapters:this.options.adapters,dryRun:i}),this.tracker.setBase((0,I.merge)({},{organization_id:o,page_url:window.location.href,page_referrer:document.referrer,origin_medium:"web",guest_id:d.Session.id,interaction_id:d.Session.interactionId,extra:{flow_id:e}},this.options.data)),window.addEventListener(j,({detail:r})=>r?.event&&r?.data&&this.emit(r.event,r.data))}getTracker(){return this.tracker}preferences(){return{...(0,w.browserPreferences)(),interactionId:d.Session.interactionId,guestId:d.Session.id}}analyzeRequest(o,e){"currentStepId"in o&&(o.actionId&&this.tracker.send("element_click",{element_label:o.actionId,element_type:"button",form_name:Object.keys(e.fields||{}).length?u:void 0}),e.fields&&Object.keys(e.fields).length&&this.tracker.send("form_submit",{form_name:u,form_data:e.fields}))}analyzeResponse(o,e){let n=this.getTrackingEntries(e.step.result?.tracking),i={};n.forEach(r=>{let{trackingAction:c,...m}=r;(!c||c==="SET_BASE_DATA")&&(delete m.eventName,delete m.eventData,Object.assign(i,m))}),this.tracker.setBase({form_name:u,step_name:e.step.id,step_number:e.step.number,step_initial:!("currentStepId"in o)||void 0,step_final:e.step.isFinal,...i}),"currentStepId"in o&&(e.step.result?.pipelines&&e.step.result.pipelines.forEach(r=>{let c=this.mapTaskSuccessPipeline({name:r.name,data:this.getRecord(r.data)});this.tracker.send("task_success",{task_name:c.task_name,task_data:c.task_data})}),e.step.error&&this.tracker.send("form_error",{form_error:e.step.error.code})),n.forEach(r=>{let{trackingAction:c,eventName:m,eventData:V}=r;c==="EMIT_EVENT"&&typeof m=="string"&&m&&this.send(m,this.getRecord(V))}),this.tracker.send("impression",{impression_type:"step"})}send(o,e){this.tracker.send(o,e)}setData(o){this.tracker.setBase(o)}onEvent(o){this.eventListeners.push(o)}emit(o,e){this.eventListeners.forEach(n=>n({event:o,data:e}))}mapTaskSuccessPipeline(o){let e=this.taskSuccessMappers[o.name];if(!e)return{task_name:this.normalizeTaskName(o.name),task_data:o.data};let n=e(o.data);return{...n,task_name:this.normalizeTaskName(n.task_name)}}normalizeTaskName(o){return o.replace(/_v4$/,"")}getRecord(o){return!o||typeof o!="object"||Array.isArray(o)?{}:o}getTrackingEntries(o){if(Array.isArray(o))return o.map(n=>this.getRecord(n)).filter(n=>Object.keys(n).length>0);let e=this.getRecord(o);return Object.keys(e).length>0?[e]:[]}},S=_;var v=require("@onlive.ai/calendar"),T=require("@onlive.ai/calendar/client/client.types.js"),t=require("zod");var R=(n=>(n.DARK="DARK",n.FOLLOW_SYSTEM="FOLLOW_SYSTEM",n.LIGHT="LIGHT",n))(R||{}),L={tracking:{removeExtraneousValues:!0,apiUrl:"https://srvless.onlive.site/tracking",data:{widget_type:"OnliveAppFlow"}}},P=t.z.string().nonempty(),z=t.z.object({baseUrl:t.z.string().url().nonempty(),flowId:t.z.string().length(24).nonempty(),organizationId:t.z.string().uuid().nonempty(),lang:t.z.string().length(2).nonempty(),tracking:b.optional(),devMode:t.z.boolean().default(!1).optional()}),k=t.z.object({state:t.z.record(t.z.string(),t.z.any()).optional(),fields:t.z.record(t.z.string(),t.z.any()).optional()}),F=t.z.object({currentStepId:t.z.string().nonempty(),actionId:t.z.string().nonempty()}),C=t.z.enum(["text","boolean","number","first_name","last_name","name","email","phone","mobile_phone","date","time","datetime","password","url","color","object","void","location","availability"]),H=t.z.object({name:t.z.string().optional(),value:t.z.string().optional(),icon:t.z.string().optional(),type:t.z.enum(["url","email","phone"]).optional()}),J=t.z.object({lat:t.z.number().min(-90).max(90),lng:t.z.number().min(-180).max(180),meta:t.z.record(t.z.string(),t.z.any()).optional(),properties:t.z.record(t.z.string(),H).optional()}),Z=t.z.object({datetime:t.z.string().datetime(),meta:t.z.record(t.z.string(),t.z.any()).optional()}),h=t.z.union([t.z.string(),t.z.number(),t.z.boolean(),J,Z]),y=t.z.object({content:t.z.object({icon:t.z.string().optional(),url:t.z.string().url().optional(),width:t.z.string().optional(),height:t.z.string().optional(),scale:t.z.number().optional()}).optional(),background:t.z.string().optional(),glyph:t.z.object({color:t.z.string().optional(),url:t.z.string().url().optional(),icon:t.z.string().optional()}).optional(),borderColor:t.z.string().optional(),scale:t.z.number().optional()}),f=t.z.custom(a=>typeof a=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(a),{message:"Date must be in 'YYYY-MM-DD' format"}),l=t.z.object({text:t.z.string().optional(),icon:t.z.string().optional()}),E=t.z.object({fieldName:t.z.string().nonempty(),value:h.optional(),operator:t.z.enum(["exists","equals","not-equals","contains","not-contains","greater-than","less-than"]).optional()}),X=t.z.object({and:t.z.array(E).optional(),or:t.z.array(E).optional()}),N=t.z.array(t.z.union([E,X])),Q=t.z.object({src:t.z.string().url(),preload:t.z.boolean().optional(),name:t.z.string().nonempty(),function:t.z.string().nonempty(),params:t.z.array(t.z.record(t.z.string(),t.z.any())).optional()}),tt=t.z.object({name:t.z.enum(["organization_call","close_panel","retry_first_step","retry_next_step","organization_chat"]),params:t.z.record(t.z.string(),t.z.any()).optional()}),O=t.z.object({id:t.z.string().nonempty(),type:t.z.enum(["submit","navigate","link","back","dispatcher","script"]),label:t.z.string().nonempty(),variant:t.z.enum(["primary","secondary","success","danger","warning","info"]),position:t.z.enum(["top","bottom"]).optional(),url:t.z.string().url().optional(),target:t.z.enum(["_self","_blank","_parent","_top"]).optional(),loadingBehavior:t.z.enum(["none","spinner","disabled"]).optional(),prefix:l.optional(),suffix:l.optional(),caption:t.z.string().optional(),scripts:Q.array().optional(),events:tt.array().optional()}),ot=t.z.object({message:t.z.string().optional(),icon:t.z.string().optional(),position:t.z.enum(["top","bottom"]).optional(),kind:t.z.enum(["initial-loading","step-loading","step-validation","field-loading"]).optional(),actions:t.z.array(O).optional()}),et=t.z.object({name:t.z.string().nonempty(),label:t.z.string().optional(),description:t.z.string().optional(),value:t.z.union([h,t.z.array(h)]).optional(),type:C,component:t.z.enum(["input","phone_input","textarea","select","radio","checkbox","switch","rating","carousel","grid","button","label","map","calendar","stripe_payment"]).optional(),disabled:t.z.boolean().optional(),readonly:t.z.boolean().optional(),multiple:t.z.boolean().optional(),placeholder:t.z.string().optional(),options:t.z.array(t.z.object({id:t.z.string().optional(),label:t.z.string().nonempty(),value:h.optional(),image:t.z.string().url().optional(),description:t.z.string().optional(),disabled:t.z.boolean().optional(),attributes:t.z.record(t.z.string(),t.z.any()).optional(),actions:t.z.array(O).optional(),dependsOn:N.optional()})).optional(),required:t.z.boolean().optional(),configuration:t.z.object({generic:t.z.object({attributes:t.z.record(t.z.string(),t.z.any()).optional(),error:t.z.object({loading:ot.optional(),validation:t.z.object({icon:t.z.string().optional(),showOn:t.z.enum(["input","blur"]).optional()}).optional()})}).optional(),input:t.z.object({min:t.z.union([t.z.number(),t.z.string()]).optional(),max:t.z.union([t.z.number(),t.z.string()]).optional(),step:t.z.number().optional(),pattern:t.z.string().refine(a=>{try{return new RegExp(a),!0}catch{return!1}},"Invalid regex pattern").optional(),minLength:t.z.number().optional(),maxLength:t.z.number().optional(),exactLength:t.z.number().optional(),prefix:t.z.object({default:l.optional(),success:l.optional(),error:l.optional()}).optional(),suffix:t.z.object({default:l.optional(),success:l.optional(),error:l.optional()}).optional(),clearable:t.z.boolean().optional(),floatingLabel:t.z.boolean().optional()}).optional(),phoneInput:t.z.object({includePrefixValue:t.z.boolean().optional(),showFlag:t.z.boolean().optional(),showCode:t.z.boolean().optional(),prefixLabel:t.z.string().optional(),lockedPrefix:t.z.boolean().optional(),countries:t.z.array(t.z.string()).optional(),defaultPrefix:t.z.string().optional(),autoDetectCountry:t.z.boolean().optional()}).optional(),textarea:t.z.object({minLength:t.z.number().optional(),maxLength:t.z.number().optional(),exactLength:t.z.number().optional(),rows:t.z.number().optional()}).optional(),checkbox:t.z.object({layout:t.z.enum(["horizontal","vertical"])}).optional(),rating:t.z.object({icons:t.z.array(t.z.string()).optional(),color:t.z.string().optional(),precision:t.z.number().optional()}).optional(),carousel:t.z.object({loop:t.z.boolean().optional(),mouseDragging:t.z.boolean().optional(),itemsPerPage:t.z.object({small:t.z.number(),medium:t.z.number().optional(),large:t.z.number().optional()}).optional(),itemsPerMove:t.z.object({small:t.z.number(),medium:t.z.number().optional(),large:t.z.number().optional()}).optional(),showArrows:t.z.boolean().optional(),showDots:t.z.boolean().optional(),autoplay:t.z.boolean().optional(),autoplaySpeed:t.z.number().optional(),showcaseMode:t.z.boolean().optional(),clickableItems:t.z.object({actionId:t.z.string()}).optional(),labels:t.z.object({position:t.z.enum(["top","bottom","nav-top","nav-bottom","static-top","static-bottom"]).optional(),button:t.z.object({label:t.z.string(),actionId:t.z.string()}).optional()}).optional()}).optional(),grid:t.z.object({search:t.z.object({enabled:t.z.boolean().optional(),value:t.z.string().optional(),button:t.z.object({label:t.z.string().optional()}).optional(),placeholder:t.z.string().optional(),noResultsText:t.z.string().optional(),clearable:t.z.boolean().optional()}).optional(),itemsPerRow:t.z.object({small:t.z.number(),medium:t.z.number().optional(),large:t.z.number().optional()}).optional(),itemsPerPage:t.z.object({small:t.z.number(),medium:t.z.number().optional(),large:t.z.number().optional()}).optional(),clickableItems:t.z.object({actionId:t.z.string()}).optional()}).optional(),map:t.z.object({apiKey:t.z.string().optional(),mapId:t.z.string().optional(),region:t.z.string().length(2).optional(),colorScheme:t.z.nativeEnum(R).optional(),center:t.z.object({lat:t.z.number().min(-90).max(90),lng:t.z.number().min(-180).max(180)}).optional(),showMap:t.z.enum(["always","on-search","never"]).optional(),zoom:t.z.object({initial:t.z.number().optional(),focus:t.z.number().optional(),max:t.z.number().optional(),min:t.z.number().optional()}).optional(),controls:t.z.object({fullscreen:t.z.boolean().optional(),mapType:t.z.boolean().optional(),zoom:t.z.boolean().optional(),rotate:t.z.boolean().optional(),scale:t.z.boolean().optional(),streetView:t.z.boolean().optional()}).optional(),initialLocations:t.z.number().optional(),maxLocations:t.z.number().optional(),distanceUnit:t.z.enum(["km","mi"]).optional(),distanceFormat:t.z.enum(["short","long"]).optional(),distanceDecimals:t.z.number().optional(),options:t.z.object({show:t.z.enum(["always","on-search","never"]).optional(),component:t.z.enum(["list-button","list-radio","carousel"]).optional(),searchLabel:t.z.string().optional(),detailsLabel:t.z.string().optional()}).optional(),search:t.z.object({enabled:t.z.boolean().optional(),value:t.z.string().optional(),button:t.z.object({label:t.z.string().optional(),position:t.z.enum(["inside","outside"]).optional()}).optional(),placeholder:t.z.string().optional(),noResultsText:t.z.string().optional(),autofocus:t.z.boolean().optional(),autocomplete:t.z.boolean().optional(),clearable:t.z.boolean().optional(),mode:t.z.enum(["address","postcode"]).default("postcode").optional(),locationButton:t.z.object({icon:t.z.string().optional(),position:t.z.enum(["left","right"]).optional()}).optional(),prefix:t.z.object({default:l.optional()}).optional(),suffix:t.z.object({default:l.optional()}).optional()}).optional(),distanceRange:t.z.object({initial:t.z.number().optional(),min:t.z.number().optional(),max:t.z.number().optional(),step:t.z.number().optional()}).optional(),mapRegion:t.z.object({strokeColor:t.z.string().optional(),fillColor:t.z.string().optional(),fillOpacity:t.z.number().optional()}).optional(),locationPin:y.optional(),markerPin:t.z.object({default:y.optional(),hover:y.optional(),selected:y.optional()}).optional(),infoWindow:t.z.object({button:t.z.object({label:t.z.string(),action:t.z.string()}).optional(),directionsLabel:t.z.string().optional()}).optional(),ordering:t.z.object({orderBy:t.z.enum(["distance","title","id"]).optional(),orderDir:t.z.enum(["asc","desc"]).optional(),preferences:t.z.array(t.z.object({ids:t.z.string().array(),filters:t.z.object({postcodes:t.z.string().array().optional()}).optional()}))}).optional(),clickableItems:t.z.object({actionId:t.z.string()}).optional(),forcePolyfills:t.z.boolean().optional()}).optional(),calendar:t.z.object({current:t.z.object({month:t.z.number().min(0).max(11).optional(),year:t.z.number().optional()}).optional(),range:t.z.object({min:f.optional(),max:f.optional(),enabled:t.z.array(f).optional(),disabled:t.z.array(f).optional()}).optional(),time:t.z.object({label:t.z.string().optional(),format:t.z.enum(["12h","24h"]).optional(),component:t.z.enum(["carousel","list"]).optional()}).optional(),api:t.z.object({version:t.z.string().optional(),url:t.z.string().url().nonempty(),organizationId:t.z.string().nonempty(),availability:t.z.object({filters:v.GetAvailabilityFilters,options:v.GetAvailabilityOptions.optional()}).optional(),slots:t.z.object({filters:T.GetSlotFilters,options:T.GetSlotOptions.optional()}).optional()}).optional()}).optional(),stripe:t.z.object({publishableKey:t.z.string().nonempty(),mode:t.z.enum(["payment","setup"]).default("payment").optional(),createPaymentIntentEndpoint:t.z.string().url().optional(),createSetupIntentEndpoint:t.z.string().url().optional(),clientSecret:t.z.string().optional(),paymentIntentId:t.z.string().optional(),setupIntentId:t.z.string().optional(),amount:t.z.number().optional(),currency:t.z.string().default("usd").optional(),connectedAccountId:t.z.string().optional(),returnUrl:t.z.string().url().optional(),headers:t.z.record(t.z.string(),t.z.string()).optional(),paymentIntentParams:t.z.record(t.z.string(),t.z.unknown()).optional(),locale:t.z.string().optional(),appearance:t.z.object({theme:t.z.enum(["stripe","night","flat"]).optional(),variables:t.z.record(t.z.string(),t.z.string()).optional(),rules:t.z.record(t.z.string(),t.z.record(t.z.string(),t.z.string())).optional()}).optional(),layout:t.z.enum(["tabs","accordion","auto"]).optional(),elementOptions:t.z.record(t.z.string(),t.z.unknown()).optional(),terms:t.z.object({card:t.z.enum(["auto","always","never"]).optional()}).optional(),customTermsText:t.z.string().optional(),openDialogButtonText:t.z.string().optional(),confirmButtonText:t.z.string().optional(),cancelButtonText:t.z.string().optional(),authorizedText:t.z.string().optional(),successMessage:t.z.string().optional(),setupSuccessMessage:t.z.string().optional(),infoText:t.z.string().optional(),amountLabel:t.z.string().optional(),loadingElementText:t.z.string().optional(),showAmount:t.z.boolean().optional(),dialogTitle:t.z.string().optional(),autoOpenDialog:t.z.boolean().optional(),actionId:t.z.string().optional()}).optional()}).optional(),dependsOn:N.optional(),dependentBehavior:t.z.enum(["hidden","disabled"]).optional(),customError:t.z.object({required:t.z.string().optional(),invalid:t.z.string().optional(),minLength:t.z.string().optional(),maxLength:t.z.string().optional(),minValue:t.z.string().optional(),maxValue:t.z.string().optional(),mismatch:t.z.string().optional()}).optional()}),nt=t.z.enum(["INVALID_DATA","INVALID_ACTION","STEP_NOT_FOUND","UNKNOWN_ERROR","APPOINTMENT_INVALID_DATA","APPOINTMENT_BUSY_SLOT","APPOINTMENT_OUT_OF_DATE","APPOINTMENT_UNKNOWN_ERROR","LEAD_INVALID_DATA","LEAD_UNKNOWN_ERROR","CONTENT_INVALID_DATA","CONTENT_UNKNOWN_ERROR","CONTACT_INVALID_DATA","CONTACT_UNKNOWN_ERROR","LOST_OPPORTUNITY_INVALID_DATA","LOST_OPPORTUNITY_UNKNOWN_ERROR"]),it=t.z.object({type:t.z.enum(["redirect"]),params:t.z.record(t.z.string(),t.z.any()).optional()}),D=t.z.object({trackingAction:t.z.enum(["EMIT_EVENT","SET_BASE_DATA"]).optional(),eventName:t.z.string().optional(),eventData:t.z.record(t.z.string(),t.z.any()).optional()}).catchall(t.z.any()),at=t.z.object({id:t.z.string().nonempty(),number:t.z.number().optional(),title:t.z.string().optional(),description:t.z.string().optional(),stageId:t.z.string().optional(),state:t.z.record(t.z.string(),t.z.any()).optional(),fields:t.z.array(et).optional(),actions:t.z.array(O).optional(),result:t.z.object({postActions:t.z.array(it).optional(),pipelines:t.z.array(t.z.object({name:t.z.string(),data:t.z.object({})})).optional(),tracking:t.z.union([D,t.z.array(D)]).optional()}).optional(),error:t.z.object({code:nt,message:t.z.string().optional(),icon:t.z.string().optional(),position:t.z.enum(["top","bottom"]).optional(),fields:t.z.array(t.z.object({name:t.z.string(),type:C,value:t.z.any(),error:t.z.string()})).optional()}).optional(),isFinal:t.z.boolean().optional()}),rt=t.z.object({id:t.z.string().length(24).nonempty(),organizationId:t.z.string().uuid().nonempty(),updatedAt:t.z.string().datetime().nonempty(),stages:t.z.array(t.z.object({id:t.z.string().nonempty(),name:t.z.string().nonempty()}))}),bt=t.z.object({status:t.z.enum(["ok","error"]),step:at,flow:rt}),yt=t.z.enum(["track"]);var x=class{constructor(o){p(this,"baseURL");p(this,"headers");p(this,"flowId");p(this,"tracking");p(this,"RETRIES",[0,3e3]);let e=(0,G.merge)({},L,z.parse(o));this.flowId=e.flowId,this.baseURL=e.baseUrl,this.headers=new Headers({"Content-Type":"application/json","X-Onlive-Organization-Id":e.organizationId,"X-Lang":e.lang}),e.tracking?.enabled&&(this.tracking=new S(e.organizationId,e.flowId,e.tracking,!!e.devMode))}delay(o){return new Promise(e=>setTimeout(e,o))}async request(o,e={}){let n=null;try{return await this.executeRequest(o,e)}catch(i){n=i instanceof Error?i:new Error(String(i))}for(let i of this.RETRIES)try{return i>0&&await this.delay(i),await this.executeRequest(o,e)}catch(r){n=r instanceof Error?r:new Error(String(r))}throw n??new Error("Request failed")}async executeRequest(o,e){let n=await fetch(`${this.baseURL}/${o}`,{...e,headers:this.headers});if(!n?.ok)throw new Error(`HTTP error! status: ${n?.status||"unknown"}`);return n.json()}async firstStep(o={}){this.tracking?.analyzeRequest({},o);let e=this.tracking?this.tracking?.preferences():(0,M.browserPreferences)(),n=await this.request(`flow/${this.flowId}/first-step`,{method:"POST",body:JSON.stringify(k.parse({...o,state:{preferences:e,...o.state}}))});return this.tracking?.analyzeResponse({},n),n}async getStep(o,e={}){this.tracking?.analyzeRequest({stepId:o},e);let n=this.tracking?.preferences(),i=await this.request(`flow/${this.flowId}/steps/${P.parse(o)}`,{method:"POST",body:JSON.stringify(k.parse({...e,state:{preferences:n,...e.state}}))});return this.tracking?.analyzeResponse({stepId:o},i),i}async nextStep(o,e={}){this.tracking?.analyzeRequest(o,e);let{currentStepId:n,actionId:i}=F.parse(o),r=await this.request(`flow/${this.flowId}/steps/${n}/action/${i}`,{method:"POST",body:JSON.stringify(k.parse(e))});return this.tracking?.analyzeResponse(o,r),r}},st=x;0&&(module.exports={FlowClient});
1
+ /*! @onlive.ai/flow-client v0.1.271 | © 2026 Onlive.ai */
2
+ "use strict";var k=Object.defineProperty;var G=Object.getOwnPropertyDescriptor;var V=Object.getOwnPropertyNames;var q=Object.prototype.hasOwnProperty;var $=(r,o)=>{for(var e in o)k(r,e,{get:o[e],enumerable:!0})},B=(r,o,e,n)=>{if(o&&typeof o=="object"||typeof o=="function")for(let i of V(o))!q.call(r,i)&&i!==e&&k(r,i,{get:()=>o[i],enumerable:!(n=G(o,i))||n.enumerable});return r};var K=r=>B(k({},"__esModule",{value:!0}),r);var st={};$(st,{FlowClient:()=>T,default:()=>rt});module.exports=K(st);var C=require("@onlive.ai/common-121/utils/browser-preferences.js"),M=require("@onlive.ai/common-121/utils/merge.js");var w=require("@onlive.ai/common-121/utils/browser-preferences.js"),j=require("@onlive.ai/common-121/utils/merge.js"),m=require("@onlive.ai/tracker/session"),I=require("@onlive.ai/tracker/tracker");var s=require("zod"),d="flow_form",O="onlive-analytics-event",u=s.z.object({enabled:s.z.boolean().default(!1).optional(),conditions:s.z.custom().optional(),data:s.z.custom().optional(),removeExtraneousValues:s.z.boolean().default(!0).optional(),allowBotTraffic:s.z.boolean().default(!1).optional(),adapters:s.z.array(s.z.string()).default([]).optional(),apiUrl:s.z.string().url().optional(),emitters:s.z.object({windowEvent:s.z.boolean().optional(),dataLayer:s.z.boolean().optional(),windowPostMessage:s.z.boolean().optional()}).optional()});var _=class r{static DEFAULT_TRACK_SEND_OPTIONS={keepalive:!0};taskSuccessMappers={create_i_event_registration:o=>({task_name:"ievent_registration",task_data:this.getRecord(o.fields)})};options;tracker;eventListeners=[];constructor(o,e,n,i){this.options=u.parse(n),this.tracker=new I.Tracker({apiUrl:this.options.apiUrl||"",conditions:this.options.conditions,removeExtraneousValues:this.options.removeExtraneousValues,allowBotTraffic:this.options.allowBotTraffic,adapters:this.options.adapters,dryRun:i}),this.tracker.setBase((0,j.merge)({},{organization_id:o,page_url:window.location.href,page_referrer:document.referrer,origin_medium:"web",guest_id:m.Session.id,interaction_id:m.Session.interactionId,extra:{flow_id:e}},this.options.data)),window.addEventListener(O,({detail:a})=>a?.event&&a?.data&&this.emit(a.event,a.data))}getTracker(){return this.tracker}preferences(){return{...(0,w.browserPreferences)(),interactionId:m.Session.interactionId,guestId:m.Session.id}}analyzeRequest(o,e){"currentStepId"in o&&(o.actionId&&this.track("element_click",{element_label:o.actionId,element_type:"button",form_name:Object.keys(e.fields||{}).length?d:void 0}),e.fields&&Object.keys(e.fields).length&&this.track("form_submit",{form_name:d,form_data:e.fields}))}analyzeResponse(o,e){let n=this.getTrackingEntries(e.step.result?.tracking),i={};n.forEach(a=>{let{trackingAction:l,...c}=a;(!l||l==="SET_BASE_DATA")&&(delete c.eventName,delete c.eventData,Object.assign(i,c))}),this.tracker.setBase({form_name:d,step_name:e.step.id,step_number:e.step.number,step_initial:!("currentStepId"in o)||void 0,step_final:e.step.isFinal,...i}),"currentStepId"in o&&(e.step.result?.pipelines&&e.step.result.pipelines.forEach(a=>{let l=this.mapTaskSuccessPipeline({name:a.name,data:this.getRecord(a.data)});this.track("task_success",{task_name:l.task_name,task_data:l.task_data})}),e.step.error&&this.track("form_error",{form_error:e.step.error.code})),n.forEach(a=>{let{trackingAction:l,eventName:c,eventData:U}=a;l==="EMIT_EVENT"&&typeof c=="string"&&c&&this.send(c,this.getRecord(U))}),this.track("impression",{impression_type:"step"})}track(o,e){this.tracker.send(o,e,r.DEFAULT_TRACK_SEND_OPTIONS)}send(o,e){this.track(o,e)}setData(o){this.tracker.setBase(o)}onEvent(o){this.eventListeners.push(o)}emit(o,e){this.eventListeners.forEach(n=>n({event:o,data:e}))}mapTaskSuccessPipeline(o){let e=this.taskSuccessMappers[o.name];if(!e)return{task_name:this.normalizeTaskName(o.name),task_data:o.data};let n=e(o.data);return{...n,task_name:this.normalizeTaskName(n.task_name)}}normalizeTaskName(o){return o.replace(/_v4$/,"")}getRecord(o){return!o||typeof o!="object"||Array.isArray(o)?{}:o}getTrackingEntries(o){if(Array.isArray(o))return o.map(n=>this.getRecord(n)).filter(n=>Object.keys(n).length>0);let e=this.getRecord(o);return Object.keys(e).length>0?[e]:[]}},S=_;var f=require("@onlive.ai/calendar"),h=require("@onlive.ai/calendar/client/client.types.js"),t=require("zod");var D=(n=>(n.DARK="DARK",n.FOLLOW_SYSTEM="FOLLOW_SYSTEM",n.LIGHT="LIGHT",n))(D||{}),R={tracking:{removeExtraneousValues:!0,apiUrl:"https://srvless.onlive.site/tracking",data:{widget_type:"OnliveAppFlow"}}},L=t.z.string().nonempty(),P=t.z.object({baseUrl:t.z.string().url().nonempty(),flowId:t.z.string().length(24).nonempty(),organizationId:t.z.string().uuid().nonempty(),lang:t.z.string().length(2).nonempty(),tracking:u.optional(),devMode:t.z.boolean().default(!1).optional()}),v=t.z.object({state:t.z.record(t.z.string(),t.z.any()).optional(),fields:t.z.record(t.z.string(),t.z.any()).optional()}),z=t.z.object({currentStepId:t.z.string().nonempty(),actionId:t.z.string().nonempty()}),F=t.z.enum(["text","boolean","number","first_name","last_name","name","email","phone","mobile_phone","date","time","datetime","password","url","color","object","void","location","availability"]),W=t.z.object({name:t.z.string().optional(),value:t.z.string().optional(),icon:t.z.string().optional(),type:t.z.enum(["url","email","phone"]).optional()}),Y=t.z.object({lat:t.z.number().min(-90).max(90),lng:t.z.number().min(-180).max(180),meta:t.z.record(t.z.string(),t.z.any()).optional(),properties:t.z.record(t.z.string(),W).optional()}),H=t.z.object({datetime:t.z.string().datetime(),meta:t.z.record(t.z.string(),t.z.any()).optional()}),y=t.z.union([t.z.string(),t.z.number(),t.z.boolean(),Y,H]),g=t.z.object({content:t.z.object({icon:t.z.string().optional(),url:t.z.string().url().optional(),width:t.z.string().optional(),height:t.z.string().optional(),scale:t.z.number().optional()}).optional(),background:t.z.string().optional(),glyph:t.z.object({color:t.z.string().optional(),url:t.z.string().url().optional(),icon:t.z.string().optional()}).optional(),borderColor:t.z.string().optional(),scale:t.z.number().optional()}),b=t.z.custom(r=>typeof r=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(r),{message:"Date must be in 'YYYY-MM-DD' format"}),p=t.z.object({text:t.z.string().optional(),icon:t.z.string().optional()}),E=t.z.object({fieldName:t.z.string().nonempty(),value:y.optional(),operator:t.z.enum(["exists","equals","not-equals","contains","not-contains","greater-than","less-than"]).optional()}),J=t.z.object({and:t.z.array(E).optional(),or:t.z.array(E).optional()}),N=t.z.array(t.z.union([E,J])),Z=t.z.object({src:t.z.string().url(),preload:t.z.boolean().optional(),name:t.z.string().nonempty(),function:t.z.string().nonempty(),params:t.z.array(t.z.record(t.z.string(),t.z.any())).optional()}),X=t.z.object({name:t.z.enum(["organization_call","close_panel","retry_first_step","retry_next_step","organization_chat"]),params:t.z.record(t.z.string(),t.z.any()).optional()}),x=t.z.object({id:t.z.string().nonempty(),type:t.z.enum(["submit","navigate","link","back","dispatcher","script"]),label:t.z.string().nonempty(),variant:t.z.enum(["primary","secondary","success","danger","warning","info"]),outline:t.z.boolean().optional(),position:t.z.enum(["top","bottom"]).optional(),url:t.z.string().url().optional(),target:t.z.enum(["_self","_blank","_parent","_top"]).optional(),loadingBehavior:t.z.enum(["none","spinner","disabled"]).optional(),prefix:p.optional(),suffix:p.optional(),caption:t.z.string().optional(),scripts:Z.array().optional(),events:X.array().optional()}),Q=t.z.object({message:t.z.string().optional(),icon:t.z.string().optional(),position:t.z.enum(["top","bottom"]).optional(),kind:t.z.enum(["initial-loading","step-loading","step-validation","field-loading"]).optional(),actions:t.z.array(x).optional()}),tt=t.z.object({stepId:t.z.string().nonempty(),name:t.z.string().nonempty(),behavior:t.z.enum(["append","replace"]),state:t.z.record(t.z.string(),t.z.any()).optional()}),ot=t.z.object({name:t.z.string().nonempty(),label:t.z.string().optional(),description:t.z.string().optional(),value:t.z.union([y,t.z.array(y)]).optional(),type:F,component:t.z.enum(["input","phone_input","textarea","select","radio","checkbox","switch","rating","carousel","grid","button","label","map","calendar","stripe_payment"]).optional(),disabled:t.z.boolean().optional(),readonly:t.z.boolean().optional(),multiple:t.z.boolean().optional(),placeholder:t.z.string().optional(),options:t.z.array(t.z.object({id:t.z.string().optional(),label:t.z.string().nonempty(),value:y.optional(),image:t.z.string().url().optional(),description:t.z.string().optional(),disabled:t.z.boolean().optional(),attributes:t.z.record(t.z.string(),t.z.any()).optional(),actions:t.z.array(x).optional(),dependsOn:N.optional()})).optional(),required:t.z.boolean().optional(),configuration:t.z.object({generic:t.z.object({attributes:t.z.record(t.z.string(),t.z.any()).optional(),error:t.z.object({loading:Q.optional(),validation:t.z.object({icon:t.z.string().optional(),showOn:t.z.enum(["input","blur"]).optional()}).optional()})}).optional(),input:t.z.object({min:t.z.union([t.z.number(),t.z.string()]).optional(),max:t.z.union([t.z.number(),t.z.string()]).optional(),step:t.z.number().optional(),pattern:t.z.string().refine(r=>{try{return new RegExp(r),!0}catch{return!1}},"Invalid regex pattern").optional(),minLength:t.z.number().optional(),maxLength:t.z.number().optional(),exactLength:t.z.number().optional(),prefix:t.z.object({default:p.optional(),success:p.optional(),error:p.optional()}).optional(),suffix:t.z.object({default:p.optional(),success:p.optional(),error:p.optional()}).optional(),clearable:t.z.boolean().optional(),floatingLabel:t.z.boolean().optional()}).optional(),phoneInput:t.z.object({includePrefixValue:t.z.boolean().optional(),showFlag:t.z.boolean().optional(),showCode:t.z.boolean().optional(),prefixLabel:t.z.string().optional(),lockedPrefix:t.z.boolean().optional(),countries:t.z.array(t.z.string()).optional(),defaultPrefix:t.z.string().optional(),autoDetectCountry:t.z.boolean().optional()}).optional(),textarea:t.z.object({minLength:t.z.number().optional(),maxLength:t.z.number().optional(),exactLength:t.z.number().optional(),rows:t.z.number().optional()}).optional(),checkbox:t.z.object({layout:t.z.enum(["horizontal","vertical"])}).optional(),rating:t.z.object({icons:t.z.array(t.z.string()).optional(),iconMode:t.z.enum(["individual","unified"]).optional(),colors:t.z.array(t.z.string()).optional(),colorMode:t.z.enum(["unified","individual"]).optional(),color:t.z.string().optional(),precision:t.z.number().optional(),labels:t.z.object({start:t.z.string().optional(),end:t.z.string().optional(),position:t.z.enum(["top","bottom"]).optional()}).optional()}).optional(),carousel:t.z.object({loop:t.z.boolean().optional(),mouseDragging:t.z.boolean().optional(),itemsPerPage:t.z.object({small:t.z.number(),medium:t.z.number().optional(),large:t.z.number().optional()}).optional(),itemsPerMove:t.z.object({small:t.z.number(),medium:t.z.number().optional(),large:t.z.number().optional()}).optional(),showArrows:t.z.boolean().optional(),showDots:t.z.boolean().optional(),autoplay:t.z.boolean().optional(),autoplaySpeed:t.z.number().optional(),showcaseMode:t.z.boolean().optional(),clickableItems:t.z.object({actionId:t.z.string()}).optional(),labels:t.z.object({position:t.z.enum(["top","bottom","nav-top","nav-bottom","static-top","static-bottom"]).optional(),button:t.z.object({label:t.z.string(),actionId:t.z.string()}).optional()}).optional()}).optional(),grid:t.z.object({search:t.z.object({enabled:t.z.boolean().optional(),value:t.z.string().optional(),button:t.z.object({label:t.z.string().optional()}).optional(),placeholder:t.z.string().optional(),noResultsText:t.z.string().optional(),clearable:t.z.boolean().optional()}).optional(),itemsPerRow:t.z.object({small:t.z.number(),medium:t.z.number().optional(),large:t.z.number().optional()}).optional(),itemsPerPage:t.z.object({small:t.z.number(),medium:t.z.number().optional(),large:t.z.number().optional()}).optional(),clickableItems:t.z.object({actionId:t.z.string()}).optional()}).optional(),map:t.z.object({apiKey:t.z.string().optional(),mapId:t.z.string().optional(),region:t.z.string().length(2).optional(),colorScheme:t.z.nativeEnum(D).optional(),center:t.z.object({lat:t.z.number().min(-90).max(90),lng:t.z.number().min(-180).max(180)}).optional(),showMap:t.z.enum(["always","on-search","never"]).optional(),zoom:t.z.object({initial:t.z.number().optional(),focus:t.z.number().optional(),max:t.z.number().optional(),min:t.z.number().optional()}).optional(),controls:t.z.object({fullscreen:t.z.boolean().optional(),mapType:t.z.boolean().optional(),zoom:t.z.boolean().optional(),rotate:t.z.boolean().optional(),scale:t.z.boolean().optional(),streetView:t.z.boolean().optional()}).optional(),initialLocations:t.z.number().optional(),maxLocations:t.z.number().optional(),distanceUnit:t.z.enum(["km","mi"]).optional(),distanceFormat:t.z.enum(["short","long"]).optional(),distanceDecimals:t.z.number().optional(),options:t.z.object({show:t.z.enum(["always","on-search","never"]).optional(),component:t.z.enum(["list-button","list-radio","carousel"]).optional(),searchLabel:t.z.string().optional(),detailsLabel:t.z.string().optional()}).optional(),search:t.z.object({enabled:t.z.boolean().optional(),value:t.z.string().optional(),button:t.z.object({label:t.z.string().optional(),position:t.z.enum(["inside","outside"]).optional()}).optional(),placeholder:t.z.string().optional(),noResultsText:t.z.string().optional(),autofocus:t.z.boolean().optional(),autocomplete:t.z.boolean().optional(),clearable:t.z.boolean().optional(),mode:t.z.enum(["address","postcode"]).default("postcode").optional(),locationButton:t.z.object({icon:t.z.string().optional(),position:t.z.enum(["left","right"]).optional()}).optional(),prefix:t.z.object({default:p.optional()}).optional(),suffix:t.z.object({default:p.optional()}).optional()}).optional(),distanceRange:t.z.object({initial:t.z.number().optional(),min:t.z.number().optional(),max:t.z.number().optional(),step:t.z.number().optional()}).optional(),mapRegion:t.z.object({strokeColor:t.z.string().optional(),fillColor:t.z.string().optional(),fillOpacity:t.z.number().optional()}).optional(),locationPin:g.optional(),markerPin:t.z.object({default:g.optional(),hover:g.optional(),selected:g.optional()}).optional(),infoWindow:t.z.object({button:t.z.object({label:t.z.string(),action:t.z.string()}).optional(),directionsLabel:t.z.string().optional()}).optional(),ordering:t.z.object({orderBy:t.z.enum(["distance","title","id"]).optional(),orderDir:t.z.enum(["asc","desc"]).optional(),preferences:t.z.array(t.z.object({ids:t.z.string().array(),filters:t.z.object({postcodes:t.z.string().array().optional()}).optional()}))}).optional(),clickableItems:t.z.object({actionId:t.z.string()}).optional(),forcePolyfills:t.z.boolean().optional()}).optional(),calendar:t.z.object({current:t.z.object({month:t.z.number().min(0).max(11).optional(),year:t.z.number().optional()}).optional(),range:t.z.object({min:b.optional(),max:b.optional(),enabled:t.z.array(b).optional(),disabled:t.z.array(b).optional()}).optional(),time:t.z.object({label:t.z.string().optional(),format:t.z.enum(["12h","24h"]).optional(),component:t.z.enum(["carousel","list"]).optional()}).optional(),api:t.z.object({version:t.z.string().optional(),url:t.z.string().url().nonempty(),organizationId:t.z.string().nonempty(),availability:t.z.object({filters:f.GetAvailabilityFilters,options:f.GetAvailabilityOptions.optional()}).optional(),slots:t.z.object({filters:h.GetSlotFilters,options:h.GetSlotOptions.optional()}).optional()}).optional()}).optional(),stripe:t.z.object({publishableKey:t.z.string().nonempty(),mode:t.z.enum(["payment","setup"]).default("payment").optional(),createPaymentIntentEndpoint:t.z.string().url().optional(),createSetupIntentEndpoint:t.z.string().url().optional(),clientSecret:t.z.string().optional(),paymentIntentId:t.z.string().optional(),setupIntentId:t.z.string().optional(),amount:t.z.number().optional(),currency:t.z.string().default("usd").optional(),connectedAccountId:t.z.string().optional(),returnUrl:t.z.string().url().optional(),headers:t.z.record(t.z.string(),t.z.string()).optional(),paymentIntentParams:t.z.record(t.z.string(),t.z.unknown()).optional(),locale:t.z.string().optional(),appearance:t.z.object({theme:t.z.enum(["stripe","night","flat"]).optional(),variables:t.z.record(t.z.string(),t.z.string()).optional(),rules:t.z.record(t.z.string(),t.z.record(t.z.string(),t.z.string())).optional()}).optional(),layout:t.z.enum(["tabs","accordion","auto"]).optional(),elementOptions:t.z.record(t.z.string(),t.z.unknown()).optional(),terms:t.z.object({card:t.z.enum(["auto","always","never"]).optional()}).optional(),customTermsText:t.z.string().optional(),openDialogButtonText:t.z.string().optional(),confirmButtonText:t.z.string().optional(),cancelButtonText:t.z.string().optional(),authorizedText:t.z.string().optional(),successMessage:t.z.string().optional(),setupSuccessMessage:t.z.string().optional(),infoText:t.z.string().optional(),amountLabel:t.z.string().optional(),loadingElementText:t.z.string().optional(),showAmount:t.z.boolean().optional(),dialogTitle:t.z.string().optional(),autoOpenDialog:t.z.boolean().optional(),actionId:t.z.string().optional()}).optional()}).optional(),remoteOptions:tt.optional(),dependsOn:N.optional(),dependentBehavior:t.z.enum(["hidden","disabled"]).optional(),customError:t.z.object({required:t.z.string().optional(),invalid:t.z.string().optional(),minLength:t.z.string().optional(),maxLength:t.z.string().optional(),minValue:t.z.string().optional(),maxValue:t.z.string().optional(),mismatch:t.z.string().optional()}).optional()}),et=t.z.enum(["INVALID_DATA","INVALID_ACTION","STEP_NOT_FOUND","UNKNOWN_ERROR","APPOINTMENT_INVALID_DATA","APPOINTMENT_BUSY_SLOT","APPOINTMENT_OUT_OF_DATE","APPOINTMENT_UNKNOWN_ERROR","LEAD_INVALID_DATA","LEAD_UNKNOWN_ERROR","CONTENT_INVALID_DATA","CONTENT_UNKNOWN_ERROR","CONTACT_INVALID_DATA","CONTACT_UNKNOWN_ERROR","LOST_OPPORTUNITY_INVALID_DATA","LOST_OPPORTUNITY_UNKNOWN_ERROR"]),nt=t.z.object({type:t.z.enum(["redirect"]),params:t.z.record(t.z.string(),t.z.any()).optional()}),A=t.z.object({trackingAction:t.z.enum(["EMIT_EVENT","SET_BASE_DATA"]).optional(),eventName:t.z.string().optional(),eventData:t.z.record(t.z.string(),t.z.any()).optional()}).catchall(t.z.any()),it=t.z.object({id:t.z.string().nonempty(),number:t.z.number().optional(),title:t.z.string().optional(),description:t.z.string().optional(),stageId:t.z.string().optional(),state:t.z.record(t.z.string(),t.z.any()).optional(),fields:t.z.array(ot).optional(),actions:t.z.array(x).optional(),result:t.z.object({postActions:t.z.array(nt).optional(),pipelines:t.z.array(t.z.object({name:t.z.string(),data:t.z.object({})})).optional(),tracking:t.z.union([A,t.z.array(A)]).optional()}).optional(),error:t.z.object({code:et,message:t.z.string().optional(),icon:t.z.string().optional(),position:t.z.enum(["top","bottom"]).optional(),fields:t.z.array(t.z.object({name:t.z.string(),type:F,value:t.z.any(),error:t.z.string()})).optional()}).optional(),isFinal:t.z.boolean().optional()}),at=t.z.object({id:t.z.string().length(24).nonempty(),organizationId:t.z.string().uuid().nonempty(),updatedAt:t.z.string().datetime().nonempty(),stages:t.z.array(t.z.object({id:t.z.string().nonempty(),name:t.z.string().nonempty()}))}),ut=t.z.object({status:t.z.enum(["ok","error"]),step:it,flow:at}),gt=t.z.enum(["track"]);var T=class{baseURL;headers;flowId;tracking;constructor(o){let e=(0,M.merge)({},R,P.parse(o));this.flowId=e.flowId,this.baseURL=e.baseUrl,this.headers=new Headers({"Content-Type":"application/json","X-Onlive-Organization-Id":e.organizationId,"X-Lang":e.lang}),e.tracking?.enabled&&(this.tracking=new S(e.organizationId,e.flowId,e.tracking,!!e.devMode))}RETRIES=[0,3e3];delay(o){return new Promise(e=>setTimeout(e,o))}async request(o,e={}){let n=null;try{return await this.executeRequest(o,e)}catch(i){n=i instanceof Error?i:new Error(String(i))}for(let i of this.RETRIES)try{return i>0&&await this.delay(i),await this.executeRequest(o,e)}catch(a){n=a instanceof Error?a:new Error(String(a))}throw n??new Error("Request failed")}async executeRequest(o,e){let n=await fetch(`${this.baseURL}/${o}`,{...e,headers:this.headers});if(!n?.ok)throw new Error(`HTTP error! status: ${n?.status||"unknown"}`);return n.json()}async firstStep(o={}){this.tracking?.analyzeRequest({},o);let e=this.tracking?this.tracking?.preferences():(0,C.browserPreferences)(),n=await this.request(`flow/${this.flowId}/first-step`,{method:"POST",body:JSON.stringify(v.parse({...o,state:{preferences:e,...o.state}}))});return this.tracking?.analyzeResponse({},n),n}async getStep(o,e={}){this.tracking?.analyzeRequest({stepId:o},e);let n=this.tracking?.preferences(),i=await this.request(`flow/${this.flowId}/steps/${L.parse(o)}`,{method:"POST",body:JSON.stringify(v.parse({...e,state:{preferences:n,...e.state}}))});return this.tracking?.analyzeResponse({stepId:o},i),i}async fetchData(o){return this.request(`flow/${this.flowId}/data`,{method:"POST",body:JSON.stringify(o)})}async nextStep(o,e={}){this.tracking?.analyzeRequest(o,e);let{currentStepId:n,actionId:i}=z.parse(o),a=await this.request(`flow/${this.flowId}/steps/${n}/action/${i}`,{method:"POST",body:JSON.stringify(v.parse(e))});return this.tracking?.analyzeResponse(o,a),a}},rt=T;0&&(module.exports={FlowClient});
@@ -88,6 +88,13 @@ declare class FlowClient {
88
88
  * @returns {Promise<FlowContext>} A promise that resolves to the updated flow context containing the next step information.
89
89
  * @throws {Error} If the action is invalid or the next step cannot be determined.
90
90
  */
91
+ fetchData(payload: {
92
+ stepId: string;
93
+ name: string;
94
+ state?: Record<string, unknown>;
95
+ }): Promise<{
96
+ data: unknown;
97
+ }>;
91
98
  nextStep(trigger: GetStepTrigger, options?: GetStepOptions): Promise<FlowContext>;
92
99
  }
93
100
 
@@ -88,6 +88,13 @@ declare class FlowClient {
88
88
  * @returns {Promise<FlowContext>} A promise that resolves to the updated flow context containing the next step information.
89
89
  * @throws {Error} If the action is invalid or the next step cannot be determined.
90
90
  */
91
+ fetchData(payload: {
92
+ stepId: string;
93
+ name: string;
94
+ state?: Record<string, unknown>;
95
+ }): Promise<{
96
+ data: unknown;
97
+ }>;
91
98
  nextStep(trigger: GetStepTrigger, options?: GetStepOptions): Promise<FlowContext>;
92
99
  }
93
100
 
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/flow-client v0.1.238 | © 2026 Onlive.ai */
2
- var L=Object.defineProperty;var P=(s,o,e)=>o in s?L(s,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[o]=e;var p=(s,o,e)=>P(s,typeof o!="symbol"?o+"":o,e);import{browserPreferences as ot}from"@onlive.ai/common-121/utils/browser-preferences.js";import{merge as et}from"@onlive.ai/common-121/utils/merge.js";import{browserPreferences as z}from"@onlive.ai/common-121/utils/browser-preferences.js";import{merge as F}from"@onlive.ai/common-121/utils/merge.js";import{Session as u}from"@onlive.ai/tracker/session";import{Tracker as C}from"@onlive.ai/tracker/tracker";import{z as r}from"zod";var d="flow_form",_="onlive-analytics-event",g=r.object({enabled:r.boolean().default(!1).optional(),conditions:r.custom().optional(),data:r.custom().optional(),removeExtraneousValues:r.boolean().default(!0).optional(),allowBotTraffic:r.boolean().default(!1).optional(),adapters:r.array(r.string()).default([]).optional(),apiUrl:r.string().url().optional(),emitters:r.object({windowEvent:r.boolean().optional(),dataLayer:r.boolean().optional(),windowPostMessage:r.boolean().optional()}).optional()});var v=class{constructor(o,e,n,a){p(this,"taskSuccessMappers",{create_i_event_registration:o=>({task_name:"ievent_registration",task_data:this.getRecord(o.fields)})});p(this,"options");p(this,"tracker");p(this,"eventListeners",[]);this.options=g.parse(n),this.tracker=new C({apiUrl:this.options.apiUrl||"",conditions:this.options.conditions,removeExtraneousValues:this.options.removeExtraneousValues,allowBotTraffic:this.options.allowBotTraffic,adapters:this.options.adapters,dryRun:a}),this.tracker.setBase(F({},{organization_id:o,page_url:window.location.href,page_referrer:document.referrer,origin_medium:"web",guest_id:u.id,interaction_id:u.interactionId,extra:{flow_id:e}},this.options.data)),window.addEventListener(_,({detail:i})=>i?.event&&i?.data&&this.emit(i.event,i.data))}getTracker(){return this.tracker}preferences(){return{...z(),interactionId:u.interactionId,guestId:u.id}}analyzeRequest(o,e){"currentStepId"in o&&(o.actionId&&this.tracker.send("element_click",{element_label:o.actionId,element_type:"button",form_name:Object.keys(e.fields||{}).length?d:void 0}),e.fields&&Object.keys(e.fields).length&&this.tracker.send("form_submit",{form_name:d,form_data:e.fields}))}analyzeResponse(o,e){let n=this.getTrackingEntries(e.step.result?.tracking),a={};n.forEach(i=>{let{trackingAction:c,...m}=i;(!c||c==="SET_BASE_DATA")&&(delete m.eventName,delete m.eventData,Object.assign(a,m))}),this.tracker.setBase({form_name:d,step_name:e.step.id,step_number:e.step.number,step_initial:!("currentStepId"in o)||void 0,step_final:e.step.isFinal,...a}),"currentStepId"in o&&(e.step.result?.pipelines&&e.step.result.pipelines.forEach(i=>{let c=this.mapTaskSuccessPipeline({name:i.name,data:this.getRecord(i.data)});this.tracker.send("task_success",{task_name:c.task_name,task_data:c.task_data})}),e.step.error&&this.tracker.send("form_error",{form_error:e.step.error.code})),n.forEach(i=>{let{trackingAction:c,eventName:m,eventData:R}=i;c==="EMIT_EVENT"&&typeof m=="string"&&m&&this.send(m,this.getRecord(R))}),this.tracker.send("impression",{impression_type:"step"})}send(o,e){this.tracker.send(o,e)}setData(o){this.tracker.setBase(o)}onEvent(o){this.eventListeners.push(o)}emit(o,e){this.eventListeners.forEach(n=>n({event:o,data:e}))}mapTaskSuccessPipeline(o){let e=this.taskSuccessMappers[o.name];if(!e)return{task_name:this.normalizeTaskName(o.name),task_data:o.data};let n=e(o.data);return{...n,task_name:this.normalizeTaskName(n.task_name)}}normalizeTaskName(o){return o.replace(/_v4$/,"")}getRecord(o){return!o||typeof o!="object"||Array.isArray(o)?{}:o}getTrackingEntries(o){if(Array.isArray(o))return o.map(n=>this.getRecord(n)).filter(n=>Object.keys(n).length>0);let e=this.getRecord(o);return Object.keys(e).length>0?[e]:[]}},E=v;import{GetAvailabilityFilters as M,GetAvailabilityOptions as G}from"@onlive.ai/calendar";import{GetSlotFilters as V,GetSlotOptions as U}from"@onlive.ai/calendar/client/client.types.js";import{z as t}from"zod";var w=(n=>(n.DARK="DARK",n.FOLLOW_SYSTEM="FOLLOW_SYSTEM",n.LIGHT="LIGHT",n))(w||{}),I={tracking:{removeExtraneousValues:!0,apiUrl:"https://srvless.onlive.site/tracking",data:{widget_type:"OnliveAppFlow"}}},A=t.string().nonempty(),S=t.object({baseUrl:t.string().url().nonempty(),flowId:t.string().length(24).nonempty(),organizationId:t.string().uuid().nonempty(),lang:t.string().length(2).nonempty(),tracking:g.optional(),devMode:t.boolean().default(!1).optional()}),h=t.object({state:t.record(t.string(),t.any()).optional(),fields:t.record(t.string(),t.any()).optional()}),N=t.object({currentStepId:t.string().nonempty(),actionId:t.string().nonempty()}),D=t.enum(["text","boolean","number","first_name","last_name","name","email","phone","mobile_phone","date","time","datetime","password","url","color","object","void","location","availability"]),q=t.object({name:t.string().optional(),value:t.string().optional(),icon:t.string().optional(),type:t.enum(["url","email","phone"]).optional()}),$=t.object({lat:t.number().min(-90).max(90),lng:t.number().min(-180).max(180),meta:t.record(t.string(),t.any()).optional(),properties:t.record(t.string(),q).optional()}),B=t.object({datetime:t.string().datetime(),meta:t.record(t.string(),t.any()).optional()}),f=t.union([t.string(),t.number(),t.boolean(),$,B]),b=t.object({content:t.object({icon:t.string().optional(),url:t.string().url().optional(),width:t.string().optional(),height:t.string().optional(),scale:t.number().optional()}).optional(),background:t.string().optional(),glyph:t.object({color:t.string().optional(),url:t.string().url().optional(),icon:t.string().optional()}).optional(),borderColor:t.string().optional(),scale:t.number().optional()}),y=t.custom(s=>typeof s=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(s),{message:"Date must be in 'YYYY-MM-DD' format"}),l=t.object({text:t.string().optional(),icon:t.string().optional()}),T=t.object({fieldName:t.string().nonempty(),value:f.optional(),operator:t.enum(["exists","equals","not-equals","contains","not-contains","greater-than","less-than"]).optional()}),W=t.object({and:t.array(T).optional(),or:t.array(T).optional()}),O=t.array(t.union([T,W])),Y=t.object({src:t.string().url(),preload:t.boolean().optional(),name:t.string().nonempty(),function:t.string().nonempty(),params:t.array(t.record(t.string(),t.any())).optional()}),K=t.object({name:t.enum(["organization_call","close_panel","retry_first_step","retry_next_step","organization_chat"]),params:t.record(t.string(),t.any()).optional()}),k=t.object({id:t.string().nonempty(),type:t.enum(["submit","navigate","link","back","dispatcher","script"]),label:t.string().nonempty(),variant:t.enum(["primary","secondary","success","danger","warning","info"]),position:t.enum(["top","bottom"]).optional(),url:t.string().url().optional(),target:t.enum(["_self","_blank","_parent","_top"]).optional(),loadingBehavior:t.enum(["none","spinner","disabled"]).optional(),prefix:l.optional(),suffix:l.optional(),caption:t.string().optional(),scripts:Y.array().optional(),events:K.array().optional()}),H=t.object({message:t.string().optional(),icon:t.string().optional(),position:t.enum(["top","bottom"]).optional(),kind:t.enum(["initial-loading","step-loading","step-validation","field-loading"]).optional(),actions:t.array(k).optional()}),J=t.object({name:t.string().nonempty(),label:t.string().optional(),description:t.string().optional(),value:t.union([f,t.array(f)]).optional(),type:D,component:t.enum(["input","phone_input","textarea","select","radio","checkbox","switch","rating","carousel","grid","button","label","map","calendar","stripe_payment"]).optional(),disabled:t.boolean().optional(),readonly:t.boolean().optional(),multiple:t.boolean().optional(),placeholder:t.string().optional(),options:t.array(t.object({id:t.string().optional(),label:t.string().nonempty(),value:f.optional(),image:t.string().url().optional(),description:t.string().optional(),disabled:t.boolean().optional(),attributes:t.record(t.string(),t.any()).optional(),actions:t.array(k).optional(),dependsOn:O.optional()})).optional(),required:t.boolean().optional(),configuration:t.object({generic:t.object({attributes:t.record(t.string(),t.any()).optional(),error:t.object({loading:H.optional(),validation:t.object({icon:t.string().optional(),showOn:t.enum(["input","blur"]).optional()}).optional()})}).optional(),input:t.object({min:t.union([t.number(),t.string()]).optional(),max:t.union([t.number(),t.string()]).optional(),step:t.number().optional(),pattern:t.string().refine(s=>{try{return new RegExp(s),!0}catch{return!1}},"Invalid regex pattern").optional(),minLength:t.number().optional(),maxLength:t.number().optional(),exactLength:t.number().optional(),prefix:t.object({default:l.optional(),success:l.optional(),error:l.optional()}).optional(),suffix:t.object({default:l.optional(),success:l.optional(),error:l.optional()}).optional(),clearable:t.boolean().optional(),floatingLabel:t.boolean().optional()}).optional(),phoneInput:t.object({includePrefixValue:t.boolean().optional(),showFlag:t.boolean().optional(),showCode:t.boolean().optional(),prefixLabel:t.string().optional(),lockedPrefix:t.boolean().optional(),countries:t.array(t.string()).optional(),defaultPrefix:t.string().optional(),autoDetectCountry:t.boolean().optional()}).optional(),textarea:t.object({minLength:t.number().optional(),maxLength:t.number().optional(),exactLength:t.number().optional(),rows:t.number().optional()}).optional(),checkbox:t.object({layout:t.enum(["horizontal","vertical"])}).optional(),rating:t.object({icons:t.array(t.string()).optional(),color:t.string().optional(),precision:t.number().optional()}).optional(),carousel:t.object({loop:t.boolean().optional(),mouseDragging:t.boolean().optional(),itemsPerPage:t.object({small:t.number(),medium:t.number().optional(),large:t.number().optional()}).optional(),itemsPerMove:t.object({small:t.number(),medium:t.number().optional(),large:t.number().optional()}).optional(),showArrows:t.boolean().optional(),showDots:t.boolean().optional(),autoplay:t.boolean().optional(),autoplaySpeed:t.number().optional(),showcaseMode:t.boolean().optional(),clickableItems:t.object({actionId:t.string()}).optional(),labels:t.object({position:t.enum(["top","bottom","nav-top","nav-bottom","static-top","static-bottom"]).optional(),button:t.object({label:t.string(),actionId:t.string()}).optional()}).optional()}).optional(),grid:t.object({search:t.object({enabled:t.boolean().optional(),value:t.string().optional(),button:t.object({label:t.string().optional()}).optional(),placeholder:t.string().optional(),noResultsText:t.string().optional(),clearable:t.boolean().optional()}).optional(),itemsPerRow:t.object({small:t.number(),medium:t.number().optional(),large:t.number().optional()}).optional(),itemsPerPage:t.object({small:t.number(),medium:t.number().optional(),large:t.number().optional()}).optional(),clickableItems:t.object({actionId:t.string()}).optional()}).optional(),map:t.object({apiKey:t.string().optional(),mapId:t.string().optional(),region:t.string().length(2).optional(),colorScheme:t.nativeEnum(w).optional(),center:t.object({lat:t.number().min(-90).max(90),lng:t.number().min(-180).max(180)}).optional(),showMap:t.enum(["always","on-search","never"]).optional(),zoom:t.object({initial:t.number().optional(),focus:t.number().optional(),max:t.number().optional(),min:t.number().optional()}).optional(),controls:t.object({fullscreen:t.boolean().optional(),mapType:t.boolean().optional(),zoom:t.boolean().optional(),rotate:t.boolean().optional(),scale:t.boolean().optional(),streetView:t.boolean().optional()}).optional(),initialLocations:t.number().optional(),maxLocations:t.number().optional(),distanceUnit:t.enum(["km","mi"]).optional(),distanceFormat:t.enum(["short","long"]).optional(),distanceDecimals:t.number().optional(),options:t.object({show:t.enum(["always","on-search","never"]).optional(),component:t.enum(["list-button","list-radio","carousel"]).optional(),searchLabel:t.string().optional(),detailsLabel:t.string().optional()}).optional(),search:t.object({enabled:t.boolean().optional(),value:t.string().optional(),button:t.object({label:t.string().optional(),position:t.enum(["inside","outside"]).optional()}).optional(),placeholder:t.string().optional(),noResultsText:t.string().optional(),autofocus:t.boolean().optional(),autocomplete:t.boolean().optional(),clearable:t.boolean().optional(),mode:t.enum(["address","postcode"]).default("postcode").optional(),locationButton:t.object({icon:t.string().optional(),position:t.enum(["left","right"]).optional()}).optional(),prefix:t.object({default:l.optional()}).optional(),suffix:t.object({default:l.optional()}).optional()}).optional(),distanceRange:t.object({initial:t.number().optional(),min:t.number().optional(),max:t.number().optional(),step:t.number().optional()}).optional(),mapRegion:t.object({strokeColor:t.string().optional(),fillColor:t.string().optional(),fillOpacity:t.number().optional()}).optional(),locationPin:b.optional(),markerPin:t.object({default:b.optional(),hover:b.optional(),selected:b.optional()}).optional(),infoWindow:t.object({button:t.object({label:t.string(),action:t.string()}).optional(),directionsLabel:t.string().optional()}).optional(),ordering:t.object({orderBy:t.enum(["distance","title","id"]).optional(),orderDir:t.enum(["asc","desc"]).optional(),preferences:t.array(t.object({ids:t.string().array(),filters:t.object({postcodes:t.string().array().optional()}).optional()}))}).optional(),clickableItems:t.object({actionId:t.string()}).optional(),forcePolyfills:t.boolean().optional()}).optional(),calendar:t.object({current:t.object({month:t.number().min(0).max(11).optional(),year:t.number().optional()}).optional(),range:t.object({min:y.optional(),max:y.optional(),enabled:t.array(y).optional(),disabled:t.array(y).optional()}).optional(),time:t.object({label:t.string().optional(),format:t.enum(["12h","24h"]).optional(),component:t.enum(["carousel","list"]).optional()}).optional(),api:t.object({version:t.string().optional(),url:t.string().url().nonempty(),organizationId:t.string().nonempty(),availability:t.object({filters:M,options:G.optional()}).optional(),slots:t.object({filters:V,options:U.optional()}).optional()}).optional()}).optional(),stripe:t.object({publishableKey:t.string().nonempty(),mode:t.enum(["payment","setup"]).default("payment").optional(),createPaymentIntentEndpoint:t.string().url().optional(),createSetupIntentEndpoint:t.string().url().optional(),clientSecret:t.string().optional(),paymentIntentId:t.string().optional(),setupIntentId:t.string().optional(),amount:t.number().optional(),currency:t.string().default("usd").optional(),connectedAccountId:t.string().optional(),returnUrl:t.string().url().optional(),headers:t.record(t.string(),t.string()).optional(),paymentIntentParams:t.record(t.string(),t.unknown()).optional(),locale:t.string().optional(),appearance:t.object({theme:t.enum(["stripe","night","flat"]).optional(),variables:t.record(t.string(),t.string()).optional(),rules:t.record(t.string(),t.record(t.string(),t.string())).optional()}).optional(),layout:t.enum(["tabs","accordion","auto"]).optional(),elementOptions:t.record(t.string(),t.unknown()).optional(),terms:t.object({card:t.enum(["auto","always","never"]).optional()}).optional(),customTermsText:t.string().optional(),openDialogButtonText:t.string().optional(),confirmButtonText:t.string().optional(),cancelButtonText:t.string().optional(),authorizedText:t.string().optional(),successMessage:t.string().optional(),setupSuccessMessage:t.string().optional(),infoText:t.string().optional(),amountLabel:t.string().optional(),loadingElementText:t.string().optional(),showAmount:t.boolean().optional(),dialogTitle:t.string().optional(),autoOpenDialog:t.boolean().optional(),actionId:t.string().optional()}).optional()}).optional(),dependsOn:O.optional(),dependentBehavior:t.enum(["hidden","disabled"]).optional(),customError:t.object({required:t.string().optional(),invalid:t.string().optional(),minLength:t.string().optional(),maxLength:t.string().optional(),minValue:t.string().optional(),maxValue:t.string().optional(),mismatch:t.string().optional()}).optional()}),Z=t.enum(["INVALID_DATA","INVALID_ACTION","STEP_NOT_FOUND","UNKNOWN_ERROR","APPOINTMENT_INVALID_DATA","APPOINTMENT_BUSY_SLOT","APPOINTMENT_OUT_OF_DATE","APPOINTMENT_UNKNOWN_ERROR","LEAD_INVALID_DATA","LEAD_UNKNOWN_ERROR","CONTENT_INVALID_DATA","CONTENT_UNKNOWN_ERROR","CONTACT_INVALID_DATA","CONTACT_UNKNOWN_ERROR","LOST_OPPORTUNITY_INVALID_DATA","LOST_OPPORTUNITY_UNKNOWN_ERROR"]),X=t.object({type:t.enum(["redirect"]),params:t.record(t.string(),t.any()).optional()}),j=t.object({trackingAction:t.enum(["EMIT_EVENT","SET_BASE_DATA"]).optional(),eventName:t.string().optional(),eventData:t.record(t.string(),t.any()).optional()}).catchall(t.any()),Q=t.object({id:t.string().nonempty(),number:t.number().optional(),title:t.string().optional(),description:t.string().optional(),stageId:t.string().optional(),state:t.record(t.string(),t.any()).optional(),fields:t.array(J).optional(),actions:t.array(k).optional(),result:t.object({postActions:t.array(X).optional(),pipelines:t.array(t.object({name:t.string(),data:t.object({})})).optional(),tracking:t.union([j,t.array(j)]).optional()}).optional(),error:t.object({code:Z,message:t.string().optional(),icon:t.string().optional(),position:t.enum(["top","bottom"]).optional(),fields:t.array(t.object({name:t.string(),type:D,value:t.any(),error:t.string()})).optional()}).optional(),isFinal:t.boolean().optional()}),tt=t.object({id:t.string().length(24).nonempty(),organizationId:t.string().uuid().nonempty(),updatedAt:t.string().datetime().nonempty(),stages:t.array(t.object({id:t.string().nonempty(),name:t.string().nonempty()}))}),ft=t.object({status:t.enum(["ok","error"]),step:Q,flow:tt}),ht=t.enum(["track"]);var x=class{constructor(o){p(this,"baseURL");p(this,"headers");p(this,"flowId");p(this,"tracking");p(this,"RETRIES",[0,3e3]);let e=et({},I,S.parse(o));this.flowId=e.flowId,this.baseURL=e.baseUrl,this.headers=new Headers({"Content-Type":"application/json","X-Onlive-Organization-Id":e.organizationId,"X-Lang":e.lang}),e.tracking?.enabled&&(this.tracking=new E(e.organizationId,e.flowId,e.tracking,!!e.devMode))}delay(o){return new Promise(e=>setTimeout(e,o))}async request(o,e={}){let n=null;try{return await this.executeRequest(o,e)}catch(a){n=a instanceof Error?a:new Error(String(a))}for(let a of this.RETRIES)try{return a>0&&await this.delay(a),await this.executeRequest(o,e)}catch(i){n=i instanceof Error?i:new Error(String(i))}throw n??new Error("Request failed")}async executeRequest(o,e){let n=await fetch(`${this.baseURL}/${o}`,{...e,headers:this.headers});if(!n?.ok)throw new Error(`HTTP error! status: ${n?.status||"unknown"}`);return n.json()}async firstStep(o={}){this.tracking?.analyzeRequest({},o);let e=this.tracking?this.tracking?.preferences():ot(),n=await this.request(`flow/${this.flowId}/first-step`,{method:"POST",body:JSON.stringify(h.parse({...o,state:{preferences:e,...o.state}}))});return this.tracking?.analyzeResponse({},n),n}async getStep(o,e={}){this.tracking?.analyzeRequest({stepId:o},e);let n=this.tracking?.preferences(),a=await this.request(`flow/${this.flowId}/steps/${A.parse(o)}`,{method:"POST",body:JSON.stringify(h.parse({...e,state:{preferences:n,...e.state}}))});return this.tracking?.analyzeResponse({stepId:o},a),a}async nextStep(o,e={}){this.tracking?.analyzeRequest(o,e);let{currentStepId:n,actionId:a}=N.parse(o),i=await this.request(`flow/${this.flowId}/steps/${n}/action/${a}`,{method:"POST",body:JSON.stringify(h.parse(e))});return this.tracking?.analyzeResponse(o,i),i}},Et=x;export{x as FlowClient,Et as default};
1
+ /*! @onlive.ai/flow-client v0.1.271 | © 2026 Onlive.ai */
2
+ import{browserPreferences as Q}from"@onlive.ai/common-121/utils/browser-preferences.js";import{merge as tt}from"@onlive.ai/common-121/utils/merge.js";import{browserPreferences as R}from"@onlive.ai/common-121/utils/browser-preferences.js";import{merge as L}from"@onlive.ai/common-121/utils/merge.js";import{Session as u}from"@onlive.ai/tracker/session";import{Tracker as P}from"@onlive.ai/tracker/tracker";import{z as r}from"zod";var m="flow_form",_="onlive-analytics-event",d=r.object({enabled:r.boolean().default(!1).optional(),conditions:r.custom().optional(),data:r.custom().optional(),removeExtraneousValues:r.boolean().default(!0).optional(),allowBotTraffic:r.boolean().default(!1).optional(),adapters:r.array(r.string()).default([]).optional(),apiUrl:r.string().url().optional(),emitters:r.object({windowEvent:r.boolean().optional(),dataLayer:r.boolean().optional(),windowPostMessage:r.boolean().optional()}).optional()});var h=class p{static DEFAULT_TRACK_SEND_OPTIONS={keepalive:!0};taskSuccessMappers={create_i_event_registration:o=>({task_name:"ievent_registration",task_data:this.getRecord(o.fields)})};options;tracker;eventListeners=[];constructor(o,e,n,a){this.options=d.parse(n),this.tracker=new P({apiUrl:this.options.apiUrl||"",conditions:this.options.conditions,removeExtraneousValues:this.options.removeExtraneousValues,allowBotTraffic:this.options.allowBotTraffic,adapters:this.options.adapters,dryRun:a}),this.tracker.setBase(L({},{organization_id:o,page_url:window.location.href,page_referrer:document.referrer,origin_medium:"web",guest_id:u.id,interaction_id:u.interactionId,extra:{flow_id:e}},this.options.data)),window.addEventListener(_,({detail:i})=>i?.event&&i?.data&&this.emit(i.event,i.data))}getTracker(){return this.tracker}preferences(){return{...R(),interactionId:u.interactionId,guestId:u.id}}analyzeRequest(o,e){"currentStepId"in o&&(o.actionId&&this.track("element_click",{element_label:o.actionId,element_type:"button",form_name:Object.keys(e.fields||{}).length?m:void 0}),e.fields&&Object.keys(e.fields).length&&this.track("form_submit",{form_name:m,form_data:e.fields}))}analyzeResponse(o,e){let n=this.getTrackingEntries(e.step.result?.tracking),a={};n.forEach(i=>{let{trackingAction:l,...c}=i;(!l||l==="SET_BASE_DATA")&&(delete c.eventName,delete c.eventData,Object.assign(a,c))}),this.tracker.setBase({form_name:m,step_name:e.step.id,step_number:e.step.number,step_initial:!("currentStepId"in o)||void 0,step_final:e.step.isFinal,...a}),"currentStepId"in o&&(e.step.result?.pipelines&&e.step.result.pipelines.forEach(i=>{let l=this.mapTaskSuccessPipeline({name:i.name,data:this.getRecord(i.data)});this.track("task_success",{task_name:l.task_name,task_data:l.task_data})}),e.step.error&&this.track("form_error",{form_error:e.step.error.code})),n.forEach(i=>{let{trackingAction:l,eventName:c,eventData:D}=i;l==="EMIT_EVENT"&&typeof c=="string"&&c&&this.send(c,this.getRecord(D))}),this.track("impression",{impression_type:"step"})}track(o,e){this.tracker.send(o,e,p.DEFAULT_TRACK_SEND_OPTIONS)}send(o,e){this.track(o,e)}setData(o){this.tracker.setBase(o)}onEvent(o){this.eventListeners.push(o)}emit(o,e){this.eventListeners.forEach(n=>n({event:o,data:e}))}mapTaskSuccessPipeline(o){let e=this.taskSuccessMappers[o.name];if(!e)return{task_name:this.normalizeTaskName(o.name),task_data:o.data};let n=e(o.data);return{...n,task_name:this.normalizeTaskName(n.task_name)}}normalizeTaskName(o){return o.replace(/_v4$/,"")}getRecord(o){return!o||typeof o!="object"||Array.isArray(o)?{}:o}getTrackingEntries(o){if(Array.isArray(o))return o.map(n=>this.getRecord(n)).filter(n=>Object.keys(n).length>0);let e=this.getRecord(o);return Object.keys(e).length>0?[e]:[]}},E=h;import{GetAvailabilityFilters as z,GetAvailabilityOptions as F}from"@onlive.ai/calendar";import{GetSlotFilters as C,GetSlotOptions as M}from"@onlive.ai/calendar/client/client.types.js";import{z as t}from"zod";var w=(n=>(n.DARK="DARK",n.FOLLOW_SYSTEM="FOLLOW_SYSTEM",n.LIGHT="LIGHT",n))(w||{}),j={tracking:{removeExtraneousValues:!0,apiUrl:"https://srvless.onlive.site/tracking",data:{widget_type:"OnliveAppFlow"}}},I=t.string().nonempty(),S=t.object({baseUrl:t.string().url().nonempty(),flowId:t.string().length(24).nonempty(),organizationId:t.string().uuid().nonempty(),lang:t.string().length(2).nonempty(),tracking:d.optional(),devMode:t.boolean().default(!1).optional()}),f=t.object({state:t.record(t.string(),t.any()).optional(),fields:t.record(t.string(),t.any()).optional()}),N=t.object({currentStepId:t.string().nonempty(),actionId:t.string().nonempty()}),A=t.enum(["text","boolean","number","first_name","last_name","name","email","phone","mobile_phone","date","time","datetime","password","url","color","object","void","location","availability"]),U=t.object({name:t.string().optional(),value:t.string().optional(),icon:t.string().optional(),type:t.enum(["url","email","phone"]).optional()}),G=t.object({lat:t.number().min(-90).max(90),lng:t.number().min(-180).max(180),meta:t.record(t.string(),t.any()).optional(),properties:t.record(t.string(),U).optional()}),V=t.object({datetime:t.string().datetime(),meta:t.record(t.string(),t.any()).optional()}),y=t.union([t.string(),t.number(),t.boolean(),G,V]),g=t.object({content:t.object({icon:t.string().optional(),url:t.string().url().optional(),width:t.string().optional(),height:t.string().optional(),scale:t.number().optional()}).optional(),background:t.string().optional(),glyph:t.object({color:t.string().optional(),url:t.string().url().optional(),icon:t.string().optional()}).optional(),borderColor:t.string().optional(),scale:t.number().optional()}),b=t.custom(p=>typeof p=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(p),{message:"Date must be in 'YYYY-MM-DD' format"}),s=t.object({text:t.string().optional(),icon:t.string().optional()}),v=t.object({fieldName:t.string().nonempty(),value:y.optional(),operator:t.enum(["exists","equals","not-equals","contains","not-contains","greater-than","less-than"]).optional()}),q=t.object({and:t.array(v).optional(),or:t.array(v).optional()}),x=t.array(t.union([v,q])),$=t.object({src:t.string().url(),preload:t.boolean().optional(),name:t.string().nonempty(),function:t.string().nonempty(),params:t.array(t.record(t.string(),t.any())).optional()}),B=t.object({name:t.enum(["organization_call","close_panel","retry_first_step","retry_next_step","organization_chat"]),params:t.record(t.string(),t.any()).optional()}),T=t.object({id:t.string().nonempty(),type:t.enum(["submit","navigate","link","back","dispatcher","script"]),label:t.string().nonempty(),variant:t.enum(["primary","secondary","success","danger","warning","info"]),outline:t.boolean().optional(),position:t.enum(["top","bottom"]).optional(),url:t.string().url().optional(),target:t.enum(["_self","_blank","_parent","_top"]).optional(),loadingBehavior:t.enum(["none","spinner","disabled"]).optional(),prefix:s.optional(),suffix:s.optional(),caption:t.string().optional(),scripts:$.array().optional(),events:B.array().optional()}),K=t.object({message:t.string().optional(),icon:t.string().optional(),position:t.enum(["top","bottom"]).optional(),kind:t.enum(["initial-loading","step-loading","step-validation","field-loading"]).optional(),actions:t.array(T).optional()}),W=t.object({stepId:t.string().nonempty(),name:t.string().nonempty(),behavior:t.enum(["append","replace"]),state:t.record(t.string(),t.any()).optional()}),Y=t.object({name:t.string().nonempty(),label:t.string().optional(),description:t.string().optional(),value:t.union([y,t.array(y)]).optional(),type:A,component:t.enum(["input","phone_input","textarea","select","radio","checkbox","switch","rating","carousel","grid","button","label","map","calendar","stripe_payment"]).optional(),disabled:t.boolean().optional(),readonly:t.boolean().optional(),multiple:t.boolean().optional(),placeholder:t.string().optional(),options:t.array(t.object({id:t.string().optional(),label:t.string().nonempty(),value:y.optional(),image:t.string().url().optional(),description:t.string().optional(),disabled:t.boolean().optional(),attributes:t.record(t.string(),t.any()).optional(),actions:t.array(T).optional(),dependsOn:x.optional()})).optional(),required:t.boolean().optional(),configuration:t.object({generic:t.object({attributes:t.record(t.string(),t.any()).optional(),error:t.object({loading:K.optional(),validation:t.object({icon:t.string().optional(),showOn:t.enum(["input","blur"]).optional()}).optional()})}).optional(),input:t.object({min:t.union([t.number(),t.string()]).optional(),max:t.union([t.number(),t.string()]).optional(),step:t.number().optional(),pattern:t.string().refine(p=>{try{return new RegExp(p),!0}catch{return!1}},"Invalid regex pattern").optional(),minLength:t.number().optional(),maxLength:t.number().optional(),exactLength:t.number().optional(),prefix:t.object({default:s.optional(),success:s.optional(),error:s.optional()}).optional(),suffix:t.object({default:s.optional(),success:s.optional(),error:s.optional()}).optional(),clearable:t.boolean().optional(),floatingLabel:t.boolean().optional()}).optional(),phoneInput:t.object({includePrefixValue:t.boolean().optional(),showFlag:t.boolean().optional(),showCode:t.boolean().optional(),prefixLabel:t.string().optional(),lockedPrefix:t.boolean().optional(),countries:t.array(t.string()).optional(),defaultPrefix:t.string().optional(),autoDetectCountry:t.boolean().optional()}).optional(),textarea:t.object({minLength:t.number().optional(),maxLength:t.number().optional(),exactLength:t.number().optional(),rows:t.number().optional()}).optional(),checkbox:t.object({layout:t.enum(["horizontal","vertical"])}).optional(),rating:t.object({icons:t.array(t.string()).optional(),iconMode:t.enum(["individual","unified"]).optional(),colors:t.array(t.string()).optional(),colorMode:t.enum(["unified","individual"]).optional(),color:t.string().optional(),precision:t.number().optional(),labels:t.object({start:t.string().optional(),end:t.string().optional(),position:t.enum(["top","bottom"]).optional()}).optional()}).optional(),carousel:t.object({loop:t.boolean().optional(),mouseDragging:t.boolean().optional(),itemsPerPage:t.object({small:t.number(),medium:t.number().optional(),large:t.number().optional()}).optional(),itemsPerMove:t.object({small:t.number(),medium:t.number().optional(),large:t.number().optional()}).optional(),showArrows:t.boolean().optional(),showDots:t.boolean().optional(),autoplay:t.boolean().optional(),autoplaySpeed:t.number().optional(),showcaseMode:t.boolean().optional(),clickableItems:t.object({actionId:t.string()}).optional(),labels:t.object({position:t.enum(["top","bottom","nav-top","nav-bottom","static-top","static-bottom"]).optional(),button:t.object({label:t.string(),actionId:t.string()}).optional()}).optional()}).optional(),grid:t.object({search:t.object({enabled:t.boolean().optional(),value:t.string().optional(),button:t.object({label:t.string().optional()}).optional(),placeholder:t.string().optional(),noResultsText:t.string().optional(),clearable:t.boolean().optional()}).optional(),itemsPerRow:t.object({small:t.number(),medium:t.number().optional(),large:t.number().optional()}).optional(),itemsPerPage:t.object({small:t.number(),medium:t.number().optional(),large:t.number().optional()}).optional(),clickableItems:t.object({actionId:t.string()}).optional()}).optional(),map:t.object({apiKey:t.string().optional(),mapId:t.string().optional(),region:t.string().length(2).optional(),colorScheme:t.nativeEnum(w).optional(),center:t.object({lat:t.number().min(-90).max(90),lng:t.number().min(-180).max(180)}).optional(),showMap:t.enum(["always","on-search","never"]).optional(),zoom:t.object({initial:t.number().optional(),focus:t.number().optional(),max:t.number().optional(),min:t.number().optional()}).optional(),controls:t.object({fullscreen:t.boolean().optional(),mapType:t.boolean().optional(),zoom:t.boolean().optional(),rotate:t.boolean().optional(),scale:t.boolean().optional(),streetView:t.boolean().optional()}).optional(),initialLocations:t.number().optional(),maxLocations:t.number().optional(),distanceUnit:t.enum(["km","mi"]).optional(),distanceFormat:t.enum(["short","long"]).optional(),distanceDecimals:t.number().optional(),options:t.object({show:t.enum(["always","on-search","never"]).optional(),component:t.enum(["list-button","list-radio","carousel"]).optional(),searchLabel:t.string().optional(),detailsLabel:t.string().optional()}).optional(),search:t.object({enabled:t.boolean().optional(),value:t.string().optional(),button:t.object({label:t.string().optional(),position:t.enum(["inside","outside"]).optional()}).optional(),placeholder:t.string().optional(),noResultsText:t.string().optional(),autofocus:t.boolean().optional(),autocomplete:t.boolean().optional(),clearable:t.boolean().optional(),mode:t.enum(["address","postcode"]).default("postcode").optional(),locationButton:t.object({icon:t.string().optional(),position:t.enum(["left","right"]).optional()}).optional(),prefix:t.object({default:s.optional()}).optional(),suffix:t.object({default:s.optional()}).optional()}).optional(),distanceRange:t.object({initial:t.number().optional(),min:t.number().optional(),max:t.number().optional(),step:t.number().optional()}).optional(),mapRegion:t.object({strokeColor:t.string().optional(),fillColor:t.string().optional(),fillOpacity:t.number().optional()}).optional(),locationPin:g.optional(),markerPin:t.object({default:g.optional(),hover:g.optional(),selected:g.optional()}).optional(),infoWindow:t.object({button:t.object({label:t.string(),action:t.string()}).optional(),directionsLabel:t.string().optional()}).optional(),ordering:t.object({orderBy:t.enum(["distance","title","id"]).optional(),orderDir:t.enum(["asc","desc"]).optional(),preferences:t.array(t.object({ids:t.string().array(),filters:t.object({postcodes:t.string().array().optional()}).optional()}))}).optional(),clickableItems:t.object({actionId:t.string()}).optional(),forcePolyfills:t.boolean().optional()}).optional(),calendar:t.object({current:t.object({month:t.number().min(0).max(11).optional(),year:t.number().optional()}).optional(),range:t.object({min:b.optional(),max:b.optional(),enabled:t.array(b).optional(),disabled:t.array(b).optional()}).optional(),time:t.object({label:t.string().optional(),format:t.enum(["12h","24h"]).optional(),component:t.enum(["carousel","list"]).optional()}).optional(),api:t.object({version:t.string().optional(),url:t.string().url().nonempty(),organizationId:t.string().nonempty(),availability:t.object({filters:z,options:F.optional()}).optional(),slots:t.object({filters:C,options:M.optional()}).optional()}).optional()}).optional(),stripe:t.object({publishableKey:t.string().nonempty(),mode:t.enum(["payment","setup"]).default("payment").optional(),createPaymentIntentEndpoint:t.string().url().optional(),createSetupIntentEndpoint:t.string().url().optional(),clientSecret:t.string().optional(),paymentIntentId:t.string().optional(),setupIntentId:t.string().optional(),amount:t.number().optional(),currency:t.string().default("usd").optional(),connectedAccountId:t.string().optional(),returnUrl:t.string().url().optional(),headers:t.record(t.string(),t.string()).optional(),paymentIntentParams:t.record(t.string(),t.unknown()).optional(),locale:t.string().optional(),appearance:t.object({theme:t.enum(["stripe","night","flat"]).optional(),variables:t.record(t.string(),t.string()).optional(),rules:t.record(t.string(),t.record(t.string(),t.string())).optional()}).optional(),layout:t.enum(["tabs","accordion","auto"]).optional(),elementOptions:t.record(t.string(),t.unknown()).optional(),terms:t.object({card:t.enum(["auto","always","never"]).optional()}).optional(),customTermsText:t.string().optional(),openDialogButtonText:t.string().optional(),confirmButtonText:t.string().optional(),cancelButtonText:t.string().optional(),authorizedText:t.string().optional(),successMessage:t.string().optional(),setupSuccessMessage:t.string().optional(),infoText:t.string().optional(),amountLabel:t.string().optional(),loadingElementText:t.string().optional(),showAmount:t.boolean().optional(),dialogTitle:t.string().optional(),autoOpenDialog:t.boolean().optional(),actionId:t.string().optional()}).optional()}).optional(),remoteOptions:W.optional(),dependsOn:x.optional(),dependentBehavior:t.enum(["hidden","disabled"]).optional(),customError:t.object({required:t.string().optional(),invalid:t.string().optional(),minLength:t.string().optional(),maxLength:t.string().optional(),minValue:t.string().optional(),maxValue:t.string().optional(),mismatch:t.string().optional()}).optional()}),H=t.enum(["INVALID_DATA","INVALID_ACTION","STEP_NOT_FOUND","UNKNOWN_ERROR","APPOINTMENT_INVALID_DATA","APPOINTMENT_BUSY_SLOT","APPOINTMENT_OUT_OF_DATE","APPOINTMENT_UNKNOWN_ERROR","LEAD_INVALID_DATA","LEAD_UNKNOWN_ERROR","CONTENT_INVALID_DATA","CONTENT_UNKNOWN_ERROR","CONTACT_INVALID_DATA","CONTACT_UNKNOWN_ERROR","LOST_OPPORTUNITY_INVALID_DATA","LOST_OPPORTUNITY_UNKNOWN_ERROR"]),J=t.object({type:t.enum(["redirect"]),params:t.record(t.string(),t.any()).optional()}),O=t.object({trackingAction:t.enum(["EMIT_EVENT","SET_BASE_DATA"]).optional(),eventName:t.string().optional(),eventData:t.record(t.string(),t.any()).optional()}).catchall(t.any()),Z=t.object({id:t.string().nonempty(),number:t.number().optional(),title:t.string().optional(),description:t.string().optional(),stageId:t.string().optional(),state:t.record(t.string(),t.any()).optional(),fields:t.array(Y).optional(),actions:t.array(T).optional(),result:t.object({postActions:t.array(J).optional(),pipelines:t.array(t.object({name:t.string(),data:t.object({})})).optional(),tracking:t.union([O,t.array(O)]).optional()}).optional(),error:t.object({code:H,message:t.string().optional(),icon:t.string().optional(),position:t.enum(["top","bottom"]).optional(),fields:t.array(t.object({name:t.string(),type:A,value:t.any(),error:t.string()})).optional()}).optional(),isFinal:t.boolean().optional()}),X=t.object({id:t.string().length(24).nonempty(),organizationId:t.string().uuid().nonempty(),updatedAt:t.string().datetime().nonempty(),stages:t.array(t.object({id:t.string().nonempty(),name:t.string().nonempty()}))}),ut=t.object({status:t.enum(["ok","error"]),step:Z,flow:X}),gt=t.enum(["track"]);var k=class{baseURL;headers;flowId;tracking;constructor(o){let e=tt({},j,S.parse(o));this.flowId=e.flowId,this.baseURL=e.baseUrl,this.headers=new Headers({"Content-Type":"application/json","X-Onlive-Organization-Id":e.organizationId,"X-Lang":e.lang}),e.tracking?.enabled&&(this.tracking=new E(e.organizationId,e.flowId,e.tracking,!!e.devMode))}RETRIES=[0,3e3];delay(o){return new Promise(e=>setTimeout(e,o))}async request(o,e={}){let n=null;try{return await this.executeRequest(o,e)}catch(a){n=a instanceof Error?a:new Error(String(a))}for(let a of this.RETRIES)try{return a>0&&await this.delay(a),await this.executeRequest(o,e)}catch(i){n=i instanceof Error?i:new Error(String(i))}throw n??new Error("Request failed")}async executeRequest(o,e){let n=await fetch(`${this.baseURL}/${o}`,{...e,headers:this.headers});if(!n?.ok)throw new Error(`HTTP error! status: ${n?.status||"unknown"}`);return n.json()}async firstStep(o={}){this.tracking?.analyzeRequest({},o);let e=this.tracking?this.tracking?.preferences():Q(),n=await this.request(`flow/${this.flowId}/first-step`,{method:"POST",body:JSON.stringify(f.parse({...o,state:{preferences:e,...o.state}}))});return this.tracking?.analyzeResponse({},n),n}async getStep(o,e={}){this.tracking?.analyzeRequest({stepId:o},e);let n=this.tracking?.preferences(),a=await this.request(`flow/${this.flowId}/steps/${I.parse(o)}`,{method:"POST",body:JSON.stringify(f.parse({...e,state:{preferences:n,...e.state}}))});return this.tracking?.analyzeResponse({stepId:o},a),a}async fetchData(o){return this.request(`flow/${this.flowId}/data`,{method:"POST",body:JSON.stringify(o)})}async nextStep(o,e={}){this.tracking?.analyzeRequest(o,e);let{currentStepId:n,actionId:a}=N.parse(o),i=await this.request(`flow/${this.flowId}/steps/${n}/action/${a}`,{method:"POST",body:JSON.stringify(f.parse(e))});return this.tracking?.analyzeResponse(o,i),i}},Tt=k;export{k as FlowClient,Tt as default};
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/flow-client v0.1.238 | © 2026 Onlive.ai */
2
- "use strict";var B=Object.defineProperty;var H=(s,o,n)=>o in s?B(s,o,{enumerable:!0,configurable:!0,writable:!0,value:n}):s[o]=n;var d=(s,o,n)=>H(s,typeof o!="symbol"?o+"":o,n);var q=require("@onlive.ai/common-121/utils/browser-preferences.js"),e=require("vitest"),u=require("zod");var V=require("@onlive.ai/common-121/utils/browser-preferences.js"),$=require("@onlive.ai/common-121/utils/merge.js");var A=require("@onlive.ai/common-121/utils/browser-preferences.js"),N=require("@onlive.ai/common-121/utils/merge.js"),f=require("@onlive.ai/tracker/session"),R=require("@onlive.ai/tracker/tracker");var c=require("zod"),y="flow_form",j="onlive-analytics-event",h=c.z.object({enabled:c.z.boolean().default(!1).optional(),conditions:c.z.custom().optional(),data:c.z.custom().optional(),removeExtraneousValues:c.z.boolean().default(!0).optional(),allowBotTraffic:c.z.boolean().default(!1).optional(),adapters:c.z.array(c.z.string()).default([]).optional(),apiUrl:c.z.string().url().optional(),emitters:c.z.object({windowEvent:c.z.boolean().optional(),dataLayer:c.z.boolean().optional(),windowPostMessage:c.z.boolean().optional()}).optional()});var I=class{constructor(o,n,a,r){d(this,"taskSuccessMappers",{create_i_event_registration:o=>({task_name:"ievent_registration",task_data:this.getRecord(o.fields)})});d(this,"options");d(this,"tracker");d(this,"eventListeners",[]);this.options=h.parse(a),this.tracker=new R.Tracker({apiUrl:this.options.apiUrl||"",conditions:this.options.conditions,removeExtraneousValues:this.options.removeExtraneousValues,allowBotTraffic:this.options.allowBotTraffic,adapters:this.options.adapters,dryRun:r}),this.tracker.setBase((0,N.merge)({},{organization_id:o,page_url:window.location.href,page_referrer:document.referrer,origin_medium:"web",guest_id:f.Session.id,interaction_id:f.Session.interactionId,extra:{flow_id:n}},this.options.data)),window.addEventListener(j,({detail:l})=>l?.event&&l?.data&&this.emit(l.event,l.data))}getTracker(){return this.tracker}preferences(){return{...(0,A.browserPreferences)(),interactionId:f.Session.interactionId,guestId:f.Session.id}}analyzeRequest(o,n){"currentStepId"in o&&(o.actionId&&this.tracker.send("element_click",{element_label:o.actionId,element_type:"button",form_name:Object.keys(n.fields||{}).length?y:void 0}),n.fields&&Object.keys(n.fields).length&&this.tracker.send("form_submit",{form_name:y,form_data:n.fields}))}analyzeResponse(o,n){let a=this.getTrackingEntries(n.step.result?.tracking),r={};a.forEach(l=>{let{trackingAction:i,...p}=l;(!i||i==="SET_BASE_DATA")&&(delete p.eventName,delete p.eventData,Object.assign(r,p))}),this.tracker.setBase({form_name:y,step_name:n.step.id,step_number:n.step.number,step_initial:!("currentStepId"in o)||void 0,step_final:n.step.isFinal,...r}),"currentStepId"in o&&(n.step.result?.pipelines&&n.step.result.pipelines.forEach(l=>{let i=this.mapTaskSuccessPipeline({name:l.name,data:this.getRecord(l.data)});this.tracker.send("task_success",{task_name:i.task_name,task_data:i.task_data})}),n.step.error&&this.tracker.send("form_error",{form_error:n.step.error.code})),a.forEach(l=>{let{trackingAction:i,eventName:p,eventData:b}=l;i==="EMIT_EVENT"&&typeof p=="string"&&p&&this.send(p,this.getRecord(b))}),this.tracker.send("impression",{impression_type:"step"})}send(o,n){this.tracker.send(o,n)}setData(o){this.tracker.setBase(o)}onEvent(o){this.eventListeners.push(o)}emit(o,n){this.eventListeners.forEach(a=>a({event:o,data:n}))}mapTaskSuccessPipeline(o){let n=this.taskSuccessMappers[o.name];if(!n)return{task_name:this.normalizeTaskName(o.name),task_data:o.data};let a=n(o.data);return{...a,task_name:this.normalizeTaskName(a.task_name)}}normalizeTaskName(o){return o.replace(/_v4$/,"")}getRecord(o){return!o||typeof o!="object"||Array.isArray(o)?{}:o}getTrackingEntries(o){if(Array.isArray(o))return o.map(a=>this.getRecord(a)).filter(a=>Object.keys(a).length>0);let n=this.getRecord(o);return Object.keys(n).length>0?[n]:[]}},P=I;var k=require("@onlive.ai/calendar"),x=require("@onlive.ai/calendar/client/client.types.js"),t=require("zod");var z=(a=>(a.DARK="DARK",a.FOLLOW_SYSTEM="FOLLOW_SYSTEM",a.LIGHT="LIGHT",a))(z||{}),C={tracking:{removeExtraneousValues:!0,apiUrl:"https://srvless.onlive.site/tracking",data:{widget_type:"OnliveAppFlow"}}},F=t.z.string().nonempty(),U=t.z.object({baseUrl:t.z.string().url().nonempty(),flowId:t.z.string().length(24).nonempty(),organizationId:t.z.string().uuid().nonempty(),lang:t.z.string().length(2).nonempty(),tracking:h.optional(),devMode:t.z.boolean().default(!1).optional()}),O=t.z.object({state:t.z.record(t.z.string(),t.z.any()).optional(),fields:t.z.record(t.z.string(),t.z.any()).optional()}),M=t.z.object({currentStepId:t.z.string().nonempty(),actionId:t.z.string().nonempty()}),G=t.z.enum(["text","boolean","number","first_name","last_name","name","email","phone","mobile_phone","date","time","datetime","password","url","color","object","void","location","availability"]),W=t.z.object({name:t.z.string().optional(),value:t.z.string().optional(),icon:t.z.string().optional(),type:t.z.enum(["url","email","phone"]).optional()}),K=t.z.object({lat:t.z.number().min(-90).max(90),lng:t.z.number().min(-180).max(180),meta:t.z.record(t.z.string(),t.z.any()).optional(),properties:t.z.record(t.z.string(),W).optional()}),Y=t.z.object({datetime:t.z.string().datetime(),meta:t.z.record(t.z.string(),t.z.any()).optional()}),T=t.z.union([t.z.string(),t.z.number(),t.z.boolean(),K,Y]),v=t.z.object({content:t.z.object({icon:t.z.string().optional(),url:t.z.string().url().optional(),width:t.z.string().optional(),height:t.z.string().optional(),scale:t.z.number().optional()}).optional(),background:t.z.string().optional(),glyph:t.z.object({color:t.z.string().optional(),url:t.z.string().url().optional(),icon:t.z.string().optional()}).optional(),borderColor:t.z.string().optional(),scale:t.z.number().optional()}),w=t.z.custom(s=>typeof s=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(s),{message:"Date must be in 'YYYY-MM-DD' format"}),m=t.z.object({text:t.z.string().optional(),icon:t.z.string().optional()}),E=t.z.object({fieldName:t.z.string().nonempty(),value:T.optional(),operator:t.z.enum(["exists","equals","not-equals","contains","not-contains","greater-than","less-than"]).optional()}),J=t.z.object({and:t.z.array(E).optional(),or:t.z.array(E).optional()}),D=t.z.array(t.z.union([E,J])),Z=t.z.object({src:t.z.string().url(),preload:t.z.boolean().optional(),name:t.z.string().nonempty(),function:t.z.string().nonempty(),params:t.z.array(t.z.record(t.z.string(),t.z.any())).optional()}),X=t.z.object({name:t.z.enum(["organization_call","close_panel","retry_first_step","retry_next_step","organization_chat"]),params:t.z.record(t.z.string(),t.z.any()).optional()}),_=t.z.object({id:t.z.string().nonempty(),type:t.z.enum(["submit","navigate","link","back","dispatcher","script"]),label:t.z.string().nonempty(),variant:t.z.enum(["primary","secondary","success","danger","warning","info"]),position:t.z.enum(["top","bottom"]).optional(),url:t.z.string().url().optional(),target:t.z.enum(["_self","_blank","_parent","_top"]).optional(),loadingBehavior:t.z.enum(["none","spinner","disabled"]).optional(),prefix:m.optional(),suffix:m.optional(),caption:t.z.string().optional(),scripts:Z.array().optional(),events:X.array().optional()}),Q=t.z.object({message:t.z.string().optional(),icon:t.z.string().optional(),position:t.z.enum(["top","bottom"]).optional(),kind:t.z.enum(["initial-loading","step-loading","step-validation","field-loading"]).optional(),actions:t.z.array(_).optional()}),tt=t.z.object({name:t.z.string().nonempty(),label:t.z.string().optional(),description:t.z.string().optional(),value:t.z.union([T,t.z.array(T)]).optional(),type:G,component:t.z.enum(["input","phone_input","textarea","select","radio","checkbox","switch","rating","carousel","grid","button","label","map","calendar","stripe_payment"]).optional(),disabled:t.z.boolean().optional(),readonly:t.z.boolean().optional(),multiple:t.z.boolean().optional(),placeholder:t.z.string().optional(),options:t.z.array(t.z.object({id:t.z.string().optional(),label:t.z.string().nonempty(),value:T.optional(),image:t.z.string().url().optional(),description:t.z.string().optional(),disabled:t.z.boolean().optional(),attributes:t.z.record(t.z.string(),t.z.any()).optional(),actions:t.z.array(_).optional(),dependsOn:D.optional()})).optional(),required:t.z.boolean().optional(),configuration:t.z.object({generic:t.z.object({attributes:t.z.record(t.z.string(),t.z.any()).optional(),error:t.z.object({loading:Q.optional(),validation:t.z.object({icon:t.z.string().optional(),showOn:t.z.enum(["input","blur"]).optional()}).optional()})}).optional(),input:t.z.object({min:t.z.union([t.z.number(),t.z.string()]).optional(),max:t.z.union([t.z.number(),t.z.string()]).optional(),step:t.z.number().optional(),pattern:t.z.string().refine(s=>{try{return new RegExp(s),!0}catch{return!1}},"Invalid regex pattern").optional(),minLength:t.z.number().optional(),maxLength:t.z.number().optional(),exactLength:t.z.number().optional(),prefix:t.z.object({default:m.optional(),success:m.optional(),error:m.optional()}).optional(),suffix:t.z.object({default:m.optional(),success:m.optional(),error:m.optional()}).optional(),clearable:t.z.boolean().optional(),floatingLabel:t.z.boolean().optional()}).optional(),phoneInput:t.z.object({includePrefixValue:t.z.boolean().optional(),showFlag:t.z.boolean().optional(),showCode:t.z.boolean().optional(),prefixLabel:t.z.string().optional(),lockedPrefix:t.z.boolean().optional(),countries:t.z.array(t.z.string()).optional(),defaultPrefix:t.z.string().optional(),autoDetectCountry:t.z.boolean().optional()}).optional(),textarea:t.z.object({minLength:t.z.number().optional(),maxLength:t.z.number().optional(),exactLength:t.z.number().optional(),rows:t.z.number().optional()}).optional(),checkbox:t.z.object({layout:t.z.enum(["horizontal","vertical"])}).optional(),rating:t.z.object({icons:t.z.array(t.z.string()).optional(),color:t.z.string().optional(),precision:t.z.number().optional()}).optional(),carousel:t.z.object({loop:t.z.boolean().optional(),mouseDragging:t.z.boolean().optional(),itemsPerPage:t.z.object({small:t.z.number(),medium:t.z.number().optional(),large:t.z.number().optional()}).optional(),itemsPerMove:t.z.object({small:t.z.number(),medium:t.z.number().optional(),large:t.z.number().optional()}).optional(),showArrows:t.z.boolean().optional(),showDots:t.z.boolean().optional(),autoplay:t.z.boolean().optional(),autoplaySpeed:t.z.number().optional(),showcaseMode:t.z.boolean().optional(),clickableItems:t.z.object({actionId:t.z.string()}).optional(),labels:t.z.object({position:t.z.enum(["top","bottom","nav-top","nav-bottom","static-top","static-bottom"]).optional(),button:t.z.object({label:t.z.string(),actionId:t.z.string()}).optional()}).optional()}).optional(),grid:t.z.object({search:t.z.object({enabled:t.z.boolean().optional(),value:t.z.string().optional(),button:t.z.object({label:t.z.string().optional()}).optional(),placeholder:t.z.string().optional(),noResultsText:t.z.string().optional(),clearable:t.z.boolean().optional()}).optional(),itemsPerRow:t.z.object({small:t.z.number(),medium:t.z.number().optional(),large:t.z.number().optional()}).optional(),itemsPerPage:t.z.object({small:t.z.number(),medium:t.z.number().optional(),large:t.z.number().optional()}).optional(),clickableItems:t.z.object({actionId:t.z.string()}).optional()}).optional(),map:t.z.object({apiKey:t.z.string().optional(),mapId:t.z.string().optional(),region:t.z.string().length(2).optional(),colorScheme:t.z.nativeEnum(z).optional(),center:t.z.object({lat:t.z.number().min(-90).max(90),lng:t.z.number().min(-180).max(180)}).optional(),showMap:t.z.enum(["always","on-search","never"]).optional(),zoom:t.z.object({initial:t.z.number().optional(),focus:t.z.number().optional(),max:t.z.number().optional(),min:t.z.number().optional()}).optional(),controls:t.z.object({fullscreen:t.z.boolean().optional(),mapType:t.z.boolean().optional(),zoom:t.z.boolean().optional(),rotate:t.z.boolean().optional(),scale:t.z.boolean().optional(),streetView:t.z.boolean().optional()}).optional(),initialLocations:t.z.number().optional(),maxLocations:t.z.number().optional(),distanceUnit:t.z.enum(["km","mi"]).optional(),distanceFormat:t.z.enum(["short","long"]).optional(),distanceDecimals:t.z.number().optional(),options:t.z.object({show:t.z.enum(["always","on-search","never"]).optional(),component:t.z.enum(["list-button","list-radio","carousel"]).optional(),searchLabel:t.z.string().optional(),detailsLabel:t.z.string().optional()}).optional(),search:t.z.object({enabled:t.z.boolean().optional(),value:t.z.string().optional(),button:t.z.object({label:t.z.string().optional(),position:t.z.enum(["inside","outside"]).optional()}).optional(),placeholder:t.z.string().optional(),noResultsText:t.z.string().optional(),autofocus:t.z.boolean().optional(),autocomplete:t.z.boolean().optional(),clearable:t.z.boolean().optional(),mode:t.z.enum(["address","postcode"]).default("postcode").optional(),locationButton:t.z.object({icon:t.z.string().optional(),position:t.z.enum(["left","right"]).optional()}).optional(),prefix:t.z.object({default:m.optional()}).optional(),suffix:t.z.object({default:m.optional()}).optional()}).optional(),distanceRange:t.z.object({initial:t.z.number().optional(),min:t.z.number().optional(),max:t.z.number().optional(),step:t.z.number().optional()}).optional(),mapRegion:t.z.object({strokeColor:t.z.string().optional(),fillColor:t.z.string().optional(),fillOpacity:t.z.number().optional()}).optional(),locationPin:v.optional(),markerPin:t.z.object({default:v.optional(),hover:v.optional(),selected:v.optional()}).optional(),infoWindow:t.z.object({button:t.z.object({label:t.z.string(),action:t.z.string()}).optional(),directionsLabel:t.z.string().optional()}).optional(),ordering:t.z.object({orderBy:t.z.enum(["distance","title","id"]).optional(),orderDir:t.z.enum(["asc","desc"]).optional(),preferences:t.z.array(t.z.object({ids:t.z.string().array(),filters:t.z.object({postcodes:t.z.string().array().optional()}).optional()}))}).optional(),clickableItems:t.z.object({actionId:t.z.string()}).optional(),forcePolyfills:t.z.boolean().optional()}).optional(),calendar:t.z.object({current:t.z.object({month:t.z.number().min(0).max(11).optional(),year:t.z.number().optional()}).optional(),range:t.z.object({min:w.optional(),max:w.optional(),enabled:t.z.array(w).optional(),disabled:t.z.array(w).optional()}).optional(),time:t.z.object({label:t.z.string().optional(),format:t.z.enum(["12h","24h"]).optional(),component:t.z.enum(["carousel","list"]).optional()}).optional(),api:t.z.object({version:t.z.string().optional(),url:t.z.string().url().nonempty(),organizationId:t.z.string().nonempty(),availability:t.z.object({filters:k.GetAvailabilityFilters,options:k.GetAvailabilityOptions.optional()}).optional(),slots:t.z.object({filters:x.GetSlotFilters,options:x.GetSlotOptions.optional()}).optional()}).optional()}).optional(),stripe:t.z.object({publishableKey:t.z.string().nonempty(),mode:t.z.enum(["payment","setup"]).default("payment").optional(),createPaymentIntentEndpoint:t.z.string().url().optional(),createSetupIntentEndpoint:t.z.string().url().optional(),clientSecret:t.z.string().optional(),paymentIntentId:t.z.string().optional(),setupIntentId:t.z.string().optional(),amount:t.z.number().optional(),currency:t.z.string().default("usd").optional(),connectedAccountId:t.z.string().optional(),returnUrl:t.z.string().url().optional(),headers:t.z.record(t.z.string(),t.z.string()).optional(),paymentIntentParams:t.z.record(t.z.string(),t.z.unknown()).optional(),locale:t.z.string().optional(),appearance:t.z.object({theme:t.z.enum(["stripe","night","flat"]).optional(),variables:t.z.record(t.z.string(),t.z.string()).optional(),rules:t.z.record(t.z.string(),t.z.record(t.z.string(),t.z.string())).optional()}).optional(),layout:t.z.enum(["tabs","accordion","auto"]).optional(),elementOptions:t.z.record(t.z.string(),t.z.unknown()).optional(),terms:t.z.object({card:t.z.enum(["auto","always","never"]).optional()}).optional(),customTermsText:t.z.string().optional(),openDialogButtonText:t.z.string().optional(),confirmButtonText:t.z.string().optional(),cancelButtonText:t.z.string().optional(),authorizedText:t.z.string().optional(),successMessage:t.z.string().optional(),setupSuccessMessage:t.z.string().optional(),infoText:t.z.string().optional(),amountLabel:t.z.string().optional(),loadingElementText:t.z.string().optional(),showAmount:t.z.boolean().optional(),dialogTitle:t.z.string().optional(),autoOpenDialog:t.z.boolean().optional(),actionId:t.z.string().optional()}).optional()}).optional(),dependsOn:D.optional(),dependentBehavior:t.z.enum(["hidden","disabled"]).optional(),customError:t.z.object({required:t.z.string().optional(),invalid:t.z.string().optional(),minLength:t.z.string().optional(),maxLength:t.z.string().optional(),minValue:t.z.string().optional(),maxValue:t.z.string().optional(),mismatch:t.z.string().optional()}).optional()}),ot=t.z.enum(["INVALID_DATA","INVALID_ACTION","STEP_NOT_FOUND","UNKNOWN_ERROR","APPOINTMENT_INVALID_DATA","APPOINTMENT_BUSY_SLOT","APPOINTMENT_OUT_OF_DATE","APPOINTMENT_UNKNOWN_ERROR","LEAD_INVALID_DATA","LEAD_UNKNOWN_ERROR","CONTENT_INVALID_DATA","CONTENT_UNKNOWN_ERROR","CONTACT_INVALID_DATA","CONTACT_UNKNOWN_ERROR","LOST_OPPORTUNITY_INVALID_DATA","LOST_OPPORTUNITY_UNKNOWN_ERROR"]),et=t.z.object({type:t.z.enum(["redirect"]),params:t.z.record(t.z.string(),t.z.any()).optional()}),L=t.z.object({trackingAction:t.z.enum(["EMIT_EVENT","SET_BASE_DATA"]).optional(),eventName:t.z.string().optional(),eventData:t.z.record(t.z.string(),t.z.any()).optional()}).catchall(t.z.any()),nt=t.z.object({id:t.z.string().nonempty(),number:t.z.number().optional(),title:t.z.string().optional(),description:t.z.string().optional(),stageId:t.z.string().optional(),state:t.z.record(t.z.string(),t.z.any()).optional(),fields:t.z.array(tt).optional(),actions:t.z.array(_).optional(),result:t.z.object({postActions:t.z.array(et).optional(),pipelines:t.z.array(t.z.object({name:t.z.string(),data:t.z.object({})})).optional(),tracking:t.z.union([L,t.z.array(L)]).optional()}).optional(),error:t.z.object({code:ot,message:t.z.string().optional(),icon:t.z.string().optional(),position:t.z.enum(["top","bottom"]).optional(),fields:t.z.array(t.z.object({name:t.z.string(),type:G,value:t.z.any(),error:t.z.string()})).optional()}).optional(),isFinal:t.z.boolean().optional()}),at=t.z.object({id:t.z.string().length(24).nonempty(),organizationId:t.z.string().uuid().nonempty(),updatedAt:t.z.string().datetime().nonempty(),stages:t.z.array(t.z.object({id:t.z.string().nonempty(),name:t.z.string().nonempty()}))}),dt=t.z.object({status:t.z.enum(["ok","error"]),step:nt,flow:at}),mt=t.z.enum(["track"]);var S=class{constructor(o){d(this,"baseURL");d(this,"headers");d(this,"flowId");d(this,"tracking");d(this,"RETRIES",[0,3e3]);let n=(0,$.merge)({},C,U.parse(o));this.flowId=n.flowId,this.baseURL=n.baseUrl,this.headers=new Headers({"Content-Type":"application/json","X-Onlive-Organization-Id":n.organizationId,"X-Lang":n.lang}),n.tracking?.enabled&&(this.tracking=new P(n.organizationId,n.flowId,n.tracking,!!n.devMode))}delay(o){return new Promise(n=>setTimeout(n,o))}async request(o,n={}){let a=null;try{return await this.executeRequest(o,n)}catch(r){a=r instanceof Error?r:new Error(String(r))}for(let r of this.RETRIES)try{return r>0&&await this.delay(r),await this.executeRequest(o,n)}catch(l){a=l instanceof Error?l:new Error(String(l))}throw a??new Error("Request failed")}async executeRequest(o,n){let a=await fetch(`${this.baseURL}/${o}`,{...n,headers:this.headers});if(!a?.ok)throw new Error(`HTTP error! status: ${a?.status||"unknown"}`);return a.json()}async firstStep(o={}){this.tracking?.analyzeRequest({},o);let n=this.tracking?this.tracking?.preferences():(0,V.browserPreferences)(),a=await this.request(`flow/${this.flowId}/first-step`,{method:"POST",body:JSON.stringify(O.parse({...o,state:{preferences:n,...o.state}}))});return this.tracking?.analyzeResponse({},a),a}async getStep(o,n={}){this.tracking?.analyzeRequest({stepId:o},n);let a=this.tracking?.preferences(),r=await this.request(`flow/${this.flowId}/steps/${F.parse(o)}`,{method:"POST",body:JSON.stringify(O.parse({...n,state:{preferences:a,...n.state}}))});return this.tracking?.analyzeResponse({stepId:o},r),r}async nextStep(o,n={}){this.tracking?.analyzeRequest(o,n);let{currentStepId:a,actionId:r}=M.parse(o),l=await this.request(`flow/${this.flowId}/steps/${a}/action/${r}`,{method:"POST",body:JSON.stringify(O.parse(n))});return this.tracking?.analyzeResponse(o,l),l}},g=S;(0,e.describe)("FlowClient",()=>{let s,o="123e4567-e89b-12d3-a456-426614174000",n="4f3d2a1b6c8e9f0d7a2b3c4d",a={baseUrl:"https://api.example.com",organizationId:o,flowId:n,lang:"en"},r={state:{someKey:"someValue"}},l={status:"ok",step:{id:"step-id"},flow:{id:n,updatedAt:"2021-01-01T00:00:00Z",organizationId:o,stages:[]}};(0,e.beforeEach)(()=>{e.vi.clearAllMocks(),global.fetch=e.vi.fn(),Object.defineProperty(window,"matchMedia",{writable:!0,value:e.vi.fn().mockImplementation(i=>({matches:!1,media:i,onchange:null,addListener:e.vi.fn(),removeListener:e.vi.fn(),addEventListener:e.vi.fn(),removeEventListener:e.vi.fn(),dispatchEvent:e.vi.fn()}))}),s=new g(a)}),(0,e.describe)("Constructor",()=>{(0,e.it)("should create instance with correct configuration",()=>{let i=new g(a);(0,e.expect)(i.baseURL).toBe(a.baseUrl),(0,e.expect)(i.headers.get("Content-Type")).toBe("application/json"),(0,e.expect)(i.headers.get("X-Onlive-Organization-Id")).toBe(a.organizationId)}),(0,e.it)("should throw error if baseUrl is invalid",()=>{let i={baseUrl:"invalid-url",organizationId:o,flowId:n,lang:"en"};(0,e.expect)(()=>new g(i)).toThrow(u.ZodError)}),(0,e.it)("should throw error if organizationId is missing",()=>{let i={baseUrl:"https://api.example.com",flowId:n,lang:"en"};(0,e.expect)(()=>new g(i)).toThrow(u.ZodError)}),(0,e.it)("should throw error if organizationId is not a valid UUID",()=>{let i={baseUrl:"https://api.example.com",organizationId:"invalid-uuid",flowId:n,lang:"en"};(0,e.expect)(()=>new g(i)).toThrow(u.ZodError)}),(0,e.it)("should throw error if lang is missing",()=>{let i={baseUrl:"https://api.example.com",organizationId:o,flowId:n};(0,e.expect)(()=>new g(i)).toThrow(u.ZodError)}),(0,e.it)("should throw error if lang length is not 2",()=>{let i={baseUrl:"https://api.example.com",organizationId:o,flowId:n,lang:"english"};(0,e.expect)(()=>new g(i)).toThrow(u.ZodError)})}),(0,e.describe)("firstStep",()=>{(0,e.it)("should make POST request to /flow/:flowId/first-step",async()=>{let i=l;global.fetch=e.vi.fn().mockResolvedValue({ok:!0,json:()=>Promise.resolve(i)});let p=await s.firstStep(r);(0,e.expect)(global.fetch).toHaveBeenCalledWith(`${a.baseUrl}/flow/${a.flowId}/first-step`,e.expect.objectContaining({method:"POST",headers:e.expect.any(Headers),body:JSON.stringify({state:{preferences:(0,q.browserPreferences)(),...r.state}})})),(0,e.expect)(p).toEqual(i)}),(0,e.it)("should throw error if options are invalid",async()=>{let i={state:"invalid-state"};await(0,e.expect)(s.firstStep(i)).rejects.toThrow(Error)}),(0,e.it)("should handle HTTP error",async()=>{global.fetch=e.vi.fn().mockResolvedValue({ok:!1,status:500}),await(0,e.expect)(s.firstStep(r)).rejects.toThrow("HTTP error! status: 500")})}),(0,e.describe)("getStep",()=>{let i="step-123";(0,e.it)("should make POST request to /flow/:flowId/steps/:stepId",async()=>{let p=l;global.fetch=e.vi.fn().mockResolvedValue({ok:!0,json:()=>Promise.resolve(p)});let b=await s.getStep(i,r);(0,e.expect)(global.fetch).toHaveBeenCalledWith(`${a.baseUrl}/flow/${a.flowId}/steps/${i}`,e.expect.objectContaining({method:"POST",headers:e.expect.any(Headers),body:JSON.stringify(r)})),(0,e.expect)(b).toEqual(p)}),(0,e.it)("should throw error if options are invalid",async()=>{let p={state:"invalid-state"};await(0,e.expect)(s.getStep(i,p)).rejects.toThrow(Error)}),(0,e.it)("should handle HTTP error",async()=>{global.fetch=e.vi.fn().mockResolvedValue({ok:!1,status:500}),await(0,e.expect)(s.getStep(i,r)).rejects.toThrow("HTTP error! status: 500")})}),(0,e.describe)("nextStep",()=>{let i={currentStepId:"step-123",actionId:"action-123"};(0,e.it)("should make POST request to /flow/:flowId/steps/:currentStepId/action/:actionId",async()=>{let p=l;global.fetch=e.vi.fn().mockResolvedValue({ok:!0,json:()=>Promise.resolve(p)});let b=await s.nextStep(i,r);(0,e.expect)(global.fetch).toHaveBeenCalledWith(`${a.baseUrl}/flow/${a.flowId}/steps/${i.currentStepId}/action/${i.actionId}`,e.expect.objectContaining({method:"POST",headers:e.expect.any(Headers),body:JSON.stringify(r)})),(0,e.expect)(b).toEqual(p)}),(0,e.it)("should validate trigger",async()=>{let p={};await(0,e.expect)(s.nextStep(p,r)).rejects.toThrow(u.ZodError)}),(0,e.it)("should throw error if options are invalid",async()=>{let p={state:"invalid-state"};await(0,e.expect)(s.nextStep(i,p)).rejects.toThrow(u.ZodError)}),(0,e.it)("should handle HTTP error",async()=>{global.fetch=e.vi.fn().mockResolvedValue({ok:!1,status:500}),await(0,e.expect)(s.nextStep(i,r)).rejects.toThrow("HTTP error! status: 500")})})});
1
+ /*! @onlive.ai/flow-client v0.1.271 | © 2026 Onlive.ai */
2
+ "use strict";var B=require("@onlive.ai/common-121/utils/browser-preferences.js"),o=require("vitest"),u=require("zod");var G=require("@onlive.ai/common-121/utils/browser-preferences.js"),$=require("@onlive.ai/common-121/utils/merge.js");var N=require("@onlive.ai/common-121/utils/browser-preferences.js"),P=require("@onlive.ai/common-121/utils/merge.js"),b=require("@onlive.ai/tracker/session"),R=require("@onlive.ai/tracker/tracker");var c=require("zod"),f="flow_form",j="onlive-analytics-event",y=c.z.object({enabled:c.z.boolean().default(!1).optional(),conditions:c.z.custom().optional(),data:c.z.custom().optional(),removeExtraneousValues:c.z.boolean().default(!0).optional(),allowBotTraffic:c.z.boolean().default(!1).optional(),adapters:c.z.array(c.z.string()).default([]).optional(),apiUrl:c.z.string().url().optional(),emitters:c.z.object({windowEvent:c.z.boolean().optional(),dataLayer:c.z.boolean().optional(),windowPostMessage:c.z.boolean().optional()}).optional()});var x=class l{static DEFAULT_TRACK_SEND_OPTIONS={keepalive:!0};taskSuccessMappers={create_i_event_registration:e=>({task_name:"ievent_registration",task_data:this.getRecord(e.fields)})};options;tracker;eventListeners=[];constructor(e,n,i,r){this.options=y.parse(i),this.tracker=new R.Tracker({apiUrl:this.options.apiUrl||"",conditions:this.options.conditions,removeExtraneousValues:this.options.removeExtraneousValues,allowBotTraffic:this.options.allowBotTraffic,adapters:this.options.adapters,dryRun:r}),this.tracker.setBase((0,P.merge)({},{organization_id:e,page_url:window.location.href,page_referrer:document.referrer,origin_medium:"web",guest_id:b.Session.id,interaction_id:b.Session.interactionId,extra:{flow_id:n}},this.options.data)),window.addEventListener(j,({detail:p})=>p?.event&&p?.data&&this.emit(p.event,p.data))}getTracker(){return this.tracker}preferences(){return{...(0,N.browserPreferences)(),interactionId:b.Session.interactionId,guestId:b.Session.id}}analyzeRequest(e,n){"currentStepId"in e&&(e.actionId&&this.track("element_click",{element_label:e.actionId,element_type:"button",form_name:Object.keys(n.fields||{}).length?f:void 0}),n.fields&&Object.keys(n.fields).length&&this.track("form_submit",{form_name:f,form_data:n.fields}))}analyzeResponse(e,n){let i=this.getTrackingEntries(n.step.result?.tracking),r={};i.forEach(p=>{let{trackingAction:a,...s}=p;(!a||a==="SET_BASE_DATA")&&(delete s.eventName,delete s.eventData,Object.assign(r,s))}),this.tracker.setBase({form_name:f,step_name:n.step.id,step_number:n.step.number,step_initial:!("currentStepId"in e)||void 0,step_final:n.step.isFinal,...r}),"currentStepId"in e&&(n.step.result?.pipelines&&n.step.result.pipelines.forEach(p=>{let a=this.mapTaskSuccessPipeline({name:p.name,data:this.getRecord(p.data)});this.track("task_success",{task_name:a.task_name,task_data:a.task_data})}),n.step.error&&this.track("form_error",{form_error:n.step.error.code})),i.forEach(p=>{let{trackingAction:a,eventName:s,eventData:g}=p;a==="EMIT_EVENT"&&typeof s=="string"&&s&&this.send(s,this.getRecord(g))}),this.track("impression",{impression_type:"step"})}track(e,n){this.tracker.send(e,n,l.DEFAULT_TRACK_SEND_OPTIONS)}send(e,n){this.track(e,n)}setData(e){this.tracker.setBase(e)}onEvent(e){this.eventListeners.push(e)}emit(e,n){this.eventListeners.forEach(i=>i({event:e,data:n}))}mapTaskSuccessPipeline(e){let n=this.taskSuccessMappers[e.name];if(!n)return{task_name:this.normalizeTaskName(e.name),task_data:e.data};let i=n(e.data);return{...i,task_name:this.normalizeTaskName(i.task_name)}}normalizeTaskName(e){return e.replace(/_v4$/,"")}getRecord(e){return!e||typeof e!="object"||Array.isArray(e)?{}:e}getTrackingEntries(e){if(Array.isArray(e))return e.map(i=>this.getRecord(i)).filter(i=>Object.keys(i).length>0);let n=this.getRecord(e);return Object.keys(n).length>0?[n]:[]}},A=x;var T=require("@onlive.ai/calendar"),k=require("@onlive.ai/calendar/client/client.types.js"),t=require("zod");var z=(i=>(i.DARK="DARK",i.FOLLOW_SYSTEM="FOLLOW_SYSTEM",i.LIGHT="LIGHT",i))(z||{}),C={tracking:{removeExtraneousValues:!0,apiUrl:"https://srvless.onlive.site/tracking",data:{widget_type:"OnliveAppFlow"}}},F=t.z.string().nonempty(),U=t.z.object({baseUrl:t.z.string().url().nonempty(),flowId:t.z.string().length(24).nonempty(),organizationId:t.z.string().uuid().nonempty(),lang:t.z.string().length(2).nonempty(),tracking:y.optional(),devMode:t.z.boolean().default(!1).optional()}),O=t.z.object({state:t.z.record(t.z.string(),t.z.any()).optional(),fields:t.z.record(t.z.string(),t.z.any()).optional()}),M=t.z.object({currentStepId:t.z.string().nonempty(),actionId:t.z.string().nonempty()}),V=t.z.enum(["text","boolean","number","first_name","last_name","name","email","phone","mobile_phone","date","time","datetime","password","url","color","object","void","location","availability"]),q=t.z.object({name:t.z.string().optional(),value:t.z.string().optional(),icon:t.z.string().optional(),type:t.z.enum(["url","email","phone"]).optional()}),H=t.z.object({lat:t.z.number().min(-90).max(90),lng:t.z.number().min(-180).max(180),meta:t.z.record(t.z.string(),t.z.any()).optional(),properties:t.z.record(t.z.string(),q).optional()}),W=t.z.object({datetime:t.z.string().datetime(),meta:t.z.record(t.z.string(),t.z.any()).optional()}),w=t.z.union([t.z.string(),t.z.number(),t.z.boolean(),H,W]),h=t.z.object({content:t.z.object({icon:t.z.string().optional(),url:t.z.string().url().optional(),width:t.z.string().optional(),height:t.z.string().optional(),scale:t.z.number().optional()}).optional(),background:t.z.string().optional(),glyph:t.z.object({color:t.z.string().optional(),url:t.z.string().url().optional(),icon:t.z.string().optional()}).optional(),borderColor:t.z.string().optional(),scale:t.z.number().optional()}),v=t.z.custom(l=>typeof l=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(l),{message:"Date must be in 'YYYY-MM-DD' format"}),d=t.z.object({text:t.z.string().optional(),icon:t.z.string().optional()}),E=t.z.object({fieldName:t.z.string().nonempty(),value:w.optional(),operator:t.z.enum(["exists","equals","not-equals","contains","not-contains","greater-than","less-than"]).optional()}),K=t.z.object({and:t.z.array(E).optional(),or:t.z.array(E).optional()}),D=t.z.array(t.z.union([E,K])),Y=t.z.object({src:t.z.string().url(),preload:t.z.boolean().optional(),name:t.z.string().nonempty(),function:t.z.string().nonempty(),params:t.z.array(t.z.record(t.z.string(),t.z.any())).optional()}),J=t.z.object({name:t.z.enum(["organization_call","close_panel","retry_first_step","retry_next_step","organization_chat"]),params:t.z.record(t.z.string(),t.z.any()).optional()}),S=t.z.object({id:t.z.string().nonempty(),type:t.z.enum(["submit","navigate","link","back","dispatcher","script"]),label:t.z.string().nonempty(),variant:t.z.enum(["primary","secondary","success","danger","warning","info"]),outline:t.z.boolean().optional(),position:t.z.enum(["top","bottom"]).optional(),url:t.z.string().url().optional(),target:t.z.enum(["_self","_blank","_parent","_top"]).optional(),loadingBehavior:t.z.enum(["none","spinner","disabled"]).optional(),prefix:d.optional(),suffix:d.optional(),caption:t.z.string().optional(),scripts:Y.array().optional(),events:J.array().optional()}),Z=t.z.object({message:t.z.string().optional(),icon:t.z.string().optional(),position:t.z.enum(["top","bottom"]).optional(),kind:t.z.enum(["initial-loading","step-loading","step-validation","field-loading"]).optional(),actions:t.z.array(S).optional()}),I=t.z.object({stepId:t.z.string().nonempty(),name:t.z.string().nonempty(),behavior:t.z.enum(["append","replace"]),state:t.z.record(t.z.string(),t.z.any()).optional()}),X=t.z.object({name:t.z.string().nonempty(),label:t.z.string().optional(),description:t.z.string().optional(),value:t.z.union([w,t.z.array(w)]).optional(),type:V,component:t.z.enum(["input","phone_input","textarea","select","radio","checkbox","switch","rating","carousel","grid","button","label","map","calendar","stripe_payment"]).optional(),disabled:t.z.boolean().optional(),readonly:t.z.boolean().optional(),multiple:t.z.boolean().optional(),placeholder:t.z.string().optional(),options:t.z.array(t.z.object({id:t.z.string().optional(),label:t.z.string().nonempty(),value:w.optional(),image:t.z.string().url().optional(),description:t.z.string().optional(),disabled:t.z.boolean().optional(),attributes:t.z.record(t.z.string(),t.z.any()).optional(),actions:t.z.array(S).optional(),dependsOn:D.optional()})).optional(),required:t.z.boolean().optional(),configuration:t.z.object({generic:t.z.object({attributes:t.z.record(t.z.string(),t.z.any()).optional(),error:t.z.object({loading:Z.optional(),validation:t.z.object({icon:t.z.string().optional(),showOn:t.z.enum(["input","blur"]).optional()}).optional()})}).optional(),input:t.z.object({min:t.z.union([t.z.number(),t.z.string()]).optional(),max:t.z.union([t.z.number(),t.z.string()]).optional(),step:t.z.number().optional(),pattern:t.z.string().refine(l=>{try{return new RegExp(l),!0}catch{return!1}},"Invalid regex pattern").optional(),minLength:t.z.number().optional(),maxLength:t.z.number().optional(),exactLength:t.z.number().optional(),prefix:t.z.object({default:d.optional(),success:d.optional(),error:d.optional()}).optional(),suffix:t.z.object({default:d.optional(),success:d.optional(),error:d.optional()}).optional(),clearable:t.z.boolean().optional(),floatingLabel:t.z.boolean().optional()}).optional(),phoneInput:t.z.object({includePrefixValue:t.z.boolean().optional(),showFlag:t.z.boolean().optional(),showCode:t.z.boolean().optional(),prefixLabel:t.z.string().optional(),lockedPrefix:t.z.boolean().optional(),countries:t.z.array(t.z.string()).optional(),defaultPrefix:t.z.string().optional(),autoDetectCountry:t.z.boolean().optional()}).optional(),textarea:t.z.object({minLength:t.z.number().optional(),maxLength:t.z.number().optional(),exactLength:t.z.number().optional(),rows:t.z.number().optional()}).optional(),checkbox:t.z.object({layout:t.z.enum(["horizontal","vertical"])}).optional(),rating:t.z.object({icons:t.z.array(t.z.string()).optional(),iconMode:t.z.enum(["individual","unified"]).optional(),colors:t.z.array(t.z.string()).optional(),colorMode:t.z.enum(["unified","individual"]).optional(),color:t.z.string().optional(),precision:t.z.number().optional(),labels:t.z.object({start:t.z.string().optional(),end:t.z.string().optional(),position:t.z.enum(["top","bottom"]).optional()}).optional()}).optional(),carousel:t.z.object({loop:t.z.boolean().optional(),mouseDragging:t.z.boolean().optional(),itemsPerPage:t.z.object({small:t.z.number(),medium:t.z.number().optional(),large:t.z.number().optional()}).optional(),itemsPerMove:t.z.object({small:t.z.number(),medium:t.z.number().optional(),large:t.z.number().optional()}).optional(),showArrows:t.z.boolean().optional(),showDots:t.z.boolean().optional(),autoplay:t.z.boolean().optional(),autoplaySpeed:t.z.number().optional(),showcaseMode:t.z.boolean().optional(),clickableItems:t.z.object({actionId:t.z.string()}).optional(),labels:t.z.object({position:t.z.enum(["top","bottom","nav-top","nav-bottom","static-top","static-bottom"]).optional(),button:t.z.object({label:t.z.string(),actionId:t.z.string()}).optional()}).optional()}).optional(),grid:t.z.object({search:t.z.object({enabled:t.z.boolean().optional(),value:t.z.string().optional(),button:t.z.object({label:t.z.string().optional()}).optional(),placeholder:t.z.string().optional(),noResultsText:t.z.string().optional(),clearable:t.z.boolean().optional()}).optional(),itemsPerRow:t.z.object({small:t.z.number(),medium:t.z.number().optional(),large:t.z.number().optional()}).optional(),itemsPerPage:t.z.object({small:t.z.number(),medium:t.z.number().optional(),large:t.z.number().optional()}).optional(),clickableItems:t.z.object({actionId:t.z.string()}).optional()}).optional(),map:t.z.object({apiKey:t.z.string().optional(),mapId:t.z.string().optional(),region:t.z.string().length(2).optional(),colorScheme:t.z.nativeEnum(z).optional(),center:t.z.object({lat:t.z.number().min(-90).max(90),lng:t.z.number().min(-180).max(180)}).optional(),showMap:t.z.enum(["always","on-search","never"]).optional(),zoom:t.z.object({initial:t.z.number().optional(),focus:t.z.number().optional(),max:t.z.number().optional(),min:t.z.number().optional()}).optional(),controls:t.z.object({fullscreen:t.z.boolean().optional(),mapType:t.z.boolean().optional(),zoom:t.z.boolean().optional(),rotate:t.z.boolean().optional(),scale:t.z.boolean().optional(),streetView:t.z.boolean().optional()}).optional(),initialLocations:t.z.number().optional(),maxLocations:t.z.number().optional(),distanceUnit:t.z.enum(["km","mi"]).optional(),distanceFormat:t.z.enum(["short","long"]).optional(),distanceDecimals:t.z.number().optional(),options:t.z.object({show:t.z.enum(["always","on-search","never"]).optional(),component:t.z.enum(["list-button","list-radio","carousel"]).optional(),searchLabel:t.z.string().optional(),detailsLabel:t.z.string().optional()}).optional(),search:t.z.object({enabled:t.z.boolean().optional(),value:t.z.string().optional(),button:t.z.object({label:t.z.string().optional(),position:t.z.enum(["inside","outside"]).optional()}).optional(),placeholder:t.z.string().optional(),noResultsText:t.z.string().optional(),autofocus:t.z.boolean().optional(),autocomplete:t.z.boolean().optional(),clearable:t.z.boolean().optional(),mode:t.z.enum(["address","postcode"]).default("postcode").optional(),locationButton:t.z.object({icon:t.z.string().optional(),position:t.z.enum(["left","right"]).optional()}).optional(),prefix:t.z.object({default:d.optional()}).optional(),suffix:t.z.object({default:d.optional()}).optional()}).optional(),distanceRange:t.z.object({initial:t.z.number().optional(),min:t.z.number().optional(),max:t.z.number().optional(),step:t.z.number().optional()}).optional(),mapRegion:t.z.object({strokeColor:t.z.string().optional(),fillColor:t.z.string().optional(),fillOpacity:t.z.number().optional()}).optional(),locationPin:h.optional(),markerPin:t.z.object({default:h.optional(),hover:h.optional(),selected:h.optional()}).optional(),infoWindow:t.z.object({button:t.z.object({label:t.z.string(),action:t.z.string()}).optional(),directionsLabel:t.z.string().optional()}).optional(),ordering:t.z.object({orderBy:t.z.enum(["distance","title","id"]).optional(),orderDir:t.z.enum(["asc","desc"]).optional(),preferences:t.z.array(t.z.object({ids:t.z.string().array(),filters:t.z.object({postcodes:t.z.string().array().optional()}).optional()}))}).optional(),clickableItems:t.z.object({actionId:t.z.string()}).optional(),forcePolyfills:t.z.boolean().optional()}).optional(),calendar:t.z.object({current:t.z.object({month:t.z.number().min(0).max(11).optional(),year:t.z.number().optional()}).optional(),range:t.z.object({min:v.optional(),max:v.optional(),enabled:t.z.array(v).optional(),disabled:t.z.array(v).optional()}).optional(),time:t.z.object({label:t.z.string().optional(),format:t.z.enum(["12h","24h"]).optional(),component:t.z.enum(["carousel","list"]).optional()}).optional(),api:t.z.object({version:t.z.string().optional(),url:t.z.string().url().nonempty(),organizationId:t.z.string().nonempty(),availability:t.z.object({filters:T.GetAvailabilityFilters,options:T.GetAvailabilityOptions.optional()}).optional(),slots:t.z.object({filters:k.GetSlotFilters,options:k.GetSlotOptions.optional()}).optional()}).optional()}).optional(),stripe:t.z.object({publishableKey:t.z.string().nonempty(),mode:t.z.enum(["payment","setup"]).default("payment").optional(),createPaymentIntentEndpoint:t.z.string().url().optional(),createSetupIntentEndpoint:t.z.string().url().optional(),clientSecret:t.z.string().optional(),paymentIntentId:t.z.string().optional(),setupIntentId:t.z.string().optional(),amount:t.z.number().optional(),currency:t.z.string().default("usd").optional(),connectedAccountId:t.z.string().optional(),returnUrl:t.z.string().url().optional(),headers:t.z.record(t.z.string(),t.z.string()).optional(),paymentIntentParams:t.z.record(t.z.string(),t.z.unknown()).optional(),locale:t.z.string().optional(),appearance:t.z.object({theme:t.z.enum(["stripe","night","flat"]).optional(),variables:t.z.record(t.z.string(),t.z.string()).optional(),rules:t.z.record(t.z.string(),t.z.record(t.z.string(),t.z.string())).optional()}).optional(),layout:t.z.enum(["tabs","accordion","auto"]).optional(),elementOptions:t.z.record(t.z.string(),t.z.unknown()).optional(),terms:t.z.object({card:t.z.enum(["auto","always","never"]).optional()}).optional(),customTermsText:t.z.string().optional(),openDialogButtonText:t.z.string().optional(),confirmButtonText:t.z.string().optional(),cancelButtonText:t.z.string().optional(),authorizedText:t.z.string().optional(),successMessage:t.z.string().optional(),setupSuccessMessage:t.z.string().optional(),infoText:t.z.string().optional(),amountLabel:t.z.string().optional(),loadingElementText:t.z.string().optional(),showAmount:t.z.boolean().optional(),dialogTitle:t.z.string().optional(),autoOpenDialog:t.z.boolean().optional(),actionId:t.z.string().optional()}).optional()}).optional(),remoteOptions:I.optional(),dependsOn:D.optional(),dependentBehavior:t.z.enum(["hidden","disabled"]).optional(),customError:t.z.object({required:t.z.string().optional(),invalid:t.z.string().optional(),minLength:t.z.string().optional(),maxLength:t.z.string().optional(),minValue:t.z.string().optional(),maxValue:t.z.string().optional(),mismatch:t.z.string().optional()}).optional()}),Q=t.z.enum(["INVALID_DATA","INVALID_ACTION","STEP_NOT_FOUND","UNKNOWN_ERROR","APPOINTMENT_INVALID_DATA","APPOINTMENT_BUSY_SLOT","APPOINTMENT_OUT_OF_DATE","APPOINTMENT_UNKNOWN_ERROR","LEAD_INVALID_DATA","LEAD_UNKNOWN_ERROR","CONTENT_INVALID_DATA","CONTENT_UNKNOWN_ERROR","CONTACT_INVALID_DATA","CONTACT_UNKNOWN_ERROR","LOST_OPPORTUNITY_INVALID_DATA","LOST_OPPORTUNITY_UNKNOWN_ERROR"]),tt=t.z.object({type:t.z.enum(["redirect"]),params:t.z.record(t.z.string(),t.z.any()).optional()}),L=t.z.object({trackingAction:t.z.enum(["EMIT_EVENT","SET_BASE_DATA"]).optional(),eventName:t.z.string().optional(),eventData:t.z.record(t.z.string(),t.z.any()).optional()}).catchall(t.z.any()),ot=t.z.object({id:t.z.string().nonempty(),number:t.z.number().optional(),title:t.z.string().optional(),description:t.z.string().optional(),stageId:t.z.string().optional(),state:t.z.record(t.z.string(),t.z.any()).optional(),fields:t.z.array(X).optional(),actions:t.z.array(S).optional(),result:t.z.object({postActions:t.z.array(tt).optional(),pipelines:t.z.array(t.z.object({name:t.z.string(),data:t.z.object({})})).optional(),tracking:t.z.union([L,t.z.array(L)]).optional()}).optional(),error:t.z.object({code:Q,message:t.z.string().optional(),icon:t.z.string().optional(),position:t.z.enum(["top","bottom"]).optional(),fields:t.z.array(t.z.object({name:t.z.string(),type:V,value:t.z.any(),error:t.z.string()})).optional()}).optional(),isFinal:t.z.boolean().optional()}),et=t.z.object({id:t.z.string().length(24).nonempty(),organizationId:t.z.string().uuid().nonempty(),updatedAt:t.z.string().datetime().nonempty(),stages:t.z.array(t.z.object({id:t.z.string().nonempty(),name:t.z.string().nonempty()}))}),st=t.z.object({status:t.z.enum(["ok","error"]),step:ot,flow:et}),lt=t.z.enum(["track"]);var _=class{baseURL;headers;flowId;tracking;constructor(e){let n=(0,$.merge)({},C,U.parse(e));this.flowId=n.flowId,this.baseURL=n.baseUrl,this.headers=new Headers({"Content-Type":"application/json","X-Onlive-Organization-Id":n.organizationId,"X-Lang":n.lang}),n.tracking?.enabled&&(this.tracking=new A(n.organizationId,n.flowId,n.tracking,!!n.devMode))}RETRIES=[0,3e3];delay(e){return new Promise(n=>setTimeout(n,e))}async request(e,n={}){let i=null;try{return await this.executeRequest(e,n)}catch(r){i=r instanceof Error?r:new Error(String(r))}for(let r of this.RETRIES)try{return r>0&&await this.delay(r),await this.executeRequest(e,n)}catch(p){i=p instanceof Error?p:new Error(String(p))}throw i??new Error("Request failed")}async executeRequest(e,n){let i=await fetch(`${this.baseURL}/${e}`,{...n,headers:this.headers});if(!i?.ok)throw new Error(`HTTP error! status: ${i?.status||"unknown"}`);return i.json()}async firstStep(e={}){this.tracking?.analyzeRequest({},e);let n=this.tracking?this.tracking?.preferences():(0,G.browserPreferences)(),i=await this.request(`flow/${this.flowId}/first-step`,{method:"POST",body:JSON.stringify(O.parse({...e,state:{preferences:n,...e.state}}))});return this.tracking?.analyzeResponse({},i),i}async getStep(e,n={}){this.tracking?.analyzeRequest({stepId:e},n);let i=this.tracking?.preferences(),r=await this.request(`flow/${this.flowId}/steps/${F.parse(e)}`,{method:"POST",body:JSON.stringify(O.parse({...n,state:{preferences:i,...n.state}}))});return this.tracking?.analyzeResponse({stepId:e},r),r}async fetchData(e){return this.request(`flow/${this.flowId}/data`,{method:"POST",body:JSON.stringify(e)})}async nextStep(e,n={}){this.tracking?.analyzeRequest(e,n);let{currentStepId:i,actionId:r}=M.parse(e),p=await this.request(`flow/${this.flowId}/steps/${i}/action/${r}`,{method:"POST",body:JSON.stringify(O.parse(n))});return this.tracking?.analyzeResponse(e,p),p}},m=_;(0,o.describe)("FlowClient",()=>{let l,e="123e4567-e89b-12d3-a456-426614174000",n="4f3d2a1b6c8e9f0d7a2b3c4d",i={baseUrl:"https://api.example.com",organizationId:e,flowId:n,lang:"en"},r={state:{someKey:"someValue"}},p={status:"ok",step:{id:"step-id"},flow:{id:n,updatedAt:"2021-01-01T00:00:00Z",organizationId:e,stages:[]}};(0,o.beforeEach)(()=>{o.vi.clearAllMocks(),global.fetch=o.vi.fn(),Object.defineProperty(window,"matchMedia",{writable:!0,value:o.vi.fn().mockImplementation(a=>({matches:!1,media:a,onchange:null,addListener:o.vi.fn(),removeListener:o.vi.fn(),addEventListener:o.vi.fn(),removeEventListener:o.vi.fn(),dispatchEvent:o.vi.fn()}))}),l=new m(i)}),(0,o.describe)("Constructor",()=>{(0,o.it)("should create instance with correct configuration",()=>{let a=new m(i);(0,o.expect)(a.baseURL).toBe(i.baseUrl),(0,o.expect)(a.headers.get("Content-Type")).toBe("application/json"),(0,o.expect)(a.headers.get("X-Onlive-Organization-Id")).toBe(i.organizationId)}),(0,o.it)("should throw error if baseUrl is invalid",()=>{let a={baseUrl:"invalid-url",organizationId:e,flowId:n,lang:"en"};(0,o.expect)(()=>new m(a)).toThrow(u.ZodError)}),(0,o.it)("should throw error if organizationId is missing",()=>{let a={baseUrl:"https://api.example.com",flowId:n,lang:"en"};(0,o.expect)(()=>new m(a)).toThrow(u.ZodError)}),(0,o.it)("should throw error if organizationId is not a valid UUID",()=>{let a={baseUrl:"https://api.example.com",organizationId:"invalid-uuid",flowId:n,lang:"en"};(0,o.expect)(()=>new m(a)).toThrow(u.ZodError)}),(0,o.it)("should throw error if lang is missing",()=>{let a={baseUrl:"https://api.example.com",organizationId:e,flowId:n};(0,o.expect)(()=>new m(a)).toThrow(u.ZodError)}),(0,o.it)("should throw error if lang length is not 2",()=>{let a={baseUrl:"https://api.example.com",organizationId:e,flowId:n,lang:"english"};(0,o.expect)(()=>new m(a)).toThrow(u.ZodError)})}),(0,o.describe)("firstStep",()=>{(0,o.it)("should make POST request to /flow/:flowId/first-step",async()=>{let a=p;global.fetch=o.vi.fn().mockResolvedValue({ok:!0,json:()=>Promise.resolve(a)});let s=await l.firstStep(r);(0,o.expect)(global.fetch).toHaveBeenCalledWith(`${i.baseUrl}/flow/${i.flowId}/first-step`,o.expect.objectContaining({method:"POST",headers:o.expect.any(Headers),body:JSON.stringify({state:{preferences:(0,B.browserPreferences)(),...r.state}})})),(0,o.expect)(s).toEqual(a)}),(0,o.it)("should throw error if options are invalid",async()=>{let a={state:"invalid-state"};await(0,o.expect)(l.firstStep(a)).rejects.toThrow(Error)}),(0,o.it)("should handle HTTP error",async()=>{global.fetch=o.vi.fn().mockResolvedValue({ok:!1,status:500}),await(0,o.expect)(l.firstStep(r)).rejects.toThrow("HTTP error! status: 500")})}),(0,o.describe)("getStep",()=>{let a="step-123";(0,o.it)("should make POST request to /flow/:flowId/steps/:stepId",async()=>{let s=p;global.fetch=o.vi.fn().mockResolvedValue({ok:!0,json:()=>Promise.resolve(s)});let g=await l.getStep(a,r);(0,o.expect)(global.fetch).toHaveBeenCalledWith(`${i.baseUrl}/flow/${i.flowId}/steps/${a}`,o.expect.objectContaining({method:"POST",headers:o.expect.any(Headers),body:JSON.stringify(r)})),(0,o.expect)(g).toEqual(s)}),(0,o.it)("should throw error if options are invalid",async()=>{let s={state:"invalid-state"};await(0,o.expect)(l.getStep(a,s)).rejects.toThrow(Error)}),(0,o.it)("should handle HTTP error",async()=>{global.fetch=o.vi.fn().mockResolvedValue({ok:!1,status:500}),await(0,o.expect)(l.getStep(a,r)).rejects.toThrow("HTTP error! status: 500")})}),(0,o.describe)("RemoteOptions schema",()=>{(0,o.it)("accepts optional state field",()=>{let a=I.safeParse({stepId:"step-1",name:"myOptions",behavior:"replace",state:{userId:"abc"}});(0,o.expect)(a.success).toBe(!0),(0,o.expect)(a.data?.state).toEqual({userId:"abc"})}),(0,o.it)("state field is optional \u2014 parses without it",()=>{let a=I.safeParse({stepId:"step-1",name:"myOptions",behavior:"replace"});(0,o.expect)(a.success).toBe(!0),(0,o.expect)(a.data?.state).toBeUndefined()})}),(0,o.describe)("fetchData",()=>{let a={stepId:"step-123",name:"myKey"};(0,o.it)("should POST to /flow/:flowId/data with stepId and name",async()=>{let s={data:["option-a","option-b"]};global.fetch=o.vi.fn().mockResolvedValue({ok:!0,json:()=>Promise.resolve(s)});let g=await l.fetchData(a);(0,o.expect)(global.fetch).toHaveBeenCalledWith(`${i.baseUrl}/flow/${i.flowId}/data`,o.expect.objectContaining({method:"POST",headers:o.expect.any(Headers),body:JSON.stringify(a)})),(0,o.expect)(g).toEqual(s)}),(0,o.it)("should include state in payload when provided",async()=>{global.fetch=o.vi.fn().mockResolvedValue({ok:!0,json:()=>Promise.resolve({data:null})}),await l.fetchData({...a,state:{foo:"bar"}}),(0,o.expect)(global.fetch).toHaveBeenCalledWith(o.expect.any(String),o.expect.objectContaining({body:JSON.stringify({...a,state:{foo:"bar"}})}))}),(0,o.it)("should throw on HTTP error",async()=>{global.fetch=o.vi.fn().mockResolvedValue({ok:!1,status:404}),await(0,o.expect)(l.fetchData(a)).rejects.toThrow("HTTP error! status: 404")})}),(0,o.describe)("nextStep",()=>{let a={currentStepId:"step-123",actionId:"action-123"};(0,o.it)("should make POST request to /flow/:flowId/steps/:currentStepId/action/:actionId",async()=>{let s=p;global.fetch=o.vi.fn().mockResolvedValue({ok:!0,json:()=>Promise.resolve(s)});let g=await l.nextStep(a,r);(0,o.expect)(global.fetch).toHaveBeenCalledWith(`${i.baseUrl}/flow/${i.flowId}/steps/${a.currentStepId}/action/${a.actionId}`,o.expect.objectContaining({method:"POST",headers:o.expect.any(Headers),body:JSON.stringify(r)})),(0,o.expect)(g).toEqual(s)}),(0,o.it)("should validate trigger",async()=>{let s={};await(0,o.expect)(l.nextStep(s,r)).rejects.toThrow(u.ZodError)}),(0,o.it)("should throw error if options are invalid",async()=>{let s={state:"invalid-state"};await(0,o.expect)(l.nextStep(a,s)).rejects.toThrow(u.ZodError)}),(0,o.it)("should handle HTTP error",async()=>{global.fetch=o.vi.fn().mockResolvedValue({ok:!1,status:500}),await(0,o.expect)(l.nextStep(a,r)).rejects.toThrow("HTTP error! status: 500")})})});
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/flow-client v0.1.238 | © 2026 Onlive.ai */
2
- "use strict";var g=Object.defineProperty;var N=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var P=Object.prototype.hasOwnProperty;var S=(n,i)=>{for(var l in i)g(n,l,{get:i[l],enumerable:!0})},w=(n,i,l,a)=>{if(i&&typeof i=="object"||typeof i=="function")for(let r of L(i))!P.call(n,r)&&r!==l&&g(n,r,{get:()=>i[r],enumerable:!(a=N(i,r))||a.enumerable});return n};var k=n=>w(g({},"__esModule",{value:!0}),n);var $={};S($,{Action:()=>u,ActionEvent:()=>A,ActionScript:()=>v,ClientOptions:()=>C,ColorScheme:()=>y,DEFAULT_CLIENT_OPTIONS:()=>F,DEFAULT_MAP_ID:()=>z,ErrorCode:()=>E,ErrorData:()=>h,EventType:()=>Y,Field:()=>O,Flow:()=>I,FlowContext:()=>W,GetStepOptions:()=>M,GetStepTrigger:()=>V,PostAction:()=>_,Step:()=>D,StepId:()=>R});module.exports=k($);var m=require("@onlive.ai/calendar"),b=require("@onlive.ai/calendar/client/client.types.js"),o=require("zod");var t=require("zod");var f=t.z.object({enabled:t.z.boolean().default(!1).optional(),conditions:t.z.custom().optional(),data:t.z.custom().optional(),removeExtraneousValues:t.z.boolean().default(!0).optional(),allowBotTraffic:t.z.boolean().default(!1).optional(),adapters:t.z.array(t.z.string()).default([]).optional(),apiUrl:t.z.string().url().optional(),emitters:t.z.object({windowEvent:t.z.boolean().optional(),dataLayer:t.z.boolean().optional(),windowPostMessage:t.z.boolean().optional()}).optional()});var z="bf585082a22fad962b4cbc08",y=(a=>(a.DARK="DARK",a.FOLLOW_SYSTEM="FOLLOW_SYSTEM",a.LIGHT="LIGHT",a))(y||{}),F={tracking:{removeExtraneousValues:!0,apiUrl:"https://srvless.onlive.site/tracking",data:{widget_type:"OnliveAppFlow"}}},R=o.z.string().nonempty(),C=o.z.object({baseUrl:o.z.string().url().nonempty(),flowId:o.z.string().length(24).nonempty(),organizationId:o.z.string().uuid().nonempty(),lang:o.z.string().length(2).nonempty(),tracking:f.optional(),devMode:o.z.boolean().default(!1).optional()}),M=o.z.object({state:o.z.record(o.z.string(),o.z.any()).optional(),fields:o.z.record(o.z.string(),o.z.any()).optional()}),V=o.z.object({currentStepId:o.z.string().nonempty(),actionId:o.z.string().nonempty()}),T=o.z.enum(["text","boolean","number","first_name","last_name","name","email","phone","mobile_phone","date","time","datetime","password","url","color","object","void","location","availability"]),U=o.z.object({name:o.z.string().optional(),value:o.z.string().optional(),icon:o.z.string().optional(),type:o.z.enum(["url","email","phone"]).optional()}),G=o.z.object({lat:o.z.number().min(-90).max(90),lng:o.z.number().min(-180).max(180),meta:o.z.record(o.z.string(),o.z.any()).optional(),properties:o.z.record(o.z.string(),U).optional()}),B=o.z.object({datetime:o.z.string().datetime(),meta:o.z.record(o.z.string(),o.z.any()).optional()}),c=o.z.union([o.z.string(),o.z.number(),o.z.boolean(),G,B]),p=o.z.object({content:o.z.object({icon:o.z.string().optional(),url:o.z.string().url().optional(),width:o.z.string().optional(),height:o.z.string().optional(),scale:o.z.number().optional()}).optional(),background:o.z.string().optional(),glyph:o.z.object({color:o.z.string().optional(),url:o.z.string().url().optional(),icon:o.z.string().optional()}).optional(),borderColor:o.z.string().optional(),scale:o.z.number().optional()}),s=o.z.custom(n=>typeof n=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(n),{message:"Date must be in 'YYYY-MM-DD' format"}),e=o.z.object({text:o.z.string().optional(),icon:o.z.string().optional()}),d=o.z.object({fieldName:o.z.string().nonempty(),value:c.optional(),operator:o.z.enum(["exists","equals","not-equals","contains","not-contains","greater-than","less-than"]).optional()}),K=o.z.object({and:o.z.array(d).optional(),or:o.z.array(d).optional()}),x=o.z.array(o.z.union([d,K])),v=o.z.object({src:o.z.string().url(),preload:o.z.boolean().optional(),name:o.z.string().nonempty(),function:o.z.string().nonempty(),params:o.z.array(o.z.record(o.z.string(),o.z.any())).optional()}),A=o.z.object({name:o.z.enum(["organization_call","close_panel","retry_first_step","retry_next_step","organization_chat"]),params:o.z.record(o.z.string(),o.z.any()).optional()}),u=o.z.object({id:o.z.string().nonempty(),type:o.z.enum(["submit","navigate","link","back","dispatcher","script"]),label:o.z.string().nonempty(),variant:o.z.enum(["primary","secondary","success","danger","warning","info"]),position:o.z.enum(["top","bottom"]).optional(),url:o.z.string().url().optional(),target:o.z.enum(["_self","_blank","_parent","_top"]).optional(),loadingBehavior:o.z.enum(["none","spinner","disabled"]).optional(),prefix:e.optional(),suffix:e.optional(),caption:o.z.string().optional(),scripts:v.array().optional(),events:A.array().optional()}),h=o.z.object({message:o.z.string().optional(),icon:o.z.string().optional(),position:o.z.enum(["top","bottom"]).optional(),kind:o.z.enum(["initial-loading","step-loading","step-validation","field-loading"]).optional(),actions:o.z.array(u).optional()}),O=o.z.object({name:o.z.string().nonempty(),label:o.z.string().optional(),description:o.z.string().optional(),value:o.z.union([c,o.z.array(c)]).optional(),type:T,component:o.z.enum(["input","phone_input","textarea","select","radio","checkbox","switch","rating","carousel","grid","button","label","map","calendar","stripe_payment"]).optional(),disabled:o.z.boolean().optional(),readonly:o.z.boolean().optional(),multiple:o.z.boolean().optional(),placeholder:o.z.string().optional(),options:o.z.array(o.z.object({id:o.z.string().optional(),label:o.z.string().nonempty(),value:c.optional(),image:o.z.string().url().optional(),description:o.z.string().optional(),disabled:o.z.boolean().optional(),attributes:o.z.record(o.z.string(),o.z.any()).optional(),actions:o.z.array(u).optional(),dependsOn:x.optional()})).optional(),required:o.z.boolean().optional(),configuration:o.z.object({generic:o.z.object({attributes:o.z.record(o.z.string(),o.z.any()).optional(),error:o.z.object({loading:h.optional(),validation:o.z.object({icon:o.z.string().optional(),showOn:o.z.enum(["input","blur"]).optional()}).optional()})}).optional(),input:o.z.object({min:o.z.union([o.z.number(),o.z.string()]).optional(),max:o.z.union([o.z.number(),o.z.string()]).optional(),step:o.z.number().optional(),pattern:o.z.string().refine(n=>{try{return new RegExp(n),!0}catch{return!1}},"Invalid regex pattern").optional(),minLength:o.z.number().optional(),maxLength:o.z.number().optional(),exactLength:o.z.number().optional(),prefix:o.z.object({default:e.optional(),success:e.optional(),error:e.optional()}).optional(),suffix:o.z.object({default:e.optional(),success:e.optional(),error:e.optional()}).optional(),clearable:o.z.boolean().optional(),floatingLabel:o.z.boolean().optional()}).optional(),phoneInput:o.z.object({includePrefixValue:o.z.boolean().optional(),showFlag:o.z.boolean().optional(),showCode:o.z.boolean().optional(),prefixLabel:o.z.string().optional(),lockedPrefix:o.z.boolean().optional(),countries:o.z.array(o.z.string()).optional(),defaultPrefix:o.z.string().optional(),autoDetectCountry:o.z.boolean().optional()}).optional(),textarea:o.z.object({minLength:o.z.number().optional(),maxLength:o.z.number().optional(),exactLength:o.z.number().optional(),rows:o.z.number().optional()}).optional(),checkbox:o.z.object({layout:o.z.enum(["horizontal","vertical"])}).optional(),rating:o.z.object({icons:o.z.array(o.z.string()).optional(),color:o.z.string().optional(),precision:o.z.number().optional()}).optional(),carousel:o.z.object({loop:o.z.boolean().optional(),mouseDragging:o.z.boolean().optional(),itemsPerPage:o.z.object({small:o.z.number(),medium:o.z.number().optional(),large:o.z.number().optional()}).optional(),itemsPerMove:o.z.object({small:o.z.number(),medium:o.z.number().optional(),large:o.z.number().optional()}).optional(),showArrows:o.z.boolean().optional(),showDots:o.z.boolean().optional(),autoplay:o.z.boolean().optional(),autoplaySpeed:o.z.number().optional(),showcaseMode:o.z.boolean().optional(),clickableItems:o.z.object({actionId:o.z.string()}).optional(),labels:o.z.object({position:o.z.enum(["top","bottom","nav-top","nav-bottom","static-top","static-bottom"]).optional(),button:o.z.object({label:o.z.string(),actionId:o.z.string()}).optional()}).optional()}).optional(),grid:o.z.object({search:o.z.object({enabled:o.z.boolean().optional(),value:o.z.string().optional(),button:o.z.object({label:o.z.string().optional()}).optional(),placeholder:o.z.string().optional(),noResultsText:o.z.string().optional(),clearable:o.z.boolean().optional()}).optional(),itemsPerRow:o.z.object({small:o.z.number(),medium:o.z.number().optional(),large:o.z.number().optional()}).optional(),itemsPerPage:o.z.object({small:o.z.number(),medium:o.z.number().optional(),large:o.z.number().optional()}).optional(),clickableItems:o.z.object({actionId:o.z.string()}).optional()}).optional(),map:o.z.object({apiKey:o.z.string().optional(),mapId:o.z.string().optional(),region:o.z.string().length(2).optional(),colorScheme:o.z.nativeEnum(y).optional(),center:o.z.object({lat:o.z.number().min(-90).max(90),lng:o.z.number().min(-180).max(180)}).optional(),showMap:o.z.enum(["always","on-search","never"]).optional(),zoom:o.z.object({initial:o.z.number().optional(),focus:o.z.number().optional(),max:o.z.number().optional(),min:o.z.number().optional()}).optional(),controls:o.z.object({fullscreen:o.z.boolean().optional(),mapType:o.z.boolean().optional(),zoom:o.z.boolean().optional(),rotate:o.z.boolean().optional(),scale:o.z.boolean().optional(),streetView:o.z.boolean().optional()}).optional(),initialLocations:o.z.number().optional(),maxLocations:o.z.number().optional(),distanceUnit:o.z.enum(["km","mi"]).optional(),distanceFormat:o.z.enum(["short","long"]).optional(),distanceDecimals:o.z.number().optional(),options:o.z.object({show:o.z.enum(["always","on-search","never"]).optional(),component:o.z.enum(["list-button","list-radio","carousel"]).optional(),searchLabel:o.z.string().optional(),detailsLabel:o.z.string().optional()}).optional(),search:o.z.object({enabled:o.z.boolean().optional(),value:o.z.string().optional(),button:o.z.object({label:o.z.string().optional(),position:o.z.enum(["inside","outside"]).optional()}).optional(),placeholder:o.z.string().optional(),noResultsText:o.z.string().optional(),autofocus:o.z.boolean().optional(),autocomplete:o.z.boolean().optional(),clearable:o.z.boolean().optional(),mode:o.z.enum(["address","postcode"]).default("postcode").optional(),locationButton:o.z.object({icon:o.z.string().optional(),position:o.z.enum(["left","right"]).optional()}).optional(),prefix:o.z.object({default:e.optional()}).optional(),suffix:o.z.object({default:e.optional()}).optional()}).optional(),distanceRange:o.z.object({initial:o.z.number().optional(),min:o.z.number().optional(),max:o.z.number().optional(),step:o.z.number().optional()}).optional(),mapRegion:o.z.object({strokeColor:o.z.string().optional(),fillColor:o.z.string().optional(),fillOpacity:o.z.number().optional()}).optional(),locationPin:p.optional(),markerPin:o.z.object({default:p.optional(),hover:p.optional(),selected:p.optional()}).optional(),infoWindow:o.z.object({button:o.z.object({label:o.z.string(),action:o.z.string()}).optional(),directionsLabel:o.z.string().optional()}).optional(),ordering:o.z.object({orderBy:o.z.enum(["distance","title","id"]).optional(),orderDir:o.z.enum(["asc","desc"]).optional(),preferences:o.z.array(o.z.object({ids:o.z.string().array(),filters:o.z.object({postcodes:o.z.string().array().optional()}).optional()}))}).optional(),clickableItems:o.z.object({actionId:o.z.string()}).optional(),forcePolyfills:o.z.boolean().optional()}).optional(),calendar:o.z.object({current:o.z.object({month:o.z.number().min(0).max(11).optional(),year:o.z.number().optional()}).optional(),range:o.z.object({min:s.optional(),max:s.optional(),enabled:o.z.array(s).optional(),disabled:o.z.array(s).optional()}).optional(),time:o.z.object({label:o.z.string().optional(),format:o.z.enum(["12h","24h"]).optional(),component:o.z.enum(["carousel","list"]).optional()}).optional(),api:o.z.object({version:o.z.string().optional(),url:o.z.string().url().nonempty(),organizationId:o.z.string().nonempty(),availability:o.z.object({filters:m.GetAvailabilityFilters,options:m.GetAvailabilityOptions.optional()}).optional(),slots:o.z.object({filters:b.GetSlotFilters,options:b.GetSlotOptions.optional()}).optional()}).optional()}).optional(),stripe:o.z.object({publishableKey:o.z.string().nonempty(),mode:o.z.enum(["payment","setup"]).default("payment").optional(),createPaymentIntentEndpoint:o.z.string().url().optional(),createSetupIntentEndpoint:o.z.string().url().optional(),clientSecret:o.z.string().optional(),paymentIntentId:o.z.string().optional(),setupIntentId:o.z.string().optional(),amount:o.z.number().optional(),currency:o.z.string().default("usd").optional(),connectedAccountId:o.z.string().optional(),returnUrl:o.z.string().url().optional(),headers:o.z.record(o.z.string(),o.z.string()).optional(),paymentIntentParams:o.z.record(o.z.string(),o.z.unknown()).optional(),locale:o.z.string().optional(),appearance:o.z.object({theme:o.z.enum(["stripe","night","flat"]).optional(),variables:o.z.record(o.z.string(),o.z.string()).optional(),rules:o.z.record(o.z.string(),o.z.record(o.z.string(),o.z.string())).optional()}).optional(),layout:o.z.enum(["tabs","accordion","auto"]).optional(),elementOptions:o.z.record(o.z.string(),o.z.unknown()).optional(),terms:o.z.object({card:o.z.enum(["auto","always","never"]).optional()}).optional(),customTermsText:o.z.string().optional(),openDialogButtonText:o.z.string().optional(),confirmButtonText:o.z.string().optional(),cancelButtonText:o.z.string().optional(),authorizedText:o.z.string().optional(),successMessage:o.z.string().optional(),setupSuccessMessage:o.z.string().optional(),infoText:o.z.string().optional(),amountLabel:o.z.string().optional(),loadingElementText:o.z.string().optional(),showAmount:o.z.boolean().optional(),dialogTitle:o.z.string().optional(),autoOpenDialog:o.z.boolean().optional(),actionId:o.z.string().optional()}).optional()}).optional(),dependsOn:x.optional(),dependentBehavior:o.z.enum(["hidden","disabled"]).optional(),customError:o.z.object({required:o.z.string().optional(),invalid:o.z.string().optional(),minLength:o.z.string().optional(),maxLength:o.z.string().optional(),minValue:o.z.string().optional(),maxValue:o.z.string().optional(),mismatch:o.z.string().optional()}).optional()}),E=o.z.enum(["INVALID_DATA","INVALID_ACTION","STEP_NOT_FOUND","UNKNOWN_ERROR","APPOINTMENT_INVALID_DATA","APPOINTMENT_BUSY_SLOT","APPOINTMENT_OUT_OF_DATE","APPOINTMENT_UNKNOWN_ERROR","LEAD_INVALID_DATA","LEAD_UNKNOWN_ERROR","CONTENT_INVALID_DATA","CONTENT_UNKNOWN_ERROR","CONTACT_INVALID_DATA","CONTACT_UNKNOWN_ERROR","LOST_OPPORTUNITY_INVALID_DATA","LOST_OPPORTUNITY_UNKNOWN_ERROR"]),_=o.z.object({type:o.z.enum(["redirect"]),params:o.z.record(o.z.string(),o.z.any()).optional()}),j=o.z.object({trackingAction:o.z.enum(["EMIT_EVENT","SET_BASE_DATA"]).optional(),eventName:o.z.string().optional(),eventData:o.z.record(o.z.string(),o.z.any()).optional()}).catchall(o.z.any()),D=o.z.object({id:o.z.string().nonempty(),number:o.z.number().optional(),title:o.z.string().optional(),description:o.z.string().optional(),stageId:o.z.string().optional(),state:o.z.record(o.z.string(),o.z.any()).optional(),fields:o.z.array(O).optional(),actions:o.z.array(u).optional(),result:o.z.object({postActions:o.z.array(_).optional(),pipelines:o.z.array(o.z.object({name:o.z.string(),data:o.z.object({})})).optional(),tracking:o.z.union([j,o.z.array(j)]).optional()}).optional(),error:o.z.object({code:E,message:o.z.string().optional(),icon:o.z.string().optional(),position:o.z.enum(["top","bottom"]).optional(),fields:o.z.array(o.z.object({name:o.z.string(),type:T,value:o.z.any(),error:o.z.string()})).optional()}).optional(),isFinal:o.z.boolean().optional()}),I=o.z.object({id:o.z.string().length(24).nonempty(),organizationId:o.z.string().uuid().nonempty(),updatedAt:o.z.string().datetime().nonempty(),stages:o.z.array(o.z.object({id:o.z.string().nonempty(),name:o.z.string().nonempty()}))}),W=o.z.object({status:o.z.enum(["ok","error"]),step:D,flow:I}),Y=o.z.enum(["track"]);0&&(module.exports={Action,ActionEvent,ActionScript,ClientOptions,ColorScheme,DEFAULT_CLIENT_OPTIONS,DEFAULT_MAP_ID,ErrorCode,ErrorData,EventType,Field,Flow,FlowContext,GetStepOptions,GetStepTrigger,PostAction,Step,StepId});
1
+ /*! @onlive.ai/flow-client v0.1.271 | © 2026 Onlive.ai */
2
+ "use strict";var g=Object.defineProperty;var L=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var S=Object.prototype.hasOwnProperty;var w=(n,i)=>{for(var l in i)g(n,l,{get:i[l],enumerable:!0})},z=(n,i,l,a)=>{if(i&&typeof i=="object"||typeof i=="function")for(let r of P(i))!S.call(n,r)&&r!==l&&g(n,r,{get:()=>i[r],enumerable:!(a=L(i,r))||a.enumerable});return n};var k=n=>z(g({},"__esModule",{value:!0}),n);var q={};w(q,{Action:()=>b,ActionEvent:()=>O,ActionScript:()=>v,ClientOptions:()=>C,ColorScheme:()=>y,DEFAULT_CLIENT_OPTIONS:()=>F,DEFAULT_MAP_ID:()=>R,ErrorCode:()=>_,ErrorData:()=>A,EventType:()=>$,Field:()=>E,Flow:()=>N,FlowContext:()=>Y,GetStepOptions:()=>V,GetStepTrigger:()=>U,PostAction:()=>D,RemoteOptions:()=>h,Step:()=>I,StepId:()=>M});module.exports=k(q);var m=require("@onlive.ai/calendar"),u=require("@onlive.ai/calendar/client/client.types.js"),o=require("zod");var t=require("zod");var f=t.z.object({enabled:t.z.boolean().default(!1).optional(),conditions:t.z.custom().optional(),data:t.z.custom().optional(),removeExtraneousValues:t.z.boolean().default(!0).optional(),allowBotTraffic:t.z.boolean().default(!1).optional(),adapters:t.z.array(t.z.string()).default([]).optional(),apiUrl:t.z.string().url().optional(),emitters:t.z.object({windowEvent:t.z.boolean().optional(),dataLayer:t.z.boolean().optional(),windowPostMessage:t.z.boolean().optional()}).optional()});var R="bf585082a22fad962b4cbc08",y=(a=>(a.DARK="DARK",a.FOLLOW_SYSTEM="FOLLOW_SYSTEM",a.LIGHT="LIGHT",a))(y||{}),F={tracking:{removeExtraneousValues:!0,apiUrl:"https://srvless.onlive.site/tracking",data:{widget_type:"OnliveAppFlow"}}},M=o.z.string().nonempty(),C=o.z.object({baseUrl:o.z.string().url().nonempty(),flowId:o.z.string().length(24).nonempty(),organizationId:o.z.string().uuid().nonempty(),lang:o.z.string().length(2).nonempty(),tracking:f.optional(),devMode:o.z.boolean().default(!1).optional()}),V=o.z.object({state:o.z.record(o.z.string(),o.z.any()).optional(),fields:o.z.record(o.z.string(),o.z.any()).optional()}),U=o.z.object({currentStepId:o.z.string().nonempty(),actionId:o.z.string().nonempty()}),T=o.z.enum(["text","boolean","number","first_name","last_name","name","email","phone","mobile_phone","date","time","datetime","password","url","color","object","void","location","availability"]),G=o.z.object({name:o.z.string().optional(),value:o.z.string().optional(),icon:o.z.string().optional(),type:o.z.enum(["url","email","phone"]).optional()}),B=o.z.object({lat:o.z.number().min(-90).max(90),lng:o.z.number().min(-180).max(180),meta:o.z.record(o.z.string(),o.z.any()).optional(),properties:o.z.record(o.z.string(),G).optional()}),K=o.z.object({datetime:o.z.string().datetime(),meta:o.z.record(o.z.string(),o.z.any()).optional()}),c=o.z.union([o.z.string(),o.z.number(),o.z.boolean(),B,K]),p=o.z.object({content:o.z.object({icon:o.z.string().optional(),url:o.z.string().url().optional(),width:o.z.string().optional(),height:o.z.string().optional(),scale:o.z.number().optional()}).optional(),background:o.z.string().optional(),glyph:o.z.object({color:o.z.string().optional(),url:o.z.string().url().optional(),icon:o.z.string().optional()}).optional(),borderColor:o.z.string().optional(),scale:o.z.number().optional()}),s=o.z.custom(n=>typeof n=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(n),{message:"Date must be in 'YYYY-MM-DD' format"}),e=o.z.object({text:o.z.string().optional(),icon:o.z.string().optional()}),d=o.z.object({fieldName:o.z.string().nonempty(),value:c.optional(),operator:o.z.enum(["exists","equals","not-equals","contains","not-contains","greater-than","less-than"]).optional()}),W=o.z.object({and:o.z.array(d).optional(),or:o.z.array(d).optional()}),x=o.z.array(o.z.union([d,W])),v=o.z.object({src:o.z.string().url(),preload:o.z.boolean().optional(),name:o.z.string().nonempty(),function:o.z.string().nonempty(),params:o.z.array(o.z.record(o.z.string(),o.z.any())).optional()}),O=o.z.object({name:o.z.enum(["organization_call","close_panel","retry_first_step","retry_next_step","organization_chat"]),params:o.z.record(o.z.string(),o.z.any()).optional()}),b=o.z.object({id:o.z.string().nonempty(),type:o.z.enum(["submit","navigate","link","back","dispatcher","script"]),label:o.z.string().nonempty(),variant:o.z.enum(["primary","secondary","success","danger","warning","info"]),outline:o.z.boolean().optional(),position:o.z.enum(["top","bottom"]).optional(),url:o.z.string().url().optional(),target:o.z.enum(["_self","_blank","_parent","_top"]).optional(),loadingBehavior:o.z.enum(["none","spinner","disabled"]).optional(),prefix:e.optional(),suffix:e.optional(),caption:o.z.string().optional(),scripts:v.array().optional(),events:O.array().optional()}),A=o.z.object({message:o.z.string().optional(),icon:o.z.string().optional(),position:o.z.enum(["top","bottom"]).optional(),kind:o.z.enum(["initial-loading","step-loading","step-validation","field-loading"]).optional(),actions:o.z.array(b).optional()}),h=o.z.object({stepId:o.z.string().nonempty(),name:o.z.string().nonempty(),behavior:o.z.enum(["append","replace"]),state:o.z.record(o.z.string(),o.z.any()).optional()}),E=o.z.object({name:o.z.string().nonempty(),label:o.z.string().optional(),description:o.z.string().optional(),value:o.z.union([c,o.z.array(c)]).optional(),type:T,component:o.z.enum(["input","phone_input","textarea","select","radio","checkbox","switch","rating","carousel","grid","button","label","map","calendar","stripe_payment"]).optional(),disabled:o.z.boolean().optional(),readonly:o.z.boolean().optional(),multiple:o.z.boolean().optional(),placeholder:o.z.string().optional(),options:o.z.array(o.z.object({id:o.z.string().optional(),label:o.z.string().nonempty(),value:c.optional(),image:o.z.string().url().optional(),description:o.z.string().optional(),disabled:o.z.boolean().optional(),attributes:o.z.record(o.z.string(),o.z.any()).optional(),actions:o.z.array(b).optional(),dependsOn:x.optional()})).optional(),required:o.z.boolean().optional(),configuration:o.z.object({generic:o.z.object({attributes:o.z.record(o.z.string(),o.z.any()).optional(),error:o.z.object({loading:A.optional(),validation:o.z.object({icon:o.z.string().optional(),showOn:o.z.enum(["input","blur"]).optional()}).optional()})}).optional(),input:o.z.object({min:o.z.union([o.z.number(),o.z.string()]).optional(),max:o.z.union([o.z.number(),o.z.string()]).optional(),step:o.z.number().optional(),pattern:o.z.string().refine(n=>{try{return new RegExp(n),!0}catch{return!1}},"Invalid regex pattern").optional(),minLength:o.z.number().optional(),maxLength:o.z.number().optional(),exactLength:o.z.number().optional(),prefix:o.z.object({default:e.optional(),success:e.optional(),error:e.optional()}).optional(),suffix:o.z.object({default:e.optional(),success:e.optional(),error:e.optional()}).optional(),clearable:o.z.boolean().optional(),floatingLabel:o.z.boolean().optional()}).optional(),phoneInput:o.z.object({includePrefixValue:o.z.boolean().optional(),showFlag:o.z.boolean().optional(),showCode:o.z.boolean().optional(),prefixLabel:o.z.string().optional(),lockedPrefix:o.z.boolean().optional(),countries:o.z.array(o.z.string()).optional(),defaultPrefix:o.z.string().optional(),autoDetectCountry:o.z.boolean().optional()}).optional(),textarea:o.z.object({minLength:o.z.number().optional(),maxLength:o.z.number().optional(),exactLength:o.z.number().optional(),rows:o.z.number().optional()}).optional(),checkbox:o.z.object({layout:o.z.enum(["horizontal","vertical"])}).optional(),rating:o.z.object({icons:o.z.array(o.z.string()).optional(),iconMode:o.z.enum(["individual","unified"]).optional(),colors:o.z.array(o.z.string()).optional(),colorMode:o.z.enum(["unified","individual"]).optional(),color:o.z.string().optional(),precision:o.z.number().optional(),labels:o.z.object({start:o.z.string().optional(),end:o.z.string().optional(),position:o.z.enum(["top","bottom"]).optional()}).optional()}).optional(),carousel:o.z.object({loop:o.z.boolean().optional(),mouseDragging:o.z.boolean().optional(),itemsPerPage:o.z.object({small:o.z.number(),medium:o.z.number().optional(),large:o.z.number().optional()}).optional(),itemsPerMove:o.z.object({small:o.z.number(),medium:o.z.number().optional(),large:o.z.number().optional()}).optional(),showArrows:o.z.boolean().optional(),showDots:o.z.boolean().optional(),autoplay:o.z.boolean().optional(),autoplaySpeed:o.z.number().optional(),showcaseMode:o.z.boolean().optional(),clickableItems:o.z.object({actionId:o.z.string()}).optional(),labels:o.z.object({position:o.z.enum(["top","bottom","nav-top","nav-bottom","static-top","static-bottom"]).optional(),button:o.z.object({label:o.z.string(),actionId:o.z.string()}).optional()}).optional()}).optional(),grid:o.z.object({search:o.z.object({enabled:o.z.boolean().optional(),value:o.z.string().optional(),button:o.z.object({label:o.z.string().optional()}).optional(),placeholder:o.z.string().optional(),noResultsText:o.z.string().optional(),clearable:o.z.boolean().optional()}).optional(),itemsPerRow:o.z.object({small:o.z.number(),medium:o.z.number().optional(),large:o.z.number().optional()}).optional(),itemsPerPage:o.z.object({small:o.z.number(),medium:o.z.number().optional(),large:o.z.number().optional()}).optional(),clickableItems:o.z.object({actionId:o.z.string()}).optional()}).optional(),map:o.z.object({apiKey:o.z.string().optional(),mapId:o.z.string().optional(),region:o.z.string().length(2).optional(),colorScheme:o.z.nativeEnum(y).optional(),center:o.z.object({lat:o.z.number().min(-90).max(90),lng:o.z.number().min(-180).max(180)}).optional(),showMap:o.z.enum(["always","on-search","never"]).optional(),zoom:o.z.object({initial:o.z.number().optional(),focus:o.z.number().optional(),max:o.z.number().optional(),min:o.z.number().optional()}).optional(),controls:o.z.object({fullscreen:o.z.boolean().optional(),mapType:o.z.boolean().optional(),zoom:o.z.boolean().optional(),rotate:o.z.boolean().optional(),scale:o.z.boolean().optional(),streetView:o.z.boolean().optional()}).optional(),initialLocations:o.z.number().optional(),maxLocations:o.z.number().optional(),distanceUnit:o.z.enum(["km","mi"]).optional(),distanceFormat:o.z.enum(["short","long"]).optional(),distanceDecimals:o.z.number().optional(),options:o.z.object({show:o.z.enum(["always","on-search","never"]).optional(),component:o.z.enum(["list-button","list-radio","carousel"]).optional(),searchLabel:o.z.string().optional(),detailsLabel:o.z.string().optional()}).optional(),search:o.z.object({enabled:o.z.boolean().optional(),value:o.z.string().optional(),button:o.z.object({label:o.z.string().optional(),position:o.z.enum(["inside","outside"]).optional()}).optional(),placeholder:o.z.string().optional(),noResultsText:o.z.string().optional(),autofocus:o.z.boolean().optional(),autocomplete:o.z.boolean().optional(),clearable:o.z.boolean().optional(),mode:o.z.enum(["address","postcode"]).default("postcode").optional(),locationButton:o.z.object({icon:o.z.string().optional(),position:o.z.enum(["left","right"]).optional()}).optional(),prefix:o.z.object({default:e.optional()}).optional(),suffix:o.z.object({default:e.optional()}).optional()}).optional(),distanceRange:o.z.object({initial:o.z.number().optional(),min:o.z.number().optional(),max:o.z.number().optional(),step:o.z.number().optional()}).optional(),mapRegion:o.z.object({strokeColor:o.z.string().optional(),fillColor:o.z.string().optional(),fillOpacity:o.z.number().optional()}).optional(),locationPin:p.optional(),markerPin:o.z.object({default:p.optional(),hover:p.optional(),selected:p.optional()}).optional(),infoWindow:o.z.object({button:o.z.object({label:o.z.string(),action:o.z.string()}).optional(),directionsLabel:o.z.string().optional()}).optional(),ordering:o.z.object({orderBy:o.z.enum(["distance","title","id"]).optional(),orderDir:o.z.enum(["asc","desc"]).optional(),preferences:o.z.array(o.z.object({ids:o.z.string().array(),filters:o.z.object({postcodes:o.z.string().array().optional()}).optional()}))}).optional(),clickableItems:o.z.object({actionId:o.z.string()}).optional(),forcePolyfills:o.z.boolean().optional()}).optional(),calendar:o.z.object({current:o.z.object({month:o.z.number().min(0).max(11).optional(),year:o.z.number().optional()}).optional(),range:o.z.object({min:s.optional(),max:s.optional(),enabled:o.z.array(s).optional(),disabled:o.z.array(s).optional()}).optional(),time:o.z.object({label:o.z.string().optional(),format:o.z.enum(["12h","24h"]).optional(),component:o.z.enum(["carousel","list"]).optional()}).optional(),api:o.z.object({version:o.z.string().optional(),url:o.z.string().url().nonempty(),organizationId:o.z.string().nonempty(),availability:o.z.object({filters:m.GetAvailabilityFilters,options:m.GetAvailabilityOptions.optional()}).optional(),slots:o.z.object({filters:u.GetSlotFilters,options:u.GetSlotOptions.optional()}).optional()}).optional()}).optional(),stripe:o.z.object({publishableKey:o.z.string().nonempty(),mode:o.z.enum(["payment","setup"]).default("payment").optional(),createPaymentIntentEndpoint:o.z.string().url().optional(),createSetupIntentEndpoint:o.z.string().url().optional(),clientSecret:o.z.string().optional(),paymentIntentId:o.z.string().optional(),setupIntentId:o.z.string().optional(),amount:o.z.number().optional(),currency:o.z.string().default("usd").optional(),connectedAccountId:o.z.string().optional(),returnUrl:o.z.string().url().optional(),headers:o.z.record(o.z.string(),o.z.string()).optional(),paymentIntentParams:o.z.record(o.z.string(),o.z.unknown()).optional(),locale:o.z.string().optional(),appearance:o.z.object({theme:o.z.enum(["stripe","night","flat"]).optional(),variables:o.z.record(o.z.string(),o.z.string()).optional(),rules:o.z.record(o.z.string(),o.z.record(o.z.string(),o.z.string())).optional()}).optional(),layout:o.z.enum(["tabs","accordion","auto"]).optional(),elementOptions:o.z.record(o.z.string(),o.z.unknown()).optional(),terms:o.z.object({card:o.z.enum(["auto","always","never"]).optional()}).optional(),customTermsText:o.z.string().optional(),openDialogButtonText:o.z.string().optional(),confirmButtonText:o.z.string().optional(),cancelButtonText:o.z.string().optional(),authorizedText:o.z.string().optional(),successMessage:o.z.string().optional(),setupSuccessMessage:o.z.string().optional(),infoText:o.z.string().optional(),amountLabel:o.z.string().optional(),loadingElementText:o.z.string().optional(),showAmount:o.z.boolean().optional(),dialogTitle:o.z.string().optional(),autoOpenDialog:o.z.boolean().optional(),actionId:o.z.string().optional()}).optional()}).optional(),remoteOptions:h.optional(),dependsOn:x.optional(),dependentBehavior:o.z.enum(["hidden","disabled"]).optional(),customError:o.z.object({required:o.z.string().optional(),invalid:o.z.string().optional(),minLength:o.z.string().optional(),maxLength:o.z.string().optional(),minValue:o.z.string().optional(),maxValue:o.z.string().optional(),mismatch:o.z.string().optional()}).optional()}),_=o.z.enum(["INVALID_DATA","INVALID_ACTION","STEP_NOT_FOUND","UNKNOWN_ERROR","APPOINTMENT_INVALID_DATA","APPOINTMENT_BUSY_SLOT","APPOINTMENT_OUT_OF_DATE","APPOINTMENT_UNKNOWN_ERROR","LEAD_INVALID_DATA","LEAD_UNKNOWN_ERROR","CONTENT_INVALID_DATA","CONTENT_UNKNOWN_ERROR","CONTACT_INVALID_DATA","CONTACT_UNKNOWN_ERROR","LOST_OPPORTUNITY_INVALID_DATA","LOST_OPPORTUNITY_UNKNOWN_ERROR"]),D=o.z.object({type:o.z.enum(["redirect"]),params:o.z.record(o.z.string(),o.z.any()).optional()}),j=o.z.object({trackingAction:o.z.enum(["EMIT_EVENT","SET_BASE_DATA"]).optional(),eventName:o.z.string().optional(),eventData:o.z.record(o.z.string(),o.z.any()).optional()}).catchall(o.z.any()),I=o.z.object({id:o.z.string().nonempty(),number:o.z.number().optional(),title:o.z.string().optional(),description:o.z.string().optional(),stageId:o.z.string().optional(),state:o.z.record(o.z.string(),o.z.any()).optional(),fields:o.z.array(E).optional(),actions:o.z.array(b).optional(),result:o.z.object({postActions:o.z.array(D).optional(),pipelines:o.z.array(o.z.object({name:o.z.string(),data:o.z.object({})})).optional(),tracking:o.z.union([j,o.z.array(j)]).optional()}).optional(),error:o.z.object({code:_,message:o.z.string().optional(),icon:o.z.string().optional(),position:o.z.enum(["top","bottom"]).optional(),fields:o.z.array(o.z.object({name:o.z.string(),type:T,value:o.z.any(),error:o.z.string()})).optional()}).optional(),isFinal:o.z.boolean().optional()}),N=o.z.object({id:o.z.string().length(24).nonempty(),organizationId:o.z.string().uuid().nonempty(),updatedAt:o.z.string().datetime().nonempty(),stages:o.z.array(o.z.object({id:o.z.string().nonempty(),name:o.z.string().nonempty()}))}),Y=o.z.object({status:o.z.enum(["ok","error"]),step:I,flow:N}),$=o.z.enum(["track"]);0&&(module.exports={Action,ActionEvent,ActionScript,ClientOptions,ColorScheme,DEFAULT_CLIENT_OPTIONS,DEFAULT_MAP_ID,ErrorCode,ErrorData,EventType,Field,Flow,FlowContext,GetStepOptions,GetStepTrigger,PostAction,RemoteOptions,Step,StepId});