diff --git a/dist/assets/AiCenterModule-BMDdno3t.js b/dist/assets/AiCenterModule-BMDdno3t.js deleted file mode 100644 index e83a223..0000000 --- a/dist/assets/AiCenterModule-BMDdno3t.js +++ /dev/null @@ -1 +0,0 @@ -import{f as e,h as t,i as n,l as r,r as i,s as a,t as o,u as s}from"./useToast-CS8pZhce.js";import{t as c}from"./external-link-NR-y-GuE.js";import{t as l}from"./file-text-DR21jZDS.js";import{t as u}from"./terminal-CcncyL3J.js";import{A as d,p as f,r as p,s as m,t as h,v as g}from"./index-CyHCRa3Z.js";var _={name:`bot`,size:24,node:[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]};_.node;var v=r(_),y=t(e(),1),b=a(),x=[{id:`orch`,name:`Главный Оркестратор`,role:`Orchestrator`,description:`Декомпозирует бизнес-цели и распределяет задачи между агентами-специалистами`,tools:[`Task Delegator`,`Cross-module Context`,`Guardian Policy`],status:`active`,tasksCompleted:342},{id:`analyst`,name:`Бизнес-аналитик`,role:`BI & Financial Analyst`,description:`Анализирует чеки, food cost, маржинальность, динамику продаж и выявляет аномалии`,tools:[`SQL Query`,`Revenue Forecast`,`ABC Matrix`,`Shift Audit`],status:`active`,tasksCompleted:819},{id:`marketer`,name:`Бизнес-маркетолог`,role:`Growth & Retention`,description:`Генерирует контент-планы, офферы для рассылок, анализирует сегменты клиентов в зоне риска`,tools:[`Promo Engine`,`Telegram Bot Sender`,`Copywriter`,`Cohort Analysis`],status:`active`,tasksCompleted:420},{id:`warehouse_agent`,name:`Складской су-шеф`,role:`Supply Chain Agent`,description:`Мониторит критические остатки, сроки годности и формирует авто-заказы поставщикам`,tools:[`Supplier Auto-Order`,`Waste Tracker`,`Inventory Audit`],status:`active`,tasksCompleted:612}],S=[{title:`Food Cost и маржа за сегодня`,agentId:`analyst`,prompt:`Проанализируй Food Cost и маржинальность блюд текущей смены. Есть ли отклонения от нормы?`,tools:[`ReadPosOrders()`,`CalculateFoodCostVariance()`,`AuditStopList()`],result:`Анализ завершен: фактический Food Cost составил 29.4% (норма 30.0%). Позиция «Том Ям» показала маржу 68.5% из-за стабильных цен на тигровые креветки. Отклонений по граммовкам не зафиксировано.`,artifactTitle:`Отчет маржинальности смены #84`},{title:`Кампания возврата спящих гостей`,agentId:`marketer`,prompt:`Сформируй триггерную рассылку для гостей, не заказывавших более 30 дней. Предложи оффер с высокой конверсией.`,tools:[`ScanInactiveCustomers()`,`DraftPromoOffer()`,`EstimateBudget()`],result:`Сегмент «Спящие клиенты» насчитывает 248 контактов. Сформирован персонализированный оффер: «Сет Осенний со скидкой 20% + ролл Калифорния в подарок». Ожидаемый отклик: 18-22%.`,artifactTitle:`Проект кампании «Осенний возврат 2026»`},{title:`Контроль дефицита на складе`,agentId:`warehouse_agent`,prompt:`Проверь физические остатки ингредиентов с учетом броней на вечер. Какие позиции нужно заказать?`,tools:[`AuditStockBalances()`,`CheckReservationBOM()`,`CreatePurchaseDraft()`],result:`Критический остаток: «Сливочный сыр Cre действия» остался 4.2 кг при вечернем прогнозе 6.5 кг. Сформирован черновик закупки #PO-109 на 15 кг у поставщика «СибМолоко» со скидкой 5%.`,artifactTitle:`Черновик заявки поставщику #PO-109`},{title:`Аудит графика и переработок`,agentId:`orch`,prompt:`Проверь расписание смен сотрудников на текущую неделю. Есть ли нарушения нормативов ТК РФ?`,tools:[`ReadEmployeeShifts()`,`CheckLaborRegulations()`,`SuggestScheduleOptimization()`],result:`Выявлен 1 конфликт: сотрудник Артем Васильев назначен на смену 14 часов в пятницу (норма до 12 ч). Рекомендовано разделить смену с подменным официантом или сместить начало на 11:00.`,artifactTitle:`Акт проверки графиков ТК РФ`}],C=()=>{let{showToast:e}=o(),[t,r]=(0,y.useState)(`orch`),[a,_]=(0,y.useState)(``),[C,w]=(0,y.useState)(!1),[T,E]=(0,y.useState)(-1),[D,O]=(0,y.useState)([]),[k,A]=(0,y.useState)(null),[j,M]=(0,y.useState)([{id:`m-1`,sender:`ai`,text:`Здравствуйте! Я Главный Оркестратор Кроны. Моя команда специализированных агентов (Аналитик, Маркетолог, Складской су-шеф) готова помочь вам оптимизировать операционные процессы, найти точки роста выручки и предотвратить кассовые разрывы.`,time:`12:00`}]),N=x.find(e=>e.id===t)||x[0],P=e=>{r(e.agentId),I(e.prompt,e.tools,e.result,e.artifactTitle)},F=e=>{if(e.preventDefault(),!a.trim()||C)return;let t=a.trim();_(``),I(t,[`ReadWorkspaceContext()`,`QueryDatabaseEngine()`,`SynthesizeBusinessStrategy()`],`Агент «${N.name}» проанализировал ваш запрос «${t}». Все релевантные данные сверены с текущим состоянием касс, складов и CRM платформы. Предложен проект решения.`,`Аналитическая записка: ${t.slice(0,30)}...`)},I=(t,n,r,i)=>{let a={id:`u-${s()}`,sender:`user`,text:t,time:new Date().toLocaleTimeString(`ru-RU`,{hour:`2-digit`,minute:`2-digit`})};M(e=>[...e,a]),w(!0),O(n),E(0),setTimeout(()=>{E(1)},450),setTimeout(()=>{E(2)},900),setTimeout(()=>{w(!1),E(-1);let t={id:`ai-${Date.now()}`,sender:`ai`,text:r,time:new Date().toLocaleTimeString(`ru-RU`,{hour:`2-digit`,minute:`2-digit`}),toolsUsed:n,artifact:{title:i,type:`report`}};M(e=>[...e,t]),e({title:`ИИ-задача выполнена`,message:`Агент «${N.name}» завершил выполнение задачи`,type:`success`})},1350)};return(0,b.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,b.jsxs)(`div`,{className:`p-3.5 rounded-xl border border-purple-400/50 bg-purple-500/10 text-purple-900 dark:text-purple-200 flex flex-col sm:flex-row sm:items-center justify-between gap-2 shadow-xs`,children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[(0,b.jsx)(m,{className:`w-5 h-5 text-purple-600 shrink-0`}),(0,b.jsxs)(`div`,{className:`text-xs`,children:[(0,b.jsx)(`span`,{className:`font-bold block`,children:`Демонстрационный контур ИИ (Simulated AI Engine)`}),(0,b.jsx)(`span`,{className:`text-purple-800 dark:text-purple-300`,children:`ИИ-агенты симулируют автономное выполнение бизнес-сценариев, цепочки вызова инструментов (tool calls) и генерацию артефактов без реальных LLM API.`})]})]}),(0,b.jsx)(h,{level:`demo`,size:`sm`,className:`shrink-0`})]}),(0,b.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 bg-krona-surface p-3.5 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,b.jsxs)(`div`,{children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,b.jsx)(`h2`,{className:`text-sm font-bold text-krona-primary`,children:`✦ Krona AI Center & Автономная бизнес-команда`}),(0,b.jsx)(h,{level:`demo`,size:`sm`}),(0,b.jsx)(i,{variant:`gold`,size:`sm`,children:`Крона Модель v1.8 Flash`})]}),(0,b.jsx)(`p`,{className:`text-xs text-krona-secondary mt-0.5`,children:`Специализированные агенты с прямым доступом к инструментам платформы, кассам и складским журналам`})]}),(0,b.jsxs)(`div`,{className:`flex items-center gap-2 text-xs`,children:[(0,b.jsx)(i,{variant:`green`,size:`md`,children:`4 агента активны`}),(0,b.jsx)(i,{variant:`neutral`,size:`md`,children:`Задач за день: 2 195`})]})]}),(0,b.jsxs)(`div`,{className:`space-y-2`,children:[(0,b.jsx)(`span`,{className:`text-[11px] font-bold text-krona-secondary uppercase tracking-wider block`,children:`Быстрые бизнес-запросы для руководства:`}),(0,b.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-2.5`,children:S.map((e,t)=>(0,b.jsxs)(`button`,{disabled:C,onClick:()=>P(e),className:`p-3 text-left rounded-xl border border-krona-border bg-krona-surface hover:border-krona-gold hover:bg-krona-gold/5 transition-all text-xs space-y-1 group disabled:opacity-50`,children:[(0,b.jsxs)(`div`,{className:`font-bold text-krona-primary group-hover:text-krona-gold transition-colors flex items-center gap-1.5`,children:[(0,b.jsx)(f,{className:`w-3.5 h-3.5 text-krona-gold`}),(0,b.jsx)(`span`,{children:e.title})]}),(0,b.jsx)(`p`,{className:`text-[11px] text-krona-secondary line-clamp-2`,children:e.prompt})]},t))})]}),(0,b.jsxs)(`div`,{className:`grid grid-cols-1 lg:grid-cols-12 gap-4`,children:[(0,b.jsxs)(`div`,{className:`lg:col-span-4 bg-krona-surface border border-krona-border rounded-xl p-3.5 space-y-3 shadow-krona-soft`,children:[(0,b.jsx)(`span`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider block pb-2 border-b border-krona-border`,children:`Команда ИИ-агентов`}),(0,b.jsx)(`div`,{className:`space-y-2`,children:x.map(e=>{let n=e.id===t;return(0,b.jsxs)(`div`,{onClick:()=>r(e.id),className:`p-3 rounded-xl border transition-all cursor-pointer select-none space-y-2 ${n?`border-krona-gold bg-krona-gold/5 shadow-xs`:`border-krona-border bg-krona-workspace hover:border-krona-border-strong`}`,children:[(0,b.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,b.jsx)(`div`,{className:`p-2 rounded-lg bg-krona-surface border border-krona-border text-krona-gold`,children:(0,b.jsx)(v,{className:`w-4 h-4`})}),(0,b.jsxs)(`div`,{children:[(0,b.jsx)(`h4`,{className:`text-xs font-bold text-krona-primary`,children:e.name}),(0,b.jsx)(`span`,{className:`text-[10px] text-krona-secondary`,children:e.role})]})]}),(0,b.jsx)(i,{variant:`green`,size:`sm`,children:`Online`})]}),(0,b.jsx)(`p`,{className:`text-[11px] text-krona-secondary leading-snug`,children:e.description}),(0,b.jsxs)(`div`,{className:`flex items-center justify-between pt-1 border-t border-krona-border/50 text-[10px] text-krona-secondary`,children:[(0,b.jsxs)(`span`,{children:[`Инструментов: `,e.tools.length]}),(0,b.jsxs)(`span`,{className:`font-mono font-bold text-krona-primary`,children:[e.tasksCompleted,` задач`]})]})]},e.id)})})]}),(0,b.jsxs)(`div`,{className:`lg:col-span-8 bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft flex flex-col h-[540px] overflow-hidden`,children:[(0,b.jsxs)(`div`,{className:`p-3 border-b border-krona-border bg-krona-workspace flex items-center justify-between text-xs`,children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,b.jsx)(`span`,{className:`w-2 h-2 rounded-full bg-emerald-500`}),(0,b.jsxs)(`span`,{className:`font-bold text-krona-primary`,children:[`Чат с агентом: `,N.name,` (`,N.role,`)`]})]}),(0,b.jsx)(`span`,{className:`text-[11px] text-krona-secondary`,children:`Память контекста: Активна`})]}),(0,b.jsxs)(`div`,{className:`flex-1 p-4 overflow-y-auto space-y-3.5 text-xs`,children:[j.map(e=>(0,b.jsxs)(`div`,{className:`flex flex-col ${e.sender===`user`?`items-end`:`items-start`}`,children:[(0,b.jsxs)(`div`,{className:`p-3.5 rounded-xl max-w-[82%] leading-relaxed shadow-xs space-y-2 ${e.sender===`user`?`bg-[#2F684C] text-[#F8F6F0] rounded-br-none`:`bg-krona-workspace border border-krona-border text-krona-primary rounded-bl-none`}`,children:[(0,b.jsx)(`p`,{children:e.text}),e.toolsUsed&&e.toolsUsed.length>0&&(0,b.jsxs)(`div`,{className:`pt-2 border-t border-krona-border/50 space-y-1`,children:[(0,b.jsx)(`span`,{className:`text-[10px] text-krona-secondary font-semibold uppercase block`,children:`Выполненные шаги инструментов (Tool Calls):`}),(0,b.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:e.toolsUsed.map((e,t)=>(0,b.jsxs)(`span`,{className:`inline-flex items-center gap-1 font-mono text-[10px] bg-krona-surface border border-krona-border px-2 py-0.5 rounded text-krona-primary`,children:[(0,b.jsx)(d,{className:`w-2.5 h-2.5 text-emerald-600`}),e]},t))})]}),e.artifact&&(0,b.jsx)(`div`,{className:`pt-2 border-t border-krona-border/50`,children:(0,b.jsxs)(`button`,{type:`button`,onClick:()=>A({title:e.artifact.title,content:e.text}),className:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg bg-krona-gold/15 text-krona-gold-text border border-krona-gold/30 hover:bg-krona-gold/25 transition-colors font-bold text-xs`,children:[(0,b.jsx)(l,{className:`w-3.5 h-3.5 text-krona-gold`}),(0,b.jsxs)(`span`,{children:[`Открыть сформированный артефакт: «`,e.artifact.title,`»`]}),(0,b.jsx)(c,{className:`w-3 h-3 ml-1 opacity-70`})]})})]}),(0,b.jsx)(`span`,{className:`text-[10px] text-krona-secondary mt-1 px-1`,children:e.time})]},e.id)),C&&(0,b.jsxs)(`div`,{className:`p-3 bg-krona-workspace border border-krona-gold/40 rounded-xl space-y-2 max-w-[80%] animate-pulse`,children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-2 font-bold text-xs text-krona-gold`,children:[(0,b.jsx)(u,{className:`w-4 h-4`}),(0,b.jsxs)(`span`,{children:[`Агент «`,N.name,`» выполняет цепочку вызовов инструментов...`]})]}),(0,b.jsx)(`div`,{className:`space-y-1.5 font-mono text-[11px] text-krona-secondary`,children:D.map((e,t)=>(0,b.jsxs)(`div`,{className:`flex items-center gap-2`,children:[t_(e.target.value),placeholder:`Спросите агента «${N.name}» (например: "Рассчитай Food Cost за вчера")...`,className:`flex-1 bg-krona-surface border border-krona-border rounded-lg px-3 py-2 text-xs text-krona-primary placeholder:text-krona-secondary focus:outline-none focus:border-krona-green disabled:opacity-50`}),(0,b.jsxs)(n,{type:`submit`,variant:`gold`,size:`sm`,disabled:C||!a.trim(),className:`px-3 text-xs`,children:[(0,b.jsx)(g,{className:`w-3.5 h-3.5 mr-1`}),`Спросить AI`]})]})})]})]}),k&&(0,b.jsx)(p,{isOpen:!!k,onClose:()=>A(null),title:k.title,subtitle:`Сгенерированный артефакт ИИ-агента Кроны`,maxWidth:`md`,footer:(0,b.jsxs)(`div`,{className:`flex gap-2 w-full justify-between`,children:[(0,b.jsx)(n,{variant:`secondary`,size:`sm`,onClick:()=>{e({title:`Рекомендации применены`,message:`Настройки применены к операционному контуру заведения`,type:`success`}),A(null)},children:`Применить рекомендации в системе`}),(0,b.jsx)(n,{variant:`primary`,size:`sm`,onClick:()=>A(null),children:`Закрыть`})]}),children:(0,b.jsx)(`div`,{className:`space-y-3 text-xs`,children:(0,b.jsxs)(`div`,{className:`p-3.5 bg-krona-workspace rounded-xl border border-krona-border font-mono text-xs leading-relaxed space-y-2`,children:[(0,b.jsxs)(`div`,{className:`font-bold text-krona-primary pb-1 border-b border-krona-border/60 flex items-center justify-between`,children:[(0,b.jsx)(`span`,{children:k.title}),(0,b.jsx)(i,{variant:`gold`,size:`sm`,children:`Verified AI Plan`})]}),(0,b.jsx)(`p`,{className:`text-krona-primary`,children:k.content})]})})})]})};export{C as AiCenterModule}; \ No newline at end of file diff --git a/dist/assets/AnalyticsModule-Os08qbP6.js b/dist/assets/AnalyticsModule-Os08qbP6.js deleted file mode 100644 index 3e19a4b..0000000 --- a/dist/assets/AnalyticsModule-Os08qbP6.js +++ /dev/null @@ -1 +0,0 @@ -import{f as e,h as t,o as n,r,s as i}from"./useToast-CS8pZhce.js";import{t as a}from"./dollar-sign-Bf6JneNn.js";import{F as o,c as s,i as c,o as l,t as u}from"./index-CyHCRa3Z.js";import{n as d,t as f}from"./formatters-WvGQLZg0.js";import{$ as p,A as m,At as h,B as g,C as _,Ct as v,D as y,Dt as b,E as x,Et as S,F as C,G as w,H as T,I as E,J as D,K as ee,L as te,M as ne,N as re,O as ie,Ot as O,P as ae,Q as oe,R as se,S as ce,St as le,T as ue,Tt as k,U as de,V as fe,W as pe,X as me,Y as he,Z as ge,_ as _e,_t as A,a as ve,at as ye,b as be,bt as j,c as xe,ct as M,d as Se,dt as Ce,et as we,f as Te,ft as Ee,g as De,gt as Oe,h as ke,ht as Ae,i as je,it as N,j as Me,k as Ne,kt as Pe,l as Fe,lt as Ie,m as Le,mt as Re,n as ze,nt as Be,o as Ve,ot as He,p as Ue,pt as We,q as Ge,r as Ke,rt as qe,s as Je,st as Ye,t as Xe,tt as P,u as Ze,ut as Qe,v as $e,vt as F,w as et,wt as tt,x as nt,xt as I,y as rt,yt as L,z as it}from"./AreaChart-pR0H-che.js";var R=e=>null;R.displayName=`Cell`;var at=e=>e.graphicalItems.polarItems,ot=F([P,we],ee),z=F([at,D,ot],de),st=F([z],T),B=F([st,N],g),ct=F([B,D,z],te);F([B,D,z],(e,t,n)=>n.length>0?e.flatMap(e=>n.flatMap(n=>({value:A(e,t.dataKey??n.dataKey),errorDomain:[]}))).filter(Boolean):t?.dataKey==null?e.map(e=>({value:e,errorDomain:[]})):e.map(e=>({value:A(e,t.dataKey),errorDomain:[]})));var V=()=>void 0,lt=F([B,D,z,Ge,P,ye],fe),ut=F([D,he,me,V,lt,V,Qe,P],w),H=F([D,Qe,B,ct,qe,P,ut],se),dt=F([H,oe,ge],pe),ft=F([D,H,dt,P],it);F([ge,ft],p);function U(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function pt(e){for(var t=1;tt],(e,t)=>e.filter(e=>e.type===`pie`).find(e=>e.id===t)),_t=[],G=(e,t,n)=>n?.length===0?_t:n,vt=F([N,W,G],(e,t,n)=>{var r=e.chartData;if(t!=null){var i=t?.data!=null&&t.data.length>0?t.data:r;if((!i||!i.length)&&n!=null&&(i=n.map(e=>pt(pt({},t.presentationProps),e.props))),i!=null)return i}}),yt=F([vt,W,G],(e,t,n)=>{if(e!=null&&t!=null)return e.map((e,r)=>{var i,a=A(e,t.nameKey,t.name),o=n!=null&&(i=n[r])!=null&&(i=i.props)!=null&&i.fill?n[r].props.fill:typeof e==`object`&&e&&`fill`in e?e.fill:t.fill;return{value:Oe(a,t.dataKey),dataKey:t.dataKey,color:o,payload:e,type:t.legendType}})}),bt=F([vt,W,G,We],(e,t,n,r)=>{if(t!=null&&e!=null)return Kt({offset:r,pieSettings:t,displayedData:e,cells:n})}),xt=(e,t,n)=>{var r=L();return(i,a)=>o=>{e?.(i,a,o),r(E({activeIndex:String(a),activeDataKey:t,activeCoordinate:i.tooltipPosition,activeGraphicalItemId:n}))}},St=e=>{var t=L();return(n,r)=>i=>{e?.(n,r,i),t(ae())}},Ct=(e,t,n)=>{var r=L();return(i,a)=>o=>{e?.(i,a,o),r(C({activeIndex:String(a),activeDataKey:t,activeCoordinate:i.tooltipPosition,activeGraphicalItemId:n}))}},K=t(e()),wt=[`key`],Tt=[`onMouseEnter`,`onClick`,`onMouseLeave`],Et=[`id`],Dt=[`id`];function q(){return q=Object.assign?Object.assign.bind():function(e){for(var t=1;tce(e.children,R),[e.children]),n=j(n=>yt(n,e.id,t));return n==null?null:K.createElement(rt,{legendPayload:n})}function Ft(e){if(e!=null&&typeof e!=`boolean`&&typeof e!=`function`){if(K.isValidElement(e)){var t=e.props?.fill;return typeof t==`string`?t:void 0}var n=e.fill;return typeof n==`string`?n:void 0}}var It=K.memo(e=>{var t=e.dataKey,n=e.nameKey,r=e.sectors,i=e.stroke,a=e.strokeWidth,o=e.fill,s=e.name,c=e.hide,l=e.tooltipType,u=e.formatter,d=e.id,f=e.activeShape,p=Ft(f),m={dataDefinedOnItem:r.map(e=>{var t=e.tooltipPayload;return p==null||t==null?t:t.map(e=>Y(Y({},e),{},{color:p,fill:p}))}),getPosition:e=>r[Number(e)]?.tooltipPosition,settings:{stroke:i,strokeWidth:a,fill:o,dataKey:t,nameKey:n,name:Oe(s,t),hide:c,type:l,color:o,unit:``,formatter:u,graphicalItemId:d}};return K.createElement(be,{tooltipEntrySettings:m})}),Lt=(e,t)=>e>t?`start`:ev(typeof t==`function`?t(e):t,n,n*.8),zt=(e,t,n)=>{var r=t.top,i=t.left,a=t.width,o=t.height,s=Ye(a,o);return{cx:i+v(e.cx,a,a/2),cy:r+v(e.cy,o,o/2),innerRadius:v(e.innerRadius,s,0),outerRadius:Rt(n,e.outerRadius,s),maxRadius:e.maxRadius||Math.sqrt(a*a+o*o)/2}},Bt=(e,t)=>S(t-e)*Math.min(Math.abs(t-e),360),Vt=(e,t)=>{if(K.isValidElement(e))return K.cloneElement(e,t);if(typeof e==`function`)return e(t);var r=n(`recharts-pie-label-line`,typeof e==`boolean`?``:e.className);t.key;var i=J(t,wt);return K.createElement(Ie,q({},i,{type:`linear`,className:r}))},Ht=(e,t,r)=>{if(K.isValidElement(e))return K.cloneElement(e,t);var i=r;if(typeof e==`function`&&(i=e(t),K.isValidElement(i)))return i;var a=n(`recharts-pie-label-text`,_(e));return K.createElement(y,q({},t,{alignmentBaseline:`middle`,className:a}),i)};function Ut(e){var t=e.sectors,n=e.props,r=e.showLabels,i=n.label,a=n.labelLine,o=n.dataKey;if(!r||!i||!t)return null;var s=Pe(n),c=h(i),l=h(a),u=typeof i==`object`&&`offsetRadius`in i&&typeof i.offsetRadius==`number`&&i.offsetRadius||20,d=t.map((e,t)=>{var n=(e.startAngle+e.endAngle)/2,r=M(e.cx,e.cy,e.outerRadius+u,n),d=Y(Y(Y(Y({},s),e),{},{stroke:`none`},c),{},{index:t,textAnchor:Lt(r.x,e.cx)},r),f=Y(Y(Y(Y({},s),e),{},{fill:`none`,stroke:e.fill},l),{},{index:t,points:[M(e.cx,e.cy,e.outerRadius,n),r],key:`line`});return K.createElement(m,{zIndex:Be.label,key:`label-${e.startAngle}-${e.endAngle}-${e.midAngle}-${t}`},K.createElement(O,null,a&&Vt(a,f),Ht(i,d,A(e,o))))});return K.createElement(O,{className:`recharts-pie-labels`},d)}function Wt(e){var t=e.sectors,n=e.props,r=e.showLabels,i=n.label;return typeof i==`object`&&i&&`position`in i?K.createElement(et,{label:i}):K.createElement(Ut,{sectors:t,props:n,showLabels:r})}function Gt(e){var t=e.sectors,n=e.activeShape,r=e.inactiveShape,i=e.allOtherPieProps,a=e.shape,o=e.id,s=e.animationElapsedTime,c=e.isAnimating,l=e.isEntrance,u=j(re),d=j(Me),f=j(ne),p=i.onMouseEnter,m=i.onClick,h=i.onMouseLeave,g=J(i,Tt),_=xt(p,i.dataKey,o),v=St(h),y=Ct(m,i.dataKey,o);return t==null||t.length===0?null:K.createElement(K.Fragment,null,t.map((e,p)=>{if(e?.startAngle===0&&e?.endAngle===0&&t.length!==1)return null;var m=f==null||f===o,h=String(p)===u&&(d==null||i.dataKey===d)&&m,b=n&&h?n:u?r:null,x=Y(Y({},e),{},{stroke:e.stroke,tabIndex:-1,index:p,isActive:h,animationElapsedTime:s,isAnimating:c,isEntrance:l,[Ae]:p,[Re]:o});return K.createElement(O,q({key:`sector-${e?.startAngle}-${e?.endAngle}-${e.midAngle}-${p}`,tabIndex:-1,className:`recharts-pie-sector`},le(g,e,p),{onMouseEnter:_(e,p),onMouseLeave:v(e,p),onClick:y(e,p)}),K.createElement(nt,{option:b??a,DefaultShape:Nt,shapeProps:x}))}))}function Kt(e){var t=e.pieSettings,n=e.displayedData,r=e.cells,i=e.offset,a=t.cornerRadius,o=t.startAngle,s=t.endAngle,c=t.dataKey,l=t.nameKey,u=t.tooltipType,d=Math.abs(t.minAngle),f=Bt(o,s),p=Math.abs(f),m=n.length<=1?0:t.paddingAngle??0,h=n.filter(e=>A(e,c,0)!==0).length,g=(p>=360?h:h-1)*m,_=n.reduce((e,t)=>{var n=A(t,c,0);return e+(k(n)?n:0)},0),v=d>0&&_>0&&n.some(e=>{var t=A(e,c,0),n=(k(t)?t:0)/_;return t!==0&&n*p0){var x;b=n.map((e,n)=>{var s=A(e,c,0),d=A(e,l,n),p=zt(t,i,e),h=(k(s)?s:0)/_,g,b=Y(Y({},e),r&&r[n]&&r[n].props),C=b!=null&&`fill`in b&&typeof b.fill==`string`?b.fill:t.fill;g=n?x.endAngle+S(f)*m*(s===0?0:1):o;var w=g+S(f)*((s===0?0:v)+h*y),T=(g+w)/2,E=(p.innerRadius+p.outerRadius)/2,D=[{name:d,value:s,payload:b,dataKey:c,type:u,color:C,fill:C,graphicalItemId:t.id}],ee=M(p.cx,p.cy,E,T);return x=Y(Y(Y(Y({},t.presentationProps),{},{percent:h,cornerRadius:typeof a==`string`?parseFloat(a):a,name:d,tooltipPayload:D,midAngle:T,middleRadius:E,tooltipPosition:ee},b),p),{},{value:s,dataKey:c,startAngle:g,endAngle:w,payload:b,paddingAngle:s===0?0:S(f)*m}),x})}return b}function qt(e){var t=e.showLabels,n=e.sectors,r=e.children,i=(0,K.useMemo)(()=>!t||!n?[]:n.map(e=>({value:e.value,payload:e.payload,clockWise:!1,parentViewBox:void 0,viewBox:{cx:e.cx,cy:e.cy,innerRadius:e.innerRadius,outerRadius:e.outerRadius,startAngle:e.startAngle,endAngle:e.endAngle,clockWise:!1},fill:e.fill})),[n,t]);return K.createElement(ue,{value:t?i:void 0},r)}var Jt=(e,t)=>{if(e==null)return[];var n=[],r=e.find(e=>e.status!==`removed`),i=r?r.next.startAngle:0;return e.forEach((e,r)=>{if(e.status!==`removed`){var a=r>0?b(e.next,`paddingAngle`,0):0;if(e.status===`matched`){var o=tt(e.prev.endAngle-e.prev.startAngle,e.next.endAngle-e.next.startAngle,t),s=Y(Y({},e.next),{},{startAngle:i+a,endAngle:i+o+a});n.push(s),i=s.endAngle}else{var c=tt(0,e.next.endAngle-e.next.startAngle,t),l=Y(Y({},e.next),{},{startAngle:i+a,endAngle:i+c+a});n.push(l),i=l.endAngle}}}),n};function Yt(e){var t=e.props,n=e.previousSectorsRef,r=e.id,i=t.sectors,a=t.activeShape,o=t.inactiveShape,s=t.animationInterpolateFn,c=_e(t.onAnimationStart,t.onAnimationEnd),l=c.isAnimating,u=c.handleAnimationStart,d=c.handleAnimationEnd,f=Ce();if(f==null)return null;var p=i[0];return K.createElement(qt,{showLabels:!l,sectors:i},K.createElement(De,{animationInput:t,animationIdPrefix:`recharts-pie-`,items:i,previousItemsRef:n,isAnimationActive:t.isAnimationActive,animationBegin:t.animationBegin,animationDuration:t.animationDuration,animationEasing:t.animationEasing,onAnimationStart:u,onAnimationEnd:d,animationInterpolateFn:s,animationMatchBy:t.animationMatchBy,layout:f},(e,n,i)=>K.createElement(O,null,K.createElement(Gt,{sectors:e,activeShape:a,inactiveShape:o,allOtherPieProps:t,shape:t.shape,id:r,animationElapsedTime:n,isAnimating:l||n<1,isEntrance:i}))),K.createElement(Wt,{showLabels:!l,sectors:i,props:t}),K.createElement(x,{cx:p?.cx??0,cy:p?.cy??0,innerRadius:p?.innerRadius??0,outerRadius:p?.outerRadius??0,startAngle:t.startAngle,endAngle:t.endAngle,clockWise:!1},t.children))}var Xt={animationBegin:400,animationDuration:1500,animationEasing:`ease`,animationInterpolateFn:Jt,animationMatchBy:$e,cx:`50%`,cy:`50%`,dataKey:`value`,endAngle:360,fill:`#808080`,hide:!1,innerRadius:0,isAnimationActive:`auto`,label:!1,labelLine:!0,legendType:`rect`,minAngle:0,nameKey:`name`,outerRadius:`80%`,paddingAngle:0,rootTabIndex:0,shape:Nt,startAngle:0,stroke:`#fff`,zIndex:Be.area};function Zt(e){var t=e.id,r=J(e,Et),i=e.hide,a=e.className,o=e.rootTabIndex,s=(0,K.useMemo)(()=>ce(e.children,R),[e.children]),c=j(e=>bt(e,t,s)),l=(0,K.useRef)(null),u=n(`recharts-pie`,a);return i||c==null?(l.current=null,K.createElement(O,{tabIndex:o,className:u})):K.createElement(m,{zIndex:e.zIndex},K.createElement(It,{dataKey:e.dataKey,nameKey:e.nameKey,sectors:c,stroke:e.stroke,strokeWidth:e.strokeWidth,fill:e.fill,name:e.name,hide:e.hide,tooltipType:e.tooltipType,formatter:e.formatter,id:t,activeShape:e.activeShape}),K.createElement(O,{tabIndex:o,className:u},K.createElement(Yt,{props:Y(Y({},r),{},{sectors:c}),previousSectorsRef:l,id:t})))}function Qt(e){var t=I(e,Xt),n=t.id,r=J(t,Dt),i=Pe(r);return K.createElement(ke,{id:n,type:`pie`},e=>K.createElement(K.Fragment,null,K.createElement(Le,{type:`pie`,id:e,data:r.data,dataKey:r.dataKey,hide:r.hide,angleAxisId:0,radiusAxisId:0,name:r.name,nameKey:r.nameKey,tooltipType:r.tooltipType,legendType:r.legendType,fill:r.fill,cx:r.cx,cy:r.cy,startAngle:r.startAngle,endAngle:r.endAngle,paddingAngle:r.paddingAngle,minAngle:r.minAngle,innerRadius:r.innerRadius,outerRadius:r.outerRadius,cornerRadius:r.cornerRadius,presentationProps:i,maxRadius:t.maxRadius}),K.createElement(Pt,q({},r,{id:e})),K.createElement(Zt,q({},r,{id:e}))))}var $t=Qt;$t.displayName=`Pie`;function en(e){var t=L();return(0,K.useEffect)(()=>{t(xe(e))},[t,e]),null}var tn=[`layout`];function X(){return X=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var n=I(e,_n);return K.createElement(un,{chartName:`PieChart`,defaultTooltipEventType:`item`,validateTooltipEventTypes:gn,tooltipPayloadSearcher:Ne,categoricalChartProps:n,ref:t})}),Q=i(),yn={today:{revenue:184500,revChange:`+12.4%`,orders:58,ordersChange:`+6`,avgCheck:3180,avgCheckChange:`+180 ₽`,retention:`68.4%`,retentionChange:`+2.1%`,salesTrend:[{label:`10:00`,revenue:14200,orders:4},{label:`12:00`,revenue:38400,orders:12},{label:`14:00`,revenue:76e3,orders:24},{label:`16:00`,revenue:104500,orders:32},{label:`18:00`,revenue:149e3,orders:45},{label:`20:00`,revenue:184500,orders:58}]},week:{revenue:1428e3,revChange:`+15.8%`,orders:432,ordersChange:`+42`,avgCheck:3305,avgCheckChange:`+210 ₽`,retention:`70.2%`,retentionChange:`+3.5%`,salesTrend:[{label:`Пн`,revenue:142e3,orders:48},{label:`Вт`,revenue:156e3,orders:52},{label:`Ср`,revenue:168e3,orders:56},{label:`Чт`,revenue:174e3,orders:59},{label:`Пт`,revenue:245e3,orders:84},{label:`Сб`,revenue:29e4,orders:98},{label:`Вс`,revenue:26e4,orders:89}]},month:{revenue:485e4,revChange:`+18.5%`,orders:1490,ordersChange:`+180`,avgCheck:3255,avgCheckChange:`+315 ₽`,retention:`72.4%`,retentionChange:`+4.0%`,salesTrend:[{label:`1-я нед`,revenue:112e4,orders:340},{label:`2-я нед`,revenue:124e4,orders:380},{label:`3-я нед`,revenue:139e4,orders:420},{label:`4-я нед`,revenue:1428e3,orders:432}]},year:{revenue:524e5,revChange:`+34.2%`,orders:16800,ordersChange:`+2400`,avgCheck:3120,avgCheckChange:`+420 ₽`,retention:`75.8%`,retentionChange:`+6.2%`,salesTrend:[{label:`Q1`,revenue:112e5,orders:3600},{label:`Q2`,revenue:128e5,orders:4100},{label:`Q3`,revenue:141e5,orders:4600},{label:`Q4 (прогноз)`,revenue:143e5,orders:4500}]}},$=[{name:`Зал ресторана`,value:48,color:`#2F684C`},{name:`Собственная доставка`,value:26,color:`#B78335`},{name:`Telegram-бот`,value:14,color:`#527286`},{name:`Яндекс Еда / Агрегаторы`,value:12,color:`#B16D50`}],bn=[{name:`Филадельфия Премиум`,revenue:42e4,qty:442,margin:`71.2%`,category:`A`},{name:`Том Ям с морепродуктами`,revenue:31e4,qty:455,margin:`68.5%`,category:`A`},{name:`Калифорния краб`,revenue:265e3,qty:335,margin:`69.0%`,category:`A`},{name:`Рамен Тонкоцу`,revenue:195e3,qty:330,margin:`64.5%`,category:`B`},{name:`Гёдза со свининой`,revenue:16e4,qty:380,margin:`74.0%`,category:`B`},{name:`Эби Темпура`,revenue:84e3,qty:155,margin:`58.0%`,category:`C`}],xn=()=>{let[e,t]=(0,K.useState)(`month`),n=yn[e];return(0,Q.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 bg-krona-surface p-3.5 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(`h2`,{className:`text-sm font-bold text-krona-primary`,children:`Сквозная бизнес-аналитика, ABC-матрица & BI`}),(0,Q.jsx)(u,{level:`target`,size:`sm`})]}),(0,Q.jsx)(`p`,{className:`text-xs text-krona-secondary mt-0.5`,children:`Анализ маржинальности, выручки по каналам, структуры чеков, LTV и Food Cost`})]}),(0,Q.jsx)(`div`,{className:`flex items-center gap-1 bg-krona-workspace p-1 rounded-lg border border-krona-border text-xs`,children:[{id:`today`,label:`Сегодня`},{id:`week`,label:`7 дней`},{id:`month`,label:`30 дней`},{id:`year`,label:`Год`}].map(n=>(0,Q.jsx)(`button`,{onClick:()=>t(n.id),className:`px-3 py-1 rounded font-medium transition-colors ${e===n.id?`bg-[#2F684C] text-white shadow-sm`:`text-krona-secondary hover:text-krona-primary`}`,children:n.label},n.id))})]}),(0,Q.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-4 gap-3.5`,children:[(0,Q.jsx)(c,{title:`Выручка за период`,value:f(n.revenue),change:{value:n.revChange,trend:`up`},subtitle:`Заказов: ${d(n.orders)}`,icon:(0,Q.jsx)(a,{className:`w-4 h-4 text-krona-green`})}),(0,Q.jsx)(c,{title:`Средний чек`,value:f(n.avgCheck),change:{value:n.avgCheckChange,trend:`up`},subtitle:`По всем каналам`,icon:(0,Q.jsx)(o,{className:`w-4 h-4 text-krona-gold`})}),(0,Q.jsx)(c,{title:`Удержание гостей (CRR)`,value:n.retention,change:{value:n.retentionChange,trend:`up`},subtitle:`Повторные покупки`,icon:(0,Q.jsx)(l,{className:`w-4 h-4 text-sky-600`})}),(0,Q.jsx)(c,{title:`Маржинальность меню`,value:`70.6%`,change:{value:`+1.2%`,trend:`up`},subtitle:`Food cost: 29.4%`,icon:(0,Q.jsx)(s,{className:`w-4 h-4 text-krona-green`})})]}),(0,Q.jsxs)(`div`,{className:`grid grid-cols-1 lg:grid-cols-3 gap-4`,children:[(0,Q.jsxs)(`div`,{className:`lg:col-span-2 bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft space-y-3`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Q.jsx)(`h4`,{className:`text-xs font-bold text-krona-primary`,children:`Динамика выручки за выбранный период`}),(0,Q.jsx)(r,{variant:`green`,size:`sm`,children:`План выполнен на 106%`})]}),(0,Q.jsx)(`div`,{className:`h-64 w-full`,children:(0,Q.jsx)(Ee,{width:`100%`,height:`100%`,children:(0,Q.jsxs)(Xe,{data:n.salesTrend,margin:{top:10,right:10,left:-20,bottom:0},children:[(0,Q.jsx)(`defs`,{children:(0,Q.jsxs)(`linearGradient`,{id:`colorRev`,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,Q.jsx)(`stop`,{offset:`5%`,stopColor:`#2F684C`,stopOpacity:.4}),(0,Q.jsx)(`stop`,{offset:`95%`,stopColor:`#2F684C`,stopOpacity:0})]})}),(0,Q.jsx)(Te,{strokeDasharray:`3 3`,stroke:`#DDDAD1`,opacity:.5}),(0,Q.jsx)(Ze,{dataKey:`label`,stroke:`#71766F`,fontSize:11}),(0,Q.jsx)(Fe,{stroke:`#71766F`,fontSize:11,tickFormatter:e=>`${e/1e3}k`}),(0,Q.jsx)(ie,{formatter:e=>[f(e),`Выручка`],contentStyle:{backgroundColor:`#FCFAF5`,borderColor:`#DDDAD1`,borderRadius:`8px`,fontSize:`11px`}}),(0,Q.jsx)(Se,{type:`monotone`,dataKey:`revenue`,stroke:`#2F684C`,strokeWidth:2,fillOpacity:1,fill:`url(#colorRev)`})]})})})]}),(0,Q.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft space-y-3 flex flex-col justify-between`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h4`,{className:`text-xs font-bold text-krona-primary`,children:`Структура выручки по каналам продаж`}),(0,Q.jsx)(`p`,{className:`text-[11px] text-krona-secondary`,children:`Доля в общем обороте заведений`})]}),(0,Q.jsx)(`div`,{className:`h-44 w-full flex items-center justify-center`,children:(0,Q.jsx)(Ee,{width:`100%`,height:`100%`,children:(0,Q.jsxs)(vn,{children:[(0,Q.jsx)($t,{data:$,innerRadius:45,outerRadius:70,paddingAngle:4,dataKey:`value`,children:$.map((e,t)=>(0,Q.jsx)(R,{fill:e.color},`cell-${t}`))}),(0,Q.jsx)(ie,{formatter:e=>[`${e}%`,`Доля`]})]})})}),(0,Q.jsx)(`div`,{className:`space-y-1 text-xs border-t border-krona-border/60 pt-2`,children:$.map(e=>(0,Q.jsxs)(`div`,{className:`flex items-center justify-between text-[11px]`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Q.jsx)(`span`,{className:`w-2.5 h-2.5 rounded-full`,style:{backgroundColor:e.color}}),(0,Q.jsx)(`span`,{className:`text-krona-secondary`,children:e.name})]}),(0,Q.jsxs)(`span`,{className:`font-bold font-mono text-krona-primary`,children:[e.value,`%`]})]},e.name))})]})]}),(0,Q.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft overflow-hidden`,children:[(0,Q.jsxs)(`div`,{className:`p-3.5 border-b border-krona-border flex items-center justify-between`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h4`,{className:`text-xs font-bold text-krona-primary`,children:`ABC-анализ меню и блюд`}),(0,Q.jsx)(`p`,{className:`text-[11px] text-krona-secondary`,children:`Классификация позиций по выручке и маржинальности (Группа A формирует 80% выручки)`})]}),(0,Q.jsx)(r,{variant:`gold`,size:`sm`,children:`ABC Matrix v2.1`})]}),(0,Q.jsxs)(`table`,{className:`w-full text-left text-xs border-collapse`,children:[(0,Q.jsx)(`thead`,{className:`bg-krona-workspace/80 text-krona-secondary border-b border-krona-border`,children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{className:`p-3 font-semibold`,children:`Блюдо / Позиция`}),(0,Q.jsx)(`th`,{className:`p-3 font-semibold text-center`,children:`Класс`}),(0,Q.jsx)(`th`,{className:`p-3 font-semibold text-right`,children:`Продано порций`}),(0,Q.jsx)(`th`,{className:`p-3 font-semibold text-right`,children:`Выручка`}),(0,Q.jsx)(`th`,{className:`p-3 font-semibold text-right`,children:`Маржинальность`})]})}),(0,Q.jsx)(`tbody`,{className:`divide-y divide-krona-border/50`,children:bn.map(e=>(0,Q.jsxs)(`tr`,{className:`hover:bg-krona-workspace/40 transition-colors`,children:[(0,Q.jsx)(`td`,{className:`p-3 font-medium text-krona-primary`,children:e.name}),(0,Q.jsx)(`td`,{className:`p-3 text-center`,children:(0,Q.jsxs)(r,{variant:e.category===`A`?`green`:e.category===`B`?`gold`:`neutral`,size:`sm`,children:[`Группа `,e.category]})}),(0,Q.jsxs)(`td`,{className:`p-3 text-right font-mono text-krona-secondary`,children:[e.qty,` шт`]}),(0,Q.jsx)(`td`,{className:`p-3 text-right font-mono font-bold text-krona-primary`,children:f(e.revenue)}),(0,Q.jsx)(`td`,{className:`p-3 text-right font-mono text-emerald-700 font-semibold`,children:e.margin})]},e.name))})]})]})]})};export{xn as AnalyticsModule}; \ No newline at end of file diff --git a/dist/assets/AppsCatalogModule-C-Vi3TGu.js b/dist/assets/AppsCatalogModule-C-Vi3TGu.js deleted file mode 100644 index 8f5fa5e..0000000 --- a/dist/assets/AppsCatalogModule-C-Vi3TGu.js +++ /dev/null @@ -1 +0,0 @@ -import{f as e,i as t,r as n,s as r}from"./useToast-CS8pZhce.js";import{Z as i,t as a}from"./index-CyHCRa3Z.js";import{t as o}from"./types-CTcNpN0z.js";e();var s=r(),c=()=>{let{customCapabilities:e,toggleCapability:r}=i();return(0,s.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,s.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 bg-krona-surface p-3.5 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,s.jsxs)(`div`,{children:[(0,s.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,s.jsx)(`h2`,{className:`text-sm font-bold text-krona-primary`,children:`Каталог приложений & Модульная экосистема Кроны`}),(0,s.jsx)(a,{level:`demo`,size:`sm`})]}),(0,s.jsx)(`p`,{className:`text-xs text-krona-secondary mt-0.5`,children:`Подключайте и отключайте функциональные блоки для адаптации платформы под новые ниши`})]}),(0,s.jsxs)(n,{variant:`gold`,size:`md`,children:[`Всего модулей: `,o.length]})]}),(0,s.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3.5`,children:o.map(i=>{let a=e[i.id];return(0,s.jsxs)(`div`,{className:`p-4 rounded-xl border border-krona-border bg-krona-surface shadow-krona-soft flex flex-col justify-between space-y-3`,children:[(0,s.jsxs)(`div`,{children:[(0,s.jsxs)(`div`,{className:`flex items-center justify-between mb-1.5`,children:[(0,s.jsx)(`span`,{className:`text-[10px] uppercase font-bold text-krona-secondary`,children:i.category}),(0,s.jsx)(n,{variant:a?`green`:`neutral`,size:`sm`,children:a?`Активен`:`Отключен`})]}),(0,s.jsx)(`h4`,{className:`text-xs font-bold text-krona-primary`,children:i.name}),(0,s.jsx)(`p`,{className:`text-[11px] text-krona-secondary mt-1 leading-relaxed`,children:i.description})]}),(0,s.jsx)(`div`,{className:`pt-2 border-t border-krona-border/50 flex justify-end`,children:(0,s.jsx)(t,{variant:a?`secondary`:`primary`,size:`sm`,className:`w-full text-xs`,onClick:()=>r(i.id),children:a?`Отключить модуль`:`Включить в контур`})})]},i.id)})})]})};export{c as AppsCatalogModule}; \ No newline at end of file diff --git a/dist/assets/AreaChart-pR0H-che.js b/dist/assets/AreaChart-pR0H-che.js deleted file mode 100644 index b570a33..0000000 --- a/dist/assets/AreaChart-pR0H-che.js +++ /dev/null @@ -1,53 +0,0 @@ -import{f as e,h as t,m as n,o as r,p as i}from"./useToast-CS8pZhce.js";import{nt as a}from"./index-CyHCRa3Z.js";var o=t(e()),s=t(a()),c=`dangerouslySetInnerHTML.onCopy.onCopyCapture.onCut.onCutCapture.onPaste.onPasteCapture.onCompositionEnd.onCompositionEndCapture.onCompositionStart.onCompositionStartCapture.onCompositionUpdate.onCompositionUpdateCapture.onFocus.onFocusCapture.onBlur.onBlurCapture.onChange.onChangeCapture.onBeforeInput.onBeforeInputCapture.onInput.onInputCapture.onReset.onResetCapture.onSubmit.onSubmitCapture.onInvalid.onInvalidCapture.onLoad.onLoadCapture.onError.onErrorCapture.onKeyDown.onKeyDownCapture.onKeyPress.onKeyPressCapture.onKeyUp.onKeyUpCapture.onAbort.onAbortCapture.onCanPlay.onCanPlayCapture.onCanPlayThrough.onCanPlayThroughCapture.onDurationChange.onDurationChangeCapture.onEmptied.onEmptiedCapture.onEncrypted.onEncryptedCapture.onEnded.onEndedCapture.onLoadedData.onLoadedDataCapture.onLoadedMetadata.onLoadedMetadataCapture.onLoadStart.onLoadStartCapture.onPause.onPauseCapture.onPlay.onPlayCapture.onPlaying.onPlayingCapture.onProgress.onProgressCapture.onRateChange.onRateChangeCapture.onSeeked.onSeekedCapture.onSeeking.onSeekingCapture.onStalled.onStalledCapture.onSuspend.onSuspendCapture.onTimeUpdate.onTimeUpdateCapture.onVolumeChange.onVolumeChangeCapture.onWaiting.onWaitingCapture.onAuxClick.onAuxClickCapture.onClick.onClickCapture.onContextMenu.onContextMenuCapture.onDoubleClick.onDoubleClickCapture.onDrag.onDragCapture.onDragEnd.onDragEndCapture.onDragEnter.onDragEnterCapture.onDragExit.onDragExitCapture.onDragLeave.onDragLeaveCapture.onDragOver.onDragOverCapture.onDragStart.onDragStartCapture.onDrop.onDropCapture.onMouseDown.onMouseDownCapture.onMouseEnter.onMouseLeave.onMouseMove.onMouseMoveCapture.onMouseOut.onMouseOutCapture.onMouseOver.onMouseOverCapture.onMouseUp.onMouseUpCapture.onSelect.onSelectCapture.onTouchCancel.onTouchCancelCapture.onTouchEnd.onTouchEndCapture.onTouchMove.onTouchMoveCapture.onTouchStart.onTouchStartCapture.onPointerDown.onPointerDownCapture.onPointerMove.onPointerMoveCapture.onPointerUp.onPointerUpCapture.onPointerCancel.onPointerCancelCapture.onPointerEnter.onPointerEnterCapture.onPointerLeave.onPointerLeaveCapture.onPointerOver.onPointerOverCapture.onPointerOut.onPointerOutCapture.onGotPointerCapture.onGotPointerCaptureCapture.onLostPointerCapture.onLostPointerCaptureCapture.onScroll.onScrollCapture.onWheel.onWheelCapture.onAnimationStart.onAnimationStartCapture.onAnimationEnd.onAnimationEndCapture.onAnimationIteration.onAnimationIterationCapture.onTransitionEnd.onTransitionEndCapture`.split(`.`);function l(e){return typeof e==`string`&&c.includes(e)}var u=new Set(`aria-activedescendant.aria-atomic.aria-autocomplete.aria-busy.aria-checked.aria-colcount.aria-colindex.aria-colspan.aria-controls.aria-current.aria-describedby.aria-details.aria-disabled.aria-errormessage.aria-expanded.aria-flowto.aria-haspopup.aria-hidden.aria-invalid.aria-keyshortcuts.aria-label.aria-labelledby.aria-level.aria-live.aria-modal.aria-multiline.aria-multiselectable.aria-orientation.aria-owns.aria-placeholder.aria-posinset.aria-pressed.aria-readonly.aria-relevant.aria-required.aria-roledescription.aria-rowcount.aria-rowindex.aria-rowspan.aria-selected.aria-setsize.aria-sort.aria-valuemax.aria-valuemin.aria-valuenow.aria-valuetext.className.color.height.id.lang.max.media.method.min.name.style.target.width.role.tabIndex.accentHeight.accumulate.additive.alignmentBaseline.allowReorder.alphabetic.amplitude.arabicForm.ascent.attributeName.attributeType.autoReverse.azimuth.baseFrequency.baselineShift.baseProfile.bbox.begin.bias.by.calcMode.capHeight.clip.clipPath.clipPathUnits.clipRule.colorInterpolation.colorInterpolationFilters.colorProfile.colorRendering.contentScriptType.contentStyleType.cursor.cx.cy.d.decelerate.descent.diffuseConstant.direction.display.divisor.dominantBaseline.dur.dx.dy.edgeMode.elevation.enableBackground.end.exponent.externalResourcesRequired.fill.fillOpacity.fillRule.filter.filterRes.filterUnits.floodColor.floodOpacity.focusable.fontFamily.fontSize.fontSizeAdjust.fontStretch.fontStyle.fontVariant.fontWeight.format.from.fx.fy.g1.g2.glyphName.glyphOrientationHorizontal.glyphOrientationVertical.glyphRef.gradientTransform.gradientUnits.hanging.horizAdvX.horizOriginX.href.ideographic.imageRendering.in2.in.intercept.k1.k2.k3.k4.k.kernelMatrix.kernelUnitLength.kerning.keyPoints.keySplines.keyTimes.lengthAdjust.letterSpacing.lightingColor.limitingConeAngle.local.markerEnd.markerHeight.markerMid.markerStart.markerUnits.markerWidth.mask.maskContentUnits.maskUnits.mathematical.mode.numOctaves.offset.opacity.operator.order.orient.orientation.origin.overflow.overlinePosition.overlineThickness.paintOrder.panose1.pathLength.patternContentUnits.patternTransform.patternUnits.pointerEvents.pointsAtX.pointsAtY.pointsAtZ.preserveAlpha.preserveAspectRatio.primitiveUnits.r.radius.refX.refY.renderingIntent.repeatCount.repeatDur.requiredExtensions.requiredFeatures.restart.result.rotate.rx.ry.seed.shapeRendering.slope.spacing.specularConstant.specularExponent.speed.spreadMethod.startOffset.stdDeviation.stemh.stemv.stitchTiles.stopColor.stopOpacity.strikethroughPosition.strikethroughThickness.string.stroke.strokeDasharray.strokeDashoffset.strokeLinecap.strokeLinejoin.strokeMiterlimit.strokeOpacity.strokeWidth.surfaceScale.systemLanguage.tableValues.targetX.targetY.textAnchor.textDecoration.textLength.textRendering.to.transform.u1.u2.underlinePosition.underlineThickness.unicode.unicodeBidi.unicodeRange.unitsPerEm.vAlphabetic.values.vectorEffect.version.vertAdvY.vertOriginX.vertOriginY.vHanging.vIdeographic.viewTarget.visibility.vMathematical.widths.wordSpacing.writingMode.x1.x2.x.xChannelSelector.xHeight.xlinkActuate.xlinkArcrole.xlinkHref.xlinkRole.xlinkShow.xlinkTitle.xlinkType.xmlBase.xmlLang.xmlns.xmlnsXlink.xmlSpace.y1.y2.y.yChannelSelector.z.zoomAndPan.ref.key.angle`.split(`.`));function d(e){return typeof e==`string`&&u.has(e)}function f(e){return typeof e==`string`&&e.startsWith(`data-`)}function p(e){if(typeof e!=`object`||!e)return{};var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(d(n)||f(n))&&(t[n]=e[n]);return t}function m(e){if(e==null)return null;if((0,o.isValidElement)(e)&&typeof e.props==`object`&&e.props!==null){var t=e.props;return p(t)}return typeof e==`object`&&!Array.isArray(e)?p(e):null}function h(e){var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(d(n)||f(n)||l(n))&&(t[n]=e[n]);return t}function g(e){return e==null?null:(0,o.isValidElement)(e)?h(e.props):typeof e==`object`&&!Array.isArray(e)?h(e):null}var _=[`children`,`width`,`height`,`viewBox`,`className`,`style`,`title`,`desc`];function v(){return v=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var n=e.children,i=e.width,a=e.height,s=e.viewBox,c=e.className,l=e.style,u=e.title,d=e.desc,f=y(e,_),p=s||{width:i,height:a,x:0,y:0},m=r(`recharts-surface`,c);return o.createElement(`svg`,v({},h(f),{className:m,width:i,height:a,style:l,viewBox:`${p.x} ${p.y} ${p.width} ${p.height}`,ref:t}),o.createElement(`title`,null,u),o.createElement(`desc`,null,d),n)}),S=[`children`,`className`];function C(){return C=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var n=e.children,i=e.className,a=w(e,S),s=r(`recharts-layer`,i);return o.createElement(`g`,C({className:s},h(a),{ref:t}),n)});function D(e){return e===`__proto__`}var O=/\.|(\[(?:[^[\]]*|(["'])(?:(?!\2)[^\\]|\\.)*?\2)\])/;function k(e){switch(typeof e){case`number`:case`symbol`:return!1;case`string`:return e===``||e.startsWith(`.`)||e.endsWith(`.`)?!1:O.test(e);default:return!1}}function A(e){return typeof e==`string`||typeof e==`symbol`?e:Object.is(e?.valueOf?.(),-0)?`-0`:String(e)}function j(e){return typeof e==`symbol`||e instanceof Symbol}function M(e){return e==null?``:N(e)}function N(e){if(typeof e==`string`)return e;if(Array.isArray(e))return e.map(N).join(`,`);if(j(e))return e.toString();let t=e+``;return t===`0`&&Object.is(Number(e),-0)?`-0`:t}function ee(e){if(Array.isArray(e))return e.map(A);if(typeof e==`symbol`)return[e];e=M(e);let t=[],n=e.length;if(n===0)return t;let r=0,i=``,a=``,o=!1,s=!1,c=/^-?\d+(?:\.\d+)?$/;for(e.charCodeAt(0)===46&&t.push(``);r1&&arguments[1]!==void 0?arguments[1]:re),n=Math.round(e*t)/t;return Object.is(n,-0)?0:n}function P(e){var t=[...arguments].slice(1);return e.reduce((e,n,r)=>{var i=t[r-1];return typeof i==`string`?e+i+n:i===void 0?e+n:e+ie(i)+n},``)}var F=e=>e===0?0:e>0?1:-1,ae=e=>typeof e==`number`&&e!=+e,oe=e=>typeof e==`string`&&e.length>1&&e.indexOf(`%`)===e.length-1,I=e=>(typeof e==`number`||e instanceof Number)&&!ae(e),se=e=>I(e)||typeof e==`string`,ce=0,le=e=>{var t=++ce;return`${e||``}${t}`},ue=function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,r=arguments.length>3&&arguments[3]!==void 0&&arguments[3];if(!I(e)&&typeof e!=`string`)return n;var i;if(oe(e)){if(t==null)return n;var a=e.indexOf(`%`);i=t*parseFloat(e.slice(0,a))/100}else i=+e;return ae(i)&&(i=n),r&&t!=null&&i>t&&(i=t),i},de=e=>{if(!Array.isArray(e))return!1;for(var t=e.length,n={},r=0;re&&(typeof t==`function`?t(e):te(e,t))===n)}var me=e=>e==null,he=e=>me(e)?e:`${e.charAt(0).toUpperCase()}${e.slice(1)}`;function ge(e){return e!=null}function _e(){}function ve(e){if(e)return{x:e.x,y:e.y,upperWidth:`upperWidth`in e?e.upperWidth:e.width,lowerWidth:`lowerWidth`in e?e.lowerWidth:e.width,width:e.width,height:e.height}}function ye(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function be(e){for(var t=1;t{var t=e.viewBox,n=e.position,r=e.offset,i=r===void 0?0:r,a=e.parentViewBox,o=e.clamp,s=ve(t),c=s.x,l=s.y,u=s.height,d=s.upperWidth,f=s.lowerWidth,p=c,m=c+(d-f)/2,h=(p+m)/2,g=(d+f)/2,_=p+d/2,v=u>=0?1:-1,y=v*i,b=v>0?`end`:`start`,x=v>0?`start`:`end`,S=d>=0?1:-1,C=S*i,w=S>0?`end`:`start`,T=S>0?`start`:`end`,E=a;if(n===`top`){var D={x:p+d/2,y:l-y,horizontalAnchor:`middle`,verticalAnchor:b};return o&&E&&(D.height=Math.max(l-E.y,0),D.width=d),D}if(n===`bottom`){var O={x:m+f/2,y:l+u+y,horizontalAnchor:`middle`,verticalAnchor:x};return o&&E&&(O.height=Math.max(E.y+E.height-(l+u),0),O.width=f),O}if(n===`left`){var k={x:h-C,y:l+u/2,horizontalAnchor:w,verticalAnchor:`middle`};return o&&E&&(k.width=Math.max(k.x-E.x,0),k.height=u),k}if(n===`right`){var A={x:h+g+C,y:l+u/2,horizontalAnchor:T,verticalAnchor:`middle`};return o&&E&&(A.width=Math.max(E.x+E.width-A.x,0),A.height=u),A}var j=o&&E?{width:g,height:u}:{};return n===`insideLeft`?be({x:h+C,y:l+u/2,horizontalAnchor:T,verticalAnchor:`middle`},j):n===`insideRight`?be({x:h+g-C,y:l+u/2,horizontalAnchor:w,verticalAnchor:`middle`},j):n===`insideTop`?be({x:p+d/2,y:l+y,horizontalAnchor:`middle`,verticalAnchor:x},j):n===`insideBottom`?be({x:m+f/2,y:l+u-y,horizontalAnchor:`middle`,verticalAnchor:b},j):n===`insideTopLeft`?be({x:p+C,y:l+y,horizontalAnchor:T,verticalAnchor:x},j):n===`insideTopRight`?be({x:p+d-C,y:l+y,horizontalAnchor:w,verticalAnchor:x},j):n===`insideBottomLeft`?be({x:m+C,y:l+u-y,horizontalAnchor:T,verticalAnchor:b},j):n===`insideBottomRight`?be({x:m+f-C,y:l+u-y,horizontalAnchor:w,verticalAnchor:b},j):n&&typeof n==`object`&&(I(n.x)||oe(n.x))&&(I(n.y)||oe(n.y))?be({x:c+ue(n.x,g),y:l+ue(n.y,u),horizontalAnchor:`end`,verticalAnchor:`end`},j):be({x:_,y:l+u/2,horizontalAnchor:`middle`,verticalAnchor:`middle`},j)},Te=[`top`,`left`,`right`,`bottom`];function Ee(e){return e==null?!1:typeof e==`object`||Te.includes(e)}var De=(0,o.createContext)(null);function L(e){return function(){return e}}var Oe=Math.PI,ke=2*Oe,Ae=1e-6,je=ke-Ae;function Me(e){this._+=e[0];for(let t=1,n=e.length;t=0))throw Error(`invalid digits: ${e}`);if(t>15)return Me;let n=10**t;return function(e){this._+=e[0];for(let t=1,r=e.length;tAe){if(!(Math.abs(u*s-c*l)>Ae)||!i)this._append`L${this._x1=e},${this._y1=t}`;else{let f=n-a,p=r-o,m=s*s+c*c,h=f*f+p*p,g=Math.sqrt(m),_=Math.sqrt(d),v=i*Math.tan((Oe-Math.acos((m+d-h)/(2*g*_)))/2),y=v/_,b=v/g;Math.abs(y-1)>Ae&&this._append`L${e+y*l},${t+y*u}`,this._append`A${i},${i},0,0,${+(u*f>l*p)},${this._x1=e+b*s},${this._y1=t+b*c}`}}}arc(e,t,n,r,i,a){if(e=+e,t=+t,n=+n,a=!!a,n<0)throw Error(`negative radius: ${n}`);let o=n*Math.cos(r),s=n*Math.sin(r),c=e+o,l=t+s,u=1^a,d=a?r-i:i-r;this._x1===null?this._append`M${c},${l}`:(Math.abs(this._x1-c)>Ae||Math.abs(this._y1-l)>Ae)&&this._append`L${c},${l}`,n&&(d<0&&(d=d%ke+ke),d>je?this._append`A${n},${n},0,1,${u},${e-o},${t-s}A${n},${n},0,1,${u},${this._x1=c},${this._y1=l}`:d>Ae&&this._append`A${n},${n},0,${+(d>=Oe)},${u},${this._x1=e+n*Math.cos(i)},${this._y1=t+n*Math.sin(i)}`)}rect(e,t,n,r){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}h${n=+n}v${+r}h${-n}Z`}toString(){return this._}};Pe.prototype;function Fe(e){let t=3;return e.digits=function(n){if(!arguments.length)return t;if(n==null)t=null;else{let e=Math.floor(n);if(!(e>=0))throw RangeError(`invalid digits: ${n}`);t=e}return e},()=>new Pe(t)}Array.prototype.slice;function Ie(e){return typeof e==`object`&&`length`in e?e:Array.from(e)}function Le(e){this._context=e}Le.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t)}}};function Re(e){return new Le(e)}function ze(e){return e[0]}function Be(e){return e[1]}function Ve(e,t){var n=L(!0),r=null,i=Re,a=null,o=Fe(s);e=typeof e==`function`?e:e===void 0?ze:L(e),t=typeof t==`function`?t:t===void 0?Be:L(t);function s(s){var c,l=(s=Ie(s)).length,u,d=!1,f;for(r??(a=i(f=o())),c=0;c<=l;++c)!(c=d;--f)s.point(_[f],v[f]);s.lineEnd(),s.areaEnd()}}h&&(_[u]=+e(m,u,l),v[u]=+t(m,u,l),s.point(r?+r(m,u,l):_[u],n?+n(m,u,l):v[u]))}if(g)return s=null,g+``||null}function u(){return Ve().defined(i).curve(o).context(a)}return l.x=function(t){return arguments.length?(e=typeof t==`function`?t:L(+t),r=null,l):e},l.x0=function(t){return arguments.length?(e=typeof t==`function`?t:L(+t),l):e},l.x1=function(e){return arguments.length?(r=e==null?null:typeof e==`function`?e:L(+e),l):r},l.y=function(e){return arguments.length?(t=typeof e==`function`?e:L(+e),n=null,l):t},l.y0=function(e){return arguments.length?(t=typeof e==`function`?e:L(+e),l):t},l.y1=function(e){return arguments.length?(n=e==null?null:typeof e==`function`?e:L(+e),l):n},l.lineX0=l.lineY0=function(){return u().x(e).y(t)},l.lineY1=function(){return u().x(e).y(n)},l.lineX1=function(){return u().x(r).y(t)},l.defined=function(e){return arguments.length?(i=typeof e==`function`?e:L(!!e),l):i},l.curve=function(e){return arguments.length?(o=e,a!=null&&(s=o(a)),l):o},l.context=function(e){return arguments.length?(e==null?a=s=null:s=o(a=e),l):a},l}var Ue=class{constructor(e,t){this._context=e,this._x=t}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,t,e,t):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+t)/2,e,this._y0,e,t)}this._x0=e,this._y0=t}};function We(e){return new Ue(e,!0)}function Ge(e){return new Ue(e,!1)}function Ke(){}function qe(e,t,n){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+n)/6)}function Je(e){this._context=e}Je.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:qe(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:qe(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function Ye(e){return new Je(e)}function Xe(e){this._context=e}Xe.prototype={areaStart:Ke,areaEnd:Ke,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:qe(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function Ze(e){return new Xe(e)}function Qe(e){this._context=e}Qe.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+e)/6,r=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(n,r):this._context.moveTo(n,r);break;case 3:this._point=4;default:qe(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function $e(e){return new Qe(e)}function et(e){this._context=e}et.prototype={areaStart:Ke,areaEnd:Ke,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}};function tt(e){return new et(e)}function nt(e){return e<0?-1:1}function rt(e,t,n){var r=e._x1-e._x0,i=t-e._x1,a=(e._y1-e._y0)/(r||i<0&&-0),o=(n-e._y1)/(i||r<0&&-0),s=(a*i+o*r)/(r+i);return(nt(a)+nt(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function it(e,t){var n=e._x1-e._x0;return n?(3*(e._y1-e._y0)/n-t)/2:t}function at(e,t,n){var r=e._x0,i=e._y0,a=e._x1,o=e._y1,s=(a-r)/3;e._context.bezierCurveTo(r+s,i+s*t,a-s,o-s*n,a,o)}function ot(e){this._context=e}ot.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:at(this,this._t0,it(this,this._t0))}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var n=NaN;if(e=+e,t=+t,e!==this._x1||t!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,at(this,it(this,n=rt(this,e,t)),n);break;default:at(this,this._t0,n=rt(this,e,t))}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=n}}};function st(e){this._context=new ct(e)}(st.prototype=Object.create(ot.prototype)).point=function(e,t){ot.prototype.point.call(this,t,e)};function ct(e){this._context=e}ct.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,n,r,i,a){this._context.bezierCurveTo(t,e,r,n,a,i)}};function lt(e){return new ot(e)}function ut(e){return new st(e)}function dt(e){this._context=e}dt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,n=e.length;if(n){if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),n===2)this._context.lineTo(e[1],t[1]);else for(var r=ft(e),i=ft(t),a=0,o=1;o=0;--t)i[t]=(o[t]-i[t+1])/a[t];for(a[n-1]=(e[n]+i[n-1])/2,t=0;t=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var n=this._x*(1-this._t)+e*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,t)}}this._x=e,this._y=t}};function ht(e){return new mt(e,.5)}function gt(e){return new mt(e,0)}function _t(e){return new mt(e,1)}function vt(e,t){if((o=e.length)>1)for(var n=1,r,i,a=e[t[0]],o,s=a.length;n=0;)n[t]=t;return n}function bt(e,t){return e[t]}function xt(e){let t=[];return t.key=e,t}function St(){var e=L([]),t=yt,n=vt,r=bt;function i(i){var a=Array.from(e.apply(this,arguments),xt),o,s=a.length,c=-1,l;for(let e of i)for(o=0,++c;o0){for(var n,r,i=0,a=e[0].length,o;i0){for(var n=0,r=e[t[0]],i,a=r.length;n0&&(a=(i=e[t[0]]).length)>0){for(var n=0,r=1,i,a,o;r`radius`in e&&`startAngle`in e&&`endAngle`in e,Dt=(e,t)=>{if(!e||typeof e==`function`||typeof e==`boolean`)return null;var n=e;if((0,o.isValidElement)(e)&&(n=e.props),typeof n!=`object`&&typeof n!=`function`)return null;var r={};return Object.keys(n).forEach(e=>{l(e)&&typeof n[e]==`function`&&(r[e]=t||(t=>n[e](n,t)))}),r},Ot=(e,t,n)=>r=>(e(t,n,r),null),kt=(e,t,n)=>{if(e===null||typeof e!=`object`&&typeof e!=`function`)return null;var r=null;return Object.keys(e).forEach(i=>{var a=e[i];l(i)&&typeof a==`function`&&(r||={},r[i]=Ot(a,t,n))}),r};function At(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function jt(e){for(var t=1;t(e[t]===void 0&&r[t]!==void 0&&(e[t]=r[t]),e),n)}function It(e,t){let n=new Map;for(let r=0;r=0}function Bt(e){return e!=null&&typeof e!=`function`&&zt(e.length)}function Vt(e){return function(t){return te(t,e)}}function Ht(e){return e==null||typeof e!=`object`&&typeof e!=`function`}function Ut(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Wt(e){return Object.getOwnPropertySymbols(e).filter(t=>Object.prototype.propertyIsEnumerable.call(e,t))}function Gt(e){return e==null?e===void 0?`[object Undefined]`:`[object Null]`:Object.prototype.toString.call(e)}var Kt=`[object RegExp]`,qt=`[object String]`,Jt=`[object Number]`,Yt=`[object Boolean]`,Xt=`[object Arguments]`,Zt=`[object Symbol]`,Qt=`[object Date]`,$t=`[object Map]`,en=`[object Set]`,tn=`[object Array]`,nn=`[object Function]`,rn=`[object ArrayBuffer]`,an=`[object Object]`,on=`[object Error]`,sn=`[object DataView]`,cn=`[object Uint8Array]`,ln=`[object Uint8ClampedArray]`,un=`[object Uint16Array]`,dn=`[object Uint32Array]`,fn=`[object BigUint64Array]`,pn=`[object Int8Array]`,mn=`[object Int16Array]`,hn=`[object Int32Array]`,gn=`[object BigInt64Array]`,_n=`[object Float32Array]`,vn=`[object Float64Array]`,yn=typeof globalThis==`object`&&globalThis||typeof window==`object`&&window||typeof self==`object`&&self||typeof global==`object`&&global||(function(){return this})();function bn(e){return yn.Buffer!==void 0&&yn.Buffer.isBuffer(e)}function xn(e,t){return Sn(e,void 0,e,new Map,t)}function Sn(e,t,n,r=new Map,i=void 0){let a=i?.(e,t,n,r);if(a!==void 0)return a;if(Ht(e))return e;if(r.has(e))return r.get(e);if(Array.isArray(e)){let t=Array(e.length);r.set(e,t);for(let a=0;avoid 0)}function kn(e,t,n,r,i=!1){if(t===e)return!0;switch(typeof t){case`object`:return An(e,t,n,r,i);case`function`:return Object.keys(t).length>0?kn(e,{...t},n,r,i):En(e,t);default:return Dn(e)&&i?typeof t!=`string`||t===``:En(e,t)}}function An(e,t,n,r,i=!1){if(t==null)return!0;if(Array.isArray(t))return Mn(e,t,n,r);if(t instanceof Map)return jn(e,t,n,r);if(t instanceof Set)return Nn(e,t,n,r);let a=Object.keys(t);if(e==null)return i&&a.length===0;if(i)Ht(e)&&(e=Object(e));else{let t=Gt(e);if(t!==`[object Object]`&&t!==`[object Arguments]`)return!1}if(a.length===0)return!0;if(r?.has(t))return r.get(t)===e;r?.set(t,e);try{for(let i=0;ivoid 0)}function Fn(e){return e=Tn(e),t=>Pn(t,e)}function In(e,t){return xn(e,(n,r,i,a)=>{let o=t?.(n,r,i,a);if(o!==void 0)return o;if(typeof e==`object`){if(Gt(e)===`[object Object]`&&typeof e.constructor!=`function`){let t={};return a.set(e,t),Cn(t,e,i,a),t}switch(Object.prototype.toString.call(e)){case Jt:case qt:case Yt:{let t=new e.constructor(e?.valueOf());return Cn(t,e),t}case Xt:{let t={};return Cn(t,e),t.length=e.length,t[Symbol.iterator]=e[Symbol.iterator],t}default:return}}})}function Ln(e){return In(e)}var Rn=/^(?:0|[1-9]\d*)$/;function zn(e,t=2**53-1){switch(typeof e){case`number`:return Number.isInteger(e)&&e>=0&&e{var n=e();function r(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var i=typeof Object.is==`function`?Object.is:r,a=n.useState,o=n.useEffect,s=n.useLayoutEffect,c=n.useDebugValue;function l(e,t){var n=t(),r=a({inst:{value:n,getSnapshot:t}}),i=r[0].inst,l=r[1];return s(function(){i.value=n,i.getSnapshot=t,u(i)&&l({inst:i})},[e,n,t]),o(function(){return u(i)&&l({inst:i}),e(function(){u(i)&&l({inst:i})})},[e]),c(n),n}function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!i(e,n)}catch{return!0}}function d(e,t){return t()}var f=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?d:l;t.useSyncExternalStore=n.useSyncExternalStore===void 0?f:n.useSyncExternalStore})),Jn=i(((e,t)=>{t.exports=qn()})),Yn=i((t=>{var n=e(),r=Jn();function i(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var a=typeof Object.is==`function`?Object.is:i,o=r.useSyncExternalStore,s=n.useRef,c=n.useEffect,l=n.useMemo,u=n.useDebugValue;t.useSyncExternalStoreWithSelector=function(e,t,n,r,i){var d=s(null);if(d.current===null){var f={hasValue:!1,value:null};d.current=f}else f=d.current;d=l(function(){function e(e){if(!o){if(o=!0,s=e,e=r(e),i!==void 0&&f.hasValue){var t=f.value;if(i(t,e))return c=t}return c=e}if(t=c,a(s,e))return t;var n=r(e);return i!==void 0&&i(t,n)?(s=e,t):(s=e,c=n)}var o=!1,s,c,l=n===void 0?null:n;return[function(){return e(t())},l===null?void 0:function(){return e(l())}]},[t,n,r,i]);var p=o(e,d[0],d[1]);return c(function(){f.hasValue=!0,f.value=p},[p]),u(p),p}})),Xn=i(((e,t)=>{t.exports=Yn()}))(),Zn=(0,o.createContext)(null),Qn=e=>e,R=()=>{var e=(0,o.useContext)(Zn);return e?e.store.dispatch:Qn},$n=()=>{},er=()=>$n,tr=(e,t)=>e===t;function z(e){var t=(0,o.useContext)(Zn),n=(0,o.useMemo)(()=>t?t=>{if(t!=null)return e(t)}:$n,[t,e]);return(0,Xn.useSyncExternalStoreWithSelector)(t?t.subscription.addNestedSub:er,t?t.store.getState:$n,t?t.store.getState:$n,n,tr)}function nr(e,t=`expected a function, instead received ${typeof e}`){if(typeof e!=`function`)throw TypeError(t)}function rr(e,t=`expected all items to be functions, instead received the following types: `){if(!e.every(e=>typeof e==`function`)){let n=e.map(e=>typeof e==`function`?`function ${e.name||`unnamed`}()`:typeof e).join(`, `);throw TypeError(`${t}[${n}]`)}}var ir=e=>Array.isArray(e)?e:[e];function ar(e){let t=Array.isArray(e[0])?e[0]:e;return rr(t,`createSelector expects all input-selectors to be functions, but received the following types: `),t}function or(e,t){let n=[],{length:r}=e;for(let i=0;i`u`?sr:WeakRef,lr=0,ur=1;function dr(){return{s:lr,v:void 0,o:null,p:null}}function fr(e){return e instanceof cr?e.deref():e}function pr(e,t={}){let n=dr(),{resultEqualityCheck:r}=t,i,a=0;function o(){let t=n,{length:o}=arguments;for(let e=0,n=o;e{n=dr(),o.resetResultsCount()},o.resultsCount=()=>a,o.resetResultsCount=()=>{a=0},o}function mr(e,...t){let n=typeof e==`function`?{memoize:e,memoizeOptions:t}:e,r=(...e)=>{let t=0,r=0,i,a={},o=e.pop();typeof o==`object`&&(a=o,o=e.pop()),nr(o,`createSelector expects an output function after the inputs, but received: [${typeof o}]`);let{memoize:s,memoizeOptions:c=[],argsMemoize:l=pr,argsMemoizeOptions:u=[]}={...n,...a},d=ir(c),f=ir(u),p=ar(e),m=s(function(){return t++,o.apply(null,arguments)},...d),h=l(function(){r++;let e=or(p,arguments);return i=m.apply(null,e),i},...f);return Object.assign(h,{resultFunc:o,memoizedResultFunc:m,dependencies:p,dependencyRecomputations:()=>r,resetDependencyRecomputations:()=>{r=0},lastResult:()=>i,recomputations:()=>t,resetRecomputations:()=>{t=0},memoize:s,argsMemoize:l})};return Object.assign(r,{withTypes:()=>r}),r}var B=mr(pr);function hr(e,t=1){let n=[],r=Math.floor(t),i=(e,t)=>{for(let a=0;a{if(e!==t){let r=_r(e),i=_r(t);if(r===i&&r===0){if(et)return n===`desc`?-1:1}return n===`desc`?i-r:r-i}return 0},yr=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,br=/^\w*$/;function xr(e,t){return Array.isArray(e)?!1:typeof e==`number`||typeof e==`boolean`||e==null||j(e)?!0:typeof e==`string`&&(br.test(e)||!yr.test(e))||t!=null&&Object.hasOwn(t,e)}function Sr(e,t,n,r){if(e==null)return[];n=r?void 0:n,Array.isArray(e)||(e=Bt(e)?Array.from(e):Object.values(e)),Array.isArray(t)||(t=t==null?[null]:[t]),t.length===0&&(t=[null]),Array.isArray(n)||(n=n==null?[]:[n]),n=n.map(e=>String(e));let i=(e,t)=>{let n=e,r=0;for(;r0&&r===t.length?n:void 0},a=(e,t)=>{if(e==null)return t;if(t!=null)return typeof e==`object`&&`key`in e?Object.hasOwn(t,e.key)?t[e.key]:i(t,e.path):typeof e==`function`?e(t):Array.isArray(e)?i(t,e):t[e]},o=t.map(e=>(Array.isArray(e)&&e.length===1&&(e=e[0]),e==null||typeof e==`function`||Array.isArray(e)||xr(e)?e:{key:e,path:ee(e)}));return e.map(e=>({original:e,criteria:o.map(t=>a(t,e))})).slice().sort((e,t)=>{for(let r=0;re.original)}function Cr(e,...t){let n=t.length;return n>1&&gr(e,t[0],t[1])?t=[]:n>2&&gr(t[0],t[1],t[2])&&(t=[t[0]]),Sr(e,hr(t),[`asc`])}var wr=e=>e.legend.settings,Tr=e=>e.legend.size;B([e=>e.legend.payload,wr],(e,t)=>{var n=t.itemSorter,r=e.flat(1);return n?Cr(r,n):r});function Er(e,t){return jr(e)||Ar(e,t)||Or(e,t)||Dr()}function Dr(){throw TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Or(e,t){if(e){if(typeof e==`string`)return kr(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?kr(e,t):void 0}}function kr(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);nMr||Math.abs(e.left-t.left)>Mr||Math.abs(e.top-t.top)>Mr||Math.abs(e.width-t.width)>Mr}function Pr(e){var t=e.getBoundingClientRect();return{height:t.height,left:t.left,top:t.top,width:t.width}}function Fr(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=Er((0,o.useState)({height:0,left:0,top:0,width:0}),2),n=t[0],r=t[1],i=(0,o.useRef)(null),a=(0,o.useRef)(n);a.current=n;var s=(0,o.useCallback)(e=>{if(i.current!=null&&(i.current.disconnect(),i.current=null),e!=null){var t=Pr(e);if(Nr(t,a.current)&&r(t),typeof ResizeObserver<`u`){var n=new ResizeObserver(()=>{var t=Pr(e);Nr(t,a.current)&&r(t)});n.observe(e),i.current=n}}},[...e]);return(0,o.useEffect)(()=>()=>{var e;(e=i.current)==null||e.disconnect()},[]),[n,s]}function Ir(e){return`Minified Redux error #${e}; visit https://redux.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var Lr=typeof Symbol==`function`&&Symbol.observable||`@@observable`,Rr=()=>Math.random().toString(36).substring(7).split(``).join(`.`),zr={INIT:`@@redux/INIT${Rr()}`,REPLACE:`@@redux/REPLACE${Rr()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${Rr()}`};function Br(e){if(typeof e!=`object`||!e)return!1;let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t||Object.getPrototypeOf(e)===null}function Vr(e,t,n){if(typeof e!=`function`)throw Error(Ir(2));if(typeof t==`function`&&typeof n==`function`||typeof n==`function`&&typeof arguments[3]==`function`)throw Error(Ir(0));if(typeof t==`function`&&n===void 0&&(n=t,t=void 0),n!==void 0){if(typeof n!=`function`)throw Error(Ir(1));return n(Vr)(e,t)}let r=e,i=t,a=new Map,o=a,s=0,c=!1;function l(){o===a&&(o=new Map,a.forEach((e,t)=>{o.set(t,e)}))}function u(){if(c)throw Error(Ir(3));return i}function d(e){if(typeof e!=`function`)throw Error(Ir(4));if(c)throw Error(Ir(5));let t=!0;l();let n=s++;return o.set(n,e),function(){if(t){if(c)throw Error(Ir(6));t=!1,l(),o.delete(n),a=null}}}function f(e){if(!Br(e))throw Error(Ir(7));if(e.type===void 0)throw Error(Ir(8));if(typeof e.type!=`string`)throw Error(Ir(17));if(c)throw Error(Ir(9));try{c=!0,i=r(i,e)}finally{c=!1}return(a=o).forEach(e=>{e()}),e}function p(e){if(typeof e!=`function`)throw Error(Ir(10));r=e,f({type:zr.REPLACE})}function m(){let e=d;return{subscribe(t){if(typeof t!=`object`||!t)throw Error(Ir(11));function n(){let e=t;e.next&&e.next(u())}return n(),{unsubscribe:e(n)}},[Lr](){return this}}}return f({type:zr.INIT}),{dispatch:f,subscribe:d,getState:u,replaceReducer:p,[Lr]:m}}function Hr(e){Object.keys(e).forEach(t=>{let n=e[t];if(n(void 0,{type:zr.INIT})===void 0)throw Error(Ir(12));if(n(void 0,{type:zr.PROBE_UNKNOWN_ACTION()})===void 0)throw Error(Ir(13))})}function Ur(e){let t=Object.keys(e),n={};for(let r=0;re:e.length===1?e[0]:e.reduce((e,t)=>(...n)=>e(t(...n)))}function Gr(...e){return t=>(n,r)=>{let i=t(n,r),a=()=>{throw Error(Ir(15))},o={getState:i.getState,dispatch:(e,...t)=>a(e,...t)};return a=Wr(...e.map(e=>e(o)))(i.dispatch),{...i,dispatch:a}}}function Kr(e){return Br(e)&&`type`in e&&typeof e.type==`string`}var qr=Symbol.for(`immer-nothing`),Jr=Symbol.for(`immer-draftable`),Yr=Symbol.for(`immer-state`);function Xr(e,...t){throw Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var Zr=Object,Qr=Zr.getPrototypeOf,$r=`constructor`,ei=`prototype`,ti=`configurable`,ni=`enumerable`,ri=`writable`,ii=`value`,ai=e=>!!e&&!!e[Yr];function oi(e){return e?li(e)||gi(e)||!!e[Jr]||!!e[$r]?.[Jr]||_i(e)||vi(e):!1}var si=Zr[ei][$r].toString(),ci=new WeakMap;function li(e){if(!e||!yi(e))return!1;let t=Qr(e);if(t===null||t===Zr[ei])return!0;let n=Zr.hasOwnProperty.call(t,$r)&&t[$r];if(n===Object)return!0;if(!bi(n))return!1;let r=ci.get(n);return r===void 0&&(r=Function.toString.call(n),ci.set(n,r)),r===si}function ui(e,t,n=!0){di(e)===0?(n?Reflect.ownKeys(e):Zr.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function di(e){let t=e[Yr];return t?t.type_:gi(e)?1:_i(e)?2:vi(e)?3:0}var fi=(e,t,n=di(e))=>n===2?e.has(t):Zr[ei].hasOwnProperty.call(e,t),pi=(e,t,n=di(e))=>n===2?e.get(t):e[t],mi=(e,t,n,r=di(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function hi(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}var gi=Array.isArray,_i=e=>e instanceof Map,vi=e=>e instanceof Set,yi=e=>typeof e==`object`,bi=e=>typeof e==`function`,xi=e=>typeof e==`boolean`;function Si(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var Ci=e=>e.copy_||e.base_,wi=e=>e.modified_?e.copy_:e.base_;function Ti(e,t){if(_i(e))return new Map(e);if(vi(e))return new Set(e);if(gi(e))return Array[ei].slice.call(e);let n=li(e);if(t===!0||t===`class_only`&&!n){let t=Zr.getOwnPropertyDescriptors(e);delete t[Yr];let n=Reflect.ownKeys(t);for(let r=0;r1&&Zr.defineProperties(e,{set:Oi,add:Oi,clear:Oi,delete:Oi}),Zr.freeze(e),t&&ui(e,(e,t)=>{Ei(t,!0)},!1),e)}function Di(){Xr(2)}var Oi={[ii]:Di};function ki(e){return e===null||!yi(e)||Zr.isFrozen(e)}var Ai=`MapSet`,ji=`Patches`,Mi=`ArrayMethods`,Ni={};function Pi(e){let t=Ni[e];return t||Xr(0,e),t}var Fi=e=>!!Ni[e],Ii,Li=()=>Ii,Ri=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:Fi(Ai)?Pi(Ai):void 0,arrayMethodsPlugin_:Fi(Mi)?Pi(Mi):void 0});function zi(e,t){t&&(e.patchPlugin_=Pi(ji),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function Bi(e){Vi(e),e.drafts_.forEach(Ui),e.drafts_=null}function Vi(e){e===Ii&&(Ii=e.parent_)}var Hi=e=>Ii=Ri(Ii,e);function Ui(e){let t=e[Yr];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function Wi(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];if(e!==void 0&&e!==n){n[Yr].modified_&&(Bi(t),Xr(4)),oi(e)&&(e=Gi(t,e));let{patchPlugin_:r}=t;r&&r.generateReplacementPatches_(n[Yr].base_,e,t)}else e=Gi(t,n);return Ki(t,e,!0),Bi(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===qr?void 0:e}function Gi(e,t){if(ki(t))return t;let n=t[Yr];if(!n)return ea(t,e.handledSet_,e);if(!Ji(n,e))return t;if(!n.modified_)return n.base_;if(!n.finalized_){let{callbacks_:t}=n;if(t)for(;t.length>0;)t.pop()(e);Qi(n,e)}return n.copy_}function Ki(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Ei(t,n)}function qi(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var Ji=(e,t)=>e.scope_===t,Yi=[];function Xi(e,t,n,r){let i=Ci(e),a=e.type_;if(r!==void 0&&pi(i,r,a)===t){mi(i,r,n,a);return}if(!e.draftLocations_){let t=e.draftLocations_=new Map;ui(i,(e,n)=>{if(ai(n)){let r=t.get(n)||[];r.push(e),t.set(n,r)}})}let o=e.draftLocations_.get(t)??Yi;for(let e of o)mi(i,e,n,a)}function Zi(e,t,n){e.callbacks_.push(function(r){let i=t;if(!i||!Ji(i,r))return;r.mapSetPlugin_?.fixSetContents(i);let a=wi(i);Xi(e,i.draft_??i,a,n),Qi(i,r)})}function Qi(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:n}=t;if(n){let r=n.getPath(e);r&&n.generatePatches_(e,r,t)}qi(e)}}function $i(e,t,n){let{scope_:r}=e;if(ai(n)){let i=n[Yr];Ji(i,r)&&i.callbacks_.push(function(){la(e),Xi(e,n,wi(i),t)})}else oi(n)&&e.callbacks_.push(function(){let i=Ci(e);e.type_===3?i.has(n)&&ea(n,r.handledSet_,r):pi(i,t,e.type_)===n&&r.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&ea(pi(e.copy_,t,e.type_),r.handledSet_,r)})}function ea(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||ai(e)||t.has(e)||!oi(e)||ki(e)?e:(t.add(e),ui(e,(r,i)=>{if(ai(i)){let t=i[Yr];Ji(t,n)&&(mi(e,r,wi(t),e.type_),qi(t))}else oi(i)&&ea(i,t,n)}),e)}function ta(e,t){let n=gi(e),r={type_:+!!n,scope_:t?t.scope_:Li(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},i=r,a=na;n&&(i=[r],a=ra);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,[s,r]}var na={get(e,t){if(t===Yr)return e;let n=e.scope_.arrayMethodsPlugin_,r=e.type_===1&&typeof t==`string`;if(r&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);let i=Ci(e);if(!fi(i,t,e.type_))return oa(e,i,t);let a=i[t];if(e.finalized_||!oi(a)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&Si(t))return a;if(a===ia(e.base_,t)||aa(e,t,a)){la(e);let n=e.type_===1?+t:t,r=da(e.scope_,a,e,n);return e.copy_[n]=r}return a},has(e,t){return t in Ci(e)},ownKeys(e){return Reflect.ownKeys(Ci(e))},set(e,t,n){let r=sa(Ci(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=ia(Ci(e),t),i=r?.[Yr];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_.set(t,!1),!0;if(hi(n,r)&&(n!==void 0||fi(e.base_,t,e.type_)))return!0;la(e),ca(e)}return e.copy_[t]===n&&(n!==void 0||fi(e.copy_,t,e.type_))||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_.set(t,!0),$i(e,t,n),!0)},deleteProperty(e,t){return la(e),ia(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),ca(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=Ci(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[ri]:!0,[ti]:e.type_!==1||t!==`length`,[ni]:r[ni],[ii]:n[t]}},defineProperty(){Xr(11)},getPrototypeOf(e){return Qr(e.base_)},setPrototypeOf(){Xr(12)}},ra={};for(let e in na){let t=na[e];ra[e]=function(){let e=arguments;return e[0]=e[0][0],t.apply(this,e)}}ra.deleteProperty=function(e,t){return ra.set.call(this,e,t,void 0)},ra.set=function(e,t,n){return na.set.call(this,e[0],t,n,e[0])};function ia(e,t){let n=e[Yr];return(n?Ci(n):e)[t]}function aa(e,t,n){return e.type_!==1||!e.allIndicesReassigned_||e.assigned_?.get(t)||!oi(n)||n[Yr]?!1:e.baseRefs_.has(n)}function oa(e,t,n){let r=sa(t,n);return r?ii in r?r[ii]:r.get?.call(e.draft_):void 0}function sa(e,t){if(!(t in e))return;let n=Qr(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=Qr(n)}}function ca(e){e.modified_||(e.modified_=!0,e.parent_&&ca(e.parent_))}function la(e){e.copy_||=(e.assigned_=new Map,Ti(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var ua=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,n)=>{if(bi(e)&&!bi(t)){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}bi(t)||Xr(6),n!==void 0&&!bi(n)&&Xr(7);let r;if(oi(e)){let i=Hi(this),a=da(i,e,void 0),o=!0;try{r=t(a),o=!1}finally{o?Bi(i):Vi(i)}return zi(i,n),Wi(r,i)}if(!e||!yi(e)){if(r=t(e),r===void 0&&(r=e),r===qr&&(r=void 0),this.autoFreeze_&&Ei(r,!0),n){let t=[],i=[];Pi(ji).generateReplacementPatches_(e,r,{patches_:t,inversePatches_:i}),n(t,i)}return r}Xr(1,e)},this.produceWithPatches=(e,t)=>{if(bi(e))return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},xi(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),xi(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),xi(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){oi(e)||Xr(8),ai(e)&&(e=fa(e));let t=Hi(this),n=da(t,e,void 0);return n[Yr].isManual_=!0,Vi(t),n}finishDraft(e,t){let n=e&&e[Yr];(!n||!n.isManual_)&&Xr(9);let{scope_:r}=n;return zi(r,t),Wi(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=Pi(ji).applyPatches_;return ai(e)?r(e,t):this.produce(e,e=>r(e,t))}};function da(e,t,n,r){let[i,a]=_i(t)?Pi(Ai).proxyMap_(t,n):vi(t)?Pi(Ai).proxySet_(t,n):ta(t,n);return(n?.scope_??Li()).drafts_.push(i),a.callbacks_=n?.callbacks_??[],a.key_=r,n&&r!==void 0?Zi(n,a,r):a.callbacks_.push(function(e){e.mapSetPlugin_?.fixSetContents(a);let{patchPlugin_:t}=e;a.modified_&&t&&t.generatePatches_(a,[],e)}),i}function fa(e){return ai(e)||Xr(10,e),pa(e)}function pa(e){if(!oi(e)||ki(e))return e;let t=e[Yr],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=Ti(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=Ti(e,!0);return ui(n,(e,t)=>{mi(n,e,pa(t))},r),t&&(t.finalized_=!1),n}globalThis.Iterator?.from;var ma=new ua().produce,V=e=>e;function ha(e){return({dispatch:t,getState:n})=>r=>i=>typeof i==`function`?i(t,n,e):r(i)}var ga=ha(),_a=ha,va=typeof window<`u`&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]==`object`?Wr:Wr.apply(null,arguments)};typeof window<`u`&&window.__REDUX_DEVTOOLS_EXTENSION__&&window.__REDUX_DEVTOOLS_EXTENSION__;function ya(e,t){function n(...n){if(t){let r=t(...n);if(!r)throw Error(Oo(0));return{type:e,payload:r.payload,...`meta`in r&&{meta:r.meta},...`error`in r&&{error:r.error}}}return{type:e,payload:n[0]}}return n.toString=()=>`${e}`,n.type=e,n.match=t=>Kr(t)&&t.type===e,n}var ba=class e extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,e.prototype)}static get[Symbol.species](){return e}concat(...e){return super.concat.apply(this,e)}prepend(...t){return t.length===1&&Array.isArray(t[0])?new e(...t[0].concat(this)):new e(...t.concat(this))}};function xa(e){return oi(e)?ma(e,()=>{}):e}function Sa(e,t,n){return e.has(t)?e.get(t):e.set(t,n(t)).get(t)}function Ca(e){return typeof e==`boolean`}var wa=()=>function(e){let{thunk:t=!0,immutableCheck:n=!0,serializableCheck:r=!0,actionCreatorCheck:i=!0}=e??{},a=new ba;return t&&(Ca(t)?a.push(ga):a.push(_a(t.extraArgument))),a},Ta=`RTK_autoBatch`,H=()=>e=>({payload:e,meta:{[Ta]:!0}}),Ea=e=>t=>{setTimeout(t,e)},Da=(e,t)=>n=>{let r=!1,i=()=>{r||(r=!0,cancelAnimationFrame(a),clearTimeout(o),n())},a=e(i),o=setTimeout(i,t)},Oa=(e={type:`raf`})=>t=>(...n)=>{let r=t(...n),i=!0,a=!1,o=!1,s=new Set,c=e.type===`tick`?queueMicrotask:e.type===`raf`?typeof window<`u`&&window.requestAnimationFrame?Da(window.requestAnimationFrame,100):Ea(10):e.type===`callback`?e.queueNotification:Ea(e.timeout),l=()=>{o=!1,a&&(a=!1,s.forEach(e=>e()))};return Object.assign({},r,{subscribe(e){let t=r.subscribe(()=>i&&e());return s.add(e),()=>{t(),s.delete(e)}},dispatch(e){try{return i=!e?.meta?.[Ta],a=!i,a&&(o||(o=!0,c(l))),r.dispatch(e)}finally{i=!0}}})},ka=e=>function(t){let{autoBatch:n=!0}=t??{},r=new ba(e);return n&&r.push(Oa(typeof n==`object`?n:void 0)),r};function Aa(e){let t=wa(),{reducer:n=void 0,middleware:r,devTools:i=!0,duplicateMiddlewareCheck:a=!0,preloadedState:o=void 0,enhancers:s=void 0}=e||{},c;if(typeof n==`function`)c=n;else if(Br(n))c=Ur(n);else throw Error(Oo(1));let l;l=typeof r==`function`?r(t):t();let u=Wr;i&&(u=va({trace:!1,...typeof i==`object`&&i}));let d=ka(Gr(...l)),f=typeof s==`function`?s(d):d(),p=u(...f);return Vr(c,o,p)}function ja(e){let t={},n=[],r,i={addCase(e,n){let r=typeof e==`string`?e:e.type;if(!r)throw Error(Oo(28));if(r in t)throw Error(Oo(29));return t[r]=n,i},addAsyncThunk(e,r){return r.pending&&(t[e.pending.type]=r.pending),r.rejected&&(t[e.rejected.type]=r.rejected),r.fulfilled&&(t[e.fulfilled.type]=r.fulfilled),r.settled&&n.push({matcher:e.settled,reducer:r.settled}),i},addMatcher(e,t){return n.push({matcher:e,reducer:t}),i},addDefaultCase(e){return r=e,i}};return e(i),[t,n,r]}function Ma(e){return typeof e==`function`}function Na(e,t){let[n,r,i]=ja(t),a;if(Ma(e))a=()=>xa(e());else{let t=xa(e);a=()=>t}function o(e=a(),t){let o=[n[t.type],...r.filter(({matcher:e})=>e(t)).map(({reducer:e})=>e)];return o.filter(e=>!!e).length===0&&(o=[i]),o.reduce((e,n)=>{if(n){if(ai(e)){let r=n(e,t);return r===void 0?e:r}if(oi(e))return ma(e,e=>n(e,t));{let r=n(e,t);if(r===void 0){if(e===null)return e;throw Error(`A case reducer on a non-draftable value must not return undefined`)}return r}}return e},e)}return o.getInitialState=a,o}var Pa=`ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW`,Fa=(e=21)=>{let t=``,n=e;for(;n--;)t+=Pa[Math.random()*64|0];return t},Ia=Symbol.for(`rtk-slice-createasyncthunk`);function La(e,t){return`${e}/${t}`}function Ra({creators:e}={}){let t=e?.asyncThunk?.[Ia];return function(e){let{name:n,reducerPath:r=n}=e;if(!n)throw Error(Oo(11));let i=(typeof e.reducers==`function`?e.reducers(Va()):e.reducers)||{},a=Object.keys(i),o={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},s={addCase(e,t){let n=typeof e==`string`?e:e.type;if(!n)throw Error(Oo(12));if(n in o.sliceCaseReducersByType)throw Error(Oo(13));return o.sliceCaseReducersByType[n]=t,s},addMatcher(e,t){return o.sliceMatchers.push({matcher:e,reducer:t}),s},exposeAction(e,t){return o.actionCreators[e]=t,s},exposeCaseReducer(e,t){return o.sliceCaseReducersByName[e]=t,s}};a.forEach(r=>{let a=i[r],o={reducerName:r,type:La(n,r),createNotation:typeof e.reducers==`function`};Ua(a)?Ga(o,a,s,t):Ha(o,a,s)});function c(){let[t={},n=[],r=void 0]=typeof e.extraReducers==`function`?ja(e.extraReducers):[e.extraReducers],i={...t,...o.sliceCaseReducersByType};return Na(e.initialState,e=>{for(let t in i)e.addCase(t,i[t]);for(let t of o.sliceMatchers)e.addMatcher(t.matcher,t.reducer);for(let t of n)e.addMatcher(t.matcher,t.reducer);r&&e.addDefaultCase(r)})}let l=e=>e,u=new Map,d=new WeakMap,f;function p(e,t){return f||=c(),f(e,t)}function m(){return f||=c(),f.getInitialState()}function h(t,n=!1){function r(e){let i=e[t];return i===void 0&&n&&(i=Sa(d,r,m)),i}function i(t=l){return Sa(Sa(u,n,()=>new WeakMap),t,()=>{let r={};for(let[i,a]of Object.entries(e.selectors??{}))r[i]=za(a,t,()=>Sa(d,t,m),n);return r})}return{reducerPath:t,getSelectors:i,get selectors(){return i(r)},selectSlice:r}}let g={name:n,reducer:p,actions:o.actionCreators,caseReducers:o.sliceCaseReducersByName,getInitialState:m,...h(r),injectInto(e,{reducerPath:t,...n}={}){let i=t??r;return e.inject({reducerPath:i,reducer:p},n),{...g,...h(i,!0)}}};return g}}function za(e,t,n,r){function i(i,...a){let o=t(i);return o===void 0&&r&&(o=n()),e(o,...a)}return i.unwrapped=e,i}var Ba=Ra();function Va(){function e(e,t){return{_reducerDefinitionType:`asyncThunk`,payloadCreator:e,...t}}return e.withTypes=()=>e,{reducer(e){return Object.assign({[e.name](...t){return e(...t)}}[e.name],{_reducerDefinitionType:`reducer`})},preparedReducer(e,t){return{_reducerDefinitionType:`reducerWithPrepare`,prepare:e,reducer:t}},asyncThunk:e}}function Ha({type:e,reducerName:t,createNotation:n},r,i){let a,o;if(`reducer`in r){if(n&&!Wa(r))throw Error(Oo(17));a=r.reducer,o=r.prepare}else a=r;i.addCase(e,a).exposeCaseReducer(t,a).exposeAction(t,o?ya(e,o):ya(e))}function Ua(e){return e._reducerDefinitionType===`asyncThunk`}function Wa(e){return e._reducerDefinitionType===`reducerWithPrepare`}function Ga({type:e,reducerName:t},n,r,i){if(!i)throw Error(Oo(18));let{payloadCreator:a,fulfilled:o,pending:s,rejected:c,settled:l,options:u}=n,d=i(e,a,u);r.exposeAction(t,d),o&&r.addCase(d.fulfilled,o),s&&r.addCase(d.pending,s),c&&r.addCase(d.rejected,c),l&&r.addMatcher(d.settled,l),r.exposeCaseReducer(t,{fulfilled:o||Ka,pending:s||Ka,rejected:c||Ka,settled:l||Ka})}function Ka(){}var qa=`task`,Ja=`listener`,Ya=`completed`,Xa=`cancelled`,Za=`task-${Xa}`,Qa=`task-${Ya}`,$a=`${Ja}-${Xa}`,eo=`${Ja}-${Ya}`,to=class{constructor(e){this.code=e,this.message=`${qa} ${Xa} (reason: ${e})`}code;name=`TaskAbortError`;message},no=(e,t)=>{if(typeof e!=`function`)throw TypeError(Oo(32))},ro=()=>{},io=(e,t=ro)=>(e.catch(t),e),ao=(e,t)=>(e.addEventListener(`abort`,t,{once:!0}),()=>e.removeEventListener(`abort`,t)),oo=e=>{if(e.aborted)throw new to(e.reason)};function so(e,t){let n=ro;return new Promise((r,i)=>{let a=()=>i(new to(e.reason));if(e.aborted){a();return}n=ao(e,a),t.finally(()=>n()).then(r,i)}).finally(()=>{n=ro})}var co=async(e,t)=>{try{return await Promise.resolve(),{status:`ok`,value:await e()}}catch(e){return{status:e instanceof to?`cancelled`:`rejected`,error:e}}finally{t?.()}},lo=e=>t=>io(so(e,t).then(t=>(oo(e),t))),uo=e=>{let t=lo(e);return e=>t(new Promise(t=>setTimeout(t,e)))},{assign:fo}=Object,po={},mo=`listenerMiddleware`,ho=(e,t)=>{let n=t=>ao(e,()=>t.abort(e.reason));return(r,i)=>{no(r,`taskExecutor`);let a=new AbortController;n(a);let o=co(async()=>{oo(e),oo(a.signal);let t=await r({pause:lo(a.signal),delay:uo(a.signal),signal:a.signal});return oo(a.signal),t},()=>a.abort(Qa));return i?.autoJoin&&t.push(o.catch(ro)),{result:lo(e)(o),cancel(){a.abort(Za)}}}},go=(e,t)=>{let n=async(n,r)=>{oo(t);let i=()=>{},a=[new Promise((t,r)=>{let a=e({predicate:n,effect:(e,n)=>{n.unsubscribe(),t([e,n.getState(),n.getOriginalState()])}});i=()=>{a(),r()}})];r!=null&&a.push(new Promise(e=>setTimeout(e,r,null)));try{let e=await so(t,Promise.race(a));return oo(t),e}finally{i()}};return((e,t)=>io(n(e,t)))},_o=e=>{let{type:t,actionCreator:n,matcher:r,predicate:i,effect:a}=e;if(t)i=ya(t).match;else if(n)t=n.type,i=n.match;else if(r)i=r;else if(!i)throw Error(Oo(21));return no(a,`options.listener`),{predicate:i,type:t,effect:a}},vo=fo(e=>{let{type:t,predicate:n,effect:r}=_o(e);return{id:Fa(),effect:r,type:t,predicate:n,pending:new Set,unsubscribe:()=>{throw Error(Oo(22))}}},{withTypes:()=>vo}),yo=(e,t)=>{let{type:n,effect:r,predicate:i}=_o(t);return Array.from(e.values()).find(e=>(typeof n==`string`?e.type===n:e.predicate===i)&&e.effect===r)},bo=e=>{e.pending.forEach(e=>{e.abort($a)})},xo=(e,t)=>()=>{for(let e of t.keys())bo(e);e.clear()},So=(e,t,n)=>{try{e(t,n)}catch(e){setTimeout(()=>{throw e},0)}},Co=fo(ya(`${mo}/add`),{withTypes:()=>Co}),wo=ya(`${mo}/removeAll`),To=fo(ya(`${mo}/remove`),{withTypes:()=>To}),Eo=(...e)=>{console.error(`${mo}/error`,...e)},Do=(e={})=>{let t=new Map,n=new Map,r=e=>{let t=n.get(e)??0;n.set(e,t+1)},i=e=>{let t=n.get(e)??1;t===1?n.delete(e):n.set(e,t-1)},{extra:a,onError:o=Eo}=e;no(o,`onError`);let s=e=>(e.unsubscribe=()=>t.delete(e.id),t.set(e.id,e),t=>{e.unsubscribe(),t?.cancelActive&&bo(e)}),c=(e=>{let n=yo(t,e)??vo(e);return s(n)});fo(c,{withTypes:()=>c});let l=e=>{let n=yo(t,e);return n&&(n.unsubscribe(),e.cancelActive&&bo(n)),!!n};fo(l,{withTypes:()=>l});let u=async(e,n,s,l)=>{let u=new AbortController,d=go(c,u.signal),f=[];try{e.pending.add(u),r(e),await Promise.resolve(e.effect(n,fo({},s,{getOriginalState:l,condition:(e,t)=>d(e,t).then(Boolean),take:d,delay:uo(u.signal),pause:lo(u.signal),extra:a,signal:u.signal,fork:ho(u.signal,f),unsubscribe:e.unsubscribe,subscribe:()=>{t.set(e.id,e)},cancelActiveListeners:()=>{e.pending.forEach((e,t,n)=>{e!==u&&(e.abort($a),n.delete(e))})},cancel:()=>{u.abort($a),e.pending.delete(u)},throwIfCancelled:()=>{oo(u.signal)}})))}catch(e){e instanceof to||So(o,e,{raisedBy:`effect`})}finally{await Promise.all(f),u.abort(eo),i(e),e.pending.delete(u)}},d=xo(t,n);return{middleware:e=>n=>r=>{if(!Kr(r))return n(r);if(Co.match(r))return c(r.payload);if(wo.match(r)){d();return}if(To.match(r))return l(r.payload);let i=e.getState(),a=()=>{if(i===po)throw Error(Oo(23));return i},s;try{if(s=n(r),t.size>0){let n=e.getState(),s=Array.from(t.values());for(let t of s){let s=!1;try{s=t.predicate(r,n,i)}catch(e){s=!1,So(o,e,{raisedBy:`predicate`})}s&&u(t,r,e,a)}}}finally{i=po}return s},startListening:c,stopListening:l,clearListeners:d}};function Oo(e){return`Minified Redux Toolkit error #${e}; visit https://redux-toolkit.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var ko=Ba({name:`chartLayout`,initialState:{layoutType:`horizontal`,width:0,height:0,margin:{top:5,right:5,bottom:5,left:5},scale:1},reducers:{setLayout(e,t){e.layoutType=t.payload},setChartSize(e,t){e.width=t.payload.width,e.height=t.payload.height},setMargin(e,t){e.margin.top=t.payload.top??0,e.margin.right=t.payload.right??0,e.margin.bottom=t.payload.bottom??0,e.margin.left=t.payload.left??0},setScale(e,t){e.scale=t.payload}}}),Ao=ko.actions,jo=Ao.setMargin,Mo=Ao.setLayout,No=Ao.setChartSize,Po=Ao.setScale,Fo=ko.reducer;function Io(e,t,n){return Array.isArray(e)&&e&&t+n!==0?e.slice(t,n+1):e}function U(e){return Number.isFinite(e)}function Lo(e){return typeof e==`number`&&e>0&&Number.isFinite(e)}function Ro(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function zo(e){for(var t=1;t{if(t&&n){var r=n.width,i=n.height,a=t.align,o=t.verticalAlign,s=t.layout,c=t.position,l=t.offset,u=l===void 0?0:l;if(c!=null){if(Ee(c)){if(c===`top`&&I(e.top))return zo(zo({},e),{},{top:e.top+(i||0)+u});if(c===`bottom`&&I(e.bottom))return zo(zo({},e),{},{bottom:e.bottom+(i||0)+u});if(c===`left`&&I(e.left))return zo(zo({},e),{},{left:e.left+(r||0)+u});if(c===`right`&&I(e.right))return zo(zo({},e),{},{right:e.right+(r||0)+u})}return e}if((s===`vertical`||s===`horizontal`&&o===`middle`)&&a!==`center`&&I(e[a]))return zo(zo({},e),{},{[a]:e[a]+(r||0)});if((s===`horizontal`||s===`vertical`&&a===`center`)&&o!==`middle`&&I(e[o]))return zo(zo({},e),{},{[o]:e[o]+(i||0)})}return e},Wo=(e,t)=>e===`horizontal`&&t===`xAxis`||e===`vertical`&&t===`yAxis`||e===`centric`&&t===`angleAxis`||e===`radial`&&t===`radiusAxis`,Go=(e,t,n,r)=>{if(r)return e.map(e=>e.coordinate);var i,a,o=e.map(e=>(e.coordinate===t&&(i=!0),e.coordinate===n&&(a=!0),e.coordinate));return i||o.push(t),a||o.push(n),o},Ko=(e,t,n)=>{if(!e)return null;var r=e.duplicateDomain,i=e.type,a=e.range,o=e.scale,s=e.realScaleType,c=e.isCategorical,l=e.categoricalDomain,u=e.tickCount,d=e.ticks,f=e.niceTicks,p=e.axisType;if(!o)return null;var m=s===`scaleBand`&&o.bandwidth?o.bandwidth()/2:2,h=(t||n)&&i===`category`&&o.bandwidth?o.bandwidth()/m:0;return h=p===`angleAxis`&&a&&a.length>=2?F(a[0]-a[1])*2*h:h,t&&(d||f)?(d||f||[]).map((e,t)=>{var n=r?r.indexOf(e):e,i=o.map(n);return U(i)?{coordinate:i+h,value:e,offset:h,index:t}:null}).filter(ge):c&&l?l.map((e,t)=>{var n=o.map(e);return U(n)?{coordinate:n+h,value:e,index:t,offset:h}:null}).filter(ge):o.ticks&&!n&&u!=null?o.ticks(u).map((e,t)=>{var n=o.map(e);return U(n)?{coordinate:n+h,value:e,index:t,offset:h}:null}).filter(ge):o.domain().map((e,t)=>{var n=o.map(e);return U(n)?{coordinate:n+h,value:r?r[e]:e,index:t,offset:h}:null}).filter(ge)},qo={sign:e=>{var t=e.length;if(!(t<=0)){var n=e[0]?.length;if(!(n==null||n<=0))for(var r=0;r=0?(s[0]=i,i+=u,s[1]=i):(s[0]=a,a+=u,s[1]=a)}}}},expand:Ct,none:vt,silhouette:wt,wiggle:Tt,positive:e=>{var t=e.length;if(!(t<=0)){var n=e[0]?.length;if(!(n==null||n<=0))for(var r=0;r=0?(o[0]=i,i+=s,o[1]=i):(o[0]=0,o[1]=0)}}}}},Jo=(e,t,n)=>{var r=qo[n]??vt,i=St().keys(t).value((e,t)=>Number(W(e,t,0))).order(yt).offset(r)(e);return i.forEach((n,r)=>{n.forEach((n,i)=>{var a=W(e[i],t[r],0);Array.isArray(a)&&a.length===2&&I(a[0])&&I(a[1])&&(n[0]=a[0],n[1]=a[1])})}),i};function Yo(e){return e==null?void 0:String(e)}function Xo(e){var t=e.axis,n=e.ticks,r=e.bandSize,i=e.entry,a=e.index,o=e.dataKey;if(t.type===`category`){if(!t.allowDuplicatedCategory&&t.dataKey&&!me(i[t.dataKey])){var s=pe(n,`value`,i[t.dataKey]);if(s)return s.coordinate+r/2}return n!=null&&n[a]?n[a].coordinate+r/2:null}var c=W(i,me(o)?t.dataKey:o),l=t.scale.map(c);return I(l)?l:null}var Zo=e=>{var t=e.flat(2).filter(I);return[Math.min(...t),Math.max(...t)]},Qo=e=>[e[0]===1/0?0:e[0],e[1]===-1/0?0:e[1]],$o=(e,t,n)=>{if(e!=null&&Object.keys(e).length!==0)return Qo(Object.keys(e).reduce((r,i)=>{var a=e[i];if(!a)return r;var o=a.stackedData.reduce((e,r)=>{var i=Zo(Io(r,t,n));return!U(i[0])||!U(i[1])?e:[Math.min(e[0],i[0]),Math.max(e[1],i[1])]},[1/0,-1/0]);return[Math.min(o[0],r[0]),Math.max(o[1],r[1])]},[1/0,-1/0]))},es=/^dataMin[\s]*-[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,ts=/^dataMax[\s]*\+[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,ns=(e,t,n)=>{if(e&&e.scale&&e.scale.bandwidth){var r=e.scale.bandwidth();if(!n||r>0)return r}if(e&&t&&t.length>=2){for(var i=Cr(t,e=>e.coordinate),a=[],o=0,s=1,c=i.length;su&&(d=Math.min(f,d));return d===1/0?0:d}return n?void 0:0};function rs(e){var t=e.tooltipEntrySettings,n=e.dataKey,r=e.payload,i=e.value,a=e.name;return zo(zo({},t),{},{dataKey:n,payload:r,value:i,name:a})}function is(e,t){if(e!=null)return String(e);if(typeof t==`string`)return t}var as=(e,t)=>{if(t===`horizontal`)return e.relativeX;if(t===`vertical`)return e.relativeY},os=(e,t)=>t===`centric`?e.angle:e.radius,ss=e=>e.layout.width,cs=e=>e.layout.height,ls=e=>e.layout.scale,us=e=>e.layout.margin,ds=B(e=>e.cartesianAxis.xAxis,e=>Object.values(e)),fs=B(e=>e.cartesianAxis.yAxis,e=>Object.values(e)),ps=`data-recharts-item-index`,ms=`data-recharts-item-id`;function hs(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function gs(e){for(var t=1;te.brush.height;function xs(e){return fs(e).reduce((e,t)=>t.orientation===`left`&&!t.mirror&&!t.hide?e+(typeof t.width==`number`?t.width:60):e,0)}function Ss(e){return fs(e).reduce((e,t)=>t.orientation===`right`&&!t.mirror&&!t.hide?e+(typeof t.width==`number`?t.width:60):e,0)}function Cs(e){return ds(e).reduce((e,t)=>t.orientation===`top`&&!t.mirror&&!t.hide?e+(typeof t.height==`number`?t.height:30):e,0)}function ws(e){return ds(e).reduce((e,t)=>t.orientation===`bottom`&&!t.mirror&&!t.hide?e+(typeof t.height==`number`?t.height:30):e,0)}var Ts=B([ss,cs,us,bs,xs,Ss,Cs,ws,wr,Tr],(e,t,n,r,i,a,o,s,c,l)=>{var u={left:(n.left||0)+i,right:(n.right||0)+a},d=gs(gs({},{top:(n.top||0)+o,bottom:(n.bottom||0)+s}),u),f=d.bottom;d.bottom+=r,d=Uo(d,c,l);var p=e-d.left-d.right,m=t-d.top-d.bottom;return gs(gs({brushBottom:f},d),{},{width:Math.max(p,0),height:Math.max(m,0)})}),Es=B(Ts,e=>({x:e.left,y:e.top,width:e.width,height:e.height})),Ds=B(ss,cs,(e,t)=>({x:0,y:0,width:e,height:t})),Os=(0,o.createContext)(null),ks=()=>(0,o.useContext)(Os)!=null,As=e=>e.brush,js=B([As,Ts,us],(e,t,n)=>({height:e.height,x:I(e.x)?e.x:t.left,y:I(e.y)?e.y:t.top+t.height+t.brushBottom-(n?.bottom||0),width:I(e.width)?e.width:t.width}));function Ms(e,t,{signal:n,edges:r}={}){let i,a=null,o=r!=null&&r.includes(`leading`),s=r==null||r.includes(`trailing`),c=()=>{a!==null&&(e.apply(i,a),i=void 0,a=null)},l=()=>{s&&c(),p()},u=null,d=()=>{u!=null&&clearTimeout(u),u=setTimeout(()=>{u=null,l()},t)},f=()=>{u!==null&&(clearTimeout(u),u=null)},p=()=>{f(),i=void 0,a=null},m=()=>{c()},h=function(...e){if(n?.aborted)return;i=this,a=e;let t=u==null;d(),o&&t&&c()};return h.schedule=d,h.cancel=p,h.flush=m,n?.addEventListener(`abort`,p,{once:!0}),h}function Ns(e,t=0,n={}){typeof n!=`object`&&(n={});let{leading:r=!1,trailing:i=!0,maxWait:a}=n,o=[,,];r&&(o[0]=`leading`),i&&(o[1]=`trailing`);let s,c=null,l=Ms(function(...t){s=e.apply(this,t),c=null},t,{edges:o}),u=function(...t){return a!=null&&(c===null&&(c=Date.now()),Date.now()-c>=a)?((r||i)&&(s=e.apply(this,t)),c=Date.now(),l.cancel(),l.schedule(),s):(l.apply(this,t),s)};return u.cancel=l.cancel,u.flush=()=>(l.flush(),s),u}function Ps(e,t=0,n={}){let{leading:r=!0,trailing:i=!0}=n;return Ns(e,t,{leading:r,maxWait:t,trailing:i})}var Fs=function(e,t){var n=[...arguments].slice(2);if(typeof console<`u`&&console.warn&&(t===void 0&&console.warn(`LogUtils requires an error message argument`),!e)){if(t===void 0)console.warn(`Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.`);else{var r=0;console.warn(t.replace(/%s/g,()=>n[r++]))}}},Is={width:`100%`,height:`100%`,debounce:0,minWidth:0,initialDimension:{width:-1,height:-1}},Ls=(e,t,n)=>{var r=n.width,i=r===void 0?Is.width:r,a=n.height,o=a===void 0?Is.height:a,s=n.aspect,c=n.maxHeight,l=oe(i)?e:Number(i),u=oe(o)?t:Number(o);return s&&s>0&&(l?u=l/s:u&&(l=u*s),c&&u!=null&&u>c&&(u=c)),{calculatedWidth:l,calculatedHeight:u}},Rs={width:0,height:0,overflow:`visible`},zs={width:0,overflowX:`visible`},Bs={height:0,overflowY:`visible`},Vs={},Hs=e=>{var t=e.width,n=e.height,r=oe(t),i=oe(n);return r&&i?Rs:r?zs:i?Bs:Vs};function Us(e){var t=e.width,n=e.height,r=e.aspect,i=t,a=n;return i===void 0&&a===void 0?(i=Is.width,a=Is.height):i===void 0?i=r&&r>0?void 0:Is.width:a===void 0&&(a=r&&r>0?void 0:Is.height),{width:i,height:a}}var Ws=[`aspect`,`initialDimension`,`width`,`height`,`minWidth`,`minHeight`,`maxHeight`,`children`,`debounce`,`id`,`className`,`onResize`,`style`];function Gs(){return Gs=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n({width:n,height:r}),[n,r]);return oc(i)?o.createElement(ac.Provider,{value:i},t):null}var cc=()=>(0,o.useContext)(ac),lc=(0,o.forwardRef)((e,t)=>{var n=e.aspect,i=e.initialDimension,a=i===void 0?Is.initialDimension:i,s=e.width,c=e.height,l=e.minWidth,u=l===void 0?Is.minWidth:l,d=e.minHeight,f=e.maxHeight,p=e.children,m=e.debounce,h=m===void 0?Is.debounce:m,g=e.id,_=e.className,v=e.onResize,y=e.style,b=y===void 0?{}:y,x=rc(e,Ws),S=(0,o.useRef)(null),C=(0,o.useRef)();C.current=v,(0,o.useImperativeHandle)(t,()=>S.current);var w=Zs((0,o.useState)({containerWidth:a.width,containerHeight:a.height}),2),T=w[0],E=w[1],D=(0,o.useCallback)((e,t)=>{E(n=>{var r=Math.round(e),i=Math.round(t);return n.containerWidth===r&&n.containerHeight===i?n:{containerWidth:r,containerHeight:i}})},[]);(0,o.useEffect)(()=>{if(S.current==null||typeof ResizeObserver>`u`)return _e;var e=e=>{var t,n=e[0];if(n!=null){var r=n.contentRect,i=r.width,a=r.height;D(i,a),(t=C.current)==null||t.call(C,i,a)}};h>0&&(e=Ps(e,h,{trailing:!0,leading:!1}));var t=new ResizeObserver(e),n=S.current.getBoundingClientRect(),r=n.width,i=n.height;return D(r,i),t.observe(S.current),()=>{t.disconnect()}},[D,h]);var O=T.containerWidth,k=T.containerHeight;Fs(!n||n>0,`The aspect(%s) must be greater than zero.`,n);var A=Ls(O,k,{width:s,height:c,aspect:n,maxHeight:f}),j=A.calculatedWidth,M=A.calculatedHeight;return Fs(O<0||k<0||j!=null&&j>0||M!=null&&M>0,`The width(%s) and height(%s) of chart should be greater than 0, - please check the style of container, or the props width(%s) and height(%s), - or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the - height and width.`,j,M,s,c,u,d,n),o.createElement(`div`,Gs({id:g?`${g}`:void 0,className:r(`recharts-responsive-container`,_),style:qs(qs({},b),{},{width:s,height:c,minWidth:u,minHeight:d,maxHeight:f}),ref:S},x),o.createElement(`div`,{style:Hs({width:s,height:c})},o.createElement(sc,{width:j,height:M},p)))}),uc=(0,o.forwardRef)((e,t)=>{var n=cc();if(Lo(n.width)&&Lo(n.height))return e.children;var r=Us({width:e.width,height:e.height,aspect:e.aspect}),i=r.width,a=r.height,s=Ls(void 0,void 0,{width:i,height:a,aspect:e.aspect,maxHeight:e.maxHeight}),c=s.calculatedWidth,l=s.calculatedHeight;return I(c)&&I(l)?o.createElement(sc,{width:c,height:l},e.children):o.createElement(lc,Gs({},e,{width:i,height:a,ref:t}))}),dc=()=>{var e=ks(),t=z(Es),n=z(js),r=z(As)?.padding;return!e||!n||!r?t:{width:n.width-r.left-r.right,height:n.height-r.top-r.bottom,x:r.left,y:r.top}},fc={top:0,bottom:0,left:0,right:0,width:0,height:0,brushBottom:0},pc=()=>z(Ts)??fc,mc=()=>z(ss),hc=()=>z(cs),G=e=>e.layout.layoutType,gc=()=>z(G),_c=()=>{var e=gc();if(e===`horizontal`||e===`vertical`)return e},vc=e=>{var t=e.layout.layoutType;if(t===`centric`||t===`radial`)return t},yc=()=>z(vc),bc=()=>gc()!==void 0,xc=e=>{var t=R(),n=ks(),r=e.width,i=e.height,a=cc(),s=r,c=i;return a&&(s=a.width>0?a.width:r,c=a.height>0?a.height:i),(0,o.useEffect)(()=>{!n&&Lo(s)&&Lo(c)&&t(No({width:s,height:c}))},[t,n,s,c]),null},Sc=Ba({name:`legend`,initialState:{settings:{layout:`horizontal`,align:`center`,verticalAlign:`bottom`,itemSorter:`value`,position:void 0,offset:0},size:{width:0,height:0},payload:[]},reducers:{setLegendSize(e,t){e.size.width=t.payload.width,e.size.height=t.payload.height},setLegendSettings(e,t){e.settings.align=t.payload.align,e.settings.layout=t.payload.layout,e.settings.verticalAlign=t.payload.verticalAlign,e.settings.itemSorter=t.payload.itemSorter,e.settings.position=t.payload.position,e.settings.offset=t.payload.offset},addLegendPayload:{reducer(e,t){e.payload.push(V(t.payload))},prepare:H()},replaceLegendPayload:{reducer(e,t){var n=t.payload,r=n.prev,i=n.next,a=fa(e).payload.indexOf(V(r));a>-1&&(e.payload[a]=V(i))},prepare:H()},removeLegendPayload:{reducer(e,t){var n=fa(e).payload.indexOf(V(t.payload));n>-1&&e.payload.splice(n,1)},prepare:H()}}}),Cc=Sc.actions;Cc.setLegendSize,Cc.setLegendSettings;var wc=Cc.addLegendPayload,Tc=Cc.replaceLegendPayload,Ec=Cc.removeLegendPayload,Dc=Sc.reducer,Oc=i((t=>{var n=e();n.useSyncExternalStore,n.useRef,n.useEffect,n.useMemo,n.useDebugValue}));i(((e,t)=>{t.exports=Oc()}))();function kc(e){e()}function Ac(){let e=null,t=null;return{clear(){e=null,t=null},notify(){kc(()=>{let t=e;for(;t;)t.callback(),t=t.next})},get(){let t=[],n=e;for(;n;)t.push(n),n=n.next;return t},subscribe(n){let r=!0,i=t={callback:n,next:null,prev:t};return i.prev?i.prev.next=i:e=i,function(){r&&e!==null&&(r=!1,i.next?i.next.prev=i.prev:t=i.prev,i.prev?i.prev.next=i.next:e=i.next)}}}}var jc={notify(){},get:()=>[]};function Mc(e,t){let n,r=jc,i=0,a=!1;function o(e){u();let t=r.subscribe(e),n=!1;return()=>{n||(n=!0,t(),d())}}function s(){r.notify()}function c(){m.onStateChange&&m.onStateChange()}function l(){return a}function u(){i++,n||(n=t?t.addNestedSub(c):e.subscribe(c),r=Ac())}function d(){i--,n&&i===0&&(n(),n=void 0,r.clear(),r=jc)}function f(){a||(a=!0,u())}function p(){a&&(a=!1,d())}let m={addNestedSub:o,notifyNestedSubs:s,handleChangeWrapper:c,isSubscribed:l,trySubscribe:f,tryUnsubscribe:p,getListeners:()=>r};return m}var Nc=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0,Pc=typeof navigator<`u`&&navigator.product===`ReactNative`,Fc=Nc||Pc?o.useLayoutEffect:o.useEffect;function Ic(e,t){return e===t?e!==0||t!==0||1/e==1/t:e!==e&&t!==t}function Lc(e,t){if(Ic(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r=0;r{let e=Mc(i);return{store:i,subscription:e,getServerState:r?()=>r:void 0}},[i,r]),s=o.useMemo(()=>i.getState(),[i]);Fc(()=>{let{subscription:e}=a;return e.onStateChange=e.notifyNestedSubs,e.trySubscribe(),s!==i.getState()&&e.notifyNestedSubs(),()=>{e.tryUnsubscribe(),e.onStateChange=void 0}},[a,s]);let c=n||Vc;return o.createElement(c.Provider,{value:a},t)}var Uc=Hc,Wc=new Set([`axisLine`,`tickLine`,`activeBar`,`activeDot`,`activeLabel`,`activeShape`,`allowEscapeViewBox`,`background`,`cursor`,`dot`,`label`,`line`,`margin`,`padding`,`position`,`shape`,`style`,`tick`,`wrapperStyle`,`radius`,`throttledEvents`]);function Gc(e,t){return e==null&&t==null?!0:typeof e==`number`&&typeof t==`number`?e===t||e!==e&&t!==t:e===t}function Kc(e,t){for(var n of new Set([...Object.keys(e),...Object.keys(t)]))if(Wc.has(n)){if(e[n]==null&&t[n]==null)continue;if(!Lc(e[n],t[n]))return!1}else if(!Gc(e[n],t[n]))return!1;return!0}function qc(){return qc=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n{var t=e.separator,n=t===void 0?ol.separator:t,i=e.contentStyle,a=e.itemStyle,s=e.labelStyle,c=s===void 0?ol.labelStyle:s,l=e.payload,u=e.formatter,d=e.itemSorter,f=e.wrapperClassName,p=e.labelClassName,m=e.label,h=e.labelFormatter,g=e.accessibilityLayer,_=g===void 0?ol.accessibilityLayer:g,v=()=>{if(l&&l.length){var e={padding:0,margin:0},t=sl(l,d).map((e,t)=>{if(!e||e.type===`none`)return null;var r=e.formatter||u||al,i=e.value,s=e.name,c=i,d=s;if(r){var f=r(i,s,e,t,l);if(Array.isArray(f)){var p=$c(f,2);c=p[0],d=p[1]}else if(f!=null)c=f;else return null}var m=Yc(Yc({},ol.itemStyle),{},{color:e.color||ol.itemStyle.color},a);return o.createElement(`li`,{className:`recharts-tooltip-item`,key:`tooltip-item-${t}`,style:m},se(d)?o.createElement(`span`,{className:`recharts-tooltip-item-name`},d):null,se(d)?o.createElement(`span`,{className:`recharts-tooltip-item-separator`},n):null,o.createElement(`span`,{className:`recharts-tooltip-item-value`},c),o.createElement(`span`,{className:`recharts-tooltip-item-unit`},e.unit||``))});return o.createElement(`ul`,{className:`recharts-tooltip-item-list`,style:e},t)}return null},y=Yc(Yc({},ol.contentStyle),i),b=Yc({margin:0},c),x=!me(m),S=x?m:``,C=r(`recharts-default-tooltip`,f),w=r(`recharts-tooltip-label`,p);x&&h&&l!=null&&(S=h(m,l));var T=_?{role:`status`,"aria-live":`assertive`}:{};return o.createElement(`div`,qc({className:C,style:y},T),o.createElement(`p`,{className:w,style:b},o.isValidElement(S)?S:`${S}`),v())},ll=`recharts-tooltip-wrapper`,ul={visibility:`hidden`};function dl(e){var t=e.coordinate,n=e.translateX,i=e.translateY;return r(ll,{[`${ll}-right`]:I(n)&&t&&I(t.x)&&n>=t.x,[`${ll}-left`]:I(n)&&t&&I(t.x)&&n=t.y,[`${ll}-top`]:I(i)&&t&&I(t.y)&&i0?i:0),d=n[r]+i;if(t[r])return o[r]?u:d;var f=c[r];return f==null?0:o[r]?Math.max(uf+l?Math.max(u,f):Math.max(d,f)}function pl(e){var t=e.translateX,n=e.translateY;return{transform:e.useTranslate3d?`translate3d(${t}px, ${n}px, 0)`:`translate(${t}px, ${n}px)`}}function ml(e){var t=e.allowEscapeViewBox,n=e.coordinate,r=e.offsetTop,i=e.offsetLeft,a=e.position,o=e.reverseDirection,s=e.tooltipBox,c=e.useTranslate3d,l=e.viewBox,u,d,f;return s&&s.height>0&&s.width>0&&n?(d=fl({allowEscapeViewBox:t,coordinate:n,key:`x`,offset:i,position:a,reverseDirection:o,tooltipDimension:s.width,viewBox:l,viewBoxDimension:l.width}),f=fl({allowEscapeViewBox:t,coordinate:n,key:`y`,offset:r,position:a,reverseDirection:o,tooltipDimension:s.height,viewBox:l,viewBoxDimension:l.height}),u=pl({translateX:d,translateY:f,useTranslate3d:c})):u=ul,{cssProperties:u,cssClasses:dl({translateX:d,translateY:f,coordinate:n})}}var hl={devToolsEnabled:!0,isSsr:!(typeof window<`u`&&window.document&&window.document.createElement&&window.setTimeout)};function gl(e,t){return xl(e)||bl(e,t)||vl(e,t)||_l()}function _l(){throw TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function vl(e,t){if(e){if(typeof e==`string`)return yl(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?yl(e,t):void 0}}function yl(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);nhl.isSsr||!window.matchMedia?!1:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches),2),t=e[0],n=e[1];return(0,o.useEffect)(()=>{if(window.matchMedia){var e=window.matchMedia(`(prefers-reduced-motion: reduce)`),t=()=>{n(e.matches)};return e.addEventListener(`change`,t),()=>{e.removeEventListener(`change`,t)}}},[]),t}function Cl(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function wl(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n({dismissed:!1,dismissedAtCoordinate:{x:0,y:0}})),2),r=n[0],i=n[1];o.useEffect(()=>{var t=t=>{t.key===`Escape`&&i({dismissed:!0,dismissedAtCoordinate:{x:e.coordinate?.x??0,y:e.coordinate?.y??0}})};return document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`keydown`,t)}},[e.coordinate?.x,e.coordinate?.y]),r.dismissed&&((e.coordinate?.x??0)!==r.dismissedAtCoordinate.x||(e.coordinate?.y??0)!==r.dismissedAtCoordinate.y)&&i(wl(wl({},r),{},{dismissed:!1}));var a=ml({allowEscapeViewBox:e.allowEscapeViewBox,coordinate:e.coordinate,offsetLeft:typeof e.offset==`number`?e.offset:e.offset.x,offsetTop:typeof e.offset==`number`?e.offset:e.offset.y,position:e.position,reverseDirection:e.reverseDirection,tooltipBox:e.lastBoundingBox,useTranslate3d:e.useTranslate3d,viewBox:e.viewBox}),s=a.cssClasses,c=a.cssProperties,l=wl(wl({},e.hasPortalFromProps?{}:wl(wl({transition:Pl({prefersReducedMotion:t,isAnimationActive:e.isAnimationActive,active:e.active,animationDuration:e.animationDuration,animationEasing:e.animationEasing})},c),{},{pointerEvents:`none`,position:`absolute`,top:0,left:0})),{},{visibility:!r.dismissed&&e.active&&e.hasPayload?`visible`:`hidden`},e.wrapperStyle);return o.createElement(`div`,{xmlns:`http://www.w3.org/1999/xhtml`,tabIndex:-1,className:s,style:l,ref:e.innerRef},e.children)}var Il=o.memo(Fl),Ll=()=>z(e=>e.rootProps.accessibilityLayer)??!0;function Rl(){return Rl=Object.assign?Object.assign.bind():function(e){for(var t=1;tU(e.x)&&U(e.y),Kl=e=>e.base!=null&&Gl(e.base)&&Gl(e),ql=e=>e.x,Jl=e=>e.y,Yl=(e,t)=>{if(typeof e==`function`)return e;var n=`curve${he(e)}`;if((n===`curveMonotone`||n===`curveBump`)&&t){var r=Wl[`${n}${t===`vertical`?`Y`:`X`}`];if(r)return r}return Wl[n]||Re},Xl={connectNulls:!1,type:`linear`},Zl=e=>{var t=e.type,n=t===void 0?Xl.type:t,r=e.points,i=r===void 0?[]:r,a=e.baseLine,o=e.layout,s=e.connectNulls,c=s===void 0?Xl.connectNulls:s,l=Yl(n,o),u=c?i.filter(Gl):i;if(Array.isArray(a)){var d,f=i.map((e,t)=>Bl(Bl({},e),{},{base:a[t]}));return d=o===`vertical`?He().y(Jl).x1(ql).x0(e=>e.base.x):He().x(ql).y1(Jl).y0(e=>e.base.y),d.defined(Kl).curve(l)(c?f.filter(Kl):f)}return(o===`vertical`&&I(a)?He().y(Jl).x1(ql).x0(a):I(a)?He().x(ql).y1(Jl).y0(a):Ve().x(ql).y(Jl)).defined(Gl).curve(l)(u)},Ql=e=>{var t=e.className,n=e.points,i=e.path,a=e.pathRef,s=gc();if((!n||!n.length)&&!i)return null;var c={type:e.type,points:e.points,baseLine:e.baseLine,layout:e.layout||s,connectNulls:e.connectNulls},l=n&&n.length?Zl(c):i;return o.createElement(`path`,Rl({},p(e),Dt(e),{className:r(`recharts-curve`,t),d:l===null?void 0:l,ref:a}))},$l=[`x`,`y`,`top`,`left`,`width`,`height`,`className`];function eu(){return eu=Object.assign?Object.assign.bind():function(e){for(var t=1;t`M${e},${i}v${r}M${a},${t}h${n}`,lu=e=>{var t=e.x,n=t===void 0?0:t,i=e.y,a=i===void 0?0:i,s=e.top,c=s===void 0?0:s,l=e.left,u=l===void 0?0:l,d=e.width,f=d===void 0?0:d,p=e.height,m=p===void 0?0:p,g=e.className,_=ou(e,$l),v=nu({x:n,y:a,top:c,left:u,width:f,height:m},_);return!I(n)||!I(a)||!I(f)||!I(m)||!I(c)||!I(u)?null:o.createElement(`path`,eu({},h(v),{className:r(`recharts-cross`,g),d:cu(n,a,f,m,c,u)}))};function uu(e,t,n,r){var i=r/2;return{stroke:`none`,fill:`#ccc`,x:e===`horizontal`?t.x-i:n.left+.5,y:e===`horizontal`?n.top+.5:t.y-i,width:e===`horizontal`?r:n.width-1,height:e===`horizontal`?n.height-1:r}}var du=(e,t)=>[0,3*e,3*t-6*e,3*e-3*t+1],fu=(e,t)=>e.map((e,n)=>e*t**n).reduce((e,t)=>e+t),pu=(e,t)=>n=>fu(du(e,t),n),mu=(e,t)=>n=>fu([...du(e,t).map((e,t)=>e*t).slice(1),0],n),hu=e=>{var t,n=e.split(`(`);if(n.length!==2||n[0]!==`cubic-bezier`)return null;var r=(t=n[1])==null||(t=t.split(`)`)[0])==null?void 0:t.split(`,`);if(r==null||r.length!==4)return null;var i=r.map(e=>parseFloat(e));return[i[0],i[1],i[2],i[3]]},gu=function(){var e=[...arguments];if(e.length===1)switch(e[0]){case`linear`:return[0,0,1,1];case`ease`:return[.25,.1,.25,1];case`ease-in`:return[.42,0,1,1];case`ease-out`:return[.42,0,.58,1];case`ease-in-out`:return[0,0,.58,1];default:var t=hu(e[0]);if(t)return t}return e.length===4?e:[0,0,1,1]},_u=(e,t,n,r)=>{var i=pu(e,n),a=pu(t,r),o=mu(e,n),s=e=>e>1?1:e<0?0:e,c=e=>{for(var t=e>1?1:e,n=t,r=0;r<8;++r){var c=i(n)-t,l=o(n);if(Math.abs(c-t)<1e-4||l<1e-4)return a(n);n=s(n-c/l)}return a(n)};return c.isStepper=!1,c},vu=function(){return _u(...gu(...arguments))},yu=function(){for(var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=e.stiff,n=t===void 0?100:t,r=e.damping,i=r===void 0?8:r,a=e.dt,o=a===void 0?16.67:a,s=1,c=[0],l=0,u=0,d=1e4,f=0;f{if(e<=0)return 0;if(e>=1)return s;var t=e*h,n=Math.floor(t),r=t-n;return(c[n]??0)+((c[n+1]??0)-(c[n]??0))*r}},bu=e=>{if(typeof e==`string`)switch(e){case`ease`:case`ease-in-out`:case`ease-out`:case`ease-in`:case`linear`:return vu(e);case`spring`:return yu();default:if(e.split(`(`)[0]===`cubic-bezier`)return vu(e)}return typeof e==`function`?e:null},xu=(0,o.createContext)((e,t,n)=>{var r,i=a=>{var o=t.tick(a);if(t.getState()===`active`){if(n(t.getInterpolated()),t.getProgress()===1){t.complete(),r=void 0;return}r=e.setTimeout(i,o);return}r=e.setTimeout(i,o)};return r=e.setTimeout(i,0),()=>r?.()});xu.Provider;function Su(e){var t=(0,o.useContext)(xu);return(0,o.useMemo)(()=>e??t,[e,t])}function Cu(e,t,n){return(t=wu(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function wu(e){var t=Tu(e,`string`);return typeof t==`symbol`?t:t+``}function Tu(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var Eu=`init`,Du=`pending`,Ou=`active`,ku=`completed`;function Au(e){return Math.max(0,e)}var ju=class{getAnimationStartedTime(){return this.animationStartedTime}getBeginStartedTime(){return this.beginStartedTime}constructor(e){var t;Cu(this,`state`,Eu),this.animationId=e.animationId,this.onAnimationEnd=e.onAnimationEnd,this.animationDuration=Au(e.animationDuration),this.animationBegin=Au(e.animationBegin),this.progress=0,this.from=e.from,this.to=e.to,this.easing=e.easing,(t=e.onAnimationStart)==null||t.call(e)}getState(){return this.state}getEasing(){return this.easing}getAnimationDuration(){return this.animationDuration}tick(e){if(this.getState()===Eu)return this.state=Du,this.beginStartedTime=e,this.animationBegin;if(this.getState()===Du){if(this.beginStartedTime==null)throw Error();var t=e-this.beginStartedTime;return t>=this.animationBegin?(this.state=Ou,this.animationStartedTime=e,this.nextAnimationUpdate(0)):Au(this.animationBegin-t)}if(this.getState()===Ou){if(this.animationStartedTime==null)throw Error();var n=e-this.animationStartedTime;return this.setProgress(n/this.animationDuration),this.nextAnimationUpdate(n)}return 0}setProgress(e){this.progress=Math.min(1,Math.max(0,e))}getProgress(){return this.progress}complete(){if(this.progress=1,this.state===`active`){var e;(e=this.onAnimationEnd)==null||e.call(this)}this.state=ku}getFrom(){return this.from}getTo(){return this.to}getAnimationId(){return this.animationId}getAnimationBegin(){return this.animationBegin}},Mu=class extends ju{nextAnimationUpdate(){return 0}getInterpolated(){return this.easing(fe(this.getFrom(),this.getTo(),this.getProgress()))}},Nu=class{setTimeout(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=performance.now(),r=null,i=a=>{a-n>=t?e(a):r=requestAnimationFrame(i)};return r=requestAnimationFrame(i),()=>{r!=null&&cancelAnimationFrame(r)}}};function Pu(e,t){return zu(e)||Ru(e,t)||Iu(e,t)||Fu()}function Fu(){throw TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Iu(e,t){if(e){if(typeof e==`string`)return Lu(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Lu(e,t):void 0}}function Lu(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n{},onAnimationStart:()=>{}},Vu=0,Hu=1;function Uu(e){var t=Ft(e,Bu),n=t.animationId,r=t.isActive,i=t.canBegin,a=t.duration,s=t.easing,c=t.begin,l=t.onAnimationEnd,u=t.onAnimationStart,d=t.children,f=Sl(),p=r===`auto`?!hl.isSsr&&!f:r,m=Su(t.animationController),h=Pu((0,o.useState)(p?Vu:Hu),2),g=h[0],_=h[1];return(0,o.useEffect)(()=>{p||_(Hu)},[p]),(0,o.useEffect)(()=>{var e=bu(s);return!p||!i||e==null?_e:m(new Nu,new Mu({animationId:n,easing:e,animationDuration:a,animationBegin:c,onAnimationStart:u,onAnimationEnd:l,from:Vu,to:Hu}),_)},[m,n,p,i,a,s,c,u,l]),d(Number(g))}function Wu(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`animation-`,n=(0,o.useRef)(le(t)),r=(0,o.useRef)(e);return r.current!==e&&(n.current=le(t),r.current=e),n.current}var Gu=e=>e.replace(/([A-Z])/g,e=>`-${e.toLowerCase()}`),Ku=(e,t,n)=>e.map(e=>`${Gu(e)} ${t}ms ${n}`).join(`,`),qu=[`radius`],Ju=[`radius`],Yu,Xu,Zu,Qu,$u,ed,td,nd,rd,id;function ad(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function od(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n{var a=ie(n),o=ie(r),s=Math.min(Math.abs(a)/2,Math.abs(o)/2),c=o>=0?1:-1,l=a>=0?1:-1,u=+(o>=0&&a>=0||o<0&&a<0),d;if(s>0&&Array.isArray(i)){for(var f=[0,0,0,0],p=0,m=4;ps?s:h}d=P(Yu||=yd([`M`,`,`,``]),e,t+c*f[0]),f[0]>0&&(d+=P(Xu||=yd([`A `,`,`,`,0,0,`,`,`,`,`,``]),f[0],f[0],u,e+l*f[0],t)),d+=P(Zu||=yd([`L `,`,`,``]),e+n-l*f[1],t),f[1]>0&&(d+=P(Qu||=yd([`A `,`,`,`,0,0,`,`, - `,`,`,``]),f[1],f[1],u,e+n,t+c*f[1])),d+=P($u||=yd([`L `,`,`,``]),e+n,t+r-c*f[2]),f[2]>0&&(d+=P(ed||=yd([`A `,`,`,`,0,0,`,`, - `,`,`,``]),f[2],f[2],u,e+n-l*f[2],t+r)),d+=P(td||=yd([`L `,`,`,``]),e+l*f[3],t+r),f[3]>0&&(d+=P(nd||=yd([`A `,`,`,`,0,0,`,`, - `,`,`,``]),f[3],f[3],u,e,t+r-c*f[3])),d+=`Z`}else if(s>0&&i===+i&&i>0){var g=Math.min(s,i);d=P(rd||=yd(`M .,. - A .,.,0,0,.,.,. - L .,. - A .,.,0,0,.,.,. - L .,. - A .,.,0,0,.,.,. - L .,. - A .,.,0,0,.,.,. Z`.split(`.`)),e,t+c*g,g,g,u,e+l*g,t,e+n-l*g,t,g,g,u,e+n,t+c*g,e+n,t+r-c*g,g,g,u,e+n-l*g,t+r,e+l*g,t+r,g,g,u,e,t+r-c*g)}else d=P(id||=yd([`M `,`,`,` h `,` v `,` h `,` Z`]),e,t,n,r,-n);return d},xd={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:`ease`},Sd=e=>{var t=Ft(e,xd),n=(0,o.useRef)(null),i=pd((0,o.useState)(-1),2),a=i[0],s=i[1];(0,o.useEffect)(()=>{if(n.current&&n.current.getTotalLength)try{var e=n.current.getTotalLength();e&&s(e)}catch{}},[]);var c=t.x,l=t.y,u=t.width,d=t.height,f=t.radius,p=t.className,m=t.animationEasing,g=t.animationDuration,_=t.animationBegin,v=t.isAnimationActive,y=t.isUpdateAnimationActive,b=(0,o.useRef)(u),x=(0,o.useRef)(d),S=(0,o.useRef)(c),C=(0,o.useRef)(l),w=Wu((0,o.useMemo)(()=>({x:c,y:l,width:u,height:d,radius:f}),[c,l,u,d,f]),`rectangle-`);if(c!==+c||l!==+l||u!==+u||d!==+d||u===0||d===0)return null;var T=r(`recharts-rectangle`,p);if(!y){var E=h(t);E.radius;var D=dd(E,qu);return o.createElement(`path`,ud({},D,{x:ie(c),y:ie(l),width:ie(u),height:ie(d),radius:typeof f==`number`?f:void 0,className:T,d:bd(c,l,u,d,f)}))}var O=b.current,k=x.current,A=S.current,j=C.current,M=`0px ${a===-1?1:a}px`,N=`${a}px ${a}px`,ee=Ku([`strokeDasharray`],g,typeof m==`string`?m:xd.animationEasing);return o.createElement(Uu,{animationId:w,key:w,canBegin:a>0,duration:g,easing:m,isActive:y,begin:_},e=>{var r=fe(O,u,e),i=fe(k,d,e),a=fe(A,c,e),s=fe(j,l,e);n.current&&(b.current=r,x.current=i,S.current=a,C.current=s);var p=v?e>0?{transition:ee,strokeDasharray:N}:{strokeDasharray:M}:{strokeDasharray:N},m=h(t);m.radius;var g=dd(m,Ju);return o.createElement(`path`,ud({},g,{radius:typeof f==`number`?f:void 0,className:T,d:bd(a,s,r,i,f),ref:n,style:od(od({},p),t.style)}))})};function Cd(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function wd(e){for(var t=1;te*180/Math.PI,Ad=(e,t,n,r)=>({x:e+Math.cos(-Od*r)*n,y:t+Math.sin(-Od*r)*n}),jd=function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{top:0,right:0,bottom:0,left:0,width:0,height:0,brushBottom:0};return Math.min(Math.abs(e-(n.left||0)-(n.right||0)),Math.abs(t-(n.top||0)-(n.bottom||0)))/2},Md=(e,t)=>{var n=e.x,r=e.y,i=t.x,a=t.y;return Math.sqrt((n-i)**2+(r-a)**2)},Nd=(e,t)=>{var n=e.x,r=e.y,i=t.cx,a=t.cy,o=Md({x:n,y:r},{x:i,y:a});if(o<=0)return{radius:o,angle:0};var s=(n-i)/o,c=Math.acos(s);return r>a&&(c=2*Math.PI-c),{radius:o,angle:kd(c),angleInRadian:c}},Pd=e=>{var t=e.startAngle,n=e.endAngle,r=Math.floor(t/360),i=Math.floor(n/360),a=Math.min(r,i);return{startAngle:t-a*360,endAngle:n-a*360}},Fd=(e,t)=>{var n=t.startAngle,r=t.endAngle,i=Math.floor(n/360),a=Math.floor(r/360);return e+Math.min(i,a)*360},Id=(e,t)=>{var n=e.relativeX,r=e.relativeY,i=Nd({x:n,y:r},t),a=i.radius,o=i.angle,s=t.innerRadius,c=t.outerRadius;if(ac||a===0)return null;var l=Pd(t),u=l.startAngle,d=l.endAngle,f=o,p;if(u<=d){for(;f>d;)f-=360;for(;f=u&&f<=d}else{for(;f>u;)f-=360;for(;f=d&&f<=u}return p?wd(wd({},t),{},{radius:a,angle:Fd(f,t)}):null};function Ld(e){var t=e.cx,n=e.cy,r=e.radius,i=e.startAngle,a=e.endAngle;return{points:[Ad(t,n,r,i),Ad(t,n,r,a)],cx:t,cy:n,radius:r,startAngle:i,endAngle:a}}var Rd,zd,Bd,Vd,Hd,Ud,Wd;function Gd(){return Gd=Object.assign?Object.assign.bind():function(e){for(var t=1;tF(t-e)*Math.min(Math.abs(t-e),359.999),Jd=e=>{var t=e.cx,n=e.cy,r=e.radius,i=e.angle,a=e.sign,o=e.isExternal,s=e.cornerRadius,c=e.cornerIsExternal,l=s*(o?1:-1)+r,u=Math.asin(s/l)/Od,d=c?i:i+a*u,f=Ad(t,n,l,d),p=Ad(t,n,r,d),m=c?i-a*u:i;return{center:f,circleTangency:p,lineTangency:Ad(t,n,l*Math.cos(u*Od),m),theta:u}},Yd=e=>{var t=e.cx,n=e.cy,r=e.innerRadius,i=e.outerRadius,a=e.startAngle,o=e.endAngle,s=qd(a,o),c=a+s,l=Ad(t,n,i,a),u=Ad(t,n,i,c),d=P(Rd||=Kd([`M `,`,`,` - A `,`,`,`,0, - `,`,`,`, - `,`,`,` - `]),l.x,l.y,i,i,+(Math.abs(s)>180),+(a>c),u.x,u.y);if(r>0){var f=Ad(t,n,r,a),p=Ad(t,n,r,c);d+=P(zd||=Kd([`L `,`,`,` - A `,`,`,`,0, - `,`,`,`, - `,`,`,` Z`]),p.x,p.y,r,r,+(Math.abs(s)>180),+(a<=c),f.x,f.y)}else d+=P(Bd||=Kd([`L `,`,`,` Z`]),t,n);return d},Xd=e=>{var t=e.cx,n=e.cy,r=e.innerRadius,i=e.outerRadius,a=e.cornerRadius,o=e.forceCornerRadius,s=e.cornerIsExternal,c=e.startAngle,l=e.endAngle,u=F(l-c),d=Jd({cx:t,cy:n,radius:i,angle:c,sign:u,cornerRadius:a,cornerIsExternal:s}),f=d.circleTangency,p=d.lineTangency,m=d.theta,h=Jd({cx:t,cy:n,radius:i,angle:l,sign:-u,cornerRadius:a,cornerIsExternal:s}),g=h.circleTangency,_=h.lineTangency,v=h.theta,y=s?Math.abs(c-l):Math.abs(c-l)-m-v;if(y<0)return o?P(Vd||=Kd([`M `,`,`,` - a`,`,`,`,0,0,1,`,`,0 - a`,`,`,`,0,0,1,`,`,0 - `]),p.x,p.y,a,a,a*2,a,a,-a*2):Yd({cx:t,cy:n,innerRadius:r,outerRadius:i,startAngle:c,endAngle:l});var b=P(Hd||=Kd([`M `,`,`,` - A`,`,`,`,0,0,`,`,`,`,`,` - A`,`,`,`,0,`,`,`,`,`,`,`,` - A`,`,`,`,0,0,`,`,`,`,`,` - `]),p.x,p.y,a,a,+(u<0),f.x,f.y,i,i,+(y>180),+(u<0),g.x,g.y,a,a,+(u<0),_.x,_.y);if(r>0){var x=Jd({cx:t,cy:n,radius:r,angle:c,sign:u,isExternal:!0,cornerRadius:a,cornerIsExternal:s}),S=x.circleTangency,C=x.lineTangency,w=x.theta,T=Jd({cx:t,cy:n,radius:r,angle:l,sign:-u,isExternal:!0,cornerRadius:a,cornerIsExternal:s}),E=T.circleTangency,D=T.lineTangency,O=T.theta,k=s?Math.abs(c-l):Math.abs(c-l)-w-O;if(k<0&&a===0)return`${b}L${t},${n}Z`;b+=P(Ud||=Kd([`L`,`,`,` - A`,`,`,`,0,0,`,`,`,`,`,` - A`,`,`,`,0,`,`,`,`,`,`,`,` - A`,`,`,`,0,0,`,`,`,`,`,`Z`]),D.x,D.y,a,a,+(u<0),E.x,E.y,r,r,+(k>180),+(u>0),S.x,S.y,a,a,+(u<0),C.x,C.y)}else b+=P(Wd||=Kd([`L`,`,`,`Z`]),t,n);return b},Zd={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},Qd=e=>{var t=Ft(e,Zd),n=t.cx,i=t.cy,a=t.innerRadius,s=t.outerRadius,c=t.cornerRadius,l=t.forceCornerRadius,u=t.cornerIsExternal,d=t.startAngle,f=t.endAngle,p=t.className;if(s0&&Math.abs(d-f)<360?Xd({cx:n,cy:i,innerRadius:a,outerRadius:s,cornerRadius:Math.min(_,g/2),forceCornerRadius:l,cornerIsExternal:u,startAngle:d,endAngle:f}):Yd({cx:n,cy:i,innerRadius:a,outerRadius:s,startAngle:d,endAngle:f});return o.createElement(`path`,Gd({},h(t),{className:m,d:v}))};function $d(e,t,n){if(e===`horizontal`)return[{x:t.x,y:n.top},{x:t.x,y:n.top+n.height}];if(e===`vertical`)return[{x:n.left,y:t.y},{x:n.left+n.width,y:t.y}];if(Et(t)){if(e===`centric`){var r=t.cx,i=t.cy,a=t.innerRadius,o=t.outerRadius,s=t.angle,c=Ad(r,i,a,s),l=Ad(r,i,o,s);return[{x:c.x,y:c.y},{x:l.x,y:l.y}]}return Ld(t)}}function ef(e){return j(e)?NaN:Number(e)}function tf(e){return e?(e=ef(e),e===1/0||e===-1/0?(e<0?-1:1)*Number.MAX_VALUE:e===e?e:0):e===0?e:0}function nf(e,t,n){n&&typeof n!=`number`&&gr(e,t,n)&&(t=n=void 0),e=tf(e),t===void 0?(t=e,e=0):t=tf(t),n=n===void 0?ee.chartData,af=B([rf],e=>{var t=e.chartData==null?0:e.chartData.length-1;return{chartData:e.chartData,computedData:e.computedData,dataEndIndex:t,dataStartIndex:0}}),of=(e,t,n,r)=>r?af(e):rf(e),sf=(e,t,n)=>n?af(e):rf(e),cf=B([of],e=>{var t=e.chartData,n=e.dataStartIndex,r=e.dataEndIndex;return t==null?[]:t.slice(n,r+1)}),lf=B([af],e=>{var t=e.chartData,n=e.dataStartIndex,r=e.dataEndIndex;return t==null?[]:t.slice(n,r+1)}),uf=B([rf],e=>{var t=e.chartData,n=e.dataStartIndex,r=e.dataEndIndex;return t==null?[]:t.slice(n,r+1)});function df(e,t){return gf(e)||hf(e,t)||pf(e,t)||ff()}function ff(){throw TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function pf(e,t){if(e){if(typeof e==`string`)return mf(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?mf(e,t):void 0}}function mf(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n{(function(e){var n=1e9,r={precision:20,rounding:4,toExpNeg:-7,toExpPos:21,LN10:`2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286`},i=!0,a=`[DecimalError] `,o=a+`Invalid argument: `,s=a+`Exponent out of range: `,c=Math.floor,l=Math.pow,u=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,d,f=1e7,p=7,m=9007199254740991,h=c(m/p),g={};g.absoluteValue=g.abs=function(){var e=new this.constructor(this);return e.s&&=1,e},g.comparedTo=g.cmp=function(e){var t,n,r,i,a=this;if(e=new a.constructor(e),a.s!==e.s)return a.s||-e.s;if(a.e!==e.e)return a.e>e.e^a.s<0?1:-1;for(r=a.d.length,i=e.d.length,t=0,n=re.d[t]^a.s<0?1:-1;return r===i?0:r>i^a.s<0?1:-1},g.decimalPlaces=g.dp=function(){var e=this,t=e.d.length-1,n=(t-e.e)*p;if(t=e.d[t],t)for(;t%10==0;t/=10)n--;return n<0?0:n},g.dividedBy=g.div=function(e){return b(this,new this.constructor(e))},g.dividedToIntegerBy=g.idiv=function(e){var t=this,n=t.constructor;return D(b(t,new n(e),0,1),n.precision)},g.equals=g.eq=function(e){return!this.cmp(e)},g.exponent=function(){return S(this)},g.greaterThan=g.gt=function(e){return this.cmp(e)>0},g.greaterThanOrEqualTo=g.gte=function(e){return this.cmp(e)>=0},g.isInteger=g.isint=function(){return this.e>this.d.length-2},g.isNegative=g.isneg=function(){return this.s<0},g.isPositive=g.ispos=function(){return this.s>0},g.isZero=function(){return this.s===0},g.lessThan=g.lt=function(e){return this.cmp(e)<0},g.lessThanOrEqualTo=g.lte=function(e){return this.cmp(e)<1},g.logarithm=g.log=function(e){var t,n=this,r=n.constructor,o=r.precision,s=o+5;if(e===void 0)e=new r(10);else if(e=new r(e),e.s<1||e.eq(d))throw Error(a+`NaN`);if(n.s<1)throw Error(a+(n.s?`NaN`:`-Infinity`));return n.eq(d)?new r(0):(i=!1,t=b(T(n,s),T(e,s),s),i=!0,D(t,o))},g.minus=g.sub=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?O(t,e):_(t,(e.s=-e.s,e))},g.modulo=g.mod=function(e){var t,n=this,r=n.constructor,o=r.precision;if(e=new r(e),!e.s)throw Error(a+`NaN`);return n.s?(i=!1,t=b(n,e,0,1).times(e),i=!0,n.minus(t)):D(new r(n),o)},g.naturalExponential=g.exp=function(){return x(this)},g.naturalLogarithm=g.ln=function(){return T(this)},g.negated=g.neg=function(){var e=new this.constructor(this);return e.s=-e.s||0,e},g.plus=g.add=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?_(t,e):O(t,(e.s=-e.s,e))},g.precision=g.sd=function(e){var t,n,r,i=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(o+e);if(t=S(i)+1,r=i.d.length-1,n=r*p+1,r=i.d[r],r){for(;r%10==0;r/=10)n--;for(r=i.d[0];r>=10;r/=10)n++}return e&&t>n?t:n},g.squareRoot=g.sqrt=function(){var e,t,n,r,o,s,l,u=this,d=u.constructor;if(u.s<1){if(!u.s)return new d(0);throw Error(a+`NaN`)}for(e=S(u),i=!1,o=Math.sqrt(+u),o==0||o==1/0?(t=y(u.d),(t.length+e)%2==0&&(t+=`0`),o=Math.sqrt(t),e=c((e+1)/2)-(e<0||e%2),o==1/0?t=`5e`+e:(t=o.toExponential(),t=t.slice(0,t.indexOf(`e`)+1)+e),r=new d(t)):r=new d(o.toString()),n=d.precision,o=l=n+3;;)if(s=r,r=s.plus(b(u,s,l+2)).times(.5),y(s.d).slice(0,l)===(t=y(r.d)).slice(0,l)){if(t=t.slice(l-3,l+1),o==l&&t==`4999`){if(D(s,n+1,0),s.times(s).eq(u)){r=s;break}}else if(t!=`9999`)break;l+=4}return i=!0,D(r,n)},g.times=g.mul=function(e){var t,n,r,a,o,s,c,l,u,d=this,p=d.constructor,m=d.d,h=(e=new p(e)).d;if(!d.s||!e.s)return new p(0);for(e.s*=d.s,n=d.e+e.e,l=m.length,u=h.length,l=0;){for(t=0,a=l+r;a>r;)c=o[a]+h[r]*m[a-r-1]+t,o[a--]=c%f|0,t=c/f|0;o[a]=(o[a]+t)%f|0}for(;!o[--s];)o.pop();return t?++n:o.shift(),e.d=o,e.e=n,i?D(e,p.precision):e},g.toDecimalPlaces=g.todp=function(e,t){var r=this,i=r.constructor;return r=new i(r),e===void 0?r:(v(e,0,n),t===void 0?t=i.rounding:v(t,0,8),D(r,e+S(r)+1,t))},g.toExponential=function(e,t){var r,i=this,a=i.constructor;return e===void 0?r=k(i,!0):(v(e,0,n),t===void 0?t=a.rounding:v(t,0,8),i=D(new a(i),e+1,t),r=k(i,!0,e+1)),r},g.toFixed=function(e,t){var r,i,a=this,o=a.constructor;return e===void 0?k(a):(v(e,0,n),t===void 0?t=o.rounding:v(t,0,8),i=D(new o(a),e+S(a)+1,t),r=k(i.abs(),!1,e+S(i)+1),a.isneg()&&!a.isZero()?`-`+r:r)},g.toInteger=g.toint=function(){var e=this,t=e.constructor;return D(new t(e),S(e)+1,t.rounding)},g.toNumber=function(){return+this},g.toPower=g.pow=function(e){var t,n,r,o,s,l,u=this,f=u.constructor,h=12,g=+(e=new f(e));if(!e.s)return new f(d);if(u=new f(u),!u.s){if(e.s<1)throw Error(a+`Infinity`);return u}if(u.eq(d))return u;if(r=f.precision,e.eq(d))return D(u,r);if(t=e.e,n=e.d.length-1,l=t>=n,s=u.s,!l){if(s<0)throw Error(a+`NaN`)}else if((n=g<0?-g:g)<=m){for(o=new f(d),t=Math.ceil(r/p+4),i=!1;n%2&&(o=o.times(u),A(o.d,t)),n=c(n/2),n!==0;)u=u.times(u),A(u.d,t);return i=!0,e.s<0?new f(d).div(o):D(o,r)}return s=s<0&&e.d[Math.max(t,n)]&1?-1:1,u.s=1,i=!1,o=e.times(T(u,r+h)),i=!0,o=x(o),o.s=s,o},g.toPrecision=function(e,t){var r,i,a=this,o=a.constructor;return e===void 0?(r=S(a),i=k(a,r<=o.toExpNeg||r>=o.toExpPos)):(v(e,1,n),t===void 0?t=o.rounding:v(t,0,8),a=D(new o(a),e,t),r=S(a),i=k(a,e<=r||r<=o.toExpNeg,e)),i},g.toSignificantDigits=g.tosd=function(e,t){var r=this,i=r.constructor;return e===void 0?(e=i.precision,t=i.rounding):(v(e,1,n),t===void 0?t=i.rounding:v(t,0,8)),D(new i(r),e,t)},g.toString=g.valueOf=g.val=g.toJSON=function(){var e=this,t=S(e),n=e.constructor;return k(e,t<=n.toExpNeg||t>=n.toExpPos)};function _(e,t){var n,r,a,o,s,c,l,u,d=e.constructor,m=d.precision;if(!e.s||!t.s)return t.s||(t=new d(e)),i?D(t,m):t;if(l=e.d,u=t.d,s=e.e,a=t.e,l=l.slice(),o=s-a,o){for(o<0?(r=l,o=-o,c=u.length):(r=u,a=s,c=l.length),s=Math.ceil(m/p),c=s>c?s+1:c+1,o>c&&(o=c,r.length=1),r.reverse();o--;)r.push(0);r.reverse()}for(c=l.length,o=u.length,c-o<0&&(o=c,r=u,u=l,l=r),n=0;o;)n=(l[--o]=l[o]+u[o]+n)/f|0,l[o]%=f;for(n&&(l.unshift(n),++a),c=l.length;l[--c]==0;)l.pop();return t.d=l,t.e=a,i?D(t,m):t}function v(e,t,n){if(e!==~~e||en)throw Error(o+e)}function y(e){var t,n,r,i=e.length-1,a=``,o=e[0];if(i>0){for(a+=o,t=1;tr?1:-1;else for(i=a=0;it[i]?1:-1;break}return a}function n(e,t,n){for(var r=0;n--;)e[n]-=r,r=+(e[n]1;)e.shift()}return function(r,i,o,s){var c,l,u,d,m,h,g,_,v,y,b,x,C,w,T,E,O,k,A=r.constructor,j=r.s==i.s?1:-1,M=r.d,N=i.d;if(!r.s)return new A(r);if(!i.s)throw Error(a+`Division by zero`);for(l=r.e-i.e,O=N.length,T=M.length,g=new A(j),_=g.d=[],u=0;N[u]==(M[u]||0);)++u;if(N[u]>(M[u]||0)&&--l,x=o==null?o=A.precision:s?o+(S(r)-S(i))+1:o,x<0)return new A(0);if(x=x/p+2|0,u=0,O==1)for(d=0,N=N[0],x++;(u1&&(N=e(N,d),M=e(M,d),O=N.length,T=M.length),w=O,v=M.slice(0,O),y=v.length;y=f/2&&++E;do d=0,c=t(N,v,O,y),c<0?(b=v[0],O!=y&&(b=b*f+(v[1]||0)),d=b/E|0,d>1?(d>=f&&(d=f-1),m=e(N,d),h=m.length,y=v.length,c=t(m,v,h,y),c==1&&(d--,n(m,O16)throw Error(s+S(e));if(!e.s)return new m(d);for(t==null?(i=!1,u=h):u=t,c=new m(.03125);e.abs().gte(.1);)e=e.times(c),p+=5;for(r=Math.log(l(2,p))/Math.LN10*2+5|0,u+=r,n=a=o=new m(d),m.precision=u;;){if(a=D(a.times(e),u),n=n.times(++f),c=o.plus(b(a,n,u)),y(c.d).slice(0,u)===y(o.d).slice(0,u)){for(;p--;)o=D(o.times(o),u);return m.precision=h,t==null?(i=!0,D(o,h)):o}o=c}}function S(e){for(var t=e.e*p,n=e.d[0];n>=10;n/=10)t++;return t}function C(e,t,n){if(t>e.LN10.sd())throw i=!0,n&&(e.precision=n),Error(a+`LN10 precision limit exceeded`);return D(new e(e.LN10),t)}function w(e){for(var t=``;e--;)t+=`0`;return t}function T(e,t){var n,r,o,s,c,l,u,f,p,m=1,h=10,g=e,_=g.d,v=g.constructor,x=v.precision;if(g.s<1)throw Error(a+(g.s?`NaN`:`-Infinity`));if(g.eq(d))return new v(0);if(t==null?(i=!1,f=x):f=t,g.eq(10))return t??(i=!0),C(v,f);if(f+=h,v.precision=f,n=y(_),r=n.charAt(0),s=S(g),Math.abs(s)<0x5543df729c000){for(;r<7&&r!=1||r==1&&n.charAt(1)>3;)g=g.times(e),n=y(g.d),r=n.charAt(0),m++;s=S(g),r>1?(g=new v(`0.`+n),s++):g=new v(r+`.`+n.slice(1))}else return u=C(v,f+2,x).times(s+``),g=T(new v(r+`.`+n.slice(1)),f-h).plus(u),v.precision=x,t==null?(i=!0,D(g,x)):g;for(l=c=g=b(g.minus(d),g.plus(d),f),p=D(g.times(g),f),o=3;;){if(c=D(c.times(p),f),u=l.plus(b(c,new v(o),f)),y(u.d).slice(0,f)===y(l.d).slice(0,f))return l=l.times(2),s!==0&&(l=l.plus(C(v,f+2,x).times(s+``))),l=b(l,new v(m),f),v.precision=x,t==null?(i=!0,D(l,x)):l;l=u,o+=2}}function E(e,t){var n,r,a;for((n=t.indexOf(`.`))>-1&&(t=t.replace(`.`,``)),(r=t.search(/e/i))>0?(n<0&&(n=r),n+=+t.slice(r+1),t=t.substring(0,r)):n<0&&(n=t.length),r=0;t.charCodeAt(r)===48;)++r;for(a=t.length;t.charCodeAt(a-1)===48;)--a;if(t=t.slice(r,a),t){if(a-=r,n=n-r-1,e.e=c(n/p),e.d=[],r=(n+1)%p,n<0&&(r+=p),rh||e.e<-h))throw Error(s+n)}else e.s=0,e.e=0,e.d=[0];return e}function D(e,t,n){var r,a,o,u,d,m,g,_,v=e.d;for(u=1,o=v[0];o>=10;o/=10)u++;if(r=t-u,r<0)r+=p,a=t,g=v[_=0];else{if(_=Math.ceil((r+1)/p),o=v.length,_>=o)return e;for(g=o=v[_],u=1;o>=10;o/=10)u++;r%=p,a=r-p+u}if(n!==void 0&&(o=l(10,u-a-1),d=g/o%10|0,m=t<0||v[_+1]!==void 0||g%o,m=n<4?(d||m)&&(n==0||n==(e.s<0?3:2)):d>5||d==5&&(n==4||m||n==6&&(r>0?a>0?g/l(10,u-a):0:v[_-1])%10&1||n==(e.s<0?8:7))),t<1||!v[0])return m?(o=S(e),v.length=1,t=t-o-1,v[0]=l(10,(p-t%p)%p),e.e=c(-t/p)||0):(v.length=1,v[0]=e.e=e.s=0),e;if(r==0?(v.length=_,o=1,_--):(v.length=_+1,o=l(10,p-r),v[_]=a>0?(g/l(10,u-a)%l(10,a)|0)*o:0),m)for(;;)if(_==0){(v[0]+=o)==f&&(v[0]=1,++e.e);break}else{if(v[_]+=o,v[_]!=f)break;v[_--]=0,o=1}for(r=v.length;v[--r]===0;)v.pop();if(i&&(e.e>h||e.e<-h))throw Error(s+S(e));return e}function O(e,t){var n,r,a,o,s,c,l,u,d,m,h=e.constructor,g=h.precision;if(!e.s||!t.s)return t.s?t.s=-t.s:t=new h(e),i?D(t,g):t;if(l=e.d,m=t.d,r=t.e,u=e.e,l=l.slice(),s=u-r,s){for(d=s<0,d?(n=l,s=-s,c=m.length):(n=m,r=u,c=l.length),a=Math.max(Math.ceil(g/p),c)+2,s>a&&(s=a,n.length=1),n.reverse(),a=s;a--;)n.push(0);n.reverse()}else{for(a=l.length,c=m.length,d=a0;--a)l[c++]=0;for(a=m.length;a>s;){if(l[--a]0?a=a.charAt(0)+`.`+a.slice(1)+w(r):o>1&&(a=a.charAt(0)+`.`+a.slice(1)),a=a+(i<0?`e`:`e+`)+i):i<0?(a=`0.`+w(-i-1)+a,n&&(r=n-o)>0&&(a+=w(r))):i>=o?(a+=w(i+1-o),n&&(r=n-i-1)>0&&(a=a+`.`+w(r))):((r=i+1)0&&(i+1===o&&(a+=`.`),a+=w(r))),e.s<0?`-`+a:a}function A(e,t){if(e.length>t)return e.length=t,!0}function j(e){var t,n,r;function i(e){var t=this;if(!(t instanceof i))return new i(e);if(t.constructor=i,e instanceof i){t.s=e.s,t.e=e.e,t.d=(e=e.d)?e.slice():e;return}if(typeof e==`number`){if(e*0!=0)throw Error(o+e);if(e>0)t.s=1;else if(e<0)e=-e,t.s=-1;else{t.s=0,t.e=0,t.d=[0];return}if(e===~~e&&e<1e7){t.e=0,t.d=[e];return}return E(t,e.toString())}if(typeof e!=`string`)throw Error(o+e);if(e.charCodeAt(0)===45?(e=e.slice(1),t.s=-1):t.s=1,u.test(e))E(t,e);else throw Error(o+e)}if(i.prototype=g,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.clone=j,i.config=i.set=M,e===void 0&&(e={}),e)for(r=[`precision`,`rounding`,`toExpNeg`,`toExpPos`,`LN10`],t=0;t=s[t+1]&&i<=s[t+2])this[r]=i;else throw Error(o+r+`: `+i)}if((i=e[r=`LN10`])!==void 0){if(i==Math.LN10)this[r]=new this(i);else throw Error(o+r+`: `+i)}return this}r=j(r),r.default=r.Decimal=r,d=new r(1),typeof define==`function`&&define.amd?define(function(){return r}):t!==void 0&&t.exports?t.exports=r:(e||=typeof self<`u`&&self&&self.self==self?self:Function(`return this`)(),e.Decimal=r)})(e)}))());function xf(e){return e===0?1:Math.floor(new K.default(e).abs().log(10).toNumber())+1}function Sf(e,t,n){for(var r=new K.default(e),i=0,a=[];r.lt(t)&&i<1e5;)a.push(r.toNumber()),r=r.add(n),i++;return a}function Cf(e,t){return Of(e)||Df(e,t)||Tf(e,t)||wf()}function wf(){throw TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Tf(e,t){if(e){if(typeof e==`string`)return Ef(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ef(e,t):void 0}}function Ef(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n{var t=Cf(e,2),n=t[0],r=t[1],i=n,a=r;return n>r&&(i=r,a=n),[i,a]},Af=(e,t,n)=>{if(e.lte(0))return new K.default(0);var r=xf(e.toNumber()),i=new K.default(10).pow(r),a=e.div(i),o=r===1?.1:.05,s=new K.default(Math.ceil(a.div(o).toNumber())).add(n).mul(o).mul(i);return t?new K.default(s.toNumber()):new K.default(Math.ceil(s.toNumber()))},jf=(e,t,n)=>{if(e.lte(0))return new K.default(0);var r=[1,2,2.5,5],i=e.toNumber(),a=Math.floor(new K.default(i).abs().log(10).toNumber()),o=new K.default(10).pow(a),s=e.div(o).toNumber(),c=r.findIndex(e=>e>=s-1e-10);if(c===-1&&(o=o.mul(10),c=0),c+=n,c>=r.length){var l=Math.floor(c/r.length);c%=r.length,o=o.mul(new K.default(10).pow(l))}var u=r[c]??1,d=new K.default(u).mul(o);return t?d:new K.default(Math.ceil(d.toNumber()))},Mf=(e,t,n)=>{var r=new K.default(1),i=new K.default(e);if(!i.isint()&&n){var a=Math.abs(e);a<1?(r=new K.default(10).pow(xf(e)-1),i=new K.default(Math.floor(i.div(r).toNumber())).mul(r)):a>1&&(i=new K.default(Math.floor(e)))}else e===0?i=new K.default(Math.floor((t-1)/2)):n||(i=new K.default(Math.floor(e)));for(var o=Math.floor((t-1)/2),s=[],c=0;c4&&arguments[4]!==void 0?arguments[4]:0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:Af;if(!Number.isFinite((t-e)/(n-1)))return{step:new K.default(0),tickMin:new K.default(0),tickMax:new K.default(0)};var o=a(new K.default(t).sub(e).div(n-1),r,i),s;e<=0&&t>=0?s=new K.default(0):(s=new K.default(e).add(t).div(2),s=s.sub(new K.default(s).mod(o)));var c=Math.ceil(s.sub(e).div(o).toNumber()),l=Math.ceil(new K.default(t).sub(s).div(o).toNumber()),u=c+l+1;return u>n?Nf(e,t,n,r,i+1,a):(u0?l+(n-u):l,c=t>0?c:c+(n-u)),{step:o,tickMin:s.sub(new K.default(c).mul(o)),tickMax:s.add(new K.default(l).mul(o))})},Pf=function(e){var t=Cf(e,2),n=t[0],r=t[1],i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:6,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:`auto`,s=Math.max(i,2),c=Cf(kf([n,r]),2),l=c[0],u=c[1];if(l===-1/0||u===1/0){var d=u===1/0?[l,...Array(i-1).fill(1/0)]:[...Array(i-1).fill(-1/0),u];return n>r?d.reverse():d}if(l===u)return Mf(l,i,a);var f=Nf(l,u,s,a,0,o===`snap125`?jf:Af),p=f.step,m=f.tickMin,h=f.tickMax,g=Sf(m,h.add(new K.default(.1).mul(p)),p);return n>r?g.reverse():g},Ff=function(e,t){var n=Cf(e,2),r=n[0],i=n[1],a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:`auto`,s=Cf(kf([r,i]),2),c=s[0],l=s[1];if(c===-1/0||l===1/0)return[r,i];if(c===l)return[c];var u=o===`snap125`?jf:Af,d=Math.max(t,2),f=u(new K.default(l).sub(c).div(d-1),a,0),p=[...Sf(new K.default(c),new K.default(l),f),l];if(a===!1){p=p.map(e=>Math.round(e));var m=p.length-1;m>0&&p[m]===p[m-1]&&(p=p.slice(0,m))}return r>i?p.reverse():p},If=e=>e.rootProps.barCategoryGap,Lf=e=>e.rootProps.stackOffset,Rf=e=>e.rootProps.reverseStackOrder,zf=e=>e.options.chartName,Bf=e=>e.rootProps.syncId,Vf=e=>e.rootProps.syncMethod,Hf=e=>e.options.eventEmitter,Uf=e=>e.rootProps.baseValue,Wf={grid:-100,barBackground:-50,area:100,cursorRectangle:200,bar:300,line:400,axis:500,scatter:600,activeBar:1e3,cursorLine:1100,activeDot:1200,label:2e3},Gf={allowDecimals:!1,allowDuplicatedCategory:!0,allowDataOverflow:!1,angle:0,angleAxisId:0,axisLine:!0,axisLineType:`polygon`,cx:0,cy:0,hide:!1,includeHidden:!1,label:!1,niceTicks:`auto`,orientation:`outer`,reversed:!1,scale:`auto`,tick:!0,tickLine:!0,tickSize:8,type:`auto`,zIndex:Wf.axis},Kf={allowDataOverflow:!1,allowDecimals:!1,allowDuplicatedCategory:!0,angle:0,axisLine:!0,includeHidden:!1,hide:!1,niceTicks:`auto`,label:!1,orientation:`right`,radiusAxisId:0,reversed:!1,scale:`auto`,stroke:`#ccc`,tick:!0,tickCount:5,tickLine:!0,type:`auto`,zIndex:Wf.axis},qf=(e,t)=>{if(e&&t)return e!=null&&e.reversed?[t[1],t[0]]:t};function Jf(e,t,n){if(n!==`auto`)return n;if(e!=null)return Wo(e,t)?`category`:`number`}function Yf(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Xf(e){for(var t=1;t{if(t!=null)return e.polarAxis.angleAxis[t]},vc],(e,t)=>{if(e!=null)return e;var n=Jf(t,`angleAxis`,ep.type)??`category`;return Xf(Xf({},ep),{},{type:n})}),rp=B([(e,t)=>e.polarAxis.radiusAxis[t],vc],(e,t)=>{if(e!=null)return e;var n=Jf(t,`radiusAxis`,tp.type)??`category`;return Xf(Xf({},tp),{},{type:n})}),ip=e=>e.polarOptions,ap=B([ss,cs,Ts],jd),op=B([ip,ap],(e,t)=>{if(e!=null)return ue(e.innerRadius,t,0)}),sp=B([ip,ap],(e,t)=>{if(e!=null)return ue(e.outerRadius,t,t*.8)}),cp=B([ip],e=>e==null?[0,0]:[e.startAngle,e.endAngle]);B([np,cp],qf);var lp=B([ap,op,sp],(e,t,n)=>{if(e!=null&&t!=null&&n!=null)return[t,n]});B([rp,lp],qf);var up=B([G,ip,op,sp,ss,cs],(e,t,n,r,i,a)=>{if(!(e!==`centric`&&e!==`radial`||t==null||n==null||r==null)){var o=t.cx,s=t.cy,c=t.startAngle,l=t.endAngle;return{cx:ue(o,i,i/2),cy:ue(s,a,a/2),innerRadius:n,outerRadius:r,startAngle:c,endAngle:l,clockWise:!1}}}),q=(e,t)=>t,dp=(e,t,n)=>n;function fp(e){return e?.id}function pp(e,t,n){var r=t.chartData,i=r===void 0?[]:r,a=n.allowDuplicatedCategory,o=n.dataKey,s=new Map;return e.forEach(e=>{var t=e.data??i;if(t!=null&&t.length!==0){var n=fp(e);t.forEach((t,r)=>{var i=o==null||a?r:String(W(t,o,null)),c=W(t,e.dataKey,0),l=s.has(i)?s.get(i):{};Object.assign(l,{[n]:c}),s.set(i,l)})}}),Array.from(s.values())}function mp(e){return`stackId`in e&&e.stackId!=null&&e.dataKey!=null}var hp=(e,t)=>e===t?!0:e==null||t==null?!1:e[0]===t[0]&&e[1]===t[1];function gp(e,t){return Array.isArray(e)&&Array.isArray(t)&&e.length===0&&t.length===0?!0:e===t}function _p(e,t){if(e.length===t.length){for(var n=0;n{var t=G(e);return t===`horizontal`?`xAxis`:t===`vertical`?`yAxis`:t===`centric`?`angleAxis`:`radiusAxis`},yp=e=>e.tooltip.settings.axisId;function bp(e){if(e!=null){var t=e.ticks,n=e.bandwidth,r=e.range(),i=[Math.min(...r),Math.max(...r)];return{domain:()=>e.domain(),range:function(e){function t(){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(()=>i),rangeMin:()=>i[0],rangeMax:()=>i[1],isInRange(e){var t=i[0],n=i[1];return t<=n?e>=t&&e<=n:e>=n&&e<=t},bandwidth:n?()=>n.call(e):void 0,ticks:t?n=>t.call(e,n):void 0,map:(t,n)=>{var r=e(t);if(r!=null){if(e.bandwidth&&n!=null&&n.position){var i=e.bandwidth();switch(n.position){case`middle`:r+=i/2;break;case`end`:r+=i}}return r}}}}}var xp=(e,t)=>{if(t!=null)switch(e){case`linear`:if(!_f(t)){for(var n,r,i=0;ir)&&(r=a))}return n!==void 0&&r!==void 0?[n,r]:void 0}return t;default:return t}};function Sp(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}function Cp(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}function wp(e){let t,n,r;e.length===2?(t=e===Sp||e===Cp?e:Tp,n=e,r=e):(t=Sp,n=(t,n)=>Sp(e(t),n),r=(t,n)=>e(t)-n);function i(e,r,i=0,a=e.length){if(i>>1;n(e[t],r)<0?i=t+1:a=t}while(i>>1;n(e[t],r)<=0?i=t+1:a=t}while(in&&r(e[o-1],t)>-r(e[o],t)?o-1:o}return{left:i,center:o,right:a}}function Tp(){return 0}function Ep(e){return e===null?NaN:+e}function*Dp(e,t){if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&(yield t);else{let n=-1;for(let r of e)(r=t(r,++n,e))!=null&&(r=+r)>=r&&(yield r)}}var Op=wp(Sp),kp=Op.right;Op.left,wp(Ep).center;var Ap=class extends Map{constructor(e,t=Pp){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),e!=null)for(let[t,n]of e)this.set(t,n)}get(e){return super.get(jp(this,e))}has(e){return super.has(jp(this,e))}set(e,t){return super.set(Mp(this,e),t)}delete(e){return super.delete(Np(this,e))}};function jp({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):n}function Mp({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):(e.set(r,n),n)}function Np({_intern:e,_key:t},n){let r=t(n);return e.has(r)&&(n=e.get(r),e.delete(r)),n}function Pp(e){return typeof e==`object`&&e?e.valueOf():e}function Fp(e=Sp){if(e===Sp)return Ip;if(typeof e!=`function`)throw TypeError(`compare is not a function`);return(t,n)=>{let r=e(t,n);return r||r===0?r:(e(n,n)===0)-(e(t,t)===0)}}function Ip(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(et))}var Lp=Math.sqrt(50),Rp=Math.sqrt(10),zp=Math.sqrt(2);function Bp(e,t,n){let r=(t-e)/Math.max(0,n),i=Math.floor(Math.log10(r)),a=r/10**i,o=a>=Lp?10:a>=Rp?5:a>=zp?2:1,s,c,l;return i<0?(l=10**-i/o,s=Math.round(e*l),c=Math.round(t*l),s/lt&&--c,l=-l):(l=10**i*o,s=Math.round(e/l),c=Math.round(t/l),s*lt&&--c),c0))return[];if(e===t)return[e];let r=t=i))return[];let s=a-i+1,c=Array(s);if(r){if(o<0)for(let e=0;e=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n=i)&&(n=i)}return n}function Gp(e,t){let n;if(t===void 0)for(let t of e)t!=null&&(n>t||n===void 0&&t>=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n>i||n===void 0&&i>=i)&&(n=i)}return n}function Kp(e,t,n=0,r=1/0,i){if(t=Math.floor(t),n=Math.floor(Math.max(0,n)),r=Math.floor(Math.min(e.length-1,r)),!(n<=t&&t<=r))return e;for(i=i===void 0?Ip:Fp(i);r>n;){if(r-n>600){let a=r-n+1,o=t-n+1,s=Math.log(a),c=.5*Math.exp(2*s/3),l=.5*Math.sqrt(s*c*(a-c)/a)*(o-a/2<0?-1:1),u=Math.max(n,Math.floor(t-o*c/a+l)),d=Math.min(r,Math.floor(t+(a-o)*c/a+l));Kp(e,t,u,d,i)}let a=e[t],o=n,s=r;for(qp(e,n,t),i(e[r],a)>0&&qp(e,n,r);o0;)--s}i(e[n],a)===0?qp(e,n,s):(++s,qp(e,s,r)),s<=t&&(n=s+1),t<=s&&(r=s-1)}return e}function qp(e,t,n){let r=e[t];e[t]=e[n],e[n]=r}function Jp(e,t,n){if(e=Float64Array.from(Dp(e,n)),(r=e.length)&&!isNaN(t=+t)){if(t<=0||r<2)return Gp(e);if(t>=1)return Wp(e);var r,i=(r-1)*t,a=Math.floor(i),o=Wp(Kp(e,a).subarray(0,a+1));return o+(Gp(e.subarray(a+1))-o)*(i-a)}}function Yp(e,t,n=Ep){if((r=e.length)&&!isNaN(t=+t)){if(t<=0||r<2)return+n(e[0],0,e);if(t>=1)return+n(e[r-1],r-1,e);var r,i=(r-1)*t,a=Math.floor(i),o=+n(e[a],a,e);return o+(+n(e[a+1],a+1,e)-o)*(i-a)}}function Xp(e,t,n){e=+e,t=+t,n=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((t-e)/n))|0,a=Array(i);++r>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?Em(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?Em(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=pm.exec(e))?new km(t[1],t[2],t[3],1):(t=mm.exec(e))?new km(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=hm.exec(e))?Em(t[1],t[2],t[3],t[4]):(t=gm.exec(e))?Em(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=_m.exec(e))?Im(t[1],t[2]/100,t[3]/100,1):(t=vm.exec(e))?Im(t[1],t[2]/100,t[3]/100,t[4]):ym.hasOwnProperty(e)?Tm(ym[e]):e===`transparent`?new km(NaN,NaN,NaN,0):null}function Tm(e){return new km(e>>16&255,e>>8&255,e&255,1)}function Em(e,t,n,r){return r<=0&&(e=t=n=NaN),new km(e,t,n,r)}function Dm(e){return e instanceof om||(e=wm(e)),e?(e=e.rgb(),new km(e.r,e.g,e.b,e.opacity)):new km}function Om(e,t,n,r){return arguments.length===1?Dm(e):new km(e,t,n,r??1)}function km(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}im(km,Om,am(om,{brighter(e){return e=e==null?cm:cm**+e,new km(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?sm:sm**+e,new km(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new km(Pm(this.r),Pm(this.g),Pm(this.b),Nm(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Am,formatHex:Am,formatHex8:jm,formatRgb:Mm,toString:Mm}));function Am(){return`#${Fm(this.r)}${Fm(this.g)}${Fm(this.b)}`}function jm(){return`#${Fm(this.r)}${Fm(this.g)}${Fm(this.b)}${Fm((isNaN(this.opacity)?1:this.opacity)*255)}`}function Mm(){let e=Nm(this.opacity);return`${e===1?`rgb(`:`rgba(`}${Pm(this.r)}, ${Pm(this.g)}, ${Pm(this.b)}${e===1?`)`:`, ${e})`}`}function Nm(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Pm(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Fm(e){return e=Pm(e),(e<16?`0`:``)+e.toString(16)}function Im(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new zm(e,t,n,r)}function Lm(e){if(e instanceof zm)return new zm(e.h,e.s,e.l,e.opacity);if(e instanceof om||(e=wm(e)),!e)return new zm;if(e instanceof zm)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n0&&c<1?0:o,new zm(o,s,c,e.opacity)}function Rm(e,t,n,r){return arguments.length===1?Lm(e):new zm(e,t,n,r??1)}function zm(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}im(zm,Rm,am(om,{brighter(e){return e=e==null?cm:cm**+e,new zm(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?sm:sm**+e,new zm(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new km(Hm(e>=240?e-240:e+120,i,r),Hm(e,i,r),Hm(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new zm(Bm(this.h),Vm(this.s),Vm(this.l),Nm(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=Nm(this.opacity);return`${e===1?`hsl(`:`hsla(`}${Bm(this.h)}, ${Vm(this.s)*100}%, ${Vm(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function Bm(e){return e=(e||0)%360,e<0?e+360:e}function Vm(e){return Math.max(0,Math.min(1,e||0))}function Hm(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var Um=e=>()=>e;function Wm(e,t){return function(n){return e+n*t}}function Gm(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function Km(e){return(e=+e)==1?qm:function(t,n){return n-t?Gm(t,n,e):Um(isNaN(t)?n:t)}}function qm(e,t){var n=t-e;return n?Wm(e,n):Um(isNaN(e)?t:e)}var Jm=(function e(t){var n=Km(t);function r(e,t){var r=n((e=Om(e)).r,(t=Om(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=qm(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function Ym(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;in&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:$m(r,i)})),n=nh.lastIndex;return nt&&(n=e,e=t,t=n),function(n){return Math.max(e,Math.min(t,n))}}function hh(e,t,n){var r=e[0],i=e[1],a=t[0],o=t[1];return i2?gh:hh,c=l=null,d}function d(i){return i==null||isNaN(i=+i)?a:(c||=s(e.map(r),t,n))(r(o(i)))}return d.invert=function(n){return o(i((l||=s(t,e.map(r),$m))(n)))},d.domain=function(t){return arguments.length?(e=Array.from(t,uh),u()):e.slice()},d.range=function(e){return arguments.length?(t=Array.from(e),u()):t.slice()},d.rangeRound=function(e){return t=Array.from(e),n=sh,u()},d.clamp=function(e){return arguments.length?(o=e?!0:fh,u()):o!==fh},d.interpolate=function(e){return arguments.length?(n=e,u()):n},d.unknown=function(e){return arguments.length?(a=e,d):a},function(e,t){return r=e,i=t,u()}}function yh(){return vh()(fh,fh)}function bh(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString(`en`).replace(/,/g,``):e.toString(10)}function xh(e,t){if(!isFinite(e)||e===0)return null;var n=(e=t?e.toExponential(t-1):e.toExponential()).indexOf(`e`),r=e.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+e.slice(n+1)]}function Sh(e){return e=xh(Math.abs(e)),e?e[1]:NaN}function Ch(e,t){return function(n,r){for(var i=n.length,a=[],o=0,s=e[0],c=0;i>0&&s>0&&(c+s+1>r&&(s=Math.max(1,r-c)),a.push(n.substring(i-=s,i+s)),!((c+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(t)}}function wh(e){return function(t){return t.replace(/[0-9]/g,function(t){return e[+t]})}}var Th=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Eh(e){if(!(t=Th.exec(e)))throw Error(`invalid format: `+e);var t;return new Dh({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}Eh.prototype=Dh.prototype;function Dh(e){this.fill=e.fill===void 0?` `:e.fill+``,this.align=e.align===void 0?`>`:e.align+``,this.sign=e.sign===void 0?`-`:e.sign+``,this.symbol=e.symbol===void 0?``:e.symbol+``,this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?``:e.type+``}Dh.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?`0`:``)+(this.width===void 0?``:Math.max(1,this.width|0))+(this.comma?`,`:``)+(this.precision===void 0?``:`.`+Math.max(0,this.precision|0))+(this.trim?`~`:``)+this.type};function Oh(e){out:for(var t=e.length,n=1,r=-1,i;n0&&(r=0)}return r>0?e.slice(0,r)+e.slice(i+1):e}var kh;function Ah(e,t){var n=xh(e,t);if(!n)return kh=void 0,e.toPrecision(t);var r=n[0],i=n[1],a=i-(kh=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,o=r.length;return a===o?r:a>o?r+Array(a-o+1).join(`0`):a>0?r.slice(0,a)+`.`+r.slice(a):`0.`+Array(1-a).join(`0`)+xh(e,Math.max(0,t+a-1))[0]}function jh(e,t){var n=xh(e,t);if(!n)return e+``;var r=n[0],i=n[1];return i<0?`0.`+Array(-i).join(`0`)+r:r.length>i+1?r.slice(0,i+1)+`.`+r.slice(i+1):r+Array(i-r.length+2).join(`0`)}var Mh={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+``,d:bh,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>jh(e*100,t),r:jh,s:Ah,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function Nh(e){return e}var Ph=Array.prototype.map,Fh=[`y`,`z`,`a`,`f`,`p`,`n`,`µ`,`m`,``,`k`,`M`,`G`,`T`,`P`,`E`,`Z`,`Y`];function Ih(e){var t=e.grouping===void 0||e.thousands===void 0?Nh:Ch(Ph.call(e.grouping,Number),e.thousands+``),n=e.currency===void 0?``:e.currency[0]+``,r=e.currency===void 0?``:e.currency[1]+``,i=e.decimal===void 0?`.`:e.decimal+``,a=e.numerals===void 0?Nh:wh(Ph.call(e.numerals,String)),o=e.percent===void 0?`%`:e.percent+``,s=e.minus===void 0?`−`:e.minus+``,c=e.nan===void 0?`NaN`:e.nan+``;function l(e,l){e=Eh(e);var u=e.fill,d=e.align,f=e.sign,p=e.symbol,m=e.zero,h=e.width,g=e.comma,_=e.precision,v=e.trim,y=e.type;y===`n`?(g=!0,y=`g`):Mh[y]||(_===void 0&&(_=12),v=!0,y=`g`),(m||u===`0`&&d===`=`)&&(m=!0,u=`0`,d=`=`);var b=(l&&l.prefix!==void 0?l.prefix:``)+(p===`$`?n:p===`#`&&/[boxX]/.test(y)?`0`+y.toLowerCase():``),x=(p===`$`?r:/[%p]/.test(y)?o:``)+(l&&l.suffix!==void 0?l.suffix:``),S=Mh[y],C=/[defgprs%]/.test(y);_=_===void 0?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,_)):Math.max(0,Math.min(20,_));function w(e){var n=b,r=x,o,l,p;if(y===`c`)r=S(e)+r,e=``;else{e=+e;var w=e<0||1/e<0;if(e=isNaN(e)?c:S(Math.abs(e),_),v&&(e=Oh(e)),w&&+e==0&&f!==`+`&&(w=!1),n=(w?f===`(`?f:s:f===`-`||f===`(`?``:f)+n,r=(y===`s`&&!isNaN(e)&&kh!==void 0?Fh[8+kh/3]:``)+r+(w&&f===`(`?`)`:``),C){for(o=-1,l=e.length;++op||p>57){r=(p===46?i+e.slice(o+1):e.slice(o))+r,e=e.slice(0,o);break}}}g&&!m&&(e=t(e,1/0));var T=n.length+e.length+r.length,E=T>1)+n+e+r+E.slice(T);break;default:e=E+n+e+r}return a(e)}return w.toString=function(){return e+``},w}function u(e,t){var n=Math.max(-8,Math.min(8,Math.floor(Sh(t)/3)))*3,r=10**-n,i=l((e=Eh(e),e.type=`f`,e),{suffix:Fh[8+n/3]});return function(e){return i(r*e)}}return{format:l,formatPrefix:u}}var Lh,Rh,zh;Bh({thousands:`,`,grouping:[3],currency:[`$`,``]});function Bh(e){return Lh=Ih(e),Rh=Lh.format,zh=Lh.formatPrefix,Lh}function Vh(e){return Math.max(0,-Sh(Math.abs(e)))}function Hh(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Sh(t)/3)))*3-Sh(Math.abs(e)))}function Uh(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Sh(t)-Sh(e))+1}function Wh(e,t,n,r){var i=Up(e,t,n),a;switch(r=Eh(r??`,f`),r.type){case`s`:var o=Math.max(Math.abs(e),Math.abs(t));return r.precision==null&&!isNaN(a=Hh(i,o))&&(r.precision=a),zh(r,o);case``:case`e`:case`g`:case`p`:case`r`:r.precision==null&&!isNaN(a=Uh(i,Math.max(Math.abs(e),Math.abs(t))))&&(r.precision=a-(r.type===`e`));break;case`f`:case`%`:r.precision==null&&!isNaN(a=Vh(i))&&(r.precision=a-(r.type===`%`)*2)}return Rh(r)}function Gh(e){var t=e.domain;return e.ticks=function(e){var n=t();return Vp(n[0],n[n.length-1],e??10)},e.tickFormat=function(e,n){var r=t();return Wh(r[0],r[r.length-1],e??10,n)},e.nice=function(n){n??=10;var r=t(),i=0,a=r.length-1,o=r[i],s=r[a],c,l,u=10;for(s0;){if(l=Hp(o,s,n),l===c)return r[i]=o,r[a]=s,t(r);if(l>0)o=Math.floor(o/l)*l,s=Math.ceil(s/l)*l;else if(l<0)o=Math.ceil(o*l)/l,s=Math.floor(s*l)/l;else break;c=l}return e},e}function Kh(){var e=yh();return e.copy=function(){return _h(e,Kh())},Zp.apply(e,arguments),Gh(e)}function qh(e){var t;function n(e){return e==null||isNaN(e=+e)?t:e}return n.invert=n,n.domain=n.range=function(t){return arguments.length?(e=Array.from(t,uh),n):e.slice()},n.unknown=function(e){return arguments.length?(t=e,n):t},n.copy=function(){return qh(e).unknown(t)},e=arguments.length?Array.from(e,uh):[0,1],Gh(n)}function Jh(e,t){e=e.slice();var n=0,r=e.length-1,i=e[n],a=e[r],o;return ae**+t}function tg(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function ng(e){return(t,n)=>-e(-t,n)}function rg(e){let t=e(Yh,Xh),n=t.domain,r=10,i,a;function o(){return i=tg(r),a=eg(r),n()[0]<0?(i=ng(i),a=ng(a),e(Zh,Qh)):e(Yh,Xh),t}return t.base=function(e){return arguments.length?(r=+e,o()):r},t.domain=function(e){return arguments.length?(n(e),o()):n()},t.ticks=e=>{let t=n(),o=t[0],s=t[t.length-1],c=s0){for(;l<=u;++l)for(d=1;ds)break;m.push(f)}}else for(;l<=u;++l)for(d=r-1;d>=1;--d)if(f=l>0?d/a(-l):d*a(l),!(fs)break;m.push(f)}m.length*2{if(e??=10,n??=r===10?`s`:`,`,typeof n!=`function`&&(!(r%1)&&(n=Eh(n)).precision==null&&(n.trim=!0),n=Rh(n)),e===1/0)return n;let o=Math.max(1,r*e/t.ticks().length);return e=>{let t=e/a(Math.round(i(e)));return t*rn(Jh(n(),{floor:e=>a(Math.floor(i(e))),ceil:e=>a(Math.ceil(i(e)))})),t}function ig(){let e=rg(vh()).domain([1,10]);return e.copy=()=>_h(e,ig()).base(e.base()),Zp.apply(e,arguments),e}function ag(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function og(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function sg(e){var t=1,n=e(ag(t),og(t));return n.constant=function(n){return arguments.length?e(ag(t=+n),og(t)):t},Gh(n)}function cg(){var e=sg(vh());return e.copy=function(){return _h(e,cg()).constant(e.constant())},Zp.apply(e,arguments)}function lg(e){return function(t){return t<0?-((-t)**+e):t**+e}}function ug(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function dg(e){return e<0?-e*e:e*e}function fg(e){var t=e(fh,fh),n=1;function r(){return n===1?e(fh,fh):n===.5?e(ug,dg):e(lg(n),lg(1/n))}return t.exponent=function(e){return arguments.length?(n=+e,r()):n},Gh(t)}function pg(){var e=fg(vh());return e.copy=function(){return _h(e,pg()).exponent(e.exponent())},Zp.apply(e,arguments),e}function mg(){return pg.apply(null,arguments).exponent(.5)}function hg(e){return Math.sign(e)*e*e}function gg(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}function _g(){var e=yh(),t=[0,1],n=!1,r;function i(t){var i=gg(e(t));return isNaN(i)?r:n?Math.round(i):i}return i.invert=function(t){return e.invert(hg(t))},i.domain=function(t){return arguments.length?(e.domain(t),i):e.domain()},i.range=function(n){return arguments.length?(e.range((t=Array.from(n,uh)).map(hg)),i):t.slice()},i.rangeRound=function(e){return i.range(e).round(!0)},i.round=function(e){return arguments.length?(n=!!e,i):n},i.clamp=function(t){return arguments.length?(e.clamp(t),i):e.clamp()},i.unknown=function(e){return arguments.length?(r=e,i):r},i.copy=function(){return _g(e.domain(),t).round(n).clamp(e.clamp()).unknown(r)},Zp.apply(i,arguments),Gh(i)}function vg(){var e=[],t=[],n=[],r;function i(){var r=0,i=Math.max(1,t.length);for(n=Array(i-1);++r0?n[i-1]:e[0],i=n?[r[n-1],t]:[r[o-1],r[o]]},o.unknown=function(e){return arguments.length&&(a=e),o},o.thresholds=function(){return r.slice()},o.copy=function(){return yg().domain([e,t]).range(i).unknown(a)},Zp.apply(Gh(o),arguments)}function bg(){var e=[.5],t=[0,1],n,r=1;function i(i){return i!=null&&i<=i?t[kp(e,i,0,r)]:n}return i.domain=function(n){return arguments.length?(e=Array.from(n),r=Math.min(e.length,t.length-1),i):e.slice()},i.range=function(n){return arguments.length?(t=Array.from(n),r=Math.min(e.length,t.length-1),i):t.slice()},i.invertExtent=function(n){var r=t.indexOf(n);return[e[r-1],e[r]]},i.unknown=function(e){return arguments.length?(n=e,i):n},i.copy=function(){return bg().domain(e).range(t).unknown(n)},Zp.apply(i,arguments)}var xg=new Date,Sg=new Date;function J(e,t,n,r){function i(t){return e(t=arguments.length===0?new Date:new Date(+t)),t}return i.floor=t=>(e(t=new Date(+t)),t),i.ceil=n=>(e(n=new Date(n-1)),t(n,1),e(n),n),i.round=e=>{let t=i(e),n=i.ceil(e);return e-t(t(e=new Date(+e),n==null?1:Math.floor(n)),e),i.range=(n,r,a)=>{let o=[];if(n=i.ceil(n),a=a==null?1:Math.floor(a),!(n0))return o;let s;do o.push(s=new Date(+n)),t(n,a),e(n);while(sJ(t=>{if(t>=t)for(;e(t),!n(t);)t.setTime(t-1)},(e,r)=>{if(e>=e){if(r<0)for(;++r<=0;)for(;t(e,-1),!n(e););else for(;--r>=0;)for(;t(e,1),!n(e););}}),n&&(i.count=(t,r)=>(xg.setTime(+t),Sg.setTime(+r),e(xg),e(Sg),Math.floor(n(xg,Sg))),i.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?i.filter(r?t=>r(t)%e===0:t=>i.count(0,t)%e===0):i)),i}var Cg=J(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);Cg.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?J(t=>{t.setTime(Math.floor(t/e)*e)},(t,n)=>{t.setTime(+t+n*e)},(t,n)=>(n-t)/e):Cg),Cg.range;var wg=1e3,Tg=wg*60,Eg=Tg*60,Dg=Eg*24,Og=Dg*7,kg=Dg*30,Ag=Dg*365,jg=J(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*wg)},(e,t)=>(t-e)/wg,e=>e.getUTCSeconds());jg.range;var Mg=J(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*wg)},(e,t)=>{e.setTime(+e+t*Tg)},(e,t)=>(t-e)/Tg,e=>e.getMinutes());Mg.range;var Ng=J(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*Tg)},(e,t)=>(t-e)/Tg,e=>e.getUTCMinutes());Ng.range;var Pg=J(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*wg-e.getMinutes()*Tg)},(e,t)=>{e.setTime(+e+t*Eg)},(e,t)=>(t-e)/Eg,e=>e.getHours());Pg.range;var Fg=J(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*Eg)},(e,t)=>(t-e)/Eg,e=>e.getUTCHours());Fg.range;var Ig=J(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*Tg)/Dg,e=>e.getDate()-1);Ig.range;var Lg=J(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/Dg,e=>e.getUTCDate()-1);Lg.range;var Rg=J(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/Dg,e=>Math.floor(e/Dg));Rg.range;function zg(e){return J(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(e,t)=>{e.setDate(e.getDate()+t*7)},(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*Tg)/Og)}var Bg=zg(0),Vg=zg(1),Hg=zg(2),Ug=zg(3),Wg=zg(4),Gg=zg(5),Kg=zg(6);Bg.range,Vg.range,Hg.range,Ug.range,Wg.range,Gg.range,Kg.range;function qg(e){return J(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t*7)},(e,t)=>(t-e)/Og)}var Jg=qg(0),Yg=qg(1),Xg=qg(2),Zg=qg(3),Qg=qg(4),$g=qg(5),e_=qg(6);Jg.range,Yg.range,Xg.range,Zg.range,Qg.range,$g.range,e_.range;var t_=J(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth());t_.range;var n_=J(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth());n_.range;var r_=J(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());r_.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:J(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,n)=>{t.setFullYear(t.getFullYear()+n*e)}),r_.range;var i_=J(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());i_.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:J(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n*e)}),i_.range;function a_(e,t,n,r,i,a){let o=[[jg,1,wg],[jg,5,5*wg],[jg,15,15*wg],[jg,30,30*wg],[a,1,Tg],[a,5,5*Tg],[a,15,15*Tg],[a,30,30*Tg],[i,1,Eg],[i,3,3*Eg],[i,6,6*Eg],[i,12,12*Eg],[r,1,Dg],[r,2,2*Dg],[n,1,Og],[t,1,kg],[t,3,3*kg],[e,1,Ag]];function s(e,t,n){let r=te).right(o,i);if(a===o.length)return e.every(Up(t/Ag,n/Ag,r));if(a===0)return Cg.every(Math.max(Up(t,n,r),1));let[s,c]=o[i/o[a-1][2]53)return null;`w`in r||(r.w=1),`Z`in r?(a=d_(f_(r.y,0,1)),o=a.getUTCDay(),a=o>4||o===0?Yg.ceil(a):Yg(a),a=Lg.offset(a,(r.V-1)*7),r.y=a.getUTCFullYear(),r.m=a.getUTCMonth(),r.d=a.getUTCDate()+(r.w+6)%7):(a=u_(f_(r.y,0,1)),o=a.getDay(),a=o>4||o===0?Vg.ceil(a):Vg(a),a=Ig.offset(a,(r.V-1)*7),r.y=a.getFullYear(),r.m=a.getMonth(),r.d=a.getDate()+(r.w+6)%7)}else(`W`in r||`U`in r)&&(`w`in r||(r.w=`u`in r?r.u%7:+(`W`in r)),o=`Z`in r?d_(f_(r.y,0,1)).getUTCDay():u_(f_(r.y,0,1)).getDay(),r.m=0,r.d=`W`in r?(r.w+6)%7+r.W*7-(o+5)%7:r.w+r.U*7-(o+6)%7);return`Z`in r?(r.H+=r.Z/100|0,r.M+=r.Z%100,d_(r)):u_(r)}}function w(e,t,n,r){for(var i=0,a=t.length,o=n.length,s,c;i=o)return-1;if(s=t.charCodeAt(i++),s===37){if(s=t.charAt(i++),c=x[s in m_?t.charAt(i++):s],!c||(r=c(e,n,r))<0)return-1}else if(s!=n.charCodeAt(r++))return-1}return r}function T(e,t,n){var r=l.exec(t.slice(n));return r?(e.p=u.get(r[0].toLowerCase()),n+r[0].length):-1}function E(e,t,n){var r=p.exec(t.slice(n));return r?(e.w=m.get(r[0].toLowerCase()),n+r[0].length):-1}function D(e,t,n){var r=d.exec(t.slice(n));return r?(e.w=f.get(r[0].toLowerCase()),n+r[0].length):-1}function O(e,t,n){var r=_.exec(t.slice(n));return r?(e.m=v.get(r[0].toLowerCase()),n+r[0].length):-1}function k(e,t,n){var r=h.exec(t.slice(n));return r?(e.m=g.get(r[0].toLowerCase()),n+r[0].length):-1}function A(e,n,r){return w(e,t,n,r)}function j(e,t,r){return w(e,n,t,r)}function M(e,t,n){return w(e,r,t,n)}function N(e){return o[e.getDay()]}function ee(e){return a[e.getDay()]}function te(e){return c[e.getMonth()]}function ne(e){return s[e.getMonth()]}function re(e){return i[+(e.getHours()>=12)]}function ie(e){return 1+~~(e.getMonth()/3)}function P(e){return o[e.getUTCDay()]}function F(e){return a[e.getUTCDay()]}function ae(e){return c[e.getUTCMonth()]}function oe(e){return s[e.getUTCMonth()]}function I(e){return i[+(e.getUTCHours()>=12)]}function se(e){return 1+~~(e.getUTCMonth()/3)}return{format:function(e){var t=S(e+=``,y);return t.toString=function(){return e},t},parse:function(e){var t=C(e+=``,!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=S(e+=``,b);return t.toString=function(){return e},t},utcParse:function(e){var t=C(e+=``,!0);return t.toString=function(){return e},t}}}var m_={"-":``,_:` `,0:`0`},h_=/^\s*\d+/,g_=/^%/,__=/[\\^$*+?|[\]().{}]/g;function Y(e,t,n){var r=e<0?`-`:``,i=(r?-e:e)+``,a=i.length;return r+(a[e.toLowerCase(),t]))}function x_(e,t,n){var r=h_.exec(t.slice(n,n+1));return r?(e.w=+r[0],n+r[0].length):-1}function S_(e,t,n){var r=h_.exec(t.slice(n,n+1));return r?(e.u=+r[0],n+r[0].length):-1}function C_(e,t,n){var r=h_.exec(t.slice(n,n+2));return r?(e.U=+r[0],n+r[0].length):-1}function w_(e,t,n){var r=h_.exec(t.slice(n,n+2));return r?(e.V=+r[0],n+r[0].length):-1}function T_(e,t,n){var r=h_.exec(t.slice(n,n+2));return r?(e.W=+r[0],n+r[0].length):-1}function E_(e,t,n){var r=h_.exec(t.slice(n,n+4));return r?(e.y=+r[0],n+r[0].length):-1}function D_(e,t,n){var r=h_.exec(t.slice(n,n+2));return r?(e.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function O_(e,t,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||`00`)),n+r[0].length):-1}function k_(e,t,n){var r=h_.exec(t.slice(n,n+1));return r?(e.q=r[0]*3-3,n+r[0].length):-1}function A_(e,t,n){var r=h_.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function j_(e,t,n){var r=h_.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function M_(e,t,n){var r=h_.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function N_(e,t,n){var r=h_.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function P_(e,t,n){var r=h_.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function F_(e,t,n){var r=h_.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function I_(e,t,n){var r=h_.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function L_(e,t,n){var r=h_.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function R_(e,t,n){var r=g_.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function z_(e,t,n){var r=h_.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function B_(e,t,n){var r=h_.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function V_(e,t){return Y(e.getDate(),t,2)}function H_(e,t){return Y(e.getHours(),t,2)}function U_(e,t){return Y(e.getHours()%12||12,t,2)}function W_(e,t){return Y(1+Ig.count(r_(e),e),t,3)}function G_(e,t){return Y(e.getMilliseconds(),t,3)}function K_(e,t){return G_(e,t)+`000`}function q_(e,t){return Y(e.getMonth()+1,t,2)}function J_(e,t){return Y(e.getMinutes(),t,2)}function Y_(e,t){return Y(e.getSeconds(),t,2)}function X_(e){var t=e.getDay();return t===0?7:t}function Z_(e,t){return Y(Bg.count(r_(e)-1,e),t,2)}function Q_(e){var t=e.getDay();return t>=4||t===0?Wg(e):Wg.ceil(e)}function $_(e,t){return e=Q_(e),Y(Wg.count(r_(e),e)+(r_(e).getDay()===4),t,2)}function ev(e){return e.getDay()}function tv(e,t){return Y(Vg.count(r_(e)-1,e),t,2)}function nv(e,t){return Y(e.getFullYear()%100,t,2)}function rv(e,t){return e=Q_(e),Y(e.getFullYear()%100,t,2)}function iv(e,t){return Y(e.getFullYear()%1e4,t,4)}function av(e,t){var n=e.getDay();return e=n>=4||n===0?Wg(e):Wg.ceil(e),Y(e.getFullYear()%1e4,t,4)}function ov(e){var t=e.getTimezoneOffset();return(t>0?`-`:(t*=-1,`+`))+Y(t/60|0,`0`,2)+Y(t%60,`0`,2)}function sv(e,t){return Y(e.getUTCDate(),t,2)}function cv(e,t){return Y(e.getUTCHours(),t,2)}function lv(e,t){return Y(e.getUTCHours()%12||12,t,2)}function uv(e,t){return Y(1+Lg.count(i_(e),e),t,3)}function dv(e,t){return Y(e.getUTCMilliseconds(),t,3)}function fv(e,t){return dv(e,t)+`000`}function pv(e,t){return Y(e.getUTCMonth()+1,t,2)}function mv(e,t){return Y(e.getUTCMinutes(),t,2)}function hv(e,t){return Y(e.getUTCSeconds(),t,2)}function gv(e){var t=e.getUTCDay();return t===0?7:t}function _v(e,t){return Y(Jg.count(i_(e)-1,e),t,2)}function vv(e){var t=e.getUTCDay();return t>=4||t===0?Qg(e):Qg.ceil(e)}function yv(e,t){return e=vv(e),Y(Qg.count(i_(e),e)+(i_(e).getUTCDay()===4),t,2)}function bv(e){return e.getUTCDay()}function xv(e,t){return Y(Yg.count(i_(e)-1,e),t,2)}function Sv(e,t){return Y(e.getUTCFullYear()%100,t,2)}function Cv(e,t){return e=vv(e),Y(e.getUTCFullYear()%100,t,2)}function wv(e,t){return Y(e.getUTCFullYear()%1e4,t,4)}function Tv(e,t){var n=e.getUTCDay();return e=n>=4||n===0?Qg(e):Qg.ceil(e),Y(e.getUTCFullYear()%1e4,t,4)}function Ev(){return`+0000`}function Dv(){return`%`}function Ov(e){return+e}function kv(e){return Math.floor(e/1e3)}var Av,jv,Mv;Nv({dateTime:`%x, %X`,date:`%-m/%-d/%Y`,time:`%-I:%M:%S %p`,periods:[`AM`,`PM`],days:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],shortDays:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],months:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],shortMonths:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`]});function Nv(e){return Av=p_(e),jv=Av.format,Av.parse,Mv=Av.utcFormat,Av.utcParse,Av}function Pv(e){return new Date(e)}function Fv(e){return e instanceof Date?+e:+new Date(+e)}function Iv(e,t,n,r,i,a,o,s,c,l){var u=yh(),d=u.invert,f=u.domain,p=l(`.%L`),m=l(`:%S`),h=l(`%I:%M`),g=l(`%I %p`),_=l(`%a %d`),v=l(`%b %d`),y=l(`%B`),b=l(`%Y`);function x(e){return(c(e)t(r/(e.length-1)))},n.quantiles=function(t){return Array.from({length:t+1},(n,r)=>Jp(e,r/t))},n.copy=function(){return Kv(t).domain(e)},Qp.apply(n,arguments)}function qv(){var e=0,t=.5,n=1,r=1,i,a,o,s,c,l=fh,u,d=!1,f;function p(e){return isNaN(e=+e)?f:(e=.5+((e=+u(e))-a)*(r*etm,scaleDiverging:()=>Jv,scaleDivergingLog:()=>Yv,scaleDivergingPow:()=>Zv,scaleDivergingSqrt:()=>Qv,scaleDivergingSymlog:()=>Xv,scaleIdentity:()=>qh,scaleImplicit:()=>$p,scaleLinear:()=>Kh,scaleLog:()=>ig,scaleOrdinal:()=>em,scalePoint:()=>rm,scalePow:()=>pg,scaleQuantile:()=>vg,scaleQuantize:()=>yg,scaleRadial:()=>_g,scaleSequential:()=>Vv,scaleSequentialLog:()=>Hv,scaleSequentialPow:()=>Wv,scaleSequentialQuantile:()=>Kv,scaleSequentialSqrt:()=>Gv,scaleSequentialSymlog:()=>Uv,scaleSqrt:()=>mg,scaleSymlog:()=>cg,scaleThreshold:()=>bg,scaleTime:()=>Lv,scaleUtc:()=>Rv,tickFormat:()=>Wh});function ey(e){var t=$v;if(e in t&&typeof t[e]==`function`)return t[e]();var n=`scale${he(e)}`;if(n in t&&typeof t[n]==`function`)return t[n]()}function ty(e,t,n){if(typeof e==`function`)return e.copy().domain(t).range(n);if(e!=null){var r=ey(e);if(r!=null)return r.domain(t).range(n),r}}function ny(e,t,n,r){if(n!=null&&r!=null)return typeof e.scale==`function`?ty(e.scale,n,r):ty(t,n,r)}function ry(e){return`scale${he(e)}`}function iy(e){return ry(e)in $v}var ay=(e,t,n)=>{if(e!=null){var r=e.scale,i=e.type;if(r===`auto`)return i===`category`&&n&&(n.indexOf(`LineChart`)>=0||n.indexOf(`AreaChart`)>=0||n.indexOf(`ComposedChart`)>=0&&!t)?`point`:i===`category`?`band`:`linear`;if(typeof r==`string`)return iy(r)?r:`point`}};function oy(e,t){for(var n=0,r=e.length,i=e[0]t)?n=a+1:r=a}return n}function sy(e,t){if(e){var n=t??e.domain(),r=n.map(t=>e(t)??0),i=e.range();if(!(n.length===0||i.length<2))return e=>{var t=oy(r,e);if(t<=0)return n[0];if(t>=n.length)return n[n.length-1];var i=r[t-1]??0,a=r[t]??0;return Math.abs(e-i)<=Math.abs(e-a)?n[t-1]:n[t]}}}function cy(e){if(e!=null)return`invert`in e&&typeof e.invert==`function`?e.invert.bind(e):sy(e,void 0)}function ly(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function uy(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);ne.cartesianAxis.xAxis[t],Sy=(e,t)=>xy(e,t)??X,Z={allowDataOverflow:!1,allowDecimals:!0,allowDuplicatedCategory:!0,angle:0,dataKey:void 0,domain:by,hide:!0,id:0,includeHidden:!1,interval:`preserveEnd`,minTickGap:5,mirror:!1,name:void 0,orientation:`left`,padding:{top:0,bottom:0},reversed:!1,scale:`auto`,tick:!0,tickCount:5,tickFormatter:void 0,ticks:void 0,type:`number`,unit:void 0,niceTicks:`auto`,width:60},Cy=(e,t)=>e.cartesianAxis.yAxis[t],wy=(e,t)=>Cy(e,t)??Z,Ty={domain:[0,`auto`],includeHidden:!1,reversed:!1,allowDataOverflow:!1,allowDuplicatedCategory:!1,dataKey:void 0,id:0,name:``,range:[64,64],scale:`auto`,type:`number`,unit:``},Ey=(e,t)=>e.cartesianAxis.zAxis[t]??Ty,Dy=(e,t,n)=>{switch(t){case`xAxis`:return Sy(e,n);case`yAxis`:return wy(e,n);case`zAxis`:return Ey(e,n);case`angleAxis`:return np(e,n);case`radiusAxis`:return rp(e,n);default:throw Error(`Unexpected axis type: ${t}`)}},Oy=(e,t,n)=>{switch(t){case`xAxis`:return Sy(e,n);case`yAxis`:return wy(e,n);default:throw Error(`Unexpected axis type: ${t}`)}},ky=(e,t,n)=>{switch(t){case`xAxis`:return Sy(e,n);case`yAxis`:return wy(e,n);case`angleAxis`:return np(e,n);case`radiusAxis`:return rp(e,n);default:throw Error(`Unexpected axis type: ${t}`)}},Ay=e=>e.graphicalItems.cartesianItems.some(e=>e.type===`bar`)||e.graphicalItems.polarItems.some(e=>e.type===`radialBar`);function jy(e,t){return n=>{switch(e){case`xAxis`:return`xAxisId`in n&&n.xAxisId===t;case`yAxis`:return`yAxisId`in n&&n.yAxisId===t;case`zAxis`:return`zAxisId`in n&&n.zAxisId===t;case`angleAxis`:return`angleAxisId`in n&&n.angleAxisId===t;case`radiusAxis`:return`radiusAxisId`in n&&n.radiusAxisId===t;default:return!1}}}var My=e=>e.graphicalItems.cartesianItems,Ny=B([q,dp],jy),Py=(e,t,n)=>e.filter(n).filter(e=>t?.includeHidden===!0||!e.hide),Fy=B([My,Dy,Ny],Py,{memoizeOptions:{resultEqualityCheck:gp}}),Iy=B([Fy],e=>e.filter(e=>e.type===`area`||e.type===`bar`).filter(mp)),Ly=e=>e.filter(e=>!(`stackId`in e)||e.stackId===void 0),Ry=B([Fy],Ly),zy=e=>e.map(e=>e.data).filter(Boolean).flat(1),By=B([Fy],e=>e.some(e=>!e.data)),Vy=B([Fy],zy,{memoizeOptions:{resultEqualityCheck:gp}}),Hy=(e,t)=>{var n=t.chartData,r=n===void 0?[]:n,i=t.dataStartIndex,a=t.dataEndIndex;return e.length>0?e:r.slice(i,a+1)},Uy=B([Vy,of],Hy),Wy=(e,t,n)=>t?.dataKey==null?n.length>0?n.map(e=>e.dataKey).flatMap(t=>e.map(e=>({value:W(e,t)}))):e.map(e=>({value:e})):e.map(e=>({value:W(e,t.dataKey)})),Gy=(e,t,n,r,i,a)=>{var o=r.chartData,s=o===void 0?[]:o,c=r.dataStartIndex,l=r.dataEndIndex,u=Wy(e,t,n);return i&&t?.dataKey!=null&&a.length>0?[...s.slice(c,l+1).map(e=>({value:W(e,t.dataKey)})).filter(e=>e.value!=null),...u]:u},Ky=B([Uy,Dy,Fy,of,By,Vy],Gy);function qy(e){if(se(e)||e instanceof Date){var t=Number(e);if(U(t))return t}}function Jy(e){if(Array.isArray(e)){var t=[qy(e[0]),qy(e[1])];return _f(t)?t:void 0}var n=qy(e);if(n!=null)return[n,n]}function Yy(e){return e.map(qy).filter(ge)}function Xy(e,t){var n=qy(e),r=qy(t);return n==null&&r==null?0:n==null?-1:r==null?1:n-r}var Zy=B([Ky],e=>e?.map(e=>e.value).sort(Xy));function Qy(e,t){switch(e){case`xAxis`:return t.direction===`x`;case`yAxis`:return t.direction===`y`;default:return!1}}function $y(e,t,n){if(!n||!n.length)return[];var r;if(typeof t==`number`&&!ae(t))r=t;else if(Array.isArray(t)){var i=Yy(t);i.length>0&&(r=Math.max(...i))}return r==null?[]:Yy(n.flatMap(t=>{var n=W(e,t.dataKey),i,a;if(Array.isArray(n)){var o=my(n,2);i=o[0],a=o[1]}else i=a=n;if(U(i)&&U(a))return[r-i,r+a]}))}var Q=e=>ky(e,vp(e),yp(e)),eb=B([Q],e=>e?.dataKey),tb=B([Iy,of,Q],pp),nb=(e,t,n,r)=>{var i=t.reduce((e,t)=>{if(t.stackId==null)return e;var n=e[t.stackId];return n??=[],n.push(t),e[t.stackId]=n,e},{});return Object.fromEntries(Object.entries(i).map(t=>{var i=my(t,2),a=i[0],o=i[1],s=r?[...o].reverse():o;return[a,{stackedData:Jo(e,s.map(fp),n),graphicalItems:s}]}))},rb=B([tb,Iy,Lf,Rf],nb),ib=(e,t,n,r)=>{var i=t.dataStartIndex,a=t.dataEndIndex;if(r==null&&n!==`zAxis`)return $o(e,i,a)},ab=B([Dy],e=>e.allowDataOverflow),ob=e=>{if(e==null||!(`domain`in e))return by;if(e.domain!=null)return e.domain;if(`ticks`in e&&e.ticks!=null){if(e.type===`number`){var t=Yy(e.ticks);return[Math.min(...t),Math.max(...t)]}if(e.type===`category`)return e.ticks.map(String)}return e?.domain??by},sb=B([Dy],ob),cb=B([sb,ab],yf),lb=B([rb,rf,q,cb],ib,{memoizeOptions:{resultEqualityCheck:hp}}),ub=e=>e.errorBars,db=(e,t,n)=>e.flatMap(e=>t[e.id]).filter(Boolean).filter(e=>Qy(n,e)),fb=function(){var e=[...arguments].filter(Boolean);if(e.length!==0){var t=e.flat();return[Math.min(...t),Math.max(...t)]}},pb=function(e,t,n,r,i){var a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:[],o,s;if(n.length>0&&n.forEach(e=>{var n=e.data==null?a:[...e.data],c=r[e.id]?.filter(e=>Qy(i,e));n.forEach(n=>{var r=W(n,t.dataKey??e.dataKey),i=$y(n,r,c);if(i.length>=2){var a=Math.min(...i),l=Math.max(...i);(o==null||as)&&(s=l)}var u=Jy(r);u!=null&&(o=o==null?u[0]:Math.min(o,u[0]),s=s==null?u[1]:Math.max(s,u[1]))})}),t?.dataKey!=null&&n.length===0&&e.forEach(e=>{var n=Jy(W(e,t.dataKey));n!=null&&(o=o==null?n[0]:Math.min(o,n[0]),s=s==null?n[1]:Math.max(s,n[1]))}),U(o)&&U(s))return[o,s]},mb=B([Uy,Dy,Ry,ub,q,cf],pb,{memoizeOptions:{resultEqualityCheck:hp}});function hb(e){var t=e.value;if(se(t)||t instanceof Date)return t}var gb=(e,t,n)=>{var r=e.map(hb).filter(e=>e!=null);return n&&(t.dataKey==null||t.allowDuplicatedCategory&&de(r))?nf(0,e.length):t.allowDuplicatedCategory?r:Array.from(new Set(r))},_b=e=>e.referenceElements.dots,vb=(e,t,n)=>e.filter(e=>e.ifOverflow===`extendDomain`).filter(e=>t===`xAxis`?e.xAxisId===n:e.yAxisId===n),yb=B([_b,q,dp],vb),bb=e=>e.referenceElements.areas,xb=B([bb,q,dp],vb),Sb=e=>e.referenceElements.lines,Cb=B([Sb,q,dp],vb),wb=(e,t)=>{if(e!=null){var n=Yy(e.map(e=>t===`xAxis`?e.x:e.y));if(n.length!==0)return[Math.min(...n),Math.max(...n)]}},Tb=B(yb,q,wb),Eb=(e,t)=>{if(e!=null){var n=Yy(e.flatMap(e=>[t===`xAxis`?e.x1:e.y1,t===`xAxis`?e.x2:e.y2]));if(n.length!==0)return[Math.min(...n),Math.max(...n)]}},Db=B([xb,q],Eb);function Ob(e){if(e.x!=null)return Yy([e.x]);var t=e.segment?.map(e=>e.x);return t==null||t.length===0?[]:Yy(t)}function kb(e){if(e.y!=null)return Yy([e.y]);var t=e.segment?.map(e=>e.y);return t==null||t.length===0?[]:Yy(t)}var Ab=(e,t)=>{if(e!=null){var n=e.flatMap(e=>t===`xAxis`?Ob(e):kb(e));if(n.length!==0)return[Math.min(...n),Math.max(...n)]}},jb=B(Tb,B([Cb,q],Ab),Db,(e,t,n)=>fb(e,n,t)),Mb=(e,t,n,r,i,a,o,s,c)=>{if(n!=null)return n;var l=o===`vertical`&&s===`xAxis`||o===`horizontal`&&s===`yAxis`?fb(r,a,i):fb(a,i),u=bf(t,l,e.allowDataOverflow);return u==null&&e.allowDataOverflow&&l==null&&c!=null?c:u},Nb=B([Dy,sb,cb,lb,mb,jb,G,q,B([Dy],e=>{if(e!=null&&e.type===`number`&&`ticks`in e&&e.ticks!=null){var t=Yy(e.ticks);if(t.length!==0)return[Math.min(...t),Math.max(...t)]}},{memoizeOptions:{resultEqualityCheck:hp}})],Mb,{memoizeOptions:{resultEqualityCheck:hp}}),Pb=[0,1],Fb=(e,t,n,r,i,a,o)=>{if(e!=null&&n!=null&&n.length!==0||o!==void 0){var s=e.dataKey,c=e.type,l=Wo(t,a);return l&&s==null?nf(0,n?.length??0):c===`category`?gb(r,e,l):i===`expand`&&!l?Pb:o}},Ib=B([Dy,G,Uy,Ky,Lf,q,Nb],Fb),Lb=B([Dy,Ay,zf],ay),Rb=(e,t,n)=>{var r=t.niceTicks;if(r!==`none`){var i=ob(t),a=Array.isArray(i)&&(i[0]===`auto`||i[1]===`auto`);if((r===`snap125`||r===`adaptive`)&&t!=null&&t.tickCount&&_f(e)){if(a)return Pf(e,t.tickCount,t.allowDecimals,r);if(t.type===`number`)return Ff(e,t.tickCount,t.allowDecimals,r)}if(r===`auto`&&n===`linear`&&t!=null&&t.tickCount){if(a&&_f(e))return Pf(e,t.tickCount,t.allowDecimals,`adaptive`);if(t.type===`number`&&_f(e))return Ff(e,t.tickCount,t.allowDecimals,`adaptive`)}}},zb=B([Ib,ky,Lb],Rb),Bb=(e,t,n,r)=>{if(r!==`angleAxis`&&e?.type===`number`&&_f(t)&&Array.isArray(n)&&n.length>0){var i=t[0],a=n[0]??0,o=t[1],s=n[n.length-1]??0;return[Math.min(i,a),Math.max(o,s)]}return t},Vb=B([Dy,Ib,zb,q],Bb),Hb=B(B(Ky,Dy,(e,t)=>{if(t&&t.type===`number`){var n=1/0,r=Array.from(Yy(e.map(e=>e.value))).sort((e,t)=>e-t),i=r[0],a=r[r.length-1];if(i==null||a==null)return 1/0;var o=a-i;if(o===0)return 1/0;for(var s=0;si,(e,t,n,r,i)=>{if(!U(e))return 0;var a=t===`vertical`?r.height:r.width;if(i===`gap`)return e*a/2;if(i===`no-gap`){var o=ue(n,e*a),s=e*a/2;return s-o-(s-o)/a*o}return 0}),Ub=(e,t,n)=>{var r=Sy(e,t);return r==null||typeof r.padding!=`string`?0:Hb(e,`xAxis`,t,n,r.padding)},Wb=(e,t,n)=>{var r=wy(e,t);return r==null||typeof r.padding!=`string`?0:Hb(e,`yAxis`,t,n,r.padding)},Gb=B(Sy,Ub,(e,t)=>{if(e==null)return{left:0,right:0};var n=e.padding;return typeof n==`string`?{left:t,right:t}:{left:(n.left??0)+t,right:(n.right??0)+t}}),Kb=B(wy,Wb,(e,t)=>{if(e==null)return{top:0,bottom:0};var n=e.padding;return typeof n==`string`?{top:t,bottom:t}:{top:(n.top??0)+t,bottom:(n.bottom??0)+t}}),qb=B([Ts,Gb,js,As,(e,t,n)=>n],(e,t,n,r,i)=>{var a=r.padding;return i?[a.left,n.width-a.right]:[e.left+t.left,e.left+e.width-t.right]}),Jb=B([Ts,G,Kb,js,As,(e,t,n)=>n],(e,t,n,r,i,a)=>{var o=i.padding;return a?[r.height-o.bottom,o.top]:t===`horizontal`?[e.top+e.height-n.bottom,e.top+n.top]:[e.top+n.top,e.top+e.height-n.bottom]}),Yb=(e,t,n,r)=>{switch(t){case`xAxis`:return qb(e,n,r);case`yAxis`:return Jb(e,n,r);case`zAxis`:return Ey(e,n)?.range;case`angleAxis`:return cp(e);case`radiusAxis`:return lp(e,n);default:return}},Xb=B([Dy,Yb],qf),Zb=B([Dy,Lb,B([Lb,Vb],xp),Xb],ny),Qb=(e,t,n,r)=>{if(n!=null&&n.dataKey!=null){var i=n.type,a=n.scale;if(Wo(e,r)&&(i===`number`||a!==`auto`))return t.map(e=>e.value)}},$b=B([G,Ky,ky,q],Qb),ex=B([Zb],bp);B([Zb],cy),B([Zb,Zy],sy),B([Fy,ub,q],db);function tx(e,t){return e.idt.id)}var nx=(e,t)=>t,rx=(e,t,n)=>n,ix=B(ds,nx,rx,(e,t,n)=>e.filter(e=>e.orientation===t).filter(e=>e.mirror===n).sort(tx)),ax=B(fs,nx,rx,(e,t,n)=>e.filter(e=>e.orientation===t).filter(e=>e.mirror===n).sort(tx)),ox=(e,t)=>{var n=typeof t.height==`number`?t.height:30;return{width:e.width,height:n}},sx=(e,t)=>({width:typeof t.width==`number`?t.width:60,height:e.height}),cx=B(Ts,Sy,ox),lx=(e,t,n)=>{switch(t){case`top`:return e.top;case`bottom`:return n-e.bottom;default:return 0}},ux=(e,t,n)=>{switch(t){case`left`:return e.left;case`right`:return n-e.right;default:return 0}},dx=B(cs,Ts,ix,nx,rx,(e,t,n,r,i)=>{var a={},o;return n.forEach(n=>{var s=ox(t,n);o??=lx(t,r,e);var c=r===`top`&&!i||r===`bottom`&&i;a[n.id]=o-Number(c)*s.height,o+=(c?-1:1)*s.height}),a}),fx=B(ss,Ts,ax,nx,rx,(e,t,n,r,i)=>{var a={},o;return n.forEach(n=>{var s=sx(t,n);o??=ux(t,r,e);var c=r===`left`&&!i||r===`right`&&i;a[n.id]=o-Number(c)*s.width,o+=(c?-1:1)*s.width}),a}),px=B([Ts,Sy,(e,t)=>{var n=Sy(e,t);if(n!=null)return dx(e,n.orientation,n.mirror)},(e,t)=>t],(e,t,n,r)=>{if(t!=null){var i=n?.[r];return i==null?{x:e.left,y:0}:{x:e.left,y:i}}}),mx=B([Ts,wy,(e,t)=>{var n=wy(e,t);if(n!=null)return fx(e,n.orientation,n.mirror)},(e,t)=>t],(e,t,n,r)=>{if(t!=null){var i=n?.[r];return i==null?{x:0,y:e.top}:{x:i,y:e.top}}}),hx=B(Ts,wy,(e,t)=>({width:typeof t.width==`number`?t.width:60,height:e.height})),gx=(e,t,n,r)=>{if(n!=null){var i=n.allowDuplicatedCategory,a=n.type,o=n.dataKey,s=Wo(e,r),c=t.map(e=>e.value),l=c.filter(e=>e!=null);if(o&&s&&a===`category`&&i&&de(l))return c}},_x=B([G,Ky,Dy,q],gx),vx=B([G,Oy,Lb,ex,_x,$b,Yb,zb,q],(e,t,n,r,i,a,o,s,c)=>{if(t!=null){var l=Wo(e,c);return{angle:t.angle,interval:t.interval,minTickGap:t.minTickGap,orientation:t.orientation,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit,axisType:c,categoricalDomain:a,duplicateDomain:i,isCategorical:l,niceTicks:s,range:o,realScaleType:n,scale:r}}}),yx=B([G,ky,Lb,ex,zb,Yb,_x,$b,q],(e,t,n,r,i,a,o,s,c)=>{if(t!=null&&r!=null){var l=Wo(e,c),u=t.type,d=t.ticks,f=t.tickCount,p=n===`scaleBand`&&typeof r.bandwidth==`function`?r.bandwidth()/2:2,m=u===`category`&&r.bandwidth?r.bandwidth()/p:0;m=c===`angleAxis`&&a!=null&&a.length>=2?F(a[0]-a[1])*2*m:m;var h=d||i;return h?h.map((e,t)=>{var n=o?o.indexOf(e):e,i=r.map(n);return U(i)?{index:t,coordinate:i+m,value:e,offset:m}:null}).filter(ge):l&&s?s.map((e,t)=>{var n=r.map(e);return U(n)?{coordinate:n+m,value:e,index:t,offset:m}:null}).filter(ge):r.ticks?r.ticks(f).map((e,t)=>{var n=r.map(e);return U(n)?{coordinate:n+m,value:e,index:t,offset:m}:null}).filter(ge):r.domain().map((e,t)=>{var n=r.map(e);return U(n)?{coordinate:n+m,value:o?o[e]:e,index:t,offset:m}:null}).filter(ge)}}),bx=B([G,ky,ex,Yb,_x,$b,q],(e,t,n,r,i,a,o)=>{if(t!=null&&n!=null&&r!=null&&r[0]!==r[1]){var s=Wo(e,o),c=t.tickCount,l=0;return l=o===`angleAxis`&&r?.length>=2?F(r[0]-r[1])*2*l:l,s&&a?a.map((e,t)=>{var r=n.map(e);return U(r)?{coordinate:r+l,value:e,index:t,offset:l}:null}).filter(ge):n.ticks?n.ticks(c).map((e,t)=>{var r=n.map(e);return U(r)?{coordinate:r+l,value:e,index:t,offset:l}:null}).filter(ge):n.domain().map((e,t)=>{var r=n.map(e);return U(r)?{coordinate:r+l,value:i?i[e]:e,index:t,offset:l}:null}).filter(ge)}}),xx=B(Dy,ex,(e,t)=>{if(e!=null&&t!=null)return uy(uy({},e),{},{scale:t})});B((e,t,n)=>Ey(e,n),B([B([Dy,Lb,Ib,Xb],ny)],bp),(e,t)=>{if(e!=null&&t!=null)return uy(uy({},e),{},{scale:t})});var Sx=B([G,ds,fs],(e,t,n)=>{switch(e){case`horizontal`:return t.some(e=>e.reversed)?`right-to-left`:`left-to-right`;case`vertical`:return n.some(e=>e.reversed)?`bottom-to-top`:`top-to-bottom`;case`centric`:case`radial`:return`left-to-right`;default:return}});B([(e,t,n)=>e.renderedTicks[t]?.[n]],e=>{if(e&&e.length!==0)return t=>{var n=1/0,r=e[0];for(var i of e){var a=Math.abs(i.coordinate-t);ae.options.defaultTooltipEventType,wx=e=>e.options.validateTooltipEventTypes;function Tx(e,t,n){if(e==null)return t;var r=e?`axis`:`item`;return n==null?t:n.includes(r)?r:t}function Ex(e,t){return Tx(t,Cx(e),wx(e))}function Dx(e){return z(t=>Ex(t,e))}var Ox=(e,t)=>{var n,r=Number(t);if(!(ae(r)||t==null))return r>=0?e==null||(n=e[r])==null?void 0:n.value:void 0},kx=e=>e.tooltip.settings,Ax={active:!1,index:null,dataKey:void 0,graphicalItemId:void 0,coordinate:void 0},jx=Ba({name:`tooltip`,initialState:{itemInteraction:{click:Ax,hover:Ax},axisInteraction:{click:Ax,hover:Ax},keyboardInteraction:Ax,syncInteraction:{active:!1,index:null,dataKey:void 0,label:void 0,coordinate:void 0,sourceViewBox:void 0,graphicalItemId:void 0},tooltipItemPayloads:[],settings:{shared:void 0,trigger:`hover`,axisId:0,active:!1,defaultIndex:void 0}},reducers:{addTooltipEntrySettings:{reducer(e,t){e.tooltipItemPayloads.push(V(t.payload))},prepare:H()},replaceTooltipEntrySettings:{reducer(e,t){var n=t.payload,r=n.prev,i=n.next,a=fa(e).tooltipItemPayloads.indexOf(V(r));a>-1&&(e.tooltipItemPayloads[a]=V(i))},prepare:H()},removeTooltipEntrySettings:{reducer(e,t){var n=fa(e).tooltipItemPayloads.indexOf(V(t.payload));n>-1&&e.tooltipItemPayloads.splice(n,1)},prepare:H()},setTooltipSettingsState(e,t){e.settings=t.payload},setActiveMouseOverItemIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.keyboardInteraction.active=!1,e.itemInteraction.hover.active=!0,e.itemInteraction.hover.index=t.payload.activeIndex,e.itemInteraction.hover.dataKey=t.payload.activeDataKey,e.itemInteraction.hover.graphicalItemId=t.payload.activeGraphicalItemId,e.itemInteraction.hover.coordinate=t.payload.activeCoordinate},mouseLeaveChart(e){e.itemInteraction.hover.active=!1,e.axisInteraction.hover.active=!1},mouseLeaveItem(e){e.itemInteraction.hover.active=!1},setActiveClickItemIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.itemInteraction.click.active=!0,e.keyboardInteraction.active=!1,e.itemInteraction.click.index=t.payload.activeIndex,e.itemInteraction.click.dataKey=t.payload.activeDataKey,e.itemInteraction.click.graphicalItemId=t.payload.activeGraphicalItemId,e.itemInteraction.click.coordinate=t.payload.activeCoordinate},setMouseOverAxisIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.axisInteraction.hover.active=!0,e.keyboardInteraction.active=!1,e.axisInteraction.hover.index=t.payload.activeIndex,e.axisInteraction.hover.dataKey=t.payload.activeDataKey,e.axisInteraction.hover.coordinate=t.payload.activeCoordinate},setMouseClickAxisIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.keyboardInteraction.active=!1,e.axisInteraction.click.active=!0,e.axisInteraction.click.index=t.payload.activeIndex,e.axisInteraction.click.dataKey=t.payload.activeDataKey,e.axisInteraction.click.coordinate=t.payload.activeCoordinate},setSyncInteraction(e,t){e.syncInteraction=t.payload},setKeyboardInteraction(e,t){e.keyboardInteraction.active=t.payload.active,e.keyboardInteraction.index=t.payload.activeIndex,e.keyboardInteraction.coordinate=t.payload.activeCoordinate}}}),Mx=jx.actions,Nx=Mx.addTooltipEntrySettings,Px=Mx.replaceTooltipEntrySettings,Fx=Mx.removeTooltipEntrySettings,Ix=Mx.setTooltipSettingsState,Lx=Mx.setActiveMouseOverItemIndex,Rx=Mx.mouseLeaveItem,zx=Mx.mouseLeaveChart,Bx=Mx.setActiveClickItemIndex,Vx=Mx.setMouseOverAxisIndex,Hx=Mx.setMouseClickAxisIndex,Ux=Mx.setSyncInteraction,Wx=Mx.setKeyboardInteraction,Gx=jx.reducer;function Kx(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function qx(e){for(var t=1;t{if(t==null)return Ax;var i=Zx(e,t,n);if(i==null)return Ax;if(i.active)return i;if(e.keyboardInteraction.active)return e.keyboardInteraction;if(e.syncInteraction.active&&e.syncInteraction.index!=null)return e.syncInteraction;var a=e.settings.active===!0;if(Qx(i)){if(a)return qx(qx({},i),{},{active:!0})}else if(r!=null)return{active:!0,coordinate:void 0,dataKey:void 0,index:r,graphicalItemId:void 0};return qx(qx({},Ax),{},{coordinate:i.coordinate})};function eS(e){if(typeof e==`number`)return Number.isFinite(e)?e:void 0;if(e instanceof Date){var t=e.valueOf();return Number.isFinite(t)?t:void 0}var n=Number(e);return Number.isFinite(n)?n:void 0}function tS(e,t){var n=eS(e),r=t[0],i=t[1];return n!==void 0&&n>=Math.min(r,i)&&n<=Math.max(r,i)}function nS(e,t,n){if(n==null||t==null)return!0;var r=W(e,t);return r==null||!_f(n)||tS(r,n)}var rS=(e,t,n,r)=>{var i=e?.index;if(i==null)return null;var a=Number(i);if(!U(a))return i;var o=0,s=1/0;t.length>0&&(s=t.length-1);var c=Math.max(o,Math.min(a,s)),l=t[c];return l==null||nS(l,n,r)?String(c):null},iS=(e,t,n,r,i,a,o)=>{if(a!=null){var s=o[0]?.getPosition(a);if(s!=null)return s;var c=i?.[Number(a)];if(c)switch(n){case`horizontal`:return{x:c.coordinate,y:(r.top+t)/2};default:return{x:(r.left+e)/2,y:c.coordinate}}}},aS=(e,t,n,r)=>{if(t===`axis`)return e.tooltipItemPayloads;if(e.tooltipItemPayloads.length===0)return[];var i=n===`hover`?e.itemInteraction.hover.graphicalItemId:e.itemInteraction.click.graphicalItemId;if(e.syncInteraction.active&&i==null)return e.tooltipItemPayloads;if(i==null&&(r!=null||e.keyboardInteraction.active)){var a=e.tooltipItemPayloads[0];return a==null?[]:[a]}return e.tooltipItemPayloads.filter(e=>e.settings?.graphicalItemId===i)},oS=e=>e.options.tooltipPayloadSearcher,sS=e=>e.tooltip;function cS(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function lS(e){for(var t=1;te(t)}function gS(e){if(typeof e==`string`)return e}function _S(e){if(typeof e==`object`&&e)return{name:`name`in e?pS(e.name):void 0,unit:`unit`in e?mS(e.unit):void 0,dataKey:`dataKey`in e?hS(e.dataKey):void 0,payload:`payload`in e?e.payload:void 0,color:`color`in e?gS(e.color):void 0,fill:`fill`in e?gS(e.fill):void 0}}function vS(e,t){return e??t}var yS=(e,t,n,r,i,a,o)=>{if(t!=null&&a!=null){var s=n.chartData,c=n.computedData,l=n.dataStartIndex,u=n.dataEndIndex;return e.reduce((e,n)=>{var d=n.dataDefinedOnItem,f=n.settings,p=vS(d,s),m=Array.isArray(p)?Io(p,l,u):p,h=f?.dataKey??r,g=f?.nameKey,_;return r&&Array.isArray(m)&&!Array.isArray(m[0])&&o===`axis`?(_=pe(m,r,i),_??=a(m,t,c,g)):_=a(m,t,c,g),Array.isArray(_)?_.forEach(t=>{var n=_S(t),r=n?.name,i=n?.dataKey,a=n?.payload,o=lS(lS({},f),{},{name:r,unit:n?.unit,color:n?.color??f?.color,fill:n?.fill??f?.fill});e.push(rs({tooltipEntrySettings:o,dataKey:i,payload:a,value:W(a,i),name:r==null?void 0:String(r)}))}):e.push(rs({tooltipEntrySettings:f,dataKey:h,payload:_,value:W(_,h),name:W(_,g)??f?.name})),e},[])}},bS=B([Q,Ay,zf],ay),xS=B([B([e=>e.graphicalItems.cartesianItems,e=>e.graphicalItems.polarItems],(e,t)=>[...e,...t]),Q,B([vp,yp],jy)],Py,{memoizeOptions:{resultEqualityCheck:gp}}),SS=B([xS],e=>e.filter(mp)),CS=B([xS],zy,{memoizeOptions:{resultEqualityCheck:gp}}),wS=B([xS],e=>e.some(e=>!e.data)),TS=B([CS,rf],Hy),ES=B([SS,rf,Q],pp),DS=B([TS,Q,xS,rf,wS,CS],Gy),OS=B([Q],ob),kS=B([OS,B([Q],e=>e.allowDataOverflow)],yf),AS=B([B([ES,B([xS],e=>e.filter(mp)),Lf,Rf],nb),rf,vp,kS],ib),jS=B([TS,Q,B([xS],Ly),ub,vp,uf],pb,{memoizeOptions:{resultEqualityCheck:hp}}),MS=B([B([_b,vp,yp],vb),vp],wb),NS=B([B([bb,vp,yp],vb),vp],Eb),PS=B([Q,G,TS,DS,Lf,vp,B([Q,OS,kS,AS,jS,B([MS,B([B([Sb,vp,yp],vb),vp],Ab),NS],fb),G,vp],Mb)],Fb),FS=B([Q,PS,B([PS,Q,bS],Rb),vp],Bb),IS=e=>Yb(e,vp(e),yp(e),!1),LS=B([Q,IS],qf),RS=B([B([Q,bS,FS,LS],ny)],bp),zS=B([G,Q,bS,RS,IS,B([G,DS,Q,vp],gx),B([G,DS,Q,vp],Qb),vp],(e,t,n,r,i,a,o,s)=>{if(t){var c=t.type,l=Wo(e,s);if(r){var u=n===`scaleBand`&&r.bandwidth?r.bandwidth()/2:2,d=c===`category`&&r.bandwidth?r.bandwidth()/u:0;return d=s===`angleAxis`&&i!=null&&i?.length>=2?F(i[0]-i[1])*2*d:d,l&&o?o.map((e,t)=>{var n=r.map(e);return U(n)?{coordinate:n+d,value:e,index:t,offset:d}:null}).filter(ge):r.domain().map((e,t)=>{var n=r.map(e);return U(n)?{coordinate:n+d,value:a?a[e]:e,index:t,offset:d}:null}).filter(ge)}}}),BS=B([Cx,wx,kx],(e,t,n)=>Tx(n.shared,e,t)),VS=e=>e.tooltip.settings.trigger,HS=e=>e.tooltip.settings.defaultIndex,US=B([sS,BS,VS,HS],$x),WS=B([US,TS,eb,PS],rS),GS=B([zS,WS],Ox),KS=B([US],e=>{if(e)return e.dataKey}),qS=B([US],e=>{if(e)return e.graphicalItemId}),JS=B([sS,BS,VS,HS],aS),YS=B([US,B([ss,cs,G,Ts,zS,HS,JS],iS)],(e,t)=>e!=null&&e.coordinate?e.coordinate:t),XS=B([US],e=>e?.active??!1),ZS=B([B([JS,WS,rf,eb,GS,oS,BS],yS)],e=>{if(e!=null){var t=e.map(e=>e.payload).filter(e=>e!=null);return Array.from(new Set(t))}});function QS(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function $S(e){for(var t=1;tz(Q),iC=()=>{var e=rC(),t=z(zS),n=z(RS);return ns(!e||!n?void 0:$S($S({},e),{},{scale:n}),t)};function aC(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function oC(e){for(var t=1;t{var i=t.find(e=>e&&e.index===n);if(i){if(e===`horizontal`)return{x:i.coordinate,y:r.relativeY};if(e===`vertical`)return{x:r.relativeX,y:i.coordinate}}return{x:0,y:0}},dC=(e,t,n,r)=>{var i=t.find(e=>e&&e.index===n);if(i){if(e===`centric`){var a=i.coordinate,o=r.radius;return oC(oC(oC({},r),Ad(r.cx,r.cy,o,a)),{},{angle:a,radius:o})}var s=i.coordinate,c=r.angle;return oC(oC(oC({},r),Ad(r.cx,r.cy,s,c)),{},{angle:c,radius:s})}return{angle:0,clockWise:!1,cx:0,cy:0,endAngle:0,innerRadius:0,outerRadius:0,radius:0,startAngle:0,x:0,y:0}};function fC(e,t){var n=e.relativeX,r=e.relativeY;return n>=t.left&&n<=t.left+t.width&&r>=t.top&&r<=t.top+t.height}var pC=(e,t,n,r,i)=>{var a=t?.length??0;if(a<=1||e==null)return 0;if(r===`angleAxis`&&i!=null&&Math.abs(Math.abs(i[1]-i[0])-360)<=1e-6)for(var o=i[1]-i[0],s=(t,n,r)=>[e,e+o,e-o].some(e=>(r?e>=t:e>t)&&e<=n),c=0;c0?n[c-1]?.coordinate:n[a-1]?.coordinate,u=n[c]?.coordinate,d=c>=a-1?n[0]?.coordinate:n[c+1]?.coordinate,f=void 0;if(l!=null&&u!=null&&d!=null){if(F(u-l)!==F(d-u)){var p=[];if(F(d-u)===F(i[1]-i[0])){f=d;var m=u+i[1]-i[0];p[0]=Math.min(m,(m+l)/2),p[1]=Math.max(m,(m+l)/2)}else{f=l;var h=d+i[1]-i[0];p[0]=Math.min(u,(h+u)/2),p[1]=Math.max(u,(h+u)/2)}var g=[Math.min(u,(f+u)/2),Math.max(u,(f+u)/2)];if(s(g[0],g[1],!1)||s(p[0],p[1],!0))return n[c]?.index}else{var _=Math.min(l,d),v=Math.max(l,d);if(s((_+u)/2,(v+u)/2,!1))return n[c]?.index}}}else if(t)for(var y=0;y(b.coordinate+S.coordinate)/2||y>0&&y(b.coordinate+S.coordinate)/2&&e<=(b.coordinate+x.coordinate)/2)return b.index}}return-1},mC=()=>z(zf),hC=(e,t)=>t,gC=(e,t,n)=>n,_C=(e,t,n,r)=>r,vC=B(zS,e=>Cr(e,e=>e.coordinate)),yC=B([sS,hC,gC,_C],$x),bC=B([yC,TS,eb,PS],rS),xC=(e,t,n)=>{if(t!=null){var r=sS(e);return t===`axis`?n===`hover`?r.axisInteraction.hover.dataKey:r.axisInteraction.click.dataKey:n===`hover`?r.itemInteraction.hover.dataKey:r.itemInteraction.click.dataKey}},SC=B([sS,hC,gC,_C],aS),CC=B([ss,cs,G,Ts,zS,_C,SC],iS),wC=B([yC,CC],(e,t)=>e.coordinate??t),TC=B([zS,bC],Ox),EC=B([SC,bC,rf,eb,TC,oS,hC],yS),DC=B([yC,bC],(e,t)=>({isActive:e.active&&t!=null,activeIndex:t})),OC=(e,t,n,r,i,a,o)=>{if(e&&n&&r&&i&&fC(e,o)){var s=pC(as(e,t),a,i,n,r),c=uC(t,i,s,e);return{activeIndex:String(s),activeCoordinate:c}}},kC=(e,t,n,r,i,a,o)=>{if(e&&r&&i&&a&&n){var s=Id(e,n);if(s){var c=pC(os(s,t),o,a,r,i),l=dC(t,a,c,s);return{activeIndex:String(c),activeCoordinate:l}}}},AC=(e,t,n,r,i,a,o,s)=>{if(e&&t&&r&&i&&a)return t===`horizontal`||t===`vertical`?OC(e,t,r,i,a,o,s):kC(e,t,n,r,i,a,o)},jC=B(e=>e.zIndex.zIndexMap,(e,t)=>t,(e,t,n)=>n,(e,t,n)=>{if(t!=null){var r=e[t];if(r!=null)return n?r.panoramaElement:r.element}}),MC=B(e=>e.zIndex.zIndexMap,e=>{var t=Object.keys(e).map(e=>parseInt(e,10)).concat(Object.values(Wf));return Array.from(new Set(t)).sort((e,t)=>e-t)},{memoizeOptions:{resultEqualityCheck:_p}});function NC(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function PC(e){for(var t=1;tPC(PC({},e),{},{[t]:{element:void 0,panoramaElement:void 0,consumers:0}}),{})},zC=new Set(Object.values(Wf));function BC(e){return zC.has(e)}var VC=Ba({name:`zIndex`,initialState:RC,reducers:{registerZIndexPortal:{reducer:(e,t)=>{var n=t.payload.zIndex;e.zIndexMap[n]?e.zIndexMap[n].consumers+=1:e.zIndexMap[n]={consumers:1,element:void 0,panoramaElement:void 0}},prepare:H()},unregisterZIndexPortal:{reducer:(e,t)=>{var n=t.payload.zIndex;e.zIndexMap[n]&&(--e.zIndexMap[n].consumers,e.zIndexMap[n].consumers<=0&&!BC(n)&&delete e.zIndexMap[n])},prepare:H()},registerZIndexPortalElement:{reducer:(e,t)=>{var n=t.payload,r=n.zIndex,i=n.element,a=n.isPanorama;e.zIndexMap[r]?a?e.zIndexMap[r].panoramaElement=V(i):e.zIndexMap[r].element=V(i):e.zIndexMap[r]={consumers:0,element:a?void 0:V(i),panoramaElement:a?V(i):void 0}},prepare:H()},unregisterZIndexPortalElement:{reducer:(e,t)=>{var n=t.payload.zIndex;e.zIndexMap[n]&&(t.payload.isPanorama?e.zIndexMap[n].panoramaElement=void 0:e.zIndexMap[n].element=void 0)},prepare:H()}}}),HC=VC.actions,UC=HC.registerZIndexPortal,WC=HC.unregisterZIndexPortal,GC=HC.registerZIndexPortalElement,KC=HC.unregisterZIndexPortalElement,qC=VC.reducer;function JC(e){var t=e.zIndex,n=e.children,r=bc()&&t!==void 0&&t!==0,i=ks(),a=(0,o.useRef)(void 0),c=(0,o.useRef)(new Set),l=R(),u=z(e=>jC(e,t,i));if((0,o.useLayoutEffect)(()=>{if(!r){var e=c.current;e.forEach(e=>{l(WC({zIndex:e}))}),e.clear(),a.current=void 0;return}if(c.current.has(t)||(l(UC({zIndex:t})),c.current.add(t)),u){a.current=u;var n=c.current;n.forEach(e=>{e!==t&&(l(WC({zIndex:e})),n.delete(e))})}},[l,t,r,u]),(0,o.useLayoutEffect)(()=>{var e=c.current;return()=>{e.forEach(e=>{l(WC({zIndex:e}))}),e.clear()}},[l]),!r)return n;var d=u??a.current;return d?(0,s.createPortal)(n,d):null}function YC(){return YC=Object.assign?Object.assign.bind():function(e){for(var t=1;t(0,o.useContext)(iw),ow=t(i(((e,t)=>{var n=Object.prototype.hasOwnProperty,r=`~`;function i(){}Object.create&&(i.prototype=Object.create(null),new i().__proto__||(r=!1));function a(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function o(e,t,n,i,o){if(typeof n!=`function`)throw TypeError(`The listener must be a function`);var s=new a(n,i||e,o),c=r?r+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],s]:e._events[c].push(s):(e._events[c]=s,e._eventsCount++),e}function s(e,t){--e._eventsCount===0?e._events=new i:delete e._events[t]}function c(){this._events=new i,this._eventsCount=0}c.prototype.eventNames=function(){var e=[],t,i;if(this._eventsCount===0)return e;for(i in t=this._events)n.call(t,i)&&e.push(r?i.slice(1):i);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e},c.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,a=n.length,o=Array(a);i{if(t&&Array.isArray(e)){var n=Number.parseInt(t,10);if(!ae(n))return e[n]}},dw=Ba({name:`options`,initialState:{chartName:``,tooltipPayloadSearcher:()=>void 0,eventEmitter:void 0,defaultTooltipEventType:`axis`},reducers:{createEventEmitter:e=>{e.eventEmitter??=Symbol(`rechartsEventEmitter`)}}}),fw=dw.reducer,pw=dw.actions.createEventEmitter;function mw(e){return e.tooltip.syncInteraction}var hw=Ba({name:`chartData`,initialState:{chartData:void 0,computedData:void 0,dataStartIndex:0,dataEndIndex:0},reducers:{setChartData(e,t){if(e.chartData=V(t.payload),t.payload==null){e.dataStartIndex=0,e.dataEndIndex=0;return}t.payload.length>0&&e.dataEndIndex!==t.payload.length-1&&(e.dataEndIndex=t.payload.length-1)},setComputedData(e,t){e.computedData=t.payload},setDataStartEndIndexes(e,t){var n=t.payload,r=n.startIndex,i=n.endIndex;r!=null&&(e.dataStartIndex=r),i!=null&&(e.dataEndIndex=i)}}}),gw=hw.actions,_w=gw.setChartData,vw=gw.setDataStartEndIndexes;gw.setComputedData;var yw=hw.reducer,bw=[`x`,`y`];function xw(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Sw(e){for(var t=1;te.rootProps.className);(0,o.useEffect)(()=>{if(e==null)return _e;var o=(o,c,l)=>{if(t!==l&&e===o){if(c.payload.active===!1){n(Ux({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}));return}if(r===`index`){var u;if(s&&c!=null&&(u=c.payload)!=null&&u.coordinate&&c.payload.sourceViewBox){var d=c.payload.coordinate,f=d.x,p=d.y,m=Ew(d,bw),h=c.payload.sourceViewBox,g=h.x,_=h.y,v=h.width,y=h.height,b=Sw(Sw({},m),{},{x:s.x+(v?(f-g)/v:0)*s.width,y:s.y+(y?(p-_)/y:0)*s.height});n(Sw(Sw({},c),{},{payload:Sw(Sw({},c.payload),{},{coordinate:b})}))}else n(c);return}if(i!=null){var x;typeof r==`function`?x=i[r(i,{activeTooltipIndex:c.payload.index==null?void 0:Number(c.payload.index),isTooltipActive:c.payload.active,activeIndex:c.payload.index==null?void 0:Number(c.payload.index),activeLabel:c.payload.label,activeDataKey:c.payload.dataKey,activeCoordinate:c.payload.coordinate})]:r===`value`&&(x=i.find(e=>String(e.value)===c.payload.label));var S=c.payload.coordinate;if(S==null||s==null){n(Ux({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}));return}if(x==null){n(Ux({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:c.payload.sourceViewBox,graphicalItemId:void 0}));return}var C=S.x,w=S.y,T=Math.min(C,s.x+s.width),E=Math.min(w,s.y+s.height),D={x:a===`horizontal`?x.coordinate:T,y:a===`horizontal`?E:x.coordinate};n(Ux({active:c.payload.active,coordinate:D,dataKey:c.payload.dataKey,index:String(x.index),label:c.payload.label,sourceViewBox:c.payload.sourceViewBox,graphicalItemId:c.payload.graphicalItemId}))}}};return sw.on(cw,o),()=>{sw.off(cw,o)}},[c,n,t,e,r,i,a,s])}function kw(){var e=z(Bf),t=z(Hf),n=R();(0,o.useEffect)(()=>{if(e==null)return _e;var r=(r,i,a)=>{t!==a&&e===r&&n(vw(i))};return sw.on(lw,r),()=>{sw.off(lw,r)}},[n,t,e])}function Aw(){var e=R();(0,o.useEffect)(()=>{e(pw())},[e]),Ow(),kw()}function jw(e,t,n,r,i,a){var s=z(n=>xC(n,e,t)),c=z(qS),l=z(Hf),u=z(Bf),d=z(Vf),f=z(mw)?.sourceViewBox!=null,p=dc();(0,o.useEffect)(()=>{if(!f&&u!=null&&l!=null){var e=Ux({active:a,coordinate:n,dataKey:s,index:i,label:typeof r==`number`?String(r):r,sourceViewBox:p,graphicalItemId:c});sw.emit(cw,u,e,l)}},[f,n,s,c,i,r,l,u,d,a,p])}function Mw(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Nw(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n{C(Ix({shared:v,trigger:y,axisId:S,active:n,defaultIndex:w}))},[C,v,y,S,n,w]);var T=dc(),E=Ll(),D=Dx(v),O=z(e=>DC(e,D,y,w))??{},k=O.activeIndex,A=O.isActive,j=z(e=>EC(e,D,y,w)),M=z(e=>TC(e,D,y,w)),N=z(e=>wC(e,D,y,w)),ee=j,te=aw(),ne=n??A??!1,re=Lw(Fr([ee,ne]),2),ie=re[0],P=re[1],F=D===`axis`?M:void 0;jw(D,y,N,F,k,ne);var ae=x??te;if(ae==null||T==null||D==null)return null;var oe=ee??Gw;ne||(oe=Gw),l&&oe.length&&(oe=Kn(oe.filter(e=>e.value!=null&&(e.hide!==!0||t.includeHidden)),f,Uw));var I=oe.length>0,se=Nw(Nw({},t),{},{payload:oe,label:F,active:ne,activeIndex:k,coordinate:N,accessibilityLayer:E}),ce=o.createElement(Il,{allowEscapeViewBox:r,animationDuration:i,animationEasing:a,isAnimationActive:u,active:ne,coordinate:N,hasPayload:I,offset:d,position:p,reverseDirection:m,useTranslate3d:h,viewBox:T,wrapperStyle:g,lastBoundingBox:ie,innerRef:P,hasPortalFromProps:!!x},Ww(c,se));return o.createElement(o.Fragment,null,(0,s.createPortal)(ce,ae),ne&&o.createElement(rw,{cursor:_,tooltipEventType:D,coordinate:N,payload:oe,index:k}))}function Jw(e,t,n){return(t=Yw(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Yw(e){var t=Xw(e,`string`);return typeof t==`symbol`?t:t+``}function Xw(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var Zw=class{constructor(e){Jw(this,`cache`,new Map),this.maxSize=e}get(e){var t=this.cache.get(e);return t!==void 0&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){if(this.cache.has(e))this.cache.delete(e);else if(this.cache.size>=this.maxSize){var n=this.cache.keys().next().value;n!=null&&this.cache.delete(n)}this.cache.set(e,t)}clear(){this.cache.clear()}size(){return this.cache.size}};function Qw(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function $w(e){for(var t=1;t{try{var n=document.getElementById(oT);n||(n=document.createElement(`span`),n.setAttribute(`id`,oT),n.setAttribute(`aria-hidden`,`true`),document.body.appendChild(n)),Object.assign(n.style,aT,t),n.textContent=`${e}`;var r=n.getBoundingClientRect();return{width:r.width,height:r.height}}catch{return{width:0,height:0}}},lT=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(e==null||hl.isSsr)return{width:0,height:0};if(!rT.enableCache)return cT(e,t);var n=sT(e,t),r=iT.get(n);if(r)return r;var i=cT(e,t);return iT.set(n,i),i},uT;function dT(e,t){return gT(e)||hT(e,t)||pT(e,t)||fT()}function fT(){throw TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function pT(e,t){if(e){if(typeof e==`string`)return mT(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?mT(e,t):void 0}}function mT(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);n{var t=e.children,n=e.breakAll,r=e.style;try{var i=[];return me(t)||(i=n?t.toString().split(``):t.toString().split(qT)),{wordsWithComputedWidth:i.map(e=>({word:e,width:lT(e,r).width})),spaceWidth:n?0:lT(`\xA0`,r).width}}catch{return null}};function YT(e){return e===`start`||e===`middle`||e===`end`||e===`inherit`}function XT(e){return me(e)||typeof e==`string`||typeof e==`number`||typeof e==`boolean`}var ZT=(e,t,n,r)=>e.reduce((e,i)=>{var a=i.word,o=i.width,s=e[e.length-1];if(s&&o!=null&&(t==null||r||s.width+o+ne.reduce((e,t)=>e.width>t.width?e:t),$T=`…`,eE=(e,t,n,r,i,a,o,s)=>{var c=JT({breakAll:n,style:r,children:e.slice(0,t)+$T});if(!c)return[!1,[]];var l=ZT(c.wordsWithComputedWidth,a,o,s);return[l.length>i||QT(l).width>Number(a),l]},tE=(e,t,n,r,i)=>{var a=e.maxLines,o=e.children,s=e.style,c=e.breakAll,l=I(a),u=String(o),d=ZT(t,r,n,i);if(!l||i||!(d.length>a||QT(d).width>Number(r)))return d;for(var f=0,p=u.length-1,m=0,h;f<=p&&m<=u.length-1;){var g=Math.floor((f+p)/2),_=VT(eE(u,g-1,c,s,a,r,n,i),2),v=_[0],y=_[1],b=VT(eE(u,g,c,s,a,r,n,i),1)[0];if(!v&&!b&&(f=g+1),v&&b&&(p=g-1),!v&&b){h=y;break}m++}return h||d},nE=e=>[{words:me(e)?[]:e.toString().split(qT),width:void 0}],rE=e=>{var t=e.width,n=e.scaleToFit,r=e.children,i=e.style,a=e.breakAll,o=e.maxLines;if((t||n)&&!hl.isSsr){var s,c,l=JT({breakAll:a,children:r,style:i});if(l){var u=l.wordsWithComputedWidth,d=l.spaceWidth;s=u,c=d}else return nE(r);return tE({breakAll:a,children:r,maxLines:o,style:i},s,c,t,!!n)}return nE(r)},iE=`#808080`,aE={angle:0,breakAll:!1,capHeight:`0.71em`,fill:iE,lineHeight:`1em`,scaleToFit:!1,textAnchor:`start`,verticalAnchor:`end`,x:0,y:0},oE=(0,o.forwardRef)((e,t)=>{var n=Ft(e,aE),i=n.x,a=n.y,s=n.lineHeight,c=n.capHeight,l=n.fill,u=n.scaleToFit,d=n.textAnchor,f=n.verticalAnchor,p=zT(n,IT),m=(0,o.useMemo)(()=>rE({breakAll:p.breakAll,children:p.children,maxLines:p.maxLines,scaleToFit:u,style:p.style,width:p.width}),[p.breakAll,p.children,p.maxLines,u,p.style,p.width]),g=p.dx,_=p.dy,v=p.angle,y=p.className,b=p.breakAll,x=zT(p,LT);if(!se(i)||!se(a)||m.length===0)return null;var S=Number(i)+(I(g)?g:0),C=Number(a)+(I(_)?_:0);if(!U(S)||!U(C))return null;var w;switch(f){case`start`:w=FT(`calc(${c})`);break;case`middle`:w=FT(`calc(${(m.length-1)/2} * -${s} + (${c} / 2))`);break;default:w=FT(`calc(${m.length-1} * -${s})`)}var T=[],E=m[0];if(u&&E!=null){var D=E.width,O=p.width;T.push(`scale(${I(O)&&I(D)?O/D:1})`)}return v&&T.push(`rotate(${v}, ${S}, ${C})`),T.length&&(x.transform=T.join(` `)),o.createElement(`text`,RT({},h(x),{ref:t,x:S,y:C,className:r(`recharts-text`,y),textAnchor:d,fill:l.includes(`url`)?iE:l}),m.map((e,t)=>{var n=e.words.join(b?``:` `);return o.createElement(`tspan`,{x:S,dy:t===0?w:s,key:`${n}-${t}`},n)}))});oE.displayName=`Text`;var sE=[`labelRef`],cE=[`content`];function lE(e,t){if(e==null)return{};var n,r,i=uE(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{var t=e.x,n=e.y,r=e.upperWidth,i=e.lowerWidth,a=e.width,s=e.height,c=e.children,l=(0,o.useMemo)(()=>({x:t,y:n,upperWidth:r,lowerWidth:i,width:a,height:s}),[t,n,r,i,a,s]);return o.createElement(_E.Provider,{value:l},c)},yE=()=>{var e=(0,o.useContext)(_E),t=dc();return e||(t?ve(t):void 0)},bE=(0,o.createContext)(null),xE=e=>{var t=e.cx,n=e.cy,r=e.innerRadius,i=e.outerRadius,a=e.startAngle,s=e.endAngle,c=e.clockWise,l=e.children,u=(0,o.useMemo)(()=>({cx:t,cy:n,innerRadius:r,outerRadius:i,startAngle:a,endAngle:s,clockWise:c}),[t,n,r,i,a,s,c]);return o.createElement(bE.Provider,{value:u},l)},SE=()=>{var e=(0,o.useContext)(bE),t=z(up);return e||t},CE=e=>{var t=e.value,n=e.formatter,r=me(e.children)?t:e.children;return typeof n==`function`?n(r):r},wE=e=>e!=null&&typeof e==`function`,TE=(e,t)=>F(t-e)*Math.min(Math.abs(t-e),360),EE=(e,t,n,i,a)=>{var s=e.offset,c=e.className,l=a.cx,u=a.cy,d=a.innerRadius,f=a.outerRadius,p=a.startAngle,m=a.endAngle,h=a.clockWise,g=(d+f)/2,_=TE(p,m),v=_>=0?1:-1,y,b;switch(t){case`insideStart`:y=p+v*s,b=h;break;case`insideEnd`:y=m-v*s,b=!h;break;case`end`:y=m+v*s,b=h;break;default:throw Error(`Unsupported position ${t}`)}b=_<=0?b:!b;var x=Ad(l,u,g,y),S=Ad(l,u,g,y+(b?1:-1)*359),C=`M${x.x},${x.y} - A${g},${g},0,1,${+!b}, - ${S.x},${S.y}`,w=me(e.id)?le(`recharts-radial-line-`):e.id;return o.createElement(`text`,gE({},i,{dominantBaseline:`central`,className:r(`recharts-radial-bar-label`,c)}),o.createElement(`defs`,null,o.createElement(`path`,{id:w,d:C})),o.createElement(`textPath`,{xlinkHref:`#${w}`},n))},DE=(e,t,n)=>{var r=e.cx,i=e.cy,a=e.innerRadius,o=e.outerRadius,s=(e.startAngle+e.endAngle)/2;if(n===`outside`){var c=Ad(r,i,o+t,s),l=c.x;return{x:l,y:c.y,textAnchor:l>=r?`start`:`end`,verticalAnchor:`middle`}}if(n===`center`)return{x:r,y:i,textAnchor:`middle`,verticalAnchor:`middle`};if(n===`centerTop`)return{x:r,y:i,textAnchor:`middle`,verticalAnchor:`start`};if(n===`centerBottom`)return{x:r,y:i,textAnchor:`middle`,verticalAnchor:`end`};var u=Ad(r,i,(a+o)/2,s);return{x:u.x,y:u.y,textAnchor:`middle`,verticalAnchor:`middle`}},OE=e=>e!=null&&`cx`in e&&I(e.cx),kE={angle:0,offset:5,zIndex:Wf.label,position:`middle`,textBreakAll:!1};function AE(e){if(!OE(e))return e;var t=e.cx,n=e.cy,r=e.outerRadius,i=r*2;return{x:t-r,y:n-r,width:i,upperWidth:i,lowerWidth:i,height:i}}function jE(e){var t=Ft(e,kE),n=t.viewBox,i=t.parentViewBox,a=t.position,s=t.value,c=t.children,l=t.content,u=t.className,d=u===void 0?``:u,f=t.textBreakAll,p=t.labelRef,m=SE(),g=yE(),_=n==null?a===`center`?g:m??g:OE(n)?n:ve(n),v,y,b=AE(_);if(!_||me(s)&&me(c)&&!(0,o.isValidElement)(l)&&typeof l!=`function`)return null;var x=OE(_)&&(a===`insideStart`||a===`insideEnd`||a===`end`);if(OE(_))x||(y=DE(_,t.offset,t.position));else if(b){var S=we({viewBox:b,position:a,offset:t.offset,parentViewBox:OE(i)?void 0:i,clamp:!0});y=fE(fE({x:S.x,y:S.y,textAnchor:S.horizontalAnchor,verticalAnchor:S.verticalAnchor},S.width===void 0?{}:{width:S.width}),S.height===void 0?{}:{height:S.height})}var C=fE(fE(fE(fE({},y?.x===void 0?{}:{x:y.x}),y?.y===void 0?{}:{y:y.y}),t),{},{viewBox:_});if((0,o.isValidElement)(l)){C.labelRef;var w=lE(C,sE);return(0,o.cloneElement)(l,w)}if(typeof l==`function`){C.content;var T=lE(C,cE);if(v=(0,o.createElement)(l,T),(0,o.isValidElement)(v))return v}else v=CE(t);var E=h(t);return x&&OE(_)?EE(t,a,v,E,_):y==null?null:o.createElement(JC,{zIndex:t.zIndex},o.createElement(oE,gE({ref:p,className:r(`recharts-label`,d)},E,y,{textAnchor:YT(E.textAnchor)?E.textAnchor:y.textAnchor,breakAll:f}),v))}jE.displayName=`Label`;var ME=(e,t,n)=>{if(!e)return null;var r={viewBox:t,labelRef:n};return e===!0?o.createElement(jE,gE({key:`label-implicit`},r)):se(e)?o.createElement(jE,gE({key:`label-implicit`,value:e},r)):(0,o.isValidElement)(e)?e.type===jE?(0,o.cloneElement)(e,fE({key:`label-implicit`},r)):o.createElement(jE,gE({key:`label-implicit`,content:e},r)):wE(e)?o.createElement(jE,gE({key:`label-implicit`,content:e},r)):e&&typeof e==`object`?o.createElement(jE,gE({},e,{key:`label-implicit`},r)):null};function NE(e){var t=e.label,n=e.labelRef;return ME(t,yE(),n)||null}var PE=[`valueAccessor`],FE=[`dataKey`,`clockWise`,`id`,`textBreakAll`,`zIndex`];function IE(){return IE=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var t=Array.isArray(e.value)?e.value[e.value.length-1]:e.value;if(XT(t))return t},BE=(0,o.createContext)(void 0),VE=BE.Provider,HE=(0,o.createContext)(void 0),UE=HE.Provider;function WE(){return(0,o.useContext)(BE)}function GE(){return(0,o.useContext)(HE)}function KE(e){var t=e.valueAccessor,n=t===void 0?zE:t,r=LE(e,PE),i=r.dataKey;r.clockWise;var a=r.id,s=r.textBreakAll,c=r.zIndex,l=LE(r,FE),u=WE(),d=GE(),f=u||d;return!f||!f.length?null:o.createElement(JC,{zIndex:c??Wf.label},o.createElement(E,{className:`recharts-label-list`},f.map((e,t)=>{var c=me(i)?n(e,t):W(e.payload,i),u=me(a)?{}:{id:`${a}-${t}`};return o.createElement(jE,IE({key:`label-${t}`},h(e),l,u,{fill:r.fill??e.fill,parentViewBox:e.parentViewBox,value:c,textBreakAll:s,viewBox:e.viewBox,index:t,zIndex:0}))})))}KE.displayName=`LabelList`;function qE(e){var t=e.label;return t?t===!0?o.createElement(KE,{key:`labelList-implicit`}):o.isValidElement(t)||wE(t)?o.createElement(KE,{key:`labelList-implicit`,content:t}):typeof t==`object`?o.createElement(KE,IE({key:`labelList-implicit`},t,{type:String(t.type)})):null:null}function JE(){return JE=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var t=e.cx,n=e.cy,i=e.r,a=e.className,s=r(`recharts-dot`,a);return I(t)&&I(n)&&I(i)?o.createElement(`circle`,JE({},p(e),Dt(e),{className:s,cx:t,cy:n,r:i})):null},XE=Ba({name:`polarAxis`,initialState:{radiusAxis:{},angleAxis:{}},reducers:{addRadiusAxis(e,t){e.radiusAxis[t.payload.id]=V(t.payload)},removeRadiusAxis(e,t){delete e.radiusAxis[t.payload.id]},addAngleAxis(e,t){e.angleAxis[t.payload.id]=V(t.payload)},removeAngleAxis(e,t){delete e.angleAxis[t.payload.id]}}}),ZE=XE.actions;ZE.addRadiusAxis,ZE.removeRadiusAxis,ZE.addAngleAxis,ZE.removeAngleAxis;var QE=XE.reducer;function $E(e){return e&&typeof e==`object`&&`className`in e&&typeof e.className==`string`?e.className:``}var eD=i((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.suspense_list`),d=Symbol.for(`react.memo`),f=Symbol.for(`react.lazy`),p=Symbol.for(`react.view_transition`);function m(e){if(typeof e==`object`&&e){var m=e.$$typeof;switch(m){case t:switch(e=e.type,e){case r:case a:case i:case l:case u:case p:return e;default:switch(e&&=e.$$typeof,e){case s:case c:case f:case d:return e;case o:return e;default:return m}}case n:return m}}}e.isFragment=function(e){return m(e)===r}})),tD=i(((e,t)=>{t.exports=eD()}))(),nD=e=>typeof e==`string`?e:e?e.displayName||e.name||`Component`:``,rD=null,iD=null,aD=e=>{if(e===rD&&Array.isArray(iD))return iD;var t=[];return o.Children.forEach(e,e=>{me(e)||((0,tD.isFragment)(e)?t=t.concat(aD(e.props.children)):t.push(e))}),iD=t,rD=e,t};function oD(e,t){var n=[],r=[];return r=Array.isArray(t)?t.map(e=>nD(e)):[nD(t)],aD(e).forEach(e=>{var t=te(e,`type.displayName`)||te(e,`type.name`);t&&r.indexOf(t)!==-1&&n.push(e)}),n}var sD=e=>e&&typeof e==`object`&&`clipDot`in e?!!e.clipDot:!0;function cD(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function lD(e){for(var t=1;t{r||(i.current===null?n(Nx(t)):i.current!==t&&n(Px({prev:i.current,next:t})),i.current=t)},[t,n,r]),(0,o.useLayoutEffect)(()=>()=>{i.current&&=(n(Fx(i.current)),null)},[n]),null}function bD(e){var t=e.legendPayload,n=R(),r=ks(),i=(0,o.useRef)(null);return(0,o.useLayoutEffect)(()=>{r||(i.current===null?n(wc(t)):i.current!==t&&n(Tc({prev:i.current,next:t})),i.current=t)},[n,r,t]),(0,o.useLayoutEffect)(()=>()=>{i.current&&=(n(Ec(i.current)),null)},[n]),null}function xD(e){var t=e.legendPayload,n=R(),r=z(G),i=(0,o.useRef)(null);return(0,o.useLayoutEffect)(()=>{(r===`centric`||r===`radial`)&&(i.current===null?n(wc(t)):i.current!==t&&n(Tc({prev:i.current,next:t})),i.current=t)},[n,r,t]),(0,o.useLayoutEffect)(()=>()=>{i.current&&=(n(Ec(i.current)),null)},[n]),null}function SD(e,t){return DD(e)||ED(e,t)||wD(e,t)||CD()}function CD(){throw TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function wD(e,t){if(e){if(typeof e==`string`)return TD(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?TD(e,t):void 0}}function TD(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n2&&arguments[2]!==void 0?arguments[2]:[],r=[];for(var i of n)r.push({status:`removed`,prev:i});for(var a=0;ae[Math.floor(r*n)]),t)}function MD(e,t){return AD(t.map((t,n)=>e[n]),t)}function ND(e,t){for(var n=new Map,r=0;r{var a=n(e,t);if(a!=null){var o=r.get(a);if(o!==void 0)return i.add(a),o}}),o=[];for(var s of r){var c=SD(s,2),l=c[0],u=c[1];i.has(l)||o.push(u)}return AD(a,t,o)}function FD(e,t,n){return t==null?null:e==null?t.map(e=>({status:`added`,next:e})):n===`index`?jD(e,t):n===`append`?MD(e,t):PD(e,t,n)}function ID(e,t){var n=(0,o.useRef)(e),r=(0,o.useRef)(t.current),i=(0,o.useRef)(!0);n.current!==e&&(n.current=e,r.current=t.current,i.current=!1);var a=(0,o.useCallback)(function(e,n){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(n===0){i.current=!0;return}n===1&&(r.current=e),n>0&&i.current&&a&&(t.current=e)},[t]);return{startValue:r.current,syncStepValue:a}}function LD(e,t){return HD(e)||VD(e,t)||zD(e,t)||RD()}function RD(){throw TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function zD(e,t){if(e){if(typeof e==`string`)return BD(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?BD(e,t):void 0}}function BD(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n{typeof e==`function`&&e(),i(!0)},[e]),handleAnimationEnd:(0,o.useCallback)(()=>{typeof t==`function`&&t(),i(!1)},[t])}}function WD(e){var t=e.animationInput,n=e.animationIdPrefix,r=e.items,i=e.previousItemsRef,a=e.isAnimationActive,s=e.animationBegin,c=e.animationDuration,l=e.animationEasing,u=e.onAnimationStart,d=e.onAnimationEnd,f=e.animationInterpolateFn,p=e.animationMatchBy,m=e.shouldUpdatePreviousRef,h=e.children,g=e.layout,_=Wu(t,n),v=ID(_,i),y=v.startValue??null,b=FD(y,r,p??OD);return o.createElement(Uu,{animationId:_,begin:s,duration:c,isActive:a,easing:l,onAnimationEnd:d,onAnimationStart:u,key:_},e=>{var t=y==null,n=r==null?r:f(b,e,g),i=m?m(e):e>0;return v.syncStepValue(n,e,i),n==null?null:h(n,e,t)})}function GD(e,t){return XD(e)||YD(e,t)||qD(e,t)||KD()}function KD(){throw TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function qD(e,t){if(e){if(typeof e==`string`)return JD(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?JD(e,t):void 0}}function JD(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);nGD(o.useState(()=>le(`uid-`)),1)[0]);function QD(e,t){var n=ZD();return t||(e?`${e}-${n}`:n)}var $D=(0,o.createContext)(void 0),eO=e=>{var t=e.id,n=e.type,r=e.children,i=QD(`recharts-${n}`,t);return o.createElement($D.Provider,{value:i},r(i))},tO=Ba({name:`graphicalItems`,initialState:{cartesianItems:[],polarItems:[]},reducers:{addCartesianGraphicalItem:{reducer(e,t){e.cartesianItems.push(V(t.payload))},prepare:H()},replaceCartesianGraphicalItem:{reducer(e,t){var n=t.payload,r=n.prev,i=n.next,a=fa(e).cartesianItems.indexOf(V(r));a>-1&&(e.cartesianItems[a]=V(i))},prepare:H()},removeCartesianGraphicalItem:{reducer(e,t){var n=fa(e).cartesianItems.indexOf(V(t.payload));n>-1&&e.cartesianItems.splice(n,1)},prepare:H()},addPolarGraphicalItem:{reducer(e,t){e.polarItems.push(V(t.payload))},prepare:H()},removePolarGraphicalItem:{reducer(e,t){var n=fa(e).polarItems.indexOf(V(t.payload));n>-1&&e.polarItems.splice(n,1)},prepare:H()},replacePolarGraphicalItem:{reducer(e,t){var n=t.payload,r=n.prev,i=n.next,a=fa(e).polarItems.indexOf(V(r));a>-1&&(e.polarItems[a]=V(i))},prepare:H()}}}),nO=tO.actions,rO=nO.addCartesianGraphicalItem,iO=nO.replaceCartesianGraphicalItem,aO=nO.removeCartesianGraphicalItem,oO=nO.addPolarGraphicalItem,sO=nO.removePolarGraphicalItem,cO=nO.replacePolarGraphicalItem,lO=tO.reducer,uO=(0,o.memo)(e=>{var t=R(),n=(0,o.useRef)(null);return(0,o.useLayoutEffect)(()=>{n.current===null?t(rO(e)):n.current!==e&&t(iO({prev:n.current,next:e})),n.current=e},[t,e]),(0,o.useLayoutEffect)(()=>()=>{n.current&&=(t(aO(n.current)),null)},[t]),null}),dO=(0,o.memo)(e=>{var t=R(),n=(0,o.useRef)(null);return(0,o.useLayoutEffect)(()=>{n.current===null?t(oO(e)):n.current!==e&&t(cO({prev:n.current,next:e})),n.current=e},[t,e]),(0,o.useLayoutEffect)(()=>()=>{n.current&&=(t(sO(n.current)),null)},[t]),null}),fO=[`points`];function pO(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function mO(e){for(var t=1;t{var c=mO(mO(mO({r:3},s),p),{},{index:r,cx:e.x??void 0,cy:e.y??void 0,dataKey:a,value:e.value,payload:e.payload,points:t});return o.createElement(xO,{key:`dot-${r}`,option:n,dotProps:c,className:i})}),h={};return c&&l!=null&&(h.clipPath=`url(#clipPath-${f?``:`dots-`}${l})`),o.createElement(JC,{zIndex:d},o.createElement(E,vO({className:r},h),m))}function wO(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function TO(e){for(var t=1;t({top:e.top,bottom:e.bottom,left:e.left,right:e.right})),ss,cs],(e,t,n)=>{if(e&&t!=null&&n!=null)return{x:e.left,y:e.top,width:Math.max(0,t-e.left-e.right),height:Math.max(0,n-e.top-e.bottom)}}),VO=()=>z(BO),HO=()=>z(ZS);function UO(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function WO(e){for(var t=1;t{var t=e.point,n=e.childIndex,r=e.mainColor,i=e.activeDot,a=e.dataKey,s=e.clipPath;if(i===!1||t.x==null||t.y==null)return null;var c=WO(WO(WO({},{index:n,dataKey:a,cx:t.x,cy:t.y,r:4,fill:r??`none`,strokeWidth:2,stroke:`#fff`,payload:t.payload,value:t.value}),m(i)),Dt(i)),l=(0,o.isValidElement)(i)?(0,o.cloneElement)(i,c):typeof i==`function`?i(c):o.createElement(YE,c);return o.createElement(E,{className:`recharts-active-dot`,clipPath:s},l)};function YO(e){var t=e.points,n=e.mainColor,r=e.activeDot,i=e.itemDataKey,a=e.clipPath,s=e.zIndex,c=s===void 0?Wf.activeDot:s,l=z(WS),u=HO();if(t==null||u==null)return null;var d=t.find(e=>u.includes(e.payload));return me(d)?null:o.createElement(JC,{zIndex:c},o.createElement(JO,{point:d,childIndex:Number(l),mainColor:n,dataKey:i,activeDot:r,clipPath:a}))}var XO=e=>{var t=e.chartData,n=R(),r=ks();return(0,o.useEffect)(()=>r?()=>{}:(n(_w(t)),()=>{n(_w(void 0))}),[t,n,r]),null},ZO={x:0,y:0,width:0,height:0,padding:{top:0,right:0,bottom:0,left:0}},QO=Ba({name:`brush`,initialState:ZO,reducers:{setBrushSettings(e,t){return t.payload==null?ZO:t.payload}}});QO.actions.setBrushSettings;var $O=QO.reducer;function ek(e){return(e%180+180)%180}var tk=function(e){var t=e.width,n=e.height,r=ek(arguments.length>1&&arguments[1]!==void 0?arguments[1]:0)*Math.PI/180,i=Math.atan(n/t),a=r>i&&r{e.dots.push(t.payload)},removeDot:(e,t)=>{var n=fa(e).dots.findIndex(e=>e===t.payload);n!==-1&&e.dots.splice(n,1)},addArea:(e,t)=>{e.areas.push(t.payload)},removeArea:(e,t)=>{var n=fa(e).areas.findIndex(e=>e===t.payload);n!==-1&&e.areas.splice(n,1)},addLine:(e,t)=>{e.lines.push(V(t.payload))},removeLine:(e,t)=>{var n=fa(e).lines.findIndex(e=>e===t.payload);n!==-1&&e.lines.splice(n,1)}}}),rk=nk.actions;rk.addDot,rk.removeDot,rk.addArea,rk.removeArea,rk.addLine,rk.removeLine;var ik=nk.reducer;function ak(e,t){return uk(e)||lk(e,t)||sk(e,t)||ok()}function ok(){throw TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function sk(e,t){if(e){if(typeof e==`string`)return ck(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ck(e,t):void 0}}function ck(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n{var t=e.children,n=ak((0,o.useState)(`${le(`recharts`)}-clip`),1)[0],r=VO();if(r==null)return null;var i=r.x,a=r.y,s=r.width,c=r.height;return o.createElement(dk.Provider,{value:n},o.createElement(`defs`,null,o.createElement(`clipPath`,{id:n},o.createElement(`rect`,{x:i,y:a,height:c,width:s}))),t)};function pk(){}function mk(e){if(!e||typeof e!=`object`)return!1;let t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null?!1:Object.prototype.toString.call(e)===`[object Object]`}function hk(e,t,n){return gk(e,t,void 0,void 0,void 0,void 0,n)}function gk(e,t,n,r,i,a,o){let s=o(e,t,n,r,i,a);if(s!==void 0)return s;if(typeof e==typeof t)switch(typeof e){case`bigint`:case`string`:case`boolean`:case`symbol`:case`undefined`:return e===t;case`number`:return e===t||Object.is(e,t);case`function`:return e===t;case`object`:return _k(e,t,a,o)}return _k(e,t,a,o)}function _k(e,t,n,r){if(Object.is(e,t))return!0;let i=Gt(e),a=Gt(t);if(i===`[object Arguments]`&&(i=an),a===`[object Arguments]`&&(a=an),i!==a)return!1;switch(i){case qt:return e.toString()===t.toString();case Jt:return En(e.valueOf(),t.valueOf());case Yt:case Qt:case Zt:return Object.is(e.valueOf(),t.valueOf());case Kt:return e.source===t.source&&e.flags===t.flags;case nn:return e===t}n??=new Map;let o=n.get(e),s=n.get(t);if(o!=null&&s!=null)return o===t;n.set(e,t),n.set(t,e);try{switch(i){case $t:if(e.size!==t.size)return!1;for(let[i,a]of e.entries())if(!t.has(i)||!gk(a,t.get(i),i,e,t,n,r))return!1;return!0;case en:{if(e.size!==t.size)return!1;let i=Array.from(e.values()),a=Array.from(t.values());for(let o=0;ogk(s,i,void 0,e,t,n,r));if(c===-1)return!1;a.splice(c,1)}return!0}case tn:case cn:case ln:case un:case dn:case fn:case pn:case mn:case hn:case gn:case _n:case vn:if(bn(e)!==bn(t)||e.length!==t.length)return!1;for(let i=0;ie*i)return!1;var a=n();return e*(t-e*a/2-r)>=0&&e*(t+e*a/2-i)<=0}function Ck(e,t){return yk(e,t+1)}function wk(e,t,n,r,i){for(var a=(r||[]).slice(),o=t.start,s=t.end,c=0,l=1,u=o,d=function(){var t=r?.[c];if(t===void 0)return{v:yk(r,l)};var a=c,d,f=()=>(d===void 0&&(d=n(t,a)),d),p=t.coordinate,m=c===0||Sk(e,p,f,u,s);m||(c=0,u=o,l+=1),m&&(u=p+e*(f()/2+i),c+=l)},f;l<=a.length;)if(f=d(),f)return f.v;return[]}function Tk(e,t,n,r,i){var a=(r||[]).slice().length;if(a===0)return[];for(var o=t.start,s=t.end,c=1;c<=a;c++){for(var l=(a-1)%c,u=o,d=!0,f=function(){var t=r[m];if(t==null)return 0;var a=m,o,c=()=>(o===void 0&&(o=n(t,a)),o),f=t.coordinate,p=m===l||Sk(e,f,c,u,s);if(!p)return d=!1,1;p&&(u=f+e*(c()/2+i))},p,m=l;m(u===void 0&&(u=n(r,t)),u);if(t===o-1){var f=e*(l.coordinate+e*d()/2-c);a[t]=l=Dk(Dk({},l),{},{tickCoord:f>0?l.coordinate-f*e:l.coordinate})}else a[t]=l=Dk(Dk({},l),{},{tickCoord:l.coordinate});l.tickCoord!=null&&Sk(e,l.tickCoord,d,s,c)&&(c=l.tickCoord-e*(d()/2+i),a[t]=Dk(Dk({},l),{},{isShow:!0}))},u=o-1;u>=0;u--)if(l(u))continue;return a}function Mk(e,t,n,r,i,a){var o=(r||[]).slice(),s=o.length,c=t.start,l=t.end;if(a){var u=r[s-1];if(u!=null){var d=n(u,s-1),f=e*(u.coordinate+e*d/2-l);o[s-1]=u=Dk(Dk({},u),{},{tickCoord:f>0?u.coordinate-f*e:u.coordinate}),u.tickCoord!=null&&Sk(e,u.tickCoord,()=>d,c,l)&&(l=u.tickCoord-e*(d/2+i),o[s-1]=Dk(Dk({},u),{},{isShow:!0}))}}for(var p=a?s-1:s,m=function(t){var r=o[t];if(r==null)return 1;var a=r,s,u=()=>(s===void 0&&(s=n(r,t)),s);if(t===0){var d=e*(a.coordinate-e*u()/2-c);o[t]=a=Dk(Dk({},a),{},{tickCoord:d<0?a.coordinate-d*e:a.coordinate})}else o[t]=a=Dk(Dk({},a),{},{tickCoord:a.coordinate});a.tickCoord!=null&&Sk(e,a.tickCoord,u,c,l)&&(c=a.tickCoord+e*(u()/2+i),o[t]=Dk(Dk({},a),{},{isShow:!0}))},h=0;h{var i=typeof l==`function`?l(e.value,r):e.value;return p===`width`?bk(lT(i,{fontSize:t,letterSpacing:n}),m,d):lT(i,{fontSize:t,letterSpacing:n})[p]},g=i[0],_=i[1],v=i.length>=2&&g!=null&&_!=null?F(_.coordinate-g.coordinate):1,y=xk(a,v,p);return c===`equidistantPreserveStart`?wk(v,y,h,i,o):c===`equidistantPreserveEnd`?Tk(v,y,h,i,o):(f=c===`preserveStart`||c===`preserveStartEnd`?Mk(v,y,h,i,o,c===`preserveStartEnd`):jk(v,y,h,i,o),f.filter(e=>e.isShow))}var Pk=e=>{var t=e.ticks,n=e.label,r=e.labelGapWithTick,i=r===void 0?5:r,a=e.tickSize,o=a===void 0?0:a,s=e.tickMargin,c=s===void 0?0:s,l=0;if(t){Array.from(t).forEach(e=>{if(e){var t=e.getBoundingClientRect();t.width>l&&(l=t.width)}});var u=n?n.getBoundingClientRect().width:0,d=o+c,f=l+d+u+(n?i:0);return Math.round(f)}return 0},Fk=e=>{var t=e.ticks,n=e.label,r=e.labelGapWithTick,i=r===void 0?5:r,a=e.tickSize,o=a===void 0?0:a,s=e.tickMargin,c=s===void 0?0:s,l=0;if(t){Array.from(t).forEach(e=>{if(e){var t=e.getBoundingClientRect();t.height>l&&(l=t.height)}});var u=n?n.getBoundingClientRect().height:0,d=o+c,f=l+d+u+(n?i:0);return Math.round(f)}return 0},Ik=Ba({name:`renderedTicks`,initialState:{xAxis:{},yAxis:{}},reducers:{setRenderedTicks:(e,t)=>{var n=t.payload,r=n.axisType,i=n.axisId,a=n.ticks;e[r][i]=V(a)},removeRenderedTicks:(e,t)=>{var n=t.payload,r=n.axisType,i=n.axisId;delete e[r][i]}}}),Lk=Ik.actions,Rk=Lk.setRenderedTicks,zk=Lk.removeRenderedTicks,Bk=Ik.reducer,Vk=[`axisLine`,`width`,`height`,`className`,`hide`,`ticks`,`axisType`,`axisId`];function Hk(e,t){return qk(e)||Kk(e,t)||Wk(e,t)||Uk()}function Uk(){throw TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Wk(e,t){if(e){if(typeof e==`string`)return Gk(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Gk(e,t):void 0}}function Gk(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n{if(r!=null&&n!=null){var e=t.map(e=>({value:e.value,coordinate:e.coordinate,offset:e.offset,index:e.index})),o=a.current;o!=null&&o.axisId===r&&o.axisType===n&&vk(o.ticks,e)||(a.current={ticks:e,axisId:r,axisType:n},i(Rk({ticks:e,axisId:r,axisType:n})))}},[i,t,r,n]),(0,o.useEffect)(()=>r==null||n==null?_e:()=>{i(zk({axisId:r,axisType:n}))},[i,r,n]),null}var cA=(0,o.forwardRef)((e,t)=>{var n=e.ticks,i=n===void 0?[]:n,a=e.tick,s=e.tickLine,c=e.stroke,l=e.tickFormatter,u=e.unit,d=e.padding,f=e.tickTextProps,h=e.orientation,g=e.mirror,_=e.x,v=e.y,y=e.width,b=e.height,x=e.tickSize,S=e.tickMargin,C=e.fontSize,w=e.letterSpacing,T=e.getTicksConfig,D=e.events,O=e.axisType,k=e.axisId,A=Nk($($({},T),{},{ticks:i}),C,w),j=p(T),M=m(a),N=YT(j.textAnchor)?j.textAnchor:iA(h,g),ee=aA(h,g),ne={};typeof s==`object`&&(ne=s);var re=$($({},j),{},{fill:`none`},ne),ie=A.map(e=>$({entry:e},rA(e,_,v,y,b,h,x,g,S))),P=ie.map(e=>{var t=e.entry,n=e.line;return o.createElement(E,{className:`recharts-cartesian-axis-tick`,key:`tick-${t.value}-${t.coordinate}-${t.tickCoord}`},s&&o.createElement(`line`,Xk({},re,n,{className:r(`recharts-cartesian-axis-tick-line`,te(s,`className`))})))}),F=ie.map((e,t)=>{var n=e.entry,r=e.tick,i=$($({},$($($($({verticalAnchor:ee},j),{},{textAnchor:N,stroke:`none`,fill:c},r),{},{index:t,payload:n,visibleTicksCount:A.length,tickFormatter:l,padding:d},f),{},{angle:f?.angle??j.angle??0})),M);return o.createElement(E,Xk({className:`recharts-cartesian-axis-tick-label`,key:`tick-label-${n.value}-${n.coordinate}-${n.tickCoord}`},kt(D,n,t)),a&&o.createElement(oA,{option:a,tickProps:i,value:`${typeof l==`function`?l(n.value,t):n.value}${u||``}`}))});return o.createElement(`g`,{className:`recharts-cartesian-axis-ticks recharts-${O}-ticks`},o.createElement(sA,{ticks:A,axisId:k,axisType:O}),F.length>0&&o.createElement(JC,{zIndex:Wf.label},o.createElement(`g`,{className:`recharts-cartesian-axis-tick-labels recharts-${O}-tick-labels`,ref:t},F)),P.length>0&&o.createElement(`g`,{className:`recharts-cartesian-axis-tick-lines recharts-${O}-tick-lines`},P))}),lA=(0,o.forwardRef)((e,t)=>{var n=e.axisLine,i=e.width,a=e.height,s=e.className,c=e.hide,l=e.ticks,u=e.axisType,d=e.axisId,f=Jk(e,Vk),m=Hk((0,o.useState)(``),2),h=m[0],g=m[1],_=Hk((0,o.useState)(``),2),v=_[0],y=_[1],b=(0,o.useRef)(null);(0,o.useImperativeHandle)(t,()=>({getCalculatedWidth:()=>Pk({ticks:b.current,label:e.labelRef?.current,labelGapWithTick:5,tickSize:e.tickSize,tickMargin:e.tickMargin}),getCalculatedHeight:()=>Fk({ticks:b.current,label:e.labelRef?.current,labelGapWithTick:5,tickSize:e.tickSize,tickMargin:e.tickMargin})}));var x=(0,o.useCallback)(e=>{if(e){var t=e.getElementsByClassName(`recharts-cartesian-axis-tick-value`);b.current=t;var n=t[0];if(n){var r=window.getComputedStyle(n),i=r.fontSize,a=r.letterSpacing;(i!==h||a!==v)&&(g(i),y(a))}}},[h,v]);return c||i!=null&&i<=0||a!=null&&a<=0?null:o.createElement(JC,{zIndex:e.zIndex},o.createElement(E,{className:r(`recharts-cartesian-axis`,s)},o.createElement(nA,{x:e.x,y:e.y,width:i,height:a,orientation:e.orientation,mirror:e.mirror,axisLine:n,otherSvgProps:p(e)}),o.createElement(cA,{ref:x,axisType:u,events:f,fontSize:h,getTicksConfig:e,height:e.height,letterSpacing:v,mirror:e.mirror,orientation:e.orientation,padding:e.padding,stroke:e.stroke,tick:e.tick,tickFormatter:e.tickFormatter,tickLine:e.tickLine,tickMargin:e.tickMargin,tickSize:e.tickSize,tickTextProps:e.tickTextProps,ticks:l,unit:e.unit,width:e.width,x:e.x,y:e.y,axisId:d}),o.createElement(vE,{x:e.x,y:e.y,width:e.width,height:e.height,lowerWidth:e.width,upperWidth:e.width},o.createElement(NE,{label:e.label,labelRef:e.labelRef}),e.children)))}),uA=o.forwardRef((e,t)=>{var n=Ft(e,tA);return o.createElement(lA,Xk({},n,{ref:t}))});uA.displayName=`CartesianAxis`;var dA=(0,o.createContext)({grid:{stroke:`#ccc`,fill:`none`}});dA.Provider;var fA=()=>(0,o.useContext)(dA),pA=[`x1`,`y1`,`x2`,`y2`,`key`],mA=[`offset`],hA=[`xAxisId`,`yAxisId`],gA=[`xAxisId`,`yAxisId`];function _A(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function vA(e){for(var t=1;t{var t=e.fill;if(!t||t===`none`)return null;var n=e.fillOpacity,r=e.x,i=e.y,a=e.width,s=e.height,c=e.ry;return o.createElement(`rect`,{x:r,y:i,ry:c,width:a,height:s,stroke:`none`,fill:t,fillOpacity:n,className:`recharts-cartesian-grid-bg`})};function EA(e){var t=e.option,n=e.lineItemProps,r;if(o.isValidElement(t))r=o.cloneElement(t,n);else if(typeof t==`function`)r=t(n);else{var i=n.x1,a=n.y1,s=n.x2,c=n.y2,l=n.key,u=p(CA(n,pA))??{};u.offset;var d=CA(u,mA),f=Array.isArray(d.strokeDasharray)?d.strokeDasharray.join(`,`):d.strokeDasharray;r=o.createElement(`line`,SA({},d,{strokeDasharray:f,x1:i,y1:a,x2:s,y2:c,fill:`none`,key:l}))}return r}function DA(e){var t=e.x,n=e.width,r=e.horizontal,i=r===void 0||r,a=e.horizontalPoints;if(!i||!a||!a.length)return null;e.xAxisId,e.yAxisId;var s=CA(e,hA),c=a.map((e,r)=>{var a=vA(vA({},s),{},{x1:t,y1:e,x2:t+n,y2:e,key:`line-${r}`,index:r});return o.createElement(EA,{key:`line-${r}`,option:i,lineItemProps:a})});return o.createElement(`g`,{className:`recharts-cartesian-grid-horizontal`},c)}function OA(e){var t=e.y,n=e.height,r=e.vertical,i=r===void 0||r,a=e.verticalPoints;if(!i||!a||!a.length)return null;e.xAxisId,e.yAxisId;var s=CA(e,gA),c=a.map((e,r)=>{var a=vA(vA({},s),{},{x1:e,y1:t,x2:e,y2:t+n,key:`line-${r}`,index:r});return o.createElement(EA,{option:i,lineItemProps:a,key:`line-${r}`})});return o.createElement(`g`,{className:`recharts-cartesian-grid-vertical`},c)}function kA(e){var t=e.horizontalFill,n=e.fillOpacity,r=e.x,i=e.y,a=e.width,s=e.height,c=e.horizontalPoints,l=e.horizontal;if(!(l===void 0||l)||!t||!t.length||c==null)return null;var u=c.map(e=>Math.round(e+i-i)).sort((e,t)=>e-t);i!==u[0]&&u.unshift(0);var d=u.map((e,c)=>{var l=u[c+1],d=l==null?i+s-e:l-e;if(d<=0)return null;var f=c%t.length;return o.createElement(`rect`,{key:`react-${c}`,y:e,x:r,height:d,width:a,stroke:`none`,fill:t[f],fillOpacity:n,className:`recharts-cartesian-grid-bg`})});return o.createElement(`g`,{className:`recharts-cartesian-gridstripes-horizontal`},d)}function AA(e){var t=e.vertical,n=t===void 0||t,r=e.verticalFill,i=e.fillOpacity,a=e.x,s=e.y,c=e.width,l=e.height,u=e.verticalPoints;if(!n||!r||!r.length)return null;var d=u.map(e=>Math.round(e+a-a)).sort((e,t)=>e-t);a!==d[0]&&d.unshift(0);var f=d.map((e,t)=>{var n=d[t+1],u=n==null?a+c-e:n-e;if(u<=0)return null;var f=t%r.length;return o.createElement(`rect`,{key:`react-${t}`,x:e,y:s,width:u,height:l,stroke:`none`,fill:r[f],fillOpacity:i,className:`recharts-cartesian-grid-bg`})});return o.createElement(`g`,{className:`recharts-cartesian-gridstripes-vertical`},f)}var jA=(e,t)=>{var n=e.xAxis,r=e.width,i=e.height,a=e.offset;return Go(Nk(vA(vA(vA({},tA),n),{},{ticks:Ko(n,!0),viewBox:{x:0,y:0,width:r,height:i}})),a.left,a.left+a.width,t)},MA=(e,t)=>{var n=e.yAxis,r=e.width,i=e.height,a=e.offset;return Go(Nk(vA(vA(vA({},tA),n),{},{ticks:Ko(n,!0),viewBox:{x:0,y:0,width:r,height:i}})),a.top,a.top+a.height,t)},NA={horizontal:!0,vertical:!0,horizontalPoints:[],verticalPoints:[],verticalFill:[],horizontalFill:[],xAxisId:0,yAxisId:0,syncWithTicks:!1,zIndex:Wf.grid};function PA(e){var t=mc(),n=hc(),r=pc(),i=vA(vA({},Ft(e,NA)),{},{x:I(e.x)?e.x:r.left,y:I(e.y)?e.y:r.top,width:I(e.width)?e.width:r.width,height:I(e.height)?e.height:r.height}),a=i.xAxisId,s=i.yAxisId,c=i.x,l=i.y,u=i.width,d=i.height,f=i.syncWithTicks,p=i.horizontalValues,m=i.verticalValues,h=ks(),g=z(e=>vx(e,`xAxis`,a,h)),_=z(e=>vx(e,`yAxis`,s,h)),v=fA(),y={stroke:i.stroke??v.grid.stroke,strokeWidth:i.strokeWidth??v.grid.strokeWidth,strokeOpacity:i.strokeOpacity??v.grid.strokeOpacity,strokeDasharray:i.strokeDasharray??v.grid.strokeDasharray};if(!Lo(u)||!Lo(d)||!I(c)||!I(l))return null;var b=i.verticalCoordinatesGenerator||jA,x=i.horizontalCoordinatesGenerator||MA,S=i.horizontalPoints,C=i.verticalPoints;if((!S||!S.length)&&typeof x==`function`){var w=p&&p.length,T=x({yAxis:_?vA(vA({},_),{},{ticks:w?p:_.ticks}):void 0,width:t??u,height:n??d,offset:r},w?!0:f);Fs(Array.isArray(T),`horizontalCoordinatesGenerator should return Array but instead it returned [${typeof T}]`),Array.isArray(T)&&(S=T)}if((!C||!C.length)&&typeof b==`function`){var E=m&&m.length,D=b({xAxis:g?vA(vA({},g),{},{ticks:E?m:g.ticks}):void 0,width:t??u,height:n??d,offset:r},E?!0:f);Fs(Array.isArray(D),`verticalCoordinatesGenerator should return Array but instead it returned [${typeof D}]`),Array.isArray(D)&&(C=D)}return o.createElement(JC,{zIndex:i.zIndex},o.createElement(`g`,{className:`recharts-cartesian-grid`},o.createElement(TA,{fill:i.fill??v.grid.fill,fillOpacity:i.fillOpacity??v.grid.fillOpacity,x:i.x,y:i.y,width:i.width,height:i.height,ry:i.ry}),o.createElement(kA,SA({},i,{horizontalPoints:S})),o.createElement(AA,SA({},i,{verticalPoints:C})),o.createElement(DA,SA({},i,y,{offset:r,horizontalPoints:S,xAxis:g,yAxis:_})),o.createElement(OA,SA({},i,y,{offset:r,verticalPoints:C,xAxis:g,yAxis:_}))))}PA.displayName=`CartesianGrid`;var FA=Ba({name:`errorBars`,initialState:{},reducers:{addErrorBar:(e,t)=>{var n=t.payload,r=n.itemId,i=n.errorBar;e[r]||(e[r]=[]),e[r].push(i)},replaceErrorBar:(e,t)=>{var n=t.payload,r=n.itemId,i=n.prev,a=n.next;e[r]&&(e[r]=e[r].map(e=>e.dataKey===i.dataKey&&e.direction===i.direction?a:e))},removeErrorBar:(e,t)=>{var n=t.payload,r=n.itemId,i=n.errorBar;e[r]&&(e[r]=e[r].filter(e=>e.dataKey!==i.dataKey||e.direction!==i.direction))}}}),IA=FA.actions;IA.addErrorBar,IA.replaceErrorBar,IA.removeErrorBar;var LA=FA.reducer;function RA(e,t){var n=z(t=>Sy(t,e)),r=z(e=>wy(e,t)),i=n?.allowDataOverflow??X.allowDataOverflow,a=r?.allowDataOverflow??Z.allowDataOverflow;return{needClip:i||a,needClipX:i,needClipY:a}}function zA(e){var t=e.xAxisId,n=e.yAxisId,r=e.clipPathId,i=VO(),a=RA(t,n),s=a.needClipX,c=a.needClipY,l=a.needClip,u=z(e=>qb(e,t,!1)),d=z(e=>Jb(e,n,!1));if(!l||!i)return null;var f=i.x,p=i.y,m=i.width,h=i.height,g=s&&u?Math.min(u[0],u[1]):f-m/2,_=c&&d?Math.min(d[0],d[1]):p-h/2,v=s&&u?Math.abs(u[1]-u[0]):m*2,y=c&&d?Math.abs(d[1]-d[0]):h*2;return o.createElement(`clipPath`,{id:`clipPath-${r}`},o.createElement(`rect`,{x:g,y:_,width:v,height:y}))}function BA(e){var t=m(e),n=3,r=2;if(t!=null){var i=t.r,a=t.strokeWidth,o=Number(i),s=Number(a);return(Number.isNaN(o)||o<0)&&(o=n),(Number.isNaN(s)||s<0)&&(s=r),{r:o,strokeWidth:s}}return{r:n,strokeWidth:r}}function VA(e,t){return e.graphicalItems.cartesianItems.find(e=>e.id===t)?.xAxisId??0}function HA(e,t){return e.graphicalItems.cartesianItems.find(e=>e.id===t)?.yAxisId??0}var UA=(e,t,n)=>xx(e,`xAxis`,VA(e,t),n),WA=(e,t,n)=>bx(e,`xAxis`,VA(e,t),n),GA=(e,t,n)=>xx(e,`yAxis`,HA(e,t),n),KA=(e,t,n)=>bx(e,`yAxis`,HA(e,t),n),qA=B([G,UA,GA,WA,KA],(e,t,n,r,i)=>Wo(e,`xAxis`)?ns(t,r,!1):ns(n,i,!1)),JA=B([My,(e,t)=>t],(e,t)=>e.filter(e=>e.type===`area`).find(e=>e.id===t)),YA=e=>Wo(G(e),`xAxis`)?`yAxis`:`xAxis`,XA=(e,t)=>YA(e)===`yAxis`?HA(e,t):VA(e,t),ZA=(e,t,n)=>rb(e,YA(e),XA(e,t),n),QA=B([G,UA,GA,WA,KA,B([JA,ZA],(e,t)=>{if(e!=null&&t!=null){var n=e.stackId,r=fp(e);if(n!=null&&r!=null){var i=(t[n]?.stackedData)?.find(e=>e.key===r);if(i!=null)return i.map(e=>[e[0],e[1]])}}}),sf,qA,JA,Uf,B([JA,ZA],(e,t)=>{if(e!=null&&e.stackId!=null&&t!=null){var n=t[e.stackId];if(n!=null)return n.graphicalItems.map(e=>e.dataKey).filter(ge)}})],(e,t,n,r,i,a,o,s,c,l,u)=>{var d=o.chartData,f=o.dataStartIndex,p=o.dataEndIndex;if(!(c==null||e!==`horizontal`&&e!==`vertical`||t==null||n==null||r==null||i==null||r.length===0||i.length===0||s==null)){var m=c.data,h=m&&m.length>0?m:d?.slice(f,p+1);if(h!=null)return jj({layout:e,xAxis:t,yAxis:n,xAxisTicks:r,yAxisTicks:i,dataStartIndex:f,areaSettings:c,stackedData:a,displayedData:h,chartBaseValue:l,bandSize:s,stackDataKeys:u})}}),$A=[`animationElapsedTime`,`isAnimating`,`isEntrance`,`layout`,`isRange`,`stroke`,`connectNulls`],ej=[`id`,`baseLine`];function tj(){return tj=Object.assign?Object.assign.bind():function(e){for(var t=1;te.y||0));return I(n)?l=Math.max(n,l):n&&Array.isArray(n)&&n.length&&(l=Math.max(...n.map(e=>e.y||0),l)),I(l)?o.createElement(`rect`,{x:ae.x||0));return I(n)?l=Math.max(n,l):n&&Array.isArray(n)&&n.length&&(l=Math.max(...n.map(e=>e.x||0),l)),I(l)?o.createElement(`rect`,{x:0,y:ae==null?[]:t===1?e.flatMap(e=>e.status===`removed`?[]:[e.next]):e.flatMap(e=>e.status===`matched`?[mj(mj({},e.next),{},{x:fe(e.prev.x,e.next.x,t),y:fe(e.prev.y,e.next.y,t)})]:e.status===`added`?[e.next]:[]),connectNulls:!1,dot:!1,fill:`#3182bd`,fillOpacity:.6,hide:!1,isAnimationActive:`auto`,legendType:`line`,stroke:`#3182bd`,strokeWidth:1,type:`linear`,label:!1,shape:sj,xAxisId:0,yAxisId:0,zIndex:Wf.area};function yj(e,t){return e&&e!==`none`?e:t}var bj=e=>{var t=e.dataKey,n=e.name,r=e.stroke,i=e.fill,a=e.legendType;return[{inactive:e.hide,dataKey:t,type:a,color:yj(r,i),value:is(n,t),payload:e}]},xj=o.memo(e=>{var t=e.dataKey,n=e.data,r=e.stroke,i=e.strokeWidth,a=e.fill,s=e.name,c=e.hide,l=e.unit,u=e.formatter,d=e.tooltipType,f=e.id,p={dataDefinedOnItem:n,getPosition:_e,settings:{stroke:r,strokeWidth:i,fill:a,dataKey:t,nameKey:void 0,name:is(s,t),hide:c,type:d,color:yj(r,a),unit:l,formatter:u,graphicalItemId:f}};return o.createElement(yD,{tooltipEntrySettings:p})});function Sj(e){var t=e.clipPathId,n=e.points,r=e.props,i=r.needClip,a=r.dot,s=r.dataKey,c=p(r);return o.createElement(CO,{points:n,dot:a,className:`recharts-area-dots`,dotClassName:`recharts-area-dot`,dataKey:s,baseProps:c,needClip:i,clipPathId:t})}function Cj(e){var t=e.showLabels,n=e.children,r=e.points.map(e=>{var t={x:e.x??0,y:e.y??0,width:0,lowerWidth:0,upperWidth:0,height:0};return mj(mj({},t),{},{value:e.value,payload:e.payload,parentViewBox:void 0,viewBox:t,fill:void 0})});return o.createElement(VE,{value:t?r:void 0},n)}function wj(e){var t=e.points,n=e.baseLine,r=e.needClip,i=e.clipPathId,a=e.props,s=e.animationElapsedTime,c=e.isAnimating,l=e.isEntrance,u=a.layout,d=a.type,f=a.stroke,p=a.connectNulls,m=a.isRange,g=a.shape,_=a.id,v=dj(a,cj),y=mj(mj({},h(v)),{},{id:_,points:t,connectNulls:p,type:d,baseLine:n,layout:u,stroke:f,isRange:m,animationElapsedTime:s,isAnimating:c,isEntrance:l});return o.createElement(o.Fragment,null,t?.length>1&&o.createElement(E,{clipPath:r?`url(#clipPath-${i})`:void 0},o.createElement(vD,{option:g,DefaultShape:vj.shape,shapeProps:y})),o.createElement(Sj,{points:t,props:v,clipPathId:i}))}function Tj(e,t,n){return I(e)?fe(I(t)?t:void 0,e,n):me(e)||ae(e)?fe(I(t)?t:void 0,0,n):e}function Ej(e){var t=e.needClip,n=e.clipPathId,r=e.props,i=e.previousPointsRef,a=e.previousBaselineRef,s=r.points,c=r.baseLine,l=r.isAnimationActive,u=r.animationBegin,d=r.animationDuration,f=r.animationEasing,p=r.animationMatchBy,m=r.animationInterpolateFn,h=(0,o.useMemo)(()=>({points:s,baseLine:c}),[s,c]),g=ID(h,a),_=_c(),v=UD(r.onAnimationStart,r.onAnimationEnd),y=v.isAnimating,b=v.handleAnimationStart,x=v.handleAnimationEnd,S=g.startValue;if(_==null)return null;var C=Array.isArray(c)&&Array.isArray(S)?FD(S,c,p):Array.isArray(c)?FD(null,c,p):null;return o.createElement(WD,{animationInput:h,animationIdPrefix:`recharts-area-`,items:s,previousItemsRef:i,isAnimationActive:l,animationBegin:u,animationDuration:d,animationEasing:f,onAnimationStart:b,onAnimationEnd:x,animationInterpolateFn:m,animationMatchBy:p,layout:_},(e,i,a)=>{var l=i===1?c:Array.isArray(c)?m(C,i,_):a?c:Tj(c,S,i);return g.syncStepValue(l,i),o.createElement(Cj,{showLabels:!y,points:s},r.children,o.createElement(wj,{points:e,baseLine:l,needClip:t,clipPathId:n,props:r,animationElapsedTime:i,isAnimating:y||i<1,isEntrance:a}),o.createElement(qE,{label:r.label}))})}function Dj(e){var t=e.needClip,n=e.clipPathId,r=e.props,i=(0,o.useRef)(null),a=(0,o.useRef)();return o.createElement(Ej,{needClip:t,clipPathId:n,props:r,previousPointsRef:i,previousBaselineRef:a})}var Oj=class extends o.PureComponent{render(){var e=this.props,t=e.hide,n=e.dot,i=e.points,a=e.className,s=e.top,c=e.left,l=e.needClip,u=e.xAxisId,d=e.yAxisId,f=e.width,p=e.height,m=e.id,h=e.baseLine,g=e.zIndex;if(t)return null;var _=r(`recharts-area`,a),v=m,y=BA(n),b=y.r,x=y.strokeWidth,S=sD(n),C=b*2+x,w=l?`url(#clipPath-${S?``:`dots-`}${v})`:void 0;return o.createElement(JC,{zIndex:g},o.createElement(E,{className:_},l&&o.createElement(`defs`,null,o.createElement(zA,{clipPathId:v,xAxisId:u,yAxisId:d}),!S&&o.createElement(`clipPath`,{id:`clipPath-dots-${v}`},o.createElement(`rect`,{x:c-C/2,y:s-C/2,width:f+C,height:p+C}))),o.createElement(Dj,{needClip:l,clipPathId:v,props:this.props})),o.createElement(YO,{points:i,mainColor:yj(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:w}),this.props.isRange&&Array.isArray(h)&&o.createElement(YO,{points:h,mainColor:yj(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:w}))}};function kj(e){var t=e.activeDot,n=e.animationBegin,r=e.animationDuration,i=e.animationEasing,a=e.connectNulls,s=e.dot,c=e.fill,l=e.fillOpacity,u=e.hide,d=e.isAnimationActive,f=e.legendType,p=e.stroke,m=e.xAxisId,h=e.yAxisId,g=dj(e,lj),_=gc(),v=mC(),y=RA(m,h).needClip,b=ks(),x=z(t=>QA(t,e.id,b))??{},S=x.points,C=x.isRange,w=x.baseLine,T=VO();if(_!==`horizontal`&&_!==`vertical`||T==null||v!==`AreaChart`&&v!==`ComposedChart`)return null;var E=T.height,D=T.width,O=T.x,k=T.y;return!S||!S.length?null:o.createElement(Oj,uj({},g,{activeDot:t,animationBegin:n,animationDuration:r,animationEasing:i,baseLine:w,connectNulls:a,dot:s,fill:c,fillOpacity:l,height:E,hide:u,layout:_,isAnimationActive:d,isRange:C,legendType:f,needClip:y,points:S,stroke:p,width:D,left:O,top:k,xAxisId:m,yAxisId:h}))}var Aj=(e,t,n,r,i)=>{var a=n??t;if(I(a))return a;var o=e===`horizontal`?i:r,s=o.scale.domain();if(o.type===`number`){var c=Math.max(s[0],s[1]),l=Math.min(s[0],s[1]);return a===`dataMin`?l:a===`dataMax`||c<0?c:Math.max(Math.min(s[0],s[1]),0)}return a===`dataMin`?s[0]:a===`dataMax`?s[1]:s[0]};function jj(e){var t=e.areaSettings,n=t.connectNulls,r=t.baseValue,i=t.dataKey,a=e.stackedData,o=e.layout,s=e.chartBaseValue,c=e.xAxis,l=e.yAxis,u=e.displayedData,d=e.dataStartIndex,f=e.xAxisTicks,p=e.yAxisTicks,m=e.bandSize,h=e.stackDataKeys,g=a&&a.length,_=Aj(o,s,r,c,l),v=o===`horizontal`,y=!1,b=u.map((e,t)=>{var r;if(g)r=a[d+t];else{var o=W(e,i);Array.isArray(o)?(r=o,y=!0):r=[_,o]}var s=r?.[1]??null,u=W(e,i),b=g&&u==null&&h!=null&&h.length>0&&h.every(t=>W(e,t)==null),x=s==null||g&&!n&&u==null||b;return v?{x:Xo({axis:c,ticks:f,bandSize:m,entry:e,index:t}),y:x?null:l.scale.map(s)??null,value:r,payload:e}:{x:x?null:c.scale.map(s)??null,y:Xo({axis:l,ticks:p,bandSize:m,entry:e,index:t}),value:r,payload:e}});return{points:b,baseLine:(g||y?b.map(e=>{var t=Array.isArray(e.value)?e.value[0]:null;return v?{x:e.x,y:t!=null&&e.y!=null?l.scale.map(t)??null:null,payload:e.payload}:{x:t==null?null:c.scale.map(t)??null,y:e.y,payload:e.payload}}):v?l.scale.map(_):c.scale.map(_))??0,isRange:y}}function Mj(e){var t=Ft(e,vj),n=ks();return o.createElement(eO,{id:t.id,type:`area`},e=>o.createElement(o.Fragment,null,o.createElement(bD,{legendPayload:bj(t)}),o.createElement(xj,{dataKey:t.dataKey,data:t.data,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,formatter:t.formatter,tooltipType:t.tooltipType,id:e}),o.createElement(uO,{type:`area`,id:e,data:t.data,dataKey:t.dataKey,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,stackId:Yo(t.stackId),hide:t.hide,barSize:void 0,baseValue:t.baseValue,isPanorama:n,connectNulls:t.connectNulls}),o.createElement(kj,uj({},t,{id:e}))))}var Nj=o.memo(Mj,Kc);Nj.displayName=`Area`;var Pj=[`domain`,`range`],Fj=[`domain`,`range`];function Ij(e,t){if(e==null)return{};var n,r,i=Lj(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{if(s!=null)return Gj(Gj({},a),{},{type:s})},[a,s]);return(0,o.useLayoutEffect)(()=>{c!=null&&(n.current===null?t(jO(c)):n.current!==c&&t(MO({prev:n.current,next:c})),n.current=c)},[c,t]),(0,o.useLayoutEffect)(()=>()=>{n.current&&=(t(NO(n.current)),null)},[t]),null}var Qj=e=>{var t=e.xAxisId,n=e.className,i=e.height,a=e.label,s=(0,o.useRef)(null),c=(0,o.useRef)(null),l=z(Ds),u=ks(),d=R(),f=`xAxis`,p=z(e=>yx(e,f,t,u)),m=z(e=>cx(e,t)),h=z(e=>px(e,t)),g=z(e=>xy(e,t));if((0,o.useLayoutEffect)(()=>{if(!(i!==`auto`||!m||wE(a)||(0,o.isValidElement)(a)||g==null)){var e=s.current;if(e){var n=e.getCalculatedHeight();Math.round(m.height)!==Math.round(n)&&d(RO({id:t,height:n}))}}},[p,m,d,a,t,i,g]),m==null||h==null||g==null)return null;e.dangerouslySetInnerHTML,e.ticks,e.scale;var _=Yj(e,Vj);g.id,g.scale;var v=Yj(g,Hj);return o.createElement(uA,Uj({},_,v,{ref:s,labelRef:c,x:h.x,y:h.y,width:m.width,height:m.height,className:r(`recharts-${f} ${f}`,n),viewBox:l,ticks:p,axisType:f,axisId:t}))},$j={allowDataOverflow:X.allowDataOverflow,allowDecimals:X.allowDecimals,allowDuplicatedCategory:X.allowDuplicatedCategory,angle:X.angle,axisLine:tA.axisLine,height:X.height,hide:!1,includeHidden:X.includeHidden,interval:X.interval,label:!1,minTickGap:X.minTickGap,mirror:X.mirror,orientation:X.orientation,padding:X.padding,reversed:X.reversed,scale:X.scale,tick:X.tick,tickCount:X.tickCount,tickLine:tA.tickLine,tickSize:tA.tickSize,type:X.type,niceTicks:X.niceTicks,xAxisId:0},eM=o.memo(e=>{var t=Ft(e,$j);return o.createElement(o.Fragment,null,o.createElement(Zj,{allowDataOverflow:t.allowDataOverflow,allowDecimals:t.allowDecimals,allowDuplicatedCategory:t.allowDuplicatedCategory,angle:t.angle,dataKey:t.dataKey,domain:t.domain,height:t.height,hide:t.hide,id:t.xAxisId,includeHidden:t.includeHidden,interval:t.interval,minTickGap:t.minTickGap,mirror:t.mirror,name:t.name,orientation:t.orientation,padding:t.padding,reversed:t.reversed,scale:t.scale,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit,niceTicks:t.niceTicks}),o.createElement(Qj,t))},zj);eM.displayName=`XAxis`;var tM=[`type`],nM=[`dangerouslySetInnerHTML`,`ticks`,`scale`],rM=[`id`,`scale`];function iM(){return iM=Object.assign?Object.assign.bind():function(e){for(var t=1;t{if(s!=null)return oM(oM({},a),{},{type:s})},[s,a]);return(0,o.useLayoutEffect)(()=>{c!=null&&(n.current===null?t(PO(c)):n.current!==c&&t(FO({prev:n.current,next:c})),n.current=c)},[c,t]),(0,o.useLayoutEffect)(()=>()=>{n.current&&=(t(IO(n.current)),null)},[t]),null}function pM(e){var t=e.yAxisId,n=e.className,i=e.width,a=e.label,s=(0,o.useRef)(null),c=(0,o.useRef)(null),l=z(Ds),u=ks(),d=R(),f=`yAxis`,p=z(e=>hx(e,t)),m=z(e=>mx(e,t)),h=z(e=>yx(e,f,t,u)),g=z(e=>Cy(e,t));if((0,o.useLayoutEffect)(()=>{if(!(i!==`auto`||!p||wE(a)||(0,o.isValidElement)(a)||g==null)){var e=s.current;if(e){var n=e.getCalculatedWidth();Math.round(p.width)!==Math.round(n)&&d(LO({id:t,width:n}))}}},[h,p,d,a,t,i,g]),p==null||m==null||g==null)return null;e.dangerouslySetInnerHTML,e.ticks,e.scale;var _=uM(e,nM);g.id,g.scale;var v=uM(g,rM);return o.createElement(uA,iM({},_,v,{ref:s,labelRef:c,x:m.x,y:m.y,tickTextProps:i===`auto`?{width:void 0}:{width:i},width:p.width,height:p.height,className:r(`recharts-${f} ${f}`,n),viewBox:l,ticks:h,axisType:f,axisId:t}))}var mM={allowDataOverflow:Z.allowDataOverflow,allowDecimals:Z.allowDecimals,allowDuplicatedCategory:Z.allowDuplicatedCategory,angle:Z.angle,axisLine:tA.axisLine,hide:!1,includeHidden:Z.includeHidden,interval:Z.interval,label:!1,minTickGap:Z.minTickGap,mirror:Z.mirror,orientation:Z.orientation,padding:Z.padding,reversed:Z.reversed,scale:Z.scale,tick:Z.tick,tickCount:Z.tickCount,tickLine:tA.tickLine,tickSize:tA.tickSize,type:Z.type,niceTicks:Z.niceTicks,width:Z.width,yAxisId:0},hM=o.memo(e=>{var t=Ft(e,mM);return o.createElement(o.Fragment,null,o.createElement(fM,{interval:t.interval,id:t.yAxisId,scale:t.scale,type:t.type,domain:t.domain,allowDataOverflow:t.allowDataOverflow,dataKey:t.dataKey,allowDuplicatedCategory:t.allowDuplicatedCategory,allowDecimals:t.allowDecimals,tickCount:t.tickCount,padding:t.padding,includeHidden:t.includeHidden,reversed:t.reversed,ticks:t.ticks,width:t.width,orientation:t.orientation,mirror:t.mirror,hide:t.hide,unit:t.unit,name:t.name,angle:t.angle,minTickGap:t.minTickGap,tick:t.tick,tickFormatter:t.tickFormatter,niceTicks:t.niceTicks}),o.createElement(pM,t))},zj);hM.displayName=`YAxis`;var gM=B([(e,t)=>t,G,up,vp,LS,zS,vC,Ts],AC);function _M(e){return`getBBox`in e.currentTarget&&typeof e.currentTarget.getBBox==`function`}function vM(e){var t=e.currentTarget.getBoundingClientRect(),n,r;if(_M(e)){var i=e.currentTarget.getBBox();n=i.width>0?t.width/i.width:1,r=i.height>0?t.height/i.height:1}else{var a=e.currentTarget;n=a.offsetWidth>0?t.width/a.offsetWidth:1,r=a.offsetHeight>0?t.height/a.offsetHeight:1}var o=(e,i)=>({relativeX:Math.round((e-t.left)/n),relativeY:Math.round((i-t.top)/r)});return`touches`in e?Array.from(e.touches).map(e=>o(e.clientX,e.clientY)):o(e.clientX,e.clientY)}var yM=ya(`mouseClick`),bM=Do();bM.startListening({actionCreator:yM,effect:(e,t)=>{var n=e.payload,r=gM(t.getState(),vM(n));r?.activeIndex!=null&&t.dispatch(Hx({activeIndex:r.activeIndex,activeDataKey:void 0,activeCoordinate:r.activeCoordinate}))}});var xM=ya(`mouseMove`),SM=Do(),CM=null,wM=null,TM=null;SM.startListening({actionCreator:xM,effect:(e,t)=>{var n=e.payload,r=t.getState().eventSettings,i=r.throttleDelay,a=r.throttledEvents,o=a===`all`||a?.includes(`mousemove`);CM!==null&&(cancelAnimationFrame(CM),CM=null),wM!==null&&(typeof i!=`number`||!o)&&(clearTimeout(wM),wM=null),TM=vM(n);var s=()=>{var e=t.getState(),n=Ex(e,e.tooltip.settings.shared);if(!TM){CM=null,wM=null;return}if(n===`axis`){var r=gM(e,TM);r?.activeIndex==null?t.dispatch(zx()):t.dispatch(Vx({activeIndex:r.activeIndex,activeDataKey:void 0,activeCoordinate:r.activeCoordinate}))}CM=null,wM=null};if(!o){s();return}i===`raf`?CM=requestAnimationFrame(s):typeof i==`number`&&wM===null&&(wM=setTimeout(s,i))}});function EM(e,t){return t instanceof HTMLElement?`HTMLElement <${t.tagName} class="${t.className}">`:t===window?`global.window`:e===`children`&&typeof t==`object`&&t?`<>`:t}var DM={accessibilityLayer:!0,barCategoryGap:`10%`,barGap:4,barSize:void 0,className:void 0,maxBarSize:void 0,stackOffset:`none`,syncId:void 0,syncMethod:`index`,baseValue:void 0,reverseStackOrder:!1},OM=Ba({name:`rootProps`,initialState:DM,reducers:{updateOptions:(e,t)=>{e.accessibilityLayer=t.payload.accessibilityLayer,e.barCategoryGap=t.payload.barCategoryGap,e.barGap=t.payload.barGap??DM.barGap,e.barSize=t.payload.barSize,e.maxBarSize=t.payload.maxBarSize,e.stackOffset=t.payload.stackOffset,e.syncId=t.payload.syncId,e.syncMethod=t.payload.syncMethod,e.className=t.payload.className,e.baseValue=t.payload.baseValue,e.reverseStackOrder=t.payload.reverseStackOrder}}}),kM=OM.reducer,AM=OM.actions.updateOptions,jM=Ba({name:`polarOptions`,initialState:null,reducers:{updatePolarOptions:(e,t)=>e===null?t.payload:(e.startAngle=t.payload.startAngle,e.endAngle=t.payload.endAngle,e.cx=t.payload.cx,e.cy=t.payload.cy,e.innerRadius=t.payload.innerRadius,e.outerRadius=t.payload.outerRadius,e)}}),MM=jM.actions.updatePolarOptions,NM=jM.reducer,PM=ya(`keyDown`),FM=ya(`focus`),IM=ya(`blur`),LM=Do(),RM=null,zM=null,BM=null;LM.startListening({actionCreator:PM,effect:(e,t)=>{BM=e.payload,RM!==null&&(cancelAnimationFrame(RM),RM=null);var n=t.getState().eventSettings,r=n.throttleDelay,i=n.throttledEvents,a=i===`all`||i.includes(`keydown`);zM!==null&&(typeof r!=`number`||!a)&&(clearTimeout(zM),zM=null);var o=()=>{try{var e=t.getState();if(e.rootProps.accessibilityLayer===!1)return;var n=e.tooltip.keyboardInteraction,r=BM;if(r!==`ArrowRight`&&r!==`ArrowLeft`&&r!==`Enter`)return;var i=rS(n,TS(e),eb(e),PS(e)),a=i==null?-1:Number(i),o=!Number.isFinite(a)||a<0,s=zS(e),c=TS(e),l=Ex(e,e.tooltip.settings.shared);if(r===`Enter`){if(o)return;var u=CC(e,l,`hover`,String(n.index));t.dispatch(Wx({active:!n.active,activeIndex:n.index,activeCoordinate:u}));return}var d=Sx(e)===`left-to-right`?1:-1,f=r===`ArrowRight`?1:-1,p;if(o){var m=eb(e),h=PS(e),g=f*d,_=e=>({active:!1,index:String(e),dataKey:void 0,graphicalItemId:void 0,coordinate:void 0});if(p=-1,g>0){for(var v=0;v=0;y--)if(rS(_(y),c,m,h)!=null){p=y;break}if(p<0)return}else{p=a+f*d;var b=s?.length||c.length;if(b===0||p>=b||p<0)return}var x=CC(e,l,`hover`,String(p));t.dispatch(Wx({active:!0,activeIndex:p.toString(),activeCoordinate:x}))}finally{RM=null,zM=null}};if(!a){o();return}r===`raf`?RM=requestAnimationFrame(o):typeof r==`number`&&zM===null&&(o(),BM=null,zM=setTimeout(()=>{BM?o():(zM=null,RM=null)},r))}}),LM.startListening({actionCreator:FM,effect:(e,t)=>{var n=t.getState();if(n.rootProps.accessibilityLayer!==!1){var r=n.tooltip.keyboardInteraction;if(!r.active&&r.index==null){var i=`0`,a=CC(n,Ex(n,n.tooltip.settings.shared),`hover`,String(i));t.dispatch(Wx({active:!0,activeIndex:i,activeCoordinate:a}))}}}}),LM.startListening({actionCreator:IM,effect:(e,t)=>{var n=t.getState();if(n.rootProps.accessibilityLayer!==!1){var r=n.tooltip.keyboardInteraction;r.active&&t.dispatch(Wx({active:!1,activeIndex:r.index,activeCoordinate:r.coordinate}))}}});function VM(e){e.persist();var t=e.currentTarget;return new Proxy(e,{get:(e,n)=>{if(n===`currentTarget`)return t;var r=Reflect.get(e,n);return typeof r==`function`?r.bind(e):r}})}var HM=ya(`externalEvent`),UM=Do(),WM=new Map,GM=new Map,KM=new Map;UM.startListening({actionCreator:HM,effect:(e,t)=>{var n=e.payload,r=n.handler,i=n.reactEvent;if(r!=null){var a=i.type,o=VM(i);KM.set(a,{handler:r,reactEvent:o});var s=WM.get(a);s!==void 0&&(cancelAnimationFrame(s),WM.delete(a));var c=t.getState().eventSettings,l=c.throttleDelay,u=c.throttledEvents,d=u===`all`||u?.includes(a),f=GM.get(a);f!==void 0&&(typeof l!=`number`||!d)&&(clearTimeout(f),GM.delete(a));var p=()=>{var e=KM.get(a);try{if(!e)return;var n=e.handler,r=e.reactEvent,i=t.getState(),o={activeCoordinate:YS(i),activeDataKey:KS(i),activeIndex:WS(i),activeLabel:GS(i),activeTooltipIndex:WS(i),isTooltipActive:XS(i)};n&&n(o,r)}finally{WM.delete(a),GM.delete(a),KM.delete(a)}};if(!d){p();return}if(l===`raf`){var m=requestAnimationFrame(p);WM.set(a,m)}else if(typeof l==`number`){if(!GM.has(a)){p();var h=setTimeout(p,l);GM.set(a,h)}}else p()}}});var qM=B([B([sS],e=>e.tooltipItemPayloads),(e,t)=>t,(e,t,n)=>n],(e,t,n)=>{if(t!=null){var r=e.find(e=>e.settings.graphicalItemId===n);if(r!=null){var i=r.getPosition;if(i!=null)return i(t)}}}),JM=ya(`touchMove`),YM=Do(),XM=null,ZM=null,QM=null,$M=null;YM.startListening({actionCreator:JM,effect:(e,t)=>{var n=e.payload;if(n.touches!=null&&n.touches.length!==0){$M=VM(n);var r=t.getState().eventSettings,i=r.throttleDelay,a=r.throttledEvents,o=a===`all`||a.includes(`touchmove`);XM!==null&&(cancelAnimationFrame(XM),XM=null),ZM!==null&&(typeof i!=`number`||!o)&&(clearTimeout(ZM),ZM=null),QM=Array.from(n.touches).map(e=>vM({clientX:e.clientX,clientY:e.clientY,currentTarget:n.currentTarget}));var s=()=>{if($M!=null){var e=t.getState(),n=Ex(e,e.tooltip.settings.shared);if(n===`axis`){var r=QM?.[0];if(r==null){XM=null,ZM=null;return}var i=gM(e,r);i?.activeIndex!=null&&t.dispatch(Vx({activeIndex:i.activeIndex,activeDataKey:void 0,activeCoordinate:i.activeCoordinate}))}else if(n===`item`){var a=$M.touches[0];if(document.elementFromPoint==null||a==null)return;var o=document.elementFromPoint(a.clientX,a.clientY);if(!o||!o.getAttribute)return;var s=o.getAttribute(ps),c=o.getAttribute(`data-recharts-item-id`)??void 0,l=xS(e).find(e=>e.id===c);if(s==null||l==null||c==null)return;var u=l.dataKey,d=qM(e,s,c);t.dispatch(Lx({activeDataKey:u,activeIndex:s,activeCoordinate:d,activeGraphicalItemId:c}))}XM=null,ZM=null}};if(!o){s();return}i===`raf`?XM=requestAnimationFrame(s):typeof i==`number`&&ZM===null&&(s(),$M=null,ZM=setTimeout(()=>{$M?s():(ZM=null,XM=null)},i))}}});var eN={throttleDelay:`raf`,throttledEvents:[`mousemove`,`touchmove`,`pointermove`,`scroll`,`wheel`]},tN=Ba({name:`eventSettings`,initialState:eN,reducers:{setEventSettings:(e,t)=>{t.payload.throttleDelay!=null&&(e.throttleDelay=t.payload.throttleDelay),t.payload.throttledEvents!=null&&(e.throttledEvents=V(t.payload.throttledEvents))}}}),nN=tN.actions.setEventSettings,rN=tN.reducer,iN=Ur({brush:$O,cartesianAxis:zO,chartData:yw,errorBars:LA,eventSettings:rN,graphicalItems:lO,layout:Fo,legend:Dc,options:fw,polarAxis:QE,polarOptions:NM,referenceElements:ik,renderedTicks:Bk,rootProps:kM,tooltip:Gx,zIndex:qC}),aN=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`Chart`;return Aa({reducer:iN,preloadedState:e,middleware:e=>e({serializableCheck:!1,immutableCheck:![`commonjs`,`es6`,`production`].includes(`es6`)}).concat([bM.middleware,SM.middleware,LM.middleware,UM.middleware,YM.middleware]),enhancers:e=>{var t=e;return typeof e==`function`&&(t=e()),t.concat(Oa({type:`raf`}))},devTools:hl.devToolsEnabled&&{serialize:{replacer:EM},name:`recharts-${t}`}})};function oN(e){var t=e.preloadedState,n=e.children,r=e.reduxStoreName,i=ks(),a=(0,o.useRef)(null);if(i)return n;a.current??=aN(t,r);var s=Zn;return o.createElement(Uc,{context:s,store:a.current},n)}function sN(e){var t=e.layout,n=e.margin,r=R(),i=ks();return(0,o.useEffect)(()=>{i||(r(Mo(t)),r(jo(n)))},[r,i,t,n]),null}var cN=(0,o.memo)(sN,Kc);function lN(e){var t=R();return(0,o.useEffect)(()=>{t(AM(e))},[t,e]),null}var uN=(0,o.memo)(e=>{var t=R();return(0,o.useEffect)(()=>{t(nN(e))},[t,e]),null},Kc);function dN(e){var t=e.zIndex,n=e.isPanorama,r=(0,o.useRef)(null),i=R();return(0,o.useLayoutEffect)(()=>(r.current&&i(GC({zIndex:t,element:r.current,isPanorama:n})),()=>{i(KC({zIndex:t,isPanorama:n}))}),[i,t,n]),o.createElement(`g`,{tabIndex:-1,ref:r,className:`recharts-zIndex-layer_${t}`})}function fN(e){var t=e.children,n=e.isPanorama,r=z(MC);if(!r||r.length===0)return t;var i=r.filter(e=>e<0),a=r.filter(e=>e>0);return o.createElement(o.Fragment,null,i.map(e=>o.createElement(dN,{key:e,zIndex:e,isPanorama:n})),t,a.map(e=>o.createElement(dN,{key:e,zIndex:e,isPanorama:n})))}var pN=[`children`];function mN(e,t){if(e==null)return{};var n,r,i=hN(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{var n=mc(),r=hc(),i=Ll();if(!Lo(n)||!Lo(r))return null;var a=e.children,s=e.otherAttributes,c=e.title,l=e.desc,u,d;return s!=null&&(u=typeof s.tabIndex==`number`?s.tabIndex:i?0:void 0,d=typeof s.role==`string`?s.role:i?`application`:void 0),o.createElement(x,gN({},s,{title:c,desc:l,role:d,tabIndex:u,width:n,height:r,style:_N,ref:t}),a)}),yN=e=>{var t=e.children,n=z(js);if(!n)return null;var r=n.width,i=n.height,a=n.y,s=n.x;return o.createElement(x,{width:r,height:i,x:s,y:a},t)},bN=(0,o.forwardRef)((e,t)=>{var n=e.children,r=mN(e,pN);return ks()?o.createElement(yN,null,o.createElement(fN,{isPanorama:!0},n)):o.createElement(vN,gN({ref:t},r),o.createElement(fN,{isPanorama:!1},n))});function xN(e,t){return EN(e)||TN(e,t)||CN(e,t)||SN()}function SN(){throw TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function CN(e,t){if(e){if(typeof e==`string`)return wN(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?wN(e,t):void 0}}function wN(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n{if(n!=null){var t=n.getBoundingClientRect().width/n.offsetWidth;U(t)&&t!==i&&e(Po(t))}},[n,e,i]),r}function ON(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function kN(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n(Aw(),null);function VN(e){if(typeof e==`number`)return e;if(typeof e==`string`){var t=parseFloat(e);if(!Number.isNaN(t))return t}return 0}var HN=(0,o.forwardRef)((e,t)=>{var n=(0,o.useRef)(null),r=PN((0,o.useState)({containerWidth:VN(e.style?.width),containerHeight:VN(e.style?.height)}),2),i=r[0],a=r[1],s=(0,o.useCallback)((e,t)=>{a(n=>{var r=Math.round(e),i=Math.round(t);return n.containerWidth===r&&n.containerHeight===i?n:{containerWidth:r,containerHeight:i}})},[]),c=(0,o.useCallback)(e=>{if(typeof t==`function`&&t(e),n.current!=null&&(n.current.disconnect(),n.current=null),e!=null&&typeof ResizeObserver<`u`){var r=e.getBoundingClientRect(),i=r.width,a=r.height;s(i,a);var o=new ResizeObserver(e=>{var t=e[0];if(t!=null){var n=t.contentRect,r=n.width,i=n.height;s(r,i)}});o.observe(e),n.current=o}},[t,s]);return(0,o.useEffect)(()=>()=>{n.current?.disconnect()},[s]),o.createElement(o.Fragment,null,o.createElement(xc,{width:i.containerWidth,height:i.containerHeight}),o.createElement(`div`,NN({ref:c},e)))}),UN=(0,o.forwardRef)((e,t)=>{var n=e.width,r=e.height,i=PN((0,o.useState)({containerWidth:VN(n),containerHeight:VN(r)}),2),a=i[0],s=i[1],c=(0,o.useCallback)((e,t)=>{s(n=>{var r=Math.round(e),i=Math.round(t);return n.containerWidth===r&&n.containerHeight===i?n:{containerWidth:r,containerHeight:i}})},[]),l=(0,o.useCallback)(e=>{if(typeof t==`function`&&t(e),e!=null){var n=e.getBoundingClientRect(),r=n.width,i=n.height;c(r,i)}},[t,c]);return o.createElement(o.Fragment,null,o.createElement(xc,{width:a.containerWidth,height:a.containerHeight}),o.createElement(`div`,NN({ref:l},e)))}),WN=(0,o.forwardRef)((e,t)=>{var n=e.width,r=e.height;return o.createElement(o.Fragment,null,o.createElement(xc,{width:n,height:r}),o.createElement(`div`,NN({ref:t},e)))}),GN=(0,o.forwardRef)((e,t)=>{var n=e.width,r=e.height;return typeof n==`string`||typeof r==`string`?o.createElement(UN,NN({},e,{ref:t})):typeof n==`number`&&typeof r==`number`?o.createElement(WN,NN({},e,{width:n,height:r,ref:t})):o.createElement(o.Fragment,null,o.createElement(xc,{width:n,height:r}),o.createElement(`div`,NN({ref:t},e)))});function KN(e){return e?HN:GN}var qN=(0,o.forwardRef)((e,t)=>{var n=e.children,i=e.className,a=e.height,s=e.onClick,c=e.onContextMenu,l=e.onDoubleClick,u=e.onMouseDown,d=e.onMouseEnter,f=e.onMouseLeave,p=e.onMouseMove,m=e.onMouseUp,h=e.onTouchEnd,g=e.onTouchMove,_=e.onTouchStart,v=e.style,y=e.width,b=e.responsive,x=e.dispatchTouchEvents,S=x===void 0||x,C=(0,o.useRef)(null),w=R(),T=PN((0,o.useState)(null),2),E=T[0],D=T[1],O=PN((0,o.useState)(null),2),k=O[0],A=O[1],j=DN(),M=cc(),N=M?.width>0?M.width:y,ee=M?.height>0?M.height:a,te=(0,o.useCallback)(e=>{j(e),typeof t==`function`&&t(e),D(e),A(e),e!=null&&(C.current=e)},[j,t,D,A]),ne=(0,o.useCallback)(e=>{w(yM(e)),w(HM({handler:s,reactEvent:e}))},[w,s]),re=(0,o.useCallback)(e=>{w(xM(e)),w(HM({handler:d,reactEvent:e}))},[w,d]),ie=(0,o.useCallback)(e=>{w(zx()),w(HM({handler:f,reactEvent:e}))},[w,f]),P=(0,o.useCallback)(e=>{w(xM(e)),w(HM({handler:p,reactEvent:e}))},[w,p]),F=(0,o.useCallback)(()=>{w(FM())},[w]),ae=(0,o.useCallback)(()=>{w(IM())},[w]),oe=(0,o.useCallback)(e=>{w(PM(e.key))},[w]),I=(0,o.useCallback)(e=>{w(HM({handler:c,reactEvent:e}))},[w,c]),se=(0,o.useCallback)(e=>{w(HM({handler:l,reactEvent:e}))},[w,l]),ce=(0,o.useCallback)(e=>{w(HM({handler:u,reactEvent:e}))},[w,u]),le=(0,o.useCallback)(e=>{w(HM({handler:m,reactEvent:e}))},[w,m]),ue=(0,o.useCallback)(e=>{w(HM({handler:_,reactEvent:e}))},[w,_]),de=(0,o.useCallback)(e=>{S&&w(JM(e)),w(HM({handler:g,reactEvent:e}))},[w,S,g]),fe=(0,o.useCallback)(e=>{w(HM({handler:h,reactEvent:e}))},[w,h]),pe=KN(b);return o.createElement(iw.Provider,{value:E},o.createElement(De.Provider,{value:k},o.createElement(pe,{width:N??v?.width,height:ee??v?.height,className:r(`recharts-wrapper`,i),style:kN({position:`relative`,cursor:`default`,width:N,height:ee},v),onClick:ne,onContextMenu:I,onDoubleClick:se,onFocus:F,onBlur:ae,onKeyDown:oe,onMouseDown:ce,onMouseEnter:re,onMouseLeave:ie,onMouseMove:P,onMouseUp:le,onTouchEnd:fe,onTouchMove:de,onTouchStart:ue,ref:te},o.createElement(BN,null),n)))}),JN=[`width`,`height`,`responsive`,`children`,`className`,`style`,`compact`,`title`,`desc`];function YN(e,t){if(e==null)return{};var n,r,i=XN(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{var n=e.width,r=e.height,i=e.responsive,a=e.children,s=e.className,c=e.style,l=e.compact,u=e.title,d=e.desc,f=p(YN(e,JN));return l?o.createElement(o.Fragment,null,o.createElement(xc,{width:n,height:r}),o.createElement(bN,{otherAttributes:f,title:u,desc:d},a)):o.createElement(qN,{className:s,style:c,width:n,height:r,responsive:i??!1,onClick:e.onClick,onMouseLeave:e.onMouseLeave,onMouseEnter:e.onMouseEnter,onMouseMove:e.onMouseMove,onMouseDown:e.onMouseDown,onMouseUp:e.onMouseUp,onContextMenu:e.onContextMenu,onDoubleClick:e.onDoubleClick,onTouchStart:e.onTouchStart,onTouchMove:e.onTouchMove,onTouchEnd:e.onTouchEnd},o.createElement(bN,{otherAttributes:f,title:u,desc:d,ref:t},o.createElement(fk,null,a)))});function QN(){return QN=Object.assign?Object.assign.bind():function(e){for(var t=1;to.createElement(aP,{chartName:`AreaChart`,defaultTooltipEventType:`axis`,validateTooltipEventTypes:oP,tooltipPayloadSearcher:uw,categoricalChartProps:e,ref:t}));export{xp as $,JC as A,m as At,Hy as B,$E as C,ue as Ct,oE as D,te as Dt,xE as E,F as Et,Bx as F,Mb as G,zy as H,Lx as I,Dy as J,jy as K,Wy as L,qS as M,WS as N,qw as O,E as Ot,Rx as P,ky as Q,Fb as R,oD as S,kt as St,UE as T,I as Tt,Py as U,pb as V,Rb as W,cb as X,sb as Y,Lb as Z,UD as _,W as _t,cN as a,lf as at,yD as b,z as bt,MM as c,Ad as ct,Nj as d,yc as dt,dp as et,PA as f,uc as ft,WD as g,is as gt,eO as h,ps as ht,lN as i,af as it,KS as j,uw as k,p as kt,hM as l,Ql as lt,dO as m,ms as mt,ZN as n,Wf as nt,oN as o,Qd as ot,XO as p,Ts as pt,ub as q,uN as r,Lf as rt,eN as s,jd as st,sP as t,q as tt,eM as u,G as ut,kD as v,B as vt,qE as w,fe as wt,vD as x,Ft as xt,xD as y,R as yt,Bb as z}; \ No newline at end of file diff --git a/dist/assets/AutomationModule-WP2z7OGh.js b/dist/assets/AutomationModule-WP2z7OGh.js deleted file mode 100644 index 1aa1e56..0000000 --- a/dist/assets/AutomationModule-WP2z7OGh.js +++ /dev/null @@ -1 +0,0 @@ -import{f as e,h as t,i as n,l as r,r as i,s as a,t as o}from"./useToast-CS8pZhce.js";import{t as s}from"./arrow-down-CWbiHuZO.js";import{t as c}from"./clock-BelL0bvZ.js";import{t as l}from"./play-eIPXoy-j.js";import{t as u}from"./terminal-CcncyL3J.js";import{A as d,C as f,P as p,r as m,t as h}from"./index-CyHCRa3Z.js";var g={name:`power`,size:24,node:[[`path`,{d:`M12 2v10`,key:`mnfbl`}],[`path`,{d:`M18.4 6.6a9 9 0 1 1-12.77.04`,key:`obofu9`}]]};g.node;var _=r(g),v=t(e(),1),y=a(),b=[{id:`n1`,type:`trigger`,title:`Триггер: Новое входящее сообщение в Telegram`,description:`Срабатывает мгновенно при обращении гостя в бота заведения`,badge:`Событие`,badgeVariant:`gold`,latencyMs:14},{id:`n2`,type:`condition`,title:`Условие: Поиск клиента в базе CRM платформы`,description:`Проверка номера телефона и истории заказов: клиент найден в базе`,badge:`CRM Match`,badgeVariant:`neutral`,latencyMs:42},{id:`n3`,type:`ai`,title:`✦ Krona AI: Определение намерения гостя (Intent Analysis)`,description:`Классификация сообщения: запрос бронирования столика (уверенность 98%)`,badge:`ИИ-анализ`,badgeVariant:`gold`,latencyMs:175},{id:`n4`,type:`action`,title:`Действие: Создание сделки и назначение менеджера`,description:`Открытие карточки сделки в воронке со статусом «Бронирование стола»`,badge:`CRM Сделка`,badgeVariant:`green`,latencyMs:65},{id:`n5`,type:`action`,title:`Действие: Отправка подтверждения гостю в чат`,description:`Формирование персонализированного ответа с подтверждением даты и времени`,badge:`Telegram Reply`,badgeVariant:`info`,latencyMs:88}],x=()=>{let{showToast:e}=o(),[t,r]=(0,v.useState)(b),[a,g]=(0,v.useState)(!0),[x,S]=(0,v.useState)(!1),[C,w]=(0,v.useState)([]),[T,E]=(0,v.useState)(!1),[D,O]=(0,v.useState)(!1),[k,A]=(0,v.useState)(`action`),[j,M]=(0,v.useState)(``),[N,P]=(0,v.useState)(``),F=()=>{S(!0),E(!1),w([]);let n=[{stepNumber:1,nodeTitle:t[0].title,status:`running`,output:`Получен вебхук Telegram: "Добрый вечер, хотим столик на четверых на 19:30"`,latencyMs:14}];w([...n]),setTimeout(()=>{n[0].status=`success`,n.push({stepNumber:2,nodeTitle:t[1]?.title||`Поиск клиента`,status:`running`,output:`Поиск по номеру +7 (913) 482-19-02: Найден контакт «Анна Воронина» (VIP, 14 заказов)`,latencyMs:42}),w([...n])},400),setTimeout(()=>{n[1].status=`success`,n.push({stepNumber:3,nodeTitle:t[2]?.title||`AI Анализ`,status:`running`,output:`Модель Krona NLP v1.8: Класс = table_booking, Персоны = 4, Время = 19:30, Confidence = 98.4%`,latencyMs:175}),w([...n])},900),setTimeout(()=>{n[2].status=`success`,n.push({stepNumber:4,nodeTitle:t[3]?.title||`Создание сделки`,status:`running`,output:`Сделка #DL-9428 создана в воронке «Бронирование». Назначен менеджер: Алина Соколова`,latencyMs:65}),w([...n])},1400),setTimeout(()=>{n[3].status=`success`,n.push({stepNumber:5,nodeTitle:t[4]?.title||`Отправка ответа`,status:`success`,output:`Сообщение доставлено пользователю: "Анна, здравствуйте! Забронировали Стол 5 на 19:30."`,latencyMs:88}),w([...n]),S(!1),E(!0),e({title:`Тестовый запуск успешен!`,message:`Все 5 узлов цепочки выполнены без ошибок за 384 ms`,type:`success`})},1900)},I=t=>{if(t.preventDefault(),!j.trim())return;let n={id:`n-${Date.now()}`,type:k,title:j.trim(),description:N.trim()||`Пользовательский шаг автоматизации`,badge:k.toUpperCase(),badgeVariant:{trigger:`gold`,condition:`neutral`,ai:`gold`,action:`green`}[k],latencyMs:Math.floor(20+Math.random()*80)};r(e=>[...e,n]),O(!1),M(``),P(``),e({title:`Узел добавлен в цепочку`,message:`Блок «${n.title}» готов к выполнению`,type:`success`})},L=t.reduce((e,t)=>e+t.latencyMs,0);return(0,y.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,y.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 bg-krona-surface p-3.5 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,y.jsxs)(`div`,{children:[(0,y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,y.jsx)(`h2`,{className:`text-sm font-bold text-krona-primary`,children:`Автоматизация & Visual Workflow Engine`}),(0,y.jsx)(h,{level:`target`,size:`sm`})]}),(0,y.jsx)(`p`,{className:`text-xs text-krona-secondary mt-0.5`,children:`Визуальный конструктор бизнес-процессов: триггеры, условия, AI-агенты и автоматические действия`})]}),(0,y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,y.jsxs)(n,{variant:a?`secondary`:`outline`,size:`sm`,onClick:()=>{g(!a),e({title:a?`Сценарий деактивирован`:`Сценарий активирован`,message:a?`Цепочка приостановлена`:`Сценарий слушает входящие события`,type:`info`})},children:[(0,y.jsx)(_,{className:`w-3.5 h-3.5 mr-1`}),a?`Активен (Вкл)`:`Отключен (Пауза)`]}),(0,y.jsxs)(n,{variant:`primary`,size:`sm`,onClick:()=>O(!0),children:[(0,y.jsx)(f,{className:`w-3.5 h-3.5 mr-1`}),`Добавить узел`]})]})]}),(0,y.jsxs)(`div`,{className:`grid grid-cols-1 lg:grid-cols-12 gap-4`,children:[(0,y.jsxs)(`div`,{className:`lg:col-span-7 bg-krona-surface border border-krona-border rounded-xl p-5 shadow-krona-soft space-y-4`,children:[(0,y.jsxs)(`div`,{className:`flex items-center justify-between pb-3 border-b border-krona-border`,children:[(0,y.jsxs)(`div`,{children:[(0,y.jsx)(`h4`,{className:`text-xs font-bold text-krona-primary`,children:`Сценарий: «Автоматическая обработка брони стола из Telegram»`}),(0,y.jsxs)(`span`,{className:`text-[11px] text-krona-secondary`,children:[`Всего шагов: `,t.length,` • Среднее время сквозного выполнения: ~`,L,` ms`]})]}),(0,y.jsx)(i,{variant:a?`green`:`neutral`,size:`sm`,children:a?`Работает в фоне`:`На паузе`})]}),(0,y.jsx)(`div`,{className:`max-w-xl mx-auto py-2 flex flex-col items-center space-y-2`,children:t.map((e,n)=>(0,y.jsxs)(v.Fragment,{children:[(0,y.jsxs)(`div`,{className:`w-full p-3.5 rounded-xl border border-krona-border bg-krona-workspace shadow-krona-soft flex items-start justify-between gap-3 hover:border-krona-border-strong transition-all`,children:[(0,y.jsxs)(`div`,{children:[(0,y.jsx)(`div`,{className:`flex items-center gap-2 mb-1`,children:(0,y.jsx)(`span`,{className:`text-xs font-bold text-krona-primary`,children:e.title})}),(0,y.jsx)(`p`,{className:`text-[11px] text-krona-secondary leading-snug`,children:e.description}),(0,y.jsxs)(`span`,{className:`text-[10px] text-krona-secondary font-mono mt-1 block`,children:[`Ожидаемая задержка: ~`,e.latencyMs,` ms`]})]}),(0,y.jsx)(i,{variant:e.badgeVariant,size:`sm`,children:e.badge})]}),n(0,y.jsxs)(`div`,{className:`space-y-0.5 animate-fade-in`,children:[(0,y.jsxs)(`div`,{className:`flex items-center justify-between text-[10px]`,children:[(0,y.jsxs)(`span`,{className:`text-krona-gold font-bold`,children:[`[ШАГ `,e.stepNumber,`] `,e.nodeTitle]}),(0,y.jsxs)(`span`,{className:`text-zinc-400`,children:[e.latencyMs,` ms`]})]}),(0,y.jsx)(`div`,{className:`text-zinc-300 pl-2 border-l border-zinc-700`,children:e.output}),(0,y.jsxs)(`div`,{className:`text-[10px] pl-2 font-bold`,children:[e.status===`success`&&(0,y.jsxs)(`span`,{className:`text-emerald-400 flex items-center gap-1`,children:[(0,y.jsx)(p,{className:`w-3 h-3`}),` УСПЕШНО`]}),e.status===`running`&&(0,y.jsxs)(`span`,{className:`text-amber-400 flex items-center gap-1`,children:[(0,y.jsx)(c,{className:`w-3 h-3 animate-spin`}),` ВЫПОЛНЕНИЕ...`]})]})]},e.stepNumber)),T&&(0,y.jsx)(`div`,{className:`pt-2 border-t border-zinc-800 text-emerald-400 font-bold text-center`,children:`✓ ВСЕ ШАГИ ВЫПОЛНЕНЫ УСПЕШНО (ИТОГО: 384 ms)`})]})]}),(0,y.jsxs)(`div`,{className:`p-2.5 bg-krona-workspace rounded-lg border border-krona-border text-[11px] text-krona-secondary flex items-center gap-2`,children:[(0,y.jsx)(d,{className:`w-4 h-4 text-krona-green shrink-0`}),(0,y.jsx)(`span`,{children:`Логи тестового запуска записываются в журнал аудита безопасности.`})]})]})]}),D&&(0,y.jsx)(m,{isOpen:D,onClose:()=>O(!1),title:`Добавить узел автоматизации`,subtitle:`Выбор типа операции в цепочке`,maxWidth:`sm`,footer:(0,y.jsxs)(`div`,{className:`flex gap-2 w-full justify-end`,children:[(0,y.jsx)(n,{variant:`secondary`,onClick:()=>O(!1),children:`Отмена`}),(0,y.jsx)(n,{variant:`primary`,onClick:I,children:`Добавить в сценарий`})]}),children:(0,y.jsxs)(`div`,{className:`space-y-3 text-xs`,children:[(0,y.jsxs)(`div`,{className:`space-y-1`,children:[(0,y.jsx)(`label`,{className:`font-semibold text-krona-primary`,children:`Тип узла:`}),(0,y.jsxs)(`select`,{value:k,onChange:e=>A(e.target.value),className:`w-full p-2 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary focus:outline-none focus:border-krona-green`,children:[(0,y.jsx)(`option`,{value:`action`,children:`Действие (Action)`}),(0,y.jsx)(`option`,{value:`condition`,children:`Условие (Condition)`}),(0,y.jsx)(`option`,{value:`ai`,children:`ИИ-агент (Krona AI)`}),(0,y.jsx)(`option`,{value:`trigger`,children:`Триггер (Trigger)`})]})]}),(0,y.jsxs)(`div`,{className:`space-y-1`,children:[(0,y.jsx)(`label`,{className:`font-semibold text-krona-primary`,children:`Название шага:`}),(0,y.jsx)(`input`,{type:`text`,value:j,onChange:e=>M(e.target.value),placeholder:`Например: Отправить уведомление в Telegram администратору`,className:`w-full p-2 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary focus:outline-none focus:border-krona-green`})]}),(0,y.jsxs)(`div`,{className:`space-y-1`,children:[(0,y.jsx)(`label`,{className:`font-semibold text-krona-primary`,children:`Описание / Логика:`}),(0,y.jsx)(`textarea`,{rows:2,value:N,onChange:e=>P(e.target.value),placeholder:`Укажите условия или параметры вызова...`,className:`w-full p-2 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary focus:outline-none focus:border-krona-green resize-none`})]})]})})]})};export{x as AutomationModule}; \ No newline at end of file diff --git a/dist/assets/CardLayoutBuilder-DiCqYVEZ.js b/dist/assets/CardLayoutBuilder-DiCqYVEZ.js deleted file mode 100644 index 202546d..0000000 --- a/dist/assets/CardLayoutBuilder-DiCqYVEZ.js +++ /dev/null @@ -1 +0,0 @@ -import{f as e,h as t,i as n,l as r,r as i,s as a,t as o}from"./useToast-CS8pZhce.js";import{l as s}from"./indexedDb-DZ-aRPMs.js";import{t as c}from"./clock-BelL0bvZ.js";import{t as l}from"./credit-card-6Y5eHPCw.js";import{t as u}from"./eye-CkF1gwUX.js";import{t as d}from"./list-XDoRqfJ2.js";import{n as f,t as p}from"./move-up-qiRY8MuU.js";import{t as m}from"./save-D8euL60I.js";import{t as h}from"./settings-2-CSojebrG.js";import{t as g}from"./user-CuEEaB8a.js";import{B as _,C as v,D as y,H as b,Y as x,a as S,et as C,f as w,n as T,tt as E}from"./index-CyHCRa3Z.js";import{t as D}from"./currency-DdDs82F5.js";var O={name:`activity`,size:24,node:[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]};O.node;var k=r(O),A={name:`paperclip`,size:24,node:[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]};A.node;var j=r(A),M=t(e(),1),N=a(),P=[{id:`blk_header`,type:`header`,title:`Шапка карточки (Header)`,enabled:!0,columnSpan:3,order:1,settings:{showAvatar:!0}},{id:`blk_badges`,type:`badges`,title:`Статусная строка и бейджи`,enabled:!0,columnSpan:3,order:2},{id:`blk_fields`,type:`fields_grid`,title:`Основная сетка полей (Fields Grid)`,enabled:!0,columnSpan:2,order:3,settings:{columnsCount:2}},{id:`blk_timeline`,type:`timeline`,title:`Лента активности и аудит (Timeline)`,enabled:!0,columnSpan:1,order:4,settings:{maxItems:10}},{id:`blk_tasks_notes`,type:`tasks_notes`,title:`Заметки и связанные задачи`,enabled:!0,columnSpan:2,order:5},{id:`blk_related`,type:`related_lists`,title:`Связанные списки (Related Lists)`,enabled:!0,columnSpan:3,order:6},{id:`blk_attachments`,type:`attachments`,title:`Вложенные файлы и документы`,enabled:!0,columnSpan:1,order:7}],F={header:g,badges:k,fields_grid:y,timeline:c,tasks_notes:w,related_lists:d,attachments:j},I=()=>{let{entityCode:e}=E(),t=C(),{currentEntity:r,layouts:a,saveLayout:d}=b(e),{showToast:g}=o(),[O,k]=(0,M.useState)(P),[A,I]=(0,M.useState)(!1),[L,R]=(0,M.useState)(!1),[z,B]=(0,M.useState)(null),[V,H]=(0,M.useState)([]),[U,W]=(0,M.useState)(`demo`);(0,M.useEffect)(()=>{if(!a||a.length===0)return;let t=a.find(t=>t.entityCode===e&&(t.type===`card`||t.cardBlocks));t?.cardBlocks&&t.cardBlocks.length>0&&Promise.resolve().then(()=>{k(t.cardBlocks)})},[a,e]),(0,M.useEffect)(()=>{e&&s(e,{pageSize:10}).then(e=>{H(e.items),e.items.length>0&&W(e.items[0].id)})},[e]);let G=(0,M.useMemo)(()=>{let t=V.find(e=>e.id===U);if(t)return t;let n={id:`rec_demo_preview`,entityType:e||`custom`,name:`Тестовая запись (${r?.name||`Сущность`})`,status:`in_progress`,updatedAt:new Date().toISOString(),created_at:new Date().toISOString()};return r?.fields.forEach(e=>{e.key!==`name`&&e.key!==`status`&&(e.type===`money`?n[e.key]=125e5:e.type===`integer`||e.type===`number`?n[e.key]=42:e.type===`boolean`?n[e.key]=!0:e.type===`email`?n[e.key]=`client@example.com`:e.type===`phone`?n[e.key]=`+7 (999) 000-11-22`:n[e.key]=e.defaultValue||`Значение поля ${e.label}`)}),n},[V,U,r,e]),K=e=>{k(t=>t.map(t=>t.id===e?{...t,enabled:!t.enabled}:t)),I(!0)},q=(e,t)=>{k(n=>{let r=[...n],[i]=r.splice(e,1);return r.splice(t,0,i),r.map((e,t)=>({...e,order:t+1}))}),I(!0)},J=e=>{k(t=>t.map(t=>t.id===e.id?e:t)),I(!0),B(null)},Y=async()=>{if(e)try{let t={id:`card_layout_${e}`,entityCode:e,name:`Карточка сущности`,isDefault:!0,type:`card`,sections:[],cardBlocks:O};await d(t),I(!1),g({type:`success`,title:`Макет карточки успешно сохранён`})}catch(e){g({type:`error`,title:`Ошибка сохранения карточки`,message:e instanceof Error?e.message:String(e)})}},X=(0,M.useMemo)(()=>r?.fields||[],[r]);return(0,N.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,N.jsxs)(`div`,{className:`flex flex-col md:flex-row md:items-center justify-between gap-3 p-4 bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft`,children:[(0,N.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,N.jsxs)(n,{variant:`ghost`,size:`sm`,onClick:()=>t(`/settings/entities`),className:`p-1.5`,children:[(0,N.jsx)(_,{className:`w-4 h-4 mr-1`}),`Каталог`]}),(0,N.jsxs)(`div`,{children:[(0,N.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,N.jsx)(l,{className:`w-4 h-4 text-krona-info`}),(0,N.jsxs)(`h1`,{className:`text-base font-bold text-krona-primary`,children:[`Конструктор карточки: `,r?.name||e]}),A&&(0,N.jsx)(i,{variant:`warning`,size:`sm`,children:`Несохранённые изменения`})]}),(0,N.jsx)(`p`,{className:`text-xs text-krona-secondary`,children:`Настройка блочной структуры детальной карточки записи, таймлайна, бейджей и связанных списков`})]})]}),(0,N.jsxs)(`div`,{className:`flex items-center gap-2`,children:[V.length>0&&(0,N.jsx)(`select`,{value:U,onChange:e=>W(e.target.value),className:`text-xs bg-krona-surface text-krona-primary border border-krona-border rounded-md px-2.5 py-1.5 max-w-[180px]`,title:`Выберите запись для проверки`,children:V.map(e=>(0,N.jsx)(`option`,{value:e.id,children:String(e.name||e.id)},e.id))}),(0,N.jsxs)(n,{variant:L?`secondary`:`outline`,size:`sm`,onClick:()=>R(!L),children:[(0,N.jsx)(u,{className:`w-3.5 h-3.5 mr-1 text-krona-gold`}),L?`В редактор`:`Предпросмотр записи`]}),(0,N.jsxs)(n,{variant:`primary`,size:`sm`,onClick:Y,children:[(0,N.jsx)(m,{className:`w-3.5 h-3.5 mr-1`}),`Сохранить`]})]})]}),L?(0,N.jsxs)(`div`,{className:`max-w-5xl mx-auto space-y-4`,children:[(0,N.jsxs)(`div`,{className:`p-3 bg-krona-surface-muted/60 border border-krona-border rounded-lg flex items-center justify-between text-xs text-krona-secondary`,children:[(0,N.jsxs)(`span`,{children:[`Предпросмотр на записи: `,(0,N.jsx)(`strong`,{className:`text-krona-primary`,children:String(G.name||G.id)})]}),(0,N.jsx)(i,{variant:`gold`,size:`sm`,children:`Live DB Preview`})]}),(0,N.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-3 gap-4`,children:O.filter(e=>e.enabled).map(e=>{let t={1:`md:col-span-1`,2:`md:col-span-2`,3:`md:col-span-3`}[e.columnSpan];switch(e.type){case`header`:return(0,N.jsxs)(`div`,{className:`${t} p-5 bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft flex flex-col sm:flex-row sm:items-center justify-between gap-4`,children:[(0,N.jsxs)(`div`,{className:`flex items-center gap-3`,children:[e.settings?.showAvatar!==!1&&(0,N.jsx)(`div`,{className:`w-12 h-12 rounded-xl bg-krona-green/10 text-krona-green flex items-center justify-center font-bold text-lg border border-krona-green/20`,children:String(G.name||`K`).slice(0,1).toUpperCase()}),(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`h2`,{className:`text-lg font-bold text-krona-primary`,children:String(G.name||`Без названия`)}),(0,N.jsxs)(`p`,{className:`text-xs font-mono text-krona-secondary`,children:[`ID: `,G.id,` • Тип: `,G.entityType]})]})]}),(0,N.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,N.jsx)(n,{variant:`outline`,size:`sm`,children:`Редактировать`}),(0,N.jsx)(n,{variant:`primary`,size:`sm`,children:`Действие`})]})]},e.id);case`badges`:return(0,N.jsxs)(`div`,{className:`${t} flex flex-wrap items-center gap-2 p-3 bg-krona-surface border border-krona-border rounded-xl`,children:[(0,N.jsx)(`span`,{className:`text-xs text-krona-secondary font-medium`,children:`Статус:`}),(0,N.jsx)(i,{variant:`green`,size:`md`,children:String(G.status||`В работе`)}),(0,N.jsx)(i,{variant:`gold`,size:`md`,children:`Приоритет: Высокий`}),(0,N.jsxs)(`span`,{className:`text-xs text-krona-secondary ml-auto`,children:[`Обновлено: `,x(String(G.updatedAt||new Date().toISOString()))]})]},e.id);case`fields_grid`:return(0,N.jsxs)(`div`,{className:`${t} p-4 bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft space-y-3`,children:[(0,N.jsx)(`h3`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider`,children:e.title}),(0,N.jsx)(`div`,{className:`grid grid-cols-1 ${(e.settings?.columnsCount||2)===2?`sm:grid-cols-2`:`sm:grid-cols-3`} gap-3 text-xs`,children:X.map(e=>{let t=G[e.key];return(0,N.jsxs)(`div`,{className:`p-2.5 bg-krona-workspace/60 rounded-lg border border-krona-border/50`,children:[(0,N.jsx)(`span`,{className:`text-[11px] text-krona-secondary block mb-0.5`,children:e.label}),(0,N.jsx)(`span`,{className:`font-medium text-krona-primary`,children:e.type===`money`?typeof t==`number`?D(t):`—`:typeof t==`boolean`?t?`Да`:`Нет`:t!=null&&t!==``?String(t):`—`})]},e.key)})})]},e.id);case`timeline`:return(0,N.jsxs)(`div`,{className:`${t} p-4 bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft space-y-3`,children:[(0,N.jsxs)(`h3`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider flex items-center gap-1.5`,children:[(0,N.jsx)(c,{className:`w-3.5 h-3.5 text-krona-gold`}),e.title]}),(0,N.jsxs)(`div`,{className:`space-y-2.5 text-xs`,children:[(0,N.jsxs)(`div`,{className:`flex gap-2.5 items-start`,children:[(0,N.jsx)(`div`,{className:`w-2 h-2 rounded-full bg-krona-green mt-1.5 shrink-0`}),(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`p`,{className:`font-medium text-krona-primary`,children:`Создана запись`}),(0,N.jsx)(`p`,{className:`text-[11px] text-krona-secondary`,children:x(String(G.created_at||new Date().toISOString()))})]})]}),(0,N.jsxs)(`div`,{className:`flex gap-2.5 items-start`,children:[(0,N.jsx)(`div`,{className:`w-2 h-2 rounded-full bg-krona-gold mt-1.5 shrink-0`}),(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`p`,{className:`font-medium text-krona-primary`,children:`Статус изменён на «В работе»`}),(0,N.jsx)(`p`,{className:`text-[11px] text-krona-secondary`,children:x(String(G.updatedAt||new Date().toISOString()))})]})]})]})]},e.id);case`tasks_notes`:return(0,N.jsxs)(`div`,{className:`${t} p-4 bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft space-y-3`,children:[(0,N.jsxs)(`h3`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider flex items-center gap-1.5`,children:[(0,N.jsx)(w,{className:`w-3.5 h-3.5 text-krona-green`}),e.title]}),(0,N.jsxs)(`div`,{className:`space-y-2 text-xs`,children:[(0,N.jsxs)(`label`,{className:`flex items-center gap-2 text-krona-primary`,children:[(0,N.jsx)(`input`,{type:`checkbox`,defaultChecked:!0,className:`rounded text-krona-green`}),(0,N.jsx)(`span`,{children:`Проверить реквизиты контрагента`})]}),(0,N.jsxs)(`label`,{className:`flex items-center gap-2 text-krona-primary`,children:[(0,N.jsx)(`input`,{type:`checkbox`,className:`rounded text-krona-green`}),(0,N.jsx)(`span`,{children:`Подписать договор у генерального директора`})]})]})]},e.id);case`related_lists`:return(0,N.jsxs)(`div`,{className:`${t} p-4 bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft space-y-3`,children:[(0,N.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,N.jsx)(`h3`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider`,children:e.title}),(0,N.jsxs)(n,{variant:`ghost`,size:`sm`,className:`text-xs`,children:[(0,N.jsx)(v,{className:`w-3 h-3 mr-1`}),` Добавить`]})]}),(0,N.jsx)(`div`,{className:`p-3 bg-krona-workspace rounded-lg border border-krona-border/50 text-xs text-krona-secondary text-center`,children:`Связанные документы и записи будут автоматически отображаться здесь`})]},e.id);case`attachments`:return(0,N.jsxs)(`div`,{className:`${t} p-4 bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft space-y-3`,children:[(0,N.jsxs)(`h3`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider flex items-center gap-1.5`,children:[(0,N.jsx)(j,{className:`w-3.5 h-3.5 text-krona-info`}),e.title]}),(0,N.jsx)(`div`,{className:`p-3 border border-dashed border-krona-border rounded-lg text-center text-xs text-krona-secondary`,children:`Перетащите файлы для прикрепления`})]},e.id);default:return null}})})]}):(0,N.jsxs)(`div`,{className:`space-y-3`,children:[(0,N.jsxs)(`div`,{className:`flex items-center justify-between p-3 bg-krona-surface border border-krona-border rounded-xl`,children:[(0,N.jsx)(`span`,{className:`text-xs font-semibold text-krona-primary`,children:`Блоки макета карточки (Drag / Порядок отображения)`}),(0,N.jsxs)(`span`,{className:`text-xs text-krona-secondary`,children:[`Активных блоков: `,(0,N.jsx)(`strong`,{children:O.filter(e=>e.enabled).length}),` из`,` `,O.length]})]}),(0,N.jsx)(`div`,{className:`space-y-2`,children:O.map((e,t)=>{let r=F[e.type]||y;return(0,N.jsxs)(`div`,{className:`flex items-center justify-between p-3.5 rounded-xl border transition-all ${e.enabled?`bg-krona-surface border-krona-border shadow-xs`:`bg-krona-workspace/40 border-krona-border/40 opacity-50`}`,children:[(0,N.jsxs)(`div`,{className:`flex items-center gap-3 min-w-0`,children:[(0,N.jsx)(`div`,{className:`w-8 h-8 rounded-lg bg-krona-workspace flex items-center justify-center border border-krona-border/60 shrink-0`,children:(0,N.jsx)(r,{className:`w-4 h-4 text-krona-green`})}),(0,N.jsxs)(`div`,{className:`min-w-0`,children:[(0,N.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,N.jsx)(`span`,{className:`text-sm font-semibold text-krona-primary truncate`,children:e.title}),(0,N.jsx)(i,{variant:`neutral`,size:`sm`,className:`font-mono text-[10px]`,children:e.type}),(0,N.jsxs)(i,{variant:`gold`,size:`sm`,className:`text-[10px]`,children:[`Ширина: `,e.columnSpan,`/3`]})]}),(0,N.jsxs)(`p`,{className:`text-xs text-krona-secondary truncate mt-0.5`,children:[e.type===`header`&&`Имя записи, аватар, первичные действия и кнопки`,e.type===`badges`&&`Статусные пилюли, категория, приоритет, метки`,e.type===`fields_grid`&&`Сетка основных атрибутов (колонок: ${e.settings?.columnsCount||2})`,e.type===`timeline`&&`История изменений, аудит действий и комментарии`,e.type===`tasks_notes`&&`Быстрые заметки и связанные поручения`,e.type===`related_lists`&&`Связанные документы, сделки, заказы или контакты`,e.type===`attachments`&&`Загруженные файлы, чеки, спецификации`]})]})]}),(0,N.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[(0,N.jsxs)(`label`,{className:`flex items-center gap-1.5 cursor-pointer text-xs text-krona-secondary mr-2`,children:[(0,N.jsx)(`input`,{type:`checkbox`,checked:e.enabled,onChange:()=>K(e.id),className:`rounded text-krona-green`}),`Включен`]}),(0,N.jsx)(n,{variant:`ghost`,size:`icon`,onClick:()=>B(e),title:`Настройки блока`,children:(0,N.jsx)(h,{className:`w-4 h-4 text-krona-secondary hover:text-krona-primary`})}),(0,N.jsx)(`button`,{onClick:()=>q(t,t-1),disabled:t===0,className:`p-1.5 text-krona-secondary hover:text-krona-primary disabled:opacity-20`,title:`Переместить вверх`,children:(0,N.jsx)(p,{className:`w-4 h-4`})}),(0,N.jsx)(`button`,{onClick:()=>q(t,t+1),disabled:t===O.length-1,className:`p-1.5 text-krona-secondary hover:text-krona-primary disabled:opacity-20`,title:`Переместить вниз`,children:(0,N.jsx)(f,{className:`w-4 h-4`})})]})]},e.id)})})]}),(0,N.jsx)(T,{isOpen:!!z,onClose:()=>B(null),title:z?`Настройки: ${z.title}`:`Настройки`,subtitle:`Тип блока: ${z?.type}`,width:`md`,children:z&&(0,N.jsxs)(`div`,{className:`space-y-4 text-xs`,children:[(0,N.jsx)(S,{label:`Заголовок блока`,value:z.title,onChange:e=>B(t=>t?{...t,title:e.target.value}:null)}),(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`label`,{className:`text-xs font-semibold text-krona-primary block mb-1`,children:`Ширина блока (Количество колонок)`}),(0,N.jsx)(`div`,{className:`grid grid-cols-3 gap-2`,children:[1,2,3].map(e=>(0,N.jsxs)(`button`,{type:`button`,onClick:()=>B(t=>t?{...t,columnSpan:e}:null),className:`py-2 text-xs font-bold rounded-lg border text-center ${z.columnSpan===e?`bg-krona-green text-white border-krona-green`:`bg-krona-surface text-krona-secondary border-krona-border`}`,children:[e,` / 3 колонок`]},e))})]}),z.type===`fields_grid`&&(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`label`,{className:`text-xs font-semibold text-krona-primary block mb-1`,children:`Количество внутренних колонок сетки`}),(0,N.jsxs)(`select`,{value:z.settings?.columnsCount||2,onChange:e=>B(t=>t?{...t,settings:{...t.settings,columnsCount:Number(e.target.value)}}:null),className:`w-full bg-krona-surface text-krona-primary border border-krona-border rounded-md px-3 py-2 text-xs`,children:[(0,N.jsx)(`option`,{value:1,children:`1 колонка`}),(0,N.jsx)(`option`,{value:2,children:`2 колонки`}),(0,N.jsx)(`option`,{value:3,children:`3 колонки`})]})]}),z.type===`header`&&(0,N.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer font-medium text-krona-primary`,children:[(0,N.jsx)(`input`,{type:`checkbox`,checked:z.settings?.showAvatar!==!1,onChange:e=>B(t=>t?{...t,settings:{...t.settings,showAvatar:e.target.checked}}:null),className:`rounded text-krona-green`}),`Отображать аватар/иконку в шапке`]}),(0,N.jsxs)(`div`,{className:`flex justify-end gap-2 pt-4 border-t border-krona-border`,children:[(0,N.jsx)(n,{variant:`outline`,size:`sm`,onClick:()=>B(null),children:`Отмена`}),(0,N.jsx)(n,{variant:`primary`,size:`sm`,onClick:()=>z&&J(z),children:`Сохранить параметры`})]})]})})]})};export{I as CardLayoutBuilder,I as default}; \ No newline at end of file diff --git a/dist/assets/CmsModule-CFpuA55b.js b/dist/assets/CmsModule-CFpuA55b.js deleted file mode 100644 index 2d1294b..0000000 --- a/dist/assets/CmsModule-CFpuA55b.js +++ /dev/null @@ -1 +0,0 @@ -import{f as e,h as t,i as n,l as r,r as i,s as a,t as o,u as s}from"./useToast-CS8pZhce.js";import{t as c}from"./arrow-down-CWbiHuZO.js";import{t as l}from"./arrow-up-B4Ca-HNG.js";import{t as u}from"./download-ByGeM7La.js";import{t as d}from"./image-B_RO1I7c.js";import{t as f}from"./settings-2-CSojebrG.js";import{$ as p,C as m,D as h,d as g,et as _,k as v,m as y,t as b,u as x,w as S}from"./index-CyHCRa3Z.js";var C={name:`pen-line`,size:24,node:[[`path`,{d:`M13 21h8`,key:`1jsn5i`}],[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}]],aliases:[`edit-3`]};C.node;var w=r(C),T=t(e(),1),E=a(),D=[{id:`w-hero`,type:`hero`,title:`Свежие роллы и паназиатская кухня в Новосибирске`,subtitle:`Доставка за 35 минут или ролл в подарок при следующем заказе`,ctaText:`Заказать онлайн со скидкой 20%`,badge:`Спецпредложение осени`},{id:`w-features`,type:`features`,title:`Почему выбирают Суши & Гёдза`,subtitle:`Только охлажденный лосось с Фарерских островов и авторские рецепты шефа`,badge:`Качество`},{id:`w-pricing`,type:`pricing`,title:`Популярные сеты для компаний`,subtitle:`Выгодные комбо-наборы со скидкой до 30%`,ctaText:`Выбрать сет`,badge:`Хиты продаж`},{id:`w-testimonials`,type:`testimonials`,title:`Отзывы наших постоянных гостей`,subtitle:`Более 4 800 довольных клиентов на Flamp и 2ГИС`,badge:`Рейтинг 4.9`},{id:`w-form`,type:`form`,title:`Забронируйте столик на вечер`,subtitle:`Мы подготовим стол и подарим фирменный десерт Моти`,ctaText:`Подтвердить бронь`,badge:`Быстрая бронь`},{id:`w-cta`,type:`cta`,title:`Установите приложение или оформите в Telegram`,subtitle:`Получите 500 приветственных бонусов на первый заказ`,ctaText:`Открыть Telegram-бот`,badge:`Мобильный бонус`}],O=[{id:`p1`,title:`Главная страница доставки`,slug:`/`,viewsToday:1420,status:`published`,lastEdited:`Вчера, 18:40`},{id:`p2`,title:`Меню & Корзина онлайн`,slug:`/menu`,viewsToday:3890,status:`published`,lastEdited:`08.09.2026`},{id:`p3`,title:`Акции и Сеты сентября`,slug:`/promo-autumn`,viewsToday:840,status:`published`,lastEdited:`09.09.2026`},{id:`p4`,title:`Бронирование столов / запись`,slug:`/booking`,viewsToday:410,status:`published`,lastEdited:`05.09.2026`},{id:`p5`,title:`Контакты и точки в городе`,slug:`/contacts`,viewsToday:230,status:`published`,lastEdited:`01.09.2026`}],k=()=>{let e=p(),t=_(),{showToast:r}=o(),[a]=(0,T.useState)(O),[C,k]=(0,T.useState)(`pages`),[A,j]=(0,T.useState)(D),[M,N]=(0,T.useState)(D[0].id),[P,F]=(0,T.useState)(`desktop`),[I,L]=(0,T.useState)(`Суши & Гёдза — Доставка роллов и паназиатской кухни в Новосибирске`),[R,z]=(0,T.useState)(`Свежие суши, роллы, воки и супы с быстрой доставкой за 35 минут. Заказывайте любимые сеты онлайн со скидкой 20%!`),B=(0,T.useMemo)(()=>{let t=e.pathname;return t.includes(`/cms/forms`)?`forms`:t.includes(`/cms/media`)?`media`:t.includes(`/cms/seo`)?`seo`:t.includes(`/cms/domains`)?`domains`:t.includes(`/cms/builder`)?`builder`:t.includes(`/cms/pages`)?`pages`:C},[e.pathname,C]),V=k,H=A.find(e=>e.id===M)||A[0],U=e=>{let t={hero:{title:`Новый промо-баннер`,subtitle:`Описание специального предложения`,cta:`Подробнее`,badge:`Промо`},features:{title:`Наши преимущества`,subtitle:`Ключевые особенности нашего сервиса`,cta:``,badge:`Сервис`},pricing:{title:`Тарифы и меню`,subtitle:`Выберите подходящую опцию`,cta:`Заказать`,badge:`Цены`},testimonials:{title:`Отзывы гостей`,subtitle:`Что говорят наши посетители`,cta:``,badge:`Отзывы`},form:{title:`Форма обратной связи`,subtitle:`Оставьте заявку и мы свяжемся с вами`,cta:`Отправить заявку`,badge:`Заявка`},cta:{title:`Присоединяйтесь к нам!`,subtitle:`Специальный бонус при первом визите`,cta:`Получить бонус`,badge:`Бонус`}}[e],n={id:`w-${e}-${s()}`,type:e,title:t.title,subtitle:t.subtitle,ctaText:t.cta||void 0,badge:t.badge};j(e=>[...e,n]),N(n.id),r({title:`Виджет добавлен`,message:`Блок «${t.title}» добавлен на холст`,type:`success`})},W=(e,t)=>{let n=t===`up`?e-1:e+1;if(n<0||n>=A.length)return;let r=[...A],i=r[e];r[e]=r[n],r[n]=i,j(r)},G=e=>{if(A.length<=1){r({title:`Невозможно удалить`,message:`На странице должен оставаться минимум один блок`,type:`warning`});return}let t=A.filter(t=>t.id!==e);j(t),M===e&&N(t[0].id),r({title:`Блок удален`,message:`Виджет удален со страницы`,type:`info`})},K=(e,t)=>{j(n=>n.map(n=>n.id===M?{...n,[e]:t}:n))};return(0,E.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,E.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 bg-krona-surface p-3.5 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,E.jsxs)(`div`,{children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,E.jsx)(`h2`,{className:`text-sm font-bold text-krona-primary`,children:`Сайты & Krona CMS`}),(0,E.jsx)(b,{level:`target`,size:`sm`}),(0,E.jsx)(i,{variant:`gold`,size:`sm`,children:`krona.site/sushi-nsk`})]}),(0,E.jsx)(`p`,{className:`text-xs text-krona-secondary mt-0.5`,children:`Визуальный блочный конструктор посадочных страниц, формы захвата лидов, медиатека и SEO`})]}),(0,E.jsx)(`div`,{className:`flex items-center gap-1.5 overflow-x-auto text-xs`,children:[{id:`pages`,label:`Страницы`,route:`/cms/pages`},{id:`builder`,label:`Конструктор`},{id:`forms`,label:`Формы`,route:`/cms/forms`},{id:`media`,label:`Медиа`,route:`/cms/media`},{id:`seo`,label:`SEO`,route:`/cms/seo`},{id:`domains`,label:`Домены`,route:`/cms/domains`}].map(e=>(0,E.jsx)(`button`,{onClick:()=>{V(e.id),e.route&&t(e.route)},className:`px-3 py-1.5 rounded-md font-medium transition-colors whitespace-nowrap ${B===e.id?`bg-[#2F684C] text-white shadow-sm`:`bg-krona-workspace text-krona-secondary hover:text-krona-primary border border-krona-border`}`,children:e.label},e.id))})]}),B===`pages`&&(0,E.jsx)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft overflow-hidden`,children:(0,E.jsxs)(`table`,{className:`w-full text-left text-xs border-collapse`,children:[(0,E.jsx)(`thead`,{className:`bg-krona-workspace/80 text-krona-secondary border-b border-krona-border`,children:(0,E.jsxs)(`tr`,{children:[(0,E.jsx)(`th`,{className:`p-3 font-semibold`,children:`Название страницы`}),(0,E.jsx)(`th`,{className:`p-3 font-semibold`,children:`URL / Slug`}),(0,E.jsx)(`th`,{className:`p-3 font-semibold`,children:`Просмотров сегодня`}),(0,E.jsx)(`th`,{className:`p-3 font-semibold`,children:`Дата редакции`}),(0,E.jsx)(`th`,{className:`p-3 font-semibold text-center`,children:`Статус`}),(0,E.jsx)(`th`,{className:`p-3 font-semibold text-right`,children:`Действие`})]})}),(0,E.jsx)(`tbody`,{className:`divide-y divide-krona-border/50`,children:a.map(e=>(0,E.jsxs)(`tr`,{className:`hover:bg-krona-workspace/50 transition-colors`,children:[(0,E.jsxs)(`td`,{className:`p-3 font-medium text-krona-primary flex items-center gap-2`,children:[(0,E.jsx)(v,{className:`w-4 h-4 text-krona-secondary`}),(0,E.jsx)(`span`,{children:e.title})]}),(0,E.jsx)(`td`,{className:`p-3 font-mono text-krona-secondary`,children:e.slug}),(0,E.jsx)(`td`,{className:`p-3 font-bold text-krona-primary`,children:e.viewsToday}),(0,E.jsx)(`td`,{className:`p-3 text-krona-secondary`,children:e.lastEdited}),(0,E.jsx)(`td`,{className:`p-3 text-center`,children:(0,E.jsx)(i,{variant:`green`,size:`sm`,children:`Опубликована`})}),(0,E.jsx)(`td`,{className:`p-3 text-right`,children:(0,E.jsxs)(`button`,{onClick:()=>V(`builder`),className:`text-krona-green font-medium hover:underline inline-flex items-center gap-1`,children:[(0,E.jsx)(w,{className:`w-3.5 h-3.5`}),`Редактор`]})})]},e.id))})]})}),B===`builder`&&(0,E.jsxs)(`div`,{className:`space-y-3`,children:[(0,E.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 bg-krona-surface p-3 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,E.jsx)(`span`,{className:`font-bold text-xs text-krona-primary`,children:`Редактирование: «Главная страница доставки»`}),(0,E.jsx)(i,{variant:`green`,size:`sm`,children:`Auto-save`})]}),(0,E.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,E.jsxs)(`div`,{className:`flex items-center bg-krona-workspace p-1 rounded-lg border border-krona-border text-xs`,children:[(0,E.jsx)(`button`,{onClick:()=>F(`desktop`),className:`p-1.5 rounded transition-colors ${P===`desktop`?`bg-[#2F684C] text-white shadow-sm`:`text-krona-secondary`}`,title:`Desktop (100%)`,children:(0,E.jsx)(S,{className:`w-3.5 h-3.5`})}),(0,E.jsx)(`button`,{onClick:()=>F(`tablet`),className:`p-1.5 rounded transition-colors ${P===`tablet`?`bg-[#2F684C] text-white shadow-sm`:`text-krona-secondary`}`,title:`Tablet (768px)`,children:(0,E.jsx)(g,{className:`w-3.5 h-3.5`})}),(0,E.jsx)(`button`,{onClick:()=>F(`mobile`),className:`p-1.5 rounded transition-colors ${P===`mobile`?`bg-[#2F684C] text-white shadow-sm`:`text-krona-secondary`}`,title:`Mobile (375px)`,children:(0,E.jsx)(y,{className:`w-3.5 h-3.5`})})]}),(0,E.jsxs)(n,{variant:`secondary`,size:`sm`,onClick:()=>{r({title:`Макет сохранен`,message:`JSON-конфигурация (${A.length} виджетов) сохранена в локальное хранилище`,type:`success`})},className:`text-xs`,children:[(0,E.jsx)(u,{className:`w-3.5 h-3.5 mr-1`}),`Сохранить JSON`]}),(0,E.jsx)(n,{variant:`primary`,size:`sm`,onClick:()=>{r({title:`Страница опубликована`,message:`Новая версия сайта успешно развернута на krona.site/sushi-nsk`,type:`success`})},className:`text-xs`,children:`Опубликовать`})]})]}),(0,E.jsxs)(`div`,{className:`grid grid-cols-1 lg:grid-cols-12 gap-3.5`,children:[(0,E.jsxs)(`div`,{className:`lg:col-span-3 bg-krona-surface border border-krona-border rounded-xl p-3 space-y-3 shadow-krona-soft`,children:[(0,E.jsx)(`div`,{className:`flex items-center justify-between pb-2 border-b border-krona-border`,children:(0,E.jsxs)(`span`,{className:`text-xs font-bold text-krona-primary flex items-center gap-1.5`,children:[(0,E.jsx)(h,{className:`w-3.5 h-3.5 text-krona-gold`}),` Палитра виджетов`]})}),(0,E.jsx)(`div`,{className:`space-y-2 text-xs`,children:[{type:`hero`,label:`Hero баннер`,desc:`Главный заголовок с призывом`},{type:`features`,label:`Feature Grid`,desc:`Сетка преимуществ с иконками`},{type:`pricing`,label:`Цены & Меню`,desc:`Карточки сетов и комбо`},{type:`testimonials`,label:`Отзывы гостей`,desc:`Карусель цитат с рейтингом`},{type:`form`,label:`Лид-форма`,desc:`Форма бронирования стола`},{type:`cta`,label:`CTA блок`,desc:`Финальный призыв к заказу`}].map(e=>(0,E.jsxs)(`button`,{onClick:()=>U(e.type),className:`w-full text-left p-2.5 rounded-lg border border-krona-border hover:border-krona-green/70 bg-krona-workspace hover:bg-krona-surface transition-all flex items-center justify-between group`,children:[(0,E.jsxs)(`div`,{children:[(0,E.jsxs)(`div`,{className:`font-semibold text-krona-primary group-hover:text-krona-green transition-colors`,children:[`+ `,e.label]}),(0,E.jsx)(`div`,{className:`text-[10px] text-krona-secondary`,children:e.desc})]}),(0,E.jsx)(m,{className:`w-3.5 h-3.5 text-krona-secondary group-hover:text-krona-green`})]},e.type))})]}),(0,E.jsx)(`div`,{className:`lg:col-span-6 bg-krona-workspace/60 border border-krona-border rounded-xl p-4 flex flex-col items-center overflow-y-auto min-h-[560px] max-h-[750px]`,children:(0,E.jsx)(`div`,{className:`w-full transition-all duration-300 space-y-3 ${P===`mobile`?`max-w-[375px] border-x border-krona-border shadow-md bg-krona-surface p-3 rounded-2xl`:P===`tablet`?`max-w-[640px] border border-krona-border shadow-md bg-krona-surface p-4 rounded-xl`:`max-w-full`}`,children:A.map((e,t)=>{let n=e.id===M;return(0,E.jsxs)(`div`,{onClick:()=>N(e.id),className:`relative p-4 rounded-xl border transition-all cursor-pointer select-none bg-krona-surface shadow-sm ${n?`border-krona-green ring-2 ring-krona-green/30`:`border-krona-border hover:border-krona-border-strong`}`,children:[(0,E.jsxs)(`div`,{className:`flex items-center justify-between pb-2 mb-2 border-b border-krona-border/60`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,E.jsxs)(`span`,{className:`font-bold text-[10px] uppercase text-krona-secondary`,children:[`#`,t+1,` `,e.type]}),e.badge&&(0,E.jsx)(i,{variant:`gold`,size:`sm`,children:e.badge})]}),(0,E.jsxs)(`div`,{className:`flex items-center gap-1`,onClick:e=>e.stopPropagation(),children:[(0,E.jsx)(`button`,{onClick:()=>W(t,`up`),disabled:t===0,className:`p-1 rounded hover:bg-krona-workspace text-krona-secondary disabled:opacity-30`,title:`Поднять выше`,children:(0,E.jsx)(l,{className:`w-3 h-3`})}),(0,E.jsx)(`button`,{onClick:()=>W(t,`down`),disabled:t===A.length-1,className:`p-1 rounded hover:bg-krona-workspace text-krona-secondary disabled:opacity-30`,title:`Опустить ниже`,children:(0,E.jsx)(c,{className:`w-3 h-3`})}),(0,E.jsx)(`button`,{onClick:()=>G(e.id),className:`p-1 rounded hover:bg-rose-500/10 text-krona-secondary hover:text-rose-600`,title:`Удалить блок`,children:(0,E.jsx)(x,{className:`w-3 h-3`})})]})]}),(0,E.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,E.jsx)(`h4`,{className:`font-bold text-xs text-krona-primary leading-snug`,children:e.title}),(0,E.jsx)(`p`,{className:`text-[11px] text-krona-secondary leading-relaxed`,children:e.subtitle}),e.ctaText&&(0,E.jsx)(`div`,{className:`pt-2`,children:(0,E.jsxs)(`span`,{className:`inline-flex items-center px-3 py-1 rounded bg-[#2F684C] text-white text-[10px] font-semibold`,children:[e.ctaText,` →`]})})]})]},e.id)})})}),(0,E.jsxs)(`div`,{className:`lg:col-span-3 bg-krona-surface border border-krona-border rounded-xl p-3.5 space-y-3.5 shadow-krona-soft text-xs`,children:[(0,E.jsxs)(`div`,{className:`flex items-center justify-between pb-2 border-b border-krona-border`,children:[(0,E.jsxs)(`span`,{className:`font-bold text-krona-primary flex items-center gap-1.5`,children:[(0,E.jsx)(f,{className:`w-3.5 h-3.5 text-krona-green`}),` Свойства виджета`]}),(0,E.jsx)(`span`,{className:`text-[10px] uppercase font-mono text-krona-secondary`,children:H.type})]}),(0,E.jsxs)(`div`,{className:`space-y-2.5`,children:[(0,E.jsxs)(`div`,{className:`space-y-1`,children:[(0,E.jsx)(`label`,{className:`text-[10px] font-semibold text-krona-secondary block`,children:`Заголовок блока:`}),(0,E.jsx)(`input`,{type:`text`,value:H.title,onChange:e=>K(`title`,e.target.value),className:`w-full p-2 bg-krona-workspace border border-krona-border rounded-lg text-xs text-krona-primary focus:outline-none focus:border-krona-green`})]}),(0,E.jsxs)(`div`,{className:`space-y-1`,children:[(0,E.jsx)(`label`,{className:`text-[10px] font-semibold text-krona-secondary block`,children:`Подзаголовок / Текст:`}),(0,E.jsx)(`textarea`,{rows:3,value:H.subtitle,onChange:e=>K(`subtitle`,e.target.value),className:`w-full p-2 bg-krona-workspace border border-krona-border rounded-lg text-xs text-krona-primary focus:outline-none focus:border-krona-green resize-none`})]}),(0,E.jsxs)(`div`,{className:`space-y-1`,children:[(0,E.jsx)(`label`,{className:`text-[10px] font-semibold text-krona-secondary block`,children:`Текст кнопки действия (CTA):`}),(0,E.jsx)(`input`,{type:`text`,value:H.ctaText||``,onChange:e=>K(`ctaText`,e.target.value),placeholder:`Например: Заказать онлайн`,className:`w-full p-2 bg-krona-workspace border border-krona-border rounded-lg text-xs text-krona-primary focus:outline-none focus:border-krona-green`})]}),(0,E.jsxs)(`div`,{className:`space-y-1`,children:[(0,E.jsx)(`label`,{className:`text-[10px] font-semibold text-krona-secondary block`,children:`Бейдж / Тег:`}),(0,E.jsx)(`input`,{type:`text`,value:H.badge||``,onChange:e=>K(`badge`,e.target.value),placeholder:`Например: Акция недели`,className:`w-full p-2 bg-krona-workspace border border-krona-border rounded-lg text-xs text-krona-primary focus:outline-none focus:border-krona-green`})]})]})]})]})]}),B===`forms`&&(0,E.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft space-y-4`,children:[(0,E.jsxs)(`div`,{className:`flex items-center justify-between pb-2 border-b border-krona-border`,children:[(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`h4`,{className:`text-xs font-bold text-krona-primary`,children:`Лид-формы и виджеты захвата заявок`}),(0,E.jsx)(`p`,{className:`text-[11px] text-krona-secondary`,children:`Формы автоматически создают лиды и сделки в CRM`})]}),(0,E.jsxs)(n,{variant:`primary`,size:`sm`,children:[(0,E.jsx)(m,{className:`w-3.5 h-3.5 mr-1`}),`Новая форма`]})]}),(0,E.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-3.5 text-xs`,children:[(0,E.jsxs)(`div`,{className:`p-3.5 rounded-xl border border-krona-border bg-krona-workspace space-y-2`,children:[(0,E.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,E.jsx)(`span`,{className:`font-bold text-krona-primary text-sm`,children:`Форма быстрой брони столика`}),(0,E.jsx)(i,{variant:`green`,size:`sm`,children:`Активна`})]}),(0,E.jsx)(`p`,{className:`text-krona-secondary text-[11px]`,children:`Поля: Имя, Телефон, Дата/Время, Персоны, Пожелания`}),(0,E.jsxs)(`div`,{className:`flex justify-between pt-2 border-t border-krona-border/60 text-[11px]`,children:[(0,E.jsx)(`span`,{children:`Конверсия: 24.8%`}),(0,E.jsx)(`span`,{className:`font-semibold text-krona-green`,children:`148 заявок`})]})]}),(0,E.jsxs)(`div`,{className:`p-3.5 rounded-xl border border-krona-border bg-krona-workspace space-y-2`,children:[(0,E.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,E.jsx)(`span`,{className:`font-bold text-krona-primary text-sm`,children:`Виджет подписки на скидку 20%`}),(0,E.jsx)(i,{variant:`green`,size:`sm`,children:`Всплывающее окно`})]}),(0,E.jsx)(`p`,{className:`text-krona-secondary text-[11px]`,children:`Поля: Номер телефона (с отправкой промокода в SMS/Telegram)`}),(0,E.jsxs)(`div`,{className:`flex justify-between pt-2 border-t border-krona-border/60 text-[11px]`,children:[(0,E.jsx)(`span`,{children:`Конверсия: 14.2%`}),(0,E.jsx)(`span`,{className:`font-semibold text-krona-green`,children:`312 лидов`})]})]})]})]}),B===`media`&&(0,E.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft space-y-4`,children:[(0,E.jsxs)(`div`,{className:`flex items-center justify-between pb-2 border-b border-krona-border`,children:[(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`h4`,{className:`text-xs font-bold text-krona-primary`,children:`Медиабиблиотека сайта`}),(0,E.jsx)(`p`,{className:`text-[11px] text-krona-secondary`,children:`Фотографии блюд, баннеры акций, логотипы и видеоматериалы`})]}),(0,E.jsxs)(n,{variant:`primary`,size:`sm`,children:[(0,E.jsx)(m,{className:`w-3.5 h-3.5 mr-1`}),`Загрузить файл`]})]}),(0,E.jsx)(`div`,{className:`grid grid-cols-2 sm:grid-cols-4 gap-3`,children:[{name:`philadelphia_banner.jpg`,size:`1.2 MB`,category:`Баннеры`},{name:`tom_yam_dish.png`,size:`840 KB`,category:`Каталог`},{name:`autumn_set_promo.jpg`,size:`2.1 MB`,category:`Акции`},{name:`krona_hall_interior.jpg`,size:`3.4 MB`,category:`Интерьер`}].map((e,t)=>(0,E.jsxs)(`div`,{className:`p-3 rounded-xl border border-krona-border bg-krona-workspace space-y-2 text-xs`,children:[(0,E.jsx)(`div`,{className:`h-28 rounded-lg bg-krona-surface border border-krona-border flex items-center justify-center text-krona-secondary`,children:(0,E.jsx)(d,{className:`w-8 h-8 opacity-40`})}),(0,E.jsx)(`div`,{className:`font-semibold text-krona-primary truncate`,children:e.name}),(0,E.jsxs)(`div`,{className:`flex justify-between text-[10px] text-krona-secondary`,children:[(0,E.jsx)(`span`,{children:e.category}),(0,E.jsx)(`span`,{children:e.size})]})]},t))})]}),B===`seo`&&(0,E.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft space-y-4`,children:[(0,E.jsxs)(`div`,{className:`pb-2 border-b border-krona-border`,children:[(0,E.jsx)(`h4`,{className:`text-xs font-bold text-krona-primary`,children:`Поисковая оптимизация (SEO)`}),(0,E.jsx)(`p`,{className:`text-[11px] text-krona-secondary`,children:`Мета-теги, OpenGraph и сниппет поисковой выдачи Яндекс и Google`})]}),(0,E.jsxs)(`div`,{className:`space-y-3 max-w-xl text-xs`,children:[(0,E.jsxs)(`div`,{className:`space-y-1`,children:[(0,E.jsx)(`label`,{className:`font-semibold text-krona-primary`,children:`Meta Title (Заголовок в поисковике):`}),(0,E.jsx)(`input`,{type:`text`,value:I,onChange:e=>L(e.target.value),className:`w-full p-2 bg-krona-workspace border border-krona-border rounded-lg text-xs text-krona-primary focus:outline-none focus:border-krona-green`})]}),(0,E.jsxs)(`div`,{className:`space-y-1`,children:[(0,E.jsx)(`label`,{className:`font-semibold text-krona-primary`,children:`Meta Description (Описание):`}),(0,E.jsx)(`textarea`,{rows:3,value:R,onChange:e=>z(e.target.value),className:`w-full p-2 bg-krona-workspace border border-krona-border rounded-lg text-xs text-krona-primary focus:outline-none focus:border-krona-green resize-none`})]}),(0,E.jsxs)(`div`,{className:`p-3 bg-krona-workspace rounded-xl border border-krona-border space-y-1`,children:[(0,E.jsx)(`span`,{className:`text-[10px] uppercase text-krona-secondary font-bold`,children:`Превью в Яндекс:`}),(0,E.jsx)(`div`,{className:`text-blue-600 text-sm font-semibold hover:underline cursor-pointer`,children:I}),(0,E.jsx)(`div`,{className:`text-emerald-700 text-xs`,children:`krona.site/sushi-nsk`}),(0,E.jsx)(`p`,{className:`text-xs text-krona-secondary`,children:R})]}),(0,E.jsx)(n,{variant:`primary`,size:`sm`,onClick:()=>{r({title:`SEO мета-теги сохранены`,message:`Настройки поисковой оптимизации применены к сайту`,type:`success`})},children:`Сохранить SEO-настройки`})]})]}),B===`domains`&&(0,E.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft space-y-4`,children:[(0,E.jsxs)(`div`,{className:`pb-2 border-b border-krona-border`,children:[(0,E.jsx)(`h4`,{className:`text-xs font-bold text-krona-primary`,children:`Подключение доменов & SSL-сертификаты`}),(0,E.jsx)(`p`,{className:`text-[11px] text-krona-secondary`,children:`Привязка собственного домена второго уровня к CMS`})]}),(0,E.jsxs)(`div`,{className:`space-y-3 max-w-xl text-xs`,children:[(0,E.jsxs)(`div`,{className:`p-3.5 bg-krona-workspace rounded-xl border border-krona-border flex items-center justify-between`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,E.jsx)(v,{className:`w-5 h-5 text-krona-green`}),(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`span`,{className:`font-bold text-krona-primary block`,children:`sushi-nsk.ru`}),(0,E.jsx)(`span`,{className:`text-[10px] text-krona-secondary`,children:`SSL активен • Let's Encrypt Wildcard`})]})]}),(0,E.jsx)(i,{variant:`green`,size:`sm`,children:`Подключен`})]}),(0,E.jsxs)(`div`,{className:`p-3.5 bg-krona-workspace rounded-xl border border-krona-border flex items-center justify-between`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,E.jsx)(v,{className:`w-5 h-5 text-krona-secondary`}),(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`span`,{className:`font-bold text-krona-primary block`,children:`krona.site/sushi-nsk`}),(0,E.jsx)(`span`,{className:`text-[10px] text-krona-secondary`,children:`Системный поддомен платформы`})]})]}),(0,E.jsx)(i,{variant:`neutral`,size:`sm`,children:`Основной`})]})]})]})]})};export{k as CmsModule}; \ No newline at end of file diff --git a/dist/assets/CommunicationsModule-BkIXdWN7.js b/dist/assets/CommunicationsModule-BkIXdWN7.js deleted file mode 100644 index 171c1d9..0000000 --- a/dist/assets/CommunicationsModule-BkIXdWN7.js +++ /dev/null @@ -1 +0,0 @@ -import{f as e,h as t,i as n,l as r,r as i,s as a,t as o}from"./useToast-CS8pZhce.js";import{O as s,p as c,t as l,v as u,y as d}from"./index-CyHCRa3Z.js";import{a as f,c as p,i as m,l as h,n as g,o as _,r as v,s as y,t as b,u as x}from"./mockData-DAqQG5te.js";var S={name:`check-check`,size:24,node:[[`path`,{d:`M18 6 7 17l-5-5`,key:`116fxf`}],[`path`,{d:`m22 10-7.5 7.5L13 16`,key:`ke71qq`}]]};S.node;var C=r(S),w=t(e(),1),T=(e=250)=>new Promise(t=>setTimeout(t,e)),E=new class{clients=[...g];deals=[...m];catalog=[...b];inventory=[...y];recipes=[...p];employees=[...f];tickets=[...x];conversations=[...v];finance=[..._];tasks=[...h];async getCustomers(){return await T(200),[...this.clients]}async createCustomer(e){await T(300);let t={...e,id:`cl-${Date.now()}`};return this.clients=[t,...this.clients],t}async getDeals(){return await T(200),[...this.deals]}async updateDealStage(e,t){await T(150),this.deals=this.deals.map(n=>n.id===e?{...n,stage:t}:n)}async getCatalog(){return await T(200),[...this.catalog]}async toggleStopList(e){await T(150);let t=!1;return this.catalog=this.catalog.map(n=>n.id===e?(t=!n.isStopListed,{...n,isStopListed:t}):n),t}async getInventory(){return await T(200),[...this.inventory]}async getRecipes(){return await T(200),[...this.recipes]}async getEmployees(){return await T(200),[...this.employees]}async getTickets(){return await T(200),[...this.tickets]}async getMessages(){return await T(200),[...this.conversations]}async sendMessage(e,t){await T(150),this.conversations=this.conversations.map(n=>n.id===e?{...n,lastMessage:t,time:new Date().toLocaleTimeString(`ru-RU`,{hour:`2-digit`,minute:`2-digit`}),messages:[...n.messages,{id:`msg-${Date.now()}`,sender:`agent`,senderName:`Вы (Оператор)`,text:t,time:new Date().toLocaleTimeString(`ru-RU`,{hour:`2-digit`,minute:`2-digit`})}]}:n)}async getFinance(){return await T(200),[...this.finance]}async addFinanceEntry(e){await T(250);let t={...e,id:`fin-${Date.now()}`};return this.finance=[t,...this.finance],t}async getTasks(){return await T(200),[...this.tasks]}async updateTaskStatus(e,t){await T(150),this.tasks=this.tasks.map(n=>n.id===e?{...n,status:t}:n)}},D=a(),O=()=>{let{showToast:e}=o(),[t,r]=(0,w.useState)(v),[a,f]=(0,w.useState)(v[0].id),[p,m]=(0,w.useState)(``),[h,g]=(0,w.useState)(`all`),[_,y]=(0,w.useState)(!1),[b,x]=(0,w.useState)(!0),S=t.find(e=>e.id===a)||t[0],T=async n=>{if(n.preventDefault(),!p.trim())return;let i=p;m(``),await E.sendMessage(a,i);let o=await E.getMessages();r(o),y(!0),setTimeout(async()=>{y(!1);let n=[`Спасибо за быстрый ответ! Будем ждать вас.`,`Отлично, подтверждаю заказ. Оплату проведу при получении.`,`Спасибо большое! Подскажите ещё, есть ли у вас десерты без сахара?`,`Супер, всё понятно, спасибо вашей поддержке!`],i=n[Math.floor(Math.random()*n.length)],o=t.find(e=>e.id===a);if(o){let t={id:`m-reply-${Date.now()}`,sender:`client`,senderName:o.clientName,text:i,time:new Date().toLocaleTimeString(`ru-RU`,{hour:`2-digit`,minute:`2-digit`})};r(e=>e.map(e=>e.id===a?{...e,lastMessage:i,time:`Только что`,messages:[...e.messages,t]}:e)),e({title:`Новый ответ от ${o.clientName}`,message:i,type:`info`})}},750)},O=e=>{switch(e){case`telegram`:return(0,D.jsx)(i,{variant:`gold`,size:`sm`,children:`Telegram Bot`});case`whatsapp`:return(0,D.jsx)(i,{variant:`green`,size:`sm`,children:`WhatsApp`});case`max`:return(0,D.jsx)(i,{variant:`info`,size:`sm`,children:`MAX`});case`internal`:return(0,D.jsx)(i,{variant:`warning`,size:`sm`,children:`Командный чат`});default:return(0,D.jsx)(i,{variant:`neutral`,size:`sm`,children:`Чат`})}},k=t.filter(e=>h===`all`||e.channel===h);return(0,D.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,D.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 bg-krona-surface p-3.5 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,D.jsx)(`h2`,{className:`text-sm font-bold text-krona-primary`,children:`Единый центр коммуникаций & Омниканальный Inbox`}),(0,D.jsx)(l,{level:`target`,size:`sm`})]}),(0,D.jsx)(`p`,{className:`text-xs text-krona-secondary mt-0.5`,children:`Telegram, WhatsApp, MAX Messenger, Web-чат и внутренние командные каналы в одном окне`})]}),(0,D.jsxs)(`div`,{className:`flex items-center gap-2 text-xs`,children:[(0,D.jsxs)(n,{variant:`secondary`,size:`sm`,onClick:()=>x(!b),children:[(0,D.jsx)(s,{className:`w-3.5 h-3.5 mr-1`}),b?`Скрыть CRM-карточку`:`Показать CRM-карточку`]}),(0,D.jsx)(i,{variant:`green`,size:`md`,children:`Онлайн: 4 канала активны`})]})]}),(0,D.jsxs)(`div`,{className:`h-[calc(100vh-13rem)] flex flex-col md:flex-row gap-3 bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft overflow-hidden`,children:[(0,D.jsxs)(`div`,{className:`w-full md:w-80 lg:w-96 border-r border-krona-border flex flex-col bg-krona-workspace/50`,children:[(0,D.jsxs)(`div`,{className:`p-3 border-b border-krona-border space-y-2`,children:[(0,D.jsx)(`div`,{className:`flex items-center justify-between`,children:(0,D.jsxs)(`span`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider`,children:[`Диалоги (`,k.length,`)`]})}),(0,D.jsx)(`div`,{className:`flex items-center gap-1 overflow-x-auto text-[11px] pb-1`,children:[{id:`all`,label:`Все`},{id:`telegram`,label:`Telegram`},{id:`whatsapp`,label:`WhatsApp`},{id:`max`,label:`MAX`},{id:`internal`,label:`Команда`}].map(e=>(0,D.jsx)(`button`,{onClick:()=>g(e.id),className:`px-2 py-0.5 rounded transition-colors whitespace-nowrap ${h===e.id?`bg-[#2F684C] text-white font-medium shadow-sm`:`bg-krona-surface text-krona-secondary hover:text-krona-primary border border-krona-border/60`}`,children:e.label},e.id))}),(0,D.jsxs)(`div`,{className:`relative`,children:[(0,D.jsx)(d,{className:`w-3.5 h-3.5 absolute left-2.5 top-2.5 text-krona-secondary`}),(0,D.jsx)(`input`,{type:`text`,placeholder:`Поиск диалогов...`,className:`w-full pl-8 pr-3 py-1.5 text-xs bg-krona-surface border border-krona-border rounded-lg text-krona-primary placeholder:text-krona-secondary focus:outline-none`})]})]}),(0,D.jsx)(`div`,{className:`flex-1 overflow-y-auto divide-y divide-krona-border/40`,children:k.map(e=>(0,D.jsxs)(`div`,{onClick:()=>f(e.id),className:`p-3 cursor-pointer transition-colors ${e.id===a?`bg-krona-surface font-medium border-l-2 border-krona-gold`:`hover:bg-krona-surface/60 text-krona-secondary`}`,children:[(0,D.jsxs)(`div`,{className:`flex items-center justify-between mb-1`,children:[(0,D.jsx)(`span`,{className:`font-semibold text-xs text-krona-primary truncate`,children:e.clientName}),(0,D.jsx)(`span`,{className:`text-[10px] text-krona-secondary`,children:e.time})]}),(0,D.jsx)(`p`,{className:`text-xs text-krona-secondary truncate mb-1.5`,children:e.lastMessage}),(0,D.jsxs)(`div`,{className:`flex items-center justify-between`,children:[O(e.channel),e.unreadCount>0&&(0,D.jsx)(`span`,{className:`w-4 h-4 rounded-full bg-krona-gold text-white text-[10px] font-bold flex items-center justify-center`,children:e.unreadCount})]})]},e.id))})]}),(0,D.jsxs)(`div`,{className:`flex-1 flex flex-col min-w-0 bg-krona-surface`,children:[(0,D.jsxs)(`div`,{className:`p-3.5 border-b border-krona-border flex items-center justify-between bg-krona-surface/80`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[(0,D.jsx)(`div`,{className:`w-8 h-8 rounded-full bg-krona-workspace border border-krona-border flex items-center justify-center font-bold text-xs text-krona-primary`,children:S.avatar}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`h4`,{className:`text-xs font-bold text-krona-primary`,children:S.clientName}),(0,D.jsxs)(`span`,{className:`text-[10px] text-krona-secondary`,children:[`Канал связи: `,S.channel]})]})]}),O(S.channel)]}),(0,D.jsxs)(`div`,{className:`flex-1 overflow-y-auto p-4 space-y-3`,children:[S.messages.map(e=>(0,D.jsxs)(`div`,{className:`flex flex-col ${e.sender===`agent`?`items-end`:`items-start`}`,children:[(0,D.jsx)(`span`,{className:`text-[10px] text-krona-secondary mb-0.5 px-1`,children:e.senderName}),(0,D.jsxs)(`div`,{className:`p-3 rounded-xl max-w-[75%] text-xs leading-relaxed shadow-krona-soft ${e.sender===`agent`?`bg-[#2F684C] text-[#F8F6F0] rounded-br-none`:`bg-krona-workspace border border-krona-border text-krona-primary rounded-bl-none`}`,children:[(0,D.jsx)(`p`,{children:e.text}),(0,D.jsxs)(`div`,{className:`flex items-center justify-end gap-1 mt-1 text-[9px] opacity-70`,children:[(0,D.jsx)(`span`,{children:e.time}),e.sender===`agent`&&(0,D.jsx)(C,{className:`w-3 h-3`})]})]})]},e.id)),_&&(0,D.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-krona-secondary bg-krona-workspace p-2 rounded-lg w-48 animate-pulse`,children:[(0,D.jsx)(`span`,{className:`w-2 h-2 rounded-full bg-krona-gold animate-ping`}),(0,D.jsx)(`span`,{children:`Собеседник печатает...`})]})]}),(0,D.jsx)(`div`,{className:`p-3 border-t border-krona-border bg-krona-workspace/50`,children:(0,D.jsxs)(`form`,{onSubmit:T,className:`flex items-center gap-2`,children:[(0,D.jsx)(`input`,{type:`text`,value:p,onChange:e=>m(e.target.value),placeholder:`Напишите ответ клиенту или коллегам (симуляция авто-ответа)...`,className:`flex-1 bg-krona-surface border border-krona-border rounded-lg px-3 py-2 text-xs text-krona-primary placeholder:text-krona-secondary focus:outline-none focus:border-krona-green`}),(0,D.jsxs)(n,{type:`submit`,variant:`primary`,size:`sm`,className:`px-3`,children:[(0,D.jsx)(u,{className:`w-3.5 h-3.5 mr-1`}),`Отправить`]})]})})]}),b&&(0,D.jsxs)(`div`,{className:`hidden lg:flex w-72 border-l border-krona-border flex-col bg-krona-surface p-3.5 space-y-4 text-xs`,children:[(0,D.jsxs)(`div`,{className:`flex items-center justify-between pb-2 border-b border-krona-border`,children:[(0,D.jsx)(`span`,{className:`font-bold text-krona-primary uppercase text-[11px]`,children:`CRM Контекст`}),(0,D.jsx)(i,{variant:`gold`,size:`sm`,children:`VIP Клиент`})]}),(0,D.jsxs)(`div`,{className:`space-y-2`,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`span`,{className:`text-[10px] text-krona-secondary`,children:`ФИО клиента:`}),(0,D.jsx)(`div`,{className:`font-bold text-krona-primary`,children:S.clientName})]}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`span`,{className:`text-[10px] text-krona-secondary`,children:`Телефон:`}),(0,D.jsx)(`div`,{className:`font-mono text-krona-primary`,children:`+7 (913) 482-19-02`})]}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`span`,{className:`text-[10px] text-krona-secondary`,children:`LTV (Общий объем заказов):`}),(0,D.jsx)(`div`,{className:`font-bold text-krona-green font-mono`,children:`48 200 ₽ (14 чеков)`})]}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`span`,{className:`text-[10px] text-krona-secondary`,children:`Любимые позиции:`}),(0,D.jsx)(`div`,{className:`text-krona-secondary text-[11px]`,children:`Филадельфия Премиум, Том Ям`})]})]}),(0,D.jsxs)(`div`,{className:`p-2.5 bg-krona-workspace rounded-lg border border-krona-border space-y-1`,children:[(0,D.jsxs)(`div`,{className:`font-semibold text-krona-primary flex items-center gap-1`,children:[(0,D.jsx)(c,{className:`w-3 h-3 text-krona-gold`}),`AI Подсказка оператору:`]}),(0,D.jsx)(`p`,{className:`text-[11px] text-krona-secondary`,children:`Гость часто заказывает по пятницам в 19:30. Предложите сет Осенний со скидкой постоянного клиента.`})]}),(0,D.jsx)(`div`,{className:`pt-2 border-t border-krona-border space-y-2`,children:(0,D.jsx)(n,{variant:`outline`,size:`sm`,className:`w-full text-xs`,children:`Открыть сделку в CRM →`})})]})]})]})};export{O as CommunicationsModule}; \ No newline at end of file diff --git a/dist/assets/CrmModule-D0MX46qK.js b/dist/assets/CrmModule-D0MX46qK.js deleted file mode 100644 index 81c1d88..0000000 --- a/dist/assets/CrmModule-D0MX46qK.js +++ /dev/null @@ -1,12 +0,0 @@ -import{d as e,f as t,h as n,i as r,l as i,r as a,s as o,t as s,u as c}from"./useToast-CS8pZhce.js";import{t as l}from"./DynamicFormRenderer-CeAKrqsO.js";import{t as u}from"./building-BdUpGLM5.js";import{t as d}from"./download-ByGeM7La.js";import{t as f}from"./file-text-DR21jZDS.js";import{$ as p,A as m,B as h,C as g,G as _,H as v,M as y,P as b,U as x,W as S,Y as C,g as w,j as T,n as E,p as D,r as O,t as k,x as A,y as j,z as M}from"./index-CyHCRa3Z.js";import{t as N}from"./useOrders-E7OnZAao.js";import{t as P}from"./currency-DdDs82F5.js";var F={name:`cloud-upload`,size:24,node:[[`path`,{d:`M12 13v8`,key:`1l5pq0`}],[`path`,{d:`M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242`,key:`1pljnt`}],[`path`,{d:`m8 17 4-4 4 4`,key:`1quai1`}]],aliases:[`upload-cloud`]};F.node;var I=i(F),L=n(t(),1);function R(){let[e,t]=(0,L.useState)([]),[n,r]=(0,L.useState)([]),[i,a]=(0,L.useState)([]),[o,s]=(0,L.useState)([]),[c,l]=(0,L.useState)(!0),[u,d]=(0,L.useState)(null),f=(0,L.useCallback)(async()=>{try{l(!0),d(null);let[e,n,i,o]=await Promise.all([_.contacts.list({pageSize:100}),_.companies.list({pageSize:100}),_.leads.list({pageSize:100}),_.deals.list({pageSize:100})]);t(e.items),r(n.items),a(i.items),s(o.items)}catch(e){d(e instanceof Error?e:Error(String(e)))}finally{l(!1)}},[]);return(0,L.useEffect)(()=>{let e=!0;return Promise.resolve().then(()=>{e&&f()}),()=>{e=!1}},[f]),x(`records:changed`,e=>{(e.entityType===`contact`||e.entityType===`company`||e.entityType===`lead`||e.entityType===`deal`)&&f()}),x(`storage:reset`,f),x(`snapshot:imported`,f),{contacts:e,companies:n,leads:i,deals:o,loading:c,error:u,refetch:f,createContact:(0,L.useCallback)(async e=>_.contacts.create(e),[]),updateContact:(0,L.useCallback)(async(e,t)=>_.contacts.update(e,t),[]),deleteContact:(0,L.useCallback)(async e=>_.contacts.delete(e),[]),createCompany:(0,L.useCallback)(async e=>_.companies.create(e),[]),updateCompany:(0,L.useCallback)(async(e,t)=>_.companies.update(e,t),[]),deleteCompany:(0,L.useCallback)(async e=>_.companies.delete(e),[]),createDeal:(0,L.useCallback)(async e=>_.deals.create(e),[]),updateDeal:(0,L.useCallback)(async(e,t)=>_.deals.update(e,t),[]),deleteDeal:(0,L.useCallback)(async e=>_.deals.delete(e),[]),createLead:(0,L.useCallback)(async e=>_.leads.create(e),[]),updateLead:(0,L.useCallback)(async(e,t)=>_.leads.update(e,t),[]),deleteLead:(0,L.useCallback)(async e=>_.leads.delete(e),[]),convertLead:(0,L.useCallback)(async(e,t)=>_.convertLeadToDeal(e,t),[]),getTimeline:(0,L.useCallback)(async(e,t)=>_.getTimeline(e,t),[]),createActivity:(0,L.useCallback)(async e=>_.activities.create(e),[]),createNote:(0,L.useCallback)(async e=>_.notes.create(e),[])}}var z=o(),ee=`Имя,Фамилия,Телефон,Email,Компания,Должность -Владимир,Ковалев,+7 (916) 123-45-67,kovalev@partner.ru,ООО «СеверТорг»,Коммерческий директор -Елена,Васильева,+7 (903) 987-65-43,elena.v@iceberg.ru,ГК «Айсберг Логистик»,Руководитель закупок -Дмитрий,Смирнов,,dmitry@corp.ru,,Менеджер -Иван,,+7 (999) 888-77-66,invalid-email-address,ИП «Михайлов»,Инженер -Анна,Кузнецова,+7 (926) 111-22-33,anna.k@beautyshop.ru,ООО «Бьюти Групп»,Директор по маркетингу`,B=`Артикул,Наименование,Категория,Цена (коп),Единица -COF-ETH-01,Кофе зерновой Эфиопия Иргачефф 1кг,Кофе,185000,уп -COF-BRZ-02,Кофе зерновой Бразилия Сантос 1кг,Кофе,145000,уп -SYR-VAN-01,Сироп Ваниль 1000мл,Сиропы,65000,бут -,,Расходники,25000,уп -CUP-PAP-300,Стакан бумажный 300мл 50шт,Упаковка,-5000,уп -TEA-SEN-01,Чай зеленый Сенча 500г,Чай,95000,уп`,V=[{key:`firstName`,label:`Имя`,required:!0},{key:`lastName`,label:`Фамилия`,required:!0},{key:`phone`,label:`Телефон`,required:!1},{key:`email`,label:`Email`,required:!1},{key:`companyName`,label:`Компания`,required:!1},{key:`jobTitle`,label:`Должность`,required:!1}],H=[{key:`sku`,label:`Артикул (SKU)`,required:!0},{key:`name`,label:`Наименование`,required:!0},{key:`category`,label:`Категория`,required:!1},{key:`price`,label:`Цена (копейки)`,required:!0},{key:`unit`,label:`Единица измерения`,required:!1}],U=({initialEntityType:e=`contact`,onComplete:t,onClose:n})=>{let{showToast:i}=s(),[o,l]=(0,L.useState)(1),[u,p]=(0,L.useState)(e),[g,v]=(0,L.useState)(``),[y,x]=(0,L.useState)(``),[C,w]=(0,L.useState)([]),[E,O]=(0,L.useState)([]),[k,j]=(0,L.useState)({}),[N,P]=(0,L.useState)(!0),[F,R]=(0,L.useState)(!1),[U,W]=(0,L.useState)(0),G=e=>{let t=e.trim().split(/\r?\n/).filter(Boolean);if(t.length<2)return;let n=e=>{let t=[],n=``,r=!1;for(let i=0;i{o[e]=a[t]||``}),i.push(o)}w(r),O(i);let a={},o=u===`contact`?V:H;r.forEach(e=>{let t=e.toLowerCase(),n=o.find(e=>{let n=e.label.toLowerCase();return t===e.key.toLowerCase()||t===n||t.includes(n)||n.includes(t)});n?a[e]=n.key:a[e]=``}),j(a)},K=e=>{p(e);let t=e===`contact`?ee:B;v(t),x(`образец_${e===`contact`?`контактов`:`товаров`}.csv`),G(t),l(2)},te=e=>{let t=e.target.files?.[0];if(!t)return;x(t.name);let n=new FileReader;n.onload=e=>{let t=e.target?.result;v(t),G(t),l(2)},n.readAsText(t)},q=E.map((e,t)=>{let n={};Object.entries(k).forEach(([t,r])=>{r&&(n[r]=e[t]||``)});let r=[];if(u===`contact`)n.firstName?.trim()||r.push(`Имя обязательно`),n.lastName?.trim()||r.push(`Фамилия обязательна`),n.email&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(n.email)&&r.push(`Некорректный email: "${n.email}"`);else if(n.sku?.trim()||r.push(`Артикул (SKU) обязателен`),n.name?.trim()||r.push(`Наименование обязательно`),n.price){let e=Number(n.price);(isNaN(e)||e<=0)&&r.push(`Цена должна быть положительным числом: "${n.price}"`)}else r.push(`Цена обязательна`);return{rowIndex:t+1,raw:e,mapped:n,isValid:r.length===0,errors:r}}),J=q.filter(e=>e.isValid).length,ne=q.filter(e=>!e.isValid).length,Y=async()=>{R(!0);try{let e=N?q.filter(e=>e.isValid):q,n=0;if(u===`contact`)for(let t of e)await _.contacts.create({firstName:t.mapped.firstName||`Контакт`,lastName:t.mapped.lastName||``,phone:t.mapped.phone||``,email:t.mapped.email||``,roles:[`client`],status:`active`}),n++;else for(let t of e){let e=Math.round(Number(t.mapped.price)||1e4);await S.products.create({sku:t.mapped.sku||`SKU-${c()}`,name:t.mapped.name||`Товар`,categoryId:`cat_default`,isService:!1,trackInventory:!0,status:`active`,price:{minor:e,currency:`RUB`},costPrice:{minor:Math.round(e*.6),currency:`RUB`},unit:t.mapped.unit||`шт`}),n++}W(n),l(4),i(`Успешно импортировано ${n} записей в IndexedDB!`,`success`),t&&t(n)}catch(e){i(`Ошибка импорта: ${e instanceof Error?e.message:String(e)}`,`error`)}finally{R(!1)}},X=u===`contact`?V:H;return(0,z.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft p-5 space-y-6`,children:[(0,z.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-4 border-b border-krona-border pb-4`,children:[(0,z.jsxs)(`div`,{children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsx)(`h2`,{className:`text-base font-bold text-krona-primary`,children:`Мастер импорта данных из CSV`}),(0,z.jsx)(a,{variant:`gold`,size:`sm`,children:u===`contact`?`Контакты CRM`:`Товары`})]}),(0,z.jsx)(`p`,{className:`text-xs text-krona-secondary mt-0.5`,children:`Пакетная загрузка записей с проверкой форматов, сопоставлением колонок и отчетом валидации`})]}),(0,z.jsx)(`div`,{className:`flex items-center gap-2 text-xs`,children:[{num:1,label:`Файл`},{num:2,label:`Сопоставление`},{num:3,label:`Валидация`},{num:4,label:`Готово`}].map(e=>(0,z.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,z.jsx)(`span`,{className:`w-6 h-6 rounded-full flex items-center justify-center font-bold text-xs ${o===e.num?`bg-krona-green text-white shadow-sm`:o>e.num?`bg-[#2F684C]/20 text-krona-green`:`bg-krona-workspace text-krona-secondary border border-krona-border`}`,children:o>e.num?(0,z.jsx)(b,{className:`w-3.5 h-3.5`}):e.num}),(0,z.jsx)(`span`,{className:`hidden sm:inline font-medium ${o===e.num?`text-krona-primary`:`text-krona-secondary`}`,children:e.label}),e.num<4&&(0,z.jsx)(`div`,{className:`w-4 h-0.5 bg-krona-border`})]},e.num))})]}),o===1&&(0,z.jsxs)(`div`,{className:`space-y-5 animate-fade-in`,children:[(0,z.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-4`,children:[(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`label`,{className:`block text-xs font-semibold text-krona-primary mb-1.5`,children:`Целевая сущность`}),(0,z.jsxs)(`div`,{className:`flex gap-2`,children:[(0,z.jsxs)(`button`,{type:`button`,onClick:()=>p(`contact`),className:`flex-1 p-3 rounded-lg border text-left text-xs transition-all ${u===`contact`?`border-krona-green bg-krona-green/10 text-krona-primary font-semibold`:`border-krona-border bg-krona-workspace text-krona-secondary hover:border-krona-border/80`}`,children:[(0,z.jsx)(`div`,{className:`font-bold text-sm text-krona-primary`,children:`Контакты`}),(0,z.jsx)(`div`,{className:`text-xs text-krona-secondary mt-0.5`,children:`Физлица, клиенты, сотрудники контрагентов`})]}),(0,z.jsxs)(`button`,{type:`button`,onClick:()=>p(`product`),className:`flex-1 p-3 rounded-lg border text-left text-xs transition-all ${u===`product`?`border-krona-green bg-krona-green/10 text-krona-primary font-semibold`:`border-krona-border bg-krona-workspace text-krona-secondary hover:border-krona-border/80`}`,children:[(0,z.jsx)(`div`,{className:`font-bold text-sm text-krona-primary`,children:`Товары`}),(0,z.jsx)(`div`,{className:`text-xs text-krona-secondary mt-0.5`,children:`Номенклатура, артикулы, цены и остатки`})]})]})]}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`label`,{className:`block text-xs font-semibold text-krona-primary mb-1.5`,children:`Быстрый старт с образцами данных`}),(0,z.jsxs)(`div`,{className:`space-y-2`,children:[(0,z.jsxs)(r,{variant:`secondary`,size:`sm`,className:`w-full justify-start text-xs`,onClick:()=>K(`contact`),children:[(0,z.jsx)(D,{className:`w-3.5 h-3.5 text-amber-500 mr-2`}),`Загрузить образец контактов (с корректными и ошибочными строками)`]}),(0,z.jsxs)(r,{variant:`secondary`,size:`sm`,className:`w-full justify-start text-xs`,onClick:()=>K(`product`),children:[(0,z.jsx)(D,{className:`w-3.5 h-3.5 text-emerald-500 mr-2`}),`Загрузить образец товаров (с корректными и ошибочными строками)`]})]})]})]}),(0,z.jsxs)(`div`,{className:`border-2 border-dashed border-krona-border hover:border-krona-green rounded-xl p-8 text-center transition-colors bg-krona-workspace/40`,children:[(0,z.jsx)(I,{className:`w-10 h-10 text-krona-secondary mx-auto mb-2`}),(0,z.jsx)(`div`,{className:`text-xs font-medium text-krona-primary`,children:`Перетащите сюда файл .csv или выберите на диске`}),(0,z.jsx)(`p`,{className:`text-[11px] text-krona-secondary mt-1`,children:`Поддерживается разделитель запятая (,), кодировка UTF-8`}),(0,z.jsxs)(`label`,{className:`mt-3 inline-block cursor-pointer`,children:[(0,z.jsxs)(`span`,{className:`px-3.5 py-1.5 rounded-lg bg-krona-green text-white text-xs font-medium hover:bg-krona-green/90 transition-colors shadow-sm inline-flex items-center gap-1.5`,children:[(0,z.jsx)(f,{className:`w-3.5 h-3.5`}),` Выбрать файл на компьютере`]}),(0,z.jsx)(`input`,{type:`file`,accept:`.csv,text/csv`,onChange:te,className:`hidden`})]})]})]}),o===2&&(0,z.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,z.jsxs)(`div`,{className:`flex items-center justify-between text-xs bg-krona-workspace p-3 rounded-lg border border-krona-border`,children:[(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`span`,{className:`text-krona-secondary`,children:`Файл: `}),(0,z.jsx)(`span`,{className:`font-semibold text-krona-primary`,children:y}),(0,z.jsx)(`span`,{className:`text-krona-secondary ml-3`,children:`Строк: `}),(0,z.jsx)(`span`,{className:`font-semibold text-krona-primary`,children:E.length})]}),(0,z.jsx)(r,{variant:`ghost`,size:`sm`,onClick:()=>l(1),children:`Выбрать другой файл`})]}),(0,z.jsx)(`div`,{className:`border border-krona-border rounded-lg overflow-hidden`,children:(0,z.jsxs)(`table`,{className:`w-full text-xs text-left`,children:[(0,z.jsx)(`thead`,{className:`bg-krona-workspace text-krona-secondary border-b border-krona-border`,children:(0,z.jsxs)(`tr`,{children:[(0,z.jsx)(`th`,{className:`p-3 font-semibold`,children:`Колонка в CSV-файле`}),(0,z.jsx)(`th`,{className:`p-3 font-semibold`,children:`Пример значения (первая строка)`}),(0,z.jsx)(`th`,{className:`p-3 font-semibold`,children:`Поле в системе Krona`})]})}),(0,z.jsx)(`tbody`,{className:`divide-y divide-krona-border`,children:C.map(e=>(0,z.jsxs)(`tr`,{className:`hover:bg-krona-workspace/50`,children:[(0,z.jsx)(`td`,{className:`p-3 font-semibold text-krona-primary`,children:e}),(0,z.jsx)(`td`,{className:`p-3 font-mono text-krona-secondary truncate max-w-xs`,children:E[0]?.[e]||`—`}),(0,z.jsx)(`td`,{className:`p-3`,children:(0,z.jsxs)(`select`,{value:k[e]||``,onChange:t=>j({...k,[e]:t.target.value}),className:`w-64 px-2.5 py-1 text-xs bg-krona-workspace border border-krona-border rounded-md text-krona-primary focus:outline-none focus:border-krona-green`,children:[(0,z.jsx)(`option`,{value:``,children:`-- Не импортировать --`}),X.map(e=>(0,z.jsxs)(`option`,{value:e.key,children:[e.label,` `,e.required?`*`:``]},e.key))]})})]},e))})]})}),(0,z.jsxs)(`div`,{className:`flex justify-between items-center pt-2`,children:[(0,z.jsxs)(r,{variant:`secondary`,size:`sm`,onClick:()=>l(1),children:[(0,z.jsx)(h,{className:`w-3.5 h-3.5 mr-1`}),` Назад`]}),(0,z.jsxs)(r,{variant:`primary`,size:`sm`,onClick:()=>l(3),children:[`Перейти к валидации `,(0,z.jsx)(M,{className:`w-3.5 h-3.5 ml-1`})]})]})]}),o===3&&(0,z.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,z.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-3 gap-3`,children:[(0,z.jsxs)(`div`,{className:`p-3 rounded-lg border border-krona-border bg-krona-workspace/60`,children:[(0,z.jsx)(`div`,{className:`text-[11px] text-krona-secondary uppercase font-semibold`,children:`Всего строк в файле`}),(0,z.jsx)(`div`,{className:`text-xl font-bold text-krona-primary mt-1`,children:q.length})]}),(0,z.jsxs)(`div`,{className:`p-3 rounded-lg border border-emerald-500/30 bg-emerald-500/10`,children:[(0,z.jsxs)(`div`,{className:`text-[11px] text-emerald-700 dark:text-emerald-300 uppercase font-semibold flex items-center gap-1`,children:[(0,z.jsx)(m,{className:`w-3.5 h-3.5`}),` Корректные строки`]}),(0,z.jsx)(`div`,{className:`text-xl font-bold text-emerald-600 dark:text-emerald-400 mt-1`,children:J})]}),(0,z.jsxs)(`div`,{className:`p-3 rounded-lg border border-rose-500/30 bg-rose-500/10`,children:[(0,z.jsxs)(`div`,{className:`text-[11px] text-rose-700 dark:text-rose-300 uppercase font-semibold flex items-center gap-1`,children:[(0,z.jsx)(T,{className:`w-3.5 h-3.5`}),` Строки с ошибками`]}),(0,z.jsx)(`div`,{className:`text-xl font-bold text-rose-600 dark:text-rose-400 mt-1`,children:ne})]})]}),(0,z.jsxs)(`div`,{className:`flex items-center gap-2 text-xs bg-krona-workspace p-3 rounded-lg border border-krona-border`,children:[(0,z.jsx)(`input`,{type:`checkbox`,id:`skipErrors`,checked:N,onChange:e=>P(e.target.checked),className:`rounded border-krona-border text-krona-green focus:ring-krona-green`}),(0,z.jsxs)(`label`,{htmlFor:`skipErrors`,className:`text-krona-primary font-medium cursor-pointer`,children:[`Импортировать только корректные строки (`,J,` из `,q.length,`), пропуская ошибочные`]})]}),(0,z.jsx)(`div`,{className:`border border-krona-border rounded-lg overflow-x-auto max-h-80`,children:(0,z.jsxs)(`table`,{className:`w-full text-xs text-left`,children:[(0,z.jsx)(`thead`,{className:`bg-krona-workspace text-krona-secondary border-b border-krona-border sticky top-0`,children:(0,z.jsxs)(`tr`,{children:[(0,z.jsx)(`th`,{className:`p-2.5 font-semibold w-12`,children:`№`}),(0,z.jsx)(`th`,{className:`p-2.5 font-semibold w-24`,children:`Статус`}),X.map(e=>(0,z.jsx)(`th`,{className:`p-2.5 font-semibold`,children:e.label},e.key)),(0,z.jsx)(`th`,{className:`p-2.5 font-semibold`,children:`Ошибки / Замечания`})]})}),(0,z.jsx)(`tbody`,{className:`divide-y divide-krona-border`,children:q.map(e=>(0,z.jsxs)(`tr`,{className:`transition-colors ${e.isValid?`hover:bg-krona-workspace/40`:`bg-rose-500/5 hover:bg-rose-500/10`}`,children:[(0,z.jsx)(`td`,{className:`p-2.5 font-mono text-krona-secondary`,children:e.rowIndex}),(0,z.jsx)(`td`,{className:`p-2.5`,children:e.isValid?(0,z.jsx)(a,{variant:`green`,size:`sm`,children:`Корректно`}):(0,z.jsx)(a,{variant:`danger`,size:`sm`,children:`Ошибка`})}),X.map(t=>(0,z.jsx)(`td`,{className:`p-2.5 text-krona-primary font-medium`,children:e.mapped[t.key]||(0,z.jsx)(`span`,{className:`text-krona-secondary italic`,children:`—`})},t.key)),(0,z.jsx)(`td`,{className:`p-2.5 text-xs text-rose-600 dark:text-rose-400`,children:e.errors.length>0?(0,z.jsx)(`ul`,{className:`list-disc pl-4 space-y-0.5`,children:e.errors.map((e,t)=>(0,z.jsx)(`li`,{children:e},t))}):(0,z.jsxs)(`span`,{className:`text-emerald-600 dark:text-emerald-400 flex items-center gap-1`,children:[(0,z.jsx)(b,{className:`w-3 h-3`}),` Проверка пройдена`]})})]},e.rowIndex))})]})}),(0,z.jsxs)(`div`,{className:`flex justify-between items-center pt-2`,children:[(0,z.jsxs)(r,{variant:`secondary`,size:`sm`,onClick:()=>l(2),children:[(0,z.jsx)(h,{className:`w-3.5 h-3.5 mr-1`}),` Назад`]}),(0,z.jsx)(r,{variant:`primary`,size:`sm`,disabled:F||N&&J===0,onClick:Y,children:F?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(A,{className:`w-3.5 h-3.5 mr-1.5 animate-spin`}),` Выполняется импорт...`]}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(d,{className:`w-3.5 h-3.5 mr-1.5`}),` Импортировать `,N?J:q.length,` записей в базу`]})})]})]}),o===4&&(0,z.jsxs)(`div`,{className:`text-center py-8 space-y-4 animate-fade-in`,children:[(0,z.jsx)(`div`,{className:`w-14 h-14 rounded-full bg-emerald-500/20 text-emerald-600 dark:text-emerald-400 flex items-center justify-center mx-auto`,children:(0,z.jsx)(m,{className:`w-8 h-8`})}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`h3`,{className:`text-lg font-bold text-krona-primary`,children:`Импорт успешно завершен!`}),(0,z.jsxs)(`p`,{className:`text-xs text-krona-secondary max-w-md mx-auto mt-1`,children:[`В локальную базу данных IndexedDB успешно добавлено`,` `,(0,z.jsx)(`strong`,{className:`text-krona-primary font-semibold`,children:U}),` записей`,` `,`(`,u===`contact`?`контактов`:`товаров`,`). Данные мгновенно доступны для использования во всех модулях платформы.`]})]}),(0,z.jsxs)(`div`,{className:`flex justify-center gap-2 pt-3`,children:[n&&(0,z.jsx)(r,{variant:`secondary`,size:`sm`,onClick:n,children:`Закрыть мастер`}),(0,z.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>{l(1),v(``),x(``),O([])},children:`Импортировать еще файл`})]})]})]})},W=[{key:`prospecting`,label:`Первичный контакт`,color:`border-sky-500/40`},{key:`discovery`,label:`Квалификация`,color:`border-indigo-500/40`},{key:`proposal`,label:`Предложение`,color:`border-amber-500/40`},{key:`negotiation`,label:`Переговоры`,color:`border-orange-500/40`},{key:`contract`,label:`Согласование`,color:`border-purple-500/40`},{key:`won`,label:`Выиграна`,color:`border-emerald-500/60 bg-emerald-500/5`},{key:`lost`,label:`Проиграна`,color:`border-rose-500/40 bg-rose-500/5`}],G=({deals:e,contacts:t,companies:n,search:i,onSearchChange:a,onAddDeal:o,onStageChange:s})=>{let[c,l]=(0,L.useState)(null),d=(e,t)=>{e.dataTransfer.setData(`text/plain`,t),l(t)},f=e=>{e.preventDefault()},p=async(e,t)=>{e.preventDefault();let n=e.dataTransfer.getData(`text/plain`)||c;n&&await s(n,t),l(null)};return(0,z.jsxs)(`div`,{className:`space-y-3`,children:[(0,z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,z.jsxs)(`div`,{className:`relative w-64`,children:[(0,z.jsx)(j,{className:`w-3.5 h-3.5 absolute left-2.5 top-2.5 text-krona-secondary`}),(0,z.jsx)(`input`,{type:`text`,value:i,onChange:e=>a(e.target.value),placeholder:`Поиск по сделкам...`,className:`w-full pl-8 pr-3 py-1.5 text-xs bg-krona-surface border border-krona-border rounded-lg text-krona-primary focus:outline-none focus:border-krona-green`})]}),(0,z.jsxs)(r,{variant:`primary`,size:`sm`,onClick:o,children:[(0,z.jsx)(g,{className:`w-3.5 h-3.5 mr-1`}),` Новая сделка`]})]}),(0,z.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-4 lg:grid-cols-7 gap-2.5 overflow-x-auto pb-4`,children:W.map(r=>{let a=e.filter(e=>e.stage===r.key&&(e.title.toLowerCase().includes(i.toLowerCase())||!i)),o=a.reduce((e,t)=>e+t.amount.minor,0);return(0,z.jsxs)(`div`,{"data-testid":`kanban-column-${r.key}`,onDragOver:f,onDrop:e=>p(e,r.key),className:`bg-krona-surface/70 border rounded-xl p-2.5 flex flex-col min-w-[200px] max-h-[750px] shadow-krona-soft transition-all ${r.color}`,children:[(0,z.jsxs)(`div`,{className:`flex items-center justify-between border-b border-krona-border/60 pb-2 mb-2`,children:[(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`div`,{className:`text-xs font-bold text-krona-primary`,children:r.label}),(0,z.jsx)(`div`,{className:`text-[11px] font-medium text-krona-green mt-0.5`,children:P(o)})]}),(0,z.jsx)(`span`,{className:`text-[11px] px-1.5 py-0.5 rounded-full bg-krona-workspace text-krona-secondary font-bold`,children:a.length})]}),(0,z.jsxs)(`div`,{className:`space-y-2 overflow-y-auto flex-1 pr-0.5`,children:[a.map(e=>{let r=t.find(t=>t.id===e.contactId),i=n.find(t=>t.id===e.companyId),a=W.findIndex(t=>t.key===e.stage)+1,o=W[a]?.key;return(0,z.jsxs)(`div`,{"data-testid":`deal-card-${e.id}`,"data-deal-id":e.id,"data-deal-stage":e.stage,draggable:!0,onDragStart:t=>d(t,e.id),className:`bg-krona-workspace border border-krona-border hover:border-krona-green/60 p-2.5 rounded-lg text-xs space-y-2 shadow-xs cursor-grab active:cursor-grabbing transition-all`,children:[(0,z.jsx)(`div`,{className:`font-semibold text-krona-primary line-clamp-2`,children:e.title}),(0,z.jsxs)(`div`,{className:`flex items-center justify-between text-[11px]`,children:[(0,z.jsx)(`span`,{className:`font-bold text-krona-primary`,children:P(e.amount.minor)}),(0,z.jsxs)(`span`,{className:`px-1.5 py-0.2 bg-emerald-500/10 text-emerald-600 dark:text-emerald-400 rounded font-medium`,children:[e.probability,`% вер.`]})]}),(r||i)&&(0,z.jsxs)(`div`,{className:`text-[11px] text-krona-secondary truncate flex items-center gap-1`,children:[(0,z.jsx)(u,{className:`w-3 h-3`}),i?.name||`${r?.firstName} ${r?.lastName}`]}),o&&e.stage!==`won`&&e.stage!==`lost`&&(0,z.jsxs)(`button`,{type:`button`,onClick:()=>s(e.id,o),className:`w-full mt-1 py-1 text-[11px] bg-krona-surface hover:bg-krona-green/10 text-krona-secondary hover:text-krona-green border border-krona-border rounded flex items-center justify-center gap-1 transition-colors`,children:[`Далее: `,W[a]?.label,` `,(0,z.jsx)(M,{className:`w-3 h-3`})]})]},e.id)}),a.length===0&&(0,z.jsx)(`div`,{className:`text-center py-6 text-[11px] text-krona-secondary italic`,children:`Пусто`})]})]},r.key)})})]})},K=({activeTab:e,search:t,onSearchChange:n,contacts:i,companies:o,leads:s,onSelectContact:c,onSelectCompany:l,onAddContact:d,onAddCompany:f,onAddLead:p,onConvertLead:m})=>e===`contacts`?(0,z.jsxs)(`div`,{className:`space-y-3`,children:[(0,z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,z.jsxs)(`div`,{className:`relative w-64`,children:[(0,z.jsx)(j,{className:`w-3.5 h-3.5 absolute left-2.5 top-2.5 text-krona-secondary`}),(0,z.jsx)(`input`,{type:`text`,value:t,onChange:e=>n(e.target.value),placeholder:`Поиск по имени, телефону, email...`,className:`w-full pl-8 pr-3 py-1.5 text-xs bg-krona-surface border border-krona-border rounded-lg text-krona-primary focus:outline-none focus:border-krona-green`})]}),(0,z.jsxs)(r,{variant:`primary`,size:`sm`,onClick:d,children:[(0,z.jsx)(g,{className:`w-3.5 h-3.5 mr-1`}),` Новый контакт`]})]}),(0,z.jsx)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft overflow-hidden`,children:(0,z.jsxs)(`table`,{className:`w-full text-xs text-left`,children:[(0,z.jsx)(`thead`,{className:`bg-krona-workspace text-krona-secondary border-b border-krona-border`,children:(0,z.jsxs)(`tr`,{children:[(0,z.jsx)(`th`,{className:`p-3 font-semibold`,children:`ФИО / Контакт`}),(0,z.jsx)(`th`,{className:`p-3 font-semibold`,children:`Компания`}),(0,z.jsx)(`th`,{className:`p-3 font-semibold`,children:`Телефон`}),(0,z.jsx)(`th`,{className:`p-3 font-semibold`,children:`Email`}),(0,z.jsx)(`th`,{className:`p-3 font-semibold`,children:`Роли`}),(0,z.jsx)(`th`,{className:`p-3 font-semibold text-right`,children:`Действие`})]})}),(0,z.jsx)(`tbody`,{className:`divide-y divide-krona-border`,children:i.filter(e=>`${e.firstName} ${e.lastName}`.toLowerCase().includes(t.toLowerCase())||e.phone?.includes(t)||e.email?.toLowerCase().includes(t.toLowerCase())).map(e=>{let t=o.find(t=>t.id===e.companyId);return(0,z.jsxs)(`tr`,{onClick:()=>c(e),className:`hover:bg-krona-workspace/50 cursor-pointer transition-colors`,children:[(0,z.jsx)(`td`,{className:`p-3 font-medium text-krona-primary`,children:(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsxs)(`div`,{className:`w-7 h-7 rounded-full bg-krona-green/10 text-krona-green flex items-center justify-center font-bold text-xs`,children:[e.firstName[0],e.lastName?.[0]]}),(0,z.jsxs)(`div`,{children:[(0,z.jsxs)(`div`,{children:[e.firstName,` `,e.lastName]}),e.jobTitle&&(0,z.jsx)(`div`,{className:`text-[11px] text-krona-secondary`,children:e.jobTitle})]})]})}),(0,z.jsx)(`td`,{className:`p-3 text-krona-secondary`,children:t?.name||`—`}),(0,z.jsx)(`td`,{className:`p-3 font-mono text-krona-secondary`,children:e.phone||`—`}),(0,z.jsx)(`td`,{className:`p-3 text-krona-secondary`,children:e.email||`—`}),(0,z.jsx)(`td`,{className:`p-3`,children:(0,z.jsx)(`div`,{className:`flex gap-1`,children:e.roles?.map(e=>(0,z.jsx)(a,{variant:`gold`,size:`sm`,children:e},e))})}),(0,z.jsx)(`td`,{className:`p-3 text-right`,children:(0,z.jsxs)(r,{variant:`ghost`,size:`sm`,onClick:t=>{t.stopPropagation(),c(e)},children:[`Карточка 360 `,(0,z.jsx)(y,{className:`w-3.5 h-3.5 ml-1`})]})})]},e.id)})})]})})]}):e===`companies`?(0,z.jsxs)(`div`,{className:`space-y-3`,children:[(0,z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,z.jsxs)(`div`,{className:`relative w-64`,children:[(0,z.jsx)(j,{className:`w-3.5 h-3.5 absolute left-2.5 top-2.5 text-krona-secondary`}),(0,z.jsx)(`input`,{type:`text`,value:t,onChange:e=>n(e.target.value),placeholder:`Поиск по названию, ИНН...`,className:`w-full pl-8 pr-3 py-1.5 text-xs bg-krona-surface border border-krona-border rounded-lg text-krona-primary focus:outline-none focus:border-krona-green`})]}),(0,z.jsxs)(r,{variant:`primary`,size:`sm`,onClick:f,children:[(0,z.jsx)(g,{className:`w-3.5 h-3.5 mr-1`}),` Новая компания`]})]}),(0,z.jsx)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft overflow-hidden`,children:(0,z.jsxs)(`table`,{className:`w-full text-xs text-left`,children:[(0,z.jsx)(`thead`,{className:`bg-krona-workspace text-krona-secondary border-b border-krona-border`,children:(0,z.jsxs)(`tr`,{children:[(0,z.jsx)(`th`,{className:`p-3 font-semibold`,children:`Название компании`}),(0,z.jsx)(`th`,{className:`p-3 font-semibold`,children:`ИНН`}),(0,z.jsx)(`th`,{className:`p-3 font-semibold`,children:`Город`}),(0,z.jsx)(`th`,{className:`p-3 font-semibold`,children:`Телефон`}),(0,z.jsx)(`th`,{className:`p-3 font-semibold`,children:`Роли`}),(0,z.jsx)(`th`,{className:`p-3 font-semibold text-right`,children:`Действие`})]})}),(0,z.jsx)(`tbody`,{className:`divide-y divide-krona-border`,children:o.filter(e=>e.name.toLowerCase().includes(t.toLowerCase())||e.inn?.includes(t)||e.address?.toLowerCase().includes(t.toLowerCase())).map(e=>(0,z.jsxs)(`tr`,{onClick:()=>l(e),className:`hover:bg-krona-workspace/50 cursor-pointer transition-colors`,children:[(0,z.jsx)(`td`,{className:`p-3 font-medium text-krona-primary`,children:(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsx)(u,{className:`w-4 h-4 text-krona-secondary`}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`div`,{className:`font-bold`,children:e.name}),e.legalName&&(0,z.jsx)(`div`,{className:`text-[11px] text-krona-secondary`,children:e.legalName})]})]})}),(0,z.jsx)(`td`,{className:`p-3 font-mono text-krona-secondary`,children:e.inn||`—`}),(0,z.jsx)(`td`,{className:`p-3 text-krona-secondary`,children:e.address||`—`}),(0,z.jsx)(`td`,{className:`p-3 font-mono text-krona-secondary`,children:e.phone||`—`}),(0,z.jsx)(`td`,{className:`p-3`,children:(0,z.jsx)(`div`,{className:`flex gap-1`,children:e.roles?.map(e=>(0,z.jsx)(a,{variant:`gold`,size:`sm`,children:e},e))})}),(0,z.jsx)(`td`,{className:`p-3 text-right`,children:(0,z.jsxs)(r,{variant:`ghost`,size:`sm`,onClick:t=>{t.stopPropagation(),l(e)},children:[`Карточка 360 `,(0,z.jsx)(y,{className:`w-3.5 h-3.5 ml-1`})]})})]},e.id))})]})})]}):e===`leads`?(0,z.jsxs)(`div`,{className:`space-y-3`,children:[(0,z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,z.jsxs)(`div`,{className:`relative w-64`,children:[(0,z.jsx)(j,{className:`w-3.5 h-3.5 absolute left-2.5 top-2.5 text-krona-secondary`}),(0,z.jsx)(`input`,{type:`text`,value:t,onChange:e=>n(e.target.value),placeholder:`Поиск лидов...`,className:`w-full pl-8 pr-3 py-1.5 text-xs bg-krona-surface border border-krona-border rounded-lg text-krona-primary focus:outline-none focus:border-krona-green`})]}),(0,z.jsxs)(r,{variant:`primary`,size:`sm`,"data-testid":`new-lead-btn`,onClick:p,children:[(0,z.jsx)(g,{className:`w-3.5 h-3.5 mr-1`}),` Новый лид`]})]}),(0,z.jsx)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft overflow-hidden`,children:(0,z.jsxs)(`table`,{className:`w-full text-xs text-left`,children:[(0,z.jsx)(`thead`,{className:`bg-krona-workspace text-krona-secondary border-b border-krona-border`,children:(0,z.jsxs)(`tr`,{children:[(0,z.jsx)(`th`,{className:`p-3 font-semibold`,children:`Название лида`}),(0,z.jsx)(`th`,{className:`p-3 font-semibold`,children:`Контактное лицо`}),(0,z.jsx)(`th`,{className:`p-3 font-semibold`,children:`Контакты`}),(0,z.jsx)(`th`,{className:`p-3 font-semibold`,children:`Оценка бюджета`}),(0,z.jsx)(`th`,{className:`p-3 font-semibold`,children:`Статус`}),(0,z.jsx)(`th`,{className:`p-3 font-semibold text-right`,children:`Конвертация`})]})}),(0,z.jsx)(`tbody`,{className:`divide-y divide-krona-border`,children:s.filter(e=>e.title.toLowerCase().includes(t.toLowerCase())||e.contactName?.toLowerCase().includes(t.toLowerCase())||e.phone?.includes(t)||e.email?.toLowerCase().includes(t.toLowerCase())).map(e=>(0,z.jsxs)(`tr`,{className:`hover:bg-krona-workspace/50 transition-colors`,children:[(0,z.jsx)(`td`,{className:`p-3 font-bold text-krona-primary`,children:e.title}),(0,z.jsx)(`td`,{className:`p-3 font-medium text-krona-primary`,children:e.contactName}),(0,z.jsxs)(`td`,{className:`p-3 text-krona-secondary`,children:[(0,z.jsx)(`div`,{children:e.phone}),(0,z.jsx)(`div`,{className:`text-[11px]`,children:e.email})]}),(0,z.jsx)(`td`,{className:`p-3 font-bold text-krona-green`,children:e.estimatedValue?P(e.estimatedValue.minor):`—`}),(0,z.jsx)(`td`,{className:`p-3`,children:(0,z.jsx)(a,{variant:e.status===`converted`?`green`:e.status===`disqualified`?`danger`:`warning`,size:`sm`,children:e.status===`converted`?`Конвертирован`:e.status===`new`?`Новый`:e.status})}),(0,z.jsx)(`td`,{className:`p-3 text-right`,children:e.status===`converted`?(0,z.jsxs)(`span`,{className:`text-emerald-600 dark:text-emerald-400 text-xs font-semibold flex items-center justify-end gap-1`,children:[(0,z.jsx)(b,{className:`w-3.5 h-3.5`}),` Сделка создана`]}):(0,z.jsxs)(r,{variant:`primary`,size:`sm`,"data-testid":`convert-lead-btn`,onClick:()=>m(e),children:[(0,z.jsx)(D,{className:`w-3.5 h-3.5 mr-1`}),` Конвертировать в сделку`]})})]},e.id))})]})})]}):null,te=({isOpen:e,selectedContact:t,selectedCompany:n,onClose:i,deals:o,orders:c,getTimeline:l,createActivity:u})=>{let{showToast:d}=s(),[f,p]=(0,L.useState)(`overview`),[m,h]=(0,L.useState)([]),[g,_]=(0,L.useState)(``),[v,y]=(0,L.useState)(`call`);(0,L.useEffect)(()=>{let e=!0;return t?l(`contact`,t.id).then(t=>{e&&h(t)}).catch(()=>{}):n&&l(`company`,n.id).then(t=>{e&&h(t)}).catch(()=>{}),()=>{e=!1}},[t,n,l]);let b=t?.id||n?.id||``,x=(0,L.useMemo)(()=>o.filter(e=>e.contactId===b||e.companyId===b),[o,b]),S=(0,L.useMemo)(()=>c.filter(e=>e.customerId===b),[c,b]);return(0,z.jsx)(E,{isOpen:e,onClose:()=>{h([]),i()},title:t?`${t.firstName} ${t.lastName} (Customer 360)`:`${n?.name||``} (Company 360)`,size:`lg`,children:(0,z.jsxs)(`div`,{className:`space-y-4`,children:[(0,z.jsx)(`div`,{className:`flex border-b border-krona-border text-xs`,children:[`overview`,`deals`,`orders`,`activities`,`timeline`].map(e=>(0,z.jsxs)(`button`,{onClick:()=>p(e),className:`px-3.5 py-2 font-semibold capitalize transition-colors border-b-2 ${f===e?`border-krona-green text-krona-green`:`border-transparent text-krona-secondary hover:text-krona-primary`}`,children:[e===`overview`&&`Обзор`,e===`deals`&&`Сделки (${x.length})`,e===`orders`&&`Заказы (${S.length})`,e===`activities`&&`Задачи & Звонки`,e===`timeline`&&`Таймлайн (${m.length})`]},e))}),f===`overview`&&(0,z.jsxs)(`div`,{className:`space-y-3 text-xs`,children:[(0,z.jsxs)(`div`,{className:`grid grid-cols-2 gap-3 bg-krona-workspace p-3.5 rounded-lg border border-krona-border`,children:[t&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`span`,{className:`text-krona-secondary`,children:`ФИО:`}),` `,(0,z.jsxs)(`strong`,{className:`text-krona-primary`,children:[t.firstName,` `,t.lastName]})]}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`span`,{className:`text-krona-secondary`,children:`Телефон:`}),` `,(0,z.jsx)(`strong`,{className:`text-krona-primary`,children:t.phone||`—`})]}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`span`,{className:`text-krona-secondary`,children:`Email:`}),` `,(0,z.jsx)(`strong`,{className:`text-krona-primary`,children:t.email||`—`})]}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`span`,{className:`text-krona-secondary`,children:`Должность:`}),` `,(0,z.jsx)(`strong`,{className:`text-krona-primary`,children:t.jobTitle||`—`})]})]}),n&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`span`,{className:`text-krona-secondary`,children:`Название:`}),` `,(0,z.jsx)(`strong`,{className:`text-krona-primary`,children:n.name})]}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`span`,{className:`text-krona-secondary`,children:`ИНН:`}),` `,(0,z.jsx)(`strong`,{className:`text-krona-primary`,children:n.inn||`—`})]}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`span`,{className:`text-krona-secondary`,children:`Адрес:`}),` `,(0,z.jsx)(`strong`,{className:`text-krona-primary`,children:n.address||`—`})]}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`span`,{className:`text-krona-secondary`,children:`Телефон:`}),` `,(0,z.jsx)(`strong`,{className:`text-krona-primary`,children:n.phone||`—`})]})]})]}),(0,z.jsxs)(`div`,{className:`p-3 bg-krona-workspace/40 rounded-lg border border-krona-border`,children:[(0,z.jsx)(`div`,{className:`font-semibold text-krona-primary mb-1`,children:`Кастомные атрибуты (Схема Krona Studio):`}),t?.customFields&&Object.keys(t.customFields).length>0||n?.customFields&&Object.keys(n.customFields).length>0?(0,z.jsx)(`div`,{className:`grid grid-cols-2 gap-2 mt-2`,children:Object.entries(t?.customFields||n?.customFields).map(([e,t])=>(0,z.jsxs)(`div`,{className:`text-xs`,children:[(0,z.jsxs)(`span`,{className:`text-krona-secondary`,children:[e,`:`]}),` `,(0,z.jsx)(`strong`,{className:`text-krona-primary`,children:String(t)})]},e))}):(0,z.jsx)(`p`,{className:`text-krona-secondary text-[11px]`,children:`Дополнительные поля из Конструктора полей отображаются здесь в реальном времени.`})]})]}),f===`deals`&&(0,z.jsxs)(`div`,{className:`space-y-2`,children:[x.map(e=>(0,z.jsxs)(`div`,{className:`p-3 rounded-lg border border-krona-border bg-krona-workspace flex items-center justify-between text-xs`,children:[(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`div`,{className:`font-bold text-krona-primary`,children:e.title}),(0,z.jsxs)(`div`,{className:`text-[11px] text-krona-secondary`,children:[`Этап:`,` `,(0,z.jsx)(`span`,{className:`font-semibold`,children:W.find(t=>t.key===e.stage)?.label})]})]}),(0,z.jsxs)(`div`,{className:`text-right`,children:[(0,z.jsx)(`div`,{className:`font-bold text-krona-green`,children:P(e.amount.minor)}),(0,z.jsxs)(`div`,{className:`text-[11px] text-krona-secondary`,children:[e.probability,`% вер.`]})]})]},e.id)),x.length===0&&(0,z.jsx)(`div`,{className:`text-center py-6 text-krona-secondary text-xs italic`,children:`Нет связанных сделок`})]}),f===`orders`&&(0,z.jsxs)(`div`,{className:`space-y-2`,children:[S.map(e=>(0,z.jsxs)(`div`,{className:`p-3 rounded-lg border border-krona-border bg-krona-workspace flex items-center justify-between text-xs`,children:[(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`div`,{className:`font-bold font-mono text-krona-primary`,children:e.orderNumber}),(0,z.jsxs)(`div`,{className:`text-[11px] text-krona-secondary`,children:[e.items.length,` поз. • Статус: `,e.status]})]}),(0,z.jsxs)(`div`,{className:`text-right`,children:[(0,z.jsx)(`div`,{className:`font-bold text-krona-green`,children:P(e.total.minor)}),(0,z.jsx)(a,{variant:e.paymentStatus===`paid`?`green`:`warning`,size:`sm`,children:e.paymentStatus})]})]},e.id)),S.length===0&&(0,z.jsx)(`div`,{className:`text-center py-6 text-krona-secondary text-xs italic`,children:`Нет связанных заказов`})]}),f===`activities`&&(0,z.jsx)(`div`,{className:`space-y-3`,children:(0,z.jsxs)(`form`,{onSubmit:async e=>{if(e.preventDefault(),!g)return;let r=t?`contact`:`company`,i=t?.id||n?.id||``;await u({targetEntityType:r,targetEntityId:i,type:v,title:g,completed:!1,dueDate:new Date(Date.now()+864e5).toISOString()}),_(``),d(`Активность запланирована`,`success`),l(r,i).then(h).catch(()=>{})},className:`p-3 bg-krona-workspace rounded-lg border border-krona-border space-y-2`,children:[(0,z.jsx)(`div`,{className:`text-xs font-semibold text-krona-primary`,children:`Запланировать активность:`}),(0,z.jsxs)(`div`,{className:`flex gap-2`,children:[(0,z.jsxs)(`select`,{value:v,onChange:e=>y(e.target.value),className:`px-2.5 py-1 text-xs bg-krona-surface border border-krona-border rounded-md text-krona-primary`,children:[(0,z.jsx)(`option`,{value:`call`,children:`Звонок`}),(0,z.jsx)(`option`,{value:`meeting`,children:`Встреча`}),(0,z.jsx)(`option`,{value:`task`,children:`Задача`}),(0,z.jsx)(`option`,{value:`email`,children:`Email`})]}),(0,z.jsx)(`input`,{type:`text`,value:g,onChange:e=>_(e.target.value),placeholder:`Например: Обсудить коммерческое предложение...`,className:`flex-1 px-3 py-1 text-xs bg-krona-surface border border-krona-border rounded-md text-krona-primary`}),(0,z.jsx)(r,{type:`submit`,variant:`primary`,size:`sm`,children:`Добавить`})]})]})}),f===`timeline`&&(0,z.jsxs)(`div`,{className:`space-y-2.5 max-h-96 overflow-y-auto pr-1`,children:[m.map(e=>(0,z.jsxs)(`div`,{className:`p-3 rounded-lg border border-krona-border bg-krona-workspace text-xs space-y-1`,children:[(0,z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,z.jsx)(`span`,{className:`font-bold text-krona-primary`,children:e.title}),(0,z.jsx)(`span`,{className:`text-[10px] text-krona-secondary`,children:C(e.timestamp)})]}),e.description&&(0,z.jsx)(`p`,{className:`text-krona-secondary text-[11px]`,children:e.description}),(0,z.jsxs)(`div`,{className:`text-[10px] text-krona-green font-medium`,children:[`Автор: `,e.actor]})]},e.id)),m.length===0&&(0,z.jsx)(`div`,{className:`text-center py-6 text-krona-secondary text-xs italic`,children:`Таймлайн пуст`})]})]})})},q=({isOpen:e,lead:t,onClose:n,onConvert:i})=>{let[a,o]=(0,L.useState)(null),[s,c]=(0,L.useState)(``);return t!==a&&(o(t),c(t?`Сделка: ${t.title}`:``)),(0,z.jsx)(O,{isOpen:e,onClose:n,title:`Конвертация лида в сделку и контакт`,size:`md`,children:(0,z.jsxs)(`div`,{className:`space-y-4 text-xs`,children:[(0,z.jsx)(`p`,{className:`text-krona-secondary`,children:`При конвертации будет автоматически создан Контакт клиента и новая Сделка на этапе «Предложение».`}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Название новой сделки:`}),(0,z.jsx)(`input`,{type:`text`,value:s,onChange:e=>c(e.target.value),className:`w-full px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary focus:outline-none focus:border-krona-green`})]}),(0,z.jsxs)(`div`,{className:`flex justify-end gap-2 pt-2 border-t border-krona-border`,children:[(0,z.jsx)(r,{variant:`secondary`,size:`sm`,onClick:n,children:`Отмена`}),(0,z.jsx)(r,{variant:`primary`,size:`sm`,"data-testid":`confirm-convert-lead-btn`,onClick:async()=>{t&&await i(t.id,s||t.title)},children:`Подтвердить конвертацию`})]})]})})},J=({isOpen:e,wonDeal:t,onClose:n,onConfirmOrder:i})=>{let[a,o]=(0,L.useState)(null),[s,c]=(0,L.useState)(``),[l,u]=(0,L.useState)(`wh_main`);return t!==a&&(o(t),c(t?`Заказ по сделке: ${t.title}`:``),u(`wh_main`)),(0,z.jsx)(O,{isOpen:e,onClose:n,title:`Сделка выиграна! Создать заказ в Коммерции?`,size:`md`,children:(0,z.jsxs)(`div`,{className:`space-y-4 text-xs`,children:[(0,z.jsxs)(`div`,{className:`p-3 bg-emerald-500/10 border border-emerald-500/30 rounded-lg text-emerald-800 dark:text-emerald-300`,children:[(0,z.jsx)(`strong`,{children:`Поздравляем с успехом!`}),` Сделка «`,t?.title,`» переведена в статус «Выиграна». Система предлагает автоматически сформировать коммерческий Заказ.`]}),(0,z.jsxs)(`div`,{className:`space-y-3`,children:[(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Наименование заказа:`}),(0,z.jsx)(`input`,{type:`text`,value:s,onChange:e=>c(e.target.value),className:`w-full px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary focus:outline-none focus:border-krona-green`})]}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Сумма заказа (RUB):`}),(0,z.jsx)(`div`,{className:`font-bold text-sm text-krona-green py-1`,children:t?P(t.amount.minor):`0 ₽`})]}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Склад отгрузки:`}),(0,z.jsxs)(`select`,{value:l,onChange:e=>u(e.target.value),className:`w-full px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary focus:outline-none focus:border-krona-green`,children:[(0,z.jsx)(`option`,{value:`wh_main`,children:`Основной распределительный склад (Москва)`}),(0,z.jsx)(`option`,{value:`wh_spb`,children:`Склад Санкт-Петербург`})]})]})]}),(0,z.jsxs)(`div`,{className:`flex justify-end gap-2 pt-2 border-t border-krona-border`,children:[(0,z.jsx)(r,{variant:`secondary`,size:`sm`,onClick:n,children:`Не создавать сейчас`}),(0,z.jsxs)(r,{variant:`primary`,size:`sm`,"data-testid":`create-order-confirm-btn`,onClick:async()=>{await i({orderTitle:s,orderWarehouse:l})},children:[(0,z.jsx)(w,{className:`w-3.5 h-3.5 mr-1`}),` Создать заказ в Коммерции`]})]})]})})},ne=({contactMeta:e,companyMeta:t,dealMeta:n,leadMeta:r,contacts:i,companies:a,isAddContactOpen:o,isAddCompanyOpen:s,isAddDealOpen:c,isAddLeadOpen:u,onCloseContact:d,onCloseCompany:f,onCloseDeal:p,onCloseLead:m,onCreateContact:h,onCreateCompany:g,onCreateDeal:_,onCreateLead:v,showToast:y})=>(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(O,{isOpen:u,onClose:m,title:`Создание нового лида`,size:`lg`,children:r.currentEntity?(0,z.jsx)(l,{entity:r.currentEntity,layout:r.layouts?.[0]||null,mode:`create`,onSave:async e=>{await v({title:String(e.title||`Новый лид`),contactName:String(e.contactName||e.title||`Контактное лицо`),phone:String(e.phone||`+7 (999) 000-00-00`),email:String(e.email||`lead@example.com`),companyName:String(e.companyName||``),status:`new`,source:`website`,estimatedValue:e.estimatedValue?{minor:Number(e.estimatedValue)||1e6,currency:`RUB`}:{minor:15e5,currency:`RUB`},customFields:e}),m(),y(`Лид успешно создан!`,`success`)},onCancel:m}):(0,z.jsx)(`div`,{className:`p-4 text-center text-krona-secondary`,children:`Загрузка схемы...`})}),(0,z.jsx)(O,{isOpen:o,onClose:d,title:`Создание нового контакта`,size:`lg`,children:e.currentEntity?(0,z.jsx)(l,{entity:e.currentEntity,layout:e.layouts?.[0]||null,mode:`create`,onSave:async e=>{await h({firstName:String(e.firstName||`Новый`),lastName:String(e.lastName||`Контакт`),phone:String(e.phone||``),email:String(e.email||``),jobTitle:String(e.jobTitle||``),roles:[`client`],status:`active`,customFields:e}),d(),y(`Контакт успешно создан!`,`success`)},onCancel:d}):(0,z.jsx)(`div`,{className:`p-4 text-center text-krona-secondary`,children:`Загрузка схемы...`})}),(0,z.jsx)(O,{isOpen:s,onClose:f,title:`Создание новой компании`,size:`lg`,children:t.currentEntity?(0,z.jsx)(l,{entity:t.currentEntity,layout:t.layouts?.[0]||null,mode:`create`,onSave:async e=>{await g({name:String(e.name||`Новая компания`),inn:String(e.inn||``),address:String(e.city||e.address||`г. Москва`),phone:String(e.phone||``),roles:[`client`],status:`active`,customFields:e}),f(),y(`Компания успешно создана!`,`success`)},onCancel:f}):(0,z.jsx)(`div`,{className:`p-4 text-center text-krona-secondary`,children:`Загрузка схемы...`})}),(0,z.jsx)(O,{isOpen:c,onClose:p,title:`Создание новой сделки`,size:`lg`,children:n.currentEntity?(0,z.jsx)(l,{entity:n.currentEntity,layout:n.layouts?.[0]||null,mode:`create`,onSave:async e=>{let t=typeof e.amount==`number`?e.amount:5e6;await _({title:String(e.title||`Новая сделка`),pipelineId:`pipe_default`,stage:`prospecting`,amount:{minor:t,currency:`RUB`},probability:20,contactId:i[0]?.id,companyId:a[0]?.id,customFields:e}),p(),y(`Сделка успешно создана в воронке!`,`success`)},onCancel:p}):(0,z.jsx)(`div`,{className:`p-4 text-center text-krona-secondary`,children:`Загрузка схемы...`})})]}),Y=()=>{let t=p(),{showToast:n}=s(),{contacts:r,companies:i,leads:a,deals:o,createContact:c,createCompany:l,createDeal:u,createLead:d,updateDeal:f,convertLead:m,getTimeline:h,createActivity:g}=R(),{orders:_,createOrder:y}=N(),b=v(`contact`),x=v(`company`),S=v(`deal`),C=v(`lead`),[w,T]=(0,L.useState)(()=>{let e=t.pathname;return e.includes(`/crm/deals`)?`deals`:e.includes(`/crm/leads`)?`leads`:e.includes(`/crm/companies`)?`companies`:e.includes(`/crm/import`)?`import`:`contacts`}),[E,D]=(0,L.useState)(``),[O,A]=(0,L.useState)(!1),[j,M]=(0,L.useState)(!1),[P,F]=(0,L.useState)(!1),[ee,B]=(0,L.useState)(!1),[V,H]=(0,L.useState)(!1),[Y,X]=(0,L.useState)(null),[re,Z]=(0,L.useState)(!1),[Q,$]=(0,L.useState)(null),[ie,ae]=(0,L.useState)(null),[oe,se]=(0,L.useState)(null),[ce,le]=(0,L.useState)(t.pathname);if(ce!==t.pathname){le(t.pathname);let e=t.pathname;e.includes(`/crm/deals`)?T(`deals`):e.includes(`/crm/leads`)?T(`leads`):e.includes(`/crm/companies`)?T(`companies`):e.includes(`/crm/import`)?T(`import`):(e.includes(`/crm/contacts`)||e===`/crm`)&&T(`contacts`)}let ue=async(e,t)=>{let r=o.find(t=>t.id===e);r&&(await f(e,{stage:t}),n(`Сделка «${r.title}» переведена на этап: ${W.find(e=>e.key===t)?.label}`,`info`),t===`won`&&($(r),Z(!0)))},de=async({orderTitle:t,orderWarehouse:a})=>{if(Q)try{let o=r.find(e=>e.id===Q.contactId),s=i.find(e=>e.id===Q.companyId),c=o?`${o.firstName} ${o.lastName}`:s?.name||`Клиент`,l=`ORD-${e().slice(-6)}`;await y({orderNumber:l,customerType:Q.contactId?`contact`:`company`,customerId:Q.contactId||Q.companyId||`cnt_default`,customerName:c,status:`draft`,paymentStatus:`pending`,fulfillmentStatus:`unfulfilled`,items:[{id:`item_${e()}`,productId:`prd_coffee_beans`,sku:`COF-100`,name:t||Q.title,quantity:1,unitPrice:Q.amount,discountMinor:0,totalPrice:Q.amount}],subtotal:Q.amount,discountMinor:0,taxMinor:Math.round(Q.amount.minor*.2),shippingMinor:0,total:Q.amount,channel:`b2b`}),n(`Связанный Заказ ${l} успешно создан в Коммерции! (Склад: ${a})`,`success`),Z(!1),$(null)}catch(e){n(`Ошибка создания заказа: ${e instanceof Error?e.message:String(e)}`,`error`)}},fe=async(e,t)=>{try{let r=await m(e,t);n(`Лид конвертирован! Создана сделка «${r.deal.title}»`,`success`),H(!1),X(null)}catch(e){n(`Ошибка конвертации: ${e instanceof Error?e.message:String(e)}`,`error`)}},pe=[{id:`deals`,label:`Воронка сделок (${o.length})`},{id:`contacts`,label:`Контакты (${r.length})`},{id:`companies`,label:`Компании (${i.length})`},{id:`leads`,label:`Лиды (${a.length})`}];return(0,z.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,z.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 bg-krona-surface p-3.5 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,z.jsxs)(`div`,{children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsx)(`h1`,{className:`text-sm font-bold text-krona-primary`,children:`CRM: Клиенты, Воронка продаж & Сделки`}),(0,z.jsx)(k,{level:`pilot1`,size:`sm`})]}),(0,z.jsx)(`p`,{className:`text-xs text-krona-secondary mt-0.5`,children:`Сквозной процесс: Лид → Контакт/Компания → Сделка (Kanban) → Выиграна → Заказ в Коммерции`})]}),(0,z.jsxs)(`div`,{className:`flex items-center gap-1.5 overflow-x-auto text-xs`,children:[pe.map(e=>(0,z.jsx)(`button`,{onClick:()=>T(e.id),className:`px-3 py-1.5 rounded-lg font-medium transition-all ${w===e.id?`bg-krona-green text-white shadow-sm`:`bg-krona-workspace text-krona-secondary hover:text-krona-primary border border-krona-border`}`,children:e.label},e.id)),(0,z.jsxs)(`button`,{onClick:()=>T(`import`),className:`px-3 py-1.5 rounded-lg font-medium transition-all flex items-center gap-1 ${w===`import`?`bg-krona-green text-white shadow-sm`:`bg-krona-workspace text-krona-secondary hover:text-krona-primary border border-krona-border`}`,children:[(0,z.jsx)(I,{className:`w-3.5 h-3.5`}),` Импорт CSV`]})]})]}),w===`deals`&&(0,z.jsx)(G,{deals:o,contacts:r,companies:i,search:E,onSearchChange:D,onAddDeal:()=>F(!0),onStageChange:ue}),(w===`contacts`||w===`companies`||w===`leads`)&&(0,z.jsx)(K,{activeTab:w,search:E,onSearchChange:D,contacts:r,companies:i,leads:a,onSelectContact:ae,onSelectCompany:se,onAddContact:()=>A(!0),onAddCompany:()=>M(!0),onAddLead:()=>B(!0),onConvertLead:e=>{X(e),H(!0)}}),w===`import`&&(0,z.jsx)(U,{initialEntityType:`contact`}),(0,z.jsx)(te,{isOpen:!!(ie||oe),selectedContact:ie,selectedCompany:oe,onClose:()=>{ae(null),se(null)},deals:o,orders:_,getTimeline:h,createActivity:g}),(0,z.jsx)(J,{isOpen:re,wonDeal:Q,onClose:()=>{Z(!1),$(null)},onConfirmOrder:de}),(0,z.jsx)(q,{isOpen:V,lead:Y,onClose:()=>{H(!1),X(null)},onConvert:fe}),(0,z.jsx)(ne,{contactMeta:b,companyMeta:x,dealMeta:S,leadMeta:C,contacts:r,companies:i,isAddContactOpen:O,isAddCompanyOpen:j,isAddDealOpen:P,isAddLeadOpen:ee,onCloseContact:()=>A(!1),onCloseCompany:()=>M(!1),onCloseDeal:()=>F(!1),onCloseLead:()=>B(!1),onCreateContact:c,onCreateCompany:l,onCreateDeal:u,onCreateLead:d,showToast:n})]})};export{Y as CrmModule}; \ No newline at end of file diff --git a/dist/assets/CustomEntityPage-TM-tnYjd.js b/dist/assets/CustomEntityPage-TM-tnYjd.js deleted file mode 100644 index 6abad6a..0000000 --- a/dist/assets/CustomEntityPage-TM-tnYjd.js +++ /dev/null @@ -1 +0,0 @@ -import{c as e,f as t,h as n,i as r,l as i,r as a,s as o,t as s}from"./useToast-CS8pZhce.js";import{s as c}from"./indexedDb-DZ-aRPMs.js";import{t as l}from"./arrow-down-CWbiHuZO.js";import{t as u}from"./arrow-up-down--M136cK3.js";import{t as d}from"./arrow-up-B4Ca-HNG.js";import{i as f,n as p,r as m,t as h}from"./types-DMl_5q2N.js";import{n as g,r as _,t as v}from"./DynamicFormRenderer-CeAKrqsO.js";import{t as y}from"./clock-BelL0bvZ.js";import{t as b}from"./credit-card-6Y5eHPCw.js";import{t as x}from"./external-link-NR-y-GuE.js";import{t as S}from"./eye-CkF1gwUX.js";import{t as C}from"./file-text-DR21jZDS.js";import{t as w}from"./lock-BiWUbvPE.js";import{t as T}from"./mail-DOD5KO1v.js";import{t as E}from"./panels-top-left-BomsDlf9.js";import{t as D}from"./pen-D8SS70u3.js";import{t as O}from"./phone-DpnQw4if.js";import{t as k}from"./star-B6hvSjuv.js";import{t as A}from"./table-_fqSCPRE.js";import{C as j,D as M,E as N,H as P,J as F,P as I,X as L,Y as R,a as z,et as B,h as V,n as H,p as U,r as W,tt as G,u as K,y as q}from"./index-CyHCRa3Z.js";import{t as J}from"./currency-DdDs82F5.js";var Y={name:`copy`,size:24,node:[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]};Y.node;var ee=i(Y),X={name:`inbox`,size:24,node:[[`polyline`,{points:`22 12 16 12 14 15 10 15 8 12 2 12`,key:`o97t9d`}],[`path`,{d:`M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`oot6mr`}]]};X.node;var te=i(X),Z=n(t(),1),Q=o(),ne=({entity:e,records:t,view:n,isLoading:i=!1,onRowClick:o,onEdit:s,onDelete:c,onCreateNew:f})=>{let[p,m]=(0,Z.useState)(``),[h,g]=(0,Z.useState)(n?.sortBy||`updatedAt`),[v,y]=(0,Z.useState)(n?.sortOrder||`desc`),[b,x]=(0,Z.useState)(1),C=(0,Z.useMemo)(()=>{let t=new Map;return e.fields.forEach(e=>t.set(e.key,e)),t},[e]),w=(0,Z.useMemo)(()=>n?.visibleFieldKeys&&n.visibleFieldKeys.length>0?n.visibleFieldKeys.map(e=>C.get(e)).filter(e=>!!e):e.fields.filter(e=>!e.hidden).slice(0,6),[n,C,e]),T=e=>{h===e?y(e=>e===`asc`?`desc`:`asc`):(g(e),y(`asc`))},E=(0,Z.useMemo)(()=>{let e=[...t];if(p.trim()){let t=p.toLowerCase().trim();e=e.filter(e=>Object.values(e).some(e=>typeof e==`string`?e.toLowerCase().includes(t):typeof e==`number`&&String(e).includes(t)))}return h&&e.sort((e,t)=>{let n=e[h],r=t[h];if(n===r)return 0;if(n==null)return 1;if(r==null)return-1;let i=n>r?1:-1;return v===`desc`?-i:i}),e},[t,p,h,v]),O=Math.ceil(E.length/15)||1,k=(0,Z.useMemo)(()=>{let e=(b-1)*15;return E.slice(e,e+15)},[E,b,15]);return(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 p-3 bg-krona-surface border border-krona-border rounded-xl`,children:[(0,Q.jsx)(`div`,{className:`relative w-full sm:w-80`,children:(0,Q.jsx)(z,{value:p,onChange:e=>{m(e.target.value),x(1)},placeholder:`Поиск по записям...`,icon:(0,Q.jsx)(q,{className:`w-3.5 h-3.5`}),className:`text-xs py-1.5`})}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 text-xs text-krona-secondary justify-between sm:justify-end`,children:[(0,Q.jsxs)(`span`,{children:[`Найдено записей: `,(0,Q.jsx)(`strong`,{className:`text-krona-primary`,children:E.length})]}),f&&(0,Q.jsxs)(r,{variant:`primary`,size:`sm`,onClick:f,children:[(0,Q.jsx)(j,{className:`w-3.5 h-3.5 mr-1`}),`Создать`]})]})]}),(0,Q.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft overflow-hidden`,children:[(0,Q.jsx)(`div`,{className:`overflow-x-auto`,children:(0,Q.jsxs)(`table`,{className:`w-full text-left text-xs border-collapse`,children:[(0,Q.jsx)(`thead`,{className:`bg-krona-workspace border-b border-krona-border select-none`,children:(0,Q.jsxs)(`tr`,{children:[w.map(e=>{let t=h===e.key;return(0,Q.jsx)(`th`,{onClick:()=>T(e.key),className:`p-3 font-semibold text-krona-primary hover:bg-krona-surface-muted/60 cursor-pointer transition-colors whitespace-nowrap`,children:(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Q.jsx)(`span`,{children:e.label}),t?v===`asc`?(0,Q.jsx)(d,{className:`w-3 h-3 text-krona-green`}):(0,Q.jsx)(l,{className:`w-3 h-3 text-krona-green`}):(0,Q.jsx)(u,{className:`w-3 h-3 text-krona-secondary opacity-40 hover:opacity-100`})]})},e.key)}),(0,Q.jsx)(`th`,{className:`p-3 text-right font-semibold text-krona-secondary w-28`,children:`Действия`})]})}),(0,Q.jsxs)(`tbody`,{className:`divide-y divide-krona-border/60 bg-krona-surface`,children:[k.map(t=>(0,Q.jsxs)(`tr`,{onClick:()=>o&&o(t),className:`hover:bg-krona-workspace/60 transition-colors cursor-pointer group`,children:[w.map(n=>{let r=t[n.key],i=_(n.type,r,n);return(0,Q.jsx)(`td`,{className:`p-3 text-krona-secondary truncate max-w-xs`,children:n.type===`color`&&r?(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Q.jsx)(`span`,{className:`w-3 h-3 rounded-full border border-krona-border/60 shrink-0`,style:{backgroundColor:String(r)}}),(0,Q.jsx)(`span`,{className:`font-mono text-[11px]`,children:i})]}):n.type===`boolean`&&r!=null?(0,Q.jsx)(a,{variant:r?`green`:`neutral`,size:`sm`,children:r?`Да`:`Нет`}):n.key===`status`||n.type===`status`?(0,Q.jsx)(a,{variant:`neutral`,size:`sm`,children:i}):n.key===e.primaryFieldKey||n.key===`name`?(0,Q.jsx)(`span`,{className:`font-semibold text-krona-primary`,children:i}):(0,Q.jsx)(`span`,{children:i})},n.key)}),(0,Q.jsx)(`td`,{className:`p-3 text-right`,onClick:e=>e.stopPropagation(),children:(0,Q.jsxs)(`div`,{className:`flex items-center justify-end gap-1 opacity-70 group-hover:opacity-100`,children:[o&&(0,Q.jsx)(`button`,{type:`button`,onClick:()=>o(t),className:`p-1 hover:bg-krona-workspace rounded text-krona-secondary hover:text-krona-primary`,title:`Просмотреть карточку`,children:(0,Q.jsx)(S,{className:`w-3.5 h-3.5`})}),s&&(0,Q.jsx)(`button`,{type:`button`,onClick:()=>s(t),className:`p-1 hover:bg-krona-workspace rounded text-krona-secondary hover:text-krona-primary`,title:`Редактировать запись`,children:(0,Q.jsx)(D,{className:`w-3.5 h-3.5`})}),c&&(0,Q.jsx)(`button`,{type:`button`,onClick:()=>c(t),className:`p-1 hover:bg-krona-danger/10 rounded text-krona-danger`,title:`Удалить запись`,children:(0,Q.jsx)(K,{className:`w-3.5 h-3.5`})})]})})]},t.id)),k.length===0&&!i&&(0,Q.jsx)(`tr`,{children:(0,Q.jsxs)(`td`,{colSpan:w.length+1,className:`p-12 text-center text-krona-secondary`,children:[(0,Q.jsx)(te,{className:`w-8 h-8 text-krona-secondary mx-auto mb-2 opacity-50`}),(0,Q.jsx)(`p`,{className:`font-semibold text-krona-primary`,children:`Записей пока нет`}),(0,Q.jsxs)(`p`,{className:`text-xs text-krona-secondary mb-3`,children:[`Создайте первую запись в сущности «`,e.name,`»`]}),f&&(0,Q.jsxs)(r,{variant:`primary`,size:`sm`,onClick:f,children:[(0,Q.jsx)(j,{className:`w-3.5 h-3.5 mr-1`}),`Создать запись`]})]})})]})]})}),O>1&&(0,Q.jsxs)(`div`,{className:`flex items-center justify-between p-3 border-t border-krona-border text-xs text-krona-secondary`,children:[(0,Q.jsxs)(`span`,{children:[`Страница `,b,` из `,O]}),(0,Q.jsxs)(`div`,{className:`flex gap-1`,children:[(0,Q.jsx)(r,{variant:`outline`,size:`sm`,disabled:b<=1,onClick:()=>x(e=>Math.max(1,e-1)),children:`Назад`}),(0,Q.jsx)(r,{variant:`outline`,size:`sm`,disabled:b>=O,onClick:()=>x(e=>Math.min(O,e+1)),children:`Вперёд`})]})]})]})]})},re=({entity:t,record:n,layout:i,onEdit:o,onDelete:l,onClose:u})=>{let{showToast:d}=s(),[_,v]=(0,Z.useState)(`overview`),[b,S]=(0,Z.useState)([]),[w,E]=(0,Z.useState)(!1);(0,Z.useEffect)(()=>{async function e(){try{let e=await(await c()).transaction(`audit_log`,`readonly`).store.index(`by_entity_id`).getAll(n.id);e.sort((e,t)=>e.timestamp>t.timestamp?-1:1),S(e)}catch{}}e()},[n.id]);let A=()=>{navigator.clipboard.writeText(JSON.stringify(n,null,2)),E(!0),d({type:`success`,title:`JSON скопирован в буфер обмена`}),setTimeout(()=>E(!1),2e3)},j=String(n.name||n.title||n[t.primaryFieldKey||`name`]||n.id),P=e=>{let t=n[e.key],r=h(e.type);if(t==null||t===``)return(0,Q.jsx)(`span`,{className:`text-krona-secondary/60 font-normal`,children:`—`});if(r===`rating`){let e=Math.min(5,Math.max(1,Number(t)||5));return(0,Q.jsxs)(`div`,{className:`flex items-center gap-1`,children:[[1,2,3,4,5].map(t=>(0,Q.jsx)(k,{className:`w-3.5 h-3.5 ${t<=e?`fill-amber-400 text-amber-400`:`text-krona-secondary opacity-30`}`},t)),(0,Q.jsxs)(`span`,{className:`text-[11px] font-semibold text-krona-primary ml-1`,children:[e,`/5`]})]})}if(r===`color`){let e=String(t);return(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(`span`,{className:`w-4 h-4 rounded border border-krona-border/60 shrink-0`,style:{backgroundColor:e}}),(0,Q.jsx)(`span`,{className:`font-mono text-xs`,children:e})]})}if(r===`url`){let e=String(t);return(0,Q.jsxs)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,className:`text-krona-green hover:underline inline-flex items-center gap-1 break-all`,children:[e,(0,Q.jsx)(x,{className:`w-3 h-3 shrink-0`})]})}if(r===`email`){let e=String(t);return(0,Q.jsxs)(`a`,{href:`mailto:${e}`,className:`text-krona-green hover:underline inline-flex items-center gap-1`,children:[(0,Q.jsx)(T,{className:`w-3 h-3 shrink-0`}),e]})}if(r===`phone`){let e=String(t);return(0,Q.jsxs)(`a`,{href:`tel:${e.replace(/\D/g,``)}`,className:`text-krona-green hover:underline inline-flex items-center gap-1`,children:[(0,Q.jsx)(O,{className:`w-3 h-3 shrink-0`}),e]})}if(r===`multi_select`||r===`checkbox_group`)return Array.isArray(t)?t.length===0?(0,Q.jsx)(`span`,{className:`text-krona-secondary/60`,children:`—`}):(0,Q.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:t.map(t=>{let n=e.options?.find(e=>e.value===t);return(0,Q.jsx)(a,{variant:`neutral`,size:`sm`,children:n?.label||String(t)},String(t))})}):(0,Q.jsx)(`span`,{children:String(t)});if(r===`money`)return(0,Q.jsx)(`span`,{className:`font-semibold text-krona-primary`,children:J(typeof t==`number`?t:0)});if(r===`percentage`)return(0,Q.jsxs)(`span`,{className:`font-semibold text-krona-primary`,children:[String(t),`%`]});if(r===`boolean`)return(0,Q.jsx)(a,{variant:t?`green`:`neutral`,size:`sm`,children:t?`Да`:`Нет`});if(r===`date`||r===`datetime`)return(0,Q.jsx)(`span`,{children:r===`datetime`?R(String(t)):F(String(t))});if(r===`time`)return(0,Q.jsx)(`span`,{className:`font-mono`,children:String(t)});if(r===`status`){let n=e.options?.find(e=>e.value===t);return(0,Q.jsx)(a,{variant:`green`,size:`sm`,children:n?.label||String(t)})}if(r===`select`||r===`radio`){let n=e.options?.find(e=>e.value===t);return(0,Q.jsx)(`span`,{children:n?.label||String(t)})}if(r===`file`||r===`image`){if(typeof t==`object`&&t&&`name`in t){let e=t;return(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[r===`image`&&e.url?(0,Q.jsx)(`img`,{src:e.url,alt:e.name,className:`w-8 h-8 rounded object-cover border border-krona-border shrink-0`}):(0,Q.jsx)(C,{className:`w-4 h-4 text-krona-green shrink-0`}),(0,Q.jsxs)(`div`,{className:`truncate`,children:[(0,Q.jsx)(`span`,{className:`font-semibold text-krona-primary truncate block`,children:e.name}),(0,Q.jsxs)(`span`,{className:`text-[10px] text-krona-secondary font-mono`,children:[(e.size/1024).toFixed(1),` КБ`]})]})]})}return(0,Q.jsx)(`span`,{children:String(t)})}if(r===`address`){if(typeof t==`object`&&t){let e=t,n=[e.city,e.street,e.postalCode,e.country].filter(Boolean);return(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Q.jsx)(N,{className:`w-3.5 h-3.5 text-krona-green shrink-0`}),(0,Q.jsx)(`span`,{children:n.join(`, `)||`—`})]})}return(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Q.jsx)(N,{className:`w-3.5 h-3.5 text-krona-green shrink-0`}),(0,Q.jsx)(`span`,{children:String(t)})]})}if(r===`location`){if(typeof t==`object`&&t){let e=t;return(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5 font-mono text-xs`,children:[(0,Q.jsx)(p,{className:`w-3.5 h-3.5 text-krona-green shrink-0`}),(0,Q.jsxs)(`span`,{children:[e.lat.toFixed(4),`, `,e.lng.toFixed(4)]})]})}return(0,Q.jsx)(`span`,{children:String(t)})}if(r===`formula`){let r=e.formula?g(e.formula,n):t;return(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Q.jsx)(f,{className:`w-3.5 h-3.5 text-krona-green shrink-0`}),(0,Q.jsx)(`span`,{className:`font-mono font-bold text-krona-primary`,children:String(r===null?t:r)})]})}if(r===`json`){let e=typeof t==`object`?JSON.stringify(t):String(t);return(0,Q.jsx)(`pre`,{className:`p-1 bg-krona-workspace rounded text-[11px] font-mono text-krona-primary truncate max-w-xs`,children:e})}return r===`autonumber`?(0,Q.jsx)(`span`,{className:`font-mono font-bold text-krona-green`,children:String(t)}):(0,Q.jsx)(`span`,{children:String(t)})};return(0,Q.jsxs)(`div`,{className:`space-y-4 text-left`,children:[(0,Q.jsxs)(`div`,{className:`p-4 bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft flex flex-col sm:flex-row sm:items-center justify-between gap-3`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Q.jsx)(`div`,{className:`w-11 h-11 rounded-xl bg-krona-green/10 text-krona-green flex items-center justify-center font-bold text-base border border-krona-green/20`,children:j.slice(0,1).toUpperCase()}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(`h2`,{className:`text-base font-bold text-krona-primary`,children:j}),(0,Q.jsx)(a,{variant:`neutral`,size:`sm`,children:(0,Q.jsx)(`code`,{children:t.code})}),n.status!==void 0&&n.status!==null&&(0,Q.jsx)(a,{variant:`green`,size:`sm`,children:String(n.status)})]}),(0,Q.jsxs)(`p`,{className:`text-xs font-mono text-krona-secondary`,children:[`ID: `,n.id]})]})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[o&&(0,Q.jsxs)(r,{variant:`outline`,size:`sm`,onClick:o,children:[(0,Q.jsx)(D,{className:`w-3.5 h-3.5 mr-1`}),`Редактировать`]}),l&&(0,Q.jsxs)(r,{variant:`outline`,size:`sm`,onClick:l,className:`text-krona-danger hover:bg-krona-danger/10`,children:[(0,Q.jsx)(K,{className:`w-3.5 h-3.5 mr-1`}),`Удалить`]}),u&&(0,Q.jsx)(`button`,{onClick:u,className:`p-1.5 text-krona-secondary hover:text-krona-primary rounded-lg`,title:`Закрыть`,children:(0,Q.jsx)(e,{className:`w-4 h-4`})})]})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-1 border-b border-krona-border/80 pb-1`,children:[(0,Q.jsxs)(`button`,{onClick:()=>v(`overview`),className:`px-3 py-1.5 rounded-lg text-xs font-semibold cursor-pointer transition-all flex items-center gap-1.5 ${_===`overview`?`bg-krona-green text-white shadow-sm`:`text-krona-secondary hover:text-krona-primary`}`,children:[(0,Q.jsx)(M,{className:`w-3.5 h-3.5`}),`Обзор реквизитов`]}),(0,Q.jsxs)(`button`,{onClick:()=>v(`timeline`),className:`px-3 py-1.5 rounded-lg text-xs font-semibold cursor-pointer transition-all flex items-center gap-1.5 ${_===`timeline`?`bg-krona-green text-white shadow-sm`:`text-krona-secondary hover:text-krona-primary`}`,children:[(0,Q.jsx)(y,{className:`w-3.5 h-3.5`}),`Аудит и история (`,b.length,`)`]}),(0,Q.jsxs)(`button`,{onClick:()=>v(`json`),className:`px-3 py-1.5 rounded-lg text-xs font-semibold cursor-pointer transition-all flex items-center gap-1.5 ${_===`json`?`bg-krona-green text-white shadow-sm`:`text-krona-secondary hover:text-krona-primary`}`,children:[(0,Q.jsx)(m,{className:`w-3.5 h-3.5`}),`Сырой JSON`]})]}),_===`overview`&&(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`p-4 bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft space-y-3`,children:[(0,Q.jsx)(`h3`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider`,children:`Все атрибуты записи`}),(0,Q.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3 text-xs`,children:t.fields.map(e=>(0,Q.jsxs)(`div`,{className:`p-3 bg-krona-workspace/60 rounded-lg border border-krona-border/60 flex flex-col justify-between`,children:[(0,Q.jsx)(`span`,{className:`text-[11px] text-krona-secondary block mb-1`,children:e.label}),(0,Q.jsx)(`div`,{className:`font-semibold text-krona-primary break-words`,children:P(e)})]},e.key))})]}),(0,Q.jsxs)(`div`,{className:`p-3.5 bg-krona-surface border border-krona-border rounded-xl text-xs text-krona-secondary flex flex-wrap gap-4`,children:[(0,Q.jsxs)(`div`,{children:[`Создано:`,` `,(0,Q.jsx)(`strong`,{className:`text-krona-primary`,children:n.audit?.createdAt?R(String(n.audit.createdAt)):n.created_at?R(String(n.created_at)):`—`})]}),(0,Q.jsxs)(`div`,{children:[`Обновлено:`,` `,(0,Q.jsx)(`strong`,{className:`text-krona-primary`,children:R(String(n.updatedAt||new Date().toISOString()))})]}),(0,Q.jsxs)(`div`,{children:[`Версия:`,` `,(0,Q.jsxs)(`strong`,{className:`text-krona-primary`,children:[`v`,n.audit?.version||1]})]})]})]}),_===`timeline`&&(0,Q.jsxs)(`div`,{className:`p-4 bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft space-y-3`,children:[(0,Q.jsx)(`h3`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider`,children:`История изменений записи`}),(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[b.map(e=>(0,Q.jsxs)(`div`,{className:`p-3 bg-krona-workspace rounded-lg border border-krona-border/60 flex items-start justify-between gap-3 text-xs`,children:[(0,Q.jsxs)(`div`,{className:`flex items-start gap-2.5`,children:[(0,Q.jsx)(`div`,{className:`w-2 h-2 rounded-full bg-krona-green mt-1.5 shrink-0`}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`p`,{className:`font-semibold text-krona-primary`,children:e.summary}),(0,Q.jsxs)(`p`,{className:`text-[11px] text-krona-secondary`,children:[`Действие: `,(0,Q.jsx)(`code`,{className:`font-mono`,children:e.action}),` • Пользователь: `,e.userName||e.userId]})]})]}),(0,Q.jsx)(`span`,{className:`text-[11px] text-krona-secondary shrink-0 font-mono`,children:R(e.timestamp)})]},e.id)),b.length===0&&(0,Q.jsx)(`div`,{className:`py-8 text-center text-xs text-krona-secondary`,children:`Лента аудита пока пуста для этой записи.`})]})]}),_===`json`&&(0,Q.jsxs)(`div`,{className:`p-4 bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft space-y-2`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Q.jsx)(`span`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider`,children:`Исходный документ (IndexedDB JSON)`}),(0,Q.jsxs)(r,{variant:`outline`,size:`sm`,onClick:A,children:[w?(0,Q.jsx)(I,{className:`w-3 h-3 mr-1 text-krona-green`}):(0,Q.jsx)(ee,{className:`w-3 h-3 mr-1`}),w?`Скопировано`:`Копировать`]})]}),(0,Q.jsx)(`pre`,{className:`p-3 bg-krona-workspace border border-krona-border rounded-lg text-xs font-mono text-krona-primary overflow-x-auto max-h-96`,children:JSON.stringify(n,null,2)})]})]})},$=()=>{let{entityCode:e,recordId:t}=G(),n=B(),{currentEntity:i,views:o,layouts:c,loading:l}=P(e),{showToast:u}=s(),[d,f]=(0,Z.useState)([]),[p,m]=(0,Z.useState)(!0),[h,g]=(0,Z.useState)(``),[_,y]=(0,Z.useState)(!1),[x,S]=(0,Z.useState)(null),[C,T]=(0,Z.useState)(null),[D,O]=(0,Z.useState)(null),k=(0,Z.useMemo)(()=>e?new L(e):null,[e]),N=(0,Z.useCallback)(async()=>{if(k)try{m(!0);let e=await k.list({pageSize:100});f(e.items)}catch(e){u({type:`error`,title:`Ошибка загрузки записей`,message:e instanceof Error?e.message:String(e)})}finally{m(!1)}},[k,u]);(0,Z.useEffect)(()=>{Promise.resolve().then(()=>{N()})},[N]),(0,Z.useEffect)(()=>{Promise.resolve().then(()=>{if(o&&o.length>0&&!h){let e=o.find(e=>e.isDefault)||o[0];g(e.id)}})},[o,h]),(0,Z.useEffect)(()=>{t&&k&&k.getById(t).then(e=>{e&&T(e)})},[t,k]);let F=(0,Z.useMemo)(()=>o.find(e=>e.id===h)||null,[o,h]),I=(0,Z.useMemo)(()=>c.find(e=>e.type===`form`||e.isDefault)||null,[c]),R=(0,Z.useMemo)(()=>c.find(e=>e.type===`card`||e.cardBlocks)||null,[c]);return!i&&!l?(0,Q.jsxs)(`div`,{className:`p-8 text-center bg-krona-surface border border-krona-border rounded-xl`,children:[(0,Q.jsx)(M,{className:`w-10 h-10 text-krona-secondary mx-auto mb-2 opacity-40`}),(0,Q.jsxs)(`h2`,{className:`text-base font-bold text-krona-primary mb-1`,children:[`Сущность «`,e,`» не найдена`]}),(0,Q.jsx)(`p`,{className:`text-xs text-krona-secondary mb-4`,children:`Возможно, она была удалена или переименована в каталоге сущностей.`}),(0,Q.jsx)(r,{variant:`primary`,size:`sm`,onClick:()=>n(`/settings/entities`),children:`Перейти в каталог сущностей`})]}):(0,Q.jsxs)(`div`,{className:`space-y-4 animate-fade-in text-left`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 p-4 bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Q.jsx)(`div`,{className:`w-10 h-10 rounded-xl bg-krona-workspace flex items-center justify-center text-krona-green border border-krona-border/60`,children:(0,Q.jsx)(M,{className:`w-5 h-5`})}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(`h1`,{className:`text-base font-bold text-krona-primary`,children:i?.pluralName||i?.name||e}),i?.isSystem?(0,Q.jsxs)(a,{variant:`neutral`,size:`sm`,children:[(0,Q.jsx)(w,{className:`w-2.5 h-2.5 mr-1`}),`System`]}):(0,Q.jsxs)(a,{variant:`gold`,size:`sm`,children:[(0,Q.jsx)(U,{className:`w-2.5 h-2.5 mr-1`}),`Custom`]})]}),(0,Q.jsx)(`p`,{className:`text-xs text-krona-secondary`,children:i?.description||`Управление записями сущности ${e}`})]})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center bg-krona-workspace rounded-lg p-0.5 border border-krona-border/80 text-xs`,children:[(0,Q.jsx)(`button`,{onClick:()=>n(`/settings/entities/${e}/fields`),className:`px-2 py-1 text-krona-secondary hover:text-krona-primary rounded`,title:`Настройка полей`,children:(0,Q.jsx)(V,{className:`w-3.5 h-3.5`})}),(0,Q.jsx)(`button`,{onClick:()=>n(`/settings/entities/${e}/forms`),className:`px-2 py-1 text-krona-secondary hover:text-krona-primary rounded`,title:`Настройка форм`,children:(0,Q.jsx)(E,{className:`w-3.5 h-3.5`})}),(0,Q.jsx)(`button`,{onClick:()=>n(`/settings/entities/${e}/card`),className:`px-2 py-1 text-krona-secondary hover:text-krona-primary rounded`,title:`Настройка карточки`,children:(0,Q.jsx)(b,{className:`w-3.5 h-3.5`})}),(0,Q.jsx)(`button`,{onClick:()=>n(`/settings/entities/${e}/views`),className:`px-2 py-1 text-krona-secondary hover:text-krona-primary rounded`,title:`Настройка представлений`,children:(0,Q.jsx)(A,{className:`w-3.5 h-3.5`})})]}),(0,Q.jsxs)(r,{variant:`primary`,size:`sm`,"data-testid":`create-record-btn`,onClick:()=>y(!0),children:[(0,Q.jsx)(j,{className:`w-3.5 h-3.5 mr-1`}),`Создать `,i?.name||`запись`]})]})]}),o.length>0&&(0,Q.jsx)(`div`,{className:`flex items-center gap-1.5 overflow-x-auto pb-1`,children:o.map(e=>(0,Q.jsx)(`button`,{onClick:()=>g(e.id),className:`px-3 py-1.5 rounded-lg text-xs font-semibold cursor-pointer transition-all ${h===e.id?`bg-krona-green text-white shadow-sm`:`bg-krona-surface text-krona-secondary hover:text-krona-primary border border-krona-border/60`}`,children:e.name},e.id))}),i&&(0,Q.jsx)(ne,{entity:i,records:d,view:F,isLoading:p,onRowClick:e=>T(e),onEdit:e=>S(e),onDelete:e=>O(e),onCreateNew:()=>y(!0)}),i&&(0,Q.jsx)(W,{isOpen:_,onClose:()=>y(!1),title:`Создать ${i.name}`,subtitle:`Заполните реквизиты сущности «${i.name}»`,maxWidth:`lg`,children:(0,Q.jsx)(v,{entity:i,layout:I,mode:`create`,onSave:async e=>{if(!k||!i)return;let t={...e};if(i.autonumberingEnabled&&!t.number){let e=new Date().getFullYear(),n=d.length+1,r=`DOC-${e}-${String(n).padStart(4,`0`)}`;t={...t,number:r}}await k.create(t),u({type:`success`,title:`Запись успешно создана`}),y(!1),await N()},onCancel:()=>y(!1)})}),i&&x&&(0,Q.jsx)(W,{isOpen:!!x,onClose:()=>S(null),title:`Редактирование: ${x.name||x.id}`,subtitle:`Сущность «${i.name}»`,maxWidth:`lg`,children:(0,Q.jsx)(v,{entity:i,record:x,layout:I,mode:`edit`,onSave:async e=>{if(k&&x){if(await k.update(x.id,e),u({type:`success`,title:`Запись обновлена`}),S(null),C?.id===x.id){let e=await k.getById(x.id);T(e)}await N()}},onCancel:()=>S(null)})}),i&&C&&(0,Q.jsx)(H,{isOpen:!!C,onClose:()=>T(null),title:String(C.name||C.id),subtitle:`Карточка записи: ${i.name}`,width:`xl`,children:(0,Q.jsx)(re,{entity:i,record:C,layout:R,onEdit:()=>{S(C),T(null)},onDelete:()=>{O(C)},onClose:()=>T(null)})}),(0,Q.jsx)(W,{isOpen:!!D,onClose:()=>O(null),title:`Подтверждение удаления`,subtitle:`Вы действительно хотите удалить запись «${D?.name||D?.id}»?`,maxWidth:`sm`,children:(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsx)(`p`,{className:`text-xs text-krona-secondary`,children:`Это действие нельзя будет отменить. Запись будет удалена из базы данных, а в журнал аудита будет внесена соответствующая запись.`}),(0,Q.jsxs)(`div`,{className:`flex justify-end gap-2 pt-2 border-t border-krona-border`,children:[(0,Q.jsx)(r,{variant:`outline`,size:`sm`,onClick:()=>O(null),children:`Отмена`}),(0,Q.jsx)(r,{variant:`danger`,size:`sm`,onClick:async()=>{if(k&&D)try{await k.delete(D.id),u({type:`success`,title:`Запись удалена`}),O(null),C?.id===D.id&&T(null),await N()}catch(e){u({type:`error`,title:`Ошибка удаления`,message:e instanceof Error?e.message:String(e)})}},children:`Удалить запись`})]})]})})]})};export{$ as CustomEntityPage,$ as default}; \ No newline at end of file diff --git a/dist/assets/DynamicDashboard-CYIM1xJh.js b/dist/assets/DynamicDashboard-CYIM1xJh.js deleted file mode 100644 index fd44571..0000000 --- a/dist/assets/DynamicDashboard-CYIM1xJh.js +++ /dev/null @@ -1 +0,0 @@ -import{f as e,h as t,i as n,r,s as i}from"./useToast-CS8pZhce.js";import{t as a}from"./clock-BelL0bvZ.js";import{t as o}from"./dollar-sign-Bf6JneNn.js";import{t as s}from"./package-Dg7SbpiM.js";import{t as c}from"./truck-D5o8mTsH.js";import{t as l}from"./utensils-BhILG_B7.js";import{A as u,D as d,I as f,Z as p,c as m,et as h,g,i as _,j as v,o as y,s as b,t as x,z as S}from"./index-CyHCRa3Z.js";import{t as C}from"./formatters-WvGQLZg0.js";import{O as w,d as T,f as E,ft as D,l as O,t as k,u as A}from"./AreaChart-pR0H-che.js";var j=t(e(),1),M=i(),N=[{time:`10:00`,revenue:14200,orders:4},{time:`12:00`,revenue:38400,orders:12},{time:`14:00`,revenue:76e3,orders:24},{time:`16:00`,revenue:104500,orders:32},{time:`18:00`,revenue:149e3,orders:45},{time:`20:00`,revenue:184500,orders:58}],P=[{time:`Пн`,revenue:142e3,orders:48},{time:`Вт`,revenue:156e3,orders:52},{time:`Ср`,revenue:168e3,orders:56},{time:`Чт`,revenue:174e3,orders:59},{time:`Пт`,revenue:245e3,orders:84},{time:`Сб`,revenue:29e4,orders:98},{time:`Вс`,revenue:26e4,orders:89}],F=()=>{let{getActiveProfile:e,getActiveCapabilities:t,activeLocation:i,setIsQuickActionsOpen:F,kdsTickets:I,deliveries:L,workOrders:R}=p(),z=e(),B=t(),V=h(),[H,U]=(0,j.useState)(`today`);return(0,M.jsxs)(`div`,{className:`space-y-5 animate-fade-in`,children:[(0,M.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft`,children:[(0,M.jsxs)(`div`,{children:[(0,M.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,M.jsxs)(`h1`,{className:`text-lg font-bold text-krona-primary tracking-tight`,children:[`Операционный центр • `,z.companyName]}),(0,M.jsx)(r,{variant:`gold`,size:`sm`,children:z.category}),(0,M.jsx)(x,{level:`pilot1`,size:`sm`})]}),(0,M.jsxs)(`p`,{className:`text-xs text-krona-secondary mt-1`,children:[`Локация: `,(0,M.jsx)(`span`,{className:`font-semibold text-krona-primary`,children:i}),` • Контур реального времени синхронизирован`]})]}),(0,M.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,M.jsx)(n,{variant:`outline`,size:`sm`,onClick:()=>V(`/operations`),children:`Открыть рабочий стол`}),(0,M.jsx)(n,{variant:`primary`,size:`sm`,onClick:()=>F(!0),children:`+ Быстрое действие`})]})]}),(()=>{switch(z.id){case`car_wash`:return(0,M.jsxs)(`div`,{className:`grid grid-cols-2 lg:grid-cols-4 gap-3.5`,children:[(0,M.jsx)(_,{title:`Машин в работе`,value:`${R.filter(e=>e.status===`in_progress`).length||4} авто`,change:{value:`+2`,trend:`up`},subtitle:`2 бокса на въезде`,icon:(0,M.jsx)(f,{className:`w-4 h-4 text-krona-info`})}),(0,M.jsx)(_,{title:`Загрузка боксов`,value:`83%`,change:{value:`+5%`,trend:`up`},subtitle:`5 из 6 боксов заняты`,icon:(0,M.jsx)(d,{className:`w-4 h-4 text-krona-gold`})}),(0,M.jsx)(_,{title:`Средний чек мойки`,value:C(1850),change:{value:`+12%`,trend:`up`},subtitle:`Комплекс + воск`,icon:(0,M.jsx)(m,{className:`w-4 h-4 text-krona-green`})}),(0,M.jsx)(_,{title:`Время на пост`,value:`28 минут`,change:{value:`-3 мин`,trend:`up`},subtitle:`Норматив: 30 мин`,icon:(0,M.jsx)(a,{className:`w-4 h-4 text-krona-green`})})]});case`auto_service`:return(0,M.jsxs)(`div`,{className:`grid grid-cols-2 lg:grid-cols-4 gap-3.5`,children:[(0,M.jsx)(_,{title:`Авто на постах`,value:`${R.length} авто`,change:{value:`+3`,trend:`up`},subtitle:`В работе: 3 • Ожидают: 1`,icon:(0,M.jsx)(f,{className:`w-4 h-4 text-krona-info`})}),(0,M.jsx)(_,{title:`Подъемники`,value:`4 из 4 заняты`,change:{value:`100%`,trend:`up`},subtitle:`Очередь: 2 авто`,icon:(0,M.jsx)(d,{className:`w-4 h-4 text-krona-gold`})}),(0,M.jsx)(_,{title:`Нормо-часы`,value:`42.5 н-ч`,change:{value:`+6.5`,trend:`up`},subtitle:`Ставка: 2 100 ₽/н-ч`,icon:(0,M.jsx)(a,{className:`w-4 h-4 text-krona-green`})}),(0,M.jsx)(_,{title:`Запчасти в нарядах`,value:C(186400),change:{value:`+18%`,trend:`up`},subtitle:`На складе: 94% позиций`,icon:(0,M.jsx)(o,{className:`w-4 h-4 text-krona-green`})})]});case`restaurant_delivery_only`:return(0,M.jsxs)(`div`,{className:`grid grid-cols-2 lg:grid-cols-4 gap-3.5`,children:[(0,M.jsx)(_,{title:`Выручка доставки`,value:C(142800),change:{value:`+22%`,trend:`up`},subtitle:`План: 130 000 ₽`,icon:(0,M.jsx)(o,{className:`w-4 h-4 text-krona-green`})}),(0,M.jsx)(_,{title:`Курьеров на линии`,value:`${L.filter(e=>e.status===`in_transit`).length+3} курьера`,change:{value:`+2`,trend:`up`},subtitle:`3 на авто, 2 самокат`,icon:(0,M.jsx)(c,{className:`w-4 h-4 text-krona-gold`})}),(0,M.jsx)(_,{title:`Среднее время доставки`,value:`34 мин`,change:{value:`-4 мин`,trend:`up`},subtitle:`Готовка 14 мин + путь 20 мин`,icon:(0,M.jsx)(a,{className:`w-4 h-4 text-krona-green`})}),(0,M.jsx)(_,{title:`Онлайн-чеков`,value:`${L.length+38} заказов`,change:{value:`+14`,trend:`up`},subtitle:`Сайт: 60% • Бот: 40%`,icon:(0,M.jsx)(g,{className:`w-4 h-4 text-krona-info`})})]});case`fitness`:return(0,M.jsxs)(`div`,{className:`grid grid-cols-2 lg:grid-cols-4 gap-3.5`,children:[(0,M.jsx)(_,{title:`Активных абонементов`,value:`840 карт`,change:{value:`+32`,trend:`up`},subtitle:`Продлений в мес: 78%`,icon:(0,M.jsx)(y,{className:`w-4 h-4 text-krona-green`})}),(0,M.jsx)(_,{title:`Загрузка залов`,value:`72%`,change:{value:`+8%`,trend:`up`},subtitle:`Пик: 18:00 - 21:00`,icon:(0,M.jsx)(d,{className:`w-4 h-4 text-krona-gold`})}),(0,M.jsx)(_,{title:`Тренировок сегодня`,value:`18 занятий`,subtitle:`Персональных: 12`,icon:(0,M.jsx)(a,{className:`w-4 h-4 text-krona-info`})}),(0,M.jsx)(_,{title:`Выручка сегодня`,value:C(92e3),change:{value:`+15%`,trend:`up`},subtitle:`Карты + спортбар`,icon:(0,M.jsx)(o,{className:`w-4 h-4 text-krona-green`})})]});case`clinic`:return(0,M.jsxs)(`div`,{className:`grid grid-cols-2 lg:grid-cols-4 gap-3.5`,children:[(0,M.jsx)(_,{title:`Приёмов сегодня`,value:`36 пациентов`,change:{value:`+4`,trend:`up`},subtitle:`Подтверждено: 34`,icon:(0,M.jsx)(y,{className:`w-4 h-4 text-krona-green`})}),(0,M.jsx)(_,{title:`Занятость кабинетов`,value:`90%`,change:{value:`+6%`,trend:`up`},subtitle:`9 из 10 кабинетов`,icon:(0,M.jsx)(d,{className:`w-4 h-4 text-krona-gold`})}),(0,M.jsx)(_,{title:`Средний чек приема`,value:C(3400),change:{value:`+300 ₽`,trend:`up`},subtitle:`Первичный + анализы`,icon:(0,M.jsx)(m,{className:`w-4 h-4 text-krona-gold`})}),(0,M.jsx)(_,{title:`Выручка сегодня`,value:C(122400),change:{value:`+11%`,trend:`up`},subtitle:`Оплата картами: 82%`,icon:(0,M.jsx)(o,{className:`w-4 h-4 text-krona-green`})})]});case`coworking`:return(0,M.jsxs)(`div`,{className:`grid grid-cols-2 lg:grid-cols-4 gap-3.5`,children:[(0,M.jsx)(_,{title:`Занятость рабочих мест`,value:`88% (44 из 50)`,change:{value:`+6%`,trend:`up`},subtitle:`Свободно 6 мест`,icon:(0,M.jsx)(d,{className:`w-4 h-4 text-krona-gold`})}),(0,M.jsx)(_,{title:`Брони переговорных`,value:`9 броней`,change:{value:`+2`,trend:`up`},subtitle:`Зал А, Б и Скайп-румы`,icon:(0,M.jsx)(a,{className:`w-4 h-4 text-krona-info`})}),(0,M.jsx)(_,{title:`Активных резидентов`,value:`64 чел`,subtitle:`Командных офисов: 6`,icon:(0,M.jsx)(y,{className:`w-4 h-4 text-krona-green`})}),(0,M.jsx)(_,{title:`Выручка сегодня`,value:C(45e3),change:{value:`+8%`,trend:`up`},subtitle:`Дневные пропуски + кофе`,icon:(0,M.jsx)(o,{className:`w-4 h-4 text-krona-green`})})]});case`logistics`:return(0,M.jsxs)(`div`,{className:`grid grid-cols-2 lg:grid-cols-4 gap-3.5`,children:[(0,M.jsx)(_,{title:`Заказов в пути`,value:`18 отправлений`,change:{value:`+5`,trend:`up`},subtitle:`В доставке прямо сейчас`,icon:(0,M.jsx)(c,{className:`w-4 h-4 text-krona-info`})}),(0,M.jsx)(_,{title:`Доставлено вовремя %`,value:`97.8%`,change:{value:`+0.5%`,trend:`up`},subtitle:`SLA: 95%`,icon:(0,M.jsx)(u,{className:`w-4 h-4 text-krona-green`})}),(0,M.jsx)(_,{title:`Курьеров на маршрутах`,value:`8 курьеров`,subtitle:`Авто: 5, Мото: 3`,icon:(0,M.jsx)(y,{className:`w-4 h-4 text-krona-gold`})}),(0,M.jsx)(_,{title:`Среднее время рейса`,value:`26 минут`,change:{value:`-2 мин`,trend:`up`},subtitle:`Городской экспресс`,icon:(0,M.jsx)(a,{className:`w-4 h-4 text-krona-green`})})]});case`retail`:return(0,M.jsxs)(`div`,{className:`grid grid-cols-2 lg:grid-cols-4 gap-3.5`,children:[(0,M.jsx)(_,{title:`Выручка магазина`,value:C(248e3),change:{value:`+19%`,trend:`up`},subtitle:`Чеков сегодня: 142`,icon:(0,M.jsx)(g,{className:`w-4 h-4 text-krona-green`})}),(0,M.jsx)(_,{title:`Средний чек`,value:C(1746),change:{value:`+4%`,trend:`up`},subtitle:`Товаров в чеке: 3.2`,icon:(0,M.jsx)(m,{className:`w-4 h-4 text-krona-gold`})}),(0,M.jsx)(_,{title:`Товарных позиций на складе`,value:`1 420 SKU`,subtitle:`Критический остаток: 4 SKU`,icon:(0,M.jsx)(s,{className:`w-4 h-4 text-krona-info`})}),(0,M.jsx)(_,{title:`Оборачиваемость склада`,value:`14.2 дня`,change:{value:`-1.5 дн`,trend:`up`},subtitle:`Маржинальность: 42.4%`,icon:(0,M.jsx)(o,{className:`w-4 h-4 text-krona-green`})})]});case`beauty_services`:return(0,M.jsxs)(`div`,{className:`grid grid-cols-2 lg:grid-cols-4 gap-3.5`,children:[(0,M.jsx)(_,{title:`Выручка салона`,value:C(124e3),change:{value:`+12%`,trend:`up`},subtitle:`18 визитов сегодня`,icon:(0,M.jsx)(o,{className:`w-4 h-4 text-krona-green`})}),(0,M.jsx)(_,{title:`Загрузка мастеров`,value:`86%`,change:{value:`+5%`,trend:`up`},subtitle:`5 мастеров на смене`,icon:(0,M.jsx)(y,{className:`w-4 h-4 text-krona-gold`})}),(0,M.jsx)(_,{title:`Записей на сегодня`,value:`22 клиента`,subtitle:`Подтверждено: 19`,icon:(0,M.jsx)(a,{className:`w-4 h-4 text-krona-info`})}),(0,M.jsx)(_,{title:`Средний чек визита`,value:C(4850),change:{value:`+350 ₽`,trend:`up`},subtitle:`Услуги + уход дома`,icon:(0,M.jsx)(m,{className:`w-4 h-4 text-krona-green`})})]});case`wholesale_b2b`:return(0,M.jsxs)(`div`,{className:`grid grid-cols-2 lg:grid-cols-4 gap-3.5`,children:[(0,M.jsx)(_,{title:`Объем отгрузок сегодня`,value:C(145e4),change:{value:`+24%`,trend:`up`},subtitle:`9 партий сформировано`,icon:(0,M.jsx)(o,{className:`w-4 h-4 text-krona-green`})}),(0,M.jsx)(_,{title:`Активные B2B контракты`,value:`42 контрагента`,subtitle:`В согласовании: 3`,icon:(0,M.jsx)(y,{className:`w-4 h-4 text-krona-info`})}),(0,M.jsx)(_,{title:`Дебиторская задолженность`,value:C(84e4),change:{value:`-8%`,trend:`up`},subtitle:`Просрочено: 95 000 ₽`,icon:(0,M.jsx)(m,{className:`w-4 h-4 text-krona-gold`})}),(0,M.jsx)(_,{title:`Загрузка распредцентра`,value:`84%`,subtitle:`Свободно 320 паллетомест`,icon:(0,M.jsx)(s,{className:`w-4 h-4 text-krona-green`})})]});default:return(0,M.jsxs)(`div`,{className:`grid grid-cols-2 lg:grid-cols-5 gap-3.5`,children:[(0,M.jsx)(_,{title:`Выручка сегодня`,value:C(184500),change:{value:`+14%`,trend:`up`},subtitle:`План: 170 000 ₽ (108%)`,icon:(0,M.jsx)(o,{className:`w-4 h-4 text-krona-green`})}),(0,M.jsx)(_,{title:`Заказы`,value:`58 чеков`,change:{value:`+8`,trend:`up`},subtitle:`Зал: 34 • Доставка: 24`,icon:(0,M.jsx)(l,{className:`w-4 h-4 text-krona-gold`})}),(0,M.jsx)(_,{title:`Средний чек`,value:C(3180),change:{value:`+6.2%`,trend:`up`},subtitle:`Зал: 3 650 ₽ • Онлайн: 2 450 ₽`,icon:(0,M.jsx)(m,{className:`w-4 h-4 text-krona-green`})}),(0,M.jsx)(_,{title:`Загрузка зала`,value:`82%`,change:{value:`+12%`,trend:`up`},subtitle:`11 из 14 столов заняты`,icon:(0,M.jsx)(y,{className:`w-4 h-4 text-krona-info`})}),(0,M.jsx)(_,{title:`Food Cost / Маржа`,value:`29.4%`,change:{value:`-0.8%`,trend:`up`},subtitle:`Маржинальность: 70.6%`,icon:(0,M.jsx)(s,{className:`w-4 h-4 text-krona-green`})})]})}})(),(0,M.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft`,children:[(0,M.jsxs)(`div`,{className:`flex items-center justify-between mb-4`,children:[(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`h3`,{className:`text-sm font-semibold text-krona-primary`,children:`Динамика выручки и среднего чека`}),(0,M.jsx)(`p`,{className:`text-xs text-krona-secondary`,children:`Почасовая разбивка с кассовых узлов и онлайн-заказов`})]}),(0,M.jsxs)(`div`,{className:`flex items-center gap-1 bg-krona-workspace p-1 rounded-lg border border-krona-border text-xs`,children:[(0,M.jsx)(`button`,{onClick:()=>U(`today`),className:`px-3 py-1 rounded font-medium transition-colors ${H===`today`?`bg-[#2F684C] text-white`:`text-krona-secondary hover:text-krona-primary`}`,children:`Сегодня`}),(0,M.jsx)(`button`,{onClick:()=>U(`week`),className:`px-3 py-1 rounded font-medium transition-colors ${H===`week`?`bg-[#2F684C] text-white`:`text-krona-secondary hover:text-krona-primary`}`,children:`Неделя`})]})]}),(0,M.jsx)(`div`,{className:`h-64 w-full`,children:(0,M.jsx)(D,{width:`100%`,height:`100%`,children:(0,M.jsxs)(k,{data:H===`today`?N:P,children:[(0,M.jsx)(`defs`,{children:(0,M.jsxs)(`linearGradient`,{id:`colorRev`,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,M.jsx)(`stop`,{offset:`5%`,stopColor:`#2F684C`,stopOpacity:.4}),(0,M.jsx)(`stop`,{offset:`95%`,stopColor:`#2F684C`,stopOpacity:0})]})}),(0,M.jsx)(E,{strokeDasharray:`3 3`,stroke:`#D8D5CB`,opacity:.4}),(0,M.jsx)(A,{dataKey:`time`,stroke:`#686C65`,fontSize:11}),(0,M.jsx)(O,{stroke:`#686C65`,fontSize:11,tickFormatter:e=>`${e/1e3}k`}),(0,M.jsx)(w,{formatter:e=>[C(Number(e)),`Выручка`],contentStyle:{backgroundColor:`#F8F6F0`,borderColor:`#D8D5CB`,borderRadius:8,fontSize:12}}),(0,M.jsx)(T,{type:`monotone`,dataKey:`revenue`,stroke:`#2F684C`,strokeWidth:2.5,fillOpacity:1,fill:`url(#colorRev)`})]})})})]}),(0,M.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft`,children:[(0,M.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,M.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,M.jsx)(b,{className:`w-4 h-4 text-krona-warning`}),(0,M.jsx)(`h3`,{className:`text-sm font-semibold text-krona-primary`,children:`Требует внимания управляющего`})]}),(0,M.jsx)(`span`,{className:`text-xs text-krona-secondary`,children:`3 критических инцидента`})]}),(0,M.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-3 gap-3`,children:[(0,M.jsxs)(`div`,{className:`p-3 rounded-lg border border-krona-danger/40 bg-krona-danger/10 flex flex-col justify-between`,children:[(0,M.jsxs)(`div`,{children:[(0,M.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs font-semibold text-krona-danger`,children:[(0,M.jsx)(v,{className:`w-4 h-4`}),(0,M.jsx)(`span`,{children:`Критический остаток`})]}),(0,M.jsxs)(`p`,{className:`text-xs text-krona-primary mt-1.5 leading-relaxed`,children:[`Лосось охлажденный: осталось `,(0,M.jsx)(`strong`,{children:`2.4 кг`}),` (порог 6 кг). Хватит на ~2.5 часа работы кухни.`]})]}),(0,M.jsxs)(n,{variant:`outline`,size:`sm`,className:`mt-3 bg-krona-surface text-xs justify-between`,onClick:()=>V(`/operations/inventory`),children:[(0,M.jsx)(`span`,{children:`Заявка поставщику`}),(0,M.jsx)(S,{className:`w-3.5 h-3.5`})]})]}),(0,M.jsxs)(`div`,{className:`p-3 rounded-lg border border-krona-warning/40 bg-krona-warning/10 flex flex-col justify-between`,children:[(0,M.jsxs)(`div`,{children:[(0,M.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs font-semibold text-krona-warning`,children:[(0,M.jsx)(a,{className:`w-4 h-4`}),(0,M.jsx)(`span`,{children:`Задержка на кухне (KDS)`})]}),(0,M.jsxs)(`p`,{className:`text-xs text-krona-primary mt-1.5 leading-relaxed`,children:[`Заказ #104 на `,(0,M.jsx)(`strong`,{children:`Стол 4`}),` находится в работе уже 18 минут при норме 12 минут.`]})]}),(0,M.jsxs)(n,{variant:`outline`,size:`sm`,className:`mt-3 bg-krona-surface text-xs justify-between`,onClick:()=>V(`/operations/kds`),children:[(0,M.jsx)(`span`,{children:`Открыть KDS кухни`}),(0,M.jsx)(S,{className:`w-3.5 h-3.5`})]})]}),(0,M.jsxs)(`div`,{className:`p-3 rounded-lg border border-krona-info/40 bg-krona-info/10 flex flex-col justify-between`,children:[(0,M.jsxs)(`div`,{children:[(0,M.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs font-semibold text-krona-info`,children:[(0,M.jsx)(c,{className:`w-4 h-4`}),(0,M.jsx)(`span`,{children:`Наличные у курьера`})]}),(0,M.jsxs)(`p`,{className:`text-xs text-krona-primary mt-1.5 leading-relaxed`,children:[`Курьер Алексей Смирнов держит `,(0,M.jsx)(`strong`,{children:`24 500 ₽`}),` наличными после 7 доставок.`]})]}),(0,M.jsxs)(n,{variant:`outline`,size:`sm`,className:`mt-3 bg-krona-surface text-xs justify-between`,onClick:()=>V(`/operations/delivery`),children:[(0,M.jsx)(`span`,{children:`Принять инкассацию`}),(0,M.jsx)(S,{className:`w-3.5 h-3.5`})]})]})]})]}),(0,M.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-3.5`,children:[B.dining&&(0,M.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-lg p-3.5 shadow-krona-soft`,children:[(0,M.jsxs)(`div`,{className:`flex items-center justify-between text-xs mb-2`,children:[(0,M.jsx)(`span`,{className:`font-semibold text-krona-primary`,children:`Зал и столы`}),(0,M.jsx)(r,{variant:`green`,size:`sm`,children:`82% занято`})]}),(0,M.jsxs)(`div`,{className:`text-xs text-krona-secondary space-y-1`,children:[(0,M.jsxs)(`div`,{className:`flex justify-between`,children:[(0,M.jsx)(`span`,{children:`Открытых чеков:`}),(0,M.jsx)(`span`,{className:`font-medium text-krona-primary`,children:`11 столов`})]}),(0,M.jsxs)(`div`,{className:`flex justify-between`,children:[(0,M.jsx)(`span`,{children:`Среднее время посадки:`}),(0,M.jsx)(`span`,{className:`font-medium text-krona-primary`,children:`48 минут`})]})]}),(0,M.jsx)(`button`,{onClick:()=>V(`/operations/dining`),className:`mt-2.5 text-xs text-krona-green font-medium hover:underline block`,children:`Схема зала →`})]}),B.kds&&(0,M.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-lg p-3.5 shadow-krona-soft`,children:[(0,M.jsxs)(`div`,{className:`flex items-center justify-between text-xs mb-2`,children:[(0,M.jsx)(`span`,{className:`font-semibold text-krona-primary`,children:`Кухня (KDS)`}),(0,M.jsxs)(r,{variant:`gold`,size:`sm`,children:[I.length,` в работе`]})]}),(0,M.jsxs)(`div`,{className:`text-xs text-krona-secondary space-y-1`,children:[(0,M.jsxs)(`div`,{className:`flex justify-between`,children:[(0,M.jsx)(`span`,{children:`Суши-цех:`}),(0,M.jsx)(`span`,{className:`font-medium text-krona-primary`,children:`4 блюда`})]}),(0,M.jsxs)(`div`,{className:`flex justify-between`,children:[(0,M.jsx)(`span`,{children:`Горячий цех:`}),(0,M.jsx)(`span`,{className:`font-medium text-krona-primary`,children:`2 блюда`})]})]}),(0,M.jsx)(`button`,{onClick:()=>V(`/operations/kds`),className:`mt-2.5 text-xs text-krona-green font-medium hover:underline block`,children:`Кухонный экран →`})]}),B.delivery&&(0,M.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-lg p-3.5 shadow-krona-soft`,children:[(0,M.jsxs)(`div`,{className:`flex items-center justify-between text-xs mb-2`,children:[(0,M.jsx)(`span`,{className:`font-semibold text-krona-primary`,children:`Доставка & Курьеры`}),(0,M.jsx)(r,{variant:`info`,size:`sm`,children:`3 в пути`})]}),(0,M.jsxs)(`div`,{className:`text-xs text-krona-secondary space-y-1`,children:[(0,M.jsxs)(`div`,{className:`flex justify-between`,children:[(0,M.jsx)(`span`,{children:`Среднее время доставки:`}),(0,M.jsx)(`span`,{className:`font-medium text-krona-primary`,children:`34 мин`})]}),(0,M.jsxs)(`div`,{className:`flex justify-between`,children:[(0,M.jsx)(`span`,{children:`Курьеров на линии:`}),(0,M.jsx)(`span`,{className:`font-medium text-krona-primary`,children:`4 сотрудника`})]})]}),(0,M.jsx)(`button`,{onClick:()=>V(`/operations/delivery`),className:`mt-2.5 text-xs text-krona-green font-medium hover:underline block`,children:`Управление доставкой →`})]}),(0,M.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-lg p-3.5 shadow-krona-soft`,children:[(0,M.jsxs)(`div`,{className:`flex items-center justify-between text-xs mb-2`,children:[(0,M.jsx)(`span`,{className:`font-semibold text-krona-primary`,children:`Финансы & Кассы`}),(0,M.jsx)(r,{variant:`green`,size:`sm`,children:`Смены открыты`})]}),(0,M.jsxs)(`div`,{className:`text-xs text-krona-secondary space-y-1`,children:[(0,M.jsxs)(`div`,{className:`flex justify-between`,children:[(0,M.jsx)(`span`,{children:`Наличные в кассе:`}),(0,M.jsx)(`span`,{className:`font-medium text-krona-primary`,children:`42 800 ₽`})]}),(0,M.jsxs)(`div`,{className:`flex justify-between`,children:[(0,M.jsx)(`span`,{children:`Безнал / Эквайринг:`}),(0,M.jsx)(`span`,{className:`font-medium text-krona-primary`,children:`141 700 ₽`})]})]}),(0,M.jsx)(`button`,{onClick:()=>V(`/finance`),className:`mt-2.5 text-xs text-krona-green font-medium hover:underline block`,children:`ДДС & Сальдо →`})]})]})]})};export{F as DynamicDashboard}; \ No newline at end of file diff --git a/dist/assets/DynamicFormRenderer-CeAKrqsO.js b/dist/assets/DynamicFormRenderer-CeAKrqsO.js deleted file mode 100644 index 0749cd1..0000000 --- a/dist/assets/DynamicFormRenderer-CeAKrqsO.js +++ /dev/null @@ -1,3 +0,0 @@ -import{c as e,f as t,h as n,i as r,l as i,r as a,s as o,t as s,u as c}from"./useToast-CS8pZhce.js";import{i as l,n as u,r as d,t as f}from"./types-DMl_5q2N.js";import{t as p}from"./external-link-NR-y-GuE.js";import{t as m}from"./file-text-DR21jZDS.js";import{t as h}from"./list-XDoRqfJ2.js";import{t as g}from"./star-B6hvSjuv.js";import{t as _}from"./upload-CY2IsfiN.js";import{E as v,J as y,Y as b,j as x}from"./index-CyHCRa3Z.js";import{n as S,t as C}from"./currency-DdDs82F5.js";var w={name:`bold`,size:24,node:[[`path`,{d:`M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8`,key:`mg9rjx`}]]};w.node;var T=i(w),E={name:`italic`,size:24,node:[[`line`,{x1:`19`,x2:`10`,y1:`4`,y2:`4`,key:`15jd3p`}],[`line`,{x1:`14`,x2:`5`,y1:`20`,y2:`20`,key:`bu0au3`}],[`line`,{x1:`15`,x2:`9`,y1:`4`,y2:`20`,key:`uljnxc`}]]};E.node;var D=i(E),O={name:`quote`,size:24,node:[[`path`,{d:`M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z`,key:`rib7q0`}],[`path`,{d:`M5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z`,key:`1ymkrd`}]]};O.node;var k=i(O),A=n(t(),1),j=new Set([`eval`,`function`,`constructor`,`prototype`,`window`,`document`,`global`,`globalthis`,`process`,`require`,`import`,`this`,`class`,`var`,`let`,`const`,`return`,`while`,`for`,`if`]),M=new Set([`round`,`floor`,`ceil`,`abs`,`min`,`max`,`sqrt`]);function N(e){let t=[],n=0;for(;nn.maxLength)return{valid:!1,error:`Максимальная длина: ${n.maxLength} симв.`};if(n?.pattern)try{if(!new RegExp(n.pattern).test(t))return{valid:!1,error:n.customMessage||`Значение не соответствует формату`}}catch{}}switch(i){case`integer`:{if(typeof t==`number`){if(!Number.isInteger(t))return{valid:!1,error:`Должно быть целым числом`}}else if(typeof t==`string`){if(!/^-?\d+$/.test(t.trim()))return{valid:!1,error:`Должно быть целым числом`}}else return{valid:!1,error:`Неверный числовой формат`};let e=Number(t);return n?.min!==void 0&&en.max?{valid:!1,error:`Максимум ${n.max}`}:{valid:!0}}case`decimal`:case`percentage`:case`money`:{let e=Number(typeof t==`object`&&t&&`minor`in t?t.minor:t);return isNaN(e)?{valid:!1,error:`Должно быть корректным числом`}:i===`percentage`&&(e<0||e>100)?{valid:!1,error:`Процент должен быть в диапазоне 0–100%`}:n?.min!==void 0&&en.max?{valid:!1,error:`Максимум ${n.max}`}:{valid:!0}}case`rating`:{let e=Number(t);return!Number.isInteger(e)||e<1||e>5?{valid:!1,error:`Рейтинг должен быть целым числом от 1 до 5`}:{valid:!0}}case`email`:{let e=String(t).trim();return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)?{valid:!0}:{valid:!1,error:`Введите корректный адрес электронной почты (например name@company.ru)`}}case`url`:{let e=String(t).trim();try{let t=new URL(e);if(![`http:`,`https:`].includes(t.protocol))return{valid:!1,error:`URL должен начинаться с http:// или https://`}}catch{return{valid:!1,error:`Некорректный веб-адрес URL`}}return{valid:!0}}case`phone`:{let e=String(t).trim().replace(/\D/g,``);return e.length<6||e.length>16?{valid:!1,error:`Номер телефона должен содержать от 6 до 16 цифр`}:{valid:!0}}case`color`:{let e=String(t).trim();return/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(e)?{valid:!0}:{valid:!1,error:`Цвет должен быть в формате HEX (#RGB или #RRGGBB)`}}case`time`:{let e=String(t).trim();return/^\d{2}:\d{2}(:\d{2})?$/.test(e)?{valid:!0}:{valid:!1,error:`Время должно быть в формате ЧЧ:ММ`}}case`json`:if(typeof t==`object`&&t)return{valid:!0};try{return JSON.parse(String(t)),{valid:!0}}catch{return{valid:!1,error:`Синтаксическая ошибка в структуре JSON`}}case`multi_select`:case`checkbox_group`:return Array.isArray(t)?{valid:!0}:{valid:!1,error:`Значение должно быть массивом вариантов`};case`location`:if(typeof t==`object`&&t){let e=t;if(typeof e.lat==`number`&&typeof e.lng==`number`)return e.lat<-90||e.lat>90?{valid:!1,error:`Широта (lat) должна быть от -90 до +90`}:e.lng<-180||e.lng>180?{valid:!1,error:`Долгота (lng) должна быть от -180 до +180`}:{valid:!0}}if(typeof t==`string`){let e=t.split(`,`).map(e=>parseFloat(e.trim()));if(e.length===2&&!isNaN(e[0])&&!isNaN(e[1]))return e[0]<-90||e[0]>90?{valid:!1,error:`Широта должна быть от -90 до +90`}:e[1]<-180||e[1]>180?{valid:!1,error:`Долгота должна быть от -180 до +180`}:{valid:!0}}return{valid:!1,error:`Укажите координаты в формате: широта, долгота`};default:return{valid:!0}}}function R(e,t){let n=f(e);if(t==null)return null;switch(n){case`integer`:return typeof t==`number`?Math.round(t):parseInt(String(t),10)||0;case`decimal`:case`percentage`:case`money`:return typeof t==`number`?t:parseFloat(String(t))||0;case`boolean`:return!!t;case`multi_select`:case`checkbox_group`:return Array.isArray(t)?t.map(String):[];case`json`:if(typeof t==`string`)try{return JSON.parse(t)}catch{return t}return t;case`address`:return typeof t==`object`&&t?t:{street:String(t),city:``,postalCode:``,country:``};case`location`:if(typeof t==`object`&&t)return t;if(typeof t==`string`){let e=t.split(`,`).map(e=>parseFloat(e.trim()));if(e.length===2&&!isNaN(e[0])&&!isNaN(e[1]))return{lat:e[0],lng:e[1]}}return{lat:0,lng:0};default:return t}}function z(e,t,n){if(t==null||t===``)return`—`;switch(f(e)){case`money`:{let e=typeof t==`object`&&t&&`minor`in t?t.minor:Number(t);return C(isNaN(e)?0:e)}case`percentage`:{let e=Number(t);return`${isNaN(e)?0:e}%`}case`boolean`:return t?`Да`:`Нет`;case`date`:return y(String(t));case`datetime`:return b(String(t));case`time`:return String(t);case`rating`:{let e=Math.min(5,Math.max(0,Number(t)||0));return`★`.repeat(e)+`☆`.repeat(5-e)}case`multi_select`:case`checkbox_group`:if(Array.isArray(t)){if(n?.options){let e=new Map(n.options.map(e=>[e.value,e.label]));return t.map(t=>e.get(String(t))||String(t)).join(`, `)}return t.join(`, `)}return String(t);case`select`:case`radio`:case`status`:if(n?.options){let e=n.options.find(e=>e.value===t);if(e)return e.label}return String(t);case`color`:return String(t);case`address`:if(typeof t==`object`&&t){let e=t;return[e.street,e.city,e.postalCode,e.country].filter(Boolean).join(`, `)||`—`}return String(t);case`location`:if(typeof t==`object`&&t){let e=t;return`${e.lat.toFixed(4)}, ${e.lng.toFixed(4)}`}return String(t);case`file`:case`image`:return typeof t==`object`&&t&&`name`in t?String(t.name):`Файл`;case`json`:return typeof t==`object`?JSON.stringify(t):String(t);default:return String(t)}}var B=o(),V={user:[{value:`usr_01`,label:`Иван Иванов (Администратор)`},{value:`usr_02`,label:`Анна Смирнова (Менеджер)`},{value:`usr_03`,label:`Михаил Соколов (Аналитик)`},{value:`usr_04`,label:`Елена Кузнецова (Оператор)`}],employee:[{value:`emp_01`,label:`Дмитрий Кузнецов (Ведущий инженер)`},{value:`emp_02`,label:`Ольга Морозова (Менеджер проекта)`},{value:`emp_03`,label:`Сергей Попов (Разработчик)`}],team:[{value:`team_01`,label:`Отдел продаж и работы с клиентами`},{value:`team_02`,label:`Департамент разработки ПО`},{value:`team_03`,label:`Служба логистики и снабжения`},{value:`team_04`,label:`Финансово-экономический отдел`}],company:[{value:`comp_01`,label:`ООО «Северная Звезда»`},{value:`comp_02`,label:`АО «ПромИнвестХолдинг»`},{value:`comp_03`,label:`ПАО «ТехноСфера»`},{value:`comp_04`,label:`ИП Сидоров А.В.`}],contact:[{value:`cont_01`,label:`Алексей Петров (+7 900 111-22-33)`},{value:`cont_02`,label:`Екатерина Васильева (e.vas@prom.ru)`},{value:`cont_03`,label:`Николай Федоров (+7 911 444-55-66)`}],product:[{value:`prod_01`,label:`Лицензия Krona Enterprise (Годовая)`},{value:`prod_02`,label:`Модуль расширенной бизнес-аналитики`},{value:`prod_03`,label:`Консалтинг по интеграции ERP/CRM`},{value:`prod_04`,label:`Пакет технической поддержки 24/7`}],entity_relation:[{value:`rel_01`,label:`Связанный документ #01`},{value:`rel_02`,label:`Связанный договор #02`},{value:`rel_03`,label:`Связанный контрагент #03`}]},H=[`#2F684C`,`#2563EB`,`#D97706`,`#DC2626`,`#7C3AED`,`#4B5563`,`#059669`,`#0891B2`],U=({entity:t,record:n,layout:i,mode:o=`create`,onSave:y,onCancel:b,isLoading:w=!1})=>{let{showToast:E}=s(),O=(0,A.useCallback)((e,t)=>{let n={};return e.fields.forEach(e=>{t&&t[e.key]!==void 0?n[e.key]=t[e.key]:n[e.key]=I(e.type,e)}),n},[]),[j,M]=(0,A.useState)(()=>O(t,n)),[N,P]=(0,A.useState)({}),z=(0,A.useRef)(n?.id);(0,A.useEffect)(()=>{n?.id!==z.current&&(z.current=n?.id,Promise.resolve().then(()=>{M(O(t,n)),P({})}))},[t,n,O]);let U=(0,A.useMemo)(()=>{let e=new Map;return t.fields.forEach(t=>e.set(t.key,t)),e},[t]),W=(0,A.useMemo)(()=>i?.sections&&i.sections.length>0?i.sections:[{id:`sec_default`,title:`Основные данные`,columns:2,fieldKeys:t.fields.map(e=>e.key)}],[i,t]),G=(0,A.useCallback)(e=>{if(e.hidden)return!1;if(!e.conditionalVisibility||!e.conditionalVisibility.fieldKey)return!0;let{fieldKey:t,operator:n,value:r}=e.conditionalVisibility,i=j[t];switch(n){case`eq`:return String(i??``)===String(r??``);case`neq`:return String(i??``)!==String(r??``);case`contains`:return String(i??``).includes(String(r??``));default:return!0}},[j]),K=(e,t)=>{M(n=>({...n,[e]:t})),N[e]&&P(t=>{let n={...t};return delete n[e],n})},q=()=>{let e={};return t.fields.forEach(t=>{if(!G(t))return;let n=j[t.key],r=L(t.type,n,t.validation,t);r.valid||(r.error===`Обязательное поле для заполнения`?e[t.key]=`Поле «${t.label}» обязательно для заполнения`:e[t.key]=r.error||`Поле «${t.label}» заполнено неверно`)}),P(e),Object.keys(e).length===0},J=async e=>{if(e.preventDefault(),o!==`readonly`){if(!q()){E({type:`error`,title:`Проверьте правильность заполнения формы`});return}try{let e={};t.fields.forEach(t=>{j[t.key]!==void 0&&(e[t.key]=R(t.type,j[t.key]))}),Object.keys(j).forEach(t=>{e[t]===void 0&&(e[t]=j[t])}),await y(e)}catch(e){E({type:`error`,title:`Ошибка сохранения записи`,message:e instanceof Error?e.message:String(e)})}}},Y=t=>{let n=j[t.key],r=o===`readonly`||t.readOnly,i=!!N[t.key],s=f(t.type);if(s===`money`){let e=typeof n==`number`?n:0,a=(e/100).toString();return r?(0,B.jsx)(`div`,{className:`font-semibold text-xs text-krona-primary p-2 bg-krona-workspace rounded border border-krona-border/60`,children:C(e)}):(0,B.jsxs)(`div`,{className:`relative`,children:[(0,B.jsx)(`input`,{type:`number`,step:`0.01`,value:a===`0`&&n===``?``:a,onChange:e=>{let n=S(e.target.value);K(t.key,n)},placeholder:t.placeholder||`0.00`,disabled:r,className:`w-full bg-krona-surface text-krona-primary border rounded-md px-3 py-2 text-xs focus:outline-none focus:border-krona-green pr-8 ${i?`border-krona-danger`:`border-krona-border`}`}),(0,B.jsx)(`span`,{className:`absolute right-3 top-2.5 text-xs text-krona-secondary font-medium`,children:`₽`})]})}if(s===`select`||s===`status`){if(r){let e=t.options?.find(e=>e.value===n);return(0,B.jsx)(`div`,{className:`text-xs font-medium text-krona-primary p-2 bg-krona-workspace rounded border border-krona-border/60`,children:e?.label||String(n||`—`)})}return(0,B.jsxs)(`select`,{value:String(n??``),onChange:e=>K(t.key,e.target.value),disabled:r,className:`w-full bg-krona-surface text-krona-primary border rounded-md px-3 py-2 text-xs focus:outline-none focus:border-krona-green ${i?`border-krona-danger`:`border-krona-border`}`,children:[(0,B.jsx)(`option`,{value:``,children:`Выберите значение...`}),t.options?.map(e=>(0,B.jsx)(`option`,{value:e.value,children:e.label},e.value))]})}if(s===`radio`){let e=t.options||[{value:`option_1`,label:`Вариант 1`},{value:`option_2`,label:`Вариант 2`}];if(r){let t=e.find(e=>e.value===n);return(0,B.jsx)(`div`,{className:`text-xs font-medium text-krona-primary p-2 bg-krona-workspace rounded border border-krona-border/60`,children:t?.label||String(n||`—`)})}return(0,B.jsx)(`div`,{className:`space-y-1.5 pt-1`,children:e.map(e=>(0,B.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer text-xs text-krona-primary`,children:[(0,B.jsx)(`input`,{type:`radio`,name:`radio_${t.key}`,value:e.value,checked:n===e.value,onChange:()=>K(t.key,e.value),disabled:r,className:`text-krona-green focus:ring-krona-green`}),(0,B.jsx)(`span`,{children:e.label})]},e.value))})}if(s===`multi_select`){let o=Array.isArray(n)?n:[],s=t.options||[];if(r)return(0,B.jsx)(`div`,{className:`flex flex-wrap gap-1.5 p-2 bg-krona-workspace rounded border border-krona-border/60`,children:o.length>0?o.map(e=>{let t=s.find(t=>t.value===e)?.label||e;return(0,B.jsx)(a,{variant:`neutral`,size:`sm`,children:t},e)}):(0,B.jsx)(`span`,{className:`text-xs text-krona-secondary`,children:`Ничего не выбрано`})});let c=s.filter(e=>!o.includes(e.value));return(0,B.jsxs)(`div`,{className:`space-y-2`,children:[o.length>0&&(0,B.jsx)(`div`,{className:`flex flex-wrap gap-1.5 p-2 bg-krona-workspace/60 rounded border border-krona-border/60`,children:o.map(n=>{let r=s.find(e=>e.value===n)?.label||n;return(0,B.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium bg-krona-green/10 text-krona-green border border-krona-green/20`,children:[r,(0,B.jsx)(`button`,{type:`button`,onClick:()=>K(t.key,o.filter(e=>e!==n)),className:`hover:text-krona-danger ml-0.5`,children:(0,B.jsx)(e,{className:`w-3 h-3`})})]},n)})}),(0,B.jsxs)(`select`,{value:``,onChange:e=>{e.target.value&&K(t.key,[...o,e.target.value])},disabled:r,className:`w-full bg-krona-surface text-krona-primary border rounded-md px-3 py-2 text-xs focus:outline-none focus:border-krona-green ${i?`border-krona-danger`:`border-krona-border`}`,children:[(0,B.jsx)(`option`,{value:``,children:`+ Добавить вариант...`}),c.map(e=>(0,B.jsx)(`option`,{value:e.value,children:e.label},e.value))]})]})}if(s===`checkbox_group`){let e=Array.isArray(n)?n:[],i=t.options||[{value:`opt_1`,label:`Вариант А`},{value:`opt_2`,label:`Вариант Б`},{value:`opt_3`,label:`Вариант В`}];return(0,B.jsx)(`div`,{className:`space-y-1.5 pt-1`,children:i.map(n=>{let i=e.includes(n.value);return(0,B.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer text-xs text-krona-primary`,children:[(0,B.jsx)(`input`,{type:`checkbox`,checked:i,disabled:r,onChange:r=>{r.target.checked?K(t.key,[...e,n.value]):K(t.key,e.filter(e=>e!==n.value))},className:`rounded text-krona-green focus:ring-krona-green`}),(0,B.jsx)(`span`,{children:n.label})]},n.value)})})}if(s===`rating`){let e=Math.min(5,Math.max(1,Number(n)||5));return(0,B.jsxs)(`div`,{className:`flex items-center gap-1.5 py-1`,children:[[1,2,3,4,5].map(n=>(0,B.jsx)(`button`,{type:`button`,disabled:r,onClick:()=>K(t.key,n),"aria-label":`Оценка ${n} из 5 звёзд`,className:`p-1 rounded transition-transform ${r?`cursor-default`:`hover:scale-125 cursor-pointer`}`,children:(0,B.jsx)(g,{className:`w-5 h-5 ${n<=e?`fill-amber-400 text-amber-400`:`text-krona-secondary opacity-30`}`})},n)),(0,B.jsxs)(`span`,{className:`text-xs font-semibold text-krona-primary ml-2`,children:[e,` / 5`]})]})}if(s===`boolean`)return(0,B.jsxs)(`label`,{className:`flex items-center gap-2.5 cursor-pointer text-xs font-medium text-krona-primary py-1`,children:[(0,B.jsx)(`input`,{type:`checkbox`,checked:!!n,onChange:e=>K(t.key,e.target.checked),disabled:r,className:`w-4 h-4 rounded text-krona-green focus:ring-krona-green`}),(0,B.jsx)(`span`,{children:n?`Да (активно)`:`Нет`})]});if(s===`date`||s===`datetime`||s===`time`)return(0,B.jsx)(`input`,{type:s===`datetime`?`datetime-local`:s===`time`?`time`:`date`,value:String(n??``),onChange:e=>K(t.key,e.target.value),disabled:r,className:`w-full bg-krona-surface text-krona-primary border rounded-md px-3 py-2 text-xs focus:outline-none focus:border-krona-green ${i?`border-krona-danger`:`border-krona-border`}`});if(s===`url`)return(0,B.jsxs)(`div`,{className:`relative flex items-center`,children:[(0,B.jsx)(`input`,{type:`url`,value:String(n??``),onChange:e=>K(t.key,e.target.value),disabled:r,placeholder:t.placeholder||`https://example.com`,className:`w-full bg-krona-surface text-krona-primary border rounded-md px-3 py-2 text-xs focus:outline-none focus:border-krona-green pr-8 ${i?`border-krona-danger`:`border-krona-border`}`}),n?(0,B.jsx)(`a`,{href:String(n),target:`_blank`,rel:`noopener noreferrer`,className:`absolute right-2.5 text-krona-secondary hover:text-krona-green`,title:`Открыть ссылку`,children:(0,B.jsx)(p,{className:`w-3.5 h-3.5`})}):null]});if(s===`color`){let e=String(n||`#2F684C`),a=/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(e)?e:`#2F684C`;return r?(0,B.jsxs)(`div`,{className:`flex items-center gap-2 p-1.5 bg-krona-workspace rounded border border-krona-border/60`,children:[(0,B.jsx)(`div`,{className:`w-5 h-5 rounded border border-krona-border/60`,style:{backgroundColor:a}}),(0,B.jsx)(`span`,{className:`font-mono text-xs text-krona-primary`,children:e})]}):(0,B.jsx)(`div`,{className:`space-y-2`,children:(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(`input`,{type:`color`,value:a.length===7?a:`#2F684C`,onChange:e=>K(t.key,e.target.value),disabled:r,className:`w-8 h-8 rounded cursor-pointer border border-krona-border bg-transparent p-0.5`}),(0,B.jsx)(`input`,{type:`text`,value:e,onChange:e=>K(t.key,e.target.value),disabled:r,placeholder:`#2F684C`,maxLength:7,className:`w-28 font-mono text-xs uppercase bg-krona-surface text-krona-primary border rounded-md px-2.5 py-1.5 focus:outline-none focus:border-krona-green ${i?`border-krona-danger`:`border-krona-border`}`}),(0,B.jsx)(`div`,{className:`flex items-center gap-1.5 ml-2`,children:H.map(e=>(0,B.jsx)(`button`,{type:`button`,onClick:()=>K(t.key,e),style:{backgroundColor:e},className:`w-5 h-5 rounded-full border border-krona-border/60 hover:scale-110 transition-transform`,title:e},e))})]})})}if(s===`file`||s===`image`){let i=n&&typeof n==`object`?n:null;return i?(0,B.jsxs)(`div`,{className:`p-3 bg-krona-workspace/60 rounded-lg border border-krona-border/60 flex items-center justify-between gap-3`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2.5 min-w-0`,children:[s===`image`&&i.url?(0,B.jsx)(`img`,{src:i.url,alt:i.name,className:`w-10 h-10 rounded object-cover border border-krona-border shrink-0`}):(0,B.jsx)(m,{className:`w-6 h-6 text-krona-green shrink-0`}),(0,B.jsxs)(`div`,{className:`truncate`,children:[(0,B.jsx)(`p`,{className:`text-xs font-semibold text-krona-primary truncate`,children:i.name}),(0,B.jsxs)(`p`,{className:`text-[11px] text-krona-secondary font-mono`,children:[(i.size/1024).toFixed(1),` КБ • `,i.mimeType]})]})]}),!r&&(0,B.jsx)(`button`,{type:`button`,onClick:()=>K(t.key,null),className:`p-1 text-krona-secondary hover:text-krona-danger rounded transition-colors`,title:`Удалить файл`,children:(0,B.jsx)(e,{className:`w-4 h-4`})})]}):r?(0,B.jsx)(`div`,{className:`text-xs text-krona-secondary p-2 bg-krona-workspace rounded`,children:`Файл не прикреплен`}):(0,B.jsxs)(`label`,{className:`flex flex-col items-center justify-center p-4 border-2 border-dashed border-krona-border rounded-lg cursor-pointer hover:bg-krona-workspace/40 transition-colors`,children:[(0,B.jsx)(_,{className:`w-5 h-5 text-krona-secondary mb-1.5`}),(0,B.jsx)(`span`,{className:`text-xs font-medium text-krona-primary`,children:s===`image`?`Нажмите для загрузки изображения`:`Нажмите для загрузки документа`}),(0,B.jsx)(`span`,{className:`text-[10px] text-krona-secondary mt-0.5`,children:`PNG, JPG, PDF, DOCX до 10 МБ`}),(0,B.jsx)(`input`,{type:`file`,accept:s===`image`?`image/*`:void 0,onChange:e=>{let n=e.target.files?.[0];if(!n)return;let r=new FileReader;r.onload=e=>{let r={id:c(),name:n.name,size:n.size,mimeType:n.type||`application/octet-stream`,url:String(e.target?.result||``),uploadedAt:new Date().toISOString()};K(t.key,r)},r.readAsDataURL(n)},className:`hidden`})]})}if(s===`address`){let e=typeof n==`object`&&n?n:{street:String(n||``),city:``,postalCode:``,country:`Россия`};if(r){let t=[e.city,e.street,e.postalCode,e.country].filter(Boolean);return(0,B.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs text-krona-primary p-2 bg-krona-workspace rounded border border-krona-border/60`,children:[(0,B.jsx)(v,{className:`w-3.5 h-3.5 text-krona-green shrink-0`}),(0,B.jsx)(`span`,{children:t.join(`, `)||`—`})]})}return(0,B.jsxs)(`div`,{className:`space-y-2 p-2.5 bg-krona-workspace/40 rounded-lg border border-krona-border/60`,children:[(0,B.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,B.jsx)(`input`,{type:`text`,placeholder:`Город (напр. Москва)`,value:e.city||``,onChange:n=>K(t.key,{...e,city:n.target.value}),className:`bg-krona-surface text-krona-primary border border-krona-border rounded px-2 py-1 text-xs focus:outline-none focus:border-krona-green`}),(0,B.jsx)(`input`,{type:`text`,placeholder:`Индекс (напр. 101000)`,value:e.postalCode||``,onChange:n=>K(t.key,{...e,postalCode:n.target.value}),className:`bg-krona-surface text-krona-primary border border-krona-border rounded px-2 py-1 text-xs focus:outline-none focus:border-krona-green`})]}),(0,B.jsx)(`input`,{type:`text`,placeholder:`Улица, дом, офис (напр. Тверская ул., д. 12, оф. 405)`,value:e.street||``,onChange:n=>K(t.key,{...e,street:n.target.value}),className:`w-full bg-krona-surface text-krona-primary border border-krona-border rounded px-2 py-1 text-xs focus:outline-none focus:border-krona-green`})]})}if(s===`location`){let e=typeof n==`object`&&n?n:{lat:0,lng:0};return r?(0,B.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs text-krona-primary p-2 bg-krona-workspace rounded border border-krona-border/60`,children:[(0,B.jsx)(u,{className:`w-3.5 h-3.5 text-krona-green shrink-0`}),(0,B.jsxs)(`span`,{children:[`Широта: `,e.lat.toFixed(4),`, Долгота: `,e.lng.toFixed(4)]})]}):(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,B.jsxs)(`div`,{className:`relative flex-1`,children:[(0,B.jsx)(`input`,{type:`number`,step:`0.0001`,min:`-90`,max:`90`,placeholder:`Широта (Lat)`,value:e.lat||``,onChange:n=>K(t.key,{...e,lat:parseFloat(n.target.value)||0}),className:`w-full bg-krona-surface text-krona-primary border border-krona-border rounded-md px-2.5 py-1.5 text-xs focus:outline-none focus:border-krona-green`}),(0,B.jsx)(`span`,{className:`absolute right-2 top-2 text-[10px] text-krona-secondary font-mono`,children:`LAT`})]}),(0,B.jsxs)(`div`,{className:`relative flex-1`,children:[(0,B.jsx)(`input`,{type:`number`,step:`0.0001`,min:`-180`,max:`180`,placeholder:`Долгота (Lng)`,value:e.lng||``,onChange:n=>K(t.key,{...e,lng:parseFloat(n.target.value)||0}),className:`w-full bg-krona-surface text-krona-primary border border-krona-border rounded-md px-2.5 py-1.5 text-xs focus:outline-none focus:border-krona-green`}),(0,B.jsx)(`span`,{className:`absolute right-2 top-2 text-[10px] text-krona-secondary font-mono`,children:`LNG`})]})]})}if(s===`user`||s===`employee`||s===`team`||s===`company`||s===`contact`||s===`product`||s===`entity_relation`){let e=t.options&&t.options.length>0?t.options:V[s]||[];if(r){let t=e.find(e=>e.value===n);return(0,B.jsx)(`div`,{className:`text-xs font-medium text-krona-primary p-2 bg-krona-workspace rounded border border-krona-border/60`,children:t?.label||String(n||`—`)})}return(0,B.jsxs)(`select`,{value:String(n??``),onChange:e=>K(t.key,e.target.value),disabled:r,className:`w-full bg-krona-surface text-krona-primary border rounded-md px-3 py-2 text-xs focus:outline-none focus:border-krona-green ${i?`border-krona-danger`:`border-krona-border`}`,children:[(0,B.jsx)(`option`,{value:``,children:`Выберите запись...`}),e.map(e=>(0,B.jsx)(`option`,{value:e.value,children:e.label},e.value))]})}if(s===`formula`){let e=F(t.formula||``,j);return(0,B.jsxs)(`div`,{className:`p-2.5 bg-krona-workspace/80 border border-krona-border rounded-md flex items-center justify-between`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(l,{className:`w-4 h-4 text-krona-green shrink-0`}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`text-xs font-bold text-krona-primary font-mono`,children:e===null?`—`:e.toLocaleString(`ru-RU`)}),(0,B.jsxs)(`div`,{className:`text-[10px] text-krona-secondary font-mono`,children:[`f(x) = `,t.formula||`не задана`]})]})]}),(0,B.jsx)(a,{variant:`neutral`,size:`sm`,children:`Вычисляемое поле`})]})}if(s===`autonumber`)return(0,B.jsx)(`div`,{className:`p-2 bg-krona-workspace rounded border border-krona-border/60 font-mono text-xs font-semibold text-krona-primary`,children:String(n||`AUTO-[Генерируется]`)});if(s===`json`){let e=typeof n==`object`?JSON.stringify(n,null,2):String(n??`{}`),i=!0;try{JSON.parse(e)}catch{i=!1}return(0,B.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsxs)(`span`,{className:`text-[10px] font-mono text-krona-secondary flex items-center gap-1`,children:[(0,B.jsx)(d,{className:`w-3 h-3`}),` JSON редактор`]}),(0,B.jsx)(`span`,{className:`text-[10px] font-medium px-2 py-0.5 rounded ${i?`bg-krona-green/10 text-krona-green`:`bg-krona-danger/10 text-krona-danger`}`,children:i?`JSON валиден`:`Ошибка синтаксиса JSON`})]}),(0,B.jsx)(`textarea`,{rows:4,value:e,onChange:e=>K(t.key,e.target.value),disabled:r,className:`w-full font-mono text-xs bg-krona-surface text-krona-primary border rounded-md p-2.5 focus:outline-none focus:border-krona-green ${i?`border-krona-border`:`border-krona-danger`}`})]})}if(s===`rich_text`){let e=String(n??``),a=(n,r=n)=>{K(t.key,`${e} ${n}текст${r}`)};return(0,B.jsxs)(`div`,{className:`space-y-1.5`,children:[!r&&(0,B.jsxs)(`div`,{className:`flex items-center gap-1 border border-krona-border/60 rounded p-1 bg-krona-workspace/60 w-fit`,children:[(0,B.jsx)(`button`,{type:`button`,onClick:()=>a(`**`,`**`),className:`p-1 hover:bg-krona-surface rounded text-krona-secondary hover:text-krona-primary`,title:`Жирный`,children:(0,B.jsx)(T,{className:`w-3 h-3`})}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>a(`*`,`*`),className:`p-1 hover:bg-krona-surface rounded text-krona-secondary hover:text-krona-primary`,title:`Курсив`,children:(0,B.jsx)(D,{className:`w-3 h-3`})}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>a(` -- `),className:`p-1 hover:bg-krona-surface rounded text-krona-secondary hover:text-krona-primary`,title:`Список`,children:(0,B.jsx)(h,{className:`w-3 h-3`})}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>a(` -> `),className:`p-1 hover:bg-krona-surface rounded text-krona-secondary hover:text-krona-primary`,title:`Цитата`,children:(0,B.jsx)(k,{className:`w-3 h-3`})})]}),(0,B.jsx)(`textarea`,{rows:3,value:e,onChange:e=>K(t.key,e.target.value),disabled:r,placeholder:t.placeholder||`Введите форматированный текст...`,className:`w-full bg-krona-surface text-krona-primary border rounded-md px-3 py-2 text-xs focus:outline-none focus:border-krona-green ${i?`border-krona-danger`:`border-krona-border`}`})]})}return s===`long_text`?(0,B.jsx)(`textarea`,{rows:3,value:String(n??``),onChange:e=>K(t.key,e.target.value),disabled:r,placeholder:t.placeholder||`Введите текст...`,className:`w-full bg-krona-surface text-krona-primary border rounded-md px-3 py-2 text-xs focus:outline-none focus:border-krona-green ${i?`border-krona-danger`:`border-krona-border`}`}):s===`integer`||s===`decimal`||s===`percentage`?(0,B.jsxs)(`div`,{className:`relative`,children:[(0,B.jsx)(`input`,{type:`number`,step:s===`integer`?`1`:`0.01`,value:n==null?``:String(n),onChange:e=>K(t.key,e.target.value===``?``:Number(e.target.value)),disabled:r,placeholder:t.placeholder||`0`,className:`w-full bg-krona-surface text-krona-primary border rounded-md px-3 py-2 text-xs focus:outline-none focus:border-krona-green ${s===`percentage`?`pr-8`:``} ${i?`border-krona-danger`:`border-krona-border`}`}),s===`percentage`&&(0,B.jsx)(`span`,{className:`absolute right-3 top-2.5 text-xs text-krona-secondary font-medium`,children:`%`})]}):(0,B.jsx)(`input`,{type:s===`email`?`email`:s===`phone`?`tel`:`text`,value:String(n??``),onChange:e=>K(t.key,e.target.value),disabled:r,placeholder:t.placeholder||``,className:`w-full bg-krona-surface text-krona-primary border rounded-md px-3 py-2 text-xs focus:outline-none focus:border-krona-green ${i?`border-krona-danger`:`border-krona-border`}`})};return(0,B.jsxs)(`form`,{onSubmit:J,className:`space-y-5`,children:[W.map(e=>{let t=e.fieldKeys.map(e=>U.get(e)).filter(e=>!!(e&&G(e)));if(t.length===0)return null;let n={1:`grid-cols-1`,2:`grid-cols-1 sm:grid-cols-2`,3:`grid-cols-1 sm:grid-cols-3`,4:`grid-cols-1 sm:grid-cols-4`}[e.columns||2];return(0,B.jsxs)(`div`,{className:`p-4 bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft space-y-3`,children:[e.title&&(0,B.jsx)(`h3`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider pb-2 border-b border-krona-border/60`,children:e.title}),(0,B.jsx)(`div`,{className:`grid ${n} gap-3`,children:t.map(e=>(0,B.jsxs)(`div`,{className:`space-y-1 text-left`,children:[(0,B.jsx)(`div`,{className:`flex items-center justify-between`,children:(0,B.jsxs)(`label`,{className:`text-xs font-semibold text-krona-primary select-none flex items-center gap-1`,children:[e.label,e.required&&(0,B.jsx)(`span`,{className:`text-krona-danger font-bold`,title:`Обязательное поле`,children:`*`})]})}),Y(e),N[e.key]?(0,B.jsxs)(`p`,{className:`text-[11px] text-krona-danger flex items-center gap-1 mt-0.5`,children:[(0,B.jsx)(x,{className:`w-3 h-3 shrink-0`}),N[e.key]]}):e.description?(0,B.jsx)(`p`,{className:`text-[10px] text-krona-secondary mt-0.5`,children:e.description}):null]},e.key))})]},e.id)}),o!==`readonly`&&(0,B.jsxs)(`div`,{className:`flex items-center justify-end gap-2.5 pt-3 border-t border-krona-border`,children:[b&&(0,B.jsx)(r,{variant:`outline`,size:`md`,type:`button`,onClick:b,children:`Отмена`}),(0,B.jsx)(r,{variant:`primary`,size:`md`,type:`submit`,"data-testid":`dynamic-form-submit`,disabled:w,children:w?`Сохранение...`:o===`create`?`Создать запись`:`Сохранить изменения`})]})]})};export{F as n,z as r,U as t}; \ No newline at end of file diff --git a/dist/assets/EmployeesModule-CM1X6qxa.js b/dist/assets/EmployeesModule-CM1X6qxa.js deleted file mode 100644 index eac1725..0000000 --- a/dist/assets/EmployeesModule-CM1X6qxa.js +++ /dev/null @@ -1 +0,0 @@ -import{f as e,h as t,i as n,r,s as i,t as a}from"./useToast-CS8pZhce.js";import{t as o}from"./clock-BelL0bvZ.js";import{t as s}from"./phone-DpnQw4if.js";import{t as c}from"./star-B6hvSjuv.js";import{C as l,L as u,r as d,s as f,t as p,y as m}from"./index-CyHCRa3Z.js";import{a as h}from"./mockData-DAqQG5te.js";var g=t(e(),1),_=i(),v=[`Пн`,`Вт`,`Ср`,`Чт`,`Пт`,`Сб`,`Вс`],y=[{employeeId:`emp-1`,day:`Пн`,shiftText:`10:00 - 22:00`,hours:12},{employeeId:`emp-1`,day:`Вт`,shiftText:`10:00 - 22:00`,hours:12},{employeeId:`emp-1`,day:`Ср`,shiftText:`10:00 - 22:00`,hours:12},{employeeId:`emp-1`,day:`Чт`,shiftText:`10:00 - 22:00`,hours:12},{employeeId:`emp-1`,day:`Пт`,shiftText:`09:00 - 23:00`,hours:14,hasConflict:!0,conflictReason:`Смена превышает 12 ч (ТК РФ)`},{employeeId:`emp-2`,day:`Вт`,shiftText:`11:00 - 23:00`,hours:12},{employeeId:`emp-2`,day:`Ср`,shiftText:`11:00 - 23:00`,hours:12},{employeeId:`emp-2`,day:`Чт`,shiftText:`11:00 - 23:00`,hours:12},{employeeId:`emp-2`,day:`Сб`,shiftText:`11:00 - 23:00`,hours:12},{employeeId:`emp-2`,day:`Вс`,shiftText:`11:00 - 23:00`,hours:12},{employeeId:`emp-3`,day:`Пн`,shiftText:`10:00 - 22:00`,hours:12},{employeeId:`emp-3`,day:`Чт`,shiftText:`10:00 - 22:00`,hours:12},{employeeId:`emp-3`,day:`Пт`,shiftText:`10:00 - 22:00`,hours:12},{employeeId:`emp-3`,day:`Сб`,shiftText:`10:00 - 22:00`,hours:12},{employeeId:`emp-4`,day:`Пн`,shiftText:`12:00 - 00:00`,hours:12},{employeeId:`emp-4`,day:`Вт`,shiftText:`12:00 - 00:00`,hours:12},{employeeId:`emp-4`,day:`Пт`,shiftText:`12:00 - 00:00`,hours:12},{employeeId:`emp-4`,day:`Сб`,shiftText:`12:00 - 00:00`,hours:12}],b=()=>{let{showToast:e}=a(),[t,i]=(0,g.useState)(`employees`),[b,x]=(0,g.useState)(h),[S,C]=(0,g.useState)(y),[w,T]=(0,g.useState)(``),[E,D]=(0,g.useState)(!1),[O,k]=(0,g.useState)(``),[A,j]=(0,g.useState)(`Официант`),[M,N]=(0,g.useState)(`+7 (913) `),[P,F]=(0,g.useState)(250),[I,L]=(0,g.useState)(null),R=b.filter(e=>e.name.toLowerCase().includes(w.toLowerCase())||e.role.toLowerCase().includes(w.toLowerCase())),z=t=>{if(t.preventDefault(),!O.trim())return;let n=O.split(` `).map(e=>e[0]).join(``).slice(0,2).toUpperCase()||`НС`,r={id:`emp-${Date.now()}`,name:O.trim(),role:A,status:`off_shift`,shiftHours:`09:00 - 21:00`,salesToday:0,rating:5,phone:M,avatarInitials:n};x(e=>[r,...e]),D(!1),k(``),e({title:`Сотрудник добавлен`,message:`Карточка «${r.name}» (${r.role}) успешно создана`,type:`success`})},B=()=>{if(!I)return;let t=I.hours>12,n=t?`Смена превышает 12 ч (ТК РФ)`:void 0;C(e=>{let r=e.filter(e=>e.employeeId!==I.empId||e.day!==I.day);return I.shiftText===`Выходной`||I.hours===0?r:[...r,{employeeId:I.empId,day:I.day,shiftText:I.shiftText,hours:I.hours,hasConflict:t,conflictReason:n}]}),L(null),e({title:`Смена обновлена`,message:`График на ${I.day} сохранен`,type:`success`})},V=S.filter(e=>e.hasConflict).length;return(0,_.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,_.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 bg-krona-surface p-3.5 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,_.jsxs)(`div`,{children:[(0,_.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,_.jsx)(`h2`,{className:`text-sm font-bold text-krona-primary`,children:`Сотрудники, графики и табель учета смен`}),(0,_.jsx)(p,{level:`target`,size:`sm`})]}),(0,_.jsx)(`p`,{className:`text-xs text-krona-secondary mt-0.5`,children:`Управление персоналом, планировщик смен, контроль переработок и предупреждения о конфликтах расписания`})]}),(0,_.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,_.jsxs)(`div`,{className:`flex items-center bg-krona-workspace p-1 rounded-lg border border-krona-border text-xs`,children:[(0,_.jsxs)(`button`,{onClick:()=>i(`employees`),className:`px-3 py-1 rounded font-medium transition-colors ${t===`employees`?`bg-[#2F684C] text-white shadow-sm`:`text-krona-secondary`}`,children:[`Сотрудники (`,b.length,`)`]}),(0,_.jsxs)(`button`,{onClick:()=>i(`schedule`),className:`px-3 py-1 rounded font-medium transition-colors flex items-center gap-1.5 ${t===`schedule`?`bg-[#2F684C] text-white shadow-sm`:`text-krona-secondary`}`,children:[`График смен`,V>0&&(0,_.jsx)(`span`,{className:`w-4 h-4 rounded-full bg-rose-500 text-white text-[10px] flex items-center justify-center font-bold`,children:V})]})]}),(0,_.jsxs)(n,{variant:`primary`,size:`sm`,onClick:()=>D(!0),children:[(0,_.jsx)(l,{className:`w-3.5 h-3.5 mr-1`}),`Добавить сотрудника`]})]})]}),t===`employees`&&(0,_.jsxs)(`div`,{className:`space-y-4`,children:[(0,_.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3`,children:[(0,_.jsxs)(`div`,{className:`relative w-72`,children:[(0,_.jsx)(m,{className:`w-3.5 h-3.5 absolute left-2.5 top-2.5 text-krona-secondary`}),(0,_.jsx)(`input`,{type:`text`,value:w,onChange:e=>T(e.target.value),placeholder:`Поиск по имени или должности...`,className:`w-full pl-8 pr-3 py-1.5 text-xs bg-krona-surface border border-krona-border rounded-lg text-krona-primary placeholder:text-krona-secondary focus:outline-none focus:border-krona-green`})]}),(0,_.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-krona-secondary`,children:[(0,_.jsxs)(r,{variant:`green`,size:`md`,children:[`На смене: `,b.filter(e=>e.status===`on_shift`).length]}),(0,_.jsxs)(r,{variant:`neutral`,size:`md`,children:[`Выходной: `,b.filter(e=>e.status!==`on_shift`).length]})]})]}),(0,_.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3.5`,children:R.map(e=>(0,_.jsxs)(`div`,{className:`p-4 rounded-xl border border-krona-border bg-krona-surface shadow-krona-soft space-y-3 hover:border-krona-border-strong transition-all`,children:[(0,_.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,_.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[(0,_.jsx)(`div`,{className:`w-10 h-10 rounded-full bg-krona-workspace border border-krona-border flex items-center justify-center font-bold text-sm text-krona-primary`,children:e.avatarInitials}),(0,_.jsxs)(`div`,{children:[(0,_.jsx)(`h4`,{className:`text-xs font-bold text-krona-primary`,children:e.name}),(0,_.jsx)(`span`,{className:`text-[11px] text-krona-secondary`,children:e.role})]})]}),(0,_.jsx)(r,{variant:e.status===`on_shift`?`green`:`neutral`,size:`sm`,children:e.status===`on_shift`?`На смене`:`Выходной`})]}),(0,_.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 text-xs py-1 border-y border-krona-border/50`,children:[(0,_.jsxs)(`div`,{children:[(0,_.jsx)(`span`,{className:`text-krona-secondary block text-[10px]`,children:`График сегодня:`}),(0,_.jsxs)(`span`,{className:`font-semibold text-krona-primary flex items-center gap-1`,children:[(0,_.jsx)(o,{className:`w-3 h-3 text-krona-gold`}),e.shiftHours]})]}),(0,_.jsxs)(`div`,{children:[(0,_.jsx)(`span`,{className:`text-krona-secondary block text-[10px]`,children:`Рейтинг качества:`}),(0,_.jsxs)(`span`,{className:`font-semibold text-krona-primary flex items-center gap-1`,children:[(0,_.jsx)(c,{className:`w-3 h-3 text-krona-gold fill-krona-gold`}),e.rating,` / 5.0`]})]})]}),(0,_.jsxs)(`div`,{className:`flex items-center justify-between text-xs pt-1`,children:[(0,_.jsxs)(`div`,{className:`flex items-center gap-1 text-krona-secondary`,children:[(0,_.jsx)(s,{className:`w-3.5 h-3.5`}),(0,_.jsx)(`span`,{className:`font-mono font-medium text-krona-primary`,children:e.phone})]}),(0,_.jsx)(`button`,{onClick:()=>{x(b.map(t=>t.id===e.id?{...t,status:t.status===`on_shift`?`off_shift`:`on_shift`}:t))},className:`text-xs text-krona-green font-medium hover:underline`,children:e.status===`on_shift`?`Завершить смену`:`Вывести на смену`})]})]},e.id))})]}),t===`schedule`&&(0,_.jsxs)(`div`,{className:`space-y-4`,children:[(0,_.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 bg-krona-surface p-3 rounded-xl border border-krona-border`,children:[(0,_.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,_.jsx)(u,{className:`w-4 h-4 text-krona-gold`}),(0,_.jsx)(`span`,{className:`font-bold text-xs text-krona-primary`,children:`Недельный график смен (07.09.2026 — 13.09.2026)`}),V>0?(0,_.jsxs)(r,{variant:`danger`,size:`sm`,children:[V,` конфликт расписания!`]}):(0,_.jsx)(r,{variant:`green`,size:`sm`,children:`Конфликтов нет`})]}),(0,_.jsx)(`p`,{className:`text-[11px] text-krona-secondary`,children:`Кликните по ячейке для назначения или изменения времени смены сотрудника`})]}),(0,_.jsx)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft overflow-hidden`,children:(0,_.jsx)(`div`,{className:`overflow-x-auto`,children:(0,_.jsxs)(`table`,{className:`w-full text-left text-xs border-collapse min-w-[700px]`,children:[(0,_.jsx)(`thead`,{className:`bg-krona-workspace/80 text-krona-secondary border-b border-krona-border`,children:(0,_.jsxs)(`tr`,{children:[(0,_.jsx)(`th`,{className:`p-3 font-semibold w-48`,children:`Сотрудник / Должность`}),v.map(e=>(0,_.jsx)(`th`,{className:`p-3 font-semibold text-center border-l border-krona-border/40`,children:e},e)),(0,_.jsx)(`th`,{className:`p-3 font-semibold text-center border-l border-krona-border/40 w-24`,children:`Часы / нед.`})]})}),(0,_.jsx)(`tbody`,{className:`divide-y divide-krona-border/50`,children:b.map(e=>{let t=S.filter(t=>t.employeeId===e.id),n=t.reduce((e,t)=>e+t.hours,0);return(0,_.jsxs)(`tr`,{className:`hover:bg-krona-workspace/40 transition-colors`,children:[(0,_.jsxs)(`td`,{className:`p-3 font-medium text-krona-primary`,children:[(0,_.jsx)(`div`,{className:`font-semibold`,children:e.name}),(0,_.jsx)(`div`,{className:`text-[11px] text-krona-secondary`,children:e.role})]}),v.map(n=>{let r=t.find(e=>e.day===n);return(0,_.jsx)(`td`,{onClick:()=>{L({empId:e.id,day:n,shiftText:r?r.shiftText:`10:00 - 22:00`,hours:r?r.hours:12})},className:`p-2 border-l border-krona-border/40 text-center cursor-pointer hover:bg-krona-workspace transition-colors`,children:r?(0,_.jsxs)(`div`,{className:`p-1.5 rounded-lg border text-[11px] font-mono leading-tight ${r.hasConflict?`bg-rose-500/15 border-rose-500/50 text-rose-700 dark:text-rose-300 font-bold`:`bg-emerald-500/10 border-emerald-500/30 text-emerald-800 dark:text-emerald-300 font-medium`}`,title:r.conflictReason||`Смена подтверждена`,children:[(0,_.jsx)(`div`,{children:r.shiftText}),(0,_.jsxs)(`div`,{className:`text-[9px] opacity-75`,children:[r.hours,` ч`]}),r.hasConflict&&(0,_.jsxs)(`div`,{className:`flex items-center justify-center gap-0.5 mt-0.5 text-rose-600 font-bold text-[9px]`,children:[(0,_.jsx)(f,{className:`w-2.5 h-2.5`}),` Превышение!`]})]}):(0,_.jsx)(`span`,{className:`text-[11px] text-krona-secondary/60 hover:text-krona-primary`,children:`—`})},n)}),(0,_.jsx)(`td`,{className:`p-3 border-l border-krona-border/40 text-center font-mono font-bold`,children:(0,_.jsxs)(`span`,{className:n>40?`text-amber-600`:`text-krona-primary`,children:[n,` ч`]})})]},e.id)})})]})})})]}),E&&(0,_.jsx)(d,{isOpen:E,onClose:()=>D(!1),title:`Новый сотрудник`,subtitle:`Создание профиля и назначение должности`,maxWidth:`sm`,footer:(0,_.jsxs)(`div`,{className:`flex gap-2 w-full justify-end`,children:[(0,_.jsx)(n,{variant:`secondary`,onClick:()=>D(!1),children:`Отмена`}),(0,_.jsx)(n,{variant:`primary`,onClick:z,children:`Сохранить`})]}),children:(0,_.jsxs)(`div`,{className:`space-y-3 text-xs`,children:[(0,_.jsxs)(`div`,{className:`space-y-1`,children:[(0,_.jsx)(`label`,{className:`font-semibold text-krona-primary`,children:`ФИО сотрудника:`}),(0,_.jsx)(`input`,{type:`text`,value:O,onChange:e=>k(e.target.value),placeholder:`Иванова Екатерина Сергеевна`,className:`w-full p-2 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary focus:outline-none focus:border-krona-green`})]}),(0,_.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,_.jsxs)(`div`,{className:`space-y-1`,children:[(0,_.jsx)(`label`,{className:`font-semibold text-krona-primary`,children:`Должность:`}),(0,_.jsxs)(`select`,{value:A,onChange:e=>j(e.target.value),className:`w-full p-2 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary focus:outline-none focus:border-krona-green`,children:[(0,_.jsx)(`option`,{value:`Официант`,children:`Официант`}),(0,_.jsx)(`option`,{value:`Су-шеф`,children:`Су-шеф`}),(0,_.jsx)(`option`,{value:`Повар-сушист`,children:`Повар-сушист`}),(0,_.jsx)(`option`,{value:`Курьер`,children:`Курьер`}),(0,_.jsx)(`option`,{value:`Администратор`,children:`Администратор`}),(0,_.jsx)(`option`,{value:`Бармен`,children:`Бармен`})]})]}),(0,_.jsxs)(`div`,{className:`space-y-1`,children:[(0,_.jsx)(`label`,{className:`font-semibold text-krona-primary`,children:`Ставка в час (₽):`}),(0,_.jsx)(`input`,{type:`number`,value:P,onChange:e=>F(Number(e.target.value)),className:`w-full p-2 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary focus:outline-none focus:border-krona-green`})]})]}),(0,_.jsxs)(`div`,{className:`space-y-1`,children:[(0,_.jsx)(`label`,{className:`font-semibold text-krona-primary`,children:`Контактный телефон:`}),(0,_.jsx)(`input`,{type:`text`,value:M,onChange:e=>N(e.target.value),className:`w-full p-2 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary focus:outline-none focus:border-krona-green`})]})]})}),I&&(0,_.jsx)(d,{isOpen:!!I,onClose:()=>L(null),title:`Назначение смены: ${I.day}`,subtitle:`Сотрудник: ${b.find(e=>e.id===I.empId)?.name}`,maxWidth:`sm`,footer:(0,_.jsxs)(`div`,{className:`flex gap-2 w-full justify-between`,children:[(0,_.jsx)(n,{variant:`danger`,size:`sm`,onClick:()=>{L({...I,shiftText:`Выходной`,hours:0}),setTimeout(B,50)},children:`Сделать выходным`}),(0,_.jsxs)(`div`,{className:`flex gap-2`,children:[(0,_.jsx)(n,{variant:`secondary`,onClick:()=>L(null),children:`Отмена`}),(0,_.jsx)(n,{variant:`primary`,onClick:B,children:`Сохранить смену`})]})]}),children:(0,_.jsxs)(`div`,{className:`space-y-3 text-xs`,children:[(0,_.jsxs)(`div`,{className:`space-y-1`,children:[(0,_.jsx)(`label`,{className:`font-semibold text-krona-primary`,children:`Время смены:`}),(0,_.jsxs)(`select`,{value:I.shiftText,onChange:e=>{let t=e.target.value,n=12;t.includes(`09:00 - 23:00`)?n=14:t.includes(`10:00 - 18:00`)?n=8:t===`Выходной`&&(n=0),L({...I,shiftText:t,hours:n})},className:`w-full p-2 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary focus:outline-none focus:border-krona-green`,children:[(0,_.jsx)(`option`,{value:`10:00 - 22:00`,children:`10:00 - 22:00 (12 часов, норма)`}),(0,_.jsx)(`option`,{value:`11:00 - 23:00`,children:`11:00 - 23:00 (12 часов, норма)`}),(0,_.jsx)(`option`,{value:`12:00 - 00:00`,children:`12:00 - 00:00 (12 часов, норма)`}),(0,_.jsx)(`option`,{value:`10:00 - 18:00`,children:`10:00 - 18:00 (8 часов, сокращенная)`}),(0,_.jsx)(`option`,{value:`09:00 - 23:00`,children:`09:00 - 23:00 (14 часов, переработка!)`}),(0,_.jsx)(`option`,{value:`Выходной`,children:`Выходной (0 часов)`})]})]}),I.hours>12&&(0,_.jsxs)(`div`,{className:`p-2.5 bg-rose-500/10 border border-rose-500/30 rounded-lg flex items-center gap-2 text-rose-700 dark:text-rose-300`,children:[(0,_.jsx)(f,{className:`w-4 h-4 shrink-0 text-rose-600`}),(0,_.jsxs)(`span`,{children:[`Внимание: смена длится `,I.hours,` часов. Согласно Трудовому кодексу, стандартная смена не должна превышать 12 часов.`]})]})]})})]})};export{b as EmployeesModule}; \ No newline at end of file diff --git a/dist/assets/EntityCatalog-CDeC-VEQ.js b/dist/assets/EntityCatalog-CDeC-VEQ.js deleted file mode 100644 index 64455a6..0000000 --- a/dist/assets/EntityCatalog-CDeC-VEQ.js +++ /dev/null @@ -1 +0,0 @@ -import{f as e,h as t,i as n,r,s as i,t as a}from"./useToast-CS8pZhce.js";import{t as o}from"./credit-card-6Y5eHPCw.js";import{t as s}from"./lock-BiWUbvPE.js";import{t as c}from"./panels-top-left-BomsDlf9.js";import{t as l}from"./table-_fqSCPRE.js";import{C as u,D as d,H as f,a as p,et as m,h,p as g,r as _,s as v,t as y,u as b,y as x}from"./index-CyHCRa3Z.js";var S=t(e(),1),C=i(),w=()=>{let e=m(),{entities:t,loading:i,createEntity:w,deleteEntity:T}=f(),{showToast:E}=a(),[D,O]=(0,S.useState)(``),[k,A]=(0,S.useState)(`all`),[j,M]=(0,S.useState)(!1),[N,P]=(0,S.useState)(!1),[F,I]=(0,S.useState)({name:``,pluralName:``,code:``,description:``,category:`custom`,primaryFieldKey:`name`,autonumberingEnabled:!1,autonumberFormat:`DOC-{YYYY}-{0000}`}),[L,R]=(0,S.useState)(null),z=(0,S.useMemo)(()=>t.filter(e=>{let t=e.name.toLowerCase().includes(D.toLowerCase())||e.code.toLowerCase().includes(D.toLowerCase())||e.description&&e.description.toLowerCase().includes(D.toLowerCase()),n=k===`all`||k===`system`&&e.isSystem||k===`custom`&&!e.isSystem||e.category===k;return t&&n}),[t,D,k]),B=(0,S.useMemo)(()=>{let e=t.length,n=t.filter(e=>e.isSystem).length;return{total:e,system:n,custom:e-n,totalFields:t.reduce((e,t)=>e+(t.fields?.length||0),0)}},[t]),V=e=>{let t={а:`a`,б:`b`,в:`v`,г:`g`,д:`d`,е:`e`,ё:`yo`,ж:`zh`,з:`z`,и:`i`,й:`y`,к:`k`,л:`l`,м:`m`,н:`n`,о:`o`,п:`p`,р:`r`,с:`s`,т:`t`,у:`u`,ф:`f`,х:`kh`,ц:`ts`,ч:`ch`,ш:`sh`,щ:`shch`,ъ:``,ы:`y`,ь:``,э:`e`,ю:`yu`,я:`ya`};return e.toLowerCase().split(``).map(e=>t[e]||e).join(``).replace(/[^a-z0-9_]/g,`_`).replace(/_{2,}/g,`_`).replace(/^_|_$/g,``)},H=e=>{let t=V(e);I(n=>({...n,name:e,pluralName:n.pluralName||`${e}ы`,code:N?n.code:t}))};return(0,C.jsxs)(`div`,{className:`space-y-5 animate-fade-in`,children:[(0,C.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-4 p-5 bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsxs)(`div`,{className:`flex items-center gap-2 mb-1`,children:[(0,C.jsx)(d,{className:`w-5 h-5 text-krona-green`}),(0,C.jsx)(`h1`,{className:`text-base font-bold text-krona-primary`,children:`Configuration Engine: Каталог сущностей`}),(0,C.jsx)(y,{level:`pilot1`,size:`sm`})]}),(0,C.jsx)(`p`,{className:`text-xs text-krona-secondary max-w-2xl`,children:`Центральный конструктор моделей данных: создание системных и пользовательских сущностей, настройка 39+ типов полей, визуальный drag-and-drop редактор форм, карточек и сохранённых представлений.`})]}),(0,C.jsxs)(n,{variant:`primary`,size:`md`,"data-testid":`create-entity-btn`,onClick:()=>M(!0),className:`shrink-0`,children:[(0,C.jsx)(u,{className:`w-4 h-4 mr-1.5`}),`Создать сущность`]})]}),(0,C.jsxs)(`div`,{className:`grid grid-cols-2 md:grid-cols-4 gap-3`,children:[(0,C.jsxs)(`div`,{className:`p-3.5 bg-krona-surface border border-krona-border rounded-xl`,children:[(0,C.jsx)(`span`,{className:`text-xs text-krona-secondary`,children:`Всего сущностей`}),(0,C.jsx)(`p`,{className:`text-xl font-bold text-krona-primary mt-1`,children:B.total})]}),(0,C.jsxs)(`div`,{className:`p-3.5 bg-krona-surface border border-krona-border rounded-xl`,children:[(0,C.jsx)(`span`,{className:`text-xs text-krona-secondary`,children:`Системных сущностей`}),(0,C.jsx)(`p`,{className:`text-xl font-bold text-krona-green mt-1`,children:B.system})]}),(0,C.jsxs)(`div`,{className:`p-3.5 bg-krona-surface border border-krona-border rounded-xl`,children:[(0,C.jsx)(`span`,{className:`text-xs text-krona-secondary`,children:`Пользовательских (Custom)`}),(0,C.jsx)(`p`,{className:`text-xl font-bold text-krona-gold mt-1`,children:B.custom})]}),(0,C.jsxs)(`div`,{className:`p-3.5 bg-krona-surface border border-krona-border rounded-xl`,children:[(0,C.jsx)(`span`,{className:`text-xs text-krona-secondary`,children:`Активных полей`}),(0,C.jsx)(`p`,{className:`text-xl font-bold text-krona-primary mt-1`,children:B.totalFields})]})]}),(0,C.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 p-3.5 bg-krona-surface border border-krona-border rounded-xl`,children:[(0,C.jsx)(`div`,{className:`relative w-full sm:w-80`,children:(0,C.jsx)(p,{value:D,onChange:e=>O(e.target.value),placeholder:`Поиск по названию или коду...`,icon:(0,C.jsx)(x,{className:`w-4 h-4`})})}),(0,C.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:[{id:`all`,label:`Все сущности`},{id:`system`,label:`Системные`},{id:`custom`,label:`Пользовательские`},{id:`crm`,label:`CRM`},{id:`commerce`,label:`Коммерция`},{id:`inventory`,label:`Склад`},{id:`finance`,label:`Финансы`}].map(e=>(0,C.jsx)(`button`,{onClick:()=>A(e.id),className:`px-3 py-1.5 rounded-lg text-xs font-medium transition-colors cursor-pointer ${k===e.id?`bg-krona-green text-white shadow-sm`:`bg-krona-surface-muted text-krona-secondary hover:text-krona-primary`}`,children:e.label},e.id))})]}),(0,C.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4`,children:z.map(t=>{let i=t.fields?.length||0;return(0,C.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft hover:border-krona-border-strong transition-all flex flex-col justify-between group`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsxs)(`div`,{className:`flex items-start justify-between gap-2 mb-2`,children:[(0,C.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[(0,C.jsx)(`div`,{className:`w-8 h-8 rounded-lg bg-krona-workspace flex items-center justify-center text-krona-primary border border-krona-border/60`,children:(0,C.jsx)(d,{className:`w-4 h-4 text-krona-green`})}),(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h3`,{className:`text-sm font-semibold text-krona-primary leading-tight`,children:t.name}),(0,C.jsx)(`p`,{className:`text-[11px] font-mono text-krona-secondary`,children:t.code})]})]}),(0,C.jsx)(`div`,{className:`flex items-center gap-1.5`,children:t.isSystem?(0,C.jsxs)(r,{variant:`neutral`,size:`sm`,children:[(0,C.jsx)(s,{className:`w-2.5 h-2.5 mr-1`}),`System`]}):(0,C.jsxs)(r,{variant:`gold`,size:`sm`,children:[(0,C.jsx)(g,{className:`w-2.5 h-2.5 mr-1`}),`Custom`]})})]}),(0,C.jsx)(`p`,{className:`text-xs text-krona-secondary line-clamp-2 min-h-[32px] mb-3`,children:t.description||`Пользовательская сущность бизнес-платформы Krona`}),(0,C.jsxs)(`div`,{className:`flex items-center gap-2 py-2 border-t border-b border-krona-border/60 text-xs text-krona-secondary mb-3`,children:[(0,C.jsxs)(`span`,{children:[`Полей: `,(0,C.jsx)(`strong`,{className:`text-krona-primary font-semibold`,children:i})]}),(0,C.jsx)(`span`,{children:`•`}),(0,C.jsxs)(`span`,{children:[`Категория: `,(0,C.jsx)(`strong`,{className:`text-krona-primary font-semibold capitalize`,children:t.category})]})]})]}),(0,C.jsxs)(`div`,{className:`space-y-2`,children:[(0,C.jsxs)(`div`,{className:`grid grid-cols-5 gap-1`,children:[(0,C.jsxs)(n,{variant:`primary`,size:`sm`,className:`text-[11px] px-1 py-1.5`,"data-testid":`open-entity-${t.code}-btn`,onClick:()=>e(`/entities/${t.code}`),title:`Перейти к записям сущности`,children:[(0,C.jsx)(d,{className:`w-3 h-3 mr-0.5`}),`Записи`]}),(0,C.jsxs)(n,{variant:`outline`,size:`sm`,className:`text-[11px] px-1 py-1.5`,onClick:()=>e(`/settings/entities/${t.code}/fields`),title:`Конструктор полей`,children:[(0,C.jsx)(h,{className:`w-3 h-3 mr-1 text-krona-green`}),`Поля`]}),(0,C.jsxs)(n,{variant:`outline`,size:`sm`,className:`text-[11px] px-1 py-1.5`,onClick:()=>e(`/settings/entities/${t.code}/forms`),title:`Конструктор форм`,children:[(0,C.jsx)(c,{className:`w-3 h-3 mr-1 text-krona-gold`}),`Формы`]}),(0,C.jsxs)(n,{variant:`outline`,size:`sm`,className:`text-[11px] px-1 py-1.5`,onClick:()=>e(`/settings/entities/${t.code}/card`),title:`Конструктор карточки`,children:[(0,C.jsx)(o,{className:`w-3 h-3 mr-1 text-krona-info`}),`Карточка`]}),(0,C.jsxs)(n,{variant:`outline`,size:`sm`,className:`text-[11px] px-1 py-1.5`,onClick:()=>e(`/settings/entities/${t.code}/views`),title:`Конструктор списков и представлений`,children:[(0,C.jsx)(l,{className:`w-3 h-3 mr-1 text-krona-primary`}),`Списки`]})]}),!t.isSystem&&(0,C.jsx)(`div`,{className:`flex justify-end pt-1`,children:(0,C.jsxs)(`button`,{type:`button`,onClick:()=>R(t),className:`text-[11px] text-krona-danger hover:text-krona-danger/80 flex items-center gap-1 font-medium cursor-pointer`,children:[(0,C.jsx)(b,{className:`w-3 h-3`}),`Удалить сущность`]})})]})]},t.code)})}),z.length===0&&!i&&(0,C.jsxs)(`div`,{className:`text-center py-12 p-6 bg-krona-surface border border-dashed border-krona-border rounded-xl`,children:[(0,C.jsx)(d,{className:`w-8 h-8 text-krona-secondary mx-auto mb-2 opacity-50`}),(0,C.jsx)(`h3`,{className:`text-sm font-semibold text-krona-primary mb-1`,children:`Сущности не найдены`}),(0,C.jsxs)(`p`,{className:`text-xs text-krona-secondary mb-4`,children:[`По вашему запросу «`,D,`» ничего не найдено.`]}),(0,C.jsx)(n,{variant:`secondary`,size:`sm`,onClick:()=>O(``),children:`Сбросить фильтр`})]}),(0,C.jsx)(_,{isOpen:j,onClose:()=>M(!1),title:`Создание новой сущности`,subtitle:`Задайте базовые параметры и системный API-идентификатор`,maxWidth:`lg`,closeOnBackdropClick:!1,children:(0,C.jsxs)(`form`,{onSubmit:async e=>{if(e.preventDefault(),!F.name||!F.code){E({type:`error`,title:`Заполните обязательные поля: название и код`});return}let n=F.code.trim().toLowerCase();if(t.some(e=>e.code===n)){E({type:`error`,title:`Сущность с таким системным кодом уже существует`});return}try{let e=[{id:`f_${n}_name`,key:F.primaryFieldKey||`name`,label:`Наименование`,type:`text`,required:!0,system:!0,searchable:!0,sortable:!0},{id:`f_${n}_status`,key:`status`,label:`Статус`,type:`status`,required:!1,system:!0,options:[{label:`Новый`,value:`new`,color:`neutral`},{label:`В работе`,value:`in_progress`,color:`warning`},{label:`Завершён`,value:`completed`,color:`green`}]}];await w({code:n,name:F.name.trim(),pluralName:F.pluralName.trim()||`${F.name}ы`,description:F.description.trim(),category:F.category,isSystem:!1,maturity:`target_prototype`,primaryFieldKey:F.primaryFieldKey||`name`,autonumberingEnabled:F.autonumberingEnabled,autonumberFormat:F.autonumberFormat,fields:e,defaultView:`table`}),E({type:`success`,title:`Сущность «${F.name}» создана`,message:`Теперь вы можете добавить пользовательские поля, настроить формы и списки.`}),M(!1),P(!1),I({name:``,pluralName:``,code:``,description:``,category:`custom`,primaryFieldKey:`name`,autonumberingEnabled:!1,autonumberFormat:`DOC-{YYYY}-{0000}`})}catch(e){E({type:`error`,title:`Ошибка создания сущности`,message:e instanceof Error?e.message:String(e)})}},className:`space-y-4`,children:[(0,C.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3`,children:[(0,C.jsx)(p,{label:`Наименование (ед. число) *`,placeholder:`Например: Договор`,"data-testid":`new-entity-name-input`,value:F.name,onChange:e=>H(e.target.value),required:!0}),(0,C.jsx)(p,{label:`Наименование (мн. число) *`,placeholder:`Например: Договоры`,"data-testid":`new-entity-plural-input`,value:F.pluralName,onChange:e=>I(t=>({...t,pluralName:e.target.value})),required:!0})]}),(0,C.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3`,children:[(0,C.jsx)(p,{label:`Системный код (API Name) *`,placeholder:`contract`,"data-testid":`new-entity-code-input`,value:F.code,onChange:e=>{P(!0),I(t=>({...t,code:e.target.value.toLowerCase().replace(/[^a-z0-9_]/g,``)}))},helperText:`Используется в URL, API и индексах (только a-z, 0-9, _)`,required:!0}),(0,C.jsxs)(`div`,{className:`flex flex-col gap-1.5 text-left`,children:[(0,C.jsx)(`label`,{className:`text-xs font-medium text-krona-secondary select-none`,children:`Категория`}),(0,C.jsxs)(`select`,{className:`w-full bg-krona-surface text-krona-primary border border-krona-border rounded-md px-3 py-2 text-sm focus:outline-none focus:border-krona-green`,value:F.category,onChange:e=>I(t=>({...t,category:e.target.value})),children:[(0,C.jsx)(`option`,{value:`custom`,children:`Пользовательская (Custom)`}),(0,C.jsx)(`option`,{value:`crm`,children:`CRM & Продажи`}),(0,C.jsx)(`option`,{value:`commerce`,children:`Коммерция`}),(0,C.jsx)(`option`,{value:`inventory`,children:`Склад & Запасы`}),(0,C.jsx)(`option`,{value:`finance`,children:`Финансы`}),(0,C.jsx)(`option`,{value:`operations`,children:`Операции`})]})]})]}),(0,C.jsx)(p,{label:`Описание назначения сущности`,placeholder:`Для каких бизнес-процессов предназначена сущность...`,value:F.description,onChange:e=>I(t=>({...t,description:e.target.value}))}),(0,C.jsxs)(`div`,{className:`p-3.5 bg-krona-workspace rounded-lg border border-krona-border/60 space-y-3`,children:[(0,C.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer text-xs font-semibold text-krona-primary`,children:[(0,C.jsx)(`input`,{type:`checkbox`,checked:F.autonumberingEnabled,onChange:e=>I(t=>({...t,autonumberingEnabled:e.target.checked})),className:`rounded text-krona-green`}),`Включить автоматическую нумерацию записей`]}),F.autonumberingEnabled&&(0,C.jsx)(p,{label:`Шаблон нумератора`,value:F.autonumberFormat,onChange:e=>I(t=>({...t,autonumberFormat:e.target.value})),helperText:`Теги: {YYYY} - год, {MM} - месяц, {0000} - порядковый номер`})]}),(0,C.jsxs)(`div`,{className:`flex justify-end gap-2.5 pt-3 border-t border-krona-border/60`,children:[(0,C.jsx)(n,{variant:`outline`,size:`md`,type:`button`,onClick:()=>M(!1),children:`Отмена`}),(0,C.jsx)(n,{variant:`primary`,size:`md`,type:`submit`,"data-testid":`submit-create-entity-btn`,children:`Создать и перейти к полям`})]})]})}),(0,C.jsx)(_,{isOpen:!!L,onClose:()=>R(null),title:`Подтверждение удаления сущности`,subtitle:`Вы собираетесь удалить пользовательскую сущность «${L?.name}»`,maxWidth:`md`,children:(0,C.jsxs)(`div`,{className:`space-y-4`,children:[(0,C.jsxs)(`div`,{className:`p-4 bg-krona-danger/10 border border-krona-danger/30 rounded-lg text-xs text-krona-danger flex items-start gap-3`,children:[(0,C.jsx)(v,{className:`w-5 h-5 shrink-0 mt-0.5`}),(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`p`,{className:`font-semibold mb-1`,children:`Внимание! Проверка зависимостей (Dependency Impact)`}),(0,C.jsxs)(`p`,{children:[`Будут удалены все связанные определения полей (`,L?.fields?.length||0,` шт.), сохраненные формы, представления списков и записи из базы данных.`]})]})]}),(0,C.jsxs)(`div`,{className:`p-3 bg-krona-workspace rounded-lg text-xs text-krona-secondary space-y-1`,children:[(0,C.jsxs)(`p`,{children:[`Код сущности: `,(0,C.jsx)(`code`,{className:`font-mono text-krona-primary`,children:L?.code})]}),(0,C.jsxs)(`p`,{children:[`Категория: `,(0,C.jsx)(`span`,{className:`text-krona-primary`,children:L?.category})]})]}),(0,C.jsxs)(`div`,{className:`flex justify-end gap-2.5 pt-3 border-t border-krona-border/60`,children:[(0,C.jsx)(n,{variant:`outline`,size:`md`,onClick:()=>R(null),children:`Отмена`}),(0,C.jsx)(n,{variant:`danger`,size:`md`,onClick:async()=>{if(L){if(L.isSystem){E({type:`error`,title:`Нельзя удалить системную сущность платформы`});return}try{await T(L.code),E({type:`success`,title:`Сущность «${L.name}» удалена`}),R(null)}catch(e){E({type:`error`,title:`Ошибка удаления сущности`,message:e instanceof Error?e.message:String(e)})}}},children:`Да, удалить сущность`})]})]})})]})};export{w as EntityCatalog,w as default}; \ No newline at end of file diff --git a/dist/assets/FieldBuilder-Bb70wc90.js b/dist/assets/FieldBuilder-Bb70wc90.js deleted file mode 100644 index b780e48..0000000 --- a/dist/assets/FieldBuilder-Bb70wc90.js +++ /dev/null @@ -1 +0,0 @@ -import{f as e,h as t,i as n,l as r,r as i,s as a,t as o}from"./useToast-CS8pZhce.js";import{n as s,r as c,t as l}from"./fieldTypesMeta-BFbkZTaX.js";import{t as u}from"./eye-CkF1gwUX.js";import{t as d}from"./lock-BiWUbvPE.js";import{t as f}from"./pen-D8SS70u3.js";import{B as p,C as m,H as h,a as g,et as _,n as v,tt as y,u as b,y as x}from"./index-CyHCRa3Z.js";var S={name:`grip-vertical`,size:24,node:[[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}],[`circle`,{cx:`9`,cy:`5`,r:`1`,key:`hp0tcf`}],[`circle`,{cx:`9`,cy:`19`,r:`1`,key:`fkjjf6`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`15`,cy:`5`,r:`1`,key:`19l28e`}],[`circle`,{cx:`15`,cy:`19`,r:`1`,key:`f4zoj3`}]]};S.node;var C=r(S),w=t(e(),1);function T(e,t,n){if(t===n||t<0||n<0||t>=e.length||n>=e.length)return e;let r=Array.from(e),[i]=r.splice(t,1);return r.splice(n,0,i),r}function E(e,t,n,r){if(e.key===`ArrowUp`&&(e.altKey||e.ctrlKey||e.metaKey)){if(e.preventDefault(),t>0)return r(t,t-1),!0}else if(e.key===`ArrowDown`&&(e.altKey||e.ctrlKey||e.metaKey)){if(e.preventDefault(),t0)return r(t,0),!0}else if(e.key===`End`&&(e.altKey||e.ctrlKey||e.metaKey)&&(e.preventDefault(),t{let{entityCode:e}=y(),t=_(),{currentEntity:r,addField:a,updateField:S,deleteField:O,updateEntity:k}=h(e),{showToast:A}=o(),[j,M]=(0,w.useState)(``),[N,P]=(0,w.useState)(!1),[F,I]=(0,w.useState)(null),[L,R]=(0,w.useState)(`edit`),z={label:``,key:``,type:`text`,description:``,placeholder:``,defaultValue:``,required:!1,unique:!1,readOnly:!1,hidden:!1,searchable:!0,filterable:!0,sortable:!0,options:[{label:`Вариант 1`,value:`opt_1`,color:`#2F684C`},{label:`Вариант 2`,value:`opt_2`,color:`#B78335`}],validation:{min:void 0,max:void 0,minLength:void 0,maxLength:void 0,pattern:``},conditionalVisibility:{fieldKey:``,operator:`eq`,value:``},permissions:{viewRoles:[`*`],editRoles:[`*`]}},[B,V]=(0,w.useState)(z),H=(0,w.useMemo)(()=>r?.fields||[],[r]),U=(0,w.useMemo)(()=>{if(!j.trim())return H;let e=j.toLowerCase();return H.filter(t=>t.label.toLowerCase().includes(e)||t.key.toLowerCase().includes(e)||t.type.toLowerCase().includes(e))},[H,j]),W=()=>{I(null),V({...z,key:`custom_${Date.now().toString(36)}`}),P(!0)},G=e=>{I(e.id),V({...e,options:e.options?[...e.options]:z.options,validation:{...e.validation||z.validation},conditionalVisibility:{...e.conditionalVisibility||z.conditionalVisibility},permissions:{...e.permissions||z.permissions}}),P(!0)},K=async()=>{if(!B.label||!B.key||!e){A({type:`error`,title:`Укажите название и системный код поля`});return}try{F?(await S(e,F,B),A({type:`success`,title:`Поле «${B.label}» обновлено`})):(await a(e,B),A({type:`success`,title:`Поле «${B.label}» добавлено`})),P(!1)}catch(e){A({type:`error`,title:`Ошибка сохранения поля`,message:e instanceof Error?e.message:String(e)})}},q=async t=>{if(e){if(t.system){A({type:`error`,title:`Защита инвариантов платформы`,message:`Системное поле «${t.label}» (${t.key}) является обязательным для целостности схемы и не может быть удалено.`});return}if(confirm(`Удалить поле «${t.label}» (${t.key})?`))try{await O(e,t.id),A({type:`success`,title:`Поле «${t.label}» удалено`})}catch(e){A({type:`error`,title:`Ошибка удаления поля`,message:e instanceof Error?e.message:String(e)})}}},J=async(t,n)=>{if(!e||!r)return;let i=T(H,t,n);await k(e,{fields:i})},Y=()=>{let e={label:`Новый вариант ${(B.options?.length||0)+1}`,value:`opt_${Date.now().toString(36)}`,color:`#527286`};V(t=>({...t,options:[...t.options||[],e]}))},X=(e,t)=>{V(n=>{let r=[...n.options||[]];return r[e]={...r[e],...t},{...n,options:r}})},Z=e=>{V(t=>({...t,options:(t.options||[]).filter((t,n)=>n!==e)}))},Q=c(B.type||`text`);return(0,D.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,D.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 p-4 bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,D.jsxs)(n,{variant:`ghost`,size:`sm`,onClick:()=>t(`/settings/entities`),className:`p-1.5`,children:[(0,D.jsx)(p,{className:`w-4 h-4 mr-1`}),`Каталог`]}),(0,D.jsxs)(`div`,{children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,D.jsxs)(`h1`,{className:`text-base font-bold text-krona-primary`,children:[`Поля сущности: `,r?.name||e]}),(0,D.jsx)(i,{variant:`neutral`,size:`sm`,children:(0,D.jsx)(`code`,{children:e})})]}),(0,D.jsx)(`p`,{className:`text-xs text-krona-secondary`,children:`Управление атрибутами, типами данных, правилами валидации и опциями выбора`})]})]}),(0,D.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,D.jsxs)(n,{variant:`primary`,size:`sm`,onClick:W,children:[(0,D.jsx)(m,{className:`w-4 h-4 mr-1.5`}),`Добавить поле`]})})]}),(0,D.jsxs)(`div`,{className:`flex items-center justify-between gap-3 p-3 bg-krona-surface border border-krona-border rounded-xl`,children:[(0,D.jsx)(`div`,{className:`relative w-72`,children:(0,D.jsx)(g,{value:j,onChange:e=>M(e.target.value),placeholder:`Поиск по названию или коду...`,icon:(0,D.jsx)(x,{className:`w-3.5 h-3.5`})})}),(0,D.jsxs)(`div`,{className:`text-xs text-krona-secondary`,children:[`Всего полей: `,(0,D.jsx)(`strong`,{className:`text-krona-primary`,children:H.length}),` (из них`,` `,H.filter(e=>e.system).length,` системных)`]})]}),(0,D.jsx)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft overflow-hidden`,children:(0,D.jsx)(`div`,{className:`divide-y divide-krona-border/60`,children:U.map((e,t)=>{let r=c(e.type),a=r.icon;return(0,D.jsxs)(`div`,{tabIndex:0,onKeyDown:e=>E(e,t,H.length,J),className:`flex items-center justify-between p-3 hover:bg-krona-workspace/50 transition-colors group`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-3 min-w-0`,children:[(0,D.jsx)(`div`,{className:`text-krona-secondary hover:text-krona-primary cursor-grab active:cursor-grabbing p-1`,title:`Alt + Стрелки для перемещения с клавиатуры`,children:(0,D.jsx)(C,{className:`w-4 h-4 opacity-40 group-hover:opacity-100`})}),(0,D.jsx)(`div`,{className:`w-7 h-7 rounded-md bg-krona-workspace flex items-center justify-center text-krona-primary border border-krona-border/60 shrink-0`,children:(0,D.jsx)(a,{className:`w-3.5 h-3.5 text-krona-green`})}),(0,D.jsxs)(`div`,{className:`min-w-0`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,D.jsx)(`span`,{className:`text-sm font-medium text-krona-primary truncate`,children:e.label}),e.required&&(0,D.jsx)(`span`,{className:`text-xs text-krona-danger font-bold`,title:`Обязательное поле`,children:`*`})]}),(0,D.jsxs)(`div`,{className:`flex items-center gap-2 text-xs font-mono text-krona-secondary`,children:[(0,D.jsx)(`span`,{children:e.key}),e.description&&(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(`span`,{children:`•`}),(0,D.jsx)(`span`,{className:`font-sans text-[11px] truncate max-w-xs`,children:e.description})]})]})]})]}),(0,D.jsxs)(`div`,{className:`flex items-center gap-3 shrink-0`,children:[(0,D.jsx)(i,{variant:`neutral`,size:`sm`,className:`hidden sm:inline-flex`,children:r.label}),e.system?(0,D.jsxs)(i,{variant:`neutral`,size:`sm`,children:[(0,D.jsx)(d,{className:`w-2.5 h-2.5 mr-1`}),`System`]}):(0,D.jsx)(i,{variant:`gold`,size:`sm`,children:`Custom`}),(0,D.jsxs)(`div`,{className:`flex items-center gap-1 opacity-80 group-hover:opacity-100`,children:[(0,D.jsx)(n,{variant:`ghost`,size:`icon`,onClick:()=>G(e),title:`Редактировать поле`,children:(0,D.jsx)(f,{className:`w-3.5 h-3.5`})}),!e.system&&(0,D.jsx)(n,{variant:`ghost`,size:`icon`,onClick:()=>q(e),className:`text-krona-danger hover:bg-krona-danger/10`,title:`Удалить поле`,children:(0,D.jsx)(b,{className:`w-3.5 h-3.5`})})]})]})]},e.id)})})}),(0,D.jsx)(v,{isOpen:N,onClose:()=>P(!1),title:F?`Редактирование поля: ${B.label}`:`Добавление нового поля`,subtitle:`Сущность: ${r?.name||e}`,width:`lg`,children:(0,D.jsxs)(`div`,{className:`space-y-5 pb-6`,children:[(0,D.jsxs)(`div`,{className:`p-3 bg-krona-workspace rounded-xl border border-krona-border/80 space-y-2`,children:[(0,D.jsxs)(`div`,{className:`flex items-center justify-between text-xs text-krona-secondary`,children:[(0,D.jsxs)(`span`,{className:`font-semibold text-krona-primary flex items-center gap-1.5`,children:[(0,D.jsx)(u,{className:`w-3.5 h-3.5 text-krona-gold`}),`Интерактивное превью поля`]}),(0,D.jsx)(`div`,{className:`flex gap-1`,children:[`edit`,`readonly`,`create`].map(e=>(0,D.jsx)(`button`,{onClick:()=>R(e),className:`px-2 py-0.5 rounded text-[10px] font-medium uppercase ${L===e?`bg-krona-green text-white`:`bg-krona-surface text-krona-secondary`}`,children:e},e))})]}),(0,D.jsxs)(`div`,{className:`p-3 bg-krona-surface border border-krona-border rounded-lg`,children:[(0,D.jsxs)(`label`,{className:`text-xs font-semibold text-krona-primary block mb-1`,children:[B.label||`Название поля`,B.required&&(0,D.jsx)(`span`,{className:`text-krona-danger ml-1`,children:`*`})]}),L===`readonly`?(0,D.jsx)(`div`,{className:`text-xs text-krona-secondary font-mono bg-krona-workspace p-2 rounded`,children:B.defaultValue?String(B.defaultValue):`— (значение не заполнено)`}):Q.supportsOptions?(0,D.jsx)(`select`,{className:`w-full bg-krona-surface border border-krona-border rounded-md px-3 py-1.5 text-xs text-krona-primary`,children:B.options?.map(e=>(0,D.jsx)(`option`,{value:e.value,children:e.label},e.value))}):(0,D.jsx)(`input`,{type:B.type===`integer`||B.type===`number`?`number`:`text`,placeholder:B.placeholder||`Введите значение...`,className:`w-full bg-krona-surface border border-krona-border rounded-md px-3 py-1.5 text-xs text-krona-primary focus:outline-none focus:border-krona-green`,defaultValue:String(B.defaultValue||``)}),B.description&&(0,D.jsx)(`p`,{className:`text-[11px] text-krona-secondary mt-1`,children:B.description})]})]}),(0,D.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,D.jsx)(`label`,{className:`text-xs font-semibold text-krona-primary`,children:`Тип данных поля (все 39+ типов из спецификации) *`}),(0,D.jsx)(`select`,{value:B.type,onChange:e=>{let t=e.target.value,n=c(t);V(e=>({...e,type:t,defaultValue:n.defaultValue}))},disabled:!!F&&B.system,className:`w-full bg-krona-surface text-krona-primary border border-krona-border rounded-md px-3 py-2 text-xs focus:outline-none focus:border-krona-green`,children:s.map(e=>(0,D.jsx)(`optgroup`,{label:e.label,children:l.filter(t=>t.category===e.id).map(e=>(0,D.jsxs)(`option`,{value:e.type,children:[e.label,` (`,e.type,`)`]},e.type))},e.id))}),(0,D.jsx)(`p`,{className:`text-[11px] text-krona-secondary`,children:Q.description})]}),(0,D.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3`,children:[(0,D.jsx)(g,{label:`Отображаемое название (Label) *`,value:B.label,onChange:e=>V(t=>({...t,label:e.target.value})),placeholder:`Например: Номер договора`,required:!0}),(0,D.jsx)(g,{label:`Системный код (API Name) *`,value:B.key,onChange:e=>V(t=>({...t,key:e.target.value.toLowerCase().replace(/[^a-z0-9_]/g,``)})),placeholder:`contract_number`,disabled:!!F&&B.system,helperText:B.system?`Системный инвариант (неизменяемый)`:void 0,required:!0})]}),(0,D.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3`,children:[(0,D.jsx)(g,{label:`Подсказка (Placeholder)`,value:B.placeholder||``,onChange:e=>V(t=>({...t,placeholder:e.target.value})),placeholder:`Подсказка внутри поля`}),(0,D.jsx)(g,{label:`Значение по умолчанию`,value:String(B.defaultValue||``),onChange:e=>V(t=>({...t,defaultValue:e.target.value})),placeholder:`Значение по умолчанию`})]}),(0,D.jsx)(g,{label:`Описание для пользователя (Tooltip / Helper)`,value:B.description||``,onChange:e=>V(t=>({...t,description:e.target.value})),placeholder:`Пояснение к заполнению поля`}),(0,D.jsxs)(`div`,{className:`space-y-2 p-3.5 bg-krona-workspace rounded-xl border border-krona-border/60`,children:[(0,D.jsx)(`h4`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider mb-2`,children:`Флаги поведения поля`}),(0,D.jsxs)(`div`,{className:`grid grid-cols-2 sm:grid-cols-3 gap-2 text-xs`,children:[(0,D.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer`,children:[(0,D.jsx)(`input`,{type:`checkbox`,checked:B.required||!1,onChange:e=>V(t=>({...t,required:e.target.checked}))}),`Обязательное`]}),(0,D.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer`,children:[(0,D.jsx)(`input`,{type:`checkbox`,checked:B.unique||!1,onChange:e=>V(t=>({...t,unique:e.target.checked}))}),`Уникальное`]}),(0,D.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer`,children:[(0,D.jsx)(`input`,{type:`checkbox`,checked:B.readOnly||!1,onChange:e=>V(t=>({...t,readOnly:e.target.checked}))}),`Только чтение`]}),(0,D.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer`,children:[(0,D.jsx)(`input`,{type:`checkbox`,checked:B.searchable!==!1,onChange:e=>V(t=>({...t,searchable:e.target.checked}))}),`Полнотекстовый поиск`]}),(0,D.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer`,children:[(0,D.jsx)(`input`,{type:`checkbox`,checked:B.filterable!==!1,onChange:e=>V(t=>({...t,filterable:e.target.checked}))}),`Фильтрация в списках`]}),(0,D.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer`,children:[(0,D.jsx)(`input`,{type:`checkbox`,checked:B.sortable!==!1,onChange:e=>V(t=>({...t,sortable:e.target.checked}))}),`Сортировка`]})]})]}),Q.supportsOptions&&(0,D.jsxs)(`div`,{className:`space-y-3 p-3.5 bg-krona-workspace rounded-xl border border-krona-border/60`,children:[(0,D.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,D.jsx)(`h4`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider`,children:`Варианты выбора (Options Editor)`}),(0,D.jsxs)(n,{variant:`secondary`,size:`sm`,onClick:Y,children:[(0,D.jsx)(m,{className:`w-3.5 h-3.5 mr-1`}),`Добавить вариант`]})]}),(0,D.jsx)(`div`,{className:`space-y-2`,children:B.options?.map((e,t)=>(0,D.jsxs)(`div`,{className:`flex items-center gap-2 bg-krona-surface p-2 rounded border border-krona-border`,children:[(0,D.jsx)(g,{value:e.label,onChange:e=>X(t,{label:e.target.value}),placeholder:`Подпись варианта`,className:`text-xs py-1`}),(0,D.jsx)(g,{value:e.value,onChange:e=>X(t,{value:e.target.value}),placeholder:`Код значения`,className:`text-xs py-1 w-32 font-mono`}),(0,D.jsx)(`input`,{type:`color`,value:e.color||`#2F684C`,onChange:e=>X(t,{color:e.target.value}),className:`w-7 h-7 rounded border border-krona-border cursor-pointer p-0 shrink-0`,title:`Цвет бейджа`}),(0,D.jsx)(`button`,{type:`button`,onClick:()=>Z(t),className:`p-1 text-krona-danger hover:bg-krona-danger/10 rounded`,children:(0,D.jsx)(b,{className:`w-3.5 h-3.5`})})]},t))})]}),(0,D.jsxs)(`div`,{className:`space-y-2 p-3.5 bg-krona-workspace rounded-xl border border-krona-border/60`,children:[(0,D.jsx)(`h4`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider mb-2`,children:`Правила валидации (Validation Rules)`}),(0,D.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,D.jsx)(g,{label:`Мин. значение / длина`,type:`number`,value:B.validation?.min??B.validation?.minLength??``,onChange:e=>V(t=>({...t,validation:{...t.validation,min:Number(e.target.value)}}))}),(0,D.jsx)(g,{label:`Макс. значение / длина`,type:`number`,value:B.validation?.max??B.validation?.maxLength??``,onChange:e=>V(t=>({...t,validation:{...t.validation,max:Number(e.target.value)}}))})]}),(0,D.jsx)(g,{label:`RegEx паттерн проверки`,value:B.validation?.pattern||``,onChange:e=>V(t=>({...t,validation:{...t.validation,pattern:e.target.value}})),placeholder:`^[A-Z0-9_-]+$`,className:`font-mono text-xs`})]}),(0,D.jsxs)(`div`,{className:`flex justify-end gap-2 pt-4 border-t border-krona-border/60`,children:[(0,D.jsx)(n,{variant:`outline`,size:`md`,onClick:()=>P(!1),children:`Отмена`}),(0,D.jsx)(n,{variant:`primary`,size:`md`,onClick:K,children:`Сохранить поле`})]})]})})]})};export{O as FieldBuilder,O as default}; \ No newline at end of file diff --git a/dist/assets/FinanceModule-ZDICv-g5.js b/dist/assets/FinanceModule-ZDICv-g5.js deleted file mode 100644 index 491627c..0000000 --- a/dist/assets/FinanceModule-ZDICv-g5.js +++ /dev/null @@ -1 +0,0 @@ -import{f as e,h as t,i as n,l as r,r as i,s as a,t as o}from"./useToast-CS8pZhce.js";import{t as s}from"./building-BdUpGLM5.js";import{t as c}from"./credit-card-6Y5eHPCw.js";import{C as l,K as u,R as d,U as f,Y as p,c as m,l as h,r as g,t as _,y as v}from"./index-CyHCRa3Z.js";import{t as y}from"./currency-DdDs82F5.js";var b={name:`arrow-down-left`,size:24,node:[[`path`,{d:`M17 7 7 17`,key:`15tmo1`}],[`path`,{d:`M17 17H7V7`,key:`1org7z`}]]};b.node;var x=r(b),S={name:`arrow-up-right`,size:24,node:[[`path`,{d:`M7 7h10v10`,key:`1tivn9`}],[`path`,{d:`M7 17 17 7`,key:`1vkiza`}]]};S.node;var C=r(S),w={name:`chart-pie`,size:24,node:[[`path`,{d:`M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z`,key:`pzmjnu`}],[`path`,{d:`M21.21 15.89A10 10 0 1 1 8 2.83`,key:`k2fpak`}]],aliases:[`pie-chart`]};w.node;var T=r(w),E={name:`wallet`,size:24,node:[[`path`,{d:`M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1`,key:`18etb6`}],[`path`,{d:`M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4`,key:`xoc0q4`}]]};E.node;var D=r(E),O=t(e(),1);function k(){let[e,t]=(0,O.useState)([]),[n,r]=(0,O.useState)([]),[i,a]=(0,O.useState)(null),[o,s]=(0,O.useState)(!0),[c,l]=(0,O.useState)(null),d=(0,O.useCallback)(async()=>{try{s(!0),l(null);let[e,n,i]=await Promise.all([u.accounts.list({pageSize:50}),u.transactions.list({pageSize:200}),u.getPnLMetrics()]);t(e.items),r(n.items),a(i)}catch(e){l(e instanceof Error?e:Error(String(e)))}finally{s(!1)}},[]);return(0,O.useEffect)(()=>{let e=!0;return Promise.resolve().then(()=>{e&&d()}),()=>{e=!1}},[d]),f(`records:changed`,e=>{(e.entityType===`account`||e.entityType===`cash_flow_transaction`||e.entityType===`payment`)&&d()}),f(`storage:reset`,d),f(`snapshot:imported`,d),{accounts:e,transactions:n,pnlMetrics:i,loading:o,error:c,refetch:d,createTransactionFromPayment:(0,O.useCallback)(async(e,t,n)=>u.createTransactionFromPayment(e,t,n),[]),createTransactionFromReturn:(0,O.useCallback)(async(e,t,n)=>u.createTransactionFromReturn(e,t,n),[]),createManualTransaction:(0,O.useCallback)(async(e,t,n,r,i)=>{let a=await u.accounts.getById(r),o=a?.name||`Банковский счет`,s=await u.transactions.create({transactionNumber:`CFT-${Date.now().toString().slice(-6)}`,type:e,category:t,amount:n,accountId:r,accountName:o,description:i,timestamp:new Date().toISOString()});if(a){let t=e===`inflow`?a.balance.minor+n.minor:Math.max(0,a.balance.minor-n.minor);await u.accounts.update(r,{balance:{minor:t,currency:a.balance.currency}})}return s},[])}}var A=a(),j=()=>{let{showToast:e}=o(),{accounts:t,transactions:r,pnlMetrics:a,createManualTransaction:u}=k(),[f,b]=(0,O.useState)(`transactions`),[S,w]=(0,O.useState)(``),[E,j]=(0,O.useState)(`all`),[M,N]=(0,O.useState)(!1),[P,F]=(0,O.useState)(`inflow`),[I,L]=(0,O.useState)(`sales_revenue`),[R,z]=(0,O.useState)(15e5),[B,V]=(0,O.useState)(``),[H,U]=(0,O.useState)(``),W=(0,O.useMemo)(()=>r.filter(e=>e.type===`inflow`).reduce((e,t)=>e+t.amount.minor,0),[r]),G=(0,O.useMemo)(()=>r.filter(e=>e.type===`outflow`).reduce((e,t)=>e+t.amount.minor,0),[r]),K=W-G,q=(0,O.useMemo)(()=>[...r].filter(e=>{let t=E===`all`||e.type===E,n=!S||e.description.toLowerCase().includes(S.toLowerCase())||e.transactionNumber.toLowerCase().includes(S.toLowerCase())||e.accountName.toLowerCase().includes(S.toLowerCase());return t&&n}).sort((e,t)=>t.timestamp>e.timestamp?1:-1),[r,E,S]),J=async n=>{n.preventDefault();let r=B||t[0]?.id||`acc_default`;try{await u(P,I,{minor:R,currency:`RUB`},r,H||(P===`inflow`?`Внереализационный доход`:`Хозяйственные расходы`)),e(`Финансовая проводка успешно записана в ДДС!`,`success`),N(!1),U(``)}catch(t){e(`Ошибка: ${t instanceof Error?t.message:String(t)}`,`error`)}},Y=e=>{switch(e){case`sales_revenue`:return`Выручка от продаж (Заказ)`;case`refund`:return`Возврат клиенту (Заказ)`;case`supplier_payment`:return`Оплата поставщику`;case`payroll`:return`Заработная плата`;case`rent`:return`Аренда помещений`;case`taxes`:return`Налоги и сборы`;case`utilities`:return`Коммунальные услуги`;default:return`Прочие операции`}};return(0,A.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,A.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 bg-krona-surface p-3.5 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,A.jsxs)(`div`,{children:[(0,A.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,A.jsx)(`h1`,{className:`text-sm font-bold text-krona-primary`,children:`Финансы, Казначейство & ДДС (Cash Flow)`}),(0,A.jsx)(_,{level:`pilot1`,size:`sm`})]}),(0,A.jsx)(`p`,{className:`text-xs text-krona-secondary mt-0.5`,children:`Сквозной учет движения денежных средств (ДДС): автоматические платежи и возвраты по заказам, балансы расчетных счетов`})]}),(0,A.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,A.jsxs)(n,{variant:`secondary`,size:`sm`,onClick:()=>{F(`outflow`),L(`supplier_payment`),N(!0)},children:[(0,A.jsx)(l,{className:`w-3.5 h-3.5 mr-1`}),` Расходный ордер`]}),(0,A.jsxs)(n,{variant:`primary`,size:`sm`,onClick:()=>{F(`inflow`),L(`sales_revenue`),N(!0)},children:[(0,A.jsx)(l,{className:`w-3.5 h-3.5 mr-1`}),` Приход денег`]})]})]}),(0,A.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-4 gap-3.5`,children:[(0,A.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft`,children:[(0,A.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,A.jsx)(`span`,{className:`text-xs text-krona-secondary font-medium`,children:`Поступления (Inflow)`}),(0,A.jsx)(`div`,{className:`w-7 h-7 rounded-lg bg-emerald-500/10 text-emerald-600 dark:text-emerald-400 flex items-center justify-center`,children:(0,A.jsx)(m,{className:`w-4 h-4`})})]}),(0,A.jsx)(`div`,{className:`text-xl font-bold text-krona-green mt-2`,children:y(W)}),(0,A.jsx)(`div`,{className:`text-[11px] text-krona-secondary mt-1`,children:`Оплаты заказов и выручка`})]}),(0,A.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft`,children:[(0,A.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,A.jsx)(`span`,{className:`text-xs text-krona-secondary font-medium`,children:`Выплаты (Outflow)`}),(0,A.jsx)(`div`,{className:`w-7 h-7 rounded-lg bg-rose-500/10 text-rose-600 dark:text-rose-400 flex items-center justify-center`,children:(0,A.jsx)(h,{className:`w-4 h-4`})})]}),(0,A.jsx)(`div`,{className:`text-xl font-bold text-rose-600 dark:text-rose-400 mt-2`,children:y(G)}),(0,A.jsx)(`div`,{className:`text-[11px] text-krona-secondary mt-1`,children:`Возвраты, закупки, расходы`})]}),(0,A.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft`,children:[(0,A.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,A.jsx)(`span`,{className:`text-xs text-krona-secondary font-medium`,children:`Чистый поток (Net Cash Flow)`}),(0,A.jsx)(`div`,{className:`w-7 h-7 rounded-lg bg-[#2F684C]/10 text-krona-primary flex items-center justify-center`,children:(0,A.jsx)(d,{className:`w-4 h-4`})})]}),(0,A.jsx)(`div`,{className:`text-xl font-bold mt-2 ${K>=0?`text-krona-green`:`text-rose-600 dark:text-rose-400`}`,children:y(K)}),(0,A.jsx)(`div`,{className:`text-[11px] text-krona-secondary mt-1`,children:`Сальдо движения денег`})]}),(0,A.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft`,children:[(0,A.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,A.jsx)(`span`,{className:`text-xs text-krona-secondary font-medium`,children:`Рентабельность (P&L Margin)`}),(0,A.jsx)(`div`,{className:`w-7 h-7 rounded-lg bg-amber-500/10 text-amber-600 flex items-center justify-center`,children:(0,A.jsx)(T,{className:`w-4 h-4`})})]}),(0,A.jsx)(`div`,{className:`text-xl font-bold text-krona-primary mt-2`,children:a?`${a.operatingMarginPercent}%`:`58.0%`}),(0,A.jsx)(`div`,{className:`text-[11px] text-krona-secondary mt-1`,children:`Маржинальность операций`})]})]}),(0,A.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-3 gap-3`,children:t.map(e=>(0,A.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl p-3.5 shadow-krona-soft flex items-center justify-between`,children:[(0,A.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,A.jsx)(`div`,{className:`w-9 h-9 rounded-lg bg-krona-workspace text-krona-primary flex items-center justify-center border border-krona-border`,children:e.type===`bank`?(0,A.jsx)(s,{className:`w-4 h-4`}):e.type===`cash_desk`?(0,A.jsx)(D,{className:`w-4 h-4`}):(0,A.jsx)(c,{className:`w-4 h-4`})}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`div`,{className:`text-xs font-bold text-krona-primary`,children:e.name}),(0,A.jsx)(`div`,{className:`text-[11px] text-krona-secondary`,children:e.type===`bank`?`Расчетный счет`:e.type===`cash_desk`?`Операционная касса`:`Эквайринг`})]})]}),(0,A.jsxs)(`div`,{className:`text-right`,children:[(0,A.jsx)(`div`,{className:`text-sm font-bold text-krona-green`,children:y(e.balance.minor)}),(0,A.jsx)(i,{variant:e.isDefault?`gold`:`gray`,size:`sm`,children:e.isDefault?`Основной`:`Активен`})]})]},e.id))}),(0,A.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3`,children:[(0,A.jsxs)(`div`,{className:`flex items-center gap-1.5 overflow-x-auto text-xs`,children:[(0,A.jsxs)(`button`,{onClick:()=>b(`transactions`),className:`px-3 py-1.5 rounded-lg font-medium transition-colors ${f===`transactions`?`bg-krona-green text-white shadow-sm`:`bg-krona-surface text-krona-secondary hover:text-krona-primary border border-krona-border`}`,children:[`Движение денежных средств (ДДС) (`,r.length,`)`]}),(0,A.jsx)(`button`,{onClick:()=>b(`pnl`),className:`px-3 py-1.5 rounded-lg font-medium transition-colors ${f===`pnl`?`bg-krona-green text-white shadow-sm`:`bg-krona-surface text-krona-secondary hover:text-krona-primary border border-krona-border`}`,children:`Отчет о прибылях и убытках (P&L)`}),(0,A.jsxs)(`button`,{onClick:()=>b(`accounts`),className:`px-3 py-1.5 rounded-lg font-medium transition-colors ${f===`accounts`?`bg-krona-green text-white shadow-sm`:`bg-krona-surface text-krona-secondary hover:text-krona-primary border border-krona-border`}`,children:[`Банковские счета и кассы (`,t.length,`)`]})]}),f===`transactions`&&(0,A.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,A.jsxs)(`select`,{value:E,onChange:e=>j(e.target.value),className:`px-2.5 py-1.5 text-xs bg-krona-surface border border-krona-border rounded-lg text-krona-primary focus:outline-none`,children:[(0,A.jsx)(`option`,{value:`all`,children:`Все операции`}),(0,A.jsx)(`option`,{value:`inflow`,children:`Только приход (+)`}),(0,A.jsx)(`option`,{value:`outflow`,children:`Только расход (-)`})]}),(0,A.jsxs)(`div`,{className:`relative w-56`,children:[(0,A.jsx)(v,{className:`w-3.5 h-3.5 absolute left-2.5 top-2.5 text-krona-secondary`}),(0,A.jsx)(`input`,{type:`text`,value:S,onChange:e=>w(e.target.value),placeholder:`Поиск по описанию, счету...`,className:`w-full pl-8 pr-3 py-1.5 text-xs bg-krona-surface border border-krona-border rounded-lg text-krona-primary focus:outline-none`})]})]})]}),f===`transactions`&&(0,A.jsx)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft overflow-hidden`,children:(0,A.jsxs)(`table`,{className:`w-full text-xs text-left`,children:[(0,A.jsx)(`thead`,{className:`bg-krona-workspace text-krona-secondary border-b border-krona-border`,children:(0,A.jsxs)(`tr`,{children:[(0,A.jsx)(`th`,{className:`p-3 font-semibold`,children:`Номер транзакции`}),(0,A.jsx)(`th`,{className:`p-3 font-semibold`,children:`Дата и время`}),(0,A.jsx)(`th`,{className:`p-3 font-semibold`,children:`Тип операции`}),(0,A.jsx)(`th`,{className:`p-3 font-semibold`,children:`Статья / Категория`}),(0,A.jsx)(`th`,{className:`p-3 font-semibold`,children:`Счет / Касса`}),(0,A.jsx)(`th`,{className:`p-3 font-semibold`,children:`Основание / Описание`}),(0,A.jsx)(`th`,{className:`p-3 font-semibold text-right`,children:`Сумма`})]})}),(0,A.jsxs)(`tbody`,{className:`divide-y divide-krona-border`,children:[q.map(e=>(0,A.jsxs)(`tr`,{className:`hover:bg-krona-workspace/50 transition-colors`,children:[(0,A.jsx)(`td`,{className:`p-3 font-mono font-bold text-krona-primary`,children:e.transactionNumber}),(0,A.jsx)(`td`,{className:`p-3 font-mono text-krona-secondary`,children:p(e.timestamp)}),(0,A.jsx)(`td`,{className:`p-3`,children:e.type===`inflow`?(0,A.jsxs)(`span`,{className:`inline-flex items-center gap-1 font-bold text-emerald-600 dark:text-emerald-400 bg-emerald-500/10 px-2 py-0.5 rounded text-[11px]`,children:[(0,A.jsx)(x,{className:`w-3 h-3`}),` Приход (+)`]}):(0,A.jsxs)(`span`,{className:`inline-flex items-center gap-1 font-bold text-rose-600 dark:text-rose-400 bg-rose-500/10 px-2 py-0.5 rounded text-[11px]`,children:[(0,A.jsx)(C,{className:`w-3 h-3`}),` Расход (-)`]})}),(0,A.jsx)(`td`,{className:`p-3 text-krona-primary font-medium`,children:Y(e.category)}),(0,A.jsx)(`td`,{className:`p-3 text-krona-secondary`,children:e.accountName}),(0,A.jsx)(`td`,{className:`p-3 text-krona-secondary`,children:e.description}),(0,A.jsx)(`td`,{className:`p-3 text-right font-bold font-mono`,children:(0,A.jsxs)(`span`,{className:e.type===`inflow`?`text-krona-green`:`text-rose-600 dark:text-rose-400`,children:[e.type===`inflow`?`+`:`-`,y(e.amount.minor)]})})]},e.id)),q.length===0&&(0,A.jsx)(`tr`,{children:(0,A.jsx)(`td`,{colSpan:7,className:`p-8 text-center text-krona-secondary text-xs italic`,children:`Финансовые проводки не найдены`})})]})]})}),f===`pnl`&&(0,A.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft p-5 space-y-4 max-w-3xl`,children:[(0,A.jsxs)(`div`,{className:`border-b border-krona-border pb-3`,children:[(0,A.jsx)(`h2`,{className:`text-sm font-bold text-krona-primary`,children:`Отчет о финансовых результатах (P&L / ОПУ)`}),(0,A.jsx)(`p`,{className:`text-xs text-krona-secondary mt-0.5`,children:`Текущий отчетный период на базе реальных проведенных операций в системе Krona`})]}),(0,A.jsxs)(`div`,{className:`space-y-2 text-xs`,children:[(0,A.jsxs)(`div`,{className:`flex justify-between items-center py-2 border-b border-krona-border/60`,children:[(0,A.jsx)(`span`,{className:`font-semibold text-krona-primary`,children:`1. Выручка от продаж (Revenue)`}),(0,A.jsx)(`span`,{className:`font-bold text-krona-green text-sm`,children:y(a?.revenue.minor||W)})]}),(0,A.jsxs)(`div`,{className:`flex justify-between items-center py-2 border-b border-krona-border/60 text-krona-secondary pl-4`,children:[(0,A.jsx)(`span`,{children:`Себестоимость проданных товаров (COGS, 42%)`}),(0,A.jsxs)(`span`,{children:[`-`,y(a?.costOfGoodsSold.minor||Math.round(W*.42))]})]}),(0,A.jsxs)(`div`,{className:`flex justify-between items-center py-2 bg-krona-workspace px-3 rounded-lg font-bold text-krona-primary`,children:[(0,A.jsx)(`span`,{children:`2. Валовая прибыль (Gross Profit)`}),(0,A.jsx)(`span`,{className:`text-krona-green`,children:y(a?.grossProfit.minor||Math.round(W*.58))})]}),(0,A.jsxs)(`div`,{className:`flex justify-between items-center py-2 border-b border-krona-border/60 text-krona-secondary pl-4`,children:[(0,A.jsx)(`span`,{children:`Операционные и административные расходы (OPEX)`}),(0,A.jsxs)(`span`,{children:[`-`,y(a?.operatingExpenses.minor||G)]})]}),(0,A.jsxs)(`div`,{className:`flex justify-between items-center py-3 bg-emerald-500/10 px-4 rounded-xl font-bold text-sm text-krona-primary border border-emerald-500/30`,children:[(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`div`,{children:`3. Чистая прибыль (Net Profit)`}),(0,A.jsxs)(`div`,{className:`text-[11px] font-normal text-krona-secondary`,children:[`Рентабельность: `,a?.operatingMarginPercent||58,`%`]})]}),(0,A.jsx)(`div`,{className:`text-krona-green text-base`,children:y(a?.netProfit.minor||W-G)})]})]})]}),f===`accounts`&&(0,A.jsx)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft overflow-hidden`,children:(0,A.jsxs)(`table`,{className:`w-full text-xs text-left`,children:[(0,A.jsx)(`thead`,{className:`bg-krona-workspace text-krona-secondary border-b border-krona-border`,children:(0,A.jsxs)(`tr`,{children:[(0,A.jsx)(`th`,{className:`p-3 font-semibold`,children:`Наименование счета`}),(0,A.jsx)(`th`,{className:`p-3 font-semibold`,children:`Тип счета`}),(0,A.jsx)(`th`,{className:`p-3 font-semibold`,children:`Банк`}),(0,A.jsx)(`th`,{className:`p-3 font-semibold`,children:`Номер счета`}),(0,A.jsx)(`th`,{className:`p-3 font-semibold`,children:`Текущий баланс`}),(0,A.jsx)(`th`,{className:`p-3 font-semibold text-center`,children:`Статус`})]})}),(0,A.jsx)(`tbody`,{className:`divide-y divide-krona-border`,children:t.map(e=>(0,A.jsxs)(`tr`,{className:`hover:bg-krona-workspace/50 transition-colors`,children:[(0,A.jsx)(`td`,{className:`p-3 font-bold text-krona-primary`,children:e.name}),(0,A.jsx)(`td`,{className:`p-3 text-krona-secondary`,children:e.type===`bank`?`Расчетный счет`:e.type===`cash_desk`?`Касса`:`Эквайринг`}),(0,A.jsx)(`td`,{className:`p-3 text-krona-secondary`,children:e.bankName||`ПАО Сбербанк`}),(0,A.jsx)(`td`,{className:`p-3 font-mono text-krona-secondary`,children:e.accountNumber||`40702810900000012345`}),(0,A.jsx)(`td`,{className:`p-3 font-bold text-krona-green text-sm`,children:y(e.balance.minor)}),(0,A.jsx)(`td`,{className:`p-3 text-center`,children:(0,A.jsx)(i,{variant:e.isDefault?`gold`:`green`,size:`sm`,children:e.isDefault?`Основной`:`Активен`})})]},e.id))})]})}),(0,A.jsx)(g,{isOpen:M,onClose:()=>N(!1),title:P===`inflow`?`Оформление прихода денежных средств`:`Оформление расходного кассового ордера`,size:`md`,children:(0,A.jsxs)(`form`,{onSubmit:J,className:`space-y-4 text-xs`,children:[(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Счет / Касса:`}),(0,A.jsx)(`select`,{value:B,onChange:e=>V(e.target.value),className:`w-full px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary`,children:t.map(e=>(0,A.jsxs)(`option`,{value:e.id,children:[e.name,` (остаток: `,y(e.balance.minor),`)`]},e.id))})]}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Категория операции:`}),(0,A.jsx)(`select`,{value:I,onChange:e=>L(e.target.value),className:`w-full px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary`,children:P===`inflow`?(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(`option`,{value:`sales_revenue`,children:`Выручка от продаж`}),(0,A.jsx)(`option`,{value:`other`,children:`Прочие поступления`})]}):(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(`option`,{value:`supplier_payment`,children:`Оплата поставщику`}),(0,A.jsx)(`option`,{value:`refund`,children:`Возврат средств покупателю`}),(0,A.jsx)(`option`,{value:`payroll`,children:`Заработная плата`}),(0,A.jsx)(`option`,{value:`rent`,children:`Аренда`}),(0,A.jsx)(`option`,{value:`taxes`,children:`Налоги`}),(0,A.jsx)(`option`,{value:`utilities`,children:`Коммунальные платежи`}),(0,A.jsx)(`option`,{value:`other`,children:`Хозяйственные расходы`})]})})]}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Сумма (в копейках):`}),(0,A.jsx)(`input`,{type:`number`,min:100,step:100,value:R,onChange:e=>z(Number(e.target.value)||0),className:`w-full px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary font-bold`}),(0,A.jsxs)(`div`,{className:`text-[11px] text-krona-secondary mt-1`,children:[`Эквивалент:`,` `,(0,A.jsx)(`strong`,{className:`text-krona-green`,children:y(R)})]})]}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Назначение платежа / Комментарий:`}),(0,A.jsx)(`input`,{type:`text`,required:!0,value:H,onChange:e=>U(e.target.value),placeholder:`Например: Оплата счета за кофе по договору...`,className:`w-full px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary`})]}),(0,A.jsxs)(`div`,{className:`flex justify-end gap-2 pt-2 border-t border-krona-border`,children:[(0,A.jsx)(n,{variant:`secondary`,size:`sm`,type:`button`,onClick:()=>N(!1),children:`Отмена`}),(0,A.jsx)(n,{variant:`primary`,size:`sm`,type:`submit`,children:`Провести операцию`})]})]})})]})};export{j as FinanceModule}; \ No newline at end of file diff --git a/dist/assets/FormBuilder-CvE6nXw9.js b/dist/assets/FormBuilder-CvE6nXw9.js deleted file mode 100644 index 295c144..0000000 --- a/dist/assets/FormBuilder-CvE6nXw9.js +++ /dev/null @@ -1 +0,0 @@ -import{f as e,h as t,i as n,l as r,r as i,s as a,t as o}from"./useToast-CS8pZhce.js";import{r as s}from"./fieldTypesMeta-BFbkZTaX.js";import{t as c}from"./eye-CkF1gwUX.js";import{n as l,t as u}from"./move-up-qiRY8MuU.js";import{t as d}from"./save-D8euL60I.js";import{B as f,C as ee,D as te,H as p,a as m,d as h,et as g,m as ne,n as re,tt as _,u as v,w as y,y as b}from"./index-CyHCRa3Z.js";var x={name:`redo-2`,size:24,node:[[`path`,{d:`m15 14 5-5-5-5`,key:`12vg1m`}],[`path`,{d:`M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13`,key:`6uklza`}]]};x.node;var S=r(x),C={name:`undo-2`,size:24,node:[[`path`,{d:`M9 14 4 9l5-5`,key:`102s5s`}],[`path`,{d:`M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11`,key:`f3b9sd`}]]};C.node;var w=r(C),T=t(e(),1);function E(){let[e,t]=(0,T.useState)(null),[n,r]=(0,T.useState)(!1),[i,a]=(0,T.useState)([]),[o,s]=(0,T.useState)(-1),c=(0,T.useCallback)(e=>{t(e),a([e]),s(0),r(!1)},[]),l=(0,T.useCallback)(e=>{a(t=>{let n=[...t.slice(0,o+1),e];return n.length>50&&n.shift(),n}),s(e=>Math.min(e+1,49)),t(e),r(!0)},[o]),u=(0,T.useCallback)(()=>{if(o>0){let e=o-1;s(e),t(i[e]),r(!0)}},[o,i]),d=(0,T.useCallback)(()=>{if(o{let e=e=>{(e.ctrlKey||e.metaKey)&&e.key===`z`&&!e.shiftKey?(e.preventDefault(),u()):((e.ctrlKey||e.metaKey)&&e.key===`y`||(e.ctrlKey||e.metaKey)&&e.shiftKey&&e.key===`z`)&&(e.preventDefault(),d())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[u,d]),{currentLayout:e,setCurrentLayout:t,isDirty:n,setIsDirty:r,history:i,historyIndex:o,pushState:l,handleUndo:u,handleRedo:d,initHistory:c,canUndo:o>0,canRedo:o{let{entityCode:e}=_(),t=g(),{currentEntity:r,layouts:a,saveLayout:x}=p(e),{showToast:C}=o(),[O,k]=(0,T.useState)(`desktop`),[A,j]=(0,T.useState)(!1),[M,ie]=(0,T.useState)(``),[N,P]=(0,T.useState)(null),[F,I]=(0,T.useState)({}),{currentLayout:L,isDirty:R,setIsDirty:z,history:B,historyIndex:V,pushState:H,handleUndo:U,handleRedo:W,initHistory:G}=E();(0,T.useEffect)(()=>{r&&!L&&Promise.resolve().then(()=>{let t=a.find(t=>t.entityCode===e&&t.isDefault)||a[0];if(t)G(t);else{let t={id:`layout_${e}_default`,entityCode:e||``,name:`Основная форма`,isDefault:!0,type:`form`,sections:[{id:`sec_main`,title:`Основные сведения`,columns:2,fieldKeys:r.fields.map(e=>e.key)}]};G(t)}})},[r,a,e,L,G]);let K=(0,T.useMemo)(()=>r?.fields||[],[r]),q=(0,T.useMemo)(()=>{let e=new Map;return K.forEach(t=>e.set(t.key,t)),e},[K]),J=(0,T.useMemo)(()=>{let e=new Set;return L?.sections.forEach(t=>{t.fieldKeys.forEach(t=>e.add(t))}),e},[L]),ae=(0,T.useMemo)(()=>K.filter(e=>e.label.toLowerCase().includes(M.toLowerCase())||e.key.toLowerCase().includes(M.toLowerCase())||e.type.toLowerCase().includes(M.toLowerCase())),[K,M]),oe=(e,t)=>{if(!L)return;let n=t?L.sections.find(e=>e.id===t):L.sections[0];if(!n)return;let r=L.sections.map(t=>t.id===n.id&&!t.fieldKeys.includes(e)?{...t,fieldKeys:[...t.fieldKeys,e]}:t);H({...L,sections:r})},se=(e,t)=>{if(!L)return;let n=L.sections.map(n=>n.id===e?{...n,fieldKeys:n.fieldKeys.filter(e=>e!==t)}:n);N===t&&P(null),H({...L,sections:n})},Y=(e,t,n)=>{if(!L)return;let r=L.sections.map(r=>{if(r.id===e){let e=[...r.fieldKeys],[i]=e.splice(t,1);return e.splice(n,0,i),{...r,fieldKeys:e}}return r});H({...L,sections:r})},ce=(e,t,n)=>{if(!L||e===t)return;let r=L.sections.map(r=>r.id===e?{...r,fieldKeys:r.fieldKeys.filter(e=>e!==n)}:r.id===t?{...r,fieldKeys:[...r.fieldKeys,n]}:r);H({...L,sections:r})},le=()=>{if(!L)return;let e={id:`sec_${Date.now().toString(36)}`,title:`Новая секция ${L.sections.length+1}`,columns:2,fieldKeys:[]};H({...L,sections:[...L.sections,e]})},X=(e,t)=>{if(!L)return;let n=L.sections.map(n=>n.id===e?{...n,...t}:n);H({...L,sections:n})},ue=e=>{if(!L||L.sections.length<=1){C({type:`error`,title:`Форма должна содержать минимум одну секцию`});return}let t=L.sections.filter(t=>t.id!==e);H({...L,sections:t})},Z=(e,t)=>{if(!L)return;let n=[...L.sections],[r]=n.splice(e,1);n.splice(t,0,r),H({...L,sections:n})},de=async()=>{if(L)try{await x(L),z(!1),C({type:`success`,title:`Макет формы успешно сохранён`})}catch(e){C({type:`error`,title:`Ошибка сохранения макета`,message:e instanceof Error?e.message:String(e)})}},fe={desktop:`w-full max-w-5xl`,tablet:`w-full max-w-[768px]`,mobile:`w-full max-w-[390px]`}[O],Q=N?q.get(N):null,$=N&&F[N]||{};return(0,D.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,D.jsxs)(`div`,{className:`flex flex-col md:flex-row md:items-center justify-between gap-3 p-4 bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,D.jsxs)(n,{variant:`ghost`,size:`sm`,onClick:()=>t(`/settings/entities`),className:`p-1.5`,children:[(0,D.jsx)(f,{className:`w-4 h-4 mr-1`}),`Каталог`]}),(0,D.jsxs)(`div`,{children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,D.jsxs)(`h1`,{className:`text-base font-bold text-krona-primary`,children:[`Конструктор форм: `,r?.name||e]}),R&&(0,D.jsx)(i,{variant:`warning`,size:`sm`,children:`Несохранённые изменения`})]}),(0,D.jsx)(`p`,{className:`text-xs text-krona-secondary`,children:`Визуальное проектирование экранных форм, секций, колонок и адаптивности`})]})]}),(0,D.jsxs)(`div`,{className:`flex items-center flex-wrap gap-2`,children:[(0,D.jsxs)(`div`,{className:`flex items-center bg-krona-workspace rounded-lg border border-krona-border/80 p-0.5`,children:[(0,D.jsx)(`button`,{onClick:U,disabled:V<=0,className:`p-1.5 rounded text-krona-secondary hover:text-krona-primary disabled:opacity-30 disabled:cursor-not-allowed`,title:`Отменить (Ctrl+Z)`,children:(0,D.jsx)(w,{className:`w-4 h-4`})}),(0,D.jsx)(`button`,{onClick:W,disabled:V>=B.length-1,className:`p-1.5 rounded text-krona-secondary hover:text-krona-primary disabled:opacity-30 disabled:cursor-not-allowed`,title:`Повторить (Ctrl+Y)`,children:(0,D.jsx)(S,{className:`w-4 h-4`})})]}),(0,D.jsxs)(`div`,{className:`flex items-center bg-krona-workspace rounded-lg border border-krona-border/80 p-0.5`,children:[(0,D.jsx)(`button`,{onClick:()=>k(`desktop`),className:`p-1.5 rounded ${O===`desktop`?`bg-krona-surface text-krona-green shadow-sm`:`text-krona-secondary`}`,title:`Десктоп (1440px)`,children:(0,D.jsx)(y,{className:`w-4 h-4`})}),(0,D.jsx)(`button`,{onClick:()=>k(`tablet`),className:`p-1.5 rounded ${O===`tablet`?`bg-krona-surface text-krona-green shadow-sm`:`text-krona-secondary`}`,title:`Планшет (768px)`,children:(0,D.jsx)(h,{className:`w-4 h-4`})}),(0,D.jsx)(`button`,{onClick:()=>k(`mobile`),className:`p-1.5 rounded ${O===`mobile`?`bg-krona-surface text-krona-green shadow-sm`:`text-krona-secondary`}`,title:`Мобильный (390px)`,children:(0,D.jsx)(ne,{className:`w-4 h-4`})})]}),(0,D.jsxs)(n,{variant:A?`secondary`:`outline`,size:`sm`,onClick:()=>j(!A),children:[(0,D.jsx)(c,{className:`w-3.5 h-3.5 mr-1 text-krona-gold`}),A?`В редактор`:`Предпросмотр`]}),(0,D.jsxs)(n,{variant:`primary`,size:`sm`,onClick:de,disabled:!R&&!L,children:[(0,D.jsx)(d,{className:`w-3.5 h-3.5 mr-1`}),`Сохранить`]})]})]}),(0,D.jsxs)(`div`,{className:`grid grid-cols-1 lg:grid-cols-12 gap-4 items-start`,children:[!A&&(0,D.jsxs)(`div`,{className:`lg:col-span-3 bg-krona-surface border border-krona-border rounded-xl p-3.5 shadow-krona-soft space-y-3 sticky top-4`,children:[(0,D.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,D.jsxs)(`span`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider flex items-center gap-1.5`,children:[(0,D.jsx)(te,{className:`w-3.5 h-3.5 text-krona-green`}),`Палитра полей`]}),(0,D.jsx)(i,{variant:`neutral`,size:`sm`,children:K.length})]}),(0,D.jsx)(`div`,{className:`relative`,children:(0,D.jsx)(m,{value:M,onChange:e=>ie(e.target.value),placeholder:`Поиск полей...`,icon:(0,D.jsx)(b,{className:`w-3 h-3`}),className:`text-xs py-1`})}),(0,D.jsx)(`div`,{className:`space-y-1.5 max-h-[520px] overflow-y-auto pr-1`,children:ae.map(e=>{let t=J.has(e.key),n=s(e.type).icon;return(0,D.jsxs)(`div`,{className:`flex items-center justify-between p-2 rounded-lg border text-xs transition-all ${t?`bg-krona-workspace/40 border-krona-border/40 opacity-60`:`bg-krona-surface border-krona-border hover:border-krona-green hover:shadow-xs`}`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,D.jsx)(`div`,{className:`w-6 h-6 rounded bg-krona-workspace flex items-center justify-center shrink-0 border border-krona-border/50`,children:(0,D.jsx)(n,{className:`w-3 h-3 text-krona-green`})}),(0,D.jsxs)(`div`,{className:`min-w-0`,children:[(0,D.jsx)(`p`,{className:`font-medium text-krona-primary truncate leading-snug`,children:e.label}),(0,D.jsx)(`p`,{className:`font-mono text-[10px] text-krona-secondary truncate`,children:e.key})]})]}),(0,D.jsx)(`button`,{type:`button`,disabled:t,onClick:()=>oe(e.key),className:`px-2 py-1 rounded text-[10px] font-semibold shrink-0 cursor-pointer ${t?`text-krona-secondary cursor-not-allowed`:`bg-krona-green/10 text-krona-green hover:bg-krona-green hover:text-white`}`,title:t?`Уже на форме`:`Добавить в секцию`,children:t?`Добавлено`:`+ Добавить`})]},e.key)})}),(0,D.jsx)(`div`,{className:`pt-2 border-t border-krona-border/60`,children:(0,D.jsxs)(n,{variant:`outline`,size:`sm`,className:`w-full text-xs`,onClick:le,children:[(0,D.jsx)(ee,{className:`w-3.5 h-3.5 mr-1`}),`Создать секцию`]})})]}),(0,D.jsx)(`div`,{className:`${A?`lg:col-span-12`:`lg:col-span-9`} flex flex-col items-center transition-all`,children:(0,D.jsxs)(`div`,{className:`${fe} transition-all duration-200 space-y-4`,children:[(0,D.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-1.5 bg-krona-surface-muted/60 border border-krona-border rounded-lg text-xs text-krona-secondary`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,D.jsxs)(`span`,{className:`font-semibold text-krona-primary capitalize`,children:[`Режим: `,O]}),(0,D.jsx)(`span`,{children:`•`}),(0,D.jsx)(`span`,{children:O===`desktop`?`1440px`:O===`tablet`?`768px`:`390px`})]}),A&&(0,D.jsx)(i,{variant:`gold`,size:`sm`,children:`Режим интерактивного тестирования`})]}),L?.sections.map((e,t)=>{let n={1:`grid-cols-1`,2:`grid-cols-1 md:grid-cols-2`,3:`grid-cols-1 md:grid-cols-3`,4:`grid-cols-1 md:grid-cols-4`}[O===`mobile`?1:e.columns];return(0,D.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft space-y-3`,children:[(0,D.jsxs)(`div`,{className:`flex items-center justify-between gap-2 pb-2 border-b border-krona-border/60`,children:[A?(0,D.jsx)(`h3`,{className:`font-semibold text-sm text-krona-primary`,children:e.title}):(0,D.jsx)(`div`,{className:`flex items-center gap-2 flex-1`,children:(0,D.jsx)(`input`,{type:`text`,value:e.title,onChange:t=>X(e.id,{title:t.target.value}),className:`font-semibold text-sm text-krona-primary bg-transparent border-b border-transparent hover:border-krona-border focus:border-krona-green focus:outline-none px-1 py-0.5 rounded`})}),!A&&(0,D.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,D.jsx)(`div`,{className:`flex items-center gap-1 bg-krona-workspace rounded p-0.5 border border-krona-border`,children:[1,2,3,4].map(t=>(0,D.jsxs)(`button`,{onClick:()=>X(e.id,{columns:t}),className:`px-1.5 py-0.5 text-[10px] font-bold rounded ${e.columns===t?`bg-krona-green text-white`:`text-krona-secondary hover:text-krona-primary`}`,title:`${t} колонок`,children:[t,`C`]},t))}),(0,D.jsx)(`button`,{onClick:()=>Z(t,t-1),disabled:t===0,className:`p-1 text-krona-secondary hover:text-krona-primary disabled:opacity-30`,title:`Переместить секцию вверх`,children:(0,D.jsx)(u,{className:`w-3.5 h-3.5`})}),(0,D.jsx)(`button`,{onClick:()=>Z(t,t+1),disabled:t===L.sections.length-1,className:`p-1 text-krona-secondary hover:text-krona-primary disabled:opacity-30`,title:`Переместить секцию вниз`,children:(0,D.jsx)(l,{className:`w-3.5 h-3.5`})}),(0,D.jsx)(`button`,{onClick:()=>ue(e.id),className:`p-1 text-krona-danger hover:bg-krona-danger/10 rounded`,title:`Удалить секцию`,children:(0,D.jsx)(v,{className:`w-3.5 h-3.5`})})]})]}),(0,D.jsxs)(`div`,{className:`grid ${n} gap-3 min-h-[50px]`,children:[e.fieldKeys.map((t,n)=>{let r=q.get(t);if(!r)return null;let a=s(r.type),o=a.icon,c=F[t]||{},l=N===t;return A?(0,D.jsxs)(`div`,{className:`p-3 bg-krona-workspace/40 rounded-lg border border-krona-border/60 space-y-1`,children:[(0,D.jsxs)(`label`,{className:`text-xs font-semibold text-krona-primary block`,children:[c.label||r.label,(c.required??r.required)&&(0,D.jsx)(`span`,{className:`text-krona-danger ml-1`,children:`*`})]}),r.type===`status`||r.type===`select`?(0,D.jsxs)(`select`,{className:`w-full bg-krona-surface border border-krona-border rounded-md px-2.5 py-1.5 text-xs text-krona-primary`,children:[(0,D.jsx)(`option`,{value:``,children:`Выберите вариант...`}),r.options?.map(e=>(0,D.jsx)(`option`,{value:e.value,children:e.label},e.value))]}):r.type===`boolean`?(0,D.jsxs)(`div`,{className:`flex items-center gap-2 pt-1`,children:[(0,D.jsx)(`input`,{type:`checkbox`,className:`rounded text-krona-green`}),(0,D.jsx)(`span`,{className:`text-xs text-krona-secondary`,children:`Да / Нет`})]}):r.type===`long_text`||r.type===`rich_text`?(0,D.jsx)(`textarea`,{placeholder:c.placeholder||r.placeholder||`Введите текст...`,className:`w-full bg-krona-surface border border-krona-border rounded-md px-2.5 py-1.5 text-xs text-krona-primary`,rows:2}):(0,D.jsx)(`input`,{type:r.type===`number`||r.type===`integer`?`number`:`text`,placeholder:c.placeholder||r.placeholder||`Значение...`,className:`w-full bg-krona-surface border border-krona-border rounded-md px-2.5 py-1.5 text-xs text-krona-primary`}),(c.helpText||r.description)&&(0,D.jsx)(`p`,{className:`text-[10px] text-krona-secondary`,children:c.helpText||r.description})]},t):(0,D.jsxs)(`div`,{onClick:()=>P(t),className:`flex flex-col justify-between p-3 rounded-lg border text-xs cursor-pointer transition-all ${l?`bg-krona-green/5 border-krona-green ring-1 ring-krona-green`:`bg-krona-workspace/60 border-krona-border hover:border-krona-secondary`}`,children:[(0,D.jsxs)(`div`,{className:`flex items-start justify-between gap-1.5 mb-2`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,D.jsx)(`div`,{className:`w-6 h-6 rounded bg-krona-surface flex items-center justify-center border border-krona-border/60 shrink-0`,children:(0,D.jsx)(o,{className:`w-3.5 h-3.5 text-krona-green`})}),(0,D.jsxs)(`div`,{className:`min-w-0`,children:[(0,D.jsxs)(`span`,{className:`font-semibold text-krona-primary truncate block`,children:[c.label||r.label,(c.required??r.required)&&(0,D.jsx)(`span`,{className:`text-krona-danger ml-0.5`,children:`*`})]}),(0,D.jsx)(`span`,{className:`font-mono text-[10px] text-krona-secondary block truncate`,children:r.key})]})]}),(0,D.jsx)(i,{variant:`neutral`,size:`sm`,className:`text-[10px] shrink-0`,children:a.label})]}),(0,D.jsxs)(`div`,{className:`flex items-center justify-between pt-1 border-t border-krona-border/40 text-[11px] text-krona-secondary`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,D.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),Y(e.id,n,Math.max(0,n-1))},disabled:n===0,className:`p-0.5 hover:text-krona-primary disabled:opacity-20`,title:`Переместить влево/вверх`,children:`←`}),(0,D.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),Y(e.id,n,Math.min(e.fieldKeys.length-1,n+1))},disabled:n===e.fieldKeys.length-1,className:`p-0.5 hover:text-krona-primary disabled:opacity-20`,title:`Переместить вправо/вниз`,children:`→`})]}),(0,D.jsxs)(`div`,{className:`flex items-center gap-1`,children:[L.sections.length>1&&(0,D.jsxs)(`select`,{onClick:e=>e.stopPropagation(),onChange:n=>{ce(e.id,n.target.value,t)},value:``,className:`text-[10px] bg-krona-surface border border-krona-border rounded px-1 py-0.5`,title:`Перенести в другую секцию`,children:[(0,D.jsx)(`option`,{value:``,disabled:!0,children:`Перенести...`}),L.sections.filter(t=>t.id!==e.id).map(e=>(0,D.jsx)(`option`,{value:e.id,children:e.title},e.id))]}),(0,D.jsx)(`button`,{type:`button`,onClick:n=>{n.stopPropagation(),se(e.id,t)},className:`p-0.5 text-krona-danger hover:bg-krona-danger/10 rounded`,title:`Убрать с формы`,children:(0,D.jsx)(v,{className:`w-3 h-3`})})]})]})]},t)}),e.fieldKeys.length===0&&!A&&(0,D.jsx)(`div`,{className:`col-span-full py-6 text-center border border-dashed border-krona-border rounded-lg text-xs text-krona-secondary`,children:`Секция пуста. Нажмите «+ Добавить» в левой палитре полей.`})]})]},e.id)})]})})]}),(0,D.jsx)(re,{isOpen:!!Q&&!A,onClose:()=>P(null),title:Q?`Свойства поля: ${Q.label}`:`Свойства`,subtitle:`Код: ${N} | Тип: ${Q?.type}`,width:`md`,children:Q&&(0,D.jsxs)(`div`,{className:`space-y-4 text-xs`,children:[(0,D.jsx)(m,{label:`Пользовательский заголовок (Label Override)`,value:$.label??Q.label,onChange:e=>I(t=>({...t,[Q.key]:{...t[Q.key],label:e.target.value}})),placeholder:Q.label}),(0,D.jsx)(m,{label:`Подсказка (Placeholder)`,value:$.placeholder??Q.placeholder??``,onChange:e=>I(t=>({...t,[Q.key]:{...t[Q.key],placeholder:e.target.value}})),placeholder:`Введите текст подсказки...`}),(0,D.jsx)(m,{label:`Текст справки / описания`,value:$.helpText??Q.description??``,onChange:e=>I(t=>({...t,[Q.key]:{...t[Q.key],helpText:e.target.value}})),placeholder:`Пояснение для пользователя...`}),(0,D.jsxs)(`div`,{className:`p-3 bg-krona-workspace rounded-lg border border-krona-border space-y-2`,children:[(0,D.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer font-medium text-krona-primary`,children:[(0,D.jsx)(`input`,{type:`checkbox`,checked:$.required??Q.required??!1,onChange:e=>I(t=>({...t,[Q.key]:{...t[Q.key],required:e.target.checked}})),className:`rounded text-krona-green`}),`Обязательно для заполнения на этой форме`]}),(0,D.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer font-medium text-krona-primary`,children:[(0,D.jsx)(`input`,{type:`checkbox`,checked:$.readOnly??Q.readOnly??!1,onChange:e=>I(t=>({...t,[Q.key]:{...t[Q.key],readOnly:e.target.checked}})),className:`rounded text-krona-green`}),`Только чтение (Read-Only)`]})]}),(0,D.jsxs)(`div`,{className:`p-3 bg-krona-workspace rounded-lg border border-krona-border space-y-2`,children:[(0,D.jsx)(`span`,{className:`font-semibold text-krona-primary block`,children:`Условное отображение (Conditional Logic)`}),(0,D.jsx)(`p`,{className:`text-[11px] text-krona-secondary`,children:`Показывать поле только при соблюдении условия:`}),(0,D.jsxs)(`div`,{className:`space-y-2`,children:[(0,D.jsxs)(`select`,{value:$.conditionFieldKey||``,onChange:e=>I(t=>({...t,[Q.key]:{...t[Q.key],conditionFieldKey:e.target.value}})),className:`w-full bg-krona-surface text-krona-primary border border-krona-border rounded px-2 py-1`,children:[(0,D.jsx)(`option`,{value:``,children:`Без условий (всегда отображать)`}),K.filter(e=>e.key!==Q.key).map(e=>(0,D.jsxs)(`option`,{value:e.key,children:[`Если `,e.label,` (`,e.key,`)`]},e.key))]}),$.conditionFieldKey&&(0,D.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,D.jsxs)(`select`,{value:$.conditionOperator||`eq`,onChange:e=>I(t=>({...t,[Q.key]:{...t[Q.key],conditionOperator:e.target.value}})),className:`bg-krona-surface text-krona-primary border border-krona-border rounded px-2 py-1`,children:[(0,D.jsx)(`option`,{value:`eq`,children:`равно (=)`}),(0,D.jsx)(`option`,{value:`neq`,children:`не равно (≠)`}),(0,D.jsx)(`option`,{value:`contains`,children:`содержит`})]}),(0,D.jsx)(`input`,{type:`text`,placeholder:`Значение...`,value:$.conditionValue||``,onChange:e=>I(t=>({...t,[Q.key]:{...t[Q.key],conditionValue:e.target.value}})),className:`bg-krona-surface text-krona-primary border border-krona-border rounded px-2 py-1`})]})]})]}),(0,D.jsx)(`div`,{className:`flex justify-end gap-2 pt-3 border-t border-krona-border`,children:(0,D.jsx)(n,{variant:`primary`,size:`sm`,onClick:()=>P(null),children:`Готово`})})]})})]})};export{O as FormBuilder,O as default}; \ No newline at end of file diff --git a/dist/assets/HelpDeskModule-DsboISgu.js b/dist/assets/HelpDeskModule-DsboISgu.js deleted file mode 100644 index a8a1a08..0000000 --- a/dist/assets/HelpDeskModule-DsboISgu.js +++ /dev/null @@ -1 +0,0 @@ -import{f as e,h as t,i as n,r,s as i,t as a}from"./useToast-CS8pZhce.js";import{t as o}from"./clock-BelL0bvZ.js";import{t as s}from"./lock-BiWUbvPE.js";import{j as c,k as l,p as u,r as d,t as f,v as p,y as m}from"./index-CyHCRa3Z.js";import{u as h}from"./mockData-DAqQG5te.js";var g=t(e(),1),_=i(),v=h.map((e,t)=>({...e,status:t===0?`in_progress`:t===1?`new`:`resolved`,internalNotes:[{text:`Проверили чек в кассе — соусы действительно не были вложены комплектовщиком смены.`,author:`Менеджер смены`,time:`Вчера 16:35`}],publicReplies:[{text:`Здравствуйте, Анна! Приносим искренние извинения за ситуацию.`,author:`Поддержка Кроны`,time:`Вчера 16:40`}]})),y=[`Алина Соколова`,`Артем Васильев`,`Екатерина Иванова`,`Сергей Петров (Старший менеджер)`],b=()=>{let{showToast:e}=a(),[t,i]=(0,g.useState)(v),[h,b]=(0,g.useState)(null),[x,S]=(0,g.useState)(``),[C,w]=(0,g.useState)(`all`),[T,E]=(0,g.useState)(`public`),[D,O]=(0,g.useState)(``),k=t.filter(e=>{let t=C===`all`||e.status===C,n=!x||e.subject.toLowerCase().includes(x.toLowerCase())||e.clientName.toLowerCase().includes(x.toLowerCase())||e.id.toLowerCase().includes(x.toLowerCase());return t&&n}),A=e=>{switch(e){case`urgent`:return(0,_.jsx)(r,{variant:`danger`,size:`sm`,children:`Срочно (15 мин SLA)`});case`high`:return(0,_.jsx)(r,{variant:`warning`,size:`sm`,children:`Высокий`});case`medium`:return(0,_.jsx)(r,{variant:`gold`,size:`sm`,children:`Средний`});default:return(0,_.jsx)(r,{variant:`neutral`,size:`sm`,children:`Обычный`})}},j=e=>{switch(e){case`new`:return(0,_.jsx)(r,{variant:`neutral`,size:`sm`,children:`Новый`});case`in_progress`:return(0,_.jsx)(r,{variant:`warning`,size:`sm`,children:`В работе`});case`waiting`:return(0,_.jsx)(r,{variant:`info`,size:`sm`,children:`Ожидает ответа`});case`resolved`:return(0,_.jsx)(r,{variant:`green`,size:`sm`,children:`Решен`});case`closed`:return(0,_.jsx)(r,{variant:`gray`,size:`sm`,children:`Закрыт`})}},M=e=>e<=0?(0,_.jsxs)(`span`,{className:`inline-flex items-center gap-1 font-mono text-[11px] font-bold text-rose-600 bg-rose-500/10 px-2 py-0.5 rounded border border-rose-500/30`,children:[(0,_.jsx)(c,{className:`w-3 h-3`}),` SLA: Нарушен!`]}):e<15?(0,_.jsxs)(`span`,{className:`inline-flex items-center gap-1 font-mono text-[11px] font-bold text-rose-600 bg-rose-500/10 px-2 py-0.5 rounded border border-rose-500/30`,children:[(0,_.jsx)(o,{className:`w-3 h-3`}),` SLA: `,e,` мин осталось`]}):e<=60?(0,_.jsxs)(`span`,{className:`inline-flex items-center gap-1 font-mono text-[11px] font-medium text-amber-600 bg-amber-500/10 px-2 py-0.5 rounded border border-amber-500/30`,children:[(0,_.jsx)(o,{className:`w-3 h-3`}),` SLA: `,e,` мин`]}):(0,_.jsxs)(`span`,{className:`inline-flex items-center gap-1 font-mono text-[11px] font-medium text-emerald-700 bg-emerald-500/10 px-2 py-0.5 rounded border border-emerald-500/30`,children:[(0,_.jsx)(o,{className:`w-3 h-3`}),` SLA: `,Math.floor(e/60),`ч `,e%60,`м`]}),N=(t,n)=>{i(e=>e.map(e=>e.id===t?{...e,status:n}:e)),h&&h.id===t&&b({...h,status:n}),e({title:`Статус обновлен`,message:`Тикет переведен в статус «${n}»`,type:`success`})},P=(t,n)=>{i(e=>e.map(e=>e.id===t?{...e,assignee:n}:e)),h&&h.id===t&&b({...h,assignee:n}),e({title:`Ответственный назначен`,message:`Назначен сотрудник: ${n}`,type:`info`})};return(0,_.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,_.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 bg-krona-surface p-3.5 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,_.jsxs)(`div`,{children:[(0,_.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,_.jsx)(`h2`,{className:`text-sm font-bold text-krona-primary`,children:`HelpDesk & Центр решения обращений и жалоб гостей`}),(0,_.jsx)(f,{level:`target`,size:`sm`})]}),(0,_.jsx)(`p`,{className:`text-xs text-krona-secondary mt-0.5`,children:`Очередь обращений, контроль жестких SLA нормативов, база знаний и AI-рекомендации`})]}),(0,_.jsxs)(`div`,{className:`flex items-center gap-2 text-xs`,children:[(0,_.jsx)(r,{variant:`danger`,size:`md`,children:`1 срочный тикет`}),(0,_.jsx)(r,{variant:`green`,size:`md`,children:`SLA 98.4% выполнения`})]})]}),(0,_.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3`,children:[(0,_.jsx)(`div`,{className:`flex items-center gap-1.5 overflow-x-auto text-xs`,children:[{id:`all`,label:`Все обращения`},{id:`new`,label:`Новые`},{id:`in_progress`,label:`В работе`},{id:`waiting`,label:`Ожидают`},{id:`resolved`,label:`Решенные`}].map(e=>(0,_.jsx)(`button`,{onClick:()=>w(e.id),className:`px-3 py-1.5 rounded-lg font-medium transition-colors whitespace-nowrap ${C===e.id?`bg-[#2F684C] text-white shadow-sm`:`bg-krona-surface text-krona-secondary hover:text-krona-primary border border-krona-border`}`,children:e.label},e.id))}),(0,_.jsxs)(`div`,{className:`relative w-64`,children:[(0,_.jsx)(m,{className:`w-3.5 h-3.5 absolute left-2.5 top-2.5 text-krona-secondary`}),(0,_.jsx)(`input`,{type:`text`,value:x,onChange:e=>S(e.target.value),placeholder:`Поиск обращений...`,className:`w-full pl-8 pr-3 py-1.5 text-xs bg-krona-surface border border-krona-border rounded-lg text-krona-primary placeholder:text-krona-secondary focus:outline-none focus:border-krona-green`})]})]}),(0,_.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-3 gap-4`,children:k.map(e=>(0,_.jsxs)(`div`,{onClick:()=>b(e),className:`p-4 rounded-xl border border-krona-border bg-krona-surface hover:border-krona-border-strong shadow-krona-soft cursor-pointer transition-all flex flex-col justify-between space-y-3`,children:[(0,_.jsxs)(`div`,{children:[(0,_.jsxs)(`div`,{className:`flex items-center justify-between mb-1.5`,children:[(0,_.jsx)(`span`,{className:`font-mono font-bold text-xs text-krona-secondary`,children:e.id}),(0,_.jsxs)(`div`,{className:`flex items-center gap-1`,children:[j(e.status),A(e.priority)]})]}),(0,_.jsx)(`h4`,{className:`text-xs font-bold text-krona-primary leading-snug line-clamp-2`,children:e.subject}),(0,_.jsxs)(`div`,{className:`space-y-1 text-xs text-krona-secondary border-t border-krona-border/40 pt-2.5 mt-2.5`,children:[(0,_.jsxs)(`div`,{className:`flex justify-between`,children:[(0,_.jsx)(`span`,{children:`Клиент:`}),(0,_.jsx)(`span`,{className:`font-medium text-krona-primary`,children:e.clientName})]}),(0,_.jsxs)(`div`,{className:`flex justify-between`,children:[(0,_.jsx)(`span`,{children:`Канал:`}),(0,_.jsx)(`span`,{className:`capitalize`,children:e.channel})]}),(0,_.jsxs)(`div`,{className:`flex justify-between`,children:[(0,_.jsx)(`span`,{children:`Ответственный:`}),(0,_.jsx)(`span`,{className:`font-medium text-krona-primary truncate max-w-[140px]`,children:e.assignee})]})]})]}),(0,_.jsxs)(`div`,{className:`pt-2 border-t border-krona-border/40 flex items-center justify-between`,children:[M(e.slaMinutesLeft),(0,_.jsx)(`span`,{className:`text-xs text-krona-green font-medium hover:underline`,children:`Открыть →`})]})]},e.id))}),h&&(0,_.jsx)(d,{isOpen:!!h,onClose:()=>b(null),title:`Обращение: ${h.id}`,subtitle:`Клиент: ${h.clientName} • ${h.createdTime}`,maxWidth:`lg`,children:(0,_.jsxs)(`div`,{className:`space-y-4 text-xs`,children:[(0,_.jsxs)(`div`,{className:`p-3 bg-krona-workspace rounded-xl border border-krona-border grid grid-cols-1 sm:grid-cols-3 gap-3`,children:[(0,_.jsxs)(`div`,{children:[(0,_.jsx)(`label`,{className:`text-[10px] text-krona-secondary block mb-1`,children:`Статус инцидента:`}),(0,_.jsxs)(`select`,{value:h.status,onChange:e=>N(h.id,e.target.value),className:`w-full p-1.5 bg-krona-surface border border-krona-border rounded-lg text-xs font-semibold text-krona-primary focus:outline-none`,children:[(0,_.jsx)(`option`,{value:`new`,children:`Новый`}),(0,_.jsx)(`option`,{value:`in_progress`,children:`В работе`}),(0,_.jsx)(`option`,{value:`waiting`,children:`Ожидает ответа`}),(0,_.jsx)(`option`,{value:`resolved`,children:`Решен`}),(0,_.jsx)(`option`,{value:`closed`,children:`Закрыт`})]})]}),(0,_.jsxs)(`div`,{children:[(0,_.jsx)(`label`,{className:`text-[10px] text-krona-secondary block mb-1`,children:`Назначить сотрудника:`}),(0,_.jsx)(`select`,{value:h.assignee,onChange:e=>P(h.id,e.target.value),className:`w-full p-1.5 bg-krona-surface border border-krona-border rounded-lg text-xs font-semibold text-krona-primary focus:outline-none`,children:y.map(e=>(0,_.jsx)(`option`,{value:e,children:e},e))})]}),(0,_.jsxs)(`div`,{children:[(0,_.jsx)(`label`,{className:`text-[10px] text-krona-secondary block mb-1`,children:`Контроль SLA:`}),(0,_.jsx)(`div`,{children:M(h.slaMinutesLeft)})]})]}),(0,_.jsxs)(`div`,{className:`p-3 bg-krona-surface rounded-xl border border-krona-border space-y-1.5`,children:[(0,_.jsx)(`h4`,{className:`font-bold text-sm text-krona-primary`,children:h.subject}),(0,_.jsxs)(`p`,{className:`text-krona-secondary leading-relaxed`,children:[`Обращение зарегистрировано через канал `,h.channel,`. Заказ привязан к локации: Красный пр-т 186а.`]})]}),(0,_.jsxs)(`div`,{className:`p-3 bg-krona-gold/10 border border-krona-gold/30 rounded-xl space-y-1.5`,children:[(0,_.jsxs)(`div`,{className:`flex items-center gap-1.5 text-krona-gold-text font-bold text-xs`,children:[(0,_.jsx)(u,{className:`w-3.5 h-3.5 text-krona-gold`}),(0,_.jsx)(`span`,{children:`Рекомендация Krona AI:`})]}),(0,_.jsx)(`p`,{className:`text-krona-primary leading-relaxed`,children:`Начислить клиенту 300 бонусных баллов с извинениями и отправить курьера с недостающими соусами и комплиментом (морс 0.5л). Клиент относится к категории VIP (LTV 84 200 ₽).`})]}),(0,_.jsxs)(`div`,{className:`space-y-2`,children:[(0,_.jsx)(`h5`,{className:`font-bold text-krona-primary`,children:`История переписки и служебных заметок:`}),(0,_.jsxs)(`div`,{className:`space-y-2 max-h-48 overflow-y-auto pr-1`,children:[h.publicReplies?.map((e,t)=>(0,_.jsxs)(`div`,{className:`p-2.5 rounded-lg bg-emerald-500/5 border border-emerald-500/20 text-xs`,children:[(0,_.jsxs)(`div`,{className:`flex justify-between items-center text-[10px] text-emerald-800 dark:text-emerald-300 font-semibold mb-1`,children:[(0,_.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,_.jsx)(l,{className:`w-3 h-3`}),` Ответ гостю (`,e.author,`)`]}),(0,_.jsx)(`span`,{children:e.time})]}),(0,_.jsx)(`p`,{className:`text-krona-primary`,children:e.text})]},t)),h.internalNotes?.map((e,t)=>(0,_.jsxs)(`div`,{className:`p-2.5 rounded-lg bg-amber-500/10 border border-amber-500/30 text-xs`,children:[(0,_.jsxs)(`div`,{className:`flex justify-between items-center text-[10px] text-amber-800 dark:text-amber-300 font-semibold mb-1`,children:[(0,_.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,_.jsx)(s,{className:`w-3 h-3`}),` Внутренняя заметка команды (`,e.author,`)`]}),(0,_.jsx)(`span`,{children:e.time})]}),(0,_.jsx)(`p`,{className:`text-krona-primary`,children:e.text})]},t))]})]}),(0,_.jsxs)(`form`,{onSubmit:t=>{if(t.preventDefault(),!D.trim()||!h)return;let n={text:D.trim(),author:`Вы (Оператор службы заботы)`,time:`Только что`},r={...h,...T===`internal`?{internalNotes:[...h.internalNotes||[],n]}:{publicReplies:[...h.publicReplies||[],n]}};i(e=>e.map(e=>e.id===h.id?r:e)),b(r),O(``),e({title:T===`internal`?`Внутренняя заметка сохранена`:`Ответ отправлен клиенту`,message:T===`internal`?`Заметка видна только сотрудникам`:`Сообщение отправлено в канал связи гостя`,type:`success`})},className:`space-y-2 pt-2 border-t border-krona-border`,children:[(0,_.jsx)(`div`,{className:`flex items-center justify-between`,children:(0,_.jsxs)(`div`,{className:`flex items-center gap-1 bg-krona-workspace p-0.5 rounded-lg border border-krona-border text-[11px]`,children:[(0,_.jsxs)(`button`,{type:`button`,onClick:()=>E(`public`),className:`px-2.5 py-1 rounded transition-colors flex items-center gap-1 ${T===`public`?`bg-[#2F684C] text-white shadow-sm font-medium`:`text-krona-secondary`}`,children:[(0,_.jsx)(l,{className:`w-3 h-3`}),` Публичный ответ клиенту`]}),(0,_.jsxs)(`button`,{type:`button`,onClick:()=>E(`internal`),className:`px-2.5 py-1 rounded transition-colors flex items-center gap-1 ${T===`internal`?`bg-amber-600 text-white shadow-sm font-medium`:`text-krona-secondary`}`,children:[(0,_.jsx)(s,{className:`w-3 h-3`}),` Внутренняя заметка (для коллег)`]})]})}),(0,_.jsxs)(`div`,{className:`flex gap-2`,children:[(0,_.jsx)(`input`,{type:`text`,value:D,onChange:e=>O(e.target.value),placeholder:T===`public`?`Напишите публичный ответ клиенту...`:`Напишите служебную заметку для коллег...`,className:`flex-1 p-2 bg-krona-workspace border border-krona-border rounded-lg text-xs text-krona-primary focus:outline-none focus:border-krona-green`}),(0,_.jsxs)(n,{type:`submit`,variant:T===`internal`?`gold`:`primary`,size:`sm`,className:`px-3`,children:[(0,_.jsx)(p,{className:`w-3.5 h-3.5 mr-1`}),T===`internal`?`Сохранить заметку`:`Отправить ответ`]})]})]})]})})]})};export{b as HelpDeskModule}; \ No newline at end of file diff --git a/dist/assets/InventoryModule-BI-CFKE0.js b/dist/assets/InventoryModule-BI-CFKE0.js deleted file mode 100644 index c158a12..0000000 --- a/dist/assets/InventoryModule-BI-CFKE0.js +++ /dev/null @@ -1 +0,0 @@ -import{f as e,h as t,i as n,r,s as i,t as a}from"./useToast-CS8pZhce.js";import{C as o,Y as s,r as c,t as l,y as u}from"./index-CyHCRa3Z.js";import{t as d}from"./useOrders-E7OnZAao.js";import{t as f}from"./currency-DdDs82F5.js";import{t as p}from"./useInventory-Y83xzzVb.js";var m=t(e(),1),h=i(),g=()=>{let{showToast:e}=a(),{warehouses:t,stockItems:i,movements:g,receipts:_,adjustStock:v,createAndReceiveGoods:y}=p(),{products:b}=d(),[x,S]=(0,m.useState)(`balances`),[C,w]=(0,m.useState)(``),[T,E]=(0,m.useState)(`all`),[D,O]=(0,m.useState)(!1),[k,A]=(0,m.useState)(!1),[j,M]=(0,m.useState)(``),[N,P]=(0,m.useState)(`wh_main`),[F,I]=(0,m.useState)(``),[L,R]=(0,m.useState)(50),[z,B]=(0,m.useState)(12e4),[V,H]=(0,m.useState)(null),[U,W]=(0,m.useState)(`-1`),[G,K]=(0,m.useState)(`Порча / Срок годности`),q=(0,m.useMemo)(()=>i.filter(e=>{let t=T===`all`||e.warehouseId===T,n=!C||e.productName.toLowerCase().includes(C.toLowerCase())||e.sku.toLowerCase().includes(C.toLowerCase());return t&&n}),[i,T,C]),J=(0,m.useMemo)(()=>[...g].sort((e,t)=>t.timestamp>e.timestamp?1:-1),[g]),Y=async t=>{t.preventDefault();let n=b.find(e=>e.id===F)||b[0];if(!n){e(`Выберите товар`,`error`);return}try{let t=`REC-${Date.now().toString().slice(-6)}`,r=[{productId:n.id,sku:n.sku,name:n.name,quantity:L,costPrice:{minor:z,currency:`RUB`}}];await y(N,t,j||`ООО «Поставщик Продукт»`,r),e(`Поступление по накладной №${t} проведено! Остатки увеличены.`,`success`),O(!1),M(``)}catch(t){e(`Ошибка: ${t instanceof Error?t.message:String(t)}`,`error`)}},X=async t=>{if(t.preventDefault(),V)try{let t=Number(U);await v(V.warehouseId,V.productId,t,G),e(t<0?`Списание со склада проведено.`:`Корректировка остатка проведена.`,`success`),A(!1),H(null)}catch(t){e(`Ошибка: ${t instanceof Error?t.message:String(t)}`,`error`)}},Z=e=>{switch(e){case`receipt`:return(0,h.jsx)(r,{variant:`green`,size:`sm`,children:`Поступление (+)`});case`shipment`:return(0,h.jsx)(r,{variant:`blue`,size:`sm`,children:`Отгрузка (-)`});case`transfer`:return(0,h.jsx)(r,{variant:`gold`,size:`sm`,children:`Резерв / Трансфер`});case`loss`:return(0,h.jsx)(r,{variant:`danger`,size:`sm`,children:`Списание (-)`});default:return(0,h.jsx)(r,{variant:`gray`,size:`sm`,children:`Коррекция`})}};return(0,h.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,h.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 bg-krona-surface p-3.5 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,h.jsxs)(`div`,{children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,h.jsx)(`h1`,{className:`text-sm font-bold text-krona-primary`,children:`Складской учет, остатки и движение партий`}),(0,h.jsx)(l,{level:`pilot1`,size:`sm`})]}),(0,h.jsx)(`p`,{className:`text-xs text-krona-secondary mt-0.5`,children:`Точный баланс: Физический остаток, Резервы заказов, Доступное количество и Складской журнал`})]}),(0,h.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,h.jsxs)(n,{variant:`primary`,size:`sm`,onClick:()=>O(!0),children:[(0,h.jsx)(o,{className:`w-3.5 h-3.5 mr-1`}),` Приходная накладная`]})})]}),(0,h.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3`,children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-1.5 overflow-x-auto text-xs`,children:[(0,h.jsxs)(`button`,{onClick:()=>S(`balances`),className:`px-3 py-1.5 rounded-lg font-medium transition-colors ${x===`balances`?`bg-krona-green text-white shadow-sm`:`bg-krona-surface text-krona-secondary hover:text-krona-primary border border-krona-border`}`,children:[`Остатки на складах (`,i.length,`)`]}),(0,h.jsxs)(`button`,{onClick:()=>S(`movements`),className:`px-3 py-1.5 rounded-lg font-medium transition-colors ${x===`movements`?`bg-krona-green text-white shadow-sm`:`bg-krona-surface text-krona-secondary hover:text-krona-primary border border-krona-border`}`,children:[`Журнал движений (`,g.length,`)`]}),(0,h.jsxs)(`button`,{onClick:()=>S(`receipts`),className:`px-3 py-1.5 rounded-lg font-medium transition-colors ${x===`receipts`?`bg-krona-green text-white shadow-sm`:`bg-krona-surface text-krona-secondary hover:text-krona-primary border border-krona-border`}`,children:[`Поступления (`,_.length,`)`]})]}),(0,h.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,h.jsxs)(`select`,{value:T,onChange:e=>E(e.target.value),className:`px-2.5 py-1.5 text-xs bg-krona-surface border border-krona-border rounded-lg text-krona-primary focus:outline-none focus:border-krona-green`,children:[(0,h.jsx)(`option`,{value:`all`,children:`Все склады`}),t.map(e=>(0,h.jsx)(`option`,{value:e.id,children:e.name},e.id))]}),(0,h.jsxs)(`div`,{className:`relative w-60`,children:[(0,h.jsx)(u,{className:`w-3.5 h-3.5 absolute left-2.5 top-2.5 text-krona-secondary`}),(0,h.jsx)(`input`,{type:`text`,value:C,onChange:e=>w(e.target.value),placeholder:`Поиск по артикулу или товару...`,className:`w-full pl-8 pr-3 py-1.5 text-xs bg-krona-surface border border-krona-border rounded-lg text-krona-primary focus:outline-none focus:border-krona-green`})]})]})]}),x===`balances`&&(0,h.jsx)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft overflow-hidden`,children:(0,h.jsxs)(`table`,{className:`w-full text-xs text-left`,children:[(0,h.jsx)(`thead`,{className:`bg-krona-workspace text-krona-secondary border-b border-krona-border`,children:(0,h.jsxs)(`tr`,{children:[(0,h.jsx)(`th`,{className:`p-3 font-semibold`,children:`Артикул (SKU)`}),(0,h.jsx)(`th`,{className:`p-3 font-semibold`,children:`Наименование товара`}),(0,h.jsx)(`th`,{className:`p-3 font-semibold`,children:`Склад`}),(0,h.jsx)(`th`,{className:`p-3 font-semibold text-center`,children:`Физический остаток (On Hand)`}),(0,h.jsx)(`th`,{className:`p-3 font-semibold text-center`,children:`В резерве (Reserved)`}),(0,h.jsx)(`th`,{className:`p-3 font-semibold text-center`,children:`Доступно к заказу (Available)`}),(0,h.jsx)(`th`,{className:`p-3 font-semibold`,children:`Мин. порог`}),(0,h.jsx)(`th`,{className:`p-3 font-semibold text-right`,children:`Действие`})]})}),(0,h.jsxs)(`tbody`,{className:`divide-y divide-krona-border`,children:[q.map(e=>{let t=e.minThreshold!==void 0&&e.available<=e.minThreshold;return(0,h.jsxs)(`tr`,{className:`hover:bg-krona-workspace/50 transition-colors`,children:[(0,h.jsx)(`td`,{className:`p-3 font-mono font-semibold text-krona-secondary`,children:e.sku}),(0,h.jsx)(`td`,{className:`p-3 font-medium text-krona-primary`,children:e.productName}),(0,h.jsx)(`td`,{className:`p-3 text-krona-secondary`,children:e.warehouseName}),(0,h.jsxs)(`td`,{className:`p-3 font-bold text-krona-primary text-center`,children:[e.onHand,` `,e.unit]}),(0,h.jsx)(`td`,{className:`p-3 font-semibold text-amber-600 dark:text-amber-400 text-center`,children:e.reserved>0?`${e.reserved} ${e.unit}`:`0`}),(0,h.jsx)(`td`,{className:`p-3 text-center`,children:(0,h.jsxs)(`span`,{className:`font-bold px-2 py-0.5 rounded ${e.available>0?`bg-emerald-500/10 text-emerald-600 dark:text-emerald-400`:`bg-rose-500/10 text-rose-600 dark:text-rose-400`}`,children:[e.available,` `,e.unit]})}),(0,h.jsx)(`td`,{className:`p-3`,children:e.minThreshold===void 0?`—`:(0,h.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,h.jsxs)(`span`,{children:[e.minThreshold,` `,e.unit]}),t&&(0,h.jsx)(r,{variant:`warning`,size:`sm`,children:`Мало`})]})}),(0,h.jsx)(`td`,{className:`p-3 text-right`,children:(0,h.jsx)(n,{variant:`secondary`,size:`sm`,onClick:()=>{H(e),W(`-1`),A(!0)},children:`Коррекция / Списание`})})]},e.id)}),q.length===0&&(0,h.jsx)(`tr`,{children:(0,h.jsx)(`td`,{colSpan:8,className:`p-8 text-center text-krona-secondary text-xs italic`,children:`Остатки не найдены`})})]})]})}),x===`movements`&&(0,h.jsx)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft overflow-hidden`,children:(0,h.jsxs)(`table`,{className:`w-full text-xs text-left`,children:[(0,h.jsx)(`thead`,{className:`bg-krona-workspace text-krona-secondary border-b border-krona-border`,children:(0,h.jsxs)(`tr`,{children:[(0,h.jsx)(`th`,{className:`p-3 font-semibold`,children:`Дата / Время`}),(0,h.jsx)(`th`,{className:`p-3 font-semibold`,children:`Тип движения`}),(0,h.jsx)(`th`,{className:`p-3 font-semibold`,children:`Артикул`}),(0,h.jsx)(`th`,{className:`p-3 font-semibold`,children:`Товар`}),(0,h.jsx)(`th`,{className:`p-3 font-semibold`,children:`Количество`}),(0,h.jsx)(`th`,{className:`p-3 font-semibold`,children:`Основание / Примечание`})]})}),(0,h.jsxs)(`tbody`,{className:`divide-y divide-krona-border`,children:[J.map(e=>(0,h.jsxs)(`tr`,{className:`hover:bg-krona-workspace/50 transition-colors`,children:[(0,h.jsx)(`td`,{className:`p-3 font-mono text-krona-secondary`,children:s(e.timestamp)}),(0,h.jsx)(`td`,{className:`p-3`,children:Z(e.type)}),(0,h.jsx)(`td`,{className:`p-3 font-mono text-krona-secondary`,children:e.sku}),(0,h.jsx)(`td`,{className:`p-3 font-medium text-krona-primary`,children:e.productName}),(0,h.jsxs)(`td`,{className:`p-3 font-bold text-krona-primary`,children:[e.type===`receipt`?`+${e.quantity}`:e.type===`shipment`||e.type===`loss`?`-${e.quantity}`:`${e.quantity}`,` шт.`]}),(0,h.jsx)(`td`,{className:`p-3 text-krona-secondary`,children:e.notes||`—`})]},e.id)),J.length===0&&(0,h.jsx)(`tr`,{children:(0,h.jsx)(`td`,{colSpan:6,className:`p-8 text-center text-krona-secondary text-xs italic`,children:`Записи в складском журнале отсутствуют`})})]})]})}),x===`receipts`&&(0,h.jsx)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft overflow-hidden`,children:(0,h.jsxs)(`table`,{className:`w-full text-xs text-left`,children:[(0,h.jsx)(`thead`,{className:`bg-krona-workspace text-krona-secondary border-b border-krona-border`,children:(0,h.jsxs)(`tr`,{children:[(0,h.jsx)(`th`,{className:`p-3 font-semibold`,children:`Номер накладной`}),(0,h.jsx)(`th`,{className:`p-3 font-semibold`,children:`Поставщик`}),(0,h.jsx)(`th`,{className:`p-3 font-semibold`,children:`Дата поступления`}),(0,h.jsx)(`th`,{className:`p-3 font-semibold`,children:`Позиций`}),(0,h.jsx)(`th`,{className:`p-3 font-semibold`,children:`Сумма поставки`}),(0,h.jsx)(`th`,{className:`p-3 font-semibold text-center`,children:`Статус`})]})}),(0,h.jsxs)(`tbody`,{className:`divide-y divide-krona-border`,children:[_.map(e=>(0,h.jsxs)(`tr`,{className:`hover:bg-krona-workspace/50 transition-colors`,children:[(0,h.jsx)(`td`,{className:`p-3 font-mono font-bold text-krona-primary`,children:e.receiptNumber}),(0,h.jsx)(`td`,{className:`p-3 font-medium text-krona-primary`,children:e.supplierName||`Поставщик`}),(0,h.jsx)(`td`,{className:`p-3 font-mono text-krona-secondary`,children:e.receivedAt?s(e.receivedAt):`—`}),(0,h.jsxs)(`td`,{className:`p-3 text-krona-secondary`,children:[e.items.length,` поз.`]}),(0,h.jsx)(`td`,{className:`p-3 font-bold text-krona-green`,children:f(e.totalCost.minor)}),(0,h.jsx)(`td`,{className:`p-3 text-center`,children:(0,h.jsx)(r,{variant:`green`,size:`sm`,children:`Оприходовано`})})]},e.id)),_.length===0&&(0,h.jsx)(`tr`,{children:(0,h.jsx)(`td`,{colSpan:6,className:`p-8 text-center text-krona-secondary text-xs italic`,children:`Приходные накладные отсутствуют`})})]})]})}),(0,h.jsx)(c,{isOpen:D,onClose:()=>O(!1),title:`Оформление приходной накладной (Поступление товаров)`,size:`md`,children:(0,h.jsxs)(`form`,{onSubmit:Y,className:`space-y-4 text-xs`,children:[(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Поставщик:`}),(0,h.jsx)(`input`,{type:`text`,required:!0,value:j,onChange:e=>M(e.target.value),placeholder:`Например: ООО «Кофе Импорт Трейд»`,className:`w-full px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary`})]}),(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Склад приемки:`}),(0,h.jsx)(`select`,{value:N,onChange:e=>P(e.target.value),className:`w-full px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary`,children:t.map(e=>(0,h.jsx)(`option`,{value:e.id,children:e.name},e.id))})]}),(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Товар:`}),(0,h.jsx)(`select`,{value:F,onChange:e=>I(e.target.value),className:`w-full px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary`,children:b.map(e=>(0,h.jsxs)(`option`,{value:e.id,children:[e.name,` (`,e.sku,`)`]},e.id))})]}),(0,h.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Количество (шт.):`}),(0,h.jsx)(`input`,{type:`number`,min:1,value:L,onChange:e=>R(Number(e.target.value)||1),className:`w-full px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary`})]}),(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Закупочная цена (коп.):`}),(0,h.jsx)(`input`,{type:`number`,min:1,value:z,onChange:e=>B(Number(e.target.value)||0),className:`w-full px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary`})]})]}),(0,h.jsxs)(`div`,{className:`p-3 bg-emerald-500/10 border border-emerald-500/30 rounded-lg text-emerald-800 dark:text-emerald-300`,children:[`После подтверждения накладной физический и доступный остаток на складе увеличится на`,` `,(0,h.jsxs)(`strong`,{children:[L,` шт.`]}),`, а запись появится в Журнале складских движений.`]}),(0,h.jsxs)(`div`,{className:`flex justify-end gap-2 pt-2 border-t border-krona-border`,children:[(0,h.jsx)(n,{variant:`secondary`,size:`sm`,type:`button`,onClick:()=>O(!1),children:`Отмена`}),(0,h.jsxs)(n,{variant:`primary`,size:`sm`,type:`submit`,children:[(0,h.jsx)(o,{className:`w-3.5 h-3.5 mr-1`}),` Оприходовать на склад`]})]})]})}),(0,h.jsx)(c,{isOpen:k,onClose:()=>A(!1),title:V?`Коррекция остатка: ${V.productName}`:``,size:`md`,children:V&&(0,h.jsxs)(`form`,{onSubmit:X,className:`space-y-4 text-xs`,children:[(0,h.jsxs)(`div`,{className:`p-3 bg-krona-workspace rounded-lg border border-krona-border space-y-1`,children:[(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`span`,{className:`text-krona-secondary`,children:`Склад:`}),` `,(0,h.jsx)(`strong`,{children:V.warehouseName})]}),(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`span`,{className:`text-krona-secondary`,children:`Текущий физический остаток:`}),` `,(0,h.jsxs)(`strong`,{children:[V.onHand,` `,V.unit]})]})]}),(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Изменение количества (+ для прихода, - для списания):`}),(0,h.jsx)(`input`,{type:`number`,value:U,onChange:e=>W(e.target.value),className:`w-full px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary font-bold`})]}),(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Причина корректировки:`}),(0,h.jsx)(`input`,{type:`text`,required:!0,value:G,onChange:e=>K(e.target.value),className:`w-full px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary`})]}),(0,h.jsxs)(`div`,{className:`flex justify-end gap-2 pt-2 border-t border-krona-border`,children:[(0,h.jsx)(n,{variant:`secondary`,size:`sm`,type:`button`,onClick:()=>A(!1),children:`Отмена`}),(0,h.jsx)(n,{variant:`primary`,size:`sm`,type:`submit`,children:`Сохранить изменение`})]})]})})]})};export{g as InventoryModule}; \ No newline at end of file diff --git a/dist/assets/MarketingModule-CNswhgMV.js b/dist/assets/MarketingModule-CNswhgMV.js deleted file mode 100644 index b048351..0000000 --- a/dist/assets/MarketingModule-CNswhgMV.js +++ /dev/null @@ -1 +0,0 @@ -import{f as e,h as t,i as n,l as r,r as i,s as a,t as o}from"./useToast-CS8pZhce.js";import{t as s}from"./play-eIPXoy-j.js";import{C as c,c as l,i as u,o as d,p as f,r as p,t as m,v as h}from"./index-CyHCRa3Z.js";import{t as g}from"./formatters-WvGQLZg0.js";var _={name:`tag`,size:24,node:[[`path`,{d:`M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z`,key:`vktsd0`}],[`circle`,{cx:`7.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`kqv944`}]]};_.node;var v=r(_),y=t(e(),1),b=a(),x=[{id:`camp-1`,title:`Осенний промокод AUTUMN20 (-20% на роллы)`,type:`promo`,segment:`Все зарегистрированные гости`,channel:`Telegram`,status:`active`,sentCount:640,openRate:68.4,revenue:98e3,promoCode:`AUTUMN20`,discountPercent:20},{id:`camp-2`,title:`Реактивация «Мы соскучились!» (+ ролл в подарок)`,type:`reactivation`,segment:`Без заказов более 30 дней`,channel:`WhatsApp`,status:`active`,sentCount:185,openRate:74.2,revenue:48200,promoCode:`COMEBACK`,discountPercent:15},{id:`camp-3`,title:`Приглашение на дегустацию вин и сетов шефа`,type:`broadcast`,segment:`VIP гости с чеком от 5 000 ₽`,channel:`Telegram`,status:`completed`,sentCount:94,openRate:89.1,revenue:142e3}],S=()=>{let{showToast:e}=o(),[t,r]=(0,y.useState)(x),[a,_]=(0,y.useState)(`campaigns`),[S,C]=(0,y.useState)(!1),[w,T]=(0,y.useState)(0),[E,D]=(0,y.useState)(null),[O,k]=(0,y.useState)(!1),[A,j]=(0,y.useState)(``),[M,N]=(0,y.useState)(`Без заказов более 30 дней`),[P,F]=(0,y.useState)(`Telegram`),[I,L]=(0,y.useState)(`SALE15`),[R,z]=(0,y.useState)(3e3),[B,V]=(0,y.useState)(30),[H,U]=(0,y.useState)(248);return(0,b.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,b.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 bg-krona-surface p-3.5 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,b.jsxs)(`div`,{children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,b.jsx)(`h2`,{className:`text-sm font-bold text-krona-primary`,children:`Маркетинг, промо-акции и удержание гостей`}),(0,b.jsx)(m,{level:`target`,size:`sm`})]}),(0,b.jsx)(`p`,{className:`text-xs text-krona-secondary mt-0.5`,children:`Управление промокодами, триггерными рассылками, сегментацией гостей и расчет LTV`})]}),(0,b.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,b.jsxs)(`div`,{className:`flex items-center bg-krona-workspace p-1 rounded-lg border border-krona-border text-xs`,children:[(0,b.jsxs)(`button`,{onClick:()=>_(`campaigns`),className:`px-3 py-1 rounded font-medium transition-colors ${a===`campaigns`?`bg-[#2F684C] text-white shadow-sm`:`text-krona-secondary`}`,children:[`Кампании (`,t.length,`)`]}),(0,b.jsx)(`button`,{onClick:()=>_(`segments`),className:`px-3 py-1 rounded font-medium transition-colors ${a===`segments`?`bg-[#2F684C] text-white shadow-sm`:`text-krona-secondary`}`,children:`Конструктор сегментов`})]}),(0,b.jsxs)(n,{variant:`primary`,size:`sm`,onClick:()=>k(!0),children:[(0,b.jsx)(c,{className:`w-3.5 h-3.5 mr-1`}),`Создать кампанию`]})]})]}),(0,b.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-3 gap-3.5`,children:[(0,b.jsx)(u,{title:`Выручка по промокодам`,value:g(288200),change:{value:`+24%`,trend:`up`},subtitle:`Сентябрьская кампания`,icon:(0,b.jsx)(v,{className:`w-4 h-4 text-krona-gold`})}),(0,b.jsx)(u,{title:`Конверсия из рассылки в заказ`,value:`19.4%`,change:{value:`+3.1%`,trend:`up`},subtitle:`Telegram & WhatsApp`,icon:(0,b.jsx)(l,{className:`w-4 h-4 text-krona-green`})}),(0,b.jsx)(u,{title:`Возвращено 'спящих' клиентов`,value:`48 гостей`,subtitle:`После авто-триггера 'Мы соскучились'`,icon:(0,b.jsx)(d,{className:`w-4 h-4 text-krona-info`})})]}),a===`campaigns`&&(0,b.jsxs)(`div`,{className:`space-y-4`,children:[(0,b.jsxs)(`div`,{className:`p-4 rounded-xl border border-krona-gold/40 bg-krona-gold/5 space-y-3`,children:[(0,b.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3`,children:[(0,b.jsxs)(`div`,{children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,b.jsx)(f,{className:`w-4 h-4 text-krona-gold`}),(0,b.jsx)(`h4`,{className:`font-bold text-xs text-krona-primary`,children:`Интерактивная симуляция запуска триггерной рассылки`})]}),(0,b.jsx)(`p`,{className:`text-[11px] text-krona-secondary mt-0.5`,children:`Протестируйте отправку рассылки с промокодом по сегменту «Спящие клиенты» (340 получателей в базе)`})]}),(0,b.jsxs)(n,{variant:`gold`,size:`sm`,disabled:S,onClick:()=>{C(!0),T(10),D({sent:50,delivered:48,opened:32,clicked:12,orders:4,revenue:8400}),setTimeout(()=>{T(50),D({sent:180,delivered:176,opened:130,clicked:54,orders:18,revenue:38200})},600),setTimeout(()=>{T(100),C(!1),D({sent:340,delivered:334,opened:254,clicked:98,orders:34,revenue:74800}),e({title:`Рассылка успешно завершена!`,message:`340 сообщений отправлено в Telegram-бот. Оформлено 34 новых заказа.`,type:`success`})},1200)},className:`shrink-0`,children:[(0,b.jsx)(s,{className:`w-3.5 h-3.5 mr-1`}),S?`Отправка (${w}%)...`:`Запустить симуляцию`]})]}),S&&(0,b.jsxs)(`div`,{className:`space-y-1`,children:[(0,b.jsx)(`div`,{className:`w-full bg-krona-workspace rounded-full h-2 overflow-hidden border border-krona-border`,children:(0,b.jsx)(`div`,{className:`bg-krona-gold h-2 transition-all duration-300 rounded-full`,style:{width:`${w}%`}})}),(0,b.jsxs)(`div`,{className:`flex justify-between text-[10px] text-krona-secondary`,children:[(0,b.jsx)(`span`,{children:`Отправка через шлюз Telegram Bot API...`}),(0,b.jsxs)(`span`,{className:`font-mono font-bold`,children:[w,`%`]})]})]}),E&&(0,b.jsxs)(`div`,{className:`pt-2 border-t border-krona-border/60 grid grid-cols-2 sm:grid-cols-6 gap-2 text-xs`,children:[(0,b.jsxs)(`div`,{className:`p-2 bg-krona-surface rounded-lg border border-krona-border`,children:[(0,b.jsx)(`span`,{className:`text-[10px] text-krona-secondary block`,children:`Отправлено:`}),(0,b.jsx)(`span`,{className:`font-bold font-mono text-krona-primary`,children:E.sent})]}),(0,b.jsxs)(`div`,{className:`p-2 bg-krona-surface rounded-lg border border-krona-border`,children:[(0,b.jsx)(`span`,{className:`text-[10px] text-krona-secondary block`,children:`Доставлено:`}),(0,b.jsx)(`span`,{className:`font-bold font-mono text-emerald-600`,children:E.delivered})]}),(0,b.jsxs)(`div`,{className:`p-2 bg-krona-surface rounded-lg border border-krona-border`,children:[(0,b.jsx)(`span`,{className:`text-[10px] text-krona-secondary block`,children:`Открыто:`}),(0,b.jsx)(`span`,{className:`font-bold font-mono text-sky-600`,children:E.opened})]}),(0,b.jsxs)(`div`,{className:`p-2 bg-krona-surface rounded-lg border border-krona-border`,children:[(0,b.jsx)(`span`,{className:`text-[10px] text-krona-secondary block`,children:`Кликов:`}),(0,b.jsx)(`span`,{className:`font-bold font-mono text-amber-600`,children:E.clicked})]}),(0,b.jsxs)(`div`,{className:`p-2 bg-krona-surface rounded-lg border border-krona-border`,children:[(0,b.jsx)(`span`,{className:`text-[10px] text-krona-secondary block`,children:`Заказов:`}),(0,b.jsx)(`span`,{className:`font-bold font-mono text-emerald-700`,children:E.orders})]}),(0,b.jsxs)(`div`,{className:`p-2 bg-krona-surface rounded-lg border border-krona-border`,children:[(0,b.jsx)(`span`,{className:`text-[10px] text-krona-secondary block`,children:`Выручка:`}),(0,b.jsx)(`span`,{className:`font-bold font-mono text-krona-green`,children:g(E.revenue)})]})]})]}),(0,b.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft p-4 space-y-3`,children:[(0,b.jsx)(`h4`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider`,children:`Список рекламных кампаний и промо-акций`}),(0,b.jsx)(`div`,{className:`space-y-2 text-xs`,children:t.map(e=>(0,b.jsxs)(`div`,{className:`p-3.5 rounded-xl border border-krona-border bg-krona-workspace flex flex-col sm:flex-row sm:items-center justify-between gap-3 hover:border-krona-border-strong transition-all`,children:[(0,b.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,b.jsx)(`div`,{className:`p-2.5 rounded-xl bg-krona-gold/10 text-krona-gold shrink-0`,children:e.type===`promo`?(0,b.jsx)(v,{className:`w-5 h-5`}):(0,b.jsx)(h,{className:`w-5 h-5`})}),(0,b.jsxs)(`div`,{children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,b.jsx)(`h5`,{className:`font-bold text-xs text-krona-primary`,children:e.title}),e.promoCode&&(0,b.jsx)(`span`,{className:`px-1.5 py-0.5 rounded bg-krona-surface border border-krona-border font-mono font-bold text-[10px]`,children:e.promoCode})]}),(0,b.jsxs)(`div`,{className:`text-[11px] text-krona-secondary mt-0.5`,children:[`Канал: `,(0,b.jsx)(`strong`,{children:e.channel}),` • Сегмент: `,e.segment]})]})]}),(0,b.jsxs)(`div`,{className:`flex items-center justify-between sm:justify-end gap-4 shrink-0 pt-2 sm:pt-0 border-t sm:border-t-0 border-krona-border/50`,children:[(0,b.jsxs)(`div`,{className:`text-right`,children:[(0,b.jsx)(`div`,{className:`font-mono font-bold text-krona-primary`,children:g(e.revenue)}),(0,b.jsxs)(`div`,{className:`text-[10px] text-krona-secondary`,children:[e.sentCount,` получ. • Open `,e.openRate,`%`]})]}),(0,b.jsx)(i,{variant:e.status===`active`?`green`:`neutral`,size:`sm`,children:e.status===`active`?`Активна`:`Завершена`})]})]},e.id))})]})]}),a===`segments`&&(0,b.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft space-y-4 text-xs`,children:[(0,b.jsxs)(`div`,{className:`pb-2 border-b border-krona-border`,children:[(0,b.jsx)(`h4`,{className:`font-bold text-sm text-krona-primary`,children:`Конструктор аудиторных сегментов`}),(0,b.jsx)(`p`,{className:`text-[11px] text-krona-secondary`,children:`Настройте правила фильтрации клиентской базы для автоматического таргетинга акций`})]}),(0,b.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-4`,children:[(0,b.jsxs)(`div`,{className:`space-y-3 p-3.5 bg-krona-workspace rounded-xl border border-krona-border`,children:[(0,b.jsx)(`span`,{className:`font-bold text-krona-primary block`,children:`Параметры фильтрации:`}),(0,b.jsxs)(`div`,{className:`space-y-1`,children:[(0,b.jsxs)(`label`,{className:`text-krona-secondary flex justify-between`,children:[(0,b.jsx)(`span`,{children:`Минимальная сумма покупок (LTV):`}),(0,b.jsx)(`span`,{className:`font-mono font-bold text-krona-primary`,children:g(R)})]}),(0,b.jsx)(`input`,{type:`range`,min:1e3,max:2e4,step:500,value:R,onChange:e=>{let t=Number(e.target.value);z(t),U(Math.max(20,Math.floor(500-t/50)))},className:`w-full accent-krona-green`})]}),(0,b.jsxs)(`div`,{className:`space-y-1`,children:[(0,b.jsxs)(`label`,{className:`text-krona-secondary flex justify-between`,children:[(0,b.jsx)(`span`,{children:`Не заказывали более:`}),(0,b.jsxs)(`span`,{className:`font-mono font-bold text-krona-primary`,children:[B,` дней`]})]}),(0,b.jsx)(`input`,{type:`range`,min:7,max:90,step:1,value:B,onChange:e=>{let t=Number(e.target.value);V(t),U(Math.max(15,Math.floor(H+t/3)))},className:`w-full accent-krona-green`})]})]}),(0,b.jsxs)(`div`,{className:`p-4 bg-krona-surface rounded-xl border border-krona-border flex flex-col justify-between space-y-3`,children:[(0,b.jsxs)(`div`,{children:[(0,b.jsx)(`span`,{className:`text-[10px] uppercase font-bold text-krona-secondary block`,children:`Размер сегмента по фильтрам:`}),(0,b.jsxs)(`div`,{className:`text-2xl font-bold font-mono text-krona-green mt-1`,children:[H,` гостей`]}),(0,b.jsx)(`p`,{className:`text-[11px] text-krona-secondary mt-1`,children:`~14.2% от общей базы активных контактов CRM`})]}),(0,b.jsx)(`div`,{className:`pt-2 border-t border-krona-border flex gap-2`,children:(0,b.jsx)(n,{variant:`primary`,size:`sm`,onClick:()=>{k(!0),N(`Чек от ${g(R)}, без визитов > ${B}дн`)},className:`w-full`,children:`Создать рассылку для этого сегмента`})})]})]})]}),O&&(0,b.jsx)(p,{isOpen:O,onClose:()=>k(!1),title:`Новая промо-кампания`,subtitle:`Настройка параметров рассылки и промокода`,maxWidth:`sm`,footer:(0,b.jsxs)(`div`,{className:`flex gap-2 w-full justify-end`,children:[(0,b.jsx)(n,{variant:`secondary`,onClick:()=>k(!1),children:`Отмена`}),(0,b.jsx)(n,{variant:`primary`,onClick:t=>{if(t.preventDefault(),!A.trim())return;let n={id:`camp-${Date.now()}`,title:A.trim(),type:`promo`,segment:M,channel:P,status:`active`,sentCount:H,openRate:0,revenue:0,promoCode:I.toUpperCase(),discountPercent:15};r(e=>[n,...e]),k(!1),j(``),e({title:`Кампания создана`,message:`Кампания «${n.title}» добавлена в очередь отправки`,type:`success`})},children:`Запустить кампанию`})]}),children:(0,b.jsxs)(`div`,{className:`space-y-3 text-xs`,children:[(0,b.jsxs)(`div`,{className:`space-y-1`,children:[(0,b.jsx)(`label`,{className:`font-semibold text-krona-primary`,children:`Название акции:`}),(0,b.jsx)(`input`,{type:`text`,value:A,onChange:e=>j(e.target.value),placeholder:`Например: Скидка 15% на роллы в будни`,className:`w-full p-2 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary focus:outline-none focus:border-krona-green`})]}),(0,b.jsxs)(`div`,{className:`space-y-1`,children:[(0,b.jsx)(`label`,{className:`font-semibold text-krona-primary`,children:`Целевой сегмент:`}),(0,b.jsx)(`input`,{type:`text`,value:M,onChange:e=>N(e.target.value),className:`w-full p-2 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary focus:outline-none focus:border-krona-green`})]}),(0,b.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,b.jsxs)(`div`,{className:`space-y-1`,children:[(0,b.jsx)(`label`,{className:`font-semibold text-krona-primary`,children:`Канал отправки:`}),(0,b.jsxs)(`select`,{value:P,onChange:e=>F(e.target.value),className:`w-full p-2 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary focus:outline-none focus:border-krona-green`,children:[(0,b.jsx)(`option`,{value:`Telegram`,children:`Telegram`}),(0,b.jsx)(`option`,{value:`WhatsApp`,children:`WhatsApp`}),(0,b.jsx)(`option`,{value:`Push & SMS`,children:`Push & SMS`})]})]}),(0,b.jsxs)(`div`,{className:`space-y-1`,children:[(0,b.jsx)(`label`,{className:`font-semibold text-krona-primary`,children:`Промокод:`}),(0,b.jsx)(`input`,{type:`text`,value:I,onChange:e=>L(e.target.value),className:`w-full p-2 bg-krona-workspace border border-krona-border rounded-lg font-mono font-bold text-krona-primary focus:outline-none focus:border-krona-green uppercase`})]})]})]})})]})};export{S as MarketingModule}; \ No newline at end of file diff --git a/dist/assets/OperationsModule-CpF6Tr5k.js b/dist/assets/OperationsModule-CpF6Tr5k.js deleted file mode 100644 index 94297fb..0000000 --- a/dist/assets/OperationsModule-CpF6Tr5k.js +++ /dev/null @@ -1 +0,0 @@ -import{f as e,h as t,i as n,l as r,r as i,s as a,t as o}from"./useToast-CS8pZhce.js";import{t as s}from"./building-BdUpGLM5.js";import{t as c}from"./clock-BelL0bvZ.js";import{t as l}from"./credit-card-6Y5eHPCw.js";import{t as u}from"./dollar-sign-Bf6JneNn.js";import{t as d}from"./phone-DpnQw4if.js";import{t as f}from"./truck-D5o8mTsH.js";import{t as p}from"./user-CuEEaB8a.js";import{t as m}from"./utensils-BhILG_B7.js";import{$ as h,A as g,C as _,E as v,I as y,L as b,N as x,P as S,S as C,T as ee,Z as w,a as T,b as E,et as D,i as O,j as te,m as k,o as A,r as j,t as M,u as ne,y as re}from"./index-CyHCRa3Z.js";import{t as N}from"./formatters-WvGQLZg0.js";import{c as P,t as F}from"./mockData-DAqQG5te.js";import{InventoryModule as ie}from"./InventoryModule-BI-CFKE0.js";import{SalesModule as I}from"./SalesModule-B4sN0Ogq.js";var L={name:`banknote`,size:24,node:[[`rect`,{width:`20`,height:`12`,x:`2`,y:`6`,rx:`2`,key:`9lu3g6`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}],[`path`,{d:`M6 12h.01M18 12h.01`,key:`113zkx`}]]};L.node;var ae=r(L),R={name:`chef-hat`,size:24,node:[[`path`,{d:`M17 21a1 1 0 0 0 1-1v-5.35c0-.457.316-.844.727-1.041a4 4 0 0 0-2.134-7.589 5 5 0 0 0-9.186 0 4 4 0 0 0-2.134 7.588c.411.198.727.585.727 1.041V20a1 1 0 0 0 1 1Z`,key:`1qvrer`}],[`path`,{d:`M6 17h12`,key:`1jwigz`}]]};R.node;var z=r(R),B={name:`flame`,size:24,node:[[`path`,{d:`M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4`,key:`1slcih`}]]};B.node;var V=r(B),H={name:`printer`,size:24,node:[[`path`,{d:`M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2`,key:`143wyd`}],[`path`,{d:`M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6`,key:`1itne7`}],[`rect`,{x:`6`,y:`14`,width:`12`,height:`8`,rx:`1`,key:`1ue0tg`}]]};H.node;var oe=r(H),U={name:`qr-code`,size:24,node:[[`rect`,{width:`5`,height:`5`,x:`3`,y:`3`,rx:`1`,key:`1tu5fj`}],[`rect`,{width:`5`,height:`5`,x:`16`,y:`3`,rx:`1`,key:`1v8r4q`}],[`rect`,{width:`5`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`1x03jg`}],[`path`,{d:`M21 16h-3a2 2 0 0 0-2 2v3`,key:`177gqh`}],[`path`,{d:`M21 21v.01`,key:`ents32`}],[`path`,{d:`M12 7v3a2 2 0 0 1-2 2H7`,key:`8crl2c`}],[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M12 3h.01`,key:`n36tog`}],[`path`,{d:`M12 16v.01`,key:`133mhm`}],[`path`,{d:`M16 12h1`,key:`1slzba`}],[`path`,{d:`M21 12v.01`,key:`1lwtk9`}],[`path`,{d:`M12 21v-1`,key:`1880an`}]]};U.node;var se=r(U),W={name:`volume-2`,size:24,node:[[`path`,{d:`M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z`,key:`uqj9uw`}],[`path`,{d:`M16 9a5 5 0 0 1 0 6`,key:`1q6k2b`}],[`path`,{d:`M19.364 18.364a9 9 0 0 0 0-12.728`,key:`ijwkga`}]]};W.node;var G=r(W),K={name:`volume-x`,size:24,node:[[`path`,{d:`M11 4.702a.7.7 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.7.7 0 0 0 11 19.298z`,key:`1p7khw`}],[`path`,{d:`m16.5 14.5 5-5`,key:`cul3yw`}],[`path`,{d:`m16.5 9.5 5 5`,key:`1akey5`}]]};K.node;var q=r(K),J=t(e(),1),Y=a(),ce=[{name:`Александр Романов`,phone:`+7 (913) 900-11-22`,tag:`VIP • Скидка 10%`},{name:`Елена Морозова`,phone:`+7 (923) 456-78-90`,tag:`Постоянный гость`},{name:`Михаил Васильев`,phone:`+7 (905) 111-22-33`,tag:`Бонусная карта 5%`},{name:`ООО Альфа Консалт`,phone:`+7 (383) 200-40-50`,tag:`B2B безнал`}],le=()=>{let{showToast:e}=o(),{posCart:t,addToCart:r,removeFromCart:a,updateCartQuantity:s,clearCart:c,posDiscountPercent:u,setPosDiscount:d,posCustomerName:f,setPosCustomer:m,posOrderType:h,setPosOrderType:v,posTableNumber:y,setPosTableNumber:b,posPaymentModalOpen:S,setPosPaymentModalOpen:T,posLastReceipt:E,completeCheckout:D,getActiveProfile:O,activeLocation:k}=w(),A=O(),[P,ie]=(0,J.useState)(`Все`),[I,L]=(0,J.useState)(``),[R,z]=(0,J.useState)(!1),[B,V]=(0,J.useState)(!1),[H,U]=(0,J.useState)(!1),[W,G]=(0,J.useState)(0),[K,q]=(0,J.useState)(0),le=[`Все`,`Роллы`,`Горячее`,`Супы`,`Автоуслуги`,`Автосервис`],ue=F.filter(e=>{let t=P===`Все`||e.category===P,n=e.name.toLowerCase().includes(I.toLowerCase());return t&&n}),X=t.reduce((e,t)=>e+t.price*t.quantity,0),de=X*u/100,Z=Math.max(0,X-de),fe=()=>{t.length!==0&&(U(!1),T(!0))},pe=()=>{let e=Math.round(Z/2);G(e),q(Z-e),U(!0)},me=()=>{W+K===Z&&(T(!1),U(!1),D(`split`),z(!0))},Q=e=>{if(e===`split`){pe();return}T(!1),D(e),z(!0)},he=()=>{e({title:`Печать фискального чека`,message:`Чек ${E?.orderNumber||``} отправлен на кассовый регистратор (Атол 54-Ф)`,type:`success`})},$=Z-(W+K);return(0,Y.jsxs)(`div`,{className:`h-[calc(100vh-8.5rem)] flex flex-col md:flex-row gap-4 animate-fade-in overflow-hidden`,children:[(0,Y.jsxs)(`div`,{className:`flex-1 flex flex-col min-w-0 bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft overflow-hidden`,children:[(0,Y.jsxs)(`div`,{className:`p-3 border-b border-krona-border flex flex-wrap items-center justify-between gap-3 bg-krona-surface/70`,children:[(0,Y.jsx)(`div`,{className:`flex items-center gap-1.5 overflow-x-auto`,children:le.map(e=>(0,Y.jsx)(`button`,{onClick:()=>ie(e),className:`px-3 py-1.5 rounded-lg text-xs font-medium transition-colors ${P===e?`bg-[#2F684C] text-[#F8F6F0] shadow-sm`:`bg-krona-workspace text-krona-secondary hover:text-krona-primary border border-krona-border`}`,children:e},e))}),(0,Y.jsxs)(`div`,{className:`relative w-56`,children:[(0,Y.jsx)(re,{className:`w-3.5 h-3.5 absolute left-2.5 top-2.5 text-krona-secondary`}),(0,Y.jsx)(`input`,{type:`text`,value:I,onChange:e=>L(e.target.value),placeholder:`Поиск по названию...`,className:`w-full pl-8 pr-3 py-1.5 text-xs bg-krona-workspace border border-krona-border rounded-lg text-krona-primary placeholder:text-krona-secondary focus:outline-none focus:border-krona-green`})]})]}),(0,Y.jsx)(`div`,{className:`flex-1 overflow-y-auto p-4 grid grid-cols-2 sm:grid-cols-3 xl:grid-cols-4 gap-3`,children:ue.map(e=>{let n=t.find(t=>t.id===e.id),a=e.isStopListed;return(0,Y.jsxs)(`div`,{onClick:()=>!a&&r(e),className:`group relative p-3.5 rounded-xl border flex flex-col justify-between transition-all select-none ${a?`opacity-50 border-krona-danger/40 bg-krona-danger/5 cursor-not-allowed`:`cursor-pointer border-krona-border bg-krona-surface hover:border-krona-green/60 hover:shadow-krona-soft active:scale-[0.99]`} ${n?`ring-2 ring-krona-green/40`:``}`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-1 mb-1.5`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] text-krona-secondary uppercase font-semibold`,children:e.category}),a?(0,Y.jsx)(i,{variant:`danger`,size:`sm`,children:`Стоп-лист`}):n?(0,Y.jsxs)(i,{variant:`green`,size:`sm`,children:[n.quantity,` в чеке`]}):null]}),(0,Y.jsx)(`h4`,{className:`text-xs font-bold text-krona-primary leading-snug line-clamp-2`,children:e.name}),e.description&&(0,Y.jsx)(`p`,{className:`text-[11px] text-krona-secondary line-clamp-2 mt-1`,children:e.description})]}),(0,Y.jsxs)(`div`,{className:`mt-3 pt-2.5 border-t border-krona-border/40 flex items-baseline justify-between`,children:[(0,Y.jsx)(`span`,{className:`text-sm font-bold text-krona-primary`,children:N(e.price)}),(0,Y.jsxs)(`span`,{className:`text-[10px] text-krona-secondary`,children:[`Себест: `,e.cost,` ₽ (`,e.marginPercent,`%)`]})]})]},e.id)})})]}),(0,Y.jsxs)(`div`,{className:`w-full md:w-80 lg:w-96 flex flex-col bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft overflow-hidden`,children:[(0,Y.jsxs)(`div`,{className:`p-3 border-b border-krona-border bg-krona-surface/80 space-y-2`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider`,children:`Текущий чек`}),(0,Y.jsx)(M,{level:`target`,size:`sm`})]}),(0,Y.jsx)(`span`,{className:`text-xs text-krona-secondary`,children:k})]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-3 gap-1 bg-krona-workspace p-1 rounded-lg border border-krona-border text-xs`,children:[(0,Y.jsx)(`button`,{onClick:()=>v(`hall`),className:`py-1 rounded font-medium transition-colors ${h===`hall`?`bg-[#2F684C] text-white shadow-sm`:`text-krona-secondary`}`,children:`В зале`}),(0,Y.jsx)(`button`,{onClick:()=>v(`takeaway`),className:`py-1 rounded font-medium transition-colors ${h===`takeaway`?`bg-[#2F684C] text-white shadow-sm`:`text-krona-secondary`}`,children:`Навынос`}),(0,Y.jsx)(`button`,{onClick:()=>v(`delivery`),className:`py-1 rounded font-medium transition-colors ${h===`delivery`?`bg-[#2F684C] text-white shadow-sm`:`text-krona-secondary`}`,children:`Доставка`})]}),(0,Y.jsxs)(`div`,{className:`relative`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsxs)(`div`,{className:`flex-1 flex items-center gap-1.5 px-2.5 py-1 bg-krona-workspace border border-krona-border rounded-md text-xs`,children:[(0,Y.jsx)(p,{className:`w-3.5 h-3.5 text-krona-secondary`}),(0,Y.jsx)(`input`,{type:`text`,value:f,onChange:e=>m(e.target.value),placeholder:`Клиент / Выбрать...`,className:`w-full bg-transparent focus:outline-none text-xs text-krona-primary`}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>V(!B),className:`text-krona-secondary hover:text-krona-primary`,title:`Выбрать из справочника`,children:(0,Y.jsx)(x,{className:`w-3.5 h-3.5`})})]}),h===`hall`&&(0,Y.jsx)(`div`,{className:`w-24`,children:(0,Y.jsx)(`input`,{type:`text`,value:y,onChange:e=>b(e.target.value),placeholder:`Стол...`,className:`w-full px-2 py-1 bg-krona-workspace border border-krona-border rounded-md text-xs text-krona-primary text-center font-medium focus:outline-none`})})]}),B&&(0,Y.jsxs)(`div`,{className:`absolute left-0 right-0 top-full mt-1 bg-krona-surface border border-krona-border rounded-xl shadow-lg z-20 p-2 space-y-1 text-xs`,children:[(0,Y.jsx)(`div`,{className:`text-[10px] font-bold text-krona-secondary px-2 py-1 uppercase`,children:`Быстрый выбор клиента CRM`}),ce.map((e,t)=>(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>{m(e.name),V(!1),e.tag.includes(`10%`)?d(10):e.tag.includes(`5%`)&&d(5)},className:`w-full text-left p-2 rounded-lg hover:bg-krona-workspace flex items-center justify-between text-xs transition-colors`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`div`,{className:`font-semibold text-krona-primary`,children:e.name}),(0,Y.jsx)(`div`,{className:`text-[10px] text-krona-secondary`,children:e.phone})]}),(0,Y.jsx)(i,{variant:`gold`,size:`sm`,children:e.tag})]},t)),(0,Y.jsx)(`div`,{className:`pt-1 border-t border-krona-border/50 text-center`,children:(0,Y.jsx)(`button`,{type:`button`,onClick:()=>V(!1),className:`text-[11px] text-krona-secondary hover:text-krona-primary`,children:`Закрыть список`})})]})]})]}),(0,Y.jsx)(`div`,{className:`flex-1 overflow-y-auto p-3 divide-y divide-krona-border/40`,children:t.length===0?(0,Y.jsxs)(`div`,{className:`py-16 text-center text-xs text-krona-secondary`,children:[(0,Y.jsx)(C,{className:`w-8 h-8 mx-auto mb-2 opacity-30`}),`Чек пуст. Добавьте позиции из каталога слева.`]}):t.map(e=>(0,Y.jsxs)(`div`,{className:`py-2.5 first:pt-0 last:pb-0 flex items-center justify-between gap-2 text-xs`,children:[(0,Y.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Y.jsx)(`div`,{className:`font-semibold text-krona-primary truncate`,children:e.name}),(0,Y.jsxs)(`div`,{className:`text-[11px] text-krona-secondary`,children:[N(e.price),` × `,e.quantity,` = `,N(e.price*e.quantity)]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[(0,Y.jsx)(`button`,{onClick:()=>s(e.id,-1),className:`w-6 h-6 rounded bg-krona-workspace border border-krona-border flex items-center justify-center hover:bg-krona-border/50 text-krona-primary`,"aria-label":`Уменьшить количество ${e.name}`,children:(0,Y.jsx)(ee,{className:`w-3 h-3`})}),(0,Y.jsx)(`span`,{className:`w-6 text-center font-semibold text-xs text-krona-primary`,children:e.quantity}),(0,Y.jsx)(`button`,{onClick:()=>s(e.id,1),className:`w-6 h-6 rounded bg-krona-workspace border border-krona-border flex items-center justify-center hover:bg-krona-border/50 text-krona-primary`,"aria-label":`Увеличить количество ${e.name}`,children:(0,Y.jsx)(_,{className:`w-3 h-3`})}),(0,Y.jsx)(`button`,{onClick:()=>a(e.id),className:`p-1 text-krona-secondary hover:text-krona-danger ml-1`,"aria-label":`Удалить ${e.name} из чека`,children:(0,Y.jsx)(ne,{className:`w-3.5 h-3.5`})})]})]},e.id))}),(0,Y.jsxs)(`div`,{className:`p-3.5 border-t border-krona-border bg-krona-surface/80 space-y-2 text-xs`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-1 text-[11px]`,children:[(0,Y.jsx)(`span`,{className:`text-krona-secondary`,children:`Скидка:`}),(0,Y.jsx)(`div`,{className:`flex items-center gap-1`,children:[0,5,10,15,20].map(e=>(0,Y.jsxs)(`button`,{onClick:()=>d(e),className:`px-2 py-0.5 rounded border transition-colors ${u===e?`bg-krona-gold text-white font-bold border-krona-gold`:`bg-krona-workspace border-krona-border text-krona-secondary`}`,children:[e,`%`]},e))})]}),(0,Y.jsxs)(`div`,{className:`space-y-1 pt-1`,children:[(0,Y.jsxs)(`div`,{className:`flex justify-between text-krona-secondary`,children:[(0,Y.jsx)(`span`,{children:`Сумма позиций:`}),(0,Y.jsx)(`span`,{children:N(X)})]}),u>0&&(0,Y.jsxs)(`div`,{className:`flex justify-between text-krona-danger`,children:[(0,Y.jsxs)(`span`,{children:[`Скидка (`,u,`%):`]}),(0,Y.jsxs)(`span`,{children:[`-`,N(de)]})]}),(0,Y.jsxs)(`div`,{className:`flex justify-between text-base font-bold text-krona-primary pt-1 border-t border-krona-border`,children:[(0,Y.jsx)(`span`,{children:`К оплате:`}),(0,Y.jsx)(`span`,{className:`text-krona-green`,children:N(Z)})]})]}),(0,Y.jsxs)(`div`,{className:`pt-2 flex gap-2`,children:[(0,Y.jsx)(n,{variant:`secondary`,size:`md`,onClick:c,disabled:t.length===0,className:`px-3`,title:`Очистить чек`,children:`Сброс`}),(0,Y.jsxs)(n,{variant:`primary`,size:`md`,onClick:fe,disabled:t.length===0,className:`flex-1 text-sm font-semibold`,children:[`Оплатить `,N(Z)]})]})]})]}),(0,Y.jsx)(j,{isOpen:S,onClose:()=>{T(!1),U(!1)},title:H?`Смешанная оплата (Наличные + Карта)`:`Оплата заказа`,subtitle:`Сумма к оплате: ${N(Z)}`,maxWidth:`md`,children:H?(0,Y.jsxs)(`div`,{className:`space-y-4 text-xs`,children:[(0,Y.jsxs)(`div`,{className:`bg-krona-workspace p-3 rounded-lg border border-krona-border space-y-2`,children:[(0,Y.jsxs)(`div`,{className:`flex justify-between font-bold text-krona-primary`,children:[(0,Y.jsx)(`span`,{children:`Общая сумма к оплате:`}),(0,Y.jsx)(`span`,{children:N(Z)})]}),(0,Y.jsx)(`p`,{className:`text-[11px] text-krona-secondary`,children:`Распределите сумму между наличным расчетом и банковской картой:`})]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsxs)(`label`,{className:`text-[11px] font-semibold text-krona-secondary flex items-center gap-1`,children:[(0,Y.jsx)(ae,{className:`w-3.5 h-3.5 text-krona-green`}),` Сумма наличными (₽):`]}),(0,Y.jsx)(`input`,{type:`number`,min:0,max:Z,value:W,onChange:e=>{let t=Math.max(0,Number(e.target.value));G(t),q(Math.max(0,Z-t))},className:`w-full p-2 bg-krona-surface border border-krona-border rounded-lg font-mono font-bold text-sm text-krona-primary focus:outline-none focus:border-krona-green`})]}),(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsxs)(`label`,{className:`text-[11px] font-semibold text-krona-secondary flex items-center gap-1`,children:[(0,Y.jsx)(l,{className:`w-3.5 h-3.5 text-sky-600`}),` Сумма картой (₽):`]}),(0,Y.jsx)(`input`,{type:`number`,min:0,max:Z,value:K,onChange:e=>{let t=Math.max(0,Number(e.target.value));q(t),G(Math.max(0,Z-t))},className:`w-full p-2 bg-krona-surface border border-krona-border rounded-lg font-mono font-bold text-sm text-krona-primary focus:outline-none focus:border-krona-green`})]})]}),(0,Y.jsxs)(`div`,{className:`p-2.5 rounded-lg border flex items-center justify-between ${$===0?`bg-emerald-500/10 border-emerald-500/30 text-emerald-700 dark:text-emerald-300`:`bg-rose-500/10 border-rose-500/30 text-rose-700 dark:text-rose-300`}`,children:[(0,Y.jsx)(`div`,{className:`flex items-center gap-1.5 font-medium`,children:$===0?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(g,{className:`w-4 h-4 text-emerald-600`}),(0,Y.jsx)(`span`,{children:`Сумма распределена верно (100%)`})]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(te,{className:`w-4 h-4 text-rose-600`}),(0,Y.jsx)(`span`,{children:$>0?`Не распределено: ${N($)}`:`Переплата: ${N(Math.abs($))}`})]})}),(0,Y.jsxs)(`span`,{className:`font-mono font-bold`,children:[N(W+K),` / `,N(Z)]})]}),(0,Y.jsxs)(`div`,{className:`flex gap-2 pt-2 border-t border-krona-border`,children:[(0,Y.jsx)(n,{variant:`secondary`,size:`md`,onClick:()=>U(!1),className:`w-1/3`,children:`Назад`}),(0,Y.jsx)(n,{variant:`primary`,size:`md`,onClick:me,disabled:$!==0,className:`flex-1`,children:`Подтвердить раздельную оплату`})]})]}):(0,Y.jsxs)(`div`,{className:`space-y-3`,children:[(0,Y.jsxs)(`p`,{className:`text-xs text-krona-secondary`,children:[`Выберите способ расчета клиента на кассе точки «`,k,`»:`]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-2 gap-3 pt-1`,children:[(0,Y.jsxs)(`button`,{onClick:()=>Q(`card`),className:`p-4 rounded-xl border border-krona-border hover:border-krona-green hover:bg-krona-green/5 text-left flex flex-col items-center justify-center gap-2 group transition-all`,children:[(0,Y.jsx)(l,{className:`w-8 h-8 text-krona-green group-hover:scale-110 transition-transform`}),(0,Y.jsx)(`div`,{className:`text-xs font-bold text-krona-primary`,children:`Банковская карта`}),(0,Y.jsx)(`div`,{className:`text-[10px] text-krona-secondary`,children:`Терминал эквайринга`})]}),(0,Y.jsxs)(`button`,{onClick:()=>Q(`cash`),className:`p-4 rounded-xl border border-krona-border hover:border-krona-green hover:bg-krona-green/5 text-left flex flex-col items-center justify-center gap-2 group transition-all`,children:[(0,Y.jsx)(ae,{className:`w-8 h-8 text-krona-green group-hover:scale-110 transition-transform`}),(0,Y.jsx)(`div`,{className:`text-xs font-bold text-krona-primary`,children:`Наличные`}),(0,Y.jsx)(`div`,{className:`text-[10px] text-krona-secondary`,children:`С выдачей сдачи`})]}),(0,Y.jsxs)(`button`,{onClick:()=>Q(`qr`),className:`p-4 rounded-xl border border-krona-border hover:border-krona-green hover:bg-krona-green/5 text-left flex flex-col items-center justify-center gap-2 group transition-all`,children:[(0,Y.jsx)(se,{className:`w-8 h-8 text-krona-gold group-hover:scale-110 transition-transform`}),(0,Y.jsx)(`div`,{className:`text-xs font-bold text-krona-primary`,children:`СБП / QR-код`}),(0,Y.jsx)(`div`,{className:`text-[10px] text-krona-secondary`,children:`Мгновенное зачисление`})]}),(0,Y.jsxs)(`button`,{onClick:()=>Q(`split`),className:`p-4 rounded-xl border border-krona-border hover:border-krona-green hover:bg-krona-green/5 text-left flex flex-col items-center justify-center gap-2 group transition-all`,children:[(0,Y.jsx)(C,{className:`w-8 h-8 text-krona-secondary group-hover:scale-110 transition-transform`}),(0,Y.jsx)(`div`,{className:`text-xs font-bold text-krona-primary`,children:`Смешанная оплата`}),(0,Y.jsx)(`div`,{className:`text-[10px] text-krona-secondary`,children:`Часть нал + часть карта`})]})]})]})}),R&&E&&(0,Y.jsx)(j,{isOpen:R,onClose:()=>z(!1),title:`Чек успешно пробит!`,subtitle:`Заказ ${E.orderNumber} • ${E.timestamp}`,maxWidth:`sm`,footer:(0,Y.jsxs)(`div`,{className:`flex gap-2 w-full`,children:[(0,Y.jsxs)(n,{variant:`secondary`,onClick:he,className:`flex-1 flex items-center justify-center gap-1.5`,children:[(0,Y.jsx)(oe,{className:`w-4 h-4`}),`Распечатать чек`]}),(0,Y.jsx)(n,{variant:`primary`,onClick:()=>z(!1),className:`flex-1`,children:`Новый заказ`})]}),children:(0,Y.jsxs)(`div`,{className:`font-mono text-xs bg-krona-workspace p-3.5 rounded-lg border border-krona-border space-y-2`,children:[(0,Y.jsxs)(`div`,{className:`text-center font-bold pb-1 border-b border-dashed border-krona-border`,children:[A.companyName,(0,Y.jsx)(`div`,{className:`text-[10px] font-normal text-krona-secondary`,children:E.location}),(0,Y.jsx)(`div`,{className:`text-[10px] text-krona-secondary font-normal`,children:`Касса №1 • Смена открыта`})]}),(0,Y.jsx)(`div`,{className:`space-y-1 py-1`,children:E.items.map((e,t)=>(0,Y.jsxs)(`div`,{className:`flex justify-between`,children:[(0,Y.jsxs)(`span`,{children:[e.name,` × `,e.quantity]}),(0,Y.jsx)(`span`,{children:N(e.price*e.quantity)})]},t))}),(0,Y.jsxs)(`div`,{className:`pt-2 border-t border-dashed border-krona-border space-y-1`,children:[(0,Y.jsxs)(`div`,{className:`flex justify-between`,children:[(0,Y.jsx)(`span`,{children:`Сумма:`}),(0,Y.jsx)(`span`,{children:N(E.subtotal)})]}),E.discount>0&&(0,Y.jsxs)(`div`,{className:`flex justify-between text-krona-danger`,children:[(0,Y.jsx)(`span`,{children:`Скидка:`}),(0,Y.jsxs)(`span`,{children:[`-`,N(E.discount)]})]}),(0,Y.jsxs)(`div`,{className:`flex justify-between font-bold text-sm pt-1 border-t border-dotted border-krona-border`,children:[(0,Y.jsx)(`span`,{children:`ИТОГ К ОПЛАТЕ:`}),(0,Y.jsx)(`span`,{children:N(E.total)})]}),(0,Y.jsxs)(`div`,{className:`flex justify-between text-[11px] text-krona-secondary`,children:[(0,Y.jsx)(`span`,{children:`Способ оплаты:`}),(0,Y.jsx)(`span`,{className:`uppercase font-semibold`,children:E.paymentType})]}),E.customer&&(0,Y.jsxs)(`div`,{className:`flex justify-between text-[11px] text-krona-secondary`,children:[(0,Y.jsx)(`span`,{children:`Клиент:`}),(0,Y.jsx)(`span`,{children:E.customer})]}),(0,Y.jsxs)(`div`,{className:`flex justify-between text-[10px] text-krona-secondary pt-1`,children:[(0,Y.jsx)(`span`,{children:`ФП (фискальный признак):`}),(0,Y.jsx)(`span`,{children:`ФП: 49204910283`})]}),(0,Y.jsx)(`div`,{className:`flex justify-between text-[10px] text-krona-secondary`,children:(0,Y.jsx)(`span`,{children:`ФН: 996044030198 • РН ККТ: 00049281001`})})]}),(0,Y.jsxs)(`div`,{className:`pt-2 text-center text-[10px] text-krona-secondary border-t border-dashed border-krona-border`,children:[`Спасибо за заказ в «`,A.companyName,`»!`]})]})})]})},ue=()=>{let{kdsTickets:e,updateKdsTicketStatus:t}=w(),{showToast:r}=o(),[a,s]=(0,J.useState)(!0),[l,u]=(0,J.useState)(`Все цеха`),[d,f]=(0,J.useState)(0);(0,J.useEffect)(()=>{let e=setInterval(()=>{f(e=>e+1)},1e3);return()=>clearInterval(e)},[]);let p=()=>{let e=!a;s(e),r({title:e?`Звуковые оповещения включены`:`Звук отключен`,message:e?`Звуковой сигнал будет воспроизводиться при поступлении нового заказа`:`Уведомления без звука`,type:`info`})},m=[`Все цеха`,`Суши-цех`,`Кухня`,`Горячий цех`],h=e.filter(e=>l===`Все цеха`||e.items.some(e=>e.station===l)),_=h.filter(e=>e.status===`new`),v=h.filter(e=>e.status===`cooking`),y=h.filter(e=>e.status===`ready`),b=e=>{let r=e.elapsedMinutes+Math.floor(d/60),a=r>20,o=r>10&&r<=20;return(0,Y.jsxs)(`div`,{className:`p-3.5 rounded-xl border flex flex-col justify-between transition-all shadow-krona-soft bg-krona-surface ${e.isUrgent?`border-rose-500/80 bg-rose-500/5 ring-1 ring-rose-500/40 animate-pulse`:a?`border-rose-500/70 bg-rose-500/5`:o?`border-amber-500/70`:`border-krona-border`}`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between pb-2 border-b border-krona-border/60`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Y.jsx)(`span`,{className:`font-bold text-sm text-krona-primary`,children:e.orderNumber}),(0,Y.jsx)(i,{variant:`neutral`,size:`sm`,children:e.tableOrChannel}),e.isUrgent&&(0,Y.jsx)(i,{variant:`danger`,size:`sm`,children:`Срочно`})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,Y.jsx)(c,{className:`w-3.5 h-3.5 ${a?`text-rose-600`:o?`text-amber-600`:`text-krona-secondary`}`}),(0,Y.jsxs)(`span`,{className:`text-xs font-mono font-bold ${a?`text-rose-600`:o?`text-amber-600`:`text-krona-secondary`}`,children:[r,` мин`]})]})]}),(0,Y.jsx)(`div`,{className:`py-2.5 space-y-2 text-xs`,children:e.items.map((e,t)=>(0,Y.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 font-medium text-krona-primary`,children:[(0,Y.jsx)(`span`,{className:`w-5 h-5 rounded bg-krona-workspace border border-krona-border flex items-center justify-center font-bold text-xs`,children:e.quantity}),(0,Y.jsx)(`span`,{children:e.name})]}),(0,Y.jsx)(`span`,{className:`text-[10px] px-1.5 py-0.5 rounded bg-krona-muted text-krona-secondary`,children:e.station})]},t))})]}),(0,Y.jsxs)(`div`,{className:`pt-2.5 border-t border-krona-border/60 flex items-center justify-between gap-2`,children:[e.status===`new`&&(0,Y.jsxs)(n,{variant:`gold`,size:`sm`,className:`w-full text-xs`,onClick:()=>t(e.id,`cooking`),children:[(0,Y.jsx)(V,{className:`w-3.5 h-3.5 mr-1.5`}),`В работу (Начать готовить)`]}),e.status===`cooking`&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 w-full`,children:[(0,Y.jsx)(n,{variant:`secondary`,size:`sm`,className:`px-2`,title:`Вернуть в новые`,onClick:()=>t(e.id,`new`),children:(0,Y.jsx)(E,{className:`w-3 h-3 text-krona-secondary`})}),(0,Y.jsxs)(n,{variant:`primary`,size:`sm`,className:`flex-1 text-xs`,onClick:()=>t(e.id,`ready`),children:[(0,Y.jsx)(S,{className:`w-3.5 h-3.5 mr-1.5`}),`Готово к выдаче`]})]}),e.status===`ready`&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 w-full`,children:[(0,Y.jsx)(n,{variant:`secondary`,size:`sm`,className:`px-2`,title:`Вернуть в готовку`,onClick:()=>t(e.id,`cooking`),children:(0,Y.jsx)(E,{className:`w-3 h-3 text-krona-secondary`})}),(0,Y.jsxs)(n,{variant:`secondary`,size:`sm`,className:`flex-1 text-xs hover:bg-emerald-500/10 hover:border-emerald-500/50`,onClick:()=>t(e.id,`served`),children:[(0,Y.jsx)(g,{className:`w-3.5 h-3.5 mr-1.5 text-emerald-600`}),`Выдано гостю / курьеру`]})]})]})]},e.id)};return(0,Y.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 bg-krona-surface p-3.5 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`h2`,{className:`text-sm font-bold text-krona-primary`,children:`Кухонный монитор заказов & Экран цехов (KDS)`}),(0,Y.jsx)(M,{level:`target`,size:`sm`})]}),(0,Y.jsx)(`p`,{className:`text-xs text-krona-secondary mt-0.5`,children:`Управление очередью приготовления блюд по станциям в реальном времени с таймерами готовки`})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-xs flex-wrap`,children:[(0,Y.jsx)(`div`,{className:`flex items-center gap-1 bg-krona-workspace p-1 rounded-lg border border-krona-border`,children:m.map(e=>(0,Y.jsx)(`button`,{onClick:()=>u(e),className:`px-2.5 py-1 rounded text-xs font-medium transition-colors ${l===e?`bg-[#2F684C] text-white shadow-sm`:`text-krona-secondary hover:text-krona-primary`}`,children:e},e))}),(0,Y.jsx)(n,{variant:`secondary`,size:`sm`,onClick:p,title:a?`Звук включен`:`Звук выключен`,className:`px-2.5`,children:a?(0,Y.jsx)(G,{className:`w-3.5 h-3.5 text-emerald-600`}):(0,Y.jsx)(q,{className:`w-3.5 h-3.5 text-krona-secondary`})}),(0,Y.jsxs)(i,{variant:`warning`,size:`md`,children:[`В работе: `,v.length]}),(0,Y.jsxs)(i,{variant:`green`,size:`md`,children:[`Готово: `,y.length]})]})]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-3 gap-4`,children:[(0,Y.jsxs)(`div`,{className:`bg-krona-workspace/80 border border-krona-border rounded-xl p-3 flex flex-col min-h-[500px]`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between pb-2 mb-2 border-b border-krona-border`,children:[(0,Y.jsxs)(`span`,{className:`text-xs font-bold text-krona-primary flex items-center gap-1.5`,children:[(0,Y.jsx)(`span`,{className:`w-2 h-2 rounded-full bg-sky-500`}),`Новые заказы`]}),(0,Y.jsx)(`span`,{className:`text-xs font-mono font-bold text-krona-secondary`,children:_.length})]}),(0,Y.jsx)(`div`,{className:`space-y-3 flex-1 overflow-y-auto`,children:_.length===0?(0,Y.jsx)(`div`,{className:`text-center py-16 text-xs text-krona-secondary`,children:`Нет новых заказов в цехе`}):_.map(b)})]}),(0,Y.jsxs)(`div`,{className:`bg-krona-workspace/80 border border-krona-border rounded-xl p-3 flex flex-col min-h-[500px]`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between pb-2 mb-2 border-b border-krona-border`,children:[(0,Y.jsxs)(`span`,{className:`text-xs font-bold text-krona-primary flex items-center gap-1.5`,children:[(0,Y.jsx)(`span`,{className:`w-2 h-2 rounded-full bg-amber-500`}),`Готовятся на кухне`]}),(0,Y.jsx)(`span`,{className:`text-xs font-mono font-bold text-krona-secondary`,children:v.length})]}),(0,Y.jsx)(`div`,{className:`space-y-3 flex-1 overflow-y-auto`,children:v.length===0?(0,Y.jsx)(`div`,{className:`text-center py-16 text-xs text-krona-secondary`,children:`Цех свободен`}):v.map(b)})]}),(0,Y.jsxs)(`div`,{className:`bg-krona-workspace/80 border border-krona-border rounded-xl p-3 flex flex-col min-h-[500px]`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between pb-2 mb-2 border-b border-krona-border`,children:[(0,Y.jsxs)(`span`,{className:`text-xs font-bold text-krona-primary flex items-center gap-1.5`,children:[(0,Y.jsx)(`span`,{className:`w-2 h-2 rounded-full bg-emerald-500`}),`Готовы к выдаче`]}),(0,Y.jsx)(`span`,{className:`text-xs font-mono font-bold text-krona-secondary`,children:y.length})]}),(0,Y.jsx)(`div`,{className:`space-y-3 flex-1 overflow-y-auto`,children:y.length===0?(0,Y.jsx)(`div`,{className:`text-center py-16 text-xs text-krona-secondary`,children:`Нет готовых к выдаче`}):y.map(b)})]})]})]})},X=[{id:`t1`,name:`Стол 1 (VIP)`,zone:`VIP-зона`,capacity:6,status:`occupied`,waiter:`Алина Соколова`,seatedMinutes:45,currentTotal:6850,guestsCount:5,items:[{name:`Филадельфия Премиум`,qty:2,price:950},{name:`Том Ям с морепродуктами`,qty:2,price:680},{name:`Сет Дракон`,qty:1,price:2190},{name:`Морс клюквенный 1л`,qty:2,price:350}]},{id:`t2`,name:`Стол 2`,zone:`Основной зал`,capacity:2,status:`occupied`,waiter:`Артем Васильев`,seatedMinutes:22,currentTotal:2450,guestsCount:2,items:[{name:`Калифорния краб`,qty:2,price:790},{name:`Рамен Тонкоцу`,qty:1,price:590},{name:`Зеленый чай Сентя`,qty:1,price:280}]},{id:`t3`,name:`Стол 3`,zone:`Основной зал`,capacity:4,status:`free`},{id:`t4`,name:`Стол 4 (у окна)`,zone:`Основной зал`,capacity:4,status:`occupied`,waiter:`Алина Соколова`,seatedMinutes:18,currentTotal:4200,guestsCount:3,items:[{name:`Гёдза со свининой`,qty:3,price:420},{name:`Сет Горячая Шестерка`,qty:1,price:2450},{name:`Лимонад Юдзу`,qty:1,price:490}]},{id:`t5`,name:`Стол 5 (диван)`,zone:`Основной зал`,capacity:6,status:`reserved`,reservationTime:`19:00`,reservationClient:`Анна Воронина (3 чел)`},{id:`t6`,name:`Стол 6`,zone:`Основной зал`,capacity:2,status:`free`},{id:`t7`,name:`Стол 7`,zone:`Терраса`,capacity:4,status:`bill_printed`,waiter:`Артем Васильев`,seatedMinutes:62,currentTotal:5100,guestsCount:4,items:[{name:`Сет Филадельфия Мания`,qty:1,price:2890},{name:`Салат Чука с ореховым соусом`,qty:2,price:450},{name:`Чайник Эрл Грей`,qty:1,price:350},{name:`Десерт Моти ассорти`,qty:2,price:480}]},{id:`t8`,name:`Стол 8`,zone:`Терраса`,capacity:4,status:`free`},{id:`bar1`,name:`Барная стойка 1-3`,zone:`Бар`,capacity:3,status:`occupied`,waiter:`Бармен`,seatedMinutes:12,currentTotal:1800,guestsCount:2,items:[{name:`Коктейль Саке Сауэр`,qty:2,price:650},{name:`Эдамаме с морской солью`,qty:1,price:350}]}],de=()=>{let[e,t]=(0,J.useState)(X),[r,a]=(0,J.useState)(null),[s,l]=(0,J.useState)(`Все зоны`),[u,d]=(0,J.useState)(!1),[f,p]=(0,J.useState)(``),[h,g]=(0,J.useState)(`20:00`),[_,v]=(0,J.useState)(2),{setPosTableNumber:y}=w(),{showToast:x}=o(),S=D(),C=[`Все зоны`,`Основной зал`,`VIP-зона`,`Терраса`,`Бар`],ee=e.filter(e=>s===`Все зоны`||e.zone===s),T=e=>{y(e.name),S(`/operations/pos`)},E=e=>{t(t=>t.map(t=>t.id===e?{...t,status:`bill_printed`}:t)),r&&r.id===e&&a({...r,status:`bill_printed`}),x({title:`Пречек напечатан`,message:`Предварительный счет для стола «${r?.name||e}» отправлен на печать`,type:`success`})},O=e=>{t(t=>t.map(t=>t.id===e?{...t,status:`free`,currentTotal:0,guestsCount:void 0,waiter:void 0,seatedMinutes:void 0,items:[]}:t)),a(null),x({title:`Стол освобожден`,message:`Стол готов к приему новых гостей`,type:`info`})},te=e=>{t(t=>t.map(t=>t.id===e?{...t,status:`occupied`,waiter:`Дежурный официант`,seatedMinutes:1,guestsCount:t.capacity,currentTotal:0,items:[]}:t)),r&&r.id===e&&a({...r,status:`occupied`,waiter:`Дежурный официант`,seatedMinutes:1,guestsCount:r.capacity,currentTotal:0,items:[]}),x({title:`Гости рассажены`,message:`Стол ${r?.name||``} переведен в статус «Занят»`,type:`success`})},k=()=>{r&&(t(e=>e.map(e=>e.id===r.id?{...e,status:`reserved`,reservationTime:h,reservationClient:`${f} (${_} чел)`}:e)),d(!1),a(null),x({title:`Бронь подтверждена`,message:`Бронь на время ${h} для ${f} сохранена`,type:`success`}))},ne=e=>{switch(e){case`occupied`:return(0,Y.jsx)(i,{variant:`green`,size:`sm`,children:`Занят`});case`reserved`:return(0,Y.jsx)(i,{variant:`gold`,size:`sm`,children:`Бронь`});case`bill_printed`:return(0,Y.jsx)(i,{variant:`warning`,size:`sm`,children:`Пречек`});default:return(0,Y.jsx)(i,{variant:`neutral`,size:`sm`,children:`Свободен`})}},re=e.filter(e=>e.status===`occupied`||e.status===`bill_printed`).length,P=e.filter(e=>e.status===`reserved`).length,F=e.filter(e=>e.status===`free`).length;return(0,Y.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 bg-krona-surface p-3.5 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`h2`,{className:`text-sm font-bold text-krona-primary`,children:`Схема залов, столы и обслуживание гостей`}),(0,Y.jsx)(M,{level:`target`,size:`sm`})]}),(0,Y.jsx)(`p`,{className:`text-xs text-krona-secondary mt-0.5`,children:`Интерактивная карта посадочных мест, статусы чеков, пречеки и назначенные официанты`})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,Y.jsx)(`div`,{className:`flex items-center gap-1 bg-krona-workspace p-1 rounded-lg border border-krona-border text-xs`,children:C.map(e=>(0,Y.jsx)(`button`,{onClick:()=>l(e),className:`px-2.5 py-1 rounded font-medium transition-colors ${s===e?`bg-[#2F684C] text-white shadow-sm`:`text-krona-secondary hover:text-krona-primary`}`,children:e},e))}),(0,Y.jsxs)(i,{variant:`green`,size:`md`,children:[`Занято: `,re]}),(0,Y.jsxs)(i,{variant:`gold`,size:`md`,children:[`Бронь: `,P]}),(0,Y.jsxs)(i,{variant:`neutral`,size:`md`,children:[`Свободно: `,F]})]})]}),(0,Y.jsx)(`div`,{className:`grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 gap-4`,children:ee.map(e=>{let t=e.status===`occupied`||e.status===`bill_printed`;return(0,Y.jsxs)(`div`,{onClick:()=>a(e),className:`p-4 rounded-xl border flex flex-col justify-between transition-all cursor-pointer shadow-krona-soft select-none ${e.status===`occupied`?`border-emerald-500/70 bg-emerald-500/5 hover:border-emerald-500`:e.status===`bill_printed`?`border-amber-500/70 bg-amber-500/5 hover:border-amber-500`:e.status===`reserved`?`border-krona-gold/70 bg-krona-gold/5 hover:border-krona-gold`:`border-krona-border bg-krona-surface hover:border-krona-border-strong`}`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between mb-2`,children:[(0,Y.jsx)(`span`,{className:`font-bold text-sm text-krona-primary`,children:e.name}),ne(e.status)]}),(0,Y.jsxs)(`div`,{className:`flex items-center justify-between text-xs text-krona-secondary mb-2`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,Y.jsx)(A,{className:`w-3.5 h-3.5`}),(0,Y.jsxs)(`span`,{children:[`До `,e.capacity,` гостей`]})]}),(0,Y.jsx)(`span`,{className:`text-[10px] bg-krona-workspace px-1.5 py-0.5 rounded border border-krona-border/50`,children:e.zone})]}),t&&(0,Y.jsxs)(`div`,{className:`space-y-1 py-1 text-xs`,children:[(0,Y.jsxs)(`div`,{className:`flex justify-between font-bold text-krona-primary`,children:[(0,Y.jsx)(`span`,{children:`Счет:`}),(0,Y.jsx)(`span`,{children:N(e.currentTotal||0)})]}),(0,Y.jsxs)(`div`,{className:`flex justify-between text-krona-secondary text-[11px]`,children:[(0,Y.jsx)(`span`,{children:`Официант:`}),(0,Y.jsx)(`span`,{className:`truncate`,children:e.waiter})]}),(0,Y.jsxs)(`div`,{className:`flex justify-between text-krona-secondary text-[11px]`,children:[(0,Y.jsx)(`span`,{children:`Время:`}),(0,Y.jsxs)(`span`,{children:[e.seatedMinutes,` мин`]})]})]}),e.status===`reserved`&&(0,Y.jsxs)(`div`,{className:`py-1 text-xs text-krona-gold-text bg-krona-gold/10 p-2 rounded-lg space-y-1`,children:[(0,Y.jsxs)(`div`,{className:`font-semibold flex items-center gap-1`,children:[(0,Y.jsx)(c,{className:`w-3.5 h-3.5`}),` `,e.reservationTime]}),(0,Y.jsx)(`div`,{className:`text-[11px] truncate`,children:e.reservationClient})]}),e.status===`free`&&(0,Y.jsx)(`div`,{className:`py-4 text-center text-xs text-krona-secondary`,children:`Готов к посадке`})]}),(0,Y.jsxs)(`div`,{className:`pt-2 border-t border-krona-border/50 flex justify-between items-center text-xs text-krona-green font-medium`,children:[(0,Y.jsx)(`span`,{children:`Подробнее`}),(0,Y.jsx)(`span`,{children:`→`})]})]},e.id)})}),r&&!u&&(0,Y.jsx)(j,{isOpen:!!r,onClose:()=>a(null),title:`Управление столом: ${r.name}`,subtitle:`${r.zone} • Вместимость: ${r.capacity} персон`,maxWidth:`md`,children:(0,Y.jsxs)(`div`,{className:`space-y-4 text-xs`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between p-3 bg-krona-workspace rounded-lg border border-krona-border`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:`text-krona-secondary`,children:`Текущий статус:`}),ne(r.status)]}),r.waiter&&(0,Y.jsxs)(`div`,{className:`text-krona-secondary`,children:[`Официант: `,(0,Y.jsx)(`strong`,{className:`text-krona-primary`,children:r.waiter})]})]}),(r.status===`occupied`||r.status===`bill_printed`)&&(0,Y.jsxs)(`div`,{className:`space-y-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsx)(`h4`,{className:`font-bold text-krona-primary`,children:`Заказ стола:`}),(0,Y.jsx)(`span`,{className:`font-mono font-bold text-sm text-krona-green`,children:N(r.currentTotal||0)})]}),(0,Y.jsx)(`div`,{className:`bg-krona-surface border border-krona-border rounded-lg divide-y divide-krona-border/50 max-h-48 overflow-y-auto`,children:r.items&&r.items.length>0?r.items.map((e,t)=>(0,Y.jsxs)(`div`,{className:`p-2.5 flex items-center justify-between`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:`w-5 h-5 rounded bg-krona-workspace flex items-center justify-center font-bold text-[11px]`,children:e.qty}),(0,Y.jsx)(`span`,{className:`font-medium text-krona-primary`,children:e.name})]}),(0,Y.jsx)(`span`,{className:`font-mono font-medium text-krona-primary`,children:N(e.price*e.qty)})]},t)):(0,Y.jsx)(`div`,{className:`p-4 text-center text-krona-secondary text-xs`,children:`Заказ еще формируется на кассе`})}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-2 sm:grid-cols-3 gap-2 pt-2`,children:[(0,Y.jsx)(n,{variant:`primary`,size:`sm`,onClick:()=>T(r),children:`Открыть в кассе POS`}),(0,Y.jsxs)(n,{variant:`secondary`,size:`sm`,onClick:()=>E(r.id),children:[(0,Y.jsx)(oe,{className:`w-3.5 h-3.5 mr-1`}),`Напечатать пречек`]}),(0,Y.jsx)(n,{variant:`danger`,size:`sm`,onClick:()=>O(r.id),children:`Освободить стол`})]})]}),r.status===`free`&&(0,Y.jsxs)(`div`,{className:`space-y-3 py-2 text-center`,children:[(0,Y.jsx)(`p`,{className:`text-krona-secondary`,children:`Стол свободен и готов принять гостей. Выберите действие:`}),(0,Y.jsxs)(`div`,{className:`flex justify-center gap-3`,children:[(0,Y.jsxs)(n,{variant:`primary`,size:`md`,onClick:()=>te(r.id),children:[(0,Y.jsx)(m,{className:`w-4 h-4 mr-1.5`}),`Посадить гостей (Занять стол)`]}),(0,Y.jsxs)(n,{variant:`gold`,size:`md`,onClick:()=>{v(r.capacity),d(!0)},children:[(0,Y.jsx)(b,{className:`w-4 h-4 mr-1.5`}),`Забронировать стол`]})]})]}),r.status===`reserved`&&(0,Y.jsxs)(`div`,{className:`space-y-3`,children:[(0,Y.jsxs)(`div`,{className:`p-3 bg-krona-gold/10 border border-krona-gold/30 rounded-lg`,children:[(0,Y.jsx)(`div`,{className:`font-bold text-krona-primary mb-1`,children:`Детали бронирования:`}),(0,Y.jsxs)(`div`,{className:`text-krona-secondary`,children:[`Время: `,(0,Y.jsx)(`strong`,{children:r.reservationTime})]}),(0,Y.jsxs)(`div`,{className:`text-krona-secondary`,children:[`Гость: `,(0,Y.jsx)(`strong`,{children:r.reservationClient})]})]}),(0,Y.jsxs)(`div`,{className:`flex justify-end gap-2 pt-2`,children:[(0,Y.jsx)(n,{variant:`secondary`,size:`sm`,onClick:()=>O(r.id),children:`Отменить бронь`}),(0,Y.jsx)(n,{variant:`primary`,size:`sm`,onClick:()=>te(r.id),children:`Гости прибыли (Посадить за стол)`})]})]})]})}),u&&r&&(0,Y.jsx)(j,{isOpen:u,onClose:()=>d(!1),title:`Бронирование: ${r.name}`,subtitle:`Внесение записи в журнал бронирования столов`,maxWidth:`sm`,footer:(0,Y.jsxs)(`div`,{className:`flex gap-2 w-full justify-end`,children:[(0,Y.jsx)(n,{variant:`secondary`,onClick:()=>d(!1),children:`Отмена`}),(0,Y.jsx)(n,{variant:`primary`,onClick:k,disabled:!f.trim(),children:`Сохранить бронь`})]}),children:(0,Y.jsxs)(`div`,{className:`space-y-3 text-xs`,children:[(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsx)(`label`,{className:`font-semibold text-krona-primary`,children:`Имя и телефон гостя:`}),(0,Y.jsx)(`input`,{type:`text`,value:f,onChange:e=>p(e.target.value),placeholder:`Иван Петров, +7 913...`,className:`w-full p-2 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary focus:outline-none focus:border-krona-green`})]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsx)(`label`,{className:`font-semibold text-krona-primary`,children:`Время брони:`}),(0,Y.jsx)(`input`,{type:`text`,value:h,onChange:e=>g(e.target.value),placeholder:`19:30`,className:`w-full p-2 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary focus:outline-none focus:border-krona-green`})]}),(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsx)(`label`,{className:`font-semibold text-krona-primary`,children:`Количество персон:`}),(0,Y.jsx)(`input`,{type:`number`,min:1,max:r.capacity,value:_,onChange:e=>v(Number(e.target.value)),className:`w-full p-2 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary focus:outline-none focus:border-krona-green`})]})]})]})})]})},Z=()=>{let{workOrders:e,updateWorkOrderStatus:t,setIsQuickActionsOpen:r}=w(),[a,o]=(0,J.useState)(null),s=e=>{switch(e){case`in_progress`:return(0,Y.jsx)(i,{variant:`warning`,size:`sm`,children:`В работе на посту`});case`ready`:return(0,Y.jsx)(i,{variant:`gold`,size:`sm`,children:`Готов к выдаче`});case`paid`:return(0,Y.jsx)(i,{variant:`green`,size:`sm`,children:`Оплачен и выдан`});default:return(0,Y.jsx)(i,{variant:`neutral`,size:`sm`,children:`Черновик / Заезд`})}};return(0,Y.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between bg-krona-surface p-3.5 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`h2`,{className:`text-sm font-bold text-krona-primary`,children:`Заказ-наряды автокомплекса и постов`}),(0,Y.jsx)(`p`,{className:`text-xs text-krona-secondary`,children:`Учет автомобилей, выполненных работ, списанных запчастей и нормо-часов`})]}),(0,Y.jsxs)(n,{variant:`primary`,size:`sm`,onClick:()=>r(!0),children:[(0,Y.jsx)(_,{className:`w-3.5 h-3.5 mr-1.5`}),`Новый заказ-наряд`]})]}),(0,Y.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-4`,children:e.map(e=>{let r=e.partsAmount+e.laborAmount;return(0,Y.jsxs)(`div`,{onClick:()=>o(e),className:`p-4 rounded-xl border border-krona-border bg-krona-surface hover:border-krona-border-strong shadow-krona-soft cursor-pointer transition-all space-y-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`div`,{className:`p-2 rounded-lg bg-krona-workspace text-krona-info border border-krona-border`,children:(0,Y.jsx)(y,{className:`w-4 h-4`})}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`h4`,{className:`text-sm font-bold text-krona-primary`,children:e.vehicle}),(0,Y.jsxs)(`span`,{className:`text-xs text-krona-secondary font-mono`,children:[e.id,` • `,e.bay]})]})]}),s(e.status)]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 text-xs py-1`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-krona-secondary block text-[11px]`,children:`Владелец:`}),(0,Y.jsx)(`span`,{className:`font-medium text-krona-primary`,children:e.ownerName})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-krona-secondary block text-[11px]`,children:`Мастер поста:`}),(0,Y.jsx)(`span`,{className:`font-medium text-krona-primary`,children:e.masterName})]})]}),(0,Y.jsxs)(`div`,{className:`p-2.5 rounded-lg bg-krona-workspace text-xs space-y-1`,children:[(0,Y.jsx)(`span`,{className:`text-[11px] font-semibold text-krona-secondary uppercase`,children:`Работы и услуги:`}),(0,Y.jsx)(`ul`,{className:`list-disc list-inside space-y-0.5 text-krona-primary`,children:e.services.map((e,t)=>(0,Y.jsx)(`li`,{className:`truncate`,children:e},t))})]}),(0,Y.jsxs)(`div`,{className:`pt-2 border-t border-krona-border/60 flex items-center justify-between text-xs`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-krona-secondary block text-[10px]`,children:`Итоговая стоимость:`}),(0,Y.jsx)(`span`,{className:`text-sm font-bold text-krona-green`,children:N(r)})]}),(0,Y.jsxs)(`div`,{className:`flex gap-2`,children:[e.status===`in_progress`&&(0,Y.jsx)(n,{variant:`primary`,size:`sm`,onClick:n=>{n.stopPropagation(),t(e.id,`ready`)},children:`Готово`}),e.status===`ready`&&(0,Y.jsx)(n,{variant:`gold`,size:`sm`,onClick:n=>{n.stopPropagation(),t(e.id,`paid`)},children:`Принять оплату`})]})]})]},e.id)})}),a&&(0,Y.jsx)(j,{isOpen:!!a,onClose:()=>o(null),title:`Заказ-наряд ${a.id}`,subtitle:`${a.vehicle} • ${a.bay}`,maxWidth:`md`,footer:(0,Y.jsx)(n,{variant:`secondary`,onClick:()=>o(null),children:`Закрыть`}),children:(0,Y.jsxs)(`div`,{className:`space-y-4 text-xs`,children:[(0,Y.jsxs)(`div`,{className:`grid grid-cols-2 gap-3 p-3 rounded-lg bg-krona-workspace`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-krona-secondary block`,children:`Владелец:`}),(0,Y.jsx)(`span`,{className:`font-semibold text-krona-primary`,children:a.ownerName}),(0,Y.jsx)(`span`,{className:`text-krona-secondary block text-[11px]`,children:a.phone})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-krona-secondary block`,children:`Ответственный специалист:`}),(0,Y.jsx)(`span`,{className:`font-semibold text-krona-primary`,children:a.masterName}),(0,Y.jsx)(`span`,{className:`text-krona-secondary block text-[11px]`,children:a.bay})]})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`font-semibold text-krona-primary block mb-1`,children:`Калькуляция:`}),(0,Y.jsxs)(`div`,{className:`p-3 border border-krona-border rounded-lg space-y-1.5`,children:[(0,Y.jsxs)(`div`,{className:`flex justify-between`,children:[(0,Y.jsx)(`span`,{className:`text-krona-secondary`,children:`Работы мастера:`}),(0,Y.jsx)(`span`,{className:`font-medium`,children:N(a.laborAmount)})]}),(0,Y.jsxs)(`div`,{className:`flex justify-between`,children:[(0,Y.jsx)(`span`,{className:`text-krona-secondary`,children:`Материалы и запчасти:`}),(0,Y.jsx)(`span`,{className:`font-medium`,children:N(a.partsAmount)})]}),(0,Y.jsxs)(`div`,{className:`flex justify-between pt-1 border-t border-krona-border font-bold text-sm`,children:[(0,Y.jsx)(`span`,{children:`ИТОГО К ОПЛАТЕ:`}),(0,Y.jsx)(`span`,{className:`text-krona-green`,children:N(a.laborAmount+a.partsAmount)})]})]})]})]})})]})},fe=()=>{let{bookings:e,updateBookingStatus:t,setIsQuickActionsOpen:r,getActiveProfile:a}=w(),o=a(),s=e=>{switch(e){case`confirmed`:return(0,Y.jsx)(i,{variant:`gold`,size:`sm`,children:`Подтверждена`});case`seated`:return(0,Y.jsx)(i,{variant:`green`,size:`sm`,children:`Гость пришел / Заезд`});case`completed`:return(0,Y.jsx)(i,{variant:`neutral`,size:`sm`,children:`Завершено`});case`cancelled`:return(0,Y.jsx)(i,{variant:`danger`,size:`sm`,children:`Отменена / No-Show`})}};return(0,Y.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between bg-krona-surface p-3.5 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`h2`,{className:`text-sm font-bold text-krona-primary`,children:[`Журнал бронирования & Запись ресурсов (`,o.terminology.bookingResourceLabel,`)`]}),(0,Y.jsx)(`p`,{className:`text-xs text-krona-secondary`,children:`Сетка временных слотов, подтверждение депозитов и контроль неявок (no-show)`})]}),(0,Y.jsxs)(n,{variant:`primary`,size:`sm`,onClick:()=>r(!0),children:[(0,Y.jsx)(_,{className:`w-3.5 h-3.5 mr-1.5`}),`Записать клиента`]})]}),(0,Y.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3.5`,children:e.map(e=>(0,Y.jsxs)(`div`,{className:`p-4 rounded-xl border border-krona-border bg-krona-surface shadow-krona-soft flex flex-col justify-between space-y-3`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between pb-2 border-b border-krona-border/60`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 font-bold text-sm text-krona-primary`,children:[(0,Y.jsx)(c,{className:`w-4 h-4 text-krona-gold`}),(0,Y.jsx)(`span`,{children:e.time})]}),s(e.status)]}),(0,Y.jsxs)(`div`,{className:`py-2 space-y-1.5 text-xs`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`span`,{className:`text-[10px] text-krona-secondary uppercase font-semibold`,children:[o.terminology.bookingResourceLabel,`:`]}),(0,Y.jsx)(`div`,{className:`font-semibold text-krona-primary`,children:e.resourceName})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-[10px] text-krona-secondary uppercase font-semibold`,children:`Клиент:`}),(0,Y.jsx)(`div`,{className:`text-krona-primary font-medium`,children:e.clientName}),(0,Y.jsx)(`div`,{className:`text-[11px] text-krona-secondary font-mono`,children:e.clientPhone}),e.guestsOrCar&&(0,Y.jsx)(`div`,{className:`text-[11px] text-krona-secondary italic mt-0.5`,children:e.guestsOrCar})]}),e.deposit>0&&(0,Y.jsxs)(`div`,{className:`flex justify-between pt-1 border-t border-krona-border/40 text-[11px]`,children:[(0,Y.jsx)(`span`,{className:`text-krona-secondary`,children:`Внесен депозит:`}),(0,Y.jsx)(`span`,{className:`font-semibold text-krona-green`,children:N(e.deposit)})]})]})]}),(0,Y.jsxs)(`div`,{className:`pt-2 border-t border-krona-border/60 flex items-center justify-end gap-2`,children:[e.status===`confirmed`&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(n,{variant:`outline`,size:`sm`,className:`text-xs`,onClick:()=>t(e.id,`cancelled`),children:`No-Show`}),(0,Y.jsx)(n,{variant:`primary`,size:`sm`,className:`text-xs`,onClick:()=>t(e.id,`seated`),children:`Прибыл`})]}),e.status===`seated`&&(0,Y.jsx)(n,{variant:`secondary`,size:`sm`,className:`w-full text-xs`,onClick:()=>t(e.id,`completed`),children:`Завершить визит`})]})]},e.id))})]})},pe=({initialMobile:e=!1})=>{let{deliveries:t,updateDeliveryStatus:r}=w(),[a,o]=(0,J.useState)(e),s=e=>{switch(e){case`in_transit`:return(0,Y.jsx)(i,{variant:`info`,size:`sm`,children:`Курьер в пути`});case`delivered`:return(0,Y.jsx)(i,{variant:`green`,size:`sm`,children:`Доставлен`});default:return(0,Y.jsx)(i,{variant:`warning`,size:`sm`,children:`Ожидает курьера`})}};return(0,Y.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between bg-krona-surface p-3.5 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`h2`,{className:`text-sm font-bold text-krona-primary`,children:`Управление доставкой & Мониторинг курьеров`}),(0,Y.jsx)(`p`,{className:`text-xs text-krona-secondary`,children:`Логистический контур: распределение заказов, расчет времени прибытия (ETA) и контроль налички`})]}),(0,Y.jsxs)(n,{variant:a?`gold`:`secondary`,size:`sm`,onClick:()=>o(!a),children:[(0,Y.jsx)(k,{className:`w-3.5 h-3.5 mr-1.5`}),a?`Обычный диспетчерский вид`:`Экран курьера (Mobile View)`]})]}),a?(0,Y.jsxs)(`div`,{className:`max-w-md mx-auto bg-krona-surface border-2 border-krona-gold/60 rounded-2xl p-4 shadow-xl space-y-4`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between pb-3 border-b border-krona-border`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`div`,{className:`w-8 h-8 rounded-full bg-krona-gold/20 flex items-center justify-center text-krona-gold`,children:(0,Y.jsx)(f,{className:`w-4 h-4`})}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`h4`,{className:`text-xs font-bold text-krona-primary`,children:`Алексей Смирнов (Авто)`}),(0,Y.jsx)(`span`,{className:`text-[10px] text-krona-secondary`,children:`Смена активна • Наличные: 24 500 ₽`})]})]}),(0,Y.jsx)(i,{variant:`green`,size:`sm`,children:`Онлайн`})]}),(0,Y.jsxs)(`div`,{className:`space-y-3`,children:[(0,Y.jsxs)(`span`,{className:`text-xs font-semibold uppercase tracking-wider text-krona-secondary block`,children:[`Мои текущие доставки (`,t.filter(e=>e.status!==`delivered`).length,`)`]}),t.map(e=>(0,Y.jsxs)(`div`,{className:`p-3.5 rounded-xl border border-krona-border bg-krona-workspace space-y-2.5`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsx)(`span`,{className:`font-bold text-xs text-krona-primary`,children:e.orderId}),s(e.status)]}),(0,Y.jsxs)(`div`,{className:`space-y-1 text-xs`,children:[(0,Y.jsxs)(`div`,{className:`flex items-start gap-1.5 text-krona-primary font-medium`,children:[(0,Y.jsx)(v,{className:`w-3.5 h-3.5 text-krona-danger shrink-0 mt-0.5`}),(0,Y.jsx)(`span`,{children:e.address})]}),(0,Y.jsxs)(`div`,{className:`flex items-center justify-between pt-1 text-[11px] text-krona-secondary`,children:[(0,Y.jsx)(`span`,{children:e.recipientName}),(0,Y.jsxs)(`a`,{href:`tel:${e.phone}`,className:`text-krona-green font-semibold flex items-center gap-1`,children:[(0,Y.jsx)(d,{className:`w-3 h-3`}),e.phone]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center justify-between pt-1 border-t border-krona-border/60`,children:[(0,Y.jsx)(`span`,{className:`text-krona-secondary`,children:`К оплате:`}),(0,Y.jsxs)(`span`,{className:`font-bold text-krona-primary`,children:[N(e.amount),` (`,e.paymentMethod,`)`]})]})]}),(0,Y.jsxs)(`div`,{className:`pt-2 flex gap-2`,children:[e.status===`pending`&&(0,Y.jsx)(n,{variant:`primary`,size:`sm`,className:`w-full text-xs`,onClick:()=>r(e.id,`in_transit`),children:`Заказ забрал, еду к клиенту`}),e.status===`in_transit`&&(0,Y.jsxs)(n,{variant:`gold`,size:`sm`,className:`w-full text-xs`,onClick:()=>r(e.id,`delivered`),children:[(0,Y.jsx)(g,{className:`w-3.5 h-3.5 mr-1`}),`Заказ вручен и оплачен`]})]})]},e.id))]})]}):(0,Y.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-3 gap-4`,children:t.map(e=>(0,Y.jsxs)(`div`,{className:`p-4 rounded-xl border border-krona-border bg-krona-surface shadow-krona-soft space-y-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between pb-2 border-b border-krona-border/60`,children:[(0,Y.jsx)(`span`,{className:`font-bold text-sm text-krona-primary`,children:e.orderId}),s(e.status)]}),(0,Y.jsxs)(`div`,{className:`space-y-1.5 text-xs`,children:[(0,Y.jsxs)(`div`,{className:`flex items-start gap-1.5`,children:[(0,Y.jsx)(v,{className:`w-3.5 h-3.5 text-krona-danger shrink-0 mt-0.5`}),(0,Y.jsx)(`span`,{className:`text-krona-primary font-medium leading-tight`,children:e.address})]}),(0,Y.jsxs)(`div`,{className:`pt-1 text-krona-secondary`,children:[(0,Y.jsxs)(`div`,{children:[`Получатель: `,(0,Y.jsx)(`strong`,{className:`text-krona-primary`,children:e.recipientName})]}),(0,Y.jsxs)(`div`,{children:[`Телефон: `,(0,Y.jsx)(`span`,{className:`font-mono`,children:e.phone})]}),(0,Y.jsxs)(`div`,{children:[`Курьер: `,(0,Y.jsx)(`strong`,{className:`text-krona-primary`,children:e.courierName})]})]}),(0,Y.jsxs)(`div`,{className:`flex justify-between pt-1 border-t border-krona-border/40 font-bold`,children:[(0,Y.jsx)(`span`,{children:`Сумма:`}),(0,Y.jsx)(`span`,{className:`text-krona-green`,children:N(e.amount)})]})]}),(0,Y.jsxs)(`div`,{className:`pt-2 border-t border-krona-border/60 flex justify-end gap-2`,children:[e.status===`pending`&&(0,Y.jsx)(n,{variant:`primary`,size:`sm`,className:`w-full text-xs`,onClick:()=>r(e.id,`in_transit`),children:`Передать курьеру`}),e.status===`in_transit`&&(0,Y.jsx)(n,{variant:`secondary`,size:`sm`,className:`w-full text-xs`,onClick:()=>r(e.id,`delivered`),children:`Отметить вручение`}),e.status===`delivered`&&(0,Y.jsx)(`div`,{className:`w-full text-center text-xs text-krona-green font-semibold py-1`,children:`✓ Успешно доставлен`})]})]},e.id))})]})},me=()=>{let[e]=(0,J.useState)(P),[t,r]=(0,J.useState)(null);return(0,Y.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between bg-krona-surface p-3.5 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`h2`,{className:`text-sm font-bold text-krona-primary`,children:`Технологические карты & Калькуляция (BOM)`}),(0,Y.jsx)(`p`,{className:`text-xs text-krona-secondary`,children:`Нормы расхода сырья, расчет food cost %, плановая себестоимость и маржинальность`})]}),(0,Y.jsxs)(n,{variant:`primary`,size:`sm`,onClick:()=>r(e[0]),children:[(0,Y.jsx)(z,{className:`w-3.5 h-3.5 mr-1.5`}),`Посмотреть калькуляцию`]})]}),(0,Y.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-4`,children:e.map(e=>(0,Y.jsxs)(`div`,{onClick:()=>r(e),className:`p-4 rounded-xl border border-krona-border bg-krona-surface hover:border-krona-border-strong shadow-krona-soft cursor-pointer transition-all space-y-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`h4`,{className:`text-sm font-bold text-krona-primary`,children:e.name}),(0,Y.jsxs)(`span`,{className:`text-xs text-krona-secondary`,children:[`Выход: `,e.yieldWeight,` • `,e.category]})]}),(0,Y.jsxs)(i,{variant:`green`,size:`sm`,children:[`Food Cost: `,e.foodCostPercent,`%`]})]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-3 gap-2 p-2.5 rounded-lg bg-krona-workspace text-xs`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-krona-secondary block text-[10px]`,children:`Себестоимость:`}),(0,Y.jsx)(`span`,{className:`font-bold text-krona-primary`,children:N(e.primeCost)})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-krona-secondary block text-[10px]`,children:`Цена продажи:`}),(0,Y.jsx)(`span`,{className:`font-bold text-krona-green`,children:N(e.sellingPrice)})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-krona-secondary block text-[10px]`,children:`Маржа (руб):`}),(0,Y.jsx)(`span`,{className:`font-bold text-krona-gold`,children:N(e.marginRub)})]})]}),(0,Y.jsxs)(`div`,{className:`text-xs text-krona-secondary`,children:[(0,Y.jsxs)(`span`,{className:`font-medium text-krona-primary`,children:[`Ингредиенты (`,e.ingredients.length,`): `]}),e.ingredients.map(e=>e.name).join(`, `)]})]},e.id))}),t&&(0,Y.jsx)(j,{isOpen:!!t,onClose:()=>r(null),title:`Техкарта: ${t.name}`,subtitle:`Выход готового блюда: ${t.yieldWeight}`,maxWidth:`lg`,footer:(0,Y.jsx)(n,{variant:`secondary`,onClick:()=>r(null),children:`Закрыть`}),children:(0,Y.jsxs)(`div`,{className:`space-y-4 text-xs`,children:[(0,Y.jsxs)(`div`,{className:`grid grid-cols-4 gap-2 p-3 bg-krona-workspace rounded-lg text-center`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-krona-secondary block text-[10px]`,children:`Цена в меню:`}),(0,Y.jsx)(`span`,{className:`font-bold text-sm text-krona-primary`,children:N(t.sellingPrice)})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-krona-secondary block text-[10px]`,children:`Себестоимость:`}),(0,Y.jsx)(`span`,{className:`font-bold text-sm text-krona-danger`,children:N(t.primeCost)})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-krona-secondary block text-[10px]`,children:`Food Cost %:`}),(0,Y.jsxs)(`span`,{className:`font-bold text-sm text-krona-green`,children:[t.foodCostPercent,`%`]})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-krona-secondary block text-[10px]`,children:`Маржинальный доход:`}),(0,Y.jsx)(`span`,{className:`font-bold text-sm text-krona-gold`,children:N(t.marginRub)})]})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`h5`,{className:`font-semibold text-krona-primary mb-2`,children:`Расход сырья и калькуляция:`}),(0,Y.jsxs)(`table`,{className:`w-full text-left border-collapse`,children:[(0,Y.jsx)(`thead`,{children:(0,Y.jsxs)(`tr`,{className:`border-b border-krona-border text-krona-secondary text-[11px]`,children:[(0,Y.jsx)(`th`,{className:`pb-1.5 font-medium`,children:`Ингредиент`}),(0,Y.jsx)(`th`,{className:`pb-1.5 font-medium`,children:`Брутто`}),(0,Y.jsx)(`th`,{className:`pb-1.5 font-medium`,children:`Нетто`}),(0,Y.jsx)(`th`,{className:`pb-1.5 font-medium text-right`,children:`Стоимость`})]})}),(0,Y.jsx)(`tbody`,{className:`divide-y divide-krona-border/40`,children:t.ingredients.map((e,t)=>(0,Y.jsxs)(`tr`,{className:`py-1.5`,children:[(0,Y.jsx)(`td`,{className:`py-1.5 font-medium text-krona-primary`,children:e.name}),(0,Y.jsx)(`td`,{className:`py-1.5 text-krona-secondary`,children:e.gross}),(0,Y.jsx)(`td`,{className:`py-1.5 text-krona-secondary`,children:e.net}),(0,Y.jsx)(`td`,{className:`py-1.5 font-semibold text-right text-krona-primary`,children:N(e.cost)})]},t))})]})]})]})})]})},Q=[{id:`sup-1`,name:`СибРыбТорг`,category:`Рыба и морепродукты`,phone:`+7 (383) 310-20-40`,contactPerson:`Олег Васильев`,debt:48500,deliveryDays:`Пн, Ср, Пт (до 11:00)`},{id:`sup-2`,name:`Хорека Логистик`,category:`Сыры, молочная продукция`,phone:`+7 (383) 220-11-88`,contactPerson:`Елена Белова`,debt:12400,deliveryDays:`Вторник, Четверг`},{id:`sup-3`,name:`Восточный Экспресс`,category:`Рис, соусы, водоросли, специи`,phone:`+7 (383) 299-44-33`,contactPerson:`Алексей Чэнь`,debt:0,deliveryDays:`По заявке (1 день)`},{id:`sup-4`,name:`ЭкоУпаковка Сибирь`,category:`Контейнеры, пакеты, палочки`,phone:`+7 (383) 345-67-89`,contactPerson:`Мария Семенова`,debt:3200,deliveryDays:`Среда`}],he=[{id:`PO-901`,supplierName:`СибРыбТорг`,date:`10.09.2026`,itemsCount:3,totalAmount:48500,status:`in_transit`,deliveryEta:`Сегодня к 15:30`},{id:`PO-900`,supplierName:`Хорека Логистик`,date:`09.09.2026`,itemsCount:2,totalAmount:23600,status:`received`,deliveryEta:`Получен 09.09`},{id:`PO-899`,supplierName:`Восточный Экспресс`,date:`08.09.2026`,itemsCount:5,totalAmount:38400,status:`received`,deliveryEta:`Получен 08.09`},{id:`PO-902`,supplierName:`ЭкоУпаковка Сибирь`,date:`10.09.2026`,itemsCount:4,totalAmount:14200,status:`sent`,deliveryEta:`Завтра к 12:00`}],$=()=>{let[e]=(0,J.useState)(Q),[t,r]=(0,J.useState)(he),[a,o]=(0,J.useState)(`orders`),[c,l]=(0,J.useState)(!1),[d,p]=(0,J.useState)(Q[0].name),[m,h]=(0,J.useState)(`25000`),[g,v]=(0,J.useState)(`3`),[y,b]=(0,J.useState)(`Завтра к 11:00`),x=e.reduce((e,t)=>e+t.debt,0),S=e=>{e.preventDefault();let n={id:`PO-${Math.floor(903+Math.random()*90)}`,supplierName:d,date:new Date().toLocaleDateString(`ru-RU`),itemsCount:Number(g)||1,totalAmount:Number(m)||0,status:`sent`,deliveryEta:y};r([n,...t]),l(!1)},C=e=>{switch(e){case`received`:return(0,Y.jsx)(i,{variant:`green`,size:`sm`,children:`Принят на склад`});case`in_transit`:return(0,Y.jsx)(i,{variant:`info`,size:`sm`,children:`В пути / Доставка`});case`sent`:return(0,Y.jsx)(i,{variant:`gold`,size:`sm`,children:`Отправлен поставщику`});default:return(0,Y.jsx)(i,{variant:`neutral`,size:`sm`,children:`Черновик`})}};return(0,Y.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 bg-krona-surface p-3.5 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`h2`,{className:`text-sm font-bold text-krona-primary`,children:`Закупки, заказы поставщикам и приходные накладные`}),(0,Y.jsx)(`p`,{className:`text-xs text-krona-secondary`,children:`Управление контрагентами, графиками поставок сырья и расчетами`})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center bg-krona-workspace p-1 rounded-lg border border-krona-border text-xs`,children:[(0,Y.jsxs)(`button`,{onClick:()=>o(`orders`),className:`px-3 py-1 rounded font-medium transition-colors ${a===`orders`?`bg-[#2F684C] text-white shadow-sm`:`text-krona-secondary`}`,children:[`Заказы (`,t.length,`)`]}),(0,Y.jsxs)(`button`,{onClick:()=>o(`suppliers`),className:`px-3 py-1 rounded font-medium transition-colors ${a===`suppliers`?`bg-[#2F684C] text-white shadow-sm`:`text-krona-secondary`}`,children:[`Поставщики (`,e.length,`)`]})]}),(0,Y.jsxs)(n,{variant:`primary`,size:`sm`,onClick:()=>l(!0),children:[(0,Y.jsx)(_,{className:`w-3.5 h-3.5 mr-1`}),`Новый заказ поставщику`]})]})]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-3 gap-3.5`,children:[(0,Y.jsx)(O,{title:`Задолженность перед поставщиками`,value:N(x),change:{value:`-12%`,trend:`neutral`},subtitle:`Срок оплаты: до 15.09`,icon:(0,Y.jsx)(u,{className:`w-4 h-4 text-krona-gold`})}),(0,Y.jsx)(O,{title:`Заказов в пути`,value:`${t.filter(e=>e.status===`in_transit`).length} поставки`,subtitle:`Ожидаются сегодня`,icon:(0,Y.jsx)(f,{className:`w-4 h-4 text-krona-info`})}),(0,Y.jsx)(O,{title:`Активных поставщиков`,value:`${e.length} контрагента`,subtitle:`Регулярные поставки сырья`,icon:(0,Y.jsx)(s,{className:`w-4 h-4 text-krona-green`})})]}),a===`orders`?(0,Y.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft overflow-hidden p-4 space-y-3`,children:[(0,Y.jsx)(`h4`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider`,children:`Журнал заказов поставщикам`}),(0,Y.jsx)(`div`,{className:`overflow-x-auto`,children:(0,Y.jsxs)(`table`,{className:`w-full text-left text-xs border-collapse`,children:[(0,Y.jsx)(`thead`,{className:`bg-krona-workspace/80 text-krona-secondary border-b border-krona-border`,children:(0,Y.jsxs)(`tr`,{children:[(0,Y.jsx)(`th`,{className:`p-3 font-semibold`,children:`Номер заказа`}),(0,Y.jsx)(`th`,{className:`p-3 font-semibold`,children:`Поставщик`}),(0,Y.jsx)(`th`,{className:`p-3 font-semibold`,children:`Дата`}),(0,Y.jsx)(`th`,{className:`p-3 font-semibold`,children:`Позиций сырья`}),(0,Y.jsx)(`th`,{className:`p-3 font-semibold`,children:`Сумма заказа`}),(0,Y.jsx)(`th`,{className:`p-3 font-semibold`,children:`Ожидаемая поставка`}),(0,Y.jsx)(`th`,{className:`p-3 font-semibold`,children:`Статус`})]})}),(0,Y.jsx)(`tbody`,{className:`divide-y divide-krona-border/50`,children:t.map(e=>(0,Y.jsxs)(`tr`,{className:`hover:bg-krona-workspace/50 transition-colors`,children:[(0,Y.jsx)(`td`,{className:`p-3 font-mono font-bold text-krona-primary`,children:e.id}),(0,Y.jsx)(`td`,{className:`p-3 font-medium text-krona-primary`,children:e.supplierName}),(0,Y.jsx)(`td`,{className:`p-3 text-krona-secondary`,children:e.date}),(0,Y.jsxs)(`td`,{className:`p-3 text-krona-secondary`,children:[e.itemsCount,` наим.`]}),(0,Y.jsx)(`td`,{className:`p-3 font-bold text-krona-primary`,children:N(e.totalAmount)}),(0,Y.jsx)(`td`,{className:`p-3 text-krona-secondary`,children:e.deliveryEta}),(0,Y.jsx)(`td`,{className:`p-3`,children:C(e.status)})]},e.id))})]})})]}):(0,Y.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-4`,children:e.map(e=>(0,Y.jsxs)(`div`,{className:`p-4 rounded-xl border border-krona-border bg-krona-surface shadow-krona-soft space-y-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`h4`,{className:`text-sm font-bold text-krona-primary`,children:e.name}),(0,Y.jsx)(`span`,{className:`text-xs text-krona-secondary`,children:e.category})]}),e.debt>0?(0,Y.jsxs)(i,{variant:`warning`,size:`sm`,children:[`Долг: `,N(e.debt)]}):(0,Y.jsx)(i,{variant:`green`,size:`sm`,children:`Сверено (0 ₽)`})]}),(0,Y.jsxs)(`div`,{className:`space-y-1 text-xs text-krona-secondary pt-1 border-t border-krona-border/40`,children:[(0,Y.jsxs)(`div`,{className:`flex justify-between`,children:[(0,Y.jsx)(`span`,{children:`Контактное лицо:`}),(0,Y.jsx)(`span`,{className:`font-medium text-krona-primary`,children:e.contactPerson})]}),(0,Y.jsxs)(`div`,{className:`flex justify-between`,children:[(0,Y.jsx)(`span`,{children:`Телефон:`}),(0,Y.jsx)(`span`,{className:`font-mono text-krona-primary`,children:e.phone})]}),(0,Y.jsxs)(`div`,{className:`flex justify-between`,children:[(0,Y.jsx)(`span`,{children:`Дни доставки:`}),(0,Y.jsx)(`span`,{className:`text-krona-primary`,children:e.deliveryDays})]})]})]},e.id))}),c&&(0,Y.jsx)(j,{isOpen:c,onClose:()=>l(!1),title:`Новый заказ поставщику`,subtitle:`Формирование заявки на поставку сырья и материалов`,maxWidth:`sm`,children:(0,Y.jsxs)(`form`,{onSubmit:S,className:`space-y-3 text-xs`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1.5 text-left`,children:[(0,Y.jsx)(`label`,{className:`text-xs font-medium text-krona-secondary`,children:`Поставщик`}),(0,Y.jsx)(`select`,{value:d,onChange:e=>p(e.target.value),className:`w-full bg-krona-surface border border-krona-border rounded-md px-3 py-2 text-xs text-krona-primary`,children:e.map(e=>(0,Y.jsxs)(`option`,{value:e.name,children:[e.name,` (`,e.category,`)`]},e.id))})]}),(0,Y.jsx)(T,{label:`Количество позиций в заявке`,type:`number`,value:g,onChange:e=>v(e.target.value),required:!0}),(0,Y.jsx)(T,{label:`Плановая сумма заказа (₽)`,type:`number`,value:m,onChange:e=>h(e.target.value),required:!0}),(0,Y.jsx)(T,{label:`Желаемый срок доставки`,value:y,onChange:e=>b(e.target.value),placeholder:`Завтра к 10:00`,required:!0}),(0,Y.jsxs)(`div`,{className:`pt-2 flex justify-end gap-2`,children:[(0,Y.jsx)(n,{type:`button`,variant:`secondary`,onClick:()=>l(!1),children:`Отмена`}),(0,Y.jsx)(n,{type:`submit`,variant:`primary`,children:`Отправить заказ`})]})]})})]})},ge=[{id:`b1`,name:`Пост 1 (Мойка + Детейлинг)`,type:`Моечный пост`,status:`busy`,vehicleOrMaster:`BMW X5 (А001АА 154)`,orderNumber:`WO-880`,timeRemaining:`12 мин`,workOrderType:`Комплекс Люкс`},{id:`b2`,name:`Пост 2 (Подъёмник гидравлический)`,type:`Слесарный пост`,status:`busy`,vehicleOrMaster:`Toyota Land Cruiser (Р777УУ 154)`,orderNumber:`WO-881`,timeRemaining:`25 мин`,workOrderType:`Замена масла + колодки`},{id:`b3`,name:`Пост 3 (Подъёмник 4-стоечный / Сход-развал)`,type:`Сход-развал`,status:`free`},{id:`b4`,name:`Пост 4 (Детейлинг бокс / Керамика)`,type:`Детейлинг`,status:`busy`,vehicleOrMaster:`Porsche Cayenne (В500ВВ 154)`,orderNumber:`WO-882`,timeRemaining:`45 мин`,workOrderType:`Керамика кузова`},{id:`b5`,name:`Пост 5 (Быстрая мойка кузова)`,type:`Моечный пост`,status:`free`},{id:`b6`,name:`Пост 6 (Шиномонтаж / Балансировка)`,type:`Шиномонтаж`,status:`free`}],_e=()=>{let{getActiveProfile:e,setIsQuickActionsOpen:t}=w(),r=e(),a=D();return(0,Y.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between bg-krona-surface p-3.5 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`h2`,{className:`text-sm font-bold text-krona-primary`,children:[`Посты, подъемники и рабочие зоны (`,r.terminology.bookingResourceLabel,`)`]}),(0,Y.jsx)(`p`,{className:`text-xs text-krona-secondary`,children:`Мониторинг загрузки постов, времени обслуживания и закрепленных заказ-нарядов`})]}),(0,Y.jsxs)(n,{variant:`primary`,size:`sm`,onClick:()=>t(!0),children:[(0,Y.jsx)(_,{className:`w-3.5 h-3.5 mr-1`}),`Заезд на пост`]})]}),(0,Y.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-3 gap-4`,children:ge.map(e=>{let r=e.status===`busy`;return(0,Y.jsxs)(`div`,{className:`p-4 rounded-xl border shadow-krona-soft flex flex-col justify-between space-y-3 transition-all ${r?`border-krona-gold/60 bg-krona-surface`:`border-krona-border bg-krona-surface/60 opacity-90`}`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between mb-2`,children:[(0,Y.jsx)(`span`,{className:`font-bold text-xs text-krona-primary`,children:e.name}),(0,Y.jsx)(i,{variant:r?`gold`:`green`,size:`sm`,children:r?`Занят`:`Свободен`})]}),(0,Y.jsx)(`div`,{className:`text-[11px] text-krona-secondary mb-2`,children:e.type}),r?(0,Y.jsxs)(`div`,{className:`p-3 rounded-lg bg-krona-workspace space-y-1.5 text-xs`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 font-bold text-krona-primary`,children:[(0,Y.jsx)(y,{className:`w-3.5 h-3.5 text-krona-info`}),(0,Y.jsx)(`span`,{children:e.vehicleOrMaster})]}),(0,Y.jsx)(`div`,{className:`text-krona-secondary text-[11px]`,children:e.workOrderType}),(0,Y.jsxs)(`div`,{className:`flex items-center justify-between pt-1 border-t border-krona-border/60 text-[11px]`,children:[(0,Y.jsx)(`span`,{className:`text-krona-secondary font-mono`,children:e.orderNumber}),(0,Y.jsxs)(`span`,{className:`text-krona-warning font-semibold flex items-center gap-1`,children:[(0,Y.jsx)(c,{className:`w-3 h-3`}),`Осталось `,e.timeRemaining]})]})]}):(0,Y.jsx)(`div`,{className:`py-6 text-center text-xs text-krona-secondary`,children:`Пост свободен. Готов к приему автомобиля.`})]}),(0,Y.jsx)(`div`,{className:`pt-2 border-t border-krona-border/60 flex justify-end gap-2`,children:r?(0,Y.jsx)(n,{variant:`outline`,size:`sm`,className:`w-full text-xs`,onClick:()=>a(`/operations/work-orders`),children:`Открыть заказ-наряд`}):(0,Y.jsx)(n,{variant:`primary`,size:`sm`,className:`w-full text-xs`,onClick:()=>t(!0),children:`Назначить автомобиль`})})]},e.id)})})]})},ve=()=>{let e=h(),t=D(),{getActiveProfile:r,getActiveCapabilities:a,setIsQuickActionsOpen:o,activeLocation:s}=w(),c=r(),l=a(),u=e.pathname;return u===`/operations/pos`?(0,Y.jsx)(le,{}):u===`/operations/kds`?(0,Y.jsx)(ue,{}):u===`/operations/dining`?(0,Y.jsx)(de,{}):u===`/operations/work-orders`?(0,Y.jsx)(Z,{}):u===`/operations/booking`?(0,Y.jsx)(fe,{}):u===`/operations/delivery`?(0,Y.jsx)(pe,{}):u===`/operations/courier`?(0,Y.jsx)(pe,{initialMobile:!0}):u===`/operations/recipes`?(0,Y.jsx)(me,{}):u===`/operations/inventory`?(0,Y.jsx)(ie,{}):u===`/operations/orders`?(0,Y.jsx)(I,{}):u===`/operations/purchasing`?(0,Y.jsx)($,{}):u===`/operations/bays`?(0,Y.jsx)(_e,{}):u===`/operations/catalog`?(0,Y.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between bg-krona-surface p-3.5 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`h2`,{className:`text-sm font-bold text-krona-primary`,children:[c.terminology.itemsLabel,` (`,s,`)`]}),(0,Y.jsx)(`p`,{className:`text-xs text-krona-secondary`,children:`Управление ассортиментом, ценами продажи, себестоимостью и стоп-листом`})]}),(0,Y.jsxs)(n,{variant:`primary`,size:`sm`,onClick:()=>o(!0),children:[`+ Добавить `,c.terminology.itemLabel.toLowerCase()]})]}),(0,Y.jsx)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft overflow-hidden`,children:(0,Y.jsxs)(`table`,{className:`w-full text-left text-xs border-collapse`,children:[(0,Y.jsx)(`thead`,{className:`bg-krona-workspace/80 text-krona-secondary border-b border-krona-border`,children:(0,Y.jsxs)(`tr`,{children:[(0,Y.jsx)(`th`,{className:`p-3 font-semibold`,children:`Наименование`}),(0,Y.jsx)(`th`,{className:`p-3 font-semibold`,children:`Категория`}),(0,Y.jsx)(`th`,{className:`p-3 font-semibold`,children:`Цена продажи`}),(0,Y.jsx)(`th`,{className:`p-3 font-semibold`,children:`Себестоимость`}),(0,Y.jsx)(`th`,{className:`p-3 font-semibold`,children:`Маржа %`}),(0,Y.jsx)(`th`,{className:`p-3 font-semibold text-center`,children:`Статус в меню`})]})}),(0,Y.jsx)(`tbody`,{className:`divide-y divide-krona-border/50`,children:F.map(e=>(0,Y.jsxs)(`tr`,{className:`hover:bg-krona-workspace/50 transition-colors`,children:[(0,Y.jsxs)(`td`,{className:`p-3 font-medium text-krona-primary`,children:[(0,Y.jsx)(`div`,{children:e.name}),e.description&&(0,Y.jsx)(`div`,{className:`text-[11px] text-krona-secondary`,children:e.description})]}),(0,Y.jsx)(`td`,{className:`p-3 text-krona-secondary`,children:e.category}),(0,Y.jsx)(`td`,{className:`p-3 font-bold text-krona-primary`,children:N(e.price)}),(0,Y.jsx)(`td`,{className:`p-3 text-krona-secondary`,children:N(e.cost)}),(0,Y.jsxs)(`td`,{className:`p-3 font-semibold text-krona-green`,children:[e.marginPercent,`%`]}),(0,Y.jsx)(`td`,{className:`p-3 text-center`,children:e.isStopListed?(0,Y.jsx)(i,{variant:`danger`,size:`sm`,children:`В стоп-листе`}):(0,Y.jsx)(i,{variant:`green`,size:`sm`,children:`Доступно`})})]},e.id))})]})})]}):(0,Y.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 bg-krona-surface p-4 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsxs)(`h1`,{className:`text-base font-bold text-krona-primary`,children:[`Операционный хаб: `,c.name]}),(0,Y.jsx)(M,{level:`target`,size:`sm`})]}),(0,Y.jsxs)(`p`,{className:`text-xs text-krona-secondary mt-0.5`,children:[`Точка: `,(0,Y.jsx)(`strong`,{className:`text-krona-primary`,children:s}),` • Отраслевой рабочий контур с быстрым доступом`]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[l.pos&&(0,Y.jsx)(n,{variant:`primary`,size:`sm`,onClick:()=>t(`/operations/pos`),children:`Открыть кассу (POS)`}),l.kds&&(0,Y.jsx)(n,{variant:`gold`,size:`sm`,onClick:()=>t(`/operations/kds`),children:`Кухонный экран (KDS)`})]})]}),(0,Y.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3.5`,children:c.operationsTabs.filter(e=>e.id!==`overview`).map(e=>(0,Y.jsxs)(`div`,{onClick:()=>t(e.route),className:`p-4 rounded-xl border border-krona-border bg-krona-surface hover:border-krona-green/70 hover:shadow-krona-soft cursor-pointer transition-all space-y-2 group`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsx)(`span`,{className:`font-bold text-sm text-krona-primary group-hover:text-krona-green transition-colors`,children:e.label}),e.badge&&(0,Y.jsx)(i,{variant:`gold`,size:`sm`,children:e.badge})]}),(0,Y.jsxs)(`p`,{className:`text-xs text-krona-secondary`,children:[`Перейти в рабочий экран «`,e.label,`» для текущей смены`]}),(0,Y.jsx)(`div`,{className:`text-xs text-krona-green font-medium pt-1`,children:`Открыть раздел →`})]},e.id))})]})};export{ve as OperationsModule}; \ No newline at end of file diff --git a/dist/assets/SalesModule-B4sN0Ogq.js b/dist/assets/SalesModule-B4sN0Ogq.js deleted file mode 100644 index 5483de5..0000000 --- a/dist/assets/SalesModule-B4sN0Ogq.js +++ /dev/null @@ -1 +0,0 @@ -import{f as e,h as t,i as n,l as r,r as i,s as a,t as o}from"./useToast-CS8pZhce.js";import{t as s}from"./credit-card-6Y5eHPCw.js";import{t as ee}from"./package-Dg7SbpiM.js";import{t as c}from"./truck-D5o8mTsH.js";import{A as l,C as u,M as te,Y as d,b as f,g as p,n as ne,r as m,t as re,y as h}from"./index-CyHCRa3Z.js";import{t as g}from"./useOrders-E7OnZAao.js";import{t as _}from"./currency-DdDs82F5.js";import{t as v}from"./useInventory-Y83xzzVb.js";var y={name:`circle-x`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]],aliases:[`x-circle`]};y.node;var b=r(y),x=t(e(),1),S=a(),C=()=>{let{showToast:e}=o(),{orders:t,products:r,payments:a,shipments:y,createOrder:C,confirmOrder:ie,cancelOrder:w,createPayment:T,createShipment:E,processReturn:D}=g(),{warehouses:O}=v(),[k,ae]=(0,x.useState)(``),[A,oe]=(0,x.useState)(`all`),[j,M]=(0,x.useState)(null),[se,N]=(0,x.useState)(!1),[P,F]=(0,x.useState)(!1),[I,L]=(0,x.useState)(!1),[R,z]=(0,x.useState)(!1),[B,V]=(0,x.useState)(``),[H,U]=(0,x.useState)(``),[W,G]=(0,x.useState)(1),[K,ce]=(0,x.useState)(`bank_transfer`),[q,J]=(0,x.useState)(`wh_main`),[Y,le]=(0,x.useState)(`Не подошел размер / брак`),X=(0,x.useMemo)(()=>j?t.find(e=>e.id===j.id)||j:null,[t,j]),Z=(0,x.useMemo)(()=>t.filter(e=>{let t=A===`all`||e.status===A,n=!k||e.orderNumber.toLowerCase().includes(k.toLowerCase())||e.customerName.toLowerCase().includes(k.toLowerCase());return t&&n}),[t,A,k]),Q=async t=>{try{await ie(t,q),e(`Заказ подтвержден! Зарезервирован остаток на складе.`,`success`)}catch(t){e(`Ошибка: ${t instanceof Error?t.message:String(t)}`,`error`)}},ue=async()=>{if(X)try{await T(X.id,X.total,K,!0),F(!1),e(`Оплата успешно принята! Поступление отражено в ДДС Финансов.`,`success`)}catch(t){e(`Ошибка оплаты: ${t instanceof Error?t.message:String(t)}`,`error`)}},de=async()=>{if(X)try{await E(X.id,q),L(!1),e(`Отгрузка сформирована! Товар списан со склада.`,`success`)}catch(t){e(`Ошибка отгрузки: ${t instanceof Error?t.message:String(t)}`,`error`)}},fe=async t=>{try{await w(t),e(`Заказ отменен. Резервы на складе освобождены.`,`info`)}catch(t){e(`Ошибка отмены: ${t instanceof Error?t.message:String(t)}`,`error`)}},pe=async()=>{if(X)try{let t=X.items.map(e=>({productId:e.productId,sku:e.sku,name:e.name,quantity:e.quantity,refundAmount:e.totalPrice}));await D(X.id,Y,t,q,!0),z(!1),e(`Возврат оформлен! Товар возвращен на склад, расход отражен в ДДС.`,`success`)}catch(t){e(`Ошибка возврата: ${t instanceof Error?t.message:String(t)}`,`error`)}},me=async t=>{t.preventDefault();let n=r.find(e=>e.id===H)||r[0];if(!n)return;let i=n.price.minor,a=i*W,o=`ORD-${Date.now().toString().slice(-5)}`;await C({orderNumber:o,customerType:`contact`,customerId:`cnt_custom`,customerName:B||`Розничный покупатель`,status:`draft`,paymentStatus:`pending`,fulfillmentStatus:`unfulfilled`,items:[{id:`item_${Date.now()}`,productId:n.id,sku:n.sku,name:n.name,quantity:W,unitPrice:{minor:i,currency:`RUB`},discountMinor:0,totalPrice:{minor:a,currency:`RUB`}}],subtotal:{minor:a,currency:`RUB`},discountMinor:0,taxMinor:Math.round(a*.2),shippingMinor:0,total:{minor:a,currency:`RUB`},channel:`b2b`}),N(!1),V(``),G(1),e(`Заказ ${o} успешно создан`,`success`)},$=e=>{switch(e){case`confirmed`:return(0,S.jsx)(i,{variant:`gold`,size:`sm`,children:`Подтвержден (Резерв)`});case`shipped`:return(0,S.jsx)(i,{variant:`blue`,size:`sm`,children:`Отгружен со склада`});case`delivered`:return(0,S.jsx)(i,{variant:`green`,size:`sm`,children:`Доставлен`});case`cancelled`:return(0,S.jsx)(i,{variant:`danger`,size:`sm`,children:`Отменен`});default:return(0,S.jsx)(i,{variant:`gray`,size:`sm`,children:`Черновик`})}};return(0,S.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,S.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 bg-krona-surface p-3.5 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,S.jsxs)(`div`,{children:[(0,S.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,S.jsx)(`h1`,{className:`text-sm font-bold text-krona-primary`,children:`Коммерция & Продажи: Управление Заказами`}),(0,S.jsx)(re,{level:`pilot1`,size:`sm`})]}),(0,S.jsx)(`p`,{className:`text-xs text-krona-secondary mt-0.5`,children:`Жизненный цикл заказа: Черновик → Подтверждение (резерв) → Оплата (ДДС) → Отгрузка (списание со склада) → Доставка / Возврат`})]}),(0,S.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,S.jsxs)(n,{variant:`primary`,size:`sm`,onClick:()=>N(!0),children:[(0,S.jsx)(u,{className:`w-3.5 h-3.5 mr-1`}),` Новый заказ`]})})]}),(0,S.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3`,children:[(0,S.jsx)(`div`,{className:`flex items-center gap-1 overflow-x-auto text-xs`,children:[{key:`all`,label:`Все заказы`},{key:`draft`,label:`Черновики`},{key:`confirmed`,label:`Подтвержденные`},{key:`shipped`,label:`Отгруженные`},{key:`delivered`,label:`Доставленные`},{key:`cancelled`,label:`Отмененные`}].map(e=>(0,S.jsx)(`button`,{onClick:()=>oe(e.key),className:`px-3 py-1.5 rounded-lg font-medium transition-colors ${A===e.key?`bg-krona-green text-white shadow-sm`:`bg-krona-surface text-krona-secondary hover:text-krona-primary border border-krona-border`}`,children:e.label},e.key))}),(0,S.jsxs)(`div`,{className:`relative w-64`,children:[(0,S.jsx)(h,{className:`w-3.5 h-3.5 absolute left-2.5 top-2.5 text-krona-secondary`}),(0,S.jsx)(`input`,{type:`text`,value:k,onChange:e=>ae(e.target.value),placeholder:`Поиск по номеру или клиенту...`,className:`w-full pl-8 pr-3 py-1.5 text-xs bg-krona-surface border border-krona-border rounded-lg text-krona-primary focus:outline-none focus:border-krona-green`})]})]}),(0,S.jsx)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft overflow-hidden`,children:(0,S.jsxs)(`table`,{className:`w-full text-xs text-left`,children:[(0,S.jsx)(`thead`,{className:`bg-krona-workspace text-krona-secondary border-b border-krona-border`,children:(0,S.jsxs)(`tr`,{children:[(0,S.jsx)(`th`,{className:`p-3 font-semibold`,children:`Номер заказа`}),(0,S.jsx)(`th`,{className:`p-3 font-semibold`,children:`Клиент`}),(0,S.jsx)(`th`,{className:`p-3 font-semibold`,children:`Позиций`}),(0,S.jsx)(`th`,{className:`p-3 font-semibold`,children:`Сумма заказа`}),(0,S.jsx)(`th`,{className:`p-3 font-semibold`,children:`Статус заказа`}),(0,S.jsx)(`th`,{className:`p-3 font-semibold`,children:`Оплата`}),(0,S.jsx)(`th`,{className:`p-3 font-semibold`,children:`Складской статус`}),(0,S.jsx)(`th`,{className:`p-3 font-semibold text-right`,children:`Действие`})]})}),(0,S.jsxs)(`tbody`,{className:`divide-y divide-krona-border`,children:[Z.map(e=>(0,S.jsxs)(`tr`,{"data-testid":`order-row-${e.id}`,onClick:()=>M(e),className:`hover:bg-krona-workspace/50 cursor-pointer transition-colors`,children:[(0,S.jsx)(`td`,{className:`p-3 font-mono font-bold text-krona-primary`,children:e.orderNumber}),(0,S.jsx)(`td`,{className:`p-3 font-medium text-krona-primary`,children:e.customerName}),(0,S.jsxs)(`td`,{className:`p-3 text-krona-secondary`,children:[e.items.length,` поз.`]}),(0,S.jsx)(`td`,{className:`p-3 font-bold text-krona-green`,children:_(e.total.minor)}),(0,S.jsx)(`td`,{className:`p-3`,children:$(e.status)}),(0,S.jsx)(`td`,{className:`p-3`,children:(0,S.jsx)(i,{variant:e.paymentStatus===`paid`?`green`:e.paymentStatus===`refunded`?`danger`:`warning`,size:`sm`,children:e.paymentStatus===`paid`?`Оплачен`:e.paymentStatus===`refunded`?`Возврат`:`Ожидает оплаты`})}),(0,S.jsx)(`td`,{className:`p-3`,children:(0,S.jsx)(i,{variant:e.fulfillmentStatus===`fulfilled`?`green`:e.fulfillmentStatus===`returned`?`danger`:`gray`,size:`sm`,children:e.fulfillmentStatus===`fulfilled`?`Отгружен`:e.fulfillmentStatus===`returned`?`Возвращен`:`Не отгружен`})}),(0,S.jsx)(`td`,{className:`p-3 text-right`,children:(0,S.jsxs)(n,{variant:`ghost`,size:`sm`,children:[`Управление `,(0,S.jsx)(te,{className:`w-3.5 h-3.5 ml-1`})]})})]},e.id)),Z.length===0&&(0,S.jsx)(`tr`,{children:(0,S.jsx)(`td`,{colSpan:8,className:`p-8 text-center text-krona-secondary text-xs italic`,children:`Заказы не найдены`})})]})]})}),(0,S.jsx)(ne,{isOpen:!!X,onClose:()=>M(null),title:X?`Заказ ${X.orderNumber}`:``,size:`lg`,children:X&&(0,S.jsxs)(`div`,{className:`space-y-5 text-xs`,children:[(0,S.jsxs)(`div`,{className:`p-3.5 bg-krona-workspace rounded-xl border border-krona-border space-y-3`,children:[(0,S.jsx)(`div`,{className:`text-[11px] font-bold uppercase text-krona-secondary tracking-wider`,children:`Управление жизненным циклом заказа:`}),(0,S.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[X.status===`draft`&&(0,S.jsxs)(n,{variant:`primary`,size:`sm`,"data-testid":`confirm-order-btn`,onClick:()=>Q(X.id),children:[(0,S.jsx)(l,{className:`w-3.5 h-3.5 mr-1`}),` Подтвердить заказ (Резерв на складе)`]}),X.paymentStatus===`pending`&&X.status!==`cancelled`&&(0,S.jsxs)(n,{variant:`gold`,size:`sm`,"data-testid":`record-payment-btn`,onClick:()=>F(!0),children:[(0,S.jsx)(s,{className:`w-3.5 h-3.5 mr-1`}),` Зафиксировать оплату (ДДС)`]}),(X.status===`confirmed`||X.paymentStatus===`paid`)&&X.fulfillmentStatus===`unfulfilled`&&X.status!==`cancelled`&&(0,S.jsxs)(n,{variant:`primary`,size:`sm`,"data-testid":`create-shipment-btn`,onClick:()=>L(!0),children:[(0,S.jsx)(c,{className:`w-3.5 h-3.5 mr-1`}),` Сформировать отгрузку (Списать со склада)`]}),X.status===`shipped`&&(0,S.jsxs)(n,{variant:`secondary`,size:`sm`,onClick:()=>Q(X.id),children:[(0,S.jsx)(l,{className:`w-3.5 h-3.5 mr-1`}),` Доставлен покупателю`]}),X.fulfillmentStatus===`fulfilled`&&(0,S.jsxs)(n,{variant:`secondary`,size:`sm`,onClick:()=>z(!0),children:[(0,S.jsx)(f,{className:`w-3.5 h-3.5 mr-1 text-rose-500`}),` Оформить возврат (Возврат на склад & ДДС)`]}),X.status!==`cancelled`&&X.status!==`shipped`&&X.fulfillmentStatus!==`fulfilled`&&(0,S.jsxs)(n,{variant:`ghost`,size:`sm`,className:`text-rose-600 hover:text-rose-700 hover:bg-rose-500/10 ml-auto`,onClick:()=>fe(X.id),children:[(0,S.jsx)(b,{className:`w-3.5 h-3.5 mr-1`}),` Отменить заказ (Снять резерв)`]})]})]}),(0,S.jsxs)(`div`,{className:`grid grid-cols-2 sm:grid-cols-4 gap-3 bg-krona-surface p-3.5 rounded-xl border border-krona-border`,children:[(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`span`,{className:`text-krona-secondary`,children:`Клиент:`}),(0,S.jsx)(`div`,{className:`font-bold text-krona-primary mt-0.5`,children:X.customerName})]}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`span`,{className:`text-krona-secondary`,children:`Сумма:`}),(0,S.jsx)(`div`,{className:`font-bold text-krona-green mt-0.5`,children:_(X.total.minor)})]}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`span`,{className:`text-krona-secondary`,children:`Статус заказа:`}),(0,S.jsx)(`div`,{className:`mt-0.5`,children:$(X.status)})]}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`span`,{className:`text-krona-secondary`,children:`Оплата:`}),(0,S.jsx)(`div`,{className:`mt-0.5`,children:(0,S.jsx)(i,{variant:X.paymentStatus===`paid`?`green`:`warning`,size:`sm`,children:X.paymentStatus})})]})]}),(0,S.jsxs)(`div`,{children:[(0,S.jsxs)(`div`,{className:`font-bold text-krona-primary mb-2 flex items-center gap-1.5`,children:[(0,S.jsx)(ee,{className:`w-4 h-4 text-krona-secondary`}),` Состав заказа:`]}),(0,S.jsx)(`div`,{className:`border border-krona-border rounded-lg overflow-hidden`,children:(0,S.jsxs)(`table`,{className:`w-full text-xs text-left`,children:[(0,S.jsx)(`thead`,{className:`bg-krona-workspace text-krona-secondary border-b border-krona-border`,children:(0,S.jsxs)(`tr`,{children:[(0,S.jsx)(`th`,{className:`p-2.5 font-semibold`,children:`Артикул`}),(0,S.jsx)(`th`,{className:`p-2.5 font-semibold`,children:`Наименование`}),(0,S.jsx)(`th`,{className:`p-2.5 font-semibold`,children:`Кол-во`}),(0,S.jsx)(`th`,{className:`p-2.5 font-semibold`,children:`Цена за ед.`}),(0,S.jsx)(`th`,{className:`p-2.5 font-semibold text-right`,children:`Сумма`})]})}),(0,S.jsx)(`tbody`,{className:`divide-y divide-krona-border`,children:X.items.map(e=>(0,S.jsxs)(`tr`,{children:[(0,S.jsx)(`td`,{className:`p-2.5 font-mono text-krona-secondary`,children:e.sku}),(0,S.jsx)(`td`,{className:`p-2.5 font-medium text-krona-primary`,children:e.name}),(0,S.jsxs)(`td`,{className:`p-2.5 font-bold`,children:[e.quantity,` шт.`]}),(0,S.jsx)(`td`,{className:`p-2.5 text-krona-secondary`,children:_(e.unitPrice.minor)}),(0,S.jsx)(`td`,{className:`p-2.5 font-bold text-krona-primary text-right`,children:_(e.totalPrice.minor)})]},e.id))})]})})]}),(0,S.jsxs)(`div`,{className:`p-3 bg-krona-workspace rounded-lg border border-krona-border space-y-1.5`,children:[(0,S.jsxs)(`div`,{className:`flex justify-between text-krona-secondary`,children:[(0,S.jsx)(`span`,{children:`Промежуточный итог:`}),(0,S.jsx)(`span`,{children:_(X.subtotal.minor)})]}),(0,S.jsxs)(`div`,{className:`flex justify-between text-krona-secondary`,children:[(0,S.jsx)(`span`,{children:`НДС (20%):`}),(0,S.jsx)(`span`,{children:_(X.taxMinor)})]}),(0,S.jsxs)(`div`,{className:`flex justify-between font-bold text-sm text-krona-primary border-t border-krona-border pt-1`,children:[(0,S.jsx)(`span`,{children:`Итого к оплате:`}),(0,S.jsx)(`span`,{className:`text-krona-green`,children:_(X.total.minor)})]})]}),(0,S.jsxs)(`div`,{className:`space-y-2`,children:[(0,S.jsx)(`div`,{className:`font-bold text-krona-primary`,children:`Связанные документы:`}),(0,S.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-2 text-[11px]`,children:[a.filter(e=>e.orderId===X.id).map(e=>(0,S.jsxs)(`div`,{className:`p-2.5 rounded-lg border border-krona-border bg-emerald-500/5 flex items-center justify-between`,children:[(0,S.jsxs)(`div`,{children:[(0,S.jsxs)(`div`,{className:`font-bold text-emerald-700 dark:text-emerald-300`,children:[`Оплата `,e.transactionId]}),(0,S.jsxs)(`div`,{className:`text-krona-secondary`,children:[e.method,` • `,d(e.paidAt)]})]}),(0,S.jsx)(`span`,{className:`font-bold text-krona-green`,children:_(e.amount.minor)})]},e.id)),y.filter(e=>e.orderId===X.id).map(e=>(0,S.jsxs)(`div`,{className:`p-2.5 rounded-lg border border-krona-border bg-blue-500/5 flex items-center justify-between`,children:[(0,S.jsxs)(`div`,{children:[(0,S.jsxs)(`div`,{className:`font-bold text-blue-700 dark:text-blue-300`,children:[`Отгрузка `,e.trackingNumber]}),(0,S.jsxs)(`div`,{className:`text-krona-secondary`,children:[e.carrier,` • `,e.items.length,` поз.`]})]}),(0,S.jsx)(i,{variant:`blue`,size:`sm`,children:e.status})]},e.id))]})]})]})}),(0,S.jsx)(m,{isOpen:P,onClose:()=>F(!1),title:`Зафиксировать оплату по заказу`,size:`md`,children:X&&(0,S.jsxs)(`div`,{className:`space-y-4 text-xs`,children:[(0,S.jsxs)(`p`,{className:`text-krona-secondary`,children:[`Оплата заказа `,(0,S.jsx)(`strong`,{className:`text-krona-primary`,children:X.orderNumber}),` на сумму`,` `,(0,S.jsx)(`strong`,{className:`text-krona-green`,children:_(X.total.minor)}),`. Поступление денежных средств будет мгновенно отражено в модуле Финансы (ДДС) и увеличит остаток расчетного счета.`]}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Способ оплаты:`}),(0,S.jsxs)(`select`,{value:K,onChange:e=>ce(e.target.value),className:`w-full px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary`,children:[(0,S.jsx)(`option`,{value:`bank_transfer`,children:`Безналичный расчет (Счет)`}),(0,S.jsx)(`option`,{value:`card`,children:`Банковская карта (Эквайринг)`}),(0,S.jsx)(`option`,{value:`online`,children:`СБП / Онлайн`}),(0,S.jsx)(`option`,{value:`cash`,children:`Наличные в кассу`})]})]}),(0,S.jsxs)(`div`,{className:`flex justify-end gap-2 pt-2 border-t border-krona-border`,children:[(0,S.jsx)(n,{variant:`secondary`,size:`sm`,onClick:()=>F(!1),children:`Отмена`}),(0,S.jsxs)(n,{variant:`primary`,size:`sm`,"data-testid":`submit-payment-btn`,onClick:ue,children:[(0,S.jsx)(s,{className:`w-3.5 h-3.5 mr-1`}),` Провести платеж`]})]})]})}),(0,S.jsx)(m,{isOpen:I,onClose:()=>L(!1),title:`Формирование складской отгрузки`,size:`md`,children:X&&(0,S.jsxs)(`div`,{className:`space-y-4 text-xs`,children:[(0,S.jsxs)(`p`,{className:`text-krona-secondary`,children:[`Формирование накладной на отгрузку для заказа `,(0,S.jsx)(`strong`,{className:`text-krona-primary`,children:X.orderNumber}),`. При отгрузке зарезервированные товары будут списаны с физического складского остатка.`]}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Склад списания:`}),(0,S.jsx)(`select`,{value:q,onChange:e=>J(e.target.value),className:`w-full px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary`,children:O.map(e=>(0,S.jsxs)(`option`,{value:e.id,children:[e.name,` (`,e.address,`)`]},e.id))})]}),(0,S.jsxs)(`div`,{className:`flex justify-end gap-2 pt-2 border-t border-krona-border`,children:[(0,S.jsx)(n,{variant:`secondary`,size:`sm`,onClick:()=>L(!1),children:`Отмена`}),(0,S.jsxs)(n,{variant:`primary`,size:`sm`,"data-testid":`submit-shipment-btn`,onClick:de,children:[(0,S.jsx)(c,{className:`w-3.5 h-3.5 mr-1`}),` Сформировать отгрузку`]})]})]})}),(0,S.jsx)(m,{isOpen:R,onClose:()=>z(!1),title:`Оформление возврата товара`,size:`md`,children:X&&(0,S.jsxs)(`div`,{className:`space-y-4 text-xs`,children:[(0,S.jsxs)(`div`,{className:`p-3 bg-rose-500/10 border border-rose-500/30 rounded-lg text-rose-800 dark:text-rose-300`,children:[`При возврате товара остаток на складе будет автоматически восстановлен, а в модуле Финансы (ДДС) сформируется выплата возврата клиенту на сумму `,(0,S.jsx)(`strong`,{className:`font-bold`,children:_(X.total.minor)}),`.`]}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Причина возврата:`}),(0,S.jsx)(`input`,{type:`text`,value:Y,onChange:e=>le(e.target.value),className:`w-full px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary`})]}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Склад возврата:`}),(0,S.jsx)(`select`,{value:q,onChange:e=>J(e.target.value),className:`w-full px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary`,children:O.map(e=>(0,S.jsx)(`option`,{value:e.id,children:e.name},e.id))})]}),(0,S.jsxs)(`div`,{className:`flex justify-end gap-2 pt-2 border-t border-krona-border`,children:[(0,S.jsx)(n,{variant:`secondary`,size:`sm`,onClick:()=>z(!1),children:`Отмена`}),(0,S.jsxs)(n,{variant:`danger`,size:`sm`,onClick:pe,children:[(0,S.jsx)(f,{className:`w-3.5 h-3.5 mr-1`}),` Провести возврат`]})]})]})}),(0,S.jsx)(m,{isOpen:se,onClose:()=>N(!1),title:`Создание нового коммерческого заказа`,size:`md`,children:(0,S.jsxs)(`form`,{onSubmit:me,className:`space-y-4 text-xs`,children:[(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Клиент (ФИО или название компании):`}),(0,S.jsx)(`input`,{type:`text`,required:!0,placeholder:`Например: ООО «СеверТорг» или Иванов Иван`,value:B,onChange:e=>V(e.target.value),className:`w-full px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary`})]}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Товарная позиция:`}),(0,S.jsx)(`select`,{value:H,onChange:e=>U(e.target.value),className:`w-full px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary`,children:r.map(e=>(0,S.jsxs)(`option`,{value:e.id,children:[e.name,` — `,_(e.price.minor)]},e.id))})]}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`label`,{className:`block font-semibold text-krona-primary mb-1`,children:`Количество (шт.):`}),(0,S.jsx)(`input`,{type:`number`,min:1,value:W,onChange:e=>G(Number(e.target.value)||1),className:`w-32 px-3 py-1.5 bg-krona-workspace border border-krona-border rounded-lg text-krona-primary`})]}),(0,S.jsxs)(`div`,{className:`flex justify-end gap-2 pt-2 border-t border-krona-border`,children:[(0,S.jsx)(n,{variant:`secondary`,size:`sm`,type:`button`,onClick:()=>N(!1),children:`Отмена`}),(0,S.jsxs)(n,{variant:`primary`,size:`sm`,type:`submit`,children:[(0,S.jsx)(p,{className:`w-3.5 h-3.5 mr-1`}),` Создать заказ`]})]})]})})]})};export{C as SalesModule}; \ No newline at end of file diff --git a/dist/assets/SettingsModule-B0Z0ZLZV.js b/dist/assets/SettingsModule-B0Z0ZLZV.js deleted file mode 100644 index 991e48b..0000000 --- a/dist/assets/SettingsModule-B0Z0ZLZV.js +++ /dev/null @@ -1 +0,0 @@ -import{f as e,h as t,i as n,l as r,r as i,s as a,t as o}from"./useToast-CS8pZhce.js";import{a as s,d as c,m as l}from"./indexedDb-DZ-aRPMs.js";import{t as u}from"./building-BdUpGLM5.js";import{t as d}from"./download-ByGeM7La.js";import{t as f}from"./upload-CY2IsfiN.js";import{Q as p,V as m,Z as h,_ as g,b as _,h as v,t as y,x as b}from"./index-CyHCRa3Z.js";import{t as x}from"./types-CTcNpN0z.js";var S={name:`database`,size:24,node:[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]};S.node;var C=r(S),w=t(e(),1),T=a(),E=()=>{let{currentProfileId:e,setProfileId:t,currentRoleId:r,setRoleId:a,customCapabilities:S,toggleCapability:E,resetCapabilitiesToProfile:D}=h(),{showToast:O}=o(),[k,A]=(0,w.useState)(!1),[j,M]=(0,w.useState)(!1),[N,P]=(0,w.useState)(!1),[F,I]=(0,w.useState)(null),L=(0,w.useRef)(null);return(0,w.useEffect)(()=>{typeof window<`u`&&(window.__krona_db={exportDatabaseSnapshot:s,importDatabaseSnapshot:c,resetDatabase:l})},[]),(0,T.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,T.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 bg-krona-surface p-3.5 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,T.jsxs)(`div`,{children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(`h2`,{className:`text-sm font-bold text-krona-primary`,children:`Krona Configuration Center & Capability Studio`}),(0,T.jsx)(y,{level:`pilot1`,size:`sm`})]}),(0,T.jsx)(`p`,{className:`text-xs text-krona-secondary`,children:`Управление архитектурой экосистемы, переключение бизнес-профилей и тонкая настройка Capabilities`})]}),(0,T.jsxs)(n,{variant:`secondary`,size:`sm`,onClick:D,children:[(0,T.jsx)(b,{className:`w-3.5 h-3.5 mr-1`}),`Сбросить к дефолту профиля`]})]}),(0,T.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft flex flex-col sm:flex-row sm:items-center justify-between gap-4`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,T.jsx)(`div`,{className:`w-10 h-10 rounded-xl bg-krona-green/10 text-krona-green flex items-center justify-center border border-krona-green/20 shrink-0`,children:(0,T.jsx)(v,{className:`w-5 h-5`})}),(0,T.jsxs)(`div`,{children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(`h3`,{className:`text-sm font-bold text-krona-primary`,children:`Configuration Engine: Сущности и Конструкторы`}),(0,T.jsx)(i,{variant:`gold`,size:`sm`,children:`Phase C Central`})]}),(0,T.jsx)(`p`,{className:`text-xs text-krona-secondary`,children:`Управление 39+ типами полей, визуальный редактор форм, карточек, фильтров и кастомных модулей.`})]})]}),(0,T.jsx)(`a`,{href:`/settings/entities`,className:`inline-flex items-center justify-center px-4 py-2 rounded-lg bg-krona-green text-white text-xs font-semibold hover:bg-krona-green/90 transition-colors shrink-0`,children:`Открыть каталог сущностей →`})]}),(0,T.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft space-y-3`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(u,{className:`w-4 h-4 text-krona-gold`}),(0,T.jsx)(`h3`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider`,children:`Активный бизнес-профиль`})]}),(0,T.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-2.5`,children:Object.values(p).map(n=>(0,T.jsxs)(`button`,{onClick:()=>t(n.id),className:`p-3 rounded-xl border text-left flex flex-col justify-between transition-all ${n.id===e?`border-krona-gold bg-krona-gold/10 ring-2 ring-krona-gold/30`:`border-krona-border bg-krona-workspace hover:border-krona-border-strong`}`,children:[(0,T.jsxs)(`div`,{children:[(0,T.jsxs)(`div`,{className:`flex items-center justify-between mb-1`,children:[(0,T.jsx)(`span`,{className:`text-xs font-bold text-krona-primary`,children:n.name}),(0,T.jsx)(i,{variant:`neutral`,size:`sm`,children:n.category})]}),(0,T.jsx)(`div`,{className:`text-[11px] text-krona-secondary`,children:n.companyName})]}),(0,T.jsx)(`div`,{className:`text-[10px] text-krona-gold-text font-semibold pt-2`,children:n.id===e?`✓ Активный профиль`:`Выбрать →`})]},n.id))})]}),(0,T.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft space-y-3`,children:[(0,T.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(v,{className:`w-4 h-4 text-krona-green`}),(0,T.jsx)(`h3`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider`,children:`Capability Engine (21 системная возможность платформы)`})]}),(0,T.jsx)(`span`,{className:`text-xs text-krona-secondary`,children:`Тумблеры мгновенно перестраивают меню, разделы и табы`})]}),(0,T.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-2.5`,children:x.map(e=>{let t=S[e.id];return(0,T.jsxs)(`div`,{onClick:()=>E(e.id),className:`p-3 rounded-lg border cursor-pointer select-none transition-all flex items-center justify-between gap-2 ${t?`border-krona-green/60 bg-krona-green/5`:`border-krona-border bg-krona-workspace opacity-60`}`,children:[(0,T.jsxs)(`div`,{className:`min-w-0`,children:[(0,T.jsx)(`div`,{className:`font-bold text-xs text-krona-primary truncate`,children:e.name}),(0,T.jsx)(`div`,{className:`text-[10px] text-krona-secondary truncate`,children:e.description})]}),(0,T.jsx)(`div`,{className:`w-10 h-5 rounded-full p-0.5 transition-colors duration-200 ease-in-out shrink-0 ${t?`bg-krona-green`:`bg-[#D8D5CB] dark:bg-[#3A3D35]`}`,children:(0,T.jsx)(`div`,{className:`w-4 h-4 rounded-full bg-white transition-transform duration-200 ease-in-out shadow-sm ${t?`translate-x-5`:`translate-x-0`}`})})]},e.id)})})]}),(0,T.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft space-y-3`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(g,{className:`w-4 h-4 text-krona-info`}),(0,T.jsx)(`h3`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider`,children:`Матрица прав и ролей (RBAC)`})]}),(0,T.jsx)(`div`,{className:`grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 gap-2`,children:Object.values(m).map(e=>(0,T.jsxs)(`button`,{"data-testid":`settings-role-${e.id}`,onClick:()=>a(e.id),className:`p-2.5 rounded-lg border text-left transition-all ${e.id===r?`border-krona-green bg-krona-green/10 text-krona-green-text font-bold`:`border-krona-border bg-krona-workspace text-krona-secondary hover:text-krona-primary`}`,children:[(0,T.jsx)(`div`,{className:`text-xs font-semibold`,children:e.label}),(0,T.jsx)(`div`,{className:`text-[10px] opacity-75`,children:e.badge})]},e.id))})]}),(0,T.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft space-y-3`,children:[(0,T.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(C,{className:`w-4 h-4 text-krona-green`}),(0,T.jsx)(`h3`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider`,children:`Управление снимками и базой данных (IndexedDB)`})]}),F&&(0,T.jsx)(`span`,{className:`text-xs font-medium text-krona-green`,children:F})]}),(0,T.jsx)(`p`,{className:`text-xs text-krona-secondary`,children:`Экспорт полного слепка данных (сделки, заказы, кастомные сущности, финансы, остатки) в JSON, сброс к дефолтному демо-состоянию и мгновенное восстановление из файла.`}),(0,T.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3 pt-1`,children:[(0,T.jsxs)(n,{variant:`primary`,size:`sm`,"data-testid":`export-snapshot-btn`,onClick:async()=>{try{M(!0);let e=await s(),t=JSON.stringify(e,null,2),n=new Blob([t],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=`krona_db_snapshot_${Date.now()}.json`,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r);let a=e.metadata?.totalRecords??Object.values(e.stores).reduce((e,t)=>e+(Array.isArray(t)?t.length:0),0);I(`Экспортировано ${a} записей (v${e.version})`),O(`Снимок базы данных успешно экспортирован!`,`success`)}catch(e){O(`Ошибка экспорта: ${e instanceof Error?e.message:String(e)}`,`error`)}finally{M(!1)}},disabled:j,children:[(0,T.jsx)(d,{className:`w-3.5 h-3.5 mr-1.5`}),j?`Экспорт...`:`Экспорт снимка (JSON)`]}),(0,T.jsxs)(n,{variant:`secondary`,size:`sm`,"data-testid":`reset-database-btn`,onClick:async()=>{try{A(!0),await l(),I(`База данных сброшена к начальному состоянию`),O(`База данных успешно сброшена к начальному состоянию!`,`info`)}catch(e){O(`Ошибка сброса: ${e instanceof Error?e.message:String(e)}`,`error`)}finally{A(!1)}},disabled:k,children:[(0,T.jsx)(_,{className:`w-3.5 h-3.5 mr-1.5`}),k?`Сброс...`:`Сбросить демо-данные`]}),(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`input`,{type:`file`,ref:L,"data-testid":`import-snapshot-input`,accept:`.json`,onChange:async e=>{let t=e.target.files?.[0];if(t)try{P(!0);let e=await t.text(),n=JSON.parse(e);if(!n.version||!n.stores)throw Error(`Некорректный формат файла снимка`);await c(n);let r=n.metadata?.totalRecords??Object.values(n.stores).reduce((e,t)=>e+(Array.isArray(t)?t.length:0),0);I(`Импортировано ${r} записей`),O(`Снимок базы данных успешно импортирован!`,`success`)}catch(e){O(`Ошибка импорта: ${e instanceof Error?e.message:String(e)}`,`error`)}finally{P(!1),L.current&&(L.current.value=``)}},className:`hidden`}),(0,T.jsxs)(n,{variant:`outline`,size:`sm`,"data-testid":`import-snapshot-btn`,onClick:()=>L.current?.click(),disabled:N,children:[(0,T.jsx)(f,{className:`w-3.5 h-3.5 mr-1.5`}),N?`Импорт...`:`Импортировать снимок`]})]})]})]})]})};export{E as SettingsModule}; \ No newline at end of file diff --git a/dist/assets/TasksModule-CElCsgzb.js b/dist/assets/TasksModule-CElCsgzb.js deleted file mode 100644 index 031e1e6..0000000 --- a/dist/assets/TasksModule-CElCsgzb.js +++ /dev/null @@ -1 +0,0 @@ -import{f as e,h as t,i as n,r,s as i}from"./useToast-CS8pZhce.js";import{t as a}from"./clock-BelL0bvZ.js";import{t as o}from"./link-DOg0dLYA.js";import{A as s,C as c,P as l,r as u,t as d,v as f}from"./index-CyHCRa3Z.js";import{l as p}from"./mockData-DAqQG5te.js";var m=t(e(),1),h=i(),g=()=>{let[e,t]=(0,m.useState)(p),[i,g]=(0,m.useState)(`kanban`),[_,v]=(0,m.useState)(null),[y,b]=(0,m.useState)([{id:`st-1`,text:`Сверить расчетную себестоимость и маржинальность`,completed:!0},{id:`st-2`,text:`Согласовать тайминг подачи с шеф-поваром`,completed:!1},{id:`st-3`,text:`Выставить предварительный счет клиенту`,completed:!1}]),[x,S]=(0,m.useState)([{id:`c-1`,author:`Ольга Власова`,text:`Клиент подтвердил количество 60 персон. Ждем аванс.`,time:`Вчера, 16:20`},{id:`c-2`,author:`Артур Ким (Шеф)`,text:`Продукты зарезервированы на основном складе.`,time:`Сегодня, 10:15`}]),[C,w]=(0,m.useState)(``),T=(n,r)=>{t(e.map(e=>e.id===n?{...e,status:r}:e)),_&&_.id===n&&v({..._,status:r})},E=e=>{b(t=>t.map(t=>t.id===e?{...t,completed:!t.completed}:t))};return(0,h.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,h.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 bg-krona-surface p-3.5 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,h.jsxs)(`div`,{children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,h.jsx)(`h2`,{className:`text-sm font-bold text-krona-primary`,children:`Задачи, поручения и проекты команды`}),(0,h.jsx)(d,{level:`target`,size:`sm`})]}),(0,h.jsx)(`p`,{className:`text-xs text-krona-secondary mt-0.5`,children:`Канбан-доска исполнения, дедлайны, привязка к CRM и ответственные`})]}),(0,h.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,h.jsxs)(`div`,{className:`flex items-center bg-krona-workspace p-1 rounded-lg border border-krona-border text-xs`,children:[(0,h.jsx)(`button`,{onClick:()=>g(`kanban`),className:`px-3 py-1 rounded font-medium transition-colors ${i===`kanban`?`bg-[#2F684C] text-white shadow-sm`:`text-krona-secondary`}`,children:`Канбан`}),(0,h.jsx)(`button`,{onClick:()=>g(`list`),className:`px-3 py-1 rounded font-medium transition-colors ${i===`list`?`bg-[#2F684C] text-white shadow-sm`:`text-krona-secondary`}`,children:`Список`})]}),(0,h.jsxs)(n,{variant:`primary`,size:`sm`,children:[(0,h.jsx)(c,{className:`w-3.5 h-3.5 mr-1`}),`Создать задачу`]})]})]}),i===`kanban`?(0,h.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-4 gap-3.5`,children:[`todo`,`in_progress`,`review`,`done`].map(t=>{let n=e.filter(e=>e.status===t);return(0,h.jsxs)(`div`,{onDragOver:e=>e.preventDefault(),onDrop:e=>{e.preventDefault();let n=e.dataTransfer.getData(`text/plain`);n&&T(n,t)},className:`bg-krona-workspace/80 border border-krona-border rounded-xl p-3 flex flex-col min-h-[420px]`,children:[(0,h.jsxs)(`div`,{className:`flex items-center justify-between pb-2 mb-2 border-b border-krona-border`,children:[(0,h.jsx)(`span`,{className:`text-xs font-bold text-krona-primary`,children:{todo:`К выполнению`,in_progress:`В работе`,review:`На проверке`,done:`Выполнено`}[t]}),(0,h.jsx)(`span`,{className:`text-xs font-mono font-bold text-krona-secondary`,children:n.length})]}),(0,h.jsx)(`div`,{className:`space-y-2.5 flex-1 overflow-y-auto`,children:n.map(e=>(0,h.jsxs)(`div`,{draggable:!0,onDragStart:t=>{t.dataTransfer.setData(`text/plain`,e.id)},onClick:()=>v(e),className:`p-3 rounded-lg border border-krona-border bg-krona-surface shadow-krona-soft space-y-2 cursor-pointer hover:border-krona-green/70 transition-all group active:scale-[0.99]`,children:[(0,h.jsxs)(`div`,{className:`flex items-center justify-between text-[10px] text-krona-secondary`,children:[(0,h.jsx)(`span`,{className:`font-semibold uppercase`,children:e.project}),(0,h.jsx)(r,{variant:e.priority===`high`?`danger`:`neutral`,size:`sm`,children:e.priority===`high`?`Срочно`:`Обычный`})]}),(0,h.jsx)(`h5`,{className:`text-xs font-bold text-krona-primary leading-snug group-hover:text-krona-green transition-colors`,children:e.title}),(0,h.jsxs)(`div`,{className:`flex items-center justify-between pt-1 border-t border-krona-border/60 text-[11px] text-krona-secondary`,children:[(0,h.jsx)(`span`,{children:e.assignee}),(0,h.jsxs)(`span`,{className:`flex items-center gap-1 font-mono`,children:[(0,h.jsx)(a,{className:`w-3 h-3`}),e.dueDate]})]}),t!==`done`&&(0,h.jsx)(`div`,{className:`pt-1 flex justify-end`,children:(0,h.jsx)(`button`,{onClick:n=>{n.stopPropagation(),T(e.id,t===`todo`?`in_progress`:t===`in_progress`?`review`:`done`)},className:`text-[11px] text-krona-green font-medium hover:underline`,children:`Сдвинуть вперед →`})})]},e.id))})]},t)})}):(0,h.jsx)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft p-4`,children:(0,h.jsxs)(`table`,{className:`w-full text-left text-xs border-collapse`,children:[(0,h.jsx)(`thead`,{className:`bg-krona-workspace/80 text-krona-secondary border-b border-krona-border`,children:(0,h.jsxs)(`tr`,{children:[(0,h.jsx)(`th`,{className:`p-3 font-semibold`,children:`Название задачи`}),(0,h.jsx)(`th`,{className:`p-3 font-semibold`,children:`Проект`}),(0,h.jsx)(`th`,{className:`p-3 font-semibold`,children:`Ответственный`}),(0,h.jsx)(`th`,{className:`p-3 font-semibold`,children:`Срок`}),(0,h.jsx)(`th`,{className:`p-3 font-semibold`,children:`Приоритет`}),(0,h.jsx)(`th`,{className:`p-3 font-semibold`,children:`Статус`})]})}),(0,h.jsx)(`tbody`,{className:`divide-y divide-krona-border/50`,children:e.map(e=>(0,h.jsxs)(`tr`,{onClick:()=>v(e),className:`hover:bg-krona-workspace/50 transition-colors cursor-pointer`,children:[(0,h.jsx)(`td`,{className:`p-3 font-medium text-krona-primary`,children:e.title}),(0,h.jsx)(`td`,{className:`p-3 text-krona-secondary`,children:e.project}),(0,h.jsx)(`td`,{className:`p-3 font-medium text-krona-primary`,children:e.assignee}),(0,h.jsx)(`td`,{className:`p-3 text-krona-secondary font-mono`,children:e.dueDate}),(0,h.jsx)(`td`,{className:`p-3`,children:(0,h.jsx)(r,{variant:e.priority===`high`?`danger`:`neutral`,size:`sm`,children:e.priority===`high`?`Высокий`:`Обычный`})}),(0,h.jsx)(`td`,{className:`p-3`,children:(0,h.jsx)(r,{variant:`gold`,size:`sm`,children:e.status})})]},e.id))})]})}),_&&(0,h.jsx)(u,{isOpen:!!_,onClose:()=>v(null),title:`Задача: ${_.title}`,subtitle:`Проект: ${_.project} • Исполнитель: ${_.assignee}`,maxWidth:`lg`,footer:(0,h.jsxs)(`div`,{className:`flex items-center justify-between w-full`,children:[(0,h.jsx)(`div`,{className:`flex gap-2`,children:(0,h.jsxs)(n,{variant:`primary`,size:`sm`,onClick:()=>T(_.id,`done`),children:[(0,h.jsx)(s,{className:`w-3.5 h-3.5 mr-1`}),`Отметить выполненной`]})}),(0,h.jsx)(n,{variant:`secondary`,size:`sm`,onClick:()=>v(null),children:`Закрыть`})]}),children:(0,h.jsxs)(`div`,{className:`space-y-4 text-xs`,children:[(0,h.jsxs)(`div`,{className:`grid grid-cols-3 gap-3 p-3 rounded-lg bg-krona-workspace border border-krona-border`,children:[(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`span`,{className:`text-krona-secondary block text-[10px]`,children:`Ответственный:`}),(0,h.jsx)(`span`,{className:`font-semibold text-krona-primary`,children:_.assignee})]}),(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`span`,{className:`text-krona-secondary block text-[10px]`,children:`Срок завершения:`}),(0,h.jsx)(`span`,{className:`font-semibold text-krona-primary font-mono`,children:_.dueDate})]}),(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`span`,{className:`text-krona-secondary block text-[10px]`,children:`Приоритет:`}),(0,h.jsx)(r,{variant:_.priority===`high`?`danger`:`neutral`,size:`sm`,children:_.priority===`high`?`Высокий (Срочно)`:`Обычный`})]})]}),(0,h.jsxs)(`div`,{className:`p-3 rounded-lg border border-krona-border bg-krona-surface flex items-center justify-between`,children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,h.jsx)(o,{className:`w-4 h-4 text-krona-gold shrink-0`}),(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`span`,{className:`font-bold text-krona-primary`,children:`Связанный CRM контрагент:`}),(0,h.jsx)(`div`,{className:`text-[11px] text-krona-secondary`,children:`ООО "Сибирский Ритейл" (Сделка: Банкет на 60 персон)`})]})]}),(0,h.jsx)(r,{variant:`gold`,size:`sm`,children:`CRM Link`})]}),(0,h.jsxs)(`div`,{className:`space-y-2`,children:[(0,h.jsxs)(`span`,{className:`text-[10px] font-bold uppercase tracking-wider text-krona-secondary block`,children:[`Чек-лист подзадач (`,y.filter(e=>e.completed).length,` из `,y.length,`):`]}),(0,h.jsx)(`div`,{className:`space-y-1.5 p-3 rounded-lg border border-krona-border bg-krona-workspace`,children:y.map(e=>(0,h.jsxs)(`div`,{onClick:()=>E(e.id),className:`flex items-center gap-2 cursor-pointer p-1 rounded hover:bg-krona-surface/60 transition-colors select-none`,children:[(0,h.jsx)(`div`,{className:`w-4 h-4 rounded border flex items-center justify-center transition-colors ${e.completed?`bg-krona-green border-krona-green text-white`:`border-krona-border bg-krona-surface`}`,children:e.completed&&(0,h.jsx)(l,{className:`w-3 h-3 stroke-[3]`})}),(0,h.jsx)(`span`,{className:`text-xs ${e.completed?`line-through text-krona-secondary`:`text-krona-primary`}`,children:e.text})]},e.id))})]}),(0,h.jsxs)(`div`,{className:`space-y-2`,children:[(0,h.jsxs)(`span`,{className:`text-[10px] font-bold uppercase tracking-wider text-krona-secondary block`,children:[`Обсуждение задачи (`,x.length,`):`]}),(0,h.jsx)(`div`,{className:`space-y-2 max-h-40 overflow-y-auto p-2 rounded-lg bg-krona-workspace border border-krona-border`,children:x.map(e=>(0,h.jsxs)(`div`,{className:`p-2 rounded bg-krona-surface border border-krona-border/60 text-[11px] space-y-0.5`,children:[(0,h.jsxs)(`div`,{className:`flex items-center justify-between text-krona-secondary`,children:[(0,h.jsx)(`span`,{className:`font-semibold text-krona-primary`,children:e.author}),(0,h.jsx)(`span`,{className:`text-[10px]`,children:e.time})]}),(0,h.jsx)(`p`,{className:`text-krona-primary`,children:e.text})]},e.id))}),(0,h.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),C.trim()&&(S(e=>[...e,{id:`c-${Date.now()}`,author:`Вы (Текущий пользователь)`,text:C,time:`Только что`}]),w(``))},className:`flex gap-2 pt-1`,children:[(0,h.jsx)(`input`,{type:`text`,value:C,onChange:e=>w(e.target.value),placeholder:`Добавить комментарий к задаче...`,className:`flex-1 bg-krona-workspace border border-krona-border rounded-lg px-3 py-1.5 text-xs text-krona-primary placeholder:text-krona-secondary focus:outline-none focus:border-krona-green`}),(0,h.jsx)(n,{type:`submit`,variant:`primary`,size:`sm`,children:(0,h.jsx)(f,{className:`w-3.5 h-3.5`})})]})]})]})})]})};export{g as TasksModule}; \ No newline at end of file diff --git a/dist/assets/ViewBuilder-g2KlOj5c.js b/dist/assets/ViewBuilder-g2KlOj5c.js deleted file mode 100644 index 2c55d3d..0000000 --- a/dist/assets/ViewBuilder-g2KlOj5c.js +++ /dev/null @@ -1,2 +0,0 @@ -import{f as e,h as t,i as n,l as r,r as i,s as a,t as o}from"./useToast-CS8pZhce.js";import{l as s}from"./indexedDb-DZ-aRPMs.js";import{t as c}from"./arrow-up-down--M136cK3.js";import{t as l}from"./download-ByGeM7La.js";import{t as u}from"./eye-CkF1gwUX.js";import{t as d}from"./save-D8euL60I.js";import{t as f}from"./table-_fqSCPRE.js";import{B as p,C as m,H as h,Y as g,a as _,et as v,r as y,tt as b,u as x}from"./index-CyHCRa3Z.js";import{t as S}from"./currency-DdDs82F5.js";var C={name:`columns-2`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M12 3v18`,key:`108xh3`}]],aliases:[`columns`]};C.node;var w=r(C),T={name:`funnel`,size:24,node:[[`path`,{d:`M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z`,key:`sc7q7i`}]],aliases:[`filter`]};T.node;var E=r(T),D={name:`move-right`,size:24,node:[[`path`,{d:`M18 8L22 12L18 16`,key:`1r0oui`}],[`path`,{d:`M2 12H22`,key:`1m8cig`}]]};D.node;var O=r(D),k={name:`move-left`,size:24,node:[[`path`,{d:`M6 8L2 12L6 16`,key:`kyvwex`}],[`path`,{d:`M2 12H22`,key:`1m8cig`}]]};k.node;var A=r(k),j=t(e(),1);function M({currentView:e,setCurrentView:t,setIsDirty:n,showToast:r}){return{handleToggleColumn:(0,j.useCallback)(i=>{if(!e)return;let a=e.visibleFieldKeys||[],o;if(a.includes(i)){if(a.length<=1){r({type:`error`,title:`В представлении должна быть минимум 1 колонка`});return}o=a.filter(e=>e!==i)}else o=[...a,i];t({...e,visibleFieldKeys:o}),n(!0)},[e,t,n,r]),handleMoveColumn:(0,j.useCallback)((r,i)=>{if(!e)return;let a=[...e.visibleFieldKeys],[o]=a.splice(r,1);a.splice(i,0,o),t({...e,visibleFieldKeys:a}),n(!0)},[e,t,n])}}var N=a(),P=()=>{let{entityCode:e}=b(),t=v(),{currentEntity:r,views:a,saveView:C,deleteView:T}=h(e),{showToast:D}=o(),k=(0,j.useMemo)(()=>r?.fields||[],[r]),P=(0,j.useMemo)(()=>{let e=new Map;return k.forEach(t=>e.set(t.key,t)),e},[k]),[F,I]=(0,j.useState)(``),[L,R]=(0,j.useState)(null),[z,B]=(0,j.useState)(!1),[V,H]=(0,j.useState)(!1),[U,W]=(0,j.useState)(``),[G,K]=(0,j.useState)([]);(0,j.useEffect)(()=>{Promise.resolve().then(()=>{if(r&&r.fields&&r.fields.length!==0){if(!a||a.length===0){if(e){let t={id:`view_${e}_default`,entityCode:e,name:`Все записи`,type:`table`,isDefault:!0,visibleFieldKeys:r.fields.slice(0,6).map(e=>e.key),filters:[],filterConjunction:`AND`,sortBy:`updatedAt`,sortOrder:`desc`};R(t),I(t.id)}return}if(F){let e=a.find(e=>e.id===F);if(e&&!z){let t=e.visibleFieldKeys&&e.visibleFieldKeys.length>0?e.visibleFieldKeys:r.fields.slice(0,6).map(e=>e.key);R({...e,visibleFieldKeys:t})}}else{let e=a.find(e=>e.isDefault)||a[0],t=e.visibleFieldKeys&&e.visibleFieldKeys.length>0?e.visibleFieldKeys:r.fields.slice(0,6).map(e=>e.key);I(e.id),R({...e,visibleFieldKeys:t})}}})},[a,F,e,r,z]);let q=(0,j.useCallback)(async()=>{if(!e)return;let t=await s(e,{pageSize:50});K(t.items)},[e]);(0,j.useEffect)(()=>{Promise.resolve().then(()=>{q()})},[q]);let J=(0,j.useMemo)(()=>{if(!L)return G;let e=[...G];if(L.filters&&L.filters.length>0){let t=L.filterConjunction||`AND`;e=e.filter(e=>{let n=L.filters.map(t=>{let n=e[t.field],r=t.value;switch(t.operator){case`eq`:return String(n??``).toLowerCase()===String(r??``).toLowerCase();case`neq`:return String(n??``).toLowerCase()!==String(r??``).toLowerCase();case`contains`:return String(n??``).toLowerCase().includes(String(r??``).toLowerCase());case`gt`:return Number(n)>Number(r);case`lt`:return Number(n){let i=e[t],a=r[t];if(i===a)return 0;if(i==null)return 1;if(a==null)return-1;let o=i>a?1:-1;return n===`desc`?-o:o})}return e},[G,L]),{handleToggleColumn:Y,handleMoveColumn:X}=M({currentView:L,setCurrentView:R,setIsDirty:B,showToast:D}),Z=()=>{if(!L)return;let e={field:k[0]?.key||`name`,operator:`contains`,value:``};R({...L,filters:[...L.filters||[],e]}),B(!0)},Q=(e,t)=>{if(!L)return;let n=[...L.filters||[]];n[e]={...n[e],...t},R({...L,filters:n}),B(!0)},$=e=>{L&&(R({...L,filters:L.filters.filter((t,n)=>n!==e)}),B(!0))};return(0,N.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,N.jsxs)(`div`,{className:`flex flex-col md:flex-row md:items-center justify-between gap-3 p-4 bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft`,children:[(0,N.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,N.jsxs)(n,{variant:`ghost`,size:`sm`,onClick:()=>t(`/settings/entities`),className:`p-1.5`,children:[(0,N.jsx)(p,{className:`w-4 h-4 mr-1`}),`Каталог`]}),(0,N.jsxs)(`div`,{children:[(0,N.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,N.jsx)(f,{className:`w-4 h-4 text-krona-green`}),(0,N.jsxs)(`h1`,{className:`text-base font-bold text-krona-primary`,children:[`Конструктор представлений: `,r?.name||e]}),z&&(0,N.jsx)(i,{variant:`warning`,size:`sm`,children:`Несохранённые изменения`})]}),(0,N.jsx)(`p`,{className:`text-xs text-krona-secondary`,children:`Настройка колонок таблицы, расширенной фильтрации (AND/OR), сортировки и сохранённых видов`})]})]}),(0,N.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,N.jsxs)(n,{variant:`outline`,size:`sm`,onClick:()=>{if(!L||J.length===0){D({type:`info`,title:`Нет записей для экспорта`});return}let t=L.visibleFieldKeys.map(e=>P.get(e)||{key:e,label:e}),n=``+[t.map(e=>`"${e.label.replace(/"/g,`""`)}"`).join(`,`),...J.map(e=>t.map(t=>{let n=e[t.key];return n==null?`""`:`"${String(n).replace(/"/g,`""`)}"`}).join(`,`))].join(`\r -`),r=new Blob([n],{type:`text/csv;charset=utf-8;`}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.setAttribute(`href`,i),a.setAttribute(`download`,`${e}_export_${new Date().toISOString().slice(0,10)}.csv`),document.body.appendChild(a),a.click(),document.body.removeChild(a),D({type:`success`,title:`Файл CSV успешно сформирован и загружен`})},children:[(0,N.jsx)(l,{className:`w-3.5 h-3.5 mr-1`}),`Экспорт CSV`]}),(0,N.jsxs)(n,{variant:`primary`,size:`sm`,"data-testid":`save-view-btn`,onClick:async()=>{if(L)try{await C(L),B(!1),D({type:`success`,title:`Представление «${L.name}» сохранено`})}catch(e){D({type:`error`,title:`Ошибка сохранения представления`,message:e instanceof Error?e.message:String(e)})}},disabled:!L,children:[(0,N.jsx)(d,{className:`w-3.5 h-3.5 mr-1`}),`Сохранить вид`]})]})]}),(0,N.jsxs)(`div`,{className:`flex items-center justify-between gap-2 p-2 bg-krona-surface border border-krona-border rounded-xl overflow-x-auto`,children:[(0,N.jsxs)(`div`,{className:`flex items-center gap-1`,children:[a.map(e=>(0,N.jsxs)(`button`,{onClick:()=>{I(e.id),R({...e}),B(!1)},className:`px-3 py-1.5 rounded-lg text-xs font-medium cursor-pointer transition-all flex items-center gap-1.5 ${F===e.id?`bg-krona-green text-white shadow-sm`:`bg-krona-workspace text-krona-secondary hover:text-krona-primary`}`,children:[(0,N.jsx)(`span`,{children:e.name}),e.isDefault&&(0,N.jsx)(`span`,{className:`text-[10px] opacity-80`,title:`По умолчанию`,children:`★`})]},e.id)),(0,N.jsxs)(`button`,{onClick:()=>H(!0),className:`px-2.5 py-1.5 rounded-lg text-xs font-medium bg-krona-workspace hover:bg-krona-surface-muted text-krona-secondary hover:text-krona-primary flex items-center gap-1 border border-dashed border-krona-border cursor-pointer`,children:[(0,N.jsx)(m,{className:`w-3 h-3`}),`Создать вид`]})]}),L&&!L.isDefault&&(0,N.jsxs)(`button`,{onClick:async()=>{if(L){if(L.isDefault){D({type:`error`,title:`Нельзя удалить представление по умолчанию`});return}if(confirm(`Удалить сохранённое представление «${L.name}»?`))try{await T(L.id),D({type:`success`,title:`Представление удалено`}),I(``),R(null)}catch(e){D({type:`error`,title:`Ошибка удаления`,message:e instanceof Error?e.message:String(e)})}}},className:`text-xs text-krona-danger hover:underline px-2 py-1 flex items-center gap-1 cursor-pointer`,children:[(0,N.jsx)(x,{className:`w-3.5 h-3.5`}),`Удалить этот вид`]})]}),L&&(0,N.jsxs)(`div`,{className:`grid grid-cols-1 lg:grid-cols-12 gap-4`,children:[(0,N.jsxs)(`div`,{className:`lg:col-span-4 space-y-4`,children:[(0,N.jsxs)(`div`,{className:`p-3.5 bg-krona-surface border border-krona-border rounded-xl space-y-3`,children:[(0,N.jsx)(_,{label:`Название представления`,value:L.name,onChange:e=>{R({...L,name:e.target.value}),B(!0)}}),(0,N.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer text-xs font-medium text-krona-primary`,children:[(0,N.jsx)(`input`,{type:`checkbox`,checked:L.isDefault||!1,onChange:e=>{R({...L,isDefault:e.target.checked}),B(!0)},className:`rounded text-krona-green`}),`Представление по умолчанию для всех`]})]}),(0,N.jsxs)(`div`,{className:`p-3.5 bg-krona-surface border border-krona-border rounded-xl space-y-3`,children:[(0,N.jsx)(`div`,{className:`flex items-center justify-between`,children:(0,N.jsxs)(`span`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider flex items-center gap-1.5`,children:[(0,N.jsx)(w,{className:`w-3.5 h-3.5 text-krona-green`}),`Колонки таблицы (`,L.visibleFieldKeys.length,`)`]})}),(0,N.jsx)(`div`,{className:`space-y-1.5 max-h-56 overflow-y-auto pr-1`,children:L.visibleFieldKeys.map((e,t)=>{let n=P.get(e);return(0,N.jsxs)(`div`,{"data-testid":`column-pill-${e}`,draggable:!0,onDragStart:e=>{e.dataTransfer.setData(`text/plain`,String(t))},onDragOver:e=>e.preventDefault(),onDrop:e=>{e.preventDefault();let n=Number(e.dataTransfer.getData(`text/plain`));!isNaN(n)&&n!==t&&X(n,t)},className:`flex items-center justify-between p-2 rounded bg-krona-workspace text-xs border border-krona-border/60 cursor-grab active:cursor-grabbing`,children:[(0,N.jsx)(`span`,{className:`font-medium text-krona-primary truncate`,children:n?.label||e}),(0,N.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,N.jsx)(`button`,{type:`button`,onClick:()=>X(t,t-1),disabled:t===0,className:`p-1 text-krona-secondary hover:text-krona-primary disabled:opacity-20`,title:`Влево`,children:(0,N.jsx)(A,{className:`w-3 h-3`})}),(0,N.jsx)(`button`,{type:`button`,onClick:()=>X(t,t+1),disabled:t===L.visibleFieldKeys.length-1,className:`p-1 text-krona-secondary hover:text-krona-primary disabled:opacity-20`,title:`Вправо`,children:(0,N.jsx)(O,{className:`w-3 h-3`})}),(0,N.jsx)(`button`,{type:`button`,onClick:()=>Y(e),className:`p-1 text-krona-danger hover:bg-krona-danger/10 rounded`,title:`Скрыть колонку`,children:`✕`})]})]},e)})}),(0,N.jsxs)(`div`,{className:`pt-2 border-t border-krona-border/60`,children:[(0,N.jsx)(`span`,{className:`text-[11px] font-semibold text-krona-secondary block mb-1.5`,children:`Доступные поля сущности:`}),(0,N.jsx)(`div`,{className:`space-y-1 max-h-36 overflow-y-auto text-xs`,children:k.map(e=>{let t=L.visibleFieldKeys.includes(e.key);return(0,N.jsxs)(`label`,{className:`flex items-center gap-2 p-1 rounded hover:bg-krona-workspace cursor-pointer`,children:[(0,N.jsx)(`input`,{type:`checkbox`,checked:t,onChange:()=>Y(e.key),className:`rounded text-krona-green`}),(0,N.jsx)(`span`,{className:`truncate text-krona-primary`,children:e.label}),(0,N.jsx)(`span`,{className:`text-[10px] font-mono text-krona-secondary ml-auto`,children:e.key})]},e.key)})})]})]}),(0,N.jsxs)(`div`,{className:`p-3.5 bg-krona-surface border border-krona-border rounded-xl space-y-3`,children:[(0,N.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,N.jsxs)(`span`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider flex items-center gap-1.5`,children:[(0,N.jsx)(E,{className:`w-3.5 h-3.5 text-krona-gold`}),`Фильтрация (`,L.filters?.length||0,`)`]}),(0,N.jsx)(`div`,{className:`flex items-center gap-1 bg-krona-workspace rounded p-0.5 border border-krona-border`,children:[`AND`,`OR`].map(e=>(0,N.jsx)(`button`,{onClick:()=>{R({...L,filterConjunction:e}),B(!0)},className:`px-2 py-0.5 text-[10px] font-bold rounded ${(L.filterConjunction||`AND`)===e?`bg-krona-green text-white`:`text-krona-secondary`}`,children:e===`AND`?`И`:`ИЛИ`},e))})]}),(0,N.jsx)(`div`,{className:`space-y-2`,children:L.filters?.map((e,t)=>(0,N.jsxs)(`div`,{className:`p-2 bg-krona-workspace rounded-lg border border-krona-border/60 space-y-1.5`,children:[(0,N.jsxs)(`div`,{className:`flex items-center justify-between gap-1`,children:[(0,N.jsx)(`select`,{value:e.field,onChange:e=>Q(t,{field:e.target.value}),className:`bg-krona-surface text-krona-primary border border-krona-border rounded px-2 py-1 text-xs w-full`,children:k.map(e=>(0,N.jsx)(`option`,{value:e.key,children:e.label},e.key))}),(0,N.jsx)(`button`,{type:`button`,onClick:()=>$(t),className:`p-1 text-krona-danger hover:bg-krona-danger/10 rounded`,title:`Удалить фильтр`,children:(0,N.jsx)(x,{className:`w-3.5 h-3.5`})})]}),(0,N.jsxs)(`div`,{className:`grid grid-cols-2 gap-1.5`,children:[(0,N.jsxs)(`select`,{value:e.operator,onChange:e=>Q(t,{operator:e.target.value}),className:`bg-krona-surface text-krona-primary border border-krona-border rounded px-2 py-1 text-xs`,children:[(0,N.jsx)(`option`,{value:`contains`,children:`содержит`}),(0,N.jsx)(`option`,{value:`eq`,children:`равно`}),(0,N.jsx)(`option`,{value:`neq`,children:`не равно`}),(0,N.jsx)(`option`,{value:`gt`,children:`больше (>)`}),(0,N.jsx)(`option`,{value:`lt`,children:`меньше (<)`}),(0,N.jsx)(`option`,{value:`is_empty`,children:`пусто`}),(0,N.jsx)(`option`,{value:`is_not_empty`,children:`не пусто`})]}),e.operator!==`is_empty`&&e.operator!==`is_not_empty`&&(0,N.jsx)(`input`,{type:`text`,placeholder:`Значение...`,value:String(e.value??``),onChange:e=>Q(t,{value:e.target.value}),className:`bg-krona-surface text-krona-primary border border-krona-border rounded px-2 py-1 text-xs`})]})]},t))}),(0,N.jsxs)(n,{variant:`outline`,size:`sm`,className:`w-full text-xs`,onClick:Z,children:[(0,N.jsx)(m,{className:`w-3 h-3 mr-1`}),`Добавить условие`]})]}),(0,N.jsxs)(`div`,{className:`p-3.5 bg-krona-surface border border-krona-border rounded-xl space-y-2`,children:[(0,N.jsxs)(`span`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider flex items-center gap-1.5`,children:[(0,N.jsx)(c,{className:`w-3.5 h-3.5 text-krona-info`}),`Сортировка`]}),(0,N.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,N.jsxs)(`select`,{value:L.sortBy||``,onChange:e=>{R({...L,sortBy:e.target.value}),B(!0)},className:`bg-krona-surface text-krona-primary border border-krona-border rounded px-2 py-1.5 text-xs`,children:[(0,N.jsx)(`option`,{value:``,children:`Без сортировки`}),k.map(e=>(0,N.jsx)(`option`,{value:e.key,children:e.label},e.key))]}),(0,N.jsxs)(`select`,{value:L.sortOrder||`asc`,onChange:e=>{R({...L,sortOrder:e.target.value}),B(!0)},className:`bg-krona-surface text-krona-primary border border-krona-border rounded px-2 py-1.5 text-xs`,children:[(0,N.jsx)(`option`,{value:`asc`,children:`По возрастанию (А-Я)`}),(0,N.jsx)(`option`,{value:`desc`,children:`По убыванию (Я-А)`})]})]})]})]}),(0,N.jsx)(`div`,{className:`lg:col-span-8 space-y-3`,children:(0,N.jsxs)(`div`,{className:`p-3.5 bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft space-y-3`,children:[(0,N.jsxs)(`div`,{className:`flex items-center justify-between text-xs`,children:[(0,N.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,N.jsx)(u,{className:`w-4 h-4 text-krona-gold`}),(0,N.jsx)(`span`,{className:`font-semibold text-krona-primary`,children:`Интерактивное превью таблицы данных`})]}),(0,N.jsxs)(`span`,{className:`text-krona-secondary`,children:[`Отображается записей: `,(0,N.jsx)(`strong`,{children:J.length}),` (всего в базе:`,` `,G.length,`)`]})]}),(0,N.jsx)(`div`,{className:`overflow-x-auto border border-krona-border rounded-lg max-h-[550px]`,children:(0,N.jsxs)(`table`,{className:`w-full text-left text-xs border-collapse`,children:[(0,N.jsx)(`thead`,{className:`bg-krona-workspace sticky top-0 border-b border-krona-border`,children:(0,N.jsx)(`tr`,{children:L.visibleFieldKeys.map(e=>{let t=P.get(e);return(0,N.jsx)(`th`,{className:`p-2.5 font-semibold text-krona-primary border-r border-krona-border/60 last:border-r-0 whitespace-nowrap`,children:t?.label||e},e)})})}),(0,N.jsxs)(`tbody`,{className:`divide-y divide-krona-border/60 bg-krona-surface`,children:[J.map(e=>(0,N.jsx)(`tr`,{className:`hover:bg-krona-workspace/50 transition-colors`,children:L.visibleFieldKeys.map(t=>{let n=P.get(t),r=e[t],a=`—`;return r!=null&&r!==``&&(a=n?.type===`money`?typeof r==`number`?S(r):String(r):n?.type===`boolean`?r?`Да`:`Нет`:n?.type===`date`||n?.type===`datetime`?g(String(r)):String(r)),(0,N.jsx)(`td`,{className:`p-2.5 text-krona-secondary truncate max-w-xs border-r border-krona-border/40 last:border-r-0`,children:t===`status`?(0,N.jsx)(i,{variant:`neutral`,size:`sm`,children:a}):(0,N.jsx)(`span`,{className:`text-krona-primary font-medium`,children:a})},t)})},e.id)),J.length===0&&(0,N.jsx)(`tr`,{children:(0,N.jsx)(`td`,{colSpan:L.visibleFieldKeys.length,className:`text-center py-10 text-krona-secondary`,children:`Записи не найдены или отфильтрованы`})})]})]})})]})})]}),(0,N.jsx)(y,{isOpen:V,onClose:()=>H(!1),title:`Новое представление`,subtitle:`Создайте сохранённый вид таблицы с индивидуальными фильтрами и колонками`,maxWidth:`sm`,children:(0,N.jsxs)(`div`,{className:`space-y-4`,children:[(0,N.jsx)(_,{label:`Название представления *`,value:U,onChange:e=>W(e.target.value),placeholder:`Например: Мои активные заявки`,autoFocus:!0}),(0,N.jsxs)(`div`,{className:`flex justify-end gap-2 pt-3 border-t border-krona-border`,children:[(0,N.jsx)(n,{variant:`outline`,size:`sm`,onClick:()=>H(!1),children:`Отмена`}),(0,N.jsx)(n,{variant:`primary`,size:`sm`,onClick:async()=>{if(!U.trim()||!e)return;let t=`view_${Date.now().toString(36)}`,n={id:t,entityCode:e,name:U.trim(),type:`table`,isDefault:!1,visibleFieldKeys:k.slice(0,5).map(e=>e.key),filters:[],filterConjunction:`AND`};try{await C(n),I(t),R(n),H(!1),W(``),D({type:`success`,title:`Представление «${n.name}» создано`})}catch(e){D({type:`error`,title:`Ошибка создания представления`,message:e instanceof Error?e.message:String(e)})}},children:`Создать`})]})]})})]})};export{P as ViewBuilder,P as default}; \ No newline at end of file diff --git a/dist/assets/clock-BelL0bvZ.js b/dist/assets/clock-BelL0bvZ.js deleted file mode 100644 index e2c7e15..0000000 --- a/dist/assets/clock-BelL0bvZ.js +++ /dev/null @@ -1 +0,0 @@ -import{l as e}from"./useToast-CS8pZhce.js";var t={name:`clock`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}]]};t.node;var n=e(t);export{n as t}; \ No newline at end of file diff --git a/dist/assets/credit-card-6Y5eHPCw.js b/dist/assets/credit-card-6Y5eHPCw.js deleted file mode 100644 index b1bd1ec..0000000 --- a/dist/assets/credit-card-6Y5eHPCw.js +++ /dev/null @@ -1 +0,0 @@ -import{l as e}from"./useToast-CS8pZhce.js";var t={name:`credit-card`,size:24,node:[[`rect`,{width:`20`,height:`14`,x:`2`,y:`5`,rx:`2`,key:`ynyp8z`}],[`line`,{x1:`2`,x2:`22`,y1:`10`,y2:`10`,key:`1b3vmo`}]]};t.node;var n=e(t);export{n as t}; \ No newline at end of file diff --git a/dist/assets/download-ByGeM7La.js b/dist/assets/download-ByGeM7La.js deleted file mode 100644 index 45b7eb1..0000000 --- a/dist/assets/download-ByGeM7La.js +++ /dev/null @@ -1 +0,0 @@ -import{l as e}from"./useToast-CS8pZhce.js";var t={name:`download`,size:24,node:[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]};t.node;var n=e(t);export{n as t}; \ No newline at end of file diff --git a/dist/assets/external-link-NR-y-GuE.js b/dist/assets/external-link-NR-y-GuE.js deleted file mode 100644 index b951ab5..0000000 --- a/dist/assets/external-link-NR-y-GuE.js +++ /dev/null @@ -1 +0,0 @@ -import{l as e}from"./useToast-CS8pZhce.js";var t={name:`external-link`,size:24,node:[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]};t.node;var n=e(t);export{n as t}; \ No newline at end of file diff --git a/dist/assets/fieldTypesMeta-BFbkZTaX.js b/dist/assets/fieldTypesMeta-BFbkZTaX.js deleted file mode 100644 index 11a8fa5..0000000 --- a/dist/assets/fieldTypesMeta-BFbkZTaX.js +++ /dev/null @@ -1 +0,0 @@ -import{l as e}from"./useToast-CS8pZhce.js";import{i as t,n,r,t as i}from"./types-DMl_5q2N.js";import{t as a}from"./building-BdUpGLM5.js";import{t as o}from"./clock-BelL0bvZ.js";import{t as s}from"./file-text-DR21jZDS.js";import{t as c}from"./image-B_RO1I7c.js";import{t as l}from"./link-DOg0dLYA.js";import{t as u}from"./list-XDoRqfJ2.js";import{t as d}from"./mail-DOD5KO1v.js";import{t as f}from"./package-Dg7SbpiM.js";import{t as p}from"./phone-DpnQw4if.js";import{t as m}from"./star-B6hvSjuv.js";import{t as h}from"./user-CuEEaB8a.js";import{E as g,L as _,f as v,k as y,o as b}from"./index-CyHCRa3Z.js";var x={name:`briefcase`,size:24,node:[[`path`,{d:`M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16`,key:`jecpp`}],[`rect`,{width:`20`,height:`14`,x:`2`,y:`6`,rx:`2`,key:`i6l2r4`}]]};x.node;var S=e(x),C={name:`coins`,size:24,node:[[`path`,{d:`M13.744 17.736a6 6 0 1 1-7.48-7.48`,key:`bq4yh3`}],[`path`,{d:`M15 6h1v4`,key:`11y1tn`}],[`path`,{d:`m6.134 14.768.866-.5 2 3.464`,key:`17snzx`}],[`circle`,{cx:`16`,cy:`8`,r:`6`,key:`14bfc9`}]]};C.node;var w=e(C),T={name:`contact`,size:24,node:[[`path`,{d:`M16 2v2`,key:`scm5qe`}],[`path`,{d:`M7 21v-2a2 2 0 012-2h6a2 2 0 012 2v2`,key:`k82dct`}],[`path`,{d:`M8 2v2`,key:`pbkmx`}],[`circle`,{cx:`12`,cy:`10`,r:`3`,key:`ilqhr7`}],[`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,key:`h1oib`}]]};T.node;var E=e(T),D={name:`file-up`,size:24,node:[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M12 12v6`,key:`3ahymv`}],[`path`,{d:`m15 15-3-3-3 3`,key:`15xj92`}]]};D.node;var O=e(D),k={name:`hash`,size:24,node:[[`line`,{x1:`4`,x2:`20`,y1:`9`,y2:`9`,key:`4lhtct`}],[`line`,{x1:`4`,x2:`20`,y1:`15`,y2:`15`,key:`vyu0kd`}],[`line`,{x1:`10`,x2:`8`,y1:`3`,y2:`21`,key:`1ggp8o`}],[`line`,{x1:`16`,x2:`14`,y1:`3`,y2:`21`,key:`weycgp`}]]};k.node;var A=e(k),j={name:`palette`,size:24,node:[[`path`,{d:`M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z`,key:`e79jfc`}],[`circle`,{cx:`13.5`,cy:`6.5`,r:`.5`,fill:`currentColor`,key:`1okk4w`}],[`circle`,{cx:`17.5`,cy:`10.5`,r:`.5`,fill:`currentColor`,key:`f64h9f`}],[`circle`,{cx:`6.5`,cy:`12.5`,r:`.5`,fill:`currentColor`,key:`qy21gx`}],[`circle`,{cx:`8.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`fotxhn`}]]};j.node;var M=e(j),N={name:`percent`,size:24,node:[[`line`,{x1:`19`,x2:`5`,y1:`5`,y2:`19`,key:`1x9vlm`}],[`circle`,{cx:`6.5`,cy:`6.5`,r:`2.5`,key:`4mh3h7`}],[`circle`,{cx:`17.5`,cy:`17.5`,r:`2.5`,key:`1mdrzq`}]]};N.node;var P=e(N),F={name:`radio`,size:24,node:[[`path`,{d:`M16.247 7.761a6 6 0 0 1 0 8.478`,key:`1fwjs5`}],[`path`,{d:`M19.075 4.933a10 10 0 0 1 0 14.134`,key:`ehdyv1`}],[`path`,{d:`M4.925 19.067a10 10 0 0 1 0-14.134`,key:`1q22gi`}],[`path`,{d:`M7.753 16.239a6 6 0 0 1 0-8.478`,key:`r2q7qm`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}]]};F.node;var I=e(F),L={name:`text-align-start`,size:24,node:[[`path`,{d:`M21 5H3`,key:`1fi0y6`}],[`path`,{d:`M15 12H3`,key:`6jk70r`}],[`path`,{d:`M17 19H3`,key:`z6ezky`}]],aliases:[`text`,`align-left`]};L.node;var R=e(L),z={name:`toggle-left`,size:24,node:[[`circle`,{cx:`9`,cy:`12`,r:`3`,key:`u3jwor`}],[`rect`,{width:`20`,height:`14`,x:`2`,y:`5`,rx:`7`,key:`g7kal2`}]]};z.node;var B=e(z),V={name:`type`,size:24,node:[[`path`,{d:`M12 4v16`,key:`1654pz`}],[`path`,{d:`M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2`,key:`e0r10z`}],[`path`,{d:`M9 20h6`,key:`s66wpe`}]]};V.node;var H=e(V),U=[{id:`text`,label:`Текстовые поля`,description:`Строки, форматированный текст, описания`},{id:`numeric`,label:`Числовые и денежные`,description:`Целые, дробные, валюты в minor units, проценты`},{id:`logic`,label:`Логические`,description:`Переключатели да/нет, флаги`},{id:`datetime`,label:`Дата и время`,description:`Календарные даты, время, таймштампы`},{id:`selection`,label:`Выбор и статусы`,description:`Списки, радиокнопки, статусы, рейтинги`},{id:`communication`,label:`Контакты и веб`,description:`Телефоны, email, ссылки`},{id:`geo`,label:`География и адреса`,description:`Адреса, координаты`},{id:`media`,label:`Медиа и файлы`,description:`Документы, изображения, выбор цвета`},{id:`relations`,label:`Связи и сущности`,description:`Пользователи, компании, контакты, товары, связи 1:1, 1:N`},{id:`advanced`,label:`Вычисляемые и системные`,description:`Формулы, автонумерация, JSON`}],W=[{type:`text`,label:`Короткий текст`,category:`text`,icon:H,description:`Строка до 255 символов`,supportsValidation:!0,defaultValue:``},{type:`long_text`,label:`Многострочный текст`,category:`text`,icon:R,description:`Длинное текстовое описание, заметки`,supportsValidation:!0,defaultValue:``},{type:`rich_text`,label:`Форматированный текст (HTML)`,category:`text`,icon:s,description:`Текст со стилями, заголовками и списками`,defaultValue:``},{type:`integer`,label:`Целое число`,category:`numeric`,icon:A,description:`Количество, штуки, целые числа`,supportsValidation:!0,defaultValue:0},{type:`decimal`,label:`Десятичное число`,category:`numeric`,icon:A,description:`Дробные значения (веса, объёмы, метры)`,supportsValidation:!0,defaultValue:0},{type:`money`,label:`Денежное значение`,category:`numeric`,icon:w,description:`Сумма в minor units (копейки) с валютой ISO 4217`,supportsValidation:!0,defaultValue:0},{type:`percentage`,label:`Процент`,category:`numeric`,icon:P,description:`Процентное значение (0–100%)`,supportsValidation:!0,defaultValue:0},{type:`number`,label:`Число`,category:`numeric`,icon:A,description:`Числовой ввод`,supportsValidation:!0,defaultValue:0},{type:`boolean`,label:`Флаг (Да/Нет)`,category:`logic`,icon:B,description:`Чекбокс или переключатель true/false`,defaultValue:!1},{type:`date`,label:`Дата`,category:`datetime`,icon:_,description:`Календарная дата (ГГГГ-ММ-ДД)`,supportsValidation:!0,defaultValue:``},{type:`datetime`,label:`Дата и время`,category:`datetime`,icon:_,description:`Дата со временем с точностью до минуты`,supportsValidation:!0,defaultValue:``},{type:`time`,label:`Время`,category:`datetime`,icon:o,description:`Время суток (ЧЧ:ММ)`,supportsValidation:!0,defaultValue:``},{type:`select`,label:`Выпадающий список`,category:`selection`,icon:u,description:`Одиночный выбор из списка вариантов`,supportsOptions:!0,defaultValue:``},{type:`single_select`,label:`Одиночный выбор`,category:`selection`,icon:u,description:`Одиночный выбор из списка вариантов`,supportsOptions:!0,defaultValue:``},{type:`multiselect`,label:`Множественный выбор`,category:`selection`,icon:v,description:`Несколько значений из списка`,supportsOptions:!0,defaultValue:[]},{type:`multi_select`,label:`Множественный список`,category:`selection`,icon:v,description:`Несколько значений из списка`,supportsOptions:!0,defaultValue:[]},{type:`radio`,label:`Радио-кнопки`,category:`selection`,icon:I,description:`Одиночный выбор на форме в виде переключателей`,supportsOptions:!0,defaultValue:``},{type:`checkbox_group`,label:`Группа чекбоксов`,category:`selection`,icon:v,description:`Список чекбоксов для выбора`,supportsOptions:!0,defaultValue:[]},{type:`status`,label:`Жизненный статус`,category:`selection`,icon:v,description:`Статус этапа с цветными бейджами`,supportsOptions:!0,defaultValue:``},{type:`rating`,label:`Рейтинг (Звёзды)`,category:`selection`,icon:m,description:`Оценка от 1 до 5 звёзд`,supportsValidation:!0,defaultValue:5},{type:`phone`,label:`Телефонный номер`,category:`communication`,icon:p,description:`Номер телефона в международном формате`,supportsValidation:!0,defaultValue:``},{type:`email`,label:`Электронная почта`,category:`communication`,icon:d,description:`Адрес электронной почты`,supportsValidation:!0,defaultValue:``},{type:`url`,label:`Веб-ссылка (URL)`,category:`communication`,icon:y,description:`Ссылка на внешний сайт или страницу`,supportsValidation:!0,defaultValue:``},{type:`address`,label:`Физический адрес`,category:`geo`,icon:g,description:`Строка адреса с городом, улицей и домом`,defaultValue:``},{type:`location`,label:`Геолокация (Широта, Долгота)`,category:`geo`,icon:n,description:`Координаты на карте`,defaultValue:``},{type:`file`,label:`Файл / Вложение`,category:`media`,icon:O,description:`Произвольный файл или документ`,defaultValue:null},{type:`image`,label:`Изображение / Фото`,category:`media`,icon:c,description:`Картинка или аватар`,defaultValue:null},{type:`color`,label:`Цветовой код`,category:`media`,icon:M,description:`HEX цвет для маркировки`,defaultValue:`#2F684C`},{type:`user`,label:`Пользователь системы`,category:`relations`,icon:h,description:`Ответственный сотрудник или оператор`,defaultValue:``},{type:`employee`,label:`Сотрудник штата`,category:`relations`,icon:b,description:`Привязка к штатному сотруднику`,defaultValue:``},{type:`team`,label:`Отдел / Команда`,category:`relations`,icon:S,description:`Привязка к подразделению`,defaultValue:``},{type:`company`,label:`Компания / Контрагент`,category:`relations`,icon:a,description:`Связь с юридическим лицом`,defaultValue:``},{type:`contact`,label:`Контактное лицо`,category:`relations`,icon:E,description:`Связь с физическим лицом`,defaultValue:``},{type:`product`,label:`Товар или услуга`,category:`relations`,icon:f,description:`Связь с номенклатурой`,defaultValue:``},{type:`entity_relation`,label:`Связь с сущностью (1:1, 1:N, N:M)`,category:`relations`,icon:l,description:`Связь с любой системной или кастомной сущностью`,defaultValue:``},{type:`entity_ref`,label:`Ссылка на запись`,category:`relations`,icon:l,description:`Связь со справочником`,defaultValue:``},{type:`lookup`,label:`Связь со справочником (Lookup)`,category:`relations`,icon:l,description:`Связь со справочником`,defaultValue:``},{type:`formula`,label:`Вычисляемая формула`,category:`advanced`,icon:t,description:`Автоматический расчёт на основе других полей`,defaultValue:``},{type:`autonumber`,label:`Автонумерация`,category:`advanced`,icon:A,description:`Генератор последовательных номеров по маске`,defaultValue:``},{type:`json`,label:`JSON структура`,category:`advanced`,icon:r,description:`Произвольный структурированный объект (Dev)`,defaultValue:`{}`}];function G(e){let t=W.find(t=>t.type===e);if(t)return t;let n=i(e);return W.find(e=>e.type===n)||{type:n,label:e,category:`text`,icon:H,description:`Поле типа ${e}`,defaultValue:``}}export{U as n,G as r,W as t}; \ No newline at end of file diff --git a/dist/assets/index-CyHCRa3Z.js b/dist/assets/index-CyHCRa3Z.js deleted file mode 100644 index 828af56..0000000 --- a/dist/assets/index-CyHCRa3Z.js +++ /dev/null @@ -1,13 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DynamicDashboard-CYIM1xJh.js","assets/useToast-CS8pZhce.js","assets/clock-BelL0bvZ.js","assets/dollar-sign-Bf6JneNn.js","assets/package-Dg7SbpiM.js","assets/truck-D5o8mTsH.js","assets/utensils-BhILG_B7.js","assets/formatters-WvGQLZg0.js","assets/AreaChart-pR0H-che.js","assets/OperationsModule-CpF6Tr5k.js","assets/building-BdUpGLM5.js","assets/credit-card-6Y5eHPCw.js","assets/phone-DpnQw4if.js","assets/user-CuEEaB8a.js","assets/mockData-DAqQG5te.js","assets/InventoryModule-BI-CFKE0.js","assets/useOrders-E7OnZAao.js","assets/currency-DdDs82F5.js","assets/useInventory-Y83xzzVb.js","assets/SalesModule-B4sN0Ogq.js","assets/CrmModule-D0MX46qK.js","assets/DynamicFormRenderer-CeAKrqsO.js","assets/types-DMl_5q2N.js","assets/external-link-NR-y-GuE.js","assets/file-text-DR21jZDS.js","assets/list-XDoRqfJ2.js","assets/star-B6hvSjuv.js","assets/upload-CY2IsfiN.js","assets/download-ByGeM7La.js","assets/FinanceModule-ZDICv-g5.js","assets/EmployeesModule-CM1X6qxa.js","assets/CommunicationsModule-BkIXdWN7.js","assets/HelpDeskModule-DsboISgu.js","assets/lock-BiWUbvPE.js","assets/TasksModule-CElCsgzb.js","assets/link-DOg0dLYA.js","assets/CmsModule-CFpuA55b.js","assets/arrow-down-CWbiHuZO.js","assets/arrow-up-B4Ca-HNG.js","assets/image-B_RO1I7c.js","assets/settings-2-CSojebrG.js","assets/MarketingModule-CNswhgMV.js","assets/play-eIPXoy-j.js","assets/AnalyticsModule-Os08qbP6.js","assets/AutomationModule-WP2z7OGh.js","assets/terminal-CcncyL3J.js","assets/AiCenterModule-BMDdno3t.js","assets/AppsCatalogModule-C-Vi3TGu.js","assets/types-CTcNpN0z.js","assets/SettingsModule-B0Z0ZLZV.js","assets/indexedDb-DZ-aRPMs.js","assets/EntityCatalog-CDeC-VEQ.js","assets/panels-top-left-BomsDlf9.js","assets/table-_fqSCPRE.js","assets/FieldBuilder-Bb70wc90.js","assets/fieldTypesMeta-BFbkZTaX.js","assets/mail-DOD5KO1v.js","assets/eye-CkF1gwUX.js","assets/pen-D8SS70u3.js","assets/FormBuilder-CvE6nXw9.js","assets/move-up-qiRY8MuU.js","assets/save-D8euL60I.js","assets/CardLayoutBuilder-DiCqYVEZ.js","assets/ViewBuilder-g2KlOj5c.js","assets/arrow-up-down--M136cK3.js","assets/CustomEntityPage-TM-tnYjd.js"])))=>i.map(i=>d[i]); -import{a as e,c as t,f as n,h as r,i,l as a,n as o,o as s,p as c,r as l,s as u,u as d}from"./useToast-CS8pZhce.js";import{n as f,t as p}from"./demo-D1nHL60J.js";import{_ as m,b as h,c as g,f as _,h as v,i as y,l as b,m as x,n as S,o as C,p as w,r as T,s as E,t as ee,u as D,v as O,x as te,y as ne}from"./indexedDb-DZ-aRPMs.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var re=c((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m){if(n(c)!==null)m=!0,S||(S=!0,D());else{var t=n(l);t!==null&&ne(x,t.startTime-e)}}}var S=!1,C=-1,w=5,T=-1;function E(){return g?!0:!(e.unstable_now()-Tt&&E());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&ne(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?D():S=!1}}}var D;if(typeof y==`function`)D=function(){y(ee)};else if(typeof MessageChannel<`u`){var O=new MessageChannel,te=O.port2;O.port1.onmessage=ee,D=function(){te.postMessage(null)}}else D=function(){_(ee,0)};function ne(t,n){C=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,ne(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,D()))),r},e.unstable_shouldYield=E,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),ie=c(((e,t)=>{t.exports=re()})),ae=c((e=>{var t=n();function r(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=ae()})),se=c((e=>{var t=ie(),r=n(),i=oe();function a(e){var t=`https://react.dev/errors/`+e;if(1N||(e.current=xe[N],xe[N]=null,N--)}function F(e,t){N++,xe[N]=e.current,e.current=t}var Ce=P(null),we=P(null),Te=P(null),Ee=P(null);function De(e,t){switch(F(Te,t),F(we,e),F(Ce,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?up(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=up(t),e=dp(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}Se(Ce),F(Ce,e)}function Oe(){Se(Ce),Se(we),Se(Te)}function ke(e){var t=e.memoizedState;t!==null&&(sh._currentValue=t.memoizedState,F(Ee,e)),t=Ce.current;var n=dp(t,e.type);t!==n&&(F(we,e),F(Ce,n))}function Ae(e){we.current===e&&(Se(Ce),Se(we)),Ee.current===e&&(Se(Ee),sh._currentValue=be)}var je,Me;function Ne(e){if(je===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);je=t&&t[1]||``,Me=-1)`:-1i||c[r]!==l[i]){var u=` -`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{Pe=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?Ne(n):``}function Ie(e,t){switch(e.tag){case 26:case 27:case 5:return Ne(e.type);case 16:return Ne(`Lazy`);case 13:return e.child!==t&&t!==null?Ne(`Suspense Fallback`):Ne(`Suspense`);case 19:return Ne(`SuspenseList`);case 0:case 15:return Fe(e.type,!1);case 11:return Fe(e.type.render,!1);case 1:return Fe(e.type,!0);case 31:return Ne(`Activity`);case 30:return Ne(`ViewTransition`);default:return``}}function Le(e){try{var t=``,n=null;do t+=Ie(e,n),n=e,e=e.return;while(e);return t}catch(e){return` -Error generating stack: `+e.message+` -`+e.stack}}var Re=Object.prototype.hasOwnProperty,ze=t.unstable_scheduleCallback,Be=t.unstable_cancelCallback,Ve=t.unstable_shouldYield,He=t.unstable_requestPaint,Ue=t.unstable_now,We=t.unstable_getCurrentPriorityLevel,Ge=t.unstable_ImmediatePriority,Ke=t.unstable_UserBlockingPriority,qe=t.unstable_NormalPriority,Je=t.unstable_LowPriority,Ye=t.unstable_IdlePriority,Xe=t.log,Ze=t.unstable_setDisableYieldValue,Qe=null,$e=null;function et(e){if(typeof Xe==`function`&&Ze(e),$e&&typeof $e.setStrictMode==`function`)try{$e.setStrictMode(Qe,e)}catch{}}var tt=Math.clz32?Math.clz32:it,nt=Math.log,rt=Math.LN2;function it(e){return e>>>=0,e===0?32:31-(nt(e)/rt|0)|0}var at=256,ot=262144,st=4194304;function ct(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&-e;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function lt(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=ct(n))):i=ct(o):i=ct(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=ct(n))):i=ct(o)):i=ct(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function ut(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function dt(e,t){t&8&&(t|=t&32);var n=e.entangledLanes;if(n!==0)for(e=e.entanglements,n&=t;0n;n++)t.push(e);return t}function ht(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function gt(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0`u`||window.document===void 0||window.document.createElement===void 0),jn=!1;if(An)try{var Mn={};Object.defineProperty(Mn,"passive",{get:function(){jn=!0}}),window.addEventListener(`test`,Mn,Mn),window.removeEventListener(`test`,Mn,Mn)}catch{jn=!1}var Nn=null,Pn=null,Fn=null;function In(){if(Fn)return Fn;var e,t=Pn,n=t.length,r,i=`value`in Nn?Nn.value:Nn.textContent,a=i.length;for(e=0;e=hr),vr=` `,yr=!1;function br(e,t){switch(e){case`keyup`:return pr.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function xr(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var Sr=!1;function Cr(e,t){switch(e){case`compositionend`:return xr(t);case`keypress`:return t.which===32?(yr=!0,vr):null;case`textInput`:return e=t.data,e===vr&&yr?null:e;default:return null}}function wr(e,t){if(Sr)return e===`compositionend`||!mr&&br(e,t)?(e=In(),Fn=Pn=Nn=null,Sr=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=qr(n)}}function Yr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Yr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Xr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Kr(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Kr(e.document)}return t}function Zr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var Qr=An&&`documentMode`in document&&11>=document.documentMode,$r=null,ei=null,ti=null,ni=!1;function ri(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;ni||$r==null||$r!==Kr(r)||(r=$r,`selectionStart`in r&&Zr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),ti&&Gr(ti,r)||(ti=r,r=Jf(ei,`onSelect`),0>=o,i-=o,$i=1<<32-tt(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),R&&ta(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(i,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(i,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(i,h),R&&ta(i,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(i,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return R&&ta(i,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,i,g,v.value,l),v!==null&&(e&&(_=v.alternate,_!==null&&h.delete(_.key===null?g:_.key)),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(i,e)}),R&&ta(i,g),u}function _(e,r,o,c){if(typeof o==`object`&&o&&o.type===O&&o.key===null&&o.props.ref===void 0&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case ee:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===O){if(r.tag===7){n(e,r.sibling),c=i(r,o.props.children),co(c,o),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===ue&&to(l)===r.type){n(e,r.sibling),c=i(r,o.props),co(c,o),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}o.type===O?(c=Bi(o.props.children,e.mode,c,o.key),co(c,o),c.return=e,e=c):(c=zi(o.type,o.key,o.props,null,e.mode,c),co(c,o),c.return=e,e=c)}return s(e);case D:a:{for(l=o.key;r!==null;){if(r.key===l){if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=i(r,o.children||[]),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}c=Ui(o,e.mode,c),c.return=e,e=c}return s(e);case ue:return o=to(o),_(e,r,o,c)}if(ye(o))return h(e,r,o,c);if(ge(o)){if(l=ge(o),typeof l!=`function`)throw Error(a(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return _(e,r,so(o),c);if(o.$$typeof===ae)return _(e,r,Da(e,o),c);lo(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=i(r,o),c.return=e,e=c):(n(e,r),c=Vi(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{oo=0;var i=_(e,t,n,r);return ao=null,i}catch(t){if(t===Ya||t===Za)throw t;var a=Fi(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var fo=uo(!0),po=uo(!1),mo=!1;function ho(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function go(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function _o(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function vo(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,K&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=Mi(e),ji(e,null,n),t}return Oi(e,r,t,n),Mi(e)}function yo(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,vt(e,n)}}function bo(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var xo=!1;function So(){if(xo){var e=Ba;if(e!==null)throw e}}function Co(e,t,n,r){xo=!1;var i=e.updateQueue;mo=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(Y&f)===f:(r&f)===f){f!==0&&f===za&&(xo=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,h=s;f=t;var g=n;switch(h.tag){case 1:if(m=h.payload,typeof m==`function`){d=m.call(g,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=h.payload,f=typeof m==`function`?m.call(g,d,f):m,f==null)break a;d=T({},d,f);break a;case 2:mo=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),od|=o,e.lanes=o,e.memoizedState=d}}function wo(e,t){if(typeof e!=`function`)throw Error(a(191,e));e.call(t)}function To(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=j.T,s={};s.types=o===null?null:o.types,j.T=s,dc(e,!1,t,n);try{var c=i(),l=j.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?uc(e,t,Ua(c,r),jd(e)):uc(e,t,r,jd(e))}catch(n){uc(e,t,{then:function(){},status:`rejected`,reason:n},jd())}finally{M.p=a,o!==null&&s.types!==null&&(o.types=s.types),j.T=o}}function ec(){}function tc(e,t,n,r){if(e.tag!==5)throw Error(a(476));var i=nc(e).queue;$s(e,i,t,be,n===null?ec:function(){return rc(e),n(r)})}function nc(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:be,baseState:be,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:fs,lastRenderedState:be},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:fs,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function rc(e){var t=nc(e);t.next===null&&(t=e.alternate.memoizedState),uc(e,t.next.queue,{},jd())}function ic(){return z(sh)}function ac(){return ss().memoizedState}function oc(){return ss().memoizedState}function sc(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=jd();e=_o(n);var r=vo(t,e,n);r!==null&&(Pd(r,t,n),yo(r,t,n)),t={cache:Na()},e.payload=t;return}t=t.return}}function cc(e,t,n){var r=jd();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},fc(e)?pc(t,n):(n=ki(e,t,n,r),n!==null&&(Pd(n,e,r),mc(n,t,r)))}function lc(e,t,n){uc(e,t,n,jd())}function uc(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(fc(e))pc(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,Wr(s,o))return Oi(e,t,i,0),q===null&&Di(),!1}catch{}if(n=ki(e,t,i,r),n!==null)return Pd(n,e,r),mc(n,t,r),!0}return!1}function dc(e,t,n,r){if(r={lane:2,revertLane:Pf(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},fc(e)){if(t)throw Error(a(479))}else t=ki(e,n,r,2),t!==null&&Pd(t,e,2)}function fc(e){var t=e.alternate;return e===V||t!==null&&t===V}function pc(e,t){Go=Wo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function mc(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,vt(e,n)}}var hc={readContext:z,use:us,useCallback:Zo,useContext:Zo,useEffect:Zo,useImperativeHandle:Zo,useLayoutEffect:Zo,useInsertionEffect:Zo,useMemo:Zo,useReducer:Zo,useRef:Zo,useState:Zo,useDebugValue:Zo,useDeferredValue:Zo,useTransition:Zo,useSyncExternalStore:Zo,useId:Zo,useHostTransitionStatus:Zo,useFormState:Zo,useActionState:Zo,useOptimistic:Zo,useMemoCache:Zo,useCacheRefresh:Zo,useEffectEvent:Zo},gc={readContext:z,use:us,useCallback:function(e,t){return os().memoizedState=[e,t===void 0?null:t],e},useContext:z,useEffect:Bs,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),Rs(4194308,4,Ks.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Rs(4194308,4,e,t)},useInsertionEffect:function(e,t){Rs(4,2,e,t)},useMemo:function(e,t){var n=os();t=t===void 0?null:t;var r=e();if(Ko){et(!0);try{e()}finally{et(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=os();if(n!==void 0){var i=n(t);if(Ko){et(!0);try{n(t)}finally{et(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=cc.bind(null,V,e),[r.memoizedState,e]},useRef:function(e){var t=os();return e={current:e},t.memoizedState=e},useState:function(e){e=Ss(e);var t=e.queue,n=lc.bind(null,V,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Js,useDeferredValue:function(e,t){return Zs(os(),e,t)},useTransition:function(){var e=Ss(!1);return e=$s.bind(null,V,e.queue,!0,!1),os().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=V,i=os();if(R){if(n===void 0)throw Error(a(407));n=n()}else{if(n=t(),q===null)throw Error(a(349));Y&127||_s(r,t,n)}i.memoizedState=n;var o={value:n,getSnapshot:t};return i.queue=o,Bs(ys.bind(null,r,o,e),[e]),r.flags|=2048,Is(9,{destroy:void 0},vs.bind(null,r,o,n,t),null),n},useId:function(){var e=os(),t=q.identifierPrefix;if(R){var n=ea,r=$i;n=(r&~(1<<32-tt(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=qo++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(i,{is:r.is}):s.createElement(i)}}o[Tt]=t,o[Et]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(np(o,i,r),i){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&pl(t)}}return W(t),t.subtreeFlags&=-33554433,ml(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&pl(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(a(166));if(e=Te.current,pa(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,i=oa,i!==null)switch(i.tag){case 27:case 5:r=i.memoizedProps}e[Tt]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||ep(e.nodeValue,n)),e||ua(t,!0)}else e=lp(e).createTextNode(r),e[Tt]=t,t.stateNode=e}return W(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=pa(t),n!==null){if(e===null){if(!r)throw Error(a(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(a(557));e[Tt]=t}else ma(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;W(t),e=!1}else n=ha(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(Lo(t),t):(Lo(t),null);if(t.flags&128)throw Error(a(558))}return W(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(i=pa(t),r!==null&&r.dehydrated!==null){if(e===null){if(!i)throw Error(a(318));if(i=t.memoizedState,i=i===null?null:i.dehydrated,!i)throw Error(a(317));i[Tt]=t}else ma(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;W(t),i=!1}else i=ha(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=i),i=!0;if(!i)return t.flags&256?(Lo(t),t):(Lo(t),null)}return Lo(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,i=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(i=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==i&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),gl(t,t.updateQueue),W(t),null);case 4:return Oe(),e===null&&Wf(t.stateNode.containerInfo),t.flags|=67108864,W(t),null;case 10:return xa(t.type),W(t),null;case 19:if(Bo(t),r=t.memoizedState,r===null)return W(t),null;if(i=!!(t.flags&128),o=r.rendering,o===null){if(i)_l(r,!1);else{if(ad!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=Vo(e),o!==null){for(t.flags|=128,_l(r,!1),e=o.updateQueue,t.updateQueue=e,gl(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Ri(n,e),n=n.sibling;return zo(t,Ro.current&1|2),R&&ta(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Ue()>gd&&(t.flags|=128,i=!0,_l(r,!1),t.lanes=4194304)}}else{if(!i){if(e=Vo(o),e!==null){if(t.flags|=128,i=!0,e=e.updateQueue,t.updateQueue=e,gl(t,e),_l(r,!0),r.tail===null&&r.tailMode!==`collapsed`&&r.tailMode!==`visible`&&!o.alternate&&!R)return W(t),null}else 2*Ue()-r.renderingStartTime>gd&&n!==536870912&&(t.flags|=128,i=!0,_l(r,!1),t.lanes=4194304)}r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}if(r.tail!==null){e=r.tail;a:{for(n=e;n!==null;){if(n.alternate!==null){n=!1;break a}n=n.sibling}n=!0}return r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Ue(),e.sibling=null,o=Ro.current,o=i?o&1|2:o&1,r.tailMode===`visible`||r.tailMode===`collapsed`||!n||R?zo(t,o):(n=o,F(jo,t),F(Ro,n),Mo===null&&(Mo=t)),R&&ta(t,r.treeForkCount),e}return W(t),null;case 22:case 23:return Lo(t),Ao(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(W(t),t.subtreeFlags&6&&(t.flags|=8192)):W(t),n=t.updateQueue,n!==null&&gl(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&Se(Ga),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),xa(Ma),W(t),null;case 25:return null;case 30:return t.flags|=33554432,W(t),null}throw Error(a(156,t.tag))}function yl(e,t){switch(ia(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return xa(Ma),Oe(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Ae(t),null;case 31:if(t.memoizedState!==null){if(Lo(t),t.alternate===null)throw Error(a(340));ma()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Lo(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(a(340));ma()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Bo(t),e=t.flags,e&65536?(t.flags=e&-65537|128,e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null),t.flags|=4,t):null;case 4:return Oe(),null;case 10:return xa(t.type),null;case 22:case 23:return Lo(t),Ao(),e!==null&&Se(Ga),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return xa(Ma),null;case 25:return null;default:return null}}function bl(e,t){switch(ia(t),t.tag){case 3:xa(Ma),Oe();break;case 26:case 27:case 5:Ae(t);break;case 4:Oe();break;case 31:t.memoizedState!==null&&Lo(t);break;case 13:Lo(t);break;case 19:Bo(t);break;case 10:xa(t.type);break;case 22:case 23:Lo(t),Ao(),e!==null&&Se(Ga);break;case 24:xa(Ma)}}function xl(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Z(t,t.return,e)}}function Sl(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Z(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Z(t,t.return,e)}}function Cl(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{To(t,n)}catch(t){Z(e,e.return,t)}}}function wl(e,t,n){n.props=Sc(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Z(e,t,n)}}function Tl(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:var i=e.stateNode,a=bi(e.memoizedProps,i);(i.ref===null||i.ref.name!==a)&&(i.ref=Pp(a)),r=i.ref;break;case 7:if(e.stateNode===null){var o=new Fp(e);p(e.child,!1,Qp,o,void 0,void 0),e.stateNode=o}r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Z(e,t,n)}}function El(e,t){var n=e.ref,r=e.refCleanup;if(n!==null){if(typeof r==`function`)try{r()}catch(n){Z(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Z(e,t,n)}else n.current=null}}function Dl(e,t){if((e.tag===5||e.tag===27||e.tag===6)&&e.alternate===null&&t!==null)for(var n=0;n title`))),np(r,t,n),r[Tt]=e,zt(r),t=r;break a;case`link`:if(o=Gm(`link`,`href`,i).get(t+(n.href||``))){for(s=0;sg&&(o=g,g=h,h=o);var _=Jr(s,h),v=Jr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,j.T=null,n=wd,wd=null;var o=bd,s=Sd;if(yd=0,xd=bd=null,Sd=0,K&6)throw Error(a(331));var c=K;if(K|=4,Yu(o.current),Vu(o,o.current,s,n),K=c,Df(0,!1),$e&&typeof $e.onPostCommitFiberRoot==`function`)try{$e.onPostCommitFiberRoot(Qe,o)}catch{}return!0}finally{M.p=i,j.T=r,uf(e,t)}}function pf(e,t,n){t=Gi(n,t),t=Oc(e.stateNode,t,2),e=vo(e,t,2),e!==null&&(ht(e,2),Ef(e))}function Z(e,t,n){if(e.tag===3)pf(e,e,n);else for(;t!==null;){if(t.tag===3){pf(t,e,n);break}if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(vd===null||!vd.has(r))){e=Gi(n,e),n=kc(2),r=vo(t,n,2),r!==null&&(Ac(n,r,t,e),ht(r,2),Ef(r));break}}t=t.return}}function mf(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new $u;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(rd=!0,i.add(n),e=hf.bind(null,e,t,n),t.then(e,e))}function hf(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,q===e&&(Y&n)===n&&(ad===4||ad===3&&(Y&62914560)===Y&&300>Ue()-md?K&2?cd|=n:Vd(e,0):cd|=n,ud===Y&&(ud=0)),Ef(e)}function gf(e,t){t===0&&(t=pt()),e=Ai(e,t),e!==null&&(ht(e,t),Ef(e))}function _f(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),gf(e,n)}function vf(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(a(314))}r!==null&&r.delete(t),gf(e,n)}function yf(e,t){return ze(e,t)}var bf=null,xf=null,Sf=!1,Cf=!1,wf=!1,Tf=0;function Ef(e){e!==xf&&e.next===null&&(xf===null?bf=xf=e:xf=xf.next=e),Cf=!0,Sf||(Sf=!0,Nf())}function Df(e,t){if(!wf&&Cf){wf=!0;do for(var n=!1,r=bf;r!==null;){if(!t){if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-tt(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,Mf(r,a))}else a=Y,a=lt(r,r===q?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||ut(r,a)||(n=!0,Mf(r,a))}r=r.next}while(n);wf=!1}}function Of(){kf()}function kf(){Cf=Sf=!1;var e=0;Tf!==0&&hp()&&(e=Tf);for(var t=Ue(),n=null,r=bf;r!==null;){var i=r.next,a=Af(r,t);a===0?(r.next=null,n===null?bf=i:n.next=i,i===null&&(xf=n)):(n=r,(e!==0||a&3)&&(Cf=!0)),r=i}yd!==0&&yd!==5||Df(e,!1),Tf!==0&&(Tf=0)}function Af(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&ap(d)&&(c=c.responseEnd,o+=u*(c$m){s.length=o;break}f=new Promise(jp.bind(f)),s.push(f)}}}if(0`u`?null:document;function Tm(e,t,n){var r=wm;if(r&&typeof t==`string`&&t){var i=on(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),ym.has(i)||(ym.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),np(t,`link`,e),zt(t),r.head.appendChild(t)))}}function Em(e){xm.D(e),Tm(`dns-prefetch`,e,null)}function Dm(e,t){xm.C(e,t),Tm(`preconnect`,e,t)}function Om(e,t,n){xm.L(e,t,n);var r=wm;if(r&&e&&t){var i=`link[rel="preload"][as="`+on(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+on(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+on(n.imageSizes)+`"]`)):i+=`[href="`+on(e)+`"]`;var a=i;switch(t){case`style`:a=Pm(e);break;case`script`:a=Rm(e)}if(!(vm.has(a)||(e=T({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),vm.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(Fm(a))||t===`script`&&r.querySelector(zm(a))))){var o=r.createElement(`link`);np(o,`link`,e),t===`style`&&(o[Nt]=!0,o.onload=o.onerror=function(){Bt(o)}),zt(o),r.head.appendChild(o)}}}function km(e,t){xm.m(e,t);var n=wm;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+on(r)+`"][href="`+on(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Rm(e)}if(!vm.has(a)&&(e=T({rel:`modulepreload`,href:e},t),vm.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(zm(a)))return}r=n.createElement(`link`),np(r,`link`,e),zt(r),n.head.appendChild(r)}}}function Am(e,t,n){xm.S(e,t,n);var r=wm;if(r&&e){var i=Rt(r).hoistableStyles,a=Pm(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(Fm(a)))s.loading=5;else{e=T({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=vm.get(a))&&Hm(e,n);var c=o=r.createElement(`link`);zt(c),np(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Vm(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function jm(e,t){xm.X(e,t);var n=wm;if(n&&e){var r=Rt(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=T({src:e,async:!0},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),zt(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Mm(e,t){xm.M(e,t);var n=wm;if(n&&e){var r=Rt(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=T({src:e,async:!0,type:`module`},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),zt(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Nm(e,t,n,r){var i=(i=Te.current)?bm(i):null;if(!i)throw Error(a(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(n=Pm(n.href),t=Rt(i).hoistableStyles,r=t.get(n),r||(r={type:`style`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Pm(n.href);var o=Rt(i).hoistableStyles,s=o.get(e);if(s||(i=i.ownerDocument||i,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=i.querySelector(Fm(e)))?o._p||(s.instance=o,s.state.loading=5):(o=vm.get(e),o||(o={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},vm.set(e,o)),Lm(i,e,o,s.state))),t&&r===null)throw Error(a(528,``));return s}if(t&&r!==null)throw Error(a(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(n=Rm(n),t=Rt(i).hoistableScripts,r=t.get(n),r||(r={type:`script`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(a(444,e))}}function Pm(e){return`href="`+on(e)+`"`}function Fm(e){return`link[rel="stylesheet"][`+e+`]`}function Im(e){return T({},e,{"data-precedence":e.precedence,precedence:null})}function Lm(e,t,n,r){if(t=e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)){if(!0!==t[Nt]){r.loading=1;return}}else t=e.createElement(`link`),t[Nt]=!0,t.onload=t.onerror=Bt.bind(null,t),np(t,`link`,n),zt(t),e.head.appendChild(t);r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2})}function Rm(e){return`[src="`+on(e)+`"]`}function zm(e){return`script[async]`+e}function Bm(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+on(n.href)+`"]`);if(r)return t.instance=r,zt(r),r;var i=T({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),zt(r),np(r,`style`,i),Vm(r,n.precedence,e),t.instance=r;case`stylesheet`:i=Pm(n.href);var o=e.querySelector(Fm(i));if(o)return t.state.loading|=4,t.instance=o,zt(o),o;r=Im(n),(i=vm.get(i))&&Hm(r,i),o=(e.ownerDocument||e).createElement(`link`),zt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),np(o,`link`,r),t.state.loading|=4,Vm(o,n.precedence,e),t.instance=o;case`script`:return o=Rm(n.src),(i=e.querySelector(zm(o)))?(t.instance=i,zt(i),i):(r=n,(i=vm.get(o))&&(r=T({},n),Um(r,i)),e=e.ownerDocument||e,i=e.createElement(`script`),zt(i),np(i,`link`,r),e.head.appendChild(i),t.instance=i);case`void`:return null;default:throw Error(a(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Vm(r,n.precedence,e));return t.instance}function Vm(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function qm(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Jm(e,t){return e===`img`&&t.src!=null&&t.src!==``&&t.onLoad==null&&t.loading!==`lazy`}function Ym(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Xm(e){return(e.width||100)*(e.height||100)*(typeof devicePixelRatio==`number`?devicePixelRatio:1)*.25}function Zm(e,t){typeof t.decode==`function`&&(e.imgCount++,t.complete||(e.imgBytes+=Xm(t),e.suspenseyImages.push(t)),e=rh.bind(e),t.decode().then(e,e))}function Qm(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Pm(r.href),a=t.querySelector(Fm(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=nh.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,zt(a);return}a=t.ownerDocument||t,r=Im(r),(i=vm.get(i))&&Hm(r,i),a=a.createElement(`link`),zt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),np(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=nh.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var $m=0;function eh(e,t){return e.stylesheets&&e.count===0&&ah(e,e.stylesheets),0$m?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function th(e){if(e.count===0&&(e.imgCount===0||!e.waitingForImages)){if(e.stylesheets)ah(e,e.stylesheets);else if(e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}}}function nh(){this.count--,th(this)}function rh(){this.imgCount--,th(this)}var ih=null;function ah(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,ih=new Map,t.forEach(oh,e),ih=null,nh.call(e))}function oh(e,t){if(!(t.state.loading&4)){var n=ih.get(e);if(n)var r=n.get(null);else{n=new Map,ih.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=se()})),k=r(n(),1),le=ce(),ue=`modulepreload`,de=function(e){return`/`+e},fe={},A=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=de(t,n),t=s(t),t in fe)return;fe[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:ue,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},pe=e=>{throw TypeError(e)},me=(e,t,n)=>t.has(e)||pe(`Cannot `+n),he=(e,t,n)=>(me(e,t,`read from private field`),n?n.call(e):t.get(e)),ge=(e,t,n)=>t.has(e)?pe(`Cannot add the same private member more than once`):t instanceof WeakSet?t.add(e):t.set(e,n),_e=(e,t,n,r)=>(me(e,t,`write to private field`),r?r.call(e,n):t.set(e,n),n),ve=/^(?:[a-z][a-z0-9+.-]*:|[\\/]{2})/i,ye=/^[\\/]{2}/;function j(e,t){return t+e.replace(/\\/g,`/`)}var M=`popstate`;function be(e){return typeof e==`object`&&!!e&&`pathname`in e&&`search`in e&&`hash`in e&&`state`in e&&`key`in e}function xe(e={}){function t(e,t){let n=t.state?.masked,{pathname:r,search:i,hash:a}=n||e.location;return Ce(``,{pathname:r,search:i,hash:a},t.state&&t.state.usr||null,t.state&&t.state.key||`default`,n?{pathname:e.location.pathname,search:e.location.search,hash:e.location.hash}:void 0)}function n(e,t){return typeof t==`string`?t:we(t)}return Ee(t,n,null,e)}function N(e,t){if(e===!1||e==null)throw Error(t)}function P(e,t){if(!e){typeof console<`u`&&console.warn(t);try{throw Error(t)}catch{}}}function Se(){return Math.random().toString(36).substring(2,10)}function F(e,t){return{usr:e.state,key:e.key,idx:t,masked:e.mask?{pathname:e.pathname,search:e.search,hash:e.hash}:void 0}}function Ce(e,t,n=null,r,i){return{pathname:typeof e==`string`?e:e.pathname,search:``,hash:``,...typeof t==`string`?Te(t):t,state:n,key:t&&t.key||r||Se(),mask:i}}function we({pathname:e=`/`,search:t=``,hash:n=``}){return t&&t!==`?`&&(e+=t.charAt(0)===`?`?t:`?`+t),n&&n!==`#`&&(e+=n.charAt(0)===`#`?n:`#`+n),e}function Te(e){let t={};if(e){let n=e.indexOf(`#`);n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf(`?`);r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function Ee(e,t,n,r={}){let{window:i=document.defaultView,v5Compat:a=!1}=r,o=i.history,s=`POP`,c=null,l=u();l??(l=0,o.replaceState({...o.state,idx:l},``));function u(){return(o.state||{idx:null}).idx}function d(){s=`POP`;let e=u(),t=e==null?null:e-l;l=e,c&&c({action:s,location:h.location,delta:t})}function f(e,t){s=`PUSH`;let r=be(e)?e:Ce(h.location,e,t);n&&n(r,e),l=u()+1;let d=F(r,l),f=h.createHref(r.mask||r);try{o.pushState(d,``,f)}catch(e){if(e instanceof DOMException&&e.name===`DataCloneError`)throw e;i.location.assign(f)}a&&c&&c({action:s,location:h.location,delta:1})}function p(e,t){s=`REPLACE`;let r=be(e)?e:Ce(h.location,e,t);n&&n(r,e),l=u();let i=F(r,l),d=h.createHref(r.mask||r);o.replaceState(i,``,d),a&&c&&c({action:s,location:h.location,delta:0})}function m(e){return De(i,e)}let h={get action(){return s},get location(){return e(i,o)},listen(e){if(c)throw Error(`A history only accepts one active listener`);return i.addEventListener(M,d),c=e,()=>{i.removeEventListener(M,d),c=null}},createHref(e){return t(i,e)},createURL:m,encodeLocation(e){let t=m(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:f,replace:p,go(e){return o.go(e)}};return h}function De(e,t,n=!1){let r=`http://localhost`;e&&(r=e.location.origin===`null`?e.location.href:e.location.origin),N(r,`No window.location.(origin|href) available to create URL`);let i=typeof t==`string`?t:we(t);return i=i.replace(/ $/,`%20`),!n&&ye.test(i)&&(i=r+i),new URL(i,r)}var Oe,ke=class{constructor(e){if(ge(this,Oe,new Map),e)for(let[t,n]of e)this.set(t,n)}get(e){if(he(this,Oe).has(e))return he(this,Oe).get(e);if(e.defaultValue!==void 0)return e.defaultValue;throw Error(`No value found for context`)}set(e,t){he(this,Oe).set(e,t)}};Oe=new WeakMap;var Ae=new Set([`lazy`,`caseSensitive`,`path`,`id`,`index`,`children`]);function je(e){return Ae.has(e)}var Me=new Set([`lazy`,`caseSensitive`,`path`,`id`,`index`,`middleware`,`children`]);function Ne(e){return Me.has(e)}function Pe(e){return e.index===!0}function Fe(e,t,n=[],r={},i=!1){return e.map((e,a)=>{let o=[...n,String(a)],s=typeof e.id==`string`?e.id:o.join(`-`);if(N(e.index!==!0||!e.children,`Cannot specify children on an index route`),N(i||!r[s],`Found a route id collision on id "${s}". Route id's must be globally unique within Data Router usages`),Pe(e)){let n={...e,id:s};return r[s]=Ie(n,t(n)),n}{let n={...e,id:s,children:void 0};return r[s]=Ie(n,t(n)),e.children&&(n.children=Fe(e.children,t,o,r,i)),n}})}function Ie(e,t){return Object.assign(e,{...t,...typeof t.lazy==`object`&&t.lazy!=null?{lazy:{...e.lazy,...t.lazy}}:{}})}function Le(e,t,n=`/`){return Re(e,t,n,!1)}function Re(e,t,n,r,i){let a=it((typeof t==`string`?Te(t):t).pathname||`/`,n);if(a==null)return null;let o=i??Be(e),s=null,c=rt(a);for(let e=0;s==null&&e{let c={relativePath:s===void 0?e.path||``:s,caseSensitive:e.caseSensitive===!0,childrenIndex:a,route:e};if(c.relativePath.startsWith(`/`)){if(!c.relativePath.startsWith(r)&&o)return;N(c.relativePath.startsWith(r),`Absolute route path "${c.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),c.relativePath=c.relativePath.slice(r.length)}let l=mt([r,c.relativePath]),u=n.concat(c);e.children&&e.children.length>0&&(N(e.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${l}".`),Ve(e.children,t,u,l,o)),(e.path!=null||e.index)&&t.push({path:l,score:Ze(l,e.index),routesMeta:u.map((e,t)=>{let[n,r]=nt(e.relativePath,e.caseSensitive,t===u.length-1);return{...e,matcher:n,compiledParams:r}})})};return e.forEach((e,t)=>{if(e.path===``||!e.path?.includes(`?`))a(e,t);else for(let n of He(e.path))a(e,t,!0,n)}),t}function He(e){let t=e.split(`/`);if(t.length===0)return[];let[n,...r]=t,i=n.endsWith(`?`),a=n.replace(/\?$/,``);if(r.length===0)return i?[a,``]:[a];let o=He(r.join(`/`)),s=[];return s.push(...o.map(e=>e===``?a:[a,e].join(`/`))),i&&s.push(...o),s.map(t=>e.startsWith(`/`)&&t===``?`/`:t)}function Ue(e){e.sort((e,t)=>e.score===t.score?Qe(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)):t.score-e.score)}var We=/^:[\w-]+$/,Ge=3,Ke=2,qe=1,Je=10,Ye=-2,Xe=e=>e===`*`;function Ze(e,t){let n=e.split(`/`),r=n.length;return n.some(Xe)&&(r+=Ye),t&&(r+=Ke),n.filter(e=>!Xe(e)).reduce((e,t)=>e+(We.test(t)?Ge:t===``?qe:Je),r)}function Qe(e,t){return e.length===t.length&&e.slice(0,-1).every((e,n)=>e===t[n])?e[e.length-1]-t[t.length-1]:0}function $e(e,t,n=!1){let{routesMeta:r}=e,i={},a=`/`,o=[];for(let e=0;e{if(t===`*`){let e=s[r]||``;o=ht(a.slice(0,a.length-e.length),1)}let i=s[r];return e[t]=n&&!i?void 0:(i||``).replace(/%2F/g,`/`),e},{}),pathname:a,pathnameBase:o,pattern:e}}function nt(e,t=!1,n=!0){P(e===`*`||!e.endsWith(`*`)||e.endsWith(`/*`),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,`/*`)}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,`/*`)}".`);let r=[],i=`^`+e.replace(/\/*\*?$/,``).replace(/^\/*/,`/`).replace(/[\\.*+^${}|()[\]]/g,`\\$&`).replace(/\/:([\w-]+)(\?)?/g,(e,t,n,i,a)=>{if(r.push({paramName:t,isOptional:n!=null}),n){let t=a.charAt(i+e.length);return t&&t!==`/`?`/([^\\/]*)`:`(?:/([^\\/]*))?`}return`/([^\\/]+)`}).replace(/\/([\w-]+)\?(\/|$)/g,`(/$1)?$2`);return e.endsWith(`*`)?(r.push({paramName:`*`}),i+=e===`*`||e===`/*`?`(.*)$`:`(?:\\/(.+)|\\/*)$`):n?i+=`\\/*$`:e!==``&&e!==`/`&&(i+=`(?:(?=\\/|$))`),[new RegExp(i,t?void 0:`i`),r]}function rt(e){try{return e.split(`/`).map(e=>decodeURIComponent(e).replace(/\//g,`%2F`)).join(`/`)}catch(t){return P(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function it(e,t){if(t===`/`)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith(`/`)?t.length-1:t.length,r=e.charAt(n);return r&&r!==`/`?null:e.slice(n)||`/`}function at({basename:e,pathname:t}){return t===`/`?e:mt([e,t])}var ot=e=>ve.test(e);function st(e,t=`/`){let{pathname:n,search:r=``,hash:i=``}=typeof e==`string`?Te(e):e,a;return n?(n=pt(n),a=n.startsWith(`/`)||n.startsWith(`\\`)?ct(n.substring(1),`/`):ct(n,t)):a=t,{pathname:a,search:_t(r),hash:vt(i)}}function ct(e,t){let n=ht(t).split(`/`);return e.split(`/`).forEach(e=>{e===`..`?n.length>1&&n.pop():e!==`.`&&n.push(e)}),n.length>1?n.join(`/`):`/`}function lt(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function ut(e){return e.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function dt(e){let t=ut(e);return t.map((e,n)=>n===t.length-1?e.pathname:e.pathnameBase)}function ft(e,t,n,r=!1){let i;typeof e==`string`?i=Te(e):(i={...e},N(!i.pathname||!i.pathname.includes(`?`),lt(`?`,`pathname`,`search`,i)),N(!i.pathname||!i.pathname.includes(`#`),lt(`#`,`pathname`,`hash`,i)),N(!i.search||!i.search.includes(`#`),lt(`#`,`search`,`hash`,i)));let a=e===``||i.pathname===``,o=a?`/`:i.pathname,s;if(o==null)s=n;else{let e=t.length-1;if(!r&&o.startsWith(`..`)){let t=o.split(`/`);for(;t[0]===`..`;)t.shift(),--e;i.pathname=t.join(`/`)}s=e>=0?t[e]:`/`}let c=st(i,s),l=o&&o!==`/`&&o.endsWith(`/`),u=(a||o===`.`)&&n.endsWith(`/`);return!c.pathname.endsWith(`/`)&&(l||u)&&(c.pathname+=`/`),c}var pt=e=>e.replace(/[\\/]{2,}/g,`/`),mt=e=>pt(e.join(`/`));function ht(e,t=0){let n=e.length;for(;n>t&&e.charCodeAt(n-1)===47;)n--;return n===e.length?e:e.slice(0,n)}var gt=e=>ht(e).replace(/^\/*/,`/`),_t=e=>!e||e===`?`?``:e.startsWith(`?`)?e:`?`+e,vt=e=>!e||e===`#`?``:e.startsWith(`#`)?e:`#`+e,yt=[`EvalError`,`RangeError`,`ReferenceError`,`SyntaxError`,`TypeError`,`URIError`],bt=class{constructor(e,t,n,r=!1){this.status=e,this.statusText=t||``,this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function xt(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.internal==`boolean`&&`data`in e}function St(e){return mt(e.map(e=>e.route.path).filter(Boolean))||`/`}var Ct=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function wt(e,t){let n=e;if(typeof n!=`string`||!ve.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,i=!1;if(Ct)try{let e=new URL(window.location.href),r=ye.test(n)?new URL(j(n,e.protocol)):new URL(n),a=it(r.pathname,t);r.origin===e.origin&&a!=null?n=a+r.search+r.hash:i=!0}catch{P(!1,` contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:i,to:n}}var Tt=Symbol(`Uninstrumented`);function Et(e,t){let n={lazy:[],"lazy.loader":[],"lazy.action":[],"lazy.middleware":[],middleware:[],loader:[],action:[]};e.forEach(e=>e({id:t.id,index:t.index,path:t.path,instrument(e){let t=Object.keys(n);for(let r of t)e[r]&&n[r].push(e[r])}}));let r={};if(typeof t.lazy==`function`&&n.lazy.length>0){let e=Ot(n.lazy,t.lazy,()=>void 0);e&&(r.lazy=e)}if(typeof t.lazy==`object`){let e=t.lazy;[`middleware`,`loader`,`action`].forEach(t=>{let i=e[t],a=n[`lazy.${t}`];if(typeof i==`function`&&a.length>0){let e=Ot(a,i,()=>void 0);e&&(r.lazy=Object.assign(r.lazy||{},{[t]:e}))}})}return[`loader`,`action`].forEach(e=>{let i=t[e];if(typeof i==`function`&&n[e].length>0){let t=i[Tt]??i,a=Ot(n[e],t,(...e)=>At(e[0]));a&&(e===`loader`&&t.hydrate===!0&&(a.hydrate=!0),a[Tt]=t,r[e]=a)}}),t.middleware&&t.middleware.length>0&&n.middleware.length>0&&(r.middleware=t.middleware.map(e=>{let t=e[Tt]??e,r=Ot(n.middleware,t,(...e)=>At(e[0]));return r?(r[Tt]=t,r):e})),r}function Dt(e,t){let n={navigate:[],fetch:[]};if(t.forEach(e=>e({instrument(e){let t=Object.keys(e);for(let r of t)e[r]&&n[r].push(e[r])}})),n.navigate.length>0){let t=e.navigate[Tt]??e.navigate,r=Ot(n.navigate,t,(...t)=>{let[n,r]=t;return{to:typeof n==`number`||typeof n==`string`?n:n?we(n):`.`,...jt(e,r??{})}});r&&(r[Tt]=t,e.navigate=r)}if(n.fetch.length>0){let t=e.fetch[Tt]??e.fetch,r=Ot(n.fetch,t,(...t)=>{let[n,,r,i]=t;return{href:r??`.`,fetcherKey:n,...jt(e,i??{})}});r&&(r[Tt]=t,e.fetch=r)}return e}function Ot(e,t,n){return e.length===0?null:async(...r)=>{let i=await kt(e,n(...r),()=>t(...r),e.length-1);if(i.type===`error`)throw i.value;return i.value}}async function kt(e,t,n,r){let i=e[r],a;if(i){let o,s=async()=>(o?console.error(`You cannot call instrumented handlers more than once`):o=kt(e,t,n,r-1),a=await o,N(a,`Expected a result`),a.type===`error`&&a.value instanceof Error?{status:`error`,error:a.value}:{status:`success`,error:void 0});try{await i(s,t)}catch(e){console.error(`An instrumentation function threw an error:`,e)}o||await s(),await o}else try{a={type:`success`,value:await n()}}catch(e){a={type:`error`,value:e}}return a||{type:`error`,value:Error(`No result assigned in instrumentation chain.`)}}function At(e){let{request:t,context:n,params:r,pattern:i}=e;return{request:Mt(t),params:{...r},pattern:i,context:Nt(n)}}function jt(e,t){return{currentUrl:we(e.state.location),...`formMethod`in t?{formMethod:t.formMethod}:{},...`formEncType`in t?{formEncType:t.formEncType}:{},...`formData`in t?{formData:t.formData}:{},...`body`in t?{body:t.body}:{}}}function Mt(e){return{method:e.method,url:e.url,headers:{get:(...t)=>e.headers.get(...t)}}}function Nt(e){if(Ft(e)){let t={...e};return Object.freeze(t),t}return{get:t=>e.get(t)}}var Pt=Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);function Ft(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null||Object.getOwnPropertyNames(t).sort().join(`\0`)===Pt}var It=new URL(`http://localhost`);function Lt(e){if(e.createURL)return e.createURL(`/`);try{return new URL(e.createHref(`/`),It)}catch{return It}}function Rt(e,t){return e.origin===t.origin&&(e.origin!==`null`||e.protocol===t.protocol&&e.host===t.host)}function zt(e,t){if(e.startsWith(`//`))return!0;let n=t.protocol.toLowerCase();return e.toLowerCase().startsWith(n)?t.host===``||e.slice(n.length).startsWith(`//`):!1}function Bt(e,t,n,r){let i=null;try{i=e==null?null:new URL(e,n)}catch{}let a=new URL(t,n),o=i!=null&&!Rt(i,n),s=!Rt(a,n);if(r===`reject`){if(o||s)throw Error(`External navigation is not allowed`)}else if(s&&(i==null||!zt(e,i)||!Rt(i,a)))throw Error(`External navigation is not allowed`)}var Vt=[`POST`,`PUT`,`PATCH`,`DELETE`],Ht=new Set(Vt),Ut=[`GET`,...Vt],Wt=new Set(Ut),Gt=new Set([301,302,303,307,308]),Kt=new Set([307,308]),qt={state:`idle`,location:void 0,matches:void 0,historyAction:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},Jt={state:`idle`,data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},I={state:`unblocked`,proceed:void 0,reset:void 0,location:void 0},Yt=e=>({hasErrorBoundary:!!e.hasErrorBoundary}),Xt=`remix-router-transitions`,Zt=Symbol(`ResetLoaderData`),Qt,$t,en,tn,nn=class{constructor(e){ge(this,Qt),ge(this,$t),ge(this,en),ge(this,tn),_e(this,Qt,e),_e(this,$t,Be(e))}get stableRoutes(){return he(this,Qt)}get activeRoutes(){return he(this,en)??he(this,Qt)}get branches(){return he(this,tn)??he(this,$t)}get hasHMRRoutes(){return he(this,en)!=null}setRoutes(e){_e(this,Qt,e),_e(this,$t,Be(e))}setHmrRoutes(e){_e(this,en,e),_e(this,tn,Be(e))}commitHmrRoutes(){he(this,en)&&(_e(this,Qt,he(this,en)),_e(this,$t,he(this,tn)),_e(this,en,void 0),_e(this,tn,void 0))}};Qt=new WeakMap,$t=new WeakMap,en=new WeakMap,tn=new WeakMap;function rn(e){let t=e.window?e.window:typeof window<`u`?window:void 0,n=t!==void 0&&t.document!==void 0&&t.document.createElement!==void 0;N(e.routes.length>0,`You must provide a non-empty routes array to createRouter`);let r=e.hydrationRouteProperties||[],i=e.mapRouteProperties||Yt,a=i;if(e.instrumentations){let t=e.instrumentations;a=e=>({...i(e),...Et(t.map(e=>e.route).filter(Boolean),e)})}let o={},s=new nn(Fe(e.routes,a,void 0,o)),c=e.basename||`/`;c.startsWith(`/`)||(c=`/${c}`);let l=e.dataStrategy||xn,u={...e.future},d=null,f=new Set,p=null,m=null,h=null,g=null,_=e.hydrationData!=null,v=Re(s.activeRoutes,e.history.location,c,!1,s.branches),y=!1,b=null,x,S;if(v==null&&!e.patchRoutesOnNavigation){let t=Kn(404,{pathname:e.history.location.pathname}),{matches:n,route:r}=Gn(s.activeRoutes);x=!0,S=!x,v=n,b={[r.id]:t}}else if(v&&!e.hydrationData&&st(v,s.activeRoutes,e.history.location.pathname).active&&(v=null),!v){x=!1,S=!x,v=[];let t=st(null,s.activeRoutes,e.history.location.pathname);t.active&&t.matches&&(y=!0,v=t.matches)}else if(v.some(e=>e.route.lazy))x=!1,S=!x;else if(!v.some(e=>ln(e.route)))x=!0,S=!x;else{let t=e.hydrationData?e.hydrationData.loaderData:null,n=e.hydrationData?e.hydrationData.errors:null,r=v;if(n){let e=v.findIndex(e=>n[e.route.id]!==void 0);r=r.slice(0,e+1)}S=!1,x=!0,r.forEach(e=>{let r=un(e.route,t,n);S||=r.renderFallback,x&&=!r.shouldLoad})}let C,w={historyAction:e.history.action,location:e.history.location,matches:v,initialized:x,renderFallback:S,navigation:qt,restoreScrollPosition:e.hydrationData==null&&null,preventScrollReset:!1,revalidation:`idle`,loaderData:e.hydrationData&&e.hydrationData.loaderData||{},actionData:e.hydrationData&&e.hydrationData.actionData||null,errors:e.hydrationData&&e.hydrationData.errors||b,fetchers:new Map,blockers:new Map},T=`POP`,E=null,ee=!1,D,O=!1,te=new Map,ne=null,re=!1,ie=!1,ae=new Set,oe=new Map,se=0,ce=-1,k=new Map,le=new Set,ue=new Map,de=new Map,fe=new Set,A=new Map,pe,me=null;function he(){if(d=e.history.listen(({action:t,location:n,delta:r})=>{if(pe){pe(),pe=void 0;return}P(A.size===0||r!=null,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let i=$e({currentLocation:w.location,nextLocation:n,historyAction:t});if(i&&r!=null){let t=new Promise(e=>{pe=e});e.history.go(r*-1),Qe(i,{state:`blocked`,location:n,proceed(){Qe(i,{state:`proceeding`,proceed:void 0,reset:void 0,location:n}),t.then(()=>e.history.go(r))},reset(){let e=new Map(w.blockers);e.set(i,I),ve({blockers:e})}}),E?.resolve(),E=null;return}return xe(t,n)}),n){gr(t,te);let e=()=>_r(t,te);t.addEventListener(`pagehide`,e),ne=()=>t.removeEventListener(`pagehide`,e)}return w.initialized||xe(`POP`,w.location,{initialHydration:!0}),C}function ge(){d&&d(),ne&&ne(),f.clear(),D&&D.abort(),w.fetchers.forEach((e,t)=>We(w.fetchers,t)),w.blockers.forEach((e,t)=>Ze(t))}function _e(e){if(f.add(e),p){let{newErrors:t}=p;p=null,e(w,{deletedFetchers:[],newErrors:t,viewTransitionOpts:void 0,flushSync:!1})}return()=>f.delete(e)}function ve(e,t={}){e.matches&&=e.matches.map(e=>{let t=o[e.route.id],n=e.route;return n.element!==t.element||n.errorElement!==t.errorElement||n.hydrateFallbackElement!==t.hydrateFallbackElement?{...e,route:t}:e}),w={...w,...e};let n=[],r=[];w.fetchers.forEach((e,t)=>{e.state===`idle`&&(fe.has(t)?n.push(t):r.push(t))}),fe.forEach(e=>{!w.fetchers.has(e)&&!oe.has(e)&&n.push(e)}),f.size===0&&(p={newErrors:e.errors??null}),[...f].forEach(r=>r(w,{deletedFetchers:n,newErrors:e.errors??null,viewTransitionOpts:t.viewTransitionOpts,flushSync:t.flushSync===!0})),n.forEach(e=>We(w.fetchers,e)),r.forEach(e=>w.fetchers.delete(e))}function j(t,n,{flushSync:r}={}){let i=w.actionData!=null&&w.navigation.formMethod!=null&&sr(w.navigation.formMethod)&&w.navigation.state===`loading`&&t.state?._isRedirect!==!0,a;a=n.actionData?Object.keys(n.actionData).length>0?n.actionData:null:i?w.actionData:null;let o=n.loaderData?Hn(w.loaderData,n.loaderData,n.matches||[],n.errors):w.loaderData,c=w.blockers;c.size>0&&(c=new Map(c),c.forEach((e,t)=>c.set(t,I)));let l=!re&&at(t,n.matches||w.matches),u=ee===!0||w.navigation.formMethod!=null&&sr(w.navigation.formMethod)&&t.state?._isRedirect!==!0;s.commitHmrRoutes(),re||T===`POP`||(T===`PUSH`?e.history.push(t,t.state):T===`REPLACE`&&e.history.replace(t,t.state));let d;if(T===`POP`){let e=te.get(w.location.pathname);e&&e.has(t.pathname)?d={currentLocation:w.location,nextLocation:t}:te.has(t.pathname)&&(d={currentLocation:t,nextLocation:w.location})}else if(O){let e=te.get(w.location.pathname);e?e.add(t.pathname):(e=new Set([t.pathname]),te.set(w.location.pathname,e)),d={currentLocation:w.location,nextLocation:t}}ve({...n,actionData:a,loaderData:o,historyAction:T,location:t,initialized:!0,renderFallback:!1,navigation:qt,revalidation:`idle`,restoreScrollPosition:l,preventScrollReset:u,blockers:c},{viewTransitionOpts:d,flushSync:r===!0}),T=`POP`,ee=!1,O=!1,re=!1,ie=!1,E?.resolve(),E=null,me?.resolve(),me=null}async function M(t,n){if(E?.resolve(),E=null,typeof t==`number`){E||=vr();let n=E.promise;return e.history.go(t),n}let{path:r,submission:i,error:a}=sn(!1,on(w.location,w.matches,c,t,n?.fromRouteId,n?.relative),n),o;if(n?.mask){let t=typeof n.mask==`string`?Te(n.mask):{...w.location.mask,...n.mask};if(o={pathname:t.pathname??``,search:t.search??``,hash:t.hash??``},ye.test(o.pathname))throw Error(`External navigation is not allowed`);o.pathname.startsWith(`\\`)&&(o.pathname=o.pathname.replace(/^\\+/,`/`)),Bt(typeof n.mask==`string`?n.mask:we(n.mask),we(o),e.history.createURL(`/`),`reject`)}let s=w.location,l=Ce(s,r,n&&n.state,void 0,o);l={...l,...e.history.encodeLocation(l)},Bt(t==null?e.history.createHref(w.location):typeof t==`string`?t:we(t),e.history.createHref(l.mask||l),e.history.createURL(`/`),`reject`);let u=n&&n.replace!=null?n.replace:void 0,d=`PUSH`;u===!0?d=`REPLACE`:u===!1||i!=null&&sr(i.formMethod)&&i.formAction===w.location.pathname+w.location.search&&(d=`REPLACE`);let f=n&&`preventScrollReset`in n?n.preventScrollReset===!0:void 0,p=(n&&n.flushSync)===!0,m=$e({currentLocation:s,nextLocation:l,historyAction:d});if(m){Qe(m,{state:`blocked`,location:l,proceed(){Qe(m,{state:`proceeding`,proceed:void 0,reset:void 0,location:l}),M(t,n)},reset(){let e=new Map(w.blockers);e.set(m,I),ve({blockers:e})}});return}await xe(d,l,{submission:i,pendingError:a,preventScrollReset:f,replace:n&&n.replace,enableViewTransition:n&&n.viewTransition,flushSync:p,callSiteDefaultShouldRevalidate:n&&n.defaultShouldRevalidate})}function be(){me||=vr(),Le(),ve({revalidation:`loading`});let e=me.promise;return w.navigation.state===`submitting`?e:w.navigation.state===`idle`?(xe(w.historyAction,w.location,{startUninterruptedRevalidation:!0}),e):(xe(T||w.historyAction,w.navigation.location,{overrideNavigation:w.navigation,enableViewTransition:O===!0}),e)}async function xe(t,n,r){D&&D.abort(),D=null,T=t,re=(r&&r.startUninterruptedRevalidation)===!0,rt(w.location,w.matches),ee=(r&&r.preventScrollReset)===!0,O=(r&&r.enableViewTransition)===!0;let i=s.activeRoutes,a=r?.initialHydration&&w.matches&&w.matches.length>0&&!y?w.matches:Re(i,n,c,!1,s.branches),o=(r&&r.flushSync)===!0;if(a&&w.initialized&&!ie&&Yn(w.location,n)&&!(r&&r.submission&&sr(r.submission.formMethod))){j(n,{matches:a},{flushSync:o});return}let l=st(a,i,n.pathname);if(l.active&&l.matches&&(a=l.matches),!a){let{error:e,notFoundMatches:t,route:r}=et(n.pathname);j(n,{matches:t,loaderData:{},errors:{[r.id]:e}},{flushSync:o});return}let u=r&&r.overrideNavigation?{...r.overrideNavigation,matches:a,historyAction:t}:void 0;D=new AbortController;let d=In(e.history,n,D.signal,r&&r.submission),f=e.getContext?await e.getContext():new ke,p;if(r&&r.pendingError)p=[Wn(a).route.id,{type:`error`,error:r.pendingError}];else if(r&&r.submission&&sr(r.submission.formMethod)){let i=await Se(d,n,r.submission,a,t,f,l.active,r&&r.initialHydration===!0,{replace:r.replace,flushSync:o});if(i.shortCircuited)return;if(i.pendingActionResult){let[e,t]=i.pendingActionResult;if(er(t)&&xt(t.error)&&t.error.status===404){D=null,j(n,{matches:i.matches,loaderData:{},errors:{[e]:t.error}});return}}a=i.matches||a,p=i.pendingActionResult,u=dr(n,a,t,r.submission),o=!1,l.active=!1,d=In(e.history,d.url,d.signal)}let{shortCircuited:m,matches:h,loaderData:g,errors:_,workingFetchers:v}=await F(d,n,a,t,f,l.active,u,r&&r.submission,r&&r.fetcherSubmission,r&&r.replace,r&&r.initialHydration===!0,o,p,r&&r.callSiteDefaultShouldRevalidate);m||(D=null,j(n,{matches:h||a,...Un(p),loaderData:g,errors:_,...v?{fetchers:v}:{}}))}async function Se(t,n,i,l,u,d,f,p,m={}){if(Le(),ve({navigation:fr(n,l,u,i)},{flushSync:m.flushSync===!0}),f){let e=await ct(l,n.pathname,t.signal);if(e.type===`aborted`)return{shortCircuited:!0};if(e.type===`error`){if(e.partialMatches.length===0){let{matches:t,route:n}=Gn(s.activeRoutes);return{matches:t,pendingActionResult:[n.id,{type:`error`,error:e.error}]}}let t=Wn(e.partialMatches).route.id;return{matches:e.partialMatches,pendingActionResult:[t,{type:`error`,error:e.error}]}}if(e.matches)l=e.matches;else{let{notFoundMatches:e,error:t,route:r}=et(n.pathname);return{matches:e,pendingActionResult:[r.id,{type:`error`,error:t}]}}}let h,g=lr(l,n);if(!g.route.action&&!g.route.lazy)h={type:`error`,error:Kn(405,{method:t.method,pathname:n.pathname,routeId:g.route.id})};else{let e=await Pe(t,n,Dn(a,o,t,n,l,g,p?[]:r,d),d,null);if(h=e[g.route.id],!h){for(let t of l)if(e[t.route.id]){h=e[t.route.id];break}}if(t.signal.aborted)return{shortCircuited:!0}}if(tr(h)){let n;return n=m&&m.replace!=null?m.replace:Fn(h.response.headers.get(`Location`),new URL(t.url),c,e.history)===w.location.pathname+w.location.search,await Ne(t,h,!0,{submission:i,replace:n}),{shortCircuited:!0}}if(er(h)){let e=Wn(l,g.route.id);return(m&&m.replace)!==!0&&(T=`PUSH`),{matches:l,pendingActionResult:[e.route.id,h,g.route.id]}}return{matches:l,pendingActionResult:[g.route.id,h]}}async function F(t,n,i,l,u,d,f,p,m,h,g,_,v,y){let b=f||dr(n,i,l,p),x=p||m||ur(b),S=!re&&!g;if(d){if(S){let e=Ee(v);ve({navigation:b,...e===void 0?{}:{actionData:e}},{flushSync:_})}let e=await ct(i,n.pathname,t.signal);if(e.type===`aborted`)return{shortCircuited:!0};if(e.type===`error`){if(e.partialMatches.length===0){let{matches:t,route:n}=Gn(s.activeRoutes);return{matches:t,loaderData:{},errors:{[n.id]:e.error}}}let t=Wn(e.partialMatches).route.id;return{matches:e.partialMatches,loaderData:{},errors:{[t]:e.error}}}if(e.matches)i=e.matches;else{let{error:e,notFoundMatches:t,route:r}=et(n.pathname);return{matches:t,loaderData:{},errors:{[r.id]:e}}}}let C=s.activeRoutes,{dsMatches:T,revalidatingFetchers:E}=cn(t,u,a,o,e.history,w,i,x,n,g?[]:r,g===!0,ie,ae,fe,ue,le,C,c,e.patchRoutesOnNavigation!=null,s.branches,v,y);if(ce=++se,!e.dataStrategy&&!T.some(e=>e.shouldLoad)&&!T.some(e=>e.route.middleware&&e.route.middleware.length>0)&&E.length===0){let e=new Map(w.fetchers),t=Je(e);return j(n,{matches:i,loaderData:{},errors:v&&er(v[1])?{[v[0]]:v[1].error}:null,...Un(v),...t?{fetchers:e}:{}},{flushSync:_}),{shortCircuited:!0}}if(S){let e={};if(!d){e.navigation=b;let t=Ee(v);t!==void 0&&(e.actionData=t)}E.length>0&&(e.fetchers=Oe(E)),ve(e,{flushSync:_})}E.forEach(e=>{Ke(e.key),e.controller&&oe.set(e.key,e.controller)});let ee=()=>E.forEach(e=>Ke(e.key));D&&D.signal.addEventListener(`abort`,ee);let{loaderResults:O,fetcherResults:te}=await Ie(T,E,t,n,u);if(t.signal.aborted)return{shortCircuited:!0};D&&D.signal.removeEventListener(`abort`,ee),E.forEach(e=>oe.delete(e.key));let ne=qn(O);if(ne)return await Ne(t,ne.result,!0,{replace:h}),{shortCircuited:!0};if(ne=qn(te),ne)return le.add(ne.key),await Ne(t,ne.result,!0,{replace:h}),{shortCircuited:!0};let k=new Map(w.fetchers),{loaderData:de,errors:A}=Vn(w,i,O,v,E,te,k);g&&w.errors&&(A={...w.errors,...A});let pe=Je(k),me=Ye(ce,k),he=pe||me||E.length>0;return{matches:i,loaderData:de,errors:A,...he?{workingFetchers:k}:{}}}function Ee(e){if(e&&!er(e[1]))return{[e[0]]:e[1].data};if(w.actionData)return Object.keys(w.actionData).length===0?null:w.actionData}function Oe(e){let t=new Map(w.fetchers);return e.forEach(e=>{let n=t.get(e.key),r=pr(void 0,n?n.data:void 0);t.set(e.key,r)}),t}async function Ae(t,n,r,i){Ke(t);let a=(i&&i.flushSync)===!0,o=s.activeRoutes,l=on(w.location,w.matches,c,r,n,i?.relative),u=Re(o,l,c,!1,s.branches),d=st(u,o,l);if(d.active&&d.matches&&(u=d.matches),!u){Ve(t,n,Kn(404,{pathname:l}),{flushSync:a});return}let{path:f,submission:p,error:m}=sn(!0,l,i);if(m){Ve(t,n,m,{flushSync:a});return}let h=e.getContext?await e.getContext():new ke,g=(i&&i.preventScrollReset)===!0;if(p&&sr(p.formMethod)){await je(t,n,f,u,h,d.active,a,g,p,i&&i.defaultShouldRevalidate);return}ue.set(t,{routeId:n,path:f}),await Me(t,n,f,u,h,d.active,a,g,p)}async function je(t,n,i,l,u,d,f,p,m,h){Le(),ue.delete(t),Be(t,mr(m,w.fetchers.get(t)),{flushSync:f});let g=new AbortController,_=In(e.history,i,g.signal,m);if(d){let e=await ct(l,new URL(_.url).pathname,_.signal,t);if(e.type===`aborted`)return;if(e.type===`error`){Ve(t,n,e.error,{flushSync:f});return}if(e.matches)l=e.matches;else{Ve(t,n,Kn(404,{pathname:i}),{flushSync:f});return}}let v=lr(l,i);if(!v.route.action&&!v.route.lazy){Ve(t,n,Kn(405,{method:m.formMethod,pathname:i,routeId:n}),{flushSync:f});return}oe.set(t,g);let y=se,b=Dn(a,o,_,i,l,v,r,u),x=await Pe(_,i,b,u,t),S=x[v.route.id];if(!S){for(let e of b)if(x[e.route.id]){S=x[e.route.id];break}}if(_.signal.aborted){oe.get(t)===g&&oe.delete(t);return}if(fe.has(t)){if(tr(S)||er(S)){Be(t,hr(void 0));return}}else{if(tr(S)){if(oe.delete(t),ce>y){Be(t,hr(void 0));return}return le.add(t),Be(t,pr(m)),Ne(_,S,!1,{fetcherSubmission:m,preventScrollReset:p})}if(er(S)){Ve(t,n,S.error);return}}let C=w.navigation.location||w.location,E=In(e.history,C,g.signal),ee=s.activeRoutes,O=w.navigation.state===`idle`?w.matches:Re(ee,w.navigation.location,c,!1,s.branches);N(O,`Didn't find any matches after fetcher action`);let te=++se;k.set(t,te);let{dsMatches:ne,revalidatingFetchers:re}=cn(E,u,a,o,e.history,w,O,m,C,r,!1,ie,ae,fe,ue,le,ee,c,e.patchRoutesOnNavigation!=null,s.branches,[v.route.id,S],h),de=pr(m,S.data),A=new Map(w.fetchers);A.set(t,de),re.filter(e=>e.key!==t).forEach(e=>{let t=e.key,n=A.get(t),r=pr(void 0,n?n.data:void 0);A.set(t,r),Ke(t),e.controller&&oe.set(t,e.controller)}),ve({fetchers:A});let pe=()=>re.forEach(e=>Ke(e.key));g.signal.addEventListener(`abort`,pe);let{loaderResults:me,fetcherResults:he}=await Ie(ne,re,E,C,u);if(g.signal.aborted)return;g.signal.removeEventListener(`abort`,pe),k.delete(t),oe.delete(t),re.forEach(e=>oe.delete(e.key));let ge=w.fetchers.has(t),_e=e=>{if(!ge)return e;let n=new Map(e.fetchers);return n.set(t,hr(S.data)),{...e,fetchers:n}},ye=qn(me);if(ye)return w=_e(w),Ne(E,ye.result,!1,{preventScrollReset:p});if(ye=qn(he),ye)return le.add(ye.key),w=_e(w),Ne(E,ye.result,!1,{preventScrollReset:p});let M=new Map(w.fetchers);ge&&M.set(t,hr(S.data));let{loaderData:be,errors:xe}=Vn(w,O,me,void 0,re,he,M);Ye(te,M),w.navigation.state===`loading`&&te>ce?(N(T,`Expected pending action`),D&&D.abort(),j(w.navigation.location,{matches:O,loaderData:be,errors:xe,fetchers:M})):(ve({errors:xe,loaderData:Hn(w.loaderData,be,O,xe),fetchers:M}),ie=!1)}async function Me(t,n,i,s,c,l,u,d,f){let p=w.fetchers.get(t);Be(t,pr(f,p?p.data:void 0),{flushSync:u});let m=new AbortController,h=In(e.history,i,m.signal);if(l){let e=await ct(s,new URL(h.url).pathname,h.signal,t);if(e.type===`aborted`)return;if(e.type===`error`){Ve(t,n,e.error,{flushSync:u});return}if(e.matches)s=e.matches;else{Ve(t,n,Kn(404,{pathname:i}),{flushSync:u});return}}let g=lr(s,i);oe.set(t,m);let _=se,v=await Pe(h,i,Dn(a,o,h,i,s,g,r,c),c,t),y=v[g.route.id];if(!y){for(let e of s)if(v[e.route.id]){y=v[e.route.id];break}}if(oe.get(t)===m&&oe.delete(t),!h.signal.aborted){if(fe.has(t)){Be(t,hr(void 0));return}if(tr(y)){if(ce>_){Be(t,hr(void 0));return}le.add(t),await Ne(h,y,!1,{preventScrollReset:d});return}if(er(y)){Ve(t,n,y.error);return}Be(t,hr(y.data))}}async function Ne(r,i,a,{submission:o,fetcherSubmission:s,preventScrollReset:l,replace:u}={}){a||(E?.resolve(),E=null),i.response.headers.has(`X-Remix-Revalidate`)&&(ie=!0);let d=i.response.headers.get(`Location`);N(d,`Expected a Location header on the redirect Response`);let f=d,p=new URL(r.url);d=Fn(d,p,c,e.history),Bt(f,d,p,`allow-explicit`);let m=Ce(w.location,d,{_isRedirect:!0});if(n){let e=!1;if(i.response.headers.has(`X-Remix-Reload-Document`))e=!0;else if(ot(d)){let n=De(t,d,!0);e=n.origin!==t.location.origin||it(n.pathname,c)==null}if(e){u?t.location.replace(d):t.location.assign(d);return}}D=null;let h=u===!0||i.response.headers.has(`X-Remix-Replace`)?`REPLACE`:`PUSH`,{formMethod:g,formAction:_,formEncType:v}=w.navigation;!o&&!s&&g&&_&&v&&(o=ur(w.navigation));let y=o||s;Kt.has(i.response.status)&&y&&sr(y.formMethod)?await xe(h,m,{submission:{...y,formAction:d},preventScrollReset:l||ee,enableViewTransition:a?O:void 0}):await xe(h,m,{overrideNavigation:dr(m,[],h,o),fetcherSubmission:s,preventScrollReset:l||ee,enableViewTransition:a?O:void 0})}async function Pe(e,t,n,r,i){let a,o={};try{a=await On(l,e,t,n,i,r,!1)}catch(e){return n.filter(e=>e.shouldLoad).forEach(t=>{o[t.route.id]={type:`error`,error:e}}),o}if(e.signal.aborted)return o;if(!sr(e.method))for(let e of n){if(a[e.route.id]?.type===`error`)break;!a.hasOwnProperty(e.route.id)&&!w.loaderData.hasOwnProperty(e.route.id)&&(!w.errors||!w.errors.hasOwnProperty(e.route.id))&&e.shouldCallHandler()&&(a[e.route.id]={type:`error`,result:Error(`No result returned from dataStrategy for route ${e.route.id}`)})}for(let[t,r]of Object.entries(a))if($n(r)){let i=r.result;o[t]={type:`redirect`,response:Mn(i,e,t,n,c)}}else o[t]=await jn(r);return o}async function Ie(e,t,n,r,i){let a=Pe(n,r,e,i,null),o=Promise.all(t.map(async e=>{if(e.matches&&e.match&&e.request&&e.controller){let t=(await Pe(e.request,e.path,e.matches,i,e.key))[e.match.route.id];return{[e.key]:t}}return Promise.resolve({[e.key]:{type:`error`,error:Kn(404,{pathname:e.path})}})}));return{loaderResults:await a,fetcherResults:(await o).reduce((e,t)=>Object.assign(e,t),{})}}function Le(){ie=!0,ue.forEach((e,t)=>{oe.has(t)&&ae.add(t),Ke(t)})}function Be(e,t,n={}){let r=new Map(w.fetchers);r.set(e,t),ve({fetchers:r},{flushSync:(n&&n.flushSync)===!0})}function Ve(e,t,n,r={}){let i=Wn(w.matches,t),a=new Map(w.fetchers);We(a,e),ve({errors:{[i.route.id]:n},fetchers:a},{flushSync:(r&&r.flushSync)===!0})}function He(e){return de.set(e,(de.get(e)||0)+1),fe.has(e)&&fe.delete(e),w.fetchers.get(e)||Jt}function Ue(e,t){Ke(e,t?.reason),Be(e,hr(null))}function We(e,t){let n=w.fetchers.get(t);oe.has(t)&&!(n&&n.state===`loading`&&k.has(t))&&Ke(t),ue.delete(t),k.delete(t),le.delete(t),fe.delete(t),ae.delete(t),e.delete(t)}function Ge(e){let t=(de.get(e)||0)-1;t<=0?(de.delete(e),fe.add(e)):de.set(e,t),ve({fetchers:new Map(w.fetchers)})}function Ke(e,t){let n=oe.get(e);n&&(n.abort(t),oe.delete(e))}function qe(e,t){for(let n of e){let e=t.get(n);N(e,`Expected fetcher: ${n}`);let r=hr(e.data);t.set(n,r)}}function Je(e){let t=[],n=!1;for(let r of le){let i=e.get(r);N(i,`Expected fetcher: ${r}`),i.state===`loading`&&(le.delete(r),t.push(r),n=!0)}return qe(t,e),n}function Ye(e,t){let n=[];for(let[r,i]of k)if(i0}function Xe(e,t){let n=w.blockers.get(e)||I;return A.get(e)!==t&&A.set(e,t),n}function Ze(e){w.blockers.delete(e),A.delete(e)}function Qe(e,t){let n=w.blockers.get(e)||I;N(n.state===`unblocked`&&t.state===`blocked`||n.state===`blocked`&&t.state===`blocked`||n.state===`blocked`&&t.state===`proceeding`||n.state===`blocked`&&t.state===`unblocked`||n.state===`proceeding`&&t.state===`unblocked`,`Invalid blocker state transition: ${n.state} -> ${t.state}`);let r=new Map(w.blockers);r.set(e,t),ve({blockers:r})}function $e({currentLocation:e,nextLocation:t,historyAction:n}){if(A.size===0)return;A.size>1&&P(!1,`A router only supports one blocker at a time`);let r=Array.from(A.entries()),[i,a]=r[r.length-1],o=w.blockers.get(i);if(!(o&&o.state===`proceeding`)&&a({currentLocation:e,nextLocation:t,historyAction:n}))return i}function et(e){let t=Kn(404,{pathname:e}),n=s.activeRoutes,{matches:r,route:i}=Gn(n);return{notFoundMatches:r,route:i,error:t}}function tt(e,t,n){if(m=e,g=t,h=n||null,!_&&w.navigation===qt){_=!0;let e=at(w.location,w.matches);e!=null&&ve({restoreScrollPosition:e})}return()=>{m=null,g=null,h=null}}function nt(e,t){return h&&h(e,t.map(e=>ze(e,w.loaderData)))||e.key}function rt(e,t){if(m&&g){let n=nt(e,t);m[n]=g()}}function at(e,t){if(m){let n=nt(e,t),r=m[n];if(typeof r==`number`)return r}return null}function st(t,n,r){if(e.patchRoutesOnNavigation){let e=s.branches;if(!t)return{active:!0,matches:Re(n,r,c,!0,e)||[]};if(Object.keys(t[0].params).length>0)return{active:!0,matches:Re(n,r,c,!0,e)}}return{active:!1,matches:null}}async function ct(t,n,r,i){if(!e.patchRoutesOnNavigation)return{type:`success`,matches:t};let l=t;for(;;){let t=o;try{await e.patchRoutesOnNavigation({signal:r,path:n,matches:l,fetcherKey:i,patch:(e,n)=>{r.aborted||mn(e,n,s,t,a,!1)}})}catch(e){return{type:`error`,error:e,partialMatches:l}}if(r.aborted)return{type:`aborted`};let u=s.branches,d=Re(s.activeRoutes,n,c,!1,u),f=null;if(d&&(Object.keys(d[0].params).length===0||(f=Re(s.activeRoutes,n,c,!0,u),!(f&&l.lengthe.route.id===t[n].route.id)}function ut(e){o={},s.setHmrRoutes(Fe(e,a,void 0,o))}function dt(e,t,n=!1){mn(e,t,s,o,a,n),s.hasHMRRoutes||ve({})}return C={get basename(){return c},get future(){return u},get state(){return w},get routes(){return s.stableRoutes},get branches(){return s.branches},get manifest(){return o},get window(){return t},initialize:he,subscribe:_e,enableScrollRestoration:tt,navigate:M,fetch:Ae,revalidate:be,createHref:t=>e.history.createHref(t),createURL:t=>e.history.createURL(t),encodeLocation:t=>e.history.encodeLocation(t),getFetcher:He,resetFetcher:Ue,deleteFetcher:Ge,dispose:ge,getBlocker:Xe,deleteBlocker:Ze,patchRoutes:dt,_internalFetchControllers:oe,_internalSetRoutes:ut,_internalSetStateDoNotUseOrYouWillBreakYourApp(e){ve(e)}},e.instrumentations&&(C=Dt(C,e.instrumentations.map(e=>e.router).filter(Boolean))),C}function an(e){return e!=null&&(`formData`in e&&e.formData!=null||`body`in e&&e.body!==void 0)}function on(e,t,n,r,i,a){let o,s;if(i){o=[];for(let e of t)if(o.push(e),e.route.id===i){s=e;break}}else o=t,s=t[t.length-1];let c=ft(r||`.`,dt(o),it(e.pathname,n)||e.pathname,a===`path`);if(r??(c.search=e.search,c.hash=e.hash),(r==null||r===``||r===`.`)&&s){let e=cr(c.search);if(s.route.index&&!e)c.search=c.search?c.search.replace(/^\?/,`?index&`):`?index`;else if(!s.route.index&&e){let e=new URLSearchParams(c.search),t=e.getAll(`index`);e.delete(`index`),t.filter(e=>e).forEach(t=>e.append(`index`,t));let n=e.toString();c.search=n?`?${n}`:``}}return n!==`/`&&(c.pathname=at({basename:n,pathname:c.pathname})),we(c)}function sn(e,t,n){if(!n||!an(n))return{path:t};if(n.formMethod&&!or(n.formMethod))return{path:t,error:Kn(405,{method:n.formMethod})};let r=()=>({path:t,error:Kn(400,{type:`invalid-body`})}),i=(n.formMethod||`get`).toUpperCase(),a=Jn(t);if(n.body!==void 0){if(n.formEncType===`text/plain`){if(!sr(i))return r();let e=typeof n.body==`string`?n.body:n.body instanceof FormData||n.body instanceof URLSearchParams?Array.from(n.body.entries()).reduce((e,[t,n])=>`${e}${t}=${n} -`,``):String(n.body);return{path:t,submission:{formMethod:i,formAction:a,formEncType:n.formEncType,formData:void 0,json:void 0,text:e}}}if(n.formEncType===`application/json`){if(!sr(i))return r();try{let e=typeof n.body==`string`?JSON.parse(n.body):n.body;return{path:t,submission:{formMethod:i,formAction:a,formEncType:n.formEncType,formData:void 0,json:e,text:void 0}}}catch{return r()}}}N(typeof FormData==`function`,`FormData is not available in this environment`);let o,s;if(n.formData)o=Rn(n.formData),s=n.formData;else if(n.body instanceof FormData)o=Rn(n.body),s=n.body;else if(n.body instanceof URLSearchParams)o=n.body,s=zn(o);else if(n.body==null)o=new URLSearchParams,s=new FormData;else try{o=new URLSearchParams(n.body),s=zn(o)}catch{return r()}let c={formMethod:i,formAction:a,formEncType:n&&n.formEncType||`application/x-www-form-urlencoded`,formData:s,json:void 0,text:void 0};if(sr(c.formMethod))return{path:t,submission:c};let l=Te(t);return e&&l.search&&cr(l.search)&&o.append(`index`,``),l.search=`?${o}`,{path:we(l),submission:c}}function cn(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y,b,x){let S=b?er(b[1])?b[1].error:b[1].data:void 0,C=i.createURL(a.location),w=i.createURL(c),T;if(u&&a.errors){let e=Object.keys(a.errors)[0];T=o.findIndex(t=>t.route.id===e)}else if(b&&er(b[1])){let e=b[0];T=o.findIndex(t=>t.route.id===e)-1}let E=b?b[1].statusCode:void 0,ee=E&&E>=400,D={currentUrl:C,currentParams:a.matches[0]?.params||{},nextUrl:w,nextParams:o[0].params,...s,actionResult:S,actionStatus:E},O=St(o),te=o.map((i,o)=>{let{route:s}=i,f=null;if(T!=null&&o>T)f=!1;else if(s.lazy)f=!0;else if(!ln(s))f=!1;else if(u){let{shouldLoad:e}=un(s,a.loaderData,a.errors);f=e}else dn(a.loaderData,a.matches[o],i)&&(f=!0);if(f!==null)return En(n,r,e,c,O,i,l,t,f);let p=!1;typeof x==`boolean`?p=x:ee?p=!1:d||C.pathname+C.search===w.pathname+w.search?p=!0:C.search===w.search?fn(a.matches[o],i)&&(p=!0):p=!0;let m={...D,defaultShouldRevalidate:p},h=pn(i,m);return En(n,r,e,c,O,i,l,t,h,m,x)}),ne=[];return m.forEach((e,s)=>{if(u||!o.some(t=>t.route.id===e.routeId)||p.has(s))return;let c=a.fetchers.get(s),m=c&&c.state!==`idle`&&c.data===void 0,b=Re(g,e.path,_??`/`,!1,y);if(!b){if(v&&m)return;ne.push({key:s,routeId:e.routeId,path:e.path,matches:null,match:null,request:null,controller:null});return}if(h.has(s))return;let S=lr(b,e.path),C=new AbortController,w=In(i,e.path,C.signal),T=null;if(f.has(s))f.delete(s),T=Dn(n,r,w,e.path,b,S,l,t);else if(m)d&&(T=Dn(n,r,w,e.path,b,S,l,t));else{let i;i=typeof x==`boolean`?x:!ee&&d;let a={...D,defaultShouldRevalidate:i};pn(S,a)&&(T=Dn(n,r,w,e.path,b,S,l,t,a))}T&&ne.push({key:s,routeId:e.routeId,path:e.path,matches:T,match:S,request:w,controller:C})}),{dsMatches:te,revalidatingFetchers:ne}}function ln(e){return e.loader!=null||e.middleware!=null&&e.middleware.length>0}function un(e,t,n){if(e.lazy)return{shouldLoad:!0,renderFallback:!0};if(!ln(e))return{shouldLoad:!1,renderFallback:!1};let r=t!=null&&e.id in t,i=n!=null&&n[e.id]!==void 0;if(!r&&i)return{shouldLoad:!1,renderFallback:!1};if(typeof e.loader==`function`&&e.loader.hydrate===!0)return{shouldLoad:!0,renderFallback:!r};let a=!r&&!i;return{shouldLoad:a,renderFallback:a}}function dn(e,t,n){let r=!t||n.route.id!==t.route.id,i=!e.hasOwnProperty(n.route.id);return r||i}function fn(e,t){let n=e.route.path;return e.pathname!==t.pathname||n!=null&&n.endsWith(`*`)&&e.params[`*`]!==t.params[`*`]}function pn(e,t){if(e.route.shouldRevalidate){let n=e.route.shouldRevalidate(t);if(typeof n==`boolean`)return n}return t.defaultShouldRevalidate}function mn(e,t,n,r,i,a){let o;if(e){let t=r[e];N(t,`No route found to patch children into: routeId = ${e}`),t.children||=[],o=t.children}else o=n.activeRoutes;let s=[],c=[];if(t.forEach(e=>{let t=o.find(t=>hn(e,t));t?c.push({existingRoute:t,newRoute:e}):s.push(e)}),s.length>0){let t=Fe(s,i,[e||`_`,`patch`,String(o?.length||`0`)],r);o.push(...t)}if(a&&c.length>0)for(let e=0;et.children?.some(t=>hn(e,t)))??!1}var gn=new WeakMap,_n=({key:e,route:t,manifest:n,mapRouteProperties:r})=>{let i=n[t.id];if(N(i,`No route found in manifest`),!i.lazy||typeof i.lazy!=`object`)return;let a=i.lazy[e];if(!a)return;let o=gn.get(i);o||(o={},gn.set(i,o));let s=o[e];if(s)return s;let c=(async()=>{let t=je(e),n=i[e]!==void 0&&e!==`hasErrorBoundary`;if(t)P(!t,`Route property `+e+` is not a supported lazy route property. This property will be ignored.`),o[e]=Promise.resolve();else if(n)P(!1,`Route "${i.id}" has a static property "${e}" defined. The lazy property will be ignored.`);else{let t=await a();t!=null&&(Object.assign(i,{[e]:t}),Object.assign(i,r(i)))}typeof i.lazy==`object`&&(i.lazy[e]=void 0,Object.values(i.lazy).every(e=>e===void 0)&&(i.lazy=void 0))})();return o[e]=c,c},vn=new WeakMap;function yn(e,t,n,r,i){let a=n[e.id];if(N(a,`No route found in manifest`),!e.lazy)return{lazyRoutePromise:void 0,lazyHandlerPromise:void 0};if(typeof e.lazy==`function`){let t=vn.get(a);if(t)return{lazyRoutePromise:t,lazyHandlerPromise:t};let n=(async()=>{N(typeof e.lazy==`function`,`No lazy route function found`);let t=await e.lazy(),n={};for(let e in t){let r=t[e];if(r===void 0)continue;let i=Ne(e),o=a[e]!==void 0&&e!==`hasErrorBoundary`;i?P(!i,`Route property `+e+` is not a supported property to be returned from a lazy route function. This property will be ignored.`):o?P(!o,`Route "${a.id}" has a static property "${e}" defined but its lazy function is also returning a value for this property. The lazy route property "${e}" will be ignored.`):n[e]=r}Object.assign(a,n),Object.assign(a,{...r(a),lazy:void 0})})();return vn.set(a,n),n.catch(()=>{}),{lazyRoutePromise:n,lazyHandlerPromise:n}}let o=Object.keys(e.lazy),s=[],c;for(let a of o){if(i&&i.includes(a))continue;let o=_n({key:a,route:e,manifest:n,mapRouteProperties:r});o&&(s.push(o),a===t&&(c=o))}let l=s.length>0?Promise.all(s).then(()=>{}):void 0;return l?.catch(()=>{}),c?.catch(()=>{}),{lazyRoutePromise:l,lazyHandlerPromise:c}}async function bn(e){let t=e.matches.filter(e=>e.shouldLoad),n={};return(await Promise.all(t.map(e=>e.resolve()))).forEach((e,r)=>{n[t[r].route.id]=e}),n}async function xn(e){return e.matches.some(e=>e.route.middleware)?Sn(e,()=>bn(e)):bn(e)}function Sn(e,t){return Cn(e,t,e=>{if(ar(e))throw e;return e},Zn,n);function n(t,n,r){if(r)return Promise.resolve(Object.assign(r.value,{[n]:{type:`error`,result:t}}));{let{matches:r}=e,i=Wn(r,r[Math.min(Math.max(r.findIndex(e=>e.route.id===n),0),Math.max(r.findIndex(e=>e.shouldCallHandler()),0))].route.id).route.id;return Promise.resolve({[i]:{type:`error`,result:t}})}}}async function Cn(e,t,n,r,i){let{matches:a,...o}=e;return await wn(o,a.flatMap(e=>e.route.middleware?e.route.middleware.map(t=>[e.route.id,t]):[]),t,n,r,i)}async function wn(e,t,n,r,i,a,o=0){let{request:s}=e;if(s.signal.aborted)throw s.signal.reason??Error(`Request aborted: ${s.method} ${s.url}`);let c=t[o];if(!c)return await n();let[l,u]=c,d,f=async()=>{if(d)throw Error("You may only call `next()` once per middleware");try{return d={value:await wn(e,t,n,r,i,a,o+1)},d.value}catch(e){return d={value:await a(e,l,d)},d.value}};try{let t=await u(e,f),n=t==null?void 0:r(t);return i(n)?n:d?n??d.value:(d={value:await f()},d.value)}catch(e){return await a(e,l,d)}}function Tn(e,t,n,r,i){let a=_n({key:`middleware`,route:r.route,manifest:t,mapRouteProperties:e}),o=yn(r.route,sr(n.method)?`action`:`loader`,t,e,i);return{middleware:a,route:o.lazyRoutePromise,handler:o.lazyHandlerPromise}}function En(e,t,n,r,i,a,o,s,c,l=null,u){let d=!1,f=Tn(e,t,n,a,o);return{...a,_lazyPromises:f,shouldLoad:c,shouldRevalidateArgs:l,shouldCallHandler(e){return d=!0,l?typeof u==`boolean`?pn(a,{...l,defaultShouldRevalidate:u}):typeof e==`boolean`?pn(a,{...l,defaultShouldRevalidate:e}):pn(a,l):c},resolve(e){let{lazy:t,loader:o,middleware:l}=a.route,u=d||c||e&&!sr(n.method)&&(t||o),p=l&&l.length>0&&!o&&!t;return u&&(sr(n.method)||!p)?kn({request:n,path:r,pattern:i,match:a,lazyHandlerPromise:f?.handler,lazyRoutePromise:f?.route,handlerOverride:e,scopedContext:s}):Promise.resolve({type:`data`,result:void 0})}}}function Dn(e,t,n,r,i,a,o,s,c=null){return i.map(l=>l.route.id===a.route.id?En(e,t,n,r,St(i),l,o,s,!0,c):{...l,shouldLoad:!1,shouldRevalidateArgs:c,shouldCallHandler:()=>!1,_lazyPromises:Tn(e,t,n,l,o),resolve:()=>Promise.resolve({type:`data`,result:void 0})})}async function On(e,t,n,r,i,a,o){r.some(e=>e._lazyPromises?.middleware)&&await Promise.all(r.map(e=>e._lazyPromises?.middleware));let s={request:t,url:Ln(t,n),pattern:St(r),params:r[0].params,context:a,matches:r},c=o?()=>{throw Error("You cannot call `runClientMiddleware()` from a static handler `dataStrategy`. Middleware is run outside of `dataStrategy` during SSR in order to bubble up the Response. You can enable middleware via the `respond` API in `query`/`queryRoute`")}:e=>{let t=s;return Sn(t,()=>e({...t,fetcherKey:i,runClientMiddleware:()=>{throw Error("Cannot call `runClientMiddleware()` from within an `runClientMiddleware` handler")}}))},l=await e({...s,fetcherKey:i,runClientMiddleware:c});try{await Promise.all(r.flatMap(e=>[e._lazyPromises?.handler,e._lazyPromises?.route]))}catch{}return l}async function kn({request:e,path:t,pattern:n,match:r,lazyHandlerPromise:i,lazyRoutePromise:a,handlerOverride:o,scopedContext:s}){let c,l,u=sr(e.method),d=u?`action`:`loader`,f=i=>{let a,c=new Promise((e,t)=>a=t);l=()=>a(),e.signal.addEventListener(`abort`,l);let u=a=>typeof i==`function`?i({request:e,url:Ln(e,t),pattern:n,params:r.params,context:s},...a===void 0?[]:[a]):Promise.reject(Error(`You cannot call the handler for a route which defines a boolean "${d}" [routeId: ${r.route.id}]`)),f=(async()=>{try{return{type:`data`,result:await(o?o(e=>u(e)):u())}}catch(e){return{type:`error`,result:e}}})();return Promise.race([f,c])};try{let t=u?r.route.action:r.route.loader;if(i||a){if(t){let e,[n]=await Promise.all([f(t).catch(t=>{e=t}),i,a]);if(e!==void 0)throw e;c=n}else{await i;let t=u?r.route.action:r.route.loader;if(t)[c]=await Promise.all([f(t),a]);else if(d===`action`){let t=new URL(e.url),n=t.pathname+t.search;throw Kn(405,{method:e.method,pathname:n,routeId:r.route.id})}else return{type:`data`,result:void 0}}}else if(t)c=await f(t);else{let t=new URL(e.url);throw Kn(404,{pathname:t.pathname+t.search})}}catch(e){return{type:`error`,result:e}}finally{l&&e.signal.removeEventListener(`abort`,l)}return c}async function An(e){let t=e.headers.get(`Content-Type`);return t&&/\bapplication\/json\b/.test(t)?e.body==null?null:e.json():e.text()}async function jn(e){let{result:t,type:n}=e;if(rr(t)){let e;try{e=await An(t)}catch(e){return{type:`error`,error:e}}return n===`error`?{type:`error`,error:new bt(t.status,t.statusText,e),statusCode:t.status,headers:t.headers}:{type:`data`,data:e,statusCode:t.status,headers:t.headers}}return n===`error`?nr(t)?t.data instanceof Error?{type:`error`,error:t.data,statusCode:t.init?.status,headers:t.init?.headers?new Headers(t.init.headers):void 0}:{type:`error`,error:Xn(t),statusCode:xt(t)?t.status:void 0,headers:t.init?.headers?new Headers(t.init.headers):void 0}:{type:`error`,error:t,statusCode:xt(t)?t.status:void 0}:nr(t)?{type:`data`,data:t.data,statusCode:t.init?.status,headers:t.init?.headers?new Headers(t.init.headers):void 0}:{type:`data`,data:t}}function Mn(e,t,n,r,i){let a=e.headers.get(`Location`);if(N(a,`Redirects returned/thrown from loaders/actions must have a Location header`),!ot(a)){let o=r.slice(0,r.findIndex(e=>e.route.id===n)+1);a=on(new URL(t.url),o,i,a),e.headers.set(`Location`,a)}return e}var Nn=[`about:`,`blob:`,`chrome:`,`chrome-untrusted:`,`content:`,`data:`,`devtools:`,`file:`,`filesystem:`,`javascript:`];function Pn(e){try{return Nn.includes(new URL(e).protocol)}catch{return!1}}function Fn(e,t,n,r){if(ot(e)){let r=e,i=ye.test(r)?new URL(j(r,t.protocol)):new URL(r);if(Pn(i.toString()))throw Error(`Invalid redirect location`);let a=it(i.pathname,n)!=null;if(i.origin===t.origin&&a)return pt(i.pathname)+i.search+i.hash}try{if(Pn(r.createURL(e).toString()))throw Error(`Invalid redirect location`)}catch{}return e}function In(e,t,n,r){let i=e.createURL(Jn(t)).toString(),a={signal:n};if(r&&sr(r.formMethod)){let{formMethod:e,formEncType:t}=r;a.method=e.toUpperCase(),t===`application/json`?(a.headers=new Headers({"Content-Type":t}),a.body=JSON.stringify(r.json)):a.body=t===`text/plain`?r.text:t===`application/x-www-form-urlencoded`&&r.formData?Rn(r.formData):r.formData}return new Request(i,a)}function Ln(e,t){let n=new URL(e.url),r=typeof t==`string`?Te(t):t;if(n.pathname=r.pathname||`/`,r.search){let e=new URLSearchParams(r.search),t=e.getAll(`index`);e.delete(`index`);for(let n of t.filter(Boolean))e.append(`index`,n);n.search=e.size?`?${e.toString()}`:``}else n.search=``;return n.hash=r.hash||``,n}function Rn(e){let t=new URLSearchParams;for(let[n,r]of e.entries())t.append(n,typeof r==`string`?r:r.name);return t}function zn(e){let t=new FormData;for(let[n,r]of e.entries())t.append(n,r);return t}function Bn(e,t,n,r=!1,i=!1){let a={},o=null,s,c=!1,l={},u=n&&er(n[1])?n[1].error:void 0;return e.forEach(n=>{if(!(n.route.id in t))return;let d=n.route.id,f=t[d];if(N(!tr(f),`Cannot handle redirect results in processLoaderData`),er(f)){let t=f.error;if(u!==void 0&&(t=u,u=void 0),o||={},i)o[d]=t;else{let n=Wn(e,d);o[n.route.id]??(o[n.route.id]=t)}r||(a[d]=Zt),c||(c=!0,s=xt(f.error)?f.error.status:500),f.headers&&(l[d]=f.headers)}else a[d]=f.data,f.statusCode&&f.statusCode!==200&&!c&&(s=f.statusCode),f.headers&&(l[d]=f.headers)}),u!==void 0&&n&&(o={[n[0]]:u},n[2]&&(a[n[2]]=void 0)),{loaderData:a,errors:o,statusCode:s||200,loaderHeaders:l}}function Vn(e,t,n,r,i,a,o){let{loaderData:s,errors:c}=Bn(t,n,r);return i.filter(e=>!e.matches||e.matches.some(e=>e.shouldLoad)).forEach(t=>{let{key:n,match:r,controller:i}=t;if(i&&i.signal.aborted)return;let s=a[n];if(N(s,`Did not find corresponding fetcher result`),er(s)){let t=Wn(e.matches,r?.route.id);c&&c[t.route.id]||(c={...c,[t.route.id]:s.error}),o.delete(n)}else if(tr(s))N(!1,`Unhandled fetcher revalidation redirect`);else{let e=hr(s.data);o.set(n,e)}}),{loaderData:s,errors:c}}function Hn(e,t,n,r){let i=Object.entries(t).filter(([,e])=>e!==Zt).reduce((e,[t,n])=>(e[t]=n,e),{});for(let a of n){let n=a.route.id;if(!t.hasOwnProperty(n)&&e.hasOwnProperty(n)&&a.route.loader&&(i[n]=e[n]),r&&r.hasOwnProperty(n))break}return i}function Un(e){return e?er(e[1])?{actionData:{}}:{actionData:{[e[0]]:e[1].data}}:{}}function Wn(e,t){return(t?e.slice(0,e.findIndex(e=>e.route.id===t)+1):[...e]).reverse().find(e=>e.route.hasErrorBoundary===!0)||e[0]}function Gn(e){let t=e.length===1?e[0]:e.find(e=>e.index||!e.path||e.path===`/`)||{id:`__shim-error-route__`};return{matches:[{params:{},pathname:``,pathnameBase:``,route:t}],route:t}}function Kn(e,{pathname:t,routeId:n,method:r,type:i,message:a}={}){let o=`Unknown Server Error`,s=`Unknown @remix-run/router error`;return e===400?(o=`Bad Request`,r&&t&&n?s=`You made a ${r} request to "${t}" but did not provide a \`loader\` for route "${n}", so there is no way to handle the request.`:i===`invalid-body`&&(s=`Unable to encode submission body`)):e===403?(o=`Forbidden`,s=`Route "${n}" does not match URL "${t}"`):e===404?(o=`Not Found`,s=`No route matches URL "${t}"`):e===405&&(o=`Method Not Allowed`,r&&t&&n?s=`You made a ${r.toUpperCase()} request to "${t}" but did not provide an \`action\` for route "${n}", so there is no way to handle the request.`:r&&(s=`Invalid request method "${r.toUpperCase()}"`)),new bt(e||500,o,Error(s),!0)}function qn(e){let t=Object.entries(e);for(let e=t.length-1;e>=0;e--){let[n,r]=t[e];if(tr(r))return{key:n,result:r}}}function Jn(e){return we({...typeof e==`string`?Te(e):e,hash:``})}function Yn(e,t){return e.pathname!==t.pathname||e.search!==t.search?!1:e.hash===``?t.hash!==``:e.hash===t.hash||t.hash!==``}function Xn(e){return new bt(e.init?.status??500,e.init?.statusText??`Internal Server Error`,e.data)}function Zn(e){return typeof e==`object`&&!!e&&Object.entries(e).every(([e,t])=>typeof e==`string`&&Qn(t))}function Qn(e){return typeof e==`object`&&!!e&&`type`in e&&`result`in e&&(e.type===`data`||e.type===`error`)}function $n(e){return rr(e.result)&&Gt.has(e.result.status)}function er(e){return e.type===`error`}function tr(e){return(e&&e.type)===`redirect`}function nr(e){return typeof e==`object`&&!!e&&`type`in e&&`data`in e&&`init`in e&&e.type===`DataWithResponseInit`}function rr(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.headers==`object`&&e.body!==void 0}function ir(e){return Gt.has(e)}function ar(e){return rr(e)&&ir(e.status)&&e.headers.has(`Location`)}function or(e){return Wt.has(e.toUpperCase())}function sr(e){return Ht.has(e.toUpperCase())}function cr(e){return new URLSearchParams(e).getAll(`index`).some(e=>e===``)}function lr(e,t){let n=typeof t==`string`?Te(t).search:t.search;if(e[e.length-1].route.index&&cr(n||``))return e[e.length-1];let r=ut(e);return r[r.length-1]}function ur(e){let{formMethod:t,formAction:n,formEncType:r,text:i,formData:a,json:o}=e;if(t&&n&&r){if(i!=null)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:void 0,text:i};if(a!=null)return{formMethod:t,formAction:n,formEncType:r,formData:a,json:void 0,text:void 0};if(o!==void 0)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:o,text:void 0}}}function dr(e,t,n,r){return r?{state:`loading`,location:e,matches:t,historyAction:n,formMethod:r.formMethod,formAction:r.formAction,formEncType:r.formEncType,formData:r.formData,json:r.json,text:r.text}:{state:`loading`,location:e,matches:t,historyAction:n,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function fr(e,t,n,r){return{state:`submitting`,location:e,matches:t,historyAction:n,formMethod:r.formMethod,formAction:r.formAction,formEncType:r.formEncType,formData:r.formData,json:r.json,text:r.text}}function pr(e,t){return e?{state:`loading`,formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t}:{state:`loading`,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function mr(e,t){return{state:`submitting`,formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t?t.data:void 0}}function hr(e){return{state:`idle`,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}function gr(e,t){try{let n=e.sessionStorage.getItem(Xt);if(n){let e=JSON.parse(n);for(let[n,r]of Object.entries(e||{}))r&&Array.isArray(r)&&t.set(n,new Set(r||[]))}}catch{}}function _r(e,t){if(t.size>0){let n={};for(let[e,r]of t)n[e]=[...r];try{e.sessionStorage.setItem(Xt,JSON.stringify(n))}catch(e){P(!1,`Failed to save applied view transitions in sessionStorage (${e}).`)}}}function vr(){let e,t,n=new Promise((r,i)=>{e=async e=>{r(e);try{await n}catch{}},t=async e=>{i(e);try{await n}catch{}}});return{promise:n,resolve:e,reject:t}}var yr=k.createContext(null);yr.displayName=`DataRouter`;var br=k.createContext(null);br.displayName=`DataRouterState`;var xr=k.createContext(!1);function Sr(){return k.useContext(xr)}var Cr=k.createContext({isTransitioning:!1});Cr.displayName=`ViewTransition`;var wr=k.createContext(new Map);wr.displayName=`Fetchers`;var Tr=k.createContext(null);Tr.displayName=`Await`;var Er=k.createContext(null);Er.displayName=`Navigation`;var Dr=k.createContext(null);Dr.displayName=`Location`;var Or=k.createContext({outlet:null,matches:[],isDataRoute:!1});Or.displayName=`Route`;var kr=k.createContext(null);kr.displayName=`RouteError`;var Ar=`REACT_ROUTER_ERROR`,jr=`REDIRECT`,Mr=`ROUTE_ERROR_RESPONSE`;function Nr(e){if(e.startsWith(`${Ar}:${jr}:{`))try{let t=JSON.parse(e.slice(28));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`&&typeof t.location==`string`&&typeof t.reloadDocument==`boolean`&&typeof t.replace==`boolean`)return t}catch{}}function Pr(e){if(e.startsWith(`${Ar}:${Mr}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`)return new bt(t.status,t.statusText,t.data)}catch{}}function Fr(e,{relative:t}={}){N(Ir(),`useHref() may be used only in the context of a component.`);let{basename:n,navigator:r}=k.useContext(Er),{hash:i,pathname:a,search:o}=Gr(e,{relative:t}),s=a;return n!==`/`&&(s=a===`/`?n:mt([n,a])),r.createHref({pathname:s,search:o,hash:i})}function Ir(){return k.useContext(Dr)!=null}function Lr(){return N(Ir(),`useLocation() may be used only in the context of a component.`),k.useContext(Dr).location}var Rr=`You should call navigate() in a React.useEffect(), not when your component is first rendered.`;function zr(e){k.useContext(Er).static||k.useLayoutEffect(e)}function Br(){let{isDataRoute:e}=k.useContext(Or);return e?si():Vr()}function Vr(){N(Ir(),`useNavigate() may be used only in the context of a component.`);let e=k.useContext(yr),{basename:t,navigator:n}=k.useContext(Er),{matches:r}=k.useContext(Or),{pathname:i}=Lr(),a=JSON.stringify(dt(r)),o=k.useRef(!1);return zr(()=>{o.current=!0}),k.useCallback((r,s={})=>{if(P(o.current,Rr),!o.current)return;if(typeof r==`number`){n.go(r);return}let c=ft(r,JSON.parse(a),i,s.relative===`path`);e==null&&t!==`/`&&(c.pathname=c.pathname===`/`?t:mt([t,c.pathname])),Bt(typeof r==`string`?r:we(r),n.createHref(c),Lt(n),`reject`),(s.replace?n.replace:n.push)(c,s.state,s)},[t,n,a,i,e])}var Hr=k.createContext(null);function Ur(e){let t=k.useContext(Or).outlet;return k.useMemo(()=>t&&k.createElement(Hr.Provider,{value:e},t),[t,e])}function Wr(){let{matches:e}=k.useContext(Or);return e[e.length-1]?.params??{}}function Gr(e,{relative:t}={}){let{matches:n}=k.useContext(Or),{pathname:r}=Lr(),i=JSON.stringify(dt(n));return k.useMemo(()=>ft(e,JSON.parse(i),r,t===`path`),[e,i,r,t])}function Kr(e,t,n){N(Ir(),`useRoutes() may be used only in the context of a component.`);let{navigator:r}=k.useContext(Er),{matches:i}=k.useContext(Or),a=i[i.length-1],o=a?a.params:{},s=a?a.pathname:`/`,c=a?a.pathnameBase:`/`,l=a&&a.route;{let e=l&&l.path||``;li(s,!l||e.endsWith(`*`)||e.endsWith(`*?`),`You rendered descendant (or called \`useRoutes()\`) at "${s}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. - -Please change the parent to .`)}let u=Lr(),d;if(t){let e=typeof t==`string`?Te(t):t;N(c===`/`||e.pathname?.startsWith(c),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${c}" but pathname "${e.pathname}" was given in the \`location\` prop.`),d=e}else d=u;let f=d.pathname||`/`,p=f;if(c!==`/`){let e=c.replace(/^\//,``).split(`/`);p=`/`+f.replace(/^\//,``).split(`/`).slice(e.length).join(`/`)}let m=n&&n.state.matches.length?n.state.matches.map(e=>Object.assign(e,{route:n.manifest[e.route.id]||e.route})):Le(e,{pathname:p});P(l||m!=null,`No routes matched location "${d.pathname}${d.search}${d.hash}" `),P(m==null||m[m.length-1].route.element!==void 0||m[m.length-1].route.Component!==void 0||m[m.length-1].route.lazy!==void 0,`Matched leaf route at location "${d.pathname}${d.search}${d.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let h=$r(m&&m.map(e=>Object.assign({},e,{params:Object.assign({},o,e.params),pathname:mt([c,r.encodeLocation?r.encodeLocation(e.pathname.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?c:mt([c,r.encodeLocation?r.encodeLocation(e.pathnameBase.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),i,n);return t&&h?k.createElement(Dr.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,mask:void 0,...d},navigationType:`POP`}},h):h}function qr(){let e=oi(),t=xt(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r=`rgba(200,200,200, 0.5)`,i={padding:`0.5rem`,backgroundColor:r},a={padding:`2px 4px`,backgroundColor:r},o=null;return console.error(`Error handled by React Router default ErrorBoundary:`,e),o=k.createElement(k.Fragment,null,k.createElement(`p`,null,`💿 Hey developer 👋`),k.createElement(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,k.createElement(`code`,{style:a},`ErrorBoundary`),` or`,` `,k.createElement(`code`,{style:a},`errorElement`),` prop on your route.`)),k.createElement(k.Fragment,null,k.createElement(`h2`,null,`Unexpected Application Error!`),k.createElement(`h3`,{style:{fontStyle:`italic`}},t),n?k.createElement(`pre`,{style:i},n):null,o)}var Jr=k.createElement(qr,null),Yr=class extends k.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!==`idle`&&e.revalidation===`idle`?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error===void 0?t.error:e.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error(`React Router caught the following error during render`,e)}render(){let e=this.state.error;if(this.context&&typeof e==`object`&&e&&`digest`in e&&typeof e.digest==`string`){let t=Pr(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:k.createElement(Or.Provider,{value:this.props.routeContext},k.createElement(kr.Provider,{value:e,children:this.props.component}));return this.context?k.createElement(Zr,{error:e},t):t}};Yr.contextType=xr;var Xr=new WeakMap;function Zr({children:e,error:t}){let{basename:n,navigator:r}=k.useContext(Er);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=Nr(t.digest);if(e){let i=Xr.get(t);if(i)throw i;let a=wt(e.location,n),o=a.absoluteURL||a.to;if(Bt(e.location,o,Lt(r),`allow-explicit`),Pn(o))throw Error(`Invalid redirect location`);if(Ct&&!Xr.get(t)){if(a.isExternal||e.reloadDocument)window.location.href=o;else{let n=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(a.to,{replace:e.replace}));throw Xr.set(t,n),n}}return k.createElement(`meta`,{httpEquiv:`refresh`,content:`0;url=${o}`})}}return e}function Qr({routeContext:e,match:t,children:n}){let r=k.useContext(yr);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),k.createElement(Or.Provider,{value:e},n)}function $r(e,t=[],n){let r=n?.state;if(e==null){if(!r)return null;if(r.errors)e=r.matches;else if(t.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let i=e,a=r?.errors;if(a!=null){let e=i.findIndex(e=>e.route.id&&a?.[e.route.id]!==void 0);N(e>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(a).join(`,`)}`),i=i.slice(0,Math.min(i.length,e+1))}let o=!1,s=-1;if(n&&r){o=r.renderFallback;for(let e=0;e=0?i.slice(0,s+1):[i[0]];break}}}}let c=n?.onError,l=r&&c?(e,t)=>{c(e,{location:r.location,params:r.matches?.[0]?.params??{},pattern:St(r.matches),errorInfo:t})}:void 0;return i.reduceRight((e,n,c)=>{let u,d=!1,f=null,p=null;r&&(u=a&&n.route.id?a[n.route.id]:void 0,f=n.route.errorElement||Jr,o&&(s<0&&c===0?(li(`route-fallback`,!1,"No `HydrateFallback` element provided to render during initial hydration"),d=!0,p=null):s===c&&(d=!0,p=n.route.hydrateFallbackElement||null)));let m=t.concat(i.slice(0,c+1)),h=()=>{let t;return t=u?f:d?p:n.route.Component?k.createElement(n.route.Component,null):n.route.element?n.route.element:e,k.createElement(Qr,{match:n,routeContext:{outlet:e,matches:m,isDataRoute:r!=null},children:t})};return r&&(n.route.ErrorBoundary||n.route.errorElement||c===0)?k.createElement(Yr,{location:r.location,revalidation:r.revalidation,component:f,error:u,children:h(),routeContext:{outlet:null,matches:m,isDataRoute:!0},onError:l}):h()},null)}function ei(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function ti(e){let t=k.useContext(yr);return N(t,ei(e)),t}function ni(e){let t=k.useContext(br);return N(t,ei(e)),t}function ri(e){let t=k.useContext(Or);return N(t,ei(e)),t}function ii(e){let t=ri(e),n=t.matches[t.matches.length-1];return N(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function ai(){return ii(`useRouteId`)}function oi(){let e=k.useContext(kr),t=ni(`useRouteError`),n=ii(`useRouteError`);return e===void 0?t.errors?.[n]:e}function si(){let{router:e}=ti(`useNavigate`),t=ii(`useNavigate`),n=k.useRef(!1);return zr(()=>{n.current=!0}),k.useCallback(async(r,i={})=>{P(n.current,Rr),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var ci={};function li(e,t,n){!t&&!ci[e]&&(ci[e]=!0,P(!1,n))}var ui={};function di(e,t){!e&&!ui[t]&&(ui[t]=!0,console.warn(t))}var fi=k.useOptimistic,pi=()=>void 0;function mi(e){return fi?fi(e):[e,pi]}function hi(e){let t={hasErrorBoundary:e.hasErrorBoundary||e.ErrorBoundary!=null||e.errorElement!=null};return e.Component&&(e.element&&P(!1,"You should not include both `Component` and `element` on your route - `Component` will be used."),Object.assign(t,{element:k.createElement(e.Component),Component:void 0})),e.HydrateFallback&&(e.hydrateFallbackElement&&P(!1,"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - `HydrateFallback` will be used."),Object.assign(t,{hydrateFallbackElement:k.createElement(e.HydrateFallback),HydrateFallback:void 0})),e.ErrorBoundary&&(e.errorElement&&P(!1,"You should not include both `ErrorBoundary` and `errorElement` on your route - `ErrorBoundary` will be used."),Object.assign(t,{errorElement:k.createElement(e.ErrorBoundary),ErrorBoundary:void 0})),t}var gi=[`HydrateFallback`,`hydrateFallbackElement`],_i=class{constructor(){this.status=`pending`,this.promise=new Promise((e,t)=>{this.resolve=t=>{this.status===`pending`&&(this.status=`resolved`,e(t))},this.reject=e=>{this.status===`pending`&&(this.status=`rejected`,t(e))}})}};function vi({router:e,flushSync:t,onError:n,useTransitions:r}){r=Sr()||r;let[i,a]=k.useState(e.state),[o,s]=mi(i),[c,l]=k.useState(),[u,d]=k.useState({isTransitioning:!1}),[f,p]=k.useState(),[m,h]=k.useState(),[g,_]=k.useState(),v=k.useRef(new Map),y=k.useCallback((i,{deletedFetchers:o,newErrors:c,flushSync:u,viewTransitionOpts:g})=>{c&&n&&Object.values(c).forEach(e=>n(e,{location:i.location,params:i.matches[0]?.params??{},pattern:St(i.matches)})),i.fetchers.forEach((e,t)=>{e.data!==void 0&&v.current.set(t,e.data)}),o.forEach(e=>v.current.delete(e)),di(u===!1||t!=null,'You provided the `flushSync` option to a router update, but you are not using the `` from `react-router/dom` so `ReactDOM.flushSync()` is unavailable. Please update your app to `import { RouterProvider } from "react-router/dom"` and ensure you have `react-dom` installed as a dependency to use the `flushSync` option.');let y=e.window!=null&&e.window.document!=null&&typeof e.window.document.startViewTransition==`function`;if(di(g==null||y,"You provided the `viewTransition` option to a router update, but you do not appear to be running in a DOM environment as `window.startViewTransition` is not available."),!g||!y){t&&u?t(()=>a(i)):r===!1?a(i):k.startTransition(()=>{r===!0&&s(e=>yi(e,i)),a(i)});return}if(t&&u){t(()=>{m&&(f?.resolve(),m.skipTransition()),d({isTransitioning:!0,flushSync:!0,currentLocation:g.currentLocation,nextLocation:g.nextLocation})});let n=e.window.document.startViewTransition(()=>{t(()=>a(i))});n.finished.finally(()=>{t(()=>{p(void 0),h(void 0),l(void 0),d({isTransitioning:!1})})}),t(()=>h(n));return}m?(f?.resolve(),m.skipTransition(),_({state:i,currentLocation:g.currentLocation,nextLocation:g.nextLocation})):(l(i),d({isTransitioning:!0,flushSync:!1,currentLocation:g.currentLocation,nextLocation:g.nextLocation}))},[e.window,t,m,f,r,s,n]);k.useLayoutEffect(()=>e.subscribe(y),[e,y]),k.useEffect(()=>{u.isTransitioning&&!u.flushSync&&p(new _i)},[u]),k.useEffect(()=>{if(f&&c&&e.window){let t=c,n=f.promise,i=e.window.document.startViewTransition(async()=>{r===!1?a(t):k.startTransition(()=>{r===!0&&s(e=>yi(e,t)),a(t)}),await n});i.finished.finally(()=>{p(void 0),h(void 0),l(void 0),d({isTransitioning:!1})}),h(i)}},[c,f,e.window,r,s]),k.useEffect(()=>{f&&c&&o.location.key===c.location.key&&f.resolve()},[f,m,o.location,c]),k.useEffect(()=>{!u.isTransitioning&&g&&(l(g.state),d({isTransitioning:!0,flushSync:!1,currentLocation:g.currentLocation,nextLocation:g.nextLocation}),_(void 0))},[u.isTransitioning,g]);let b=k.useMemo(()=>({createHref:e.createHref,createURL:e.createURL,encodeLocation:e.encodeLocation,go:t=>e.navigate(t),push:(t,n,r)=>e.navigate(t,{state:n,preventScrollReset:r?.preventScrollReset}),replace:(t,n,r)=>e.navigate(t,{replace:!0,state:n,preventScrollReset:r?.preventScrollReset})}),[e]),x=e.basename||`/`,S=k.useMemo(()=>({router:e,navigator:b,static:!1,basename:x,onError:n}),[e,b,x,n]);return k.createElement(k.Fragment,null,k.createElement(yr.Provider,{value:S},k.createElement(br.Provider,{value:o},k.createElement(wr.Provider,{value:v.current},k.createElement(Cr.Provider,{value:u},k.createElement(Ci,{basename:x,location:o.location,navigationType:o.historyAction,navigator:b,useTransitions:r},k.createElement(bi,{routes:e.routes,manifest:e.manifest,future:e.future,state:o,isStatic:!1,onError:n})))))),null)}function yi(e,t){return{...e,navigation:t.navigation.state===`idle`?e.navigation:t.navigation,revalidation:t.revalidation===`idle`?e.revalidation:t.revalidation,actionData:t.navigation.state===`submitting`?e.actionData:t.actionData,fetchers:t.fetchers}}var bi=k.memo(xi);function xi({routes:e,manifest:t,future:n,state:r,isStatic:i,onError:a}){return Kr(e,void 0,{manifest:t,state:r,isStatic:i,onError:a,future:n})}function Si(e){return Ur(e.context)}function Ci({basename:e=`/`,children:t=null,location:n,navigationType:r=`POP`,navigator:i,static:a=!1,useTransitions:o}){N(!Ir(),`You cannot render a inside another . You should never have more than one in your app.`);let s=e.replace(/^\/*/,`/`),c=k.useMemo(()=>({basename:s,navigator:i,static:a,useTransitions:o,future:{}}),[s,i,a,o]);typeof n==`string`&&(n=Te(n));let{pathname:l=`/`,search:u=``,hash:d=``,state:f=null,key:p=`default`,mask:m}=n,h=k.useMemo(()=>{let e=it(l,s);return e==null?null:{location:{pathname:e,search:u,hash:d,state:f,key:p,mask:m},navigationType:r}},[s,l,u,d,f,p,r,m]);return P(h!=null,` is not able to match the URL "${l}${u}${d}" because it does not start with the basename, so the won't render anything.`),h==null?null:k.createElement(Er.Provider,{value:c},k.createElement(Dr.Provider,{children:t,value:h}))}k.Component;var wi=`get`,Ti=`application/x-www-form-urlencoded`;function Ei(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function Di(e){return Ei(e)&&e.tagName.toLowerCase()===`button`}function Oi(e){return Ei(e)&&e.tagName.toLowerCase()===`form`}function ki(e){return Ei(e)&&e.tagName.toLowerCase()===`input`}function Ai(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function ji(e,t){return e.button===0&&(!t||t===`_self`)&&!Ai(e)}var Mi=null;function Ni(){if(Mi===null)try{new FormData(document.createElement(`form`),0),Mi=!1}catch{Mi=!0}return Mi}var Pi=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function Fi(e){return e!=null&&!Pi.has(e)?(P(!1,`"${e}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${Ti}"`),null):e}function Ii(e,t){let n,r,i,a,o;if(Oi(e)){let o=e.getAttribute(`action`);r=o?it(o,t):null,n=e.getAttribute(`method`)||wi,i=Fi(e.getAttribute(`enctype`))||Ti,a=new FormData(e)}else if(Di(e)||ki(e)&&(e.type===`submit`||e.type===`image`)){let o=e.form;if(o==null)throw Error(`Cannot submit a