adminizer 4.7.0-build.222 → 5.0.0-build.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (341) hide show
  1. package/Readme.md +2 -1
  2. package/assets/add-a4odXvQk.js +1 -0
  3. package/assets/add-group-D-NleXth.js +1 -0
  4. package/assets/add-user-B4SVJT5P.js +1 -0
  5. package/assets/app-CtWuWD5N.css +1 -0
  6. package/assets/app-layout-eaSzcROf.js +1 -0
  7. package/assets/app.js +35 -39
  8. package/assets/catalog-ByUICd5z.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/{RelationDialogStack-CnHFOYyR.css → controls/ckeditor.css} +1 -1
  16. package/assets/controls/ckeditor.es.js +83663 -0
  17. package/assets/controls/handsontable.css +1 -0
  18. package/assets/controls/handsontable.es.js +70550 -0
  19. package/assets/controls/jsoneditor.css +1 -0
  20. package/assets/controls/jsoneditor.es.js +42009 -0
  21. package/assets/controls/leaflet.css +1 -0
  22. package/assets/controls/leaflet.es.js +10299 -0
  23. package/assets/controls/monaco.es.js +618 -0
  24. package/assets/controls/toast-ui.css +1 -0
  25. package/assets/controls/toast-ui.es.js +41768 -0
  26. package/assets/dashboard-BYd8G2cW.js +3 -0
  27. package/assets/debounce-BMmXVQ06.js +1 -0
  28. package/assets/history-B8KIDy44.js +1 -0
  29. package/assets/init-user-8aUohVDq.js +1 -0
  30. package/assets/list-ChmtBGjG.js +4 -0
  31. package/assets/login-CO4laf6m.js +1 -0
  32. package/assets/manifest.json +60 -615
  33. package/assets/{media-manager-WcKe1EvD.js → media-manager-BDbpSSjH.js} +3 -3
  34. package/assets/module-D59aE9uv.js +1 -0
  35. package/assets/notification-DNoyfNmT.js +20 -0
  36. package/assets/register-DBYIMXGQ.js +1 -0
  37. package/assets/{ru-eW0WKkga.js → ru-rYKdQbWF.js} +1 -1
  38. package/assets/use-appearance-_EbbjHTh.js +1 -0
  39. package/assets/user-filters-list-BMFRwkYF.js +1 -0
  40. package/assets/welcome-37rNVUHt.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/Info.js +1 -1
  75. package/controllers/widgets/filterInfo.js +1 -1
  76. package/files/favicon.png +0 -0
  77. package/helpers/accessRightsHelper.d.ts +6 -4
  78. package/helpers/accessRightsHelper.js +13 -0
  79. package/helpers/diffHelpers.js +1 -1
  80. package/helpers/fieldsHelper.d.ts +1 -1
  81. package/helpers/fieldsHelper.js +8 -4
  82. package/helpers/filterDatetimeHelper.d.ts +1 -1
  83. package/helpers/inertiaAddHelper.d.ts +6 -5
  84. package/helpers/inertiaAddHelper.js +45 -37
  85. package/helpers/inertiaAutHelper.js +5 -5
  86. package/helpers/inertiaGroupHelper.d.ts +4 -4
  87. package/helpers/inertiaMenuHelper.js +1 -1
  88. package/helpers/inertiaUserHelper.d.ts +3 -3
  89. package/helpers/inertiaUserHelper.js +1 -1
  90. package/helpers/menuHelper.d.ts +2 -2
  91. package/index.d.ts +18 -6
  92. package/index.js +18 -6
  93. package/interfaces/adminpanelConfig.d.ts +10 -33
  94. package/interfaces/global.d.ts +10 -15
  95. package/interfaces/listQueryBuilder.d.ts +1 -1
  96. package/lib/Adminizer.d.ts +25 -2
  97. package/lib/Adminizer.js +124 -50
  98. package/lib/DataAccessor.d.ts +9 -5
  99. package/lib/DataAccessor.js +89 -42
  100. package/lib/access-rights/AccessRightsHandler.d.ts +17 -0
  101. package/lib/access-rights/AccessRightsHandler.js +63 -0
  102. package/lib/ai-assistant/AbstractAiModelService.d.ts +5 -8
  103. package/lib/ai-assistant/AbstractAiModelService.js +3 -14
  104. package/lib/ai-assistant/AiAssistantHandler.d.ts +2 -2
  105. package/lib/app-manager/AdminizerApp.d.ts +228 -0
  106. package/lib/app-manager/AdminizerApp.js +17 -0
  107. package/lib/app-manager/AppManager.d.ts +18 -0
  108. package/lib/app-manager/AppManager.js +537 -0
  109. package/lib/app-manager/AssetHandler.d.ts +17 -0
  110. package/lib/app-manager/AssetHandler.js +67 -0
  111. package/lib/app-manager/ConfigLayerHandler.d.ts +18 -0
  112. package/lib/app-manager/ConfigLayerHandler.js +119 -0
  113. package/lib/app-manager/ControllerHandler.d.ts +25 -0
  114. package/lib/app-manager/ControllerHandler.js +140 -0
  115. package/lib/catalog/AbstractCatalog.d.ts +28 -19
  116. package/lib/catalog/AbstractCatalog.js +41 -10
  117. package/lib/catalog/CatalogHandler.d.ts +13 -0
  118. package/lib/catalog/CatalogHandler.js +48 -2
  119. package/lib/catalog/CatalogTemplateComponentHandler.d.ts +23 -0
  120. package/lib/catalog/CatalogTemplateComponentHandler.js +59 -0
  121. package/lib/controls/Control.d.ts +17 -0
  122. package/lib/controls/Control.js +1 -0
  123. package/lib/controls/ControlsHandler.d.ts +5 -6
  124. package/lib/controls/ControlsHandler.js +0 -13
  125. package/lib/controls/codeEditor/MonacoEditor.d.ts +3 -4
  126. package/lib/controls/codeEditor/MonacoEditor.js +13 -8
  127. package/lib/controls/geojsoneditor/GeoEditor.d.ts +3 -4
  128. package/lib/controls/geojsoneditor/GeoEditor.js +14 -9
  129. package/lib/controls/jsoneditor/JsonEditor.d.ts +5 -6
  130. package/lib/controls/jsoneditor/JsonEditor.js +14 -13
  131. package/lib/controls/markdown/ToastUiEditor.d.ts +5 -6
  132. package/lib/controls/markdown/ToastUiEditor.js +14 -13
  133. package/lib/controls/table/Handsontable.d.ts +5 -6
  134. package/lib/controls/table/Handsontable.js +14 -13
  135. package/lib/controls/wysiwyg/CKeditor.d.ts +5 -6
  136. package/lib/controls/wysiwyg/CKeditor.js +14 -13
  137. package/lib/filters/ConditionValidator.d.ts +1 -1
  138. package/lib/filters/FilterService.d.ts +18 -18
  139. package/lib/filters/FilterService.js +11 -11
  140. package/lib/history-actions/AbstractHistoryAdapter.d.ts +14 -14
  141. package/lib/history-actions/AbstractHistoryAdapter.js +5 -6
  142. package/lib/history-actions/DefaultHistoryAdapter.d.ts +7 -7
  143. package/lib/history-actions/DefaultHistoryAdapter.js +2 -2
  144. package/lib/list-query-builder/ListQueryBuilder.d.ts +1 -1
  145. package/lib/media-manager/AbstractMediaManager.d.ts +14 -3
  146. package/lib/media-manager/AbstractMediaManager.js +16 -5
  147. package/lib/media-manager/MediaManagerHandler.d.ts +3 -0
  148. package/lib/media-manager/MediaManagerHandler.js +30 -5
  149. package/lib/media-manager/Thumb.js +7 -13
  150. package/lib/media-manager/helpers/MediaManagerHelper.d.ts +6 -4
  151. package/lib/media-manager/helpers/MediaManagerHelper.js +18 -18
  152. package/lib/model/AbstractModel.d.ts +9 -5
  153. package/lib/model/AbstractModel.js +9 -13
  154. package/lib/model/InternalModelAccessFactory.js +9 -10
  155. package/lib/model/ModelHandler.d.ts +45 -7
  156. package/lib/model/ModelHandler.js +168 -11
  157. package/lib/model/adapter/sequelize.d.ts +2 -4
  158. package/lib/model/adapter/sequelize.js +16 -193
  159. package/lib/model/adapter/typeorm.d.ts +2 -4
  160. package/lib/model/adapter/typeorm.js +2 -35
  161. package/lib/notifications/AbstractNotificationService.d.ts +9 -9
  162. package/lib/notifications/AbstractNotificationService.js +8 -8
  163. package/lib/notifications/GeneralNotificationService.js +1 -1
  164. package/lib/notifications/SystemNotificationService.js +1 -1
  165. package/lib/ui-i18n/uiTranslationKeys.d.ts +1 -1
  166. package/lib/ui-i18n/uiTranslationKeys.js +1 -0
  167. package/lib/widgets/abstractCustom.d.ts +7 -2
  168. package/lib/widgets/abstractCustom.js +6 -0
  169. package/lib/widgets/abstractInfo.d.ts +4 -1
  170. package/lib/widgets/abstractWidgetBase.d.ts +2 -0
  171. package/lib/widgets/abstractWidgetBase.js +2 -0
  172. package/lib/widgets/widgetHandler.d.ts +6 -2
  173. package/lib/widgets/widgetHandler.js +70 -19
  174. package/models/{FilterAP.d.ts → Filter.d.ts} +4 -70
  175. package/models/Filter.js +1 -0
  176. package/models/FilterColumn.d.ts +10 -0
  177. package/models/FilterColumn.js +1 -0
  178. package/models/Group.d.ts +8 -0
  179. package/models/Group.js +1 -0
  180. package/models/HistoryActions.d.ts +14 -0
  181. package/models/HistoryActions.js +1 -0
  182. package/models/MediaManagerAP.d.ts +2 -54
  183. package/models/MediaManagerAP.js +1 -51
  184. package/models/MediaManagerAssociationsAP.d.ts +1 -35
  185. package/models/MediaManagerAssociationsAP.js +1 -33
  186. package/models/MediaManagerMetaAP.d.ts +2 -30
  187. package/models/MediaManagerMetaAP.js +1 -27
  188. package/models/Notification.d.ts +13 -0
  189. package/models/Notification.js +1 -0
  190. package/models/User.d.ts +23 -0
  191. package/models/User.js +1 -0
  192. package/models/UserNotification.d.ts +7 -0
  193. package/models/UserNotification.js +1 -0
  194. package/package.json +25 -30
  195. package/services/FeedService.d.ts +5 -5
  196. package/services/FeedService.js +1 -1
  197. package/system/Router.js +2 -10
  198. package/system/bindAccessRights.js +1 -1
  199. package/system/bindAuthorization.js +2 -2
  200. package/system/bindControls.js +7 -6
  201. package/system/bindDashboardWidgets.js +3 -2
  202. package/system/bindDev.js +1 -1
  203. package/system/bindHistory.d.ts +1 -1
  204. package/system/bindHistory.js +1 -1
  205. package/system/bindInertia.js +0 -6
  206. package/system/bindMediaManager.js +4 -17
  207. package/system/bindNotifications.d.ts +1 -1
  208. package/system/bindNotifications.js +1 -1
  209. package/system/bindReqFunctions.d.ts +1 -0
  210. package/system/bindReqFunctions.js +20 -3
  211. package/system/buildInternalModelAccess.js +2 -15
  212. package/system/defaults.js +5 -10
  213. package/system/systemModelContracts.d.ts +22 -0
  214. package/system/systemModelContracts.js +155 -0
  215. package/system/validateSystemModels.d.ts +2 -0
  216. package/system/validateSystemModels.js +101 -0
  217. package/translations/ar.json +2 -1
  218. package/translations/cn.json +2 -1
  219. package/translations/de.json +2 -1
  220. package/translations/en.json +1 -0
  221. package/translations/es.json +2 -1
  222. package/translations/fr.json +2 -1
  223. package/translations/hi.json +2 -1
  224. package/translations/jp.json +2 -1
  225. package/translations/ko.json +2 -1
  226. package/translations/pt.json +2 -1
  227. package/translations/ru.json +2 -1
  228. package/translations/ua.json +2 -1
  229. package/translations/uz.json +2 -1
  230. package/translations/vi.json +2 -1
  231. package/ui/components/VanillaJSONEditor.d.ts +1 -1
  232. package/ui/components/handsontable.d.ts +1 -1
  233. package/ui/components/ui/avatar.d.ts +3 -3
  234. package/ui/components/ui/badge.d.ts +1 -1
  235. package/ui/components/ui/breadcrumb.d.ts +7 -7
  236. package/ui/components/ui/button.d.ts +1 -1
  237. package/ui/components/ui/calendar.d.ts +1 -1
  238. package/ui/components/ui/card.d.ts +7 -7
  239. package/ui/components/ui/checkbox.d.ts +1 -1
  240. package/ui/components/ui/collapsible.d.ts +3 -3
  241. package/ui/components/ui/command.d.ts +9 -9
  242. package/ui/components/ui/context-menu.d.ts +15 -15
  243. package/ui/components/ui/dialog-stack.d.ts +10 -10
  244. package/ui/components/ui/dialog.d.ts +10 -10
  245. package/ui/components/ui/dropdown-menu.d.ts +15 -15
  246. package/ui/components/ui/input.d.ts +1 -1
  247. package/ui/components/ui/label.d.ts +1 -1
  248. package/ui/components/ui/menubar.d.ts +16 -16
  249. package/ui/components/ui/pagination.d.ts +7 -7
  250. package/ui/components/ui/popover.d.ts +4 -4
  251. package/ui/components/ui/select.d.ts +10 -10
  252. package/ui/components/ui/separator.d.ts +1 -1
  253. package/ui/components/ui/sheet.d.ts +8 -8
  254. package/ui/components/ui/sidebar.d.ts +23 -23
  255. package/ui/components/ui/skeleton.d.ts +1 -1
  256. package/ui/components/ui/slider.d.ts +1 -1
  257. package/ui/components/ui/sonner.d.ts +1 -1
  258. package/ui/components/ui/switch.d.ts +1 -1
  259. package/ui/components/ui/table.d.ts +8 -8
  260. package/ui/components/ui/tabs.d.ts +4 -4
  261. package/ui/components/ui/textarea.d.ts +1 -1
  262. package/ui/components/ui/tooltip.d.ts +4 -4
  263. package/assets/RelationDialogStack-DI2bZxQX.js +0 -20
  264. package/assets/add-DCQ7ZW4B.js +0 -1
  265. package/assets/add-group-DCVPryBo.js +0 -1
  266. package/assets/add-group-form-DKRXC2n-.js +0 -1
  267. package/assets/add-user-B7OOiYxv.js +0 -1
  268. package/assets/add-user-form-UXAToWQd.js +0 -1
  269. package/assets/app-AKbNCggP.css +0 -1
  270. package/assets/app-layout-6EwNBvnR.js +0 -1
  271. package/assets/app-shell-D8wtkECO.js +0 -1
  272. package/assets/app-sidebar-DfGjL-2K.js +0 -1
  273. package/assets/app-sidebar-header-BZbIBQjq.js +0 -1
  274. package/assets/breadcrumbs-CODaqVkB.js +0 -1
  275. package/assets/catalog-DVvFGa2X.js +0 -6
  276. package/assets/dashboard-BadoiH_a.js +0 -3
  277. package/assets/date-picker-DSOkNiNo.js +0 -1
  278. package/assets/del-modal-Cd4M7af8.js +0 -1
  279. package/assets/dynamic-controls-BsrJhPDY.js +0 -1
  280. package/assets/geo-json-CzR5JBXL.js +0 -1
  281. package/assets/handsontable-BI98OF5R.js +0 -336
  282. package/assets/history-D1iLA6rs.js +0 -1
  283. package/assets/home-DbWj-W_k.js +0 -2
  284. package/assets/icon-C2JNaLxH.js +0 -1
  285. package/assets/init-user-D2HSyXup.js +0 -1
  286. package/assets/input-error-CH2caTtO.js +0 -1
  287. package/assets/jsoneditor-DVNQmA6G.js +0 -3869
  288. package/assets/list-CVoljVUw.js +0 -4
  289. package/assets/login-DFSLEO17.js +0 -1
  290. package/assets/material-icon-Bx9pGQiQ.js +0 -1
  291. package/assets/module-DJsC37CM.js +0 -1
  292. package/assets/monaco-Bl4zdWCn.js +0 -11
  293. package/assets/nav-footer-BiSQkPt4.js +0 -1
  294. package/assets/nav-main-rTH0PfDw.js +0 -1
  295. package/assets/nav-user-Bj6cWs0a.js +0 -1
  296. package/assets/notification-DKrNfaAB.js +0 -20
  297. package/assets/pagination-render-AKJvTIRA.js +0 -1
  298. package/assets/register-BTP4uxsK.js +0 -1
  299. package/assets/theme-switcher-Dm8EOGzx.js +0 -1
  300. package/assets/toast-editor-DOg_gvSp.js +0 -668
  301. package/assets/user-filters-list-C9R9J6Om.js +0 -1
  302. package/assets/user-info-BgSbT02v.js +0 -1
  303. package/assets/user-menu-content-TQTXHIv6.js +0 -1
  304. package/assets/vanilla-picker-B3LgXoKV.js +0 -2
  305. package/assets/vendor-l0sNRNKZ.js +0 -1
  306. package/assets/welcome-BwDlAOGh.js +0 -1
  307. package/controllers/navigation/edit.d.ts +0 -1
  308. package/controllers/navigation/edit.js +0 -8
  309. package/lib/ai-assistant/DummyAiModelService.d.ts +0 -8
  310. package/lib/ai-assistant/DummyAiModelService.js +0 -14
  311. package/lib/ai-assistant/OpenAiModelService.d.ts +0 -24
  312. package/lib/ai-assistant/OpenAiModelService.js +0 -184
  313. package/lib/catalog/Navigation.d.ts +0 -49
  314. package/lib/catalog/Navigation.js +0 -492
  315. package/lib/controls/AbstractControls.d.ts +0 -30
  316. package/lib/controls/AbstractControls.js +0 -14
  317. package/lib/media-manager/DefaultMediaManager.d.ts +0 -20
  318. package/lib/media-manager/DefaultMediaManager.js +0 -127
  319. package/lib/media-manager/Items.d.ts +0 -50
  320. package/lib/media-manager/Items.js +0 -296
  321. package/models/FilterAP.js +0 -68
  322. package/models/FilterColumnAP.d.ts +0 -32
  323. package/models/FilterColumnAP.js +0 -21
  324. package/models/GroupAP.d.ts +0 -31
  325. package/models/GroupAP.js +0 -22
  326. package/models/HistoryActionsAP.d.ts +0 -56
  327. package/models/HistoryActionsAP.js +0 -42
  328. package/models/NavigationAP.d.ts +0 -22
  329. package/models/NavigationAP.js +0 -16
  330. package/models/NotificationAP.d.ts +0 -44
  331. package/models/NotificationAP.js +0 -30
  332. package/models/UserAP.d.ts +0 -81
  333. package/models/UserAP.js +0 -57
  334. package/models/UserNotificationAP.d.ts +0 -26
  335. package/models/UserNotificationAP.js +0 -18
  336. package/system/bindAiAssistant.d.ts +0 -2
  337. package/system/bindAiAssistant.js +0 -30
  338. package/system/bindModels.d.ts +0 -2
  339. package/system/bindModels.js +0 -48
  340. package/system/bindNavigation.d.ts +0 -2
  341. package/system/bindNavigation.js +0 -38
@@ -1 +0,0 @@
1
- import{c8 as e,ci as G,bX as H,r as V,bW as k,aw as z,b7 as X,ba as Y,bb as Z,b8 as $,b9 as A,bB as q,bF as D,bG as b,bE as p,bC as W,bD as x,bU as v,B as j,aq as _,aB as J}from"./app.js";import{aZ as a}from"./handsontable-BI98OF5R.js";import{A as K}from"./app-layout-6EwNBvnR.js";import"./jsoneditor-DVNQmA6G.js";import"./monaco-Bl4zdWCn.js";import"./app-shell-D8wtkECO.js";import"./app-sidebar-DfGjL-2K.js";import"./nav-main-rTH0PfDw.js";import"./material-icon-Bx9pGQiQ.js";import"./app-sidebar-header-BZbIBQjq.js";import"./breadcrumbs-CODaqVkB.js";import"./nav-user-Bj6cWs0a.js";import"./user-info-BgSbT02v.js";import"./user-menu-content-TQTXHIv6.js";import"./theme-switcher-Dm8EOGzx.js";import"./icon-C2JNaLxH.js";import"./RelationDialogStack-DI2bZxQX.js";import"./dynamic-controls-BsrJhPDY.js";import"./input-error-CH2caTtO.js";const Q=50,ee=[];function se({visibility:o,groupNames:d,t:l}){switch(o){case"private":return e.jsxs(j,{variant:"outline",className:"gap-1 text-xs font-normal",children:[e.jsx(J,{className:"h-3 w-3"}),l("Private")]});case"public":return e.jsxs(j,{variant:"outline",className:"gap-1 text-xs font-normal border-emerald-500/50 text-emerald-600 dark:text-emerald-400",children:[e.jsx(_,{className:"h-3 w-3"}),l("Public")]});case"groups":return e.jsxs("div",{className:"flex items-center gap-1.5 flex-wrap",children:[e.jsxs(j,{variant:"outline",className:"gap-1 text-xs font-normal border-blue-500/50 text-blue-600 dark:text-blue-400",children:[e.jsx(v,{className:"h-3 w-3"}),l("Groups")]}),d&&d.map((t,u)=>e.jsx("span",{className:"text-xs text-muted-foreground",children:t},u))]});default:return e.jsx(j,{variant:"outline",className:"text-xs font-normal",children:o})}}function te({title:o,models:d,apiEndpoint:l}){const{t}=G(),[u,N]=a.useState([]),[E,I]=a.useState(d),[r,g]=a.useState(""),[m,w]=a.useState("all"),[S,y]=a.useState(0),[C,M]=a.useState(!1),[h,F]=a.useState(!1),[L,B]=a.useState(!0),T=a.useRef(null),f=a.useCallback(async(s=!1)=>{if(h)return;const n=s?0:S;s&&(N([]),y(0)),F(!0);try{const i={offset:n,limit:Q};r&&(i.search=r),m!=="all"&&(i.modelName=m);const c=(await H.get(l,{params:i})).data;N(s?c.filters:U=>[...U,...c.filters]),M(c.hasMore),y(n+c.filters.length),c.models&&c.models.length>0&&I(c.models)}catch(i){console.error("Failed to load filters:",i)}finally{F(!1),B(!1)}},[l,h,S,r,m]);a.useEffect(()=>{f(!0)},[]),a.useEffect(()=>{const s=setTimeout(()=>{f(!0)},300);return()=>clearTimeout(s)},[r]),a.useEffect(()=>{f(!0)},[m]),a.useEffect(()=>{const s=new IntersectionObserver(i=>{i[0].isIntersecting&&C&&!h&&f(!1)},{threshold:.1}),n=T.current;return n&&s.observe(n),()=>{n&&s.unobserve(n)}},[C,h,f]);const O=s=>{window.location.href=`/adminizer/model/${s.modelName}?filterId=${s.id}`},P=()=>{g("")},R=r||m!=="all";return L?e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:t("Loading...")})}):e.jsxs("div",{className:"flex flex-col gap-4 p-4 h-full",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h1",{className:"text-2xl font-semibold",children:o}),R&&e.jsxs(V,{variant:"destructive",size:"sm",onClick:()=>{g(""),w("all")},className:"gap-1.5",children:[e.jsx(k,{className:"h-4 w-4"}),t("Reset")]})]}),e.jsxs("div",{className:"flex gap-3 items-center",children:[e.jsxs("div",{className:"relative flex-1 max-w-sm",children:[e.jsx(z,{placeholder:t("Search filters..."),value:r,onChange:s=>g(s.target.value)}),r&&e.jsx("button",{className:"absolute right-0 top-0 h-full w-8 px-0 text-destructive cursor-pointer",onClick:P,children:e.jsx(k,{className:"h-4 w-4"})})]}),e.jsx("div",{className:"w-52",children:e.jsxs(X,{value:m,onValueChange:w,children:[e.jsx(Y,{children:e.jsx(Z,{placeholder:t("All models")})}),e.jsxs($,{children:[e.jsx(A,{value:"all",children:t("All models")}),E.map(s=>e.jsx(A,{value:s.name,children:s.title},s.name))]})]})}),e.jsxs("span",{className:"text-sm text-muted-foreground ml-auto",children:[u.length," ",t("found")]})]}),e.jsx("div",{className:"rounded-md border",children:e.jsxs(q,{wrapperHeight:"overflow-y-auto h-[calc(100svh-300px)]",children:[e.jsx(D,{children:e.jsxs(b,{children:[e.jsx(p,{className:"w-[40%]",children:t("Filter Name")}),e.jsx(p,{className:"w-[20%]",children:t("Model")}),e.jsx(p,{className:"w-[15%]",children:t("Visibility")}),e.jsx(p,{className:"w-[10%]",children:t("API access (feed)")}),e.jsx(p,{className:"w-[15%]",children:t("Owner")})]})}),e.jsx(W,{children:u.length===0?e.jsx(b,{children:e.jsx(x,{colSpan:5,className:"text-center text-muted-foreground py-12",children:e.jsxs("div",{className:"flex flex-col items-center gap-2",children:[e.jsx(v,{className:"h-8 w-8 text-muted-foreground/50"}),e.jsx("p",{children:t("No filters found")})]})})}):u.map(s=>e.jsxs(b,{className:"cursor-pointer group",onClick:()=>O(s),children:[e.jsx(x,{className:"font-medium",children:e.jsx("span",{className:"text-primary group-hover:underline",children:s.name})}),e.jsx(x,{className:"text-muted-foreground",children:s.modelTitle}),e.jsx(x,{children:e.jsx(se,{visibility:s.visibility,groupNames:s.groupNames,t})}),e.jsx(x,{className:"text-sm text-muted-foreground",children:s.apiEnabled?t("Yes"):t("No")}),e.jsx(x,{className:"text-sm text-muted-foreground",children:e.jsx("div",{className:"flex items-center gap-1.5",children:s.isOwner?e.jsxs(e.Fragment,{children:[e.jsx(v,{className:"h-3.5 w-3.5 text-muted-foreground/50"}),t("You")]}):e.jsx(e.Fragment,{children:s.ownerName||t("Unknown")})})})]},s.id))})]})}),e.jsx("div",{ref:T,className:"h-8 flex items-center justify-center",children:h&&!L&&e.jsx("p",{className:"text-sm text-muted-foreground",children:t("Loading more...")})})]})}function Se({title:o,models:d,apiEndpoint:l}){return e.jsx(K,{breadcrumbs:ee,className:"overflow-auto h-[calc(100svh-16px)]",children:e.jsx(te,{title:o,models:d,apiEndpoint:l})})}export{Se as default};
@@ -1 +0,0 @@
1
- import{c8 as a,e as l,g as i,f as c}from"./app.js";import{aZ as o}from"./handsontable-BI98OF5R.js";import"./jsoneditor-DVNQmA6G.js";import"./monaco-Bl4zdWCn.js";function m(){return o.useCallback(n=>{const t=n.trim().split(" ");if(t.length===0)return"";if(t.length===1)return t[0].charAt(0).toUpperCase();const r=t[0].charAt(0),s=t[t.length-1].charAt(0);return`${r}${s}`.toUpperCase()},[])}function h({user:e,showEmail:n=!1}){const t=m();return a.jsxs(a.Fragment,{children:[a.jsxs(l,{className:"h-8 w-8 overflow-hidden rounded-full",children:[a.jsx(i,{src:e.avatar,alt:e.login}),a.jsx(c,{className:"rounded-lg bg-neutral-200 text-black dark:bg-neutral-700 dark:text-white",children:t(e.login)})]}),a.jsxs("div",{className:"grid flex-1 text-left text-sm leading-tight",children:[a.jsx("span",{className:"truncate font-medium",children:e.login}),n&&a.jsx("span",{className:"text-muted-foreground truncate text-xs",children:e.email})]})]})}export{h as UserInfo};
@@ -1 +0,0 @@
1
- import{c8 as e,ak as a,al as n,aj as l,az as c,aC as i}from"./app.js";import{UserInfo as m}from"./user-info-BgSbT02v.js";import{aZ as p}from"./handsontable-BI98OF5R.js";import"./jsoneditor-DVNQmA6G.js";import"./monaco-Bl4zdWCn.js";function u(){return p.useCallback(()=>{document.body.style.removeProperty("pointer-events")},[])}function b({user:t,logout:r,logoutBtn:s}){const o=u();return e.jsxs(e.Fragment,{children:[e.jsx(a,{className:"p-0 font-normal",children:e.jsx("div",{className:"flex items-center gap-2 px-1 py-1.5 text-left text-sm",children:e.jsx(m,{user:t,showEmail:!0})})}),e.jsx(n,{}),e.jsx(l,{asChild:!0,children:e.jsxs(c,{className:"block w-full cursor-pointer",method:"get",href:r,as:"button",onClick:o,children:[e.jsx(i,{className:"mr-2"}),s]})})]})}export{b as UserMenuContent};
@@ -1,2 +0,0 @@
1
- var O=function(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")},R=(function(){function l(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}return function(n,e,t){return e&&l(n.prototype,e),t&&l(n,t),n}})(),y=(function(){function l(n,e){var t=[],r=!0,i=!1,o=void 0;try{for(var c=n[Symbol.iterator](),a;!(r=(a=c.next()).done)&&(t.push(a.value),!(e&&t.length===e));r=!0);}catch(s){i=!0,o=s}finally{try{!r&&c.return&&c.return()}finally{if(i)throw o}}return t}return function(n,e){if(Array.isArray(n))return n;if(Symbol.iterator in Object(n))return l(n,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}})();String.prototype.startsWith=String.prototype.startsWith||function(l){return this.indexOf(l)===0};String.prototype.padStart=String.prototype.padStart||function(l,n){for(var e=this;e.length<l;)e=n+e;return e};var I={cb:"0f8ff",tqw:"aebd7",q:"-ffff",qmrn:"7fffd4",zr:"0ffff",bg:"5f5dc",bsq:"e4c4",bck:"---",nch:"ebcd",b:"--ff",bvt:"8a2be2",brwn:"a52a2a",brw:"deb887",ctb:"5f9ea0",hrt:"7fff-",chcT:"d2691e",cr:"7f50",rnw:"6495ed",crns:"8dc",crms:"dc143c",cn:"-ffff",Db:"--8b",Dcn:"-8b8b",Dgnr:"b8860b",Dgr:"a9a9a9",Dgrn:"-64-",Dkhk:"bdb76b",Dmgn:"8b-8b",Dvgr:"556b2f",Drng:"8c-",Drch:"9932cc",Dr:"8b--",Dsmn:"e9967a",Dsgr:"8fbc8f",DsTb:"483d8b",DsTg:"2f4f4f",Dtrq:"-ced1",Dvt:"94-d3",ppnk:"1493",pskb:"-bfff",mgr:"696969",grb:"1e90ff",rbrc:"b22222",rwht:"af0",stg:"228b22",chs:"-ff",gnsb:"dcdcdc",st:"8f8ff",g:"d7-",gnr:"daa520",gr:"808080",grn:"-8-0",grnw:"adff2f",hnw:"0fff0",htpn:"69b4",nnr:"cd5c5c",ng:"4b-82",vr:"0",khk:"0e68c",vnr:"e6e6fa",nrb:"0f5",wngr:"7cfc-",mnch:"acd",Lb:"add8e6",Lcr:"08080",Lcn:"e0ffff",Lgnr:"afad2",Lgr:"d3d3d3",Lgrn:"90ee90",Lpnk:"b6c1",Lsmn:"a07a",Lsgr:"20b2aa",Lskb:"87cefa",LsTg:"778899",Lstb:"b0c4de",Lw:"e0",m:"-ff-",mgrn:"32cd32",nn:"af0e6",mgnt:"-ff",mrn:"8--0",mqm:"66cdaa",mmb:"--cd",mmrc:"ba55d3",mmpr:"9370db",msg:"3cb371",mmsT:"7b68ee","":"-fa9a",mtr:"48d1cc",mmvt:"c71585",mnLb:"191970",ntc:"5fffa",mstr:"e4e1",mccs:"e4b5",vjw:"dead",nv:"--80",c:"df5e6",v:"808-0",vrb:"6b8e23",rng:"a5-",rngr:"45-",rch:"da70d6",pgnr:"eee8aa",pgrn:"98fb98",ptrq:"afeeee",pvtr:"db7093",ppwh:"efd5",pchp:"dab9",pr:"cd853f",pnk:"c0cb",pm:"dda0dd",pwrb:"b0e0e6",prp:"8-080",cc:"663399",r:"--",sbr:"bc8f8f",rb:"4169e1",sbrw:"8b4513",smn:"a8072",nbr:"4a460",sgrn:"2e8b57",ssh:"5ee",snn:"a0522d",svr:"c0c0c0",skb:"87ceeb",sTb:"6a5acd",sTgr:"708090",snw:"afa",n:"-ff7f",stb:"4682b4",tn:"d2b48c",t:"-8080",thst:"d8bfd8",tmT:"6347",trqs:"40e0d0",vt:"ee82ee",whT:"5deb3",wht:"",hts:"5f5f5",w:"-",wgrn:"9acd32"};function A(l){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1,e=n>0?l.toFixed(n).replace(/0+$/,"").replace(/\.$/,""):l.toString();return e||"0"}var N=(function(){function l(n,e,t,r){O(this,l);var i=this;function o(a){if(a.startsWith("hsl")){var s=a.match(/([\-\d\.e]+)/g).map(Number),p=y(s,4),f=p[0],u=p[1],d=p[2],b=p[3];b===void 0&&(b=1),f/=360,u/=100,d/=100,i.hsla=[f,u,d,b]}else if(a.startsWith("rgb")){var m=a.match(/([\-\d\.e]+)/g).map(Number),h=y(m,4),v=h[0],g=h[1],E=h[2],k=h[3];k===void 0&&(k=1),i.rgba=[v,g,E,k]}else a.startsWith("#")?i.rgba=l.hexToRgb(a):i.rgba=l.nameToRgb(a)||l.hexToRgb(a)}if(n!==void 0)if(Array.isArray(n))this.rgba=n;else if(t===void 0){var c=n&&""+n;c&&o(c.toLowerCase())}else this.rgba=[n,e,t,r===void 0?1:r]}return R(l,[{key:"printRGB",value:function(e){var t=e?this.rgba:this.rgba.slice(0,3),r=t.map(function(i,o){return A(i,o===3?3:0)});return e?"rgba("+r+")":"rgb("+r+")"}},{key:"printHSL",value:function(e){var t=[360,100,100,1],r=["","%","%",""],i=e?this.hsla:this.hsla.slice(0,3),o=i.map(function(c,a){return A(c*t[a],a===3?3:1)+r[a]});return e?"hsla("+o+")":"hsl("+o+")"}},{key:"printHex",value:function(e){var t=this.hex;return e?t:t.substring(0,7)}},{key:"rgba",get:function(){if(this._rgba)return this._rgba;if(!this._hsla)throw new Error("No color is set");return this._rgba=l.hslToRgb(this._hsla)},set:function(e){e.length===3&&(e[3]=1),this._rgba=e,this._hsla=null}},{key:"rgbString",get:function(){return this.printRGB()}},{key:"rgbaString",get:function(){return this.printRGB(!0)}},{key:"hsla",get:function(){if(this._hsla)return this._hsla;if(!this._rgba)throw new Error("No color is set");return this._hsla=l.rgbToHsl(this._rgba)},set:function(e){e.length===3&&(e[3]=1),this._hsla=e,this._rgba=null}},{key:"hslString",get:function(){return this.printHSL()}},{key:"hslaString",get:function(){return this.printHSL(!0)}},{key:"hex",get:function(){var e=this.rgba,t=e.map(function(r,i){return i<3?r.toString(16):Math.round(r*255).toString(16)});return"#"+t.map(function(r){return r.padStart(2,"0")}).join("")},set:function(e){this.rgba=l.hexToRgb(e)}}],[{key:"hexToRgb",value:function(e){var t=(e.startsWith("#")?e.slice(1):e).replace(/^(\w{3})$/,"$1F").replace(/^(\w)(\w)(\w)(\w)$/,"$1$1$2$2$3$3$4$4").replace(/^(\w{6})$/,"$1FF");if(!t.match(/^([0-9a-fA-F]{8})$/))throw new Error("Unknown hex color; "+e);var r=t.match(/^(\w\w)(\w\w)(\w\w)(\w\w)$/).slice(1).map(function(i){return parseInt(i,16)});return r[3]=r[3]/255,r}},{key:"nameToRgb",value:function(e){var t=e.toLowerCase().replace("at","T").replace(/[aeiouyldf]/g,"").replace("ght","L").replace("rk","D").slice(-5,4),r=I[t];return r===void 0?r:l.hexToRgb(r.replace(/\-/g,"00").padStart(6,"f"))}},{key:"rgbToHsl",value:function(e){var t=y(e,4),r=t[0],i=t[1],o=t[2],c=t[3];r/=255,i/=255,o/=255;var a=Math.max(r,i,o),s=Math.min(r,i,o),p=void 0,f=void 0,u=(a+s)/2;if(a===s)p=f=0;else{var d=a-s;switch(f=u>.5?d/(2-a-s):d/(a+s),a){case r:p=(i-o)/d+(i<o?6:0);break;case i:p=(o-r)/d+2;break;case o:p=(r-i)/d+4;break}p/=6}return[p,f,u,c]}},{key:"hslToRgb",value:function(e){var t=y(e,4),r=t[0],i=t[1],o=t[2],c=t[3],a=void 0,s=void 0,p=void 0;if(i===0)a=s=p=o;else{var f=function(h,v,g){return g<0&&(g+=1),g>1&&(g-=1),g<.16666666666666666?h+(v-h)*6*g:g<.5?v:g<.6666666666666666?h+(v-h)*(.6666666666666666-g)*6:h},u=o<.5?o*(1+i):o+i-o*i,d=2*o-u;a=f(d,u,r+1/3),s=f(d,u,r),p=f(d,u,r-1/3)}var b=[a*255,s*255,p*255].map(Math.round);return b[3]=c,b}}]),l})(),z=(function(){function l(){O(this,l),this._events=[]}return R(l,[{key:"add",value:function(e,t,r){e.addEventListener(t,r,!1),this._events.push({target:e,type:t,handler:r})}},{key:"remove",value:function(e,t,r){this._events=this._events.filter(function(i){var o=!0;return e&&e!==i.target&&(o=!1),t&&t!==i.type&&(o=!1),r&&r!==i.handler&&(o=!1),o&&l._doRemove(i.target,i.type,i.handler),!o})}},{key:"destroy",value:function(){this._events.forEach(function(e){return l._doRemove(e.target,e.type,e.handler)}),this._events=[]}}],[{key:"_doRemove",value:function(e,t,r){e.removeEventListener(t,r,!1)}}]),l})();function F(l){var n=document.createElement("div");return n.innerHTML=l,n.firstElementChild}function L(l,n,e){var t=!1;function r(a,s,p){return Math.max(s,Math.min(a,p))}function i(a,s,p){if(p&&(t=!0),!!t){a.preventDefault();var f=n.getBoundingClientRect(),u=f.width,d=f.height,b=s.clientX,m=s.clientY,h=r(b-f.left,0,u),v=r(m-f.top,0,d);e(h/u,v/d)}}function o(a,s){var p=a.buttons===void 0?a.which:a.buttons;p===1?i(a,a,s):t=!1}function c(a,s){a.touches.length===1?i(a,a.touches[0],s):t=!1}l.add(n,"mousedown",function(a){o(a,!0)}),l.add(n,"touchstart",function(a){c(a,!0)}),l.add(window,"mousemove",o),l.add(n,"touchmove",c),l.add(window,"mouseup",function(a){t=!1}),l.add(n,"touchend",function(a){t=!1}),l.add(n,"touchcancel",function(a){t=!1})}var U=`linear-gradient(45deg, lightgrey 25%, transparent 25%, transparent 75%, lightgrey 75%) 0 0 / 2em 2em,
2
- linear-gradient(45deg, lightgrey 25%, white 25%, white 75%, lightgrey 75%) 1em 1em / 2em 2em`,B=360,P="keydown",x="mousedown",T="focusin";function _(l,n){return(n||document).querySelector(l)}function G(l){l.preventDefault(),l.stopPropagation()}function H(l,n,e,t,r){l.add(n,P,function(i){e.indexOf(i.key)>=0&&t(i)})}var K=(function(){function l(n){O(this,l),this.settings={popup:"right",layout:"default",alpha:!0,editor:!0,editorFormat:"hex",cancelButton:!1,defaultColor:"#0cf"},this._events=new z,this.onChange=null,this.onDone=null,this.onOpen=null,this.onClose=null,this.setOptions(n)}return R(l,[{key:"setOptions",value:function(e){var t=this;if(!e)return;var r=this.settings;function i(s,p,f){for(var u in s)p[u]=s[u]}if(e instanceof HTMLElement)r.parent=e;else{r.parent&&e.parent&&r.parent!==e.parent&&(this._events.remove(r.parent),this._popupInited=!1),i(e,r),e.onChange&&(this.onChange=e.onChange),e.onDone&&(this.onDone=e.onDone),e.onOpen&&(this.onOpen=e.onOpen),e.onClose&&(this.onClose=e.onClose);var o=e.color||e.colour;o&&this._setColor(o)}var c=r.parent;if(c&&r.popup&&!this._popupInited){var a=function(p){return t.openHandler(p)};this._events.add(c,"click",a),H(this._events,c,[" ","Spacebar","Enter"],a),this._popupInited=!0}else e.parent&&!r.popup&&this.show()}},{key:"openHandler",value:function(e){if(this.show()){e&&e.preventDefault(),this.settings.parent.style.pointerEvents="none";var t=e&&e.type===P?this._domEdit:this.domElement;setTimeout(function(){return t.focus()},100),this.onOpen&&this.onOpen(this.colour)}}},{key:"closeHandler",value:function(e){var t=e&&e.type,r=!1;if(!e)r=!0;else if(t===x||t===T){var i=(this.__containedEvent||0)+100;e.timeStamp>i&&(r=!0)}else G(e),r=!0;r&&this.hide()&&(this.settings.parent.style.pointerEvents="",t!==x&&this.settings.parent.focus(),this.onClose&&this.onClose(this.colour))}},{key:"movePopup",value:function(e,t){this.closeHandler(),this.setOptions(e),t&&this.openHandler()}},{key:"setColor",value:function(e,t){this._setColor(e,{silent:t})}},{key:"_setColor",value:function(e,t){if(typeof e=="string"&&(e=e.trim()),!!e){t=t||{};var r=void 0;try{r=new N(e)}catch(o){if(t.failSilently)return;throw o}if(!this.settings.alpha){var i=r.hsla;i[3]=1,r.hsla=i}this.colour=this.color=r,this._setHSLA(null,null,null,null,t)}}},{key:"setColour",value:function(e,t){this.setColor(e,t)}},{key:"show",value:function(){var e=this.settings.parent;if(!e)return!1;if(this.domElement){var t=this._toggleDOM(!0);return this._setPosition(),t}var r=this.settings.template||'<div class="picker_wrapper" tabindex="-1"><div class="picker_arrow"></div><div class="picker_hue picker_slider"><div class="picker_selector"></div></div><div class="picker_sl"><div class="picker_selector"></div></div><div class="picker_alpha picker_slider"><div class="picker_selector"></div></div><div class="picker_editor"><input aria-label="Type a color name or hex value"/></div><div class="picker_sample"></div><div class="picker_done"><button>Ok</button></div><div class="picker_cancel"><button>Cancel</button></div></div>',i=F(r);return this.domElement=i,this._domH=_(".picker_hue",i),this._domSL=_(".picker_sl",i),this._domA=_(".picker_alpha",i),this._domEdit=_(".picker_editor input",i),this._domSample=_(".picker_sample",i),this._domOkay=_(".picker_done button",i),this._domCancel=_(".picker_cancel button",i),i.classList.add("layout_"+this.settings.layout),this.settings.alpha||i.classList.add("no_alpha"),this.settings.editor||i.classList.add("no_editor"),this.settings.cancelButton||i.classList.add("no_cancel"),this._ifPopup(function(){return i.classList.add("popup")}),this._setPosition(),this.colour?this._updateUI():this._setColor(this.settings.defaultColor),this._bindEvents(),!0}},{key:"hide",value:function(){return this._toggleDOM(!1)}},{key:"destroy",value:function(){this._events.destroy(),this.domElement&&this.settings.parent.removeChild(this.domElement)}},{key:"_bindEvents",value:function(){var e=this,t=this,r=this.domElement,i=this._events;function o(s,p,f){i.add(s,p,f)}o(r,"click",function(s){return s.preventDefault()}),L(i,this._domH,function(s,p){return t._setHSLA(s)}),L(i,this._domSL,function(s,p){return t._setHSLA(null,s,1-p)}),this.settings.alpha&&L(i,this._domA,function(s,p){return t._setHSLA(null,null,null,1-p)});var c=this._domEdit;o(c,"input",function(s){t._setColor(this.value,{fromEditor:!0,failSilently:!0})}),o(c,"focus",function(s){var p=this;p.selectionStart===p.selectionEnd&&p.select()}),this._ifPopup(function(){var s=function(u){return e.closeHandler(u)};o(window,x,s),o(window,T,s),H(i,r,["Esc","Escape"],s);var p=function(u){e.__containedEvent=u.timeStamp};o(r,x,p),o(r,T,p),o(e._domCancel,"click",s)});var a=function(p){e._ifPopup(function(){return e.closeHandler(p)}),e.onDone&&e.onDone(e.colour)};o(this._domOkay,"click",a),H(i,r,["Enter"],a)}},{key:"_setPosition",value:function(){var e=this.settings.parent,t=this.domElement;e!==t.parentNode&&e.appendChild(t),this._ifPopup(function(r){getComputedStyle(e).position==="static"&&(e.style.position="relative");var i=r===!0?"popup_right":"popup_"+r;["popup_top","popup_bottom","popup_left","popup_right"].forEach(function(o){o===i?t.classList.add(o):t.classList.remove(o)}),t.classList.add(i)})}},{key:"_setHSLA",value:function(e,t,r,i,o){o=o||{};var c=this.colour,a=c.hsla;[e,t,r,i].forEach(function(s,p){(s||s===0)&&(a[p]=s)}),c.hsla=a,this._updateUI(o),this.onChange&&!o.silent&&this.onChange(c)}},{key:"_updateUI",value:function(e){if(!this.domElement)return;e=e||{};var t=this.colour,r=t.hsla,i="hsl("+r[0]*B+", 100%, 50%)",o=t.hslString,c=t.hslaString,a=this._domH,s=this._domSL,p=this._domA,f=_(".picker_selector",a),u=_(".picker_selector",s),d=_(".picker_selector",p);function b(M,S,C){S.style.left=C*100+"%"}function m(M,S,C){S.style.top=C*100+"%"}b(a,f,r[0]),this._domSL.style.backgroundColor=this._domH.style.color=i,b(s,u,r[1]),m(s,u,1-r[2]),s.style.color=o,m(p,d,1-r[3]);var h=o,v=h.replace("hsl","hsla").replace(")",", 0)"),g="linear-gradient("+[h,v]+")";if(this._domA.style.background=g+", "+U,!e.fromEditor){var E=this.settings.editorFormat,k=this.settings.alpha,w=void 0;switch(E){case"rgb":w=t.printRGB(k);break;case"hsl":w=t.printHSL(k);break;default:w=t.printHex(k)}this._domEdit.value=w}this._domSample.style.color=c}},{key:"_ifPopup",value:function(e,t){this.settings.parent&&this.settings.popup?e&&e(this.settings.popup):t&&t()}},{key:"_toggleDOM",value:function(e){var t=this.domElement;if(!t)return!1;var r=e?"":"none",i=t.style.display!==r;return i&&(t.style.display=r),i}}]),l})();{var D=document.createElement("style");D.textContent='.picker_wrapper.no_alpha .picker_alpha{display:none}.picker_wrapper.no_editor .picker_editor{position:absolute;z-index:-1;opacity:0}.picker_wrapper.no_cancel .picker_cancel{display:none}.layout_default.picker_wrapper{display:flex;flex-flow:row wrap;justify-content:space-between;align-items:stretch;font-size:10px;width:25em;padding:.5em}.layout_default.picker_wrapper input,.layout_default.picker_wrapper button{font-size:1rem}.layout_default.picker_wrapper>*{margin:.5em}.layout_default.picker_wrapper::before{content:"";display:block;width:100%;height:0;order:1}.layout_default .picker_slider,.layout_default .picker_selector{padding:1em}.layout_default .picker_hue{width:100%}.layout_default .picker_sl{flex:1 1 auto}.layout_default .picker_sl::before{content:"";display:block;padding-bottom:100%}.layout_default .picker_editor{order:1;width:6.5rem}.layout_default .picker_editor input{width:100%;height:100%}.layout_default .picker_sample{order:1;flex:1 1 auto}.layout_default .picker_done,.layout_default .picker_cancel{order:1}.picker_wrapper{box-sizing:border-box;background:#f2f2f2;box-shadow:0 0 0 1px silver;cursor:default;font-family:sans-serif;color:#444;pointer-events:auto}.picker_wrapper:focus{outline:none}.picker_wrapper button,.picker_wrapper input{box-sizing:border-box;border:none;box-shadow:0 0 0 1px silver;outline:none}.picker_wrapper button:focus,.picker_wrapper button:active,.picker_wrapper input:focus,.picker_wrapper input:active{box-shadow:0 0 2px 1px #1e90ff}.picker_wrapper button{padding:.4em .6em;cursor:pointer;background-color:#f5f5f5;background-image:linear-gradient(0deg, gainsboro, transparent)}.picker_wrapper button:active{background-image:linear-gradient(0deg, transparent, gainsboro)}.picker_wrapper button:hover{background-color:#fff}.picker_selector{position:absolute;z-index:1;display:block;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);border:2px solid #fff;border-radius:100%;box-shadow:0 0 3px 1px #67b9ff;background:currentColor;cursor:pointer}.picker_slider .picker_selector{border-radius:2px}.picker_hue{position:relative;background-image:linear-gradient(90deg, red, yellow, lime, cyan, blue, magenta, red);box-shadow:0 0 0 1px silver}.picker_sl{position:relative;box-shadow:0 0 0 1px silver;background-image:linear-gradient(180deg, white, rgba(255, 255, 255, 0) 50%),linear-gradient(0deg, black, rgba(0, 0, 0, 0) 50%),linear-gradient(90deg, #808080, rgba(128, 128, 128, 0))}.picker_alpha,.picker_sample{position:relative;background:linear-gradient(45deg, lightgrey 25%, transparent 25%, transparent 75%, lightgrey 75%) 0 0/2em 2em,linear-gradient(45deg, lightgrey 25%, white 25%, white 75%, lightgrey 75%) 1em 1em/2em 2em;box-shadow:0 0 0 1px silver}.picker_alpha .picker_selector,.picker_sample .picker_selector{background:none}.picker_editor input{font-family:monospace;padding:.2em .4em}.picker_sample::before{content:"";position:absolute;display:block;width:100%;height:100%;background:currentColor}.picker_arrow{position:absolute;z-index:-1}.picker_wrapper.popup{position:absolute;z-index:2;margin:1.5em}.picker_wrapper.popup,.picker_wrapper.popup .picker_arrow::before,.picker_wrapper.popup .picker_arrow::after{background:#f2f2f2;box-shadow:0 0 10px 1px rgba(0,0,0,.4)}.picker_wrapper.popup .picker_arrow{width:3em;height:3em;margin:0}.picker_wrapper.popup .picker_arrow::before,.picker_wrapper.popup .picker_arrow::after{content:"";display:block;position:absolute;top:0;left:0;z-index:-99}.picker_wrapper.popup .picker_arrow::before{width:100%;height:100%;-webkit-transform:skew(45deg);transform:skew(45deg);-webkit-transform-origin:0 100%;transform-origin:0 100%}.picker_wrapper.popup .picker_arrow::after{width:150%;height:150%;box-shadow:none}.popup.popup_top{bottom:100%;left:0}.popup.popup_top .picker_arrow{bottom:0;left:0;-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.popup.popup_bottom{top:100%;left:0}.popup.popup_bottom .picker_arrow{top:0;left:0;-webkit-transform:rotate(90deg) scale(1, -1);transform:rotate(90deg) scale(1, -1)}.popup.popup_left{top:0;right:100%}.popup.popup_left .picker_arrow{top:0;right:0;-webkit-transform:scale(-1, 1);transform:scale(-1, 1)}.popup.popup_right{top:0;left:100%}.popup.popup_right .picker_arrow{top:0;left:0}',document.documentElement.firstElementChild.appendChild(D),K.StyleElement=D}export{K as default};
@@ -1 +0,0 @@
1
-
@@ -1 +0,0 @@
1
- import{ck as o,c8 as t}from"./app.js";import{A as p}from"./app-layout-6EwNBvnR.js";import"./jsoneditor-DVNQmA6G.js";import"./handsontable-BI98OF5R.js";import"./monaco-Bl4zdWCn.js";import"./app-shell-D8wtkECO.js";import"./app-sidebar-DfGjL-2K.js";import"./nav-main-rTH0PfDw.js";import"./material-icon-Bx9pGQiQ.js";import"./app-sidebar-header-BZbIBQjq.js";import"./breadcrumbs-CODaqVkB.js";import"./nav-user-Bj6cWs0a.js";import"./user-info-BgSbT02v.js";import"./user-menu-content-TQTXHIv6.js";import"./theme-switcher-Dm8EOGzx.js";import"./icon-C2JNaLxH.js";import"./RelationDialogStack-DI2bZxQX.js";import"./dynamic-controls-BsrJhPDY.js";import"./input-error-CH2caTtO.js";const i=[];function L(){const r=o();return t.jsx(p,{breadcrumbs:i,children:t.jsxs("div",{className:"flex h-full flex-1 flex-col gap-4 rounded-xl p-4",children:[r.props.title&&t.jsx("div",{className:"text-3xl mb-8",children:r.props.title}),t.jsx("div",{className:"text-3xl mb-8",children:"Adminizer"}),r.props.text&&t.jsx("div",{dangerouslySetInnerHTML:{__html:r.props.text}})]})})}export{L as default};
@@ -1 +0,0 @@
1
- export default function edit(req: ReqType, res: ResType): Promise<void>;
@@ -1,8 +0,0 @@
1
- import { ControllerHelper } from "../../helpers/controllerHelper.js";
2
- import { DataAccessor } from "../../lib/DataAccessor.js";
3
- export default async function edit(req, res) {
4
- let modelResource = ControllerHelper.findModelResource(req);
5
- let dataAccessor = new DataAccessor(req.adminizer, req.user, modelResource, "edit");
6
- let record = await modelResource.model.findOne({ where: { id: req.params.id } }, dataAccessor);
7
- return res.redirect(`${req.adminizer.config.routePrefix}/catalog/navigation/${record.label}`);
8
- }
@@ -1,8 +0,0 @@
1
- import { AbstractAiModelService } from './AbstractAiModelService';
2
- import { AiAssistantMessage } from '../../interfaces/types';
3
- import { UserAP } from '../../models/UserAP';
4
- import { Adminizer } from '../Adminizer';
5
- export declare class DummyAiModelService extends AbstractAiModelService {
6
- constructor(adminizer: Adminizer);
7
- generateReply(_prompt: string, _history: AiAssistantMessage[], _user: UserAP): Promise<string>;
8
- }
@@ -1,14 +0,0 @@
1
- import { AbstractAiModelService } from './AbstractAiModelService.js';
2
- const DUMMY_RESPONSE = 'Ai-assystant dummy in deveploment';
3
- export class DummyAiModelService extends AbstractAiModelService {
4
- constructor(adminizer) {
5
- super(adminizer, {
6
- id: 'dummy',
7
- name: 'Dummy assistant',
8
- description: 'Development placeholder model that returns a static response.',
9
- });
10
- }
11
- async generateReply(_prompt, _history, _user) {
12
- return DUMMY_RESPONSE;
13
- }
14
- }
@@ -1,24 +0,0 @@
1
- import { AbstractAiModelService } from './AbstractAiModelService';
2
- import { AiAssistantMessage } from '../../interfaces/types';
3
- import { UserAP } from '../../models/UserAP';
4
- import { Adminizer } from '../Adminizer';
5
- import { ActionType } from '../../interfaces/adminpanelConfig';
6
- import { ModelResource } from '../../interfaces/types';
7
- import { DataAccessor } from '../DataAccessor';
8
- type DataAccessorFactory = (modelResource: ModelResource, user: UserAP, action: ActionType) => DataAccessor;
9
- export declare class OpenAiModelService extends AbstractAiModelService {
10
- private readonly createAccessor;
11
- constructor(adminizer: Adminizer, accessorFactory?: DataAccessorFactory);
12
- generateReply(prompt: string, _history: AiAssistantMessage[], user: UserAP): Promise<string>;
13
- private handleCreate;
14
- private parseInstruction;
15
- private usageMessage;
16
- private resolveModelResource;
17
- private normalizeModelConfig;
18
- private userHasPermission;
19
- private getPermissionToken;
20
- private extractPrimaryKey;
21
- private extractString;
22
- private extractObject;
23
- }
24
- export {};
@@ -1,184 +0,0 @@
1
- import { AbstractAiModelService } from './AbstractAiModelService.js';
2
- import { Adminizer } from '../Adminizer.js';
3
- import { DataAccessor } from '../DataAccessor.js';
4
- const ACTION_TOKENS = {
5
- add: 'create',
6
- edit: 'update',
7
- list: 'read',
8
- view: 'read',
9
- remove: 'delete',
10
- };
11
- export class OpenAiModelService extends AbstractAiModelService {
12
- createAccessor;
13
- constructor(adminizer, accessorFactory) {
14
- super(adminizer, {
15
- id: 'openai',
16
- name: 'OpenAI fixture agent',
17
- description: 'Executes structured commands with DataAccessor using the current user permissions.',
18
- });
19
- this.createAccessor = accessorFactory ?? ((modelResource, user, action) => new DataAccessor(adminizer, user, modelResource, action));
20
- }
21
- async generateReply(prompt, _history, user) {
22
- const instruction = this.parseInstruction(prompt);
23
- if (!instruction) {
24
- return this.usageMessage();
25
- }
26
- switch (instruction.action) {
27
- case 'create':
28
- return this.handleCreate(instruction, user);
29
- default:
30
- return `Unsupported action "${instruction.action}". The OpenAI agent currently supports only the "create" action.`;
31
- }
32
- }
33
- async handleCreate(instruction, user) {
34
- const modelResource = this.resolveModelResource(instruction.modelResource);
35
- if (!modelResource || !modelResource.model) {
36
- return `Model "${instruction.modelResource}" is not available in this project.`;
37
- }
38
- if (!this.userHasPermission(modelResource, user, 'add')) {
39
- return `User "${user.login}" does not have permission to create ${modelResource.name} records.`;
40
- }
41
- if (!instruction.payload || typeof instruction.payload !== 'object') {
42
- return 'The "create" action requires a "data" object with field values.';
43
- }
44
- try {
45
- const accessor = this.createAccessor(modelResource, user, 'add');
46
- const created = await modelResource.model.create(instruction.payload, accessor);
47
- const preview = JSON.stringify(created, null, 2);
48
- const recordId = this.extractPrimaryKey(created, modelResource);
49
- const idMessage = recordId !== undefined ? ` (id: ${recordId})` : '';
50
- return `Record created in ${modelResource.name}${idMessage}:\n${preview}`;
51
- }
52
- catch (error) {
53
- const message = error instanceof Error ? error.message : String(error);
54
- Adminizer.log.error('OpenAI agent failed to create record', error);
55
- return `Failed to create ${modelResource.name} record: ${message}`;
56
- }
57
- }
58
- parseInstruction(prompt) {
59
- try {
60
- const parsed = JSON.parse(prompt);
61
- if (!parsed || typeof parsed !== 'object') {
62
- return null;
63
- }
64
- const rawAction = this.extractString(parsed, ['action', 'type']);
65
- if (!rawAction) {
66
- return null;
67
- }
68
- const action = rawAction.toLowerCase();
69
- if (!['create', 'list', 'update', 'delete'].includes(action)) {
70
- return null;
71
- }
72
- const modelResource = this.extractString(parsed, ['modelResource', 'model']);
73
- if (!modelResource) {
74
- return null;
75
- }
76
- const payload = this.extractObject(parsed, ['data', 'payload', 'record']);
77
- const criteria = this.extractObject(parsed, ['criteria', 'where', 'filter']);
78
- return {
79
- action: action,
80
- modelResource,
81
- payload,
82
- criteria,
83
- };
84
- }
85
- catch {
86
- return null;
87
- }
88
- }
89
- usageMessage() {
90
- return [
91
- 'Provide JSON instructions so the OpenAI agent can execute them with your permissions.',
92
- 'Example:',
93
- '```json',
94
- '{',
95
- ' "action": "create",',
96
- ' "modelResource": "Example",',
97
- ' "data": { "title": "Hello from the agent" }',
98
- '}',
99
- '```',
100
- 'The agent uses DataAccessor, so any field-level restrictions from your account are respected.',
101
- ].join('\n');
102
- }
103
- resolveModelResource(modelName) {
104
- const models = this.adminizer.config.models;
105
- if (!models) {
106
- return null;
107
- }
108
- const loweredName = modelName.toLowerCase();
109
- const match = Object.entries(models).find(([key, config]) => {
110
- if (key.toLowerCase() === loweredName) {
111
- return true;
112
- }
113
- if (typeof config === 'object' && config && 'model' in config && typeof config.model === 'string') {
114
- return config.model.toLowerCase() === loweredName;
115
- }
116
- return false;
117
- });
118
- if (!match) {
119
- return null;
120
- }
121
- const [configName, configValue] = match;
122
- const normalizedConfig = this.normalizeModelConfig(configName, configValue);
123
- const model = this.adminizer.modelHandler.model.get(normalizedConfig.model);
124
- if (!model) {
125
- return null;
126
- }
127
- return {
128
- name: configName,
129
- uri: `${this.adminizer.config.routePrefix}/model/${configName}`,
130
- config: normalizedConfig,
131
- model,
132
- };
133
- }
134
- normalizeModelConfig(name, config) {
135
- const baseConfig = {
136
- model: name,
137
- icon: 'description',
138
- title: name,
139
- list: true,
140
- add: true,
141
- edit: true,
142
- remove: true,
143
- view: true,
144
- };
145
- if (typeof config === 'boolean') {
146
- return config ? baseConfig : { ...baseConfig, list: false, add: false, edit: false, remove: false, view: false };
147
- }
148
- return { ...baseConfig, ...config };
149
- }
150
- userHasPermission(modelResource, user, action) {
151
- const token = this.getPermissionToken(modelResource, action);
152
- return this.adminizer.accessRightsHelper.hasPermission(token, user);
153
- }
154
- getPermissionToken(modelResource, action) {
155
- const verb = ACTION_TOKENS[action];
156
- const modelName = modelResource.model?.modelname ?? modelResource.config?.model ?? modelResource.name;
157
- return `${verb}-${modelName}-model`.toLowerCase();
158
- }
159
- extractPrimaryKey(record, modelResource) {
160
- if (!record) {
161
- return undefined;
162
- }
163
- const primaryKey = modelResource.model?.primaryKey ?? 'id';
164
- return record[primaryKey];
165
- }
166
- extractString(source, keys) {
167
- for (const key of keys) {
168
- const value = source?.[key];
169
- if (typeof value === 'string' && value.trim().length > 0) {
170
- return value.trim();
171
- }
172
- }
173
- return undefined;
174
- }
175
- extractObject(source, keys) {
176
- for (const key of keys) {
177
- const value = source?.[key];
178
- if (value && typeof value === 'object' && !Array.isArray(value)) {
179
- return value;
180
- }
181
- }
182
- return undefined;
183
- }
184
- }
@@ -1,49 +0,0 @@
1
- import { AbstractCatalog, ActionHandler, Item } from "./AbstractCatalog";
2
- import { NavigationConfig } from "../../interfaces/adminpanelConfig";
3
- import { Adminizer } from "../Adminizer";
4
- export interface NavItem extends Item {
5
- urlPath?: string;
6
- modelId?: string | number;
7
- targetBlank?: boolean;
8
- visible?: boolean;
9
- }
10
- export declare class StorageService {
11
- protected storageMap: Map<string | number, NavItem>;
12
- protected id: string;
13
- protected model: string;
14
- protected readonly adminizer: Adminizer;
15
- readonly ready: Promise<void>;
16
- constructor(adminizer: Adminizer, id: string, model: string);
17
- private navigationModel;
18
- initModel(): Promise<void>;
19
- getId(): string;
20
- buildTree(): Promise<any>;
21
- populateFromTree(tree: any[]): Promise<void>;
22
- setElement(id: string | number, item: NavItem, init?: boolean): Promise<NavItem>;
23
- removeElementById(id: string | number): Promise<void>;
24
- findElementById(id: string | number): Promise<NavItem | undefined>;
25
- findElementByModelId(modelId: string | number): Promise<NavItem[] | undefined>;
26
- saveToDB(): Promise<void>;
27
- findElementsByParentId(parentId: string | number, type: string | null): Promise<NavItem[]>;
28
- getAllElements(): Promise<NavItem[]>;
29
- search(s: string, type: string): Promise<NavItem[]>;
30
- }
31
- export declare class StorageServices {
32
- protected storages: StorageService[];
33
- constructor();
34
- add(storage: StorageService): void;
35
- get(id: string): StorageService;
36
- getAll(): StorageService[];
37
- /** Resolves when all sections have finished loading from the database */
38
- ready(): Promise<void>;
39
- }
40
- export declare class Navigation extends AbstractCatalog {
41
- readonly name: string;
42
- readonly slug: string;
43
- readonly icon: string;
44
- readonly actionHandlers: ActionHandler[];
45
- idList: string[];
46
- storageServices: StorageServices;
47
- constructor(adminizer: Adminizer, config: NavigationConfig);
48
- getIdList(): Promise<string[]>;
49
- }