@statezero/core 0.2.36 → 0.2.38

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 (301) hide show
  1. package/dist/adaptors/vue/components/LayoutRenderer.js +166 -0
  2. package/dist/adaptors/vue/components/defaults/AlertElement.js +31 -0
  3. package/dist/adaptors/vue/components/defaults/DisplayElement.js +44 -0
  4. package/dist/adaptors/vue/components/defaults/DividerElement.js +10 -0
  5. package/dist/adaptors/vue/components/defaults/ErrorBlock.js +24 -0
  6. package/dist/adaptors/vue/components/defaults/GroupElement.js +41 -0
  7. package/dist/adaptors/vue/components/defaults/LabelElement.js +21 -0
  8. package/dist/adaptors/vue/components/defaults/TabsElement.js +38 -0
  9. package/package.json +7 -6
  10. package/dist/actions/backend1/django_app/calculate-hash.d.ts +0 -57
  11. package/dist/actions/backend1/django_app/calculate-hash.js +0 -80
  12. package/dist/actions/backend1/django_app/calculate-hash.schema.json +0 -148
  13. package/dist/actions/backend1/django_app/get-current-username.d.ts +0 -29
  14. package/dist/actions/backend1/django_app/get-current-username.js +0 -65
  15. package/dist/actions/backend1/django_app/get-current-username.schema.json +0 -47
  16. package/dist/actions/backend1/django_app/get-server-status.d.ts +0 -38
  17. package/dist/actions/backend1/django_app/get-server-status.js +0 -68
  18. package/dist/actions/backend1/django_app/get-server-status.schema.json +0 -93
  19. package/dist/actions/backend1/django_app/get-user-info.d.ts +0 -44
  20. package/dist/actions/backend1/django_app/get-user-info.js +0 -70
  21. package/dist/actions/backend1/django_app/get-user-info.schema.json +0 -127
  22. package/dist/actions/backend1/django_app/index.d.ts +0 -1
  23. package/dist/actions/backend1/django_app/index.js +0 -6
  24. package/dist/actions/backend1/django_app/process-data.d.ts +0 -51
  25. package/dist/actions/backend1/django_app/process-data.js +0 -78
  26. package/dist/actions/backend1/django_app/process-data.schema.json +0 -117
  27. package/dist/actions/backend1/django_app/send-notification.d.ts +0 -55
  28. package/dist/actions/backend1/django_app/send-notification.js +0 -81
  29. package/dist/actions/backend1/django_app/send-notification.schema.json +0 -175
  30. package/dist/actions/backend1/index.d.ts +0 -1
  31. package/dist/actions/backend1/index.js +0 -1
  32. package/dist/actions/default/django_app/calculate-hash.d.ts +0 -57
  33. package/dist/actions/default/django_app/calculate-hash.js +0 -80
  34. package/dist/actions/default/django_app/calculate-hash.schema.json +0 -148
  35. package/dist/actions/default/django_app/get-current-username.d.ts +0 -29
  36. package/dist/actions/default/django_app/get-current-username.js +0 -65
  37. package/dist/actions/default/django_app/get-current-username.schema.json +0 -47
  38. package/dist/actions/default/django_app/get-server-status.d.ts +0 -38
  39. package/dist/actions/default/django_app/get-server-status.js +0 -68
  40. package/dist/actions/default/django_app/get-server-status.schema.json +0 -93
  41. package/dist/actions/default/django_app/get-user-info.d.ts +0 -44
  42. package/dist/actions/default/django_app/get-user-info.js +0 -70
  43. package/dist/actions/default/django_app/get-user-info.schema.json +0 -127
  44. package/dist/actions/default/django_app/index.d.ts +0 -1
  45. package/dist/actions/default/django_app/index.js +0 -6
  46. package/dist/actions/default/django_app/process-data.d.ts +0 -51
  47. package/dist/actions/default/django_app/process-data.js +0 -78
  48. package/dist/actions/default/django_app/process-data.schema.json +0 -117
  49. package/dist/actions/default/django_app/send-notification.d.ts +0 -55
  50. package/dist/actions/default/django_app/send-notification.js +0 -81
  51. package/dist/actions/default/django_app/send-notification.schema.json +0 -175
  52. package/dist/actions/default/index.d.ts +0 -1
  53. package/dist/actions/default/index.js +0 -1
  54. package/dist/actions/index.d.ts +0 -1
  55. package/dist/actions/index.js +0 -5
  56. package/dist/adaptors/react/composables.d.ts +0 -1
  57. package/dist/adaptors/react/composables.js +0 -4
  58. package/dist/adaptors/react/index.d.ts +0 -1
  59. package/dist/adaptors/react/index.js +0 -1
  60. package/dist/adaptors/vue/components/defaults/index.d.ts +0 -7
  61. package/dist/adaptors/vue/components/defaults/index.js +0 -31
  62. package/dist/adaptors/vue/components/index.d.ts +0 -1
  63. package/dist/adaptors/vue/components/index.js +0 -7
  64. package/dist/adaptors/vue/composables.d.ts +0 -2
  65. package/dist/adaptors/vue/composables.js +0 -44
  66. package/dist/adaptors/vue/index.d.ts +0 -3
  67. package/dist/adaptors/vue/index.js +0 -4
  68. package/dist/adaptors/vue/reactivity.d.ts +0 -18
  69. package/dist/adaptors/vue/reactivity.js +0 -132
  70. package/dist/cli/commands/sync.d.ts +0 -6
  71. package/dist/cli/commands/sync.js +0 -30
  72. package/dist/cli/commands/syncActions.d.ts +0 -46
  73. package/dist/cli/commands/syncActions.js +0 -717
  74. package/dist/cli/commands/syncModels.d.ts +0 -132
  75. package/dist/cli/commands/syncModels.js +0 -1120
  76. package/dist/cli/configFileLoader.d.ts +0 -10
  77. package/dist/cli/configFileLoader.js +0 -85
  78. package/dist/cli/index.d.ts +0 -2
  79. package/dist/cli/index.js +0 -22
  80. package/dist/config.d.ts +0 -57
  81. package/dist/config.js +0 -273
  82. package/dist/core/eventReceivers.d.ts +0 -185
  83. package/dist/core/eventReceivers.js +0 -266
  84. package/dist/core/utils.d.ts +0 -8
  85. package/dist/core/utils.js +0 -62
  86. package/dist/errorHandler.d.ts +0 -21
  87. package/dist/errorHandler.js +0 -27
  88. package/dist/filtering/localFiltering.d.ts +0 -110
  89. package/dist/filtering/localFiltering.js +0 -1080
  90. package/dist/flavours/django/dates.d.ts +0 -34
  91. package/dist/flavours/django/dates.js +0 -113
  92. package/dist/flavours/django/errors.d.ts +0 -138
  93. package/dist/flavours/django/errors.js +0 -195
  94. package/dist/flavours/django/f.d.ts +0 -6
  95. package/dist/flavours/django/f.js +0 -91
  96. package/dist/flavours/django/files.d.ts +0 -62
  97. package/dist/flavours/django/files.js +0 -355
  98. package/dist/flavours/django/makeApiCall.d.ts +0 -36
  99. package/dist/flavours/django/makeApiCall.js +0 -169
  100. package/dist/flavours/django/manager.d.ts +0 -204
  101. package/dist/flavours/django/manager.js +0 -222
  102. package/dist/flavours/django/model.d.ts +0 -137
  103. package/dist/flavours/django/model.js +0 -366
  104. package/dist/flavours/django/operationFactory.d.ts +0 -73
  105. package/dist/flavours/django/operationFactory.js +0 -248
  106. package/dist/flavours/django/q.d.ts +0 -70
  107. package/dist/flavours/django/q.js +0 -43
  108. package/dist/flavours/django/queryExecutor.d.ts +0 -149
  109. package/dist/flavours/django/queryExecutor.js +0 -590
  110. package/dist/flavours/django/querySet.d.ts +0 -301
  111. package/dist/flavours/django/querySet.js +0 -736
  112. package/dist/flavours/django/serializers.d.ts +0 -39
  113. package/dist/flavours/django/serializers.js +0 -296
  114. package/dist/flavours/django/tempPk.d.ts +0 -31
  115. package/dist/flavours/django/tempPk.js +0 -92
  116. package/dist/flavours/django/utils.d.ts +0 -19
  117. package/dist/flavours/django/utils.js +0 -29
  118. package/dist/index.d.ts +0 -46
  119. package/dist/index.js +0 -48
  120. package/dist/models/backend1/django_app/comprehensivemodel.d.ts +0 -894
  121. package/dist/models/backend1/django_app/comprehensivemodel.js +0 -71
  122. package/dist/models/backend1/django_app/comprehensivemodel.schema.json +0 -870
  123. package/dist/models/backend1/django_app/custompkmodel.d.ts +0 -92
  124. package/dist/models/backend1/django_app/custompkmodel.js +0 -69
  125. package/dist/models/backend1/django_app/custompkmodel.schema.json +0 -71
  126. package/dist/models/backend1/django_app/dailyrate.d.ts +0 -230
  127. package/dist/models/backend1/django_app/dailyrate.js +0 -71
  128. package/dist/models/backend1/django_app/dailyrate.schema.json +0 -212
  129. package/dist/models/backend1/django_app/deepmodellevel1.d.ts +0 -140
  130. package/dist/models/backend1/django_app/deepmodellevel1.js +0 -72
  131. package/dist/models/backend1/django_app/deepmodellevel1.schema.json +0 -114
  132. package/dist/models/backend1/django_app/deepmodellevel2.d.ts +0 -118
  133. package/dist/models/backend1/django_app/deepmodellevel2.js +0 -71
  134. package/dist/models/backend1/django_app/deepmodellevel2.schema.json +0 -92
  135. package/dist/models/backend1/django_app/deepmodellevel3.d.ts +0 -92
  136. package/dist/models/backend1/django_app/deepmodellevel3.js +0 -69
  137. package/dist/models/backend1/django_app/deepmodellevel3.schema.json +0 -69
  138. package/dist/models/backend1/django_app/dummymodel.d.ts +0 -134
  139. package/dist/models/backend1/django_app/dummymodel.js +0 -71
  140. package/dist/models/backend1/django_app/dummymodel.schema.json +0 -109
  141. package/dist/models/backend1/django_app/dummyrelatedmodel.d.ts +0 -92
  142. package/dist/models/backend1/django_app/dummyrelatedmodel.js +0 -69
  143. package/dist/models/backend1/django_app/dummyrelatedmodel.schema.json +0 -69
  144. package/dist/models/backend1/django_app/filetest.d.ts +0 -140
  145. package/dist/models/backend1/django_app/filetest.js +0 -69
  146. package/dist/models/backend1/django_app/filetest.schema.json +0 -111
  147. package/dist/models/backend1/django_app/index.d.ts +0 -1
  148. package/dist/models/backend1/django_app/index.js +0 -21
  149. package/dist/models/backend1/django_app/m2mdepthtestlevel1.d.ts +0 -118
  150. package/dist/models/backend1/django_app/m2mdepthtestlevel1.js +0 -71
  151. package/dist/models/backend1/django_app/m2mdepthtestlevel1.schema.json +0 -94
  152. package/dist/models/backend1/django_app/m2mdepthtestlevel2.d.ts +0 -118
  153. package/dist/models/backend1/django_app/m2mdepthtestlevel2.js +0 -71
  154. package/dist/models/backend1/django_app/m2mdepthtestlevel2.schema.json +0 -94
  155. package/dist/models/backend1/django_app/m2mdepthtestlevel3.d.ts +0 -134
  156. package/dist/models/backend1/django_app/m2mdepthtestlevel3.js +0 -71
  157. package/dist/models/backend1/django_app/m2mdepthtestlevel3.schema.json +0 -112
  158. package/dist/models/backend1/django_app/modelwithcustompkrelation.d.ts +0 -118
  159. package/dist/models/backend1/django_app/modelwithcustompkrelation.js +0 -71
  160. package/dist/models/backend1/django_app/modelwithcustompkrelation.schema.json +0 -93
  161. package/dist/models/backend1/django_app/modelwithrestrictedfields.d.ts +0 -134
  162. package/dist/models/backend1/django_app/modelwithrestrictedfields.js +0 -71
  163. package/dist/models/backend1/django_app/modelwithrestrictedfields.schema.json +0 -111
  164. package/dist/models/backend1/django_app/namefiltercustompkmodel.d.ts +0 -92
  165. package/dist/models/backend1/django_app/namefiltercustompkmodel.js +0 -69
  166. package/dist/models/backend1/django_app/namefiltercustompkmodel.schema.json +0 -71
  167. package/dist/models/backend1/django_app/order.d.ts +0 -220
  168. package/dist/models/backend1/django_app/order.js +0 -71
  169. package/dist/models/backend1/django_app/order.schema.json +0 -203
  170. package/dist/models/backend1/django_app/orderitem.d.ts +0 -172
  171. package/dist/models/backend1/django_app/orderitem.js +0 -72
  172. package/dist/models/backend1/django_app/orderitem.schema.json +0 -149
  173. package/dist/models/backend1/django_app/product.d.ts +0 -254
  174. package/dist/models/backend1/django_app/product.js +0 -71
  175. package/dist/models/backend1/django_app/product.schema.json +0 -277
  176. package/dist/models/backend1/django_app/productcategory.d.ts +0 -92
  177. package/dist/models/backend1/django_app/productcategory.js +0 -69
  178. package/dist/models/backend1/django_app/productcategory.schema.json +0 -70
  179. package/dist/models/backend1/django_app/rateplan.d.ts +0 -92
  180. package/dist/models/backend1/django_app/rateplan.js +0 -69
  181. package/dist/models/backend1/django_app/rateplan.schema.json +0 -70
  182. package/dist/models/backend1/django_app/restrictedfieldrelatedmodel.d.ts +0 -108
  183. package/dist/models/backend1/django_app/restrictedfieldrelatedmodel.js +0 -69
  184. package/dist/models/backend1/django_app/restrictedfieldrelatedmodel.schema.json +0 -87
  185. package/dist/models/backend1/fileobject.d.ts +0 -4
  186. package/dist/models/backend1/fileobject.js +0 -9
  187. package/dist/models/backend1/index.d.ts +0 -2
  188. package/dist/models/backend1/index.js +0 -2
  189. package/dist/models/default/django_app/comprehensivemodel.d.ts +0 -894
  190. package/dist/models/default/django_app/comprehensivemodel.js +0 -71
  191. package/dist/models/default/django_app/comprehensivemodel.schema.json +0 -870
  192. package/dist/models/default/django_app/custompkmodel.d.ts +0 -92
  193. package/dist/models/default/django_app/custompkmodel.js +0 -69
  194. package/dist/models/default/django_app/custompkmodel.schema.json +0 -71
  195. package/dist/models/default/django_app/dailyrate.d.ts +0 -230
  196. package/dist/models/default/django_app/dailyrate.js +0 -71
  197. package/dist/models/default/django_app/dailyrate.schema.json +0 -212
  198. package/dist/models/default/django_app/deepmodellevel1.d.ts +0 -128
  199. package/dist/models/default/django_app/deepmodellevel1.js +0 -72
  200. package/dist/models/default/django_app/deepmodellevel1.schema.json +0 -102
  201. package/dist/models/default/django_app/deepmodellevel2.d.ts +0 -106
  202. package/dist/models/default/django_app/deepmodellevel2.js +0 -71
  203. package/dist/models/default/django_app/deepmodellevel2.schema.json +0 -80
  204. package/dist/models/default/django_app/deepmodellevel3.d.ts +0 -80
  205. package/dist/models/default/django_app/deepmodellevel3.js +0 -69
  206. package/dist/models/default/django_app/deepmodellevel3.schema.json +0 -57
  207. package/dist/models/default/django_app/dummymodel.d.ts +0 -122
  208. package/dist/models/default/django_app/dummymodel.js +0 -71
  209. package/dist/models/default/django_app/dummymodel.schema.json +0 -97
  210. package/dist/models/default/django_app/dummyrelatedmodel.d.ts +0 -80
  211. package/dist/models/default/django_app/dummyrelatedmodel.js +0 -69
  212. package/dist/models/default/django_app/dummyrelatedmodel.schema.json +0 -57
  213. package/dist/models/default/django_app/filetest.d.ts +0 -128
  214. package/dist/models/default/django_app/filetest.js +0 -69
  215. package/dist/models/default/django_app/filetest.schema.json +0 -99
  216. package/dist/models/default/django_app/index.d.ts +0 -1
  217. package/dist/models/default/django_app/index.js +0 -21
  218. package/dist/models/default/django_app/m2mdepthtestlevel1.d.ts +0 -118
  219. package/dist/models/default/django_app/m2mdepthtestlevel1.js +0 -71
  220. package/dist/models/default/django_app/m2mdepthtestlevel1.schema.json +0 -94
  221. package/dist/models/default/django_app/m2mdepthtestlevel2.d.ts +0 -118
  222. package/dist/models/default/django_app/m2mdepthtestlevel2.js +0 -71
  223. package/dist/models/default/django_app/m2mdepthtestlevel2.schema.json +0 -94
  224. package/dist/models/default/django_app/m2mdepthtestlevel3.d.ts +0 -134
  225. package/dist/models/default/django_app/m2mdepthtestlevel3.js +0 -71
  226. package/dist/models/default/django_app/m2mdepthtestlevel3.schema.json +0 -112
  227. package/dist/models/default/django_app/modelwithcustompkrelation.d.ts +0 -118
  228. package/dist/models/default/django_app/modelwithcustompkrelation.js +0 -71
  229. package/dist/models/default/django_app/modelwithcustompkrelation.schema.json +0 -93
  230. package/dist/models/default/django_app/modelwithrestrictedfields.d.ts +0 -134
  231. package/dist/models/default/django_app/modelwithrestrictedfields.js +0 -71
  232. package/dist/models/default/django_app/modelwithrestrictedfields.schema.json +0 -111
  233. package/dist/models/default/django_app/namefiltercustompkmodel.d.ts +0 -92
  234. package/dist/models/default/django_app/namefiltercustompkmodel.js +0 -69
  235. package/dist/models/default/django_app/namefiltercustompkmodel.schema.json +0 -71
  236. package/dist/models/default/django_app/order.d.ts +0 -220
  237. package/dist/models/default/django_app/order.js +0 -71
  238. package/dist/models/default/django_app/order.schema.json +0 -203
  239. package/dist/models/default/django_app/orderitem.d.ts +0 -172
  240. package/dist/models/default/django_app/orderitem.js +0 -72
  241. package/dist/models/default/django_app/orderitem.schema.json +0 -149
  242. package/dist/models/default/django_app/product.d.ts +0 -254
  243. package/dist/models/default/django_app/product.js +0 -71
  244. package/dist/models/default/django_app/product.schema.json +0 -277
  245. package/dist/models/default/django_app/productcategory.d.ts +0 -92
  246. package/dist/models/default/django_app/productcategory.js +0 -69
  247. package/dist/models/default/django_app/productcategory.schema.json +0 -70
  248. package/dist/models/default/django_app/rateplan.d.ts +0 -92
  249. package/dist/models/default/django_app/rateplan.js +0 -69
  250. package/dist/models/default/django_app/rateplan.schema.json +0 -70
  251. package/dist/models/default/django_app/restrictedfieldrelatedmodel.d.ts +0 -108
  252. package/dist/models/default/django_app/restrictedfieldrelatedmodel.js +0 -69
  253. package/dist/models/default/django_app/restrictedfieldrelatedmodel.schema.json +0 -87
  254. package/dist/models/default/fileobject.d.ts +0 -4
  255. package/dist/models/default/fileobject.js +0 -9
  256. package/dist/models/default/index.d.ts +0 -2
  257. package/dist/models/default/index.js +0 -2
  258. package/dist/models/index.d.ts +0 -1
  259. package/dist/models/index.js +0 -5
  260. package/dist/react-entry.d.ts +0 -2
  261. package/dist/react-entry.js +0 -2
  262. package/dist/reactiveAdaptor.d.ts +0 -24
  263. package/dist/reactiveAdaptor.js +0 -38
  264. package/dist/reset.d.ts +0 -15
  265. package/dist/reset.js +0 -97
  266. package/dist/setup.d.ts +0 -15
  267. package/dist/setup.js +0 -33
  268. package/dist/syncEngine/cache/cache.d.ts +0 -75
  269. package/dist/syncEngine/cache/cache.js +0 -355
  270. package/dist/syncEngine/metrics/metricOptCalcs.d.ts +0 -79
  271. package/dist/syncEngine/metrics/metricOptCalcs.js +0 -284
  272. package/dist/syncEngine/registries/metricRegistry.d.ts +0 -58
  273. package/dist/syncEngine/registries/metricRegistry.js +0 -171
  274. package/dist/syncEngine/registries/modelStoreRegistry.d.ts +0 -11
  275. package/dist/syncEngine/registries/modelStoreRegistry.js +0 -63
  276. package/dist/syncEngine/registries/querysetStoreGraph.d.ts +0 -41
  277. package/dist/syncEngine/registries/querysetStoreGraph.js +0 -174
  278. package/dist/syncEngine/registries/querysetStoreRegistry.d.ts +0 -72
  279. package/dist/syncEngine/registries/querysetStoreRegistry.js +0 -335
  280. package/dist/syncEngine/stores/metricStore.d.ts +0 -55
  281. package/dist/syncEngine/stores/metricStore.js +0 -222
  282. package/dist/syncEngine/stores/modelStore.d.ts +0 -53
  283. package/dist/syncEngine/stores/modelStore.js +0 -565
  284. package/dist/syncEngine/stores/operation.d.ts +0 -139
  285. package/dist/syncEngine/stores/operation.js +0 -291
  286. package/dist/syncEngine/stores/operationEventHandlers.d.ts +0 -8
  287. package/dist/syncEngine/stores/operationEventHandlers.js +0 -322
  288. package/dist/syncEngine/stores/querysetStore.d.ts +0 -60
  289. package/dist/syncEngine/stores/querysetStore.js +0 -294
  290. package/dist/syncEngine/stores/reactivity.d.ts +0 -3
  291. package/dist/syncEngine/stores/reactivity.js +0 -4
  292. package/dist/syncEngine/stores/utils.d.ts +0 -14
  293. package/dist/syncEngine/stores/utils.js +0 -32
  294. package/dist/syncEngine/sync.d.ts +0 -46
  295. package/dist/syncEngine/sync.js +0 -389
  296. package/dist/testing.d.ts +0 -63
  297. package/dist/testing.js +0 -175
  298. package/dist/vue-entry.d.ts +0 -15
  299. package/dist/vue-entry.js +0 -7
  300. /package/{src → dist}/adaptors/vue/components/layout.css +0 -0
  301. /package/{src → dist}/adaptors/vue/components/layout.tailwind.css +0 -0
@@ -0,0 +1,166 @@
1
+ import { computed as c, provide as q, unref as m, inject as G, onMounted as T, resolveComponent as U, createElementBlock as d, openBlock as r, Fragment as v, createBlock as y, createCommentVNode as g, resolveDynamicComponent as i, normalizeClass as F, renderList as b, withCtx as z, createVNode as H, toDisplayString as M } from "vue";
2
+ const N = {
3
+ key: 11,
4
+ class: "text-red-500 text-sm"
5
+ }, I = {
6
+ __name: "LayoutRenderer",
7
+ props: {
8
+ // The layout element to render (root or nested)
9
+ layout: { type: Object, required: !0 },
10
+ // Schema with field definitions (input_properties/properties)
11
+ schema: { type: Object, default: () => ({}) },
12
+ // Component registry: { Control, Display, Alert, Label, Divider, Group, Tabs, ErrorBlock }
13
+ components: { type: Object, required: !0 },
14
+ // Form data (v-model for Controls)
15
+ formData: { type: Object, default: () => ({}) },
16
+ // Workflow context (for Display elements)
17
+ context: { type: Object, default: () => ({}) },
18
+ // Errors object - can be raw DRF response: { fieldName: ['error'], non_field_errors: ['global error'] }
19
+ // The renderer automatically extracts non_field_errors/__all__ for the ErrorBlock
20
+ errors: { type: Object, default: () => ({}) },
21
+ // Explicit non-field errors (optional override - if not provided, extracted from errors.non_field_errors)
22
+ nonFieldErrors: { type: Array, default: null },
23
+ // Whether this is the root renderer (internal)
24
+ isRoot: { type: Boolean, default: !0 }
25
+ },
26
+ emits: ["update:formData"],
27
+ setup(e, { emit: E }) {
28
+ const t = e, D = E, h = c(() => {
29
+ var l, a;
30
+ if (t.nonFieldErrors !== null)
31
+ return t.nonFieldErrors;
32
+ const n = ((l = t.errors) == null ? void 0 : l.non_field_errors) || ((a = t.errors) == null ? void 0 : a.__all__);
33
+ return n ? Array.isArray(n) ? n.map((o) => typeof o == "string" ? o : o != null && o.message ? o.message : String(o)) : [String(n)] : [];
34
+ }), L = c(() => t.components), A = c(() => t.schema), R = c(() => t.formData), S = c(() => t.context), j = c(() => t.errors);
35
+ t.isRoot && q("layoutRenderer", {
36
+ components: L,
37
+ schema: A,
38
+ formData: R,
39
+ context: S,
40
+ errors: j,
41
+ updateField: (n, l) => {
42
+ const a = m(R) || {};
43
+ D("update:formData", { ...a, [n]: l });
44
+ }
45
+ });
46
+ const s = t.isRoot ? null : G("layoutRenderer", null), u = c(() => t.isRoot ? t.components : s && m(s.components) || t.components), p = c(() => t.isRoot ? t.schema : s && m(s.schema) || t.schema), x = c(() => t.isRoot ? t.formData : s && m(s.formData) || t.formData), f = c(() => t.isRoot ? t.context : s && m(s.context) || t.context), B = c(() => t.isRoot ? t.errors : s && m(s.errors) || t.errors), O = t.isRoot ? (n, l) => D("update:formData", { ...t.formData, [n]: l }) : (s == null ? void 0 : s.updateField) || (() => {
47
+ });
48
+ T(() => {
49
+ t.isRoot;
50
+ });
51
+ function w(n) {
52
+ try {
53
+ return new Function("formData", "context", `return ${n}`)(x.value, f.value);
54
+ } catch (l) {
55
+ return console.warn("[LayoutRenderer] Conditional eval failed:", n, l), !1;
56
+ }
57
+ }
58
+ function V(n) {
59
+ var a, o;
60
+ return (((a = p.value) == null ? void 0 : a.properties) || ((o = p.value) == null ? void 0 : o.input_properties) || {})[n] || {};
61
+ }
62
+ function $(n) {
63
+ var a;
64
+ if (n === "non_field_errors" || n === "__all__") return [];
65
+ const l = (a = B.value) == null ? void 0 : a[n];
66
+ return l ? Array.isArray(l) ? l.map((o) => typeof o == "string" ? o : o != null && o.message ? o.message : String(o)) : [String(l)] : [];
67
+ }
68
+ function C(n) {
69
+ if (!n) return;
70
+ const l = n.split(".");
71
+ let a = f.value;
72
+ for (const o of l) {
73
+ if (a == null) return;
74
+ a = a[o];
75
+ }
76
+ return a;
77
+ }
78
+ return (n, l) => {
79
+ const a = U("LayoutRenderer", !0);
80
+ return r(), d(v, null, [
81
+ e.isRoot && h.value.length > 0 && u.value.ErrorBlock ? (r(), y(i(u.value.ErrorBlock), {
82
+ key: 0,
83
+ errors: h.value
84
+ }, null, 8, ["errors"])) : g("", !0),
85
+ e.layout.type === "VerticalLayout" ? (r(), d("div", {
86
+ key: 1,
87
+ class: F(["sz-layout sz-layout-vertical", `sz-gap-${e.layout.gap || "md"}`])
88
+ }, [
89
+ (r(!0), d(v, null, b(e.layout.elements, (o, k) => (r(), y(a, {
90
+ key: k,
91
+ layout: o,
92
+ components: u.value,
93
+ "is-root": !1
94
+ }, null, 8, ["layout", "components"]))), 128))
95
+ ], 2)) : e.layout.type === "HorizontalLayout" ? (r(), d("div", {
96
+ key: 2,
97
+ class: F(["sz-layout sz-layout-horizontal", [`sz-gap-${e.layout.gap || "md"}`, `sz-align-${e.layout.align || "start"}`]])
98
+ }, [
99
+ (r(!0), d(v, null, b(e.layout.elements, (o, k) => (r(), y(a, {
100
+ key: k,
101
+ layout: o,
102
+ components: u.value,
103
+ "is-root": !1
104
+ }, null, 8, ["layout", "components"]))), 128))
105
+ ], 2)) : e.layout.type === "Group" ? (r(), y(i(u.value.Group), {
106
+ key: 3,
107
+ element: e.layout
108
+ }, {
109
+ default: z(() => [
110
+ e.layout.layout ? (r(), y(a, {
111
+ key: 0,
112
+ layout: e.layout.layout,
113
+ components: u.value,
114
+ "is-root": !1
115
+ }, null, 8, ["layout", "components"])) : g("", !0)
116
+ ]),
117
+ _: 1
118
+ }, 8, ["element"])) : e.layout.type === "Tabs" ? (r(), y(i(u.value.Tabs), {
119
+ key: 4,
120
+ element: e.layout
121
+ }, {
122
+ tab: z(({ tab: o }) => [
123
+ H(a, {
124
+ layout: o.layout,
125
+ components: u.value,
126
+ "is-root": !1
127
+ }, null, 8, ["layout", "components"])
128
+ ]),
129
+ _: 1
130
+ }, 8, ["element"])) : e.layout.type === "Conditional" ? (r(), d(v, { key: 5 }, [
131
+ w(e.layout.when) ? (r(), y(a, {
132
+ key: 0,
133
+ layout: e.layout.layout,
134
+ components: u.value,
135
+ "is-root": !1
136
+ }, null, 8, ["layout", "components"])) : g("", !0)
137
+ ], 64)) : e.layout.type === "Control" ? (r(), y(i(u.value.Control), {
138
+ key: 6,
139
+ element: e.layout,
140
+ "model-value": x.value[e.layout.field_name],
141
+ errors: $(e.layout.field_name),
142
+ context: f.value,
143
+ "form-data": x.value,
144
+ schema: V(e.layout.field_name),
145
+ "onUpdate:modelValue": l[0] || (l[0] = (o) => m(O)(e.layout.field_name, o))
146
+ }, null, 8, ["element", "model-value", "errors", "context", "form-data", "schema"])) : e.layout.type === "Display" ? (r(), y(i(u.value.Display), {
147
+ key: 7,
148
+ element: e.layout,
149
+ context: f.value,
150
+ value: C(e.layout.context_path)
151
+ }, null, 8, ["element", "context", "value"])) : e.layout.type === "Alert" ? (r(), y(i(u.value.Alert), {
152
+ key: 8,
153
+ element: e.layout,
154
+ context: f.value,
155
+ text: e.layout.text || C(e.layout.context_path)
156
+ }, null, 8, ["element", "context", "text"])) : e.layout.type === "Label" ? (r(), y(i(u.value.Label), {
157
+ key: 9,
158
+ element: e.layout
159
+ }, null, 8, ["element"])) : e.layout.type === "Divider" ? (r(), y(i(u.value.Divider), { key: 10 })) : (r(), d("div", N, " [LayoutRenderer] Unknown element type: " + M(e.layout.type), 1))
160
+ ], 64);
161
+ };
162
+ }
163
+ };
164
+ export {
165
+ I as default
166
+ };
@@ -0,0 +1,31 @@
1
+ import { createElementBlock as o, openBlock as l, normalizeClass as c, createElementVNode as s, toDisplayString as n } from "vue";
2
+ const i = { class: "flex-shrink-0" }, a = { class: "text-sm" }, g = {
3
+ __name: "AlertElement",
4
+ props: {
5
+ element: { type: Object, required: !0 },
6
+ context: { type: Object, default: () => ({}) },
7
+ text: { type: String, default: "" }
8
+ },
9
+ setup(e) {
10
+ const t = {
11
+ info: "bg-blue-500/10 border-blue-500/20 text-blue-400",
12
+ warning: "bg-yellow-500/10 border-yellow-500/20 text-yellow-400",
13
+ error: "bg-red-500/10 border-red-500/20 text-red-400",
14
+ success: "bg-green-500/10 border-green-500/20 text-green-400"
15
+ }, r = {
16
+ info: "ℹ️",
17
+ warning: "⚠️",
18
+ error: "❌",
19
+ success: "✓"
20
+ };
21
+ return (d, b) => (l(), o("div", {
22
+ class: c(["flex items-start gap-3 p-3 rounded-lg border", t[e.element.severity] || t.info])
23
+ }, [
24
+ s("span", i, n(r[e.element.severity] || r.info), 1),
25
+ s("p", a, n(e.text), 1)
26
+ ], 2));
27
+ }
28
+ };
29
+ export {
30
+ g as default
31
+ };
@@ -0,0 +1,44 @@
1
+ import { createElementBlock as t, openBlock as n, createCommentVNode as c, createElementVNode as o, toDisplayString as l, Fragment as s } from "vue";
2
+ const m = { class: "space-y-1" }, u = {
3
+ key: 0,
4
+ class: "block text-sm font-medium text-muted-foreground"
5
+ }, i = { class: "text-sm" }, r = { key: 0 }, y = {
6
+ key: 1,
7
+ class: "text-muted-foreground italic"
8
+ }, x = {
9
+ key: 1,
10
+ class: "px-2 py-1 bg-muted rounded font-mono text-sm"
11
+ }, f = {
12
+ key: 2,
13
+ class: "flex items-center gap-2"
14
+ }, v = { class: "flex-1 px-2 py-1 bg-muted rounded font-mono text-xs truncate" }, b = { class: "text-xs text-muted-foreground ml-2" }, k = {
15
+ __name: "DisplayElement",
16
+ props: {
17
+ element: { type: Object, required: !0 },
18
+ context: { type: Object, default: () => ({}) },
19
+ value: { default: null }
20
+ },
21
+ setup(e) {
22
+ return (d, a) => (n(), t("div", m, [
23
+ e.element.label ? (n(), t("label", u, l(e.element.label), 1)) : c("", !0),
24
+ o("div", i, [
25
+ !e.element.display_component || e.element.display_component === "text" ? (n(), t(s, { key: 0 }, [
26
+ e.value !== null && e.value !== void 0 ? (n(), t("span", r, l(e.value), 1)) : (n(), t("span", y, "—"))
27
+ ], 64)) : e.element.display_component === "code" ? (n(), t("code", x, l(e.value), 1)) : e.element.display_component === "copy-url" ? (n(), t("div", f, [
28
+ o("code", v, l(e.value), 1),
29
+ o("button", {
30
+ type: "button",
31
+ class: "px-2 py-1 text-xs bg-primary text-primary-foreground rounded hover:bg-primary/90",
32
+ onClick: a[0] || (a[0] = (p) => d.navigator.clipboard.writeText(e.value))
33
+ }, " Copy ")
34
+ ])) : (n(), t(s, { key: 3 }, [
35
+ o("span", null, l(e.value), 1),
36
+ o("span", b, "(" + l(e.element.display_component) + ")", 1)
37
+ ], 64))
38
+ ])
39
+ ]));
40
+ }
41
+ };
42
+ export {
43
+ k as default
44
+ };
@@ -0,0 +1,10 @@
1
+ import { createElementBlock as e, openBlock as r } from "vue";
2
+ const t = { class: "border-t border-border my-2" }, s = {
3
+ __name: "DividerElement",
4
+ setup(o) {
5
+ return (c, _) => (r(), e("hr", t));
6
+ }
7
+ };
8
+ export {
9
+ s as default
10
+ };
@@ -0,0 +1,24 @@
1
+ import { createElementBlock as e, createCommentVNode as d, openBlock as r, createElementVNode as o, Fragment as l, renderList as c, toDisplayString as i } from "vue";
2
+ const m = {
3
+ key: 0,
4
+ class: "flex items-start gap-3 p-3 rounded-lg border bg-red-500/10 border-red-500/20"
5
+ }, p = { class: "space-y-1" }, g = {
6
+ __name: "ErrorBlock",
7
+ props: {
8
+ errors: { type: Array, required: !0 }
9
+ },
10
+ setup(t) {
11
+ return (u, s) => t.errors.length > 0 ? (r(), e("div", m, [
12
+ s[0] || (s[0] = o("span", { class: "flex-shrink-0 text-red-400" }, "❌", -1)),
13
+ o("div", p, [
14
+ (r(!0), e(l, null, c(t.errors, (n, a) => (r(), e("p", {
15
+ key: a,
16
+ class: "text-sm text-red-400"
17
+ }, i(n), 1))), 128))
18
+ ])
19
+ ])) : d("", !0);
20
+ }
21
+ };
22
+ export {
23
+ g as default
24
+ };
@@ -0,0 +1,41 @@
1
+ import { ref as a, createElementBlock as o, openBlock as s, createElementVNode as t, withDirectives as m, normalizeClass as u, createCommentVNode as c, toDisplayString as n, renderSlot as p, vShow as f } from "vue";
2
+ const v = { class: "border border-border rounded-lg overflow-hidden" }, h = { class: "flex items-center justify-between" }, b = { class: "font-medium" }, g = {
3
+ key: 0,
4
+ class: "text-sm text-muted-foreground mt-0.5"
5
+ }, _ = {
6
+ key: 0,
7
+ class: "text-muted-foreground"
8
+ }, x = { class: "p-4" }, C = {
9
+ __name: "GroupElement",
10
+ props: {
11
+ element: { type: Object, required: !0 }
12
+ },
13
+ setup(e) {
14
+ const r = e, l = a(r.element.collapsed || !1);
15
+ function i() {
16
+ r.element.collapsible && (l.value = !l.value);
17
+ }
18
+ return (d, y) => (s(), o("div", v, [
19
+ t("div", {
20
+ class: u(["px-4 py-3 bg-muted/50", { "cursor-pointer hover:bg-muted/70": e.element.collapsible }]),
21
+ onClick: i
22
+ }, [
23
+ t("div", h, [
24
+ t("div", null, [
25
+ t("h4", b, n(e.element.label), 1),
26
+ e.element.description ? (s(), o("p", g, n(e.element.description), 1)) : c("", !0)
27
+ ]),
28
+ e.element.collapsible ? (s(), o("span", _, n(l.value ? "▶" : "▼"), 1)) : c("", !0)
29
+ ])
30
+ ], 2),
31
+ m(t("div", x, [
32
+ p(d.$slots, "default")
33
+ ], 512), [
34
+ [f, !l.value]
35
+ ])
36
+ ]));
37
+ }
38
+ };
39
+ export {
40
+ C as default
41
+ };
@@ -0,0 +1,21 @@
1
+ import { createElementBlock as n, openBlock as a, normalizeClass as o, toDisplayString as r } from "vue";
2
+ const i = {
3
+ __name: "LabelElement",
4
+ props: {
5
+ element: { type: Object, required: !0 }
6
+ },
7
+ setup(e) {
8
+ const t = {
9
+ heading: "text-lg font-semibold",
10
+ subheading: "text-base font-medium text-muted-foreground",
11
+ body: "text-sm",
12
+ caption: "text-xs text-muted-foreground"
13
+ };
14
+ return (s, l) => (a(), n("p", {
15
+ class: o(t[e.element.variant] || t.body)
16
+ }, r(e.element.text), 3));
17
+ }
18
+ };
19
+ export {
20
+ i as default
21
+ };
@@ -0,0 +1,38 @@
1
+ import { ref as b, createElementBlock as t, openBlock as r, createElementVNode as a, Fragment as c, renderList as u, normalizeClass as m, toDisplayString as d, withDirectives as p, renderSlot as v, vShow as f } from "vue";
2
+ const y = { class: "flex border-b border-border" }, _ = ["onClick"], h = { class: "pt-4" }, E = {
3
+ __name: "TabsElement",
4
+ props: {
5
+ element: { type: Object, required: !0 }
6
+ },
7
+ setup(o) {
8
+ const n = b(o.element.default_tab || 0);
9
+ function i(l) {
10
+ n.value = l;
11
+ }
12
+ return (l, x) => (r(), t("div", null, [
13
+ a("div", y, [
14
+ (r(!0), t(c, null, u(o.element.tabs, (s, e) => (r(), t("button", {
15
+ key: e,
16
+ type: "button",
17
+ class: m(["px-4 py-2 text-sm font-medium transition-colors", [
18
+ n.value === e ? "text-primary border-b-2 border-primary -mb-px" : "text-muted-foreground hover:text-foreground"
19
+ ]]),
20
+ onClick: (g) => i(e)
21
+ }, d(s.label), 11, _))), 128))
22
+ ]),
23
+ a("div", h, [
24
+ (r(!0), t(c, null, u(o.element.tabs, (s, e) => p((r(), t("div", { key: e }, [
25
+ v(l.$slots, "tab", {
26
+ tab: s,
27
+ index: e
28
+ })
29
+ ], 512)), [
30
+ [f, n.value === e]
31
+ ])), 128))
32
+ ])
33
+ ]));
34
+ }
35
+ };
36
+ export {
37
+ E as default
38
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@statezero/core",
3
- "version": "0.2.36",
3
+ "version": "0.2.38",
4
4
  "type": "module",
5
5
  "module": "ESNext",
6
6
  "description": "The type-safe frontend client for StateZero - connect directly to your backend models with zero boilerplate",
@@ -26,8 +26,7 @@
26
26
  "import": "./dist/vue-entry.js",
27
27
  "require": "./dist/vue-entry.js"
28
28
  },
29
- "./vue/layout.css": "./src/adaptors/vue/components/layout.css",
30
- "./vue/layout.tailwind.css": "./src/adaptors/vue/components/layout.tailwind.css",
29
+ "./vue/layout.css": "./dist/adaptors/vue/components/layout.css",
31
30
  "./testing": {
32
31
  "import": "./dist/testing.js",
33
32
  "require": "./dist/testing.js"
@@ -42,7 +41,9 @@
42
41
  "generate:test-apps": "ts-node scripts/generate-test-apps.js",
43
42
  "test:adaptors": "playwright test tests/adaptors",
44
43
  "test:coverage": "vitest run --coverage",
45
- "build": "tsc",
44
+ "build": "tsc && npm run build:vue && npm run copy-css",
45
+ "build:vue": "vite build --config vite.vue.config.ts",
46
+ "copy-css": "cp src/adaptors/vue/components/*.css dist/adaptors/vue/components/",
46
47
  "parse-queries": "node scripts/perfect-query-parser.js",
47
48
  "sync": "node src/cli/index.js sync",
48
49
  "sync:dev": "npx cross-env NODE_ENV=test npm run sync",
@@ -75,8 +76,6 @@
75
76
  },
76
77
  "files": [
77
78
  "dist",
78
- "src/adaptors/vue/components/layout.css",
79
- "src/adaptors/vue/components/layout.tailwind.css",
80
79
  "LICENSE",
81
80
  "README.md"
82
81
  ],
@@ -122,6 +121,8 @@
122
121
  "rimraf": "^5.0.5",
123
122
  "ts-node": "^10.9.2",
124
123
  "typescript": "^5.7.3",
124
+ "vite": "^6.0.0",
125
+ "@vitejs/plugin-vue": "^5.2.0",
125
126
  "vitest": "^3.0.5",
126
127
  "vue": "^3.2.0"
127
128
  },
@@ -1,57 +0,0 @@
1
- /**
2
- * Calculate hash of input text (demonstrates string processing)
3
- *
4
- * @param string text - Text to hash
5
- * @param 'md5' | 'sha1' | 'sha256' algorithm - Hash algorithm to use
6
- * @param {Object} [axiosOverrides] - Allows overriding Axios request parameters.
7
- * @returns {Promise<Object>} A promise that resolves with the action's result.
8
- */
9
- export function calculateHash(text: any, algorithm?: string, axiosOverrides?: Object): Promise<Object>;
10
- export namespace calculateHash {
11
- let actionName: string;
12
- let title: string;
13
- let app: string;
14
- let permissions: string[];
15
- let configKey: string;
16
- }
17
- /**
18
- * Zod schema for the input of calculateHash.
19
- * NOTE: This is an object schema for validating the data payload.
20
- */
21
- export const calculateHashInputSchema: z.ZodObject<{
22
- text: z.ZodString;
23
- algorithm: z.ZodDefault<z.ZodOptional<z.ZodEnum<["md5", "sha1", "sha256"]>>>;
24
- }, "strip", z.ZodTypeAny, {
25
- algorithm: "md5" | "sha1" | "sha256";
26
- text: string;
27
- }, {
28
- text: string;
29
- algorithm?: "md5" | "sha1" | "sha256" | undefined;
30
- }>;
31
- /**
32
- * Zod schema for the response of calculateHash.
33
- */
34
- export const calculateHashResponseSchema: z.ZodObject<{
35
- original_text: z.ZodString;
36
- algorithm: z.ZodString;
37
- hash: z.ZodString;
38
- text_length: z.ZodNumber;
39
- processed_by: z.ZodString;
40
- processed_at: z.ZodString;
41
- }, "strip", z.ZodTypeAny, {
42
- original_text: string;
43
- algorithm: string;
44
- hash: string;
45
- text_length: number;
46
- processed_by: string;
47
- processed_at: string;
48
- }, {
49
- original_text: string;
50
- algorithm: string;
51
- hash: string;
52
- text_length: number;
53
- processed_by: string;
54
- processed_at: string;
55
- }>;
56
- export default calculateHash;
57
- import { z } from 'zod';
@@ -1,80 +0,0 @@
1
- /**
2
- * This file was auto-generated. Do not make direct changes to the file.
3
- * Action: Calculate Hash
4
- * App: django_app
5
- */
6
- import axios from 'axios';
7
- import { z } from 'zod';
8
- import { configInstance, parseStateZeroError, serializeActionPayload } from '../../../../src';
9
- import actionSchema from './calculate-hash.schema.json' assert { type: 'json' };
10
- /**
11
- * Zod schema for the input of calculateHash.
12
- * NOTE: This is an object schema for validating the data payload.
13
- */
14
- export const calculateHashInputSchema = z.object({ text: z.string(),
15
- algorithm: z.enum(["md5", "sha1", "sha256"]).optional().default("sha256") });
16
- /**
17
- * Zod schema for the response of calculateHash.
18
- */
19
- export const calculateHashResponseSchema = z.object({ original_text: z.string(),
20
- algorithm: z.string(),
21
- hash: z.string(),
22
- text_length: z.number().int(),
23
- processed_by: z.string(),
24
- processed_at: z.string().datetime({ message: "Invalid ISO 8601 datetime string" }) });
25
- /**
26
- * Calculate hash of input text (demonstrates string processing)
27
- *
28
- * @param string text - Text to hash
29
- * @param 'md5' | 'sha1' | 'sha256' algorithm - Hash algorithm to use
30
- * @param {Object} [axiosOverrides] - Allows overriding Axios request parameters.
31
- * @returns {Promise<Object>} A promise that resolves with the action's result.
32
- */
33
- export async function calculateHash(text, algorithm = "sha256", axiosOverrides = {}) {
34
- // Construct the data payload from the function arguments
35
- const rawPayload = {
36
- text,
37
- algorithm
38
- };
39
- // Serialize payload - handles model instances (extracts PK), files, dates, etc.
40
- const payload = serializeActionPayload(rawPayload, actionSchema.input_properties);
41
- const config = configInstance.getConfig();
42
- const backend = config.backendConfigs['backend1'];
43
- if (!backend) {
44
- throw new Error(`No backend configuration found for key: backend1`);
45
- }
46
- const baseUrl = backend.API_URL.replace(/\/+$/, '');
47
- const actionUrl = `${baseUrl}/actions/calculate_hash/`;
48
- const headers = backend.getAuthHeaders ? backend.getAuthHeaders() : {};
49
- try {
50
- const response = await axios.post(actionUrl, payload, {
51
- headers: { 'Content-Type': 'application/json', ...headers },
52
- ...axiosOverrides,
53
- });
54
- return calculateHashResponseSchema.parse(response.data);
55
- }
56
- catch (error) {
57
- if (error instanceof z.ZodError) {
58
- throw new Error(`Calculate Hash failed: Invalid response from server. Details: ${error.message}`);
59
- }
60
- if (error.response && error.response.data) {
61
- const parsedError = parseStateZeroError(error.response.data);
62
- if (Error.captureStackTrace) {
63
- Error.captureStackTrace(parsedError, calculateHash);
64
- }
65
- throw parsedError;
66
- }
67
- else if (error.request) {
68
- throw new Error(`Calculate Hash failed: No response received from server.`);
69
- }
70
- else {
71
- throw new Error(`Calculate Hash failed: ${error.message}`);
72
- }
73
- }
74
- }
75
- export default calculateHash;
76
- calculateHash.actionName = 'calculate_hash';
77
- calculateHash.title = 'Calculate Hash';
78
- calculateHash.app = 'django_app';
79
- calculateHash.permissions = ['ValidatedIsAuthenticated'];
80
- calculateHash.configKey = 'backend1';