@nixxie-cms/core 1.0.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 (658) hide show
  1. package/CHANGELOG.md +3158 -0
  2. package/LICENSE +21 -0
  3. package/README.md +6 -0
  4. package/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-id-field-view.cjs.d.ts +2 -0
  5. package/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-id-field-view.cjs.js +244 -0
  6. package/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-id-field-view.esm.js +235 -0
  7. package/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view/package.json +4 -0
  8. package/___internal-do-not-use-will-break-in-patch/admin-ui/next-config/package.json +4 -0
  9. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-App.cjs.d.ts +2 -0
  10. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-App.cjs.js +59 -0
  11. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-App.esm.js +55 -0
  12. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App/package.json +4 -0
  13. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-CreateItemPage.cjs.d.ts +2 -0
  14. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-CreateItemPage.cjs.js +116 -0
  15. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-CreateItemPage.esm.js +112 -0
  16. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage/package.json +4 -0
  17. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-HomePage.cjs.d.ts +2 -0
  18. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-HomePage.cjs.js +336 -0
  19. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-HomePage.esm.js +332 -0
  20. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/package.json +4 -0
  21. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-ItemPage.cjs.d.ts +2 -0
  22. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-ItemPage.cjs.js +463 -0
  23. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-ItemPage.esm.js +455 -0
  24. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/package.json +4 -0
  25. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-ListPage.cjs.d.ts +2 -0
  26. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-ListPage.cjs.js +1195 -0
  27. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-ListPage.esm.js +1187 -0
  28. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/package.json +4 -0
  29. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-NoAccessPage.cjs.d.ts +2 -0
  30. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-NoAccessPage.cjs.js +40 -0
  31. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-NoAccessPage.esm.js +35 -0
  32. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage/package.json +4 -0
  33. package/___internal-do-not-use-will-break-in-patch/artifacts/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-artifacts.cjs.d.ts +2 -0
  34. package/___internal-do-not-use-will-break-in-patch/artifacts/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-artifacts.cjs.js +51 -0
  35. package/___internal-do-not-use-will-break-in-patch/artifacts/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-artifacts.esm.js +38 -0
  36. package/___internal-do-not-use-will-break-in-patch/artifacts/package.json +4 -0
  37. package/access/dist/nixxie-cms-core-access.cjs.d.ts +2 -0
  38. package/access/dist/nixxie-cms-core-access.cjs.js +26 -0
  39. package/access/dist/nixxie-cms-core-access.esm.js +19 -0
  40. package/access/package.json +4 -0
  41. package/admin-ui/apollo/dist/nixxie-cms-core-admin-ui-apollo.cjs.d.ts +2 -0
  42. package/admin-ui/apollo/dist/nixxie-cms-core-admin-ui-apollo.cjs.js +87 -0
  43. package/admin-ui/apollo/dist/nixxie-cms-core-admin-ui-apollo.esm.js +2 -0
  44. package/admin-ui/apollo/package.json +4 -0
  45. package/admin-ui/components/dist/nixxie-cms-core-admin-ui-components.cjs.d.ts +2 -0
  46. package/admin-ui/components/dist/nixxie-cms-core-admin-ui-components.cjs.js +77 -0
  47. package/admin-ui/components/dist/nixxie-cms-core-admin-ui-components.esm.js +58 -0
  48. package/admin-ui/components/package.json +4 -0
  49. package/admin-ui/context/dist/nixxie-cms-core-admin-ui-context.cjs.d.ts +2 -0
  50. package/admin-ui/context/dist/nixxie-cms-core-admin-ui-context.cjs.js +35 -0
  51. package/admin-ui/context/dist/nixxie-cms-core-admin-ui-context.esm.js +23 -0
  52. package/admin-ui/context/package.json +4 -0
  53. package/admin-ui/image/dist/nixxie-cms-core-admin-ui-image.cjs.d.ts +3 -0
  54. package/admin-ui/image/dist/nixxie-cms-core-admin-ui-image.cjs.js +18 -0
  55. package/admin-ui/image/dist/nixxie-cms-core-admin-ui-image.esm.js +2 -0
  56. package/admin-ui/image/package.json +4 -0
  57. package/admin-ui/router/dist/nixxie-cms-core-admin-ui-router.cjs.d.ts +2 -0
  58. package/admin-ui/router/dist/nixxie-cms-core-admin-ui-router.cjs.js +34 -0
  59. package/admin-ui/router/dist/nixxie-cms-core-admin-ui-router.esm.js +12 -0
  60. package/admin-ui/router/package.json +4 -0
  61. package/admin-ui/utils/dist/nixxie-cms-core-admin-ui-utils.cjs.d.ts +2 -0
  62. package/admin-ui/utils/dist/nixxie-cms-core-admin-ui-utils.cjs.js +45 -0
  63. package/admin-ui/utils/dist/nixxie-cms-core-admin-ui-utils.esm.js +22 -0
  64. package/admin-ui/utils/package.json +4 -0
  65. package/bin/cli.js +3 -0
  66. package/context/dist/nixxie-cms-core-context.cjs.d.ts +2 -0
  67. package/context/dist/nixxie-cms-core-context.cjs.js +31 -0
  68. package/context/dist/nixxie-cms-core-context.esm.js +23 -0
  69. package/context/package.json +4 -0
  70. package/dist/CreateItemDialog-33335548.esm.js +55 -0
  71. package/dist/CreateItemDialog-56cf59b7.cjs.js +57 -0
  72. package/dist/Errors-575adfa3.cjs.js +147 -0
  73. package/dist/Errors-bf24759e.esm.js +143 -0
  74. package/dist/Field-47f85161.esm.js +278 -0
  75. package/dist/Field-ed8d7627.cjs.js +287 -0
  76. package/dist/Fields-956d9a14.esm.js +203 -0
  77. package/dist/Fields-e2c28056.cjs.js +206 -0
  78. package/dist/GraphQLErrorNotice-cd74180d.cjs.js +57 -0
  79. package/dist/GraphQLErrorNotice-d9f0931b.esm.js +55 -0
  80. package/dist/NullableFieldWrapper-6ea48af3.esm.js +71 -0
  81. package/dist/NullableFieldWrapper-daa0a080.cjs.js +74 -0
  82. package/dist/PageContainer-27c27f10.cjs.js +1144 -0
  83. package/dist/PageContainer-7db73317.esm.js +1129 -0
  84. package/dist/actionData-64d4c37a.esm.js +28 -0
  85. package/dist/actionData-7858738d.cjs.js +32 -0
  86. package/dist/admin-meta-14c60fec.esm.js +210 -0
  87. package/dist/admin-meta-18d0c276.cjs.js +217 -0
  88. package/dist/admin-meta-graphql-6f7f5331.esm.js +142 -0
  89. package/dist/admin-meta-graphql-c8f926e9.cjs.js +144 -0
  90. package/dist/common-1a350e11.cjs.js +324 -0
  91. package/dist/common-29fc82e6.esm.js +315 -0
  92. package/dist/context-3132c3ed.esm.js +419 -0
  93. package/dist/context-e7a45152.cjs.js +432 -0
  94. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view.d.ts +6 -0
  95. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view.d.ts.map +1 -0
  96. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App/index.d.ts +10 -0
  97. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App/index.d.ts.map +1 -0
  98. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage/index.d.ts +6 -0
  99. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage/index.d.ts.map +1 -0
  100. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/index.d.ts +2 -0
  101. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/index.d.ts.map +1 -0
  102. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/index.d.ts +6 -0
  103. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/index.d.ts.map +1 -0
  104. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/index.d.ts +12 -0
  105. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/index.d.ts.map +1 -0
  106. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage/index.d.ts +7 -0
  107. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage/index.d.ts.map +1 -0
  108. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/artifacts.d.ts +6 -0
  109. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/artifacts.d.ts.map +1 -0
  110. package/dist/declarations/src/access.d.ts +12 -0
  111. package/dist/declarations/src/access.d.ts.map +1 -0
  112. package/dist/declarations/src/admin-ui/apollo.d.ts +8 -0
  113. package/dist/declarations/src/admin-ui/apollo.d.ts.map +1 -0
  114. package/dist/declarations/src/admin-ui/components/CellContainer.d.ts +5 -0
  115. package/dist/declarations/src/admin-ui/components/CellContainer.d.ts.map +1 -0
  116. package/dist/declarations/src/admin-ui/components/CreateItemDialog.d.ts +5 -0
  117. package/dist/declarations/src/admin-ui/components/CreateItemDialog.d.ts.map +1 -0
  118. package/dist/declarations/src/admin-ui/components/Errors.d.ts +28 -0
  119. package/dist/declarations/src/admin-ui/components/Errors.d.ts.map +1 -0
  120. package/dist/declarations/src/admin-ui/components/GraphQLErrorNotice.d.ts +6 -0
  121. package/dist/declarations/src/admin-ui/components/GraphQLErrorNotice.d.ts.map +1 -0
  122. package/dist/declarations/src/admin-ui/components/InlineCode.d.ts +3 -0
  123. package/dist/declarations/src/admin-ui/components/InlineCode.d.ts.map +1 -0
  124. package/dist/declarations/src/admin-ui/components/Logo.d.ts +2 -0
  125. package/dist/declarations/src/admin-ui/components/Logo.d.ts.map +1 -0
  126. package/dist/declarations/src/admin-ui/components/Navigation.d.ts +22 -0
  127. package/dist/declarations/src/admin-ui/components/Navigation.d.ts.map +1 -0
  128. package/dist/declarations/src/admin-ui/components/NullableFieldWrapper.d.ts +33 -0
  129. package/dist/declarations/src/admin-ui/components/NullableFieldWrapper.d.ts.map +1 -0
  130. package/dist/declarations/src/admin-ui/components/PageContainer.d.ts +10 -0
  131. package/dist/declarations/src/admin-ui/components/PageContainer.d.ts.map +1 -0
  132. package/dist/declarations/src/admin-ui/components/index.d.ts +11 -0
  133. package/dist/declarations/src/admin-ui/components/index.d.ts.map +1 -0
  134. package/dist/declarations/src/admin-ui/context.d.ts +50 -0
  135. package/dist/declarations/src/admin-ui/context.d.ts.map +1 -0
  136. package/dist/declarations/src/admin-ui/image.d.ts +3 -0
  137. package/dist/declarations/src/admin-ui/image.d.ts.map +1 -0
  138. package/dist/declarations/src/admin-ui/router.d.ts +15 -0
  139. package/dist/declarations/src/admin-ui/router.d.ts.map +1 -0
  140. package/dist/declarations/src/admin-ui/utils/Fields.d.ts +16 -0
  141. package/dist/declarations/src/admin-ui/utils/Fields.d.ts.map +1 -0
  142. package/dist/declarations/src/admin-ui/utils/filters.d.ts +10 -0
  143. package/dist/declarations/src/admin-ui/utils/filters.d.ts.map +1 -0
  144. package/dist/declarations/src/admin-ui/utils/index.d.ts +8 -0
  145. package/dist/declarations/src/admin-ui/utils/index.d.ts.map +1 -0
  146. package/dist/declarations/src/admin-ui/utils/useCreateItem.d.ts +24 -0
  147. package/dist/declarations/src/admin-ui/utils/useCreateItem.d.ts.map +1 -0
  148. package/dist/declarations/src/admin-ui/utils/utils.d.ts +8 -0
  149. package/dist/declarations/src/admin-ui/utils/utils.d.ts.map +1 -0
  150. package/dist/declarations/src/artifacts.d.ts +14 -0
  151. package/dist/declarations/src/artifacts.d.ts.map +1 -0
  152. package/dist/declarations/src/context.d.ts +2 -0
  153. package/dist/declarations/src/context.d.ts.map +1 -0
  154. package/dist/declarations/src/fields/filters/enum-filter.d.ts +27 -0
  155. package/dist/declarations/src/fields/filters/enum-filter.d.ts.map +1 -0
  156. package/dist/declarations/src/fields/filters/index.d.ts +2 -0
  157. package/dist/declarations/src/fields/filters/index.d.ts.map +1 -0
  158. package/dist/declarations/src/fields/filters/internal.d.ts +21 -0
  159. package/dist/declarations/src/fields/filters/internal.d.ts.map +1 -0
  160. package/dist/declarations/src/fields/filters/providers/mysql.d.ts +182 -0
  161. package/dist/declarations/src/fields/filters/providers/mysql.d.ts.map +1 -0
  162. package/dist/declarations/src/fields/filters/providers/postgresql.d.ts +182 -0
  163. package/dist/declarations/src/fields/filters/providers/postgresql.d.ts.map +1 -0
  164. package/dist/declarations/src/fields/filters/providers/sqlite.d.ts +179 -0
  165. package/dist/declarations/src/fields/filters/providers/sqlite.d.ts.map +1 -0
  166. package/dist/declarations/src/fields/index.d.ts +35 -0
  167. package/dist/declarations/src/fields/index.d.ts.map +1 -0
  168. package/dist/declarations/src/fields/types/bigInt/index.d.ts +20 -0
  169. package/dist/declarations/src/fields/types/bigInt/index.d.ts.map +1 -0
  170. package/dist/declarations/src/fields/types/bigInt/views/index.d.ts +24 -0
  171. package/dist/declarations/src/fields/types/bigInt/views/index.d.ts.map +1 -0
  172. package/dist/declarations/src/fields/types/bytes/index.d.ts +70 -0
  173. package/dist/declarations/src/fields/types/bytes/index.d.ts.map +1 -0
  174. package/dist/declarations/src/fields/types/bytes/views/index.d.ts +24 -0
  175. package/dist/declarations/src/fields/types/bytes/views/index.d.ts.map +1 -0
  176. package/dist/declarations/src/fields/types/calendarDay/index.d.ts +15 -0
  177. package/dist/declarations/src/fields/types/calendarDay/index.d.ts.map +1 -0
  178. package/dist/declarations/src/fields/types/calendarDay/views/index.d.ts +18 -0
  179. package/dist/declarations/src/fields/types/calendarDay/views/index.d.ts.map +1 -0
  180. package/dist/declarations/src/fields/types/checkbox/index.d.ts +11 -0
  181. package/dist/declarations/src/fields/types/checkbox/index.d.ts.map +1 -0
  182. package/dist/declarations/src/fields/types/checkbox/views/index.d.ts +9 -0
  183. package/dist/declarations/src/fields/types/checkbox/views/index.d.ts.map +1 -0
  184. package/dist/declarations/src/fields/types/decimal/index.d.ts +20 -0
  185. package/dist/declarations/src/fields/types/decimal/index.d.ts.map +1 -0
  186. package/dist/declarations/src/fields/types/decimal/views/index.d.ts +22 -0
  187. package/dist/declarations/src/fields/types/decimal/views/index.d.ts.map +1 -0
  188. package/dist/declarations/src/fields/types/file/index.d.ts +34 -0
  189. package/dist/declarations/src/fields/types/file/index.d.ts.map +1 -0
  190. package/dist/declarations/src/fields/types/file/views/Field.d.ts +17 -0
  191. package/dist/declarations/src/fields/types/file/views/Field.d.ts.map +1 -0
  192. package/dist/declarations/src/fields/types/file/views/index.d.ts +29 -0
  193. package/dist/declarations/src/fields/types/file/views/index.d.ts.map +1 -0
  194. package/dist/declarations/src/fields/types/float/index.d.ts +18 -0
  195. package/dist/declarations/src/fields/types/float/index.d.ts.map +1 -0
  196. package/dist/declarations/src/fields/types/float/views/index.d.ts +22 -0
  197. package/dist/declarations/src/fields/types/float/views/index.d.ts.map +1 -0
  198. package/dist/declarations/src/fields/types/image/index.d.ts +34 -0
  199. package/dist/declarations/src/fields/types/image/index.d.ts.map +1 -0
  200. package/dist/declarations/src/fields/types/image/utils.d.ts +2 -0
  201. package/dist/declarations/src/fields/types/image/utils.d.ts.map +1 -0
  202. package/dist/declarations/src/fields/types/image/views/Field.d.ts +4 -0
  203. package/dist/declarations/src/fields/types/image/views/Field.d.ts.map +1 -0
  204. package/dist/declarations/src/fields/types/image/views/index.d.ts +49 -0
  205. package/dist/declarations/src/fields/types/image/views/index.d.ts.map +1 -0
  206. package/dist/declarations/src/fields/types/integer/index.d.ts +20 -0
  207. package/dist/declarations/src/fields/types/integer/index.d.ts.map +1 -0
  208. package/dist/declarations/src/fields/types/integer/views/index.d.ts +23 -0
  209. package/dist/declarations/src/fields/types/integer/views/index.d.ts.map +1 -0
  210. package/dist/declarations/src/fields/types/json/index.d.ts +25 -0
  211. package/dist/declarations/src/fields/types/json/index.d.ts.map +1 -0
  212. package/dist/declarations/src/fields/types/json/views/index.d.ts +9 -0
  213. package/dist/declarations/src/fields/types/json/views/index.d.ts.map +1 -0
  214. package/dist/declarations/src/fields/types/multiselect/index.d.ts +50 -0
  215. package/dist/declarations/src/fields/types/multiselect/index.d.ts.map +1 -0
  216. package/dist/declarations/src/fields/types/multiselect/views/index.d.ts +26 -0
  217. package/dist/declarations/src/fields/types/multiselect/views/index.d.ts.map +1 -0
  218. package/dist/declarations/src/fields/types/password/index.d.ts +49 -0
  219. package/dist/declarations/src/fields/types/password/index.d.ts.map +1 -0
  220. package/dist/declarations/src/fields/types/password/views/index.d.ts +47 -0
  221. package/dist/declarations/src/fields/types/password/views/index.d.ts.map +1 -0
  222. package/dist/declarations/src/fields/types/relationship/index.d.ts +113 -0
  223. package/dist/declarations/src/fields/types/relationship/index.d.ts.map +1 -0
  224. package/dist/declarations/src/fields/types/relationship/views/ComboboxMany.d.ts +26 -0
  225. package/dist/declarations/src/fields/types/relationship/views/ComboboxMany.d.ts.map +1 -0
  226. package/dist/declarations/src/fields/types/relationship/views/ComboboxSingle.d.ts +24 -0
  227. package/dist/declarations/src/fields/types/relationship/views/ComboboxSingle.d.ts.map +1 -0
  228. package/dist/declarations/src/fields/types/relationship/views/index.d.ts +27 -0
  229. package/dist/declarations/src/fields/types/relationship/views/index.d.ts.map +1 -0
  230. package/dist/declarations/src/fields/types/relationship/views/types.d.ts +39 -0
  231. package/dist/declarations/src/fields/types/relationship/views/types.d.ts.map +1 -0
  232. package/dist/declarations/src/fields/types/select/index.d.ts +42 -0
  233. package/dist/declarations/src/fields/types/select/index.d.ts.map +1 -0
  234. package/dist/declarations/src/fields/types/select/views/index.d.ts +32 -0
  235. package/dist/declarations/src/fields/types/select/views/index.d.ts.map +1 -0
  236. package/dist/declarations/src/fields/types/text/index.d.ts +58 -0
  237. package/dist/declarations/src/fields/types/text/index.d.ts.map +1 -0
  238. package/dist/declarations/src/fields/types/text/views/index.d.ts +36 -0
  239. package/dist/declarations/src/fields/types/text/views/index.d.ts.map +1 -0
  240. package/dist/declarations/src/fields/types/timestamp/index.d.ts +19 -0
  241. package/dist/declarations/src/fields/types/timestamp/index.d.ts.map +1 -0
  242. package/dist/declarations/src/fields/types/timestamp/views/index.d.ts +14 -0
  243. package/dist/declarations/src/fields/types/timestamp/views/index.d.ts.map +1 -0
  244. package/dist/declarations/src/fields/types/timestamp/views/utils.d.ts +14 -0
  245. package/dist/declarations/src/fields/types/timestamp/views/utils.d.ts.map +1 -0
  246. package/dist/declarations/src/fields/types/virtual/index.d.ts +40 -0
  247. package/dist/declarations/src/fields/types/virtual/index.d.ts.map +1 -0
  248. package/dist/declarations/src/fields/types/virtual/views/index.d.ts +7 -0
  249. package/dist/declarations/src/fields/types/virtual/views/index.d.ts.map +1 -0
  250. package/dist/declarations/src/graphql-ts.d.ts +5 -0
  251. package/dist/declarations/src/graphql-ts.d.ts.map +1 -0
  252. package/dist/declarations/src/helpers.d.ts +121 -0
  253. package/dist/declarations/src/helpers.d.ts.map +1 -0
  254. package/dist/declarations/src/index.d.ts +6 -0
  255. package/dist/declarations/src/index.d.ts.map +1 -0
  256. package/dist/declarations/src/lib/admin-meta.d.ts +71 -0
  257. package/dist/declarations/src/lib/admin-meta.d.ts.map +1 -0
  258. package/dist/declarations/src/lib/core/access-control.d.ts +39 -0
  259. package/dist/declarations/src/lib/core/access-control.d.ts.map +1 -0
  260. package/dist/declarations/src/lib/core/initialise-lists.d.ts +131 -0
  261. package/dist/declarations/src/lib/core/initialise-lists.d.ts.map +1 -0
  262. package/dist/declarations/src/lib/core/resolve-relationships.d.ts +30 -0
  263. package/dist/declarations/src/lib/core/resolve-relationships.d.ts.map +1 -0
  264. package/dist/declarations/src/lib/core/where-inputs.d.ts +15 -0
  265. package/dist/declarations/src/lib/core/where-inputs.d.ts.map +1 -0
  266. package/dist/declarations/src/lib/express.d.ts +10 -0
  267. package/dist/declarations/src/lib/express.d.ts.map +1 -0
  268. package/dist/declarations/src/lib/migrations.d.ts +13 -0
  269. package/dist/declarations/src/lib/migrations.d.ts.map +1 -0
  270. package/dist/declarations/src/lib/system.d.ts +35 -0
  271. package/dist/declarations/src/lib/system.d.ts.map +1 -0
  272. package/dist/declarations/src/schema.d.ts +40 -0
  273. package/dist/declarations/src/schema.d.ts.map +1 -0
  274. package/dist/declarations/src/scripts/cli.d.ts +11 -0
  275. package/dist/declarations/src/scripts/cli.d.ts.map +1 -0
  276. package/dist/declarations/src/scripts/index.d.ts +2 -0
  277. package/dist/declarations/src/scripts/index.d.ts.map +1 -0
  278. package/dist/declarations/src/scripts/utils.d.ts +7 -0
  279. package/dist/declarations/src/scripts/utils.d.ts.map +1 -0
  280. package/dist/declarations/src/session.d.ts +86 -0
  281. package/dist/declarations/src/session.d.ts.map +1 -0
  282. package/dist/declarations/src/testing.d.ts +2 -0
  283. package/dist/declarations/src/testing.d.ts.map +1 -0
  284. package/dist/declarations/src/types/admin-meta.d.ts +190 -0
  285. package/dist/declarations/src/types/admin-meta.d.ts.map +1 -0
  286. package/dist/declarations/src/types/config/access-control.d.ts +108 -0
  287. package/dist/declarations/src/types/config/access-control.d.ts.map +1 -0
  288. package/dist/declarations/src/types/config/fields.d.ts +67 -0
  289. package/dist/declarations/src/types/config/fields.d.ts.map +1 -0
  290. package/dist/declarations/src/types/config/hooks.d.ts +441 -0
  291. package/dist/declarations/src/types/config/hooks.d.ts.map +1 -0
  292. package/dist/declarations/src/types/config/index.d.ts +283 -0
  293. package/dist/declarations/src/types/config/index.d.ts.map +1 -0
  294. package/dist/declarations/src/types/config/lists.d.ts +430 -0
  295. package/dist/declarations/src/types/config/lists.d.ts.map +1 -0
  296. package/dist/declarations/src/types/context.d.ts +458 -0
  297. package/dist/declarations/src/types/context.d.ts.map +1 -0
  298. package/dist/declarations/src/types/core.d.ts +9 -0
  299. package/dist/declarations/src/types/core.d.ts.map +1 -0
  300. package/dist/declarations/src/types/index.d.ts +9 -0
  301. package/dist/declarations/src/types/index.d.ts.map +1 -0
  302. package/dist/declarations/src/types/next-fields.d.ts +308 -0
  303. package/dist/declarations/src/types/next-fields.d.ts.map +1 -0
  304. package/dist/declarations/src/types/prisma.d.ts +13 -0
  305. package/dist/declarations/src/types/prisma.d.ts.map +1 -0
  306. package/dist/declarations/src/types/schema/g.d.ts +7 -0
  307. package/dist/declarations/src/types/schema/g.d.ts.map +1 -0
  308. package/dist/declarations/src/types/schema/gWithContext.d.ts +12 -0
  309. package/dist/declarations/src/types/schema/gWithContext.d.ts.map +1 -0
  310. package/dist/declarations/src/types/schema/index.d.ts +4 -0
  311. package/dist/declarations/src/types/schema/index.d.ts.map +1 -0
  312. package/dist/declarations/src/types/schema/legacy-alias.d.ts +28 -0
  313. package/dist/declarations/src/types/schema/scalars.d.ts +22 -0
  314. package/dist/declarations/src/types/schema/scalars.d.ts.map +1 -0
  315. package/dist/declarations/src/types/session.d.ts +28 -0
  316. package/dist/declarations/src/types/session.d.ts.map +1 -0
  317. package/dist/declarations/src/types/type-info.d.ts +35 -0
  318. package/dist/declarations/src/types/type-info.d.ts.map +1 -0
  319. package/dist/declarations/src/types/utils.d.ts +78 -0
  320. package/dist/declarations/src/types/utils.d.ts.map +1 -0
  321. package/dist/declarations/types/dist/nixxie-cms-core-types.cjs.d.ts +2 -0
  322. package/dist/express-6743b918.esm.js +476 -0
  323. package/dist/express-e9ed9a7d.cjs.js +495 -0
  324. package/dist/filters-8c8616f9.esm.js +89 -0
  325. package/dist/filters-b3e5eb50.cjs.js +96 -0
  326. package/dist/index-24b78415.esm.js +419 -0
  327. package/dist/index-ac01583b.cjs.js +425 -0
  328. package/dist/migrations-996e66a0.esm.js +76 -0
  329. package/dist/migrations-ab2e0fd4.cjs.js +78 -0
  330. package/dist/next-fields-49c025ef.cjs.js +251 -0
  331. package/dist/next-fields-9bf04ed8.esm.js +241 -0
  332. package/dist/nixxie-cms-core.cjs.d.ts +2 -0
  333. package/dist/nixxie-cms-core.cjs.js +522 -0
  334. package/dist/nixxie-cms-core.esm.js +504 -0
  335. package/dist/non-null-graphql-17b83ddc.cjs.js +72 -0
  336. package/dist/non-null-graphql-5315718c.esm.js +67 -0
  337. package/dist/pick-5fe45878.cjs.js +71 -0
  338. package/dist/pick-b7ef3115.esm.js +68 -0
  339. package/dist/resolve-hooks-17aafd37.esm.js +2026 -0
  340. package/dist/resolve-hooks-66fe8a8e.cjs.js +2043 -0
  341. package/dist/system-48c5f6df.cjs.js +4283 -0
  342. package/dist/system-dfec2f0a.esm.js +4273 -0
  343. package/dist/useCreateItem-1be4987e.cjs.js +160 -0
  344. package/dist/useCreateItem-1f94d252.esm.js +157 -0
  345. package/dist/useFilter-0b5a1ee6.esm.js +118 -0
  346. package/dist/useFilter-1a4e6900.cjs.js +120 -0
  347. package/dist/utils-0cc426c8.esm.js +19 -0
  348. package/dist/utils-1b632a8f.cjs.js +21 -0
  349. package/dist/utils-230cddb1.cjs.js +150 -0
  350. package/dist/utils-5e1d4d28.esm.js +138 -0
  351. package/dist/utils-b031e11c.cjs.js +49 -0
  352. package/dist/utils-e74e3527.cjs.js +87 -0
  353. package/dist/utils-ef2cd0f4.esm.js +80 -0
  354. package/dist/utils-f9556354.esm.js +41 -0
  355. package/fields/dist/nixxie-cms-core-fields.cjs.d.ts +2 -0
  356. package/fields/dist/nixxie-cms-core-fields.cjs.js +1808 -0
  357. package/fields/dist/nixxie-cms-core-fields.esm.js +1785 -0
  358. package/fields/package.json +4 -0
  359. package/fields/types/bigInt/views/dist/nixxie-cms-core-fields-types-bigInt-views.cjs.d.ts +2 -0
  360. package/fields/types/bigInt/views/dist/nixxie-cms-core-fields-types-bigInt-views.cjs.js +258 -0
  361. package/fields/types/bigInt/views/dist/nixxie-cms-core-fields-types-bigInt-views.esm.js +253 -0
  362. package/fields/types/bigInt/views/package.json +4 -0
  363. package/fields/types/bytes/dist/nixxie-cms-core-fields-types-bytes.cjs.d.ts +2 -0
  364. package/fields/types/bytes/dist/nixxie-cms-core-fields-types-bytes.cjs.js +221 -0
  365. package/fields/types/bytes/dist/nixxie-cms-core-fields-types-bytes.esm.js +216 -0
  366. package/fields/types/bytes/package.json +4 -0
  367. package/fields/types/bytes/views/dist/nixxie-cms-core-fields-types-bytes-views.cjs.d.ts +2 -0
  368. package/fields/types/bytes/views/dist/nixxie-cms-core-fields-types-bytes-views.cjs.js +239 -0
  369. package/fields/types/bytes/views/dist/nixxie-cms-core-fields-types-bytes-views.esm.js +234 -0
  370. package/fields/types/bytes/views/package.json +4 -0
  371. package/fields/types/calendarDay/views/dist/nixxie-cms-core-fields-types-calendarDay-views.cjs.d.ts +2 -0
  372. package/fields/types/calendarDay/views/dist/nixxie-cms-core-fields-types-calendarDay-views.cjs.js +147 -0
  373. package/fields/types/calendarDay/views/dist/nixxie-cms-core-fields-types-calendarDay-views.esm.js +141 -0
  374. package/fields/types/calendarDay/views/package.json +4 -0
  375. package/fields/types/checkbox/views/dist/nixxie-cms-core-fields-types-checkbox-views.cjs.d.ts +2 -0
  376. package/fields/types/checkbox/views/dist/nixxie-cms-core-fields-types-checkbox-views.cjs.js +126 -0
  377. package/fields/types/checkbox/views/dist/nixxie-cms-core-fields-types-checkbox-views.esm.js +120 -0
  378. package/fields/types/checkbox/views/package.json +4 -0
  379. package/fields/types/decimal/views/dist/nixxie-cms-core-fields-types-decimal-views.cjs.d.ts +2 -0
  380. package/fields/types/decimal/views/dist/nixxie-cms-core-fields-types-decimal-views.cjs.js +248 -0
  381. package/fields/types/decimal/views/dist/nixxie-cms-core-fields-types-decimal-views.esm.js +239 -0
  382. package/fields/types/decimal/views/package.json +4 -0
  383. package/fields/types/file/utils/package.json +4 -0
  384. package/fields/types/file/views/dist/nixxie-cms-core-fields-types-file-views.cjs.d.ts +2 -0
  385. package/fields/types/file/views/dist/nixxie-cms-core-fields-types-file-views.cjs.js +86 -0
  386. package/fields/types/file/views/dist/nixxie-cms-core-fields-types-file-views.esm.js +81 -0
  387. package/fields/types/file/views/package.json +4 -0
  388. package/fields/types/float/views/dist/nixxie-cms-core-fields-types-float-views.cjs.d.ts +2 -0
  389. package/fields/types/float/views/dist/nixxie-cms-core-fields-types-float-views.cjs.js +237 -0
  390. package/fields/types/float/views/dist/nixxie-cms-core-fields-types-float-views.esm.js +232 -0
  391. package/fields/types/float/views/package.json +4 -0
  392. package/fields/types/image/utils/dist/nixxie-cms-core-fields-types-image-utils.cjs.d.ts +2 -0
  393. package/fields/types/image/utils/dist/nixxie-cms-core-fields-types-image-utils.cjs.js +7 -0
  394. package/fields/types/image/utils/dist/nixxie-cms-core-fields-types-image-utils.esm.js +3 -0
  395. package/fields/types/image/utils/package.json +4 -0
  396. package/fields/types/image/views/dist/nixxie-cms-core-fields-types-image-views.cjs.d.ts +2 -0
  397. package/fields/types/image/views/dist/nixxie-cms-core-fields-types-image-views.cjs.js +361 -0
  398. package/fields/types/image/views/dist/nixxie-cms-core-fields-types-image-views.esm.js +354 -0
  399. package/fields/types/image/views/package.json +4 -0
  400. package/fields/types/integer/views/dist/nixxie-cms-core-fields-types-integer-views.cjs.d.ts +2 -0
  401. package/fields/types/integer/views/dist/nixxie-cms-core-fields-types-integer-views.cjs.js +254 -0
  402. package/fields/types/integer/views/dist/nixxie-cms-core-fields-types-integer-views.esm.js +249 -0
  403. package/fields/types/integer/views/package.json +4 -0
  404. package/fields/types/json/views/dist/nixxie-cms-core-fields-types-json-views.cjs.d.ts +2 -0
  405. package/fields/types/json/views/dist/nixxie-cms-core-fields-types-json-views.cjs.js +83 -0
  406. package/fields/types/json/views/dist/nixxie-cms-core-fields-types-json-views.esm.js +77 -0
  407. package/fields/types/json/views/package.json +4 -0
  408. package/fields/types/multiselect/views/dist/nixxie-cms-core-fields-types-multiselect-views.cjs.d.ts +2 -0
  409. package/fields/types/multiselect/views/dist/nixxie-cms-core-fields-types-multiselect-views.cjs.js +147 -0
  410. package/fields/types/multiselect/views/dist/nixxie-cms-core-fields-types-multiselect-views.esm.js +141 -0
  411. package/fields/types/multiselect/views/package.json +4 -0
  412. package/fields/types/password/dist/nixxie-cms-core-fields-types-password.cjs.d.ts +2 -0
  413. package/fields/types/password/dist/nixxie-cms-core-fields-types-password.cjs.js +206 -0
  414. package/fields/types/password/dist/nixxie-cms-core-fields-types-password.esm.js +196 -0
  415. package/fields/types/password/package.json +4 -0
  416. package/fields/types/password/views/dist/nixxie-cms-core-fields-types-password-views.cjs.d.ts +2 -0
  417. package/fields/types/password/views/dist/nixxie-cms-core-fields-types-password-views.cjs.js +330 -0
  418. package/fields/types/password/views/dist/nixxie-cms-core-fields-types-password-views.esm.js +320 -0
  419. package/fields/types/password/views/package.json +4 -0
  420. package/fields/types/relationship/views/RelationshipSelect/package.json +4 -0
  421. package/fields/types/relationship/views/dist/nixxie-cms-core-fields-types-relationship-views.cjs.d.ts +2 -0
  422. package/fields/types/relationship/views/dist/nixxie-cms-core-fields-types-relationship-views.cjs.js +1213 -0
  423. package/fields/types/relationship/views/dist/nixxie-cms-core-fields-types-relationship-views.esm.js +1201 -0
  424. package/fields/types/relationship/views/package.json +4 -0
  425. package/fields/types/select/views/dist/nixxie-cms-core-fields-types-select-views.cjs.d.ts +2 -0
  426. package/fields/types/select/views/dist/nixxie-cms-core-fields-types-select-views.cjs.js +422 -0
  427. package/fields/types/select/views/dist/nixxie-cms-core-fields-types-select-views.esm.js +416 -0
  428. package/fields/types/select/views/package.json +4 -0
  429. package/fields/types/text/views/dist/nixxie-cms-core-fields-types-text-views.cjs.d.ts +2 -0
  430. package/fields/types/text/views/dist/nixxie-cms-core-fields-types-text-views.cjs.js +316 -0
  431. package/fields/types/text/views/dist/nixxie-cms-core-fields-types-text-views.esm.js +311 -0
  432. package/fields/types/text/views/package.json +4 -0
  433. package/fields/types/timestamp/views/dist/nixxie-cms-core-fields-types-timestamp-views.cjs.d.ts +2 -0
  434. package/fields/types/timestamp/views/dist/nixxie-cms-core-fields-types-timestamp-views.cjs.js +285 -0
  435. package/fields/types/timestamp/views/dist/nixxie-cms-core-fields-types-timestamp-views.esm.js +279 -0
  436. package/fields/types/timestamp/views/package.json +4 -0
  437. package/fields/types/virtual/views/dist/nixxie-cms-core-fields-types-virtual-views.cjs.d.ts +2 -0
  438. package/fields/types/virtual/views/dist/nixxie-cms-core-fields-types-virtual-views.cjs.js +54 -0
  439. package/fields/types/virtual/views/dist/nixxie-cms-core-fields-types-virtual-views.esm.js +48 -0
  440. package/fields/types/virtual/views/package.json +4 -0
  441. package/graphql-ts/dist/nixxie-cms-core-graphql-ts.cjs.d.ts +2 -0
  442. package/graphql-ts/dist/nixxie-cms-core-graphql-ts.cjs.js +45 -0
  443. package/graphql-ts/dist/nixxie-cms-core-graphql-ts.esm.js +2 -0
  444. package/graphql-ts/package.json +4 -0
  445. package/package.json +339 -0
  446. package/schema/package.json +4 -0
  447. package/scripts/cli/dist/nixxie-cms-core-scripts-cli.cjs.d.ts +2 -0
  448. package/scripts/cli/dist/nixxie-cms-core-scripts-cli.cjs.js +1607 -0
  449. package/scripts/cli/dist/nixxie-cms-core-scripts-cli.esm.js +1586 -0
  450. package/scripts/cli/package.json +4 -0
  451. package/scripts/dist/nixxie-cms-core-scripts.cjs.d.ts +2 -0
  452. package/scripts/dist/nixxie-cms-core-scripts.cjs.js +73 -0
  453. package/scripts/dist/nixxie-cms-core-scripts.esm.js +71 -0
  454. package/scripts/package.json +4 -0
  455. package/session/dist/nixxie-cms-core-session.cjs.d.ts +2 -0
  456. package/session/dist/nixxie-cms-core-session.cjs.js +157 -0
  457. package/session/dist/nixxie-cms-core-session.esm.js +129 -0
  458. package/session/package.json +4 -0
  459. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view.tsx +167 -0
  460. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App/index.tsx +22 -0
  461. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage/index.tsx +71 -0
  462. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/index.tsx +333 -0
  463. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/common.tsx +358 -0
  464. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/index.tsx +483 -0
  465. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/FilterAdd.tsx +221 -0
  466. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/PaginationControls.tsx +170 -0
  467. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/Tag.tsx +72 -0
  468. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/index.tsx +1006 -0
  469. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage/index.tsx +24 -0
  470. package/src/___internal-do-not-use-will-break-in-patch/artifacts.ts +5 -0
  471. package/src/access.ts +25 -0
  472. package/src/admin-ui/admin-meta-graphql.ts +168 -0
  473. package/src/admin-ui/apollo.tsx +35 -0
  474. package/src/admin-ui/components/CellContainer.tsx +6 -0
  475. package/src/admin-ui/components/CommandPalette.tsx +431 -0
  476. package/src/admin-ui/components/Container.tsx +14 -0
  477. package/src/admin-ui/components/CreateButtonLink.tsx +46 -0
  478. package/src/admin-ui/components/CreateItemDialog.tsx +56 -0
  479. package/src/admin-ui/components/EmptyState.tsx +52 -0
  480. package/src/admin-ui/components/Errors.tsx +130 -0
  481. package/src/admin-ui/components/GraphQLErrorNotice.tsx +78 -0
  482. package/src/admin-ui/components/InlineCode.tsx +17 -0
  483. package/src/admin-ui/components/Logo.tsx +70 -0
  484. package/src/admin-ui/components/Navigation.tsx +385 -0
  485. package/src/admin-ui/components/NullableFieldWrapper.tsx +72 -0
  486. package/src/admin-ui/components/PageContainer.tsx +310 -0
  487. package/src/admin-ui/components/WelcomeDialog.tsx +119 -0
  488. package/src/admin-ui/components/index.ts +23 -0
  489. package/src/admin-ui/context.tsx +338 -0
  490. package/src/admin-ui/image.tsx +2 -0
  491. package/src/admin-ui/index.tsx +1 -0
  492. package/src/admin-ui/router.tsx +24 -0
  493. package/src/admin-ui/system/generateAdminUI.ts +155 -0
  494. package/src/admin-ui/system/index.ts +1 -0
  495. package/src/admin-ui/templates/app.ts +60 -0
  496. package/src/admin-ui/templates/create-item.ts +5 -0
  497. package/src/admin-ui/templates/home.ts +2 -0
  498. package/src/admin-ui/templates/index.ts +53 -0
  499. package/src/admin-ui/templates/item.tsx +5 -0
  500. package/src/admin-ui/templates/list.tsx +5 -0
  501. package/src/admin-ui/templates/next-config.ts +16 -0
  502. package/src/admin-ui/templates/no-access.ts +7 -0
  503. package/src/admin-ui/utils/Fields.tsx +241 -0
  504. package/src/admin-ui/utils/actionData.ts +36 -0
  505. package/src/admin-ui/utils/filters.ts +148 -0
  506. package/src/admin-ui/utils/index.ts +10 -0
  507. package/src/admin-ui/utils/pick.ts +12 -0
  508. package/src/admin-ui/utils/useCreateItem.ts +171 -0
  509. package/src/admin-ui/utils/usePreventNavigation.tsx +31 -0
  510. package/src/admin-ui/utils/utils.tsx +127 -0
  511. package/src/artifacts.ts +110 -0
  512. package/src/context.ts +1 -0
  513. package/src/fields/filters/enum-filter.ts +77 -0
  514. package/src/fields/filters/index.ts +1 -0
  515. package/src/fields/filters/internal.ts +89 -0
  516. package/src/fields/filters/providers/mysql.ts +450 -0
  517. package/src/fields/filters/providers/postgresql.ts +448 -0
  518. package/src/fields/filters/providers/sqlite.ts +442 -0
  519. package/src/fields/index.ts +34 -0
  520. package/src/fields/non-null-graphql.ts +115 -0
  521. package/src/fields/resolve-hooks.ts +61 -0
  522. package/src/fields/types/bigInt/index.ts +181 -0
  523. package/src/fields/types/bigInt/views/index.tsx +254 -0
  524. package/src/fields/types/bytes/index.ts +275 -0
  525. package/src/fields/types/bytes/views/index.tsx +190 -0
  526. package/src/fields/types/calendarDay/index.ts +194 -0
  527. package/src/fields/types/calendarDay/views/index.tsx +144 -0
  528. package/src/fields/types/checkbox/index.ts +76 -0
  529. package/src/fields/types/checkbox/views/index.tsx +97 -0
  530. package/src/fields/types/decimal/index.ts +182 -0
  531. package/src/fields/types/decimal/views/index.tsx +215 -0
  532. package/src/fields/types/file/index.ts +168 -0
  533. package/src/fields/types/file/views/Field.tsx +300 -0
  534. package/src/fields/types/file/views/index.tsx +74 -0
  535. package/src/fields/types/float/index.ts +133 -0
  536. package/src/fields/types/float/views/index.tsx +215 -0
  537. package/src/fields/types/image/index.ts +244 -0
  538. package/src/fields/types/image/internal-utils.ts +58 -0
  539. package/src/fields/types/image/utils.ts +1 -0
  540. package/src/fields/types/image/views/Field.tsx +295 -0
  541. package/src/fields/types/image/views/index.tsx +92 -0
  542. package/src/fields/types/integer/index.ts +156 -0
  543. package/src/fields/types/integer/views/index.tsx +255 -0
  544. package/src/fields/types/json/index.ts +77 -0
  545. package/src/fields/types/json/views/index.tsx +76 -0
  546. package/src/fields/types/multiselect/index.ts +212 -0
  547. package/src/fields/types/multiselect/views/index.tsx +151 -0
  548. package/src/fields/types/password/index.ts +241 -0
  549. package/src/fields/types/password/views/index.tsx +342 -0
  550. package/src/fields/types/relationship/index.ts +381 -0
  551. package/src/fields/types/relationship/views/ComboboxMany.tsx +110 -0
  552. package/src/fields/types/relationship/views/ComboboxSingle.tsx +115 -0
  553. package/src/fields/types/relationship/views/ContextualActions.tsx +139 -0
  554. package/src/fields/types/relationship/views/RelationshipTable.tsx +190 -0
  555. package/src/fields/types/relationship/views/index.tsx +492 -0
  556. package/src/fields/types/relationship/views/types.ts +46 -0
  557. package/src/fields/types/relationship/views/useApolloQuery.ts +185 -0
  558. package/src/fields/types/relationship/views/useFilter.tsx +109 -0
  559. package/src/fields/types/select/index.ts +226 -0
  560. package/src/fields/types/select/views/SegmentedControl.tsx +83 -0
  561. package/src/fields/types/select/views/index.tsx +318 -0
  562. package/src/fields/types/text/index.ts +207 -0
  563. package/src/fields/types/text/views/index.tsx +273 -0
  564. package/src/fields/types/timestamp/index.ts +116 -0
  565. package/src/fields/types/timestamp/views/__tests__/index.tsx +68 -0
  566. package/src/fields/types/timestamp/views/__tests__/utils.tsx +16 -0
  567. package/src/fields/types/timestamp/views/index.tsx +262 -0
  568. package/src/fields/types/timestamp/views/utils.ts +22 -0
  569. package/src/fields/types/virtual/index.ts +108 -0
  570. package/src/fields/types/virtual/views/index.tsx +53 -0
  571. package/src/graphql-ts.ts +32 -0
  572. package/src/helpers.ts +316 -0
  573. package/src/index.ts +20 -0
  574. package/src/lib/admin-meta-graphql.ts +407 -0
  575. package/src/lib/admin-meta.ts +369 -0
  576. package/src/lib/coerceAndValidateForGraphQLInput.ts +29 -0
  577. package/src/lib/context/api.ts +99 -0
  578. package/src/lib/context/createContext.ts +161 -0
  579. package/src/lib/context/graphql.ts +300 -0
  580. package/src/lib/core/access-control.ts +434 -0
  581. package/src/lib/core/field-assertions.ts +118 -0
  582. package/src/lib/core/filter-order-access.ts +48 -0
  583. package/src/lib/core/graphql-errors.ts +76 -0
  584. package/src/lib/core/hooks.ts +111 -0
  585. package/src/lib/core/initialise-lists.ts +1097 -0
  586. package/src/lib/core/mutations/index.ts +917 -0
  587. package/src/lib/core/mutations/nested-mutation-many-input-resolvers.ts +145 -0
  588. package/src/lib/core/mutations/nested-mutation-one-input-resolvers.ts +71 -0
  589. package/src/lib/core/prisma-schema-printer.ts +256 -0
  590. package/src/lib/core/queries/index.ts +66 -0
  591. package/src/lib/core/queries/output-field.ts +178 -0
  592. package/src/lib/core/queries/resolvers.ts +258 -0
  593. package/src/lib/core/resolve-relationships.ts +303 -0
  594. package/src/lib/core/utils.ts +56 -0
  595. package/src/lib/core/where-inputs.ts +130 -0
  596. package/src/lib/express.ts +109 -0
  597. package/src/lib/graphql.ts +83 -0
  598. package/src/lib/id-field.ts +214 -0
  599. package/src/lib/middleware.ts +68 -0
  600. package/src/lib/migrations.ts +90 -0
  601. package/src/lib/otel.ts +43 -0
  602. package/src/lib/prompts.ts +29 -0
  603. package/src/lib/system.ts +207 -0
  604. package/src/lib/telemetry.ts +342 -0
  605. package/src/lib/typescript-schema-printer.ts +227 -0
  606. package/src/lib/utils.ts +21 -0
  607. package/src/pkg-dir.ts +6 -0
  608. package/src/schema.ts +233 -0
  609. package/src/scripts/build.ts +64 -0
  610. package/src/scripts/cli.ts +124 -0
  611. package/src/scripts/dev.ts +452 -0
  612. package/src/scripts/esbuild.ts +120 -0
  613. package/src/scripts/index.ts +20 -0
  614. package/src/scripts/migrate.ts +214 -0
  615. package/src/scripts/prisma.ts +49 -0
  616. package/src/scripts/start.ts +76 -0
  617. package/src/scripts/telemetry.ts +37 -0
  618. package/src/scripts/utils.ts +22 -0
  619. package/src/session.ts +168 -0
  620. package/src/testing.ts +23 -0
  621. package/src/types/admin-meta.ts +218 -0
  622. package/src/types/config/access-control.ts +186 -0
  623. package/src/types/config/fields.ts +96 -0
  624. package/src/types/config/hooks.ts +529 -0
  625. package/src/types/config/index.ts +333 -0
  626. package/src/types/config/lists.ts +565 -0
  627. package/src/types/context.ts +530 -0
  628. package/src/types/core.ts +16 -0
  629. package/src/types/index.ts +8 -0
  630. package/src/types/next-fields.ts +499 -0
  631. package/src/types/prisma.ts +16 -0
  632. package/src/types/schema/g.ts +5 -0
  633. package/src/types/schema/gWithContext.ts +20 -0
  634. package/src/types/schema/index.ts +4 -0
  635. package/src/types/schema/legacy-alias.d.ts +28 -0
  636. package/src/types/schema/legacy-alias.js +1 -0
  637. package/src/types/schema/scalars.ts +220 -0
  638. package/src/types/session.ts +26 -0
  639. package/src/types/telemetry.ts +51 -0
  640. package/src/types/type-info.ts +38 -0
  641. package/src/types/type-tests.ts +21 -0
  642. package/src/types/utils.ts +108 -0
  643. package/static/admin-error.html +53 -0
  644. package/static/dev-loading.html +146 -0
  645. package/static/favicon.ico +0 -0
  646. package/static/favicon.svg +4 -0
  647. package/system/package.json +4 -0
  648. package/testing/dist/nixxie-cms-core-testing.cjs.d.ts +2 -0
  649. package/testing/dist/nixxie-cms-core-testing.cjs.js +29 -0
  650. package/testing/dist/nixxie-cms-core-testing.esm.js +21 -0
  651. package/testing/package.json +4 -0
  652. package/tests/conditional-filters.test.ts +326 -0
  653. package/tests/telemetry.test.ts +361 -0
  654. package/tsconfig.json +20 -0
  655. package/types/dist/nixxie-cms-core-types.cjs.d.ts +2 -0
  656. package/types/dist/nixxie-cms-core-types.cjs.js +29 -0
  657. package/types/dist/nixxie-cms-core-types.esm.js +9 -0
  658. package/types/package.json +4 -0
@@ -0,0 +1,1213 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var i18n = require('@react-aria/i18n');
6
+ var react = require('react');
7
+ var dialog = require('@keystar/ui/dialog');
8
+ var layout = require('@keystar/ui/layout');
9
+ var link = require('@keystar/ui/link');
10
+ var tag = require('@keystar/ui/tag');
11
+ var textField = require('@keystar/ui/text-field');
12
+ var typography = require('@keystar/ui/typography');
13
+ var table = require('@keystar/ui/table');
14
+ var jsxRuntime = require('react/jsx-runtime');
15
+ var style = require('@keystar/ui/style');
16
+ require('@keystar/ui/checkbox');
17
+ var icon = require('@keystar/ui/icon');
18
+ require('@keystar/ui/icon/icons/cornerDownRightIcon');
19
+ require('@babel/runtime/helpers/defineProperty');
20
+ var button = require('@keystar/ui/button');
21
+ require('@keystar/ui/icon/icons/alertTriangleIcon');
22
+ require('@keystar/ui/notice');
23
+ require('@keystar/ui/slots');
24
+ require('next/link');
25
+ var adminUi_context_dist_nixxieCmsCoreAdminUiContext = require('../../../../../dist/context-e7a45152.cjs.js');
26
+ require('next/router');
27
+ require('next/head');
28
+ var CreateItemDialog = require('../../../../../dist/CreateItemDialog-56cf59b7.cjs.js');
29
+ var client = require('@apollo/client');
30
+ var arrowUpRightIcon = require('@keystar/ui/icon/icons/arrowUpRightIcon');
31
+ var combobox = require('@keystar/ui/combobox');
32
+ var isDeepEqual = require('fast-deep-equal');
33
+ var react$1 = require('@apollo/client/react');
34
+ var useFilter = require('../../../../../dist/useFilter-1a4e6900.cjs.js');
35
+ var plusIcon = require('@keystar/ui/icon/icons/plusIcon');
36
+ var menu = require('@keystar/ui/menu');
37
+ var tooltip = require('@keystar/ui/tooltip');
38
+ var field = require('@keystar/ui/field');
39
+ var textSelectIcon = require('@keystar/ui/icon/icons/textSelectIcon');
40
+ var utils = require('../../../../../dist/utils-230cddb1.cjs.js');
41
+ require('@react-aria/utils');
42
+ require('@keystar/ui/icon/icons/chevronRightIcon');
43
+ require('@keystar/ui/icon/icons/textCursorInputIcon');
44
+ require('@keystar/ui/toast');
45
+ require('graphql');
46
+ var GraphQLErrorNotice = require('../../../../../dist/GraphQLErrorNotice-cd74180d.cjs.js');
47
+ var progress = require('@keystar/ui/progress');
48
+ require('apollo-upload-client/UploadHttpLink.mjs');
49
+ require('@keystar/ui/core');
50
+ require('@nixxie-cms/core/admin-ui/router');
51
+ require('@keystar/ui/icon/icons/chevronLeftIcon');
52
+ require('@keystar/ui/icon/icons/undo2Icon');
53
+ require('@keystar/ui/picker');
54
+ require('../../../../../dist/admin-meta-graphql-c8f926e9.cjs.js');
55
+ require('../../../../../dist/filters-b3e5eb50.cjs.js');
56
+ require('../../../../../dist/Fields-e2c28056.cjs.js');
57
+ require('../../../../../dist/useCreateItem-1be4987e.cjs.js');
58
+ require('@keystar/ui/utils');
59
+
60
+ function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
61
+
62
+ var isDeepEqual__default = /*#__PURE__*/_interopDefault(isDeepEqual);
63
+
64
+ function useDebouncedValue(value, limitMs) {
65
+ const [debouncedValue, setDebouncedValue] = react.useState(() => value);
66
+ react.useEffect(() => {
67
+ const timeout = setTimeout(() => {
68
+ setDebouncedValue(() => value);
69
+ }, limitMs);
70
+ return () => clearTimeout(timeout);
71
+ }, [value, limitMs]);
72
+ return debouncedValue;
73
+ }
74
+ function useApolloQuery(args) {
75
+ var _state$value3;
76
+ const {
77
+ labelField,
78
+ list,
79
+ searchFields,
80
+ state
81
+ } = args;
82
+ const [search, setSearch] = react.useState(() => {
83
+ var _state$value, _state$value2;
84
+ if (state.kind === 'one' && (_state$value = state.value) !== null && _state$value !== void 0 && _state$value.label) return (_state$value2 = state.value) === null || _state$value2 === void 0 ? void 0 : _state$value2.label;
85
+ return '';
86
+ });
87
+ const QUERY = client.gql`
88
+ query RelationshipSelect($where: ${list.graphql.names.whereInputName}!, $take: Int!, $skip: Int!, $orderBy: [${list.graphql.names.listOrderName}!]) {
89
+ items: ${list.graphql.names.listQueryName}(where: $where, take: $take, skip: $skip, orderBy: $orderBy) {
90
+ id: id
91
+ label: ${labelField}
92
+ }
93
+ count: ${list.graphql.names.listQueryCountName}(where: $where)
94
+ }
95
+ `;
96
+ const debouncedSearch = useDebouncedValue(search, 200);
97
+ const manipulatedSearch = state.kind === 'one' && ((_state$value3 = state.value) === null || _state$value3 === void 0 ? void 0 : _state$value3.label) === debouncedSearch ? '' : debouncedSearch;
98
+ const searchFilter = useFilter.useSearchFilter(manipulatedSearch, list, searchFields);
99
+ const _where = {
100
+ OR: searchFilter
101
+ };
102
+ const where = args.filter ? {
103
+ AND: [_where, args.filter]
104
+ } : _where;
105
+ const orderBy = react.useMemo(() => {
106
+ return args.sort ? {
107
+ [args.sort.field]: args.sort.direction.toLowerCase()
108
+ } : undefined;
109
+ }, [args.sort]);
110
+ const link = react$1.useApolloClient().link;
111
+ // we're using a local apollo client here because writing a global implementation of the typePolicies
112
+ // would require making assumptions about how pagination should work which won't always be right
113
+ const apolloClient = react.useMemo(() => new client.ApolloClient({
114
+ link,
115
+ cache: new client.InMemoryCache({
116
+ typePolicies: {
117
+ Query: {
118
+ fields: {
119
+ [list.graphql.names.listQueryName]: {
120
+ keyArgs: ['where'],
121
+ merge: (existing, incoming, {
122
+ args
123
+ }) => {
124
+ const merged = existing ? existing.slice() : [];
125
+ const {
126
+ skip
127
+ } = args;
128
+ for (let i = 0; i < incoming.length; ++i) {
129
+ merged[skip + i] = incoming[i];
130
+ }
131
+ return merged;
132
+ }
133
+ }
134
+ }
135
+ }
136
+ }
137
+ })
138
+ }), [link, list.graphql.names.listQueryName]);
139
+ const initialItemsToLoad = Math.min(list.pageSize, 10);
140
+ const subsequentItemsToLoad = Math.min(list.pageSize, 50);
141
+ const {
142
+ data,
143
+ previousData,
144
+ error,
145
+ loading,
146
+ fetchMore
147
+ } = react$1.useQuery(QUERY, {
148
+ fetchPolicy: 'network-only',
149
+ variables: {
150
+ where,
151
+ take: initialItemsToLoad,
152
+ skip: 0,
153
+ orderBy
154
+ },
155
+ client: apolloClient
156
+ });
157
+
158
+ // we want to avoid fetching more again and `loading` from Apollo
159
+ // doesn't seem to become true when fetching more
160
+ const [lastFetchMore, setLastFetchMore] = react.useState(null);
161
+ const count = (data === null || data === void 0 ? void 0 : data.count) || 0;
162
+ const onLoadMore = () => {
163
+ const skip = data === null || data === void 0 ? void 0 : data.items.length;
164
+ if (!loading && skip && data.items.length < count && (!isDeepEqual__default["default"](lastFetchMore === null || lastFetchMore === void 0 ? void 0 : lastFetchMore.where, where) || (lastFetchMore === null || lastFetchMore === void 0 ? void 0 : lastFetchMore.list) !== list || (lastFetchMore === null || lastFetchMore === void 0 ? void 0 : lastFetchMore.skip) !== skip)) {
165
+ const QUERY = client.gql`
166
+ query RelationshipSelectMore($where: ${list.graphql.names.whereInputName}!, $take: Int!, $skip: Int!, $orderBy: [${list.graphql.names.listOrderName}!]) {
167
+ items: ${list.graphql.names.listQueryName}(where: $where, take: $take, skip: $skip, orderBy: $orderBy) {
168
+ id
169
+ label: ${labelField}
170
+ }
171
+ }
172
+ `;
173
+ setLastFetchMore({
174
+ list,
175
+ skip,
176
+ where
177
+ });
178
+ fetchMore({
179
+ query: QUERY,
180
+ variables: {
181
+ where,
182
+ take: subsequentItemsToLoad,
183
+ skip,
184
+ orderBy
185
+ }
186
+ }).then(() => setLastFetchMore(null)).catch(() => setLastFetchMore(null));
187
+ }
188
+ };
189
+ return {
190
+ data: loading ? previousData : data,
191
+ error,
192
+ loading,
193
+ loadingState: getLoadingState({
194
+ loading,
195
+ search
196
+ }),
197
+ search,
198
+ setSearch,
199
+ onLoadMore
200
+ };
201
+ }
202
+ function getLoadingState(options) {
203
+ if (options.loading) {
204
+ if (options.search.length) return 'filtering';
205
+ return 'loading';
206
+ }
207
+ return 'idle';
208
+ }
209
+
210
+ function ComboboxMany({
211
+ extraSelection = '',
212
+ forceValidation,
213
+ isDisabled,
214
+ isLoading,
215
+ isReadOnly,
216
+ isRequired,
217
+ labelField,
218
+ list,
219
+ searchFields,
220
+ state,
221
+ filter,
222
+ sort,
223
+ ...props
224
+ }) {
225
+ var _data$items$map, _data$items, _state$value;
226
+ const {
227
+ data,
228
+ loadingState,
229
+ error,
230
+ onLoadMore,
231
+ search,
232
+ setSearch
233
+ } = useApolloQuery({
234
+ labelField,
235
+ list,
236
+ searchFields,
237
+ state,
238
+ filter,
239
+ sort
240
+ });
241
+ const [shouldShowErrors, setShouldShowErrors] = react.useState(false);
242
+ const validationMessages = isRequired && state.value.length === 0 ? [`At least one ${list.singular} is required`] : [];
243
+
244
+ // TODO: better error UI
245
+ // TODO: Handle permission errors
246
+ // (ie; user has permission to read this relationship field, but
247
+ // not the related list, or some items on the list)
248
+ if (error) return /*#__PURE__*/jsxRuntime.jsx("span", {
249
+ children: "Error"
250
+ });
251
+ const items = (_data$items$map = data === null || data === void 0 || (_data$items = data.items) === null || _data$items === void 0 ? void 0 : _data$items.map(x => ({
252
+ ...x,
253
+ built: false
254
+ }))) !== null && _data$items$map !== void 0 ? _data$items$map : [];
255
+ const fetchedIds = new Set(items.map(item => item.id));
256
+ for (const item of state.value) {
257
+ if (!fetchedIds.has(item.id)) {
258
+ items.push(item);
259
+ }
260
+ }
261
+ return /*#__PURE__*/jsxRuntime.jsx(combobox.ComboboxMulti, {
262
+ ...props,
263
+ isDisabled: isDisabled || isReadOnly,
264
+ isRequired: isRequired,
265
+ items: items,
266
+ loadingState: loadingState,
267
+ errorMessage: !!validationMessages.length && (shouldShowErrors || forceValidation) ? validationMessages.join('. ') : undefined,
268
+ onBlur: () => {
269
+ setShouldShowErrors(true);
270
+ },
271
+ onInputChange: setSearch,
272
+ inputValue: search,
273
+ onLoadMore: onLoadMore,
274
+ selectedKeys: (_state$value = state.value) === null || _state$value === void 0 ? void 0 : _state$value.map(item => item.id.toString()),
275
+ onSelectionChange: selection => {
276
+ // TODO
277
+ if (selection === 'all') return;
278
+ const selectedItems = items.filter(item => selection.has(item.id.toString()));
279
+ state.onChange(selectedItems);
280
+ },
281
+ minWidth: "alias.singleLineWidth",
282
+ width: "auto",
283
+ UNSAFE_className: style.css({
284
+ // This should probably be addressed in @keystar/ui/combobox
285
+ // - the mobile variant should respect the `width` prop
286
+ '[role="button"]': {
287
+ width: 'auto'
288
+ }
289
+ }),
290
+ children: item => /*#__PURE__*/jsxRuntime.jsx(combobox.Item, {
291
+ children: item.label || item.id
292
+ })
293
+ });
294
+ }
295
+
296
+ function ComboboxSingle({
297
+ forceValidation,
298
+ isLoading,
299
+ isRequired,
300
+ labelField,
301
+ list,
302
+ searchFields,
303
+ state,
304
+ filter,
305
+ sort,
306
+ ...props
307
+ }) {
308
+ var _data$items$map, _data$items;
309
+ const {
310
+ data,
311
+ loading,
312
+ error,
313
+ onLoadMore,
314
+ search,
315
+ setSearch
316
+ } = useApolloQuery({
317
+ labelField,
318
+ list,
319
+ searchFields,
320
+ state,
321
+ filter,
322
+ sort
323
+ });
324
+ const [shouldShowErrors, setShouldShowErrors] = react.useState(false);
325
+ const validationMessages = isRequired && state.value === null ? [`A ${list.singular} is required`] : [];
326
+ const [lastSeenStateValue, setLastSeenStateValue] = react.useState(state.value);
327
+ if (state.value !== lastSeenStateValue) {
328
+ var _state$value$label, _state$value;
329
+ setLastSeenStateValue(state.value);
330
+ setSearch((_state$value$label = (_state$value = state.value) === null || _state$value === void 0 ? void 0 : _state$value.label) !== null && _state$value$label !== void 0 ? _state$value$label : '');
331
+ }
332
+
333
+ // TODO: better error UI
334
+ // TODO: Handle permission errors
335
+ // (ie; user has permission to read this relationship field, but
336
+ // not the related list, or some items on the list)
337
+ if (error) return /*#__PURE__*/jsxRuntime.jsx("span", {
338
+ children: "Error"
339
+ });
340
+ const items = (_data$items$map = data === null || data === void 0 || (_data$items = data.items) === null || _data$items === void 0 ? void 0 : _data$items.map(x => ({
341
+ ...x,
342
+ built: false
343
+ }))) !== null && _data$items$map !== void 0 ? _data$items$map : [];
344
+ if (state.value !== null && (state.value.built || !items.some(item => {
345
+ var _state$value2;
346
+ return item.id === ((_state$value2 = state.value) === null || _state$value2 === void 0 ? void 0 : _state$value2.id);
347
+ }))) {
348
+ items.push(state.value);
349
+ }
350
+ return /*#__PURE__*/jsxRuntime.jsx(combobox.Combobox, {
351
+ ...props,
352
+ isRequired: isRequired,
353
+ items: items,
354
+ loadingState: loading || isLoading ? 'loading' : 'idle',
355
+ errorMessage: !!validationMessages.length && (shouldShowErrors || forceValidation) ? validationMessages.join('. ') : undefined,
356
+ onBlur: () => {
357
+ setShouldShowErrors(true);
358
+ },
359
+ onInputChange: input => {
360
+ setSearch(input);
361
+
362
+ // unset the selected value when the user clears the input
363
+ if (input === '') state.onChange(null);
364
+ },
365
+ inputValue: search,
366
+ onLoadMore: onLoadMore,
367
+ selectedKey: state.value ? state.value.id.toString() : null,
368
+ onSelectionChange: key => {
369
+ var _items$find, _selectedItem$label;
370
+ const selectedItem = (_items$find = items.find(item => item.id.toString() === key)) !== null && _items$find !== void 0 ? _items$find : null;
371
+ state.onChange(selectedItem);
372
+ setSearch((_selectedItem$label = selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.label) !== null && _selectedItem$label !== void 0 ? _selectedItem$label : '');
373
+ },
374
+ minWidth: "alias.singleLineWidth",
375
+ width: "auto",
376
+ UNSAFE_className: style.css({
377
+ // This should probably be addressed in @keystar/ui/combobox
378
+ // - the mobile variant should respect the `width` prop
379
+ '[role="button"]': {
380
+ width: 'auto'
381
+ }
382
+ }),
383
+ children: item => /*#__PURE__*/jsxRuntime.jsx(combobox.Item, {
384
+ children: item.label || item.id
385
+ })
386
+ });
387
+ }
388
+
389
+ function ContextualActions(props) {
390
+ const {
391
+ children,
392
+ ...otherProps
393
+ } = props;
394
+ return /*#__PURE__*/jsxRuntime.jsxs(layout.Grid, {
395
+ gap: "regular",
396
+ alignItems: "end",
397
+ columns: "minmax(0, 1fr) auto",
398
+ children: [children, /*#__PURE__*/jsxRuntime.jsx(ContextualActionsMenu, {
399
+ ...otherProps
400
+ })]
401
+ });
402
+ }
403
+ function ContextualActionsMenu(props) {
404
+ const {
405
+ field,
406
+ onAdd,
407
+ onChange
408
+ } = props;
409
+ const foreignList = adminUi_context_dist_nixxieCmsCoreAdminUiContext.useList(field.refListKey);
410
+ const relatedItemHref = useRelatedItemHref(props);
411
+ const relatedItemLabel = useRelatedItemLabel(field);
412
+ const allowAdd = !field.hideCreate && !!onChange;
413
+ const items = react.useMemo(() => {
414
+ const result = [];
415
+ if (allowAdd) {
416
+ result.push({
417
+ icon: plusIcon.plusIcon,
418
+ key: 'add',
419
+ label: `Add ${foreignList.singular.toLocaleLowerCase()}`
420
+ });
421
+ }
422
+ result.push({
423
+ key: 'view',
424
+ icon: arrowUpRightIcon.arrowUpRightIcon,
425
+ href: relatedItemHref,
426
+ label: relatedItemLabel
427
+ });
428
+ return result;
429
+ }, [allowAdd, foreignList, relatedItemHref, relatedItemLabel]);
430
+ const onAction = key => {
431
+ switch (key) {
432
+ case 'add':
433
+ {
434
+ onAdd();
435
+ break;
436
+ }
437
+ }
438
+ };
439
+
440
+ // we don't want to change the presence or lack thereof of a selected value
441
+ // but since `allowAdd` is based on config, it's fairly static and showing
442
+ // a menu when the menu will only have one item is quite silly
443
+ if (!allowAdd) {
444
+ return /*#__PURE__*/jsxRuntime.jsxs(tooltip.TooltipTrigger, {
445
+ children: [/*#__PURE__*/jsxRuntime.jsx(button.ActionButton, {
446
+ ...(relatedItemHref ? {
447
+ href: relatedItemHref
448
+ } : {
449
+ isDisabled: true
450
+ }),
451
+ children: /*#__PURE__*/jsxRuntime.jsx(icon.Icon, {
452
+ src: arrowUpRightIcon.arrowUpRightIcon
453
+ })
454
+ }), /*#__PURE__*/jsxRuntime.jsx(tooltip.Tooltip, {
455
+ children: relatedItemLabel
456
+ })]
457
+ });
458
+ }
459
+ return /*#__PURE__*/jsxRuntime.jsx(menu.ActionMenu, {
460
+ "aria-label": `Actions for ${field.label}`,
461
+ direction: "bottom",
462
+ align: "end",
463
+ isDisabled: items.length === 0,
464
+ disabledKeys: relatedItemHref === null ? ['view'] : [],
465
+ items: items,
466
+ onAction: onAction,
467
+ children: item => {
468
+ var _item$href;
469
+ return /*#__PURE__*/jsxRuntime.jsxs(menu.Item, {
470
+ href: (_item$href = item.href) !== null && _item$href !== void 0 ? _item$href : undefined,
471
+ textValue: item.label,
472
+ children: [/*#__PURE__*/jsxRuntime.jsx(icon.Icon, {
473
+ src: item.icon
474
+ }), /*#__PURE__*/jsxRuntime.jsx(typography.Text, {
475
+ children: item.label
476
+ })]
477
+ }, item.key);
478
+ }
479
+ });
480
+ }
481
+ function useRelatedItemLabel(field) {
482
+ const foreignList = adminUi_context_dist_nixxieCmsCoreAdminUiContext.useList(field.refListKey);
483
+ if (field.many) {
484
+ return `View related ${foreignList.plural.toLocaleLowerCase()}`;
485
+ }
486
+ return `View ${foreignList.singular.toLocaleLowerCase()}`;
487
+ }
488
+ function useRelatedItemHref({
489
+ field,
490
+ value
491
+ }) {
492
+ const foreignList = adminUi_context_dist_nixxieCmsCoreAdminUiContext.useList(field.refListKey);
493
+ if (value.kind === 'one') {
494
+ if (!value.value) return null;
495
+ // the related item isn't actually created yet so we can't view it
496
+ if (value.value.built) return null;
497
+ return `/${foreignList.path}/${value.value.id}`;
498
+ }
499
+ let query;
500
+ if (field.refFieldKey && value.id !== null) {
501
+ query = buildQueryForRelationshipFieldWithForeignField(foreignList, field.refFieldKey, value.id);
502
+ } else if (value.kind === 'many' && value.value.length > 0) {
503
+ query = `!id_in=${JSON.stringify(value.value.map(x => x.id))}`;
504
+ }
505
+ if (query === undefined) return null;
506
+ return `/${foreignList.path}?${query}`;
507
+ }
508
+ function buildQueryForRelationshipFieldWithForeignField(foreignList, refFieldKey, localId) {
509
+ const foreignField = foreignList.fields[refFieldKey];
510
+ const foreignMany = foreignField.fieldMeta.many;
511
+ return `filter=${refFieldKey}_${foreignMany ? 'some' : 'is'}_${JSON.stringify(foreignMany ? [localId] : localId)}`;
512
+ }
513
+
514
+ function RelationshipTable({
515
+ field: field$1,
516
+ value
517
+ }) {
518
+ var _field$columns, _data$items;
519
+ if (!field$1.refFieldKey) {
520
+ throw new Error('refFieldKey is required for displayMode: table');
521
+ }
522
+ const [currentPage, setCurrentPage] = react.useState(1);
523
+ const [pageSize, setPageSize] = react.useState(50);
524
+ const list = adminUi_context_dist_nixxieCmsCoreAdminUiContext.useList(field$1.refListKey);
525
+ const hasManyOnRefList = list.fields[field$1.refFieldKey].controller.many;
526
+ const selectedFields = (_field$columns = field$1.columns) !== null && _field$columns !== void 0 ? _field$columns : list.initialColumns;
527
+ const columns = react.useMemo(() => {
528
+ return selectedFields.map(path => {
529
+ const field = list.fields[path];
530
+ return {
531
+ id: path,
532
+ label: field.label,
533
+ allowsSorting: field.isOrderable
534
+ };
535
+ });
536
+ }, [selectedFields, list]);
537
+ const [sort, setSort] = react.useState(() => {
538
+ if (field$1.initialSort) {
539
+ return {
540
+ column: field$1.initialSort.field,
541
+ direction: field$1.initialSort.direction === 'ASC' ? 'ascending' : 'descending'
542
+ };
543
+ }
544
+ return {
545
+ column: 'id',
546
+ direction: 'ascending'
547
+ };
548
+ });
549
+ const {
550
+ data,
551
+ error,
552
+ loading
553
+ } = react$1.useQuery(react.useMemo(() => {
554
+ const selectedGqlFields = [...selectedFields].map(fieldPath => list.fields[fieldPath].controller.graphqlSelection).join('\n');
555
+
556
+ // TODO: FIXME: this is bad
557
+ return client.gql`
558
+ query (
559
+ $where: ${list.graphql.names.whereInputName},
560
+ $take: Int!,
561
+ $skip: Int!,
562
+ $orderBy: [${list.graphql.names.listOrderName}!]
563
+ ) {
564
+ items: ${list.graphql.names.listQueryName}(
565
+ where: $where,
566
+ take: $take,
567
+ skip: $skip,
568
+ orderBy: $orderBy
569
+ ) {
570
+ ${selectedFields.includes('id') ? '' : 'id'}
571
+ ${selectedGqlFields}
572
+ }
573
+ }
574
+ `;
575
+ }, [list, selectedFields]), {
576
+ fetchPolicy: 'cache-and-network',
577
+ errorPolicy: 'all',
578
+ variables: {
579
+ where: {
580
+ [field$1.refFieldKey]: hasManyOnRefList ? {
581
+ some: {
582
+ id: {
583
+ equals: value.id
584
+ }
585
+ }
586
+ } : {
587
+ id: {
588
+ equals: value.id
589
+ }
590
+ }
591
+ },
592
+ take: pageSize,
593
+ skip: (currentPage - 1) * pageSize,
594
+ orderBy: [{
595
+ [sort.column]: sort.direction === 'ascending' ? 'asc' : 'desc'
596
+ }]
597
+ }
598
+ });
599
+ const relatedItemLabel = useRelatedItemLabel(field$1);
600
+ const relatedItemHref = useRelatedItemHref({
601
+ field: field$1,
602
+ value
603
+ });
604
+ const items = (_data$items = data === null || data === void 0 ? void 0 : data.items) !== null && _data$items !== void 0 ? _data$items : [];
605
+ return /*#__PURE__*/jsxRuntime.jsx(field.Field, {
606
+ label: field$1.label,
607
+ description: field$1.description,
608
+ children: inputProps => /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
609
+ children: [/*#__PURE__*/jsxRuntime.jsxs(table.TableView, {
610
+ ...inputProps,
611
+ selectionMode: "none",
612
+ onSortChange: sort => setSort(sort),
613
+ sortDescriptor: sort,
614
+ density: "compact",
615
+ UNSAFE_style: {
616
+ minHeight: 29 * 10,
617
+ maxHeight: 29 * 10
618
+ },
619
+ overflowMode: "truncate",
620
+ renderEmptyState: () => loading ? /*#__PURE__*/jsxRuntime.jsx(progress.ProgressCircle, {
621
+ isIndeterminate: true
622
+ }) : error ? /*#__PURE__*/jsxRuntime.jsx(GraphQLErrorNotice.GraphQLErrorNotice, {
623
+ errors: [error]
624
+ }) : /*#__PURE__*/jsxRuntime.jsx(utils.EmptyState, {
625
+ icon: textSelectIcon.textSelectIcon,
626
+ title: "Empty related items",
627
+ message: "There are no related items."
628
+ }),
629
+ flex: true,
630
+ children: [/*#__PURE__*/jsxRuntime.jsx(table.TableHeader, {
631
+ columns: columns,
632
+ children: ({
633
+ label,
634
+ id,
635
+ ...options
636
+ }) => /*#__PURE__*/jsxRuntime.jsx(table.Column, {
637
+ isRowHeader: true,
638
+ ...options,
639
+ children: label
640
+ }, id)
641
+ }), /*#__PURE__*/jsxRuntime.jsx(table.TableBody, {
642
+ items: items,
643
+ children: row => {
644
+ return /*#__PURE__*/jsxRuntime.jsx(table.Row, {
645
+ href: `/${list.path}/${row === null || row === void 0 ? void 0 : row.id}`,
646
+ children: key => {
647
+ const field = list.fields[key];
648
+ const value = row[key];
649
+ const CellContent = field.views.Cell;
650
+ return /*#__PURE__*/jsxRuntime.jsx(table.Cell, {
651
+ children: CellContent ? /*#__PURE__*/jsxRuntime.jsx(CellContent, {
652
+ value: value,
653
+ field: field.controller,
654
+ item: row
655
+ }) : /*#__PURE__*/jsxRuntime.jsx(typography.Text, {
656
+ children: value === null || value === void 0 ? void 0 : value.toString()
657
+ })
658
+ });
659
+ }
660
+ });
661
+ }
662
+ })]
663
+ }), /*#__PURE__*/jsxRuntime.jsx(adminUi_context_dist_nixxieCmsCoreAdminUiContext.PaginationControls, {
664
+ currentPage: currentPage,
665
+ pageSize: pageSize,
666
+ plural: list.plural,
667
+ singular: list.singular,
668
+ total: value.count,
669
+ onChangePage: page => setCurrentPage(page),
670
+ onChangePageSize: size => setPageSize(size),
671
+ extraActions: /*#__PURE__*/jsxRuntime.jsxs(tooltip.TooltipTrigger, {
672
+ children: [/*#__PURE__*/jsxRuntime.jsx(button.ActionButton, {
673
+ href: relatedItemHref,
674
+ children: /*#__PURE__*/jsxRuntime.jsx(icon.Icon, {
675
+ src: arrowUpRightIcon.arrowUpRightIcon
676
+ })
677
+ }), /*#__PURE__*/jsxRuntime.jsx(tooltip.Tooltip, {
678
+ children: relatedItemLabel
679
+ })]
680
+ })
681
+ })]
682
+ })
683
+ });
684
+ }
685
+
686
+ function Field(props) {
687
+ const {
688
+ autoFocus,
689
+ field,
690
+ forceValidation = false,
691
+ onChange,
692
+ value,
693
+ isRequired
694
+ } = props;
695
+ const foreignList = adminUi_context_dist_nixxieCmsCoreAdminUiContext.useList(field.refListKey);
696
+ const [dialogIsOpen, setDialogOpen] = react.useState(false);
697
+ const description = field.description || undefined;
698
+ const isReadOnly = onChange === undefined;
699
+ const [counter, setCounter] = react.useState(1);
700
+ if (value.kind === 'count') {
701
+ if (field.display === 'table') {
702
+ return /*#__PURE__*/jsxRuntime.jsx(RelationshipTable, {
703
+ field: field,
704
+ value: value
705
+ });
706
+ }
707
+ const textField$1 = /*#__PURE__*/jsxRuntime.jsx(textField.TextField, {
708
+ autoFocus: autoFocus,
709
+ label: field.label,
710
+ description: description,
711
+ isReadOnly: true,
712
+ value: value.count.toString(),
713
+ width: "alias.singleLineWidth"
714
+ });
715
+ if (!field.refFieldKey) return textField$1;
716
+ return /*#__PURE__*/jsxRuntime.jsxs(layout.HStack, {
717
+ gap: "small",
718
+ alignItems: "end",
719
+ children: [textField$1, /*#__PURE__*/jsxRuntime.jsx(button.ActionButton, {
720
+ href: `/${foreignList.path}?${buildQueryForRelationshipFieldWithForeignField(foreignList, field.refFieldKey, value.id)}`,
721
+ children: /*#__PURE__*/jsxRuntime.jsx(icon.Icon, {
722
+ src: arrowUpRightIcon.arrowUpRightIcon
723
+ })
724
+ })]
725
+ });
726
+ }
727
+ return /*#__PURE__*/jsxRuntime.jsxs(react.Fragment, {
728
+ children: [/*#__PURE__*/jsxRuntime.jsxs(layout.VStack, {
729
+ gap: "medium",
730
+ children: [/*#__PURE__*/jsxRuntime.jsx(ContextualActions, {
731
+ onAdd: () => setDialogOpen(true),
732
+ ...props,
733
+ children: value.kind === 'many' ? /*#__PURE__*/jsxRuntime.jsx(ComboboxMany, {
734
+ autoFocus: autoFocus,
735
+ label: field.label,
736
+ description: description,
737
+ forceValidation: forceValidation,
738
+ isReadOnly: isReadOnly,
739
+ isRequired: isRequired,
740
+ list: foreignList,
741
+ labelField: field.refLabelField,
742
+ searchFields: field.refSearchFields,
743
+ filter: field.selectFilter,
744
+ sort: field.selectSort,
745
+ state: {
746
+ kind: 'many',
747
+ value: value.value,
748
+ onChange(newItems) {
749
+ onChange === null || onChange === void 0 || onChange({
750
+ ...value,
751
+ value: newItems
752
+ });
753
+ }
754
+ }
755
+ }) : /*#__PURE__*/jsxRuntime.jsx(ComboboxSingle, {
756
+ autoFocus: autoFocus,
757
+ label: field.label,
758
+ description: description,
759
+ forceValidation: forceValidation,
760
+ isReadOnly: isReadOnly,
761
+ isRequired: isRequired,
762
+ list: foreignList,
763
+ labelField: field.refLabelField,
764
+ searchFields: field.refSearchFields,
765
+ filter: field.selectFilter,
766
+ sort: field.selectSort,
767
+ state: {
768
+ kind: 'one',
769
+ value: value.value,
770
+ onChange(newItem) {
771
+ onChange === null || onChange === void 0 || onChange({
772
+ ...value,
773
+ value: newItem
774
+ });
775
+ }
776
+ }
777
+ })
778
+ }), value.kind === 'many' && /*#__PURE__*/jsxRuntime.jsx(tag.TagGroup, {
779
+ "aria-label": `related ${foreignList.plural}`,
780
+ isRequired: isRequired,
781
+ items: value.value.map(item => {
782
+ var _item$id$toString, _item$label;
783
+ return {
784
+ id: (_item$id$toString = item.id.toString()) !== null && _item$id$toString !== void 0 ? _item$id$toString : '',
785
+ label: (_item$label = item.label) !== null && _item$label !== void 0 ? _item$label : '',
786
+ href: item.built ? '' : `/${foreignList.path}/${item.id}`
787
+ };
788
+ }),
789
+ maxRows: 2,
790
+ onRemove: isReadOnly ? undefined : keys => {
791
+ onChange === null || onChange === void 0 || onChange({
792
+ ...value,
793
+ value: value.value.filter(item => !keys.has(item.id))
794
+ });
795
+ },
796
+ renderEmptyState: () => /*#__PURE__*/jsxRuntime.jsxs(typography.Text, {
797
+ color: "neutralSecondary",
798
+ size: "small",
799
+ children: ["No related ", foreignList.plural.toLowerCase(), "\u2026"]
800
+ }),
801
+ children: renderItem
802
+ })]
803
+ }), !isReadOnly && /*#__PURE__*/jsxRuntime.jsx(dialog.DialogContainer, {
804
+ onDismiss: () => setDialogOpen(false),
805
+ children: dialogIsOpen && /*#__PURE__*/jsxRuntime.jsx(CreateItemDialog.BuildItemDialog, {
806
+ listKey: foreignList.key,
807
+ onChange: builtItemData => {
808
+ var _ref;
809
+ const id = `_____temporary_${counter}`;
810
+ const label = (_ref = builtItemData === null || builtItemData === void 0 ? void 0 : builtItemData[foreignList.labelField]) !== null && _ref !== void 0 ? _ref : `[Unnamed ${foreignList.singular} ${counter}]`;
811
+ setDialogOpen(false);
812
+ setCounter(counter + 1);
813
+ if (value.kind === 'many') {
814
+ onChange({
815
+ ...value,
816
+ value: [...value.value, {
817
+ id,
818
+ label,
819
+ data: builtItemData,
820
+ built: true
821
+ }]
822
+ });
823
+ } else if (value.kind === 'one') {
824
+ onChange({
825
+ ...value,
826
+ value: {
827
+ id,
828
+ label,
829
+ data: builtItemData,
830
+ built: true
831
+ }
832
+ });
833
+ }
834
+ }
835
+ })
836
+ })]
837
+ });
838
+ }
839
+
840
+ // NOTE: fix for `TagGroup` perf issue, should typically be okay to just
841
+ // inline the render function
842
+ function renderItem(item) {
843
+ if (item.href === '') return /*#__PURE__*/jsxRuntime.jsx(tag.Item, {
844
+ children: item.label
845
+ });
846
+ return /*#__PURE__*/jsxRuntime.jsx(tag.Item, {
847
+ href: item.href,
848
+ children: item.label
849
+ });
850
+ }
851
+ const Cell = ({
852
+ field,
853
+ item
854
+ }) => {
855
+ const list = adminUi_context_dist_nixxieCmsCoreAdminUiContext.useList(field.refListKey);
856
+ if (field.display === 'count' || field.display === 'table') {
857
+ const count = item[`${field.fieldKey}Count`];
858
+ return count != null ? /*#__PURE__*/jsxRuntime.jsx(typography.Numeral, {
859
+ value: count,
860
+ abbreviate: true
861
+ }) : null;
862
+ }
863
+ const data = item[field.fieldKey];
864
+ const items = (Array.isArray(data) ? data : [data]).filter(Boolean);
865
+ const displayItems = items.length < 3 ? items : items.slice(0, 2);
866
+ const overflow = items.length < 3 ? 0 : items.length - 2;
867
+ return /*#__PURE__*/jsxRuntime.jsxs(typography.Text, {
868
+ children: [displayItems.map((item, index) => /*#__PURE__*/jsxRuntime.jsxs(react.Fragment, {
869
+ children: [index ? ', ' : '', /*#__PURE__*/jsxRuntime.jsx(link.TextLink, {
870
+ href: `/${list.path}/${item.id}`,
871
+ children: item.label || item.id
872
+ })]
873
+ }, item.id)), overflow ? `, and ${overflow} more` : null]
874
+ });
875
+ };
876
+ function controller(config) {
877
+ const {
878
+ listKey,
879
+ fieldKey: fieldKey,
880
+ label,
881
+ description
882
+ } = config;
883
+ const {
884
+ displayMode,
885
+ hideCreate,
886
+ many,
887
+ refFieldKey,
888
+ refLabelField,
889
+ refListKey,
890
+ refSearchFields
891
+ } = config.fieldMeta;
892
+ return {
893
+ refFieldKey,
894
+ many,
895
+ listKey,
896
+ fieldKey,
897
+ label,
898
+ description,
899
+ display: displayMode,
900
+ refLabelField,
901
+ refSearchFields,
902
+ refListKey,
903
+ graphqlSelection: displayMode === 'count' || displayMode === 'table' ? `${fieldKey}Count` : `${fieldKey}${many && config.fieldMeta.sort ? `(orderBy: { ${config.fieldMeta.sort.field}: ${config.fieldMeta.sort.direction.toLowerCase()} })` : ''} {
904
+ id
905
+ label: ${refLabelField}
906
+ }`,
907
+ hideCreate: hideCreate || displayMode === 'table',
908
+ columns: displayMode === 'table' ? config.fieldMeta.columns : null,
909
+ initialSort: displayMode === 'table' ? config.fieldMeta.initialSort : null,
910
+ selectFilter: displayMode === 'select' ? config.fieldMeta.filter : null,
911
+ selectSort: displayMode === 'select' ? config.fieldMeta.sort : null,
912
+ // note we're not making the state kind: 'count' when ui.displayMode is set to 'count'.
913
+ // that ui.displayMode: 'count' is really just a way to have reasonable performance
914
+ // because our other UIs don't handle relationships with a large number of items well
915
+ // but that's not a problem here since we're creating a new item so we might as well them a better UI
916
+ defaultValue: many ? {
917
+ kind: 'many',
918
+ id: null,
919
+ initialValue: [],
920
+ value: []
921
+ } : {
922
+ kind: 'one',
923
+ id: null,
924
+ value: null,
925
+ initialValue: null
926
+ },
927
+ validate(value, opts) {
928
+ if ('count' in value) return true;
929
+ return opts.isRequired ? value.kind === 'one' ? value.value !== null : value.value.length > 0 : true;
930
+ },
931
+ deserialize: data => {
932
+ if (displayMode === 'count' || displayMode === 'table') {
933
+ var _data;
934
+ return {
935
+ id: data.id,
936
+ kind: 'count',
937
+ count: (_data = data[`${config.fieldKey}Count`]) !== null && _data !== void 0 ? _data : 0
938
+ };
939
+ }
940
+ if (many) {
941
+ const value = (data[config.fieldKey] || []).map(x => ({
942
+ id: x.id,
943
+ label: x.label || x.id
944
+ }));
945
+ return {
946
+ kind: 'many',
947
+ id: data.id,
948
+ initialValue: value,
949
+ value
950
+ };
951
+ }
952
+ let value = data[config.fieldKey];
953
+ if (value) {
954
+ value = {
955
+ id: value.id,
956
+ label: value.label || value.id
957
+ };
958
+ }
959
+ return {
960
+ kind: 'one',
961
+ id: data.id,
962
+ value,
963
+ initialValue: value
964
+ };
965
+ },
966
+ serialize: state => {
967
+ if (state.kind === 'many') {
968
+ const newAllIds = new Set(state.value.map(x => x.id));
969
+ const initialIds = new Set(state.initialValue.map(x => x.id));
970
+ const disconnect = state.initialValue.filter(x => !newAllIds.has(x.id)).map(x => ({
971
+ id: x.id
972
+ }));
973
+ const connect = state.value.filter(x => !x.built && !initialIds.has(x.id)).map(x => ({
974
+ id: x.id
975
+ }));
976
+ const create = state.value.filter(x => x.built).map(x => x.data);
977
+ const output = {
978
+ ...(disconnect.length ? {
979
+ disconnect
980
+ } : {}),
981
+ ...(connect.length ? {
982
+ connect
983
+ } : {}),
984
+ ...(create.length ? {
985
+ create
986
+ } : {})
987
+ };
988
+ if (Object.keys(output).length) {
989
+ return {
990
+ [config.fieldKey]: output
991
+ };
992
+ }
993
+ } else if (state.kind === 'one') {
994
+ var _state$value, _state$initialValue;
995
+ if (state.initialValue && !state.value) return {
996
+ [config.fieldKey]: {
997
+ disconnect: true
998
+ }
999
+ };
1000
+ if ((_state$value = state.value) !== null && _state$value !== void 0 && _state$value.built) {
1001
+ return {
1002
+ [config.fieldKey]: {
1003
+ create: state.value.data
1004
+ }
1005
+ };
1006
+ }
1007
+ if (state.value && state.value.id !== ((_state$initialValue = state.initialValue) === null || _state$initialValue === void 0 ? void 0 : _state$initialValue.id)) {
1008
+ return {
1009
+ [config.fieldKey]: {
1010
+ connect: {
1011
+ id: state.value.id
1012
+ }
1013
+ }
1014
+ };
1015
+ }
1016
+ }
1017
+ return {};
1018
+ },
1019
+ filter: {
1020
+ Filter(props) {
1021
+ const foreignList = adminUi_context_dist_nixxieCmsCoreAdminUiContext.useList(refListKey);
1022
+ if (props.type === 'empty' || props.type === 'not_empty') return null;
1023
+ // TODO: show labels rather than ids
1024
+ if (props.type === 'is' || props.type === 'not_is') {
1025
+ return /*#__PURE__*/jsxRuntime.jsx(ComboboxSingle, {
1026
+ autoFocus: true,
1027
+ "aria-label": label,
1028
+ isReadOnly: false,
1029
+ labelField: refLabelField,
1030
+ searchFields: refSearchFields,
1031
+ list: foreignList,
1032
+ state: {
1033
+ kind: 'one',
1034
+ value: typeof props.value === 'string' ? {
1035
+ id: props.value,
1036
+ label: props.value,
1037
+ built: false
1038
+ } : null,
1039
+ onChange(newItem) {
1040
+ props.onChange(newItem === null ? null : newItem.id.toString());
1041
+ }
1042
+ },
1043
+ filter: config.fieldMeta.displayMode === 'select' ? config.fieldMeta.filter : null,
1044
+ sort: config.fieldMeta.displayMode === 'select' ? config.fieldMeta.sort : null
1045
+ });
1046
+ }
1047
+ const ids = Array.isArray(props.value) ? props.value : [];
1048
+ const value = ids.map(id => ({
1049
+ id,
1050
+ label: id,
1051
+ built: false
1052
+ }));
1053
+ return /*#__PURE__*/jsxRuntime.jsxs(layout.VStack, {
1054
+ gap: "medium",
1055
+ children: [/*#__PURE__*/jsxRuntime.jsx(ComboboxMany, {
1056
+ autoFocus: true,
1057
+ "aria-label": label,
1058
+ isReadOnly: false,
1059
+ labelField: refLabelField,
1060
+ searchFields: refSearchFields,
1061
+ list: foreignList,
1062
+ state: {
1063
+ kind: 'many',
1064
+ value,
1065
+ onChange(newItem) {
1066
+ props.onChange(newItem.map(x => x.id.toString()));
1067
+ }
1068
+ },
1069
+ filter: config.fieldMeta.displayMode === 'select' ? config.fieldMeta.filter : null,
1070
+ sort: config.fieldMeta.displayMode === 'select' ? config.fieldMeta.sort : null
1071
+ }), /*#__PURE__*/jsxRuntime.jsx(tag.TagGroup, {
1072
+ "aria-label": `related ${foreignList.plural}`,
1073
+ items: value.map(item => {
1074
+ var _item$id$toString2, _item$label2;
1075
+ return {
1076
+ id: (_item$id$toString2 = item.id.toString()) !== null && _item$id$toString2 !== void 0 ? _item$id$toString2 : '',
1077
+ label: (_item$label2 = item.label) !== null && _item$label2 !== void 0 ? _item$label2 : '',
1078
+ href: item.built ? '' : `/${foreignList.path}/${item.id}`
1079
+ };
1080
+ }),
1081
+ maxRows: 2,
1082
+ onRemove: keys => {
1083
+ props.onChange(ids.filter(id => !keys.has(id)));
1084
+ },
1085
+ renderEmptyState: () => /*#__PURE__*/jsxRuntime.jsxs(typography.Text, {
1086
+ color: "neutralSecondary",
1087
+ size: "small",
1088
+ children: ["Select related ", foreignList.plural.toLowerCase(), "\u2026"]
1089
+ }),
1090
+ children: renderItem
1091
+ })]
1092
+ });
1093
+ },
1094
+ Label({
1095
+ label,
1096
+ type,
1097
+ value
1098
+ }) {
1099
+ const listFormatter = i18n.useListFormatter({
1100
+ style: 'short',
1101
+ type: 'disjunction'
1102
+ });
1103
+ if (['empty', 'not_empty'].includes(type)) return label.toLowerCase();
1104
+ if (['is', 'not_is'].includes(type)) return `${label.toLowerCase()} ${value}`;
1105
+ return `${label.toLowerCase()} (${listFormatter.format(value || [''])})`;
1106
+ },
1107
+ graphql: ({
1108
+ type,
1109
+ value
1110
+ }) => {
1111
+ if (type === 'empty' && !many) return {
1112
+ [config.fieldKey]: {
1113
+ equals: null
1114
+ }
1115
+ };
1116
+ if (type === 'empty' && many) return {
1117
+ [config.fieldKey]: {
1118
+ none: {}
1119
+ }
1120
+ };
1121
+ if (type === 'not_empty' && !many) return {
1122
+ [config.fieldKey]: {
1123
+ not: {
1124
+ equals: null
1125
+ }
1126
+ }
1127
+ };
1128
+ if (type === 'not_empty' && many) return {
1129
+ [config.fieldKey]: {
1130
+ some: {}
1131
+ }
1132
+ };
1133
+ if (type === 'is') return {
1134
+ [config.fieldKey]: {
1135
+ id: {
1136
+ equals: value
1137
+ }
1138
+ }
1139
+ };
1140
+ if (type === 'not_is') return {
1141
+ [config.fieldKey]: {
1142
+ not: {
1143
+ id: {
1144
+ equals: value
1145
+ }
1146
+ }
1147
+ }
1148
+ };
1149
+ if (type === 'some') return {
1150
+ [config.fieldKey]: {
1151
+ some: {
1152
+ id: {
1153
+ in: value
1154
+ }
1155
+ }
1156
+ }
1157
+ };
1158
+ if (type === 'not_some') return {
1159
+ [config.fieldKey]: {
1160
+ not: {
1161
+ some: {
1162
+ id: {
1163
+ in: value
1164
+ }
1165
+ }
1166
+ }
1167
+ }
1168
+ };
1169
+ return {
1170
+ [config.fieldKey]: {
1171
+ [type]: value
1172
+ }
1173
+ }; // uh
1174
+ },
1175
+ parseGraphQL: () => [],
1176
+ types: {
1177
+ empty: {
1178
+ label: 'Is empty',
1179
+ initialValue: null
1180
+ },
1181
+ not_empty: {
1182
+ label: 'Is not empty',
1183
+ initialValue: null
1184
+ },
1185
+ ...(many ? {
1186
+ some: {
1187
+ label: 'Is one of',
1188
+ initialValue: []
1189
+ },
1190
+ not_some: {
1191
+ label: 'Is not one of',
1192
+ initialValue: []
1193
+ }
1194
+ } : {
1195
+ is: {
1196
+ label: 'Is',
1197
+ initialValue: null
1198
+ },
1199
+ not_is: {
1200
+ label: 'Is not',
1201
+ initialValue: null
1202
+ }
1203
+ })
1204
+ }
1205
+ }
1206
+ };
1207
+ }
1208
+
1209
+ exports.Cell = Cell;
1210
+ exports.ComboboxMany = ComboboxMany;
1211
+ exports.ComboboxSingle = ComboboxSingle;
1212
+ exports.Field = Field;
1213
+ exports.controller = controller;