1"use strict";(self.webpackChunkmy_webpack_project=self.webpackChunkmy_webpack_project||[]).push([[2193],{63629(e,t,r){r.r(t);var n=r(39471),a=r(53836),o=r(50256),i=r(71757),l=r(49482),s=r(62945),c=r(51794);function d(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,i,l=[],s=!0,c=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=o.call(r)).done)&&(l.push(n.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(c)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return u(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}r.d(t,["default",0,e=>{let t=e.isModalVisible,r=e.onCancel,u=e.confirmButtonText,m=void 0===u?"Save":u,f=e.modalContent,p=e.onConfirm,y=e.initialData,g=void 0===y?{}:y,v=e.isEditMode,b=void 0!==v&&v,h=e.setNotification,C=e.refetch,P=void 0===C?()=>{}:C;const A=d(a.A.useForm(),1)[0],E=d((0,n.useState)(null),2),F=E[0],x=E[1],w=d((0,n.useState)(null),2),S=w[0],_=w[1];(0,n.useEffect)(()=>{let e=!1;return(0,c.SU)().then(t=>{var r;if(e)return;const n=null===(r=t.data)||void 0===r?void 0:r.cost_per_token,a=parseFloat("string"==typeof n?n.replace(/[^0-9.\-]/g,""):n);Number.isFinite(a)&&a>0&&x(a)}).catch(()=>{}),()=>{e=!0}},[]),(0,n.useEffect)(()=>{var e,r,n,a;t?(A.setFieldsValue({name:g.name||"",cost:g.cost||"",credits:g.credits||"",isActive:void 0===g.isActive||g.isActive,durationDays:null!==(e=g.durationDays)&&void 0!==e?e:0,durationHours:null!==(r=g.durationHours)&&void 0!==r?r:0,durationMinutes:null!==(n=g.durationMinutes)&&void 0!==n?n:0}),_(null!==(a=g.cost)&&void 0!==a?a:null)):(A.resetFields(),_(null))},[t,g,A]);const k=null!=(D=(e=>{if(null==F)return null;const t=parseFloat(e);return!Number.isFinite(t)||t<=0?null:t*F})(S))&&Number.isFinite(D)?parseFloat(D.toFixed(4)).toString():null;var D;const O=()=>{A.resetFields(),r()};return n.createElement(l.A,{open:t,onCancel:O,centered:!0,className:"plans-modal",footer:n.createElement("div",{className:"custom-footer"},n.createElement("button",{className:"delete-button",onClick:async()=>{try{const e=await A.validateFields(),t=Number(e.durationDays||0),r=Number(e.durationHours||0),n=Number(e.durationMinutes||0);if(1440*t+60*r+n<1)return void h({message:"Cycle length must be at least 1 minute (Days + Hours + Minutes).",severity:"error",backgroundColor:"#FFFFFF",textColor:"#000000"});const a={name:e.name,no_of_token:Number(e.credits),cost_of_token:Number(e.cost),duration_days:t,duration_hours:r,duration_minutes:n,is_active:e.isActive};let o;if(b){if(!g.id)throw new Error("Plan ID is required for editing");o=await c.tY.EditCreditPlan(g.id,a)}else o=await c.tY.AddCreditPlan(a);h({message:b?"Credit Plan updated successfully":"Credit Plan created successfully",severity:"success",backgroundColor:"#FFFFFF",textColor:"#000000"}),p(o.data||o,P),A.resetFields()}catch(t){var e;if(null!=t&&null!==(e=t.response)&&void 0!==e&&e.data){const e=Object.entries(t.response.data).map(e=>{let t=d(e,2),r=t[0],n=t[1];return"".concat(r,": ").concat(Array.isArray(n)?n.join(", "):n)}).join("; ");h({message:e||"Failed to save",severity:"error",backgroundColor:"#FDEDED",textColor:"#D32F2F"})}else"ValidationError"!==t.name&&console.error("An error occurred:",t)}},disabled:A.isFieldsValidating()||A.getFieldsError().some(e=>e.errors.length)},A.isFieldsValidating()?"Processing...":m),n.createElement("button",{className:"cancel-button",onClick:O,disabled:A.isFieldsValidating()},"No, Cancel"))},n.createElement("div",{className:"modal-content-center"},f&&n.createElement("p",{className:"modal-text",style:{fontSize:"20px",fontWeight:500,marginBottom:"20px",textAlign:"center"}},f),n.createElement(a.A,{form:A,layout:"vertical",initialValues:{name:"",cost:"",credits:"",isActive:!0,durationDays:0,durationHours:0,durationMinutes:0}},n.createElement("div",{className:"form-container"},n.createElement(a.A.Item,{label:"Name (Optional)",name:"name",required:!1,rules:[{max:100,message:"Name cannot be more than 100 characters"}
1],style:{marginBottom:"16px"},labelCol:{style:{fontWeight:500,fontSize:"16px"}}},n.createElement(o.A,{style:{height:"50px",borderRadius:"12px"},placeholder:"Name of Credit Plan (e.g. Starter, Pro)"})),n.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:"16px",marginBottom:"16px"}},n.createElement(a.A.Item,{label:"Cost",name:"cost",labelCol:{style:{fontWeight:500,fontSize:"16px"}},required:!1,rules:[{validator:(e,t)=>{if(null==t||""===t)return Promise.reject("Please enter a cost");const r=parseFloat(t);return isNaN(r)||r<=0?Promise.reject("Cost must be a positive number"):Promise.resolve()}}],style:{marginBottom:0,flex:1}},n.createElement(i.A,{style:{height:"50px",width:"100%",borderRadius:"12px",display:"flex",alignItems:"center"},min:0,step:.01,precision:2,controls:!1,prefix:n.createElement("span",{style:{fontWeight:500,fontSize:"20px"}},"$"),onChange:e=>{_(e),A.validateFields(["credits"]).catch(()=>{})},parser:e=>(e||"").replace(/[^0-9.]/g,"")})),n.createElement(a.A.Item,{label:n.createElement("span",null,"Credits per Cycle",null!=k&&n.createElement("span",{style:{fontWeight:400,color:"#666",marginLeft:6}},"(min: ",k,")")),name:"credits",labelCol:{style:{fontWeight:500,fontSize:"16px"}},required:!1,tooltip:F?"Minimum is cost à current rate (".concat(F," credits / $1). Anything above the minimum becomes bonus credits."):"How many credits the user gets per cycle.",rules:[{validator:(e,t)=>{if(null==t||""===t)return Promise.reject("Please enter credits");const r=parseFloat(t);if(isNaN(r)||r<=0)return Promise.reject("Credits must be a positive number");const n=parseFloat(A.getFieldValue("cost"));if(F&&Number.isFinite(n)&&n>0){const e=n*F;if(r<e-1e-4)return Promise.reject("Credits cannot be less than the cost à current rate (minimum: ".concat(e,")."))}return Promise.resolve()}}],style:{marginBottom:0,flex:1}},n.createElement(i.A,{style:{height:"50px",width:"100%",borderRadius:"12px",display:"flex",alignItems:"center"},min:0,step:1,controls:!1,placeholder:"e.g. 100",parser:e=>{const t=(e||"").toString().replace(/[^0-9.]/g,"").split(".");return 1===t.length?t[0]:t[0]+"."+t.slice(1).join("").slice(0,4)}}))),n.createElement("div",{style:{display:"flex",flexDirection:"column",marginBottom:"16px"}},n.createElement("span",{style:{fontWeight:500,fontSize:"16px",marginBottom:4}},"Cycle Length"),n.createElement("div",{style:{display:"flex",gap:8}},n.createElement(a.A.Item,{name:"durationDays",rules:[{validator:(e,t)=>""===t||null==t||Number(t)>=0?Promise.resolve():Promise.reject("Days must be ⥠0")}],style:{marginBottom:0}},n.createElement(o.A,{style:{height:"50px",borderRadius:"12px",width:90},type:"number",min:0,step:1,placeholder:"Days",addonAfter:"d"})),n.createElement(a.A.Item,{name:"durationHours",rules:[{validator:(e,t)=>{if(""===t||null==t)return Promise.resolve();const r=Number(t);return r<0||r>23?Promise.reject("Hours: 0â23"):Promise.resolve()}}],style:{marginBottom:0}},n.createElement(o.A,{style:{height:"50px",borderRadius:"12px",width:90},type:"number",min:0,max:23,step:1,placeholder:"Hrs",addonAfter:"h"})),n.createElement(a.A.Item,{name:"durationMinutes",rules:[{validator:(e,t)=>{if(""===t||null==t)return Promise.resolve();const r=Number(t);return r<0||r>59?Promise.reject("Minutes: 0â59"):Promise.resolve()}}],style:{marginBottom:0}},n.createElement(o.A,{style:{height:"50px",borderRadius:"12px",width:90},type:"number",min:0,max:59,step:1,placeholder:"Min",addonAfter:"m"}))),n.createElement("span",{style:{fontSize:12,color:"#444",marginTop:4}},"Total must be ⥠1 minute (e.g. 30 days for monthly, 365 days for yearly)")),n.createElement("div",{style:{display:"flex",justifyContent:"flex-start",margin:"0 4rem"}},n.createElement(a.A.Item,{label:"Activate",name:"isActive",valuePropName:"checked",style:{marginBottom:"16px"},labelCol:{style:{fontWeight:500,fontSize:"16px"}}},n.createElement(s.A,null)))))))}])},12193(e,t,r){r.r(t);var n=r(39471),a=r(51794),o=r(86287),i=r(1503),l=r(34646),s=r(14191),c=r(48586),d=r(62945),u=r(61458),m=r(6206),f=r(58480),p=r(4031),y=r(12126),g=r(11648),v=r(71244),b=r(99251),h=r(30585),C=r(63629),P=r(28152);const A=["index","moveRow","className","style","children"];function E(){return E=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}
1).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},E.apply(null,arguments)}function F(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function x(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?F(Object(r),!0).forEach(function(t){w(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):F(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function w(e,t,r){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function S(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,i,l=[],s=!0,c=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=o.call(r)).done)&&(l.push(n.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(c)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return _(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}const k={cursor:"pointer",fontSize:18,padding:6},D=e=>null==e||""===e?"":"string"==typeof e?e.replace(/[^0-9.\-]/g,""):String(e),O=e=>{let t=e.index,r=e.moveRow,a=e.className,o=e.style,i=e.children,l=function(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],-1===t.indexOf(r)&&{}.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}(e,A);const s=(0,n.useRef)(null),c=S((0,n.useState)(!1),2),d=c[0],u=c[1];return n.createElement("tr",E({ref:s,draggable:!0,onDragStart:e=>{e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("text/plain",String(t))},onDragOver:e=>{e.preventDefault(),e.dataTransfer.dropEffect="move",u(!0)},onDragLeave:()=>u(!1),onDrop:e=>{e.preventDefault(),u(!1);const n=Number(e.dataTransfer.getData("text/plain"));Number.isFinite(n)&&n!==t&&r(n,t)},className:a,style:x(x({},o),{},{cursor:"grab",boxShadow:d?"inset 0 2px 0 0 #34B5B1":void 0})},l),i)};r.d(t,["default",0,()=>{const e=S((0,n.useState)(!1),2),t=e[0],r=e[1],A=S((0,n.useState)({}),2),E=A[0],F=A[1],w=S((0,n.useState)(!1),2),_=w[0],N=w[1],j=S((0,n.useState)(null),2),I=j[0],B=j[1],R=S((0,n.useState)([]),2),T=R[0],M=R[1],L=S((0,n.useState)(!0),2),U=L[0],z=L[1],H=S((0,n.useState)(()=>new Set),2),V=H[0],Y=H[1],W=S((0,n.useState)(null),2),$=W[0],q=W[1],G=S((0,n.useState)(!1),2),K=G[0],J=G[1],Q=(0,n.useCallback)(async()=>{z(!0);try{var e;const t=await a.tY.GetCreditPlansList(1,200),r=Array.isArray(null===(e=t.data)||void 0===e?void 0:e.results)?t.data.results:Array.isArray(t.data)?t.data:[];M(r)}catch(e){console.error("Failed to load Credit Plans:",e),l.Ay.error("Failed to load Credit Plans")}finally{z(!1)}},[]);(0,n.useEffect)(()=>{Q()},[Q]);const X=function(){var e,t,n;let a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};F({id:a.id||"",name:a.name||"",cost:D(a.cost_of_token),credits:D(a.no_of_token),isActive:void 0===a.is_active||a.is_active,durationDays:null!==(e=a.duration_days)&&void 0!==e?e:0,durationHours:null!==(t=a.duration_hours)&&void 0!==t?t:0,durationMinutes:null!==(n=a.duration_minutes)&&void 0!==n?n:0}),N(!!a.id),r(!0)},Z=(0,n.useCallback)(async(e,t)=>{if(e===t)return;const r=T,n=[...T],o=S(n.splice(e,1),1)[0];n.splice(t,0,o),M(n),J(!0);try{await a.tY.ReorderCreditPlans(n.map(e=>e.id))}catch(e){console.error("Failed to persist reorder:",e),l.Ay.error("Failed to save the new order. Reverting."),M(r)}finally{J(!1)}},[T]),ee=[{title:"",dataIndex:"drag",key:"drag",width:40,render:()=>n.createElement(m.A,{title:"Drag to reorder"},n.createElement(g.A,{style:{fontSize:18,color:"#6b7280",cursor:"grab"}}))},{title:"POPULAR",dataIndex:"is_popular",key:"is_popular",align:"center",width:90,render:(e,t)=>{const r=t.is_popular?b.A:h.A;return n.createElement(m.A,{title:t.is_popular?"Click to remove POPULAR badge":"Mark as POPULAR (will unset any other popular plan)"},n.createElement(r,{"aria-label":t.is_popular?"Remove POPULAR":"Set as POPULAR",style:{fontSize:20,cursor:$?"wait":"pointer",color:t.is_popular?"#E0A92B":"#bbb",opacity:$===t.id?.5:1},onClick:()=>(async e=>{if(!$)if(e.is_popular){q(e.id);try{await a.tY.PatchCreditPlan(e.id,{is_popular:!1}),M(t=>t.map(t=>
1t.id===e.id?x(x({},t),{},{is_popular:!1}):t)),B({message:"POPULAR removed.",severity:"success",backgroundColor:"#FFFFFF",textColor:"#000000"})}catch(e){l.Ay.error("Failed to clear POPULAR.")}finally{q(null)}}else{q(e.id),M(t=>t.map(t=>x(x({},t),{},{is_popular:t.id===e.id})));try{await a.tY.PatchCreditPlan(e.id,{is_popular:!0}),B({message:'POPULAR set to "'.concat(e.name||e.id,'".'),severity:"success",backgroundColor:"#FFFFFF",textColor:"#000000"}),Q()}catch(e){console.error("Failed to set POPULAR:",e),l.Ay.error("Failed to update POPULAR. Please try again."),Q()}finally{q(null)}}})(t)}))}},{title:"NAME",dataIndex:"name",key:"name",render:(e,t)=>(null==t?void 0:t.name)||"â"},{title:"CREDITS",dataIndex:"no_of_token",key:"no_of_token",render:(e,t)=>(e=>{if(null==e||""===e)return"0";const t="string"==typeof e?parseFloat(e.replace(/,/g,"")):Number(e);return isNaN(t)?String(e):Number.isInteger(t)?String(t):t.toString()})(null==t?void 0:t.no_of_token),align:"right",width:100},{title:"COST",dataIndex:"cost_of_token",key:"cost_of_token",render:(e,t)=>(e=>{if(null==e||""===e)return"â";const t="string"==typeof e?parseFloat(e.replace(/,/g,"")):Number(e);return isNaN(t)?String(e):"$".concat(t.toFixed(2))})(null==t?void 0:t.cost_of_token),align:"right",width:100},{title:"CYCLE",dataIndex:"duration_display",key:"duration_display",render:(e,t)=>(null==t?void 0:t.duration_display)||"â"},{title:"ACTIVE",dataIndex:"is_active",key:"is_active",align:"center",width:100,render:(e,t)=>n.createElement(d.A,{size:"small",checked:!(null==t||!t.is_active),loading:V.has(null==t?void 0:t.id),onChange:()=>(async e=>{const t=e.id,r=!e.is_active;Y(e=>{const r=new Set(e);return r.add(t),r});try{await a.tY.PatchCreditPlan(t,{is_active:r}),B({message:r?"Credit Plan activated":"Credit Plan deactivated",severity:"success",backgroundColor:"#FFFFFF",textColor:"#000000"}),Q()}catch(e){console.error("Failed to toggle Credit Plan active state:",e),B({message:"Failed to update active state. Please try again.",severity:"error",backgroundColor:"#FDEDED",textColor:"#D32F2F"})}finally{Y(e=>{const r=new Set(e);return r.delete(t),r})}})(t),"aria-label":null!=t&&t.is_active?"Deactivate plan":"Activate plan"})},{title:"ACTIONS",dataIndex:"actions",key:"actions",align:"center",width:110,render:(e,t)=>n.createElement("div",{className:"flex items-center justify-center",style:{gap:8}},n.createElement(m.A,{title:"Edit Credit Plan"},n.createElement(y.A,{"aria-label":"Edit Credit Plan",style:x(x({},k),{},{color:"#34B5B1"}),onClick:()=>X(t)})),n.createElement(s.A,{title:"Delete this Credit Plan?",description:"Existing subscriptions are not affected.",okText:"Delete",cancelText:"Cancel",okButtonProps:{danger:!0},onConfirm:()=>(async e=>{try{const t=await a.tY.DeleteCreditPlan(e.id);204===t.status||200===t.status?(B({message:"Credit Plan deleted successfully",severity:"success",backgroundColor:"#FFFFFF",textColor:"#000000"}),Q()):B({message:"Credit Plan delete failed.",severity:"error",backgroundColor:"#FDEDED",textColor:"#D32F2F"})}catch(e){console.error("Failed to delete Credit Plan:",e),B({message:"Failed to delete Credit Plan: ".concat(e),severity:"error",backgroundColor:"#FDEDED",textColor:"#D32F2F"})}})(t)},n.createElement(m.A,{title:"Delete Credit Plan"},n.createElement(p.A,{"aria-label":"Delete Credit Plan",style:x(x({},k),{},{color:"#d4380d"})}))))}];return n.createElement(n.Fragment,null,n.createElement(f.A.Title,{level:2,style:{margin:0,marginBottom:"1rem"}},"Credit Plans"),n.createElement(i.A,{style:{borderColor:"#34B5B1"}}),n.createElement("div",{style:{display:"flex",justifyContent:"space-between",marginBottom:16,alignItems:"center"}},n.createElement(f.A.Text,{type:"secondary"},"Drag rows to reorder. Click the star to mark a plan as POPULAR (only one plan can be popular at a time)."),n.createElement(o.A,{type:"primary",icon:n.createElement(v.A,null),onClick:()=>X({}),style:{backgroundColor:"#34B5B1",borderColor:"#34B5B1"}},"Add Credit Plan")),n.createElement(c.A,{spinning:U||K},n.createElement(u.A,{rowKey:"id",columns:ee,dataSource:T,pagination:!1,components:{body:{row:O}},onRow:(e,t)=>({index:t,moveRow:Z})})),n.createElement(C.default,{isModalVisible:t,onCancel:()=>{r(!1),F({}),N(!1)},onConfirm:()=>{r(!1),F({}),N(!1),Q()},modalContent:_?"Edit Credit Plan":"Create Credit Plan",confirmButtonText:_?"Save Edits":"Create",initialData:E,isEditMode:_,setNotification:B,refetch:Q}),I&&n.createElement(P.A,{message:I.message,severity:I.severity,backgroundColor:I.backgroundColor,textColor:I.textColor,onClose:()=>B(null)}))}])}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.