adminizer 4.7.0-build.224 → 5.0.0-build.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (307) hide show
  1. package/Readme.md +2 -1
  2. package/assets/add-De0wyF0A.js +1 -0
  3. package/assets/add-group-CMWybgIR.js +1 -0
  4. package/assets/add-user-BxP23daH.js +1 -0
  5. package/assets/app-CtWuWD5N.css +1 -0
  6. package/assets/app-layout-GYMU2HO1.js +1 -0
  7. package/assets/app.js +45 -50
  8. package/assets/catalog-tImW1BnS.js +6 -0
  9. package/assets/controls/chunks/_commonjsHelpers-C6fGbg64.js +6 -0
  10. package/assets/controls/chunks/index-CjiZ2FIa.js +93 -0
  11. package/assets/controls/chunks/jsx-runtime-jIxVPx5o.js +31 -0
  12. package/assets/controls/chunks/use-appearance-CFLOwiSX.js +38 -0
  13. package/assets/controls/chunks/use-window-size-BXgBKW65.js +19 -0
  14. package/assets/controls/chunks/vanilla-picker-Dg97NL4h.js +529 -0
  15. package/assets/controls/ckeditor.es.js +83683 -0
  16. package/assets/controls/handsontable.css +1 -0
  17. package/assets/controls/handsontable.es.js +70585 -0
  18. package/assets/controls/jsoneditor.css +1 -0
  19. package/assets/controls/jsoneditor.es.js +42082 -0
  20. package/assets/controls/leaflet.css +1 -0
  21. package/assets/controls/leaflet.es.js +10299 -0
  22. package/assets/controls/monaco.es.js +618 -0
  23. package/assets/controls/toast-ui.css +1 -0
  24. package/assets/controls/toast-ui.es.js +41797 -0
  25. package/assets/dashboard-CQ4atH3N.js +3 -0
  26. package/assets/debounce-BMmXVQ06.js +1 -0
  27. package/assets/history-BileQPEi.js +1 -0
  28. package/assets/init-user-8aUohVDq.js +1 -0
  29. package/assets/list-Pz_5mfSq.js +4 -0
  30. package/assets/login-CO4laf6m.js +1 -0
  31. package/assets/manifest.json +66 -602
  32. package/assets/media-manager-BDbpSSjH.js +6 -0
  33. package/assets/media-manager-BZPjl98I.css +1 -0
  34. package/assets/module-CQiOdgZN.js +1 -0
  35. package/assets/notification-BIyv1smE.js +20 -0
  36. package/assets/register-DBYIMXGQ.js +1 -0
  37. package/assets/ru-rYKdQbWF.js +1 -0
  38. package/assets/use-appearance-_EbbjHTh.js +1 -0
  39. package/assets/user-filters-list-Aq8CvCeh.js +1 -0
  40. package/assets/welcome-DxhWYzUL.js +1 -0
  41. package/controllers/add.d.ts +1 -1
  42. package/controllers/addGroup.js +3 -3
  43. package/controllers/addUser.js +3 -3
  44. package/controllers/catalog/Catalog.d.ts +1 -1
  45. package/controllers/catalog/Catalog.js +2 -1
  46. package/controllers/catalog/FrontendCatalogAdapter.d.ts +2 -12
  47. package/controllers/catalog/FrontendCatalogAdapter.js +3 -16
  48. package/controllers/catalog/FrontentCatalogAdapter.d.ts +2 -12
  49. package/controllers/catalog/FrontentCatalogAdapter.js +0 -16
  50. package/controllers/edit.js +6 -11
  51. package/controllers/editGroup.d.ts +1 -1
  52. package/controllers/editGroup.js +3 -3
  53. package/controllers/editUser.d.ts +1 -1
  54. package/controllers/editUser.js +3 -3
  55. package/controllers/feed.js +1 -1
  56. package/controllers/filter-fields/columns.js +1 -1
  57. package/controllers/filter-fields/getAllUserFilters.js +2 -2
  58. package/controllers/filter-fields/groups.js +2 -2
  59. package/controllers/filter-fields/savedFilters.js +1 -1
  60. package/controllers/history-actions/HistoryController.js +1 -1
  61. package/controllers/initUser.js +2 -2
  62. package/controllers/list.d.ts +1 -1
  63. package/controllers/login.d.ts +1 -1
  64. package/controllers/login.js +3 -3
  65. package/controllers/media-manager/ThumbController.js +2 -2
  66. package/controllers/media-manager/mediaManagerApi.js +13 -15
  67. package/controllers/register.d.ts +1 -1
  68. package/controllers/register.js +5 -5
  69. package/controllers/remove.d.ts +1 -1
  70. package/controllers/userApiKey.js +2 -2
  71. package/controllers/view.d.ts +1 -1
  72. package/controllers/view.js +5 -5
  73. package/controllers/widgets/Action.js +5 -2
  74. package/controllers/widgets/filterInfo.js +1 -1
  75. package/files/favicon.png +0 -0
  76. package/helpers/accessRightsHelper.d.ts +6 -4
  77. package/helpers/accessRightsHelper.js +13 -0
  78. package/helpers/diffHelpers.js +1 -1
  79. package/helpers/fieldsHelper.d.ts +1 -1
  80. package/helpers/fieldsHelper.js +8 -4
  81. package/helpers/filterDatetimeHelper.d.ts +1 -1
  82. package/helpers/inertiaAddHelper.d.ts +6 -5
  83. package/helpers/inertiaAddHelper.js +45 -37
  84. package/helpers/inertiaAutHelper.js +5 -5
  85. package/helpers/inertiaGroupHelper.d.ts +4 -4
  86. package/helpers/inertiaMenuHelper.js +1 -1
  87. package/helpers/inertiaUserHelper.d.ts +3 -3
  88. package/helpers/inertiaUserHelper.js +1 -1
  89. package/helpers/menuHelper.d.ts +2 -2
  90. package/index.d.ts +19 -6
  91. package/index.js +19 -6
  92. package/interfaces/adminpanelConfig.d.ts +10 -33
  93. package/interfaces/global.d.ts +10 -15
  94. package/interfaces/listQueryBuilder.d.ts +1 -1
  95. package/lib/Adminizer.d.ts +25 -2
  96. package/lib/Adminizer.js +124 -50
  97. package/lib/DataAccessor.d.ts +9 -5
  98. package/lib/DataAccessor.js +89 -42
  99. package/lib/access-rights/AccessRightsHandler.d.ts +17 -0
  100. package/lib/access-rights/AccessRightsHandler.js +63 -0
  101. package/lib/ai-assistant/AbstractAiModelService.d.ts +5 -8
  102. package/lib/ai-assistant/AbstractAiModelService.js +3 -14
  103. package/lib/ai-assistant/AiAssistantHandler.d.ts +2 -2
  104. package/lib/app-manager/AdminizerApp.d.ts +228 -0
  105. package/lib/app-manager/AdminizerApp.js +17 -0
  106. package/lib/app-manager/AppManager.d.ts +18 -0
  107. package/lib/app-manager/AppManager.js +537 -0
  108. package/lib/app-manager/AssetHandler.d.ts +17 -0
  109. package/lib/app-manager/AssetHandler.js +67 -0
  110. package/lib/app-manager/ConfigLayerHandler.d.ts +18 -0
  111. package/lib/app-manager/ConfigLayerHandler.js +119 -0
  112. package/lib/app-manager/ControllerHandler.d.ts +25 -0
  113. package/lib/app-manager/ControllerHandler.js +140 -0
  114. package/lib/catalog/AbstractCatalog.d.ts +28 -19
  115. package/lib/catalog/AbstractCatalog.js +41 -10
  116. package/lib/catalog/CatalogHandler.d.ts +13 -0
  117. package/lib/catalog/CatalogHandler.js +48 -2
  118. package/lib/catalog/CatalogTemplateComponentHandler.d.ts +23 -0
  119. package/lib/catalog/CatalogTemplateComponentHandler.js +59 -0
  120. package/lib/controls/Control.d.ts +17 -0
  121. package/lib/controls/Control.js +1 -0
  122. package/lib/controls/ControlsHandler.d.ts +5 -6
  123. package/lib/controls/ControlsHandler.js +0 -13
  124. package/lib/controls/codeEditor/MonacoEditor.d.ts +3 -4
  125. package/lib/controls/codeEditor/MonacoEditor.js +13 -8
  126. package/lib/controls/geojsoneditor/GeoEditor.d.ts +3 -4
  127. package/lib/controls/geojsoneditor/GeoEditor.js +14 -9
  128. package/lib/controls/jsoneditor/JsonEditor.d.ts +5 -6
  129. package/lib/controls/jsoneditor/JsonEditor.js +14 -13
  130. package/lib/controls/markdown/ToastUiEditor.d.ts +5 -6
  131. package/lib/controls/markdown/ToastUiEditor.js +14 -13
  132. package/lib/controls/table/Handsontable.d.ts +5 -6
  133. package/lib/controls/table/Handsontable.js +14 -13
  134. package/lib/controls/wysiwyg/CKeditor.d.ts +5 -6
  135. package/lib/controls/wysiwyg/CKeditor.js +14 -13
  136. package/lib/filters/ConditionValidator.d.ts +1 -1
  137. package/lib/filters/FilterService.d.ts +18 -18
  138. package/lib/filters/FilterService.js +11 -11
  139. package/lib/history-actions/AbstractHistoryAdapter.d.ts +14 -14
  140. package/lib/history-actions/AbstractHistoryAdapter.js +5 -6
  141. package/lib/history-actions/DefaultHistoryAdapter.d.ts +7 -7
  142. package/lib/history-actions/DefaultHistoryAdapter.js +2 -2
  143. package/lib/list-query-builder/ListQueryBuilder.d.ts +1 -1
  144. package/lib/media-manager/AbstractMediaManager.d.ts +14 -3
  145. package/lib/media-manager/AbstractMediaManager.js +16 -5
  146. package/lib/media-manager/MediaManagerHandler.d.ts +3 -0
  147. package/lib/media-manager/MediaManagerHandler.js +30 -5
  148. package/lib/media-manager/Thumb.js +7 -13
  149. package/lib/media-manager/helpers/MediaManagerHelper.d.ts +6 -4
  150. package/lib/media-manager/helpers/MediaManagerHelper.js +18 -18
  151. package/lib/model/AbstractModel.d.ts +9 -5
  152. package/lib/model/AbstractModel.js +9 -13
  153. package/lib/model/InternalModelAccessFactory.js +9 -10
  154. package/lib/model/ModelHandler.d.ts +45 -7
  155. package/lib/model/ModelHandler.js +168 -11
  156. package/lib/model/adapter/sequelize.d.ts +2 -4
  157. package/lib/model/adapter/sequelize.js +16 -193
  158. package/lib/model/adapter/typeorm.d.ts +2 -4
  159. package/lib/model/adapter/typeorm.js +2 -35
  160. package/lib/notifications/AbstractNotificationService.d.ts +9 -9
  161. package/lib/notifications/AbstractNotificationService.js +8 -8
  162. package/lib/notifications/GeneralNotificationService.js +1 -1
  163. package/lib/notifications/SystemNotificationService.js +1 -1
  164. package/lib/ui-i18n/uiTranslationKeys.d.ts +1 -1
  165. package/lib/ui-i18n/uiTranslationKeys.js +1 -0
  166. package/lib/widgets/abstractCustom.d.ts +5 -2
  167. package/lib/widgets/abstractCustom.js +4 -0
  168. package/lib/widgets/widgetHandler.d.ts +5 -2
  169. package/lib/widgets/widgetHandler.js +60 -14
  170. package/models/{FilterAP.d.ts → Filter.d.ts} +4 -70
  171. package/models/Filter.js +1 -0
  172. package/models/FilterColumn.d.ts +10 -0
  173. package/models/FilterColumn.js +1 -0
  174. package/models/Group.d.ts +8 -0
  175. package/models/Group.js +1 -0
  176. package/models/HistoryActions.d.ts +14 -0
  177. package/models/HistoryActions.js +1 -0
  178. package/models/MediaManagerAP.d.ts +2 -54
  179. package/models/MediaManagerAP.js +1 -51
  180. package/models/MediaManagerAssociationsAP.d.ts +1 -35
  181. package/models/MediaManagerAssociationsAP.js +1 -33
  182. package/models/MediaManagerMetaAP.d.ts +2 -30
  183. package/models/MediaManagerMetaAP.js +1 -27
  184. package/models/Notification.d.ts +13 -0
  185. package/models/Notification.js +1 -0
  186. package/models/User.d.ts +23 -0
  187. package/models/User.js +1 -0
  188. package/models/UserNotification.d.ts +7 -0
  189. package/models/UserNotification.js +1 -0
  190. package/package.json +25 -30
  191. package/services/FeedService.d.ts +5 -5
  192. package/services/FeedService.js +1 -1
  193. package/system/Router.js +2 -10
  194. package/system/bindAccessRights.js +1 -1
  195. package/system/bindAuthorization.js +2 -2
  196. package/system/bindControls.js +7 -6
  197. package/system/bindDashboardWidgets.js +3 -2
  198. package/system/bindDev.js +1 -1
  199. package/system/bindHistory.d.ts +1 -1
  200. package/system/bindHistory.js +1 -1
  201. package/system/bindInertia.js +0 -6
  202. package/system/bindMediaManager.js +4 -17
  203. package/system/bindNotifications.d.ts +1 -1
  204. package/system/bindNotifications.js +1 -1
  205. package/system/bindReqFunctions.d.ts +1 -0
  206. package/system/bindReqFunctions.js +20 -3
  207. package/system/buildInternalModelAccess.js +2 -15
  208. package/system/defaults.js +5 -10
  209. package/system/systemModelContracts.d.ts +22 -0
  210. package/system/systemModelContracts.js +155 -0
  211. package/system/validateSystemModels.d.ts +2 -0
  212. package/system/validateSystemModels.js +101 -0
  213. package/translations/ar.json +2 -1
  214. package/translations/cn.json +2 -1
  215. package/translations/de.json +2 -1
  216. package/translations/en.json +1 -0
  217. package/translations/es.json +2 -1
  218. package/translations/fr.json +2 -1
  219. package/translations/hi.json +2 -1
  220. package/translations/jp.json +2 -1
  221. package/translations/ko.json +2 -1
  222. package/translations/pt.json +2 -1
  223. package/translations/ru.json +2 -1
  224. package/translations/ua.json +2 -1
  225. package/translations/uz.json +2 -1
  226. package/translations/vi.json +2 -1
  227. package/assets/RelationDialogStack-DhThUMep.js +0 -20
  228. package/assets/add-group-L8lMigab.js +0 -1
  229. package/assets/add-group-form-o7F6t6qW.js +0 -1
  230. package/assets/add-user-BE4-TNJw.js +0 -1
  231. package/assets/add-user-form-BP_8TjxN.js +0 -1
  232. package/assets/add-w398ZkhF.js +0 -1
  233. package/assets/app-C7J5ccrI.css +0 -1
  234. package/assets/app-layout-Bg455MIY.js +0 -1
  235. package/assets/app-shell-BT2kF0We.js +0 -1
  236. package/assets/app-sidebar-CZfPUXck.js +0 -1
  237. package/assets/app-sidebar-header-UVcKhNm6.js +0 -1
  238. package/assets/breadcrumbs-CrqIBT84.js +0 -1
  239. package/assets/catalog-btkCCwiv.js +0 -6
  240. package/assets/dashboard-Bvasc1cr.js +0 -3
  241. package/assets/date-picker-kxQWOxHk.js +0 -1
  242. package/assets/del-modal-C39LR5aQ.js +0 -1
  243. package/assets/dynamic-controls-DyPP5sTC.js +0 -1
  244. package/assets/geo-json-CGNQFl6J.js +0 -1
  245. package/assets/handsontable-Dv59QFH5.js +0 -336
  246. package/assets/history-DwKR8MPu.js +0 -1
  247. package/assets/home-BrtAkCRj.js +0 -2
  248. package/assets/icon-DpUVVHmK.js +0 -1
  249. package/assets/init-user-8PiKR1zX.js +0 -1
  250. package/assets/input-error-Cbt-Y3Fj.js +0 -1
  251. package/assets/jsoneditor-CiPXPMho.js +0 -3869
  252. package/assets/list-DGsL_qii.js +0 -4
  253. package/assets/login-Br_FcBU_.js +0 -1
  254. package/assets/material-icon-DOkM71fv.js +0 -1
  255. package/assets/module-EgfgIEhF.js +0 -1
  256. package/assets/monaco-ompgKQ3_.js +0 -11
  257. package/assets/nav-footer-DzLwfBAE.js +0 -1
  258. package/assets/nav-main-CSEbjYgs.js +0 -1
  259. package/assets/nav-user-DJ0hfhfH.js +0 -1
  260. package/assets/notification-B19ZLro7.js +0 -20
  261. package/assets/pagination-render-8GvJxq55.js +0 -1
  262. package/assets/register-CZzIeT2G.js +0 -1
  263. package/assets/ru-1NdRIQNV.js +0 -1
  264. package/assets/theme-switcher-CBbEj1u-.js +0 -1
  265. package/assets/toast-editor-DwVqd1rz.js +0 -668
  266. package/assets/user-filters-list-7Im79QyS.js +0 -1
  267. package/assets/user-info-YiU17Mmy.js +0 -1
  268. package/assets/user-menu-content-gdpNF5-8.js +0 -1
  269. package/assets/vanilla-picker-B3LgXoKV.js +0 -2
  270. package/assets/vendor-l0sNRNKZ.js +0 -1
  271. package/assets/welcome-nT0eFWHb.js +0 -1
  272. package/controllers/navigation/edit.d.ts +0 -1
  273. package/controllers/navigation/edit.js +0 -8
  274. package/lib/ai-assistant/DummyAiModelService.d.ts +0 -8
  275. package/lib/ai-assistant/DummyAiModelService.js +0 -14
  276. package/lib/ai-assistant/OpenAiModelService.d.ts +0 -24
  277. package/lib/ai-assistant/OpenAiModelService.js +0 -184
  278. package/lib/catalog/Navigation.d.ts +0 -49
  279. package/lib/catalog/Navigation.js +0 -492
  280. package/lib/controls/AbstractControls.d.ts +0 -30
  281. package/lib/controls/AbstractControls.js +0 -14
  282. package/lib/media-manager/DefaultMediaManager.d.ts +0 -20
  283. package/lib/media-manager/DefaultMediaManager.js +0 -127
  284. package/lib/media-manager/Items.d.ts +0 -50
  285. package/lib/media-manager/Items.js +0 -296
  286. package/models/FilterAP.js +0 -68
  287. package/models/FilterColumnAP.d.ts +0 -32
  288. package/models/FilterColumnAP.js +0 -21
  289. package/models/GroupAP.d.ts +0 -31
  290. package/models/GroupAP.js +0 -22
  291. package/models/HistoryActionsAP.d.ts +0 -56
  292. package/models/HistoryActionsAP.js +0 -42
  293. package/models/NavigationAP.d.ts +0 -22
  294. package/models/NavigationAP.js +0 -16
  295. package/models/NotificationAP.d.ts +0 -44
  296. package/models/NotificationAP.js +0 -30
  297. package/models/UserAP.d.ts +0 -81
  298. package/models/UserAP.js +0 -57
  299. package/models/UserNotificationAP.d.ts +0 -26
  300. package/models/UserNotificationAP.js +0 -18
  301. package/system/bindAiAssistant.d.ts +0 -2
  302. package/system/bindAiAssistant.js +0 -30
  303. package/system/bindModels.d.ts +0 -2
  304. package/system/bindModels.js +0 -48
  305. package/system/bindNavigation.d.ts +0 -2
  306. package/system/bindNavigation.js +0 -38
  307. /package/assets/{RelationDialogStack-B00Ot5qS.css → controls/ckeditor.css} +0 -0
@@ -1 +0,0 @@
1
- import{u as E,j as e,ah as I,b3 as P,b4 as L,B as y,aC as R,S as C,c as T,d as z,e as D,f as M,b5 as b,aR as k,L as O}from"./app.js";import B from"./app-shell-BT2kF0We.js";import{AppSidebar as K}from"./app-sidebar-CZfPUXck.js";import{A as V,a as N,N as _,b as F}from"./app-sidebar-header-UVcKhNm6.js";import{r as l}from"./handsontable-Dv59QFH5.js";import{R as H}from"./RelationDialogStack-DhThUMep.js";const $=l.memo(({children:o,breadcrumbs:a=[],className:i})=>{const r=E();return e.jsxs(B,{variant:"sidebar",children:[e.jsx(I,{title:r.props.title}),e.jsx(K,{}),e.jsxs(P,{className:i,children:[e.jsx(V,{breadcrumbs:a}),e.jsx("div",{className:"relative flex min-h-0 flex-1 overflow-auto",children:e.jsx("div",{className:"flex h-full min-h-0 w-full flex-col",children:o})})]})]})});function q({width:o="min(25vw, 420px)"}){const{isEnabled:a,isOpen:i,closeChat:r,models:s,activeModel:n,setActiveModel:d,messages:c,loading:m,sending:x,error:g,sendMessage:v}=N(),[p,h]=l.useState(""),j=l.useRef(null);l.useEffect(()=>{i||h("")},[i]),l.useEffect(()=>{j.current&&j.current.scrollIntoView({behavior:"smooth"})},[c]);const u=s.length>0,A=async t=>{t.preventDefault();const f=p.trim();f&&(await v(f),h(""))},S=t=>{if((t.ctrlKey||t.metaKey)&&t.key==="Enter"){t.preventDefault();const f=p.trim();f&&!x&&(v(f),h(""))}};return a?e.jsxs("aside",{id:"ai-assistant-panel","aria-label":"AI assistant chat","aria-hidden":!i,className:b("bg-card text-card-foreground fixed bottom-0 right-0 top-0 z-[60] flex h-full flex-col border-l shadow-xl transition-all duration-300 ease-in-out","md:w-auto w-full",i?"translate-x-0 opacity-100":"translate-x-full opacity-0 pointer-events-none"),style:{width:"var(--ai-assistant-panel-actual-width, "+o+")"},children:[e.jsxs("div",{className:"flex items-center justify-between border-b px-4 py-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(L,{className:"size-5 text-primary"}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"font-semibold leading-tight",children:"AI assistant"}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"Chat with your selected model."})]})]}),e.jsx(y,{variant:"ghost",size:"icon",onClick:r,"aria-label":"Close AI assistant",children:e.jsx(R,{className:"size-4"})})]}),e.jsxs("div",{className:"flex flex-1 flex-col gap-4 overflow-hidden px-4 py-4",children:[!u&&!m&&e.jsx("div",{className:"flex flex-1 items-center justify-center rounded-md border border-dashed p-6 text-sm text-muted-foreground",children:"No AI models are available for your account."}),u&&e.jsxs(e.Fragment,{children:[e.jsxs(C,{value:n,onValueChange:d,children:[e.jsx(T,{className:"w-full",children:e.jsx(z,{placeholder:"Select a model"})}),e.jsx(D,{className:"z-[70]",children:s.map(t=>e.jsx(M,{value:t.id,children:e.jsxs("div",{className:"flex flex-col text-left",children:[e.jsx("span",{className:"font-medium",children:t.name}),t.description&&e.jsx("span",{className:"text-xs text-muted-foreground",children:t.description})]})},t.id))})]}),e.jsxs("div",{className:"flex flex-1 flex-col gap-3 overflow-hidden rounded-md border bg-background p-4",children:[e.jsxs("div",{className:"flex-1 space-y-3 overflow-y-auto pr-2","data-ai-assistant-messages":!0,children:[m&&e.jsx("div",{className:"flex justify-center py-6 text-sm text-muted-foreground",children:"Loading conversation..."}),!m&&c.length===0&&e.jsx("div",{className:"flex h-full items-center justify-center text-sm text-muted-foreground",children:"Start a conversation to see responses here."}),c.map(t=>e.jsxs("div",{className:b("flex flex-col gap-1 rounded-md border p-3 text-sm shadow-xs",t.role==="assistant"?"border-primary/30 bg-primary/5":"border-border bg-background"),children:[e.jsx("span",{className:"font-semibold",children:t.role==="assistant"?"Assistant":"You"}),e.jsx("p",{className:"whitespace-pre-wrap leading-relaxed",children:t.content}),e.jsx("span",{className:"text-xs text-muted-foreground",children:new Date(t.timestamp).toLocaleTimeString()})]},t.id)),e.jsx("div",{ref:j})]}),e.jsxs("form",{className:"space-y-2",onSubmit:A,children:[e.jsx(k,{placeholder:u?"Type your question... (Ctrl+Enter to send)":"No models available",value:p,onChange:t=>h(t.target.value),onKeyDown:S,disabled:!u||x,rows:3}),e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[g&&e.jsx("span",{className:"text-xs text-destructive",children:g}),e.jsx(y,{type:"submit",disabled:!u||x||!p.trim(),children:x?e.jsxs("span",{className:"flex items-center gap-2",children:[e.jsx(O,{className:"size-4 animate-spin"}),"Sending…"]}):"Send"})]})]})]})]})]})]}):null}const G="min(25vw, 420px)",w="margin-right 300ms ease-in-out";function U({children:o,panelWidth:a=G}){const{isEnabled:i,isOpen:r}=N();return l.useEffect(()=>{const s=document.getElementById("app");if(!s)return;const n=s.style.transition,d=n?.includes("margin-right");return d||(s.style.transition=n?`${n}, ${w}`:w),s.classList.add("ai-assistant-host"),s.style.setProperty("--ai-assistant-panel-width",a),()=>{s.classList.remove("ai-assistant-host"),s.style.removeProperty("--ai-assistant-panel-width"),s.style.removeProperty("--ai-assistant-panel-actual-width"),s.style.removeProperty("margin-right"),delete s.dataset.aiAssistantOpen,d||(s.style.transition=n)}},[a]),l.useEffect(()=>{const s=document.getElementById("app");if(!s)return;const n=window.innerWidth<768,d=n?"100vw":a;s.style.setProperty("--ai-assistant-panel-actual-width",d),i&&r?(s.style.marginRight=n?"0":a,s.dataset.aiAssistantOpen="true"):(s.style.removeProperty("margin-right"),s.dataset.aiAssistantOpen="false");const c=()=>{const m=window.innerWidth<768,x=m?"100vw":a;s.style.setProperty("--ai-assistant-panel-actual-width",x),i&&r&&(s.style.marginRight=m?"0":a)};return window.addEventListener("resize",c),()=>window.removeEventListener("resize",c)},[i,r,a]),e.jsxs(e.Fragment,{children:[o,e.jsx(q,{width:a})]})}const ee=l.memo(({children:o,className:a,breadcrumbs:i,...r})=>e.jsx(_,{children:e.jsx(F,{children:e.jsxs(H,{children:[e.jsx($,{breadcrumbs:i,className:a,...r,children:o}),e.jsx(U,{})]})})}));export{ee as A};
@@ -1 +0,0 @@
1
- import{j as a,bh as d}from"./app.js";import{r as o}from"./handsontable-Dv59QFH5.js";import"./jsoneditor-CiPXPMho.js";import"./monaco-ompgKQ3_.js";const u=o.memo(({children:e,variant:s="header"})=>{const[t,n]=o.useState(()=>typeof window<"u"?localStorage.getItem("sidebar")!=="false":!0),i=r=>{n(r),typeof window<"u"&&localStorage.setItem("sidebar",String(r))};return s==="header"?a.jsx("div",{className:"flex min-h-screen w-full flex-col",children:e}):a.jsx(d,{defaultOpen:t,open:t,onOpenChange:i,children:e})});export{u as default};
@@ -1 +0,0 @@
1
- import{u as A,m as q,j as e,D as G,V as Q,bu as V,i as X,k as Z,l as U,bv as W,aJ as Y,W as I,b as y,I as ee,aR as se,B as D,bw as ae,aC as re,aQ as te,L as ne,h as le,bx as ie,by as ce,bz as C,bA as M,bB as oe,bC as de,bD as xe,bE as F,bF as pe,bG as he,bH as me,bI as ue,bJ as je,bK as T,ai as N,bL as be,bM as _,bN as E,C as z,bO as L,bP as P,bQ as B,bR as O,bS as fe,bT as ge}from"./app.js";import{NavMain as Ne}from"./nav-main-CSEbjYgs.js";import{r as i,c as ve}from"./handsontable-Dv59QFH5.js";import c from"./material-icon-DOkM71fv.js";import"./jsoneditor-CiPXPMho.js";import"./monaco-ompgKQ3_.js";const ke=5*1024*1024,ye=(t,s)=>{const a=t?.response?.data;if(!a)return s;if(typeof a=="string")try{const r=JSON.parse(a);return r.error??r.message??s}catch{return a||s}if(typeof a=="object"){const r=a;return r.error??r.message??s}return s},R=i.memo(({routePrefix:t,triggerLabel:s,placeholder:a,t:r,onClose:p})=>{const[x,b]=i.useState(""),[f,v]=i.useState(""),[j,g]=i.useState([]),[d,u]=i.useState({}),[h,S]=i.useState(!1),[k,$]=i.useState(!1),w=i.useRef(null),H=n=>{if(!n)return;const l={},m=[];Array.from(n).forEach(o=>{o.size>ke?l[o.name]=r("File size exceeds the 5 MB limit"):m.push(o)}),g(o=>[...o,...m]),Object.keys(l).length&&u(o=>({...o,...l}))},J=n=>g(l=>l.filter((m,o)=>o!==n)),K=async n=>{if(n.preventDefault(),!x.trim()){u({title:r("Title is required")});return}S(!0),u({});const l=new FormData;l.append("title",x.trim()),l.append("description",f.trim()),j.forEach(m=>l.append("files",m));try{await le.post(`${t}/api/feedback`,l),$(!0)}catch(m){const o=ye(m,r("Internal server error"));u({_global:o}),S(!1)}};return i.useEffect(()=>{if(!k)return;const n=setTimeout(p,2e3);return()=>clearTimeout(n)},[k,p]),k?e.jsxs("div",{className:"flex flex-col items-center justify-center gap-4 py-24 text-center",children:[e.jsx(W,{size:48,className:"text-green-500 dark:text-green-400"}),e.jsx("p",{className:"text-base font-medium",children:r("Feedback sent successfully")})]}):e.jsxs(e.Fragment,{children:[e.jsxs(Y,{className:"mb-4",children:[e.jsx(I,{children:s??r("Feedback")}),a&&e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:a})]}),e.jsxs("form",{onSubmit:K,className:"space-y-5",noValidate:!0,children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(y,{htmlFor:"fb-title",children:r("Title")}),e.jsx(ee,{id:"fb-title",value:x,onChange:n=>b(n.target.value),disabled:h,placeholder:r("Title"),className:d.title?"border-destructive":""}),d.title&&e.jsx("p",{className:"text-xs text-destructive",children:d.title})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(y,{htmlFor:"fb-desc",children:r("Description")}),e.jsx(se,{id:"fb-desc",value:f,onChange:n=>v(n.target.value),disabled:h,placeholder:r("Description"),rows:5,className:"resize-none"})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(y,{children:r("Attach files")}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(D,{type:"button",variant:"outline",size:"sm",onClick:()=>w.current?.click(),disabled:h,children:[e.jsx(ae,{size:14,className:"mr-1"}),r("Attach files")]}),e.jsx("span",{className:"text-xs text-muted-foreground",children:r("Max 5 MB per file")})]}),e.jsx("input",{ref:w,type:"file",multiple:!0,className:"hidden",onChange:n=>H(n.target.files),disabled:h}),j.length>0&&e.jsx("ul",{className:"mt-2 space-y-1",children:j.map((n,l)=>e.jsxs("li",{className:"flex items-center justify-between rounded-md border bg-muted/40 px-3 py-1.5 text-xs",children:[e.jsx("span",{className:"truncate max-w-[340px]",children:n.name}),e.jsx("button",{type:"button",onClick:()=>J(l),className:"ml-2 text-muted-foreground hover:text-destructive transition-colors","aria-label":r("Remove file"),disabled:h,children:e.jsx(re,{size:13})})]},l))}),Object.entries(d).filter(([n])=>n!=="title"&&n!=="_global").map(([n,l])=>e.jsx("p",{className:"text-xs text-destructive",children:l},n))]}),d._global&&e.jsx("p",{className:"text-xs text-destructive",children:d._global}),e.jsx(te,{children:e.jsx(D,{type:"submit",disabled:h,children:h?e.jsxs(e.Fragment,{children:[e.jsx(ne,{size:14,className:"mr-1.5 animate-spin"}),r("Sending...")]}):r("Send")})})]})]})});R.displayName="FeedbackForm";function Ce(){const t=A(),{t:s}=q(),a=t.props.routePrefix??window.routePrefix??"",r=t.props.feedbackTriggerLabel??null,p=t.props.feedbackPlaceholder??null,[x,b]=i.useState(!1),[f,v]=i.useState(0),j=i.useCallback(()=>b(!1),[]),g=i.useCallback(d=>{b(d),d||v(u=>u+1)},[]);return e.jsxs(G,{open:x,onOpenChange:g,children:[e.jsx(Q,{asChild:!0,children:e.jsxs("button",{className:"flex items-center gap-1.5 text-xs opacity-60 hover:opacity-100 transition-opacity cursor-pointer mt-1 mx-auto","aria-label":r??s("Send feedback"),children:[e.jsx(V,{size:13}),r??s("Send feedback")]})}),ve.createPortal(e.jsx(X,{}),document.body),e.jsx(Z,{children:e.jsx(U,{children:e.jsx(R,{routePrefix:a,triggerLabel:r,placeholder:p,t:s,onClose:j},f)})})]})}function _e(){const t=A();return e.jsxs(ie,{collapsible:"icon",variant:"inset",children:[e.jsx(ce,{children:e.jsx(C,{children:e.jsxs(M,{children:[e.jsx(oe,{className:"p-0 shadow-none border-none bg-transparent hidden md:block",children:e.jsxs(de,{children:[e.jsx(xe,{asChild:!0,className:"text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground rounded-md",children:e.jsx(F,{asChild:!0,children:e.jsx(D,{variant:"ghost",asChild:!0,className:`w-full ${t.props.section?"":"pointer-events-none"}`,children:e.jsxs("div",{children:[e.jsx(c,{name:"rocket_launch",className:"!text-[18px]"}),e.jsx("span",{className:"group-data-[state=collapsed]:hidden",children:t.props.brand}),t.props.section&&e.jsx(pe,{className:"ml-auto group-data-[state=collapsed]:hidden"})]})})})}),t.props.section&&e.jsx(he,{side:"right",className:"z-[1003]",children:t.props.section.map(s=>e.jsx("div",{children:s.subItems?e.jsxs(me,{children:[e.jsxs(ue,{className:"flex gap-2 items-center cursor-pointer",children:[e.jsx(c,{name:s.icon,className:"!text-[18px]"}),e.jsx("span",{className:"hover:underline",children:s.title})]}),e.jsx(je,{children:s.subItems.map(a=>e.jsx(T,{children:a.type==="blank"?e.jsxs("a",{href:a.link,target:"_blank",className:"flex gap-2 items-center",children:[a.icon&&e.jsx(c,{name:a.icon,className:"!text-[18px]"}),e.jsx("span",{className:"hover:underline",children:a.title})]},a.id):e.jsxs(N,{href:a.link,className:"flex gap-2 items-center",children:[a.icon&&e.jsx(c,{name:a.icon,className:"!text-[18px]"}),e.jsx("span",{className:"hover:underline",children:a.title})]},a.id)},a.id))})]}):e.jsx(T,{children:s.type==="blank"?e.jsxs("a",{href:s.link,target:"_blank",className:"flex gap-2 items-center",children:[s.icon&&e.jsx(c,{name:s.icon,className:"!text-[18px]"}),e.jsx("span",{className:"hover:underline",children:s.title})]}):e.jsxs(N,{href:s.link,className:"flex gap-2 items-center",children:[s.icon&&e.jsx(c,{name:s.icon,className:"!text-[18px]"}),e.jsx("span",{className:"hover:underline",children:s.title})]})})},s.id))})]})}),e.jsx(be,{className:"px-2 py-0 block md:hidden",children:e.jsx(C,{children:e.jsx(_,{asChild:!0,className:"group/collapsible",children:e.jsxs(M,{children:[e.jsx(E,{asChild:!0,children:e.jsxs(F,{children:[e.jsx(c,{name:"rocket_launch",className:"!text-[18px]"}),e.jsx("span",{className:"overflow-hidden text-ellipsis whitespace-nowrap",children:t.props.brand}),t.props.section&&e.jsx(z,{className:"ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90"})]})}),t.props.section&&e.jsx(L,{children:e.jsx(P,{children:t.props.section&&t.props.section.map(s=>s.subItems?e.jsx(C,{children:e.jsx(_,{asChild:!0,className:"group/collapsible-sub",children:e.jsxs(M,{children:[e.jsx(E,{asChild:!0,children:e.jsxs(F,{children:[e.jsx(c,{name:s.icon,className:"!text-[18px]"}),e.jsx("span",{className:"overflow-hidden text-ellipsis whitespace-nowrap",children:s.title}),e.jsx(z,{className:"ml-auto transition-transform duration-200 group-data-[state=open]/collapsible-sub:rotate-90"})]})}),e.jsx(L,{children:e.jsx(P,{children:s.subItems.map(a=>e.jsx(B,{children:e.jsx(O,{asChild:!0,children:a.type==="blank"?e.jsxs("a",{href:a.link,target:"_blank",className:"flex gap-2 items-center",children:[a.icon&&e.jsx(c,{name:a.icon,className:"!text-[18px]"}),e.jsx("span",{className:"hover:underline",children:a.title})]}):e.jsxs(N,{href:a.link,className:"flex gap-2 items-center",children:[a.icon&&e.jsx(c,{name:a.icon,className:"!text-[18px]"}),e.jsx("span",{className:"hover:underline",children:a.title})]})})},a.id))})})]})})},s.id):e.jsx(B,{children:e.jsx(O,{asChild:!0,children:s.type==="blank"?e.jsxs("a",{href:s.link,target:"_blank",className:"flex gap-2 items-center",children:[s.icon&&e.jsx(c,{name:s.icon,className:"!text-[18px]"}),e.jsx("span",{className:"hover:underline",children:s.title})]}):e.jsxs(N,{href:s.link,className:"flex gap-2 items-center",children:[s.icon&&e.jsx(c,{name:s.icon,className:"!text-[18px]"}),e.jsx("span",{className:"hover:underline",children:s.title})]})})},s.id))})})]})})})})]},t.props.brand)})}),e.jsx(fe,{children:e.jsx(Ne,{items:t.props.menu})}),e.jsx(ge,{children:e.jsxs("div",{className:"flex flex-col items-center",children:[t.props.version&&(()=>{const s=t.props.version,a=s.text||"4.7.0",r=new Date("2026-07-10T05:50:27.351Z").toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"}),p=s.text?`v.${a}`:`v.${a} · ${r}`,x="text-center opacity-70 hover:opacity-100 transition-opacity text-xs";return s.link?e.jsx("a",{href:s.link,target:"_blank",rel:"noreferrer",title:s.hint??void 0,className:x,children:p}):e.jsx("span",{title:s.hint??void 0,className:x,children:p})})(),t.props.showFeedback&&e.jsx(Ce,{})]})})]})}export{_e as AppSidebar};
@@ -1 +0,0 @@
1
- import{u as z,m as V,j as e,h as y,am as q,v as G,B as P,bi as Q,x as Y,y as K,aV as W,O as R,Q as J,E as X,R as L,r as Z,ap as ee,ai as B,L as O,b4 as te,b5 as se,bj as ae,bk as ie}from"./app.js";import{Breadcrumbs as re}from"./breadcrumbs-CrqIBT84.js";import{NavUser as ne}from"./nav-user-DJ0hfhfH.js";import{ThemeSwitcher as oe}from"./theme-switcher-CBbEj1u-.js";import{r as a,R as ce}from"./handsontable-Dv59QFH5.js";import le from"./material-icon-DOkM71fv.js";const F=a.createContext(void 0),be=({children:d})=>{const[g,f]=a.useState([]),[v,u]=a.useState([]),[h,m]=a.useState([]),[k,c]=a.useState(!1),[n,p]=a.useState(null),[w,C]=a.useState(""),j=z(),{t:r}=V(),b=ce.useMemo(()=>({"Make read":r("Make read"),"View All":r("View All"),Search:r("Search"),"Make all read":r("Make all read"),Title:r("Title"),Message:r("Message"),Date:r("Date"),Diff:r("Diff"),"No notifications":r("No notifications"),"No notifications found":r("No notifications found"),"The end of the list has been reached":r("The end of the list has been reached")}),[r]),N=[...v,...h],x=async()=>{try{const t=await y.getJson(`${window.routePrefix}/notifications/api`,{params:{unreadOnly:!0,limit:4}});f(t.data)}catch(t){console.error("Error fetching bell notifications:",t)}},l=async()=>{await x()},A=async()=>{try{const t=await y.getJson(`${window.routePrefix}/notifications/api/get-classes`);t.data&&(p(t.data.activeServices),C(t.data.initTab))}catch(t){console.error("Error fetching tabs:",t)}},M=async(t,o)=>{try{if(!t){await E(o);return}const s=await y.postJson(`${window.routePrefix}/notifications/api/search`,{s:t,notificationClass:o});m(s.data)}catch(s){console.error("Error searching notifications:",s)}},E=async t=>{c(!0);try{const o=`${window.routePrefix}/notifications/api/${t}`,s=await y.getJson(o,{params:{limit:20,skip:0,unreadOnly:!1}});return u([]),m(s.data),s.data}catch(o){return console.error("Error fetching all notifications:",o),[]}finally{c(!1)}},$=async(t,o)=>{try{const s=`${window.routePrefix}/notifications/api/${t}`,i=await y.getJson(s,{params:{limit:20,skip:o,unreadOnly:!1}});return m(_=>[..._,...i.data]),i.data}catch(s){return console.error("Error paginating notifications:",s),[]}};a.useEffect(()=>{if(!j.props.notifications)return;x();const t=new EventSource(`${window.routePrefix}/notifications/api/stream`);return t.addEventListener("connected",o=>{A()}),t.addEventListener("notification",o=>{const s=JSON.parse(o.data);u(i=>[s,...i]),f(i=>[s,...i].slice(0,4))}),t.onerror=()=>{console.error("SSE connection error")},()=>t.close()},[]);const I=async(t,o)=>{try{await y.putJson(`${window.routePrefix}/notifications/api/${t}/${o}/read`,{}),u(s=>s.map(i=>i.id===o?{...i,read:!0}:i)),m(s=>s.map(i=>i.id===o?{...i,read:!0}:i)),f([])}catch(s){console.error("Error marking as read:",s)}},T=async()=>{try{await y.putJson(`${window.routePrefix}/notifications/api/read-all`,{}),u(t=>t.map(o=>({...o,read:!0}))),m(t=>t.map(o=>({...o,read:!0}))),await x()}catch(t){console.error("Error marking all as read:",t)}},D=g.filter(t=>!t.read).length;return e.jsx(F.Provider,{value:{bellNotifications:g,allNotifications:N,unreadCount:D,getTabs:A,tabs:n,initTab:w,search:M,markAsRead:I,markAllAsRead:T,messages:b,fetchAllNotifications:E,paginateNotifications:$,loading:k,refreshBellNotifications:l},children:d})},H=()=>{const d=a.useContext(F);if(d===void 0)throw new Error("useNotifications must be used within a NotificationProvider");return d};function de(){const{bellNotifications:d,markAsRead:g,unreadCount:f,refreshBellNotifications:v,messages:u}=H(),[h,m]=a.useState(!1),k=async(n,p)=>{m(!0);try{await g(n,p),await v()}catch(w){console.error("Error marking as read:",w)}finally{m(!1)}},c=n=>{const p=new Date,w=new Date(n),C=p.getTime()-w.getTime(),j=Math.floor(C/1e3),r=new Intl.RelativeTimeFormat("en",{numeric:"auto"});if(j<60)return r.format(-j,"second");const b=Math.floor(j/60);if(b<60)return r.format(-b,"minute");const N=Math.floor(b/60);if(N<24)return r.format(-N,"hour");const x=Math.floor(N/24);if(x<30)return r.format(-x,"day");const l=Math.floor(x/30);if(l<12)return r.format(-l,"month");const A=Math.floor(l/12);return r.format(-A,"year")};return e.jsxs(q,{children:[e.jsx(G,{asChild:!0,className:"cursor-pointer data-[state=open]:bg-sidebar-accent",children:e.jsxs(P,{variant:"ghost",className:"relative",children:[e.jsx(Q,{}),f>0&&e.jsx("div",{className:"absolute top-1.5 right-1.5 size-1.5 rounded-full bg-destructive"})]})}),e.jsxs(Y,{className:"z-[1002] p-2",align:"end",onCloseAutoFocus:n=>n.preventDefault(),children:[e.jsx(K,{className:`${h?"opacity-50 pointer-events-none":""}`,children:d.length===0?e.jsx("div",{className:"p-4 text-center text-muted-foreground",children:u["No notifications"]}):d.map(n=>e.jsxs("div",{children:[e.jsx(W,{asChild:!0,className:"cursor-pointer",onSelect:p=>{p.preventDefault(),Z.visit(`${window.routePrefix}/notifications?type=${n.notificationClass}`)},children:e.jsxs("div",{className:"grid grid-cols-[32px_250px] grid-rows-[auto_1fr] items-start gap-x-4 gap-y-2",children:[n.icon?e.jsx(le,{name:n.icon.icon,style:{color:n.icon.iconColor},className:"!text-[32px]"}):e.jsx("div",{}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"font-medium",children:n.title}),e.jsx("span",{className:"truncate",children:n.message})]}),e.jsxs("div",{className:"col-start-2 flex justify-between flex-nowrap items-center",children:[e.jsx("div",{className:"flex flex-nowrap gap-2 items-center",children:e.jsx("div",{children:c(n.createdAt)})}),e.jsxs(R,{children:[e.jsx(J,{asChild:!0,children:e.jsx(P,{variant:"ghost",size:"icon",className:"size-4",onClick:p=>{p.stopPropagation(),k(n.notificationClass,n.id)},children:e.jsx(X,{className:"text-primary"})})}),e.jsx(L,{side:"left",className:"z-[1003]",children:e.jsx("p",{children:u["Make read"]})})]})]})]})}),e.jsx(ee,{})]},n.id))}),e.jsx(P,{variant:"secondary",asChild:!0,children:e.jsxs(B,{href:`${window.routePrefix}/notifications`,className:`w-full ${h?"opacity-50 pointer-events-none":""}`,children:[u["View All"],h&&e.jsx(O,{className:"h-4 w-4 animate-spin"})]})})]})]})}const fe=()=>{if(!(typeof window>"u"))return window.__adminizerAiAssistantState__??void 0},ue=d=>{typeof window>"u"||(window.__adminizerAiAssistantState__=d)},U=a.createContext(void 0),Ne=({children:d})=>{const f=z().props.aiAssistant,v=a.useMemo(()=>fe(),[]),[u,h]=a.useState(()=>v?.isOpen??!1),[m,k]=a.useState([]),[c,n]=a.useState(()=>v?.activeModel??f?.defaultModel??void 0),[p,w]=a.useState([]),[C,j]=a.useState(!1),[r,b]=a.useState(!1),[N,x]=a.useState(null),l=f?.enabled??!1,A=a.useCallback(async()=>{if(l)try{j(!0);const{data:s}=await y.getJson(`${window.routePrefix}/api/ai-assistant/models`);k(s),n(i=>i||(f?.defaultModel&&s.some(S=>S.id===f.defaultModel)?f.defaultModel:s[0]?.id))}catch(s){console.error("Failed to load AI assistant models",s),x("Unable to load AI assistant models")}finally{j(!1)}},[f?.defaultModel,l]),M=a.useCallback(async s=>{if(!(!l||!s))try{j(!0);const{data:i}=await y.getJson(`${window.routePrefix}/api/ai-assistant/history/${s}`);w(i.history??[])}catch(i){console.error("Failed to load AI assistant history",i),x("Unable to load AI assistant history")}finally{j(!1)}},[l]);a.useEffect(()=>{if(!l){w([]);return}A()},[A,l]),a.useEffect(()=>{!l||!c||M(c)},[c,M,l]);const E=a.useCallback(s=>{n(s)},[]),$=a.useCallback(()=>h(!0),[]),I=a.useCallback(()=>h(!1),[]),T=a.useCallback(()=>h(s=>!s),[]),D=a.useCallback(async s=>{if(!l||!c)return;const i=s.trim();if(!i)return;const _={id:`tmp-${Date.now()}`,role:"user",content:i,timestamp:new Date().toISOString(),modelId:c};w(S=>[...S,_]),b(!0),x(null);try{const{data:S}=await y.postJson(`${window.routePrefix}/api/ai-assistant/query`,{modelId:c,message:i});w(S.history??[])}catch(S){console.error("Failed to send AI assistant message",S),x("Unable to reach AI assistant"),await M(c)}finally{b(!1)}},[c,M,l]),t=a.useCallback(async()=>{c&&await M(c)},[c,M]);a.useEffect(()=>{l||h(!1)},[l]),a.useEffect(()=>{ue({isOpen:u,activeModel:c})},[c,u]);const o=a.useMemo(()=>({isEnabled:l,isOpen:u,openChat:$,closeChat:I,toggleChat:T,models:m,activeModel:c,setActiveModel:E,messages:p,loading:C,sending:r,error:N,sendMessage:D,refreshHistory:t}),[c,I,N,l,u,C,p,m,$,t,D,r,E,T]);return e.jsx(U.Provider,{value:o,children:d})},me=()=>{const d=a.useContext(U);if(!d)throw new Error("useAiAssistant must be used within an AiAssistantProvider");return d};function he(){const{isEnabled:d,isOpen:g,toggleChat:f,models:v,sending:u,loading:h}=me();if(!d)return null;const m=v.length>0;return e.jsx(e.Fragment,{children:e.jsxs(R,{children:[e.jsx(J,{asChild:!0,children:e.jsx(P,{variant:"ghost",className:se("relative",{"text-primary":g}),onClick:f,"aria-expanded":g,"aria-haspopup":"true","aria-controls":"ai-assistant-panel",disabled:!m&&h,children:u?e.jsx(O,{className:"size-4 animate-spin"}):e.jsx(te,{className:"size-4"})})}),e.jsx(L,{side:"bottom",className:"z-[1002]",children:e.jsx("span",{children:"AI assistant"})})]})})}function pe({breadcrumbs:d=[]}){const{tabs:g}=H(),f=z();return e.jsx("header",{className:"border-sidebar-border/50 flex h-16 shrink-0 items-center gap-2 border-b px-6 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12 md:px-4",children:e.jsxs("div",{className:"flex justify-between w-full",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ae,{className:"-ml-1"}),e.jsx(re,{breadcrumbs:d})]}),e.jsxs("div",{className:"flex gap-4 items-center",children:[e.jsx(he,{}),f.props.history&&e.jsx(B,{href:`${window.routePrefix}/history/view-all`,children:e.jsx(P,{variant:"ghost",size:"icon",className:"shrink-0",children:e.jsx(ie,{})})}),e.jsx(oe,{}),f.props.notifications&&(g===null?e.jsx("div",{className:"w-[40px] flex-none flex justify-center",children:e.jsx(O,{className:"size-4 animate-spin"})}):g.length?e.jsx(de,{}):null),e.jsx(ne,{})]})]})})}const Me=Object.freeze(Object.defineProperty({__proto__:null,AppSidebarHeader:pe},Symbol.toStringTag,{value:"Module"}));export{pe as A,be as N,me as a,Ne as b,Me as c,H as u};
@@ -1 +0,0 @@
1
- import{j as r,bY as i,bZ as n,b_ as c,b$ as d,c0 as l,ai as m,c1 as h}from"./app.js";import{r as o}from"./handsontable-Dv59QFH5.js";import"./jsoneditor-CiPXPMho.js";import"./monaco-ompgKQ3_.js";function b({breadcrumbs:e}){return r.jsx(r.Fragment,{children:e.length>0&&r.jsx(i,{children:r.jsx(n,{children:e.map((s,a)=>{const t=a===e.length-1;return r.jsxs(o.Fragment,{children:[r.jsx(c,{children:t?r.jsx(d,{children:s.title}):r.jsx(l,{asChild:!0,children:r.jsx(m,{href:s.href,children:s.title})})}),!t&&r.jsx(h,{})]},a)})})})})}export{b as Breadcrumbs};