@kizenapps/cli 0.15.0 → 0.16.0

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.
@@ -2,4 +2,4 @@ import{n as e}from"./rolldown-runtime-DF2fYuay.js";import{A as t,j as n,k as r,y
2
2
  @scope {
3
3
  ${o??``}
4
4
  }
5
- `,sanitizedHtml:s,outputUIRef:i,interactableScriptRef:a}},er=(e,t,n,r,i={})=>{let a=(0,H.useMemo)(()=>t?.event_scripts??{},[t]),o=(0,H.useCallback)(t=>{if(t.preventDefault(),t.stopPropagation(),!r){let n=t.target.getAttribute(`data-script`);n&&a[n]&&e(a[n],{...i})}},[r,e,a,i]);(0,H.useEffect)(()=>{let e=n?.current;return e&&e.addEventListener(`click`,o),()=>{e&&e.removeEventListener(`click`,o)}},[o,t,n])},tr=(e,t,n)=>{let r=e?.iframe_url,i=e?.script,a=e?.callback,o=e?.args,{showToast:s}=Q(),{t:c}=Z(),l=(0,H.useRef)(null),[u,{pending:d}]=Zn({onError:e=>{s({message:`${c(`Plugin error:`)} ${e?.message??``}`,variant:`failure`})},scriptUIRef:l,plugin:e}),f=(0,H.useMemo)(()=>{let e=new URLSearchParams(t);return{...Object.fromEntries(e),...o}},[t,o]),{outputUIRef:p,scopedCss:m,sanitizedHtml:h,interactableScriptRef:g}=$n(e,f);er(u,e,l,d);let _=(0,H.useRef)(!1);(0,H.useEffect)(()=>{!r&&!_.current&&i&&!n&&(_.current=!0,u(i,f))},[r,u,i,f,n]);let v=(0,H.useCallback)(e=>{let t=e.data;if(t?.type===`kizen:plugin_callback`){let e=t.query;a&&u(a,e)}},[u,a]);return(0,H.useEffect)(()=>(window.addEventListener(`message`,v),()=>{window.removeEventListener(`message`,v)}),[v]),{scriptUIRef:l,outputUIRef:p,scopedCss:m,sanitizedHtml:h,interactableScriptRef:g,iframeURL:r,pending:d}},nr=(0,H.createContext)(null),rr=({children:e})=>{let[t,n]=(0,H.useState)([]),[r,i]=(0,H.useState)(!1),a=(0,H.useCallback)((e,t)=>{n(n=>{let r=[e,...n.filter(t=>t!==e)];return t?.(r),r})},[]),o=(0,H.useMemo)(()=>[...t].reverse().reduce((e,t,n)=>({...e,[t]:n}),{}),[t]);return(0,H.useEffect)(()=>{let e=new MutationObserver(()=>{document.querySelector(`div[role="dialog"]`)?i(!0):i(!1)});return e.observe(document.body,{childList:!0}),()=>{e.disconnect()}},[]),(0,X.jsx)(nr.Provider,{value:{touchFloatingFrame:a,floatingFrameOffset:o},children:e(r)})},ir=()=>{let e=(0,H.useContext)(nr);if(!e)throw Error(`useFloatingFrame must be used within a FloatingFrameWrapper`);return e},ar=[`^/$`,`^/login*`,`/settings/mine$`,`/settings/others$`,`/create-new-business$`,`^/choose-business*`,`^/inactive-business$`,`^/reset$`,`/welcome$`,`/embed/*`,`/create-new-business$`,`/businessbuilder`],or=[`https://js.stripe.com`],sr=(e,t,n,r)=>e<n?t<r?`top-left`:`top-right`:t<r?`bottom-left`:`bottom-right`,cr=e=>{let{currentWindow:t,pathname:n,id:r,frameHeaderSize:i,defaultPositionGap:a=0,viewportHeight:o=window.innerHeight,hiddenByModal:s,updateEmployeeConfig:c}=e,l=(0,H.useRef)(null),u=(0,H.useRef)(!1),{showToast:d}=Q(),{t:f}=Z(),{installedPluginAPINamesToIds:p,clientObject:m}=bn(),{touchFloatingFrame:h,floatingFrameOffset:g}=ir(),_=g[r]??-1,v=t.minimized_style===`none`,y=t.minimized_style===`circle`||v,b=t.default_position===`bottom-right-fixed`,x=t.default_position===`bottom-left-fixed`,S=b||x,C=t.minimized_config?.icon??`action-drag-handle`,w=t.minimized_config?.color??`blue`,T=(0,H.useMemo)(()=>{let e=n.split(`/`),t=e[1],r=e[2];if(t===`client`)return{objectId:m?.id,entityId:r};if(t===`custom-objects`)return{objectId:r,entityId:e[3]}},[m,n]),E=(0,H.useMemo)(()=>{let e=t.match,r=t.ignore;return!!(e?.length&&!e.some(e=>new RegExp(e).test(n))||ar.concat(r??[]).filter(Boolean).some(e=>{try{return new RegExp(e).test(n)}catch{return!1}}))},[t,n]),D=t.plugin_api_name?p[t.plugin_api_name]:``,[O,k]=(0,H.useState)(()=>t.employee_config?.[r]?.minimized??!1),A=t.script,j=t.type,M=t.args,N=t.message_handler,P=t.width??0,[F,I]=(0,H.useState)(()=>{let e=window.innerHeight;return Math.min(t.height??0,e-i)}),[L,R]=(0,H.useState)(null),ee=t.default_position,te=(0,H.useCallback)(e=>{let n=t.employee_config?.[r]?.position;if(!n?.quadrant){let t=window.innerWidth-P,r=window.innerHeight-F-i;if(O&&!e&&(r=window.innerHeight-i),n)try{let e=n;return e.left>t&&(e.left=t),e.top>r&&(e.top=r),e.left<0&&(e.left=a),e.top<0&&(e.top=a),e}catch{}let o=t;return ee===`bottom-left`&&(o=a),{left:o,top:r-a}}else if(n.quadrant===`top-left`){let e=n.deltas?.left??0,t=n.deltas?.top??0;return{...n,left:e,top:t}}else if(n.quadrant===`top-right`){let e=window.innerWidth-P-(n.deltas?.right??0),t=n.deltas?.top??0;return{...n,left:e,top:t}}else if(n.quadrant===`bottom-left`){let e=n.deltas?.left??0,t=window.innerHeight-(O?0:F)-(n.deltas?.bottom??0)-i;return{...n,left:e,top:t}}else{let e=window.innerWidth-P-(n.deltas?.right??0),t=window.innerHeight-(O?0:F)-(n.deltas?.bottom??0)-i;return{...n,left:e,top:t}}},[t,r,ee,O,P,F,i,a]),z=(0,H.useCallback)(e=>{let t=te(e),n=[`bottom-right`,`bottom-left`].includes(t.quadrant??``)&&O?0:F;return t.left<0?t.left=0:t.left>window.innerWidth-P&&(t.left=window.innerWidth-P),t.top<0?t.top=0:t.top>window.innerHeight-n&&(t.top=window.innerHeight-n),t},[te,P,F,O]);(0,H.useEffect)(()=>{let e=t.height??0;if(e>o){I(o-i);let e=te(!0);e.top=0,R(e)}else I(e)},[t.height,te,o,i]);let[B,ne]=(0,H.useState)(O),[re,ie]=(0,H.useState)(O&&y),ae=F*5e-4*1e3,V=e=>{k(e),e&&y?setTimeout(()=>{ie(e)},ae):y&&ie(e),s?setTimeout(()=>{ne(e)},ae):ne(e),(L?.quadrant===`bottom-left`||L?.quadrant===`bottom-right`)&&R(e?e=>e?{...e,top:e.top+F}:null:e=>{if(!e)return null;let t=window.innerHeight,n=e.top>=0&&e.top+F<=t;return{...e,top:n?e.top:e.top-F}}),c?.(r,O,L)({minimized:e})},[U,{pending:se,hidden:ce,indicator:le,triggerHidden:ue,hideHeader:de}]=Xn({onError:e=>{d({message:`${f(`Plugin error:`)} ${e?.message??``}`,variant:`failure`})},scriptUIRef:l,plugin:t,onChangeMinimized:e=>{V(e)}}),fe=(0,H.useMemo)(()=>de&&S,[de,S]),pe=(0,H.useMemo)(()=>{if(!L)return`top`;let{left:e,top:t}=L;return window.innerWidth-(e+P)<40?`left`:t<40?`bottom`:`top`},[L,P]),me=(0,H.useCallback)(()=>{let e=x?`left`:`right`,n=`${t.plugin_api_name}-${t.api_name}-trigger-${e}`;return document.getElementById(n)},[x,t]),W=(0,H.useCallback)(()=>{if(!S)return;let e=me();if(!e)return;let t=e.getBoundingClientRect(),n=O?0:F,r=fe?0:i,o=t.top-(n+r)-a,s=x?t.left:t.right-P,c=n+r,l=Math.max(0,window.innerWidth-P),u=Math.max(0,window.innerHeight-c);s=Math.min(Math.max(0,s),l),o=Math.min(Math.max(0,o),u),R({left:s,top:o,quadrant:x?`bottom-left`:`bottom-right`,deltas:{top:o,left:s,right:window.innerWidth-(s+P),bottom:window.innerHeight-(o+c)}})},[S,x,F,O,P,fe,me,i,a]);(0,H.useEffect)(()=>{S&&W()},[S,F,O,W]),(0,H.useEffect)(()=>{if(!S)return;W();let e=new ResizeObserver(()=>{W()});return e.observe(document.body),()=>{e.disconnect()}},[S,W]),(0,H.useEffect)(()=>{!u.current&&A&&j===`script`&&!E&&(u.current=!0,U(A,{...M}))},[U,A,j,M,E]),(0,H.useEffect)(()=>{let e=e=>{let n=e;if(n?.detail?.recipient?.frame===t.api_name){let e=n.detail;if(e.recipient?.plugin!==t.plugin_api_name)return;e.recipient.script&&t.event_scripts?.[e.recipient.script]&&U(t.event_scripts[e.recipient.script]??``,{...e.args,...M,...T})}};return window.addEventListener(oe,e),()=>{window.removeEventListener(oe,e)}},[t,U,M,T]);let[he,ge]=(0,H.useState)(!1),_e=(e,t)=>{ge(!1),h(r);let n=window.innerWidth,i=window.innerHeight;if(t.node){let e=t.node.getBoundingClientRect(),a=e.left,o=e.top,s=o+e.height,l=a+e.width,u=o,d=i-s,f=a,p=n-l,m={left:a,right:l,top:o,quadrant:sr(u,f,d,p),deltas:{top:u,bottom:d,left:f,right:p}};R(m),c?.(r,O,L)({position:m})}};(0,H.useEffect)(()=>{let e=()=>{S?W():R(z(!1))};return window.addEventListener(`resize`,e),()=>{window.removeEventListener(`resize`,e)}},[S,W,z]),er(U,t,l,se,M),(0,H.useEffect)(()=>{let e=e=>{e.source!==window&&N&&!or.includes(e.origin)&&U(N,{...M,eventData:e.data})};return window.addEventListener(`message`,e),()=>{window.removeEventListener(`message`,e)}},[U,M,N]);let{outputUIRef:ve,scopedCss:ye,sanitizedHtml:be,interactableScriptRef:xe}=$n(t,{}),Se=B?ce||E||s:ce||E,Ce=`floating-window-parent--${r}`,we=`floating-drag-handle--${r}`,Te=`floating-window-content--${r}`,G=t.employee_config?.[r]?.position?.quadrant?.split(`-`)[1]===`right`?`right`:`left`;x?G=`left`:b&&(G=`right`);let K=t.minimized_config?.customIcon,Ee=null;return K?.startsWith(`data:image/`)&&(Ee=({className:e=``})=>(0,X.jsx)(`img`,{src:K,alt:t.title||`Open Frame`,className:`object-cover select-none pointer-events-none ${e}`})),L||R(z(!1)),{circleProps:{id:r,side:G,circleIcon:C,CustomIcon:Ee,circleColor:w,onClick:()=>{V(!O)},hidden:!!(Se||E||v||ue)},parentProps:{className:Ce,dragging:he,hidden:Se||re||E||v},draggableProps:{onStop:_e,onStart:()=>{ge(!0)},bounds:`.${Ce}`,handle:`.${we}`,defaultPosition:{x:L?.left??0,y:L?.top??0},position:{x:L?.left??0,y:L?.top??0},disabled:S},floatProps:{pending:se,width:P,dragging:he,height:F,isCircle:y&&O},contentProps:{className:Te,dragging:he,solid:!0},minimized:O,pending:se,indicator:le,hideHeader:fe,isFixed:S,isCircle:y,outputUIRef:ve,scopedCss:ye,sanitizedHtml:be,interactableScriptRef:xe,tooltipPosition:pe,currentPluginId:D,setMinimized:V,dragHandleClassName:we,height:F,script:A,dragging:he,frameOffset:_,scriptUIRef:l}},lr=()=>{(0,H.useEffect)(()=>{let e=null,t=t=>{if(!t.detail?.location)return;let n=te(t.detail.location);n!==e&&(e=n,document.querySelectorAll(`iframe[id^=${k}-]`).forEach(e=>{let n=null;try{n=new URL(e.src,window.location.href).origin}catch(e){ee(`script-runner-logging`)&&console.warn(`Failed to parse iframe src for location change message target origin:`,e),n=null}n&&e.contentWindow?.postMessage({action:M,location:t.detail?.location},n)}))};return window.addEventListener(A,t),()=>{window.removeEventListener(A,t)}},[])},ur=new E,dr=({children:e})=>(0,H.useContext)(x)?(0,X.jsx)(X.Fragment,{children:e}):(0,X.jsx)(f,{client:ur,children:e}),fr=e=>{let{children:t,bootstrapPlugins:n=[],userConfigs:r=[],user:i,teamMember:a,business:o,clientObject:s,onNavigate:c,modal:l,monitoringExceptionHelper:u,showToast:d,clearToasts:f,performRequest:p,appPath:m,hideFramesOnModal:h=!0,createFileId:g,performFileUpload:_,t:v}=e;return lr(),(0,X.jsx)(dr,{children:(0,X.jsx)(yn,{bootstrapPlugins:n,userConfigs:r,user:i,teamMember:a,business:o,clientObject:s,appPath:m,children:({hasFinishedBootstrapping:e,waitingOnRouteScript:n})=>(0,X.jsx)(Rn,{t:v,children:(0,X.jsx)(Sn,{children:r=>(0,X.jsx)(jn,{onNavigate:c,children:(0,X.jsx)(Tn,{...l,children:i=>(0,X.jsx)(On,{monitoringExceptionHelper:u,children:(0,X.jsx)(gn,{children:(0,X.jsx)(pn,{children:(0,X.jsx)(Hn,{showToast:d,clearToasts:f,children:(0,X.jsx)(rr,{children:a=>(0,X.jsx)(Pn,{performRequest:p,createFileId:g,performFileUpload:_,children:t({...i,showLoadingIndicator:r,hasFinishedBootstrapping:e,waitingOnRouteScript:n,hiddenByModal:h?a:!1})})})})})})})})})})})})})},pr=(0,H.createContext)(null),mr=pr.Provider,hr=(e,t)=>{if(e===`custom_object`)return t?.id},gr=(e,t)=>{if(e.type===`custom_object`)return e.allow_multiple?(t?.value??[]).length>0:!!t?.value?.id;if(e.type===`field`)return e.allow_multiple?(t?.value??[]).length>0:!!t?.value?.value;if(e.type===`text`)return!!(t?.value??``).trim();if(e.type===`number`){let e=Number(t?.value);return!!t?.value&&!isNaN(e)}else if(e.type===`select`)return e.allow_multiple?(t?.value??[]).length>0:!!t?.value?.value;else if(e.type===`boolean`)return!!t?.value;return!1},_r=e=>{let t=(e.fields??[]).filter(e=>e.type===`custom_object`),n=(e.fields??[]).filter(e=>e.type===`container`).flatMap(e=>_r(e)),r=e.actions?.filter(e=>e.hint_object_name)??[];return[...t,...n,...r.map(e=>({...I(e),match_hint:e.hint_object_name??``}))]},vr=e=>{let t=(e.fields??[]).filter(e=>e.type===`field`),n=(e.fields??[]).filter(e=>e.type===`container`).flatMap(e=>vr(e));return[...t,...n]},yr=({children:e,config:t,value:n,onStateChange:r,disabledKeys:i,templateAssociationsByActionApiName:a,getObjectByAPIName:o,getCustomObjectDetails:s})=>{let[c,l]=(0,H.useState)(n??{}),u=(0,H.useMemo)(()=>F(t),[t]),d=(0,H.useMemo)(()=>u.reduce((e,t)=>({...e,[t.key]:{type:t.type,value:t.default}}),{}),[u]),f=(0,H.useMemo)(()=>{let e={...Object.entries(a??{}).reduce((e,[t,n])=>{let r=`action__${t}`,i=n.map(e=>({id:e.custom_object.id??``,objectName:e.custom_object.object_name??`Unknown Object`}));return i.length>0&&n.length>0&&n[0]&&(e[r]={type:`custom_object`,value:i,config:I(n[0].browser_js_action_template)}),e},{}),...c};return i?.forEach(t=>{e[t]&&(e[t]=void 0)}),e},[c,a,i]),p=(0,H.useRef)(!!n),m=(0,H.useRef)({}),[h,g]=(0,H.useState)(!n),[_,v]=(0,H.useState)({}),[y,b]=(0,H.useState)({}),[x,S]=(0,H.useState)(!1),C=(0,H.useRef)(null),[w,T]=(0,H.useState)({}),[E,D]=(0,H.useState)(!1),[O,k]=(0,H.useState)(!0),A=(0,H.useRef)({}),j=(0,H.useCallback)((e,t)=>{A.current[e]=t},[]),M=(0,H.useCallback)(e=>{typeof e==`function`?l(t=>{let n=e(t);return m.current=n,r?.(n),n}):(m.current=e,l(e),r?.(e)),T({})},[r]),N=(0,H.useCallback)((e,t)=>{if(e.startsWith(`{{`)&&e.endsWith(`}}`)){let n=e.slice(2,-2).trim();return hr(t[n]?.type,t[n]?.value)}return e},[]),P=(0,H.useCallback)(e=>N(e,f),[f,N]),{clientObject:L}=bn(),ee=(0,H.useCallback)(async e=>e===`client_client`&&L?[{id:L.id,object_name:L.objectName}]:await o(e),[L,o]),te=(0,H.useCallback)(async()=>{let e=_r(t);for(let t of e){if(!t.match_hint)continue;let e=await ee(t.match_hint);if(e?.[0]){let n={id:e[0].id,objectName:e[0].object_name};M(e=>({...e,[t.key]:{type:`custom_object`,value:t.allow_multiple?[n]:n}}))}}},[t,M,ee]),z=(0,H.useCallback)(()=>vr(t),[t]),B=(0,H.useCallback)(async(e,t)=>{let n=z(),r={};for(let i of n){if(!i.object_id)continue;let n=t??N(i.object_id,m.current);if(e&&!i.object_id.includes(e))continue;if(!r[n]&&n)try{r[n]=await s(n)}catch{}let a=r[n];if(a){let e=a.fields.find(e=>e.name===i.match_hint);e&&M(t=>({...t,[i.key]:{type:`field`,value:{value:e.id,label:e.displayName},associatedObject:{id:n,name:a.objectName}}}))}}},[N,z,M,s]),ne=(0,H.useCallback)(async e=>{let n=_r(t).find(t=>t.key===e);if(n?.match_hint){let t=``,r=(await ee(n.match_hint))?.[0];r&&(t=r.id,M(t=>({...t,[e]:{type:`custom_object`,value:{id:r.id,objectName:r.object_name}}})),t&&B(void 0,t))}},[t,M,B,ee]),re=(0,H.useCallback)(async()=>{await te(),await B(),g(!1)},[te,B]),ie=(0,H.useCallback)(()=>vr(t),[t]),ae=(0,H.useCallback)(e=>B(e),[B]),V=(0,H.useCallback)(()=>{C.current&&=(clearTimeout(C.current),null),C.current=setTimeout(()=>{S(!0)},500)},[]),U=(0,H.useCallback)(async(e,t)=>{V(),v(e=>({...e,[t]:!0})),D(!0);let n=await R(e,{...d,...f});return b(e=>(e[t]===!1&&typeof n==`boolean`&&n&&(f[t]||ne(t)),{...e,[t]:n})),v(e=>({...e,[t]:!1})),n},[f,V,ne,d]);p.current||(p.current=!0,re());let oe=(0,H.useCallback)(e=>y[e]===!1,[y]),se=(0,H.useCallback)(e=>_[e]===!0,[_]),ce=(0,H.useCallback)(e=>{if(w[e])return{message:w[e],showMessage:!0,error:!0}},[w]),le=(0,H.useMemo)(()=>{let e=(t.fields??[]).filter(e=>e.type===`container`).map(e=>e.when),n=u.map(e=>e.when);return[...e,...n].filter(Boolean)},[t,u]),ue=(0,H.useMemo)(()=>u.reduce((e,t)=>(e[t.key]=t,e),{}),[u]),de=(0,H.useCallback)((e,t,n)=>{t.add(e);let r=ue[e];r?.dependencies?.length&&r.dependencies.forEach(e=>{n.has(e)||(n.add(e),de(e,t,n))})},[ue]),fe=(0,H.useMemo)(()=>u.map(e=>{let t=new Set,n=e.dependencies??[],r=new Set;return n.forEach(e=>{de(e,t,r)}),{...e,dependencies:Array.from(t)}}),[u,de]),pe=(0,H.useCallback)(e=>{fe.filter(t=>t.dependencies.length===0?!1:t.dependencies.includes(e)&&t.key!==e).forEach(e=>{A.current[e.key]?.()})},[fe]),me=(0,H.useCallback)(async()=>{let e=(await Promise.all(u.map(async e=>e.when?await R(e.when,{...d,...f})?e:null:e))).filter(Boolean),t=0;for(let n of e)n&&n.required&&!gr(n,f[n.key])?(T(e=>({...e,[n.key]:`This field is required`})),t++):n?.validation_pattern?new RegExp(n.validation_pattern).test(f[n.key]?.value??n.default??``)||(T(e=>({...e,[n.key]:`Value must match the pattern ${n.validation_pattern??``}`})),t++):n&&T(e=>({...e,[n.key]:void 0}));return{isValid:t===0,includedKeys:e.map(e=>e?.key).filter(e=>!!e)}},[f,u,d]);(0,H.useEffect)(()=>{V()},[V]);let W=Object.values(_).filter(Boolean).length;return!E&&le.length===0&&D(!0),E&&O&&W===0&&k(!1),(0,X.jsx)(mr,{value:{state:f,setState:M,interpolateValue:P,getNestedFields:ie,reInferFieldsForObject:ae,inferencePending:h,evaluateExpression:U,shouldHideField:oe,shouldDisableField:se,expressionsIdle:x,getFieldErrorState:ce,validateForm:me,waitingExpressionCount:W,initialExpressionsPending:O,flattenedFields:u,flattenedFieldsByKey:ue,afterFieldChange:pe,registerFieldResetter:j,disabledKeys:i??[]},children:e})},br=()=>{let e=(0,H.useContext)(pr);if(!e)throw Error(`useSetupAssistant must be used within a SetupAssistantController`);return e};function xr(e,t=!1){let n=br(),{evaluateExpression:r,shouldHideField:i,getFieldErrorState:a,disabledKeys:o}=n;(0,H.useEffect)(()=>{e.when&&r(e.when,e.key)},[e.when,e.key,r]);let s=i(e.key),c=o.includes(e.key)||t,l=a(e.key);return{...n,shouldHide:s,isDisabled:c,errorState:l}}var Sr=({field:e,disabled:t=!1})=>{let{state:n,setState:r,afterFieldChange:i,registerFieldResetter:a,isDisabled:o,shouldHide:s,errorState:c}=xr(e,t),l=n[e.key]?.value??e.default??!1,u=l===!0||l===`true`,d=(0,H.useCallback)(t=>{r(n=>({...n,[e.key]:{type:`boolean`,value:t}})),i(e.key)},[e.key,r,i]);return(0,H.useEffect)(()=>{a(e.key,()=>{d(void 0)})},[e.key,a,d]),s?null:(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,X.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer`,children:[(0,X.jsx)(`input`,{type:`checkbox`,checked:u,onChange:e=>{d(e.target.checked)},disabled:o,className:`h-3.5 w-3.5 cursor-pointer accent-blue-600`}),(0,X.jsxs)(`span`,{className:`text-[13px] ${o?`text-neutral-400`:`text-neutral-700`}`,children:[e.label,e.required&&(0,X.jsx)(`span`,{className:`text-red-500 ml-0.5`,children:`*`})]}),e.tooltip&&(0,X.jsx)(`span`,{className:`text-[11px] text-neutral-400`,title:e.tooltip,children:`?`})]}),c?.showMessage&&c.message&&(0,X.jsx)(`span`,{className:`text-[11px] text-red-500`,children:c.message})]})},Cr=({field:e,pluginApiName:t,disabled:n=!1})=>{let{shouldHide:r}=xr(e,n),i=e.columns??1;return r?null:(0,X.jsxs)(`div`,{children:[e.label&&(0,X.jsx)(`h3`,{className:`text-[14px] font-semibold text-neutral-800 mb-3 mt-4`,children:e.label}),(0,X.jsx)(`div`,{className:`gap-4`,style:{display:`grid`,gridTemplateColumns:`repeat(${String(i)}, 1fr)`},children:e.fields?.map(e=>(0,X.jsx)(Er,{field:e,pluginApiName:t,disabled:n},e.key))})]})},$=({field:e})=>e.label?(0,X.jsxs)(`label`,{className:`text-[12px] font-medium text-neutral-600`,children:[e.label,e.required&&(0,X.jsx)(`span`,{className:`text-red-500 ml-0.5`,children:`*`}),e.tooltip&&(0,X.jsx)(`span`,{className:`ml-1 text-neutral-400 cursor-help`,title:e.tooltip,children:`?`})]}):null,wr=({label:e,value:t,onChange:n,onSelect:a,options:o,loading:s,placeholder:c,disabled:l,keepOpenOnSelect:u})=>{let[d,f]=(0,H.useState)(!1),p=(0,H.useRef)(null);return(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[e&&(0,X.jsx)(`label`,{className:`text-[11px] font-semibold uppercase tracking-widest text-neutral-500`,children:e}),(0,X.jsxs)(`div`,{ref:p,className:`relative`,children:[(0,X.jsx)(r,{icon:i,className:`pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-[10px] text-neutral-400`}),(0,X.jsx)(`input`,{type:`text`,className:`w-full rounded border border-black/10 bg-white py-1.5 pl-7 pr-2.5 font-mono text-[12px] text-neutral-800 focus:border-neutral-400 focus:outline-none disabled:opacity-50`,value:t,placeholder:c,disabled:l,onChange:e=>{n(e.target.value)},onFocus:()=>{f(!0)},onBlur:()=>{f(!1)}})]}),(0,X.jsxs)(D,{anchorRef:p,open:d,children:[s&&(0,X.jsx)(`div`,{className:`px-3 py-2 text-[12px] text-neutral-400`,children:`Loading…`}),!s&&o.length===0&&t.length===0&&(0,X.jsx)(`div`,{className:`px-3 py-2 text-[12px] text-neutral-400`,children:`Start typing to search…`}),!s&&o.length===0&&t.length>0&&(0,X.jsx)(`div`,{className:`px-3 py-2 text-[12px] text-neutral-400`,children:`No results`}),!s&&o.map(e=>(0,X.jsx)(`div`,{className:`cursor-pointer px-3 py-2 text-[12px] text-neutral-800 hover:bg-neutral-100`,onClick:()=>{a(e.id,e.label),u||f(!1)},children:e.label},e.id))]})]})},Tr={container:Cr,custom_object:({field:e,disabled:t=!1})=>{let{state:n,setState:r,getNestedFields:i,reInferFieldsForObject:a,shouldDisableField:o,registerFieldResetter:s,afterFieldChange:c,isDisabled:l,shouldHide:u,errorState:d}=xr(e,t),f=o(e.key)||l,[p,m]=(0,H.useState)(``),[h,g]=(0,H.useState)([]),[_,v]=(0,H.useState)(!1),y=(0,H.useRef)(null),b=O(),x=T(),S=(0,H.useCallback)(async e=>{v(!0);try{let t=new URLSearchParams({page_size:`20`});e&&t.set(`search`,e);let n=await(await b(`/custom-objects?${t.toString()}`)).json(),r=(Array.isArray(n)?n:n.results??[]).map(e=>({id:e.id,label:e.object_name})),i=x?.business.client_object;i?.access&&(!e||i.object_name.toLowerCase().includes(e.toLowerCase()))&&r.unshift({id:i.id,label:i.object_name}),g(r)}catch{g([])}finally{v(!1)}},[b,x]),C=e.allow_multiple?n[e.key]?.value??[]:[],w=(0,H.useCallback)((t,i)=>{let a=n[e.key]?.value??[];a.some(e=>e.id===t)||(r(n=>({...n,[e.key]:{type:`custom_object`,value:[...a,{id:t,objectName:i}]}})),c(e.key),m(``))},[n,e.key,r,c]),E=(0,H.useCallback)(t=>{let i=n[e.key]?.value??[];r(n=>({...n,[e.key]:{type:`custom_object`,value:i.filter(e=>e.id!==t)}})),c(e.key)},[n,e.key,r,c]),D=e.allow_multiple?void 0:n[e.key]?.value,k=(0,H.useRef)(!1);(0,H.useEffect)(()=>{!e.allow_multiple&&D?.objectName&&!k.current&&(m(D.objectName),k.current=!0)},[e.allow_multiple,D]);let A=(0,H.useCallback)(t=>{m(t),D&&(r(t=>Object.fromEntries(Object.entries(t).filter(([t])=>t!==e.key))),c(e.key)),y.current&&clearTimeout(y.current),y.current=setTimeout(()=>{S(t)},300)},[D,e.key,r,c,S]),j=(0,H.useCallback)((t,n)=>{m(n),r(r=>({...r,[e.key]:{type:`custom_object`,value:{id:t,objectName:n}}}));let o=i().filter(t=>t.object_id?.includes(e.key));for(let e of o)r(t=>Object.fromEntries(Object.entries(t).filter(([t])=>t!==e.key)));a(e.key),c(e.key)},[e.key,r,i,a,c]),M=(0,H.useCallback)(t=>{e.allow_multiple?(m(t),y.current&&clearTimeout(y.current),y.current=setTimeout(()=>{S(t)},300)):A(t)},[e.allow_multiple,A,S]),N=(0,H.useCallback)((t,n)=>{e.allow_multiple?w(t,n):j(t,n)},[e.allow_multiple,w,j]);if((0,H.useEffect)(()=>{s(e.key,()=>{r(t=>Object.fromEntries(Object.entries(t).filter(([t])=>t!==e.key))),m(``),k.current=!1})},[e.key,s,r]),u)return null;if(e.allow_multiple){let t=h.filter(e=>!C.some(t=>t.id===e.id));return(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,X.jsx)($,{field:e}),C.length>0&&(0,X.jsx)(`div`,{className:`flex flex-wrap gap-1 mb-1`,children:C.map(e=>(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded bg-neutral-100 px-2 py-0.5 text-[11px] text-neutral-700`,children:[e.objectName,(0,X.jsx)(`button`,{type:`button`,onClick:()=>{E(e.id)},disabled:f,className:`text-neutral-400 hover:text-neutral-600`,"aria-label":`Remove ${e.objectName}`,children:`×`})]},e.id))}),(0,X.jsx)(wr,{value:p,onChange:M,onSelect:N,options:t,loading:_,placeholder:e.placeholder??`Search for objects...`,disabled:f,keepOpenOnSelect:!0}),d?.showMessage&&d.message&&(0,X.jsx)(`span`,{className:`text-[11px] text-red-500`,children:d.message})]})}return(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,X.jsx)($,{field:e}),(0,X.jsxs)(`div`,{className:`relative`,children:[(0,X.jsx)(wr,{value:p,onChange:M,onSelect:N,options:h,loading:_,placeholder:e.placeholder??`Search for an object...`,disabled:f}),D&&(0,X.jsx)(`button`,{type:`button`,onClick:()=>{r(t=>Object.fromEntries(Object.entries(t).filter(([t])=>t!==e.key))),m(``),k.current=!1,c(e.key)},disabled:f,className:`absolute right-2 top-1/2 -translate-y-1/2 text-[11px] text-neutral-400 hover:text-neutral-600`,"aria-label":`Clear selection`,children:`×`})]}),d?.showMessage&&d.message&&(0,X.jsx)(`span`,{className:`text-[11px] text-red-500`,children:d.message})]})},field:({field:e,disabled:t=!1})=>{let{interpolateValue:n,state:r,setState:i,registerFieldResetter:a,afterFieldChange:o,isDisabled:s,shouldHide:c,errorState:l}=xr(e,t),u=n(e.object_id??``),[d,f]=(0,H.useState)([]),[p,m]=(0,H.useState)(``),[h,g]=(0,H.useState)(!1),[_,v]=(0,H.useState)(null),y=O();(0,H.useEffect)(()=>{!u||u===_||c||(async()=>{g(!0);try{m((await(await y(`/custom-objects/${u}`)).json()).object_name??``);let e=await(await y(`/custom-objects/${u}/fields`)).json();f((Array.isArray(e)?e:e.results??[]).map(e=>({label:e.display_name,value:e.id}))),v(u)}catch{f([])}finally{g(!1)}})()},[u,_,y,e.key,c]);let b=r[e.key]?.value,x=(0,H.useCallback)(t=>{i(n=>({...n,[e.key]:{type:`field`,value:t,associatedObject:{id:u,name:p}}})),o(e.key)},[e.key,i,u,p,o]);if((0,H.useEffect)(()=>{a(e.key,()=>{i(t=>Object.fromEntries(Object.entries(t).filter(([t])=>t!==e.key)))})},[e.key,a,i]),c)return null;let S=!u||s;if(e.allow_multiple){let t=Array.isArray(b)?b:[];return(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,X.jsx)($,{field:e}),(0,X.jsx)(`div`,{className:`rounded border p-2 text-[13px] ${l?.error?`border-red-300`:`border-black/10`} ${S?`bg-neutral-50`:`bg-white`}`,children:h?(0,X.jsx)(`span`,{className:`text-neutral-400 text-[12px]`,children:`Loading fields...`}):u?d.length===0?(0,X.jsx)(`span`,{className:`text-neutral-400 text-[12px]`,children:`No fields available`}):(0,X.jsx)(`div`,{className:`flex flex-col gap-1 max-h-48 overflow-y-auto`,children:d.map(e=>{let n=t.some(t=>t.value===e.value);return(0,X.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer`,children:[(0,X.jsx)(`input`,{type:`checkbox`,checked:n,disabled:S,onChange:()=>{x(n?t.filter(t=>t.value!==e.value):[...t,e])},className:`h-3 w-3 accent-blue-600`}),(0,X.jsx)(`span`,{className:`text-[12px]`,children:e.label})]},e.value)})}):(0,X.jsx)(`span`,{className:`text-neutral-400 text-[12px]`,children:`Select an object first`})}),l?.showMessage&&l.message&&(0,X.jsx)(`span`,{className:`text-[11px] text-red-500`,children:l.message})]})}let C=b&&!Array.isArray(b)?b.value:``;return(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,X.jsx)($,{field:e}),h?(0,X.jsx)(`div`,{className:`w-full rounded border border-black/10 px-2 py-1.5 text-[12px] text-neutral-400 bg-neutral-50`,children:`Loading fields...`}):(0,X.jsxs)(`select`,{value:C,onChange:e=>{let t=d.find(t=>t.value===e.target.value);t&&x(t)},disabled:S,className:`w-full rounded border px-2 py-1.5 text-[13px] font-mono focus:outline-none focus:ring-1 ${l?.error?`border-red-300 focus:ring-red-400`:`border-black/10 focus:ring-blue-400`} ${S?`bg-neutral-50 text-neutral-400`:`bg-white`}`,children:[(0,X.jsx)(`option`,{value:``,children:u?`Choose a field`:`Select an object first`}),d.map(e=>(0,X.jsx)(`option`,{value:e.value,children:e.label},e.value))]}),l?.showMessage&&l.message&&(0,X.jsx)(`span`,{className:`text-[11px] text-red-500`,children:l.message})]})},text:({field:e,disabled:t=!1})=>{let{state:n,setState:r,afterFieldChange:i,registerFieldResetter:a,isDisabled:o,shouldHide:s,errorState:c}=xr(e,t),[l,u]=(0,H.useState)(n[e.key]?.value??e.default??``),d=(0,H.useCallback)(t=>{r(n=>({...n,[e.key]:{type:`text`,value:t}})),i(e.key)},[e.key,r,i]);return(0,H.useEffect)(()=>{a(e.key,()=>{u(``),d(``)})},[e.key,a,d]),(0,H.useEffect)(()=>{let e=setTimeout(()=>{d(l)},300);return()=>{clearTimeout(e)}},[l,d]),s?null:(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,X.jsx)($,{field:e}),(0,X.jsx)(`input`,{type:`text`,value:l,onChange:e=>{u(e.target.value)},placeholder:e.placeholder??e.default??`Enter text`,disabled:o,className:`rounded border px-2 py-1.5 text-[13px] font-mono focus:outline-none focus:ring-1 ${c?.error?`border-red-300 focus:ring-red-400`:`border-black/10 focus:ring-blue-400`} ${o?`bg-neutral-50 text-neutral-400`:`bg-white`}`}),c?.showMessage&&c.message&&(0,X.jsx)(`span`,{className:`text-[11px] text-red-500`,children:c.message})]})},description:({field:e})=>{let{shouldHide:t}=xr(e);return t?null:(0,X.jsx)(`div`,{className:`text-[13px] text-neutral-500 leading-relaxed`,children:e.content})},number:({field:e,disabled:t=!1})=>{let{state:n,setState:r,afterFieldChange:i,registerFieldResetter:a,isDisabled:o,shouldHide:s,errorState:c}=xr(e,t),l=n[e.key]?.value??e.default??``,[u,d]=(0,H.useState)(String(l)),f=(0,H.useCallback)(t=>{r(n=>({...n,[e.key]:{type:`number`,value:t}})),i(e.key)},[e.key,r,i]);return(0,H.useEffect)(()=>{a(e.key,()=>{d(``),f(``)})},[e.key,a,f]),(0,H.useEffect)(()=>{let e=setTimeout(()=>{f(u)},300);return()=>{clearTimeout(e)}},[u,f]),s?null:(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,X.jsx)($,{field:e}),(0,X.jsx)(`input`,{type:`number`,value:u,onChange:e=>{d(e.target.value)},placeholder:e.placeholder??e.default??`Enter a number`,disabled:o,className:`rounded border px-2 py-1.5 text-[13px] font-mono focus:outline-none focus:ring-1 ${c?.error?`border-red-300 focus:ring-red-400`:`border-black/10 focus:ring-blue-400`} ${o?`bg-neutral-50 text-neutral-400`:`bg-white`}`}),c?.showMessage&&c.message&&(0,X.jsx)(`span`,{className:`text-[11px] text-red-500`,children:c.message})]})},select:({field:e,pluginApiName:t,disabled:n=!1})=>{let{state:r,setState:i,inferencePending:a,initialExpressionsPending:o,expressionsIdle:s,afterFieldChange:c,registerFieldResetter:l,isDisabled:u,shouldHide:d,errorState:f}=xr(e,n),p=!a&&!o&&s,[m,h]=(0,H.useState)([]),[g,_]=(0,H.useState)(!1),v=(0,H.useRef)(null),[y,b]=(0,H.useState)(``),[x,S]=(0,H.useState)(``),[C,w]=(0,H.useState)(!1),T=(0,H.useRef)(null),E=!!(e.getFetchUrl||e.optionMapper),k=r[e.key]?.value,A=O(),j=(0,H.useCallback)(t=>{i(n=>({...n,[e.key]:{type:`select`,value:t}})),c(e.key)},[c,e.key,i]);(0,H.useEffect)(()=>{l(e.key,()=>{i(t=>Object.fromEntries(Object.entries(t).filter(([t])=>t!==e.key))),b(``),S(``)})},[e.key,l,i]),(0,H.useEffect)(()=>{if(!e.typeahead)return;let t=setTimeout(()=>{S(y)},300);return()=>{clearTimeout(t)}},[y,e.typeahead]);let M=(0,H.useMemo)(()=>e.typeahead?{...r,search:x}:r,[r,x,e.typeahead]),P=(0,H.useMemo)(()=>JSON.stringify(M),[M]),F=(0,H.useCallback)(async n=>{_(!0);try{let r={__kizen_state:{value:{...n,pluginApiName:t}}},i;if(e.getFetchUrl){let t=await re(e.getFetchUrl,r);if(t){let n=e.fetchMethod??`GET`,a={"Content-Type":`application/json`},o=null;if(e.getHeaders&&(a=await L(e.getHeaders,r)),n===`POST`&&e.getBody){let t=await L(e.getBody,r);o=JSON.stringify(t)}if(t.startsWith(`/`))i={data:await(await A(t,{method:n,headers:a,...o!=null&&{body:o}})).json()};else{let e=await fetch(t,{method:n,headers:a,...o!=null&&{body:o}});e.ok&&(i=await e.json())}}}if(e.optionMapper){let r=await N(e.optionMapper,{__kizen_state:{value:{...n,result:i,pluginApiName:t}}});h(structuredClone(r))}else Array.isArray(i)&&h(i)}catch{h([])}finally{_(!1)}},[e,t,A]);if((0,H.useEffect)(()=>{!E||!p||d||e.typeahead||v.current!==P&&(v.current=P,F(M))},[E,p,P,M,e.typeahead,d,F]),(0,H.useEffect)(()=>{!E||!p||d||!e.typeahead||C&&v.current!==P&&(v.current=P,F(M))},[E,p,P,M,e.typeahead,C,d,F]),(0,H.useEffect)(()=>{!E||!e.autoSelect||e.typeahead||u||d||k||m.length===1&&m[0]&&(e.allow_multiple?j([m[0]]):j(m[0]))},[E,e.autoSelect,e.typeahead,e.allow_multiple,u,d,k,m,j]),d)return null;let I=E?m:e.options??[];if(e.allow_multiple){let t=Array.isArray(k)?k:[];return(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,X.jsx)($,{field:e}),(0,X.jsx)(`div`,{className:`rounded border p-2 text-[13px] ${f?.error?`border-red-300`:`border-black/10`} ${u?`bg-neutral-50`:`bg-white`}`,children:g?(0,X.jsx)(`span`,{className:`text-neutral-400 text-[12px]`,children:`Loading options...`}):I.length===0?(0,X.jsx)(`span`,{className:`text-neutral-400 text-[12px]`,children:`No options available`}):(0,X.jsx)(`div`,{className:`flex flex-col gap-1 max-h-48 overflow-y-auto`,children:I.map(e=>{let n=t.some(t=>t.value===e.value);return(0,X.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer`,children:[(0,X.jsx)(`input`,{type:`checkbox`,checked:n,disabled:u,onChange:()=>{j(n?t.filter(t=>t.value!==e.value):[...t,e])},className:`h-3 w-3 accent-blue-600`}),(0,X.jsx)(`span`,{className:`text-[12px]`,children:e.label})]},e.value)})})}),f?.showMessage&&f.message&&(0,X.jsx)(`span`,{className:`text-[11px] text-red-500`,children:f.message})]})}if(e.typeahead){let t=k&&!Array.isArray(k)?k.label:``;return(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,X.jsx)($,{field:e}),(0,X.jsxs)(`div`,{ref:T,className:`relative`,children:[(0,X.jsx)(`input`,{type:`text`,value:t&&!C?t:y,placeholder:e.placeholder??`Search...`,disabled:u,onChange:t=>{b(t.target.value),k&&(i(t=>Object.fromEntries(Object.entries(t).filter(([t])=>t!==e.key))),c(e.key))},onFocus:()=>{w(!0),t&&b(t)},onBlur:()=>{w(!1)},className:`w-full rounded border px-2 py-1.5 text-[13px] font-mono focus:outline-none focus:ring-1 ${f?.error?`border-red-300 focus:ring-red-400`:`border-black/10 focus:ring-blue-400`} ${u?`bg-neutral-50 text-neutral-400`:`bg-white`}`}),t&&!C&&(0,X.jsx)(`button`,{type:`button`,onClick:()=>{i(t=>Object.fromEntries(Object.entries(t).filter(([t])=>t!==e.key))),b(``),S(``),c(e.key)},disabled:u,className:`absolute right-2 top-1/2 -translate-y-1/2 text-[11px] text-neutral-400 hover:text-neutral-600`,"aria-label":`Clear selection`,children:`×`})]}),(0,X.jsxs)(D,{anchorRef:T,open:C,children:[g&&(0,X.jsx)(`div`,{className:`px-3 py-2 text-[12px] text-neutral-400`,children:`Loading...`}),!g&&I.length===0&&y.length===0&&(0,X.jsx)(`div`,{className:`px-3 py-2 text-[12px] text-neutral-400`,children:`Start typing to search...`}),!g&&I.length===0&&y.length>0&&(0,X.jsx)(`div`,{className:`px-3 py-2 text-[12px] text-neutral-400`,children:`No results`}),!g&&I.map(e=>(0,X.jsx)(`div`,{className:`cursor-pointer px-3 py-2 text-[12px] text-neutral-800 hover:bg-neutral-100`,onClick:()=>{j(e),b(e.label),w(!1)},children:e.label},e.value))]}),f?.showMessage&&f.message&&(0,X.jsx)(`span`,{className:`text-[11px] text-red-500`,children:f.message})]})}let R=k&&!Array.isArray(k)?I.findIndex(e=>JSON.stringify(e.value)===JSON.stringify(k.value)):-1;return(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,X.jsx)($,{field:e}),g?(0,X.jsx)(`div`,{className:`w-full rounded border border-black/10 px-2 py-1.5 text-[12px] text-neutral-400 bg-neutral-50`,children:`Loading options...`}):(0,X.jsxs)(`select`,{value:R>=0?String(R):``,onChange:e=>{let t=I[Number(e.target.value)];t&&j(t)},disabled:u,className:`w-full rounded border px-2 py-1.5 text-[13px] font-mono focus:outline-none focus:ring-1 ${f?.error?`border-red-300 focus:ring-red-400`:`border-black/10 focus:ring-blue-400`} ${u?`bg-neutral-50 text-neutral-400`:`bg-white`}`,children:[(0,X.jsx)(`option`,{value:``,children:e.placeholder??`Choose an option`}),I.map((e,t)=>(0,X.jsx)(`option`,{value:String(t),children:e.label},e.label))]}),f?.showMessage&&f.message&&(0,X.jsx)(`span`,{className:`text-[11px] text-red-500`,children:f.message})]})},boolean:Sr},Er=({field:e,pluginApiName:t,disabled:n=!1})=>{let r=Tr[e.type];return(0,X.jsx)(r,{field:e,pluginApiName:t,disabled:n})},Dr=new Set([`get`,`delete`,`head`]),Or=async(e,t,n,r,i)=>{let a=r!=null,o=r instanceof FormData||r instanceof Blob,s=a&&!o?{"Content-Type":`application/json`,...i?.headers}:i?.headers,c=await e(n,{method:t,...a&&{body:o?r:JSON.stringify(r)},...s&&{headers:s}});return c.status===204||c.headers.get(`content-length`)===`0`?{}:await c.json()};function kr(e){return{get:(t,n)=>Or(e,`GET`,t,void 0,n),delete:(t,n)=>Or(e,`DELETE`,t,void 0,n),head:(t,n)=>Or(e,`HEAD`,t,void 0,n),post:(t,n,r)=>Or(e,`POST`,t,n,r),put:(t,n,r)=>Or(e,`PUT`,t,n,r),patch:(t,n,r)=>Or(e,`PATCH`,t,n,r),request:(t,n,r,i)=>{let a=t.toLowerCase(),o=Dr.has(a)?r:i,s=Dr.has(a)?void 0:r;return Or(e,t.toUpperCase(),n,s,o)}}}var Ar=()=>{let e=O(),t=T();return{getObjectByAPIName:(0,H.useCallback)(async n=>{try{let t=await(await e(`/api/custom-objects?filters=${encodeURIComponent(JSON.stringify({api_name:n}))}`)).json(),r=Array.isArray(t)?t:t.results;if(r&&r.length>0)return r}catch{}let r=t?.business.client_object;if(r?.access&&r.name===n)return[{id:r.id,object_name:r.object_name}]},[e,t]),getCustomObjectDetails:(0,H.useCallback)(async t=>{try{let[n,r]=await Promise.all([e(`/api/custom-objects/${t}`),e(`/api/custom-objects/${t}/fields`)]),i=await n.json(),a=await r.json(),o=Array.isArray(a)?a:a.results??[];return{id:t,objectName:i.object_name??``,fields:o.map(e=>({id:e.id,name:e.name,displayName:e.display_name}))}}catch{return{id:t,objectName:``,fields:[]}}},[e])}},jr=({state:e,onDismiss:t})=>{let n=e.error?.message??`Unknown error`,r=e.context?.workerName,i=e.context?.pluginApiName;return(0,X.jsx)(w,{open:e.visible,size:`xl`,ariaModal:!0,fontMono:!1,onBackdropClick:t,header:(0,X.jsx)(C,{title:`Critical Exception`,statusDot:`red`}),footer:(0,X.jsx)(`button`,{onClick:t,className:`rounded bg-neutral-900 px-3 py-1.5 text-[12px] text-white transition-colors hover:bg-neutral-700`,children:`Dismiss`}),children:(0,X.jsxs)(`div`,{className:`px-5 py-4`,children:[(0,X.jsx)(`p`,{className:`m-0 mb-3 text-[12px] leading-relaxed text-neutral-700`,children:`This error will be logged in Kizen's monitoring stack. Did you mean to throw it, or would you prefer to handle the error in your application code with a toast or other messaging?`}),(r??i)&&(0,X.jsxs)(`div`,{className:`mb-3 flex flex-wrap gap-2 text-[11px] text-neutral-600`,children:[r&&(0,X.jsxs)(`span`,{className:`rounded bg-neutral-100 px-2 py-0.5 font-mono`,children:[`worker: `,r]}),i&&(0,X.jsxs)(`span`,{className:`rounded bg-neutral-100 px-2 py-0.5 font-mono`,children:[`plugin: `,i]})]}),(0,X.jsx)(`div`,{className:`mb-2 text-[11px] font-semibold uppercase tracking-wide text-neutral-500`,children:`Error`}),(0,X.jsx)(`div`,{className:`whitespace-pre-wrap break-words rounded border border-black/10 bg-neutral-950 px-3 py-2 font-mono text-[11px] leading-relaxed text-amber-300`,children:n})]})})};function Mr(){let[e,t]=(0,H.useState)({visible:!1});return{onMonitoringException:(0,H.useCallback)((e,n)=>{let r={};n.extra.workerName!==void 0&&(r.workerName=n.extra.workerName),n.extra.pluginApiName!==void 0&&(r.pluginApiName=n.extra.pluginApiName),t({visible:!0,error:e,context:r})},[]),dialog:(0,X.jsx)(jr,{state:e,onDismiss:(0,H.useCallback)(()=>{t(e=>({...e,visible:!1}))},[])})}}export{wr as a,tr as c,cr as d,Zn as f,Er as i,Yn as l,br as m,Ar as n,fr as o,Qn as p,kr as r,yr as s,Mr as t,Gn as u};
5
+ `,sanitizedHtml:s,outputUIRef:i,interactableScriptRef:a}},er=(e,t,n,r,i={})=>{let a=(0,H.useMemo)(()=>t?.event_scripts??{},[t]),o=(0,H.useCallback)(t=>{if(t.preventDefault(),t.stopPropagation(),!r){let n=t.target.getAttribute(`data-script`);n&&a[n]&&e(a[n],{...i})}},[r,e,a,i]);(0,H.useEffect)(()=>{let e=n?.current;return e&&e.addEventListener(`click`,o),()=>{e&&e.removeEventListener(`click`,o)}},[o,t,n])},tr=(e,t,n)=>{let r=e?.iframe_url,i=e?.script,a=e?.callback,o=e?.args,{showToast:s}=Q(),{t:c}=Z(),l=(0,H.useRef)(null),[u,{pending:d}]=Zn({onError:e=>{s({message:`${c(`Plugin error:`)} ${e?.message??``}`,variant:`failure`})},scriptUIRef:l,plugin:e}),f=(0,H.useMemo)(()=>{let e=new URLSearchParams(t);return{...Object.fromEntries(e),...o}},[t,o]),{outputUIRef:p,scopedCss:m,sanitizedHtml:h,interactableScriptRef:g}=$n(e,f);er(u,e,l,d);let _=(0,H.useRef)(!1);(0,H.useEffect)(()=>{!r&&!_.current&&i&&!n&&(_.current=!0,u(i,f))},[r,u,i,f,n]);let v=(0,H.useCallback)(e=>{let t=e.data;if(t?.type===`kizen:plugin_callback`){let e=t.query;a&&u(a,e)}},[u,a]);return(0,H.useEffect)(()=>(window.addEventListener(`message`,v),()=>{window.removeEventListener(`message`,v)}),[v]),{scriptUIRef:l,outputUIRef:p,scopedCss:m,sanitizedHtml:h,interactableScriptRef:g,iframeURL:r,pending:d}},nr=(0,H.createContext)(null),rr=({children:e})=>{let[t,n]=(0,H.useState)([]),[r,i]=(0,H.useState)(!1),a=(0,H.useCallback)((e,t)=>{n(n=>{let r=[e,...n.filter(t=>t!==e)];return t?.(r),r})},[]),o=(0,H.useMemo)(()=>[...t].reverse().reduce((e,t,n)=>({...e,[t]:n}),{}),[t]);return(0,H.useEffect)(()=>{let e=new MutationObserver(()=>{document.querySelector(`div[role="dialog"]`)?i(!0):i(!1)});return e.observe(document.body,{childList:!0}),()=>{e.disconnect()}},[]),(0,X.jsx)(nr.Provider,{value:{touchFloatingFrame:a,floatingFrameOffset:o},children:e(r)})},ir=()=>{let e=(0,H.useContext)(nr);if(!e)throw Error(`useFloatingFrame must be used within a FloatingFrameWrapper`);return e},ar=[`^/$`,`^/login*`,`/settings/mine$`,`/settings/others$`,`/create-new-business$`,`^/choose-business*`,`^/inactive-business$`,`^/reset$`,`/welcome$`,`/embed/*`,`/create-new-business$`,`/businessbuilder`],or=[`https://js.stripe.com`],sr=(e,t,n,r)=>e<n?t<r?`top-left`:`top-right`:t<r?`bottom-left`:`bottom-right`,cr=e=>{let{currentWindow:t,pathname:n,id:r,frameHeaderSize:i,defaultPositionGap:a=0,viewportHeight:o=window.innerHeight,hiddenByModal:s,updateEmployeeConfig:c}=e,l=(0,H.useRef)(null),u=(0,H.useRef)(!1),{showToast:d}=Q(),{t:f}=Z(),{installedPluginAPINamesToIds:p,clientObject:m}=bn(),{touchFloatingFrame:h,floatingFrameOffset:g}=ir(),_=g[r]??-1,v=t.minimized_style===`none`,y=t.minimized_style===`circle`||v,b=t.default_position===`bottom-right-fixed`,x=t.default_position===`bottom-left-fixed`,S=b||x,C=t.minimized_config?.icon??`action-drag-handle`,w=t.minimized_config?.color??`blue`,T=(0,H.useMemo)(()=>{let e=n.split(`/`),t=e[1],r=e[2];if(t===`client`)return{objectId:m?.id,entityId:r};if(t===`custom-objects`)return{objectId:r,entityId:e[3]}},[m,n]),E=(0,H.useMemo)(()=>{let e=t.match,r=t.ignore;return!!(e?.length&&!e.some(e=>new RegExp(e).test(n))||ar.concat(r??[]).filter(Boolean).some(e=>{try{return new RegExp(e).test(n)}catch{return!1}}))},[t,n]),D=t.plugin_api_name?p[t.plugin_api_name]:``,[O,k]=(0,H.useState)(()=>t.employee_config?.[r]?.minimized??!1),A=t.script,j=t.type,M=t.args,N=t.message_handler,P=t.width??0,[F,I]=(0,H.useState)(()=>{let e=window.innerHeight;return Math.min(t.height??0,e-i)}),[L,R]=(0,H.useState)(null),ee=t.default_position,te=(0,H.useCallback)(e=>{let n=t.employee_config?.[r]?.position;if(!n?.quadrant){let t=window.innerWidth-P,r=window.innerHeight-F-i;if(O&&!e&&(r=window.innerHeight-i),n)try{let e=n;return e.left>t&&(e.left=t),e.top>r&&(e.top=r),e.left<0&&(e.left=a),e.top<0&&(e.top=a),e}catch{}let o=t;return ee===`bottom-left`&&(o=a),{left:o,top:r-a}}else if(n.quadrant===`top-left`){let e=n.deltas?.left??0,t=n.deltas?.top??0;return{...n,left:e,top:t}}else if(n.quadrant===`top-right`){let e=window.innerWidth-P-(n.deltas?.right??0),t=n.deltas?.top??0;return{...n,left:e,top:t}}else if(n.quadrant===`bottom-left`){let e=n.deltas?.left??0,t=window.innerHeight-(O?0:F)-(n.deltas?.bottom??0)-i;return{...n,left:e,top:t}}else{let e=window.innerWidth-P-(n.deltas?.right??0),t=window.innerHeight-(O?0:F)-(n.deltas?.bottom??0)-i;return{...n,left:e,top:t}}},[t,r,ee,O,P,F,i,a]),z=(0,H.useCallback)(e=>{let t=te(e),n=[`bottom-right`,`bottom-left`].includes(t.quadrant??``)&&O?0:F;return t.left<0?t.left=0:t.left>window.innerWidth-P&&(t.left=window.innerWidth-P),t.top<0?t.top=0:t.top>window.innerHeight-n&&(t.top=window.innerHeight-n),t},[te,P,F,O]);(0,H.useEffect)(()=>{let e=t.height??0;if(e>o){I(o-i);let e=te(!0);e.top=0,R(e)}else I(e)},[t.height,te,o,i]);let[B,ne]=(0,H.useState)(O),[re,ie]=(0,H.useState)(O&&y),ae=F*5e-4*1e3,V=e=>{k(e),e&&y?setTimeout(()=>{ie(e)},ae):y&&ie(e),s?setTimeout(()=>{ne(e)},ae):ne(e),(L?.quadrant===`bottom-left`||L?.quadrant===`bottom-right`)&&R(e?e=>e?{...e,top:e.top+F}:null:e=>{if(!e)return null;let t=window.innerHeight,n=e.top>=0&&e.top+F<=t;return{...e,top:n?e.top:e.top-F}}),c?.(r,O,L)({minimized:e})},[U,{pending:se,hidden:ce,indicator:le,triggerHidden:ue,hideHeader:de}]=Xn({onError:e=>{d({message:`${f(`Plugin error:`)} ${e?.message??``}`,variant:`failure`})},scriptUIRef:l,plugin:t,onChangeMinimized:e=>{V(e)}}),fe=(0,H.useMemo)(()=>de&&S,[de,S]),pe=(0,H.useMemo)(()=>{if(!L)return`top`;let{left:e,top:t}=L;return window.innerWidth-(e+P)<40?`left`:t<40?`bottom`:`top`},[L,P]),me=(0,H.useCallback)(()=>{let e=x?`left`:`right`,n=`${t.plugin_api_name}-${t.api_name}-trigger-${e}`;return document.getElementById(n)},[x,t]),W=(0,H.useCallback)(()=>{if(!S)return;let e=me();if(!e)return;let t=e.getBoundingClientRect(),n=O?0:F,r=fe?0:i,o=t.top-(n+r)-a,s=x?t.left:t.right-P,c=n+r,l=Math.max(0,window.innerWidth-P),u=Math.max(0,window.innerHeight-c);s=Math.min(Math.max(0,s),l),o=Math.min(Math.max(0,o),u),R({left:s,top:o,quadrant:x?`bottom-left`:`bottom-right`,deltas:{top:o,left:s,right:window.innerWidth-(s+P),bottom:window.innerHeight-(o+c)}})},[S,x,F,O,P,fe,me,i,a]);(0,H.useEffect)(()=>{S&&W()},[S,F,O,W]),(0,H.useEffect)(()=>{if(!S)return;W();let e=new ResizeObserver(()=>{W()});return e.observe(document.body),()=>{e.disconnect()}},[S,W]),(0,H.useEffect)(()=>{!u.current&&A&&j===`script`&&!E&&(u.current=!0,U(A,{...M}))},[U,A,j,M,E]),(0,H.useEffect)(()=>{let e=e=>{let n=e;if(n?.detail?.recipient?.frame===t.api_name){let e=n.detail;if(e.recipient?.plugin!==t.plugin_api_name)return;e.recipient.script&&t.event_scripts?.[e.recipient.script]&&U(t.event_scripts[e.recipient.script]??``,{...e.args,...M,...T})}};return window.addEventListener(oe,e),()=>{window.removeEventListener(oe,e)}},[t,U,M,T]);let[he,ge]=(0,H.useState)(!1),_e=(e,t)=>{ge(!1),h(r);let n=window.innerWidth,i=window.innerHeight;if(t.node){let e=t.node.getBoundingClientRect(),a=e.left,o=e.top,s=o+e.height,l=a+e.width,u=o,d=i-s,f=a,p=n-l,m={left:a,right:l,top:o,quadrant:sr(u,f,d,p),deltas:{top:u,bottom:d,left:f,right:p}};R(m),c?.(r,O,L)({position:m})}};(0,H.useEffect)(()=>{let e=()=>{S?W():R(z(!1))};return window.addEventListener(`resize`,e),()=>{window.removeEventListener(`resize`,e)}},[S,W,z]),er(U,t,l,se,M),(0,H.useEffect)(()=>{let e=e=>{e.source!==window&&N&&!or.includes(e.origin)&&U(N,{...M,eventData:e.data})};return window.addEventListener(`message`,e),()=>{window.removeEventListener(`message`,e)}},[U,M,N]);let{outputUIRef:ve,scopedCss:ye,sanitizedHtml:be,interactableScriptRef:xe}=$n(t,{}),Se=B?ce||E||s:ce||E,Ce=`floating-window-parent--${r}`,we=`floating-drag-handle--${r}`,Te=`floating-window-content--${r}`,G=t.employee_config?.[r]?.position?.quadrant?.split(`-`)[1]===`right`?`right`:`left`;x?G=`left`:b&&(G=`right`);let K=t.minimized_config?.customIcon,Ee=null;return K?.startsWith(`data:image/`)&&(Ee=({className:e=``})=>(0,X.jsx)(`img`,{src:K,alt:t.title||`Open Frame`,className:`object-cover select-none pointer-events-none ${e}`})),L||R(z(!1)),{circleProps:{id:r,side:G,circleIcon:C,CustomIcon:Ee,circleColor:w,onClick:()=>{V(!O)},hidden:!!(Se||E||v||ue)},parentProps:{className:Ce,dragging:he,hidden:Se||re||E||v},draggableProps:{onStop:_e,onStart:()=>{ge(!0)},bounds:`.${Ce}`,handle:`.${we}`,defaultPosition:{x:L?.left??0,y:L?.top??0},position:{x:L?.left??0,y:L?.top??0},disabled:S},floatProps:{pending:se,width:P,dragging:he,height:F,isCircle:y&&O},contentProps:{className:Te,dragging:he,solid:!0},minimized:O,pending:se,indicator:le,hideHeader:fe,isFixed:S,isCircle:y,outputUIRef:ve,scopedCss:ye,sanitizedHtml:be,interactableScriptRef:xe,tooltipPosition:pe,currentPluginId:D,setMinimized:V,dragHandleClassName:we,height:F,script:A,dragging:he,frameOffset:_,scriptUIRef:l}},lr=()=>{(0,H.useEffect)(()=>{let e=null,t=t=>{if(!t.detail?.location)return;let n=te(t.detail.location);n!==e&&(e=n,document.querySelectorAll(`iframe[id^=${k}-]`).forEach(e=>{let n=null;try{n=new URL(e.src,window.location.href).origin}catch(e){ee(`script-runner-logging`)&&console.warn(`Failed to parse iframe src for location change message target origin:`,e),n=null}n&&e.contentWindow?.postMessage({action:M,location:t.detail?.location},n)}))};return window.addEventListener(A,t),()=>{window.removeEventListener(A,t)}},[])},ur=new E,dr=({children:e})=>(0,H.useContext)(x)?(0,X.jsx)(X.Fragment,{children:e}):(0,X.jsx)(f,{client:ur,children:e}),fr=e=>{let{children:t,bootstrapPlugins:n=[],userConfigs:r=[],user:i,teamMember:a,business:o,clientObject:s,onNavigate:c,modal:l,monitoringExceptionHelper:u,showToast:d,clearToasts:f,performRequest:p,appPath:m,hideFramesOnModal:h=!0,createFileId:g,performFileUpload:_,t:v}=e;return lr(),(0,X.jsx)(dr,{children:(0,X.jsx)(yn,{bootstrapPlugins:n,userConfigs:r,user:i,teamMember:a,business:o,clientObject:s,appPath:m,children:({hasFinishedBootstrapping:e,waitingOnRouteScript:n})=>(0,X.jsx)(Rn,{t:v,children:(0,X.jsx)(Sn,{children:r=>(0,X.jsx)(jn,{onNavigate:c,children:(0,X.jsx)(Tn,{...l,children:i=>(0,X.jsx)(On,{monitoringExceptionHelper:u,children:(0,X.jsx)(gn,{children:(0,X.jsx)(pn,{children:(0,X.jsx)(Hn,{showToast:d,clearToasts:f,children:(0,X.jsx)(rr,{children:a=>(0,X.jsx)(Pn,{performRequest:p,createFileId:g,performFileUpload:_,children:t({...i,showLoadingIndicator:r,hasFinishedBootstrapping:e,waitingOnRouteScript:n,hiddenByModal:h?a:!1})})})})})})})})})})})})})},pr=(0,H.createContext)(null),mr=pr.Provider,hr=(e,t)=>{if(e===`custom_object`)return t?.id},gr=(e,t)=>{if(e.type===`custom_object`)return e.allow_multiple?(t?.value??[]).length>0:!!t?.value?.id;if(e.type===`field`)return e.allow_multiple?(t?.value??[]).length>0:!!t?.value?.value;if(e.type===`text`)return!!(t?.value??``).trim();if(e.type===`number`){let e=Number(t?.value);return!!t?.value&&!isNaN(e)}else if(e.type===`select`)return e.allow_multiple?(t?.value??[]).length>0:!!t?.value?.value;else if(e.type===`boolean`)return!!t?.value;return!1},_r=e=>{let t=(e.fields??[]).filter(e=>e.type===`custom_object`),n=(e.fields??[]).filter(e=>e.type===`container`).flatMap(e=>_r(e)),r=e.actions?.filter(e=>e.hint_object_name)??[];return[...t,...n,...r.map(e=>({...I(e),match_hint:e.hint_object_name??``}))]},vr=e=>{let t=(e.fields??[]).filter(e=>e.type===`field`),n=(e.fields??[]).filter(e=>e.type===`container`).flatMap(e=>vr(e));return[...t,...n]},yr=({children:e,config:t,value:n,onStateChange:r,disabledKeys:i,templateAssociationsByActionApiName:a,getObjectByAPIName:o,getCustomObjectDetails:s})=>{let[c,l]=(0,H.useState)(n??{}),u=(0,H.useMemo)(()=>F(t),[t]),d=(0,H.useMemo)(()=>u.reduce((e,t)=>({...e,[t.key]:{type:t.type,value:t.default}}),{}),[u]),f=(0,H.useMemo)(()=>{let e={...Object.entries(a??{}).reduce((e,[t,n])=>{let r=`action__${t}`,i=n.map(e=>({id:e.custom_object.id??``,objectName:e.custom_object.object_name??`Unknown Object`}));return i.length>0&&n.length>0&&n[0]&&(e[r]={type:`custom_object`,value:i,config:I(n[0].browser_js_action_template)}),e},{}),...c};return i?.forEach(t=>{e[t]&&(e[t]=void 0)}),e},[c,a,i]),p=(0,H.useRef)(!!n),m=(0,H.useRef)({}),[h,g]=(0,H.useState)(!n),[_,v]=(0,H.useState)({}),[y,b]=(0,H.useState)({}),[x,S]=(0,H.useState)(!1),C=(0,H.useRef)(null),[w,T]=(0,H.useState)({}),[E,D]=(0,H.useState)(!1),[O,k]=(0,H.useState)(!0),A=(0,H.useRef)({}),j=(0,H.useCallback)((e,t)=>{A.current[e]=t},[]),M=(0,H.useCallback)(e=>{typeof e==`function`?l(t=>{let n=e(t);return m.current=n,r?.(n),n}):(m.current=e,l(e),r?.(e)),T({})},[r]),N=(0,H.useCallback)((e,t)=>{if(e.startsWith(`{{`)&&e.endsWith(`}}`)){let n=e.slice(2,-2).trim();return hr(t[n]?.type,t[n]?.value)}return e},[]),P=(0,H.useCallback)(e=>N(e,f),[f,N]),{clientObject:L}=bn(),ee=(0,H.useCallback)(async e=>e===`client_client`&&L?[{id:L.id,object_name:L.objectName}]:await o(e),[L,o]),te=(0,H.useCallback)(async()=>{let e=_r(t);for(let t of e){if(!t.match_hint)continue;let e=await ee(t.match_hint);if(e?.[0]){let n={id:e[0].id,objectName:e[0].object_name};M(e=>({...e,[t.key]:{type:`custom_object`,value:t.allow_multiple?[n]:n}}))}}},[t,M,ee]),z=(0,H.useCallback)(()=>vr(t),[t]),B=(0,H.useCallback)(async(e,t)=>{let n=z(),r={};for(let i of n){if(!i.object_id)continue;let n=t??N(i.object_id,m.current);if(e&&!i.object_id.includes(e))continue;if(!r[n]&&n)try{r[n]=await s(n)}catch{}let a=r[n];if(a){let e=a.fields.find(e=>e.name===i.match_hint);e&&M(t=>({...t,[i.key]:{type:`field`,value:{value:e.id,label:e.displayName},associatedObject:{id:n,name:a.objectName}}}))}}},[N,z,M,s]),ne=(0,H.useCallback)(async e=>{let n=_r(t).find(t=>t.key===e);if(n?.match_hint){let t=``,r=(await ee(n.match_hint))?.[0];r&&(t=r.id,M(t=>({...t,[e]:{type:`custom_object`,value:{id:r.id,objectName:r.object_name}}})),t&&B(void 0,t))}},[t,M,B,ee]),re=(0,H.useCallback)(async()=>{await te(),await B(),g(!1)},[te,B]),ie=(0,H.useCallback)(()=>vr(t),[t]),ae=(0,H.useCallback)(e=>B(e),[B]),V=(0,H.useCallback)(()=>{C.current&&=(clearTimeout(C.current),null),C.current=setTimeout(()=>{S(!0)},500)},[]),U=(0,H.useCallback)(async(e,t)=>{V(),v(e=>({...e,[t]:!0})),D(!0);let n=await R(e,{...d,...f});return b(e=>(e[t]===!1&&typeof n==`boolean`&&n&&(f[t]||ne(t)),{...e,[t]:n})),v(e=>({...e,[t]:!1})),n},[f,V,ne,d]);p.current||(p.current=!0,re());let oe=(0,H.useCallback)(e=>y[e]===!1,[y]),se=(0,H.useCallback)(e=>_[e]===!0,[_]),ce=(0,H.useCallback)(e=>{if(w[e])return{message:w[e],showMessage:!0,error:!0}},[w]),le=(0,H.useMemo)(()=>{let e=(t.fields??[]).filter(e=>e.type===`container`).map(e=>e.when),n=u.map(e=>e.when);return[...e,...n].filter(Boolean)},[t,u]),ue=(0,H.useMemo)(()=>u.reduce((e,t)=>(e[t.key]=t,e),{}),[u]),de=(0,H.useCallback)((e,t,n)=>{t.add(e);let r=ue[e];r?.dependencies?.length&&r.dependencies.forEach(e=>{n.has(e)||(n.add(e),de(e,t,n))})},[ue]),fe=(0,H.useMemo)(()=>u.map(e=>{let t=new Set,n=e.dependencies??[],r=new Set;return n.forEach(e=>{de(e,t,r)}),{...e,dependencies:Array.from(t)}}),[u,de]),pe=(0,H.useCallback)(e=>{fe.filter(t=>t.dependencies.length===0?!1:t.dependencies.includes(e)&&t.key!==e).forEach(e=>{A.current[e.key]?.()})},[fe]),me=(0,H.useCallback)(async()=>{let e=(await Promise.all(u.map(async e=>e.when?await R(e.when,{...d,...f})?e:null:e))).filter(Boolean),t=0;for(let n of e)n&&n.required&&!gr(n,f[n.key])?(T(e=>({...e,[n.key]:`This field is required`})),t++):n?.validation_pattern?new RegExp(n.validation_pattern).test(f[n.key]?.value??n.default??``)||(T(e=>({...e,[n.key]:`Value must match the pattern ${n.validation_pattern??``}`})),t++):n&&T(e=>({...e,[n.key]:void 0}));return{isValid:t===0,includedKeys:e.map(e=>e?.key).filter(e=>!!e)}},[f,u,d]);(0,H.useEffect)(()=>{V()},[V]);let W=Object.values(_).filter(Boolean).length;return!E&&le.length===0&&D(!0),E&&O&&W===0&&k(!1),(0,X.jsx)(mr,{value:{state:f,setState:M,interpolateValue:P,getNestedFields:ie,reInferFieldsForObject:ae,inferencePending:h,evaluateExpression:U,shouldHideField:oe,shouldDisableField:se,expressionsIdle:x,getFieldErrorState:ce,validateForm:me,waitingExpressionCount:W,initialExpressionsPending:O,flattenedFields:u,flattenedFieldsByKey:ue,afterFieldChange:pe,registerFieldResetter:j,disabledKeys:i??[]},children:e})},br=()=>{let e=(0,H.useContext)(pr);if(!e)throw Error(`useSetupAssistant must be used within a SetupAssistantController`);return e};function xr(e,t=!1){let n=br(),{evaluateExpression:r,shouldHideField:i,getFieldErrorState:a,disabledKeys:o}=n;(0,H.useEffect)(()=>{e.when&&r(e.when,e.key)},[e.when,e.key,r]);let s=i(e.key),c=o.includes(e.key)||t,l=a(e.key);return{...n,shouldHide:s,isDisabled:c,errorState:l}}var Sr=({field:e,disabled:t=!1})=>{let{state:n,setState:r,afterFieldChange:i,registerFieldResetter:a,isDisabled:o,shouldHide:s,errorState:c}=xr(e,t),l=n[e.key]?.value??e.default??!1,u=l===!0||l===`true`,d=(0,H.useCallback)(t=>{r(n=>({...n,[e.key]:{type:`boolean`,value:t}})),i(e.key)},[e.key,r,i]);return(0,H.useEffect)(()=>{a(e.key,()=>{d(void 0)})},[e.key,a,d]),s?null:(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,X.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer`,children:[(0,X.jsx)(`input`,{type:`checkbox`,checked:u,onChange:e=>{d(e.target.checked)},disabled:o,className:`h-3.5 w-3.5 cursor-pointer accent-blue-600`}),(0,X.jsxs)(`span`,{className:`text-[13px] ${o?`text-neutral-400`:`text-neutral-700`}`,children:[e.label,e.required&&(0,X.jsx)(`span`,{className:`text-red-500 ml-0.5`,children:`*`})]}),e.tooltip&&(0,X.jsx)(`span`,{className:`text-[11px] text-neutral-400`,title:e.tooltip,children:`?`})]}),c?.showMessage&&c.message&&(0,X.jsx)(`span`,{className:`text-[11px] text-red-500`,children:c.message})]})},Cr=({field:e,pluginApiName:t,disabled:n=!1})=>{let{shouldHide:r}=xr(e,n),i=e.columns??1;return r?null:(0,X.jsxs)(`div`,{children:[e.label&&(0,X.jsx)(`h3`,{className:`text-[14px] font-semibold text-neutral-800 mb-3 mt-4`,children:e.label}),(0,X.jsx)(`div`,{className:`gap-4`,style:{display:`grid`,gridTemplateColumns:`repeat(${String(i)}, 1fr)`},children:e.fields?.map(e=>(0,X.jsx)(Er,{field:e,pluginApiName:t,disabled:n},e.key))})]})},$=({field:e})=>e.label?(0,X.jsxs)(`label`,{className:`text-[12px] font-medium text-neutral-600`,children:[e.label,e.required&&(0,X.jsx)(`span`,{className:`text-red-500 ml-0.5`,children:`*`}),e.tooltip&&(0,X.jsx)(`span`,{className:`ml-1 text-neutral-400 cursor-help`,title:e.tooltip,children:`?`})]}):null,wr=({label:e,value:t,onChange:n,onSelect:a,options:o,loading:s,placeholder:c,disabled:l,keepOpenOnSelect:u})=>{let[d,f]=(0,H.useState)(!1),p=(0,H.useRef)(null);return(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[e&&(0,X.jsx)(`label`,{className:`text-[11px] font-semibold uppercase tracking-widest text-neutral-500`,children:e}),(0,X.jsxs)(`div`,{ref:p,className:`relative`,children:[(0,X.jsx)(r,{icon:i,className:`pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-[10px] text-neutral-400`}),(0,X.jsx)(`input`,{type:`text`,className:`w-full rounded border border-black/10 bg-white py-1.5 pl-7 pr-2.5 font-mono text-[12px] text-neutral-800 focus:border-neutral-400 focus:outline-none disabled:opacity-50`,value:t,placeholder:c,disabled:l,onChange:e=>{n(e.target.value)},onFocus:()=>{f(!0)},onBlur:()=>{f(!1)}})]}),(0,X.jsxs)(D,{anchorRef:p,open:d,children:[s&&(0,X.jsx)(`div`,{className:`px-3 py-2 text-[12px] text-neutral-400`,children:`Loading…`}),!s&&o.length===0&&t.length===0&&(0,X.jsx)(`div`,{className:`px-3 py-2 text-[12px] text-neutral-400`,children:`Start typing to search…`}),!s&&o.length===0&&t.length>0&&(0,X.jsx)(`div`,{className:`px-3 py-2 text-[12px] text-neutral-400`,children:`No results`}),!s&&o.map(e=>(0,X.jsx)(`div`,{className:`cursor-pointer px-3 py-2 text-[12px] text-neutral-800 hover:bg-neutral-100`,onClick:()=>{a(e.id,e.label),u||f(!1)},children:e.label},e.id))]})]})},Tr={container:Cr,custom_object:({field:e,disabled:t=!1})=>{let{state:n,setState:r,getNestedFields:i,reInferFieldsForObject:a,shouldDisableField:o,registerFieldResetter:s,afterFieldChange:c,isDisabled:l,shouldHide:u,errorState:d}=xr(e,t),f=o(e.key)||l,[p,m]=(0,H.useState)(``),[h,g]=(0,H.useState)([]),[_,v]=(0,H.useState)(!1),y=(0,H.useRef)(null),b=O(),x=T(),S=(0,H.useCallback)(async e=>{v(!0);try{let t=new URLSearchParams({page_size:`20`});e&&t.set(`search`,e);let n=await(await b(`/custom-objects?${t.toString()}`)).json(),r=(Array.isArray(n)?n:n.results??[]).map(e=>({id:e.id,label:e.object_name})),i=x?.business.client_object;i?.access&&(!e||i.object_name.toLowerCase().includes(e.toLowerCase()))&&r.unshift({id:i.id,label:i.object_name}),g(r)}catch{}finally{v(!1)}},[b,x]),C=e.allow_multiple?n[e.key]?.value??[]:[],w=(0,H.useCallback)((t,i)=>{let a=n[e.key]?.value??[];a.some(e=>e.id===t)||(r(n=>({...n,[e.key]:{type:`custom_object`,value:[...a,{id:t,objectName:i}]}})),c(e.key),m(``))},[n,e.key,r,c]),E=(0,H.useCallback)(t=>{let i=n[e.key]?.value??[];r(n=>({...n,[e.key]:{type:`custom_object`,value:i.filter(e=>e.id!==t)}})),c(e.key)},[n,e.key,r,c]),D=e.allow_multiple?void 0:n[e.key]?.value,k=(0,H.useRef)(!1);(0,H.useEffect)(()=>{!e.allow_multiple&&D?.objectName&&!k.current&&(m(D.objectName),k.current=!0)},[e.allow_multiple,D]);let A=(0,H.useCallback)(t=>{m(t),D&&(r(t=>Object.fromEntries(Object.entries(t).filter(([t])=>t!==e.key))),c(e.key)),y.current&&clearTimeout(y.current),y.current=setTimeout(()=>{S(t)},300)},[D,e.key,r,c,S]),j=(0,H.useCallback)((t,n)=>{m(n),r(r=>({...r,[e.key]:{type:`custom_object`,value:{id:t,objectName:n}}}));let o=i().filter(t=>t.object_id?.includes(e.key));for(let e of o)r(t=>Object.fromEntries(Object.entries(t).filter(([t])=>t!==e.key)));a(e.key),c(e.key)},[e.key,r,i,a,c]),M=(0,H.useCallback)(t=>{e.allow_multiple?(m(t),y.current&&clearTimeout(y.current),y.current=setTimeout(()=>{S(t)},300)):A(t)},[e.allow_multiple,A,S]),N=(0,H.useCallback)((t,n)=>{e.allow_multiple?w(t,n):j(t,n)},[e.allow_multiple,w,j]);if((0,H.useEffect)(()=>{s(e.key,()=>{r(t=>Object.fromEntries(Object.entries(t).filter(([t])=>t!==e.key))),m(``),k.current=!1})},[e.key,s,r]),u)return null;if(e.allow_multiple){let t=h.filter(e=>!C.some(t=>t.id===e.id));return(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,X.jsx)($,{field:e}),C.length>0&&(0,X.jsx)(`div`,{className:`flex flex-wrap gap-1 mb-1`,children:C.map(e=>(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded bg-neutral-100 px-2 py-0.5 text-[11px] text-neutral-700`,children:[e.objectName,(0,X.jsx)(`button`,{type:`button`,onClick:()=>{E(e.id)},disabled:f,className:`text-neutral-400 hover:text-neutral-600`,"aria-label":`Remove ${e.objectName}`,children:`×`})]},e.id))}),(0,X.jsx)(wr,{value:p,onChange:M,onSelect:N,options:t,loading:_,placeholder:e.placeholder??`Search for objects...`,disabled:f,keepOpenOnSelect:!0}),d?.showMessage&&d.message&&(0,X.jsx)(`span`,{className:`text-[11px] text-red-500`,children:d.message})]})}return(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,X.jsx)($,{field:e}),(0,X.jsxs)(`div`,{className:`relative`,children:[(0,X.jsx)(wr,{value:p,onChange:M,onSelect:N,options:h,loading:_,placeholder:e.placeholder??`Search for an object...`,disabled:f}),D&&(0,X.jsx)(`button`,{type:`button`,onClick:()=>{r(t=>Object.fromEntries(Object.entries(t).filter(([t])=>t!==e.key))),m(``),k.current=!1,c(e.key)},disabled:f,className:`absolute right-2 top-1/2 -translate-y-1/2 text-[11px] text-neutral-400 hover:text-neutral-600`,"aria-label":`Clear selection`,children:`×`})]}),d?.showMessage&&d.message&&(0,X.jsx)(`span`,{className:`text-[11px] text-red-500`,children:d.message})]})},field:({field:e,disabled:t=!1})=>{let{interpolateValue:n,state:r,setState:i,registerFieldResetter:a,afterFieldChange:o,isDisabled:s,shouldHide:c,errorState:l}=xr(e,t),u=n(e.object_id??``),[d,f]=(0,H.useState)([]),[p,m]=(0,H.useState)(``),[h,g]=(0,H.useState)(!1),[_,v]=(0,H.useState)(null),y=O();(0,H.useEffect)(()=>{!u||u===_||c||(async()=>{g(!0);try{m((await(await y(`/custom-objects/${u}`)).json()).object_name??``);let e=await(await y(`/custom-objects/${u}/fields`)).json();f((Array.isArray(e)?e:e.results??[]).map(e=>({label:e.display_name,value:e.id}))),v(u)}catch{}finally{g(!1)}})()},[u,_,y,e.key,c]);let b=r[e.key]?.value,x=(0,H.useCallback)(t=>{i(n=>({...n,[e.key]:{type:`field`,value:t,associatedObject:{id:u,name:p}}})),o(e.key)},[e.key,i,u,p,o]);if((0,H.useEffect)(()=>{a(e.key,()=>{i(t=>Object.fromEntries(Object.entries(t).filter(([t])=>t!==e.key)))})},[e.key,a,i]),c)return null;let S=!u||s;if(e.allow_multiple){let t=Array.isArray(b)?b:[];return(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,X.jsx)($,{field:e}),(0,X.jsx)(`div`,{className:`rounded border p-2 text-[13px] ${l?.error?`border-red-300`:`border-black/10`} ${S?`bg-neutral-50`:`bg-white`}`,children:h&&d.length===0?(0,X.jsx)(`span`,{className:`text-neutral-400 text-[12px]`,children:`Loading fields...`}):u?d.length===0?(0,X.jsx)(`span`,{className:`text-neutral-400 text-[12px]`,children:`No fields available`}):(0,X.jsx)(`div`,{className:`flex flex-col gap-1 max-h-48 overflow-y-auto transition-opacity ${h?`opacity-60`:``}`,children:d.map(e=>{let n=t.some(t=>t.value===e.value);return(0,X.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer`,children:[(0,X.jsx)(`input`,{type:`checkbox`,checked:n,disabled:S,onChange:()=>{x(n?t.filter(t=>t.value!==e.value):[...t,e])},className:`h-3 w-3 accent-blue-600`}),(0,X.jsx)(`span`,{className:`text-[12px]`,children:e.label})]},e.value)})}):(0,X.jsx)(`span`,{className:`text-neutral-400 text-[12px]`,children:`Select an object first`})}),l?.showMessage&&l.message&&(0,X.jsx)(`span`,{className:`text-[11px] text-red-500`,children:l.message})]})}let C=b&&!Array.isArray(b)?b.value:``;return(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,X.jsx)($,{field:e}),h&&d.length===0?(0,X.jsx)(`div`,{className:`w-full rounded border border-black/10 px-2 py-1.5 text-[12px] text-neutral-400 bg-neutral-50`,children:`Loading fields...`}):(0,X.jsxs)(`select`,{value:C,onChange:e=>{let t=d.find(t=>t.value===e.target.value);t&&x(t)},disabled:S,className:`w-full rounded border px-2 py-1.5 text-[13px] font-mono focus:outline-none focus:ring-1 transition-opacity ${l?.error?`border-red-300 focus:ring-red-400`:`border-black/10 focus:ring-blue-400`} ${S?`bg-neutral-50 text-neutral-400`:`bg-white`} ${h?`opacity-60`:``}`,children:[(0,X.jsx)(`option`,{value:``,children:u?`Choose a field`:`Select an object first`}),d.map(e=>(0,X.jsx)(`option`,{value:e.value,children:e.label},e.value))]}),l?.showMessage&&l.message&&(0,X.jsx)(`span`,{className:`text-[11px] text-red-500`,children:l.message})]})},text:({field:e,disabled:t=!1})=>{let{state:n,setState:r,afterFieldChange:i,registerFieldResetter:a,isDisabled:o,shouldHide:s,errorState:c}=xr(e,t),[l,u]=(0,H.useState)(n[e.key]?.value??e.default??``),d=(0,H.useCallback)(t=>{r(n=>({...n,[e.key]:{type:`text`,value:t}})),i(e.key)},[e.key,r,i]);return(0,H.useEffect)(()=>{a(e.key,()=>{u(``),d(``)})},[e.key,a,d]),(0,H.useEffect)(()=>{let e=setTimeout(()=>{d(l)},300);return()=>{clearTimeout(e)}},[l,d]),s?null:(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,X.jsx)($,{field:e}),(0,X.jsx)(`input`,{type:`text`,value:l,onChange:e=>{u(e.target.value)},placeholder:e.placeholder??e.default??`Enter text`,disabled:o,className:`rounded border px-2 py-1.5 text-[13px] font-mono focus:outline-none focus:ring-1 ${c?.error?`border-red-300 focus:ring-red-400`:`border-black/10 focus:ring-blue-400`} ${o?`bg-neutral-50 text-neutral-400`:`bg-white`}`}),c?.showMessage&&c.message&&(0,X.jsx)(`span`,{className:`text-[11px] text-red-500`,children:c.message})]})},description:({field:e})=>{let{shouldHide:t}=xr(e);return t?null:(0,X.jsx)(`div`,{className:`text-[13px] text-neutral-500 leading-relaxed`,children:e.content})},number:({field:e,disabled:t=!1})=>{let{state:n,setState:r,afterFieldChange:i,registerFieldResetter:a,isDisabled:o,shouldHide:s,errorState:c}=xr(e,t),l=n[e.key]?.value??e.default??``,[u,d]=(0,H.useState)(String(l)),f=(0,H.useCallback)(t=>{r(n=>({...n,[e.key]:{type:`number`,value:t}})),i(e.key)},[e.key,r,i]);return(0,H.useEffect)(()=>{a(e.key,()=>{d(``),f(``)})},[e.key,a,f]),(0,H.useEffect)(()=>{let e=setTimeout(()=>{f(u)},300);return()=>{clearTimeout(e)}},[u,f]),s?null:(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,X.jsx)($,{field:e}),(0,X.jsx)(`input`,{type:`number`,value:u,onChange:e=>{d(e.target.value)},placeholder:e.placeholder??e.default??`Enter a number`,disabled:o,className:`rounded border px-2 py-1.5 text-[13px] font-mono focus:outline-none focus:ring-1 ${c?.error?`border-red-300 focus:ring-red-400`:`border-black/10 focus:ring-blue-400`} ${o?`bg-neutral-50 text-neutral-400`:`bg-white`}`}),c?.showMessage&&c.message&&(0,X.jsx)(`span`,{className:`text-[11px] text-red-500`,children:c.message})]})},select:({field:e,pluginApiName:t,disabled:n=!1})=>{let{state:r,setState:i,inferencePending:a,initialExpressionsPending:o,expressionsIdle:s,afterFieldChange:c,registerFieldResetter:l,isDisabled:u,shouldHide:d,errorState:f}=xr(e,n),p=!a&&!o&&s,[m,h]=(0,H.useState)([]),[g,_]=(0,H.useState)(!1),v=(0,H.useRef)(null),[y,b]=(0,H.useState)(``),[x,S]=(0,H.useState)(``),[C,w]=(0,H.useState)(!1),T=(0,H.useRef)(null),E=!!(e.getFetchUrl||e.optionMapper),k=r[e.key]?.value,A=O(),j=(0,H.useCallback)(t=>{i(n=>({...n,[e.key]:{type:`select`,value:t}})),c(e.key)},[c,e.key,i]);(0,H.useEffect)(()=>{l(e.key,()=>{i(t=>Object.fromEntries(Object.entries(t).filter(([t])=>t!==e.key))),b(``),S(``)})},[e.key,l,i]),(0,H.useEffect)(()=>{if(!e.typeahead)return;let t=setTimeout(()=>{S(y)},300);return()=>{clearTimeout(t)}},[y,e.typeahead]);let M=(0,H.useMemo)(()=>e.typeahead?{...r,search:x}:r,[r,x,e.typeahead]),P=(0,H.useMemo)(()=>JSON.stringify(M),[M]),F=(0,H.useCallback)(async n=>{_(!0);try{let r={__kizen_state:{value:{...n,pluginApiName:t}}},i;if(e.getFetchUrl){let t=await re(e.getFetchUrl,r);if(t){let n=e.fetchMethod??`GET`,a={"Content-Type":`application/json`},o=null;if(e.getHeaders&&(a=await L(e.getHeaders,r)),n===`POST`&&e.getBody){let t=await L(e.getBody,r);o=JSON.stringify(t)}if(t.startsWith(`/`))i={data:await(await A(t,{method:n,headers:a,...o!=null&&{body:o}})).json()};else{let e=await fetch(t,{method:n,headers:a,...o!=null&&{body:o}});e.ok&&(i=await e.json())}}}if(e.optionMapper){let r=await N(e.optionMapper,{__kizen_state:{value:{...n,result:i,pluginApiName:t}}});h(structuredClone(r))}else Array.isArray(i)&&h(i)}catch{}finally{_(!1)}},[e,t,A]);if((0,H.useEffect)(()=>{!E||!p||d||e.typeahead||v.current!==P&&(v.current=P,F(M))},[E,p,P,M,e.typeahead,d,F]),(0,H.useEffect)(()=>{!E||!p||d||!e.typeahead||C&&v.current!==P&&(v.current=P,F(M))},[E,p,P,M,e.typeahead,C,d,F]),(0,H.useEffect)(()=>{!E||!e.autoSelect||e.typeahead||u||d||k||m.length===1&&m[0]&&(e.allow_multiple?j([m[0]]):j(m[0]))},[E,e.autoSelect,e.typeahead,e.allow_multiple,u,d,k,m,j]),d)return null;let I=E?m:e.options??[];if(e.allow_multiple){let t=Array.isArray(k)?k:[];return(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,X.jsx)($,{field:e}),(0,X.jsx)(`div`,{className:`rounded border p-2 text-[13px] ${f?.error?`border-red-300`:`border-black/10`} ${u?`bg-neutral-50`:`bg-white`}`,children:g&&I.length===0?(0,X.jsx)(`span`,{className:`text-neutral-400 text-[12px]`,children:`Loading options...`}):I.length===0?(0,X.jsx)(`span`,{className:`text-neutral-400 text-[12px]`,children:`No options available`}):(0,X.jsx)(`div`,{className:`flex flex-col gap-1 max-h-48 overflow-y-auto transition-opacity ${g?`opacity-60`:``}`,children:I.map(e=>{let n=t.some(t=>t.value===e.value);return(0,X.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer`,children:[(0,X.jsx)(`input`,{type:`checkbox`,checked:n,disabled:u,onChange:()=>{j(n?t.filter(t=>t.value!==e.value):[...t,e])},className:`h-3 w-3 accent-blue-600`}),(0,X.jsx)(`span`,{className:`text-[12px]`,children:e.label})]},e.value)})})}),f?.showMessage&&f.message&&(0,X.jsx)(`span`,{className:`text-[11px] text-red-500`,children:f.message})]})}if(e.typeahead){let t=k&&!Array.isArray(k)?k.label:``;return(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,X.jsx)($,{field:e}),(0,X.jsxs)(`div`,{ref:T,className:`relative`,children:[(0,X.jsx)(`input`,{type:`text`,value:t&&!C?t:y,placeholder:e.placeholder??`Search...`,disabled:u,onChange:t=>{b(t.target.value),k&&(i(t=>Object.fromEntries(Object.entries(t).filter(([t])=>t!==e.key))),c(e.key))},onFocus:()=>{w(!0),t&&b(t)},onBlur:()=>{w(!1)},className:`w-full rounded border px-2 py-1.5 text-[13px] font-mono focus:outline-none focus:ring-1 ${f?.error?`border-red-300 focus:ring-red-400`:`border-black/10 focus:ring-blue-400`} ${u?`bg-neutral-50 text-neutral-400`:`bg-white`}`}),t&&!C&&(0,X.jsx)(`button`,{type:`button`,onClick:()=>{i(t=>Object.fromEntries(Object.entries(t).filter(([t])=>t!==e.key))),b(``),S(``),c(e.key)},disabled:u,className:`absolute right-2 top-1/2 -translate-y-1/2 text-[11px] text-neutral-400 hover:text-neutral-600`,"aria-label":`Clear selection`,children:`×`})]}),(0,X.jsxs)(D,{anchorRef:T,open:C,children:[g&&(0,X.jsx)(`div`,{className:`px-3 py-2 text-[12px] text-neutral-400`,children:`Loading...`}),!g&&I.length===0&&y.length===0&&(0,X.jsx)(`div`,{className:`px-3 py-2 text-[12px] text-neutral-400`,children:`Start typing to search...`}),!g&&I.length===0&&y.length>0&&(0,X.jsx)(`div`,{className:`px-3 py-2 text-[12px] text-neutral-400`,children:`No results`}),!g&&I.map(e=>(0,X.jsx)(`div`,{className:`cursor-pointer px-3 py-2 text-[12px] text-neutral-800 hover:bg-neutral-100`,onClick:()=>{j(e),b(e.label),w(!1)},children:e.label},e.value))]}),f?.showMessage&&f.message&&(0,X.jsx)(`span`,{className:`text-[11px] text-red-500`,children:f.message})]})}let R=k&&!Array.isArray(k)?I.findIndex(e=>JSON.stringify(e.value)===JSON.stringify(k.value)):-1;return(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,X.jsx)($,{field:e}),g&&I.length===0?(0,X.jsx)(`div`,{className:`w-full rounded border border-black/10 px-2 py-1.5 text-[12px] text-neutral-400 bg-neutral-50`,children:`Loading options...`}):(0,X.jsxs)(`select`,{value:R>=0?String(R):``,onChange:e=>{let t=I[Number(e.target.value)];t&&j(t)},disabled:u,className:`w-full rounded border px-2 py-1.5 text-[13px] font-mono focus:outline-none focus:ring-1 transition-opacity ${f?.error?`border-red-300 focus:ring-red-400`:`border-black/10 focus:ring-blue-400`} ${u?`bg-neutral-50 text-neutral-400`:`bg-white`} ${g?`opacity-60`:``}`,children:[(0,X.jsx)(`option`,{value:``,children:e.placeholder??`Choose an option`}),I.map((e,t)=>(0,X.jsx)(`option`,{value:String(t),children:e.label},e.label))]}),f?.showMessage&&f.message&&(0,X.jsx)(`span`,{className:`text-[11px] text-red-500`,children:f.message})]})},boolean:Sr},Er=({field:e,pluginApiName:t,disabled:n=!1})=>{let r=Tr[e.type];return(0,X.jsx)(r,{field:e,pluginApiName:t,disabled:n})},Dr=new Set([`get`,`delete`,`head`]),Or=async(e,t,n,r,i)=>{let a=r!=null,o=r instanceof FormData||r instanceof Blob,s=a&&!o?{"Content-Type":`application/json`,...i?.headers}:i?.headers,c=await e(n,{method:t,...a&&{body:o?r:JSON.stringify(r)},...s&&{headers:s}});return c.status===204||c.headers.get(`content-length`)===`0`?{}:await c.json()};function kr(e){return{get:(t,n)=>Or(e,`GET`,t,void 0,n),delete:(t,n)=>Or(e,`DELETE`,t,void 0,n),head:(t,n)=>Or(e,`HEAD`,t,void 0,n),post:(t,n,r)=>Or(e,`POST`,t,n,r),put:(t,n,r)=>Or(e,`PUT`,t,n,r),patch:(t,n,r)=>Or(e,`PATCH`,t,n,r),request:(t,n,r,i)=>{let a=t.toLowerCase(),o=Dr.has(a)?r:i,s=Dr.has(a)?void 0:r;return Or(e,t.toUpperCase(),n,s,o)}}}var Ar=()=>{let e=O(),t=T();return{getObjectByAPIName:(0,H.useCallback)(async n=>{try{let t=await(await e(`/api/custom-objects?filters=${encodeURIComponent(JSON.stringify({api_name:n}))}`)).json(),r=Array.isArray(t)?t:t.results;if(r&&r.length>0)return r}catch{}let r=t?.business.client_object;if(r?.access&&r.name===n)return[{id:r.id,object_name:r.object_name}]},[e,t]),getCustomObjectDetails:(0,H.useCallback)(async t=>{try{let[n,r]=await Promise.all([e(`/api/custom-objects/${t}`),e(`/api/custom-objects/${t}/fields`)]),i=await n.json(),a=await r.json(),o=Array.isArray(a)?a:a.results??[];return{id:t,objectName:i.object_name??``,fields:o.map(e=>({id:e.id,name:e.name,displayName:e.display_name}))}}catch{return{id:t,objectName:``,fields:[]}}},[e])}},jr=({state:e,onDismiss:t})=>{let n=e.error?.message??`Unknown error`,r=e.context?.workerName,i=e.context?.pluginApiName;return(0,X.jsx)(w,{open:e.visible,size:`xl`,ariaModal:!0,fontMono:!1,onBackdropClick:t,header:(0,X.jsx)(C,{title:`Critical Exception`,statusDot:`red`}),footer:(0,X.jsx)(`button`,{onClick:t,className:`rounded bg-neutral-900 px-3 py-1.5 text-[12px] text-white transition-colors hover:bg-neutral-700`,children:`Dismiss`}),children:(0,X.jsxs)(`div`,{className:`px-5 py-4`,children:[(0,X.jsx)(`p`,{className:`m-0 mb-3 text-[12px] leading-relaxed text-neutral-700`,children:`This error will be logged in Kizen's monitoring stack. Did you mean to throw it, or would you prefer to handle the error in your application code with a toast or other messaging?`}),(r??i)&&(0,X.jsxs)(`div`,{className:`mb-3 flex flex-wrap gap-2 text-[11px] text-neutral-600`,children:[r&&(0,X.jsxs)(`span`,{className:`rounded bg-neutral-100 px-2 py-0.5 font-mono`,children:[`worker: `,r]}),i&&(0,X.jsxs)(`span`,{className:`rounded bg-neutral-100 px-2 py-0.5 font-mono`,children:[`plugin: `,i]})]}),(0,X.jsx)(`div`,{className:`mb-2 text-[11px] font-semibold uppercase tracking-wide text-neutral-500`,children:`Error`}),(0,X.jsx)(`div`,{className:`whitespace-pre-wrap break-words rounded border border-black/10 bg-neutral-950 px-3 py-2 font-mono text-[11px] leading-relaxed text-amber-300`,children:n})]})})};function Mr(){let[e,t]=(0,H.useState)({visible:!1});return{onMonitoringException:(0,H.useCallback)((e,n)=>{let r={};n.extra.workerName!==void 0&&(r.workerName=n.extra.workerName),n.extra.pluginApiName!==void 0&&(r.pluginApiName=n.extra.pluginApiName),t({visible:!0,error:e,context:r})},[]),dialog:(0,X.jsx)(jr,{state:e,onDismiss:(0,H.useCallback)(()=>{t(e=>({...e,visible:!1}))},[])})}}export{wr as a,tr as c,cr as d,Zn as f,Er as i,Yn as l,br as m,Ar as n,fr as o,Qn as p,kr as r,yr as s,Mr as t,Gn as u};
@@ -4,7 +4,7 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>Kizen App Development Toolkit</title>
7
- <script type="module" crossorigin src="/assets/index-BMMO15ja.js"></script>
7
+ <script type="module" crossorigin src="/assets/index-CdWhtYEM.js"></script>
8
8
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-DF2fYuay.js">
9
9
  <link rel="modulepreload" crossorigin href="/assets/fa-core-BoBqCOD3.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/useQuery-5OkVbV1s.js">
@@ -16,7 +16,7 @@
16
16
  <link rel="modulepreload" crossorigin href="/assets/SidebarContext-Cn8QRb77.js">
17
17
  <link rel="modulepreload" crossorigin href="/assets/api-CT-MKz2h.js">
18
18
  <link rel="modulepreload" crossorigin href="/assets/Card-BpDJPrPZ.js">
19
- <link rel="stylesheet" crossorigin href="/assets/index-dW-Omils.css">
19
+ <link rel="stylesheet" crossorigin href="/assets/index-DtzraybB.css">
20
20
  </head>
21
21
  <body>
22
22
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kizenapps/cli",
3
- "version": "0.15.0",
3
+ "version": "0.16.0",
4
4
  "description": "CLI tool for running Kizen plugin apps locally",
5
5
  "license": "GPL-3.0",
6
6
  "type": "module",
@@ -8,7 +8,7 @@
8
8
  "node": ">=20"
9
9
  },
10
10
  "bin": {
11
- "appbuilder": "./dist/index.js"
11
+ "appbuilder": "dist/index.js"
12
12
  },
13
13
  "files": [
14
14
  "dist"