@realtek/core-theme 0.0.317 → 0.0.318

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.
@@ -9,5 +9,5 @@ Upload the résumé first — we can read the details straight from it`})}),(0,c
9
9
  `).replace(/<[^>]+>/g,` `),t=t.replace(/&nbsp;/gi,` `).replace(/&amp;/gi,`&`).replace(/&lt;/gi,`<`).replace(/&gt;/gi,`>`).replace(/&#39;|&apos;/gi,`'`).replace(/&quot;/gi,`"`),t.replace(/[ \t\f\v]+/g,` `).replace(/\n{2,}/g,`
10
10
  `).trim()}function OT(e){return e.replace(/•/g,`
11
11
  `).split(/\n+/).map(e=>e.trim().replace(/^[-–—•]\s*/,``).trim()).filter(Boolean)}function kT(e){return OT(e.replace(/(?:^|\s)[-–—]\s+/g,`
12
- `))}function AT(e){let t=e.match(/^([A-Za-z][A-Za-z&/ ]{1,28}?)\s*:\s*(\S.+)$/);if(!t)return null;let n=t[1].trim(),r=t[2].trim();return n.split(/\s+/).length>3||r.length>60?null:{fieldKey:n.toLowerCase().replace(/\s+/g,`-`),fieldLabel:TT(n),value:r}}function jT(e){let t=e.toLowerCase().replace(/[\s:.\-–—]+$/,``).trim();return xT.has(t)?ST.test(t)?`education`:CT.test(t)?`keySkills`:`overview`:null}function MT(e){let t=[],n={overview:[],keySkills:[],education:[]},r=`overview`;return e.forEach(e=>{let i=jT(e);if(i){r=i;return}if(r===`overview`){let n=AT(e);if(n){t.push(n);return}}n[r].push(e)}),{meta:t,overview:ET(n.overview),keySkills:ET(n.keySkills),education:ET(n.education)}}function NT(e){let t=[...bT].sort((e,t)=>t.length-e.length),n=RegExp(`\\b(${t.map(wT).join(`|`)})\\b\\s*:?`,`gi`),r=[...e.matchAll(n)];if(!r.length)return{meta:[],overview:ET(kT(e)),keySkills:[],education:[]};let i={overview:[],keySkills:[],education:[]},a=e.slice(0,r[0].index).trim();return a&&i.overview.push(...kT(a)),r.forEach((t,n)=>{let a=t[1].trim().toLowerCase(),o=t.index+t[0].length,s=n+1<r.length?r[n+1].index:e.length,c=kT(e.slice(o,s).trim());c.length&&i[ST.test(a)?`education`:CT.test(a)?`keySkills`:`overview`].push(...c)}),{meta:[],overview:ET(i.overview),keySkills:ET(i.keySkills),education:ET(i.education)}}function PT(e){let t=DT(e);if(!t)return{meta:[],overview:[],keySkills:[],education:[]};let n=OT(t);return n.length>=4?MT(n):NT(t)}function FT({items:e}){return(0,c.jsx)(`ul`,{className:`jdv-ats-bullets`,children:e.map((e,t)=>(0,c.jsx)(`li`,{className:`jdv-ats-bullet-item`,children:e},t))})}function IT({raw:e=``,meta:t=[]}){let[n,r]=(0,a.useState)(!1),i=(0,a.useMemo)(()=>PT(e),[e]),o=t.length?t:i.meta,s=[];if(i.overview.length&&s.push({key:`overview`,title:`Overview`,items:i.overview}),i.keySkills.length&&s.push({key:`keySkills`,title:`Key Skills`,items:i.keySkills,card:!0,icon:`🛠️`}),i.education.length&&s.push({key:`education`,title:`Education`,items:i.education,card:!0,icon:`🎓`}),!o.length&&!s.length)return(0,c.jsx)(vT,{type:`secondary`,children:`No description available.`});let l=n?s:s.slice(0,yT),u=s.length-yT;return(0,c.jsxs)(`div`,{className:`jdv-ats-desc`,children:[o.length>0&&(0,c.jsx)(`div`,{className:`jdv-ats-meta-grid`,children:o.map(({fieldKey:e,fieldLabel:t,value:n})=>(0,c.jsxs)(`div`,{className:`jdv-ats-meta-row`,children:[(0,c.jsx)(`span`,{className:`jdv-ats-meta-key`,children:t}),(0,c.jsx)(`span`,{className:`jdv-ats-meta-val`,children:n})]},e??t))}),(0,c.jsx)(`div`,{className:`jdv-ats-sections`,children:l.map(e=>e.card?(0,c.jsxs)(`div`,{className:`education-block`,children:[(0,c.jsxs)(`div`,{className:`education-header`,children:[(0,c.jsx)(`span`,{children:e.icon}),(0,c.jsx)(`span`,{children:e.title})]}),(0,c.jsx)(`ul`,{className:`education-list`,children:e.items.map((e,t)=>(0,c.jsx)(`li`,{className:`education-list-item`,children:e},t))})]},e.key):(0,c.jsxs)(`div`,{className:`jdv-ats-section`,children:[(0,c.jsx)(`div`,{className:`jdv-ats-section-hd`,children:(0,c.jsx)(`span`,{children:e.title})}),(0,c.jsx)(FT,{items:e.items})]},e.key))}),u>0&&(0,c.jsx)(`span`,{className:`jdv-desc-toggle`,onClick:()=>r(e=>!e),children:n?`Show less`:`Show more (${u} more section${u>1?`s`:``})`})]})}var{Text:LT}=o.Typography;function RT(e){return e?e.trim().split(/\s+/).slice(0,2).map(e=>e[0].toUpperCase()).join(``):`?`}function zT(e){return e?e.name?e.name:e.fullName?e.fullName:e.firstName||e.lastName?[e.firstName,e.lastName].filter(Boolean).join(` `):e.candidateName??e.clientName??e.jobTitle??``:``}function BT(e){return e?e.email??e.emailId??e.emailAddress??``:``}function VT(e){return e?e.status?e.status:e.stage?e.stage:typeof e.isActive==`boolean`?e.isActive?`Active`:`Inactive`:``:``}function HT(e){return e==null||e===``?`-`:typeof e==`string`?e:typeof e==`number`||typeof e==`boolean`?String(e):Array.isArray(e)?e.join(`, `):typeof e==`object`?e.label??e.name??Object.values(e).join(` `):String(e)}var UT=[`jobDescription`,`description`,`rawDescription`,`jobDescriptionText`];function WT(e){return String(e??``).toLowerCase()===`job`}function GT(e){let t=UT.includes(e.field),n=/description/i.test(e.label??``);return t||n}function KT({record:e}){let t=zT(e),n=BT(e),r=VT(e);return!t&&!n?null:(0,c.jsxs)(`div`,{className:`preview-profile-card`,children:[(0,c.jsxs)(`div`,{className:`preview-profile-card__info`,children:[(0,c.jsx)(o.Avatar,{className:`preview-profile-card__avatar`,children:RT(t)}),(0,c.jsxs)(`div`,{className:`preview-profile-card__text`,children:[t&&(0,c.jsx)(`span`,{className:`preview-profile-card__name`,children:t}),n&&(0,c.jsx)(`span`,{className:`preview-profile-card__email`,children:n})]})]}),r&&(0,c.jsx)(o.Tag,{className:`preview-profile-card__status`,children:r})]})}function qT({fields:t,moduleName:n,centralDocuments:r=[]}){let[i,o]=(0,a.useState)([]),[s,l]=(0,a.useState)(0),[u,d]=(0,a.useState)(!1);if(!t?.length)return null;function f(e){let t=String(e?.type??``).trim().toLowerCase(),n=`${e?.field??``} ${e?.label??``}`;return[`file`,`document`,`upload`].includes(t)||/resume|cv|document|attachment/i.test(n)}function p(e,t){o(e),l(t),d(!0)}return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(`div`,{className:`preview-field-grid`,children:t.map(t=>{let i=t.value,a=Array.isArray(i)&&i.length>0,o=WT(n)&&GT(t)&&typeof i==`string`&&i.trim(),s=f(t)?r.filter(e=>{let n=String(e?.fieldName??e?.field??e?.formField??e?.key??``).trim().toLowerCase(),r=String(t?.field??``).trim().toLowerCase();if(n&&r&&n===r)return!0;let i=`${t?.field??``} ${t?.label??``}`;return/resume|cv/i.test(i)?/resume|cv/i.test(`${n} ${e?.fileName??``} ${e?.name??``}`):!1}).map(e=>({name:e?.fileName||e?.name||e?.uploadedFileName||e?.originalName||t?.label||`Document`,url:e?.fileUrl||e?.downloadUrl||e?.signedUrl||e?.url||``,type:e?.mimeType||e?.contentType||e?.type})).filter(e=>e.url):[],l=f(t)?s.length?s:e.Ft(i).filter(e=>e.url):[];return l.length?(0,c.jsxs)(`div`,{className:`preview-field-card preview-field-card--documents`,children:[(0,c.jsx)(`span`,{className:`preview-field-card__label`,children:t.label}),(0,c.jsx)(`div`,{className:`preview-document-list`,children:l.map((e,t)=>(0,c.jsxs)(`button`,{type:`button`,className:`preview-document-link`,onClick:()=>p(l,t),title:`Preview ${e.name||`document`}`,children:[(0,c.jsx)(`span`,{className:`preview-document-link__icon`,"aria-hidden":`true`,children:`▣`}),(0,c.jsx)(`span`,{className:`preview-document-link__name`,children:e.name||`Document ${t+1}`}),(0,c.jsx)(`span`,{className:`preview-document-link__action`,children:`Preview`})]},`${e.url}-${t}`))})]},t.field??t.label):a?i.map((e,n)=>(0,c.jsxs)(`div`,{className:`preview-field-card`,children:[(0,c.jsxs)(`span`,{className:`preview-field-card__label`,children:[t.label,i.length>1?` (${n+1})`:``]}),(0,c.jsx)(`span`,{className:`preview-field-card__value`,children:HT(e)})]},`${t.field??t.label}-${n}`)):o?(0,c.jsxs)(`div`,{className:`preview-field-card preview-field-card--description`,children:[(0,c.jsx)(`span`,{className:`preview-field-card__label`,children:t.label}),(0,c.jsx)(`div`,{className:`preview-field-card__description`,children:(0,c.jsx)(IT,{raw:i})})]},t.field??t.label):(0,c.jsxs)(`div`,{className:`preview-field-card`,children:[(0,c.jsx)(`span`,{className:`preview-field-card__label`,children:t.label}),(0,c.jsx)(`span`,{className:`preview-field-card__value`,children:HT(i)})]},t.field??t.label)})}),(0,c.jsx)(e.xn,{documents:i,open:u,onClose:()=>d(!1),initialIndex:s})]})}function JT(){let t=(0,u.useNavigate)(),{moduleName:n=``,record:r=null}=(0,u.useLocation)().state??{},s=r?.id??r?._id,[l,d]=(0,a.useState)([]),[f,p]=(0,a.useState)(!!(n&&s)),[m,h]=(0,a.useState)(null),[g,_]=(0,a.useState)([]),[v,y]=(0,a.useState)(0),b=(0,a.useRef)(null),x=(0,a.useRef)(null),S=(0,a.useRef)([]),C=(0,a.useRef)([]);(0,a.useEffect)(()=>{if(!n||!s)return;let t=!1;return Promise.all([i.r({module:n,id:s}),e.mn(n,s).catch(()=>({data:[]}))]).then(([e,n])=>{t||(d(Array.isArray(e)?e:[]),_(Array.isArray(n)?n:n?.data??[]),p(!1))}).catch(e=>{t||(h(e.message||`Failed to load preview`),_([]),p(!1))}),()=>{t=!0}},[n,s]);function w(){t(-1)}function T(e,t){return e?.label??e?.name??`Section ${t+1}`}function E(e){let t=b.current,n=C.current[e];if(!t||!n)return;let r=t.getBoundingClientRect(),i=n.getBoundingClientRect(),a=(t.querySelector(`.preview-stepper-wrap`)?.offsetHeight??0)+12,o=t.scrollTop+i.top-r.top-a;y(e),t.scrollTo({top:Math.max(0,o),behavior:`smooth`})}function D(){let e=b.current;if(!e||!C.current.length)return;let t=e.getBoundingClientRect().top+(e.querySelector(`.preview-stepper-wrap`)?.offsetHeight??0)+24,n=0;C.current.forEach((e,r)=>{e&&e.getBoundingClientRect().top<=t&&(n=r)}),y(e=>e===n?e:n)}(0,a.useEffect)(()=>{let e=x.current,t=S.current[v];if(!e||!t)return;let n=t.offsetLeft-(e.clientWidth-t.offsetWidth)/2,r=Math.max(0,e.scrollWidth-e.clientWidth);e.scrollTo({left:Math.min(Math.max(0,n),r),behavior:`smooth`})},[v,l.length]);function O(){return l.length?(0,c.jsx)(`div`,{ref:x,className:`preview-stepper-wrap`,"aria-label":`Preview sections`,children:(0,c.jsx)(`div`,{className:`preview-stepper`,children:l.map((e,t)=>(0,c.jsxs)(`div`,{className:`preview-stepper__segment`,children:[(0,c.jsxs)(`button`,{type:`button`,className:`preview-stepper__item`,ref:e=>{S.current[t]=e},onClick:()=>E(t),"aria-current":v===t?`step`:void 0,title:`Go to ${T(e,t)}`,children:[(0,c.jsx)(`span`,{className:[`preview-stepper__circle`,t<v?`preview-stepper__circle--done`:``,t===v?`preview-stepper__circle--active`:``].filter(Boolean).join(` `),children:t+1}),(0,c.jsx)(`span`,{className:[`preview-stepper__label`,t===v?`preview-stepper__label--active`:``].filter(Boolean).join(` `),children:T(e,t)})]}),t<l.length-1&&(0,c.jsx)(`span`,{className:[`preview-stepper__line`,t<v?`preview-stepper__line--done`:``].filter(Boolean).join(` `),"aria-hidden":`true`})]},e.name??e.id??t))})}):null}let k=(0,c.jsxs)(`div`,{className:`preview-modal-header`,children:[(0,c.jsx)(`span`,{className:`preview-modal-module`,children:n.toUpperCase()}),(0,c.jsx)(`span`,{className:`preview-modal-title`,children:n?` Details`:`Preview`})]}),A=(0,c.jsx)(`div`,{className:`wizard-footer preview-scroll-footer`,children:(0,c.jsx)(`div`,{className:`wizard-footer-nav`,children:(0,c.jsx)(o.Button,{onClick:w,children:`Close`})})});function j(){return!n||!s?(0,c.jsx)(`div`,{className:`job-preview-content job-preview-status`,children:`Preview id is missing.`}):f?(0,c.jsx)(`div`,{className:`job-preview-content job-preview-status`,children:(0,c.jsx)(o.Spin,{size:`small`})}):m?(0,c.jsx)(`div`,{className:`job-preview-content job-preview-status job-preview-error`,children:m}):l.length?(0,c.jsx)(`div`,{className:`preview-section-list`,children:l.map((e,t)=>(0,c.jsxs)(`section`,{ref:e=>{C.current[t]=e},className:`preview-section-card`,"data-section-index":t,children:[(0,c.jsxs)(`div`,{className:`preview-section-card__header`,children:[(0,c.jsx)(`span`,{className:`preview-section-card__number`,children:t+1}),(0,c.jsx)(`span`,{className:`preview-section-card__title`,children:T(e,t)})]}),(0,c.jsx)(`div`,{className:`preview-section-card__body`,children:e.fields?.length>0?(0,c.jsx)(qT,{fields:e.fields,moduleName:n,centralDocuments:g}):(0,c.jsx)(LT,{type:`secondary`,children:`No fields in this group.`})})]},e.name??e.id??t))}):(0,c.jsx)(`div`,{className:`job-preview-content job-preview-status`,children:`No form groups found.`})}return(0,c.jsx)(o.Modal,{centered:!0,className:`wizard-modal preview-modal preview-scroll-modal`,footer:A,open:!0,title:k,width:`min(900px, calc(100vw - 32px))`,onCancel:w,maskClosable:!1,children:(0,c.jsxs)(`div`,{ref:b,className:`wizard-body preview-scroll-body`,onScroll:D,children:[!f&&!m&&l.length>0&&O(),r&&(0,c.jsx)(KT,{record:r}),j()]})})}var{Text:YT}=o.Typography,{TextArea:XT}=o.Input,ZT=[{key:`basic`,title:`Basic Info`,description:`General details`,fields:[{name:`firstName`,label:`First Name`,type:`input`,required:!0,placeholder:`Enter first name`,span:12},{name:`lastName`,label:`Last Name`,type:`input`,required:!0,placeholder:`Enter last name`,span:12},{name:`email`,label:`Email Address`,type:`input`,required:!0,placeholder:`Enter email address`,rules:[{type:`email`,message:`Please enter a valid email`}]},{name:`phone`,label:`Phone`,type:`input`,placeholder:`Enter phone number`}]},{key:`details`,title:`Details`,description:`Additional info`,fields:[{name:`role`,label:`Role`,type:`select`,required:!0,placeholder:`Select a role`,span:12,options:[{label:`Developer`,value:`developer`},{label:`Designer`,value:`designer`},{label:`Manager`,value:`manager`},{label:`Analyst`,value:`analyst`}]},{name:`department`,label:`Department`,type:`select`,placeholder:`Select department`,span:12,options:[{label:`Engineering`,value:`engineering`},{label:`Product`,value:`product`},{label:`Operations`,value:`operations`},{label:`Finance`,value:`finance`}]},{name:`notes`,label:`Notes`,type:`textarea`,placeholder:`Any additional notes...`}]},{key:`confirm`,title:`Confirm`,description:`Review & submit`,isReview:!0}];function QT(e){switch(e.type){case`select`:return(0,c.jsx)(o.Select,{placeholder:e.placeholder,options:e.options,style:{width:`100%`}});case`textarea`:return(0,c.jsx)(XT,{rows:3,placeholder:e.placeholder});case`number`:return(0,c.jsx)(o.InputNumber,{placeholder:e.placeholder,style:{width:`100%`}});default:return(0,c.jsx)(o.Input,{type:e.inputType||`text`,placeholder:e.placeholder})}}function $T({steps:e,form:t}){let n=t.getFieldsValue(),r=e.filter(e=>!e.isReview);return r.some(e=>(e.fields||[]).some(e=>n[e.name]!==void 0&&n[e.name]!==``))?(0,c.jsxs)(`div`,{className:`wizard-review-content`,children:[r.map(e=>(0,c.jsxs)(`div`,{className:`wizard-review-section`,children:[(0,c.jsx)(YT,{className:`wizard-review-section-title`,children:e.title}),(0,c.jsx)(`div`,{className:`wizard-review-grid`,children:(e.fields||[]).map(e=>{let t=n[e.name],r=t===void 0||t===``||t===null?`—`:String(t);return(0,c.jsxs)(`div`,{className:`wizard-review-row`,children:[(0,c.jsx)(`span`,{className:`wizard-review-label`,children:e.label}),(0,c.jsx)(`span`,{className:`wizard-review-separator`,children:`:`}),(0,c.jsx)(`span`,{className:`wizard-review-value`,children:r})]},e.name)})})]},e.key)),(0,c.jsxs)(`div`,{className:`wizard-review-confirm-note`,children:[(0,c.jsx)(s.CheckCircleOutlined,{className:`wizard-review-confirm-icon`}),(0,c.jsx)(YT,{type:`secondary`,children:`Please review the information above before submitting.`})]})]}):(0,c.jsx)(`div`,{className:`wizard-review-empty`,children:(0,c.jsx)(YT,{type:`secondary`,children:`No data entered yet.`})})}function eE(){let[e]=o.Form.useForm(),t=(0,u.useNavigate)(),{title:n=`Wizard`,moduleName:r=``,steps:i=ZT,onSubmit:s}=(0,u.useLocation)().state??{},[l,d]=(0,a.useState)(0),f=i[l],p=l===i.length-1,m=l===0;function h(){t(-1)}function g(){let t=(f.fields||[]).map(e=>e.name);e.validateFields(t.length>0?t:void 0).then(()=>{d(e=>e+1)})}function _(){d(e=>e-1)}function v(){let n=e.getFieldsValue();typeof s==`function`&&s(n),t(-1)}let y=i.map((e,t)=>({title:e.title,description:e.description,status:t<l?`finish`:t===l?`process`:`wait`}));return(0,c.jsxs)(o.Modal,{open:!0,title:r?`${n} — ${r}`:n,footer:(0,c.jsxs)(`div`,{className:`wizard-footer`,children:[(0,c.jsx)(o.Button,{onClick:h,children:`Cancel`}),(0,c.jsxs)(`div`,{className:`wizard-footer-nav`,children:[!m&&(0,c.jsx)(o.Button,{onClick:_,children:`Back`}),p?(0,c.jsx)(o.Button,{type:`primary`,onClick:v,children:`Submit`}):(0,c.jsx)(o.Button,{type:`primary`,onClick:g,children:`Next`})]})]}),onCancel:h,width:`min(680px, calc(100vw - 32px))`,centered:!0,className:`wizard-modal`,children:[(0,c.jsx)(`div`,{className:`wizard-steps-container`,children:(0,c.jsx)(o.Steps,{current:l,items:y,size:`small`,className:`wizard-steps`})}),(0,c.jsx)(`div`,{className:`wizard-body`,children:(0,c.jsxs)(o.Form,{form:e,layout:`vertical`,children:[i.filter(e=>!e.isReview).map((e,t)=>(0,c.jsx)(`div`,{style:{display:t===l?`block`:`none`},children:(0,c.jsx)(o.Row,{gutter:16,children:(e.fields||[]).map(e=>(0,c.jsx)(o.Col,{span:e.span||24,children:(0,c.jsx)(o.Form.Item,{name:e.name,label:e.label,rules:[...e.required?[{required:!0,message:`${e.label} is required`}]:[],...e.rules||[]],children:QT(e)})},e.name))})},e.key)),f.isReview&&(0,c.jsx)($T,{steps:i,form:e})]})})]})}function tE({titleText:e,titleIcon:t}){let n=t===`delete`;return(0,c.jsxs)(`span`,{className:`dynamic-popup__header`,children:[(0,c.jsx)(`span`,{className:`dynamic-popup__header-icon-box${n?` dynamic-popup__header-icon-box--danger`:``}`,children:n?(0,c.jsx)(s.DeleteOutlined,{}):(0,c.jsx)(s.AppstoreOutlined,{})}),(0,c.jsx)(`span`,{className:`dynamic-popup__header-label`,children:e})]})}function nE({note:t,description:n,showSelectedCount:r,count:i,itemLabel:a,bodyText:o,deleteError:s}){return(0,c.jsxs)(c.Fragment,{children:[t&&(0,c.jsx)(e.Cn,{variant:`body`,color:`secondary`,className:`dynamic-popup__note`,children:t}),n&&(0,c.jsx)(e.Cn,{variant:`body`,className:`dynamic-popup__description`,children:n}),r&&i>0&&(0,c.jsxs)(e.Cn,{variant:`body`,className:`dynamic-popup__selected-count`,children:[`Changing status for `,(0,c.jsx)(`strong`,{children:i}),` selected `,a,`.`]}),o&&(0,c.jsx)(e.Cn,{variant:`body`,children:o}),s&&(0,c.jsx)(e.Cn,{variant:`caption`,color:`danger`,className:`dynamic-popup__error`,children:s})]})}function rE({footerNote:t}){return t?(0,c.jsx)(e.Cn,{variant:`caption`,color:`secondary`,className:`dynamic-popup__footer-note`,children:t}):null}function iE(e,t){return e.replace(/\{(\w+)\}/g,(e,n)=>t?.[n]??``).trim()}function aE(e){return String(e).replace(/\(\s*\)/g,``).replace(/\s+/g,` `).replace(/(^|\s)([-–—·|])(?=\s*\2)/g,``).replace(/^[\s\-–—·|]+/,``).replace(/[\s\-–—·|]+$/,``).trim()}function oE(e){if(!e)return``;let t=new Date(e);if(Number.isNaN(t.getTime()))return``;let n=e=>new Date(e.getFullYear(),e.getMonth(),e.getDate()),r=Math.round((n(new Date)-n(t))/864e5);return r<=0?`Today`:r===1?`Yesterday`:`${r} days ago`}function sE(e){let t=Array.isArray(e?.submissionHistory)?e.submissionHistory:[],n=[e?.lastSubmittedAt,e?.submittedAt,e?.updatedAt,...t.map(e=>e?.submittedAt||e?.updatedAt)].filter(Boolean);return n.length?n.reduce((e,t)=>new Date(t)>new Date(e)?t:e):null}function cE(e){let t=Array.isArray(e?.submissionHistory)?e.submissionHistory:[],n=[e?.lastSubmittedAt,e?.submittedAt,...t.map(e=>e?.submittedAt)].filter(Boolean);return n.length?n.reduce((e,t)=>new Date(t)>new Date(e)?t:e):null}function lE(e,t){if(typeof e==`string`)return{label:e,value:e};if(e?.label!==void 0&&e?.value!==void 0&&!t?.labelTemplate&&!t?.valueKey)return e;let{labelKey:n,valueKey:r,labelTemplate:i}=t??{},a=i?.includes(`{lastdate}`)?{...e,lastdate:oE(sE(e))}:e,o=(i?aE(iE(i,a)):null)||(n?e?.[n]:null)||e?.name||e?.fullName||e?.candidateName||e?.title||e?.displayName||e?.text||e?.applicantReferenceId||e?.applicantRefrenceId||String(Object.values(e||{})[0]??``),s=(r?e?.[r]:null)??e?.id??e?._id??e?.applicantReferenceId??e?.applicantRefrenceId??String(Object.values(e||{})[0]??``),c=e?.disabled===!0||e?.disable===!0,l=String(e?.optionNote??``).trim(),u={label:l?`${String(o)} — ${l}`:String(o),value:String(s),_raw:e};if(c&&(u.disabled=!0),l&&(u.title=l),e?.isSubmitted===!0||e?.alreadySubmitted===!0){u.alreadySubmitted=!0,u.existingSubmissionId=String(e?.existingSubmissionId??e?.jobSubmissionId??e?.submissionId??``);let t=e?.submittedAt||cE(e);t&&(u.submittedAt=t)}if(e?.isFromSubmission===!0&&e?.submissionId){u.isFromSubmission=!0,u.priorSubmissionId=String(e.submissionId);let t=e?.lastSubmittedAt||cE(e);t&&(u.priorSubmittedAt=t)}return u}function uE(e,t){return(t?.[e.optionsKey]??e.defaultOptions??[]).map(t=>lE(t,e))}function dE(e={}){return{selectedIds:[],selectedRecords:[],moduleName:``,removedIds:[],...e}}var fE=`DD MMM YYYY`,pE=`DD MMM YYYY, h:mm A`;function mE(e,t){if(e==null||e===``)return``;let n=(0,l.default)(e);return n.isValid()?t===`relative`&&oE(e)||n.format(fE):String(e)}function hE(e,t){return e?String(e).includes(`{`)?aE(iE(e,t)):String(t?.[e]??e).trim():``}function gE(e){if(e?.alreadySubmitted){let t=e?.submittedAt?(0,l.default)(e.submittedAt):null;return{tone:`blocked`,tooltip:t?.isValid()?`Already submitted to this job on ${t.format(pE)}`:`Already submitted to this job — a candidate can only be submitted once per job`}}if(e?.isFromSubmission){let t=e?.priorSubmittedAt?(0,l.default)(e.priorSubmittedAt):null;return{tone:`history`,tooltip:t?.isValid()?`Previously submitted on ${t.format(pE)} — this form will prefill from it`:`Submitted to another job before — this form will prefill from it`}}return null}function _E(e,t){return e?.alreadySubmitted||!e?.disabled?``:String(t?.message??e?.title??``).trim()}function vE({meta:e}){return(0,c.jsx)(`div`,{className:`dynamic-popup__option-dates`,children:e.map(e=>(0,c.jsxs)(a.Fragment,{children:[(0,c.jsx)(`span`,{className:`dynamic-popup__option-date-label`,children:e.label}),(0,c.jsx)(`span`,{className:`dynamic-popup__option-date-value`,children:e.text})]},e.label))})}function yE({option:e,layout:t}){let n=e?._raw??e??{},r=hE(t.id,n),i=hE(t.title,n)||String(e?.label??``),a=hE(t.subtitle,n),l=hE(t.titleAccent?.key,n),u=hE(t.titleAccent?.toneKey,n),d=t.titleAccent?.prefix??``,f=(t.meta??[]).map(e=>({label:e.label,text:mE(n?.[e.key],e.type)})).filter(e=>e.text),p=_E(e,n),m=gE(e);return(0,c.jsxs)(`div`,{className:`dynamic-popup__option`,children:[(0,c.jsx)(`span`,{className:`dynamic-popup__option-tick${m?` dynamic-popup__option-tick--${m.tone}`:``}`,children:m&&(0,c.jsx)(o.Tooltip,{title:m.tooltip,placement:`topLeft`,children:(0,c.jsx)(s.CheckCircleFilled,{"aria-label":m.tooltip})})}),(0,c.jsxs)(`div`,{className:`dynamic-popup__option-main`,children:[(0,c.jsxs)(`div`,{className:`dynamic-popup__option-head`,children:[r&&(0,c.jsx)(`span`,{className:`dynamic-popup__option-id`,children:r}),(0,c.jsxs)(`span`,{className:`dynamic-popup__option-title`,children:[(0,c.jsx)(`span`,{className:`dynamic-popup__option-title-text`,children:i}),l&&(0,c.jsx)(`span`,{className:`dynamic-popup__option-title-accent${u?` dynamic-popup__option-title-accent--${u}`:``}`,children:`${d}${l}`})]}),p&&(0,c.jsx)(`span`,{className:`dynamic-popup__option-flag`,children:p})]}),a&&(0,c.jsx)(`div`,{className:`dynamic-popup__option-sub`,children:a})]}),e?.alreadySubmitted?(0,c.jsx)(`span`,{className:`dynamic-popup__option-onjob`,children:`On this job`}):f.length>0&&(0,c.jsx)(vE,{meta:f})]})}var{Text:bE}=o.Typography,{TextArea:xE}=o.Input,SE=[{label:`$`,value:`$`},{label:`EUR`,value:`EUR`},{label:`GBP`,value:`GBP`},{label:`INR`,value:`INR`}],CE=[{label:`Hourly`,value:`Hourly`},{label:`Daily`,value:`Daily`},{label:`Weekly`,value:`Weekly`},{label:`Monthly`,value:`Monthly`},{label:`Yearly`,value:`Yearly`}];function wE(e=[]){return e.map(e=>{if(!e||typeof e!=`object`)return e;let t=[e.value,e.user_id,e.userId,e.USER_ID,e.legacyUserId,e.id,e._id].find(e=>e!=null&&String(e).trim()!==``),n=t==null?``:String(t).trim();return{...e,value:n}}).filter(e=>typeof e!=`object`||!e||String(e.value??``).trim()!==``)}function TE({field:e,value:t,onChange:n}){return(0,c.jsx)(o.Input,{value:t,onChange:n,placeholder:e.placeholder,maxLength:e.maxLength,prefix:(0,c.jsx)(s.CrownOutlined,{})})}function EE({field:e,value:t,onChange:n}){return(0,c.jsx)(xE,{value:t,onChange:n,rows:e.rows??5,placeholder:e.placeholder})}function DE({field:e,options:t,value:n,onChange:r}){return(0,c.jsx)(o.Select,{showSearch:!0,value:n,onChange:r,options:wE(t),placeholder:e.placeholder,className:`dynamic-popup__field-select`,optionFilterProp:`label`,prefix:(0,c.jsx)(s.CrownOutlined,{})})}function OE({field:e,options:t,value:n,onChange:r}){return(0,c.jsx)(o.Select,{mode:`multiple`,showSearch:!0,value:n,onChange:r,options:wE(t),placeholder:e.placeholder,className:`dynamic-popup__field-select`,optionFilterProp:`label`,prefix:(0,c.jsx)(s.CrownOutlined,{})})}function kE({field:e,options:t,onSearch:n,value:r,onChange:i,popupContext:a}){let l=wE(t),u=e.optionLayout,d=new Map(l.map(e=>[String(e?.value??``),e]));async function f(t,n){let r=n??d.get(String(t??``));typeof e.onSelectGuard==`function`&&await e.onSelectGuard({value:t,option:r,field:e,popupContext:a,confirm:o.Modal.confirm})===!1||i?.(t)}return(0,c.jsx)(o.Select,{showSearch:!0,filterOption:!1,notFoundContent:e.notFoundContent??null,value:r,onChange:f,options:l,placeholder:e.placeholder,onSearch:n,className:`dynamic-popup__field-select${u?` dynamic-popup__field-select--rich`:``}`,popupClassName:u?`dynamic-popup__option-dropdown`:void 0,listHeight:u?340:void 0,optionLabelProp:`label`,optionRender:u?e=>(0,c.jsx)(yE,{option:e?.data??e,layout:u}):void 0,prefix:(0,c.jsx)(s.CrownOutlined,{})})}function AE({field:e,mentionOpts:t,onMentionSearch:n,value:r,onChange:i}){return(0,c.jsx)(o.Mentions,{value:r,onChange:i,rows:e.rows??5,placeholder:e.placeholder,prefix:`@`,options:t,onSearch:n,className:`dynamic-popup__mention-textarea`})}function jE({field:e={},value:t={},onChange:n}){let r=t.period??`Hourly`,i=t.isRange??!1;function s(e){n?.({...t,...e})}(0,a.useEffect)(()=>{let e={};t.currency??(e.currency=`$`),t.period??(e.period=`Hourly`),Object.keys(e).length&&n?.({...t,...e})},[]);let l=Number(i?t.maxAmount:t.amount),u=i&&t.minAmount!=null&&t.maxAmount!=null&&Number(t.maxAmount)<=Number(t.minAmount),d=e.rateCeiling!=null&&Number.isFinite(l)&&l>Number(e.rateCeiling);return(0,c.jsxs)(`div`,{children:[(0,c.jsxs)(o.Space.Compact,{style:{width:`100%`},children:[i?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.InputNumber,{controls:!1,placeholder:`From`,value:t.minAmount,onChange:e=>s({minAmount:e}),style:{flex:1}}),(0,c.jsx)(o.InputNumber,{controls:!1,placeholder:`To`,value:t.maxAmount,onChange:e=>s({maxAmount:e}),style:{flex:1}})]}):(0,c.jsx)(o.InputNumber,{controls:!1,placeholder:`0`,value:t.amount,onChange:e=>s({amount:e}),style:{flex:2}}),(0,c.jsx)(o.Select,{value:t.currency??`$`,options:SE,onChange:e=>s({currency:e}),style:{width:80}}),(0,c.jsx)(o.Select,{value:r,options:CE,onChange:e=>s({period:e}),style:{width:110}})]}),(u||d)&&(0,c.jsxs)(`div`,{style:{marginTop:4},children:[u&&(0,c.jsx)(bE,{type:`danger`,style:{fontSize:12,display:`block`},children:`To rate must be greater than From rate.`}),d&&(0,c.jsxs)(bE,{type:`danger`,style:{fontSize:12,display:`block`},children:[`Rate must not exceed the client rate (`,e.rateCeiling,`).`]})]}),(0,c.jsxs)(o.Space,{size:`small`,style:{marginTop:8},children:[(0,c.jsx)(o.Switch,{checked:i,onChange:e=>s({isRange:e})}),(0,c.jsx)(`span`,{children:`Range`})]})]})}function ME({field:e,value:t,onChange:n}){return(0,c.jsx)(o.DatePicker,{value:t,onChange:n,placeholder:e.placeholder??`Select date`,style:{width:`100%`},format:`YYYY-MM-DD`})}function NE({field:e,checked:t,onChange:n}){return(0,c.jsx)(o.Checkbox,{checked:t,onChange:n,children:e.checkboxLabel})}function PE({field:e,value:t,onChange:n}){return(0,c.jsx)(o.InputNumber,{value:t,onChange:n,min:e.min,max:e.max,placeholder:e.placeholder,style:{width:`100%`}})}function FE({options:e,value:t,onChange:n}){return(0,c.jsx)(o.Radio.Group,{value:t,onChange:n,options:e})}var IE={input:TE,text:TE,textarea:EE,select:DE,"multi-select":OE,"search-select":kE,"mention-textarea":AE,"candidate-rate":jE,"priority-checkbox":NE,"date-picker":ME,number:PE,radio:FE};function LE(e){return e===`priority-checkbox`?{valuePropName:`checked`}:{}}var RE=new Set([`input`,`text`,`textarea`,`mention-textarea`]);function zE({form:t,fields:n,initialValues:r,dynamicOptions:i,popupContext:a,extraData:s,removedIds:l,setRemovedIds:u,showAlreadyAssigned:d,onValuesChange:f,getSearchHandler:p,getMentionSearchHandler:m,mentionOptions:h}){let g=(s?.recruitersData??[]).filter(e=>{let t=String(e?.user_id??e?.id??e?.userId??``);return t&&!l.includes(t)}),_=d&&s;return!n.length&&!_?null:(0,c.jsxs)(c.Fragment,{children:[_&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`dynamic-popup__already-assigned`,children:[(0,c.jsx)(e.Cn,{variant:`caption`,color:`secondary`,children:`Already Assigned People`}),(0,c.jsx)(`div`,{style:{marginTop:6,display:`flex`,flexWrap:`wrap`,gap:6},children:g.length===0?(0,c.jsx)(e.Cn,{variant:`caption`,color:`secondary`,children:`No one is currently assigned to this job.`}):g.map(e=>{let t=String(e?.user_id??e?.id??e?.userId??``),n=e?.name??e?.user_name??e?.userName??e?.email??`Assigned user`;return(0,c.jsx)(o.Tag,{closable:!0,onClose:()=>{t&&u(e=>Array.from(new Set([...e,t])))},children:n},t||n)})})]}),(0,c.jsx)(o.Divider,{style:{margin:`12px 0`}})]}),n.length>0&&(0,c.jsx)(o.Form,{form:t,layout:`vertical`,initialValues:r,onValuesChange:(e,t)=>f(t),children:BE(n).map(t=>VE(t,t=>{let n=i[t.name]??uE(t,a),r=p(t),s=m(t),l=h[t.name]??[],u=LE(t.type),d=IE[t.type],f=[];return t.required&&f.push({required:!0,message:`${t.label||`This field`} is required`}),typeof t.validator==`function`&&f.push({validator:(e,n)=>{let r=t.validator(n,a);return r?Promise.reject(Error(r)):Promise.resolve()}}),RE.has(t.type)&&f.push(e.rn({label:t.label,field:t.name,type:t.type})),(0,c.jsx)(o.Form.Item,{name:t.name,label:t.label,rules:f,...u,children:d?(0,c.jsx)(d,{field:t,options:n,onSearch:r,mentionOpts:l,onMentionSearch:s,popupContext:a}):null},t.name)}))})]})}function BE(e){let t=[];for(let n of e){let e=t[t.length-1];n.inlineRow&&e?.inlineRow===n.inlineRow?e.fields.push(n):t.push({inlineRow:n.inlineRow,fields:[n]})}return t.map(e=>e.fields)}function VE(e,t){return e.length===1?t(e[0]):(0,c.jsx)(`div`,{style:{display:`flex`,gap:8,alignItems:`flex-start`},children:e.map((e,n)=>(0,c.jsx)(`div`,{style:{flex:n===0?2:1,minWidth:0},children:t(e)},e.name))},`row-${e.map(e=>e.name).join(`-`)}`)}function HE(e){return[`select`,`multi-select`,`search-select`,`radio`].includes(e?.type)&&e?.dataSource===`master`&&e?.masterName}function UE(e){let t=e?.data??e;return Array.isArray(t)?t:Array.isArray(t?.data)?t.data:Array.isArray(t?.items)?t.items:Array.isArray(t?.rows)?t.rows:Array.isArray(t?.records)?t.records:[]}function WE(e){let t=String(e?.masterName??``).trim().toLowerCase();return t===`clientsubmissions`||t===`clientsubmissionstatus`}function GE(e){return WE(e)?{...e,labelKey:e.labelKey||`clientSubmissionStatusText`,valueKey:e.valueKey||`clientSubmissionStatusText`}:e}function KE(e,t){let n=lE(e,GE(t));return WE(t)?{...n,value:String(n.label??``)}:n}function qE({open:e,config:n,api:r,fields:i,popupContext:o,formValues:s}){let[c,l]=(0,a.useState)({}),[u,d]=(0,a.useState)(null);return(0,a.useEffect)(()=>{e||(l({}),d(null))},[e]),(0,a.useEffect)(()=>{if(!e||!n||!r.getOptions)return;let t=new AbortController;return i.forEach(e=>{!e.fetchOptionsKey||e.fetchOptionsParamKey||Promise.resolve(r.getOptions(e,void 0,o)).then(n=>{t.signal.aborted||l(t=>({...t,[e.name]:n}))}).catch(n=>{t.signal.aborted||console.error(`[DynamicPopup] Failed to load options for field "${e.name}":`,n)})}),()=>t.abort()},[e,r,n,i,o]),(0,a.useEffect)(()=>{if(!e||!n)return;let r=i.filter(HE);if(!r.length)return;let a=new AbortController;return r.forEach(e=>{t.a(t.b,`/masters/dropdown?${new URLSearchParams({masterName:e.masterName,offset:`0`,limit:String(e.limit??50)}).toString()}`).then(t=>{if(a.signal.aborted)return;let n=UE(t).map(t=>KE(t,e));l(t=>({...t,[e.name]:n}))}).catch(t=>{a.signal.aborted||console.error(`[DynamicPopup] Failed to load master options for field "${e.name}":`,t)})}),()=>a.abort()},[e,n,i]),(0,a.useEffect)(()=>{if(!e||!n||!r.getOptions)return;let t=i.filter(e=>e.fetchOptionsKey&&e.fetchOptionsParamKey);if(!t.length)return;let a=new AbortController;return t.forEach(e=>{let t=s[e.fetchOptionsParamKey]??o[e.fetchOptionsParamKey],n={[e.fetchOptionsParamKey]:t};Promise.resolve(r.getOptions(e,n,o)).then(t=>{a.signal.aborted||l(n=>({...n,[e.name]:t}))}).catch(t=>{a.signal.aborted||console.error(`[DynamicPopup] Failed to load param-dependent options for "${e.name}":`,t)})}),()=>a.abort()},[e,r,n,i,s,o]),(0,a.useEffect)(()=>{if(!e||!n||!r.loadExtraData)return;let t=new AbortController;return Promise.resolve(r.loadExtraData(o)).then(e=>{t.signal.aborted||d(e)}).catch(e=>{t.signal.aborted||(console.error(`[DynamicPopup] Failed to load extra data:`,e),d(null))}),()=>t.abort()},[e,r,n,o]),{dynamicOptions:c,setDynamicOptions:l,extraData:u}}var JE=500,YE=3;function XE({api:e,open:t,fields:n=[],popupContext:r,setDynamicOptions:i}){let[o,s]=(0,a.useState)({}),c=(0,a.useRef)({}),l=(0,a.useRef)({}),u=(0,a.useRef)({}),d=(0,a.useCallback)((t,n)=>{let a=e.searchOptions??e.searchFetcher;if(typeof a!=`function`)return;l.current[t.name]?.abort();let o=new AbortController;return l.current[t.name]=o,Promise.resolve(a(t,n,r)).then(e=>{if(o.signal.aborted)return;let n=Array.isArray(e)?e:e?.items??e?.list??[];i(e=>({...e,[t.name]:n.map(e=>lE(e,t))}))}).catch(e=>{o.signal.aborted||console.error(`[DynamicPopup] Search failed for field "${t.name}":`,e)}),o},[e,r,i]),f=n.filter(e=>(e.searchFetchKey||e.searchFetcher)&&e.preloadOptions!==!1),p=f.map(e=>e.name).join(`|`),m=(0,a.useRef)({runSearch:d,preloadFields:f});(0,a.useEffect)(()=>{m.current={runSearch:d,preloadFields:f}}),(0,a.useEffect)(()=>{if(!t||!p)return;let{runSearch:e,preloadFields:n}=m.current,r=n.map(t=>e(t,``)).filter(Boolean);return()=>r.forEach(e=>e.abort())},[t,p]);function h(t){if(!t.searchFetchKey&&!t.searchFetcher||typeof(e.searchOptions??e.searchFetcher)!=`function`)return;let n=t.searchMinLength??YE;return e=>{clearTimeout(c.current[t.name]);let r=e.length<n?``:e;c.current[t.name]=setTimeout(()=>{d(t,r)},JE)}}function g(t){let n=e.getMentionOptions??e.mentionFetcher;if(typeof n==`function`)return e=>{u.current[t.name]?.abort();let i=new AbortController;u.current[t.name]=i,Promise.resolve(n(t,e,r)).then(e=>{if(i.signal.aborted)return;let n=Array.isArray(e)?e:e?.items??e?.list??[];s(e=>({...e,[t.name]:n.map(e=>({value:e.user_name??e.userName??e.username??String(e),label:e.user_name??e.userName??e.username??String(e)}))}))}).catch(e=>{i.signal.aborted||console.error(`[DynamicPopup] Mention search failed for field "${t.name}":`,e)})}}return{mentionOptions:o,getSearchHandler:h,getMentionSearchHandler:g}}function ZE({form:e,config:t,api:n,popupContext:r,resolvedIds:i,dynamicOptions:s,extraData:c,removedIds:l,fields:u,onClose:d,onSubmit:f}){let[p,m]=(0,a.useState)(!1),[h,g]=(0,a.useState)(null);async function _(e){let t={resolvedIds:i,dynamicOptions:s,extraData:c,removedIds:l};if(typeof n.submit==`function`)return n.submit(e,r,t);if(typeof f==`function`)return f(e,r,t)}function v(){if(t){if(!u.length){if(t.mode===`delete`&&typeof n.deleteItems==`function`){m(!0),g(null),Promise.resolve(n.deleteItems(i,r)).then(()=>{o.message.success(t.successMessage||`Deleted successfully`),d({success:!0})}).catch(e=>{let t=e?.message||`Delete failed. Please try again.`;g(t),m(!1),o.message.error(t)});return}if(typeof n.onOk==`function`){m(!0),Promise.resolve(n.onOk(r)).then(()=>d({success:!0})).catch(e=>{let t=e?.message||`Failed. Please try again.`;o.message.error(t),m(!1)});return}if(typeof n.submit==`function`){m(!0),Promise.resolve(_({})).then(e=>{e?.navigated||(o.message.success(t.successMessage||`Saved successfully`),d({success:!0}))}).catch(e=>{o.message.error(e?.message||`Failed. Please try again.`)}).finally(()=>m(!1));return}d();return}e.validateFields().then(async e=>{m(!0);try{if((await _(e))?.navigated)return;o.message.success(t.successMessage||`Saved successfully`),d({success:!0})}catch(e){o.message.error(e?.message||`Failed. Please try again.`)}finally{m(!1)}}).catch(()=>{})}}function y(){m(!1),g(null)}return{handleOk:v,confirming:p,deleteError:h,resetSubmitState:y}}function QE({open:e=!0,config:t,context:n={},onClose:r,onSubmit:i,api:s={}}){let[u]=o.Form.useForm(),[d,f]=(0,a.useState)({}),[p,m]=(0,a.useState)([]),h=o.Form.useWatch([],u,{preserve:!0})??{},g=(0,a.useMemo)(()=>dE(n),[n]),{selectedIds:_=[],selectedRecords:v=[],moduleName:y=``}=g,b=(0,a.useMemo)(()=>_.map((e,t)=>{let n=v[t];return n?.id??n?._id??e}),[_,v]),x=(0,a.useMemo)(()=>t?typeof t.getFields==`function`?t.getFields(g):t.fields??[]:[],[t,g]),S=(0,a.useMemo)(()=>{let e={};return x.forEach(t=>{let n=g[t.initialValueKey];!t.initialValueKey||n===void 0||(e[t.name]=t.type===`date-picker`?(0,l.default)(n):n)}),e},[x,g]),{dynamicOptions:C,setDynamicOptions:w,extraData:T}=qE({open:e,config:t,api:s,fields:x,popupContext:g,formValues:d}),{mentionOptions:E,getSearchHandler:D,getMentionSearchHandler:O}=XE({api:s,open:e,fields:x,popupContext:g,setDynamicOptions:w});function k(e){typeof r==`function`&&r(e)}let{handleOk:A,confirming:j,deleteError:M,resetSubmitState:N}=ZE({form:u,config:t,api:s,popupContext:g,resolvedIds:b,dynamicOptions:C,extraData:T,removedIds:p,fields:x,onClose:k,onSubmit:i});(0,a.useEffect)(()=>{e&&(u.resetFields(),f(S??{}),m(g.removedIds??[]),N())},[e,S]);let P=!!t?.autoSubmitWhenNoFields&&x.length===0;(0,a.useEffect)(()=>{!e||!P||A()},[e,P]);let F=_.length,I=String(y).replace(/s$/i,``),L=F===1?I:y,R=v[0]??{},z=t?.getTitleText?t.getTitleText(F,L,R,g):t?.title,B=F===1?R.jobTitle??R.title??R.name??R.fullName??R.candidateName??null:null,ee=t?.getBodyText?t.getBodyText(F,I,L,B,g):t?.bodyText??null,V=typeof t?.getNote==`function`?t.getNote(g):t?.note,H=x.filter(e=>e.required).every(e=>{let t=h[e.name];return!(t==null||t===``||Array.isArray(t)&&t.length===0||typeof t==`object`&&!Array.isArray(t)&&Object.keys(t).length===0)}),U=t?.disabledUntilFilled&&!H;if(!t||!e||P)return null;let te=t.component;return te?(0,c.jsx)(o.Modal,{open:e,title:t.title||t.getTitleText?(0,c.jsx)(tE,{titleText:z,titleIcon:t.titleIcon}):null,footer:null,width:t.width??760,centered:!0,maskClosable:!1,onCancel:()=>k(),className:`dynamic-popup${t.className?` ${t.className}`:``}`,children:(0,c.jsx)(te,{context:g,selectedIds:b,selectedRecords:v,moduleName:y,onClose:k})}):(0,c.jsxs)(o.Modal,{open:e,title:(0,c.jsx)(tE,{titleText:z,titleIcon:t.titleIcon}),okText:t.okText||`OK`,cancelText:t.cancelText??`Cancel`,onOk:A,onCancel:()=>k(),okButtonProps:{danger:t.okButtonDanger,disabled:U,loading:j},cancelButtonProps:{disabled:j},closable:!j,maskClosable:!1,width:t.width??480,centered:!0,className:`dynamic-popup${t.className?` ${t.className}`:``}`,children:[(0,c.jsx)(nE,{note:V,description:t.description,showSelectedCount:t.showSelectedCount,count:F,itemLabel:L,bodyText:ee,deleteError:M}),(0,c.jsx)(rE,{footerNote:t.footerNote}),(0,c.jsx)(zE,{form:u,fields:x,initialValues:S,dynamicOptions:C,popupContext:g,extraData:T,removedIds:p,setRemovedIds:m,showAlreadyAssigned:t.showAlreadyAssigned,onValuesChange:f,getSearchHandler:D,getMentionSearchHandler:O,mentionOptions:E})]})}var $E={mode:`delete`,getTitleText:(e,t)=>`Delete ${e>0?`${e} `:``}${t}`,titleIcon:`delete`,okText:`Delete`,okButtonDanger:!0,width:420,getBodyText:(e,t,n,r)=>r?`Are you sure you want to delete the ${r} ${t}?`:e>1?`Are you sure you want to delete ${e} selected ${n}?`:`Are you sure you want to delete this ${t}?`,footerNote:`This action cannot be undone.`,fields:[]},eD={deleteItems:async(e,t)=>{await H(t.moduleName,e)}},tD=new Map;async function nD(e){return e?(tD.has(e)||tD.set(e,i.r({module:e}).catch(t=>(tD.delete(e),console.warn(`[in-progress gate] could not read ${e} form groups:`,t),[]))),tD.get(e)):[]}function rD(t=[],n){return t.some(t=>{let r=e.C(t,n);return r&&r.severity!==`allow`})}async function iD({targetModule:t,sourceModule:n,recordId:r,region:a}={}){let o={severity:`allow`,message:``,group:null};if(!t||!n||!r)return o;let s=a??e.Ln().region;try{let a=await nD(t);if(!rD(a,s))return o;let c=await i.r({module:n,id:r}),l={};for(let e of c){let t=e?.payloadKey||e?.name;t&&Array.isArray(e?.rows)&&(l[t]=e.rows)}return e.D(a,s,l)}catch(e){return console.warn(`[in-progress gate] check skipped:`,e),o}}var aD=`Already submitted`,oD=`submissions`,sD=`candidates`,cD=1440*60*1e3,lD=90,uD=`This candidate was created or last updated more than 90 days ago. Only candidates created or updated within the last 90 days can be selected. Please update this candidate first.`,dD=[`createdAt`,`createdDate`,`dateCreated`,`created_on`,`createdOn`],fD=[`updatedAt`,`updatedDate`,`lastUpdatedAt`,`lastUpdatedDate`,`modifiedAt`,`modifiedDate`];function pD(e,t){for(let n of t){let t=e?.[n];if(!t)continue;let r=new Date(t);if(!Number.isNaN(r.getTime()))return r}return null}function mD(e){return pD(e,dD)}function hD(e){return pD(e,fD)}function gD(e){if(!(e instanceof Date)||Number.isNaN(e.getTime()))return null;let t=e=>new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime();return Math.max(0,Math.floor((t(new Date)-t(e))/cD))}function _D(e){if(!(e instanceof Date)||Number.isNaN(e.getTime()))return null;let t=new Date,n=(t.getFullYear()-e.getFullYear())*12+(t.getMonth()-e.getMonth());return t.getDate()<e.getDate()&&--n,Math.max(0,n)}function vD(e){if(!(e instanceof Date)||Number.isNaN(e.getTime()))return null;let t=new Date,n=t.getFullYear()-e.getFullYear();return(t.getMonth()<e.getMonth()||t.getMonth()===e.getMonth()&&t.getDate()<e.getDate())&&--n,Math.max(0,n)}function yD(e){return e===null?``:e<=14?`green`:e<=89?`yellow`:`red`}function bD(e,t=lD){if(!e)return!1;let n=Date.now()-t*cD,r=mD(e),i=hD(e),a=r&&r.getTime()>=n,o=i&&i.getTime()>=n;return!a&&!o}function xD(e){let t=hD(e);if(!t)return{createdAgo:``,createdAgoTone:``};let n=gD(t),r=_D(t),i=vD(t);return i>=1?{createdAgo:`${i} year${i===1?``:`s`} ago`,createdAgoTone:yD(n)}:r>=1?{createdAgo:`${r} month${r===1?``:`s`} ago`,createdAgoTone:yD(n)}:{createdAgo:oE(t),createdAgoTone:yD(n)}}function SD(e){return{...e,...xD(e),isStaleCandidate:bD(e)}}function CD(e){return String(e?.applicantId??e?._id??e?.id??``)}var wD=null;async function TD(){return wD||=e.jr(sD).then(e=>e?.strategies?.duplicateCheck?.editRoute??``).catch(()=>``),wD}async function ED(e){let t=CD(e);if(!t)return``;let n=await TD();return n?n.replace(/:(_?id)\b/g,encodeURIComponent(t)):``}async function DD({option:e,popupContext:t,confirm:n}){let r=e?._raw??e??{},i=CD(r);if(i){let e=await iD({targetModule:oD,sourceModule:sD,recordId:i});if(e.severity===`block`)return new Promise(t=>{n({title:`This candidate cannot be submitted`,content:e.message,okText:`Pick someone else`,cancelText:`Close`,onOk:()=>t(!1),onCancel:()=>t(!1)})})}if(!bD(r))return!0;let a=t?.navigate;return!a||!i?!1:new Promise(e=>{n({title:`Candidate update required`,content:uD,okText:`OK`,cancelText:`Cancel`,onOk:async()=>{let t=await ED(r);t&&a(t),e(!1)},onCancel:()=>e(!1)})})}function OD(e,t,n){return{...e,label:`${e.label} - ${aD}`,disabled:!0,title:`${aD}${t?` (submission ${t})`:``}`,alreadySubmitted:!0,existingSubmissionId:t||``,...n?{submittedAt:n}:{}}}var kD={searchOptions:async(e,t,n)=>{if(e.searchFetchKey===`quickSubmitJobList`){let e=n.selectedRecords?.[0]??{},r=e.id??e._id??n.selectedIds?.[0],i,a=!0;try{i=await ye({searchQuery:t,candidateId:r})}catch{a=!1;let e=await Pn({searchQuery:t,candidateId:r});i=Array.isArray(e?.data)?e.data:[]}let o=i.map(e=>({label:[e.jobReferenceId??e.clientJobReferenceId,e.jobTitle].filter(Boolean).join(` - `)||String(e._id??``),value:e._id??``,_raw:e}));if(a)return o.map(e=>{if(e._raw?.isSubmitted||e._raw?.alreadySubmitted)return OD(e,e._raw?.jobSubmissionId||``,e._raw?.submittedAt||``);if(e._raw?.disable){let t=String(e._raw?.message??``).trim();return{...e,disabled:!0,label:t?`${e.label} - ${t}`:e.label,title:t}}return e});let s=await xe({applicantId:r,jobIds:o.map(e=>e.value)}).catch(()=>new Map);return o.map(e=>{let t=s.get(String(e.value));return t?OD(e,t.submissionId,t.submittedAt):e})}if(e.searchFetchKey===`quickSubmitCandidates`){let e=n.selectedRecords?.[0]??{},r=n.jobId??e.jobId??e.id??e._id??n.selectedIds?.[0],i,a=new Map;try{i=await be({search:t,jobId:r})}catch{let e=await Po({isFromSubmission:n.isFromSubmission,jobId:r,submissionId:n.submissionId,search:t});i=Array.isArray(e)?e:[],a=await xe({jobId:r,applicantIds:i.map(CD)}).catch(()=>new Map)}return i.map(e=>SD(e)).map(e=>{let t=a.get(CD(e));if(!(t||e?.isSubmitted===!0||e?.alreadySubmitted===!0))return e;let n=t?.submissionId||e?.jobSubmissionId||``,r=t?.submittedAt||e?.submittedAt||``;return{...e,disabled:!0,optionNote:aD,isSubmitted:!0,alreadySubmitted:!0,existingSubmissionId:n,...r?{submittedAt:r}:{}}})}return[]},submit:async(e,t,n)=>{let{navigate:r,selectedRecords:i=[],selectedIds:a=[],moduleName:o}=t,s=i[0]??{},c,l;t.jobId?(c=t.jobId,l=s.id??s._id??a[0]??``):o===`candidate`?(c=e.jobId??``,l=s.id??s._id??a[0]??``):(c=s.jobId??s.id??s._id??a[0]??``,l=e.candidate??``);let u=n?.dynamicOptions?.candidate?.find(e=>CD(e?._raw)===String(l)),d=n?.dynamicOptions?.jobId?.find(e=>String(e?.value)===String(c)),f=u?._raw?.isSubmitted||u?._raw?.alreadySubmitted||d?.alreadySubmitted||d?._raw?.isSubmitted||d?._raw?.alreadySubmitted;if(!c||!l)throw Error(`Select both a job and a candidate to quick submit.`);if(bD(u?._raw))throw Error(uD);let p=await iD({targetModule:oD,sourceModule:sD,recordId:l});if(p.severity===`block`)throw Error(p.message);let m=f,h=u?._raw?.existingSubmissionId||u?._raw?.jobSubmissionId||d?.existingSubmissionId||d?._raw?.jobSubmissionId||``;try{let e=await ve({jobId:c,applicantId:l});m||=!!e?.exists,h=e?.submissionId||h}catch(e){throw Error(`Could not verify existing submissions (${e?.message??`request failed`}). Please try again.`,{cause:e})}if(m)throw Error(`This candidate is already submitted for this job${h?` (submission ${h})`:``}.`);let g=new URLSearchParams;l&&g.set(`candidateId`,l);let _=u?.priorSubmissionId||u?._raw?.submissionId||d?.priorSubmissionId||d?._raw?.submissionId||``;_?(g.set(`submissionId`,String(_)),g.set(`isFromSubmission`,`true`)):g.set(`isFromSubmission`,`false`);let v=jo(No({jobId:c,applicantId:l}).catch(()=>[]));return r(`/submission-create/${c}?${g.toString()}`,{state:{relevantSkillsToken:v}}),{navigated:!0}}},AD={title:`Submit`,okText:`Submit`,width:640,disabledUntilFilled:!0,autoSubmitWhenNoFields:!0,getNote:e=>e.moduleName===`candidate`?`Note: Select a job to submit this candidate.`:`Note: Select a candidate to submit for this job`,getFields:e=>e.jobId?[]:e.moduleName===`candidate`?[{name:`jobId`,label:`Job list`,type:`search-select`,required:!0,placeholder:`Search Job ID / job name - or pick a recent job`,searchFetchKey:`quickSubmitJobList`,optionLayout:{id:`{jobReferenceId}`,title:`{jobTitle}`,subtitle:`{clientJobReferenceId}`,meta:[{label:`Created`,key:`createdAt`,type:`date`},{label:`Updated`,key:`updatedAt`,type:`relative`}]}}]:[{name:`candidate`,label:`Candidate`,type:`search-select`,required:!0,placeholder:`Search candidate name / email - or pick a recent candidate`,optionsKey:`candidateOptions`,searchFetchKey:`quickSubmitCandidates`,labelTemplate:`{applicantRefrenceId} - {firstName} {lastName} - {createdAgo}`,valueKey:`applicantId`,optionLayout:{id:`{applicantRefrenceId}`,title:`{firstName} {lastName}`,titleAccent:{key:`createdAgo`,toneKey:`createdAgoTone`,prefix:` - `},subtitle:`{designation} - {email}`,meta:[{label:`Created`,key:`createdAt`,type:`date`},{label:`Updated`,key:`updatedAt`,type:`relative`}]},onSelectGuard:DD}]},jD={title:`Add Notes & Share`,okText:`Save & Share`,width:480,fields:[{name:`notes`,type:`mention-textarea`,required:!0,rows:5,placeholder:`Add your notes on the job. Use '@' to mention someone.`,mentionFetchKey:`mentionUsers`}]},MD=e=>e?.data??e;async function ND({relatedId:e,notes:n,title:r,notesFor:i}){return MD(await gn(t.b,`/notes`,{method:`POST`,body:JSON.stringify({relatedId:e,notes:n,title:r,notesFor:i})}))}var PD={getMentionOptions:async(e,t)=>te(t),submit:async(e,t)=>{let n=Array.isArray(t.selectedIds)?t.selectedIds[0]:t.selectedIds;if(!n)throw Error(`Please select a record before adding a note.`);await ND({relatedId:String(n),notes:e.notes,notesFor:t.moduleName})}},FD={name:`jobId`,label:`Job Title / ID`,type:`search-select`,required:!0,placeholder:`Minimum 3 characters`,searchFetchKey:`tagToJobJobList`,valueKey:`_id`,labelTemplate:`{jobReferenceId} - {jobTitle}`},ID={name:`hiringStage`,label:`Hiring stage`,type:`select`,required:!0,optionsKey:`hiringStageOptions`,defaultOptions:[{label:`Shortlisted`,value:`shortlisted`},{label:`Pipeline`,value:`pipeline`}],initialValueKey:`hiringStage`},LD={title:`Tag to Job`,okText:`Tag`,width:480,disabledUntilFilled:!0,autoSubmitWhenNoFields:!0,getFields:e=>e.jobId&&e.hiringStage?[]:e.jobId?[ID]:[FD,ID]},RD=e=>e?.data??e;function zD(e){return Array.isArray(e)&&e.every(e=>e&&typeof e==`object`&&`Key`in e)?e.reduce((e,{Key:t,Value:n})=>(e[t]=n,e),{}):e}function BD(e){return e?Array.isArray(e.data)?e.data.map(zD):e.stage&&Array.isArray(e.stage.data)?e.stage.data.map(zD):Array.isArray(e)?e.map(zD):[]:[]}async function VD(e=1,n=10){let r=await t.a(t.b,`/workflow/list/all?page=${e}&limit=${n}`),i=RD(r),a=Array.isArray(i)?i:i?.data??[];return{items:a,total:Number(r?.total??i?.total)||a.length,page:e,limit:n}}async function HD(e,n){let r=RD(await t.a(t.b,`/workflow/${e}/stage/${n}`));return Array.isArray(r)?{data:r}:r}async function UD(e,n){if(!e||!n)return null;try{let r=RD(await t.a(t.b,`/module-data-list?${new URLSearchParams({module:e,limit:`1`,offset:`0`,scope:`allJobs`,filters:JSON.stringify([{field:`_id`,op:`in`,values:[String(n)],operator:`and`}])})}`));if(Array.isArray(r))return r[0]??null;if(r?.data&&Array.isArray(r.data))return r.data[0]??null;let i=r?.rows??r?.records??r?.items??r?.list;return Array.isArray(i)?i[0]??null:r??null}catch(t){return console.error(`[getModuleRecordById] failed: ${e}/${n}`,t),null}}async function WD(e){return RD(await t.a(t.S,`/source/workflow-instance`,{method:`POST`,body:JSON.stringify(e)}))}var GD={pipeline:`pipeline`,goodfited:`goodfited`,contacted:`contacted`,submitted:`submitted`,shortlisted:`shortlisted`,interviewinprogress:`interviewInprogress`,selected:`selected`};function KD(e,...t){for(let n of t){let t=String(n).split(`.`).reduce((e,t)=>e?.[t],e);if(t!=null&&t!==``)return t}}function qD(e){let t=String(e??``).trim();return t?GD[t.toLowerCase()]??t:``}function JD(e,t){let n=KD(e,`candidateId`,`candidate_id`,`applicantId`,`applicantID`,`applicantReferenceId`,`applicantRefrenceId`,`_id`,`id`)??t;if(!n)return null;let r=(KD(e,`candidateName`,`candidate_name`,`fullName`,`name`)??[KD(e,`firstName`,`first_name`),KD(e,`lastName`,`last_name`)].filter(Boolean).join(` `))||void 0,i={candidateId:String(n),candidateName:r,phone:KD(e,`phone`,`phoneNumber`,`phone_number`,`mobile`,`mobileNumber`,`mobile_number`),source:KD(e,`source`,`sourceType`,`candidateSource`,`profileSource`),submittedAt:KD(e,`submittedAt`,`lastSubmittedAt`,`updatedAt`),remarks:KD(e,`remarks`,`comment`,`comments`,`notes`),assignedRecruiter:KD(e,`assignedRecruiter`,`recruiterName`,`ownerName`,`assignedToName`),screeningStatus:KD(e,`screeningStatus`,`screening.status`,`screeningResult`),screeningScore:KD(e,`screeningScore`,`screening.score`,`score`),assignedDate:KD(e,`assignedDate`,`assignedAt`,`createdAt`)};return Object.fromEntries(Object.entries(i).filter(([,e])=>e!=null&&e!==``))}var YD={searchOptions:async(e,t)=>e.searchFetchKey===`tagToJobJobList`?U(t):[],submit:async(e,t)=>{let n=e.jobId??t.jobId,r=qD(e.hiringStage??t.hiringStage),i=Array.isArray(t.selectedIds)?t.selectedIds:[],a=Array.isArray(t.selectedRecords)?t.selectedRecords:[],o=Math.max(i.length,a.length,1);for(let e=0;e<o;e+=1){let t=i[e]?String(i[e]):``,o=JD(a[e]??{},t);await WD({jobId:n,module:`jobs`,currentStage:r,...o?{candidateDetails:o}:{}})}await ie({jobId:n,candidateIds:t.selectedIds,hiringStage:r})}},XD={title:`Change Status`,okText:`Apply`,width:420,showSelectedCount:!0,fields:[{name:`status`,label:`New Status`,type:`select`,required:!0,placeholder:`Select a status`,dataSource:`master`,masterName:`clientSubmissions`,labelKey:`clientSubmissionStatusText`,valueKey:`clientSubmissionStatusText`,initialValueKey:`currentStatus`,defaultOptions:[{label:`Active`,value:`active`},{label:`Inactive`,value:`inactive`},{label:`Pending`,value:`pending`},{label:`Closed`,value:`closed`}]}]};function ZD(e,t){return(t?.status??[]).find(t=>String(t?.value??``)===String(e??``))??null}var QD={submit:async(e,t,n)=>{let r=ZD(e.status,n?.dynamicOptions)?._raw??{},i={clientSubmissionStatusText:String(e.status??``).trim(),clientSubmissionStatusId:Number(r.id??r.uniqueId??0)||0,clientSubmissionStatusType:String(r.type??``).trim()};await V(t.moduleName,t.selectedIds,i)}},$D={getTitleText:e=>`Remove ${e>1?`${e} Candidates`:`Candidate`} from Shortlist`,titleIcon:`delete`,okText:`Remove`,okButtonDanger:!0,width:420,getBodyText:e=>e>1?`Are you sure you want to remove ${e} selected candidates from the shortlist?`:`Are you sure you want to remove this candidate from the shortlist?`,footerNote:`The candidate will be moved back to the pipeline.`,fields:[]},eO={onOk:async e=>{await Se({jobId:e.jobId??e.selectedIds[0],candidateIds:e.selectedIds})}},tO={title:`Add to Groups`,description:`Select a group to add the selected candidate(s) to`,okText:`Add to Group`,width:480,disabledUntilFilled:!0,fields:[{name:`groupId`,label:`Group`,type:`select`,required:!0,placeholder:`Select a group`,fetchOptionsKey:`candidateGroups`}]},nO={getOptions:async e=>e.fetchOptionsKey===`candidateGroups`?G():[],submit:async(e,t,{dynamicOptions:n})=>{let r=(n.groupId??[]).find(t=>String(t.value)===String(e.groupId));await ae({candidateIds:t.selectedIds,groupId:e.groupId,groupName:r?.label??``})}},rO=[{title:`Name`,key:`name`,render:(e,t)=>t.name||`${t.first_name??``} ${t.last_name??``}`.trim()||t.user_name||`Assigned user`},{title:`Role`,dataIndex:`role_name`,key:`role`,render:e=>e||`-`},{title:`Reporting`,dataIndex:`reporting_name`,key:`reporting`,render:e=>e||`-`}];function iO({selectedIds:e,onClose:t}){let n=e?.[0],[r,i]=(0,a.useState)(!0),[l,u]=(0,a.useState)(!1),[d,f]=(0,a.useState)({assignedUsers:[],totalSubmissions:0,message:``}),[p,m]=(0,a.useState)([]);(0,a.useEffect)(()=>{let e=!1;return i(!0),Promise.all([se(n).catch(t=>(e||o.message.error(t?.message??`Failed to load self-assign details`),{assignedUsers:[],totalSubmissions:0,message:``})),ue(n).catch(()=>({recruitersData:[]}))]).then(([t,n])=>{e||(f(t),m(Array.isArray(n?.recruitersData)?n.recruitersData:[]))}).finally(()=>{e||i(!1)}),()=>{e=!0}},[n]);let h=async()=>{u(!0);try{await oe({jobIds:[n]}),o.message.success(`Job assigned successfully`),t?.({success:!0})}catch(e){o.message.error(e?.message??`Failed to assign job`)}finally{u(!1)}};if(r)return(0,c.jsx)(`div`,{style:{display:`flex`,justifyContent:`center`,padding:48},children:(0,c.jsx)(o.Spin,{size:`large`})});let g=p.map(e=>({user_id:e.recruiterId??e.id??e.user_id,name:e.name??``,role_name:e.role_name??e.roleName??``,reporting_name:e.reporting_name??e.reportingName??``})),_=new Map(g.map(e=>[String(e.user_id??``),e])),v=(d.assignedUsers?.length??0)>0?d.assignedUsers.map(e=>{let t=e.user_id??e.userId??e.recruiterId??e.id,n=_.get(String(t??``))??{};return{...e,user_id:t,name:n.name||e.name||``,role_name:n.role_name||e.role_name||e.roleName||``,reporting_name:n.reporting_name||e.reporting_name||e.reportingName||``}}):g;return(0,c.jsxs)(`div`,{className:`self-assign-popup-body`,children:[v.length>0?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(`div`,{style:{fontWeight:700,marginBottom:8},children:`Team Members Allocated`}),(0,c.jsx)(o.Table,{columns:rO,dataSource:v,pagination:!1,rowKey:e=>e.user_id??`${e.first_name}-${e.last_name}`,size:`small`,className:`mb-3 no-header-bg`,scroll:{y:200}}),(0,c.jsxs)(`div`,{className:`warning-card`,style:{display:`flex`,alignItems:`center`,gap:8,marginTop:12},children:[(0,c.jsx)(s.ExclamationCircleFilled,{style:{color:`#faad14`,fontSize:18}}),(0,c.jsx)(`div`,{style:{fontSize:13},children:`These users are already assigned to this job. Do you still want to assign yourself as well?`})]})]}):(0,c.jsx)(`div`,{style:{padding:`8px 0`},children:d.message||`No one is currently assigned to this job. Do you want to assign yourself?`}),(0,c.jsxs)(`div`,{style:{display:`flex`,justifyContent:`flex-end`,gap:12,marginTop:24},children:[(0,c.jsx)(o.Button,{size:`small`,onClick:()=>t?.(),disabled:l,children:`No`}),(0,c.jsx)(o.Button,{type:`primary`,size:`small`,onClick:h,loading:l,children:`Yes`})]})]})}iO.propTypes={selectedIds:d.default.array,onClose:d.default.func};var aO={title:`Self Assign`,width:480,className:`self-assign-modal`,component:iO},oO={submit:async()=>{}};function sO(e={}){let t=Array.isArray(e.jobPayDetails)?e.jobPayDetails[e.jobPayDetails.length-1]:e.jobPayDetails??e.clientBudget??{},n=Number(t.clientBudgetEnd),r=Number(t.clientBudgetStart);return Number.isFinite(n)&&n>0?n:Number.isFinite(r)&&r>0?r:null}var cO={getTitleText:(e,t,n)=>{let r=n?.jobTitle||n?.title||``;return r?`Assign - ${r}`:`Assign`},okText:`Assign`,width:520,disabledUntilFilled:!0,showAlreadyAssigned:!0,getFields:e=>(sO(e?.selectedRecords?.[0]??{}),[{name:`assignToUserId`,label:`Assign to`,type:`multi-select`,required:!0,placeholder:`Select recruiter(s)`,fetchOptionsKey:`assignToUsers`}])},lO={getOptions:async e=>e.fetchOptionsKey===`assignToUsers`?le():[],loadExtraData:async e=>ue(e.selectedIds[0]),submit:async(e,t,{removedIds:n,extraData:r})=>{await pe({jobIds:t.selectedIds,userId:e.assignToUserId,removedIds:n,existingRecruiters:r?.recruitersData})}},uO={title:`Add Sticky Notes`,getTitleText:(e,t,n,r)=>r.editingNoteId?`Edit Sticky Notes`:`Add Sticky Notes`,okText:`Save`,width:480,fields:[{name:`heading`,label:`Heading`,type:`input`,required:!0,placeholder:`Enter heading`,initialValueKey:`editingHeading`},{name:`targetDate`,label:`Target Date`,type:`date-picker`,required:!1,initialValueKey:`editingTargetDate`},{name:`comments`,label:`Comments`,type:`mention-textarea`,required:!0,rows:5,placeholder:`Enter your note here... Use '@' to mention someone.`,mentionFetchKey:`mentionUsers`,initialValueKey:`editingComments`}]},dO={getMentionOptions:async(e,t)=>te(t),submit:async(e,t)=>{let n=e.targetDate?e.targetDate.toISOString():``;t.editingNoteId?await W(t.editingNoteId,{title:e.heading,targetDate:n,notes:e.comments}):await ne({relatedIds:t.selectedIds,module:t.moduleName,title:e.heading,targetDate:n,notes:e.comments}),window.dispatchEvent(new Event(`sticky-notes:refresh`))}},fO={title:`Move to Onboarding`,bodyText:`Are you sure you want to move this candidate to onboarding?`,okText:`Yes`,cancelText:`No`,width:420,successMessage:`Moved to onboarding successfully`,successNavigate:`/onboarding`,fields:[{name:`sendOnboardingEmail`,type:`priority-checkbox`,checkboxLabel:`Send Onboarding Email`}]},pO={submit:async(e,t)=>{await me({submissionId:t.selectedRecords?.[0]?.submissionId,isMail:e.sendOnboardingEmail})}};function mO(e){return Array.isArray(e)?e[e.length-1]??{}:e&&typeof e==`object`?e:{}}var hO={USD:`$`,INR:`₹`,EUR:`€`,GBP:`£`};function gO(e,t,n){let r=mO(e?.[t])[n];if(r!=null&&r!==``)return r;let i=e?.[`${t}.${n}`];return i!=null&&i!==``?i:void 0}function _O(e){let t=e.selectedRecords?.[0]??{},n=gO(t,`candidateRate`,`candidateAcceptedRate`)??gO(t,`candidateBudget`,`candidateBudgetStart`);if(n===void 0||Number(n)===0)return null;let r=gO(t,`candidateRate`,`candidateAcceptedCurrency`)??gO(t,`candidateBudget`,`candidateBudgetCurrency`);return{amount:n,symbol:gO(t,`candidateRate`,`candidateAcceptedCurrencySymbol`)??gO(t,`candidateBudget`,`candidateBudgetCurrencySymbol`)??hO[String(r??``).toUpperCase()]??(r||`$`),unit:gO(t,`candidateRate`,`candidateAcceptedPayUnit`)??gO(t,`candidateBudget`,`candidateBudgetUnit`)??``}}var vO={title:`Approve Rate`,okText:`Approve`,width:520,className:`medium-modal`,successMessage:`Rate approved`,getBodyText:(e,t,n,r,i)=>{let a=_O(i);return`Candidate Rate: ${a?`${a.symbol}${a.amount}${a.unit?`/${a.unit}`:``}`:`-`}`},fields:[{name:`candidateProposedRate`,label:`Proposed Rate`,type:`number`,required:!0,placeholder:`Amount`,min:0,inlineRow:`proposedRate`,validator:(e,t)=>{if(e==null||e===``)return;let n=_O(t);if(n&&Number(e)<=Number(n.amount))return`Proposed rate must be greater than Candidate Rate`}},{name:`candidateProposedRateCurrency`,label:`Currency`,type:`select`,required:!0,inlineRow:`proposedRate`,defaultOptions:[{label:`$ USD`,value:`$`},{label:`₹ INR`,value:`₹`},{label:`€ EUR`,value:`€`}]},{name:`candidateProposedRateUnit`,label:`Unit`,type:`select`,required:!0,inlineRow:`proposedRate`,defaultOptions:[{label:`Year`,value:`yr`},{label:`Month`,value:`mo`},{label:`Week`,value:`wk`},{label:`Hour`,value:`hr`},{label:`Daily`,value:`day`}]},{name:`submitVia`,label:`Submit Via`,type:`radio`,required:!0,defaultOptions:[{label:`Mail`,value:`Mail`},{label:`VMS`,value:`VMS`}]}]},yO={submit:async(e,t)=>{let n=t.selectedIds[0];if(await he(n,{candidateProposedRate:e.candidateProposedRate,candidateProposedRateCurrency:e.candidateProposedRateCurrency,candidateProposedRateUnit:e.candidateProposedRateUnit,submitVia:e.submitVia}),e.submitVia===`VMS`)try{await ge(n)}catch{o.message.warning(`Approved. VMS notification could not be sent — use Send Mail to notify the client.`)}else o.message.info(`Approved — use Send Mail to notify the client.`)}};async function bO(e,n={}){let r=t.l();if(!r){let e=Error(`Authentication required`);throw e.status=401,e}let i=await fetch(`${t.w}${e}`,{...n,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${r}`,...n.headers}});if(i.status===401&&t.m(),!i.ok){let e=Error(`API ${i.status}: ${i.statusText}`);throw e.status=i.status,e}return i.json()}async function xO(e){let t=await bO(`/mail-form?${new URLSearchParams({submissionId:e,submissionType:`client`}).toString()}`);return t.data??t}function SO(e){return Array.isArray(e)?e[e.length-1]:e}function CO(e={}){let t=SO(e?.proposedRate)?.candidateProposedRate??e?.candidateProposedRate??e?.proposedRateValue,n=Number(t);return Number.isFinite(n)?n:0}function wO(e,t={}){let n=SO((e?.record?.job??e?.job??t?.job??{})?.jobPayDetails)??{},r=e?.record?.submission??t??{},i=SO(r?.clientBudget)??r?.clientBudget??{},a=n?.clientBudgetEnd??n?.clientBudgetStart??i?.clientBudgetEnd??i?.clientBudgetStart,o=Number(a);return Number.isFinite(o)?o:0}function TO(e={}){let t=String(e?.currencyRaw??``).trim().toUpperCase(),n=String(e?.currency??``).trim();return n&&!/^[A-Z]{3}$/i.test(n)?n:t===`USD`||n.toUpperCase()===`USD`?`$`:t===`INR`||n.toUpperCase()===`INR`?`₹`:t===`EUR`||n.toUpperCase()===`EUR`?`€`:t===`GBP`||n.toUpperCase()===`GBP`?`£`:n||t}function EO(e={}){return String(e?.rateUnit??`hr`).trim().replace(/^\/+/,``)||`hr`}function DO(e,t={}){let n=Number(e);return Number.isFinite(n)?`${TO(t)}${n}/${EO(t)}`:``}function OO(e,t,n){if(n==null||n===``)return String(e??``);let r=String(e??``),i=String(n),a=!1,o=RegExp(`(<(?:strong|b)[^>]*>\\s*${t}\\s*:?\\s*</(?:strong|b)>\\s*)([\\s\\S]*?)(?=</(?:li|p|div)>)`,`gi`);if(r=r.replace(o,(e,t)=>(a=!0,`${t}${i}`)),!a){let e=RegExp(`(${t}\\s*:?[ \\t]*)([^<\\r\\n]*)`,`gi`);r=r.replace(e,(e,t)=>`${t}${i}`)}return r}function kO(e,t,n,r,i){let a=Number(n?.proposedRate),o=Number.isFinite(a)?a:CO(t),s=Number(n?.clientJobRate),c=Number.isFinite(s)&&s>0?s:wO(r,i),l={proposedRate:o,jobBillRate:c},u=String(e??``).replace(/{{\.?((?:proposedRate)|(?:jobBillRate))}}/g,(e,t)=>{let n=l[t];return n==null?e:String(n)});return u=OO(u,`Proposed\\s*Rate`,DO(o,n)),u=OO(u,`(?:Job\\s*)?Bill\\s*Rate`,DO(c,n)),u}function AO(...e){return e.map(e=>e==null?``:String(e).trim()).find(Boolean)??``}var jO=(e,t)=>!!e&&e.toLowerCase()===AO(t).toLowerCase();function MO(e,t,n){let r=AO(t.submittedBy);return AO(jO(r,n)||jO(r,e.submitSource)||jO(r,e.supplierName)||jO(r,e.source)||jO(r,e.candidateSource)?``:r,e.signatureEmail)}function NO(e,t={}){let n=t.employerName??e.supplierName??e.submitSource;return{client:t.clientName??e.clientName,role:t.jobTitle??e.jobTitle??e.designation,reqId:t.reqId??e.jobClientRefrenceId??e.mspReqId??e.submissionId,name:t.candidateName||[e.firstName,e.lastName].filter(Boolean).join(` `)||e.candidateFullName,location:t.jobLocation??e.city??e.currentLocation??e.jobLocation,vendor:n,submittedBy:MO(e,t,n),submittedAt:t.createdAt??e.createdAt,email:t.email??e.email,employerLocation:t.employerLocation,employerName:t.employerName}}function PO(e){let t=e?.$oid??e?._id?.$oid??e?._id??e?.id?.$oid??e?.id??e;if(t==null||typeof t==`object`)return``;let n=String(t).trim();return/^[a-f\d]{24}$/i.test(n)?n:``}function FO(...e){for(let t of e){let e=[t?.jobId,t?.JobId,t?.job_id,t?.jobDetails?._id,t?.jobDetails?.id,t?.job?._id,t?.job?.id,t?.submission?.jobId,t?.submission?.JobId,t?.submission?.job_id,t?.submission?.jobDetails?._id,t?.submission?.jobDetails?.id,t?.submission?.job?._id,t?.submission?.job?.id,t?.recordMeta?.jobId,t?.recordMeta?.JobId,t?.recordMeta?.job_id,t?.submission?.recordMeta?.jobId,t?.submission?.recordMeta?.JobId,t?.submission?.recordMeta?.job_id].map(PO).find(Boolean);if(e)return e}return``}function IO(e){if(!e?.referralId)return{};let t=Number(e.referralRate??e.referalRate??0)||0,n=String(e.referralType??e.referalType??`RECURRING`).trim()||`RECURRING`,r=e.referralId??e.referalId;return{referralId:r,referalId:r,referralRate:t,referalRate:t,referralType:n,referalType:n,referralEnabled:!0,referalEnabled:!0,isReferralApplicable:!0,referralDetails:{referralId:r,referalId:r,referralRate:t,referalRate:t,referralType:n,referalType:n,referralEnabled:!0,referalEnabled:!0,isReferralApplicable:!0}}}function LO(e=``){return String(e??``).replace(/map\[[^\]]*(?:resume|document|attachment|file)[^\]]*\]/gi,``).replace(/<p>\s*<\/p>/gi,``).replace(/(?:<br\s*\/?>\s*){3,}/gi,`<br><br>`).trim()}function RO(...e){for(let t of e){let e=[t?.candidateId,t?.applicantId,t?.candidate?._id,t?.candidate?.id,t?.submission?.candidateId,t?.submission?.applicantId,t?.recordMeta?.candidateId,t?.recordMeta?.applicantId].map(PO).find(Boolean);if(e)return e}return``}async function zO(e){let t=e?.fileUrl??e?.downloadUrl??e?.url;if(!t)return null;let n=await fetch(t);if(!n.ok)throw Error(`Unable to load ${e?.fileName||`resume`}`);let r=await n.blob(),i=e?.fileName??e?.uploadedFileName??e?.originalName??e?.uniqueName??`resume`;return new File([r],i,{type:e?.contentType||r.type||`application/octet-stream`})}async function BO(n,r,i){let a=[],o=await e.mn(`submissions`,n,`resume`).catch(()=>({data:[]}));a.push(...o?.data??[]);let s=RO(r?.record?.submission,i,r?.record);if(!s){let e=await t.a(t.b,`/module/list?module=submissions&id=${encodeURIComponent(n)}`).catch(()=>({})),r=e?.data??e??{};s=RO((Array.isArray(r?.data)?r.data:Array.isArray(r)?r:[])[0])}if(s){let t=await e.mn(`candidates`,s,`resume`).catch(()=>({data:[]}));a.push(...t?.data??[])}let c=(await Promise.all(a.map(zO))).filter(Boolean),l=new Set;return c.filter(e=>{let t=`${e.name}:${e.size}:${e.type}`;return l.has(t)?!1:(l.add(t),!0)})}function VO(e={}){return{to:(e.to??e.To??[]).map(e=>e.email??e.Email??e).filter(Boolean).join(`, `),cc:(e.cc??e.Cc??[]).map(e=>e.email??e.Email??e).filter(Boolean).join(`, `),bcc:(e.bcc??e.Bcc??[]).map(e=>e.email??e.Email??e).filter(Boolean).join(`, `),subject:e.subject??e.Subject??``,contents:LO(e.content?.value??e.Content?.Value??e.contents??e.body??``)}}function HO({context:e,selectedIds:t,selectedRecords:n,moduleName:r,onClose:i}){let s=n?.[0]??{},l=t?.[0]??Sg(s),[u,d]=(0,a.useState)(null),[f,p]=(0,a.useState)(!0),[m,h]=(0,a.useState)([]),[g,_]=(0,a.useState)(!1),[v,y]=(0,a.useState)(`vms`),[b,x]=(0,a.useState)(null),[S,C]=(0,a.useState)(null),[w,T]=(0,a.useState)(!1),[E,D]=(0,a.useState)(!1),[O,k]=(0,a.useState)(!1),[A,j]=(0,a.useState)(!1),[M,N]=(0,a.useState)({to:``,cc:``,bcc:``,subject:``,contents:``,attachments:[],showCc:!1,showBcc:!1});(0,a.useEffect)(()=>{let e=!1;return l_(l,s).then(t=>{e||d(t)}).catch(t=>{e||(o.message.error(t?.message??`Unable to load finance details`),d({record:{submission:s},lookups:{},display:{}}))}).finally(()=>{e||p(!1)}),()=>{e=!0}},[l]),(0,a.useEffect)(()=>{let e=!1;return v_().then(t=>{e||h(t)}).catch(()=>{}),()=>{e=!0}},[]);let P=async()=>{if(b){if(v===`mail`){_(!1),D(!0),k(!0);try{let[e,t]=await Promise.all([xO(l).then(VO),BO(l,u,s).catch(e=>(console.warn(`Unable to resolve resume attachment:`,e),[]))]),n=u?.record?.submission??s;N({to:kO(e.to,n,b,u,s),cc:kO(e.cc,n,b,u,s),bcc:kO(e.bcc,n,b,u,s),subject:kO(e.subject,n,b,u,s),contents:kO(e.contents,n,b,u,s),attachments:t,showCc:!!e.cc,showBcc:!!e.bcc})}catch(e){o.message.error(e?.message??`Unable to prepare approval mail`)}finally{k(!1)}return}T(!0);try{await he(l,{candidateProposedRate:b.proposedRate,candidateProposedRateCurrency:b.currencyRaw??b.currency,candidateProposedRateUnit:b.rateUnit,submitVia:`VMS`,...IO(S)}),o.message.success(`Submission approved`),_(!1),x(null),C(null),i?.({success:!0})}catch(e){o.message.error(e?.message??`Unable to approve submission`)}finally{T(!1)}}},F=!O&&Uw(M.to).length>0&&Ww(M.to)&&Ww(M.cc)&&Ww(M.bcc)&&M.subject.trim()&&M.contents.trim(),I=async()=>{if(!b||!F||A)return;j(!0);let e={candidateProposedRate:b.proposedRate,candidateProposedRateCurrency:b.currencyRaw??b.currency,candidateProposedRateUnit:b.rateUnit};try{await he(l,{...e,submitVia:`VMS`,...IO(S)});let t=FO(u?.record,s);if(!t)o.message.warning(`Submission approved, but job details were not available to send mail`);else try{await un({jobId:t,toMail:Uw(M.to),ccMail:Uw(M.cc),bccMail:Uw(M.bcc),subject:M.subject,contents:M.contents,attachments:M.attachments??[]}),o.message.success(`Approval mail sent and submission approved`)}catch(e){o.message.warning(e?.message?`Submission approved, but mail was not sent: ${e.message}`:`Submission approved, but mail was not sent`)}D(!1),x(null),C(null),i?.({success:!0})}catch(e){o.message.error(e?.message??`Unable to send approval mail`)}finally{j(!1)}},L=(0,a.useMemo)(()=>({submissionApprove:async({computed:e,referral:t})=>{x(e),C(t??null),y(`vms`),_(!0)},submissionReject:async()=>{e?.navigate?.(`/popup/reject`,{replace:!0,state:{background:e?.background??null,selectedIds:t,selectedRecords:n,moduleName:r}})}}),[e,t,n,r]);return f||!u?(0,c.jsx)(`div`,{style:{display:`flex`,justifyContent:`center`,padding:48},children:(0,c.jsx)(o.Spin,{size:`large`})}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(Qg,{type:Xh,record:u.record,lookups:u.lookups,identity:NO(s,u.display),referralOptions:m,currentUserId:typeof localStorage<`u`?localStorage.getItem(`userId`)??void 0:void 0,actions:L,onClose:()=>i?.(),variant:`popup`}),(0,c.jsx)(o.Modal,{title:`Choose approval method`,open:g,okText:`Approve`,confirmLoading:w,onOk:P,onCancel:()=>{w||(_(!1),x(null),C(null))},children:(0,c.jsxs)(o.Radio.Group,{value:v,onChange:e=>y(e.target.value),style:{display:`grid`,gap:12},children:[(0,c.jsx)(o.Radio,{value:`vms`,children:`Via VMS`}),(0,c.jsx)(o.Radio,{value:`mail`,children:`Via Mail`})]})}),(0,c.jsx)(o.Drawer,{open:E,placement:`right`,onClose:()=>{A||D(!1)},closable:!1,rootClassName:`mail-popup`,width:620,maskClosable:!1,footer:(0,c.jsxs)(`div`,{className:`mail-popup__footer`,children:[(0,c.jsx)(o.Button,{onClick:()=>D(!1),disabled:A,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,loading:A,disabled:!F,onClick:I,children:`Send`})]}),children:O?(0,c.jsx)(`div`,{style:{display:`flex`,justifyContent:`center`,padding:48},children:(0,c.jsx)(o.Spin,{size:`large`})}):(0,c.jsx)(nT,{value:M,onChange:N,moduleName:`submissions`,ready:!O,title:`Submit Via Mail`,contextRecords:[u.record?.submission??s]})})]})}HO.propTypes={context:d.default.object,selectedIds:d.default.array,selectedRecords:d.default.array,moduleName:d.default.string,onClose:d.default.func};var UO={title:`Manager Approve`,width:780,className:`fa-modal manager-approve-modal`,component:HO},WO={submit:async()=>{}};function GO(...e){return e.map(e=>e==null?``:String(e).trim()).find(Boolean)??``}var KO=(e,t)=>!!e&&e.toLowerCase()===GO(t).toLowerCase();function qO(e,t,n){let r=GO(t.submittedBy);return GO(KO(r,n)||KO(r,e.submitSource)||KO(r,e.supplierName)||KO(r,e.source)||KO(r,e.candidateSource)?``:r,e.signatureEmail)}function JO(e,t={}){let n=t.employerName??e.supplierName??e.submitSource;return{client:t.clientName??e.clientName,role:t.jobTitle??e.jobTitle??e.designation,reqId:t.reqId??e.jobClientRefrenceId??e.mspReqId??e.submissionId,name:t.candidateName||[e.firstName,e.lastName].filter(Boolean).join(` `)||e.candidateFullName,location:t.jobLocation??e.city??e.currentLocation??e.jobLocation,vendor:n,submittedBy:qO(e,t,n),submittedAt:t.createdAt??e.createdAt,email:t.email??e.email,employerLocation:t.employerLocation,employerName:t.employerName}}function YO(e){let t=Array.isArray(e)?e:[];for(let e=t.length-1;e>=0;--e)if(String(t[e]?.activityType??``).trim().toLowerCase()===`cfo rejected`)return t[e];return null}function XO(e){return String(e??``).toLowerCase().replace(/\b\w/g,e=>e.toUpperCase())}function ZO({selectedIds:t,selectedRecords:n,onClose:r}){let i=n?.[0]??{},s=t?.[0]??Sg(i),[l,u]=(0,a.useState)(null),[d,f]=(0,a.useState)(``),[p,m]=(0,a.useState)(!0);(0,a.useEffect)(()=>{let t=!1;return m(!0),Promise.all([l_(s,i),e.cn(`submission`,s).catch(()=>[])]).then(([e,n])=>{if(t)return;let r=YO(n);f(Sg(e?.meta?.workforceEngagementId??i?.onboarding?.workforceEngagementId??i?.workforceEngagementId));let a=e?.meta?.rejectReasonComments||r?.activityComments||``;u({...e,record:{...e.record,submission:{...e.record.submission,cfoRejectionReason:a?XO(a):``,cfoRejectedAt:e?.meta?.rejectedAt??r?.activityTime??null}}})}).catch(e=>{t||(o.message.error(e?.message??`Unable to load finance details`),u({record:{submission:i},lookups:{},display:{}}))}).finally(()=>{t||m(!1)}),()=>{t=!0}},[s]);let h=(0,a.useMemo)(()=>({submissionReapproveSend:async({computed:e})=>{await K(d,{submissionId:s,billRate:e.proposedRate,payRate:e.employerRate,currency:e.currencyRaw??e.currency,rateUnit:e.rateUnit,vmsPercent:e.clientVmsPercent}),await he(s,{candidateProposedRate:e.proposedRate,candidateProposedRateCurrency:e.currencyRaw??e.currency,candidateProposedRateUnit:e.rateUnit,submitVia:`Mail`,context:`resend`}),o.message.success(`Re-approved and sent for CFO approval`),r?.({success:!0})}}),[s,d,r]);return p||!l?(0,c.jsx)(`div`,{style:{display:`flex`,justifyContent:`center`,padding:48},children:(0,c.jsx)(o.Spin,{size:`large`})}):(0,c.jsx)(Qg,{type:eg,record:l.record,lookups:l.lookups,identity:JO(i,l.display),currentUserId:typeof localStorage<`u`?localStorage.getItem(`userId`)??void 0:void 0,actions:h,onClose:()=>r?.(),variant:`popup`})}ZO.propTypes={selectedIds:d.default.array,selectedRecords:d.default.array,onClose:d.default.func};var QO={title:`Re-Approve`,width:780,className:`fa-modal manager-approve-modal`,component:ZO},$O={submit:async()=>{}},ek=[{id:1,name:`Re-Submission`},{id:2,name:`Candidate doesn't fit into the profile`},{id:3,name:`Incomplete candidate details - (Re-Submission)`}],tk={title:`Reject`,okText:`Reject`,okButtonDanger:!0,width:480,successMessage:`Submission rejected successfully`,fields:[{name:`rejectReason`,label:`Rejection Reasons`,type:`select`,required:!0,placeholder:`Select rejection reasons`,defaultOptions:ek.map(e=>({label:e.name,value:e.id}))},{name:`rejectReasonComments`,label:`Comments`,type:`textarea`,required:!0,rows:4}]},nk={submit:async(e,t)=>{let n=ek.find(t=>String(t.id)===String(e.rejectReason));await _e({submissionId:t.selectedIds[0],rejectReasonId:e.rejectReason,rejectReason:n?.name??``,rejectReasonComments:e.rejectReasonComments})}},rk={delete:$E,"quick-submit":AD,"add-notes":jD,"tag-to-job":LD,"change-status":XD,"remove-from-shortlist":$D,"add-to-groups":tO,"self-assign":aO,"others-assign":cO,"sticky-notes":uO,"move-to-onboarding":fO,"approve-rate":vO,"manager-approve":UO,"manager-reapprove":QO,reject:tk},ik={delete:eD,"quick-submit":kD,"add-notes":PD,"tag-to-job":YD,"change-status":QD,"remove-from-shortlist":eO,"add-to-groups":nO,"self-assign":oO,"others-assign":lO,"sticky-notes":dO,"move-to-onboarding":pO,"approve-rate":yO,"manager-approve":WO,"manager-reapprove":$O,reject:nk};function ak(e){let t=e?.data??e;return Array.isArray(t)?t:t?.data??t?.rows??t?.records??t?.items??t?.list??[]}function ok(e,...t){for(let n of t){let t=String(n).split(`.`).reduce((e,t)=>e?.[t],e);if(t!=null&&t!==``)return t}return``}function sk(e){let t=String(ok(e,`isDeleted`,`deleted`)).toLowerCase(),n=String(ok(e,`assignmentStatus`,`status`)).toLowerCase();return t!==`true`&&t!==`1`&&![`removed`,`inactive`,`deleted`].includes(n)}function ck(e){let t=ok(e,`candidateName`,`candidate_name`,`fullName`,`name`);return t?String(t):[ok(e,`firstName`,`first_name`),ok(e,`lastName`,`last_name`)].filter(Boolean).join(` `)||`Unnamed candidate`}function lk(e){return String(ok(e,`candidateId`,`candidate_id`,`candidate._id`,`candidate.id`))}function uk(e){return String(ok(e,`workforceEngagementId`,`engagementId`,`_id`,`id`))}function dk(e){return String(ok(e,`batchName`,`name`,`title`,`batch_name`))}function fk({open:n=!0,context:r={},onClose:i}){let[s,l]=(0,a.useState)([]),[u,d]=(0,a.useState)([]),[f,p]=(0,a.useState)(``),[m,h]=(0,a.useState)(!0),[g,_]=(0,a.useState)(!1),[v,y]=(0,a.useState)(``),[b,x]=(0,a.useState)(new Map),S=String(r.selectedIds?.[0]??r.selectedRecords?.[0]?._id??r.selectedRecords?.[0]?.id??r.batchId??``);(0,a.useEffect)(()=>{if(!n)return;let t=!1;return Promise.resolve().then(()=>(t||h(!0),Promise.all([e._n(`onboarding`,200,0),e._n(`batchCandidates`,1e3,0).catch(()=>[])]))).then(([e,n])=>{t||(l(ak(e)),x(new Map(ak(n).filter(sk).map(e=>[String(ok(e,`candidateId`,`candidate_id`)),e]).filter(([e])=>e))))}).catch(e=>{t||y(e.message||`Unable to load onboarding candidates`)}).finally(()=>{t||h(!1)}),()=>{t=!0}},[n]);let C=(0,a.useMemo)(()=>{let e=f.trim().toLowerCase();return e?s.filter(t=>[ck(t),ok(t,`email`,`candidateEmail`,`candidate_email`),ok(t,`status`,`onboardingStatus`,`onboarding_status`)].some(t=>String(t).toLowerCase().includes(e))):s},[s,f]);async function w(){if(!S){y(`Select a batch before adding candidates`);return}let n=s.filter(e=>u.includes(uk(e)));if(!n.length)return;let a=n.map(e=>({record:e,assignment:b.get(lk(e))})).filter(e=>e.assignment);if(a.length){y(`${a.map(({record:e})=>ck(e)).join(`, `)} ${a.length===1?`is`:`are`} already added to a batch. Each candidate can be added to only one batch.`);return}_(!0),y(``);try{let{userId:a}=t.o(),s=dk(r.selectedRecords?.[0])||dk(r);await Promise.all(n.map(t=>e.Jn(`batchCandidates`,{schemaVersion:1,batchId:S,batchName:s,candidateId:lk(t),workforceEngagementId:uk(t),source:`ONBOARDING`,assignmentStatus:`ASSIGNED`,assignedAt:new Date().toISOString(),assignedBy:a??0,isDeleted:!1}))),o.message.success(`${n.length} candidate${n.length===1?``:`s`} added to the batch`),i?.({refresh:!0})}catch(e){y(e.message||`Unable to add candidates to the batch`)}finally{_(!1)}}return(0,c.jsxs)(o.Modal,{open:n,title:`Add Candidate to Batch`,okText:`Add`,onOk:w,onCancel:()=>i?.(),okButtonProps:{disabled:u.length===0||!S,loading:g},cancelButtonProps:{disabled:g},closable:!g,maskClosable:!1,width:760,centered:!0,children:[v&&(0,c.jsx)(o.Alert,{type:`error`,showIcon:!0,message:v,style:{marginBottom:12}}),(0,c.jsx)(o.Input.Search,{allowClear:!0,placeholder:`Search onboarding candidates`,value:f,onChange:e=>p(e.target.value),style:{marginBottom:12}}),(0,c.jsx)(o.Table,{rowKey:e=>uk(e),columns:[{title:`Candidate`,key:`candidate`,render:(e,t)=>ck(t)},{title:`Email`,key:`email`,render:(e,t)=>ok(t,`email`,`candidateEmail`,`candidate_email`)||`—`},{title:`Onboarding status`,key:`status`,render:(e,t)=>ok(t,`status`,`onboardingStatus`,`onboarding_status`)||`—`}],dataSource:C,loading:m,size:`small`,pagination:{pageSize:10,showSizeChanger:!1},rowSelection:{selectedRowKeys:u,onChange:d,getCheckboxProps:e=>{let t=b.get(lk(e));return{disabled:!lk(e)||!uk(e)||!!t,title:t?`Candidate is already added to a batch`:void 0}}},locale:{emptyText:m?`Loading candidates…`:`No onboarding candidates found`}})]})}var pk={text:`input`,string:`input`,textarea:`textarea`,date:`date-picker`,datepicker:`date-picker`,multiselect:`multi-select`,lookup:`search-select`};function mk(e){if(!e)return null;let t=[...e.groups??[]].sort((e,t)=>Number(e.order??0)-Number(t.order??0)).flatMap(e=>[...e.fields??[]].filter(e=>e.show!==0&&e.show!==!1).sort((e,t)=>Number(e.order??0)-Number(t.order??0)).map(e=>({...e,name:e.name??e.field,label:e.label??e.field,type:pk[String(e.type??`text`).toLowerCase()]??e.type??`input`,required:e.required??e.req===1,options:(e.options??[]).map(e=>({label:e.label??e.name??e.value,value:e.value??e.id??e.label}))}))),n=hk(e.successNavigate);return{title:e.label,fields:t,...n?{successNavigate:n}:{}}}function hk(e){let t=String(e??``).trim();return!t||!t.startsWith(`/`)||t.startsWith(`//`)||/^[a-z][a-z0-9+.-]*:/i.test(t)?null:t}function gk(e,t=[]){if(!e||!Array.isArray(t)||!t.length)return e;let n=new Map(t.filter(e=>e?.name).map(e=>[String(e.name),e]));return n.size?{...e,fields:(e.fields??[]).map(r=>{let i=n.get(String(r.name))??n.get(String(r.label))??(n.size===1&&(e.fields??[]).length===1?t[0]:null);if(!i)return r;let{name:a,...o}=i;return{...r,...o}})}:e}function _k({apiMap:n={},extraConfigs:r={}}){let i=(0,a.useMemo)(()=>({...ik,...n}),[n]),o=(0,a.useMemo)(()=>{let e={...rk};return Object.entries(r).forEach(([t,n])=>{e[t]={...e[t]??{},...n}}),e},[r]),{popupKey:s}=(0,u.useParams)(),l=(0,u.useNavigate)(),{state:d={}}=(0,u.useLocation)(),[f,p]=(0,a.useState)({key:``,config:null});(0,a.useEffect)(()=>{let t=!1;if(!s||!d.moduleName)return;let n=`${d.moduleName}:${s}`;return e.yr(d.moduleName,`popup`,s).then(e=>{t||p({key:n,config:mk(e[0])})}).catch(()=>{t||p({key:n,config:null})}),()=>{t=!0}},[s,d.moduleName]);let m=(0,a.useMemo)(()=>{let e=o[s],t=`${d.moduleName}:${s}`,n=f.key===t?f.config:null;return gk(n?{...e,...n}:e,d.popupAction?.popupFieldOverrides)},[f,o,s,d.moduleName,d.popupAction?.popupFieldOverrides]),h=(0,a.useMemo)(()=>({selectedIds:d.selectedIds??[],selectedRecords:d.selectedRecords??[],moduleName:d.moduleName??``,navigate:l,background:d.background??null,...d.popupContext??{}}),[l,d.selectedIds,d.selectedRecords,d.moduleName,d.popupContext,d.background]),g=(0,a.useMemo)(()=>{let e=d.popupAction;return e?.apiPath?{submit:(n,r)=>{let i=String(e.apiMethod||`POST`).toUpperCase();return t.a(t.b,e.apiPath.startsWith(`/`)?e.apiPath:`/${e.apiPath}`,{method:i,body:[`GET`,`DELETE`].includes(i)?void 0:JSON.stringify({...n,selectedIds:r.selectedIds,selectedRecords:r.selectedRecords,moduleName:r.moduleName})})}}:{}},[d.popupAction]),_=e=>{let t=d.background;if(e?.success&&m?.successNavigate){l(m.successNavigate,{replace:!0,state:{refreshTimestamp:Date.now()}});return}if(e?.success&&t?.pathname){l(`${t.pathname}${t.search??``}`,{replace:!0,state:{...t.state??{},refreshTimestamp:Date.now()}});return}l(-1)};return s===`add-batch-candidate`?(0,c.jsx)(fk,{open:!0,context:h,onClose:_}):(0,c.jsx)(QE,{open:!0,config:m,context:h,onClose:_,api:{...i[s]??{},...g}})}var vk={title:`Vendor Share`,maxVendorSelect:1e3,defaultTab:`myVendor`,defaultPageSize:10,vendorTabs:[{key:`myVendor`,label:`My Vendors`},{key:`allVendor`,label:`All Vendors`}],vendorColumns:[{title:`Vendor Name`,dataIndex:`vendorName`,key:`vendorName`},{title:`Email`,dataIndex:`vendorEmail`,key:`vendorEmail`},{title:`Location`,dataIndex:`vendorLocation`,key:`vendorLocation`},{title:`Updated On`,dataIndex:`updatedOn`,key:`updatedOn`}]},yk={getVendorList:({jobId:e,limit:t,offset:n,type:r})=>sn({jobId:e,limit:t,offset:n,sortBy:`new`,type:r}),getMailDetails:e=>cn(e),submit:({jobId:e,toMail:t,ccMail:n,bccMail:r,subject:i,contents:a})=>un({jobId:e,toMail:t,ccMail:n,bccMail:r,subject:i,contents:a})},bk=vk.vendorColumns.map(e=>({...e,render:e=>e||`-`}));function xk(){let e=(0,u.useNavigate)(),t=(0,u.useLocation)(),{selectedIds:n=[],selectedRecords:r=[],recipients:i=[],subject:l=``,onSend:d,moduleName:f=``,popupAction:p={}}=t.state??{},m=n[0]??r[0]?._id??r[0]?.id,[h,g]=(0,a.useState)({to:i.join(`, `),cc:``,bcc:``,subject:l,contents:``,showCc:!1,showBcc:!1}),[_,v]=(0,a.useState)(!m),[y,b]=(0,a.useState)(vk.defaultTab),[x,S]=(0,a.useState)(``),[C,w]=(0,a.useState)([]),[T,E]=(0,a.useState)(0),[D,O]=(0,a.useState)(0),[k,A]=(0,a.useState)(0),[j,M]=(0,a.useState)(1),[N,P]=(0,a.useState)(vk.defaultPageSize),[F,I]=(0,a.useState)(!1),[L,R]=(0,a.useState)([]);(0,a.useEffect)(()=>{if(!m)return;let e=!1;I(!0);let t=x?100:N,n=x?0:(j-1)*N;return yk.getVendorList({jobId:m,limit:t,offset:n,type:y}).then(t=>{if(e)return;let n=t?.data?.vendorList??t?.data??[],r=t?.data?.myVendorCount??0,i=t?.data?.allVendorCount??0;w(Array.isArray(n)?n:[]),E(r),O(i),A(y===`myVendor`?r:i)}).catch(()=>{e||(w([]),A(0))}).finally(()=>{e||I(!1)}),()=>{e=!0}},[m,y,j,N,x]),(0,a.useEffect)(()=>{m&&yk.getMailDetails(m).then(e=>g(t=>({...t,subject:e.subject||t.subject,contents:e.contents||t.contents,to:e.toMail?.length?Array.isArray(e.toMail)?e.toMail.join(`, `):String(e.toMail):t.to,cc:e.ccMail?.length?Array.isArray(e.ccMail)?e.ccMail.join(`, `):String(e.ccMail):t.cc}))).catch(()=>{}).finally(()=>v(!0))},[m]);let z=(0,a.useMemo)(()=>L.map(e=>C.find(t=>t.vendorId===e)?.vendorEmail??``).filter(Boolean),[L,C]),B=(0,a.useMemo)(()=>({...h,bcc:[...new Set([...Uw(h.bcc),...z])].join(`, `),showBcc:h.showBcc||z.length>0}),[h,z]);function ee(e){let t=new Set(z);g({...e,bcc:Uw(e.bcc).filter(e=>!t.has(e)).join(`, `)})}let V=(Uw(B.to).length||Uw(B.bcc).length)&&Ww(B.to)&&Ww(B.cc)&&Ww(B.bcc)&&B.subject.trim(),H=e=>e===`myVendor`?T:D;function U(){e(-1)}function te(){V&&yk.submit({jobId:m,toMail:Uw(B.to),ccMail:Uw(B.cc),bccMail:Uw(B.bcc),subject:B.subject,contents:B.contents}).then(t=>{t?.status===!0?(o.message.success(t?.data||`Mail sent successfully.`),typeof d==`function`&&d({...B,message:B.contents,selectedIds:n}),e(-1)):o.message.error(t?.message||t?.data||`Failed to send mail. Please try again.`)}).catch(e=>{o.message.error(e?.message||`Failed to send mail. Please try again.`)})}let ne=(0,a.useMemo)(()=>{if(!x)return C;let e=x.toLowerCase();return C.filter(t=>(t.vendorName??``).toLowerCase().includes(e)||(t.vendorEmail??``).toLowerCase().includes(e)||(t.vendorLocation??``).toLowerCase().includes(e))},[C,x]);return(0,c.jsx)(o.Drawer,{open:!0,placement:`right`,onClose:U,closable:!1,rootClassName:`vendor-share`,width:`95%`,footer:(0,c.jsxs)(`div`,{className:`vendor-share__footer`,children:[(0,c.jsx)(o.Button,{onClick:U,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,disabled:!V,onClick:te,children:`Send`})]}),children:(0,c.jsxs)(`div`,{className:`vendor-share__body`,children:[(0,c.jsxs)(`div`,{className:`vendor-share__left`,children:[(0,c.jsxs)(`div`,{className:`vendor-share__vendor-header`,children:[(0,c.jsxs)(`div`,{className:`vendor-share__vendor-header-row`,children:[(0,c.jsx)(o.Button,{type:`text`,icon:(0,c.jsx)(s.CloseOutlined,{}),onClick:U,size:`small`,style:{marginRight:8}}),(0,c.jsx)(`span`,{className:`dynamic-popup__header-icon-box`,children:(0,c.jsx)(s.TeamOutlined,{})}),(0,c.jsx)(`span`,{className:`dynamic-popup__header-label`,children:`Vendor List`}),(0,c.jsxs)(`div`,{className:`vendor-share__vendor-search`,children:[(0,c.jsx)(s.SearchOutlined,{className:`vendor-share__search-icon`}),(0,c.jsx)(o.Input,{variant:`borderless`,placeholder:`Search vendor`,value:x,onChange:e=>{S(e.target.value),M(1)},className:`vendor-share__search-input`})]})]}),(0,c.jsx)(`div`,{className:`vendor-share__vendor-tabs`,children:vk.vendorTabs.map(e=>(0,c.jsxs)(`span`,{className:`vendor-share__vendor-tab${y===e.key?` vendor-share__vendor-tab--active`:``}`,onClick:()=>{b(e.key),M(1),R([])},children:[e.label,` (`,H(e.key),`)`]},e.key))})]}),(0,c.jsx)(`div`,{className:`vendor-share__vendor-table-wrapper`,children:(0,c.jsx)(o.Table,{rowKey:e=>e.vendorId,columns:bk,dataSource:ne,loading:F,pagination:!1,size:`small`,rowSelection:{selectedRowKeys:L,onChange:e=>{e.length>vk.maxVendorSelect||R(e)}},scroll:{y:`calc(100vh - 340px)`}})}),(0,c.jsx)(`div`,{className:`vendor-share__vendor-footer`,children:(0,c.jsx)(Ne,{current:j,pageSize:N,total:k,onChange:e=>M(e),onPageSizeChange:e=>P(e)})})]}),(0,c.jsx)(`div`,{className:`vendor-share__right`,children:(0,c.jsx)(nT,{value:B,onChange:ee,moduleName:f,defaultTemplateId:p.defaultTemplateId??t.state?.defaultTemplateId??``,ready:_,contextRecords:r,title:`Share`,hint:`Select vendors or add email addresses`,bccHint:`Vendor emails are added automatically`,afterBcc:L.length>0?(0,c.jsxs)(`div`,{className:`vendor-share__selected-count`,children:[L.length,` / `,vk.maxVendorSelect,` Vendors selected`]}):null})})]})})}var Sk={EMAIL:/^[a-zA-Z0-9._%+-]+@[a-zA-Z][a-zA-Z-]*\.[a-zA-Z]{2,}$/,PHONE:/^[0-9]{10}$/,PASSWORD:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/,ALPHABETS:/^[A-Za-z ]+$/,ALPHANUMERIC:/^(?!\s)[A-Za-z0-9 ]+$/,NUMBER:/^[0-9]+$/,URL:/^(https?:\/\/)?(www\.)?([a-zA-Z0-9-]+\.)+(com|org|net|in|co|io|gov|edu)(\/[^\s]*)?$/i,CANDIDATE_ID:/^[A-Za-z0-9-]+$/,REMARKS:/^[A-Za-z0-9\s.,'"\-()!?/@#$%&]*$/,DESIGNATION:/^[a-zA-Z0-9\s,.\-&()]{2,100}$/,DOB:/^(0[1-9]|1[0-2])\/(0[1-9]|[12][0-9]|3[01])\/\d{4}$/,COMPANY_NAME:/^[A-Za-z0-9\s&.,'()-]+$/,FIRST_NAME:/^[A-Z][a-zA-Z]*$/,FULL_NAME:/^[A-Z][a-zA-Z]*(?: [A-Z][a-zA-Z]*)*$/,NO_SPACES:/^\S+$/,STARTS_WITH_CAPITAL:/^[A-Z].*$/},Ck={SINGLE_FILE_COUNT:1,MULTI_FILE_COUNT:5,MAX_FILE_SIZE:2,ALLOWED_FILE_TYPES:[`image/jpeg`,`image/png`,`application/pdf`]},wk={REQUIRED:e=>`Mandatory Field`,INVALID_EMAIL:`Please enter a valid email address.`,INVALID_PHONE:`Phone number must contain exactly 10 digits.`,INVALID_PASSWORD:`Password must contain uppercase, lowercase, number, special character and minimum 8 characters.`,INVALID_ALPHABETS:`Only alphabets and spaces are allowed.`,INVALID_ALPHANUMERIC:`Only letters, numbers and spaces are allowed.`,INVALID_NUMBER:`Only numbers are allowed.`,INVALID_URL:`Please enter a valid URL.`,INVALID_CANDIDATE_ID:e=>`${e} can contain only letters, numbers and hyphens.`,INVALID_REMARKS:`Remarks contain invalid characters.`,INVALID_DESIGNATION:`Designation contains invalid characters.`,INVALID_DOB:`DOB must be in MM/DD/YYYY format.`,INVALID_LINKEDIN:`Please enter a valid LinkedIn URL.`,INVALID_COMPANY_NAME:`Company name contains invalid characters.`,INVALID_FIRST_NAME:`First letter must be capital and spaces are not allowed.`,INVALID_FULL_NAME:`Each word must start with a capital letter.`,NO_SPACES_ALLOWED:`Spaces are not allowed.`,MUST_START_WITH_CAPITAL:`First letter must be capital.`,INVALID_FILE_TYPE:`Only JPG, PNG and PDF files are allowed.`,INVALID_FILE_SIZE:`File upload must be ${Ck.MAX_FILE_SIZE} MB below.`,INVALID_FILE_TYPE:`Only JPG, PNG and PDF files are allowed.`,SINGLE_FILE_ONLY:`Only one file can be uploaded.`},Tk={FIRST_NAME_MIN:3,FIRST_NAME_MAX:30},Ek={REMARKS_MIN:10,REMARKS_MAX:250},Dk={removeSpaces:(e=``)=>e.replace(/\s/g,``),capitalizeFirstLetter:(e=``)=>e.charAt(0).toUpperCase()+e.slice(1),capitalizeWords:(e=``)=>e.replace(/\b\w/g,e=>e.toUpperCase()),removeExtraSpaces:(e=``)=>e.replace(/\s+/g,` `).trim(),firstNameFormatter:(e=``)=>e.replace(/\s+/g,` `).trimStart().replace(/\b\w/g,e=>e.toUpperCase()),fullNameFormatter:(e=``)=>e.replace(/\s+/g,` `).trimStart().replace(/\b\w/g,e=>e.toUpperCase()),phoneFormatter:(e=``)=>e.replace(/\D/g,``).slice(0,10),dobFormatter:(e=``)=>{let t=e.replace(/\D/g,``);return t.length<=2?t:t.length<=4?`${t.slice(0,2)}/${t.slice(2)}`:`${t.slice(0,2)}/${t.slice(2,4)}/${t.slice(4,8)}`}},Ok={required:(e=`Field`)=>({required:!0,message:wk.REQUIRED(e)}),email:()=>({pattern:Sk.EMAIL,message:wk.INVALID_EMAIL}),phone:()=>({pattern:Sk.PHONE,message:wk.INVALID_PHONE}),password:()=>({pattern:Sk.PASSWORD,message:wk.INVALID_PASSWORD}),alphabets:()=>({pattern:Sk.ALPHABETS,message:wk.INVALID_ALPHABETS}),alphanumeric:()=>({pattern:Sk.ALPHANUMERIC,message:wk.INVALID_ALPHANUMERIC}),number:()=>({pattern:Sk.NUMBER,message:wk.INVALID_NUMBER}),url:()=>({pattern:Sk.URL,message:wk.INVALID_URL}),candidateId:(e=`ID`)=>({pattern:Sk.CANDIDATE_ID,message:wk.INVALID_CANDIDATE_ID(e)}),remarks:()=>({pattern:Sk.REMARKS,message:wk.INVALID_REMARKS,REMARKS_MIN:`Remarks must be at least ${Ek.REMARKS_MIN} characters.`,REMARKS_MAX:`Remarks must not exceed ${Ek.REMARKS_MAX} characters.`}),designation:()=>({pattern:Sk.DESIGNATION,message:wk.INVALID_DESIGNATION}),dob:(e=!0)=>({validator:(t,n)=>{if(!n)return e?Promise.reject(Error(`Date of Birth is required.`)):Promise.resolve();if(!Sk.DOB.test(n))return Promise.reject(Error(wk.INVALID_DOB));let r=(0,l.default)(n,`MM/DD/YYYY`,!0);if(!r.isValid())return Promise.reject(Error(wk.INVALID_DOB));let i=(0,l.default)().endOf(`day`);return r.isAfter(i)?Promise.reject(Error(`Date of Birth cannot be a future date.`)):i.diff(r,`year`)<21?Promise.reject(Error(`Age must be at least 21 years.`)):Promise.resolve()}}),linkedin:()=>({pattern:Sk.LINKEDIN,message:wk.INVALID_LINKEDIN}),companyName:()=>({pattern:Sk.COMPANY_NAME,message:wk.INVALID_COMPANY_NAME}),firstName:()=>({pattern:Sk.FIRST_NAME,message:wk.INVALID_FIRST_NAME,FIRST_NAME_MIN:`First Name must be at least ${Tk.FIRST_NAME_MIN} characters.`,FIRST_NAME_MAX:`First Name must not exceed ${Tk.FIRST_NAME_MAX} characters.`}),firstNameMinLength:()=>({min:Tk.FIRST_NAME_MIN,message:wk.FIRST_NAME_MIN}),firstNameMaxLength:()=>({max:Tk.FIRST_NAME_MAX,message:wk.FIRST_NAME_MAX}),remarksMinLength:()=>({min:Ek.REMARKS_MIN,message:wk.REMARKS_MIN}),remarksMaxLength:()=>({max:Ek.REMARKS_MAX,message:wk.REMARKS_MAX}),fullName:()=>({pattern:Sk.FULL_NAME,message:wk.INVALID_FULL_NAME}),noSpaces:()=>({pattern:Sk.NO_SPACES,message:wk.NO_SPACES_ALLOWED}),startsWithCapital:()=>({pattern:Sk.STARTS_WITH_CAPITAL,message:wk.MUST_START_WITH_CAPITAL}),fileUpload:()=>({validator:(e,t)=>{if(!t||t.length===0)return Promise.resolve();for(let e of t){let t=e.originFileObj||e;if(!(t.size/1024/1024<=Ck.MAX_FILE_SIZE))return o.message.error(wk.INVALID_FILE_SIZE),Promise.reject(Error(wk.INVALID_FILE_SIZE));if(!Ck.ALLOWED_FILE_TYPES.includes(t.type))return Promise.reject(Error(wk.INVALID_FILE_TYPE))}return Promise.resolve()}}),singleFileUpload:()=>({validator:(e,t)=>{if(!t||t.length===0)return Promise.resolve();if(t.length>Ck.SINGLE_FILE_COUNT)return Promise.reject(Error(wk.SINGLE_FILE_ONLY));let n=t[0];return n.size/1024/1024<Ck.MAX_FILE_SIZE?Ck.ALLOWED_FILE_TYPES.includes(n.type)?Promise.resolve():Promise.reject(Error(wk.INVALID_FILE_TYPE)):Promise.reject(Error(wk.INVALID_FILE_SIZE))}}),multiFileUpload:()=>({validator:(e,t)=>{if(!t||t.length===0)return Promise.resolve();if(t.length>Ck.MULTI_FILE_COUNT)return Promise.reject(Error(wk.INVALID_FILE_COUNT));for(let e of t){if(!(e.size/1024/1024<Ck.MAX_FILE_SIZE))return Promise.reject(Error(wk.INVALID_FILE_SIZE));if(!Ck.ALLOWED_FILE_TYPES.includes(e.type))return Promise.reject(Error(wk.INVALID_FILE_TYPE))}return Promise.resolve()}})},kk={beforeUpload:e=>[`image/jpeg`,`image/png`,`application/pdf`].includes(e.type)?e.size/1024/1024<=2?!1:(o.message.error(`File upload must be 2 MB below.`),o.Upload.LIST_IGNORE):(o.message.error(`Only JPG, PNG and PDF files are allowed.`),o.Upload.LIST_IGNORE)},Ak=()=>{let[e]=o.Form.useForm();return(0,c.jsx)(`div`,{style:{padding:24},children:(0,c.jsxs)(o.Form,{form:e,layout:`vertical`,onFinish:e=>{console.log(`Form Values:`,e)},autoComplete:`off`,children:[(0,c.jsxs)(o.Row,{gutter:16,children:[(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`Email`,name:`email`,rules:[Ok.required(`Email`),Ok.email()],children:(0,c.jsx)(o.Input,{})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`Phone Number`,name:`phone`,rules:[Ok.required(`Phone Number`),Ok.phone()],validateTrigger:[`onBlur`,`onChange`],children:(0,c.jsx)(o.Input,{maxLength:10,onChange:t=>{e.setFieldsValue({phone:Dk.phoneFormatter(t.target.value)})}})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`Password`,name:`password`,rules:[Ok.required(`Password`),Ok.password()],children:(0,c.jsx)(o.Input.Password,{})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`Full Name`,name:`fullName`,rules:[Ok.required(`Full Name`),Ok.alphabets(),Ok.firstNameMinLength(),Ok.firstNameMaxLength()],children:(0,c.jsx)(o.Input,{onChange:t=>{e.setFieldsValue({fullName:Dk.firstNameFormatter(t.target.value)})}})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`Username`,name:`username`,rules:[Ok.required(`Username`),Ok.alphanumeric()],children:(0,c.jsx)(o.Input,{onChange:t=>{e.setFieldsValue({username:Dk.removeExtraSpaces(t.target.value)})}})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`Website URL`,name:`website`,rules:[Ok.required(`Website URL`),Ok.url()],children:(0,c.jsx)(o.Input,{onChange:t=>{e.setFieldsValue({website:Dk.removeExtraSpaces(t.target.value)})}})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`MSP Req ID`,name:`mspreqID`,rules:[Ok.required(`MSP Req ID`),Ok.candidateId(`MSP Req ID`)],children:(0,c.jsx)(o.Input,{onChange:t=>{e.setFieldsValue({mspreqID:Dk.removeExtraSpaces(t.target.value)})}})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`Candidate ID`,name:`candidateId`,rules:[Ok.required(`Candidate ID`),Ok.candidateId(`Candidate ID`)],children:(0,c.jsx)(o.Input,{onChange:t=>{e.setFieldsValue({candidateId:Dk.removeExtraSpaces(t.target.value)})}})})}),(0,c.jsx)(o.Col,{span:24,children:(0,c.jsx)(o.Form.Item,{label:`Remarks`,name:`remarks`,rules:[Ok.required(`Remarks`),Ok.remarks(),Ok.remarksMinLength(),Ok.remarksMaxLength()],children:(0,c.jsx)(o.Input.TextArea,{rows:4})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`Designation`,name:`designation`,rules:[Ok.required(`Designation`),Ok.designation()],children:(0,c.jsx)(o.Input,{})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`Date of Birth`,name:`dob`,rules:[Ok.dob()],children:(0,c.jsx)(o.Input,{placeholder:`MM/DD/YYYY`,maxLength:10,onChange:t=>{e.setFieldsValue({dob:Dk.dobFormatter(t.target.value)})}})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`Company Name`,name:`companyName`,rules:[Ok.required(`Company Name`),Ok.companyName()],children:(0,c.jsx)(o.Input,{})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{name:`contractType`,label:`Contract Type`,children:(0,c.jsxs)(o.Select,{showSearch:!0,allowClear:!0,filterOption:(e,t)=>(t?.label??``).toLowerCase().includes(e.toLowerCase()),children:[(0,c.jsx)(o.Select.Option,{value:`C2C`,label:`C2C`,children:`C2C`}),(0,c.jsx)(o.Select.Option,{value:`W2-Contract`,label:`W2-Contract`,children:`W2-Contract`}),(0,c.jsx)(o.Select.Option,{value:`W2-Fulltime`,label:`W2-Fulltime`,children:`W2-Fulltime`}),(0,c.jsx)(o.Select.Option,{value:`1099`,label:`1099`,children:`1099`})]})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{name:`candidateProposedRateCurrency`,label:`Currency`,children:(0,c.jsxs)(o.Select,{showSearch:!0,allowClear:!0,children:[(0,c.jsx)(o.Select.Option,{value:`$`,children:`$`}),(0,c.jsx)(o.Select.Option,{value:`₹`,children:`₹`}),(0,c.jsx)(o.Select.Option,{value:`€`,children:`€`}),(0,c.jsx)(o.Select.Option,{value:`zł`,children:`zł`}),(0,c.jsx)(o.Select.Option,{value:`£`,children:`£`}),(0,c.jsx)(o.Select.Option,{value:`kr`,children:`kr`}),(0,c.jsx)(o.Select.Option,{value:`Fr`,children:`Fr`}),(0,c.jsx)(o.Select.Option,{value:`kr`,children:`kr`})]})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`Resume new`,name:`resume`,children:(0,c.jsx)(o.Upload,{beforeUpload:kk.beforeUpload,maxCount:1,children:(0,c.jsx)(o.Button,{children:`Upload Resume`})})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`Documents`,name:`documents`,valuePropName:`fileList`,getValueFromEvent:e=>e?.fileList,rules:[Ok.multiFileUpload()],children:(0,c.jsx)(o.Upload,{multiple:!0,beforeUpload:kk.beforeUpload,children:(0,c.jsx)(o.Button,{children:`Upload Documents`})})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`Upload File`,name:`file`,valuePropName:`fileList`,getValueFromEvent:e=>e?.fileList,rules:[Ok.fileUpload()],children:(0,c.jsx)(o.Upload,{beforeUpload:kk.beforeUpload,maxCount:1,children:(0,c.jsx)(o.Button,{children:`Upload`})})})})]}),(0,c.jsx)(o.Row,{children:(0,c.jsx)(o.Form.List,{name:`users`,children:(e,{add:t,remove:n})=>(0,c.jsxs)(c.Fragment,{children:[e.map(({key:e,name:t,...r})=>(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{required:!0,...r,rules:[{required:!0,message:`First name is requried`}],name:[t,`first`],children:(0,c.jsx)(o.Input,{placeholder:`First Name`})})}),(0,c.jsx)(o.Col,{span:11,children:(0,c.jsx)(o.Form.Item,{...r,required:!0,name:[t,`last`],children:(0,c.jsx)(o.Input,{placeholder:`Last Name`})})}),(0,c.jsx)(o.Col,{span:1,children:(0,c.jsx)(s.MinusCircleOutlined,{onClick:()=>n(t)})})]})),(0,c.jsx)(o.Form.Item,{children:(0,c.jsx)(o.Button,{type:`dashed`,onClick:()=>t(),block:!0,icon:(0,c.jsx)(s.PlusOutlined,{}),children:`Add field`})})]})})}),(0,c.jsxs)(o.Form.Item,{children:[(0,c.jsx)(o.Button,{type:`primary`,htmlType:`submit`,children:`Submit`}),(0,c.jsx)(o.Button,{style:{marginLeft:10},onClick:()=>e.resetFields(),children:`Reset`})]})]})})};function jk(e){return(0,c.jsx)(Dv,{children:(0,c.jsx)(Rw,{...e})})}var{Text:Mk}=o.Typography,Nk=[{label:`Total Jobs`,value:1697,icon:`fileText`},{label:`Active Jobs`,value:1685,icon:`checkCircle`},{label:`My Jobs`,value:600,icon:`user`}],Pk={fileText:(0,c.jsx)(s.FileTextOutlined,{}),checkCircle:(0,c.jsx)(s.CheckCircleOutlined,{}),user:(0,c.jsx)(s.UserOutlined,{}),filter:(0,c.jsx)(s.FilterOutlined,{})};function Fk({stats:e=Nk}){return(0,c.jsx)(o.Card,{children:(0,c.jsx)(o.Row,{gutter:[12,12],children:e.map(e=>(0,c.jsx)(o.Col,{xs:24,sm:24,md:8,lg:8,xl:8,children:(0,c.jsxs)(o.Card,{className:`stats-inner-card`,children:[(0,c.jsxs)(o.Space,{align:`center`,children:[Pk[e.icon]??Pk.fileText,(0,c.jsx)(Mk,{children:e.label})]}),(0,c.jsx)(o.Statistic,{value:e.value})]})},e.label))})})}var{Text:Ik}=o.Typography;function Lk(e){return e?.USER_NAME??e?.user_name??e?.username??e?.name??e?.full_name??e?.fullName??e?.email??`User ${e?.USER_ID??e?.user_id??`?`}`}function Rk(e){return{...e,key:e.USER_ID??e.user_id??e.userId??e.id??e._id,_name:Lk(e),_email:e.email??e.EMAIL??e.user_email??``,_role:e.role_name??e.roleName??e.ROLE_NAME??``,_rawRef:e}}function zk(){let[t,n]=(0,a.useState)([]),[r,i]=(0,a.useState)(0),[l,u]=(0,a.useState)(!1),[d,f]=(0,a.useState)(1),[p,m]=(0,a.useState)(10),[h,g]=(0,a.useState)(``),_=(0,a.useCallback)(async({offset:t,limit:r,searchQuery:a}={})=>{u(!0);try{let o=await e.fr({offset:t,limit:r,searchQuery:a??``}),s=(o.users??[]).map(Rk);n(s),i(o.total??s.length)}catch{o.message.error(`Failed to load users`)}finally{u(!1)}},[]);return(0,a.useEffect)(()=>{queueMicrotask(()=>{_({offset:(d-1)*p,limit:p,searchQuery:h})})},[_,d,p,h]),(0,c.jsx)(Z,{icon:(0,c.jsx)(s.TeamOutlined,{}),title:`Users`,style:{marginBottom:0},bodyStyle:{padding:0},children:(0,c.jsx)(om,{listName:`Users`,dataSource:t,fields:[{label:`Name`,value:`_name`,width:220,render:(e,t)=>(0,c.jsxs)(`div`,{children:[(0,c.jsx)(Ik,{strong:!0,style:{fontSize:13},children:e}),t._email&&(0,c.jsx)(`div`,{style:{fontSize:11,color:`var(--color-text-muted)`},children:t._email})]})},{label:`Role`,value:`_role`,width:180}],loading:l,total:r,current:d,pageSize:p,onPageChange:e=>f(e),onPageSizeChange:e=>{m(e),f(1)},onSearch:e=>{g(e),f(1)}})})}var{Text:Bk}=o.Typography,Vk=[{key:`job`,label:`Jobs`},{key:`candidate`,label:`Candidates`},{key:`submissions`,label:`Submissions`}],Hk=[{key:`listView`,label:`List View`},{key:`filter`,label:`Filter`},{key:`form`,label:`Form`}];function Uk({field:e,index:t,onToggle:n,onReorder:r}){let i=(0,a.useRef)(null),[l,u]=(0,a.useState)(!1),[d,f]=(0,a.useState)(!1);function p(e){i.current=t,e.dataTransfer.effectAllowed=`move`,f(!0)}function m(){f(!1),u(!1)}function h(e){e.preventDefault(),u(!0)}function g(){u(!1)}function _(e){e.preventDefault(),u(!1),i.current!==null&&i.current!==t&&r(i.current,t),i.current=null}return(0,c.jsxs)(`div`,{draggable:!0,onDragStart:p,onDragEnd:m,onDragOver:h,onDragLeave:g,onDrop:_,className:`uss-field-row with-edit${l?` drag-over`:``}${d?` dragging`:``}`,children:[(0,c.jsx)(`span`,{className:`uss-drag-handle`,children:(0,c.jsx)(s.HolderOutlined,{})}),(0,c.jsxs)(`span`,{className:`uss-field-name`,children:[e.fieldName,(0,c.jsx)(`span`,{className:`uss-field-key`,children:e.fieldKey})]}),(0,c.jsx)(`span`,{className:`uss-toggle-cell`,children:(0,c.jsx)(o.Switch,{size:`small`,checked:e.isVisible,onChange:e=>n(t,`isVisible`,e)})}),(0,c.jsx)(`span`,{className:`uss-toggle-cell`,children:(0,c.jsx)(o.Switch,{size:`small`,checked:!!e.isEditable,onChange:e=>n(t,`isEditable`,e)})}),(0,c.jsx)(`span`,{className:`uss-toggle-cell`,children:(0,c.jsx)(o.Switch,{size:`small`,checked:!!e.ismandatory,onChange:e=>n(t,`ismandatory`,e)})})]})}function Wk({team:t,configType:n}){let[r,i]=(0,a.useState)({}),[s,l]=(0,a.useState)(!1),[u,d]=(0,a.useState)({}),[f,p]=(0,a.useState)(`job`);(0,a.useEffect)(()=>{t&&(l(!0),e.Hr(t,n).then(i).catch(()=>o.message.error(`Failed to load field config`)).finally(()=>l(!1)))},[t,n]);let m=r[f]??[];function h(e,t){i(n=>({...n,[e]:typeof t==`function`?t(n[e]??[]):t}))}function g(e,t,n){h(f,r=>r.map((r,i)=>i===e?{...r,[t]:n}:r))}function _(e,t){h(f,n=>{let r=[...n],[i]=r.splice(e,1);return r.splice(t,0,i),r.map((e,t)=>({...e,order:t}))})}async function v(){let r=f;d(e=>({...e,[r]:!0}));try{await e.pi(t,r,m,n),o.message.success(`Saved`)}catch{o.message.error(`Save failed`)}finally{d(e=>({...e,[r]:!1}))}}return(0,c.jsxs)(o.Spin,{spinning:s,children:[(0,c.jsx)(o.Tabs,{size:`small`,activeKey:f,onChange:p,items:Vk.map(e=>({key:e.key,label:e.label}))}),(0,c.jsxs)(`div`,{className:`uss-field-header with-edit`,children:[(0,c.jsx)(`span`,{}),(0,c.jsx)(`span`,{children:`Field`}),(0,c.jsx)(`span`,{style:{textAlign:`center`},children:`Visible`}),(0,c.jsx)(`span`,{style:{textAlign:`center`},children:`Editable`}),(0,c.jsx)(`span`,{style:{textAlign:`center`},children:`Mandatory`})]}),(0,c.jsxs)(`div`,{className:`uss-field-list`,children:[m.length===0&&!s&&(0,c.jsx)(`div`,{className:`uss-empty`,children:`No fields found.`}),m.map((e,t)=>(0,c.jsx)(Uk,{field:e,index:t,onToggle:g,onReorder:_},e.fieldKey??t))]}),(0,c.jsx)(`div`,{className:`uss-modal-footer`,children:(0,c.jsxs)(o.Button,{type:`primary`,size:`small`,loading:u[f],onClick:v,children:[`Save `,Vk.find(e=>e.key===f)?.label]})})]})}function Gk(){let[t,n]=(0,a.useState)(null),[r,i]=(0,a.useState)(!1),[l,u]=(0,a.useState)(!1),[d,f]=(0,a.useState)(`listView`),[p,m]=(0,a.useState)([]),[h,g]=(0,a.useState)(0),[_,v]=(0,a.useState)(!1),[y,b]=(0,a.useState)(``),[x,S]=(0,a.useState)(!1),C=(0,a.useCallback)(async()=>{v(!0);try{let t=await e.dr();m(t.teams),g(t.total)}catch{o.message.error(`Failed to load teams`)}finally{v(!1)}},[]);(0,a.useEffect)(()=>{C()},[C]);function w(e){n(e),f(`listView`),i(!0)}function T(e){n(e),b(e.teamName??``),u(!0)}async function E(){if(!y.trim()){o.message.warning(`Team name is required`);return}S(!0);try{await e.fi(t,{teamName:y.trim(),managerId:t.managerId,memberIds:t.memberIds}),o.message.success(`Team updated`),u(!1),C()}catch{o.message.error(`Failed to update team`)}finally{S(!1)}}return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(Z,{icon:(0,c.jsx)(s.TeamOutlined,{}),title:`Teams`,style:{marginBottom:0},bodyStyle:{padding:0},children:(0,c.jsx)(om,{listName:`Teams`,dataSource:p,fields:[{label:`Team Name`,value:`teamName`,width:200},{label:`Manager`,value:`manager`,width:200},{label:`Members`,value:`memberCount`,width:90,sorter:!1},{label:`Actions`,value:`_actions`,width:160,sorter:!1,render:(e,t)=>(0,c.jsxs)(`div`,{style:{display:`flex`,gap:4},children:[(0,c.jsx)(o.Button,{size:`small`,type:`link`,onClick:()=>T(t),children:`Edit`}),(0,c.jsx)(o.Button,{size:`small`,type:`link`,onClick:()=>w(t),children:`Configure`})]})}],loading:_,total:h})}),(0,c.jsx)(o.Modal,{open:l,onCancel:()=>u(!1),title:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(s.TeamOutlined,{style:{color:`var(--color-brand)`,marginRight:6}}),`Edit Team`]}),width:420,footer:null,destroyOnClose:!0,children:(0,c.jsxs)(`div`,{className:`uss-edit-team-body`,style:{paddingTop:12},children:[(0,c.jsxs)(`div`,{children:[(0,c.jsx)(`div`,{className:`uss-edit-team-label`,children:`Team Name`}),(0,c.jsx)(o.Input,{value:y,onChange:e=>b(e.target.value),onPressEnter:E,placeholder:`Enter team name`})]}),(0,c.jsxs)(`div`,{className:`uss-modal-footer`,children:[(0,c.jsx)(o.Button,{onClick:()=>u(!1),children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,loading:x,onClick:E,children:`Save`})]})]})}),(0,c.jsxs)(o.Modal,{className:`uss-modal`,open:r,onCancel:()=>i(!1),title:(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,c.jsx)(s.TeamOutlined,{style:{color:`var(--color-brand)`}}),(0,c.jsxs)(`span`,{children:[`Configure: `,t?.teamName]})]}),width:720,footer:null,destroyOnClose:!0,children:[(0,c.jsx)(`div`,{style:{marginBottom:12},children:(0,c.jsx)(`div`,{className:`uss-config-toggle`,children:Hk.map(e=>(0,c.jsx)(`button`,{className:`uss-config-btn${d===e.key?` active`:``}`,onClick:()=>f(e.key),children:e.label},e.key))})}),t&&(0,c.jsx)(Wk,{team:t,configType:d},`${t?.teamId}-${d}`)]})]})}var Kk=[`view`,`add`,`edit`,`delete`],qk={view:`View`,add:`Add`,edit:`Edit`,delete:`Delete`,sourcing:`Sourcing`,assign:`Assign`,share:`Share`,change_status:`Status`,my_jobs:`My Jobs`,all_jobs:`All Jobs`,po_msa:`PO MSA`,reApprove:`ReApprove`,sendApprove:`Send Approve`};function Jk(e){return qk[e]??e.replace(/_/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function Yk(e){let t=Kk.filter(t=>e.includes(t)),n=e.filter(e=>!Kk.includes(e)).sort();return[...t,...n]}function Xk(e){let t=new Set;return Object.values(e).forEach(({permissions:e})=>Object.keys(e??{}).forEach(e=>t.add(e))),Yk([...t])}function Zk(e){let t=0,n=0;return Object.entries(e).forEach(([e,{permissions:r}])=>{Object.entries(r??{}).forEach(([r,{value:i}])=>{Ly(e,r)&&(n++,i===`1`&&t++)})}),{enabled:t,total:n}}function Qk(e={}){if(!e||typeof e!=`object`)return e;let t=Object.keys(e).find(e=>String(e).trim().toLowerCase()===`onboarding`);if(!t)return e;let n=e[t]??{},r={...n.permissions??{}};for(let e of[`sendApprove`,`reApprove`])Object.keys(r).some(t=>t.toLowerCase()===e.toLowerCase())||(r[e]={id:0,value:`0`});return{...e,[t]:{...n,permissions:r}}}function $k({value:e,onSave:t,className:n}){let[r,i]=(0,a.useState)(!1),[o,l]=(0,a.useState)(e);(0,a.useEffect)(()=>{l(e)},[e]);function u(){i(!1);let n=o.trim();n&&n!==e?t(n):l(e)}return r?(0,c.jsx)(`input`,{autoFocus:!0,className:`perm-inline-input${n?` ${n}`:``}`,value:o,style:{width:Math.max(48,o.length*8)},onChange:e=>l(e.target.value),onBlur:u,onKeyDown:t=>{t.key===`Enter`&&u(),t.key===`Escape`&&(i(!1),l(e)),t.stopPropagation()},onClick:e=>e.stopPropagation()}):(0,c.jsxs)(`span`,{className:`perm-editable-name${n?` ${n}`:``}`,onDoubleClick:e=>{e.stopPropagation(),i(!0)},children:[e,(0,c.jsx)(s.EditOutlined,{className:`perm-name-edit-icon`})]})}function eA({entry:e,label:t,onToggle:n,onLabelSave:r}){let[i,l]=(0,a.useState)(!1),[u,d]=(0,a.useState)(t),f=e?.value===`1`,p=!!e;(0,a.useEffect)(()=>{d(t)},[t]);function m(){l(!1);let e=u.trim();e&&e!==t?r(e):d(t)}return(0,c.jsx)(o.Tooltip,{title:p?f?`Click to disable`:`Click to enable`:`Not applicable for this module`,children:(0,c.jsxs)(`div`,{className:`perm-action-pill${f?` on`:``}${p?``:` na`}`,onClick:()=>{!i&&p&&n()},children:[(0,c.jsx)(`span`,{className:`perm-action-pill-dot${f?` on`:``}`}),i?(0,c.jsx)(`input`,{autoFocus:!0,className:`perm-pill-input`,value:u,style:{width:Math.max(36,u.length*7)},onChange:e=>d(e.target.value),onBlur:m,onKeyDown:e=>{e.key===`Enter`&&m(),e.key===`Escape`&&(l(!1),d(t)),e.stopPropagation()},onClick:e=>e.stopPropagation()}):(0,c.jsx)(`span`,{className:`perm-action-pill-label`,onDoubleClick:e=>{e.stopPropagation(),l(!0)},children:t}),f&&!i&&(0,c.jsx)(s.CheckOutlined,{className:`perm-action-pill-check`})]})})}function tA({menuName:e,menuData:t,permKeys:n,onChange:r,displayName:i,actionLabels:a,onModuleLabelSave:o,onActionLabelSave:s}){let l=t?.permissions??{},u=n.filter(t=>Ly(e,t)),d=u.filter(e=>l[e]?.value===`1`).length,f=u.filter(e=>l[e]).length,p=f>0&&d===f;return(0,c.jsxs)(`div`,{className:`perm-module-card${p?` all-on`:d>0&&!p?` some-on`:``}`,children:[(0,c.jsxs)(`div`,{className:`perm-module-card-header`,children:[(0,c.jsx)($k,{value:i,onSave:t=>o(e,t),className:`perm-module-card-name`}),f>0&&(0,c.jsxs)(`span`,{className:`perm-module-card-badge${d>0?` active`:``}`,children:[d,`/`,f]})]}),(0,c.jsx)(`div`,{className:`perm-module-card-body`,children:u.map(t=>(0,c.jsx)(eA,{entry:l[t],label:a[t]??Jk(t),onToggle:()=>r(e,t),onLabelSave:e=>s(t,e)},t))})]})}function nA({role:t,moduleLabels:n={},actionLabels:r={},onModuleLabelSave:i=()=>{},onActionLabelSave:l=()=>{}}){let[u,d]=(0,a.useState)({}),[f,p]=(0,a.useState)({}),[m,h]=(0,a.useState)(!1),[g,_]=(0,a.useState)(!1),[v,y]=(0,a.useState)(!1),b=e.Lr(t);(0,a.useEffect)(()=>{b&&(h(!0),y(!1),e.Br(b).then(e=>{let t=Qk(e);d(t),p(t)}).catch(()=>o.message.error(`Failed to load permissions`)).finally(()=>h(!1)))},[b]);function x(e,t){y(!0),p(n=>{let r=n[e]??{menuId:u[e]?.menuId??0,permissions:{}},i=r.permissions?.[t]??{id:0,value:`0`};return{...n,[e]:{...r,permissions:{...r.permissions,[t]:{...i,value:i.value===`1`?`0`:`1`}}}}})}async function S(){_(!0);try{await e.ui(b,f),d(f),y(!1),o.message.success(`Permissions saved`)}catch(e){o.message.error(e?.message||`Save failed`)}finally{_(!1)}}let C=(0,a.useMemo)(()=>Object.keys(f).sort(),[f]),w=(0,a.useMemo)(()=>Xk(f),[f]),{enabled:T,total:E}=(0,a.useMemo)(()=>Zk(f),[f]);return(0,c.jsxs)(o.Spin,{spinning:m,children:[(0,c.jsxs)(`div`,{className:`perm-panel-header`,children:[(0,c.jsxs)(`div`,{className:`perm-panel-title`,children:[(0,c.jsx)(s.LockOutlined,{style:{color:`var(--color-brand)`,marginRight:6}}),(0,c.jsx)(`span`,{children:t?.roleName}),!m&&E>0&&(0,c.jsxs)(o.Tag,{color:`blue`,style:{marginLeft:8,fontSize:11},children:[T,`/`,E,` enabled`]})]}),(0,c.jsx)(o.Button,{type:`primary`,size:`small`,icon:(0,c.jsx)(s.UnlockOutlined,{}),loading:g,disabled:!v,onClick:S,children:`Save Changes`})]}),(0,c.jsxs)(`div`,{className:`perm-hint`,children:[(0,c.jsx)(s.InfoCircleOutlined,{className:`perm-hint-icon`}),(0,c.jsxs)(`span`,{children:[`Click a pill to toggle. `,(0,c.jsx)(`strong`,{children:`Double-click`}),` a module name or action label to rename it — labels are saved locally.`]})]}),C.length===0&&!m?(0,c.jsx)(`div`,{className:`perm-empty`,children:`No permission entries found for this role.`}):(0,c.jsx)(`div`,{className:`perm-cards-grid`,children:C.map(e=>(0,c.jsx)(tA,{menuName:e,menuData:f[e],permKeys:w,onChange:x,displayName:n[e]??e,actionLabels:r,onModuleLabelSave:i,onActionLabelSave:l},e))})]})}var{Text:rA}=o.Typography,iA=[{key:`listView`,label:`List View`},{key:`filter`,label:`Filter`},{key:`form`,label:`Form`},{key:`permissions`,label:`Permissions`}];function aA(e){return String(e||``).replace(/[-_]/g,` `).replace(/\b\w/g,e=>e.toUpperCase()).trim()}function oA(e){return String(e||``).trim().toLowerCase()}function sA(e){return e?.key||e?.collectionName||e?.value||``}function cA(e=[],t=[]){let n=[],r=new Set,i=new Set,a=new Set;return e.forEach(e=>{let t=sA(e);if(!t)return;let o=oA(e.key||t),s=oA(e.collectionName);e.seeded&&(i.add(o),s&&i.add(s)),s&&a.add(s),r.add(t),n.push({label:e.label||aA(t),value:t,disabled:!!e.seeded})}),t.forEach(e=>{let t=String(e||``).trim();if(!t||r.has(t))return;let o=oA(t);a.has(o)||i.has(o)||(r.add(t),n.push({label:aA(t),value:t,disabled:!1}))}),n}function lA(){let[t,n]=(0,a.useState)(null),[r,i]=(0,a.useState)(!1),[l,u]=(0,a.useState)(`listView`),[d,f]=(0,a.useState)([]),[p,m]=(0,a.useState)(0),[h,g]=(0,a.useState)(!1),[_,v]=(0,a.useState)([]),[y,b]=(0,a.useState)([]),[x,S]=(0,a.useState)(!1),[C,w]=(0,a.useState)(!1),T=(0,a.useMemo)(()=>_.filter(e=>!e.disabled),[_]),E=!x&&T.length===0,D=(0,a.useCallback)(async()=>{g(!0);try{let t=await e.ur();f(t.roles),m(t.total)}catch{o.message.error(`Failed to load roles`)}finally{g(!1)}},[]),O=(0,a.useCallback)(async()=>{S(!0);try{let[t,n]=await Promise.all([e.Sr(),e.mr()]),r=cA(t.modules,n),i=new Set(r.filter(e=>!e.disabled).map(e=>e.value));v(r),b(e=>e.filter(e=>i.has(e)))}catch{o.message.error(`Failed to load seed status`)}finally{S(!1)}},[]);(0,a.useEffect)(()=>{D()},[D]),(0,a.useEffect)(()=>{O()},[O]);async function k(){if(y.length===0){o.message.warning(E?`All modules already seeded.`:`Select at least one module to seed.`);return}w(!0);try{await e.ti(y),o.message.success(`Role field config seeded`),b([]),await O()}catch(e){o.message.error(e?.message||`Seed failed`)}finally{w(!1)}}function A(e,t=`listView`){n(e),u(t),i(!0)}return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.AppstoreOutlined,{}),title:`Field Config Seed`,style:{marginBottom:12},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:12,flexWrap:`wrap`},children:[(0,c.jsx)(`div`,{style:{minWidth:320,flex:1},children:(0,c.jsx)(o.Select,{mode:`multiple`,allowClear:!0,showSearch:!0,value:y,options:_,placeholder:E?`All modules already seeded`:`Select modules or collections to seed`,disabled:x||C||E,loading:x,onChange:b,style:{width:`100%`}})}),(0,c.jsx)(o.Button,{type:`primary`,loading:C,disabled:x||y.length===0,onClick:k,children:`Seed Field Config`})]}),(0,c.jsx)(rA,{type:`secondary`,style:{display:`block`,marginTop:8,fontSize:12},children:E?`Seed is disabled because all configured modules already have role field config data.`:`Already seeded modules are disabled. New modules or collections can still be seeded.`})]}),(0,c.jsx)(Z,{icon:(0,c.jsx)(s.SafetyOutlined,{}),title:`Roles`,style:{marginBottom:0},bodyStyle:{padding:0},children:(0,c.jsx)(om,{listName:`Roles`,dataSource:d,fields:[{label:`Role Name`,value:`roleName`,width:200},{label:`Description`,value:`description`,width:240},{label:`Users`,value:`userCount`,width:70,sorter:!1},{label:`Actions`,value:`_configure`,width:200,sorter:!1,render:(e,t)=>(0,c.jsxs)(o.Space,{size:2,children:[(0,c.jsx)(o.Button,{size:`small`,type:`link`,onClick:()=>A(t),children:`Configure`}),(0,c.jsx)(o.Button,{size:`small`,type:`link`,icon:(0,c.jsx)(s.LockOutlined,{}),onClick:()=>A(t,`permissions`),children:`Permissions`})]})}],loading:h,total:p})}),(0,c.jsxs)(o.Modal,{className:`uss-modal`,open:r,onCancel:()=>i(!1),title:(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,c.jsx)(s.SafetyOutlined,{style:{color:`var(--color-brand)`}}),(0,c.jsxs)(`span`,{children:[`Configure: `,t?.roleName]})]}),width:720,footer:null,destroyOnClose:!0,children:[(0,c.jsx)(`div`,{style:{marginBottom:12},children:(0,c.jsx)(`div`,{className:`uss-config-toggle`,children:iA.map(e=>(0,c.jsx)(`button`,{className:`uss-config-btn${l===e.key?` active`:``}`,onClick:()=>u(e.key),children:e.label},e.key))})}),t&&(l===`permissions`?(0,c.jsx)(nA,{role:t},t?.roleId):(0,c.jsx)(eb,{role:t,configType:l},`${t?.roleId}-${l}`))]})]})}var uA=`perm-module-labels`,dA=`perm-action-labels`;function fA(e){try{return JSON.parse(localStorage.getItem(e)??`{}`)}catch{return{}}}function pA(e,t){try{localStorage.setItem(e,JSON.stringify(t))}catch{}}function mA({label:e,onSave:t,onDelete:n,loading:r}){let[i,l]=(0,a.useState)(!1),[u,d]=(0,a.useState)(e);function f(){l(!1);let n=u.trim();n&&n!==e?t(n):d(e)}return(0,c.jsxs)(`div`,{className:`perm-manage-row`,children:[i?(0,c.jsx)(`input`,{autoFocus:!0,className:`perm-inline-input`,value:u,style:{flex:1,minWidth:0},onChange:e=>d(e.target.value),onBlur:f,onKeyDown:t=>{t.key===`Enter`&&f(),t.key===`Escape`&&(l(!1),d(e))}}):(0,c.jsx)(`span`,{className:`perm-manage-row-label`,children:e}),(0,c.jsxs)(`div`,{className:`perm-manage-row-actions`,children:[(0,c.jsx)(o.Button,{type:`text`,size:`small`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>{d(e),l(!0)},loading:r}),(0,c.jsx)(o.Popconfirm,{title:`Delete this item?`,onConfirm:n,okText:`Delete`,cancelText:`Cancel`,okType:`danger`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,icon:(0,c.jsx)(s.DeleteOutlined,{}),danger:!0})})]})]})}function hA({open:t,onClose:n}){let[r,i]=(0,a.useState)(`modules`),[l,u]=(0,a.useState)([]),[d,f]=(0,a.useState)(!1),[p,m]=(0,a.useState)(``),[h,g]=(0,a.useState)(!1),[_,v]=(0,a.useState)([]),[y,b]=(0,a.useState)(!1),[x,S]=(0,a.useState)(``),[C,w]=(0,a.useState)(``),[T,E]=(0,a.useState)(!1);(0,a.useEffect)(()=>{t&&(D(),O())},[t]);async function D(){f(!0);try{u(await e.kr())}catch{o.message.error(`Failed to load modules`)}finally{f(!1)}}async function O(){b(!0);try{v(await e.Or())}catch{o.message.error(`Failed to load actions`)}finally{b(!1)}}async function k(){let t=p.trim();if(!t){o.message.warning(`Enter a module name`);return}g(!0);try{let n=await e.Kn({menuName:t});u(e=>[...e,n]),m(``),o.message.success(`Module added`)}catch{o.message.error(`Failed to add module`)}finally{g(!1)}}async function A(t,n){try{await e.oi(t,{menuName:n}),u(e=>e.map(e=>e.MENUID===t?{...e,MENUNAME:n}:e))}catch{o.message.error(`Failed to update module`)}}async function j(t){try{await e.tr(t),u(e=>e.filter(e=>e.MENUID!==t)),o.message.success(`Module deleted`)}catch{o.message.error(`Failed to delete module`)}}async function M(){let t=x.trim(),n=C.trim().toLowerCase().replace(/\s+/g,`_`);if(!t||!n){o.message.warning(`Enter both name and key`);return}E(!0);try{let r=await e.Gn({permissionName:t,permissionKey:n});v(e=>[...e,r]),S(``),w(``),o.message.success(`Action added`)}catch(e){o.message.error(e?.message?.includes(`409`)||e?.status===409?`Permission key already exists`:`Failed to add action`)}finally{E(!1)}}async function N(t,n){try{await e.ai(t,{permissionName:n}),v(e=>e.map(e=>e.permissionId===t?{...e,permissionName:n}:e))}catch{o.message.error(`Failed to update action`)}}async function P(t){try{await e.er(t),v(e=>e.filter(e=>e.permissionId!==t)),o.message.success(`Action deleted`)}catch{o.message.error(`Failed to delete action`)}}let F=[{key:`modules`,label:`Modules`,children:(0,c.jsxs)(o.Spin,{spinning:d,children:[(0,c.jsxs)(`div`,{className:`perm-manage-add-row`,children:[(0,c.jsx)(o.Input,{placeholder:`Module name`,value:p,onChange:e=>m(e.target.value),onPressEnter:k,style:{flex:1},size:`small`}),(0,c.jsx)(o.Button,{type:`primary`,size:`small`,icon:(0,c.jsx)(s.PlusOutlined,{}),loading:h,onClick:k,children:`Add`})]}),(0,c.jsxs)(`div`,{className:`perm-manage-list`,children:[l.length===0&&!d&&(0,c.jsx)(`div`,{className:`perm-empty`,style:{paddingTop:24},children:`No modules found`}),l.map(e=>(0,c.jsx)(mA,{label:e.MENUNAME,onSave:t=>A(e.MENUID,t),onDelete:()=>j(e.MENUID)},e.MENUID))]})]})},{key:`actions`,label:`Actions`,children:(0,c.jsxs)(o.Spin,{spinning:y,children:[(0,c.jsxs)(`div`,{className:`perm-manage-add-row`,children:[(0,c.jsx)(o.Input,{placeholder:`Action name (e.g. Approve)`,value:x,onChange:e=>S(e.target.value),style:{flex:1},size:`small`}),(0,c.jsx)(o.Input,{placeholder:`Key (e.g. approve)`,value:C,onChange:e=>w(e.target.value),onPressEnter:M,style:{width:140},size:`small`}),(0,c.jsx)(o.Button,{type:`primary`,size:`small`,icon:(0,c.jsx)(s.PlusOutlined,{}),loading:T,onClick:M,children:`Add`})]}),(0,c.jsxs)(`div`,{className:`perm-manage-list`,children:[_.length===0&&!y&&(0,c.jsx)(`div`,{className:`perm-empty`,style:{paddingTop:24},children:`No actions found`}),_.map(e=>(0,c.jsx)(mA,{label:`${e.permissionName} (${e.permissionKey})`,onSave:t=>N(e.permissionId,t),onDelete:()=>P(e.permissionId)},e.permissionId))]})]})}];return(0,c.jsx)(o.Modal,{open:t,onCancel:n,title:(0,c.jsxs)(`span`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,c.jsx)(s.SettingOutlined,{style:{color:`var(--color-brand)`}}),`Manage Modules & Actions`]}),width:520,footer:null,destroyOnClose:!0,children:(0,c.jsx)(o.Tabs,{activeKey:r,onChange:i,size:`small`,items:F})})}function gA(){let[t,n]=(0,a.useState)([]),[r,i]=(0,a.useState)(!1),[l,u]=(0,a.useState)(null),[d,f]=(0,a.useState)(``),[p,m]=(0,a.useState)(!1),[h,g]=(0,a.useState)(()=>fA(uA)),[_,v]=(0,a.useState)(()=>fA(dA)),y=(0,a.useCallback)((e,t)=>{g(n=>{let r={...n,[e]:t};return pA(uA,r),r})},[]),b=(0,a.useCallback)((e,t)=>{v(n=>{let r={...n,[e]:t};return pA(dA,r),r})},[]);function x(){g({}),v({}),pA(uA,{}),pA(dA,{}),o.message.success(`Labels reset to defaults`)}let S=(0,a.useCallback)(async()=>{i(!0);try{let{roles:t}=await e.ur();n(t),t.length>0&&u(t[0])}catch{o.message.error(`Failed to load roles`)}finally{i(!1)}},[]);(0,a.useEffect)(()=>{S()},[S]);let C=(0,a.useMemo)(()=>{let e=d.trim().toLowerCase();return e?t.filter(t=>t.roleName.toLowerCase().includes(e)):t},[t,d]),w=Object.keys(h).length>0||Object.keys(_).length>0;return(0,c.jsxs)(`div`,{className:`perm-page`,children:[(0,c.jsxs)(Z,{className:`perm-left-card`,icon:(0,c.jsx)(s.SafetyOutlined,{}),title:`Roles`,bodyStyle:{padding:0},children:[(0,c.jsx)(`div`,{className:`perm-role-search`,children:(0,c.jsx)(o.Input,{prefix:(0,c.jsx)(s.SearchOutlined,{}),placeholder:`Search roles…`,allowClear:!0,size:`small`,value:d,onChange:e=>f(e.target.value)})}),(0,c.jsx)(o.Spin,{spinning:r,children:(0,c.jsxs)(`div`,{className:`perm-role-list`,children:[C.length===0&&!r&&(0,c.jsx)(`div`,{className:`perm-role-empty`,children:`No roles found`}),C.map(e=>{let t=l?.roleId===e.roleId,n=e.description&&e.description!==`N/A`?e.description:e.roleType===0?`Default role`:`Custom role`;return(0,c.jsxs)(`div`,{className:`perm-role-item${t?` active`:``}`,onClick:()=>u(e),children:[(0,c.jsx)(`div`,{className:`perm-role-item-name`,children:e.roleName}),(0,c.jsx)(`div`,{className:`perm-role-item-desc`,children:n})]},e.roleId)})]})})]}),(0,c.jsx)(Z,{className:`perm-right-card`,icon:(0,c.jsx)(s.LockOutlined,{}),title:`Module Permissions`,extra:(0,c.jsxs)(`span`,{style:{display:`flex`,alignItems:`center`,gap:10},children:[w&&(0,c.jsx)(`button`,{className:`perm-reset-btn`,onClick:x,children:`Reset labels`}),(0,c.jsx)(o.Button,{size:`small`,icon:(0,c.jsx)(s.SettingOutlined,{}),onClick:()=>m(!0),children:`Manage`})]}),bodyStyle:{padding:`12px 16px`},children:l?(0,c.jsx)(nA,{role:l,moduleLabels:h,actionLabels:_,onModuleLabelSave:y,onActionLabelSave:b},l.roleId):(0,c.jsx)(`div`,{className:`perm-empty`,children:`Select a role from the left to manage its permissions.`})}),(0,c.jsx)(hA,{open:p,onClose:()=>m(!1)})]})}var{Title:_A,Text:vA}=o.Typography,yA=[{label:`In Progress`,value:107,sub:`Under review`,color:`blue`},{label:`Hired`,value:2,sub:`Onboarded`,color:`green`},{label:`Project Completed`,value:2,sub:`Project cycle closed`,color:`purple`},{label:`Archive`,value:2,sub:`No longer active`,color:`peach`}];function bA({items:e=yA}){return(0,c.jsx)(o.Card,{className:`onboarding-card`,title:(0,c.jsx)(_A,{level:5,children:`Onboarding`}),extra:(0,c.jsx)(o.Button,{type:`link`,children:`View all`}),children:(0,c.jsx)(o.Row,{gutter:[12,12],children:e.map(e=>(0,c.jsx)(o.Col,{xs:12,sm:6,md:6,lg:12,xl:12,children:(0,c.jsxs)(`div`,{className:`onboarding-item ${e.color}`,children:[(0,c.jsx)(vA,{className:`onboarding-item-label`,children:e.label}),(0,c.jsx)(o.Statistic,{value:e.value,className:`onboarding-stat`}),(0,c.jsx)(`div`,{className:`onboarding-item-footer`,children:(0,c.jsx)(vA,{className:`onboarding-item-sub`,children:e.sub})})]})},e.label))})})}var{Text:xA,Title:SA}=o.Typography,CA=[{group:`Dashboard`,items:[{id:`dashboard`,label:`Admin Dashboard`,icon:(0,c.jsx)(s.DashboardOutlined,{})}]},{group:`Settings`,items:[{id:`org`,label:`Organization`,icon:(0,c.jsx)(s.BankOutlined,{}),heading:`Organization Settings`,desc:`Manage your company profile and location details`,cards:[{label:`Company Information`,icon:(0,c.jsx)(s.BankOutlined,{}),desc:`Manage company profile, address and business details.`},{label:`Location`,icon:(0,c.jsx)(s.BuildOutlined,{}),desc:`Manage office locations, branches and regions.`}]},{id:`users`,label:`Users`,icon:(0,c.jsx)(s.UserOutlined,{}),heading:`Users`,desc:`Manage platform users and configure their field views.`,component:`users`},{id:`teams`,label:`Teams`,icon:(0,c.jsx)(s.TeamOutlined,{}),heading:`Teams`,desc:`Organize users into teams and configure field visibility per team.`,component:`teams`},{id:`roles`,label:`Roles`,icon:(0,c.jsx)(s.SafetyOutlined,{}),heading:`Roles`,desc:`Control permissions and configure field visibility per role.`,component:`roles`},{id:`permissions`,label:`Permissions`,icon:(0,c.jsx)(s.LockOutlined,{}),heading:`Permissions`,desc:`Manage module-wise action permissions (view, add, edit, delete, and more) per role.`,component:`permissions`},{id:`templates`,label:`Templates`,icon:(0,c.jsx)(s.FileTextOutlined,{}),heading:`Templates`,desc:`Email and signature templates for communications`,component:`templates`},{id:`ai-services`,label:`AI Services`,icon:(0,c.jsx)(s.ThunderboltOutlined,{}),heading:`AI Services`,desc:`Register the AI/automation backends (base URL + auth) that admin-configured AI Actions call.`,component:`ai-services`},{id:`bgc-integration`,label:`Integrations`,icon:(0,c.jsx)(s.SafetyOutlined,{}),heading:`Integrations`,desc:`Manage manual and API integrations used across application workflows.`,component:`bgc-integration`}]},{group:`Clients`,items:[{id:`clients`,label:`Clients`,icon:(0,c.jsx)(s.BankOutlined,{}),heading:`Clients`,desc:`Manage client accounts and settings`,cards:[{label:`Clients`,icon:(0,c.jsx)(s.BankOutlined,{}),desc:`Manage client companies and account details.`}]}]},{group:`Forms`,items:[{id:`form-groups`,label:`Form Groups`,icon:(0,c.jsx)(s.AppstoreAddOutlined,{}),heading:`Form Groups`,desc:`Define field groups for module add/edit forms with validations and dropdown sources.`,component:`form-groups`},{id:`detail-groups`,label:`Detail Groups`,icon:(0,c.jsx)(s.AppstoreOutlined,{}),heading:`Detail Groups`,desc:`Customize the detail view per module: labels, prefix/suffix, colour, capitalization, reference lookups and merged fields.`,component:`detail-groups`},{id:`row-actions`,label:`Actions`,icon:(0,c.jsx)(s.ToolOutlined,{}),heading:`Actions`,desc:`Configure which action buttons appear per row in each module's list view, scoped per role.`,component:`row-actions`}]},{group:`Master`,items:[{id:`jobs`,label:`Jobs`,icon:(0,c.jsx)(s.AppstoreOutlined,{}),heading:`Jobs Master`,desc:`Configure job sources and status types`,cards:[{label:`Sources`,icon:(0,c.jsx)(s.AppstoreOutlined,{}),desc:`Manage job source master values.`},{label:`Job Status`,icon:(0,c.jsx)(s.CheckCircleOutlined,{}),desc:`Configure job workflow status.`}]},{id:`candidates`,label:`Candidates`,icon:(0,c.jsx)(s.UserOutlined,{}),heading:`Candidates Master`,desc:`Skills, sources and work authorization settings`,cards:[{label:`Sources`,icon:(0,c.jsx)(s.AppstoreOutlined,{}),desc:`Manage candidate source values.`},{label:`Skills`,icon:(0,c.jsx)(s.SettingOutlined,{}),desc:`Manage skill master data.`},{label:`Work Authorization`,icon:(0,c.jsx)(s.SafetyOutlined,{}),desc:`Manage visa and authorization types.`}]},{id:`submissions`,label:`Submissions`,icon:(0,c.jsx)(s.FileTextOutlined,{}),heading:`Submissions Master`,desc:`Rejection reasons and submission status configuration`,cards:[{label:`Rejection Reasons`,icon:(0,c.jsx)(s.FileTextOutlined,{}),desc:`Manage common rejection reasons.`},{label:`Client Submission Status`,icon:(0,c.jsx)(s.CheckCircleOutlined,{}),desc:`Manage client submission statuses.`}]},{id:`clientmaster`,label:`Client Master`,icon:(0,c.jsx)(s.BankOutlined,{}),heading:`Client Master`,desc:`Payment terms, client types and contact types`,cards:[{label:`Payment Terms`,icon:(0,c.jsx)(s.FileTextOutlined,{}),desc:`Manage billing and payment terms.`},{label:`Client Type`,icon:(0,c.jsx)(s.AppstoreOutlined,{}),desc:`Classify client business types.`},{label:`Client Contact Type`,icon:(0,c.jsx)(s.TeamOutlined,{}),desc:`Manage client contact categories.`}]}]}],wA=[{label:`Sourced`,count:312,color:`#378ADD`,pct:35},{label:`Screened`,count:223,color:`#7F77DD`,pct:25},{label:`Interview`,count:161,color:`#1D9E75`,pct:18},{label:`Offered`,count:107,color:`#EF9F27`,pct:12},{label:`Rejected`,count:89,color:`#E24B4A`,pct:10}],TA=[{name:`Tcs`,jobs:14,candidates:86},{name:`Empasis`,jobs:9,candidates:64},{name:`NovaSystems`,jobs:7,candidates:51},{name:`Brightwave`,jobs:5,candidates:38}],EA=[{text:`New candidate Ravi Kumar added to Java Developer role`,time:`2 min ago`,color:`#378ADD`},{text:`Submission approved by Acme Corp for Sr. React Dev`,time:`18 min ago`,color:`#1D9E75`},{text:`User Priya S. added to Recruiters team`,time:`1 hr ago`,color:`#7F77DD`},{text:`Job Data Analyst — TechFlow moved to archived`,time:`3 hr ago`,color:`#EF9F27`},{text:`Candidate rejected — work authorization mismatch`,time:`5 hr ago`,color:`#E24B4A`}];function DA(){return(0,c.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:16},children:[(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.DashboardOutlined,{}),title:`Admin Dashboard`,children:[(0,c.jsx)(`div`,{className:`admin-accent-bar`}),(0,c.jsx)(SA,{level:5,children:`Admin Dashboard`}),(0,c.jsx)(xA,{type:`secondary`,children:`Overview of jobs, candidates, onboarding and recent activity`})]}),(0,c.jsx)(`div`,{className:`admin-dashboard-stats`,children:(0,c.jsx)(Fk,{stats:[{label:`Total Jobs`,value:1697,icon:`fileText`},{label:`Active Jobs`,value:1685,icon:`checkCircle`},{label:`My Jobs`,value:600,icon:`user`},{label:`Total Candidates`,value:4320,icon:`team`},{label:`Submissions`,value:892,icon:`fileText`}]})}),(0,c.jsxs)(`div`,{className:`admin-dashboard-mid-row`,children:[(0,c.jsx)(bA,{}),(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.AppstoreOutlined,{}),title:`Candidate Pipeline`,children:[(0,c.jsx)(xA,{type:`secondary`,style:{fontSize:12},children:`By stage (892 total)`}),(0,c.jsx)(`div`,{className:`admin-pipeline-bar`,children:wA.map(e=>(0,c.jsx)(`div`,{className:`admin-pipeline-seg`,style:{width:`${e.pct}%`,background:e.color}},e.label))}),(0,c.jsx)(`div`,{className:`admin-pipeline-legend`,children:wA.map(e=>(0,c.jsxs)(`div`,{className:`admin-pipeline-legend-item`,children:[(0,c.jsx)(`span`,{className:`admin-pipeline-dot`,style:{background:e.color}}),e.label,` `,e.count]},e.label))}),(0,c.jsx)(`div`,{className:`admin-divider`}),(0,c.jsx)(xA,{strong:!0,style:{fontSize:12},children:`Submission status`}),(0,c.jsxs)(`div`,{className:`admin-sub-status-list`,style:{marginTop:6},children:[(0,c.jsxs)(`div`,{className:`admin-sub-status-item`,children:[(0,c.jsx)(xA,{style:{fontSize:13},children:`Pending client review`}),(0,c.jsx)(`span`,{className:`admin-badge warn`,children:`312`})]}),(0,c.jsxs)(`div`,{className:`admin-sub-status-item`,children:[(0,c.jsx)(xA,{style:{fontSize:13},children:`Client approved`}),(0,c.jsx)(`span`,{className:`admin-badge success`,children:`248`})]}),(0,c.jsxs)(`div`,{className:`admin-sub-status-item`,children:[(0,c.jsx)(xA,{style:{fontSize:13},children:`Rejected`}),(0,c.jsx)(`span`,{className:`admin-badge danger`,children:`89`})]})]})]})]}),(0,c.jsxs)(`div`,{className:`admin-dashboard-bottom-row`,children:[(0,c.jsx)(Z,{icon:(0,c.jsx)(s.BankOutlined,{}),title:`Top Clients`,extra:(0,c.jsx)(o.Button,{type:`link`,size:`small`,children:`View all`}),children:TA.map(e=>(0,c.jsxs)(`div`,{className:`admin-client-row`,children:[(0,c.jsxs)(`div`,{className:`admin-client-left`,children:[(0,c.jsx)(`div`,{className:`admin-client-icon`,children:(0,c.jsx)(s.BankOutlined,{})}),(0,c.jsxs)(`div`,{children:[(0,c.jsx)(`div`,{className:`admin-client-name`,children:e.name}),(0,c.jsxs)(`div`,{className:`admin-client-sub`,children:[e.jobs,` open jobs`]})]})]}),(0,c.jsxs)(`div`,{className:`admin-client-right`,children:[(0,c.jsx)(`div`,{className:`admin-client-val`,children:e.candidates}),(0,c.jsx)(`div`,{className:`admin-client-sub`,children:`candidates`})]})]},e.name))}),(0,c.jsx)(Z,{icon:(0,c.jsx)(s.BellOutlined,{}),title:`Recent Activity`,children:EA.map((e,t)=>(0,c.jsxs)(`div`,{className:`admin-activity-row`,children:[(0,c.jsx)(`div`,{className:`admin-activity-dot`,style:{background:e.color}}),(0,c.jsxs)(`div`,{children:[(0,c.jsx)(`div`,{className:`admin-activity-text`,children:e.text}),(0,c.jsx)(`div`,{className:`admin-activity-time`,children:e.time})]})]},t))})]}),(0,c.jsx)(Z,{icon:(0,c.jsx)(s.SettingOutlined,{}),title:`Admin Configuration Overview`,extra:(0,c.jsx)(o.Button,{type:`link`,size:`small`,children:`Manage`}),children:(0,c.jsxs)(o.Row,{gutter:[24,0],children:[(0,c.jsxs)(o.Col,{span:8,children:[(0,c.jsx)(xA,{type:`secondary`,style:{fontSize:12,fontWeight:500},children:`Settings`}),[[`Organization`,2],[`User Settings`,4],[`Templates`,2]].map(([e,t])=>(0,c.jsxs)(`div`,{className:`admin-cfg-overview-row`,children:[(0,c.jsx)(xA,{style:{fontSize:12},children:e}),(0,c.jsxs)(`span`,{className:`admin-badge info`,children:[t,` items`]})]},e))]}),(0,c.jsxs)(o.Col,{span:8,children:[(0,c.jsx)(xA,{type:`secondary`,style:{fontSize:12,fontWeight:500},children:`Master`}),[[`Jobs`,2],[`Candidates`,3],[`Submissions`,2]].map(([e,t])=>(0,c.jsxs)(`div`,{className:`admin-cfg-overview-row`,children:[(0,c.jsx)(xA,{style:{fontSize:12},children:e}),(0,c.jsxs)(`span`,{className:`admin-badge info`,children:[t,` items`]})]},e))]}),(0,c.jsxs)(o.Col,{span:8,children:[(0,c.jsx)(xA,{type:`secondary`,style:{fontSize:12,fontWeight:500},children:`System`}),[[`Total Groups`,4],[`Total Modules`,9],[`Config Items`,19]].map(([e,t])=>(0,c.jsxs)(`div`,{className:`admin-cfg-overview-row`,children:[(0,c.jsx)(xA,{style:{fontSize:12},children:e}),(0,c.jsx)(xA,{strong:!0,style:{fontSize:12},children:t})]},e))]})]})})]})}function OA({activeSection:e,activeGroup:t,filteredCards:n,searchText:r,setSearchText:i,allItems:a,handleNav:l}){return(0,c.jsxs)(o.Row,{gutter:[16,16],children:[(0,c.jsx)(o.Col,{span:24,children:(0,c.jsxs)(Z,{icon:e?.icon,title:e?.heading,extra:(0,c.jsx)(o.Input,{className:`admin-search`,prefix:(0,c.jsx)(s.SearchOutlined,{}),placeholder:`Search settings…`,allowClear:!0,value:r,onChange:e=>i(e.target.value)}),children:[(0,c.jsx)(`div`,{className:`admin-accent-bar`}),(0,c.jsx)(SA,{level:5,children:e?.heading}),(0,c.jsx)(xA,{type:`secondary`,children:e?.desc})]})}),(0,c.jsx)(o.Col,{xs:24,xl:16,style:{alignSelf:`flex-start`},children:(0,c.jsx)(Z,{icon:(0,c.jsx)(s.AppstoreOutlined,{}),title:`Configuration Items`,extra:(0,c.jsxs)(xA,{type:`secondary`,children:[n.length,` item`,n.length===1?``:`s`]}),children:(0,c.jsx)(o.Row,{gutter:[14,14],children:n.length>0?n.map(e=>(0,c.jsx)(o.Col,{xs:24,sm:12,xl:8,children:(0,c.jsxs)(`div`,{className:`admin-config-item`,children:[(0,c.jsx)(`div`,{className:`admin-config-top-bar`}),(0,c.jsxs)(`div`,{className:`admin-config-body`,children:[(0,c.jsx)(`div`,{className:`admin-config-icon`,children:e.icon}),(0,c.jsxs)(`div`,{className:`admin-config-text`,children:[(0,c.jsx)(`span`,{className:`admin-config-label`,children:e.label}),(0,c.jsx)(`span`,{className:`admin-config-desc`,children:e.desc})]})]}),(0,c.jsx)(`div`,{className:`admin-config-divider`}),(0,c.jsx)(o.Button,{type:`link`,size:`small`,className:`admin-config-manage`,icon:(0,c.jsx)(s.RightOutlined,{}),iconPosition:`end`,children:`Manage`})]})},e.label)):(0,c.jsx)(o.Col,{span:24,children:(0,c.jsx)(`div`,{className:`admin-config-empty`,children:(0,c.jsx)(o.Empty,{description:`No settings found`,image:o.Empty.PRESENTED_IMAGE_SIMPLE})})})})})}),(0,c.jsx)(o.Col,{xs:24,xl:8,style:{alignSelf:`flex-start`},children:(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.FileTextOutlined,{}),title:`Section Overview`,children:[(0,c.jsx)(`div`,{className:`admin-overview-list`,children:CA.filter(e=>e.group!==`Dashboard`).map(e=>{let n=e.group===t?.group;return(0,c.jsxs)(`div`,{className:`admin-overview-item${n?` active`:``}`,onClick:()=>{let t=e.items[0];t&&l(t.id)},children:[(0,c.jsxs)(`div`,{className:`admin-overview-left`,children:[(0,c.jsx)(`div`,{className:`admin-overview-icon`,children:e.items[0]?.icon}),(0,c.jsxs)(`div`,{className:`admin-overview-text`,children:[(0,c.jsx)(`span`,{className:`admin-overview-name`,children:e.group}),(0,c.jsxs)(`span`,{className:`admin-overview-sub`,children:[e.items.length,` module`,e.items.length===1?``:`s`]})]})]}),(0,c.jsx)(`span`,{className:`admin-overview-count${n?` active`:``}`,children:e.items.length})]},e.group)})}),(0,c.jsxs)(`div`,{className:`admin-overview-footer`,children:[(0,c.jsx)(`span`,{className:`admin-overview-footer-label`,children:`Total configuration items`}),(0,c.jsx)(`span`,{className:`admin-overview-footer-value`,children:a.filter(e=>e.cards).reduce((e,t)=>e+t.cards.length,0)})]})]})})]})}function kA(){let[e,t]=(0,a.useState)(`dashboard`),[n,r]=(0,a.useState)(``),i=(0,a.useMemo)(()=>CA.flatMap(e=>e.items),[]),l=(0,a.useMemo)(()=>i.find(t=>t.id===e),[i,e]),u=(0,a.useMemo)(()=>CA.find(t=>t.items.some(t=>t.id===e)),[e]),d=(0,a.useMemo)(()=>{if(!l?.cards)return[];let e=n.trim().toLowerCase();return e?l.cards.filter(t=>t.label.toLowerCase().includes(e)||t.desc.toLowerCase().includes(e)):l.cards},[l,n]),f=(0,a.useMemo)(()=>CA.map(e=>({key:e.group,type:`group`,label:e.group,children:e.items.map(e=>({key:e.id,icon:e.icon,label:e.label}))})),[]),p=e=>{t(e),r(``)};return e===`dashboard`||l?.heading,(0,c.jsxs)(`main`,{className:`admin-page`,children:[(0,c.jsx)(`div`,{className:`admin-breadcrumb`,children:(0,c.jsx)(o.Breadcrumb,{items:[{title:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(s.HomeOutlined,{}),` Home`]})},{title:`Admin`}]})}),(0,c.jsxs)(o.Row,{gutter:[16,16],className:`admin-wrapper`,children:[(0,c.jsx)(o.Col,{xs:24,lg:6,xl:5,children:(0,c.jsxs)(Z,{title:`Admin Console`,icon:(0,c.jsx)(s.SettingOutlined,{}),children:[(0,c.jsxs)(`div`,{className:`admin-sidebar-banner`,children:[(0,c.jsx)(`span`,{className:`admin-sidebar-banner-title`,children:`Admin Panel`}),(0,c.jsx)(`span`,{className:`admin-sidebar-banner-sub`,children:`Configuration Center`}),(0,c.jsxs)(o.Row,{gutter:[8,0],children:[(0,c.jsx)(o.Col,{span:12,children:(0,c.jsxs)(`div`,{className:`admin-sidebar-pill`,children:[(0,c.jsx)(`span`,{className:`admin-sidebar-pill-label`,children:`Groups`}),(0,c.jsx)(`span`,{className:`admin-sidebar-pill-value`,children:CA.length})]})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsxs)(`div`,{className:`admin-sidebar-pill`,children:[(0,c.jsx)(`span`,{className:`admin-sidebar-pill-label`,children:`Modules`}),(0,c.jsx)(`span`,{className:`admin-sidebar-pill-value`,children:i.length})]})})]})]}),(0,c.jsx)(o.Menu,{mode:`inline`,selectedKeys:[e],items:f,onClick:({key:e})=>p(e),className:`admin-sidebar-menu`})]})}),(0,c.jsx)(o.Col,{xs:24,lg:18,xl:19,children:e===`dashboard`?(0,c.jsx)(DA,{}):l?.component===`form-groups`?(0,c.jsx)(Gx,{}):l?.component===`detail-groups`?(0,c.jsx)(vS,{}):l?.component===`row-actions`?(0,c.jsx)(sC,{}):l?.component===`users`?(0,c.jsx)(zk,{}):l?.component===`teams`?(0,c.jsx)(Gk,{}):l?.component===`roles`?(0,c.jsx)(lA,{}):l?.component===`permissions`?(0,c.jsx)(gA,{}):l?.component===`templates`?(0,c.jsx)(yC,{}):l?.component===`ai-services`?(0,c.jsx)(CC,{}):l?.component===`bgc-integration`?(0,c.jsx)(kC,{}):(0,c.jsx)(OA,{activeSection:l,activeGroup:u,filteredCards:d,searchText:n,setSearchText:r,allItems:i,handleNav:p})})]})]})}var{Title:AA}=o.Typography;function jA(){let e=(0,u.useNavigate)(),{state:t}=(0,u.useLocation)(),n=t?.moduleName||`stickyNotes`,r=t?.title||`Sticky Notes`,i={...t?.request,params:{...t?.request?.params,limit:200,offset:0}};return(0,c.jsxs)(`div`,{children:[(0,c.jsx)(o.Button,{type:`text`,icon:(0,c.jsx)(s.ArrowLeftOutlined,{}),onClick:()=>e(-1),style:{marginBottom:12},children:`Back`}),(0,c.jsx)(At,{moduleName:n,title:r,columns:4,request:i,viewAll:!1})]})}var{Text:MA,Title:NA}=o.Typography,PA=10*1024*1024,FA=`/templates/test_cases_flow_template.base64.txt`,IA=`test_cases_flow_template.xlsx`,LA=`module | subModule | step_order | description | actions | key | value | expected | scenario`,RA={idle:0,module_set:1,encoding:1,validating:2,preview:3,inserting:3,done:4,error:1},zA=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`},{label:`Bulk upload`,href:`/bulk-upload`}];function BA(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(String(r.result).split(`,`)[1]),r.onerror=n,r.readAsDataURL(e)})}function VA(e){return e.filter(e=>e.row_status===`valid`).map(e=>{let t={...e};return delete t.row_status,delete t.errors,t})}function HA(e){return e.flatMap(e=>(e.errors??[]).map(t=>({id:e.id,...t})))}function UA({errors:e}){return(0,c.jsx)(`div`,{className:`bulk-tooltip-errors`,children:(e??[]).map((e,t)=>(0,c.jsx)(`div`,{children:e.message},`${e.field}-${t}`))})}function WA({errors:e,expanded:t,onToggle:n,onSummaryClick:r}){return e.length===0?null:(0,c.jsxs)(`div`,{className:`bulk-error-banner`,children:[(0,c.jsxs)(`div`,{className:`bulk-error-summary`,children:[(0,c.jsxs)(`button`,{type:`button`,className:`bulk-error-summary-main`,onClick:r,"aria-label":`Scroll to first invalid row`,children:[(0,c.jsx)(s.ExclamationCircleOutlined,{className:`bulk-error-icon`}),(0,c.jsxs)(`span`,{children:[e.length,` validation error(s) found`]})]}),(0,c.jsx)(o.Button,{type:`link`,onClick:n,"aria-expanded":t,children:t?`Hide Errors`:`View Errors`})]}),t&&(0,c.jsx)(`div`,{className:`bulk-error-list`,role:`region`,"aria-label":`Validation error details`,children:e.map((e,t)=>(0,c.jsxs)(`div`,{className:`bulk-error-line`,children:[(0,c.jsxs)(`span`,{className:`bulk-row-chip`,children:[`Row `,e.id]}),(0,c.jsx)(`span`,{children:e.message})]},`${e.id}-${e.field}-${t}`))})]})}function GA({rows:e,view:t,onViewChange:n,onConfirm:r,onReset:i,saving:a,firstInvalidRowId:l,firstInvalidRowRef:u}){let d=e.filter(e=>e.row_status===`invalid`),f=t===`errors`?d:e,p=d.length>0||a;return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(o.Row,{justify:`space-between`,align:`middle`,gutter:[16,16],className:`bulk-table-toolbar`,children:[(0,c.jsx)(o.Col,{children:(0,c.jsxs)(o.Space.Compact,{children:[(0,c.jsx)(o.Button,{type:t===`all`?`primary`:`default`,onClick:()=>n(`all`),children:`All rows`}),(0,c.jsx)(o.Button,{type:t===`errors`?`primary`:`default`,onClick:()=>n(`errors`),children:`Errors only`})]})}),(0,c.jsx)(o.Col,{children:(0,c.jsxs)(MA,{type:`secondary`,children:[e.length,` row(s)`]})})]}),(0,c.jsx)(`div`,{className:`bulk-table-wrap`,children:(0,c.jsxs)(`table`,{className:`bulk-preview-table`,children:[(0,c.jsx)(`thead`,{children:(0,c.jsxs)(`tr`,{children:[(0,c.jsx)(`th`,{className:`bulk-col-row`,children:`Row`}),(0,c.jsx)(`th`,{className:`bulk-col-flow`,children:`Submodule`}),(0,c.jsx)(`th`,{className:`bulk-col-description`,children:`Description`}),(0,c.jsx)(`th`,{className:`bulk-col-keyword`,children:`Action`}),(0,c.jsx)(`th`,{className:`bulk-col-target`,children:`Key`}),(0,c.jsx)(`th`,{className:`bulk-col-status`,children:`Status`}),(0,c.jsx)(`th`,{className:`bulk-col-error`,children:`Error`})]})}),(0,c.jsx)(`tbody`,{children:f.map(e=>{let t=e.errors??[],n=e.row_status===`invalid`;return(0,c.jsxs)(`tr`,{ref:n&&e.id===l?u:null,className:n?`bulk-row-invalid`:``,children:[(0,c.jsx)(`td`,{children:e.id}),(0,c.jsx)(`td`,{title:e.submodule,children:e.submodule}),(0,c.jsx)(`td`,{title:e.description,children:e.description?e.description:(0,c.jsx)(`span`,{className:`bulk-empty-text`,children:`-empty-`})}),(0,c.jsx)(`td`,{children:(0,c.jsx)(`code`,{className:`bulk-code-chip`,children:e.actions})}),(0,c.jsx)(`td`,{title:e.key,children:e.key}),(0,c.jsx)(`td`,{children:n?(0,c.jsx)(o.Tag,{color:`red`,children:`Error`}):(0,c.jsx)(o.Tag,{color:`green`,children:`Valid`})}),(0,c.jsx)(`td`,{children:n?(0,c.jsx)(o.Tooltip,{title:(0,c.jsx)(UA,{errors:t}),placement:`left`,children:(0,c.jsxs)(`button`,{type:`button`,className:`bulk-error-info`,"aria-label":`View ${t.length} error(s) for row ${e.id}`,children:[(0,c.jsx)(s.InfoCircleOutlined,{}),(0,c.jsx)(o.Badge,{count:t.length,size:`small`})]})}):(0,c.jsx)(`span`,{className:`bulk-error-none`,children:`-`})})]},`${e.id}-${e.step_order}`)})})]})}),(0,c.jsxs)(o.Space,{className:`bulk-actions`,children:[(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.ReloadOutlined,{}),onClick:i,children:`Reset`}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.SaveOutlined,{}),loading:a,disabled:p,onClick:r,children:d.length>0?`Fix ${d.length} error(s) to proceed`:`Save to database`})]})]})}function KA(){let n=(0,u.useNavigate)(),r=(0,a.useMemo)(()=>t.c(),[]),i=(0,a.useRef)(null),l=(0,a.useRef)(null),[d,f]=(0,a.useState)([]),[p,m]=(0,a.useState)(``),[h,g]=(0,a.useState)(`idle`),[_,v]=(0,a.useState)(!1),[y,b]=(0,a.useState)(null),[x,S]=(0,a.useState)([]),[C,w]=(0,a.useState)(`all`),[T,E]=(0,a.useState)(null),[D,O]=(0,a.useState)(null),[k,A]=(0,a.useState)(!1),j=d.map(e=>({value:e.modulename,label:e.modulename})),M=HA(x),N=h===`encoding`||h===`validating`,P=!!p&&!N,F=RA[h]??0,I=x.find(e=>e.row_status===`invalid`)?.id,L=(0,a.useCallback)(()=>{m(``),g(`idle`),v(!1),b(null),S([]),w(`all`),E(null),O(null),i.current&&(i.current.value=``)},[]);(0,a.useEffect)(()=>{async function e(){try{f((await Wv({project:r?.name??``,activeOnly:!0}))?.items??[])}catch(e){console.error(e),o.message.error(`Unable to load modules.`)}}e()},[r?.name]);let R=e=>{m(e??``),S([]),O(null),E(null),b(null),A(!1),g(e?`module_set`:`idle`)},z=async e=>{if(!e||!P)return;let t=e.name.split(`.`).pop()?.toLowerCase();if(![`xlsx`,`csv`].includes(t)){g(`module_set`),E({message:`Invalid file type. Please upload an Excel .xlsx or CSV .csv file.`});return}if(e.size>PA){g(`module_set`),E({message:`File must be 10 MB or smaller.`});return}E(null),S([]),O(null),b({name:e.name,size:e.size}),g(`encoding`);try{let n=await BA(e);g(`validating`),S((await zv({filename:e.name,project:r?.name??``,module:p,file_base64:n,file_type:t}))?.rows??[]),w(`all`),g(`preview`)}catch(e){console.error(e),E(e.payload??{code:`NETWORK_ERROR`,message:e.message||`Could not reach the server.`}),g(`error`)}},B=async()=>{try{let e=await fetch(FA);if(!e.ok)throw Error(`Template file not found (${e.status})`);let t=(await e.text()).trim(),n=atob(t),r=new Uint8Array(n.length);for(let e=0;e<n.length;e+=1)r[e]=n.charCodeAt(e);let i=new Blob([r],{type:`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`}),a=URL.createObjectURL(i),s=document.createElement(`a`);s.href=a,s.download=IA,document.body.appendChild(s),s.click(),s.remove(),URL.revokeObjectURL(a),o.message.success(`Sample template downloaded.`)}catch(e){console.error(e),o.message.error(`Unable to download sample template.`)}},ee=async()=>{g(`inserting`),E(null);try{O(await Bv({project:r?.name??``,module:p,uploaded_by:localStorage.getItem(`user_Email`)??``,rows:VA(x)})),g(`done`),o.message.success(`Bulk upload saved. Redirecting to view test cases...`),window.setTimeout(()=>n(`/viewTestCase`),900)}catch(e){console.error(e),E(e.payload??{code:`NETWORK_ERROR`,message:e.message||`Could not reach the server.`}),g(`preview`)}},V=(0,a.useCallback)(()=>{l.current?.scrollIntoView({behavior:`smooth`,block:`center`})},[]),H=[`bulk-dropzone`,_?`bulk-dropzone-dragging`:``,y?`bulk-dropzone-has-file`:``,T&&h!==`preview`?`bulk-dropzone-error`:``,p?``:`bulk-dropzone-disabled`].filter(Boolean).join(` `);return(0,c.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,c.jsxs)(o.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,c.jsx)(o.Col,{children:(0,c.jsx)(e.t,{items:zA})}),r?.name&&(0,c.jsx)(o.Col,{children:(0,c.jsx)(MA,{strong:!0,children:r.name})})]}),(0,c.jsxs)(`div`,{className:`zt-page zt-page-wide bulk-page`,children:[(0,c.jsxs)(`div`,{className:`bulk-header`,children:[(0,c.jsx)(NA,{level:3,children:`Bulk upload test cases`}),(0,c.jsxs)(o.Space,{direction:`vertical`,size:4,children:[(0,c.jsx)(MA,{type:`secondary`,children:LA}),(0,c.jsx)(MA,{type:`secondary`,children:`Use the sample template for the required columns. Uploaded rows are saved as Active by default.`})]})]}),(0,c.jsx)(`div`,{className:`bulk-stepbar`,children:[`Select`,`Upload`,`Validate`,`Save`].map((e,t)=>(0,c.jsxs)(`span`,{className:t<F?`bulk-step-active`:``,children:[t+1,` `,e]},e))}),(0,c.jsx)(o.Card,{className:`v1-card zt-fall`,title:`1. Module selector`,children:(0,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,className:`bulk-module-select`,placeholder:`Choose a module`,options:j,value:p||void 0,onChange:R})}),p&&(0,c.jsxs)(o.Card,{className:`v1-card zt-fall`,title:`2. File upload`,extra:(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.DownloadOutlined,{}),onClick:B,children:`Download Sample Template`}),children:[(0,c.jsx)(o.Alert,{type:`info`,showIcon:!0,message:`First time uploading?`,description:`Download the sample template, keep the column names unchanged, fill your test steps, and upload either .xlsx or .csv.`,className:`bulk-inline-alert`}),(0,c.jsxs)(`button`,{type:`button`,className:H,disabled:!P,onClick:()=>i.current?.click(),onDragOver:e=>{e.preventDefault(),P&&v(!0)},onDragLeave:()=>v(!1),onDrop:e=>{e.preventDefault(),v(!1),z(e.dataTransfer.files?.[0])},children:[(0,c.jsx)(s.CloudUploadOutlined,{className:`bulk-upload-icon`}),y?(0,c.jsxs)(`span`,{className:`bulk-file-chip`,children:[y.name,` - `,Math.ceil(y.size/1024),` KB`]}):(0,c.jsx)(`span`,{children:`Drag & drop here, or click to browse`})]}),(0,c.jsx)(`input`,{ref:i,hidden:!0,type:`file`,accept:`.xlsx,.csv`,onChange:e=>z(e.target.files?.[0])}),N&&(0,c.jsx)(o.Progress,{percent:h===`encoding`?45:82,showInfo:!1,size:`small`}),T&&h!==`preview`&&(0,c.jsx)(o.Alert,{type:`error`,showIcon:!0,message:T.message,className:`bulk-inline-alert`})]}),x.length>0&&(0,c.jsxs)(o.Card,{className:`v1-card zt-fall`,title:`3. Validation result`,children:[(0,c.jsx)(WA,{errors:M,expanded:k,onToggle:()=>A(e=>!e),onSummaryClick:V}),T&&h===`preview`&&(0,c.jsx)(o.Alert,{type:`error`,showIcon:!0,message:T.message,className:`bulk-inline-alert`}),(0,c.jsx)(GA,{rows:x,view:C,onViewChange:w,onConfirm:ee,onReset:L,saving:h===`inserting`,firstInvalidRowId:I,firstInvalidRowRef:l})]}),D&&h===`done`&&(0,c.jsxs)(o.Card,{className:`v1-card zt-fall`,title:`4. Upload complete`,children:[(0,c.jsxs)(o.Row,{gutter:[16,16],className:`bulk-metrics`,children:[(0,c.jsx)(o.Col,{xs:24,md:8,children:(0,c.jsxs)(`div`,{children:[(0,c.jsx)(MA,{children:`Total`}),(0,c.jsx)(`strong`,{children:x.length})]})}),(0,c.jsx)(o.Col,{xs:24,md:8,children:(0,c.jsxs)(`div`,{children:[(0,c.jsx)(MA,{children:`Inserted`}),(0,c.jsx)(`strong`,{children:D.inserted??0})]})}),(0,c.jsx)(o.Col,{xs:24,md:8,children:(0,c.jsxs)(`div`,{children:[(0,c.jsx)(MA,{children:`Failed`}),(0,c.jsx)(`strong`,{children:D.failed??0})]})})]}),(0,c.jsx)(o.Alert,{type:`success`,showIcon:!0,icon:(0,c.jsx)(s.CheckCircleOutlined,{}),message:`${D.inserted??0} test cases saved to database - module: ${p}`,className:`bulk-inline-alert`}),(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.ReloadOutlined,{}),onClick:L,children:`Upload another file`})]})]})]})}var qA=[{value:`navigate`,label:`Navigate`},{value:`fill`,label:`Fill`},{value:`click`,label:`Click`},{value:`select`,label:`Select`},{value:`press_key`,label:`Press Key`},{value:`type_and_select`,label:`Type and Select`},{value:`type_and_select_modal`,label:`Type and Select (Modal)`},{value:`upload_file`,label:`Upload File`},{value:`check_checkbox`,label:`Check Checkbox`},{value:`check_filter_checkbox`,label:`Check Filter Checkbox`},{value:`select_page_size`,label:`Select Page Size`},{value:`check_n_checkboxes`,label:`Check N Checkboxes`},{value:`store_text`,label:`Store Text`},{value:`reset_session`,label:`Reset Session`},{value:`switch_to_new_tab`,label:`Switch To New Tab`},{value:`close_tab`,label:`Close Tab`},{value:`assert_visible`,label:`Assert Visible`},{value:`assert_hidden`,label:`Assert Hidden`},{value:`assert_text`,label:`Assert Text`},{value:`assert_url`,label:`Assert URL`},{value:`assert_body_contains`,label:`Assert Body Contains`},{value:`assert_button_disabled`,label:`Assert Button Disabled`},{value:`assert_field_error`,label:`Assert Field Error`},{value:`assert_field_accepted`,label:`Assert Field Accepted`},{value:`assert_children_disabled`,label:`Assert Children Disabled`},{value:`assert_children_visible`,label:`Assert Children Visible`},{value:`assert_element_count`,label:`Assert Element Count`},{value:`assert_toast`,label:`Assert Toast`},{value:`assert_toast_success`,label:`Assert Toast Success`},{value:`assert_toast_error`,label:`Assert Toast Error`},{value:`wait_for_visible`,label:`Wait For Visible`},{value:`wait_for_hidden`,label:`Wait For Hidden`},{value:`wait_for_text`,label:`Wait For Text`}],{Text:JA}=o.Typography,YA=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/test-cases`}],XA={tags:`regression`,active:1},ZA={module:{dbName:`Modules`,formField:`module`,label:`Module`}};function QA(e=[]){return e.map(e=>({value:e,label:e}))}function $A(e=``){return String(e??``).trim()}function ej(e=``){return $A(e).toLowerCase()}function tj(e=[]){let t=new Map;return e.forEach(e=>{let n=$A(e?.flow),r=n.toLowerCase();n&&!t.has(r)&&t.set(r,n)}),Array.from(t.values()).map(e=>({value:e,label:e}))}function nj(e=[],t,n){let r=$A(t).toLowerCase(),i=$A(n).toLowerCase();return e.reduce((e,t)=>{let n=$A(t?.module).toLowerCase(),a=$A(t?.flow).toLowerCase();if(n!==r||a!==i)return e;let o=Number(t?.step_order)||0;return Math.max(e,o)},0)+1}function rj({icon:e,title:t}){return(0,c.jsxs)(o.Space,{size:10,align:`center`,children:[(0,c.jsx)(`div`,{className:`v1-section-icon-box`,children:e}),(0,c.jsx)(JA,{strong:!0,className:`v1-section-label`,children:t})]})}function ij(){let[t]=o.Form.useForm(),[n]=o.Form.useForm(),[r,i]=(0,a.useState)([]),[l,d]=(0,a.useState)([]),[f,p]=(0,a.useState)([]),[m,h]=(0,a.useState)(!1),[g,_]=(0,a.useState)(!1),[v,y]=(0,a.useState)({open:!1,typeKey:`module`}),[b,x]=(0,a.useState)(!1),[S,C]=(0,a.useState)(!1),[w,T]=(0,a.useState)(!1),E=(0,u.useNavigate)(),D=ZA[v.typeKey],O=(0,a.useMemo)(()=>QA(r),[r]),k=o.Form.useWatch(`module`,t),A=o.Form.useWatch(`flow`,t),j=!!$A(k),M=!!$A(A),N=!j,P=!j||!M,F=(e,t=[])=>{e===`module`&&i(t)},I=async()=>{h(!0);try{i((await Pv(ZA.module.dbName))?.items??[])}catch(e){console.error(`Unable to load testing options:`,e),o.message.error(`Unable to load testing options.`)}finally{h(!1)}},L=(0,a.useCallback)(async e=>{let n=$A(e);if(d([]),p([]),t.setFieldsValue({step_order:void 0}),n){_(!0);try{let e=await Rv({limit:1e4,offset:0,module:n}),t=Array.isArray(e?.items)?e.items:[];d(t),p(tj(t))}catch(e){console.error(`Unable to load flows:`,e),o.message.error(`Unable to load flows.`)}finally{_(!1)}}},[t]),R=(0,a.useCallback)(async(e,n,r)=>{let i=$A(e),a=$A(n);if(!i||!a){t.setFieldsValue({step_order:void 0});return}C(!0);try{t.setFieldsValue({step_order:nj(r,i,a)})}catch(e){console.error(`Unable to load step order:`,e),o.message.error(`Unable to load step order.`)}finally{C(!1)}},[t]);(0,a.useEffect)(()=>{Promise.resolve().then(I)},[]),(0,a.useEffect)(()=>{Promise.resolve().then(()=>L(k))},[L,k]),(0,a.useEffect)(()=>{Promise.resolve().then(()=>R(k,A,l))},[l,R,A,k]);let z=async e=>{let n={module:$A(e.module),flow:$A(e.flow),step_order:Number(e.step_order),description:$A(e.description),keyword:ej(e.keyword),target:$A(e.target),value:$A(e.value),expected:$A(e.expected),tags:e.tags?$A(e.tags):XA.tags,active:Number(e.active)};T(!0);try{await Lv(n),o.message.success(`Test case details saved successfully.`),t.resetFields(),d([]),p([])}catch(e){console.error(`Unable to save test case:`,e),o.message.error(`Unable to save test case.`)}finally{T(!1)}},B=(e,n)=>{t.setFieldsValue({[e]:$A(n)})},ee=e=>{t.setFieldsValue({module:$A(e),flow:void 0,step_order:void 0,keyword:void 0,description:void 0,target:void 0,tags:XA.tags,value:void 0,expected:void 0})},V=e=>{t.setFieldsValue({flow:$A(e),step_order:void 0})},H=e=>{let t=ZA[e];y({open:!0,typeKey:e}),n.setFieldsValue({name:``,type:t.label})},U=()=>{y(e=>({...e,open:!1})),n.resetFields()},te=async()=>{try{let e=$A((await n.validateFields()).name),r=await Fv({name:e,type:D.dbName});F(v.typeKey,r?.items??[]),t.setFieldsValue({[D.formField]:e}),o.message.success(`${D.label} added successfully.`),U()}catch(e){if(e?.errorFields)return;console.error(`Unable to save testing option:`,e),o.message.error(`Unable to add ${D.label.toLowerCase()}.`)}finally{x(!1)}};return(0,c.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,c.jsxs)(o.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,c.jsx)(o.Col,{children:(0,c.jsx)(e.t,{items:YA})}),(0,c.jsx)(o.Col,{children:(0,c.jsx)(o.Button,{type:`link`,onClick:()=>E(`/zinnext-home`),children:`View Table`})})]}),(0,c.jsx)(`div`,{className:`v1-page`,children:(0,c.jsxs)(`div`,{className:`v1-page-inner`,children:[(0,c.jsx)(`div`,{className:`v1-page-header`,children:(0,c.jsxs)(o.Space,{align:`center`,size:10,children:[(0,c.jsx)(s.ProfileOutlined,{className:`v1-outer-icon`}),(0,c.jsx)(`div`,{children:(0,c.jsx)(JA,{strong:!0,style:{fontSize:16},children:`Add Test Case`})})]})}),(0,c.jsx)(Z,{children:(0,c.jsxs)(o.Form,{form:t,className:`v1-form`,layout:`vertical`,colon:!1,requiredMark:(e,{required:t})=>(0,c.jsxs)(c.Fragment,{children:[e,t&&(0,c.jsx)(`span`,{className:`v1-required-mark`,children:` *`})]}),initialValues:XA,onFinish:z,autoComplete:`off`,children:[(0,c.jsx)(o.Card,{className:`v1-card`,title:(0,c.jsx)(rj,{icon:(0,c.jsx)(s.FileTextOutlined,{}),title:`Test Case Details`}),extra:(0,c.jsx)(JA,{type:`secondary`,className:`v1-card-subtitle`,children:`Module, flow, step order and execution data`}),children:(0,c.jsxs)(o.Row,{gutter:[24,0],children:[(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsxs)(o.Space.Compact,{style:{width:`100%`},children:[(0,c.jsx)(o.Form.Item,{label:`Module`,name:`module`,style:{flex:1},children:(0,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,loading:m,optionFilterProp:`label`,placeholder:`Select module`,options:O,onChange:ee})}),(0,c.jsx)(o.Button,{"aria-label":`Add module`,icon:(0,c.jsx)(s.PlusOutlined,{}),style:{marginTop:30},onClick:()=>H(`module`)})]})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Flow`,name:`flow`,children:(0,c.jsx)(o.AutoComplete,{maxLength:100,allowClear:!0,disabled:N,options:f,placeholder:g?`Loading flows`:`Enter flow`,onChange:V,filterOption:(e,t)=>t?.value?.toLowerCase().includes(e.toLowerCase())})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Step Order`,name:`step_order`,validateTrigger:[`onBlur`,`onChange`],children:(0,c.jsx)(o.Input,{maxLength:10,disabled:!0,placeholder:S?`Loading step order`:`Step order`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Action`,name:`keyword`,children:(0,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,disabled:P,optionFilterProp:`label`,placeholder:`Select action`,options:qA,onChange:e=>t.setFieldsValue({keyword:ej(e)})})})}),(0,c.jsx)(o.Col,{xs:24,children:(0,c.jsx)(o.Form.Item,{label:`Description`,name:`description`,children:(0,c.jsx)(o.Input.TextArea,{rows:3,maxLength:255,disabled:P,placeholder:`Enter description`,showCount:!0,onBlur:e=>B(`description`,e.target.value)})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Key`,name:`target`,children:(0,c.jsx)(o.Input,{maxLength:255,disabled:P,placeholder:`Enter target`,onBlur:e=>B(`target`,e.target.value)})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Tags`,name:`tags`,children:(0,c.jsx)(o.Input,{maxLength:200,disabled:P,placeholder:`Enter tags`,prefix:(0,c.jsx)(s.TagsOutlined,{className:`v1-input-icon`}),onBlur:e=>B(`tags`,e.target.value)})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Value`,name:`value`,children:(0,c.jsx)(o.Input.TextArea,{rows:4,disabled:P,placeholder:`Enter value`,onBlur:e=>B(`value`,e.target.value)})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Expected`,name:`expected`,children:(0,c.jsx)(o.Input.TextArea,{rows:4,disabled:P,placeholder:`Enter expected result`,onBlur:e=>B(`expected`,e.target.value)})})})]})}),(0,c.jsx)(`div`,{className:`v1-form-actions`,children:(0,c.jsx)(o.Form.Item,{children:(0,c.jsxs)(o.Space,{children:[(0,c.jsx)(o.Button,{type:`primary`,htmlType:`submit`,loading:w,disabled:P,children:`Submit`}),(0,c.jsx)(o.Button,{onClick:()=>{t.resetFields(),d([]),p([])},children:`Reset`})]})})})]})}),(0,c.jsx)(o.Modal,{title:`Add ${D.label}`,open:v.open,confirmLoading:b,okText:`Add`,onCancel:U,onOk:()=>{x(!0),te()},destroyOnHidden:!0,children:(0,c.jsxs)(o.Form,{form:n,layout:`vertical`,colon:!1,className:`v1-form`,requiredMark:(e,{required:t})=>(0,c.jsxs)(c.Fragment,{children:[e,t&&(0,c.jsx)(`span`,{className:`v1-required-mark`,children:` *`})]}),children:[(0,c.jsx)(o.Form.Item,{label:`Name`,name:`name`,children:(0,c.jsx)(o.Input,{maxLength:100,placeholder:`Enter ${D.label.toLowerCase()} name`,onBlur:e=>{n.setFieldsValue({name:$A(e.target.value)})}})}),(0,c.jsx)(o.Form.Item,{label:`Type`,name:`type`,children:(0,c.jsx)(o.Input,{disabled:!0})})]})})]})})]})}var{Text:aj}=o.Typography,oj=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`}];function sj(e=``){return String(e??``).trim()}function cj(e=[],t){return e.map(e=>({value:e.id,label:e[t]}))}var lj=[{label:`Step`,value:`step_order`,width:70},{label:`Action`,value:`actions`,width:140},{label:`Key`,value:`key`,width:160,ellipsis:!0},{label:`Value`,value:`value`,ellipsis:!0},{label:`Description`,value:`description`,ellipsis:!0},{label:`Scenario`,value:`scenario`,width:110,render:e=>e===1?(0,c.jsx)(o.Tag,{color:`green`,children:`Positive`}):(0,c.jsx)(o.Tag,{color:`red`,children:`Negative`})}],uj={key:!1,value:!1,expected:!1};function dj(e,t){return t?e[t]??uj:uj}function fj(e,t){e.setFields(t.map(e=>({name:e,errors:[]})))}function pj(){let[n]=o.Form.useForm(),r=(0,u.useNavigate)(),[i]=(0,u.useSearchParams)(),l=i.get(`edit`),d=!!l,f=(0,a.useMemo)(()=>t.c(),[]),[p,m]=(0,a.useState)([]),[h,g]=(0,a.useState)([]),[_,v]=(0,a.useState)([]),[y,b]=(0,a.useState)(qA),[x,S]=(0,a.useState)({}),[C,w]=(0,a.useState)(!1),[T,E]=(0,a.useState)(!1),[D,O]=(0,a.useState)(!1),[k,A]=(0,a.useState)(!1),[j,M]=(0,a.useState)(!1),N=o.Form.useWatch(`module`,n),P=o.Form.useWatch(`submodule`,n),F=o.Form.useWatch(`actions`,n),I=!!N,L=!!P,R=(0,a.useMemo)(()=>dj(x,F),[x,F]),z=(0,a.useMemo)(()=>cj(p,`modulename`),[p]),B=(0,a.useMemo)(()=>cj(h,`submodulename`),[h]),ee=(0,a.useMemo)(()=>p.find(e=>e.id===N)?.modulename??``,[p,N]),V=(0,a.useMemo)(()=>h.find(e=>e.id===P)?.submodulename??``,[P,h]),H=(0,a.useCallback)(async()=>{try{let e=await Iv();Array.isArray(e?.options)&&e.options.length>0&&b(e.options),e?.rules&&typeof e.rules==`object`&&S(e.rules)}catch(e){console.error(`Unable to load action field rules:`,e),o.message.error(`Unable to load action validation rules.`)}},[]),U=(0,a.useCallback)(async e=>{if(!e){m([]);return}w(!0);try{m((await Wv({project:e,activeOnly:!0}))?.items??[])}catch(e){console.error(`Unable to load modules:`,e),o.message.error(`Unable to load modules.`)}finally{w(!1)}},[]),te=(0,a.useCallback)(async(e,t)=>{if(!e||!t){g([]);return}E(!0);try{g((await qv({project:e,module:t,activeOnly:!0}))?.items??[])}catch(e){console.error(`Unable to load submodules:`,e),o.message.error(`Unable to load submodules.`)}finally{E(!1)}},[]),ne=(0,a.useCallback)(async(e,t,r,i=``)=>{if(!e||!t||!r){v([]),n.setFieldsValue({step_order:void 0});return}O(!0);try{let[a,o]=await Promise.all([Xv({product_parent_ID:e,module_parent_ID:t,submodule_parent_ID:r,actions:i,limit:1e3}),$v({product_parent_ID:e,module_parent_ID:t,submodule_parent_ID:r})]);v(a?.items??[]),n.setFieldsValue({step_order:o?.step_order??1})}catch(e){console.error(`Unable to load flows:`,e),o.message.error(`Unable to load flows.`)}finally{O(!1)}},[n]),W=(0,a.useCallback)(async(e=``)=>{if(!(!f?.id||!N||!P)){O(!0);try{v((await Xv({product_parent_ID:f.id,module_parent_ID:N,submodule_parent_ID:P,actions:e,limit:1e3}))?.items??[])}catch(e){console.error(`Unable to load action flows:`,e),o.message.error(`Unable to load action steps.`)}finally{O(!1)}}},[f?.id,N,P]),re=(0,a.useCallback)(async()=>{if(!(!l||!f?.name)){M(!0);try{let e=await Qv(l);await te(f.name,e.module),v((await Xv({product_parent_ID:e.product_parent_ID,module_parent_ID:e.module_parent_ID,submodule_parent_ID:e.submodule_parent_ID,limit:1e3}))?.items??[]),n.setFieldsValue({module:e.module_parent_ID,submodule:e.submodule_parent_ID,step_order:e.step_order,actions:e.actions,key:e.key,value:e.value,expected:e.expected,description:e.description,scenario:e.scenario===1,active:Number(e.active)!==0})}catch(e){console.error(`Unable to load test flow:`,e),o.message.error(`Unable to load test flow for edit.`),r(`/viewTestCase`)}finally{M(!1)}}},[l,n,te,r,f?.name]);return(0,a.useEffect)(()=>{if(!f){r(`/select-project`,{replace:!0});return}Promise.resolve().then(async()=>{await H(),await U(f.name),l&&await re()})},[f,r,H,U,l,re]),f?(0,c.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,c.jsxs)(o.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,c.jsx)(o.Col,{children:(0,c.jsx)(e.t,{items:oj})}),(0,c.jsx)(o.Col,{children:(0,c.jsxs)(o.Space,{size:6,className:`zt-section-title`,children:[(0,c.jsx)(s.ProjectOutlined,{}),(0,c.jsx)(aj,{strong:!0,children:f.name})]})})]}),(0,c.jsx)(`div`,{className:`zt-page`,children:(0,c.jsxs)(o.Form,{form:n,layout:`vertical`,colon:!1,className:`v1-form`,initialValues:{scenario:!0,active:!0},onFinish:async e=>{let t={product_parent_ID:Number(f?.id),module_parent_ID:Number(e.module),submodule_parent_ID:Number(e.submodule),description:sj(e.description),actions:sj(e.actions),key:sj(e.key),value:sj(e.value),expected:sj(e.expected),scenario:+!!e.scenario,active:+!!e.active};A(!0);try{if(d){await ey(l,{...t,step_order:Number(e.step_order)}),o.message.success(`Test case updated successfully.`),r(`/viewTestCase`);return}await Zv(t),o.message.success(`Step saved (#${e.step_order}).`),n.setFieldsValue({actions:void 0,key:void 0,value:void 0,expected:void 0,description:void 0}),await ne(t.product_parent_ID,t.module_parent_ID,t.submodule_parent_ID)}catch(e){console.error(`Unable to save test case:`,e),o.message.error(d?`Unable to update test case.`:`Unable to save step.`)}finally{A(!1)}},autoComplete:`off`,disabled:j,children:[(0,c.jsx)(o.Card,{className:`v1-card zt-fall`,title:(0,c.jsxs)(o.Space,{size:8,className:`zt-section-title`,children:[(0,c.jsx)(`span`,{className:`zt-step-tag`,children:`1`}),(0,c.jsx)(`span`,{children:`Module & Submodule`})]}),children:(0,c.jsxs)(o.Row,{gutter:[24,0],align:`bottom`,children:[(0,c.jsx)(o.Col,{xs:24,md:6,children:(0,c.jsx)(o.Form.Item,{label:`Module`,name:`module`,children:(0,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,loading:C,placeholder:`Select module`,options:z,onChange:e=>{let t=p.find(t=>t.id===e)?.modulename??``;n.setFieldsValue({module:e,submodule:void 0,step_order:void 0,actions:void 0,key:void 0,value:void 0,expected:void 0}),fj(n,[`actions`,`key`,`value`,`expected`]),g([]),v([]),te(f?.name,t)}})})}),(0,c.jsx)(o.Col,{xs:24,md:6,children:(0,c.jsx)(o.Form.Item,{label:`Submodule`,name:`submodule`,children:(0,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,disabled:!I,loading:T,placeholder:I?`Select submodule`:`Select module first`,options:B,onChange:e=>{n.setFieldsValue({submodule:e,actions:void 0,key:void 0,value:void 0,expected:void 0}),fj(n,[`actions`,`key`,`value`,`expected`]),ne(f?.id,N,e)}})})}),(0,c.jsx)(o.Col,{xs:24,md:6,children:(0,c.jsx)(o.Form.Item,{label:`Scenario`,name:`scenario`,valuePropName:`checked`,children:(0,c.jsx)(o.Switch,{disabled:!L,checkedChildren:`Positive`,unCheckedChildren:`Negative`})})}),(0,c.jsx)(o.Col,{xs:24,md:6,children:(0,c.jsx)(o.Form.Item,{label:`Active`,name:`active`,valuePropName:`checked`,children:(0,c.jsx)(o.Switch,{checkedChildren:`Active`,unCheckedChildren:`Inactive`})})})]})}),L&&(0,c.jsxs)(o.Card,{className:`v1-card zt-fall`,title:(0,c.jsxs)(o.Space,{size:8,className:`zt-section-title`,children:[(0,c.jsx)(`span`,{className:`zt-step-tag`,children:`2`}),(0,c.jsx)(s.FileTextOutlined,{}),(0,c.jsx)(`span`,{children:`Step Details`})]}),extra:(0,c.jsxs)(aj,{type:`secondary`,children:[ee,` / `,V]}),children:[(0,c.jsxs)(o.Row,{gutter:[24,0],children:[(0,c.jsx)(o.Col,{xs:24,md:6,children:(0,c.jsx)(o.Form.Item,{label:`Step Order`,name:`step_order`,children:(0,c.jsx)(o.Input,{disabled:!0,placeholder:D?`Loading…`:`Auto`})})}),(0,c.jsx)(o.Col,{xs:24,md:18,children:(0,c.jsx)(o.Form.Item,{label:`Action`,name:`actions`,rules:[{required:!0,message:`Mandatory Field`}],children:(0,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,placeholder:`Select action`,options:y,onChange:e=>{let t=dj(x,e);n.setFieldsValue({actions:e,key:t.key?n.getFieldValue(`key`):void 0,value:t.value?n.getFieldValue(`value`):void 0,expected:t.expected?n.getFieldValue(`expected`):void 0}),fj(n,[`key`,`value`,`expected`]),W(e||``)}})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Key`,name:`key`,rules:[{required:R.key,message:`Key is required for this action`}],children:(0,c.jsx)(o.Input,{maxLength:255,disabled:F&&!R.key,placeholder:F?R.key?`Required — Enter selector / locator`:`Not needed for this action`:`Select an action first`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Value`,name:`value`,rules:[{required:R.value,message:`Value is required for this action`}],children:(0,c.jsx)(o.Input.TextArea,{rows:1,autoSize:{minRows:1,maxRows:4},disabled:F&&!R.value,placeholder:F?R.value?`Required — Enter value`:`Not needed for this action`:`Select an action first`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Expected`,name:`expected`,rules:[{required:R.expected,message:`Expected result is required for this action`}],children:(0,c.jsx)(o.Input.TextArea,{rows:2,disabled:F&&!R.expected,placeholder:F?R.expected?`Required — Enter expected result`:`Not needed for this action`:`Select an action first`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Description`,name:`description`,children:(0,c.jsx)(o.Input.TextArea,{rows:2,maxLength:255,showCount:!0,placeholder:`Enter description`})})})]}),(0,c.jsxs)(o.Space,{className:`zt-actions`,children:[(0,c.jsx)(o.Button,{onClick:()=>{if(d){r(`/viewTestCase`);return}n.resetFields(),g([]),v([]),E(!1),O(!1)},children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,htmlType:`submit`,loading:k||j,children:d?`Update Test Case`:`Save & Continue`})]})]},`${N}-${P}`),L&&(0,c.jsx)(o.Card,{className:`v1-card zt-fall`,title:(0,c.jsxs)(o.Space,{size:6,className:`zt-section-title`,children:[(0,c.jsx)(s.TableOutlined,{}),(0,c.jsx)(`span`,{children:`Added Steps`})]}),extra:(0,c.jsx)(o.Tag,{children:F?`${_.length} ${F} step(s)`:`${_.length} step(s)`}),children:(0,c.jsx)(om,{listName:`Added Steps`,loading:D,fields:lj,dataSource:_,current:1,pageSize:Math.max(_.length,1),total:_.length,rowSelection:!1,className:`zt-list-plain zt-list-static`})})]})})]}):null}var{Text:mj}=o.Typography,hj=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`},{label:`Manage Modules`,href:`/manageModules`}];function gj(){let n=(0,u.useNavigate)(),r=(0,a.useMemo)(()=>t.c(),[]),[i,l]=(0,a.useState)([]),[d,f]=(0,a.useState)({}),[p,m]=(0,a.useState)(!1),[h,g]=(0,a.useState)(!1),[_,v]=(0,a.useState)(``),[y,b]=(0,a.useState)(!1),[x,S]=(0,a.useState)(1),[C,w]=(0,a.useState)(10),T=(0,a.useCallback)(async e=>{if(!e){l([]);return}m(!0);try{let[t,n]=await Promise.all([Wv({project:e}),qv({project:e})]);l(t?.items??[]);let r={};(n?.items??[]).forEach(e=>{let t=e.modulename;r[t]=(r[t]??0)+1}),f(r)}catch(e){console.error(e),o.message.error(`Unable to load modules.`)}finally{m(!1)}},[]);(0,a.useEffect)(()=>{if(!r){n(`/select-project`,{replace:!0});return}Promise.resolve().then(()=>T(r.name))},[r,n,T]);let E=async(e,t)=>{try{await Kv(e.id,+!!t),l(n=>n.map(n=>n.id===e.id?{...n,active:+!!t}:n)),o.message.success(`Module ${t?`activated`:`deactivated`}.`)}catch(e){console.error(e),o.message.error(`Unable to update module status.`)}},D=async()=>{let e=_.trim();if(!e){o.message.warning(`Enter a module name.`);return}b(!0);try{await Gv({project:r.name,modulename:e}),o.message.success(`Module added.`),g(!1),v(``),S(1),T(r.name)}catch(e){console.error(e),o.message.error(`Unable to add module (maybe it already exists).`)}finally{b(!1)}},O=e=>{n(`/test-cases/zinnext/submodules?module=${encodeURIComponent(e.modulename)}`)};return r?(0,c.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,c.jsxs)(o.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,c.jsx)(o.Col,{children:(0,c.jsx)(e.t,{items:hj})}),(0,c.jsx)(o.Col,{children:(0,c.jsx)(o.Button,{type:`link`,onClick:()=>n(`/addTestCase`),children:`Back to Form`})})]}),(0,c.jsxs)(`div`,{className:`zt-page`,children:[(0,c.jsx)(o.Card,{className:`v1-card zt-bar`,children:(0,c.jsxs)(o.Row,{gutter:[16,16],align:`middle`,justify:`space-between`,children:[(0,c.jsx)(o.Col,{children:(0,c.jsxs)(o.Space,{size:6,className:`zt-section-title`,children:[(0,c.jsx)(s.ProjectOutlined,{}),(0,c.jsx)(`span`,{children:`Project:`}),(0,c.jsx)(mj,{strong:!0,children:r.name})]})}),(0,c.jsx)(o.Col,{children:(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>g(!0),children:`Add Module`})})]})}),(0,c.jsx)(o.Card,{className:`v1-card zt-fall`,title:(0,c.jsxs)(o.Space,{size:6,className:`zt-section-title`,children:[(0,c.jsx)(s.AppstoreOutlined,{}),(0,c.jsx)(`span`,{children:`Modules`})]}),children:(0,c.jsx)(om,{listName:`Modules`,loading:p,fields:[{label:`Module`,value:`modulename`},{label:`Submodules`,value:`submoduleCount`,width:140,render:(e,t)=>(0,c.jsxs)(o.Button,{type:`link`,className:`zt-count-link`,onClick:()=>O(t),children:[d[t.modulename]??0,` submodule(s)`]})},{label:`Active`,value:`active`,width:120,render:(e,t)=>(0,c.jsx)(o.Switch,{checked:e===1,checkedChildren:`On`,unCheckedChildren:`Off`,onChange:e=>E(t,e)})}],dataSource:i,current:x,pageSize:C,total:i.length,onPageChange:S,onPageSizeChange:e=>{S(1),w(e)},rowSelection:!1,className:`zt-list-plain`})})]}),(0,c.jsx)(o.Modal,{title:`Add Module`,open:h,confirmLoading:y,okText:`Add`,onOk:D,onCancel:()=>{g(!1),v(``)},destroyOnHidden:!0,children:(0,c.jsxs)(o.Space,{direction:`vertical`,className:`zt-modal-stack`,children:[(0,c.jsxs)(mj,{type:`secondary`,children:[`Project: `,(0,c.jsx)(`b`,{children:r.name})]}),(0,c.jsx)(o.Input,{placeholder:`Enter module name`,maxLength:100,value:_,onChange:e=>v(e.target.value),onPressEnter:D})]})})]}):null}var{Text:_j}=o.Typography,vj=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`},{label:`Manage Modules`,href:`/manageModules`},{label:`Manage Submodules`,href:`/test-cases/zinnext/submodules`}];function yj(){let n=(0,u.useNavigate)(),[r]=(0,u.useSearchParams)(),i=(0,a.useMemo)(()=>t.c(),[]),l=r.get(`module`)??``,[d,f]=(0,a.useState)([]),[p,m]=(0,a.useState)(!1),[h,g]=(0,a.useState)(!1),[_,v]=(0,a.useState)(``),[y,b]=(0,a.useState)(!1),[x,S]=(0,a.useState)(1),[C,w]=(0,a.useState)(10),T=(0,a.useCallback)(async(e,t)=>{if(!e||!t){f([]);return}m(!0);try{f((await qv({project:e,module:t}))?.items??[])}catch(e){console.error(e),o.message.error(`Unable to load submodules.`)}finally{m(!1)}},[]);(0,a.useEffect)(()=>{if(!i){n(`/select-project`,{replace:!0});return}if(!l){n(`/manageModules`,{replace:!0});return}Promise.resolve().then(()=>T(i.name,l))},[i,l,n,T]);let E=async(e,t)=>{try{await Yv(e.id,+!!t),f(n=>n.map(n=>n.id===e.id?{...n,active:+!!t}:n)),o.message.success(`Submodule ${t?`activated`:`deactivated`}.`)}catch(e){console.error(e),o.message.error(`Unable to update submodule status.`)}},D=async()=>{let e=_.trim();if(!e){o.message.warning(`Enter a submodule name.`);return}b(!0);try{await Jv({project:i.name,modulename:l,submodulename:e}),o.message.success(`Submodule added.`),g(!1),v(``),S(1),T(i.name,l)}catch(e){console.error(e),o.message.error(`Unable to add submodule (maybe it already exists).`)}finally{b(!1)}};return!i||!l?null:(0,c.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,c.jsxs)(o.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,c.jsx)(o.Col,{children:(0,c.jsx)(e.t,{items:vj})}),(0,c.jsx)(o.Col,{children:(0,c.jsx)(o.Button,{type:`link`,onClick:()=>n(`/manageModules`),children:`Back to Modules`})})]}),(0,c.jsxs)(`div`,{className:`zt-page`,children:[(0,c.jsx)(o.Card,{className:`v1-card zt-bar`,children:(0,c.jsxs)(o.Row,{gutter:[16,16],align:`middle`,justify:`space-between`,children:[(0,c.jsx)(o.Col,{children:(0,c.jsxs)(o.Space,{size:16,wrap:!0,className:`zt-section-title`,children:[(0,c.jsxs)(o.Space,{size:6,children:[(0,c.jsx)(s.ProjectOutlined,{}),(0,c.jsx)(`span`,{children:`Project:`}),(0,c.jsx)(_j,{strong:!0,children:i.name})]}),(0,c.jsxs)(o.Space,{size:6,children:[(0,c.jsx)(s.AppstoreOutlined,{}),(0,c.jsx)(`span`,{children:`Module:`}),(0,c.jsx)(_j,{strong:!0,children:l})]})]})}),(0,c.jsx)(o.Col,{children:(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>g(!0),children:`Add Submodule`})})]})}),(0,c.jsx)(o.Card,{className:`v1-card zt-fall`,title:(0,c.jsxs)(o.Space,{size:6,className:`zt-section-title`,children:[(0,c.jsx)(s.AppstoreOutlined,{}),(0,c.jsx)(`span`,{children:`Submodules`})]}),children:(0,c.jsx)(om,{listName:`Submodules`,loading:p,fields:[{label:`Submodule`,value:`submodulename`},{label:`Active`,value:`active`,width:120,render:(e,t)=>(0,c.jsx)(o.Switch,{checked:e===1,checkedChildren:`On`,unCheckedChildren:`Off`,onChange:e=>E(t,e)})}],dataSource:d,current:x,pageSize:C,total:d.length,onPageChange:S,onPageSizeChange:e=>{S(1),w(e)},rowSelection:!1,className:`zt-list-plain`})})]}),(0,c.jsx)(o.Modal,{title:`Add Submodule`,open:h,confirmLoading:y,okText:`Add`,onOk:D,onCancel:()=>{g(!1),v(``)},destroyOnHidden:!0,children:(0,c.jsxs)(o.Space,{direction:`vertical`,className:`zt-modal-stack`,children:[(0,c.jsxs)(_j,{type:`secondary`,children:[`Project: `,(0,c.jsx)(`b`,{children:i.name}),` \xA0|\xA0 Module: `,(0,c.jsx)(`b`,{children:l})]}),(0,c.jsx)(o.Input,{placeholder:`Enter submodule name`,maxLength:100,value:_,onChange:e=>v(e.target.value),onPressEnter:D})]})})]})}var{Text:bj}=o.Typography,xj=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`},{label:`Table`,href:`/viewTestCase`}];function Sj(){let n=(0,u.useNavigate)(),[r,i]=(0,a.useState)([]),[l,d]=(0,a.useState)(0),[f,p]=(0,a.useState)(!1),m=(0,a.useMemo)(()=>t.c(),[]),[h,g]=(0,a.useState)(``),[_,v]=(0,a.useState)(1),[y,b]=(0,a.useState)(20),[x,S]=(0,a.useState)(null),C=(0,a.useCallback)(async(e={})=>{p(!0);try{let t=await Xv({product_parent_ID:e.project??m?.id??``,search:e.search??h??``,limit:e.pageSize??y,offset:((e.page??_)-1)*(e.pageSize??y)});i(t?.items??[]),d(t?.total??0)}catch(e){console.error(e),o.message.error(`Unable to load test flows.`)}finally{p(!1)}},[m?.id,h,_,y]),w=e=>{o.Modal.confirm({title:`Delete Test Case`,icon:(0,c.jsx)(s.ExclamationCircleOutlined,{}),content:`Are you sure you want to delete this test case?`,okText:`Delete`,okButtonProps:{danger:!0,loading:x===e.id},cancelText:`Cancel`,async onOk(){S(e.id);try{await ty(e.id),o.message.success(`Test case deleted successfully.`);let t=r.length===1&&_>1?_-1:_;v(t),await C({page:t})}catch(e){throw console.error(`Unable to delete test flow:`,e),o.message.error(`Unable to delete test case.`),e}finally{S(null)}}})};return(0,a.useEffect)(()=>{Promise.resolve().then(()=>{if(!m?.id){n(`/select-project`,{replace:!0});return}C({page:1})})},[]),(0,c.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,c.jsxs)(o.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,c.jsx)(o.Col,{children:(0,c.jsx)(e.t,{items:xj})}),(0,c.jsx)(o.Col,{children:(0,c.jsx)(o.Button,{type:`link`,onClick:()=>n(`/addTestCase`),children:`Back to Form`})})]}),(0,c.jsx)(`div`,{className:`zt-page zt-page-wide`,children:(0,c.jsxs)(o.Card,{className:`v1-card`,title:(0,c.jsxs)(o.Space,{size:6,className:`zt-section-title`,children:[(0,c.jsx)(s.TableOutlined,{}),(0,c.jsx)(`span`,{children:`Test Flows`})]}),extra:(0,c.jsxs)(bj,{type:`secondary`,children:[l,` row(s)`]}),children:[(0,c.jsxs)(o.Space,{wrap:!0,className:`zt-toolbar`,children:[(0,c.jsx)(o.Input.Search,{allowClear:!0,className:`zt-search-filter`,placeholder:`Search module / key / description`,value:h,onChange:e=>g(e.target.value),onSearch:()=>{v(1),C({page:1})}}),(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.ReloadOutlined,{}),onClick:()=>C(),children:`Refresh`})]}),(0,c.jsx)(om,{listName:`Test Flows`,loading:f,fields:[{label:`Actions`,value:`rowActions`,width:112,fixed:`left`,sorter:!1,render:(e,t)=>(0,c.jsxs)(o.Space,{size:4,className:`zt-row-actions`,children:[(0,c.jsx)(o.Tooltip,{title:`Edit`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>n(`/addTestCase?edit=${t.id}`)})}),(0,c.jsx)(o.Tooltip,{title:`Delete`,children:(0,c.jsx)(o.Button,{danger:!0,type:`text`,size:`small`,icon:(0,c.jsx)(s.DeleteOutlined,{}),loading:x===t.id,onClick:()=>w(t)})})]})},{label:`ID`,value:`id`,width:70,fixed:`left`},{label:`Project`,value:`project`,width:130},{label:`Module`,value:`module`,width:130},{label:`Submodule`,value:`submodule`,width:140},{label:`Step`,value:`step_order`,width:70},{label:`Action`,value:`actions`,width:140},{label:`Key`,value:`key`,width:160,ellipsis:!0},{label:`Value`,value:`value`,width:200,ellipsis:!0},{label:`Expected`,value:`expected`,width:180,ellipsis:!0},{label:`Description`,value:`description`,width:180,ellipsis:!0},{label:`Scenario`,value:`scenario`,width:110,render:e=>e===1?(0,c.jsx)(o.Tag,{color:`green`,children:`Positive`}):(0,c.jsx)(o.Tag,{color:`red`,children:`Negative`})},{label:`Active`,value:`active`,width:90,render:e=>e===1?(0,c.jsx)(o.Tag,{color:`blue`,children:`Active`}):(0,c.jsx)(o.Tag,{children:`Inactive`})}],dataSource:r,current:_,pageSize:y,total:l,onPageChange:e=>{v(e),C({page:e})},onPageSizeChange:e=>{v(1),b(e),C({page:1,pageSize:e})},rowSelection:!1,className:`zt-list-plain`})]})})]})}var Cj=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/test-cases`}];function wj(){return(0,c.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,c.jsx)(e.t,{items:Cj}),(0,c.jsx)(Oo,{moduleName:`test-flows`,rowKey:`id`})]})}var{Text:Tj}=o.Typography,Ej=[{label:`Home`,href:`/`},{label:`LMS Cases`,href:`/lms-cases`}],Dj={tags:`regression`,active:1},Oj={module:{dbName:`Modules`,formField:`module`,label:`Module`}},kj={key:!1,value:!1,expected:!1};function Aj(e,t){return t?e[t]??kj:kj}function jj(e,t){e.setFields(t.map(e=>({name:e,errors:[]})))}function Mj(e=[]){return e.map(e=>({value:e,label:e}))}function Nj(e=``){return String(e??``).trim()}function Pj(e=[]){let t=new Map;return e.forEach(e=>{let n=Nj(e?.flow),r=n.toLowerCase();n&&!t.has(r)&&t.set(r,n)}),Array.from(t.values()).map(e=>({value:e,label:e}))}function Fj(e=[],t,n){let r=Nj(t).toLowerCase(),i=Nj(n).toLowerCase();return e.reduce((e,t)=>{let n=Nj(t?.module).toLowerCase(),a=Nj(t?.flow).toLowerCase();if(n!==r||a!==i)return e;let o=Number(t?.step_order)||0;return Math.max(e,o)},0)+1}function Ij({icon:e,title:t}){return(0,c.jsxs)(o.Space,{size:10,align:`center`,children:[(0,c.jsx)(`div`,{className:`v1-section-icon-box`,children:e}),(0,c.jsx)(Tj,{strong:!0,className:`v1-section-label`,children:t})]})}function Lj(){let[t]=o.Form.useForm(),[n]=o.Form.useForm(),[r,i]=(0,a.useState)([]),[l,d]=(0,a.useState)([]),[f,p]=(0,a.useState)([]),[m,h]=(0,a.useState)(qA),[g,_]=(0,a.useState)({}),[v,y]=(0,a.useState)(!1),[b,x]=(0,a.useState)(!1),[S,C]=(0,a.useState)({open:!1,typeKey:`module`}),[w,T]=(0,a.useState)(!1),[E,D]=(0,a.useState)(!1),[O,k]=(0,a.useState)(!1),A=(0,u.useNavigate)(),j=Oj[S.typeKey],M=(0,a.useMemo)(()=>Mj(r),[r]),N=o.Form.useWatch(`module`,t),P=o.Form.useWatch(`flow`,t),F=o.Form.useWatch(`keyword`,t),I=!!Nj(N),L=!!Nj(P),R=!I,z=!I||!L,B=(0,a.useMemo)(()=>Aj(g,F),[g,F]),ee=(e,t=[])=>{e===`module`&&i(t)},V=async()=>{y(!0);try{i((await Pv(Oj.module.dbName))?.items??[])}catch(e){console.error(`Unable to load testing options:`,e),o.message.error(`Unable to load testing options.`)}finally{y(!1)}},H=async()=>{try{let e=await Iv();Array.isArray(e?.options)&&e.options.length>0&&h(e.options),e?.rules&&typeof e.rules==`object`&&_(e.rules)}catch(e){console.error(`Unable to load action field rules:`,e),o.message.error(`Unable to load action validation rules.`)}},U=(0,a.useCallback)(async e=>{let n=Nj(e);if(d([]),p([]),t.setFieldsValue({step_order:void 0}),n){x(!0);try{let e=await Hv({limit:1e4,offset:0,module:n}),t=Array.isArray(e?.items)?e.items:[];d(t),p(Pj(t))}catch(e){console.error(`Unable to load flows:`,e),o.message.error(`Unable to load flows.`)}finally{x(!1)}}},[t]),te=(0,a.useCallback)(async(e,n,r)=>{let i=Nj(e),a=Nj(n);if(!i||!a){t.setFieldsValue({step_order:void 0});return}D(!0);try{t.setFieldsValue({step_order:Fj(r,i,a)})}catch(e){console.error(`Unable to load step order:`,e),o.message.error(`Unable to load step order.`)}finally{D(!1)}},[t]);(0,a.useEffect)(()=>{Promise.resolve().then(async()=>{await Promise.all([V(),H()])})},[]),(0,a.useEffect)(()=>{Promise.resolve().then(()=>U(N))},[U,N]),(0,a.useEffect)(()=>{Promise.resolve().then(()=>te(N,P,l))},[l,te,P,N]);let ne=async e=>{let n={module:Nj(e.module),flow:Nj(e.flow),step_order:Number(e.step_order),description:Nj(e.description),keyword:Nj(e.keyword),target:Nj(e.target),value:Nj(e.value),expected:Nj(e.expected),tags:e.tags?Nj(e.tags):Dj.tags,active:Number(e.active)};k(!0);try{await Vv(n),o.message.success(`LMS case details saved successfully.`),t.resetFields(),d([]),p([])}catch(e){console.error(`Unable to save LMS case:`,e),o.message.error(`Unable to save LMS case.`)}finally{k(!1)}},W=(e,n)=>{t.setFieldsValue({[e]:Nj(n)})},re=e=>{t.setFieldsValue({module:Nj(e),flow:void 0,step_order:void 0,keyword:void 0,description:void 0,target:void 0,tags:Dj.tags,value:void 0,expected:void 0}),jj(t,[`keyword`,`target`,`value`,`expected`])},ie=e=>{t.setFieldsValue({flow:Nj(e),step_order:void 0,keyword:void 0,target:void 0,value:void 0,expected:void 0}),jj(t,[`keyword`,`target`,`value`,`expected`])},G=e=>{let n=Aj(g,e);t.setFieldsValue({keyword:Nj(e),target:n.key?t.getFieldValue(`target`):void 0,value:n.value?t.getFieldValue(`value`):void 0,expected:n.expected?t.getFieldValue(`expected`):void 0}),jj(t,[`target`,`value`,`expected`])},ae=e=>{let t=Oj[e];C({open:!0,typeKey:e}),n.setFieldsValue({name:``,type:t.label})},oe=()=>{C(e=>({...e,open:!1})),n.resetFields()},se=async()=>{try{let e=Nj((await n.validateFields()).name),r=await Fv({name:e,type:j.dbName});ee(S.typeKey,r?.items??[]),t.setFieldsValue({[j.formField]:e}),o.message.success(`${j.label} added successfully.`),oe()}catch(e){if(e?.errorFields)return;console.error(`Unable to save testing option:`,e),o.message.error(`Unable to add ${j.label.toLowerCase()}.`)}finally{T(!1)}};return(0,c.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,c.jsxs)(o.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,c.jsx)(o.Col,{children:(0,c.jsx)(e.t,{items:Ej})}),(0,c.jsx)(o.Col,{children:(0,c.jsx)(o.Button,{type:`link`,onClick:()=>A(`/lms-home`),children:`View Table`})})]}),(0,c.jsx)(`div`,{className:`v1-page`,children:(0,c.jsxs)(`div`,{className:`v1-page-inner`,children:[(0,c.jsx)(`div`,{className:`v1-page-header`,children:(0,c.jsxs)(o.Space,{align:`center`,size:10,children:[(0,c.jsx)(s.ProfileOutlined,{className:`v1-outer-icon`}),(0,c.jsx)(`div`,{children:(0,c.jsx)(Tj,{strong:!0,style:{fontSize:16},children:`Add LMS Case`})})]})}),(0,c.jsx)(Z,{children:(0,c.jsxs)(o.Form,{form:t,className:`v1-form`,layout:`vertical`,colon:!1,requiredMark:(e,{required:t})=>(0,c.jsxs)(c.Fragment,{children:[e,t&&(0,c.jsx)(`span`,{className:`v1-required-mark`,children:` *`})]}),initialValues:Dj,onFinish:ne,autoComplete:`off`,children:[(0,c.jsx)(o.Card,{className:`v1-card`,title:(0,c.jsx)(Ij,{icon:(0,c.jsx)(s.FileTextOutlined,{}),title:`LMS Case Details`}),extra:(0,c.jsx)(Tj,{type:`secondary`,className:`v1-card-subtitle`,children:`Module, flow, step order and execution data`}),children:(0,c.jsxs)(o.Row,{gutter:[24,0],children:[(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsxs)(o.Space.Compact,{style:{width:`100%`},children:[(0,c.jsx)(o.Form.Item,{label:`Module`,name:`module`,style:{flex:1},children:(0,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,loading:v,optionFilterProp:`label`,placeholder:`Select module`,options:M,onChange:re})}),(0,c.jsx)(o.Button,{"aria-label":`Add module`,icon:(0,c.jsx)(s.PlusOutlined,{}),style:{marginTop:30},onClick:()=>ae(`module`)})]})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Flow`,name:`flow`,children:(0,c.jsx)(o.AutoComplete,{maxLength:100,allowClear:!0,disabled:R,options:f,placeholder:b?`Loading flows`:`Enter flow`,onChange:ie,filterOption:(e,t)=>t?.value?.toLowerCase().includes(e.toLowerCase())})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Step Order`,name:`step_order`,validateTrigger:[`onBlur`,`onChange`],children:(0,c.jsx)(o.Input,{maxLength:10,disabled:!0,placeholder:E?`Loading step order`:`Step order`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Action`,name:`keyword`,children:(0,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,disabled:z,optionFilterProp:`label`,placeholder:`Select action`,options:m,onChange:G})})}),(0,c.jsx)(o.Col,{xs:24,children:(0,c.jsx)(o.Form.Item,{label:`Description`,name:`description`,children:(0,c.jsx)(o.Input.TextArea,{rows:3,maxLength:255,disabled:z,placeholder:`Enter description`,showCount:!0,onBlur:e=>W(`description`,e.target.value)})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Key`,name:`target`,rules:[{required:B.key,message:`Key is required for this action`}],children:(0,c.jsx)(o.Input,{maxLength:255,disabled:z||!!F&&!B.key,placeholder:z?`Select module and flow first`:F?B.key?`Required — Enter selector / locator`:`Not needed for this action`:`Select an action first`,onBlur:e=>W(`target`,e.target.value)})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Tags`,name:`tags`,children:(0,c.jsx)(o.Input,{maxLength:200,disabled:z,placeholder:`Enter tags`,prefix:(0,c.jsx)(s.TagsOutlined,{className:`v1-input-icon`}),onBlur:e=>W(`tags`,e.target.value)})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Value`,name:`value`,rules:[{required:B.value,message:`Value is required for this action`}],children:(0,c.jsx)(o.Input.TextArea,{rows:4,disabled:z||!!F&&!B.value,placeholder:z?`Select module and flow first`:F?B.value?`Required — Enter value`:`Not needed for this action`:`Select an action first`,onBlur:e=>W(`value`,e.target.value)})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Expected`,name:`expected`,rules:[{required:B.expected,message:`Expected result is required for this action`}],children:(0,c.jsx)(o.Input.TextArea,{rows:4,disabled:z||!!F&&!B.expected,placeholder:z?`Select module and flow first`:F?B.expected?`Required — Enter expected result`:`Not needed for this action`:`Select an action first`,onBlur:e=>W(`expected`,e.target.value)})})})]})}),(0,c.jsx)(`div`,{className:`v1-form-actions`,children:(0,c.jsx)(o.Form.Item,{children:(0,c.jsxs)(o.Space,{children:[(0,c.jsx)(o.Button,{type:`primary`,htmlType:`submit`,loading:O,disabled:z,children:`Submit`}),(0,c.jsx)(o.Button,{onClick:()=>{t.resetFields(),d([]),p([])},children:`Reset`})]})})})]})}),(0,c.jsx)(o.Modal,{title:`Add ${j.label}`,open:S.open,confirmLoading:w,okText:`Add`,onCancel:oe,onOk:()=>{T(!0),se()},destroyOnHidden:!0,children:(0,c.jsxs)(o.Form,{form:n,layout:`vertical`,colon:!1,className:`v1-form`,requiredMark:(e,{required:t})=>(0,c.jsxs)(c.Fragment,{children:[e,t&&(0,c.jsx)(`span`,{className:`v1-required-mark`,children:` *`})]}),children:[(0,c.jsx)(o.Form.Item,{label:`Name`,name:`name`,children:(0,c.jsx)(o.Input,{maxLength:100,placeholder:`Enter ${j.label.toLowerCase()} name`,onBlur:e=>{n.setFieldsValue({name:Nj(e.target.value)})}})}),(0,c.jsx)(o.Form.Item,{label:`Type`,name:`type`,children:(0,c.jsx)(o.Input,{disabled:!0})})]})})]})})]})}var Rj=[{label:`Home`,href:`/`},{label:`LMS Cases`,href:`/lms-cases`}];function zj(){return(0,c.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,c.jsx)(e.t,{items:Rj}),(0,c.jsx)(Oo,{moduleName:`lms-flows`,rowKey:`id`})]})}var Bj=[`referenceId`,`ReferenceId`,`candidateId`,`CandidateId`,`entityId`,`EntityId`,`id`,`Id`,`_id`];function Vj(e=Bj){return function(t){if(!t||typeof t!=`object`)return``;for(let n of e){let e=t[n];if(e!=null&&e!==``)return String(e)}return``}}function Hj(e,t=Bj){if(!e||typeof e!=`object`)return[];let n=[];for(let r of t){let t=e[r];t!=null&&t!==``&&n.push(String(t))}return n}var Uj=Vj();function Wj(e){return typeof e==`function`?e:typeof e==`string`?Vj([e]):Array.isArray(e)?Vj(e):Uj}function Gj(e,t,n){return!t||typeof t!=`object`?e:{...t,...e,id:e?.id??t?.id??n}}function Kj(e,t,n={}){return{status:`success`,total:t,data:{data:e,...n}}}var qj=[`fields`,`fieldConfig`,`tabs`,`tabField`,`actionRules`,`actions`,`columnActions`];function Jj(e){let t=e?.data??e,n={};for(let r of qj){let i=e?.[r]??t?.[r];i==null||Array.isArray(i)&&i.length===0||(n[r]=i)}return n}var Yj=e=>String(e??``).replace(/[^a-zA-Z0-9]/g,``).toLowerCase();function Xj(e,t,n){let r=(Array.isArray(n)?n:[n]).map(Yj).filter(Boolean),i=r.length?e.findIndex(e=>r.includes(Yj(e?.value))||r.includes(Yj(e?.label))):-1;if(i===-1)return[...e,...t];let a=Number(e[i]?.order),o=Number.isFinite(a)?t.map((e,n)=>e.order==null||e.order===``?{...e,order:a+(n+1)/(t.length+1)}:e):t;return[...e.slice(0,i+1),...o,...e.slice(i+1)]}var Zj=(e,t)=>Qr(e,t).rows,Qj=(e,t)=>{let{rows:n,total:r}=Qr(e,t);return{rows:n,total:r}};function $j(e,t){return function(n,r,i,a={}){return e(t??n,r,i,a)}}function eM(e){return!e||typeof e!=`object`||typeof(e.fetchByKeys??e.fetch??e.function)!=`function`?null:{...e,fetchByKeys:typeof e.fetchByKeys==`function`?e.fetchByKeys:null,fetch:typeof e.fetch==`function`?e.fetch:null,function:typeof e.function==`function`?e.function:null,extractRows:typeof e.extractRows==`function`?e.extractRows:Zj,mergeRow:typeof e.mergeRow==`function`?e.mergeRow:Gj,fetchById:typeof e.fetchById==`function`?e.fetchById:null}}function tM({fetchSecondaryByKeys:e,fetchSecondary:t,extractSecondaryRows:n,fetchSecondaryById:r,secondaryKey:i,mergeRow:a,secondaryFetchLimit:o}){return!e&&!t&&!r?[]:[eM({key:i,fetchByKeys:e?(t,n,r)=>e(t,n,r):null,function:t?({moduleName:e,options:n})=>t(e,o,0,n):null,extractRows:n,fetchById:r,mergeRow:a})].filter(Boolean)}function nM(e){if(typeof e==`function`)return t=>{let n=e(t);return n==null||n===``?[]:[String(n)]};let t=typeof e==`string`?[e]:Array.isArray(e)&&e.length?e:Bj;return e=>Hj(e,t)}function rM(e,t){let n=new Map;return e.forEach(e=>{for(let r of t(e))n.has(r)||n.set(r,e)}),n}function iM({moduleName:e,limit:t,offset:n,options:r,keys:i,primaryResponse:a,primaryRows:o,pageRows:s,total:c,source:l}){return{moduleName:e,limit:t,offset:n,options:r,keys:i,primaryResponse:a,primaryRows:o,pageRows:s,total:c,source:l}}async function aM(e,t){if(typeof e.args==`function`){let n=e.args(t);return(e.fetch??e.function??e.fetchByKeys)(...Array.isArray(n)?n:[n])}if(Array.isArray(e.args))return(e.fetch??e.function??e.fetchByKeys)(...e.args);if(e.fetchByKeys&&Array.isArray(t.keys))return e.fetchByKeys(t.moduleName,t.keys,t.options,t);let n=e.fetch??e.function;return typeof n==`function`?n(t):null}function oM({fetchPrimaryPage:e,extractPrimaryPage:t=Qj,fetchSecondaryByKeys:n,joinSources:r=[],fetchPrimary:i,extractPrimaryRows:a=Zj,fetchSecondary:o,extractSecondaryRows:s=Zj,fetchSecondaryById:c,primaryKey:l,secondaryKey:u,mergeRow:d=Gj,secondaryFetchLimit:f=200,extraFields:p=[],extraFieldsAfter:m}){let h=Array.isArray(r)&&r.length?r.map(eM).filter(Boolean):tM({fetchSecondaryByKeys:n,fetchSecondary:o,extractSecondaryRows:s,fetchSecondaryById:c,secondaryKey:u,mergeRow:d,secondaryFetchLimit:f}),g=0;async function _(e,t,n,r){if(!e.fetchById||!r)return null;try{let i=await e.fetchById(n,r);return i&&t(i).includes(String(r))?i:null}catch(e){return console.error(`[mergedListApi] per-id join lookup failed for "${r}"`,e),null}}async function v(e,t,n,r,i){if(!n)return e;let a=t.extractRows(n,r)??[],o=Wj(t.primaryKey??l),s=nM(t.key),c=rM(a,s);return Promise.all(e.map(async e=>{let n=o(e),a=c.get(n)??(i()?null:await _(t,s,r,n));return t.mergeRow(e,a,n)}))}async function y(e,t,n,r){let i=e;for(let e of t)i=await v(i,e.source,e.response,n,r);return i}function b(e,t,n){let r={};for(let e of n){if(!e)continue;let t=Jj(e);for(let e of Object.keys(t))r[e]??(r[e]=t[e])}return p.length&&(r.fields=Xj(r.fields??[],p,m)),Kj(e,t,r)}async function x({moduleName:e,limit:t,offset:n,options:r,primaryResponse:i,primaryRows:a,pageRows:o,total:s}){return Promise.all(h.map(async c=>{try{let u=Wj(c.primaryKey??l),d=[...new Set(o.map(u).filter(Boolean))];return c.fetchByKeys&&d.length===0?{source:c,response:null}:{source:c,response:await aM(c,iM({moduleName:e,limit:t,offset:n,options:r,keys:d,primaryResponse:i,primaryRows:a,pageRows:o,total:s,source:c}))}}catch(e){return console.error(`[mergedListApi] join fetch failed — rendering page without that join`,e),{source:c,response:null}}}))}async function S(n,r,i,a,o){let s=await e(n,r,i,a),c=t(s,n)??{},l=Array.isArray(c.rows)?c.rows:[],u=Number.isFinite(Number(c.total))?Number(c.total):l.length,d=await x({moduleName:n,limit:r,offset:i,options:a,primaryResponse:s,primaryRows:l,pageRows:l,total:u});return b(await y(l,d,n,o),u,[s,...d.map(e=>e.response)])}async function C(e,t,n,r,o){let s=await i(e,t,n,r),c=a(s,e)??[],l=c.length,u=c.slice(n,n+t),d=await x({moduleName:e,limit:t,offset:n,options:r,primaryResponse:s,primaryRows:c,pageRows:u,total:l});return b(await y(u,d,e,o),l,[s,...d.map(e=>e.response)])}return async function(t,n=10,r=0,i={}){let a=++g,o=()=>a!==g;return e?S(t,n,r,i,o):C(t,n,r,i,o)}}function sM(e,t,n={}){return oM({fetchPrimary:()=>HD(e,t),extractPrimaryRows:BD,fetchSecondary:wn,fetchSecondaryById:UD,secondaryFetchLimit:n.moduleFetchLimit??200})}function cM(e){let t=String(e??``).trim().split(/[^a-zA-Z0-9]+/).filter(Boolean);return t.length?`${t.map((e,t)=>t===0?e.toLowerCase():e[0].toUpperCase()+e.slice(1).toLowerCase()).join(``)}Count`:``}function lM(e){let t=Array.isArray(e?.stages)?e.stages:[];if(!t.length)return e;let n={};for(let e of t){let t=cM(e?.stageName);t&&(n[t]=Number(e?.count)||0)}return{...n,...e}}var uM=e=>{let t=Number(e?.targetSubmission??e?.targetSubmissions);return Number.isFinite(t)&&t>0?t:null};function dM({submittedCountField:e=`submittedCount`,progressField:t=`targetSubmissionProgress`}={}){return function(n,r,i){let a=Gj(n,r,i),o=uM(a);return o!=null&&(a[t]=`${Number(a?.[e])||0} of ${o}`),a}}function fM(e={}){let t=dM();return oM({primaryKey:`_id`,extraFields:e.extraFields,extraFieldsAfter:e.extraFieldsAfter,fetchPrimaryPage:wn,joinSources:[{key:`entityId`,fetchByKeys:(e,t,n,r)=>{let i=Math.max(1,Number(r?.limit)||10);return VD(Math.floor((Number(r?.offset)||0)/i)+1,i)},extractRows:e=>(e?.items??[]).map(lM),mergeRow:(e,n,r)=>{let i=t(e,n,r);return n?._id&&(i.workflowId=n._id),i}}]})}async function pM(e,t=10,n=0,r={},i={}){return Qr(await fM(i)(e,t,n,r),e)}async function mM(e,t,n,r=10,i=0,a={}){return Qr(await sM(e,t)(n,r,i,a),n)}var hM=jk,gM=iy(kA),_M=iy(jA),vM=iy(KA),yM=iy(ij),bM=iy(pj),xM=iy(gj),SM=iy(yj),CM=iy(Sj),wM=iy(wj),TM=iy(Lj),EM=iy(zj);exports.ADMIN_API_URL=t._,exports.ADMIN_APP_ID=t.v,exports.APP_ID=t.y,exports.AUTH_URL=t.b,exports.ActivityNotesCard=bc,exports.ActivityTab=hc,exports.AddBatchCandidatePopup=fk,exports.AddFormV1=Qs,exports.AdminDashboard=jk,exports.AdminDashboardContent=Rw,exports.AdminPage=hM,exports.AppAlert=$s,exports.AppButton=e.st,exports.AppShell=Dv,exports.ApprovalActionBar=Wh,exports.AssigneeAvatars=xc,exports.AuthGuard=bv,exports.BILLING_STATUS_FLOW=Ad,exports.BOOLEAN_API_KEYS=zm,exports.BOOLEAN_PARSEABLE_API_KEYS=Pm,exports.BULK_UPLOAD_DEFAULT_ACCEPT=Sc,exports.BULK_UPLOAD_DEFAULT_MAX_SIZE_MB=Cc,exports.Breadcrumb=e.t,exports.BulkUploadPage=vM,exports.BulkUploadPanel=jc,exports.CANDIDATES_URL=t.x,exports.CONTRACT_C2C=mg,exports.CONTRACT_W2=pg,exports.CURRENCY_SYMBOLS=zl,exports.CalendarCard=k,exports.CoreThemeAdminApp=Hw,exports.CoreThemeAdminRoutes=Vw,exports.CustomPagination=Ne,exports.DEFAULT_HOURS_POLICY=fh,exports.DayLogModal=Ih,exports.DescriptionBlock=Wc,exports.DetailHeaderCard=Nf,exports.DetailViewPage=Bf,exports.DetailViewV1=ku,exports.DocumentViewer=e.xn,exports.DynamicCards=At,exports.DynamicPopup=QE,exports.DynamicPopupRoute=_k,exports.DynamicTabs=N,exports.EditFormV1=Rp,exports.FIELD_TYPE_REGISTRY=_m,exports.FINANCE_APPROVAL_CONFIG=ag,exports.FINANCE_TYPE_CFO=Qh,exports.FINANCE_TYPE_ONBOARDING_MANAGER=Zh,exports.FINANCE_TYPE_ONBOARDING_MANAGER_REAPPROVE=tg,exports.FINANCE_TYPE_ONLY_FINANCE=$h,exports.FINANCE_TYPE_SUBMISSION_MANAGER=Xh,exports.FINANCE_TYPE_SUBMISSION_MANAGER_REAPPROVE=eg,exports.FileListCard=y_,exports.FinanceApprovalPanel=Qg,exports.FinanceAvatar=ff,exports.FinanceBadge=gf,exports.FinanceDayCell=Kh,exports.FinanceDivider=rf,exports.FinanceEmployeeCell=pf,exports.FinanceEmptyState=ef,exports.FinanceEquation=af,exports.FinanceHistoryTimeline=lf,exports.FinanceHoursGrid=$d,exports.FinanceKpiRow=Qd,exports.FinanceLine=nf,exports.FinanceListToolbar=dh,exports.FinanceMarginBadge=_f,exports.FinanceMoneyCell=hf,exports.FinanceRecordsTable=bf,exports.FinanceRowChevron=vf,exports.FinanceSection=tf,exports.FinanceStatusPill=Zd,exports.FinanceTextCell=mf,exports.FinanceTimesheetAnalysis=Jh,exports.FinanceWorkflowSteps=of,exports.HOURS_MESSAGES=ph,exports.Header=J_,exports.HierarchyUserFilter=Ft,exports.JOBS_URL=t.S,exports.LegacyAdminPage=gM,exports.ListView=Oo,exports.LmsHomePage=EM,exports.LmsTestForm=TM,exports.Login=Ov,exports.MailPopup=_T,exports.ManageModules=xM,exports.ManageSubmodules=SM,exports.ModuleRowActions=qp,exports.NotesPanel=Uh,exports.NotesTab=yc,exports.PAYROLL_STATUS_FLOW=jd,exports.POPUP_CONFIGS=rk,exports.ParamCardView=em,exports.ParamListView=om,exports.PeriodBadgeTag=Th,exports.PreviewPopup=JT,exports.ProjectSelect=ry,exports.ProofUploadPreview=Hh,exports.QuickLogBar=zh,exports.QuickLogSelectionBar=Lh,exports.RejectionReasonModal=Rh,exports.SUBMISSIONS_URL=t.w,exports.SearchBuilderV1=nh,exports.Sidebar=gv,exports.StatusBadge=ih,exports.StatusBadgeTag=wh,exports.StickyNotesFullPage=_M,exports.StylishDynamicTabs=oh,exports.TemplateEditor=ch,exports.TestForm=yM,exports.TestingHomePage=wM,exports.TimelineGroups=sc,exports.TimesheetDayCell=Nh,exports.TipTapEditor=e.Sn,exports.UserForm=Ak,exports.VendorShareDrawer=xk,exports.ViewSummaryWidget=wi,exports.WizardPopup=eE,exports.ZinnextTableView=CM,exports.ZinnextTestForm=bM,exports.appNow=e.En,exports.applyIntegrationStatus=e.Hn,exports.approveSubmission=he,exports.buildAcceptAttr=Oc,exports.buildBooleanRequest=Wm,exports.buildCsv=Gd,exports.buildDailyRows=zd,exports.buildDayGradient=jh,exports.buildRateHistoryEntries=zg,exports.buildWeeklyRollup=Hd,exports.clearSelectedProject=t.r,exports.colors=e.Tn,exports.computeFinance=jg,exports.computeHoursPolicy=yh,exports.computeMarginBand=Ud,exports.conditionMatches=e.i,exports.configureCoreTheme=t.T,exports.configuredFieldLabel=e.a,exports.createAllWorkflowsListFetcher=fM,exports.createMergedListFetcher=oM,exports.createModuleListFetchAdapter=$j,exports.createWorkflowStageListFetcher=sM,exports.currencySymbol=Bl,exports.defaultMergeRow=Gj,exports.deleteIntegrationConfig=e.$n,exports.deriveDayStats=Rd,exports.describeCapacity=xh,exports.downloadCsv=Yd,exports.evaluateShowIfWith=e.o,exports.findEmployerRow=Tg,exports.flattenGroups=Cg,exports.formatAmount=Kl,exports.formatApp=e.Dn,exports.formatAppDateTime=e.On,exports.formatFileSize=Dc,exports.formatFinanceMoney=Bg,exports.formatHours=xd,exports.formatMoney=ql,exports.formatPercent=Cd,exports.formatRate=Jl,exports.getActivity=e.cn,exports.getAllWorkflowsModuleList=pM,exports.getAppTimeZone=e.kn,exports.getApprovalDate=Dd,exports.getBgcIntegrationConfig=e.gr,exports.getBgcIntegrationSummary=e._r,exports.getBillingActionStates=Md,exports.getBooleanEligibleTypes=xm,exports.getCurrentRoleName=t.s,exports.getFieldLabel=qd,exports.getFieldType=ym,exports.getFileExtension=Ec,exports.getFinanceApprovalConfig=ug,exports.getFormGroupsRaw=c_,exports.getIntegrationConfig=e.Cr,exports.getIntegrationConfigs=e.wr,exports.getIntegrationSummary=e.Tr,exports.getModuleConfig=Ae,exports.getModuleDataDetail=e.un,exports.getPayrollActionStates=Nd,exports.getPeriodBadgeConfig=Me,exports.getSelectedProject=t.c,exports.getStoredToken=t.l,exports.getStoredUser=t.u,exports.getUserRoles=t.d,exports.getVMSApprove=ge,exports.getValueStyle=Jd,exports.getWorkflowStageModuleList=mM,exports.getWorkflowSteps=Pd,exports.humanizeEvent=Ed,Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return Zo}}),exports.indexFieldConfig=Kd,exports.initialsOf=wd,exports.insertTokenAtCursor=Rm,exports.isBooleanEligible=bm,exports.isBooleanParsable=Im,exports.isTester=t.f,exports.logout=t.m,exports.marginIncludesReferral=fg,exports.matchLocationTax=Ag,Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return Jf}}),exports.normalizeContract=Dg,Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Mc}}),exports.rateUnitLabel=Hl,exports.rateUnitShort=Wl,exports.reconcileHours=bh,exports.registerFieldType=vm,exports.rejectSubmission=_e,exports.resolveActivityMeta=fc,exports.resolveAndCompute=Mg,exports.resolveDayKind=_h,exports.resolveFinanceInputs=kg,exports.resolveMergeKey=Uj,exports.resolveMergedListKey=Uj,exports.resolveRejectionReason=dg,exports.resolveSubmissionFinance=l_,exports.saveBgcIntegrationConfig=e.qr,exports.saveIntegrationConfig=e.Xr,exports.setSelectedProject=t.g,exports.showIfConditions=e.c,exports.stageCountKey=cM,Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return kv}}),exports.testIntegrationConnection=e.ni,exports.toApp=e.jn,exports.toNumber=Gl,exports.tzLabel=e.Mn,exports.tzShortLabel=e.Nn,exports.useDropdownFields=Bn,exports.useDropdownValues=Ti,exports.useEditForm=b_,exports.useFieldConfig=Vn,exports.useFilterFields=Hn,exports.useMenuPermission=Zn,exports.useModuleActions=Bp,exports.useRecordRefresh=Lf,exports.validateBooleanQuery=Lm,exports.validateBulkFile=kc,exports.withAdminAppId=t.E,exports.withAppId=t.D,exports.withAuthGuard=iy;
12
+ `))}function AT(e){let t=e.match(/^([A-Za-z][A-Za-z&/ ]{1,28}?)\s*:\s*(\S.+)$/);if(!t)return null;let n=t[1].trim(),r=t[2].trim();return n.split(/\s+/).length>3||r.length>60?null:{fieldKey:n.toLowerCase().replace(/\s+/g,`-`),fieldLabel:TT(n),value:r}}function jT(e){let t=e.toLowerCase().replace(/[\s:.\-–—]+$/,``).trim();return xT.has(t)?ST.test(t)?`education`:CT.test(t)?`keySkills`:`overview`:null}function MT(e){let t=[],n={overview:[],keySkills:[],education:[]},r=`overview`;return e.forEach(e=>{let i=jT(e);if(i){r=i;return}if(r===`overview`){let n=AT(e);if(n){t.push(n);return}}n[r].push(e)}),{meta:t,overview:ET(n.overview),keySkills:ET(n.keySkills),education:ET(n.education)}}function NT(e){let t=[...bT].sort((e,t)=>t.length-e.length),n=RegExp(`\\b(${t.map(wT).join(`|`)})\\b\\s*:?`,`gi`),r=[...e.matchAll(n)];if(!r.length)return{meta:[],overview:ET(kT(e)),keySkills:[],education:[]};let i={overview:[],keySkills:[],education:[]},a=e.slice(0,r[0].index).trim();return a&&i.overview.push(...kT(a)),r.forEach((t,n)=>{let a=t[1].trim().toLowerCase(),o=t.index+t[0].length,s=n+1<r.length?r[n+1].index:e.length,c=kT(e.slice(o,s).trim());c.length&&i[ST.test(a)?`education`:CT.test(a)?`keySkills`:`overview`].push(...c)}),{meta:[],overview:ET(i.overview),keySkills:ET(i.keySkills),education:ET(i.education)}}function PT(e){let t=DT(e);if(!t)return{meta:[],overview:[],keySkills:[],education:[]};let n=OT(t);return n.length>=4?MT(n):NT(t)}function FT({items:e}){return(0,c.jsx)(`ul`,{className:`jdv-ats-bullets`,children:e.map((e,t)=>(0,c.jsx)(`li`,{className:`jdv-ats-bullet-item`,children:e},t))})}function IT({raw:e=``,meta:t=[]}){let[n,r]=(0,a.useState)(!1),i=(0,a.useMemo)(()=>PT(e),[e]),o=t.length?t:i.meta,s=[];if(i.overview.length&&s.push({key:`overview`,title:`Overview`,items:i.overview}),i.keySkills.length&&s.push({key:`keySkills`,title:`Key Skills`,items:i.keySkills,card:!0,icon:`🛠️`}),i.education.length&&s.push({key:`education`,title:`Education`,items:i.education,card:!0,icon:`🎓`}),!o.length&&!s.length)return(0,c.jsx)(vT,{type:`secondary`,children:`No description available.`});let l=n?s:s.slice(0,yT),u=s.length-yT;return(0,c.jsxs)(`div`,{className:`jdv-ats-desc`,children:[o.length>0&&(0,c.jsx)(`div`,{className:`jdv-ats-meta-grid`,children:o.map(({fieldKey:e,fieldLabel:t,value:n})=>(0,c.jsxs)(`div`,{className:`jdv-ats-meta-row`,children:[(0,c.jsx)(`span`,{className:`jdv-ats-meta-key`,children:t}),(0,c.jsx)(`span`,{className:`jdv-ats-meta-val`,children:n})]},e??t))}),(0,c.jsx)(`div`,{className:`jdv-ats-sections`,children:l.map(e=>e.card?(0,c.jsxs)(`div`,{className:`education-block`,children:[(0,c.jsxs)(`div`,{className:`education-header`,children:[(0,c.jsx)(`span`,{children:e.icon}),(0,c.jsx)(`span`,{children:e.title})]}),(0,c.jsx)(`ul`,{className:`education-list`,children:e.items.map((e,t)=>(0,c.jsx)(`li`,{className:`education-list-item`,children:e},t))})]},e.key):(0,c.jsxs)(`div`,{className:`jdv-ats-section`,children:[(0,c.jsx)(`div`,{className:`jdv-ats-section-hd`,children:(0,c.jsx)(`span`,{children:e.title})}),(0,c.jsx)(FT,{items:e.items})]},e.key))}),u>0&&(0,c.jsx)(`span`,{className:`jdv-desc-toggle`,onClick:()=>r(e=>!e),children:n?`Show less`:`Show more (${u} more section${u>1?`s`:``})`})]})}var{Text:LT}=o.Typography;function RT(e){return e?e.trim().split(/\s+/).slice(0,2).map(e=>e[0].toUpperCase()).join(``):`?`}function zT(e){return e?e.name?e.name:e.fullName?e.fullName:e.firstName||e.lastName?[e.firstName,e.lastName].filter(Boolean).join(` `):e.candidateName??e.clientName??e.jobTitle??``:``}function BT(e){return e?e.email??e.emailId??e.emailAddress??``:``}function VT(e){return e?e.status?e.status:e.stage?e.stage:typeof e.isActive==`boolean`?e.isActive?`Active`:`Inactive`:``:``}function HT(e){return e==null||e===``?`-`:typeof e==`string`?e:typeof e==`number`||typeof e==`boolean`?String(e):Array.isArray(e)?e.join(`, `):typeof e==`object`?e.label??e.name??Object.values(e).join(` `):String(e)}var UT=[`jobDescription`,`description`,`rawDescription`,`jobDescriptionText`];function WT(e){return String(e??``).toLowerCase()===`job`}function GT(e){let t=UT.includes(e.field),n=/description/i.test(e.label??``);return t||n}function KT({record:e}){let t=zT(e),n=BT(e),r=VT(e);return!t&&!n?null:(0,c.jsxs)(`div`,{className:`preview-profile-card`,children:[(0,c.jsxs)(`div`,{className:`preview-profile-card__info`,children:[(0,c.jsx)(o.Avatar,{className:`preview-profile-card__avatar`,children:RT(t)}),(0,c.jsxs)(`div`,{className:`preview-profile-card__text`,children:[t&&(0,c.jsx)(`span`,{className:`preview-profile-card__name`,children:t}),n&&(0,c.jsx)(`span`,{className:`preview-profile-card__email`,children:n})]})]}),r&&(0,c.jsx)(o.Tag,{className:`preview-profile-card__status`,children:r})]})}function qT({fields:t,moduleName:n,centralDocuments:r=[]}){let[i,o]=(0,a.useState)([]),[s,l]=(0,a.useState)(0),[u,d]=(0,a.useState)(!1);if(!t?.length)return null;function f(e){let t=String(e?.type??``).trim().toLowerCase(),n=`${e?.field??``} ${e?.label??``}`;return[`file`,`document`,`upload`].includes(t)||/resume|cv|document|attachment/i.test(n)}function p(e,t){o(e),l(t),d(!0)}return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(`div`,{className:`preview-field-grid`,children:t.map(t=>{let i=t.value,a=Array.isArray(i)&&i.length>0,o=WT(n)&&GT(t)&&typeof i==`string`&&i.trim(),s=f(t)?r.filter(e=>{let n=String(e?.fieldName??e?.field??e?.formField??e?.key??``).trim().toLowerCase(),r=String(t?.field??``).trim().toLowerCase();if(n&&r&&n===r)return!0;let i=`${t?.field??``} ${t?.label??``}`;return/resume|cv/i.test(i)?/resume|cv/i.test(`${n} ${e?.fileName??``} ${e?.name??``}`):!1}).map(e=>({name:e?.fileName||e?.name||e?.uploadedFileName||e?.originalName||t?.label||`Document`,url:e?.fileUrl||e?.downloadUrl||e?.signedUrl||e?.url||``,type:e?.mimeType||e?.contentType||e?.type})).filter(e=>e.url):[],l=f(t)?s.length?s:e.Ft(i).filter(e=>e.url):[];return l.length?(0,c.jsxs)(`div`,{className:`preview-field-card preview-field-card--documents`,children:[(0,c.jsx)(`span`,{className:`preview-field-card__label`,children:t.label}),(0,c.jsx)(`div`,{className:`preview-document-list`,children:l.map((e,t)=>(0,c.jsxs)(`button`,{type:`button`,className:`preview-document-link`,onClick:()=>p(l,t),title:`Preview ${e.name||`document`}`,children:[(0,c.jsx)(`span`,{className:`preview-document-link__icon`,"aria-hidden":`true`,children:`▣`}),(0,c.jsx)(`span`,{className:`preview-document-link__name`,children:e.name||`Document ${t+1}`}),(0,c.jsx)(`span`,{className:`preview-document-link__action`,children:`Preview`})]},`${e.url}-${t}`))})]},t.field??t.label):a?i.map((e,n)=>(0,c.jsxs)(`div`,{className:`preview-field-card`,children:[(0,c.jsxs)(`span`,{className:`preview-field-card__label`,children:[t.label,i.length>1?` (${n+1})`:``]}),(0,c.jsx)(`span`,{className:`preview-field-card__value`,children:HT(e)})]},`${t.field??t.label}-${n}`)):o?(0,c.jsxs)(`div`,{className:`preview-field-card preview-field-card--description`,children:[(0,c.jsx)(`span`,{className:`preview-field-card__label`,children:t.label}),(0,c.jsx)(`div`,{className:`preview-field-card__description`,children:(0,c.jsx)(IT,{raw:i})})]},t.field??t.label):(0,c.jsxs)(`div`,{className:`preview-field-card`,children:[(0,c.jsx)(`span`,{className:`preview-field-card__label`,children:t.label}),(0,c.jsx)(`span`,{className:`preview-field-card__value`,children:HT(i)})]},t.field??t.label)})}),(0,c.jsx)(e.xn,{documents:i,open:u,onClose:()=>d(!1),initialIndex:s})]})}function JT(){let t=(0,u.useNavigate)(),{moduleName:n=``,record:r=null}=(0,u.useLocation)().state??{},s=r?.id??r?._id,[l,d]=(0,a.useState)([]),[f,p]=(0,a.useState)(!!(n&&s)),[m,h]=(0,a.useState)(null),[g,_]=(0,a.useState)([]),[v,y]=(0,a.useState)(0),b=(0,a.useRef)(null),x=(0,a.useRef)(null),S=(0,a.useRef)([]),C=(0,a.useRef)([]);(0,a.useEffect)(()=>{if(!n||!s)return;let t=!1;return Promise.all([i.r({module:n,id:s}),e.mn(n,s).catch(()=>({data:[]}))]).then(([e,n])=>{t||(d(Array.isArray(e)?e:[]),_(Array.isArray(n)?n:n?.data??[]),p(!1))}).catch(e=>{t||(h(e.message||`Failed to load preview`),_([]),p(!1))}),()=>{t=!0}},[n,s]);function w(){t(-1)}function T(e,t){return e?.label??e?.name??`Section ${t+1}`}function E(e){let t=b.current,n=C.current[e];if(!t||!n)return;let r=t.getBoundingClientRect(),i=n.getBoundingClientRect(),a=(t.querySelector(`.preview-stepper-wrap`)?.offsetHeight??0)+12,o=t.scrollTop+i.top-r.top-a;y(e),t.scrollTo({top:Math.max(0,o),behavior:`smooth`})}function D(){let e=b.current;if(!e||!C.current.length)return;let t=e.getBoundingClientRect().top+(e.querySelector(`.preview-stepper-wrap`)?.offsetHeight??0)+24,n=0;C.current.forEach((e,r)=>{e&&e.getBoundingClientRect().top<=t&&(n=r)}),y(e=>e===n?e:n)}(0,a.useEffect)(()=>{let e=x.current,t=S.current[v];if(!e||!t)return;let n=t.offsetLeft-(e.clientWidth-t.offsetWidth)/2,r=Math.max(0,e.scrollWidth-e.clientWidth);e.scrollTo({left:Math.min(Math.max(0,n),r),behavior:`smooth`})},[v,l.length]);function O(){return l.length?(0,c.jsx)(`div`,{ref:x,className:`preview-stepper-wrap`,"aria-label":`Preview sections`,children:(0,c.jsx)(`div`,{className:`preview-stepper`,children:l.map((e,t)=>(0,c.jsxs)(`div`,{className:`preview-stepper__segment`,children:[(0,c.jsxs)(`button`,{type:`button`,className:`preview-stepper__item`,ref:e=>{S.current[t]=e},onClick:()=>E(t),"aria-current":v===t?`step`:void 0,title:`Go to ${T(e,t)}`,children:[(0,c.jsx)(`span`,{className:[`preview-stepper__circle`,t<v?`preview-stepper__circle--done`:``,t===v?`preview-stepper__circle--active`:``].filter(Boolean).join(` `),children:t+1}),(0,c.jsx)(`span`,{className:[`preview-stepper__label`,t===v?`preview-stepper__label--active`:``].filter(Boolean).join(` `),children:T(e,t)})]}),t<l.length-1&&(0,c.jsx)(`span`,{className:[`preview-stepper__line`,t<v?`preview-stepper__line--done`:``].filter(Boolean).join(` `),"aria-hidden":`true`})]},e.name??e.id??t))})}):null}let k=(0,c.jsxs)(`div`,{className:`preview-modal-header`,children:[(0,c.jsx)(`span`,{className:`preview-modal-module`,children:n.toUpperCase()}),(0,c.jsx)(`span`,{className:`preview-modal-title`,children:n?` Details`:`Preview`})]}),A=(0,c.jsx)(`div`,{className:`wizard-footer preview-scroll-footer`,children:(0,c.jsx)(`div`,{className:`wizard-footer-nav`,children:(0,c.jsx)(o.Button,{onClick:w,children:`Close`})})});function j(){return!n||!s?(0,c.jsx)(`div`,{className:`job-preview-content job-preview-status`,children:`Preview id is missing.`}):f?(0,c.jsx)(`div`,{className:`job-preview-content job-preview-status`,children:(0,c.jsx)(o.Spin,{size:`small`})}):m?(0,c.jsx)(`div`,{className:`job-preview-content job-preview-status job-preview-error`,children:m}):l.length?(0,c.jsx)(`div`,{className:`preview-section-list`,children:l.map((e,t)=>(0,c.jsxs)(`section`,{ref:e=>{C.current[t]=e},className:`preview-section-card`,"data-section-index":t,children:[(0,c.jsxs)(`div`,{className:`preview-section-card__header`,children:[(0,c.jsx)(`span`,{className:`preview-section-card__number`,children:t+1}),(0,c.jsx)(`span`,{className:`preview-section-card__title`,children:T(e,t)})]}),(0,c.jsx)(`div`,{className:`preview-section-card__body`,children:e.fields?.length>0?(0,c.jsx)(qT,{fields:e.fields,moduleName:n,centralDocuments:g}):(0,c.jsx)(LT,{type:`secondary`,children:`No fields in this group.`})})]},e.name??e.id??t))}):(0,c.jsx)(`div`,{className:`job-preview-content job-preview-status`,children:`No form groups found.`})}return(0,c.jsx)(o.Modal,{centered:!0,className:`wizard-modal preview-modal preview-scroll-modal`,footer:A,open:!0,title:k,width:`min(900px, calc(100vw - 32px))`,onCancel:w,maskClosable:!1,children:(0,c.jsxs)(`div`,{ref:b,className:`wizard-body preview-scroll-body`,onScroll:D,children:[!f&&!m&&l.length>0&&O(),r&&(0,c.jsx)(KT,{record:r}),j()]})})}var{Text:YT}=o.Typography,{TextArea:XT}=o.Input,ZT=[{key:`basic`,title:`Basic Info`,description:`General details`,fields:[{name:`firstName`,label:`First Name`,type:`input`,required:!0,placeholder:`Enter first name`,span:12},{name:`lastName`,label:`Last Name`,type:`input`,required:!0,placeholder:`Enter last name`,span:12},{name:`email`,label:`Email Address`,type:`input`,required:!0,placeholder:`Enter email address`,rules:[{type:`email`,message:`Please enter a valid email`}]},{name:`phone`,label:`Phone`,type:`input`,placeholder:`Enter phone number`}]},{key:`details`,title:`Details`,description:`Additional info`,fields:[{name:`role`,label:`Role`,type:`select`,required:!0,placeholder:`Select a role`,span:12,options:[{label:`Developer`,value:`developer`},{label:`Designer`,value:`designer`},{label:`Manager`,value:`manager`},{label:`Analyst`,value:`analyst`}]},{name:`department`,label:`Department`,type:`select`,placeholder:`Select department`,span:12,options:[{label:`Engineering`,value:`engineering`},{label:`Product`,value:`product`},{label:`Operations`,value:`operations`},{label:`Finance`,value:`finance`}]},{name:`notes`,label:`Notes`,type:`textarea`,placeholder:`Any additional notes...`}]},{key:`confirm`,title:`Confirm`,description:`Review & submit`,isReview:!0}];function QT(e){switch(e.type){case`select`:return(0,c.jsx)(o.Select,{placeholder:e.placeholder,options:e.options,style:{width:`100%`}});case`textarea`:return(0,c.jsx)(XT,{rows:3,placeholder:e.placeholder});case`number`:return(0,c.jsx)(o.InputNumber,{placeholder:e.placeholder,style:{width:`100%`}});default:return(0,c.jsx)(o.Input,{type:e.inputType||`text`,placeholder:e.placeholder})}}function $T({steps:e,form:t}){let n=t.getFieldsValue(),r=e.filter(e=>!e.isReview);return r.some(e=>(e.fields||[]).some(e=>n[e.name]!==void 0&&n[e.name]!==``))?(0,c.jsxs)(`div`,{className:`wizard-review-content`,children:[r.map(e=>(0,c.jsxs)(`div`,{className:`wizard-review-section`,children:[(0,c.jsx)(YT,{className:`wizard-review-section-title`,children:e.title}),(0,c.jsx)(`div`,{className:`wizard-review-grid`,children:(e.fields||[]).map(e=>{let t=n[e.name],r=t===void 0||t===``||t===null?`—`:String(t);return(0,c.jsxs)(`div`,{className:`wizard-review-row`,children:[(0,c.jsx)(`span`,{className:`wizard-review-label`,children:e.label}),(0,c.jsx)(`span`,{className:`wizard-review-separator`,children:`:`}),(0,c.jsx)(`span`,{className:`wizard-review-value`,children:r})]},e.name)})})]},e.key)),(0,c.jsxs)(`div`,{className:`wizard-review-confirm-note`,children:[(0,c.jsx)(s.CheckCircleOutlined,{className:`wizard-review-confirm-icon`}),(0,c.jsx)(YT,{type:`secondary`,children:`Please review the information above before submitting.`})]})]}):(0,c.jsx)(`div`,{className:`wizard-review-empty`,children:(0,c.jsx)(YT,{type:`secondary`,children:`No data entered yet.`})})}function eE(){let[e]=o.Form.useForm(),t=(0,u.useNavigate)(),{title:n=`Wizard`,moduleName:r=``,steps:i=ZT,onSubmit:s}=(0,u.useLocation)().state??{},[l,d]=(0,a.useState)(0),f=i[l],p=l===i.length-1,m=l===0;function h(){t(-1)}function g(){let t=(f.fields||[]).map(e=>e.name);e.validateFields(t.length>0?t:void 0).then(()=>{d(e=>e+1)})}function _(){d(e=>e-1)}function v(){let n=e.getFieldsValue();typeof s==`function`&&s(n),t(-1)}let y=i.map((e,t)=>({title:e.title,description:e.description,status:t<l?`finish`:t===l?`process`:`wait`}));return(0,c.jsxs)(o.Modal,{open:!0,title:r?`${n} — ${r}`:n,footer:(0,c.jsxs)(`div`,{className:`wizard-footer`,children:[(0,c.jsx)(o.Button,{onClick:h,children:`Cancel`}),(0,c.jsxs)(`div`,{className:`wizard-footer-nav`,children:[!m&&(0,c.jsx)(o.Button,{onClick:_,children:`Back`}),p?(0,c.jsx)(o.Button,{type:`primary`,onClick:v,children:`Submit`}):(0,c.jsx)(o.Button,{type:`primary`,onClick:g,children:`Next`})]})]}),onCancel:h,width:`min(680px, calc(100vw - 32px))`,centered:!0,className:`wizard-modal`,children:[(0,c.jsx)(`div`,{className:`wizard-steps-container`,children:(0,c.jsx)(o.Steps,{current:l,items:y,size:`small`,className:`wizard-steps`})}),(0,c.jsx)(`div`,{className:`wizard-body`,children:(0,c.jsxs)(o.Form,{form:e,layout:`vertical`,children:[i.filter(e=>!e.isReview).map((e,t)=>(0,c.jsx)(`div`,{style:{display:t===l?`block`:`none`},children:(0,c.jsx)(o.Row,{gutter:16,children:(e.fields||[]).map(e=>(0,c.jsx)(o.Col,{span:e.span||24,children:(0,c.jsx)(o.Form.Item,{name:e.name,label:e.label,rules:[...e.required?[{required:!0,message:`${e.label} is required`}]:[],...e.rules||[]],children:QT(e)})},e.name))})},e.key)),f.isReview&&(0,c.jsx)($T,{steps:i,form:e})]})})]})}function tE({titleText:e,titleIcon:t}){let n=t===`delete`;return(0,c.jsxs)(`span`,{className:`dynamic-popup__header`,children:[(0,c.jsx)(`span`,{className:`dynamic-popup__header-icon-box${n?` dynamic-popup__header-icon-box--danger`:``}`,children:n?(0,c.jsx)(s.DeleteOutlined,{}):(0,c.jsx)(s.AppstoreOutlined,{})}),(0,c.jsx)(`span`,{className:`dynamic-popup__header-label`,children:e})]})}function nE({note:t,description:n,showSelectedCount:r,count:i,itemLabel:a,bodyText:o,deleteError:s}){return(0,c.jsxs)(c.Fragment,{children:[t&&(0,c.jsx)(e.Cn,{variant:`body`,color:`secondary`,className:`dynamic-popup__note`,children:t}),n&&(0,c.jsx)(e.Cn,{variant:`body`,className:`dynamic-popup__description`,children:n}),r&&i>0&&(0,c.jsxs)(e.Cn,{variant:`body`,className:`dynamic-popup__selected-count`,children:[`Changing status for `,(0,c.jsx)(`strong`,{children:i}),` selected `,a,`.`]}),o&&(0,c.jsx)(e.Cn,{variant:`body`,children:o}),s&&(0,c.jsx)(e.Cn,{variant:`caption`,color:`danger`,className:`dynamic-popup__error`,children:s})]})}function rE({footerNote:t}){return t?(0,c.jsx)(e.Cn,{variant:`caption`,color:`secondary`,className:`dynamic-popup__footer-note`,children:t}):null}function iE(e,t){return e.replace(/\{(\w+)\}/g,(e,n)=>t?.[n]??``).trim()}function aE(e){return String(e).replace(/\(\s*\)/g,``).replace(/\s+/g,` `).replace(/(^|\s)([-–—·|])(?=\s*\2)/g,``).replace(/^[\s\-–—·|]+/,``).replace(/[\s\-–—·|]+$/,``).trim()}function oE(e){if(!e)return!1;let t=new Date(e).getTime();return Number.isNaN(t)||t<=0?!1:t<=Date.now()+864e5}function sE(e){if(!oE(e))return``;let t=new Date(e),n=e=>new Date(e.getFullYear(),e.getMonth(),e.getDate()),r=new Date,i=Math.round((n(r)-n(t))/864e5);if(i<=0)return`Today`;if(i===1)return`Yesterday`;if(i<=30)return`${i} days ago`;let a=(r.getFullYear()-t.getFullYear())*12+(r.getMonth()-t.getMonth());if(r.getDate()<t.getDate()&&--a,a=Math.max(1,a),a<12)return`${a} month${a===1?``:`s`} ago`;let o=Math.floor(a/12);return`${o} year${o===1?``:`s`} ago`}function cE(e){let t=Array.isArray(e?.submissionHistory)?e.submissionHistory:[],n=[e?.lastSubmittedAt,e?.submittedAt,e?.updatedAt,...t.map(e=>e?.submittedAt||e?.updatedAt)].filter(Boolean);return n.length?n.reduce((e,t)=>new Date(t)>new Date(e)?t:e):null}function lE(e){let t=Array.isArray(e?.submissionHistory)?e.submissionHistory:[],n=[e?.lastSubmittedAt,e?.submittedAt,...t.map(e=>e?.submittedAt)].filter(Boolean);return n.length?n.reduce((e,t)=>new Date(t)>new Date(e)?t:e):null}function uE(e,t){if(typeof e==`string`)return{label:e,value:e};if(e?.label!==void 0&&e?.value!==void 0&&!t?.labelTemplate&&!t?.valueKey)return e;let{labelKey:n,valueKey:r,labelTemplate:i}=t??{},a=i?.includes(`{lastdate}`)?{...e,lastdate:sE(cE(e))}:e,o=(i?aE(iE(i,a)):null)||(n?e?.[n]:null)||e?.name||e?.fullName||e?.candidateName||e?.title||e?.displayName||e?.text||e?.applicantReferenceId||e?.applicantRefrenceId||String(Object.values(e||{})[0]??``),s=(r?e?.[r]:null)??e?.id??e?._id??e?.applicantReferenceId??e?.applicantRefrenceId??String(Object.values(e||{})[0]??``),c=e?.disabled===!0||e?.disable===!0,l=String(e?.optionNote??``).trim(),u={label:l?`${String(o)} — ${l}`:String(o),value:String(s),_raw:e};if(c&&(u.disabled=!0),l&&(u.title=l),e?.isSubmitted===!0||e?.alreadySubmitted===!0){u.alreadySubmitted=!0,u.existingSubmissionId=String(e?.existingSubmissionId??e?.jobSubmissionId??e?.submissionId??``);let t=e?.submittedAt||lE(e);t&&(u.submittedAt=t)}if(e?.isFromSubmission===!0&&e?.submissionId){u.isFromSubmission=!0,u.priorSubmissionId=String(e.submissionId);let t=e?.lastSubmittedAt||lE(e);t&&(u.priorSubmittedAt=t)}return u}function dE(e,t){return(t?.[e.optionsKey]??e.defaultOptions??[]).map(t=>uE(t,e))}function fE(e={}){return{selectedIds:[],selectedRecords:[],moduleName:``,removedIds:[],...e}}var pE=`DD MMM YYYY`,mE=`DD MMM YYYY, h:mm A`;function hE(e,t){if(e==null||e===``)return``;let n=(0,l.default)(e);return n.isValid()?t===`relative`?sE(e)||(oE(e)?n.format(pE):`Not updated`):oE(e)?n.format(pE):``:String(e)}function gE(e,t){return e?String(e).includes(`{`)?aE(iE(e,t)):String(t?.[e]??e).trim():``}function _E(e){if(e?.alreadySubmitted){let t=e?.submittedAt?(0,l.default)(e.submittedAt):null;return{tone:`blocked`,tooltip:t?.isValid()?`Already submitted to this job on ${t.format(mE)}`:`Already submitted to this job — a candidate can only be submitted once per job`}}if(e?.isFromSubmission){let t=e?.priorSubmittedAt?(0,l.default)(e.priorSubmittedAt):null;return{tone:`history`,tooltip:t?.isValid()?`Previously submitted on ${t.format(mE)} — this form will prefill from it`:`Submitted to another job before — this form will prefill from it`}}return null}function vE(e,t){return e?.alreadySubmitted||!e?.disabled?``:String(t?.message??e?.title??``).trim()}function yE({meta:e}){return(0,c.jsx)(`div`,{className:`dynamic-popup__option-dates`,children:e.map(e=>(0,c.jsxs)(a.Fragment,{children:[(0,c.jsx)(`span`,{className:`dynamic-popup__option-date-label`,children:e.label}),(0,c.jsx)(`span`,{className:`dynamic-popup__option-date-value`,children:e.text})]},e.label))})}function bE({option:e,layout:t}){let n=e?._raw??e??{},r=gE(t.id,n),i=gE(t.title,n)||String(e?.label??``),a=gE(t.subtitle,n),l=gE(t.titleAccent?.key,n),u=gE(t.titleAccent?.toneKey,n),d=t.titleAccent?.prefix??``,f=(t.meta??[]).map(e=>({label:e.label,text:hE(n?.[e.key],e.type)})).filter(e=>e.text),p=vE(e,n),m=_E(e);return(0,c.jsxs)(`div`,{className:`dynamic-popup__option`,children:[(0,c.jsx)(`span`,{className:`dynamic-popup__option-tick${m?` dynamic-popup__option-tick--${m.tone}`:``}`,children:m&&(0,c.jsx)(o.Tooltip,{title:m.tooltip,placement:`topLeft`,children:(0,c.jsx)(s.CheckCircleFilled,{"aria-label":m.tooltip})})}),(0,c.jsxs)(`div`,{className:`dynamic-popup__option-main`,children:[(0,c.jsxs)(`div`,{className:`dynamic-popup__option-head`,children:[r&&(0,c.jsx)(`span`,{className:`dynamic-popup__option-id`,children:r}),(0,c.jsxs)(`span`,{className:`dynamic-popup__option-title`,children:[(0,c.jsx)(`span`,{className:`dynamic-popup__option-title-text`,children:i}),l&&(0,c.jsx)(`span`,{className:`dynamic-popup__option-title-accent${u?` dynamic-popup__option-title-accent--${u}`:``}`,children:`${d}${l}`})]}),p&&(0,c.jsx)(`span`,{className:`dynamic-popup__option-flag`,children:p})]}),a&&(0,c.jsx)(`div`,{className:`dynamic-popup__option-sub`,children:a})]}),e?.alreadySubmitted?(0,c.jsx)(`span`,{className:`dynamic-popup__option-onjob`,children:`On this job`}):f.length>0&&(0,c.jsx)(yE,{meta:f})]})}var{Text:xE}=o.Typography,{TextArea:SE}=o.Input,CE=[{label:`$`,value:`$`},{label:`EUR`,value:`EUR`},{label:`GBP`,value:`GBP`},{label:`INR`,value:`INR`}],wE=[{label:`Hourly`,value:`Hourly`},{label:`Daily`,value:`Daily`},{label:`Weekly`,value:`Weekly`},{label:`Monthly`,value:`Monthly`},{label:`Yearly`,value:`Yearly`}];function TE(e=[]){return e.map(e=>{if(!e||typeof e!=`object`)return e;let t=[e.value,e.user_id,e.userId,e.USER_ID,e.legacyUserId,e.id,e._id].find(e=>e!=null&&String(e).trim()!==``),n=t==null?``:String(t).trim();return{...e,value:n}}).filter(e=>typeof e!=`object`||!e||String(e.value??``).trim()!==``)}function EE({field:e,value:t,onChange:n}){return(0,c.jsx)(o.Input,{value:t,onChange:n,placeholder:e.placeholder,maxLength:e.maxLength,prefix:(0,c.jsx)(s.CrownOutlined,{})})}function DE({field:e,value:t,onChange:n}){return(0,c.jsx)(SE,{value:t,onChange:n,rows:e.rows??5,placeholder:e.placeholder})}function OE({field:e,options:t,value:n,onChange:r}){return(0,c.jsx)(o.Select,{showSearch:!0,value:n,onChange:r,options:TE(t),placeholder:e.placeholder,className:`dynamic-popup__field-select`,optionFilterProp:`label`,prefix:(0,c.jsx)(s.CrownOutlined,{})})}function kE({field:e,options:t,value:n,onChange:r}){return(0,c.jsx)(o.Select,{mode:`multiple`,showSearch:!0,value:n,onChange:r,options:TE(t),placeholder:e.placeholder,className:`dynamic-popup__field-select`,optionFilterProp:`label`,prefix:(0,c.jsx)(s.CrownOutlined,{})})}function AE({field:e,options:t,onSearch:n,value:r,onChange:i,popupContext:a}){let l=TE(t),u=e.optionLayout,d=new Map(l.map(e=>[String(e?.value??``),e]));async function f(t,n){let r=n??d.get(String(t??``));typeof e.onSelectGuard==`function`&&await e.onSelectGuard({value:t,option:r,field:e,popupContext:a,confirm:o.Modal.confirm})===!1||i?.(t)}return(0,c.jsx)(o.Select,{showSearch:!0,filterOption:!1,notFoundContent:e.notFoundContent??null,value:r,onChange:f,options:l,placeholder:e.placeholder,onSearch:n,className:`dynamic-popup__field-select${u?` dynamic-popup__field-select--rich`:``}`,popupClassName:u?`dynamic-popup__option-dropdown`:void 0,listHeight:u?340:void 0,optionLabelProp:`label`,optionRender:u?e=>(0,c.jsx)(bE,{option:e?.data??e,layout:u}):void 0,prefix:(0,c.jsx)(s.CrownOutlined,{})})}function jE({field:e,mentionOpts:t,onMentionSearch:n,value:r,onChange:i}){return(0,c.jsx)(o.Mentions,{value:r,onChange:i,rows:e.rows??5,placeholder:e.placeholder,prefix:`@`,options:t,onSearch:n,className:`dynamic-popup__mention-textarea`})}function ME({field:e={},value:t={},onChange:n}){let r=t.period??`Hourly`,i=t.isRange??!1;function s(e){n?.({...t,...e})}(0,a.useEffect)(()=>{let e={};t.currency??(e.currency=`$`),t.period??(e.period=`Hourly`),Object.keys(e).length&&n?.({...t,...e})},[]);let l=Number(i?t.maxAmount:t.amount),u=i&&t.minAmount!=null&&t.maxAmount!=null&&Number(t.maxAmount)<=Number(t.minAmount),d=e.rateCeiling!=null&&Number.isFinite(l)&&l>Number(e.rateCeiling);return(0,c.jsxs)(`div`,{children:[(0,c.jsxs)(o.Space.Compact,{style:{width:`100%`},children:[i?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.InputNumber,{controls:!1,placeholder:`From`,value:t.minAmount,onChange:e=>s({minAmount:e}),style:{flex:1}}),(0,c.jsx)(o.InputNumber,{controls:!1,placeholder:`To`,value:t.maxAmount,onChange:e=>s({maxAmount:e}),style:{flex:1}})]}):(0,c.jsx)(o.InputNumber,{controls:!1,placeholder:`0`,value:t.amount,onChange:e=>s({amount:e}),style:{flex:2}}),(0,c.jsx)(o.Select,{value:t.currency??`$`,options:CE,onChange:e=>s({currency:e}),style:{width:80}}),(0,c.jsx)(o.Select,{value:r,options:wE,onChange:e=>s({period:e}),style:{width:110}})]}),(u||d)&&(0,c.jsxs)(`div`,{style:{marginTop:4},children:[u&&(0,c.jsx)(xE,{type:`danger`,style:{fontSize:12,display:`block`},children:`To rate must be greater than From rate.`}),d&&(0,c.jsxs)(xE,{type:`danger`,style:{fontSize:12,display:`block`},children:[`Rate must not exceed the client rate (`,e.rateCeiling,`).`]})]}),(0,c.jsxs)(o.Space,{size:`small`,style:{marginTop:8},children:[(0,c.jsx)(o.Switch,{checked:i,onChange:e=>s({isRange:e})}),(0,c.jsx)(`span`,{children:`Range`})]})]})}function NE({field:e,value:t,onChange:n}){return(0,c.jsx)(o.DatePicker,{value:t,onChange:n,placeholder:e.placeholder??`Select date`,style:{width:`100%`},format:`YYYY-MM-DD`})}function PE({field:e,checked:t,onChange:n}){return(0,c.jsx)(o.Checkbox,{checked:t,onChange:n,children:e.checkboxLabel})}function FE({field:e,value:t,onChange:n}){return(0,c.jsx)(o.InputNumber,{value:t,onChange:n,min:e.min,max:e.max,placeholder:e.placeholder,style:{width:`100%`}})}function IE({options:e,value:t,onChange:n}){return(0,c.jsx)(o.Radio.Group,{value:t,onChange:n,options:e})}var LE={input:EE,text:EE,textarea:DE,select:OE,"multi-select":kE,"search-select":AE,"mention-textarea":jE,"candidate-rate":ME,"priority-checkbox":PE,"date-picker":NE,number:FE,radio:IE};function RE(e){return e===`priority-checkbox`?{valuePropName:`checked`}:{}}var zE=new Set([`input`,`text`,`textarea`,`mention-textarea`]);function BE({form:t,fields:n,initialValues:r,dynamicOptions:i,popupContext:a,extraData:s,removedIds:l,setRemovedIds:u,showAlreadyAssigned:d,onValuesChange:f,getSearchHandler:p,getMentionSearchHandler:m,mentionOptions:h}){let g=(s?.recruitersData??[]).filter(e=>{let t=String(e?.user_id??e?.id??e?.userId??``);return t&&!l.includes(t)}),_=d&&s;return!n.length&&!_?null:(0,c.jsxs)(c.Fragment,{children:[_&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`dynamic-popup__already-assigned`,children:[(0,c.jsx)(e.Cn,{variant:`caption`,color:`secondary`,children:`Already Assigned People`}),(0,c.jsx)(`div`,{style:{marginTop:6,display:`flex`,flexWrap:`wrap`,gap:6},children:g.length===0?(0,c.jsx)(e.Cn,{variant:`caption`,color:`secondary`,children:`No one is currently assigned to this job.`}):g.map(e=>{let t=String(e?.user_id??e?.id??e?.userId??``),n=e?.name??e?.user_name??e?.userName??e?.email??`Assigned user`;return(0,c.jsx)(o.Tag,{closable:!0,onClose:()=>{t&&u(e=>Array.from(new Set([...e,t])))},children:n},t||n)})})]}),(0,c.jsx)(o.Divider,{style:{margin:`12px 0`}})]}),n.length>0&&(0,c.jsx)(o.Form,{form:t,layout:`vertical`,initialValues:r,onValuesChange:(e,t)=>f(t),children:VE(n).map(t=>HE(t,t=>{let n=i[t.name]??dE(t,a),r=p(t),s=m(t),l=h[t.name]??[],u=RE(t.type),d=LE[t.type],f=[];return t.required&&f.push({required:!0,message:`${t.label||`This field`} is required`}),typeof t.validator==`function`&&f.push({validator:(e,n)=>{let r=t.validator(n,a);return r?Promise.reject(Error(r)):Promise.resolve()}}),zE.has(t.type)&&f.push(e.rn({label:t.label,field:t.name,type:t.type})),(0,c.jsx)(o.Form.Item,{name:t.name,label:t.label,rules:f,...u,children:d?(0,c.jsx)(d,{field:t,options:n,onSearch:r,mentionOpts:l,onMentionSearch:s,popupContext:a}):null},t.name)}))})]})}function VE(e){let t=[];for(let n of e){let e=t[t.length-1];n.inlineRow&&e?.inlineRow===n.inlineRow?e.fields.push(n):t.push({inlineRow:n.inlineRow,fields:[n]})}return t.map(e=>e.fields)}function HE(e,t){return e.length===1?t(e[0]):(0,c.jsx)(`div`,{style:{display:`flex`,gap:8,alignItems:`flex-start`},children:e.map((e,n)=>(0,c.jsx)(`div`,{style:{flex:n===0?2:1,minWidth:0},children:t(e)},e.name))},`row-${e.map(e=>e.name).join(`-`)}`)}function UE(e){return[`select`,`multi-select`,`search-select`,`radio`].includes(e?.type)&&e?.dataSource===`master`&&e?.masterName}function WE(e){let t=e?.data??e;return Array.isArray(t)?t:Array.isArray(t?.data)?t.data:Array.isArray(t?.items)?t.items:Array.isArray(t?.rows)?t.rows:Array.isArray(t?.records)?t.records:[]}function GE(e){let t=String(e?.masterName??``).trim().toLowerCase();return t===`clientsubmissions`||t===`clientsubmissionstatus`}function KE(e){return GE(e)?{...e,labelKey:e.labelKey||`clientSubmissionStatusText`,valueKey:e.valueKey||`clientSubmissionStatusText`}:e}function qE(e,t){let n=uE(e,KE(t));return GE(t)?{...n,value:String(n.label??``)}:n}function JE({open:e,config:n,api:r,fields:i,popupContext:o,formValues:s}){let[c,l]=(0,a.useState)({}),[u,d]=(0,a.useState)(null);return(0,a.useEffect)(()=>{e||(l({}),d(null))},[e]),(0,a.useEffect)(()=>{if(!e||!n||!r.getOptions)return;let t=new AbortController;return i.forEach(e=>{!e.fetchOptionsKey||e.fetchOptionsParamKey||Promise.resolve(r.getOptions(e,void 0,o)).then(n=>{t.signal.aborted||l(t=>({...t,[e.name]:n}))}).catch(n=>{t.signal.aborted||console.error(`[DynamicPopup] Failed to load options for field "${e.name}":`,n)})}),()=>t.abort()},[e,r,n,i,o]),(0,a.useEffect)(()=>{if(!e||!n)return;let r=i.filter(UE);if(!r.length)return;let a=new AbortController;return r.forEach(e=>{t.a(t.b,`/masters/dropdown?${new URLSearchParams({masterName:e.masterName,offset:`0`,limit:String(e.limit??50)}).toString()}`).then(t=>{if(a.signal.aborted)return;let n=WE(t).map(t=>qE(t,e));l(t=>({...t,[e.name]:n}))}).catch(t=>{a.signal.aborted||console.error(`[DynamicPopup] Failed to load master options for field "${e.name}":`,t)})}),()=>a.abort()},[e,n,i]),(0,a.useEffect)(()=>{if(!e||!n||!r.getOptions)return;let t=i.filter(e=>e.fetchOptionsKey&&e.fetchOptionsParamKey);if(!t.length)return;let a=new AbortController;return t.forEach(e=>{let t=s[e.fetchOptionsParamKey]??o[e.fetchOptionsParamKey],n={[e.fetchOptionsParamKey]:t};Promise.resolve(r.getOptions(e,n,o)).then(t=>{a.signal.aborted||l(n=>({...n,[e.name]:t}))}).catch(t=>{a.signal.aborted||console.error(`[DynamicPopup] Failed to load param-dependent options for "${e.name}":`,t)})}),()=>a.abort()},[e,r,n,i,s,o]),(0,a.useEffect)(()=>{if(!e||!n||!r.loadExtraData)return;let t=new AbortController;return Promise.resolve(r.loadExtraData(o)).then(e=>{t.signal.aborted||d(e)}).catch(e=>{t.signal.aborted||(console.error(`[DynamicPopup] Failed to load extra data:`,e),d(null))}),()=>t.abort()},[e,r,n,o]),{dynamicOptions:c,setDynamicOptions:l,extraData:u}}var YE=500,XE=3;function ZE({api:e,open:t,fields:n=[],popupContext:r,setDynamicOptions:i}){let[o,s]=(0,a.useState)({}),c=(0,a.useRef)({}),l=(0,a.useRef)({}),u=(0,a.useRef)({}),d=(0,a.useCallback)((t,n)=>{let a=e.searchOptions??e.searchFetcher;if(typeof a!=`function`)return;l.current[t.name]?.abort();let o=new AbortController;return l.current[t.name]=o,Promise.resolve(a(t,n,r)).then(e=>{if(o.signal.aborted)return;let n=Array.isArray(e)?e:e?.items??e?.list??[];i(e=>({...e,[t.name]:n.map(e=>uE(e,t))}))}).catch(e=>{o.signal.aborted||console.error(`[DynamicPopup] Search failed for field "${t.name}":`,e)}),o},[e,r,i]),f=n.filter(e=>(e.searchFetchKey||e.searchFetcher)&&e.preloadOptions!==!1),p=f.map(e=>e.name).join(`|`),m=(0,a.useRef)({runSearch:d,preloadFields:f});(0,a.useEffect)(()=>{m.current={runSearch:d,preloadFields:f}}),(0,a.useEffect)(()=>{if(!t||!p)return;let{runSearch:e,preloadFields:n}=m.current,r=n.map(t=>e(t,``)).filter(Boolean);return()=>r.forEach(e=>e.abort())},[t,p]);function h(t){if(!t.searchFetchKey&&!t.searchFetcher||typeof(e.searchOptions??e.searchFetcher)!=`function`)return;let n=t.searchMinLength??XE;return e=>{clearTimeout(c.current[t.name]);let r=e.length<n?``:e;c.current[t.name]=setTimeout(()=>{d(t,r)},YE)}}function g(t){let n=e.getMentionOptions??e.mentionFetcher;if(typeof n==`function`)return e=>{u.current[t.name]?.abort();let i=new AbortController;u.current[t.name]=i,Promise.resolve(n(t,e,r)).then(e=>{if(i.signal.aborted)return;let n=Array.isArray(e)?e:e?.items??e?.list??[];s(e=>({...e,[t.name]:n.map(e=>({value:e.user_name??e.userName??e.username??String(e),label:e.user_name??e.userName??e.username??String(e)}))}))}).catch(e=>{i.signal.aborted||console.error(`[DynamicPopup] Mention search failed for field "${t.name}":`,e)})}}return{mentionOptions:o,getSearchHandler:h,getMentionSearchHandler:g}}function QE({form:e,config:t,api:n,popupContext:r,resolvedIds:i,dynamicOptions:s,extraData:c,removedIds:l,fields:u,onClose:d,onSubmit:f}){let[p,m]=(0,a.useState)(!1),[h,g]=(0,a.useState)(null);async function _(e){let t={resolvedIds:i,dynamicOptions:s,extraData:c,removedIds:l};if(typeof n.submit==`function`)return n.submit(e,r,t);if(typeof f==`function`)return f(e,r,t)}function v(){if(t){if(!u.length){if(t.mode===`delete`&&typeof n.deleteItems==`function`){m(!0),g(null),Promise.resolve(n.deleteItems(i,r)).then(()=>{o.message.success(t.successMessage||`Deleted successfully`),d({success:!0})}).catch(e=>{let t=e?.message||`Delete failed. Please try again.`;g(t),m(!1),o.message.error(t)});return}if(typeof n.onOk==`function`){m(!0),Promise.resolve(n.onOk(r)).then(()=>d({success:!0})).catch(e=>{let t=e?.message||`Failed. Please try again.`;o.message.error(t),m(!1)});return}if(typeof n.submit==`function`){m(!0),Promise.resolve(_({})).then(e=>{e?.navigated||(o.message.success(t.successMessage||`Saved successfully`),d({success:!0}))}).catch(e=>{o.message.error(e?.message||`Failed. Please try again.`)}).finally(()=>m(!1));return}d();return}e.validateFields().then(async e=>{m(!0);try{if((await _(e))?.navigated)return;o.message.success(t.successMessage||`Saved successfully`),d({success:!0})}catch(e){o.message.error(e?.message||`Failed. Please try again.`)}finally{m(!1)}}).catch(()=>{})}}function y(){m(!1),g(null)}return{handleOk:v,confirming:p,deleteError:h,resetSubmitState:y}}function $E({open:e=!0,config:t,context:n={},onClose:r,onSubmit:i,api:s={}}){let[u]=o.Form.useForm(),[d,f]=(0,a.useState)({}),[p,m]=(0,a.useState)([]),h=o.Form.useWatch([],u,{preserve:!0})??{},g=(0,a.useMemo)(()=>fE(n),[n]),{selectedIds:_=[],selectedRecords:v=[],moduleName:y=``}=g,b=(0,a.useMemo)(()=>_.map((e,t)=>{let n=v[t];return n?.id??n?._id??e}),[_,v]),x=(0,a.useMemo)(()=>t?typeof t.getFields==`function`?t.getFields(g):t.fields??[]:[],[t,g]),S=(0,a.useMemo)(()=>{let e={};return x.forEach(t=>{let n=g[t.initialValueKey];!t.initialValueKey||n===void 0||(e[t.name]=t.type===`date-picker`?(0,l.default)(n):n)}),e},[x,g]),{dynamicOptions:C,setDynamicOptions:w,extraData:T}=JE({open:e,config:t,api:s,fields:x,popupContext:g,formValues:d}),{mentionOptions:E,getSearchHandler:D,getMentionSearchHandler:O}=ZE({api:s,open:e,fields:x,popupContext:g,setDynamicOptions:w});function k(e){typeof r==`function`&&r(e)}let{handleOk:A,confirming:j,deleteError:M,resetSubmitState:N}=QE({form:u,config:t,api:s,popupContext:g,resolvedIds:b,dynamicOptions:C,extraData:T,removedIds:p,fields:x,onClose:k,onSubmit:i});(0,a.useEffect)(()=>{e&&(u.resetFields(),f(S??{}),m(g.removedIds??[]),N())},[e,S]);let P=!!t?.autoSubmitWhenNoFields&&x.length===0;(0,a.useEffect)(()=>{!e||!P||A()},[e,P]);let F=_.length,I=String(y).replace(/s$/i,``),L=F===1?I:y,R=v[0]??{},z=t?.getTitleText?t.getTitleText(F,L,R,g):t?.title,B=F===1?R.jobTitle??R.title??R.name??R.fullName??R.candidateName??null:null,ee=t?.getBodyText?t.getBodyText(F,I,L,B,g):t?.bodyText??null,V=typeof t?.getNote==`function`?t.getNote(g):t?.note,H=x.filter(e=>e.required).every(e=>{let t=h[e.name];return!(t==null||t===``||Array.isArray(t)&&t.length===0||typeof t==`object`&&!Array.isArray(t)&&Object.keys(t).length===0)}),U=t?.disabledUntilFilled&&!H;if(!t||!e||P)return null;let te=t.component;return te?(0,c.jsx)(o.Modal,{open:e,title:t.title||t.getTitleText?(0,c.jsx)(tE,{titleText:z,titleIcon:t.titleIcon}):null,footer:null,width:t.width??760,centered:!0,maskClosable:!1,onCancel:()=>k(),className:`dynamic-popup${t.className?` ${t.className}`:``}`,children:(0,c.jsx)(te,{context:g,selectedIds:b,selectedRecords:v,moduleName:y,onClose:k})}):(0,c.jsxs)(o.Modal,{open:e,title:(0,c.jsx)(tE,{titleText:z,titleIcon:t.titleIcon}),okText:t.okText||`OK`,cancelText:t.cancelText??`Cancel`,onOk:A,onCancel:()=>k(),okButtonProps:{danger:t.okButtonDanger,disabled:U,loading:j},cancelButtonProps:{disabled:j},closable:!j,maskClosable:!1,width:t.width??480,centered:!0,className:`dynamic-popup${t.className?` ${t.className}`:``}`,children:[(0,c.jsx)(nE,{note:V,description:t.description,showSelectedCount:t.showSelectedCount,count:F,itemLabel:L,bodyText:ee,deleteError:M}),(0,c.jsx)(rE,{footerNote:t.footerNote}),(0,c.jsx)(BE,{form:u,fields:x,initialValues:S,dynamicOptions:C,popupContext:g,extraData:T,removedIds:p,setRemovedIds:m,showAlreadyAssigned:t.showAlreadyAssigned,onValuesChange:f,getSearchHandler:D,getMentionSearchHandler:O,mentionOptions:E})]})}var eD={mode:`delete`,getTitleText:(e,t)=>`Delete ${e>0?`${e} `:``}${t}`,titleIcon:`delete`,okText:`Delete`,okButtonDanger:!0,width:420,getBodyText:(e,t,n,r)=>r?`Are you sure you want to delete the ${r} ${t}?`:e>1?`Are you sure you want to delete ${e} selected ${n}?`:`Are you sure you want to delete this ${t}?`,footerNote:`This action cannot be undone.`,fields:[]},tD={deleteItems:async(e,t)=>{await H(t.moduleName,e)}},nD=new Map;async function rD(e){return e?(nD.has(e)||nD.set(e,i.r({module:e}).catch(t=>(nD.delete(e),console.warn(`[in-progress gate] could not read ${e} form groups:`,t),[]))),nD.get(e)):[]}function iD(t=[],n){return t.some(t=>{let r=e.C(t,n);return r&&r.severity!==`allow`})}async function aD({targetModule:t,sourceModule:n,recordId:r,region:a}={}){let o={severity:`allow`,message:``,group:null};if(!t||!n||!r)return o;let s=a??e.Ln().region;try{let a=await rD(t);if(!iD(a,s))return o;let c=await i.r({module:n,id:r}),l={};for(let e of c){let t=e?.payloadKey||e?.name;t&&Array.isArray(e?.rows)&&(l[t]=e.rows)}return e.D(a,s,l)}catch(e){return console.warn(`[in-progress gate] check skipped:`,e),o}}var oD=`Already submitted`,sD=`submissions`,cD=`candidates`,lD=1440*60*1e3,uD=90,dD=`This candidate was created or last updated more than 90 days ago. Only candidates created or updated within the last 90 days can be selected. Please update this candidate first.`,fD=[`createdAt`,`createdDate`,`dateCreated`,`created_on`,`createdOn`],pD=[`updatedAt`,`updatedDate`,`lastUpdatedAt`,`lastUpdatedDate`,`modifiedAt`,`modifiedDate`];function mD(e,t){for(let n of t){let t=e?.[n];if(!t)continue;let r=new Date(t);if(!Number.isNaN(r.getTime()))return r}return null}function hD(e){return mD(e,fD)}function gD(e){return mD(e,pD)}function _D(e){if(!(e instanceof Date)||Number.isNaN(e.getTime()))return null;let t=e=>new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime();return Math.max(0,Math.floor((t(new Date)-t(e))/lD))}function vD(e){return e===null?``:e<=14?`green`:e<=89?`yellow`:`red`}function yD(e,t=uD){if(!e)return!1;let n=Date.now()-t*lD,r=hD(e),i=gD(e),a=r&&r.getTime()>=n,o=i&&i.getTime()>=n;return!a&&!o}function bD(e){let t=hD(e);if(!t)return{createdAgo:``,createdAgoTone:``};let n=sE(t);return n?{createdAgo:n,createdAgoTone:vD(_D(t))}:{createdAgo:``,createdAgoTone:``}}function xD(e){return{...e,...bD(e),isStaleCandidate:yD(e)}}function SD(e){return String(e?.applicantId??e?._id??e?.id??``)}var CD=null;async function wD(){return CD||=e.jr(cD).then(e=>e?.strategies?.duplicateCheck?.editRoute??``).catch(()=>``),CD}async function TD(e){let t=SD(e);if(!t)return``;let n=await wD();return n?n.replace(/:(_?id)\b/g,encodeURIComponent(t)):``}async function ED({option:e,popupContext:t,confirm:n}){let r=e?._raw??e??{},i=SD(r);if(i){let e=await aD({targetModule:sD,sourceModule:cD,recordId:i});if(e.severity===`block`)return new Promise(t=>{n({title:`This candidate cannot be submitted`,content:e.message,okText:`Pick someone else`,cancelText:`Close`,onOk:()=>t(!1),onCancel:()=>t(!1)})})}if(!yD(r))return!0;let a=t?.navigate;return!a||!i?!1:new Promise(e=>{n({title:`Candidate update required`,content:dD,okText:`OK`,cancelText:`Cancel`,onOk:async()=>{let t=await TD(r);t&&a(t),e(!1)},onCancel:()=>e(!1)})})}function DD(e,t,n){return{...e,label:`${e.label} - ${oD}`,disabled:!0,title:`${oD}${t?` (submission ${t})`:``}`,alreadySubmitted:!0,existingSubmissionId:t||``,...n?{submittedAt:n}:{}}}var OD={searchOptions:async(e,t,n)=>{if(e.searchFetchKey===`quickSubmitJobList`){let e=n.selectedRecords?.[0]??{},r=e.id??e._id??n.selectedIds?.[0],i,a=!0;try{i=await ye({searchQuery:t,candidateId:r})}catch{a=!1;let e=await Pn({searchQuery:t,candidateId:r});i=Array.isArray(e?.data)?e.data:[]}let o=i.map(e=>({label:[e.jobReferenceId??e.clientJobReferenceId,e.jobTitle].filter(Boolean).join(` - `)||String(e._id??``),value:e._id??``,_raw:e}));if(a)return o.map(e=>{if(e._raw?.isSubmitted||e._raw?.alreadySubmitted)return DD(e,e._raw?.jobSubmissionId||``,e._raw?.submittedAt||``);if(e._raw?.disable){let t=String(e._raw?.message??``).trim();return{...e,disabled:!0,label:t?`${e.label} - ${t}`:e.label,title:t}}return e});let s=await xe({applicantId:r,jobIds:o.map(e=>e.value)}).catch(()=>new Map);return o.map(e=>{let t=s.get(String(e.value));return t?DD(e,t.submissionId,t.submittedAt):e})}if(e.searchFetchKey===`quickSubmitCandidates`){let e=n.selectedRecords?.[0]??{},r=n.jobId??e.jobId??e.id??e._id??n.selectedIds?.[0],i,a=new Map;try{i=await be({search:t,jobId:r})}catch{let e=await Po({isFromSubmission:n.isFromSubmission,jobId:r,submissionId:n.submissionId,search:t});i=Array.isArray(e)?e:[],a=await xe({jobId:r,applicantIds:i.map(SD)}).catch(()=>new Map)}return i.map(e=>xD(e)).map(e=>{let t=a.get(SD(e));if(!(t||e?.isSubmitted===!0||e?.alreadySubmitted===!0))return e;let n=t?.submissionId||e?.jobSubmissionId||``,r=t?.submittedAt||e?.submittedAt||``;return{...e,disabled:!0,optionNote:oD,isSubmitted:!0,alreadySubmitted:!0,existingSubmissionId:n,...r?{submittedAt:r}:{}}})}return[]},submit:async(e,t,n)=>{let{navigate:r,selectedRecords:i=[],selectedIds:a=[],moduleName:o}=t,s=i[0]??{},c,l;t.jobId?(c=t.jobId,l=s.id??s._id??a[0]??``):o===`candidate`?(c=e.jobId??``,l=s.id??s._id??a[0]??``):(c=s.jobId??s.id??s._id??a[0]??``,l=e.candidate??``);let u=n?.dynamicOptions?.candidate?.find(e=>SD(e?._raw)===String(l)),d=n?.dynamicOptions?.jobId?.find(e=>String(e?.value)===String(c)),f=u?._raw?.isSubmitted||u?._raw?.alreadySubmitted||d?.alreadySubmitted||d?._raw?.isSubmitted||d?._raw?.alreadySubmitted;if(!c||!l)throw Error(`Select both a job and a candidate to quick submit.`);if(yD(u?._raw))throw Error(dD);let p=await aD({targetModule:sD,sourceModule:cD,recordId:l});if(p.severity===`block`)throw Error(p.message);let m=f,h=u?._raw?.existingSubmissionId||u?._raw?.jobSubmissionId||d?.existingSubmissionId||d?._raw?.jobSubmissionId||``;try{let e=await ve({jobId:c,applicantId:l});m||=!!e?.exists,h=e?.submissionId||h}catch(e){throw Error(`Could not verify existing submissions (${e?.message??`request failed`}). Please try again.`,{cause:e})}if(m)throw Error(`This candidate is already submitted for this job${h?` (submission ${h})`:``}.`);let g=new URLSearchParams;l&&g.set(`candidateId`,l);let _=u?.priorSubmissionId||u?._raw?.submissionId||d?.priorSubmissionId||d?._raw?.submissionId||``;_?(g.set(`submissionId`,String(_)),g.set(`isFromSubmission`,`true`)):g.set(`isFromSubmission`,`false`);let v=jo(No({jobId:c,applicantId:l}).catch(()=>[]));return r(`/submission-create/${c}?${g.toString()}`,{state:{relevantSkillsToken:v}}),{navigated:!0}}},kD={title:`Submit`,okText:`Submit`,width:640,disabledUntilFilled:!0,autoSubmitWhenNoFields:!0,getNote:e=>e.moduleName===`candidate`?`Note: Select a job to submit this candidate.`:`Note: Select a candidate to submit for this job`,getFields:e=>e.jobId?[]:e.moduleName===`candidate`?[{name:`jobId`,label:`Job list`,type:`search-select`,required:!0,placeholder:`Search Job ID / job name - or pick a recent job`,searchFetchKey:`quickSubmitJobList`,optionLayout:{id:`{jobReferenceId}`,title:`{jobTitle}`,subtitle:`{clientJobReferenceId}`,meta:[{label:`Created`,key:`createdAt`,type:`date`},{label:`Updated`,key:`updatedAt`,type:`relative`}]}}]:[{name:`candidate`,label:`Candidate`,type:`search-select`,required:!0,placeholder:`Search candidate name / email - or pick a recent candidate`,optionsKey:`candidateOptions`,searchFetchKey:`quickSubmitCandidates`,labelTemplate:`{applicantRefrenceId} - {firstName} {lastName} - {createdAgo}`,valueKey:`applicantId`,optionLayout:{id:`{applicantRefrenceId}`,title:`{firstName} {lastName}`,titleAccent:{key:`createdAgo`,toneKey:`createdAgoTone`,prefix:` - `},subtitle:`{designation} - {email}`,meta:[{label:`Created`,key:`createdAt`,type:`date`},{label:`Updated`,key:`updatedAt`,type:`relative`}]},onSelectGuard:ED}]},AD={title:`Add Notes & Share`,okText:`Save & Share`,width:480,fields:[{name:`notes`,type:`mention-textarea`,required:!0,rows:5,placeholder:`Add your notes on the job. Use '@' to mention someone.`,mentionFetchKey:`mentionUsers`}]},jD=e=>e?.data??e;async function MD({relatedId:e,notes:n,title:r,notesFor:i}){return jD(await gn(t.b,`/notes`,{method:`POST`,body:JSON.stringify({relatedId:e,notes:n,title:r,notesFor:i})}))}var ND={getMentionOptions:async(e,t)=>te(t),submit:async(e,t)=>{let n=Array.isArray(t.selectedIds)?t.selectedIds[0]:t.selectedIds;if(!n)throw Error(`Please select a record before adding a note.`);await MD({relatedId:String(n),notes:e.notes,notesFor:t.moduleName})}},PD={name:`jobId`,label:`Job Title / ID`,type:`search-select`,required:!0,placeholder:`Minimum 3 characters`,searchFetchKey:`tagToJobJobList`,valueKey:`_id`,labelTemplate:`{jobReferenceId} - {jobTitle}`},FD={name:`hiringStage`,label:`Hiring stage`,type:`select`,required:!0,optionsKey:`hiringStageOptions`,defaultOptions:[{label:`Shortlisted`,value:`shortlisted`},{label:`Pipeline`,value:`pipeline`}],initialValueKey:`hiringStage`},ID={title:`Tag to Job`,okText:`Tag`,width:480,disabledUntilFilled:!0,autoSubmitWhenNoFields:!0,getFields:e=>e.jobId&&e.hiringStage?[]:e.jobId?[FD]:[PD,FD]},LD=e=>e?.data??e;function RD(e){return Array.isArray(e)&&e.every(e=>e&&typeof e==`object`&&`Key`in e)?e.reduce((e,{Key:t,Value:n})=>(e[t]=n,e),{}):e}function zD(e){return e?Array.isArray(e.data)?e.data.map(RD):e.stage&&Array.isArray(e.stage.data)?e.stage.data.map(RD):Array.isArray(e)?e.map(RD):[]:[]}async function BD(e=1,n=10){let r=await t.a(t.b,`/workflow/list/all?page=${e}&limit=${n}`),i=LD(r),a=Array.isArray(i)?i:i?.data??[];return{items:a,total:Number(r?.total??i?.total)||a.length,page:e,limit:n}}async function VD(e,n){let r=LD(await t.a(t.b,`/workflow/${e}/stage/${n}`));return Array.isArray(r)?{data:r}:r}async function HD(e,n){if(!e||!n)return null;try{let r=LD(await t.a(t.b,`/module-data-list?${new URLSearchParams({module:e,limit:`1`,offset:`0`,scope:`allJobs`,filters:JSON.stringify([{field:`_id`,op:`in`,values:[String(n)],operator:`and`}])})}`));if(Array.isArray(r))return r[0]??null;if(r?.data&&Array.isArray(r.data))return r.data[0]??null;let i=r?.rows??r?.records??r?.items??r?.list;return Array.isArray(i)?i[0]??null:r??null}catch(t){return console.error(`[getModuleRecordById] failed: ${e}/${n}`,t),null}}async function UD(e){return LD(await t.a(t.S,`/source/workflow-instance`,{method:`POST`,body:JSON.stringify(e)}))}var WD={pipeline:`pipeline`,goodfited:`goodfited`,contacted:`contacted`,submitted:`submitted`,shortlisted:`shortlisted`,interviewinprogress:`interviewInprogress`,selected:`selected`};function GD(e,...t){for(let n of t){let t=String(n).split(`.`).reduce((e,t)=>e?.[t],e);if(t!=null&&t!==``)return t}}function KD(e){let t=String(e??``).trim();return t?WD[t.toLowerCase()]??t:``}function qD(e,t){let n=GD(e,`candidateId`,`candidate_id`,`applicantId`,`applicantID`,`applicantReferenceId`,`applicantRefrenceId`,`_id`,`id`)??t;if(!n)return null;let r=(GD(e,`candidateName`,`candidate_name`,`fullName`,`name`)??[GD(e,`firstName`,`first_name`),GD(e,`lastName`,`last_name`)].filter(Boolean).join(` `))||void 0,i={candidateId:String(n),candidateName:r,phone:GD(e,`phone`,`phoneNumber`,`phone_number`,`mobile`,`mobileNumber`,`mobile_number`),source:GD(e,`source`,`sourceType`,`candidateSource`,`profileSource`),submittedAt:GD(e,`submittedAt`,`lastSubmittedAt`,`updatedAt`),remarks:GD(e,`remarks`,`comment`,`comments`,`notes`),assignedRecruiter:GD(e,`assignedRecruiter`,`recruiterName`,`ownerName`,`assignedToName`),screeningStatus:GD(e,`screeningStatus`,`screening.status`,`screeningResult`),screeningScore:GD(e,`screeningScore`,`screening.score`,`score`),assignedDate:GD(e,`assignedDate`,`assignedAt`,`createdAt`)};return Object.fromEntries(Object.entries(i).filter(([,e])=>e!=null&&e!==``))}var JD={searchOptions:async(e,t)=>e.searchFetchKey===`tagToJobJobList`?U(t):[],submit:async(e,t)=>{let n=e.jobId??t.jobId,r=KD(e.hiringStage??t.hiringStage),i=Array.isArray(t.selectedIds)?t.selectedIds:[],a=Array.isArray(t.selectedRecords)?t.selectedRecords:[],o=Math.max(i.length,a.length,1);for(let e=0;e<o;e+=1){let t=i[e]?String(i[e]):``,o=qD(a[e]??{},t);await UD({jobId:n,module:`jobs`,currentStage:r,...o?{candidateDetails:o}:{}})}await ie({jobId:n,candidateIds:t.selectedIds,hiringStage:r})}},YD={title:`Change Status`,okText:`Apply`,width:420,showSelectedCount:!0,fields:[{name:`status`,label:`New Status`,type:`select`,required:!0,placeholder:`Select a status`,dataSource:`master`,masterName:`clientSubmissions`,labelKey:`clientSubmissionStatusText`,valueKey:`clientSubmissionStatusText`,initialValueKey:`currentStatus`,defaultOptions:[{label:`Active`,value:`active`},{label:`Inactive`,value:`inactive`},{label:`Pending`,value:`pending`},{label:`Closed`,value:`closed`}]}]};function XD(e,t){return(t?.status??[]).find(t=>String(t?.value??``)===String(e??``))??null}var ZD={submit:async(e,t,n)=>{let r=XD(e.status,n?.dynamicOptions)?._raw??{},i={clientSubmissionStatusText:String(e.status??``).trim(),clientSubmissionStatusId:Number(r.id??r.uniqueId??0)||0,clientSubmissionStatusType:String(r.type??``).trim()};await V(t.moduleName,t.selectedIds,i)}},QD={getTitleText:e=>`Remove ${e>1?`${e} Candidates`:`Candidate`} from Shortlist`,titleIcon:`delete`,okText:`Remove`,okButtonDanger:!0,width:420,getBodyText:e=>e>1?`Are you sure you want to remove ${e} selected candidates from the shortlist?`:`Are you sure you want to remove this candidate from the shortlist?`,footerNote:`The candidate will be moved back to the pipeline.`,fields:[]},$D={onOk:async e=>{await Se({jobId:e.jobId??e.selectedIds[0],candidateIds:e.selectedIds})}},eO={title:`Add to Groups`,description:`Select a group to add the selected candidate(s) to`,okText:`Add to Group`,width:480,disabledUntilFilled:!0,fields:[{name:`groupId`,label:`Group`,type:`select`,required:!0,placeholder:`Select a group`,fetchOptionsKey:`candidateGroups`}]},tO={getOptions:async e=>e.fetchOptionsKey===`candidateGroups`?G():[],submit:async(e,t,{dynamicOptions:n})=>{let r=(n.groupId??[]).find(t=>String(t.value)===String(e.groupId));await ae({candidateIds:t.selectedIds,groupId:e.groupId,groupName:r?.label??``})}},nO=[{title:`Name`,key:`name`,render:(e,t)=>t.name||`${t.first_name??``} ${t.last_name??``}`.trim()||t.user_name||`Assigned user`},{title:`Role`,dataIndex:`role_name`,key:`role`,render:e=>e||`-`},{title:`Reporting`,dataIndex:`reporting_name`,key:`reporting`,render:e=>e||`-`}];function rO({selectedIds:e,onClose:t}){let n=e?.[0],[r,i]=(0,a.useState)(!0),[l,u]=(0,a.useState)(!1),[d,f]=(0,a.useState)({assignedUsers:[],totalSubmissions:0,message:``}),[p,m]=(0,a.useState)([]);(0,a.useEffect)(()=>{let e=!1;return i(!0),Promise.all([se(n).catch(t=>(e||o.message.error(t?.message??`Failed to load self-assign details`),{assignedUsers:[],totalSubmissions:0,message:``})),ue(n).catch(()=>({recruitersData:[]}))]).then(([t,n])=>{e||(f(t),m(Array.isArray(n?.recruitersData)?n.recruitersData:[]))}).finally(()=>{e||i(!1)}),()=>{e=!0}},[n]);let h=async()=>{u(!0);try{await oe({jobIds:[n]}),o.message.success(`Job assigned successfully`),t?.({success:!0})}catch(e){o.message.error(e?.message??`Failed to assign job`)}finally{u(!1)}};if(r)return(0,c.jsx)(`div`,{style:{display:`flex`,justifyContent:`center`,padding:48},children:(0,c.jsx)(o.Spin,{size:`large`})});let g=p.map(e=>({user_id:e.recruiterId??e.id??e.user_id,name:e.name??``,role_name:e.role_name??e.roleName??``,reporting_name:e.reporting_name??e.reportingName??``})),_=new Map(g.map(e=>[String(e.user_id??``),e])),v=(d.assignedUsers?.length??0)>0?d.assignedUsers.map(e=>{let t=e.user_id??e.userId??e.recruiterId??e.id,n=_.get(String(t??``))??{};return{...e,user_id:t,name:n.name||e.name||``,role_name:n.role_name||e.role_name||e.roleName||``,reporting_name:n.reporting_name||e.reporting_name||e.reportingName||``}}):g;return(0,c.jsxs)(`div`,{className:`self-assign-popup-body`,children:[v.length>0?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(`div`,{style:{fontWeight:700,marginBottom:8},children:`Team Members Allocated`}),(0,c.jsx)(o.Table,{columns:nO,dataSource:v,pagination:!1,rowKey:e=>e.user_id??`${e.first_name}-${e.last_name}`,size:`small`,className:`mb-3 no-header-bg`,scroll:{y:200}}),(0,c.jsxs)(`div`,{className:`warning-card`,style:{display:`flex`,alignItems:`center`,gap:8,marginTop:12},children:[(0,c.jsx)(s.ExclamationCircleFilled,{style:{color:`#faad14`,fontSize:18}}),(0,c.jsx)(`div`,{style:{fontSize:13},children:`These users are already assigned to this job. Do you still want to assign yourself as well?`})]})]}):(0,c.jsx)(`div`,{style:{padding:`8px 0`},children:d.message||`No one is currently assigned to this job. Do you want to assign yourself?`}),(0,c.jsxs)(`div`,{style:{display:`flex`,justifyContent:`flex-end`,gap:12,marginTop:24},children:[(0,c.jsx)(o.Button,{size:`small`,onClick:()=>t?.(),disabled:l,children:`No`}),(0,c.jsx)(o.Button,{type:`primary`,size:`small`,onClick:h,loading:l,children:`Yes`})]})]})}rO.propTypes={selectedIds:d.default.array,onClose:d.default.func};var iO={title:`Self Assign`,width:480,className:`self-assign-modal`,component:rO},aO={submit:async()=>{}};function oO(e={}){let t=Array.isArray(e.jobPayDetails)?e.jobPayDetails[e.jobPayDetails.length-1]:e.jobPayDetails??e.clientBudget??{},n=Number(t.clientBudgetEnd),r=Number(t.clientBudgetStart);return Number.isFinite(n)&&n>0?n:Number.isFinite(r)&&r>0?r:null}var sO={getTitleText:(e,t,n)=>{let r=n?.jobTitle||n?.title||``;return r?`Assign - ${r}`:`Assign`},okText:`Assign`,width:520,disabledUntilFilled:!0,showAlreadyAssigned:!0,getFields:e=>(oO(e?.selectedRecords?.[0]??{}),[{name:`assignToUserId`,label:`Assign to`,type:`multi-select`,required:!0,placeholder:`Select recruiter(s)`,fetchOptionsKey:`assignToUsers`}])},cO={getOptions:async e=>e.fetchOptionsKey===`assignToUsers`?le():[],loadExtraData:async e=>ue(e.selectedIds[0]),submit:async(e,t,{removedIds:n,extraData:r})=>{await pe({jobIds:t.selectedIds,userId:e.assignToUserId,removedIds:n,existingRecruiters:r?.recruitersData})}},lO={title:`Add Sticky Notes`,getTitleText:(e,t,n,r)=>r.editingNoteId?`Edit Sticky Notes`:`Add Sticky Notes`,okText:`Save`,width:480,fields:[{name:`heading`,label:`Heading`,type:`input`,required:!0,placeholder:`Enter heading`,initialValueKey:`editingHeading`},{name:`targetDate`,label:`Target Date`,type:`date-picker`,required:!1,initialValueKey:`editingTargetDate`},{name:`comments`,label:`Comments`,type:`mention-textarea`,required:!0,rows:5,placeholder:`Enter your note here... Use '@' to mention someone.`,mentionFetchKey:`mentionUsers`,initialValueKey:`editingComments`}]},uO={getMentionOptions:async(e,t)=>te(t),submit:async(e,t)=>{let n=e.targetDate?e.targetDate.toISOString():``;t.editingNoteId?await W(t.editingNoteId,{title:e.heading,targetDate:n,notes:e.comments}):await ne({relatedIds:t.selectedIds,module:t.moduleName,title:e.heading,targetDate:n,notes:e.comments}),window.dispatchEvent(new Event(`sticky-notes:refresh`))}},dO={title:`Move to Onboarding`,bodyText:`Are you sure you want to move this candidate to onboarding?`,okText:`Yes`,cancelText:`No`,width:420,successMessage:`Moved to onboarding successfully`,successNavigate:`/onboarding`,fields:[{name:`sendOnboardingEmail`,type:`priority-checkbox`,checkboxLabel:`Send Onboarding Email`}]},fO={submit:async(e,t)=>{await me({submissionId:t.selectedRecords?.[0]?.submissionId,isMail:e.sendOnboardingEmail})}};function pO(e){return Array.isArray(e)?e[e.length-1]??{}:e&&typeof e==`object`?e:{}}var mO={USD:`$`,INR:`₹`,EUR:`€`,GBP:`£`};function hO(e,t,n){let r=pO(e?.[t])[n];if(r!=null&&r!==``)return r;let i=e?.[`${t}.${n}`];return i!=null&&i!==``?i:void 0}function gO(e){let t=e.selectedRecords?.[0]??{},n=hO(t,`candidateRate`,`candidateAcceptedRate`)??hO(t,`candidateBudget`,`candidateBudgetStart`);if(n===void 0||Number(n)===0)return null;let r=hO(t,`candidateRate`,`candidateAcceptedCurrency`)??hO(t,`candidateBudget`,`candidateBudgetCurrency`);return{amount:n,symbol:hO(t,`candidateRate`,`candidateAcceptedCurrencySymbol`)??hO(t,`candidateBudget`,`candidateBudgetCurrencySymbol`)??mO[String(r??``).toUpperCase()]??(r||`$`),unit:hO(t,`candidateRate`,`candidateAcceptedPayUnit`)??hO(t,`candidateBudget`,`candidateBudgetUnit`)??``}}var _O={title:`Approve Rate`,okText:`Approve`,width:520,className:`medium-modal`,successMessage:`Rate approved`,getBodyText:(e,t,n,r,i)=>{let a=gO(i);return`Candidate Rate: ${a?`${a.symbol}${a.amount}${a.unit?`/${a.unit}`:``}`:`-`}`},fields:[{name:`candidateProposedRate`,label:`Proposed Rate`,type:`number`,required:!0,placeholder:`Amount`,min:0,inlineRow:`proposedRate`,validator:(e,t)=>{if(e==null||e===``)return;let n=gO(t);if(n&&Number(e)<=Number(n.amount))return`Proposed rate must be greater than Candidate Rate`}},{name:`candidateProposedRateCurrency`,label:`Currency`,type:`select`,required:!0,inlineRow:`proposedRate`,defaultOptions:[{label:`$ USD`,value:`$`},{label:`₹ INR`,value:`₹`},{label:`€ EUR`,value:`€`}]},{name:`candidateProposedRateUnit`,label:`Unit`,type:`select`,required:!0,inlineRow:`proposedRate`,defaultOptions:[{label:`Year`,value:`yr`},{label:`Month`,value:`mo`},{label:`Week`,value:`wk`},{label:`Hour`,value:`hr`},{label:`Daily`,value:`day`}]},{name:`submitVia`,label:`Submit Via`,type:`radio`,required:!0,defaultOptions:[{label:`Mail`,value:`Mail`},{label:`VMS`,value:`VMS`}]}]},vO={submit:async(e,t)=>{let n=t.selectedIds[0];if(await he(n,{candidateProposedRate:e.candidateProposedRate,candidateProposedRateCurrency:e.candidateProposedRateCurrency,candidateProposedRateUnit:e.candidateProposedRateUnit,submitVia:e.submitVia}),e.submitVia===`VMS`)try{await ge(n)}catch{o.message.warning(`Approved. VMS notification could not be sent — use Send Mail to notify the client.`)}else o.message.info(`Approved — use Send Mail to notify the client.`)}};async function yO(e,n={}){let r=t.l();if(!r){let e=Error(`Authentication required`);throw e.status=401,e}let i=await fetch(`${t.w}${e}`,{...n,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${r}`,...n.headers}});if(i.status===401&&t.m(),!i.ok){let e=Error(`API ${i.status}: ${i.statusText}`);throw e.status=i.status,e}return i.json()}async function bO(e){let t=await yO(`/mail-form?${new URLSearchParams({submissionId:e,submissionType:`client`}).toString()}`);return t.data??t}function xO(e){return Array.isArray(e)?e[e.length-1]:e}function SO(e={}){let t=xO(e?.proposedRate)?.candidateProposedRate??e?.candidateProposedRate??e?.proposedRateValue,n=Number(t);return Number.isFinite(n)?n:0}function CO(e,t={}){let n=xO((e?.record?.job??e?.job??t?.job??{})?.jobPayDetails)??{},r=e?.record?.submission??t??{},i=xO(r?.clientBudget)??r?.clientBudget??{},a=n?.clientBudgetEnd??n?.clientBudgetStart??i?.clientBudgetEnd??i?.clientBudgetStart,o=Number(a);return Number.isFinite(o)?o:0}function wO(e={}){let t=String(e?.currencyRaw??``).trim().toUpperCase(),n=String(e?.currency??``).trim();return n&&!/^[A-Z]{3}$/i.test(n)?n:t===`USD`||n.toUpperCase()===`USD`?`$`:t===`INR`||n.toUpperCase()===`INR`?`₹`:t===`EUR`||n.toUpperCase()===`EUR`?`€`:t===`GBP`||n.toUpperCase()===`GBP`?`£`:n||t}function TO(e={}){return String(e?.rateUnit??`hr`).trim().replace(/^\/+/,``)||`hr`}function EO(e,t={}){let n=Number(e);return Number.isFinite(n)?`${wO(t)}${n}/${TO(t)}`:``}function DO(e,t,n){if(n==null||n===``)return String(e??``);let r=String(e??``),i=String(n),a=!1,o=RegExp(`(<(?:strong|b)[^>]*>\\s*${t}\\s*:?\\s*</(?:strong|b)>\\s*)([\\s\\S]*?)(?=</(?:li|p|div)>)`,`gi`);if(r=r.replace(o,(e,t)=>(a=!0,`${t}${i}`)),!a){let e=RegExp(`(${t}\\s*:?[ \\t]*)([^<\\r\\n]*)`,`gi`);r=r.replace(e,(e,t)=>`${t}${i}`)}return r}function OO(e,t,n,r,i){let a=Number(n?.proposedRate),o=Number.isFinite(a)?a:SO(t),s=Number(n?.clientJobRate),c=Number.isFinite(s)&&s>0?s:CO(r,i),l={proposedRate:o,jobBillRate:c},u=String(e??``).replace(/{{\.?((?:proposedRate)|(?:jobBillRate))}}/g,(e,t)=>{let n=l[t];return n==null?e:String(n)});return u=DO(u,`Proposed\\s*Rate`,EO(o,n)),u=DO(u,`(?:Job\\s*)?Bill\\s*Rate`,EO(c,n)),u}function kO(...e){return e.map(e=>e==null?``:String(e).trim()).find(Boolean)??``}var AO=(e,t)=>!!e&&e.toLowerCase()===kO(t).toLowerCase();function jO(e,t,n){let r=kO(t.submittedBy);return kO(AO(r,n)||AO(r,e.submitSource)||AO(r,e.supplierName)||AO(r,e.source)||AO(r,e.candidateSource)?``:r,e.signatureEmail)}function MO(e,t={}){let n=t.employerName??e.supplierName??e.submitSource;return{client:t.clientName??e.clientName,role:t.jobTitle??e.jobTitle??e.designation,reqId:t.reqId??e.jobClientRefrenceId??e.mspReqId??e.submissionId,name:t.candidateName||[e.firstName,e.lastName].filter(Boolean).join(` `)||e.candidateFullName,location:t.jobLocation??e.city??e.currentLocation??e.jobLocation,vendor:n,submittedBy:jO(e,t,n),submittedAt:t.createdAt??e.createdAt,email:t.email??e.email,employerLocation:t.employerLocation,employerName:t.employerName}}function NO(e){let t=e?.$oid??e?._id?.$oid??e?._id??e?.id?.$oid??e?.id??e;if(t==null||typeof t==`object`)return``;let n=String(t).trim();return/^[a-f\d]{24}$/i.test(n)?n:``}function PO(...e){for(let t of e){let e=[t?.jobId,t?.JobId,t?.job_id,t?.jobDetails?._id,t?.jobDetails?.id,t?.job?._id,t?.job?.id,t?.submission?.jobId,t?.submission?.JobId,t?.submission?.job_id,t?.submission?.jobDetails?._id,t?.submission?.jobDetails?.id,t?.submission?.job?._id,t?.submission?.job?.id,t?.recordMeta?.jobId,t?.recordMeta?.JobId,t?.recordMeta?.job_id,t?.submission?.recordMeta?.jobId,t?.submission?.recordMeta?.JobId,t?.submission?.recordMeta?.job_id].map(NO).find(Boolean);if(e)return e}return``}function FO(e){if(!e?.referralId)return{};let t=Number(e.referralRate??e.referalRate??0)||0,n=String(e.referralType??e.referalType??`RECURRING`).trim()||`RECURRING`,r=e.referralId??e.referalId;return{referralId:r,referalId:r,referralRate:t,referalRate:t,referralType:n,referalType:n,referralEnabled:!0,referalEnabled:!0,isReferralApplicable:!0,referralDetails:{referralId:r,referalId:r,referralRate:t,referalRate:t,referralType:n,referalType:n,referralEnabled:!0,referalEnabled:!0,isReferralApplicable:!0}}}function IO(e=``){return String(e??``).replace(/map\[[^\]]*(?:resume|document|attachment|file)[^\]]*\]/gi,``).replace(/<p>\s*<\/p>/gi,``).replace(/(?:<br\s*\/?>\s*){3,}/gi,`<br><br>`).trim()}function LO(...e){for(let t of e){let e=[t?.candidateId,t?.applicantId,t?.candidate?._id,t?.candidate?.id,t?.submission?.candidateId,t?.submission?.applicantId,t?.recordMeta?.candidateId,t?.recordMeta?.applicantId].map(NO).find(Boolean);if(e)return e}return``}async function RO(e){let t=e?.fileUrl??e?.downloadUrl??e?.url;if(!t)return null;let n=await fetch(t);if(!n.ok)throw Error(`Unable to load ${e?.fileName||`resume`}`);let r=await n.blob(),i=e?.fileName??e?.uploadedFileName??e?.originalName??e?.uniqueName??`resume`;return new File([r],i,{type:e?.contentType||r.type||`application/octet-stream`})}async function zO(n,r,i){let a=[],o=await e.mn(`submissions`,n,`resume`).catch(()=>({data:[]}));a.push(...o?.data??[]);let s=LO(r?.record?.submission,i,r?.record);if(!s){let e=await t.a(t.b,`/module/list?module=submissions&id=${encodeURIComponent(n)}`).catch(()=>({})),r=e?.data??e??{};s=LO((Array.isArray(r?.data)?r.data:Array.isArray(r)?r:[])[0])}if(s){let t=await e.mn(`candidates`,s,`resume`).catch(()=>({data:[]}));a.push(...t?.data??[])}let c=(await Promise.all(a.map(RO))).filter(Boolean),l=new Set;return c.filter(e=>{let t=`${e.name}:${e.size}:${e.type}`;return l.has(t)?!1:(l.add(t),!0)})}function BO(e={}){return{to:(e.to??e.To??[]).map(e=>e.email??e.Email??e).filter(Boolean).join(`, `),cc:(e.cc??e.Cc??[]).map(e=>e.email??e.Email??e).filter(Boolean).join(`, `),bcc:(e.bcc??e.Bcc??[]).map(e=>e.email??e.Email??e).filter(Boolean).join(`, `),subject:e.subject??e.Subject??``,contents:IO(e.content?.value??e.Content?.Value??e.contents??e.body??``)}}function VO({context:e,selectedIds:t,selectedRecords:n,moduleName:r,onClose:i}){let s=n?.[0]??{},l=t?.[0]??Sg(s),[u,d]=(0,a.useState)(null),[f,p]=(0,a.useState)(!0),[m,h]=(0,a.useState)([]),[g,_]=(0,a.useState)(!1),[v,y]=(0,a.useState)(`vms`),[b,x]=(0,a.useState)(null),[S,C]=(0,a.useState)(null),[w,T]=(0,a.useState)(!1),[E,D]=(0,a.useState)(!1),[O,k]=(0,a.useState)(!1),[A,j]=(0,a.useState)(!1),[M,N]=(0,a.useState)({to:``,cc:``,bcc:``,subject:``,contents:``,attachments:[],showCc:!1,showBcc:!1});(0,a.useEffect)(()=>{let e=!1;return l_(l,s).then(t=>{e||d(t)}).catch(t=>{e||(o.message.error(t?.message??`Unable to load finance details`),d({record:{submission:s},lookups:{},display:{}}))}).finally(()=>{e||p(!1)}),()=>{e=!0}},[l]),(0,a.useEffect)(()=>{let e=!1;return v_().then(t=>{e||h(t)}).catch(()=>{}),()=>{e=!0}},[]);let P=async()=>{if(b){if(v===`mail`){_(!1),D(!0),k(!0);try{let[e,t]=await Promise.all([bO(l).then(BO),zO(l,u,s).catch(e=>(console.warn(`Unable to resolve resume attachment:`,e),[]))]),n=u?.record?.submission??s;N({to:OO(e.to,n,b,u,s),cc:OO(e.cc,n,b,u,s),bcc:OO(e.bcc,n,b,u,s),subject:OO(e.subject,n,b,u,s),contents:OO(e.contents,n,b,u,s),attachments:t,showCc:!!e.cc,showBcc:!!e.bcc})}catch(e){o.message.error(e?.message??`Unable to prepare approval mail`)}finally{k(!1)}return}T(!0);try{await he(l,{candidateProposedRate:b.proposedRate,candidateProposedRateCurrency:b.currencyRaw??b.currency,candidateProposedRateUnit:b.rateUnit,submitVia:`VMS`,...FO(S)}),o.message.success(`Submission approved`),_(!1),x(null),C(null),i?.({success:!0})}catch(e){o.message.error(e?.message??`Unable to approve submission`)}finally{T(!1)}}},F=!O&&Uw(M.to).length>0&&Ww(M.to)&&Ww(M.cc)&&Ww(M.bcc)&&M.subject.trim()&&M.contents.trim(),I=async()=>{if(!b||!F||A)return;j(!0);let e={candidateProposedRate:b.proposedRate,candidateProposedRateCurrency:b.currencyRaw??b.currency,candidateProposedRateUnit:b.rateUnit};try{await he(l,{...e,submitVia:`VMS`,...FO(S)});let t=PO(u?.record,s);if(!t)o.message.warning(`Submission approved, but job details were not available to send mail`);else try{await un({jobId:t,toMail:Uw(M.to),ccMail:Uw(M.cc),bccMail:Uw(M.bcc),subject:M.subject,contents:M.contents,attachments:M.attachments??[]}),o.message.success(`Approval mail sent and submission approved`)}catch(e){o.message.warning(e?.message?`Submission approved, but mail was not sent: ${e.message}`:`Submission approved, but mail was not sent`)}D(!1),x(null),C(null),i?.({success:!0})}catch(e){o.message.error(e?.message??`Unable to send approval mail`)}finally{j(!1)}},L=(0,a.useMemo)(()=>({submissionApprove:async({computed:e,referral:t})=>{x(e),C(t??null),y(`vms`),_(!0)},submissionReject:async()=>{e?.navigate?.(`/popup/reject`,{replace:!0,state:{background:e?.background??null,selectedIds:t,selectedRecords:n,moduleName:r}})}}),[e,t,n,r]);return f||!u?(0,c.jsx)(`div`,{style:{display:`flex`,justifyContent:`center`,padding:48},children:(0,c.jsx)(o.Spin,{size:`large`})}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(Qg,{type:Xh,record:u.record,lookups:u.lookups,identity:MO(s,u.display),referralOptions:m,currentUserId:typeof localStorage<`u`?localStorage.getItem(`userId`)??void 0:void 0,actions:L,onClose:()=>i?.(),variant:`popup`}),(0,c.jsx)(o.Modal,{title:`Choose approval method`,open:g,okText:`Approve`,confirmLoading:w,onOk:P,onCancel:()=>{w||(_(!1),x(null),C(null))},children:(0,c.jsxs)(o.Radio.Group,{value:v,onChange:e=>y(e.target.value),style:{display:`grid`,gap:12},children:[(0,c.jsx)(o.Radio,{value:`vms`,children:`Via VMS`}),(0,c.jsx)(o.Radio,{value:`mail`,children:`Via Mail`})]})}),(0,c.jsx)(o.Drawer,{open:E,placement:`right`,onClose:()=>{A||D(!1)},closable:!1,rootClassName:`mail-popup`,width:620,maskClosable:!1,footer:(0,c.jsxs)(`div`,{className:`mail-popup__footer`,children:[(0,c.jsx)(o.Button,{onClick:()=>D(!1),disabled:A,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,loading:A,disabled:!F,onClick:I,children:`Send`})]}),children:O?(0,c.jsx)(`div`,{style:{display:`flex`,justifyContent:`center`,padding:48},children:(0,c.jsx)(o.Spin,{size:`large`})}):(0,c.jsx)(nT,{value:M,onChange:N,moduleName:`submissions`,ready:!O,title:`Submit Via Mail`,contextRecords:[u.record?.submission??s]})})]})}VO.propTypes={context:d.default.object,selectedIds:d.default.array,selectedRecords:d.default.array,moduleName:d.default.string,onClose:d.default.func};var HO={title:`Manager Approve`,width:780,className:`fa-modal manager-approve-modal`,component:VO},UO={submit:async()=>{}};function WO(...e){return e.map(e=>e==null?``:String(e).trim()).find(Boolean)??``}var GO=(e,t)=>!!e&&e.toLowerCase()===WO(t).toLowerCase();function KO(e,t,n){let r=WO(t.submittedBy);return WO(GO(r,n)||GO(r,e.submitSource)||GO(r,e.supplierName)||GO(r,e.source)||GO(r,e.candidateSource)?``:r,e.signatureEmail)}function qO(e,t={}){let n=t.employerName??e.supplierName??e.submitSource;return{client:t.clientName??e.clientName,role:t.jobTitle??e.jobTitle??e.designation,reqId:t.reqId??e.jobClientRefrenceId??e.mspReqId??e.submissionId,name:t.candidateName||[e.firstName,e.lastName].filter(Boolean).join(` `)||e.candidateFullName,location:t.jobLocation??e.city??e.currentLocation??e.jobLocation,vendor:n,submittedBy:KO(e,t,n),submittedAt:t.createdAt??e.createdAt,email:t.email??e.email,employerLocation:t.employerLocation,employerName:t.employerName}}function JO(e){let t=Array.isArray(e)?e:[];for(let e=t.length-1;e>=0;--e)if(String(t[e]?.activityType??``).trim().toLowerCase()===`cfo rejected`)return t[e];return null}function YO(e){return String(e??``).toLowerCase().replace(/\b\w/g,e=>e.toUpperCase())}function XO({selectedIds:t,selectedRecords:n,onClose:r}){let i=n?.[0]??{},s=t?.[0]??Sg(i),[l,u]=(0,a.useState)(null),[d,f]=(0,a.useState)(``),[p,m]=(0,a.useState)(!0);(0,a.useEffect)(()=>{let t=!1;return m(!0),Promise.all([l_(s,i),e.cn(`submission`,s).catch(()=>[])]).then(([e,n])=>{if(t)return;let r=JO(n);f(Sg(e?.meta?.workforceEngagementId??i?.onboarding?.workforceEngagementId??i?.workforceEngagementId));let a=e?.meta?.rejectReasonComments||r?.activityComments||``;u({...e,record:{...e.record,submission:{...e.record.submission,cfoRejectionReason:a?YO(a):``,cfoRejectedAt:e?.meta?.rejectedAt??r?.activityTime??null}}})}).catch(e=>{t||(o.message.error(e?.message??`Unable to load finance details`),u({record:{submission:i},lookups:{},display:{}}))}).finally(()=>{t||m(!1)}),()=>{t=!0}},[s]);let h=(0,a.useMemo)(()=>({submissionReapproveSend:async({computed:e})=>{await K(d,{submissionId:s,billRate:e.proposedRate,payRate:e.employerRate,currency:e.currencyRaw??e.currency,rateUnit:e.rateUnit,vmsPercent:e.clientVmsPercent}),await he(s,{candidateProposedRate:e.proposedRate,candidateProposedRateCurrency:e.currencyRaw??e.currency,candidateProposedRateUnit:e.rateUnit,submitVia:`Mail`,context:`resend`}),o.message.success(`Re-approved and sent for CFO approval`),r?.({success:!0})}}),[s,d,r]);return p||!l?(0,c.jsx)(`div`,{style:{display:`flex`,justifyContent:`center`,padding:48},children:(0,c.jsx)(o.Spin,{size:`large`})}):(0,c.jsx)(Qg,{type:eg,record:l.record,lookups:l.lookups,identity:qO(i,l.display),currentUserId:typeof localStorage<`u`?localStorage.getItem(`userId`)??void 0:void 0,actions:h,onClose:()=>r?.(),variant:`popup`})}XO.propTypes={selectedIds:d.default.array,selectedRecords:d.default.array,onClose:d.default.func};var ZO={title:`Re-Approve`,width:780,className:`fa-modal manager-approve-modal`,component:XO},QO={submit:async()=>{}},$O=[{id:1,name:`Re-Submission`},{id:2,name:`Candidate doesn't fit into the profile`},{id:3,name:`Incomplete candidate details - (Re-Submission)`}],ek={title:`Reject`,okText:`Reject`,okButtonDanger:!0,width:480,successMessage:`Submission rejected successfully`,fields:[{name:`rejectReason`,label:`Rejection Reasons`,type:`select`,required:!0,placeholder:`Select rejection reasons`,defaultOptions:$O.map(e=>({label:e.name,value:e.id}))},{name:`rejectReasonComments`,label:`Comments`,type:`textarea`,required:!0,rows:4}]},tk={submit:async(e,t)=>{let n=$O.find(t=>String(t.id)===String(e.rejectReason));await _e({submissionId:t.selectedIds[0],rejectReasonId:e.rejectReason,rejectReason:n?.name??``,rejectReasonComments:e.rejectReasonComments})}},nk={delete:eD,"quick-submit":kD,"add-notes":AD,"tag-to-job":ID,"change-status":YD,"remove-from-shortlist":QD,"add-to-groups":eO,"self-assign":iO,"others-assign":sO,"sticky-notes":lO,"move-to-onboarding":dO,"approve-rate":_O,"manager-approve":HO,"manager-reapprove":ZO,reject:ek},rk={delete:tD,"quick-submit":OD,"add-notes":ND,"tag-to-job":JD,"change-status":ZD,"remove-from-shortlist":$D,"add-to-groups":tO,"self-assign":aO,"others-assign":cO,"sticky-notes":uO,"move-to-onboarding":fO,"approve-rate":vO,"manager-approve":UO,"manager-reapprove":QO,reject:tk};function ik(e){let t=e?.data??e;return Array.isArray(t)?t:t?.data??t?.rows??t?.records??t?.items??t?.list??[]}function ak(e,...t){for(let n of t){let t=String(n).split(`.`).reduce((e,t)=>e?.[t],e);if(t!=null&&t!==``)return t}return``}function ok(e){let t=String(ak(e,`isDeleted`,`deleted`)).toLowerCase(),n=String(ak(e,`assignmentStatus`,`status`)).toLowerCase();return t!==`true`&&t!==`1`&&![`removed`,`inactive`,`deleted`].includes(n)}function sk(e){let t=ak(e,`candidateName`,`candidate_name`,`fullName`,`name`);return t?String(t):[ak(e,`firstName`,`first_name`),ak(e,`lastName`,`last_name`)].filter(Boolean).join(` `)||`Unnamed candidate`}function ck(e){return String(ak(e,`candidateId`,`candidate_id`,`candidate._id`,`candidate.id`))}function lk(e){return String(ak(e,`workforceEngagementId`,`engagementId`,`_id`,`id`))}function uk(e){return String(ak(e,`batchName`,`name`,`title`,`batch_name`))}function dk({open:n=!0,context:r={},onClose:i}){let[s,l]=(0,a.useState)([]),[u,d]=(0,a.useState)([]),[f,p]=(0,a.useState)(``),[m,h]=(0,a.useState)(!0),[g,_]=(0,a.useState)(!1),[v,y]=(0,a.useState)(``),[b,x]=(0,a.useState)(new Map),S=String(r.selectedIds?.[0]??r.selectedRecords?.[0]?._id??r.selectedRecords?.[0]?.id??r.batchId??``);(0,a.useEffect)(()=>{if(!n)return;let t=!1;return Promise.resolve().then(()=>(t||h(!0),Promise.all([e._n(`onboarding`,200,0),e._n(`batchCandidates`,1e3,0).catch(()=>[])]))).then(([e,n])=>{t||(l(ik(e)),x(new Map(ik(n).filter(ok).map(e=>[String(ak(e,`candidateId`,`candidate_id`)),e]).filter(([e])=>e))))}).catch(e=>{t||y(e.message||`Unable to load onboarding candidates`)}).finally(()=>{t||h(!1)}),()=>{t=!0}},[n]);let C=(0,a.useMemo)(()=>{let e=f.trim().toLowerCase();return e?s.filter(t=>[sk(t),ak(t,`email`,`candidateEmail`,`candidate_email`),ak(t,`status`,`onboardingStatus`,`onboarding_status`)].some(t=>String(t).toLowerCase().includes(e))):s},[s,f]);async function w(){if(!S){y(`Select a batch before adding candidates`);return}let n=s.filter(e=>u.includes(lk(e)));if(!n.length)return;let a=n.map(e=>({record:e,assignment:b.get(ck(e))})).filter(e=>e.assignment);if(a.length){y(`${a.map(({record:e})=>sk(e)).join(`, `)} ${a.length===1?`is`:`are`} already added to a batch. Each candidate can be added to only one batch.`);return}_(!0),y(``);try{let{userId:a}=t.o(),s=uk(r.selectedRecords?.[0])||uk(r);await Promise.all(n.map(t=>e.Jn(`batchCandidates`,{schemaVersion:1,batchId:S,batchName:s,candidateId:ck(t),workforceEngagementId:lk(t),source:`ONBOARDING`,assignmentStatus:`ASSIGNED`,assignedAt:new Date().toISOString(),assignedBy:a??0,isDeleted:!1}))),o.message.success(`${n.length} candidate${n.length===1?``:`s`} added to the batch`),i?.({refresh:!0})}catch(e){y(e.message||`Unable to add candidates to the batch`)}finally{_(!1)}}return(0,c.jsxs)(o.Modal,{open:n,title:`Add Candidate to Batch`,okText:`Add`,onOk:w,onCancel:()=>i?.(),okButtonProps:{disabled:u.length===0||!S,loading:g},cancelButtonProps:{disabled:g},closable:!g,maskClosable:!1,width:760,centered:!0,children:[v&&(0,c.jsx)(o.Alert,{type:`error`,showIcon:!0,message:v,style:{marginBottom:12}}),(0,c.jsx)(o.Input.Search,{allowClear:!0,placeholder:`Search onboarding candidates`,value:f,onChange:e=>p(e.target.value),style:{marginBottom:12}}),(0,c.jsx)(o.Table,{rowKey:e=>lk(e),columns:[{title:`Candidate`,key:`candidate`,render:(e,t)=>sk(t)},{title:`Email`,key:`email`,render:(e,t)=>ak(t,`email`,`candidateEmail`,`candidate_email`)||`—`},{title:`Onboarding status`,key:`status`,render:(e,t)=>ak(t,`status`,`onboardingStatus`,`onboarding_status`)||`—`}],dataSource:C,loading:m,size:`small`,pagination:{pageSize:10,showSizeChanger:!1},rowSelection:{selectedRowKeys:u,onChange:d,getCheckboxProps:e=>{let t=b.get(ck(e));return{disabled:!ck(e)||!lk(e)||!!t,title:t?`Candidate is already added to a batch`:void 0}}},locale:{emptyText:m?`Loading candidates…`:`No onboarding candidates found`}})]})}var fk={text:`input`,string:`input`,textarea:`textarea`,date:`date-picker`,datepicker:`date-picker`,multiselect:`multi-select`,lookup:`search-select`};function pk(e){if(!e)return null;let t=[...e.groups??[]].sort((e,t)=>Number(e.order??0)-Number(t.order??0)).flatMap(e=>[...e.fields??[]].filter(e=>e.show!==0&&e.show!==!1).sort((e,t)=>Number(e.order??0)-Number(t.order??0)).map(e=>({...e,name:e.name??e.field,label:e.label??e.field,type:fk[String(e.type??`text`).toLowerCase()]??e.type??`input`,required:e.required??e.req===1,options:(e.options??[]).map(e=>({label:e.label??e.name??e.value,value:e.value??e.id??e.label}))}))),n=mk(e.successNavigate);return{title:e.label,fields:t,...n?{successNavigate:n}:{}}}function mk(e){let t=String(e??``).trim();return!t||!t.startsWith(`/`)||t.startsWith(`//`)||/^[a-z][a-z0-9+.-]*:/i.test(t)?null:t}function hk(e,t=[]){if(!e||!Array.isArray(t)||!t.length)return e;let n=new Map(t.filter(e=>e?.name).map(e=>[String(e.name),e]));return n.size?{...e,fields:(e.fields??[]).map(r=>{let i=n.get(String(r.name))??n.get(String(r.label))??(n.size===1&&(e.fields??[]).length===1?t[0]:null);if(!i)return r;let{name:a,...o}=i;return{...r,...o}})}:e}function gk({apiMap:n={},extraConfigs:r={}}){let i=(0,a.useMemo)(()=>({...rk,...n}),[n]),o=(0,a.useMemo)(()=>{let e={...nk};return Object.entries(r).forEach(([t,n])=>{e[t]={...e[t]??{},...n}}),e},[r]),{popupKey:s}=(0,u.useParams)(),l=(0,u.useNavigate)(),{state:d={}}=(0,u.useLocation)(),[f,p]=(0,a.useState)({key:``,config:null});(0,a.useEffect)(()=>{let t=!1;if(!s||!d.moduleName)return;let n=`${d.moduleName}:${s}`;return e.yr(d.moduleName,`popup`,s).then(e=>{t||p({key:n,config:pk(e[0])})}).catch(()=>{t||p({key:n,config:null})}),()=>{t=!0}},[s,d.moduleName]);let m=(0,a.useMemo)(()=>{let e=o[s],t=`${d.moduleName}:${s}`,n=f.key===t?f.config:null;return hk(n?{...e,...n}:e,d.popupAction?.popupFieldOverrides)},[f,o,s,d.moduleName,d.popupAction?.popupFieldOverrides]),h=(0,a.useMemo)(()=>({selectedIds:d.selectedIds??[],selectedRecords:d.selectedRecords??[],moduleName:d.moduleName??``,navigate:l,background:d.background??null,...d.popupContext??{}}),[l,d.selectedIds,d.selectedRecords,d.moduleName,d.popupContext,d.background]),g=(0,a.useMemo)(()=>{let e=d.popupAction;return e?.apiPath?{submit:(n,r)=>{let i=String(e.apiMethod||`POST`).toUpperCase();return t.a(t.b,e.apiPath.startsWith(`/`)?e.apiPath:`/${e.apiPath}`,{method:i,body:[`GET`,`DELETE`].includes(i)?void 0:JSON.stringify({...n,selectedIds:r.selectedIds,selectedRecords:r.selectedRecords,moduleName:r.moduleName})})}}:{}},[d.popupAction]),_=e=>{let t=d.background;if(e?.success&&m?.successNavigate){l(m.successNavigate,{replace:!0,state:{refreshTimestamp:Date.now()}});return}if(e?.success&&t?.pathname){l(`${t.pathname}${t.search??``}`,{replace:!0,state:{...t.state??{},refreshTimestamp:Date.now()}});return}l(-1)};return s===`add-batch-candidate`?(0,c.jsx)(dk,{open:!0,context:h,onClose:_}):(0,c.jsx)($E,{open:!0,config:m,context:h,onClose:_,api:{...i[s]??{},...g}})}var _k={title:`Vendor Share`,maxVendorSelect:1e3,defaultTab:`myVendor`,defaultPageSize:10,vendorTabs:[{key:`myVendor`,label:`My Vendors`},{key:`allVendor`,label:`All Vendors`}],vendorColumns:[{title:`Vendor Name`,dataIndex:`vendorName`,key:`vendorName`},{title:`Email`,dataIndex:`vendorEmail`,key:`vendorEmail`},{title:`Location`,dataIndex:`vendorLocation`,key:`vendorLocation`},{title:`Updated On`,dataIndex:`updatedOn`,key:`updatedOn`}]},vk={getVendorList:({jobId:e,limit:t,offset:n,type:r})=>sn({jobId:e,limit:t,offset:n,sortBy:`new`,type:r}),getMailDetails:e=>cn(e),submit:({jobId:e,toMail:t,ccMail:n,bccMail:r,subject:i,contents:a})=>un({jobId:e,toMail:t,ccMail:n,bccMail:r,subject:i,contents:a})},yk=_k.vendorColumns.map(e=>({...e,render:e=>e||`-`}));function bk(){let e=(0,u.useNavigate)(),t=(0,u.useLocation)(),{selectedIds:n=[],selectedRecords:r=[],recipients:i=[],subject:l=``,onSend:d,moduleName:f=``,popupAction:p={}}=t.state??{},m=n[0]??r[0]?._id??r[0]?.id,[h,g]=(0,a.useState)({to:i.join(`, `),cc:``,bcc:``,subject:l,contents:``,showCc:!1,showBcc:!1}),[_,v]=(0,a.useState)(!m),[y,b]=(0,a.useState)(_k.defaultTab),[x,S]=(0,a.useState)(``),[C,w]=(0,a.useState)([]),[T,E]=(0,a.useState)(0),[D,O]=(0,a.useState)(0),[k,A]=(0,a.useState)(0),[j,M]=(0,a.useState)(1),[N,P]=(0,a.useState)(_k.defaultPageSize),[F,I]=(0,a.useState)(!1),[L,R]=(0,a.useState)([]);(0,a.useEffect)(()=>{if(!m)return;let e=!1;I(!0);let t=x?100:N,n=x?0:(j-1)*N;return vk.getVendorList({jobId:m,limit:t,offset:n,type:y}).then(t=>{if(e)return;let n=t?.data?.vendorList??t?.data??[],r=t?.data?.myVendorCount??0,i=t?.data?.allVendorCount??0;w(Array.isArray(n)?n:[]),E(r),O(i),A(y===`myVendor`?r:i)}).catch(()=>{e||(w([]),A(0))}).finally(()=>{e||I(!1)}),()=>{e=!0}},[m,y,j,N,x]),(0,a.useEffect)(()=>{m&&vk.getMailDetails(m).then(e=>g(t=>({...t,subject:e.subject||t.subject,contents:e.contents||t.contents,to:e.toMail?.length?Array.isArray(e.toMail)?e.toMail.join(`, `):String(e.toMail):t.to,cc:e.ccMail?.length?Array.isArray(e.ccMail)?e.ccMail.join(`, `):String(e.ccMail):t.cc}))).catch(()=>{}).finally(()=>v(!0))},[m]);let z=(0,a.useMemo)(()=>L.map(e=>C.find(t=>t.vendorId===e)?.vendorEmail??``).filter(Boolean),[L,C]),B=(0,a.useMemo)(()=>({...h,bcc:[...new Set([...Uw(h.bcc),...z])].join(`, `),showBcc:h.showBcc||z.length>0}),[h,z]);function ee(e){let t=new Set(z);g({...e,bcc:Uw(e.bcc).filter(e=>!t.has(e)).join(`, `)})}let V=(Uw(B.to).length||Uw(B.bcc).length)&&Ww(B.to)&&Ww(B.cc)&&Ww(B.bcc)&&B.subject.trim(),H=e=>e===`myVendor`?T:D;function U(){e(-1)}function te(){V&&vk.submit({jobId:m,toMail:Uw(B.to),ccMail:Uw(B.cc),bccMail:Uw(B.bcc),subject:B.subject,contents:B.contents}).then(t=>{t?.status===!0?(o.message.success(t?.data||`Mail sent successfully.`),typeof d==`function`&&d({...B,message:B.contents,selectedIds:n}),e(-1)):o.message.error(t?.message||t?.data||`Failed to send mail. Please try again.`)}).catch(e=>{o.message.error(e?.message||`Failed to send mail. Please try again.`)})}let ne=(0,a.useMemo)(()=>{if(!x)return C;let e=x.toLowerCase();return C.filter(t=>(t.vendorName??``).toLowerCase().includes(e)||(t.vendorEmail??``).toLowerCase().includes(e)||(t.vendorLocation??``).toLowerCase().includes(e))},[C,x]);return(0,c.jsx)(o.Drawer,{open:!0,placement:`right`,onClose:U,closable:!1,rootClassName:`vendor-share`,width:`95%`,footer:(0,c.jsxs)(`div`,{className:`vendor-share__footer`,children:[(0,c.jsx)(o.Button,{onClick:U,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,disabled:!V,onClick:te,children:`Send`})]}),children:(0,c.jsxs)(`div`,{className:`vendor-share__body`,children:[(0,c.jsxs)(`div`,{className:`vendor-share__left`,children:[(0,c.jsxs)(`div`,{className:`vendor-share__vendor-header`,children:[(0,c.jsxs)(`div`,{className:`vendor-share__vendor-header-row`,children:[(0,c.jsx)(o.Button,{type:`text`,icon:(0,c.jsx)(s.CloseOutlined,{}),onClick:U,size:`small`,style:{marginRight:8}}),(0,c.jsx)(`span`,{className:`dynamic-popup__header-icon-box`,children:(0,c.jsx)(s.TeamOutlined,{})}),(0,c.jsx)(`span`,{className:`dynamic-popup__header-label`,children:`Vendor List`}),(0,c.jsxs)(`div`,{className:`vendor-share__vendor-search`,children:[(0,c.jsx)(s.SearchOutlined,{className:`vendor-share__search-icon`}),(0,c.jsx)(o.Input,{variant:`borderless`,placeholder:`Search vendor`,value:x,onChange:e=>{S(e.target.value),M(1)},className:`vendor-share__search-input`})]})]}),(0,c.jsx)(`div`,{className:`vendor-share__vendor-tabs`,children:_k.vendorTabs.map(e=>(0,c.jsxs)(`span`,{className:`vendor-share__vendor-tab${y===e.key?` vendor-share__vendor-tab--active`:``}`,onClick:()=>{b(e.key),M(1),R([])},children:[e.label,` (`,H(e.key),`)`]},e.key))})]}),(0,c.jsx)(`div`,{className:`vendor-share__vendor-table-wrapper`,children:(0,c.jsx)(o.Table,{rowKey:e=>e.vendorId,columns:yk,dataSource:ne,loading:F,pagination:!1,size:`small`,rowSelection:{selectedRowKeys:L,onChange:e=>{e.length>_k.maxVendorSelect||R(e)}},scroll:{y:`calc(100vh - 340px)`}})}),(0,c.jsx)(`div`,{className:`vendor-share__vendor-footer`,children:(0,c.jsx)(Ne,{current:j,pageSize:N,total:k,onChange:e=>M(e),onPageSizeChange:e=>P(e)})})]}),(0,c.jsx)(`div`,{className:`vendor-share__right`,children:(0,c.jsx)(nT,{value:B,onChange:ee,moduleName:f,defaultTemplateId:p.defaultTemplateId??t.state?.defaultTemplateId??``,ready:_,contextRecords:r,title:`Share`,hint:`Select vendors or add email addresses`,bccHint:`Vendor emails are added automatically`,afterBcc:L.length>0?(0,c.jsxs)(`div`,{className:`vendor-share__selected-count`,children:[L.length,` / `,_k.maxVendorSelect,` Vendors selected`]}):null})})]})})}var xk={EMAIL:/^[a-zA-Z0-9._%+-]+@[a-zA-Z][a-zA-Z-]*\.[a-zA-Z]{2,}$/,PHONE:/^[0-9]{10}$/,PASSWORD:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/,ALPHABETS:/^[A-Za-z ]+$/,ALPHANUMERIC:/^(?!\s)[A-Za-z0-9 ]+$/,NUMBER:/^[0-9]+$/,URL:/^(https?:\/\/)?(www\.)?([a-zA-Z0-9-]+\.)+(com|org|net|in|co|io|gov|edu)(\/[^\s]*)?$/i,CANDIDATE_ID:/^[A-Za-z0-9-]+$/,REMARKS:/^[A-Za-z0-9\s.,'"\-()!?/@#$%&]*$/,DESIGNATION:/^[a-zA-Z0-9\s,.\-&()]{2,100}$/,DOB:/^(0[1-9]|1[0-2])\/(0[1-9]|[12][0-9]|3[01])\/\d{4}$/,COMPANY_NAME:/^[A-Za-z0-9\s&.,'()-]+$/,FIRST_NAME:/^[A-Z][a-zA-Z]*$/,FULL_NAME:/^[A-Z][a-zA-Z]*(?: [A-Z][a-zA-Z]*)*$/,NO_SPACES:/^\S+$/,STARTS_WITH_CAPITAL:/^[A-Z].*$/},Sk={SINGLE_FILE_COUNT:1,MULTI_FILE_COUNT:5,MAX_FILE_SIZE:2,ALLOWED_FILE_TYPES:[`image/jpeg`,`image/png`,`application/pdf`]},Ck={REQUIRED:e=>`Mandatory Field`,INVALID_EMAIL:`Please enter a valid email address.`,INVALID_PHONE:`Phone number must contain exactly 10 digits.`,INVALID_PASSWORD:`Password must contain uppercase, lowercase, number, special character and minimum 8 characters.`,INVALID_ALPHABETS:`Only alphabets and spaces are allowed.`,INVALID_ALPHANUMERIC:`Only letters, numbers and spaces are allowed.`,INVALID_NUMBER:`Only numbers are allowed.`,INVALID_URL:`Please enter a valid URL.`,INVALID_CANDIDATE_ID:e=>`${e} can contain only letters, numbers and hyphens.`,INVALID_REMARKS:`Remarks contain invalid characters.`,INVALID_DESIGNATION:`Designation contains invalid characters.`,INVALID_DOB:`DOB must be in MM/DD/YYYY format.`,INVALID_LINKEDIN:`Please enter a valid LinkedIn URL.`,INVALID_COMPANY_NAME:`Company name contains invalid characters.`,INVALID_FIRST_NAME:`First letter must be capital and spaces are not allowed.`,INVALID_FULL_NAME:`Each word must start with a capital letter.`,NO_SPACES_ALLOWED:`Spaces are not allowed.`,MUST_START_WITH_CAPITAL:`First letter must be capital.`,INVALID_FILE_TYPE:`Only JPG, PNG and PDF files are allowed.`,INVALID_FILE_SIZE:`File upload must be ${Sk.MAX_FILE_SIZE} MB below.`,INVALID_FILE_TYPE:`Only JPG, PNG and PDF files are allowed.`,SINGLE_FILE_ONLY:`Only one file can be uploaded.`},wk={FIRST_NAME_MIN:3,FIRST_NAME_MAX:30},Tk={REMARKS_MIN:10,REMARKS_MAX:250},Ek={removeSpaces:(e=``)=>e.replace(/\s/g,``),capitalizeFirstLetter:(e=``)=>e.charAt(0).toUpperCase()+e.slice(1),capitalizeWords:(e=``)=>e.replace(/\b\w/g,e=>e.toUpperCase()),removeExtraSpaces:(e=``)=>e.replace(/\s+/g,` `).trim(),firstNameFormatter:(e=``)=>e.replace(/\s+/g,` `).trimStart().replace(/\b\w/g,e=>e.toUpperCase()),fullNameFormatter:(e=``)=>e.replace(/\s+/g,` `).trimStart().replace(/\b\w/g,e=>e.toUpperCase()),phoneFormatter:(e=``)=>e.replace(/\D/g,``).slice(0,10),dobFormatter:(e=``)=>{let t=e.replace(/\D/g,``);return t.length<=2?t:t.length<=4?`${t.slice(0,2)}/${t.slice(2)}`:`${t.slice(0,2)}/${t.slice(2,4)}/${t.slice(4,8)}`}},Dk={required:(e=`Field`)=>({required:!0,message:Ck.REQUIRED(e)}),email:()=>({pattern:xk.EMAIL,message:Ck.INVALID_EMAIL}),phone:()=>({pattern:xk.PHONE,message:Ck.INVALID_PHONE}),password:()=>({pattern:xk.PASSWORD,message:Ck.INVALID_PASSWORD}),alphabets:()=>({pattern:xk.ALPHABETS,message:Ck.INVALID_ALPHABETS}),alphanumeric:()=>({pattern:xk.ALPHANUMERIC,message:Ck.INVALID_ALPHANUMERIC}),number:()=>({pattern:xk.NUMBER,message:Ck.INVALID_NUMBER}),url:()=>({pattern:xk.URL,message:Ck.INVALID_URL}),candidateId:(e=`ID`)=>({pattern:xk.CANDIDATE_ID,message:Ck.INVALID_CANDIDATE_ID(e)}),remarks:()=>({pattern:xk.REMARKS,message:Ck.INVALID_REMARKS,REMARKS_MIN:`Remarks must be at least ${Tk.REMARKS_MIN} characters.`,REMARKS_MAX:`Remarks must not exceed ${Tk.REMARKS_MAX} characters.`}),designation:()=>({pattern:xk.DESIGNATION,message:Ck.INVALID_DESIGNATION}),dob:(e=!0)=>({validator:(t,n)=>{if(!n)return e?Promise.reject(Error(`Date of Birth is required.`)):Promise.resolve();if(!xk.DOB.test(n))return Promise.reject(Error(Ck.INVALID_DOB));let r=(0,l.default)(n,`MM/DD/YYYY`,!0);if(!r.isValid())return Promise.reject(Error(Ck.INVALID_DOB));let i=(0,l.default)().endOf(`day`);return r.isAfter(i)?Promise.reject(Error(`Date of Birth cannot be a future date.`)):i.diff(r,`year`)<21?Promise.reject(Error(`Age must be at least 21 years.`)):Promise.resolve()}}),linkedin:()=>({pattern:xk.LINKEDIN,message:Ck.INVALID_LINKEDIN}),companyName:()=>({pattern:xk.COMPANY_NAME,message:Ck.INVALID_COMPANY_NAME}),firstName:()=>({pattern:xk.FIRST_NAME,message:Ck.INVALID_FIRST_NAME,FIRST_NAME_MIN:`First Name must be at least ${wk.FIRST_NAME_MIN} characters.`,FIRST_NAME_MAX:`First Name must not exceed ${wk.FIRST_NAME_MAX} characters.`}),firstNameMinLength:()=>({min:wk.FIRST_NAME_MIN,message:Ck.FIRST_NAME_MIN}),firstNameMaxLength:()=>({max:wk.FIRST_NAME_MAX,message:Ck.FIRST_NAME_MAX}),remarksMinLength:()=>({min:Tk.REMARKS_MIN,message:Ck.REMARKS_MIN}),remarksMaxLength:()=>({max:Tk.REMARKS_MAX,message:Ck.REMARKS_MAX}),fullName:()=>({pattern:xk.FULL_NAME,message:Ck.INVALID_FULL_NAME}),noSpaces:()=>({pattern:xk.NO_SPACES,message:Ck.NO_SPACES_ALLOWED}),startsWithCapital:()=>({pattern:xk.STARTS_WITH_CAPITAL,message:Ck.MUST_START_WITH_CAPITAL}),fileUpload:()=>({validator:(e,t)=>{if(!t||t.length===0)return Promise.resolve();for(let e of t){let t=e.originFileObj||e;if(!(t.size/1024/1024<=Sk.MAX_FILE_SIZE))return o.message.error(Ck.INVALID_FILE_SIZE),Promise.reject(Error(Ck.INVALID_FILE_SIZE));if(!Sk.ALLOWED_FILE_TYPES.includes(t.type))return Promise.reject(Error(Ck.INVALID_FILE_TYPE))}return Promise.resolve()}}),singleFileUpload:()=>({validator:(e,t)=>{if(!t||t.length===0)return Promise.resolve();if(t.length>Sk.SINGLE_FILE_COUNT)return Promise.reject(Error(Ck.SINGLE_FILE_ONLY));let n=t[0];return n.size/1024/1024<Sk.MAX_FILE_SIZE?Sk.ALLOWED_FILE_TYPES.includes(n.type)?Promise.resolve():Promise.reject(Error(Ck.INVALID_FILE_TYPE)):Promise.reject(Error(Ck.INVALID_FILE_SIZE))}}),multiFileUpload:()=>({validator:(e,t)=>{if(!t||t.length===0)return Promise.resolve();if(t.length>Sk.MULTI_FILE_COUNT)return Promise.reject(Error(Ck.INVALID_FILE_COUNT));for(let e of t){if(!(e.size/1024/1024<Sk.MAX_FILE_SIZE))return Promise.reject(Error(Ck.INVALID_FILE_SIZE));if(!Sk.ALLOWED_FILE_TYPES.includes(e.type))return Promise.reject(Error(Ck.INVALID_FILE_TYPE))}return Promise.resolve()}})},Ok={beforeUpload:e=>[`image/jpeg`,`image/png`,`application/pdf`].includes(e.type)?e.size/1024/1024<=2?!1:(o.message.error(`File upload must be 2 MB below.`),o.Upload.LIST_IGNORE):(o.message.error(`Only JPG, PNG and PDF files are allowed.`),o.Upload.LIST_IGNORE)},kk=()=>{let[e]=o.Form.useForm();return(0,c.jsx)(`div`,{style:{padding:24},children:(0,c.jsxs)(o.Form,{form:e,layout:`vertical`,onFinish:e=>{console.log(`Form Values:`,e)},autoComplete:`off`,children:[(0,c.jsxs)(o.Row,{gutter:16,children:[(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`Email`,name:`email`,rules:[Dk.required(`Email`),Dk.email()],children:(0,c.jsx)(o.Input,{})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`Phone Number`,name:`phone`,rules:[Dk.required(`Phone Number`),Dk.phone()],validateTrigger:[`onBlur`,`onChange`],children:(0,c.jsx)(o.Input,{maxLength:10,onChange:t=>{e.setFieldsValue({phone:Ek.phoneFormatter(t.target.value)})}})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`Password`,name:`password`,rules:[Dk.required(`Password`),Dk.password()],children:(0,c.jsx)(o.Input.Password,{})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`Full Name`,name:`fullName`,rules:[Dk.required(`Full Name`),Dk.alphabets(),Dk.firstNameMinLength(),Dk.firstNameMaxLength()],children:(0,c.jsx)(o.Input,{onChange:t=>{e.setFieldsValue({fullName:Ek.firstNameFormatter(t.target.value)})}})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`Username`,name:`username`,rules:[Dk.required(`Username`),Dk.alphanumeric()],children:(0,c.jsx)(o.Input,{onChange:t=>{e.setFieldsValue({username:Ek.removeExtraSpaces(t.target.value)})}})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`Website URL`,name:`website`,rules:[Dk.required(`Website URL`),Dk.url()],children:(0,c.jsx)(o.Input,{onChange:t=>{e.setFieldsValue({website:Ek.removeExtraSpaces(t.target.value)})}})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`MSP Req ID`,name:`mspreqID`,rules:[Dk.required(`MSP Req ID`),Dk.candidateId(`MSP Req ID`)],children:(0,c.jsx)(o.Input,{onChange:t=>{e.setFieldsValue({mspreqID:Ek.removeExtraSpaces(t.target.value)})}})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`Candidate ID`,name:`candidateId`,rules:[Dk.required(`Candidate ID`),Dk.candidateId(`Candidate ID`)],children:(0,c.jsx)(o.Input,{onChange:t=>{e.setFieldsValue({candidateId:Ek.removeExtraSpaces(t.target.value)})}})})}),(0,c.jsx)(o.Col,{span:24,children:(0,c.jsx)(o.Form.Item,{label:`Remarks`,name:`remarks`,rules:[Dk.required(`Remarks`),Dk.remarks(),Dk.remarksMinLength(),Dk.remarksMaxLength()],children:(0,c.jsx)(o.Input.TextArea,{rows:4})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`Designation`,name:`designation`,rules:[Dk.required(`Designation`),Dk.designation()],children:(0,c.jsx)(o.Input,{})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`Date of Birth`,name:`dob`,rules:[Dk.dob()],children:(0,c.jsx)(o.Input,{placeholder:`MM/DD/YYYY`,maxLength:10,onChange:t=>{e.setFieldsValue({dob:Ek.dobFormatter(t.target.value)})}})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`Company Name`,name:`companyName`,rules:[Dk.required(`Company Name`),Dk.companyName()],children:(0,c.jsx)(o.Input,{})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{name:`contractType`,label:`Contract Type`,children:(0,c.jsxs)(o.Select,{showSearch:!0,allowClear:!0,filterOption:(e,t)=>(t?.label??``).toLowerCase().includes(e.toLowerCase()),children:[(0,c.jsx)(o.Select.Option,{value:`C2C`,label:`C2C`,children:`C2C`}),(0,c.jsx)(o.Select.Option,{value:`W2-Contract`,label:`W2-Contract`,children:`W2-Contract`}),(0,c.jsx)(o.Select.Option,{value:`W2-Fulltime`,label:`W2-Fulltime`,children:`W2-Fulltime`}),(0,c.jsx)(o.Select.Option,{value:`1099`,label:`1099`,children:`1099`})]})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{name:`candidateProposedRateCurrency`,label:`Currency`,children:(0,c.jsxs)(o.Select,{showSearch:!0,allowClear:!0,children:[(0,c.jsx)(o.Select.Option,{value:`$`,children:`$`}),(0,c.jsx)(o.Select.Option,{value:`₹`,children:`₹`}),(0,c.jsx)(o.Select.Option,{value:`€`,children:`€`}),(0,c.jsx)(o.Select.Option,{value:`zł`,children:`zł`}),(0,c.jsx)(o.Select.Option,{value:`£`,children:`£`}),(0,c.jsx)(o.Select.Option,{value:`kr`,children:`kr`}),(0,c.jsx)(o.Select.Option,{value:`Fr`,children:`Fr`}),(0,c.jsx)(o.Select.Option,{value:`kr`,children:`kr`})]})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`Resume new`,name:`resume`,children:(0,c.jsx)(o.Upload,{beforeUpload:Ok.beforeUpload,maxCount:1,children:(0,c.jsx)(o.Button,{children:`Upload Resume`})})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`Documents`,name:`documents`,valuePropName:`fileList`,getValueFromEvent:e=>e?.fileList,rules:[Dk.multiFileUpload()],children:(0,c.jsx)(o.Upload,{multiple:!0,beforeUpload:Ok.beforeUpload,children:(0,c.jsx)(o.Button,{children:`Upload Documents`})})})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{label:`Upload File`,name:`file`,valuePropName:`fileList`,getValueFromEvent:e=>e?.fileList,rules:[Dk.fileUpload()],children:(0,c.jsx)(o.Upload,{beforeUpload:Ok.beforeUpload,maxCount:1,children:(0,c.jsx)(o.Button,{children:`Upload`})})})})]}),(0,c.jsx)(o.Row,{children:(0,c.jsx)(o.Form.List,{name:`users`,children:(e,{add:t,remove:n})=>(0,c.jsxs)(c.Fragment,{children:[e.map(({key:e,name:t,...r})=>(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.Col,{span:12,children:(0,c.jsx)(o.Form.Item,{required:!0,...r,rules:[{required:!0,message:`First name is requried`}],name:[t,`first`],children:(0,c.jsx)(o.Input,{placeholder:`First Name`})})}),(0,c.jsx)(o.Col,{span:11,children:(0,c.jsx)(o.Form.Item,{...r,required:!0,name:[t,`last`],children:(0,c.jsx)(o.Input,{placeholder:`Last Name`})})}),(0,c.jsx)(o.Col,{span:1,children:(0,c.jsx)(s.MinusCircleOutlined,{onClick:()=>n(t)})})]})),(0,c.jsx)(o.Form.Item,{children:(0,c.jsx)(o.Button,{type:`dashed`,onClick:()=>t(),block:!0,icon:(0,c.jsx)(s.PlusOutlined,{}),children:`Add field`})})]})})}),(0,c.jsxs)(o.Form.Item,{children:[(0,c.jsx)(o.Button,{type:`primary`,htmlType:`submit`,children:`Submit`}),(0,c.jsx)(o.Button,{style:{marginLeft:10},onClick:()=>e.resetFields(),children:`Reset`})]})]})})};function Ak(e){return(0,c.jsx)(Dv,{children:(0,c.jsx)(Rw,{...e})})}var{Text:jk}=o.Typography,Mk=[{label:`Total Jobs`,value:1697,icon:`fileText`},{label:`Active Jobs`,value:1685,icon:`checkCircle`},{label:`My Jobs`,value:600,icon:`user`}],Nk={fileText:(0,c.jsx)(s.FileTextOutlined,{}),checkCircle:(0,c.jsx)(s.CheckCircleOutlined,{}),user:(0,c.jsx)(s.UserOutlined,{}),filter:(0,c.jsx)(s.FilterOutlined,{})};function Pk({stats:e=Mk}){return(0,c.jsx)(o.Card,{children:(0,c.jsx)(o.Row,{gutter:[12,12],children:e.map(e=>(0,c.jsx)(o.Col,{xs:24,sm:24,md:8,lg:8,xl:8,children:(0,c.jsxs)(o.Card,{className:`stats-inner-card`,children:[(0,c.jsxs)(o.Space,{align:`center`,children:[Nk[e.icon]??Nk.fileText,(0,c.jsx)(jk,{children:e.label})]}),(0,c.jsx)(o.Statistic,{value:e.value})]})},e.label))})})}var{Text:Fk}=o.Typography;function Ik(e){return e?.USER_NAME??e?.user_name??e?.username??e?.name??e?.full_name??e?.fullName??e?.email??`User ${e?.USER_ID??e?.user_id??`?`}`}function Lk(e){return{...e,key:e.USER_ID??e.user_id??e.userId??e.id??e._id,_name:Ik(e),_email:e.email??e.EMAIL??e.user_email??``,_role:e.role_name??e.roleName??e.ROLE_NAME??``,_rawRef:e}}function Rk(){let[t,n]=(0,a.useState)([]),[r,i]=(0,a.useState)(0),[l,u]=(0,a.useState)(!1),[d,f]=(0,a.useState)(1),[p,m]=(0,a.useState)(10),[h,g]=(0,a.useState)(``),_=(0,a.useCallback)(async({offset:t,limit:r,searchQuery:a}={})=>{u(!0);try{let o=await e.fr({offset:t,limit:r,searchQuery:a??``}),s=(o.users??[]).map(Lk);n(s),i(o.total??s.length)}catch{o.message.error(`Failed to load users`)}finally{u(!1)}},[]);return(0,a.useEffect)(()=>{queueMicrotask(()=>{_({offset:(d-1)*p,limit:p,searchQuery:h})})},[_,d,p,h]),(0,c.jsx)(Z,{icon:(0,c.jsx)(s.TeamOutlined,{}),title:`Users`,style:{marginBottom:0},bodyStyle:{padding:0},children:(0,c.jsx)(om,{listName:`Users`,dataSource:t,fields:[{label:`Name`,value:`_name`,width:220,render:(e,t)=>(0,c.jsxs)(`div`,{children:[(0,c.jsx)(Fk,{strong:!0,style:{fontSize:13},children:e}),t._email&&(0,c.jsx)(`div`,{style:{fontSize:11,color:`var(--color-text-muted)`},children:t._email})]})},{label:`Role`,value:`_role`,width:180}],loading:l,total:r,current:d,pageSize:p,onPageChange:e=>f(e),onPageSizeChange:e=>{m(e),f(1)},onSearch:e=>{g(e),f(1)}})})}var{Text:zk}=o.Typography,Bk=[{key:`job`,label:`Jobs`},{key:`candidate`,label:`Candidates`},{key:`submissions`,label:`Submissions`}],Vk=[{key:`listView`,label:`List View`},{key:`filter`,label:`Filter`},{key:`form`,label:`Form`}];function Hk({field:e,index:t,onToggle:n,onReorder:r}){let i=(0,a.useRef)(null),[l,u]=(0,a.useState)(!1),[d,f]=(0,a.useState)(!1);function p(e){i.current=t,e.dataTransfer.effectAllowed=`move`,f(!0)}function m(){f(!1),u(!1)}function h(e){e.preventDefault(),u(!0)}function g(){u(!1)}function _(e){e.preventDefault(),u(!1),i.current!==null&&i.current!==t&&r(i.current,t),i.current=null}return(0,c.jsxs)(`div`,{draggable:!0,onDragStart:p,onDragEnd:m,onDragOver:h,onDragLeave:g,onDrop:_,className:`uss-field-row with-edit${l?` drag-over`:``}${d?` dragging`:``}`,children:[(0,c.jsx)(`span`,{className:`uss-drag-handle`,children:(0,c.jsx)(s.HolderOutlined,{})}),(0,c.jsxs)(`span`,{className:`uss-field-name`,children:[e.fieldName,(0,c.jsx)(`span`,{className:`uss-field-key`,children:e.fieldKey})]}),(0,c.jsx)(`span`,{className:`uss-toggle-cell`,children:(0,c.jsx)(o.Switch,{size:`small`,checked:e.isVisible,onChange:e=>n(t,`isVisible`,e)})}),(0,c.jsx)(`span`,{className:`uss-toggle-cell`,children:(0,c.jsx)(o.Switch,{size:`small`,checked:!!e.isEditable,onChange:e=>n(t,`isEditable`,e)})}),(0,c.jsx)(`span`,{className:`uss-toggle-cell`,children:(0,c.jsx)(o.Switch,{size:`small`,checked:!!e.ismandatory,onChange:e=>n(t,`ismandatory`,e)})})]})}function Uk({team:t,configType:n}){let[r,i]=(0,a.useState)({}),[s,l]=(0,a.useState)(!1),[u,d]=(0,a.useState)({}),[f,p]=(0,a.useState)(`job`);(0,a.useEffect)(()=>{t&&(l(!0),e.Hr(t,n).then(i).catch(()=>o.message.error(`Failed to load field config`)).finally(()=>l(!1)))},[t,n]);let m=r[f]??[];function h(e,t){i(n=>({...n,[e]:typeof t==`function`?t(n[e]??[]):t}))}function g(e,t,n){h(f,r=>r.map((r,i)=>i===e?{...r,[t]:n}:r))}function _(e,t){h(f,n=>{let r=[...n],[i]=r.splice(e,1);return r.splice(t,0,i),r.map((e,t)=>({...e,order:t}))})}async function v(){let r=f;d(e=>({...e,[r]:!0}));try{await e.pi(t,r,m,n),o.message.success(`Saved`)}catch{o.message.error(`Save failed`)}finally{d(e=>({...e,[r]:!1}))}}return(0,c.jsxs)(o.Spin,{spinning:s,children:[(0,c.jsx)(o.Tabs,{size:`small`,activeKey:f,onChange:p,items:Bk.map(e=>({key:e.key,label:e.label}))}),(0,c.jsxs)(`div`,{className:`uss-field-header with-edit`,children:[(0,c.jsx)(`span`,{}),(0,c.jsx)(`span`,{children:`Field`}),(0,c.jsx)(`span`,{style:{textAlign:`center`},children:`Visible`}),(0,c.jsx)(`span`,{style:{textAlign:`center`},children:`Editable`}),(0,c.jsx)(`span`,{style:{textAlign:`center`},children:`Mandatory`})]}),(0,c.jsxs)(`div`,{className:`uss-field-list`,children:[m.length===0&&!s&&(0,c.jsx)(`div`,{className:`uss-empty`,children:`No fields found.`}),m.map((e,t)=>(0,c.jsx)(Hk,{field:e,index:t,onToggle:g,onReorder:_},e.fieldKey??t))]}),(0,c.jsx)(`div`,{className:`uss-modal-footer`,children:(0,c.jsxs)(o.Button,{type:`primary`,size:`small`,loading:u[f],onClick:v,children:[`Save `,Bk.find(e=>e.key===f)?.label]})})]})}function Wk(){let[t,n]=(0,a.useState)(null),[r,i]=(0,a.useState)(!1),[l,u]=(0,a.useState)(!1),[d,f]=(0,a.useState)(`listView`),[p,m]=(0,a.useState)([]),[h,g]=(0,a.useState)(0),[_,v]=(0,a.useState)(!1),[y,b]=(0,a.useState)(``),[x,S]=(0,a.useState)(!1),C=(0,a.useCallback)(async()=>{v(!0);try{let t=await e.dr();m(t.teams),g(t.total)}catch{o.message.error(`Failed to load teams`)}finally{v(!1)}},[]);(0,a.useEffect)(()=>{C()},[C]);function w(e){n(e),f(`listView`),i(!0)}function T(e){n(e),b(e.teamName??``),u(!0)}async function E(){if(!y.trim()){o.message.warning(`Team name is required`);return}S(!0);try{await e.fi(t,{teamName:y.trim(),managerId:t.managerId,memberIds:t.memberIds}),o.message.success(`Team updated`),u(!1),C()}catch{o.message.error(`Failed to update team`)}finally{S(!1)}}return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(Z,{icon:(0,c.jsx)(s.TeamOutlined,{}),title:`Teams`,style:{marginBottom:0},bodyStyle:{padding:0},children:(0,c.jsx)(om,{listName:`Teams`,dataSource:p,fields:[{label:`Team Name`,value:`teamName`,width:200},{label:`Manager`,value:`manager`,width:200},{label:`Members`,value:`memberCount`,width:90,sorter:!1},{label:`Actions`,value:`_actions`,width:160,sorter:!1,render:(e,t)=>(0,c.jsxs)(`div`,{style:{display:`flex`,gap:4},children:[(0,c.jsx)(o.Button,{size:`small`,type:`link`,onClick:()=>T(t),children:`Edit`}),(0,c.jsx)(o.Button,{size:`small`,type:`link`,onClick:()=>w(t),children:`Configure`})]})}],loading:_,total:h})}),(0,c.jsx)(o.Modal,{open:l,onCancel:()=>u(!1),title:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(s.TeamOutlined,{style:{color:`var(--color-brand)`,marginRight:6}}),`Edit Team`]}),width:420,footer:null,destroyOnClose:!0,children:(0,c.jsxs)(`div`,{className:`uss-edit-team-body`,style:{paddingTop:12},children:[(0,c.jsxs)(`div`,{children:[(0,c.jsx)(`div`,{className:`uss-edit-team-label`,children:`Team Name`}),(0,c.jsx)(o.Input,{value:y,onChange:e=>b(e.target.value),onPressEnter:E,placeholder:`Enter team name`})]}),(0,c.jsxs)(`div`,{className:`uss-modal-footer`,children:[(0,c.jsx)(o.Button,{onClick:()=>u(!1),children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,loading:x,onClick:E,children:`Save`})]})]})}),(0,c.jsxs)(o.Modal,{className:`uss-modal`,open:r,onCancel:()=>i(!1),title:(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,c.jsx)(s.TeamOutlined,{style:{color:`var(--color-brand)`}}),(0,c.jsxs)(`span`,{children:[`Configure: `,t?.teamName]})]}),width:720,footer:null,destroyOnClose:!0,children:[(0,c.jsx)(`div`,{style:{marginBottom:12},children:(0,c.jsx)(`div`,{className:`uss-config-toggle`,children:Vk.map(e=>(0,c.jsx)(`button`,{className:`uss-config-btn${d===e.key?` active`:``}`,onClick:()=>f(e.key),children:e.label},e.key))})}),t&&(0,c.jsx)(Uk,{team:t,configType:d},`${t?.teamId}-${d}`)]})]})}var Gk=[`view`,`add`,`edit`,`delete`],Kk={view:`View`,add:`Add`,edit:`Edit`,delete:`Delete`,sourcing:`Sourcing`,assign:`Assign`,share:`Share`,change_status:`Status`,my_jobs:`My Jobs`,all_jobs:`All Jobs`,po_msa:`PO MSA`,reApprove:`ReApprove`,sendApprove:`Send Approve`};function qk(e){return Kk[e]??e.replace(/_/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function Jk(e){let t=Gk.filter(t=>e.includes(t)),n=e.filter(e=>!Gk.includes(e)).sort();return[...t,...n]}function Yk(e){let t=new Set;return Object.values(e).forEach(({permissions:e})=>Object.keys(e??{}).forEach(e=>t.add(e))),Jk([...t])}function Xk(e){let t=0,n=0;return Object.entries(e).forEach(([e,{permissions:r}])=>{Object.entries(r??{}).forEach(([r,{value:i}])=>{Ly(e,r)&&(n++,i===`1`&&t++)})}),{enabled:t,total:n}}function Zk(e={}){if(!e||typeof e!=`object`)return e;let t=Object.keys(e).find(e=>String(e).trim().toLowerCase()===`onboarding`);if(!t)return e;let n=e[t]??{},r={...n.permissions??{}};for(let e of[`sendApprove`,`reApprove`])Object.keys(r).some(t=>t.toLowerCase()===e.toLowerCase())||(r[e]={id:0,value:`0`});return{...e,[t]:{...n,permissions:r}}}function Qk({value:e,onSave:t,className:n}){let[r,i]=(0,a.useState)(!1),[o,l]=(0,a.useState)(e);(0,a.useEffect)(()=>{l(e)},[e]);function u(){i(!1);let n=o.trim();n&&n!==e?t(n):l(e)}return r?(0,c.jsx)(`input`,{autoFocus:!0,className:`perm-inline-input${n?` ${n}`:``}`,value:o,style:{width:Math.max(48,o.length*8)},onChange:e=>l(e.target.value),onBlur:u,onKeyDown:t=>{t.key===`Enter`&&u(),t.key===`Escape`&&(i(!1),l(e)),t.stopPropagation()},onClick:e=>e.stopPropagation()}):(0,c.jsxs)(`span`,{className:`perm-editable-name${n?` ${n}`:``}`,onDoubleClick:e=>{e.stopPropagation(),i(!0)},children:[e,(0,c.jsx)(s.EditOutlined,{className:`perm-name-edit-icon`})]})}function $k({entry:e,label:t,onToggle:n,onLabelSave:r}){let[i,l]=(0,a.useState)(!1),[u,d]=(0,a.useState)(t),f=e?.value===`1`,p=!!e;(0,a.useEffect)(()=>{d(t)},[t]);function m(){l(!1);let e=u.trim();e&&e!==t?r(e):d(t)}return(0,c.jsx)(o.Tooltip,{title:p?f?`Click to disable`:`Click to enable`:`Not applicable for this module`,children:(0,c.jsxs)(`div`,{className:`perm-action-pill${f?` on`:``}${p?``:` na`}`,onClick:()=>{!i&&p&&n()},children:[(0,c.jsx)(`span`,{className:`perm-action-pill-dot${f?` on`:``}`}),i?(0,c.jsx)(`input`,{autoFocus:!0,className:`perm-pill-input`,value:u,style:{width:Math.max(36,u.length*7)},onChange:e=>d(e.target.value),onBlur:m,onKeyDown:e=>{e.key===`Enter`&&m(),e.key===`Escape`&&(l(!1),d(t)),e.stopPropagation()},onClick:e=>e.stopPropagation()}):(0,c.jsx)(`span`,{className:`perm-action-pill-label`,onDoubleClick:e=>{e.stopPropagation(),l(!0)},children:t}),f&&!i&&(0,c.jsx)(s.CheckOutlined,{className:`perm-action-pill-check`})]})})}function eA({menuName:e,menuData:t,permKeys:n,onChange:r,displayName:i,actionLabels:a,onModuleLabelSave:o,onActionLabelSave:s}){let l=t?.permissions??{},u=n.filter(t=>Ly(e,t)),d=u.filter(e=>l[e]?.value===`1`).length,f=u.filter(e=>l[e]).length,p=f>0&&d===f;return(0,c.jsxs)(`div`,{className:`perm-module-card${p?` all-on`:d>0&&!p?` some-on`:``}`,children:[(0,c.jsxs)(`div`,{className:`perm-module-card-header`,children:[(0,c.jsx)(Qk,{value:i,onSave:t=>o(e,t),className:`perm-module-card-name`}),f>0&&(0,c.jsxs)(`span`,{className:`perm-module-card-badge${d>0?` active`:``}`,children:[d,`/`,f]})]}),(0,c.jsx)(`div`,{className:`perm-module-card-body`,children:u.map(t=>(0,c.jsx)($k,{entry:l[t],label:a[t]??qk(t),onToggle:()=>r(e,t),onLabelSave:e=>s(t,e)},t))})]})}function tA({role:t,moduleLabels:n={},actionLabels:r={},onModuleLabelSave:i=()=>{},onActionLabelSave:l=()=>{}}){let[u,d]=(0,a.useState)({}),[f,p]=(0,a.useState)({}),[m,h]=(0,a.useState)(!1),[g,_]=(0,a.useState)(!1),[v,y]=(0,a.useState)(!1),b=e.Lr(t);(0,a.useEffect)(()=>{b&&(h(!0),y(!1),e.Br(b).then(e=>{let t=Zk(e);d(t),p(t)}).catch(()=>o.message.error(`Failed to load permissions`)).finally(()=>h(!1)))},[b]);function x(e,t){y(!0),p(n=>{let r=n[e]??{menuId:u[e]?.menuId??0,permissions:{}},i=r.permissions?.[t]??{id:0,value:`0`};return{...n,[e]:{...r,permissions:{...r.permissions,[t]:{...i,value:i.value===`1`?`0`:`1`}}}}})}async function S(){_(!0);try{await e.ui(b,f),d(f),y(!1),o.message.success(`Permissions saved`)}catch(e){o.message.error(e?.message||`Save failed`)}finally{_(!1)}}let C=(0,a.useMemo)(()=>Object.keys(f).sort(),[f]),w=(0,a.useMemo)(()=>Yk(f),[f]),{enabled:T,total:E}=(0,a.useMemo)(()=>Xk(f),[f]);return(0,c.jsxs)(o.Spin,{spinning:m,children:[(0,c.jsxs)(`div`,{className:`perm-panel-header`,children:[(0,c.jsxs)(`div`,{className:`perm-panel-title`,children:[(0,c.jsx)(s.LockOutlined,{style:{color:`var(--color-brand)`,marginRight:6}}),(0,c.jsx)(`span`,{children:t?.roleName}),!m&&E>0&&(0,c.jsxs)(o.Tag,{color:`blue`,style:{marginLeft:8,fontSize:11},children:[T,`/`,E,` enabled`]})]}),(0,c.jsx)(o.Button,{type:`primary`,size:`small`,icon:(0,c.jsx)(s.UnlockOutlined,{}),loading:g,disabled:!v,onClick:S,children:`Save Changes`})]}),(0,c.jsxs)(`div`,{className:`perm-hint`,children:[(0,c.jsx)(s.InfoCircleOutlined,{className:`perm-hint-icon`}),(0,c.jsxs)(`span`,{children:[`Click a pill to toggle. `,(0,c.jsx)(`strong`,{children:`Double-click`}),` a module name or action label to rename it — labels are saved locally.`]})]}),C.length===0&&!m?(0,c.jsx)(`div`,{className:`perm-empty`,children:`No permission entries found for this role.`}):(0,c.jsx)(`div`,{className:`perm-cards-grid`,children:C.map(e=>(0,c.jsx)(eA,{menuName:e,menuData:f[e],permKeys:w,onChange:x,displayName:n[e]??e,actionLabels:r,onModuleLabelSave:i,onActionLabelSave:l},e))})]})}var{Text:nA}=o.Typography,rA=[{key:`listView`,label:`List View`},{key:`filter`,label:`Filter`},{key:`form`,label:`Form`},{key:`permissions`,label:`Permissions`}];function iA(e){return String(e||``).replace(/[-_]/g,` `).replace(/\b\w/g,e=>e.toUpperCase()).trim()}function aA(e){return String(e||``).trim().toLowerCase()}function oA(e){return e?.key||e?.collectionName||e?.value||``}function sA(e=[],t=[]){let n=[],r=new Set,i=new Set,a=new Set;return e.forEach(e=>{let t=oA(e);if(!t)return;let o=aA(e.key||t),s=aA(e.collectionName);e.seeded&&(i.add(o),s&&i.add(s)),s&&a.add(s),r.add(t),n.push({label:e.label||iA(t),value:t,disabled:!!e.seeded})}),t.forEach(e=>{let t=String(e||``).trim();if(!t||r.has(t))return;let o=aA(t);a.has(o)||i.has(o)||(r.add(t),n.push({label:iA(t),value:t,disabled:!1}))}),n}function cA(){let[t,n]=(0,a.useState)(null),[r,i]=(0,a.useState)(!1),[l,u]=(0,a.useState)(`listView`),[d,f]=(0,a.useState)([]),[p,m]=(0,a.useState)(0),[h,g]=(0,a.useState)(!1),[_,v]=(0,a.useState)([]),[y,b]=(0,a.useState)([]),[x,S]=(0,a.useState)(!1),[C,w]=(0,a.useState)(!1),T=(0,a.useMemo)(()=>_.filter(e=>!e.disabled),[_]),E=!x&&T.length===0,D=(0,a.useCallback)(async()=>{g(!0);try{let t=await e.ur();f(t.roles),m(t.total)}catch{o.message.error(`Failed to load roles`)}finally{g(!1)}},[]),O=(0,a.useCallback)(async()=>{S(!0);try{let[t,n]=await Promise.all([e.Sr(),e.mr()]),r=sA(t.modules,n),i=new Set(r.filter(e=>!e.disabled).map(e=>e.value));v(r),b(e=>e.filter(e=>i.has(e)))}catch{o.message.error(`Failed to load seed status`)}finally{S(!1)}},[]);(0,a.useEffect)(()=>{D()},[D]),(0,a.useEffect)(()=>{O()},[O]);async function k(){if(y.length===0){o.message.warning(E?`All modules already seeded.`:`Select at least one module to seed.`);return}w(!0);try{await e.ti(y),o.message.success(`Role field config seeded`),b([]),await O()}catch(e){o.message.error(e?.message||`Seed failed`)}finally{w(!1)}}function A(e,t=`listView`){n(e),u(t),i(!0)}return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.AppstoreOutlined,{}),title:`Field Config Seed`,style:{marginBottom:12},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:12,flexWrap:`wrap`},children:[(0,c.jsx)(`div`,{style:{minWidth:320,flex:1},children:(0,c.jsx)(o.Select,{mode:`multiple`,allowClear:!0,showSearch:!0,value:y,options:_,placeholder:E?`All modules already seeded`:`Select modules or collections to seed`,disabled:x||C||E,loading:x,onChange:b,style:{width:`100%`}})}),(0,c.jsx)(o.Button,{type:`primary`,loading:C,disabled:x||y.length===0,onClick:k,children:`Seed Field Config`})]}),(0,c.jsx)(nA,{type:`secondary`,style:{display:`block`,marginTop:8,fontSize:12},children:E?`Seed is disabled because all configured modules already have role field config data.`:`Already seeded modules are disabled. New modules or collections can still be seeded.`})]}),(0,c.jsx)(Z,{icon:(0,c.jsx)(s.SafetyOutlined,{}),title:`Roles`,style:{marginBottom:0},bodyStyle:{padding:0},children:(0,c.jsx)(om,{listName:`Roles`,dataSource:d,fields:[{label:`Role Name`,value:`roleName`,width:200},{label:`Description`,value:`description`,width:240},{label:`Users`,value:`userCount`,width:70,sorter:!1},{label:`Actions`,value:`_configure`,width:200,sorter:!1,render:(e,t)=>(0,c.jsxs)(o.Space,{size:2,children:[(0,c.jsx)(o.Button,{size:`small`,type:`link`,onClick:()=>A(t),children:`Configure`}),(0,c.jsx)(o.Button,{size:`small`,type:`link`,icon:(0,c.jsx)(s.LockOutlined,{}),onClick:()=>A(t,`permissions`),children:`Permissions`})]})}],loading:h,total:p})}),(0,c.jsxs)(o.Modal,{className:`uss-modal`,open:r,onCancel:()=>i(!1),title:(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,c.jsx)(s.SafetyOutlined,{style:{color:`var(--color-brand)`}}),(0,c.jsxs)(`span`,{children:[`Configure: `,t?.roleName]})]}),width:720,footer:null,destroyOnClose:!0,children:[(0,c.jsx)(`div`,{style:{marginBottom:12},children:(0,c.jsx)(`div`,{className:`uss-config-toggle`,children:rA.map(e=>(0,c.jsx)(`button`,{className:`uss-config-btn${l===e.key?` active`:``}`,onClick:()=>u(e.key),children:e.label},e.key))})}),t&&(l===`permissions`?(0,c.jsx)(tA,{role:t},t?.roleId):(0,c.jsx)(eb,{role:t,configType:l},`${t?.roleId}-${l}`))]})]})}var lA=`perm-module-labels`,uA=`perm-action-labels`;function dA(e){try{return JSON.parse(localStorage.getItem(e)??`{}`)}catch{return{}}}function fA(e,t){try{localStorage.setItem(e,JSON.stringify(t))}catch{}}function pA({label:e,onSave:t,onDelete:n,loading:r}){let[i,l]=(0,a.useState)(!1),[u,d]=(0,a.useState)(e);function f(){l(!1);let n=u.trim();n&&n!==e?t(n):d(e)}return(0,c.jsxs)(`div`,{className:`perm-manage-row`,children:[i?(0,c.jsx)(`input`,{autoFocus:!0,className:`perm-inline-input`,value:u,style:{flex:1,minWidth:0},onChange:e=>d(e.target.value),onBlur:f,onKeyDown:t=>{t.key===`Enter`&&f(),t.key===`Escape`&&(l(!1),d(e))}}):(0,c.jsx)(`span`,{className:`perm-manage-row-label`,children:e}),(0,c.jsxs)(`div`,{className:`perm-manage-row-actions`,children:[(0,c.jsx)(o.Button,{type:`text`,size:`small`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>{d(e),l(!0)},loading:r}),(0,c.jsx)(o.Popconfirm,{title:`Delete this item?`,onConfirm:n,okText:`Delete`,cancelText:`Cancel`,okType:`danger`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,icon:(0,c.jsx)(s.DeleteOutlined,{}),danger:!0})})]})]})}function mA({open:t,onClose:n}){let[r,i]=(0,a.useState)(`modules`),[l,u]=(0,a.useState)([]),[d,f]=(0,a.useState)(!1),[p,m]=(0,a.useState)(``),[h,g]=(0,a.useState)(!1),[_,v]=(0,a.useState)([]),[y,b]=(0,a.useState)(!1),[x,S]=(0,a.useState)(``),[C,w]=(0,a.useState)(``),[T,E]=(0,a.useState)(!1);(0,a.useEffect)(()=>{t&&(D(),O())},[t]);async function D(){f(!0);try{u(await e.kr())}catch{o.message.error(`Failed to load modules`)}finally{f(!1)}}async function O(){b(!0);try{v(await e.Or())}catch{o.message.error(`Failed to load actions`)}finally{b(!1)}}async function k(){let t=p.trim();if(!t){o.message.warning(`Enter a module name`);return}g(!0);try{let n=await e.Kn({menuName:t});u(e=>[...e,n]),m(``),o.message.success(`Module added`)}catch{o.message.error(`Failed to add module`)}finally{g(!1)}}async function A(t,n){try{await e.oi(t,{menuName:n}),u(e=>e.map(e=>e.MENUID===t?{...e,MENUNAME:n}:e))}catch{o.message.error(`Failed to update module`)}}async function j(t){try{await e.tr(t),u(e=>e.filter(e=>e.MENUID!==t)),o.message.success(`Module deleted`)}catch{o.message.error(`Failed to delete module`)}}async function M(){let t=x.trim(),n=C.trim().toLowerCase().replace(/\s+/g,`_`);if(!t||!n){o.message.warning(`Enter both name and key`);return}E(!0);try{let r=await e.Gn({permissionName:t,permissionKey:n});v(e=>[...e,r]),S(``),w(``),o.message.success(`Action added`)}catch(e){o.message.error(e?.message?.includes(`409`)||e?.status===409?`Permission key already exists`:`Failed to add action`)}finally{E(!1)}}async function N(t,n){try{await e.ai(t,{permissionName:n}),v(e=>e.map(e=>e.permissionId===t?{...e,permissionName:n}:e))}catch{o.message.error(`Failed to update action`)}}async function P(t){try{await e.er(t),v(e=>e.filter(e=>e.permissionId!==t)),o.message.success(`Action deleted`)}catch{o.message.error(`Failed to delete action`)}}let F=[{key:`modules`,label:`Modules`,children:(0,c.jsxs)(o.Spin,{spinning:d,children:[(0,c.jsxs)(`div`,{className:`perm-manage-add-row`,children:[(0,c.jsx)(o.Input,{placeholder:`Module name`,value:p,onChange:e=>m(e.target.value),onPressEnter:k,style:{flex:1},size:`small`}),(0,c.jsx)(o.Button,{type:`primary`,size:`small`,icon:(0,c.jsx)(s.PlusOutlined,{}),loading:h,onClick:k,children:`Add`})]}),(0,c.jsxs)(`div`,{className:`perm-manage-list`,children:[l.length===0&&!d&&(0,c.jsx)(`div`,{className:`perm-empty`,style:{paddingTop:24},children:`No modules found`}),l.map(e=>(0,c.jsx)(pA,{label:e.MENUNAME,onSave:t=>A(e.MENUID,t),onDelete:()=>j(e.MENUID)},e.MENUID))]})]})},{key:`actions`,label:`Actions`,children:(0,c.jsxs)(o.Spin,{spinning:y,children:[(0,c.jsxs)(`div`,{className:`perm-manage-add-row`,children:[(0,c.jsx)(o.Input,{placeholder:`Action name (e.g. Approve)`,value:x,onChange:e=>S(e.target.value),style:{flex:1},size:`small`}),(0,c.jsx)(o.Input,{placeholder:`Key (e.g. approve)`,value:C,onChange:e=>w(e.target.value),onPressEnter:M,style:{width:140},size:`small`}),(0,c.jsx)(o.Button,{type:`primary`,size:`small`,icon:(0,c.jsx)(s.PlusOutlined,{}),loading:T,onClick:M,children:`Add`})]}),(0,c.jsxs)(`div`,{className:`perm-manage-list`,children:[_.length===0&&!y&&(0,c.jsx)(`div`,{className:`perm-empty`,style:{paddingTop:24},children:`No actions found`}),_.map(e=>(0,c.jsx)(pA,{label:`${e.permissionName} (${e.permissionKey})`,onSave:t=>N(e.permissionId,t),onDelete:()=>P(e.permissionId)},e.permissionId))]})]})}];return(0,c.jsx)(o.Modal,{open:t,onCancel:n,title:(0,c.jsxs)(`span`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,c.jsx)(s.SettingOutlined,{style:{color:`var(--color-brand)`}}),`Manage Modules & Actions`]}),width:520,footer:null,destroyOnClose:!0,children:(0,c.jsx)(o.Tabs,{activeKey:r,onChange:i,size:`small`,items:F})})}function hA(){let[t,n]=(0,a.useState)([]),[r,i]=(0,a.useState)(!1),[l,u]=(0,a.useState)(null),[d,f]=(0,a.useState)(``),[p,m]=(0,a.useState)(!1),[h,g]=(0,a.useState)(()=>dA(lA)),[_,v]=(0,a.useState)(()=>dA(uA)),y=(0,a.useCallback)((e,t)=>{g(n=>{let r={...n,[e]:t};return fA(lA,r),r})},[]),b=(0,a.useCallback)((e,t)=>{v(n=>{let r={...n,[e]:t};return fA(uA,r),r})},[]);function x(){g({}),v({}),fA(lA,{}),fA(uA,{}),o.message.success(`Labels reset to defaults`)}let S=(0,a.useCallback)(async()=>{i(!0);try{let{roles:t}=await e.ur();n(t),t.length>0&&u(t[0])}catch{o.message.error(`Failed to load roles`)}finally{i(!1)}},[]);(0,a.useEffect)(()=>{S()},[S]);let C=(0,a.useMemo)(()=>{let e=d.trim().toLowerCase();return e?t.filter(t=>t.roleName.toLowerCase().includes(e)):t},[t,d]),w=Object.keys(h).length>0||Object.keys(_).length>0;return(0,c.jsxs)(`div`,{className:`perm-page`,children:[(0,c.jsxs)(Z,{className:`perm-left-card`,icon:(0,c.jsx)(s.SafetyOutlined,{}),title:`Roles`,bodyStyle:{padding:0},children:[(0,c.jsx)(`div`,{className:`perm-role-search`,children:(0,c.jsx)(o.Input,{prefix:(0,c.jsx)(s.SearchOutlined,{}),placeholder:`Search roles…`,allowClear:!0,size:`small`,value:d,onChange:e=>f(e.target.value)})}),(0,c.jsx)(o.Spin,{spinning:r,children:(0,c.jsxs)(`div`,{className:`perm-role-list`,children:[C.length===0&&!r&&(0,c.jsx)(`div`,{className:`perm-role-empty`,children:`No roles found`}),C.map(e=>{let t=l?.roleId===e.roleId,n=e.description&&e.description!==`N/A`?e.description:e.roleType===0?`Default role`:`Custom role`;return(0,c.jsxs)(`div`,{className:`perm-role-item${t?` active`:``}`,onClick:()=>u(e),children:[(0,c.jsx)(`div`,{className:`perm-role-item-name`,children:e.roleName}),(0,c.jsx)(`div`,{className:`perm-role-item-desc`,children:n})]},e.roleId)})]})})]}),(0,c.jsx)(Z,{className:`perm-right-card`,icon:(0,c.jsx)(s.LockOutlined,{}),title:`Module Permissions`,extra:(0,c.jsxs)(`span`,{style:{display:`flex`,alignItems:`center`,gap:10},children:[w&&(0,c.jsx)(`button`,{className:`perm-reset-btn`,onClick:x,children:`Reset labels`}),(0,c.jsx)(o.Button,{size:`small`,icon:(0,c.jsx)(s.SettingOutlined,{}),onClick:()=>m(!0),children:`Manage`})]}),bodyStyle:{padding:`12px 16px`},children:l?(0,c.jsx)(tA,{role:l,moduleLabels:h,actionLabels:_,onModuleLabelSave:y,onActionLabelSave:b},l.roleId):(0,c.jsx)(`div`,{className:`perm-empty`,children:`Select a role from the left to manage its permissions.`})}),(0,c.jsx)(mA,{open:p,onClose:()=>m(!1)})]})}var{Title:gA,Text:_A}=o.Typography,vA=[{label:`In Progress`,value:107,sub:`Under review`,color:`blue`},{label:`Hired`,value:2,sub:`Onboarded`,color:`green`},{label:`Project Completed`,value:2,sub:`Project cycle closed`,color:`purple`},{label:`Archive`,value:2,sub:`No longer active`,color:`peach`}];function yA({items:e=vA}){return(0,c.jsx)(o.Card,{className:`onboarding-card`,title:(0,c.jsx)(gA,{level:5,children:`Onboarding`}),extra:(0,c.jsx)(o.Button,{type:`link`,children:`View all`}),children:(0,c.jsx)(o.Row,{gutter:[12,12],children:e.map(e=>(0,c.jsx)(o.Col,{xs:12,sm:6,md:6,lg:12,xl:12,children:(0,c.jsxs)(`div`,{className:`onboarding-item ${e.color}`,children:[(0,c.jsx)(_A,{className:`onboarding-item-label`,children:e.label}),(0,c.jsx)(o.Statistic,{value:e.value,className:`onboarding-stat`}),(0,c.jsx)(`div`,{className:`onboarding-item-footer`,children:(0,c.jsx)(_A,{className:`onboarding-item-sub`,children:e.sub})})]})},e.label))})})}var{Text:bA,Title:xA}=o.Typography,SA=[{group:`Dashboard`,items:[{id:`dashboard`,label:`Admin Dashboard`,icon:(0,c.jsx)(s.DashboardOutlined,{})}]},{group:`Settings`,items:[{id:`org`,label:`Organization`,icon:(0,c.jsx)(s.BankOutlined,{}),heading:`Organization Settings`,desc:`Manage your company profile and location details`,cards:[{label:`Company Information`,icon:(0,c.jsx)(s.BankOutlined,{}),desc:`Manage company profile, address and business details.`},{label:`Location`,icon:(0,c.jsx)(s.BuildOutlined,{}),desc:`Manage office locations, branches and regions.`}]},{id:`users`,label:`Users`,icon:(0,c.jsx)(s.UserOutlined,{}),heading:`Users`,desc:`Manage platform users and configure their field views.`,component:`users`},{id:`teams`,label:`Teams`,icon:(0,c.jsx)(s.TeamOutlined,{}),heading:`Teams`,desc:`Organize users into teams and configure field visibility per team.`,component:`teams`},{id:`roles`,label:`Roles`,icon:(0,c.jsx)(s.SafetyOutlined,{}),heading:`Roles`,desc:`Control permissions and configure field visibility per role.`,component:`roles`},{id:`permissions`,label:`Permissions`,icon:(0,c.jsx)(s.LockOutlined,{}),heading:`Permissions`,desc:`Manage module-wise action permissions (view, add, edit, delete, and more) per role.`,component:`permissions`},{id:`templates`,label:`Templates`,icon:(0,c.jsx)(s.FileTextOutlined,{}),heading:`Templates`,desc:`Email and signature templates for communications`,component:`templates`},{id:`ai-services`,label:`AI Services`,icon:(0,c.jsx)(s.ThunderboltOutlined,{}),heading:`AI Services`,desc:`Register the AI/automation backends (base URL + auth) that admin-configured AI Actions call.`,component:`ai-services`},{id:`bgc-integration`,label:`Integrations`,icon:(0,c.jsx)(s.SafetyOutlined,{}),heading:`Integrations`,desc:`Manage manual and API integrations used across application workflows.`,component:`bgc-integration`}]},{group:`Clients`,items:[{id:`clients`,label:`Clients`,icon:(0,c.jsx)(s.BankOutlined,{}),heading:`Clients`,desc:`Manage client accounts and settings`,cards:[{label:`Clients`,icon:(0,c.jsx)(s.BankOutlined,{}),desc:`Manage client companies and account details.`}]}]},{group:`Forms`,items:[{id:`form-groups`,label:`Form Groups`,icon:(0,c.jsx)(s.AppstoreAddOutlined,{}),heading:`Form Groups`,desc:`Define field groups for module add/edit forms with validations and dropdown sources.`,component:`form-groups`},{id:`detail-groups`,label:`Detail Groups`,icon:(0,c.jsx)(s.AppstoreOutlined,{}),heading:`Detail Groups`,desc:`Customize the detail view per module: labels, prefix/suffix, colour, capitalization, reference lookups and merged fields.`,component:`detail-groups`},{id:`row-actions`,label:`Actions`,icon:(0,c.jsx)(s.ToolOutlined,{}),heading:`Actions`,desc:`Configure which action buttons appear per row in each module's list view, scoped per role.`,component:`row-actions`}]},{group:`Master`,items:[{id:`jobs`,label:`Jobs`,icon:(0,c.jsx)(s.AppstoreOutlined,{}),heading:`Jobs Master`,desc:`Configure job sources and status types`,cards:[{label:`Sources`,icon:(0,c.jsx)(s.AppstoreOutlined,{}),desc:`Manage job source master values.`},{label:`Job Status`,icon:(0,c.jsx)(s.CheckCircleOutlined,{}),desc:`Configure job workflow status.`}]},{id:`candidates`,label:`Candidates`,icon:(0,c.jsx)(s.UserOutlined,{}),heading:`Candidates Master`,desc:`Skills, sources and work authorization settings`,cards:[{label:`Sources`,icon:(0,c.jsx)(s.AppstoreOutlined,{}),desc:`Manage candidate source values.`},{label:`Skills`,icon:(0,c.jsx)(s.SettingOutlined,{}),desc:`Manage skill master data.`},{label:`Work Authorization`,icon:(0,c.jsx)(s.SafetyOutlined,{}),desc:`Manage visa and authorization types.`}]},{id:`submissions`,label:`Submissions`,icon:(0,c.jsx)(s.FileTextOutlined,{}),heading:`Submissions Master`,desc:`Rejection reasons and submission status configuration`,cards:[{label:`Rejection Reasons`,icon:(0,c.jsx)(s.FileTextOutlined,{}),desc:`Manage common rejection reasons.`},{label:`Client Submission Status`,icon:(0,c.jsx)(s.CheckCircleOutlined,{}),desc:`Manage client submission statuses.`}]},{id:`clientmaster`,label:`Client Master`,icon:(0,c.jsx)(s.BankOutlined,{}),heading:`Client Master`,desc:`Payment terms, client types and contact types`,cards:[{label:`Payment Terms`,icon:(0,c.jsx)(s.FileTextOutlined,{}),desc:`Manage billing and payment terms.`},{label:`Client Type`,icon:(0,c.jsx)(s.AppstoreOutlined,{}),desc:`Classify client business types.`},{label:`Client Contact Type`,icon:(0,c.jsx)(s.TeamOutlined,{}),desc:`Manage client contact categories.`}]}]}],CA=[{label:`Sourced`,count:312,color:`#378ADD`,pct:35},{label:`Screened`,count:223,color:`#7F77DD`,pct:25},{label:`Interview`,count:161,color:`#1D9E75`,pct:18},{label:`Offered`,count:107,color:`#EF9F27`,pct:12},{label:`Rejected`,count:89,color:`#E24B4A`,pct:10}],wA=[{name:`Tcs`,jobs:14,candidates:86},{name:`Empasis`,jobs:9,candidates:64},{name:`NovaSystems`,jobs:7,candidates:51},{name:`Brightwave`,jobs:5,candidates:38}],TA=[{text:`New candidate Ravi Kumar added to Java Developer role`,time:`2 min ago`,color:`#378ADD`},{text:`Submission approved by Acme Corp for Sr. React Dev`,time:`18 min ago`,color:`#1D9E75`},{text:`User Priya S. added to Recruiters team`,time:`1 hr ago`,color:`#7F77DD`},{text:`Job Data Analyst — TechFlow moved to archived`,time:`3 hr ago`,color:`#EF9F27`},{text:`Candidate rejected — work authorization mismatch`,time:`5 hr ago`,color:`#E24B4A`}];function EA(){return(0,c.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:16},children:[(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.DashboardOutlined,{}),title:`Admin Dashboard`,children:[(0,c.jsx)(`div`,{className:`admin-accent-bar`}),(0,c.jsx)(xA,{level:5,children:`Admin Dashboard`}),(0,c.jsx)(bA,{type:`secondary`,children:`Overview of jobs, candidates, onboarding and recent activity`})]}),(0,c.jsx)(`div`,{className:`admin-dashboard-stats`,children:(0,c.jsx)(Pk,{stats:[{label:`Total Jobs`,value:1697,icon:`fileText`},{label:`Active Jobs`,value:1685,icon:`checkCircle`},{label:`My Jobs`,value:600,icon:`user`},{label:`Total Candidates`,value:4320,icon:`team`},{label:`Submissions`,value:892,icon:`fileText`}]})}),(0,c.jsxs)(`div`,{className:`admin-dashboard-mid-row`,children:[(0,c.jsx)(yA,{}),(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.AppstoreOutlined,{}),title:`Candidate Pipeline`,children:[(0,c.jsx)(bA,{type:`secondary`,style:{fontSize:12},children:`By stage (892 total)`}),(0,c.jsx)(`div`,{className:`admin-pipeline-bar`,children:CA.map(e=>(0,c.jsx)(`div`,{className:`admin-pipeline-seg`,style:{width:`${e.pct}%`,background:e.color}},e.label))}),(0,c.jsx)(`div`,{className:`admin-pipeline-legend`,children:CA.map(e=>(0,c.jsxs)(`div`,{className:`admin-pipeline-legend-item`,children:[(0,c.jsx)(`span`,{className:`admin-pipeline-dot`,style:{background:e.color}}),e.label,` `,e.count]},e.label))}),(0,c.jsx)(`div`,{className:`admin-divider`}),(0,c.jsx)(bA,{strong:!0,style:{fontSize:12},children:`Submission status`}),(0,c.jsxs)(`div`,{className:`admin-sub-status-list`,style:{marginTop:6},children:[(0,c.jsxs)(`div`,{className:`admin-sub-status-item`,children:[(0,c.jsx)(bA,{style:{fontSize:13},children:`Pending client review`}),(0,c.jsx)(`span`,{className:`admin-badge warn`,children:`312`})]}),(0,c.jsxs)(`div`,{className:`admin-sub-status-item`,children:[(0,c.jsx)(bA,{style:{fontSize:13},children:`Client approved`}),(0,c.jsx)(`span`,{className:`admin-badge success`,children:`248`})]}),(0,c.jsxs)(`div`,{className:`admin-sub-status-item`,children:[(0,c.jsx)(bA,{style:{fontSize:13},children:`Rejected`}),(0,c.jsx)(`span`,{className:`admin-badge danger`,children:`89`})]})]})]})]}),(0,c.jsxs)(`div`,{className:`admin-dashboard-bottom-row`,children:[(0,c.jsx)(Z,{icon:(0,c.jsx)(s.BankOutlined,{}),title:`Top Clients`,extra:(0,c.jsx)(o.Button,{type:`link`,size:`small`,children:`View all`}),children:wA.map(e=>(0,c.jsxs)(`div`,{className:`admin-client-row`,children:[(0,c.jsxs)(`div`,{className:`admin-client-left`,children:[(0,c.jsx)(`div`,{className:`admin-client-icon`,children:(0,c.jsx)(s.BankOutlined,{})}),(0,c.jsxs)(`div`,{children:[(0,c.jsx)(`div`,{className:`admin-client-name`,children:e.name}),(0,c.jsxs)(`div`,{className:`admin-client-sub`,children:[e.jobs,` open jobs`]})]})]}),(0,c.jsxs)(`div`,{className:`admin-client-right`,children:[(0,c.jsx)(`div`,{className:`admin-client-val`,children:e.candidates}),(0,c.jsx)(`div`,{className:`admin-client-sub`,children:`candidates`})]})]},e.name))}),(0,c.jsx)(Z,{icon:(0,c.jsx)(s.BellOutlined,{}),title:`Recent Activity`,children:TA.map((e,t)=>(0,c.jsxs)(`div`,{className:`admin-activity-row`,children:[(0,c.jsx)(`div`,{className:`admin-activity-dot`,style:{background:e.color}}),(0,c.jsxs)(`div`,{children:[(0,c.jsx)(`div`,{className:`admin-activity-text`,children:e.text}),(0,c.jsx)(`div`,{className:`admin-activity-time`,children:e.time})]})]},t))})]}),(0,c.jsx)(Z,{icon:(0,c.jsx)(s.SettingOutlined,{}),title:`Admin Configuration Overview`,extra:(0,c.jsx)(o.Button,{type:`link`,size:`small`,children:`Manage`}),children:(0,c.jsxs)(o.Row,{gutter:[24,0],children:[(0,c.jsxs)(o.Col,{span:8,children:[(0,c.jsx)(bA,{type:`secondary`,style:{fontSize:12,fontWeight:500},children:`Settings`}),[[`Organization`,2],[`User Settings`,4],[`Templates`,2]].map(([e,t])=>(0,c.jsxs)(`div`,{className:`admin-cfg-overview-row`,children:[(0,c.jsx)(bA,{style:{fontSize:12},children:e}),(0,c.jsxs)(`span`,{className:`admin-badge info`,children:[t,` items`]})]},e))]}),(0,c.jsxs)(o.Col,{span:8,children:[(0,c.jsx)(bA,{type:`secondary`,style:{fontSize:12,fontWeight:500},children:`Master`}),[[`Jobs`,2],[`Candidates`,3],[`Submissions`,2]].map(([e,t])=>(0,c.jsxs)(`div`,{className:`admin-cfg-overview-row`,children:[(0,c.jsx)(bA,{style:{fontSize:12},children:e}),(0,c.jsxs)(`span`,{className:`admin-badge info`,children:[t,` items`]})]},e))]}),(0,c.jsxs)(o.Col,{span:8,children:[(0,c.jsx)(bA,{type:`secondary`,style:{fontSize:12,fontWeight:500},children:`System`}),[[`Total Groups`,4],[`Total Modules`,9],[`Config Items`,19]].map(([e,t])=>(0,c.jsxs)(`div`,{className:`admin-cfg-overview-row`,children:[(0,c.jsx)(bA,{style:{fontSize:12},children:e}),(0,c.jsx)(bA,{strong:!0,style:{fontSize:12},children:t})]},e))]})]})})]})}function DA({activeSection:e,activeGroup:t,filteredCards:n,searchText:r,setSearchText:i,allItems:a,handleNav:l}){return(0,c.jsxs)(o.Row,{gutter:[16,16],children:[(0,c.jsx)(o.Col,{span:24,children:(0,c.jsxs)(Z,{icon:e?.icon,title:e?.heading,extra:(0,c.jsx)(o.Input,{className:`admin-search`,prefix:(0,c.jsx)(s.SearchOutlined,{}),placeholder:`Search settings…`,allowClear:!0,value:r,onChange:e=>i(e.target.value)}),children:[(0,c.jsx)(`div`,{className:`admin-accent-bar`}),(0,c.jsx)(xA,{level:5,children:e?.heading}),(0,c.jsx)(bA,{type:`secondary`,children:e?.desc})]})}),(0,c.jsx)(o.Col,{xs:24,xl:16,style:{alignSelf:`flex-start`},children:(0,c.jsx)(Z,{icon:(0,c.jsx)(s.AppstoreOutlined,{}),title:`Configuration Items`,extra:(0,c.jsxs)(bA,{type:`secondary`,children:[n.length,` item`,n.length===1?``:`s`]}),children:(0,c.jsx)(o.Row,{gutter:[14,14],children:n.length>0?n.map(e=>(0,c.jsx)(o.Col,{xs:24,sm:12,xl:8,children:(0,c.jsxs)(`div`,{className:`admin-config-item`,children:[(0,c.jsx)(`div`,{className:`admin-config-top-bar`}),(0,c.jsxs)(`div`,{className:`admin-config-body`,children:[(0,c.jsx)(`div`,{className:`admin-config-icon`,children:e.icon}),(0,c.jsxs)(`div`,{className:`admin-config-text`,children:[(0,c.jsx)(`span`,{className:`admin-config-label`,children:e.label}),(0,c.jsx)(`span`,{className:`admin-config-desc`,children:e.desc})]})]}),(0,c.jsx)(`div`,{className:`admin-config-divider`}),(0,c.jsx)(o.Button,{type:`link`,size:`small`,className:`admin-config-manage`,icon:(0,c.jsx)(s.RightOutlined,{}),iconPosition:`end`,children:`Manage`})]})},e.label)):(0,c.jsx)(o.Col,{span:24,children:(0,c.jsx)(`div`,{className:`admin-config-empty`,children:(0,c.jsx)(o.Empty,{description:`No settings found`,image:o.Empty.PRESENTED_IMAGE_SIMPLE})})})})})}),(0,c.jsx)(o.Col,{xs:24,xl:8,style:{alignSelf:`flex-start`},children:(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.FileTextOutlined,{}),title:`Section Overview`,children:[(0,c.jsx)(`div`,{className:`admin-overview-list`,children:SA.filter(e=>e.group!==`Dashboard`).map(e=>{let n=e.group===t?.group;return(0,c.jsxs)(`div`,{className:`admin-overview-item${n?` active`:``}`,onClick:()=>{let t=e.items[0];t&&l(t.id)},children:[(0,c.jsxs)(`div`,{className:`admin-overview-left`,children:[(0,c.jsx)(`div`,{className:`admin-overview-icon`,children:e.items[0]?.icon}),(0,c.jsxs)(`div`,{className:`admin-overview-text`,children:[(0,c.jsx)(`span`,{className:`admin-overview-name`,children:e.group}),(0,c.jsxs)(`span`,{className:`admin-overview-sub`,children:[e.items.length,` module`,e.items.length===1?``:`s`]})]})]}),(0,c.jsx)(`span`,{className:`admin-overview-count${n?` active`:``}`,children:e.items.length})]},e.group)})}),(0,c.jsxs)(`div`,{className:`admin-overview-footer`,children:[(0,c.jsx)(`span`,{className:`admin-overview-footer-label`,children:`Total configuration items`}),(0,c.jsx)(`span`,{className:`admin-overview-footer-value`,children:a.filter(e=>e.cards).reduce((e,t)=>e+t.cards.length,0)})]})]})})]})}function OA(){let[e,t]=(0,a.useState)(`dashboard`),[n,r]=(0,a.useState)(``),i=(0,a.useMemo)(()=>SA.flatMap(e=>e.items),[]),l=(0,a.useMemo)(()=>i.find(t=>t.id===e),[i,e]),u=(0,a.useMemo)(()=>SA.find(t=>t.items.some(t=>t.id===e)),[e]),d=(0,a.useMemo)(()=>{if(!l?.cards)return[];let e=n.trim().toLowerCase();return e?l.cards.filter(t=>t.label.toLowerCase().includes(e)||t.desc.toLowerCase().includes(e)):l.cards},[l,n]),f=(0,a.useMemo)(()=>SA.map(e=>({key:e.group,type:`group`,label:e.group,children:e.items.map(e=>({key:e.id,icon:e.icon,label:e.label}))})),[]),p=e=>{t(e),r(``)};return e===`dashboard`||l?.heading,(0,c.jsxs)(`main`,{className:`admin-page`,children:[(0,c.jsx)(`div`,{className:`admin-breadcrumb`,children:(0,c.jsx)(o.Breadcrumb,{items:[{title:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(s.HomeOutlined,{}),` Home`]})},{title:`Admin`}]})}),(0,c.jsxs)(o.Row,{gutter:[16,16],className:`admin-wrapper`,children:[(0,c.jsx)(o.Col,{xs:24,lg:6,xl:5,children:(0,c.jsxs)(Z,{title:`Admin Console`,icon:(0,c.jsx)(s.SettingOutlined,{}),children:[(0,c.jsxs)(`div`,{className:`admin-sidebar-banner`,children:[(0,c.jsx)(`span`,{className:`admin-sidebar-banner-title`,children:`Admin Panel`}),(0,c.jsx)(`span`,{className:`admin-sidebar-banner-sub`,children:`Configuration Center`}),(0,c.jsxs)(o.Row,{gutter:[8,0],children:[(0,c.jsx)(o.Col,{span:12,children:(0,c.jsxs)(`div`,{className:`admin-sidebar-pill`,children:[(0,c.jsx)(`span`,{className:`admin-sidebar-pill-label`,children:`Groups`}),(0,c.jsx)(`span`,{className:`admin-sidebar-pill-value`,children:SA.length})]})}),(0,c.jsx)(o.Col,{span:12,children:(0,c.jsxs)(`div`,{className:`admin-sidebar-pill`,children:[(0,c.jsx)(`span`,{className:`admin-sidebar-pill-label`,children:`Modules`}),(0,c.jsx)(`span`,{className:`admin-sidebar-pill-value`,children:i.length})]})})]})]}),(0,c.jsx)(o.Menu,{mode:`inline`,selectedKeys:[e],items:f,onClick:({key:e})=>p(e),className:`admin-sidebar-menu`})]})}),(0,c.jsx)(o.Col,{xs:24,lg:18,xl:19,children:e===`dashboard`?(0,c.jsx)(EA,{}):l?.component===`form-groups`?(0,c.jsx)(Gx,{}):l?.component===`detail-groups`?(0,c.jsx)(vS,{}):l?.component===`row-actions`?(0,c.jsx)(sC,{}):l?.component===`users`?(0,c.jsx)(Rk,{}):l?.component===`teams`?(0,c.jsx)(Wk,{}):l?.component===`roles`?(0,c.jsx)(cA,{}):l?.component===`permissions`?(0,c.jsx)(hA,{}):l?.component===`templates`?(0,c.jsx)(yC,{}):l?.component===`ai-services`?(0,c.jsx)(CC,{}):l?.component===`bgc-integration`?(0,c.jsx)(kC,{}):(0,c.jsx)(DA,{activeSection:l,activeGroup:u,filteredCards:d,searchText:n,setSearchText:r,allItems:i,handleNav:p})})]})]})}var{Title:kA}=o.Typography;function AA(){let e=(0,u.useNavigate)(),{state:t}=(0,u.useLocation)(),n=t?.moduleName||`stickyNotes`,r=t?.title||`Sticky Notes`,i={...t?.request,params:{...t?.request?.params,limit:200,offset:0}};return(0,c.jsxs)(`div`,{children:[(0,c.jsx)(o.Button,{type:`text`,icon:(0,c.jsx)(s.ArrowLeftOutlined,{}),onClick:()=>e(-1),style:{marginBottom:12},children:`Back`}),(0,c.jsx)(At,{moduleName:n,title:r,columns:4,request:i,viewAll:!1})]})}var{Text:jA,Title:MA}=o.Typography,NA=10*1024*1024,PA=`/templates/test_cases_flow_template.base64.txt`,FA=`test_cases_flow_template.xlsx`,IA=`module | subModule | step_order | description | actions | key | value | expected | scenario`,LA={idle:0,module_set:1,encoding:1,validating:2,preview:3,inserting:3,done:4,error:1},RA=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`},{label:`Bulk upload`,href:`/bulk-upload`}];function zA(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(String(r.result).split(`,`)[1]),r.onerror=n,r.readAsDataURL(e)})}function BA(e){return e.filter(e=>e.row_status===`valid`).map(e=>{let t={...e};return delete t.row_status,delete t.errors,t})}function VA(e){return e.flatMap(e=>(e.errors??[]).map(t=>({id:e.id,...t})))}function HA({errors:e}){return(0,c.jsx)(`div`,{className:`bulk-tooltip-errors`,children:(e??[]).map((e,t)=>(0,c.jsx)(`div`,{children:e.message},`${e.field}-${t}`))})}function UA({errors:e,expanded:t,onToggle:n,onSummaryClick:r}){return e.length===0?null:(0,c.jsxs)(`div`,{className:`bulk-error-banner`,children:[(0,c.jsxs)(`div`,{className:`bulk-error-summary`,children:[(0,c.jsxs)(`button`,{type:`button`,className:`bulk-error-summary-main`,onClick:r,"aria-label":`Scroll to first invalid row`,children:[(0,c.jsx)(s.ExclamationCircleOutlined,{className:`bulk-error-icon`}),(0,c.jsxs)(`span`,{children:[e.length,` validation error(s) found`]})]}),(0,c.jsx)(o.Button,{type:`link`,onClick:n,"aria-expanded":t,children:t?`Hide Errors`:`View Errors`})]}),t&&(0,c.jsx)(`div`,{className:`bulk-error-list`,role:`region`,"aria-label":`Validation error details`,children:e.map((e,t)=>(0,c.jsxs)(`div`,{className:`bulk-error-line`,children:[(0,c.jsxs)(`span`,{className:`bulk-row-chip`,children:[`Row `,e.id]}),(0,c.jsx)(`span`,{children:e.message})]},`${e.id}-${e.field}-${t}`))})]})}function WA({rows:e,view:t,onViewChange:n,onConfirm:r,onReset:i,saving:a,firstInvalidRowId:l,firstInvalidRowRef:u}){let d=e.filter(e=>e.row_status===`invalid`),f=t===`errors`?d:e,p=d.length>0||a;return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(o.Row,{justify:`space-between`,align:`middle`,gutter:[16,16],className:`bulk-table-toolbar`,children:[(0,c.jsx)(o.Col,{children:(0,c.jsxs)(o.Space.Compact,{children:[(0,c.jsx)(o.Button,{type:t===`all`?`primary`:`default`,onClick:()=>n(`all`),children:`All rows`}),(0,c.jsx)(o.Button,{type:t===`errors`?`primary`:`default`,onClick:()=>n(`errors`),children:`Errors only`})]})}),(0,c.jsx)(o.Col,{children:(0,c.jsxs)(jA,{type:`secondary`,children:[e.length,` row(s)`]})})]}),(0,c.jsx)(`div`,{className:`bulk-table-wrap`,children:(0,c.jsxs)(`table`,{className:`bulk-preview-table`,children:[(0,c.jsx)(`thead`,{children:(0,c.jsxs)(`tr`,{children:[(0,c.jsx)(`th`,{className:`bulk-col-row`,children:`Row`}),(0,c.jsx)(`th`,{className:`bulk-col-flow`,children:`Submodule`}),(0,c.jsx)(`th`,{className:`bulk-col-description`,children:`Description`}),(0,c.jsx)(`th`,{className:`bulk-col-keyword`,children:`Action`}),(0,c.jsx)(`th`,{className:`bulk-col-target`,children:`Key`}),(0,c.jsx)(`th`,{className:`bulk-col-status`,children:`Status`}),(0,c.jsx)(`th`,{className:`bulk-col-error`,children:`Error`})]})}),(0,c.jsx)(`tbody`,{children:f.map(e=>{let t=e.errors??[],n=e.row_status===`invalid`;return(0,c.jsxs)(`tr`,{ref:n&&e.id===l?u:null,className:n?`bulk-row-invalid`:``,children:[(0,c.jsx)(`td`,{children:e.id}),(0,c.jsx)(`td`,{title:e.submodule,children:e.submodule}),(0,c.jsx)(`td`,{title:e.description,children:e.description?e.description:(0,c.jsx)(`span`,{className:`bulk-empty-text`,children:`-empty-`})}),(0,c.jsx)(`td`,{children:(0,c.jsx)(`code`,{className:`bulk-code-chip`,children:e.actions})}),(0,c.jsx)(`td`,{title:e.key,children:e.key}),(0,c.jsx)(`td`,{children:n?(0,c.jsx)(o.Tag,{color:`red`,children:`Error`}):(0,c.jsx)(o.Tag,{color:`green`,children:`Valid`})}),(0,c.jsx)(`td`,{children:n?(0,c.jsx)(o.Tooltip,{title:(0,c.jsx)(HA,{errors:t}),placement:`left`,children:(0,c.jsxs)(`button`,{type:`button`,className:`bulk-error-info`,"aria-label":`View ${t.length} error(s) for row ${e.id}`,children:[(0,c.jsx)(s.InfoCircleOutlined,{}),(0,c.jsx)(o.Badge,{count:t.length,size:`small`})]})}):(0,c.jsx)(`span`,{className:`bulk-error-none`,children:`-`})})]},`${e.id}-${e.step_order}`)})})]})}),(0,c.jsxs)(o.Space,{className:`bulk-actions`,children:[(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.ReloadOutlined,{}),onClick:i,children:`Reset`}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.SaveOutlined,{}),loading:a,disabled:p,onClick:r,children:d.length>0?`Fix ${d.length} error(s) to proceed`:`Save to database`})]})]})}function GA(){let n=(0,u.useNavigate)(),r=(0,a.useMemo)(()=>t.c(),[]),i=(0,a.useRef)(null),l=(0,a.useRef)(null),[d,f]=(0,a.useState)([]),[p,m]=(0,a.useState)(``),[h,g]=(0,a.useState)(`idle`),[_,v]=(0,a.useState)(!1),[y,b]=(0,a.useState)(null),[x,S]=(0,a.useState)([]),[C,w]=(0,a.useState)(`all`),[T,E]=(0,a.useState)(null),[D,O]=(0,a.useState)(null),[k,A]=(0,a.useState)(!1),j=d.map(e=>({value:e.modulename,label:e.modulename})),M=VA(x),N=h===`encoding`||h===`validating`,P=!!p&&!N,F=LA[h]??0,I=x.find(e=>e.row_status===`invalid`)?.id,L=(0,a.useCallback)(()=>{m(``),g(`idle`),v(!1),b(null),S([]),w(`all`),E(null),O(null),i.current&&(i.current.value=``)},[]);(0,a.useEffect)(()=>{async function e(){try{f((await Wv({project:r?.name??``,activeOnly:!0}))?.items??[])}catch(e){console.error(e),o.message.error(`Unable to load modules.`)}}e()},[r?.name]);let R=e=>{m(e??``),S([]),O(null),E(null),b(null),A(!1),g(e?`module_set`:`idle`)},z=async e=>{if(!e||!P)return;let t=e.name.split(`.`).pop()?.toLowerCase();if(![`xlsx`,`csv`].includes(t)){g(`module_set`),E({message:`Invalid file type. Please upload an Excel .xlsx or CSV .csv file.`});return}if(e.size>NA){g(`module_set`),E({message:`File must be 10 MB or smaller.`});return}E(null),S([]),O(null),b({name:e.name,size:e.size}),g(`encoding`);try{let n=await zA(e);g(`validating`),S((await zv({filename:e.name,project:r?.name??``,module:p,file_base64:n,file_type:t}))?.rows??[]),w(`all`),g(`preview`)}catch(e){console.error(e),E(e.payload??{code:`NETWORK_ERROR`,message:e.message||`Could not reach the server.`}),g(`error`)}},B=async()=>{try{let e=await fetch(PA);if(!e.ok)throw Error(`Template file not found (${e.status})`);let t=(await e.text()).trim(),n=atob(t),r=new Uint8Array(n.length);for(let e=0;e<n.length;e+=1)r[e]=n.charCodeAt(e);let i=new Blob([r],{type:`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`}),a=URL.createObjectURL(i),s=document.createElement(`a`);s.href=a,s.download=FA,document.body.appendChild(s),s.click(),s.remove(),URL.revokeObjectURL(a),o.message.success(`Sample template downloaded.`)}catch(e){console.error(e),o.message.error(`Unable to download sample template.`)}},ee=async()=>{g(`inserting`),E(null);try{O(await Bv({project:r?.name??``,module:p,uploaded_by:localStorage.getItem(`user_Email`)??``,rows:BA(x)})),g(`done`),o.message.success(`Bulk upload saved. Redirecting to view test cases...`),window.setTimeout(()=>n(`/viewTestCase`),900)}catch(e){console.error(e),E(e.payload??{code:`NETWORK_ERROR`,message:e.message||`Could not reach the server.`}),g(`preview`)}},V=(0,a.useCallback)(()=>{l.current?.scrollIntoView({behavior:`smooth`,block:`center`})},[]),H=[`bulk-dropzone`,_?`bulk-dropzone-dragging`:``,y?`bulk-dropzone-has-file`:``,T&&h!==`preview`?`bulk-dropzone-error`:``,p?``:`bulk-dropzone-disabled`].filter(Boolean).join(` `);return(0,c.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,c.jsxs)(o.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,c.jsx)(o.Col,{children:(0,c.jsx)(e.t,{items:RA})}),r?.name&&(0,c.jsx)(o.Col,{children:(0,c.jsx)(jA,{strong:!0,children:r.name})})]}),(0,c.jsxs)(`div`,{className:`zt-page zt-page-wide bulk-page`,children:[(0,c.jsxs)(`div`,{className:`bulk-header`,children:[(0,c.jsx)(MA,{level:3,children:`Bulk upload test cases`}),(0,c.jsxs)(o.Space,{direction:`vertical`,size:4,children:[(0,c.jsx)(jA,{type:`secondary`,children:IA}),(0,c.jsx)(jA,{type:`secondary`,children:`Use the sample template for the required columns. Uploaded rows are saved as Active by default.`})]})]}),(0,c.jsx)(`div`,{className:`bulk-stepbar`,children:[`Select`,`Upload`,`Validate`,`Save`].map((e,t)=>(0,c.jsxs)(`span`,{className:t<F?`bulk-step-active`:``,children:[t+1,` `,e]},e))}),(0,c.jsx)(o.Card,{className:`v1-card zt-fall`,title:`1. Module selector`,children:(0,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,className:`bulk-module-select`,placeholder:`Choose a module`,options:j,value:p||void 0,onChange:R})}),p&&(0,c.jsxs)(o.Card,{className:`v1-card zt-fall`,title:`2. File upload`,extra:(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.DownloadOutlined,{}),onClick:B,children:`Download Sample Template`}),children:[(0,c.jsx)(o.Alert,{type:`info`,showIcon:!0,message:`First time uploading?`,description:`Download the sample template, keep the column names unchanged, fill your test steps, and upload either .xlsx or .csv.`,className:`bulk-inline-alert`}),(0,c.jsxs)(`button`,{type:`button`,className:H,disabled:!P,onClick:()=>i.current?.click(),onDragOver:e=>{e.preventDefault(),P&&v(!0)},onDragLeave:()=>v(!1),onDrop:e=>{e.preventDefault(),v(!1),z(e.dataTransfer.files?.[0])},children:[(0,c.jsx)(s.CloudUploadOutlined,{className:`bulk-upload-icon`}),y?(0,c.jsxs)(`span`,{className:`bulk-file-chip`,children:[y.name,` - `,Math.ceil(y.size/1024),` KB`]}):(0,c.jsx)(`span`,{children:`Drag & drop here, or click to browse`})]}),(0,c.jsx)(`input`,{ref:i,hidden:!0,type:`file`,accept:`.xlsx,.csv`,onChange:e=>z(e.target.files?.[0])}),N&&(0,c.jsx)(o.Progress,{percent:h===`encoding`?45:82,showInfo:!1,size:`small`}),T&&h!==`preview`&&(0,c.jsx)(o.Alert,{type:`error`,showIcon:!0,message:T.message,className:`bulk-inline-alert`})]}),x.length>0&&(0,c.jsxs)(o.Card,{className:`v1-card zt-fall`,title:`3. Validation result`,children:[(0,c.jsx)(UA,{errors:M,expanded:k,onToggle:()=>A(e=>!e),onSummaryClick:V}),T&&h===`preview`&&(0,c.jsx)(o.Alert,{type:`error`,showIcon:!0,message:T.message,className:`bulk-inline-alert`}),(0,c.jsx)(WA,{rows:x,view:C,onViewChange:w,onConfirm:ee,onReset:L,saving:h===`inserting`,firstInvalidRowId:I,firstInvalidRowRef:l})]}),D&&h===`done`&&(0,c.jsxs)(o.Card,{className:`v1-card zt-fall`,title:`4. Upload complete`,children:[(0,c.jsxs)(o.Row,{gutter:[16,16],className:`bulk-metrics`,children:[(0,c.jsx)(o.Col,{xs:24,md:8,children:(0,c.jsxs)(`div`,{children:[(0,c.jsx)(jA,{children:`Total`}),(0,c.jsx)(`strong`,{children:x.length})]})}),(0,c.jsx)(o.Col,{xs:24,md:8,children:(0,c.jsxs)(`div`,{children:[(0,c.jsx)(jA,{children:`Inserted`}),(0,c.jsx)(`strong`,{children:D.inserted??0})]})}),(0,c.jsx)(o.Col,{xs:24,md:8,children:(0,c.jsxs)(`div`,{children:[(0,c.jsx)(jA,{children:`Failed`}),(0,c.jsx)(`strong`,{children:D.failed??0})]})})]}),(0,c.jsx)(o.Alert,{type:`success`,showIcon:!0,icon:(0,c.jsx)(s.CheckCircleOutlined,{}),message:`${D.inserted??0} test cases saved to database - module: ${p}`,className:`bulk-inline-alert`}),(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.ReloadOutlined,{}),onClick:L,children:`Upload another file`})]})]})]})}var KA=[{value:`navigate`,label:`Navigate`},{value:`fill`,label:`Fill`},{value:`click`,label:`Click`},{value:`select`,label:`Select`},{value:`press_key`,label:`Press Key`},{value:`type_and_select`,label:`Type and Select`},{value:`type_and_select_modal`,label:`Type and Select (Modal)`},{value:`upload_file`,label:`Upload File`},{value:`check_checkbox`,label:`Check Checkbox`},{value:`check_filter_checkbox`,label:`Check Filter Checkbox`},{value:`select_page_size`,label:`Select Page Size`},{value:`check_n_checkboxes`,label:`Check N Checkboxes`},{value:`store_text`,label:`Store Text`},{value:`reset_session`,label:`Reset Session`},{value:`switch_to_new_tab`,label:`Switch To New Tab`},{value:`close_tab`,label:`Close Tab`},{value:`assert_visible`,label:`Assert Visible`},{value:`assert_hidden`,label:`Assert Hidden`},{value:`assert_text`,label:`Assert Text`},{value:`assert_url`,label:`Assert URL`},{value:`assert_body_contains`,label:`Assert Body Contains`},{value:`assert_button_disabled`,label:`Assert Button Disabled`},{value:`assert_field_error`,label:`Assert Field Error`},{value:`assert_field_accepted`,label:`Assert Field Accepted`},{value:`assert_children_disabled`,label:`Assert Children Disabled`},{value:`assert_children_visible`,label:`Assert Children Visible`},{value:`assert_element_count`,label:`Assert Element Count`},{value:`assert_toast`,label:`Assert Toast`},{value:`assert_toast_success`,label:`Assert Toast Success`},{value:`assert_toast_error`,label:`Assert Toast Error`},{value:`wait_for_visible`,label:`Wait For Visible`},{value:`wait_for_hidden`,label:`Wait For Hidden`},{value:`wait_for_text`,label:`Wait For Text`}],{Text:qA}=o.Typography,JA=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/test-cases`}],YA={tags:`regression`,active:1},XA={module:{dbName:`Modules`,formField:`module`,label:`Module`}};function ZA(e=[]){return e.map(e=>({value:e,label:e}))}function QA(e=``){return String(e??``).trim()}function $A(e=``){return QA(e).toLowerCase()}function ej(e=[]){let t=new Map;return e.forEach(e=>{let n=QA(e?.flow),r=n.toLowerCase();n&&!t.has(r)&&t.set(r,n)}),Array.from(t.values()).map(e=>({value:e,label:e}))}function tj(e=[],t,n){let r=QA(t).toLowerCase(),i=QA(n).toLowerCase();return e.reduce((e,t)=>{let n=QA(t?.module).toLowerCase(),a=QA(t?.flow).toLowerCase();if(n!==r||a!==i)return e;let o=Number(t?.step_order)||0;return Math.max(e,o)},0)+1}function nj({icon:e,title:t}){return(0,c.jsxs)(o.Space,{size:10,align:`center`,children:[(0,c.jsx)(`div`,{className:`v1-section-icon-box`,children:e}),(0,c.jsx)(qA,{strong:!0,className:`v1-section-label`,children:t})]})}function rj(){let[t]=o.Form.useForm(),[n]=o.Form.useForm(),[r,i]=(0,a.useState)([]),[l,d]=(0,a.useState)([]),[f,p]=(0,a.useState)([]),[m,h]=(0,a.useState)(!1),[g,_]=(0,a.useState)(!1),[v,y]=(0,a.useState)({open:!1,typeKey:`module`}),[b,x]=(0,a.useState)(!1),[S,C]=(0,a.useState)(!1),[w,T]=(0,a.useState)(!1),E=(0,u.useNavigate)(),D=XA[v.typeKey],O=(0,a.useMemo)(()=>ZA(r),[r]),k=o.Form.useWatch(`module`,t),A=o.Form.useWatch(`flow`,t),j=!!QA(k),M=!!QA(A),N=!j,P=!j||!M,F=(e,t=[])=>{e===`module`&&i(t)},I=async()=>{h(!0);try{i((await Pv(XA.module.dbName))?.items??[])}catch(e){console.error(`Unable to load testing options:`,e),o.message.error(`Unable to load testing options.`)}finally{h(!1)}},L=(0,a.useCallback)(async e=>{let n=QA(e);if(d([]),p([]),t.setFieldsValue({step_order:void 0}),n){_(!0);try{let e=await Rv({limit:1e4,offset:0,module:n}),t=Array.isArray(e?.items)?e.items:[];d(t),p(ej(t))}catch(e){console.error(`Unable to load flows:`,e),o.message.error(`Unable to load flows.`)}finally{_(!1)}}},[t]),R=(0,a.useCallback)(async(e,n,r)=>{let i=QA(e),a=QA(n);if(!i||!a){t.setFieldsValue({step_order:void 0});return}C(!0);try{t.setFieldsValue({step_order:tj(r,i,a)})}catch(e){console.error(`Unable to load step order:`,e),o.message.error(`Unable to load step order.`)}finally{C(!1)}},[t]);(0,a.useEffect)(()=>{Promise.resolve().then(I)},[]),(0,a.useEffect)(()=>{Promise.resolve().then(()=>L(k))},[L,k]),(0,a.useEffect)(()=>{Promise.resolve().then(()=>R(k,A,l))},[l,R,A,k]);let z=async e=>{let n={module:QA(e.module),flow:QA(e.flow),step_order:Number(e.step_order),description:QA(e.description),keyword:$A(e.keyword),target:QA(e.target),value:QA(e.value),expected:QA(e.expected),tags:e.tags?QA(e.tags):YA.tags,active:Number(e.active)};T(!0);try{await Lv(n),o.message.success(`Test case details saved successfully.`),t.resetFields(),d([]),p([])}catch(e){console.error(`Unable to save test case:`,e),o.message.error(`Unable to save test case.`)}finally{T(!1)}},B=(e,n)=>{t.setFieldsValue({[e]:QA(n)})},ee=e=>{t.setFieldsValue({module:QA(e),flow:void 0,step_order:void 0,keyword:void 0,description:void 0,target:void 0,tags:YA.tags,value:void 0,expected:void 0})},V=e=>{t.setFieldsValue({flow:QA(e),step_order:void 0})},H=e=>{let t=XA[e];y({open:!0,typeKey:e}),n.setFieldsValue({name:``,type:t.label})},U=()=>{y(e=>({...e,open:!1})),n.resetFields()},te=async()=>{try{let e=QA((await n.validateFields()).name),r=await Fv({name:e,type:D.dbName});F(v.typeKey,r?.items??[]),t.setFieldsValue({[D.formField]:e}),o.message.success(`${D.label} added successfully.`),U()}catch(e){if(e?.errorFields)return;console.error(`Unable to save testing option:`,e),o.message.error(`Unable to add ${D.label.toLowerCase()}.`)}finally{x(!1)}};return(0,c.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,c.jsxs)(o.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,c.jsx)(o.Col,{children:(0,c.jsx)(e.t,{items:JA})}),(0,c.jsx)(o.Col,{children:(0,c.jsx)(o.Button,{type:`link`,onClick:()=>E(`/zinnext-home`),children:`View Table`})})]}),(0,c.jsx)(`div`,{className:`v1-page`,children:(0,c.jsxs)(`div`,{className:`v1-page-inner`,children:[(0,c.jsx)(`div`,{className:`v1-page-header`,children:(0,c.jsxs)(o.Space,{align:`center`,size:10,children:[(0,c.jsx)(s.ProfileOutlined,{className:`v1-outer-icon`}),(0,c.jsx)(`div`,{children:(0,c.jsx)(qA,{strong:!0,style:{fontSize:16},children:`Add Test Case`})})]})}),(0,c.jsx)(Z,{children:(0,c.jsxs)(o.Form,{form:t,className:`v1-form`,layout:`vertical`,colon:!1,requiredMark:(e,{required:t})=>(0,c.jsxs)(c.Fragment,{children:[e,t&&(0,c.jsx)(`span`,{className:`v1-required-mark`,children:` *`})]}),initialValues:YA,onFinish:z,autoComplete:`off`,children:[(0,c.jsx)(o.Card,{className:`v1-card`,title:(0,c.jsx)(nj,{icon:(0,c.jsx)(s.FileTextOutlined,{}),title:`Test Case Details`}),extra:(0,c.jsx)(qA,{type:`secondary`,className:`v1-card-subtitle`,children:`Module, flow, step order and execution data`}),children:(0,c.jsxs)(o.Row,{gutter:[24,0],children:[(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsxs)(o.Space.Compact,{style:{width:`100%`},children:[(0,c.jsx)(o.Form.Item,{label:`Module`,name:`module`,style:{flex:1},children:(0,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,loading:m,optionFilterProp:`label`,placeholder:`Select module`,options:O,onChange:ee})}),(0,c.jsx)(o.Button,{"aria-label":`Add module`,icon:(0,c.jsx)(s.PlusOutlined,{}),style:{marginTop:30},onClick:()=>H(`module`)})]})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Flow`,name:`flow`,children:(0,c.jsx)(o.AutoComplete,{maxLength:100,allowClear:!0,disabled:N,options:f,placeholder:g?`Loading flows`:`Enter flow`,onChange:V,filterOption:(e,t)=>t?.value?.toLowerCase().includes(e.toLowerCase())})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Step Order`,name:`step_order`,validateTrigger:[`onBlur`,`onChange`],children:(0,c.jsx)(o.Input,{maxLength:10,disabled:!0,placeholder:S?`Loading step order`:`Step order`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Action`,name:`keyword`,children:(0,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,disabled:P,optionFilterProp:`label`,placeholder:`Select action`,options:KA,onChange:e=>t.setFieldsValue({keyword:$A(e)})})})}),(0,c.jsx)(o.Col,{xs:24,children:(0,c.jsx)(o.Form.Item,{label:`Description`,name:`description`,children:(0,c.jsx)(o.Input.TextArea,{rows:3,maxLength:255,disabled:P,placeholder:`Enter description`,showCount:!0,onBlur:e=>B(`description`,e.target.value)})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Key`,name:`target`,children:(0,c.jsx)(o.Input,{maxLength:255,disabled:P,placeholder:`Enter target`,onBlur:e=>B(`target`,e.target.value)})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Tags`,name:`tags`,children:(0,c.jsx)(o.Input,{maxLength:200,disabled:P,placeholder:`Enter tags`,prefix:(0,c.jsx)(s.TagsOutlined,{className:`v1-input-icon`}),onBlur:e=>B(`tags`,e.target.value)})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Value`,name:`value`,children:(0,c.jsx)(o.Input.TextArea,{rows:4,disabled:P,placeholder:`Enter value`,onBlur:e=>B(`value`,e.target.value)})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Expected`,name:`expected`,children:(0,c.jsx)(o.Input.TextArea,{rows:4,disabled:P,placeholder:`Enter expected result`,onBlur:e=>B(`expected`,e.target.value)})})})]})}),(0,c.jsx)(`div`,{className:`v1-form-actions`,children:(0,c.jsx)(o.Form.Item,{children:(0,c.jsxs)(o.Space,{children:[(0,c.jsx)(o.Button,{type:`primary`,htmlType:`submit`,loading:w,disabled:P,children:`Submit`}),(0,c.jsx)(o.Button,{onClick:()=>{t.resetFields(),d([]),p([])},children:`Reset`})]})})})]})}),(0,c.jsx)(o.Modal,{title:`Add ${D.label}`,open:v.open,confirmLoading:b,okText:`Add`,onCancel:U,onOk:()=>{x(!0),te()},destroyOnHidden:!0,children:(0,c.jsxs)(o.Form,{form:n,layout:`vertical`,colon:!1,className:`v1-form`,requiredMark:(e,{required:t})=>(0,c.jsxs)(c.Fragment,{children:[e,t&&(0,c.jsx)(`span`,{className:`v1-required-mark`,children:` *`})]}),children:[(0,c.jsx)(o.Form.Item,{label:`Name`,name:`name`,children:(0,c.jsx)(o.Input,{maxLength:100,placeholder:`Enter ${D.label.toLowerCase()} name`,onBlur:e=>{n.setFieldsValue({name:QA(e.target.value)})}})}),(0,c.jsx)(o.Form.Item,{label:`Type`,name:`type`,children:(0,c.jsx)(o.Input,{disabled:!0})})]})})]})})]})}var{Text:ij}=o.Typography,aj=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`}];function oj(e=``){return String(e??``).trim()}function sj(e=[],t){return e.map(e=>({value:e.id,label:e[t]}))}var cj=[{label:`Step`,value:`step_order`,width:70},{label:`Action`,value:`actions`,width:140},{label:`Key`,value:`key`,width:160,ellipsis:!0},{label:`Value`,value:`value`,ellipsis:!0},{label:`Description`,value:`description`,ellipsis:!0},{label:`Scenario`,value:`scenario`,width:110,render:e=>e===1?(0,c.jsx)(o.Tag,{color:`green`,children:`Positive`}):(0,c.jsx)(o.Tag,{color:`red`,children:`Negative`})}],lj={key:!1,value:!1,expected:!1};function uj(e,t){return t?e[t]??lj:lj}function dj(e,t){e.setFields(t.map(e=>({name:e,errors:[]})))}function fj(){let[n]=o.Form.useForm(),r=(0,u.useNavigate)(),[i]=(0,u.useSearchParams)(),l=i.get(`edit`),d=!!l,f=(0,a.useMemo)(()=>t.c(),[]),[p,m]=(0,a.useState)([]),[h,g]=(0,a.useState)([]),[_,v]=(0,a.useState)([]),[y,b]=(0,a.useState)(KA),[x,S]=(0,a.useState)({}),[C,w]=(0,a.useState)(!1),[T,E]=(0,a.useState)(!1),[D,O]=(0,a.useState)(!1),[k,A]=(0,a.useState)(!1),[j,M]=(0,a.useState)(!1),N=o.Form.useWatch(`module`,n),P=o.Form.useWatch(`submodule`,n),F=o.Form.useWatch(`actions`,n),I=!!N,L=!!P,R=(0,a.useMemo)(()=>uj(x,F),[x,F]),z=(0,a.useMemo)(()=>sj(p,`modulename`),[p]),B=(0,a.useMemo)(()=>sj(h,`submodulename`),[h]),ee=(0,a.useMemo)(()=>p.find(e=>e.id===N)?.modulename??``,[p,N]),V=(0,a.useMemo)(()=>h.find(e=>e.id===P)?.submodulename??``,[P,h]),H=(0,a.useCallback)(async()=>{try{let e=await Iv();Array.isArray(e?.options)&&e.options.length>0&&b(e.options),e?.rules&&typeof e.rules==`object`&&S(e.rules)}catch(e){console.error(`Unable to load action field rules:`,e),o.message.error(`Unable to load action validation rules.`)}},[]),U=(0,a.useCallback)(async e=>{if(!e){m([]);return}w(!0);try{m((await Wv({project:e,activeOnly:!0}))?.items??[])}catch(e){console.error(`Unable to load modules:`,e),o.message.error(`Unable to load modules.`)}finally{w(!1)}},[]),te=(0,a.useCallback)(async(e,t)=>{if(!e||!t){g([]);return}E(!0);try{g((await qv({project:e,module:t,activeOnly:!0}))?.items??[])}catch(e){console.error(`Unable to load submodules:`,e),o.message.error(`Unable to load submodules.`)}finally{E(!1)}},[]),ne=(0,a.useCallback)(async(e,t,r,i=``)=>{if(!e||!t||!r){v([]),n.setFieldsValue({step_order:void 0});return}O(!0);try{let[a,o]=await Promise.all([Xv({product_parent_ID:e,module_parent_ID:t,submodule_parent_ID:r,actions:i,limit:1e3}),$v({product_parent_ID:e,module_parent_ID:t,submodule_parent_ID:r})]);v(a?.items??[]),n.setFieldsValue({step_order:o?.step_order??1})}catch(e){console.error(`Unable to load flows:`,e),o.message.error(`Unable to load flows.`)}finally{O(!1)}},[n]),W=(0,a.useCallback)(async(e=``)=>{if(!(!f?.id||!N||!P)){O(!0);try{v((await Xv({product_parent_ID:f.id,module_parent_ID:N,submodule_parent_ID:P,actions:e,limit:1e3}))?.items??[])}catch(e){console.error(`Unable to load action flows:`,e),o.message.error(`Unable to load action steps.`)}finally{O(!1)}}},[f?.id,N,P]),re=(0,a.useCallback)(async()=>{if(!(!l||!f?.name)){M(!0);try{let e=await Qv(l);await te(f.name,e.module),v((await Xv({product_parent_ID:e.product_parent_ID,module_parent_ID:e.module_parent_ID,submodule_parent_ID:e.submodule_parent_ID,limit:1e3}))?.items??[]),n.setFieldsValue({module:e.module_parent_ID,submodule:e.submodule_parent_ID,step_order:e.step_order,actions:e.actions,key:e.key,value:e.value,expected:e.expected,description:e.description,scenario:e.scenario===1,active:Number(e.active)!==0})}catch(e){console.error(`Unable to load test flow:`,e),o.message.error(`Unable to load test flow for edit.`),r(`/viewTestCase`)}finally{M(!1)}}},[l,n,te,r,f?.name]);return(0,a.useEffect)(()=>{if(!f){r(`/select-project`,{replace:!0});return}Promise.resolve().then(async()=>{await H(),await U(f.name),l&&await re()})},[f,r,H,U,l,re]),f?(0,c.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,c.jsxs)(o.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,c.jsx)(o.Col,{children:(0,c.jsx)(e.t,{items:aj})}),(0,c.jsx)(o.Col,{children:(0,c.jsxs)(o.Space,{size:6,className:`zt-section-title`,children:[(0,c.jsx)(s.ProjectOutlined,{}),(0,c.jsx)(ij,{strong:!0,children:f.name})]})})]}),(0,c.jsx)(`div`,{className:`zt-page`,children:(0,c.jsxs)(o.Form,{form:n,layout:`vertical`,colon:!1,className:`v1-form`,initialValues:{scenario:!0,active:!0},onFinish:async e=>{let t={product_parent_ID:Number(f?.id),module_parent_ID:Number(e.module),submodule_parent_ID:Number(e.submodule),description:oj(e.description),actions:oj(e.actions),key:oj(e.key),value:oj(e.value),expected:oj(e.expected),scenario:+!!e.scenario,active:+!!e.active};A(!0);try{if(d){await ey(l,{...t,step_order:Number(e.step_order)}),o.message.success(`Test case updated successfully.`),r(`/viewTestCase`);return}await Zv(t),o.message.success(`Step saved (#${e.step_order}).`),n.setFieldsValue({actions:void 0,key:void 0,value:void 0,expected:void 0,description:void 0}),await ne(t.product_parent_ID,t.module_parent_ID,t.submodule_parent_ID)}catch(e){console.error(`Unable to save test case:`,e),o.message.error(d?`Unable to update test case.`:`Unable to save step.`)}finally{A(!1)}},autoComplete:`off`,disabled:j,children:[(0,c.jsx)(o.Card,{className:`v1-card zt-fall`,title:(0,c.jsxs)(o.Space,{size:8,className:`zt-section-title`,children:[(0,c.jsx)(`span`,{className:`zt-step-tag`,children:`1`}),(0,c.jsx)(`span`,{children:`Module & Submodule`})]}),children:(0,c.jsxs)(o.Row,{gutter:[24,0],align:`bottom`,children:[(0,c.jsx)(o.Col,{xs:24,md:6,children:(0,c.jsx)(o.Form.Item,{label:`Module`,name:`module`,children:(0,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,loading:C,placeholder:`Select module`,options:z,onChange:e=>{let t=p.find(t=>t.id===e)?.modulename??``;n.setFieldsValue({module:e,submodule:void 0,step_order:void 0,actions:void 0,key:void 0,value:void 0,expected:void 0}),dj(n,[`actions`,`key`,`value`,`expected`]),g([]),v([]),te(f?.name,t)}})})}),(0,c.jsx)(o.Col,{xs:24,md:6,children:(0,c.jsx)(o.Form.Item,{label:`Submodule`,name:`submodule`,children:(0,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,disabled:!I,loading:T,placeholder:I?`Select submodule`:`Select module first`,options:B,onChange:e=>{n.setFieldsValue({submodule:e,actions:void 0,key:void 0,value:void 0,expected:void 0}),dj(n,[`actions`,`key`,`value`,`expected`]),ne(f?.id,N,e)}})})}),(0,c.jsx)(o.Col,{xs:24,md:6,children:(0,c.jsx)(o.Form.Item,{label:`Scenario`,name:`scenario`,valuePropName:`checked`,children:(0,c.jsx)(o.Switch,{disabled:!L,checkedChildren:`Positive`,unCheckedChildren:`Negative`})})}),(0,c.jsx)(o.Col,{xs:24,md:6,children:(0,c.jsx)(o.Form.Item,{label:`Active`,name:`active`,valuePropName:`checked`,children:(0,c.jsx)(o.Switch,{checkedChildren:`Active`,unCheckedChildren:`Inactive`})})})]})}),L&&(0,c.jsxs)(o.Card,{className:`v1-card zt-fall`,title:(0,c.jsxs)(o.Space,{size:8,className:`zt-section-title`,children:[(0,c.jsx)(`span`,{className:`zt-step-tag`,children:`2`}),(0,c.jsx)(s.FileTextOutlined,{}),(0,c.jsx)(`span`,{children:`Step Details`})]}),extra:(0,c.jsxs)(ij,{type:`secondary`,children:[ee,` / `,V]}),children:[(0,c.jsxs)(o.Row,{gutter:[24,0],children:[(0,c.jsx)(o.Col,{xs:24,md:6,children:(0,c.jsx)(o.Form.Item,{label:`Step Order`,name:`step_order`,children:(0,c.jsx)(o.Input,{disabled:!0,placeholder:D?`Loading…`:`Auto`})})}),(0,c.jsx)(o.Col,{xs:24,md:18,children:(0,c.jsx)(o.Form.Item,{label:`Action`,name:`actions`,rules:[{required:!0,message:`Mandatory Field`}],children:(0,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,placeholder:`Select action`,options:y,onChange:e=>{let t=uj(x,e);n.setFieldsValue({actions:e,key:t.key?n.getFieldValue(`key`):void 0,value:t.value?n.getFieldValue(`value`):void 0,expected:t.expected?n.getFieldValue(`expected`):void 0}),dj(n,[`key`,`value`,`expected`]),W(e||``)}})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Key`,name:`key`,rules:[{required:R.key,message:`Key is required for this action`}],children:(0,c.jsx)(o.Input,{maxLength:255,disabled:F&&!R.key,placeholder:F?R.key?`Required — Enter selector / locator`:`Not needed for this action`:`Select an action first`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Value`,name:`value`,rules:[{required:R.value,message:`Value is required for this action`}],children:(0,c.jsx)(o.Input.TextArea,{rows:1,autoSize:{minRows:1,maxRows:4},disabled:F&&!R.value,placeholder:F?R.value?`Required — Enter value`:`Not needed for this action`:`Select an action first`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Expected`,name:`expected`,rules:[{required:R.expected,message:`Expected result is required for this action`}],children:(0,c.jsx)(o.Input.TextArea,{rows:2,disabled:F&&!R.expected,placeholder:F?R.expected?`Required — Enter expected result`:`Not needed for this action`:`Select an action first`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Description`,name:`description`,children:(0,c.jsx)(o.Input.TextArea,{rows:2,maxLength:255,showCount:!0,placeholder:`Enter description`})})})]}),(0,c.jsxs)(o.Space,{className:`zt-actions`,children:[(0,c.jsx)(o.Button,{onClick:()=>{if(d){r(`/viewTestCase`);return}n.resetFields(),g([]),v([]),E(!1),O(!1)},children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,htmlType:`submit`,loading:k||j,children:d?`Update Test Case`:`Save & Continue`})]})]},`${N}-${P}`),L&&(0,c.jsx)(o.Card,{className:`v1-card zt-fall`,title:(0,c.jsxs)(o.Space,{size:6,className:`zt-section-title`,children:[(0,c.jsx)(s.TableOutlined,{}),(0,c.jsx)(`span`,{children:`Added Steps`})]}),extra:(0,c.jsx)(o.Tag,{children:F?`${_.length} ${F} step(s)`:`${_.length} step(s)`}),children:(0,c.jsx)(om,{listName:`Added Steps`,loading:D,fields:cj,dataSource:_,current:1,pageSize:Math.max(_.length,1),total:_.length,rowSelection:!1,className:`zt-list-plain zt-list-static`})})]})})]}):null}var{Text:pj}=o.Typography,mj=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`},{label:`Manage Modules`,href:`/manageModules`}];function hj(){let n=(0,u.useNavigate)(),r=(0,a.useMemo)(()=>t.c(),[]),[i,l]=(0,a.useState)([]),[d,f]=(0,a.useState)({}),[p,m]=(0,a.useState)(!1),[h,g]=(0,a.useState)(!1),[_,v]=(0,a.useState)(``),[y,b]=(0,a.useState)(!1),[x,S]=(0,a.useState)(1),[C,w]=(0,a.useState)(10),T=(0,a.useCallback)(async e=>{if(!e){l([]);return}m(!0);try{let[t,n]=await Promise.all([Wv({project:e}),qv({project:e})]);l(t?.items??[]);let r={};(n?.items??[]).forEach(e=>{let t=e.modulename;r[t]=(r[t]??0)+1}),f(r)}catch(e){console.error(e),o.message.error(`Unable to load modules.`)}finally{m(!1)}},[]);(0,a.useEffect)(()=>{if(!r){n(`/select-project`,{replace:!0});return}Promise.resolve().then(()=>T(r.name))},[r,n,T]);let E=async(e,t)=>{try{await Kv(e.id,+!!t),l(n=>n.map(n=>n.id===e.id?{...n,active:+!!t}:n)),o.message.success(`Module ${t?`activated`:`deactivated`}.`)}catch(e){console.error(e),o.message.error(`Unable to update module status.`)}},D=async()=>{let e=_.trim();if(!e){o.message.warning(`Enter a module name.`);return}b(!0);try{await Gv({project:r.name,modulename:e}),o.message.success(`Module added.`),g(!1),v(``),S(1),T(r.name)}catch(e){console.error(e),o.message.error(`Unable to add module (maybe it already exists).`)}finally{b(!1)}},O=e=>{n(`/test-cases/zinnext/submodules?module=${encodeURIComponent(e.modulename)}`)};return r?(0,c.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,c.jsxs)(o.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,c.jsx)(o.Col,{children:(0,c.jsx)(e.t,{items:mj})}),(0,c.jsx)(o.Col,{children:(0,c.jsx)(o.Button,{type:`link`,onClick:()=>n(`/addTestCase`),children:`Back to Form`})})]}),(0,c.jsxs)(`div`,{className:`zt-page`,children:[(0,c.jsx)(o.Card,{className:`v1-card zt-bar`,children:(0,c.jsxs)(o.Row,{gutter:[16,16],align:`middle`,justify:`space-between`,children:[(0,c.jsx)(o.Col,{children:(0,c.jsxs)(o.Space,{size:6,className:`zt-section-title`,children:[(0,c.jsx)(s.ProjectOutlined,{}),(0,c.jsx)(`span`,{children:`Project:`}),(0,c.jsx)(pj,{strong:!0,children:r.name})]})}),(0,c.jsx)(o.Col,{children:(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>g(!0),children:`Add Module`})})]})}),(0,c.jsx)(o.Card,{className:`v1-card zt-fall`,title:(0,c.jsxs)(o.Space,{size:6,className:`zt-section-title`,children:[(0,c.jsx)(s.AppstoreOutlined,{}),(0,c.jsx)(`span`,{children:`Modules`})]}),children:(0,c.jsx)(om,{listName:`Modules`,loading:p,fields:[{label:`Module`,value:`modulename`},{label:`Submodules`,value:`submoduleCount`,width:140,render:(e,t)=>(0,c.jsxs)(o.Button,{type:`link`,className:`zt-count-link`,onClick:()=>O(t),children:[d[t.modulename]??0,` submodule(s)`]})},{label:`Active`,value:`active`,width:120,render:(e,t)=>(0,c.jsx)(o.Switch,{checked:e===1,checkedChildren:`On`,unCheckedChildren:`Off`,onChange:e=>E(t,e)})}],dataSource:i,current:x,pageSize:C,total:i.length,onPageChange:S,onPageSizeChange:e=>{S(1),w(e)},rowSelection:!1,className:`zt-list-plain`})})]}),(0,c.jsx)(o.Modal,{title:`Add Module`,open:h,confirmLoading:y,okText:`Add`,onOk:D,onCancel:()=>{g(!1),v(``)},destroyOnHidden:!0,children:(0,c.jsxs)(o.Space,{direction:`vertical`,className:`zt-modal-stack`,children:[(0,c.jsxs)(pj,{type:`secondary`,children:[`Project: `,(0,c.jsx)(`b`,{children:r.name})]}),(0,c.jsx)(o.Input,{placeholder:`Enter module name`,maxLength:100,value:_,onChange:e=>v(e.target.value),onPressEnter:D})]})})]}):null}var{Text:gj}=o.Typography,_j=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`},{label:`Manage Modules`,href:`/manageModules`},{label:`Manage Submodules`,href:`/test-cases/zinnext/submodules`}];function vj(){let n=(0,u.useNavigate)(),[r]=(0,u.useSearchParams)(),i=(0,a.useMemo)(()=>t.c(),[]),l=r.get(`module`)??``,[d,f]=(0,a.useState)([]),[p,m]=(0,a.useState)(!1),[h,g]=(0,a.useState)(!1),[_,v]=(0,a.useState)(``),[y,b]=(0,a.useState)(!1),[x,S]=(0,a.useState)(1),[C,w]=(0,a.useState)(10),T=(0,a.useCallback)(async(e,t)=>{if(!e||!t){f([]);return}m(!0);try{f((await qv({project:e,module:t}))?.items??[])}catch(e){console.error(e),o.message.error(`Unable to load submodules.`)}finally{m(!1)}},[]);(0,a.useEffect)(()=>{if(!i){n(`/select-project`,{replace:!0});return}if(!l){n(`/manageModules`,{replace:!0});return}Promise.resolve().then(()=>T(i.name,l))},[i,l,n,T]);let E=async(e,t)=>{try{await Yv(e.id,+!!t),f(n=>n.map(n=>n.id===e.id?{...n,active:+!!t}:n)),o.message.success(`Submodule ${t?`activated`:`deactivated`}.`)}catch(e){console.error(e),o.message.error(`Unable to update submodule status.`)}},D=async()=>{let e=_.trim();if(!e){o.message.warning(`Enter a submodule name.`);return}b(!0);try{await Jv({project:i.name,modulename:l,submodulename:e}),o.message.success(`Submodule added.`),g(!1),v(``),S(1),T(i.name,l)}catch(e){console.error(e),o.message.error(`Unable to add submodule (maybe it already exists).`)}finally{b(!1)}};return!i||!l?null:(0,c.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,c.jsxs)(o.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,c.jsx)(o.Col,{children:(0,c.jsx)(e.t,{items:_j})}),(0,c.jsx)(o.Col,{children:(0,c.jsx)(o.Button,{type:`link`,onClick:()=>n(`/manageModules`),children:`Back to Modules`})})]}),(0,c.jsxs)(`div`,{className:`zt-page`,children:[(0,c.jsx)(o.Card,{className:`v1-card zt-bar`,children:(0,c.jsxs)(o.Row,{gutter:[16,16],align:`middle`,justify:`space-between`,children:[(0,c.jsx)(o.Col,{children:(0,c.jsxs)(o.Space,{size:16,wrap:!0,className:`zt-section-title`,children:[(0,c.jsxs)(o.Space,{size:6,children:[(0,c.jsx)(s.ProjectOutlined,{}),(0,c.jsx)(`span`,{children:`Project:`}),(0,c.jsx)(gj,{strong:!0,children:i.name})]}),(0,c.jsxs)(o.Space,{size:6,children:[(0,c.jsx)(s.AppstoreOutlined,{}),(0,c.jsx)(`span`,{children:`Module:`}),(0,c.jsx)(gj,{strong:!0,children:l})]})]})}),(0,c.jsx)(o.Col,{children:(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>g(!0),children:`Add Submodule`})})]})}),(0,c.jsx)(o.Card,{className:`v1-card zt-fall`,title:(0,c.jsxs)(o.Space,{size:6,className:`zt-section-title`,children:[(0,c.jsx)(s.AppstoreOutlined,{}),(0,c.jsx)(`span`,{children:`Submodules`})]}),children:(0,c.jsx)(om,{listName:`Submodules`,loading:p,fields:[{label:`Submodule`,value:`submodulename`},{label:`Active`,value:`active`,width:120,render:(e,t)=>(0,c.jsx)(o.Switch,{checked:e===1,checkedChildren:`On`,unCheckedChildren:`Off`,onChange:e=>E(t,e)})}],dataSource:d,current:x,pageSize:C,total:d.length,onPageChange:S,onPageSizeChange:e=>{S(1),w(e)},rowSelection:!1,className:`zt-list-plain`})})]}),(0,c.jsx)(o.Modal,{title:`Add Submodule`,open:h,confirmLoading:y,okText:`Add`,onOk:D,onCancel:()=>{g(!1),v(``)},destroyOnHidden:!0,children:(0,c.jsxs)(o.Space,{direction:`vertical`,className:`zt-modal-stack`,children:[(0,c.jsxs)(gj,{type:`secondary`,children:[`Project: `,(0,c.jsx)(`b`,{children:i.name}),` \xA0|\xA0 Module: `,(0,c.jsx)(`b`,{children:l})]}),(0,c.jsx)(o.Input,{placeholder:`Enter submodule name`,maxLength:100,value:_,onChange:e=>v(e.target.value),onPressEnter:D})]})})]})}var{Text:yj}=o.Typography,bj=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`},{label:`Table`,href:`/viewTestCase`}];function xj(){let n=(0,u.useNavigate)(),[r,i]=(0,a.useState)([]),[l,d]=(0,a.useState)(0),[f,p]=(0,a.useState)(!1),m=(0,a.useMemo)(()=>t.c(),[]),[h,g]=(0,a.useState)(``),[_,v]=(0,a.useState)(1),[y,b]=(0,a.useState)(20),[x,S]=(0,a.useState)(null),C=(0,a.useCallback)(async(e={})=>{p(!0);try{let t=await Xv({product_parent_ID:e.project??m?.id??``,search:e.search??h??``,limit:e.pageSize??y,offset:((e.page??_)-1)*(e.pageSize??y)});i(t?.items??[]),d(t?.total??0)}catch(e){console.error(e),o.message.error(`Unable to load test flows.`)}finally{p(!1)}},[m?.id,h,_,y]),w=e=>{o.Modal.confirm({title:`Delete Test Case`,icon:(0,c.jsx)(s.ExclamationCircleOutlined,{}),content:`Are you sure you want to delete this test case?`,okText:`Delete`,okButtonProps:{danger:!0,loading:x===e.id},cancelText:`Cancel`,async onOk(){S(e.id);try{await ty(e.id),o.message.success(`Test case deleted successfully.`);let t=r.length===1&&_>1?_-1:_;v(t),await C({page:t})}catch(e){throw console.error(`Unable to delete test flow:`,e),o.message.error(`Unable to delete test case.`),e}finally{S(null)}}})};return(0,a.useEffect)(()=>{Promise.resolve().then(()=>{if(!m?.id){n(`/select-project`,{replace:!0});return}C({page:1})})},[]),(0,c.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,c.jsxs)(o.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,c.jsx)(o.Col,{children:(0,c.jsx)(e.t,{items:bj})}),(0,c.jsx)(o.Col,{children:(0,c.jsx)(o.Button,{type:`link`,onClick:()=>n(`/addTestCase`),children:`Back to Form`})})]}),(0,c.jsx)(`div`,{className:`zt-page zt-page-wide`,children:(0,c.jsxs)(o.Card,{className:`v1-card`,title:(0,c.jsxs)(o.Space,{size:6,className:`zt-section-title`,children:[(0,c.jsx)(s.TableOutlined,{}),(0,c.jsx)(`span`,{children:`Test Flows`})]}),extra:(0,c.jsxs)(yj,{type:`secondary`,children:[l,` row(s)`]}),children:[(0,c.jsxs)(o.Space,{wrap:!0,className:`zt-toolbar`,children:[(0,c.jsx)(o.Input.Search,{allowClear:!0,className:`zt-search-filter`,placeholder:`Search module / key / description`,value:h,onChange:e=>g(e.target.value),onSearch:()=>{v(1),C({page:1})}}),(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.ReloadOutlined,{}),onClick:()=>C(),children:`Refresh`})]}),(0,c.jsx)(om,{listName:`Test Flows`,loading:f,fields:[{label:`Actions`,value:`rowActions`,width:112,fixed:`left`,sorter:!1,render:(e,t)=>(0,c.jsxs)(o.Space,{size:4,className:`zt-row-actions`,children:[(0,c.jsx)(o.Tooltip,{title:`Edit`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>n(`/addTestCase?edit=${t.id}`)})}),(0,c.jsx)(o.Tooltip,{title:`Delete`,children:(0,c.jsx)(o.Button,{danger:!0,type:`text`,size:`small`,icon:(0,c.jsx)(s.DeleteOutlined,{}),loading:x===t.id,onClick:()=>w(t)})})]})},{label:`ID`,value:`id`,width:70,fixed:`left`},{label:`Project`,value:`project`,width:130},{label:`Module`,value:`module`,width:130},{label:`Submodule`,value:`submodule`,width:140},{label:`Step`,value:`step_order`,width:70},{label:`Action`,value:`actions`,width:140},{label:`Key`,value:`key`,width:160,ellipsis:!0},{label:`Value`,value:`value`,width:200,ellipsis:!0},{label:`Expected`,value:`expected`,width:180,ellipsis:!0},{label:`Description`,value:`description`,width:180,ellipsis:!0},{label:`Scenario`,value:`scenario`,width:110,render:e=>e===1?(0,c.jsx)(o.Tag,{color:`green`,children:`Positive`}):(0,c.jsx)(o.Tag,{color:`red`,children:`Negative`})},{label:`Active`,value:`active`,width:90,render:e=>e===1?(0,c.jsx)(o.Tag,{color:`blue`,children:`Active`}):(0,c.jsx)(o.Tag,{children:`Inactive`})}],dataSource:r,current:_,pageSize:y,total:l,onPageChange:e=>{v(e),C({page:e})},onPageSizeChange:e=>{v(1),b(e),C({page:1,pageSize:e})},rowSelection:!1,className:`zt-list-plain`})]})})]})}var Sj=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/test-cases`}];function Cj(){return(0,c.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,c.jsx)(e.t,{items:Sj}),(0,c.jsx)(Oo,{moduleName:`test-flows`,rowKey:`id`})]})}var{Text:wj}=o.Typography,Tj=[{label:`Home`,href:`/`},{label:`LMS Cases`,href:`/lms-cases`}],Ej={tags:`regression`,active:1},Dj={module:{dbName:`Modules`,formField:`module`,label:`Module`}},Oj={key:!1,value:!1,expected:!1};function kj(e,t){return t?e[t]??Oj:Oj}function Aj(e,t){e.setFields(t.map(e=>({name:e,errors:[]})))}function jj(e=[]){return e.map(e=>({value:e,label:e}))}function Mj(e=``){return String(e??``).trim()}function Nj(e=[]){let t=new Map;return e.forEach(e=>{let n=Mj(e?.flow),r=n.toLowerCase();n&&!t.has(r)&&t.set(r,n)}),Array.from(t.values()).map(e=>({value:e,label:e}))}function Pj(e=[],t,n){let r=Mj(t).toLowerCase(),i=Mj(n).toLowerCase();return e.reduce((e,t)=>{let n=Mj(t?.module).toLowerCase(),a=Mj(t?.flow).toLowerCase();if(n!==r||a!==i)return e;let o=Number(t?.step_order)||0;return Math.max(e,o)},0)+1}function Fj({icon:e,title:t}){return(0,c.jsxs)(o.Space,{size:10,align:`center`,children:[(0,c.jsx)(`div`,{className:`v1-section-icon-box`,children:e}),(0,c.jsx)(wj,{strong:!0,className:`v1-section-label`,children:t})]})}function Ij(){let[t]=o.Form.useForm(),[n]=o.Form.useForm(),[r,i]=(0,a.useState)([]),[l,d]=(0,a.useState)([]),[f,p]=(0,a.useState)([]),[m,h]=(0,a.useState)(KA),[g,_]=(0,a.useState)({}),[v,y]=(0,a.useState)(!1),[b,x]=(0,a.useState)(!1),[S,C]=(0,a.useState)({open:!1,typeKey:`module`}),[w,T]=(0,a.useState)(!1),[E,D]=(0,a.useState)(!1),[O,k]=(0,a.useState)(!1),A=(0,u.useNavigate)(),j=Dj[S.typeKey],M=(0,a.useMemo)(()=>jj(r),[r]),N=o.Form.useWatch(`module`,t),P=o.Form.useWatch(`flow`,t),F=o.Form.useWatch(`keyword`,t),I=!!Mj(N),L=!!Mj(P),R=!I,z=!I||!L,B=(0,a.useMemo)(()=>kj(g,F),[g,F]),ee=(e,t=[])=>{e===`module`&&i(t)},V=async()=>{y(!0);try{i((await Pv(Dj.module.dbName))?.items??[])}catch(e){console.error(`Unable to load testing options:`,e),o.message.error(`Unable to load testing options.`)}finally{y(!1)}},H=async()=>{try{let e=await Iv();Array.isArray(e?.options)&&e.options.length>0&&h(e.options),e?.rules&&typeof e.rules==`object`&&_(e.rules)}catch(e){console.error(`Unable to load action field rules:`,e),o.message.error(`Unable to load action validation rules.`)}},U=(0,a.useCallback)(async e=>{let n=Mj(e);if(d([]),p([]),t.setFieldsValue({step_order:void 0}),n){x(!0);try{let e=await Hv({limit:1e4,offset:0,module:n}),t=Array.isArray(e?.items)?e.items:[];d(t),p(Nj(t))}catch(e){console.error(`Unable to load flows:`,e),o.message.error(`Unable to load flows.`)}finally{x(!1)}}},[t]),te=(0,a.useCallback)(async(e,n,r)=>{let i=Mj(e),a=Mj(n);if(!i||!a){t.setFieldsValue({step_order:void 0});return}D(!0);try{t.setFieldsValue({step_order:Pj(r,i,a)})}catch(e){console.error(`Unable to load step order:`,e),o.message.error(`Unable to load step order.`)}finally{D(!1)}},[t]);(0,a.useEffect)(()=>{Promise.resolve().then(async()=>{await Promise.all([V(),H()])})},[]),(0,a.useEffect)(()=>{Promise.resolve().then(()=>U(N))},[U,N]),(0,a.useEffect)(()=>{Promise.resolve().then(()=>te(N,P,l))},[l,te,P,N]);let ne=async e=>{let n={module:Mj(e.module),flow:Mj(e.flow),step_order:Number(e.step_order),description:Mj(e.description),keyword:Mj(e.keyword),target:Mj(e.target),value:Mj(e.value),expected:Mj(e.expected),tags:e.tags?Mj(e.tags):Ej.tags,active:Number(e.active)};k(!0);try{await Vv(n),o.message.success(`LMS case details saved successfully.`),t.resetFields(),d([]),p([])}catch(e){console.error(`Unable to save LMS case:`,e),o.message.error(`Unable to save LMS case.`)}finally{k(!1)}},W=(e,n)=>{t.setFieldsValue({[e]:Mj(n)})},re=e=>{t.setFieldsValue({module:Mj(e),flow:void 0,step_order:void 0,keyword:void 0,description:void 0,target:void 0,tags:Ej.tags,value:void 0,expected:void 0}),Aj(t,[`keyword`,`target`,`value`,`expected`])},ie=e=>{t.setFieldsValue({flow:Mj(e),step_order:void 0,keyword:void 0,target:void 0,value:void 0,expected:void 0}),Aj(t,[`keyword`,`target`,`value`,`expected`])},G=e=>{let n=kj(g,e);t.setFieldsValue({keyword:Mj(e),target:n.key?t.getFieldValue(`target`):void 0,value:n.value?t.getFieldValue(`value`):void 0,expected:n.expected?t.getFieldValue(`expected`):void 0}),Aj(t,[`target`,`value`,`expected`])},ae=e=>{let t=Dj[e];C({open:!0,typeKey:e}),n.setFieldsValue({name:``,type:t.label})},oe=()=>{C(e=>({...e,open:!1})),n.resetFields()},se=async()=>{try{let e=Mj((await n.validateFields()).name),r=await Fv({name:e,type:j.dbName});ee(S.typeKey,r?.items??[]),t.setFieldsValue({[j.formField]:e}),o.message.success(`${j.label} added successfully.`),oe()}catch(e){if(e?.errorFields)return;console.error(`Unable to save testing option:`,e),o.message.error(`Unable to add ${j.label.toLowerCase()}.`)}finally{T(!1)}};return(0,c.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,c.jsxs)(o.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,c.jsx)(o.Col,{children:(0,c.jsx)(e.t,{items:Tj})}),(0,c.jsx)(o.Col,{children:(0,c.jsx)(o.Button,{type:`link`,onClick:()=>A(`/lms-home`),children:`View Table`})})]}),(0,c.jsx)(`div`,{className:`v1-page`,children:(0,c.jsxs)(`div`,{className:`v1-page-inner`,children:[(0,c.jsx)(`div`,{className:`v1-page-header`,children:(0,c.jsxs)(o.Space,{align:`center`,size:10,children:[(0,c.jsx)(s.ProfileOutlined,{className:`v1-outer-icon`}),(0,c.jsx)(`div`,{children:(0,c.jsx)(wj,{strong:!0,style:{fontSize:16},children:`Add LMS Case`})})]})}),(0,c.jsx)(Z,{children:(0,c.jsxs)(o.Form,{form:t,className:`v1-form`,layout:`vertical`,colon:!1,requiredMark:(e,{required:t})=>(0,c.jsxs)(c.Fragment,{children:[e,t&&(0,c.jsx)(`span`,{className:`v1-required-mark`,children:` *`})]}),initialValues:Ej,onFinish:ne,autoComplete:`off`,children:[(0,c.jsx)(o.Card,{className:`v1-card`,title:(0,c.jsx)(Fj,{icon:(0,c.jsx)(s.FileTextOutlined,{}),title:`LMS Case Details`}),extra:(0,c.jsx)(wj,{type:`secondary`,className:`v1-card-subtitle`,children:`Module, flow, step order and execution data`}),children:(0,c.jsxs)(o.Row,{gutter:[24,0],children:[(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsxs)(o.Space.Compact,{style:{width:`100%`},children:[(0,c.jsx)(o.Form.Item,{label:`Module`,name:`module`,style:{flex:1},children:(0,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,loading:v,optionFilterProp:`label`,placeholder:`Select module`,options:M,onChange:re})}),(0,c.jsx)(o.Button,{"aria-label":`Add module`,icon:(0,c.jsx)(s.PlusOutlined,{}),style:{marginTop:30},onClick:()=>ae(`module`)})]})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Flow`,name:`flow`,children:(0,c.jsx)(o.AutoComplete,{maxLength:100,allowClear:!0,disabled:R,options:f,placeholder:b?`Loading flows`:`Enter flow`,onChange:ie,filterOption:(e,t)=>t?.value?.toLowerCase().includes(e.toLowerCase())})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Step Order`,name:`step_order`,validateTrigger:[`onBlur`,`onChange`],children:(0,c.jsx)(o.Input,{maxLength:10,disabled:!0,placeholder:E?`Loading step order`:`Step order`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Action`,name:`keyword`,children:(0,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,disabled:z,optionFilterProp:`label`,placeholder:`Select action`,options:m,onChange:G})})}),(0,c.jsx)(o.Col,{xs:24,children:(0,c.jsx)(o.Form.Item,{label:`Description`,name:`description`,children:(0,c.jsx)(o.Input.TextArea,{rows:3,maxLength:255,disabled:z,placeholder:`Enter description`,showCount:!0,onBlur:e=>W(`description`,e.target.value)})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Key`,name:`target`,rules:[{required:B.key,message:`Key is required for this action`}],children:(0,c.jsx)(o.Input,{maxLength:255,disabled:z||!!F&&!B.key,placeholder:z?`Select module and flow first`:F?B.key?`Required — Enter selector / locator`:`Not needed for this action`:`Select an action first`,onBlur:e=>W(`target`,e.target.value)})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Tags`,name:`tags`,children:(0,c.jsx)(o.Input,{maxLength:200,disabled:z,placeholder:`Enter tags`,prefix:(0,c.jsx)(s.TagsOutlined,{className:`v1-input-icon`}),onBlur:e=>W(`tags`,e.target.value)})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Value`,name:`value`,rules:[{required:B.value,message:`Value is required for this action`}],children:(0,c.jsx)(o.Input.TextArea,{rows:4,disabled:z||!!F&&!B.value,placeholder:z?`Select module and flow first`:F?B.value?`Required — Enter value`:`Not needed for this action`:`Select an action first`,onBlur:e=>W(`value`,e.target.value)})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{label:`Expected`,name:`expected`,rules:[{required:B.expected,message:`Expected result is required for this action`}],children:(0,c.jsx)(o.Input.TextArea,{rows:4,disabled:z||!!F&&!B.expected,placeholder:z?`Select module and flow first`:F?B.expected?`Required — Enter expected result`:`Not needed for this action`:`Select an action first`,onBlur:e=>W(`expected`,e.target.value)})})})]})}),(0,c.jsx)(`div`,{className:`v1-form-actions`,children:(0,c.jsx)(o.Form.Item,{children:(0,c.jsxs)(o.Space,{children:[(0,c.jsx)(o.Button,{type:`primary`,htmlType:`submit`,loading:O,disabled:z,children:`Submit`}),(0,c.jsx)(o.Button,{onClick:()=>{t.resetFields(),d([]),p([])},children:`Reset`})]})})})]})}),(0,c.jsx)(o.Modal,{title:`Add ${j.label}`,open:S.open,confirmLoading:w,okText:`Add`,onCancel:oe,onOk:()=>{T(!0),se()},destroyOnHidden:!0,children:(0,c.jsxs)(o.Form,{form:n,layout:`vertical`,colon:!1,className:`v1-form`,requiredMark:(e,{required:t})=>(0,c.jsxs)(c.Fragment,{children:[e,t&&(0,c.jsx)(`span`,{className:`v1-required-mark`,children:` *`})]}),children:[(0,c.jsx)(o.Form.Item,{label:`Name`,name:`name`,children:(0,c.jsx)(o.Input,{maxLength:100,placeholder:`Enter ${j.label.toLowerCase()} name`,onBlur:e=>{n.setFieldsValue({name:Mj(e.target.value)})}})}),(0,c.jsx)(o.Form.Item,{label:`Type`,name:`type`,children:(0,c.jsx)(o.Input,{disabled:!0})})]})})]})})]})}var Lj=[{label:`Home`,href:`/`},{label:`LMS Cases`,href:`/lms-cases`}];function Rj(){return(0,c.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,c.jsx)(e.t,{items:Lj}),(0,c.jsx)(Oo,{moduleName:`lms-flows`,rowKey:`id`})]})}var zj=[`referenceId`,`ReferenceId`,`candidateId`,`CandidateId`,`entityId`,`EntityId`,`id`,`Id`,`_id`];function Bj(e=zj){return function(t){if(!t||typeof t!=`object`)return``;for(let n of e){let e=t[n];if(e!=null&&e!==``)return String(e)}return``}}function Vj(e,t=zj){if(!e||typeof e!=`object`)return[];let n=[];for(let r of t){let t=e[r];t!=null&&t!==``&&n.push(String(t))}return n}var Hj=Bj();function Uj(e){return typeof e==`function`?e:typeof e==`string`?Bj([e]):Array.isArray(e)?Bj(e):Hj}function Wj(e,t,n){return!t||typeof t!=`object`?e:{...t,...e,id:e?.id??t?.id??n}}function Gj(e,t,n={}){return{status:`success`,total:t,data:{data:e,...n}}}var Kj=[`fields`,`fieldConfig`,`tabs`,`tabField`,`actionRules`,`actions`,`columnActions`];function qj(e){let t=e?.data??e,n={};for(let r of Kj){let i=e?.[r]??t?.[r];i==null||Array.isArray(i)&&i.length===0||(n[r]=i)}return n}var Jj=e=>String(e??``).replace(/[^a-zA-Z0-9]/g,``).toLowerCase();function Yj(e,t,n){let r=(Array.isArray(n)?n:[n]).map(Jj).filter(Boolean),i=r.length?e.findIndex(e=>r.includes(Jj(e?.value))||r.includes(Jj(e?.label))):-1;if(i===-1)return[...e,...t];let a=Number(e[i]?.order),o=Number.isFinite(a)?t.map((e,n)=>e.order==null||e.order===``?{...e,order:a+(n+1)/(t.length+1)}:e):t;return[...e.slice(0,i+1),...o,...e.slice(i+1)]}var Xj=(e,t)=>Qr(e,t).rows,Zj=(e,t)=>{let{rows:n,total:r}=Qr(e,t);return{rows:n,total:r}};function Qj(e,t){return function(n,r,i,a={}){return e(t??n,r,i,a)}}function $j(e){return!e||typeof e!=`object`||typeof(e.fetchByKeys??e.fetch??e.function)!=`function`?null:{...e,fetchByKeys:typeof e.fetchByKeys==`function`?e.fetchByKeys:null,fetch:typeof e.fetch==`function`?e.fetch:null,function:typeof e.function==`function`?e.function:null,extractRows:typeof e.extractRows==`function`?e.extractRows:Xj,mergeRow:typeof e.mergeRow==`function`?e.mergeRow:Wj,fetchById:typeof e.fetchById==`function`?e.fetchById:null}}function eM({fetchSecondaryByKeys:e,fetchSecondary:t,extractSecondaryRows:n,fetchSecondaryById:r,secondaryKey:i,mergeRow:a,secondaryFetchLimit:o}){return!e&&!t&&!r?[]:[$j({key:i,fetchByKeys:e?(t,n,r)=>e(t,n,r):null,function:t?({moduleName:e,options:n})=>t(e,o,0,n):null,extractRows:n,fetchById:r,mergeRow:a})].filter(Boolean)}function tM(e){if(typeof e==`function`)return t=>{let n=e(t);return n==null||n===``?[]:[String(n)]};let t=typeof e==`string`?[e]:Array.isArray(e)&&e.length?e:zj;return e=>Vj(e,t)}function nM(e,t){let n=new Map;return e.forEach(e=>{for(let r of t(e))n.has(r)||n.set(r,e)}),n}function rM({moduleName:e,limit:t,offset:n,options:r,keys:i,primaryResponse:a,primaryRows:o,pageRows:s,total:c,source:l}){return{moduleName:e,limit:t,offset:n,options:r,keys:i,primaryResponse:a,primaryRows:o,pageRows:s,total:c,source:l}}async function iM(e,t){if(typeof e.args==`function`){let n=e.args(t);return(e.fetch??e.function??e.fetchByKeys)(...Array.isArray(n)?n:[n])}if(Array.isArray(e.args))return(e.fetch??e.function??e.fetchByKeys)(...e.args);if(e.fetchByKeys&&Array.isArray(t.keys))return e.fetchByKeys(t.moduleName,t.keys,t.options,t);let n=e.fetch??e.function;return typeof n==`function`?n(t):null}function aM({fetchPrimaryPage:e,extractPrimaryPage:t=Zj,fetchSecondaryByKeys:n,joinSources:r=[],fetchPrimary:i,extractPrimaryRows:a=Xj,fetchSecondary:o,extractSecondaryRows:s=Xj,fetchSecondaryById:c,primaryKey:l,secondaryKey:u,mergeRow:d=Wj,secondaryFetchLimit:f=200,extraFields:p=[],extraFieldsAfter:m}){let h=Array.isArray(r)&&r.length?r.map($j).filter(Boolean):eM({fetchSecondaryByKeys:n,fetchSecondary:o,extractSecondaryRows:s,fetchSecondaryById:c,secondaryKey:u,mergeRow:d,secondaryFetchLimit:f}),g=0;async function _(e,t,n,r){if(!e.fetchById||!r)return null;try{let i=await e.fetchById(n,r);return i&&t(i).includes(String(r))?i:null}catch(e){return console.error(`[mergedListApi] per-id join lookup failed for "${r}"`,e),null}}async function v(e,t,n,r,i){if(!n)return e;let a=t.extractRows(n,r)??[],o=Uj(t.primaryKey??l),s=tM(t.key),c=nM(a,s);return Promise.all(e.map(async e=>{let n=o(e),a=c.get(n)??(i()?null:await _(t,s,r,n));return t.mergeRow(e,a,n)}))}async function y(e,t,n,r){let i=e;for(let e of t)i=await v(i,e.source,e.response,n,r);return i}function b(e,t,n){let r={};for(let e of n){if(!e)continue;let t=qj(e);for(let e of Object.keys(t))r[e]??(r[e]=t[e])}return p.length&&(r.fields=Yj(r.fields??[],p,m)),Gj(e,t,r)}async function x({moduleName:e,limit:t,offset:n,options:r,primaryResponse:i,primaryRows:a,pageRows:o,total:s}){return Promise.all(h.map(async c=>{try{let u=Uj(c.primaryKey??l),d=[...new Set(o.map(u).filter(Boolean))];return c.fetchByKeys&&d.length===0?{source:c,response:null}:{source:c,response:await iM(c,rM({moduleName:e,limit:t,offset:n,options:r,keys:d,primaryResponse:i,primaryRows:a,pageRows:o,total:s,source:c}))}}catch(e){return console.error(`[mergedListApi] join fetch failed — rendering page without that join`,e),{source:c,response:null}}}))}async function S(n,r,i,a,o){let s=await e(n,r,i,a),c=t(s,n)??{},l=Array.isArray(c.rows)?c.rows:[],u=Number.isFinite(Number(c.total))?Number(c.total):l.length,d=await x({moduleName:n,limit:r,offset:i,options:a,primaryResponse:s,primaryRows:l,pageRows:l,total:u});return b(await y(l,d,n,o),u,[s,...d.map(e=>e.response)])}async function C(e,t,n,r,o){let s=await i(e,t,n,r),c=a(s,e)??[],l=c.length,u=c.slice(n,n+t),d=await x({moduleName:e,limit:t,offset:n,options:r,primaryResponse:s,primaryRows:c,pageRows:u,total:l});return b(await y(u,d,e,o),l,[s,...d.map(e=>e.response)])}return async function(t,n=10,r=0,i={}){let a=++g,o=()=>a!==g;return e?S(t,n,r,i,o):C(t,n,r,i,o)}}function oM(e,t,n={}){return aM({fetchPrimary:()=>VD(e,t),extractPrimaryRows:zD,fetchSecondary:wn,fetchSecondaryById:HD,secondaryFetchLimit:n.moduleFetchLimit??200})}function sM(e){let t=String(e??``).trim().split(/[^a-zA-Z0-9]+/).filter(Boolean);return t.length?`${t.map((e,t)=>t===0?e.toLowerCase():e[0].toUpperCase()+e.slice(1).toLowerCase()).join(``)}Count`:``}function cM(e){let t=Array.isArray(e?.stages)?e.stages:[];if(!t.length)return e;let n={};for(let e of t){let t=sM(e?.stageName);t&&(n[t]=Number(e?.count)||0)}return{...n,...e}}var lM=e=>{let t=Number(e?.targetSubmission??e?.targetSubmissions);return Number.isFinite(t)&&t>0?t:null};function uM({submittedCountField:e=`submittedCount`,progressField:t=`targetSubmissionProgress`}={}){return function(n,r,i){let a=Wj(n,r,i),o=lM(a);return o!=null&&(a[t]=`${Number(a?.[e])||0} of ${o}`),a}}function dM(e={}){let t=uM();return aM({primaryKey:`_id`,extraFields:e.extraFields,extraFieldsAfter:e.extraFieldsAfter,fetchPrimaryPage:wn,joinSources:[{key:`entityId`,fetchByKeys:(e,t,n,r)=>{let i=Math.max(1,Number(r?.limit)||10);return BD(Math.floor((Number(r?.offset)||0)/i)+1,i)},extractRows:e=>(e?.items??[]).map(cM),mergeRow:(e,n,r)=>{let i=t(e,n,r);return n?._id&&(i.workflowId=n._id),i}}]})}async function fM(e,t=10,n=0,r={},i={}){return Qr(await dM(i)(e,t,n,r),e)}async function pM(e,t,n,r=10,i=0,a={}){return Qr(await oM(e,t)(n,r,i,a),n)}var mM=Ak,hM=iy(OA),gM=iy(AA),_M=iy(GA),vM=iy(rj),yM=iy(fj),bM=iy(hj),xM=iy(vj),SM=iy(xj),CM=iy(Cj),wM=iy(Ij),TM=iy(Rj);exports.ADMIN_API_URL=t._,exports.ADMIN_APP_ID=t.v,exports.APP_ID=t.y,exports.AUTH_URL=t.b,exports.ActivityNotesCard=bc,exports.ActivityTab=hc,exports.AddBatchCandidatePopup=dk,exports.AddFormV1=Qs,exports.AdminDashboard=Ak,exports.AdminDashboardContent=Rw,exports.AdminPage=mM,exports.AppAlert=$s,exports.AppButton=e.st,exports.AppShell=Dv,exports.ApprovalActionBar=Wh,exports.AssigneeAvatars=xc,exports.AuthGuard=bv,exports.BILLING_STATUS_FLOW=Ad,exports.BOOLEAN_API_KEYS=zm,exports.BOOLEAN_PARSEABLE_API_KEYS=Pm,exports.BULK_UPLOAD_DEFAULT_ACCEPT=Sc,exports.BULK_UPLOAD_DEFAULT_MAX_SIZE_MB=Cc,exports.Breadcrumb=e.t,exports.BulkUploadPage=_M,exports.BulkUploadPanel=jc,exports.CANDIDATES_URL=t.x,exports.CONTRACT_C2C=mg,exports.CONTRACT_W2=pg,exports.CURRENCY_SYMBOLS=zl,exports.CalendarCard=k,exports.CoreThemeAdminApp=Hw,exports.CoreThemeAdminRoutes=Vw,exports.CustomPagination=Ne,exports.DEFAULT_HOURS_POLICY=fh,exports.DayLogModal=Ih,exports.DescriptionBlock=Wc,exports.DetailHeaderCard=Nf,exports.DetailViewPage=Bf,exports.DetailViewV1=ku,exports.DocumentViewer=e.xn,exports.DynamicCards=At,exports.DynamicPopup=$E,exports.DynamicPopupRoute=gk,exports.DynamicTabs=N,exports.EditFormV1=Rp,exports.FIELD_TYPE_REGISTRY=_m,exports.FINANCE_APPROVAL_CONFIG=ag,exports.FINANCE_TYPE_CFO=Qh,exports.FINANCE_TYPE_ONBOARDING_MANAGER=Zh,exports.FINANCE_TYPE_ONBOARDING_MANAGER_REAPPROVE=tg,exports.FINANCE_TYPE_ONLY_FINANCE=$h,exports.FINANCE_TYPE_SUBMISSION_MANAGER=Xh,exports.FINANCE_TYPE_SUBMISSION_MANAGER_REAPPROVE=eg,exports.FileListCard=y_,exports.FinanceApprovalPanel=Qg,exports.FinanceAvatar=ff,exports.FinanceBadge=gf,exports.FinanceDayCell=Kh,exports.FinanceDivider=rf,exports.FinanceEmployeeCell=pf,exports.FinanceEmptyState=ef,exports.FinanceEquation=af,exports.FinanceHistoryTimeline=lf,exports.FinanceHoursGrid=$d,exports.FinanceKpiRow=Qd,exports.FinanceLine=nf,exports.FinanceListToolbar=dh,exports.FinanceMarginBadge=_f,exports.FinanceMoneyCell=hf,exports.FinanceRecordsTable=bf,exports.FinanceRowChevron=vf,exports.FinanceSection=tf,exports.FinanceStatusPill=Zd,exports.FinanceTextCell=mf,exports.FinanceTimesheetAnalysis=Jh,exports.FinanceWorkflowSteps=of,exports.HOURS_MESSAGES=ph,exports.Header=J_,exports.HierarchyUserFilter=Ft,exports.JOBS_URL=t.S,exports.LegacyAdminPage=hM,exports.ListView=Oo,exports.LmsHomePage=TM,exports.LmsTestForm=wM,exports.Login=Ov,exports.MailPopup=_T,exports.ManageModules=bM,exports.ManageSubmodules=xM,exports.ModuleRowActions=qp,exports.NotesPanel=Uh,exports.NotesTab=yc,exports.PAYROLL_STATUS_FLOW=jd,exports.POPUP_CONFIGS=nk,exports.ParamCardView=em,exports.ParamListView=om,exports.PeriodBadgeTag=Th,exports.PreviewPopup=JT,exports.ProjectSelect=ry,exports.ProofUploadPreview=Hh,exports.QuickLogBar=zh,exports.QuickLogSelectionBar=Lh,exports.RejectionReasonModal=Rh,exports.SUBMISSIONS_URL=t.w,exports.SearchBuilderV1=nh,exports.Sidebar=gv,exports.StatusBadge=ih,exports.StatusBadgeTag=wh,exports.StickyNotesFullPage=gM,exports.StylishDynamicTabs=oh,exports.TemplateEditor=ch,exports.TestForm=vM,exports.TestingHomePage=CM,exports.TimelineGroups=sc,exports.TimesheetDayCell=Nh,exports.TipTapEditor=e.Sn,exports.UserForm=kk,exports.VendorShareDrawer=bk,exports.ViewSummaryWidget=wi,exports.WizardPopup=eE,exports.ZinnextTableView=SM,exports.ZinnextTestForm=yM,exports.appNow=e.En,exports.applyIntegrationStatus=e.Hn,exports.approveSubmission=he,exports.buildAcceptAttr=Oc,exports.buildBooleanRequest=Wm,exports.buildCsv=Gd,exports.buildDailyRows=zd,exports.buildDayGradient=jh,exports.buildRateHistoryEntries=zg,exports.buildWeeklyRollup=Hd,exports.clearSelectedProject=t.r,exports.colors=e.Tn,exports.computeFinance=jg,exports.computeHoursPolicy=yh,exports.computeMarginBand=Ud,exports.conditionMatches=e.i,exports.configureCoreTheme=t.T,exports.configuredFieldLabel=e.a,exports.createAllWorkflowsListFetcher=dM,exports.createMergedListFetcher=aM,exports.createModuleListFetchAdapter=Qj,exports.createWorkflowStageListFetcher=oM,exports.currencySymbol=Bl,exports.defaultMergeRow=Wj,exports.deleteIntegrationConfig=e.$n,exports.deriveDayStats=Rd,exports.describeCapacity=xh,exports.downloadCsv=Yd,exports.evaluateShowIfWith=e.o,exports.findEmployerRow=Tg,exports.flattenGroups=Cg,exports.formatAmount=Kl,exports.formatApp=e.Dn,exports.formatAppDateTime=e.On,exports.formatFileSize=Dc,exports.formatFinanceMoney=Bg,exports.formatHours=xd,exports.formatMoney=ql,exports.formatPercent=Cd,exports.formatRate=Jl,exports.getActivity=e.cn,exports.getAllWorkflowsModuleList=fM,exports.getAppTimeZone=e.kn,exports.getApprovalDate=Dd,exports.getBgcIntegrationConfig=e.gr,exports.getBgcIntegrationSummary=e._r,exports.getBillingActionStates=Md,exports.getBooleanEligibleTypes=xm,exports.getCurrentRoleName=t.s,exports.getFieldLabel=qd,exports.getFieldType=ym,exports.getFileExtension=Ec,exports.getFinanceApprovalConfig=ug,exports.getFormGroupsRaw=c_,exports.getIntegrationConfig=e.Cr,exports.getIntegrationConfigs=e.wr,exports.getIntegrationSummary=e.Tr,exports.getModuleConfig=Ae,exports.getModuleDataDetail=e.un,exports.getPayrollActionStates=Nd,exports.getPeriodBadgeConfig=Me,exports.getSelectedProject=t.c,exports.getStoredToken=t.l,exports.getStoredUser=t.u,exports.getUserRoles=t.d,exports.getVMSApprove=ge,exports.getValueStyle=Jd,exports.getWorkflowStageModuleList=pM,exports.getWorkflowSteps=Pd,exports.humanizeEvent=Ed,Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return Zo}}),exports.indexFieldConfig=Kd,exports.initialsOf=wd,exports.insertTokenAtCursor=Rm,exports.isBooleanEligible=bm,exports.isBooleanParsable=Im,exports.isTester=t.f,exports.logout=t.m,exports.marginIncludesReferral=fg,exports.matchLocationTax=Ag,Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return Jf}}),exports.normalizeContract=Dg,Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Mc}}),exports.rateUnitLabel=Hl,exports.rateUnitShort=Wl,exports.reconcileHours=bh,exports.registerFieldType=vm,exports.rejectSubmission=_e,exports.resolveActivityMeta=fc,exports.resolveAndCompute=Mg,exports.resolveDayKind=_h,exports.resolveFinanceInputs=kg,exports.resolveMergeKey=Hj,exports.resolveMergedListKey=Hj,exports.resolveRejectionReason=dg,exports.resolveSubmissionFinance=l_,exports.saveBgcIntegrationConfig=e.qr,exports.saveIntegrationConfig=e.Xr,exports.setSelectedProject=t.g,exports.showIfConditions=e.c,exports.stageCountKey=sM,Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return kv}}),exports.testIntegrationConnection=e.ni,exports.toApp=e.jn,exports.toNumber=Gl,exports.tzLabel=e.Mn,exports.tzShortLabel=e.Nn,exports.useDropdownFields=Bn,exports.useDropdownValues=Ti,exports.useEditForm=b_,exports.useFieldConfig=Vn,exports.useFilterFields=Hn,exports.useMenuPermission=Zn,exports.useModuleActions=Bp,exports.useRecordRefresh=Lf,exports.validateBooleanQuery=Lm,exports.validateBulkFile=kc,exports.withAdminAppId=t.E,exports.withAppId=t.D,exports.withAuthGuard=iy;
13
13
  //# sourceMappingURL=index.cjs.map