@btst/plugin-cms 0.0.0-stage → 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 (204) hide show
  1. package/LICENSE.md +17 -0
  2. package/dist/api/getters.cjs +328 -0
  3. package/dist/api/getters.mjs +314 -0
  4. package/dist/api/index.cjs +29 -0
  5. package/dist/api/index.d.cts +209 -0
  6. package/dist/api/index.d.mts +209 -0
  7. package/dist/api/index.d.ts +209 -0
  8. package/dist/api/index.mjs +7 -0
  9. package/dist/api/lifecycle-migrations.cjs +13 -0
  10. package/dist/api/lifecycle-migrations.mjs +11 -0
  11. package/dist/api/mutations.cjs +59 -0
  12. package/dist/api/mutations.mjs +57 -0
  13. package/dist/api/operations.cjs +1769 -0
  14. package/dist/api/operations.mjs +1762 -0
  15. package/dist/api/plugin.cjs +337 -0
  16. package/dist/api/plugin.mjs +331 -0
  17. package/dist/api/query-key-defs.cjs +44 -0
  18. package/dist/api/query-key-defs.mjs +39 -0
  19. package/dist/api/relations.cjs +76 -0
  20. package/dist/api/relations.mjs +70 -0
  21. package/dist/client/components/forms/content-form.cjs +286 -0
  22. package/dist/client/components/forms/content-form.mjs +284 -0
  23. package/dist/client/components/forms/file-upload.cjs +160 -0
  24. package/dist/client/components/forms/file-upload.mjs +158 -0
  25. package/dist/client/components/forms/relation-field.cjs +237 -0
  26. package/dist/client/components/forms/relation-field.mjs +235 -0
  27. package/dist/client/components/index.cjs +14 -0
  28. package/dist/client/components/index.d.cts +20 -0
  29. package/dist/client/components/index.d.mts +20 -0
  30. package/dist/client/components/index.d.ts +20 -0
  31. package/dist/client/components/index.mjs +10 -0
  32. package/dist/client/components/inverse-relations-panel.cjs +272 -0
  33. package/dist/client/components/inverse-relations-panel.mjs +270 -0
  34. package/dist/client/components/loading/dashboard-skeleton.cjs +18 -0
  35. package/dist/client/components/loading/dashboard-skeleton.mjs +16 -0
  36. package/dist/client/components/loading/editor-skeleton.cjs +32 -0
  37. package/dist/client/components/loading/editor-skeleton.mjs +30 -0
  38. package/dist/client/components/loading/list-skeleton.cjs +32 -0
  39. package/dist/client/components/loading/list-skeleton.mjs +30 -0
  40. package/dist/client/components/pages/404-page.cjs +26 -0
  41. package/dist/client/components/pages/404-page.mjs +24 -0
  42. package/dist/client/components/pages/content-editor-page.cjs +84 -0
  43. package/dist/client/components/pages/content-editor-page.internal.cjs +170 -0
  44. package/dist/client/components/pages/content-editor-page.internal.mjs +168 -0
  45. package/dist/client/components/pages/content-editor-page.mjs +82 -0
  46. package/dist/client/components/pages/content-list-page.cjs +49 -0
  47. package/dist/client/components/pages/content-list-page.internal.cjs +334 -0
  48. package/dist/client/components/pages/content-list-page.internal.mjs +332 -0
  49. package/dist/client/components/pages/content-list-page.mjs +47 -0
  50. package/dist/client/components/pages/dashboard-page.cjs +42 -0
  51. package/dist/client/components/pages/dashboard-page.internal.cjs +102 -0
  52. package/dist/client/components/pages/dashboard-page.internal.mjs +100 -0
  53. package/dist/client/components/pages/dashboard-page.mjs +40 -0
  54. package/dist/client/components/shared/default-error.cjs +17 -0
  55. package/dist/client/components/shared/default-error.mjs +15 -0
  56. package/dist/client/components/shared/empty-state.cjs +16 -0
  57. package/dist/client/components/shared/empty-state.mjs +14 -0
  58. package/dist/client/components/shared/page-wrapper.cjs +29 -0
  59. package/dist/client/components/shared/page-wrapper.mjs +27 -0
  60. package/dist/client/constants.cjs +5 -0
  61. package/dist/client/constants.mjs +3 -0
  62. package/dist/client/hooks/cms-hooks.cjs +300 -0
  63. package/dist/client/hooks/cms-hooks.mjs +280 -0
  64. package/dist/client/hooks/cms-resource.cjs +13 -0
  65. package/dist/client/hooks/cms-resource.mjs +11 -0
  66. package/dist/client/hooks/index.cjs +25 -0
  67. package/dist/client/hooks/index.d.cts +693 -0
  68. package/dist/client/hooks/index.d.mts +693 -0
  69. package/dist/client/hooks/index.d.ts +693 -0
  70. package/dist/client/hooks/index.mjs +1 -0
  71. package/dist/client/index.cjs +15 -0
  72. package/dist/client/index.d.cts +654 -0
  73. package/dist/client/index.d.mts +654 -0
  74. package/dist/client/index.d.ts +654 -0
  75. package/dist/client/index.mjs +3 -0
  76. package/dist/client/overrides.cjs +26 -0
  77. package/dist/client/overrides.mjs +24 -0
  78. package/dist/client/plugin.cjs +316 -0
  79. package/dist/client/plugin.mjs +314 -0
  80. package/dist/client.css +3 -0
  81. package/dist/db.cjs +118 -0
  82. package/dist/db.mjs +116 -0
  83. package/dist/permissions.cjs +46 -0
  84. package/dist/permissions.d.cts +42 -0
  85. package/dist/permissions.d.mts +42 -0
  86. package/dist/permissions.d.ts +42 -0
  87. package/dist/permissions.mjs +44 -0
  88. package/dist/query-keys.cjs +229 -0
  89. package/dist/query-keys.d.cts +8 -0
  90. package/dist/query-keys.d.mts +8 -0
  91. package/dist/query-keys.d.ts +8 -0
  92. package/dist/query-keys.mjs +225 -0
  93. package/dist/schemas.cjs +81 -0
  94. package/dist/schemas.mjs +72 -0
  95. package/dist/shared/plugin-cms.BBshPRkb.d.cts +6 -0
  96. package/dist/shared/plugin-cms.BBshPRkb.d.mts +6 -0
  97. package/dist/shared/plugin-cms.BBshPRkb.d.ts +6 -0
  98. package/dist/shared/plugin-cms.DQLAoogy.d.ts +1749 -0
  99. package/dist/shared/plugin-cms.W4Le8D91.d.mts +1749 -0
  100. package/dist/shared/plugin-cms.c-GeWvTf.d.cts +1749 -0
  101. package/dist/style.css +6 -0
  102. package/dist/types.cjs +2 -0
  103. package/dist/types.d.cts +406 -0
  104. package/dist/types.d.mts +406 -0
  105. package/dist/types.d.ts +406 -0
  106. package/dist/types.mjs +1 -0
  107. package/dist/ui/src/components/accordion.cjs +81 -0
  108. package/dist/ui/src/components/accordion.mjs +62 -0
  109. package/dist/ui/src/components/alert-dialog.cjs +157 -0
  110. package/dist/ui/src/components/alert-dialog.mjs +132 -0
  111. package/dist/ui/src/components/auto-form/common/label.cjs +18 -0
  112. package/dist/ui/src/components/auto-form/common/label.mjs +16 -0
  113. package/dist/ui/src/components/auto-form/common/tooltip.cjs +9 -0
  114. package/dist/ui/src/components/auto-form/common/tooltip.mjs +7 -0
  115. package/dist/ui/src/components/auto-form/config.cjs +40 -0
  116. package/dist/ui/src/components/auto-form/config.mjs +37 -0
  117. package/dist/ui/src/components/auto-form/dependencies.cjs +48 -0
  118. package/dist/ui/src/components/auto-form/dependencies.mjs +46 -0
  119. package/dist/ui/src/components/auto-form/fields/array.cjs +266 -0
  120. package/dist/ui/src/components/auto-form/fields/array.mjs +264 -0
  121. package/dist/ui/src/components/auto-form/fields/checkbox.cjs +38 -0
  122. package/dist/ui/src/components/auto-form/fields/checkbox.mjs +36 -0
  123. package/dist/ui/src/components/auto-form/fields/date.cjs +67 -0
  124. package/dist/ui/src/components/auto-form/fields/date.mjs +65 -0
  125. package/dist/ui/src/components/auto-form/fields/enum.cjs +73 -0
  126. package/dist/ui/src/components/auto-form/fields/enum.mjs +71 -0
  127. package/dist/ui/src/components/auto-form/fields/input.cjs +32 -0
  128. package/dist/ui/src/components/auto-form/fields/input.mjs +30 -0
  129. package/dist/ui/src/components/auto-form/fields/number.cjs +31 -0
  130. package/dist/ui/src/components/auto-form/fields/number.mjs +29 -0
  131. package/dist/ui/src/components/auto-form/fields/object.cjs +233 -0
  132. package/dist/ui/src/components/auto-form/fields/object.mjs +217 -0
  133. package/dist/ui/src/components/auto-form/fields/radio-group.cjs +67 -0
  134. package/dist/ui/src/components/auto-form/fields/radio-group.mjs +65 -0
  135. package/dist/ui/src/components/auto-form/fields/switch.cjs +38 -0
  136. package/dist/ui/src/components/auto-form/fields/switch.mjs +36 -0
  137. package/dist/ui/src/components/auto-form/fields/textarea.cjs +31 -0
  138. package/dist/ui/src/components/auto-form/fields/textarea.mjs +29 -0
  139. package/dist/ui/src/components/auto-form/helpers.cjs +270 -0
  140. package/dist/ui/src/components/auto-form/helpers.mjs +259 -0
  141. package/dist/ui/src/components/auto-form/index.cjs +92 -0
  142. package/dist/ui/src/components/auto-form/index.mjs +86 -0
  143. package/dist/ui/src/components/auto-form/stepped-auto-form.cjs +374 -0
  144. package/dist/ui/src/components/auto-form/stepped-auto-form.mjs +368 -0
  145. package/dist/ui/src/components/auto-form/types.cjs +11 -0
  146. package/dist/ui/src/components/auto-form/types.mjs +9 -0
  147. package/dist/ui/src/components/badge.cjs +42 -0
  148. package/dist/ui/src/components/badge.mjs +39 -0
  149. package/dist/ui/src/components/button.cjs +56 -0
  150. package/dist/ui/src/components/button.mjs +53 -0
  151. package/dist/ui/src/components/calendar.cjs +207 -0
  152. package/dist/ui/src/components/calendar.mjs +190 -0
  153. package/dist/ui/src/components/card.cjs +56 -0
  154. package/dist/ui/src/components/card.mjs +51 -0
  155. package/dist/ui/src/components/checkbox.cjs +48 -0
  156. package/dist/ui/src/components/checkbox.mjs +32 -0
  157. package/dist/ui/src/components/command.cjs +78 -0
  158. package/dist/ui/src/components/command.mjs +73 -0
  159. package/dist/ui/src/components/date-picker.cjs +41 -0
  160. package/dist/ui/src/components/date-picker.mjs +39 -0
  161. package/dist/ui/src/components/dialog.cjs +119 -0
  162. package/dist/ui/src/components/dialog.mjs +97 -0
  163. package/dist/ui/src/components/form.cjs +120 -0
  164. package/dist/ui/src/components/form.mjs +98 -0
  165. package/dist/ui/src/components/input.cjs +23 -0
  166. package/dist/ui/src/components/input.mjs +21 -0
  167. package/dist/ui/src/components/label.cjs +39 -0
  168. package/dist/ui/src/components/label.mjs +23 -0
  169. package/dist/ui/src/components/multi-select.cjs +555 -0
  170. package/dist/ui/src/components/multi-select.mjs +540 -0
  171. package/dist/ui/src/components/page-layout.cjs +25 -0
  172. package/dist/ui/src/components/page-layout.mjs +23 -0
  173. package/dist/ui/src/components/page-wrapper.cjs +20 -0
  174. package/dist/ui/src/components/page-wrapper.mjs +18 -0
  175. package/dist/ui/src/components/popover.cjs +60 -0
  176. package/dist/ui/src/components/popover.mjs +42 -0
  177. package/dist/ui/src/components/radio-group.cjs +62 -0
  178. package/dist/ui/src/components/radio-group.mjs +45 -0
  179. package/dist/ui/src/components/select.cjs +161 -0
  180. package/dist/ui/src/components/select.mjs +139 -0
  181. package/dist/ui/src/components/separator.cjs +43 -0
  182. package/dist/ui/src/components/separator.mjs +27 -0
  183. package/dist/ui/src/components/skeleton.cjs +17 -0
  184. package/dist/ui/src/components/skeleton.mjs +15 -0
  185. package/dist/ui/src/components/stack-attribution.cjs +24 -0
  186. package/dist/ui/src/components/stack-attribution.mjs +22 -0
  187. package/dist/ui/src/components/switch.cjs +48 -0
  188. package/dist/ui/src/components/switch.mjs +32 -0
  189. package/dist/ui/src/components/table.cjs +89 -0
  190. package/dist/ui/src/components/table.mjs +82 -0
  191. package/dist/ui/src/components/textarea.cjs +20 -0
  192. package/dist/ui/src/components/textarea.mjs +18 -0
  193. package/dist/ui/src/hooks/use-debounce.cjs +16 -0
  194. package/dist/ui/src/hooks/use-debounce.mjs +14 -0
  195. package/dist/ui/src/hooks/use-route-lifecycle.cjs +31 -0
  196. package/dist/ui/src/hooks/use-route-lifecycle.mjs +29 -0
  197. package/dist/ui/src/lib/schema-converter.cjs +133 -0
  198. package/dist/ui/src/lib/schema-converter.mjs +127 -0
  199. package/dist/ui/src/lib/utils.cjs +10 -0
  200. package/dist/ui/src/lib/utils.mjs +8 -0
  201. package/dist/utils.cjs +19 -0
  202. package/dist/utils.mjs +12 -0
  203. package/package.json +170 -3
  204. package/README.md +0 -3
@@ -0,0 +1,300 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ const cmsResource = require('./cms-resource.cjs');
5
+
6
+ function flattenPages(pages) {
7
+ const items = pages?.flatMap(
8
+ (page) => Array.isArray(page?.items) ? page.items : []
9
+ ) ?? [];
10
+ const total = pages?.[0]?.total ?? 0;
11
+ return { items, total };
12
+ }
13
+ function useContentTypes() {
14
+ const { data, isLoading, error, refetch } = cmsResource.cms.cmsTypes.list.use([]);
15
+ return {
16
+ contentTypes: data ?? [],
17
+ isLoading,
18
+ error,
19
+ refetch
20
+ };
21
+ }
22
+ function useSuspenseContentTypes() {
23
+ const { data, refetch } = cmsResource.cms.cmsTypes.list.useSuspense([]);
24
+ return {
25
+ contentTypes: data ?? [],
26
+ refetch
27
+ };
28
+ }
29
+ function useContentType(slug) {
30
+ const { data, isLoading, error, refetch } = cmsResource.cms.cmsTypes.detail.use([slug], {
31
+ enabled: !!slug
32
+ });
33
+ return {
34
+ contentType: data ?? null,
35
+ isLoading,
36
+ error,
37
+ refetch
38
+ };
39
+ }
40
+ function useContent(typeSlug, options = {}) {
41
+ const { limit = 10, enabled = true, search, view, fields } = options;
42
+ const {
43
+ data,
44
+ isLoading,
45
+ error,
46
+ fetchNextPage,
47
+ hasNextPage,
48
+ isFetchingNextPage,
49
+ refetch
50
+ } = cmsResource.cms.cmsContent.list.useInfinite(
51
+ [{ typeSlug, limit, search, view, fields }],
52
+ {
53
+ enabled: enabled && !!typeSlug
54
+ }
55
+ );
56
+ const { items, total } = flattenPages(
57
+ data?.pages
58
+ );
59
+ return {
60
+ items,
61
+ total,
62
+ isLoading,
63
+ error,
64
+ loadMore: fetchNextPage,
65
+ hasMore: !!hasNextPage,
66
+ isLoadingMore: isFetchingNextPage,
67
+ refetch
68
+ };
69
+ }
70
+ function useSuspenseContent(typeSlug, options = {}) {
71
+ const { limit = 10, search, view, fields } = options;
72
+ const { data, fetchNextPage, hasNextPage, isFetchingNextPage, refetch } = cmsResource.cms.cmsContent.list.useSuspenseInfinite([
73
+ { typeSlug, limit, search, view, fields }
74
+ ]);
75
+ const { items, total } = flattenPages(
76
+ data.pages
77
+ );
78
+ return {
79
+ items,
80
+ total,
81
+ loadMore: fetchNextPage,
82
+ hasMore: !!hasNextPage,
83
+ isLoadingMore: isFetchingNextPage,
84
+ refetch
85
+ };
86
+ }
87
+ function useContentItem(typeSlug, id, options) {
88
+ const { data, isLoading, error, refetch } = cmsResource.cms.cmsContent.detail.use(
89
+ [typeSlug, id, options],
90
+ { enabled: !!typeSlug && !!id }
91
+ );
92
+ return {
93
+ item: data ?? null,
94
+ isLoading,
95
+ error,
96
+ refetch
97
+ };
98
+ }
99
+ function useSuspenseContentItem(typeSlug, id, options) {
100
+ const { data, refetch } = cmsResource.cms.cmsContent.detail.useSuspense([
101
+ typeSlug,
102
+ id,
103
+ options
104
+ ]);
105
+ return {
106
+ item: data ?? null,
107
+ refetch
108
+ };
109
+ }
110
+ function useContentItemBySlug(typeSlug, slug, options) {
111
+ const { data, isLoading, error, refetch } = cmsResource.cms.cmsContent.bySlug.use(
112
+ [typeSlug, slug, options],
113
+ { enabled: !!typeSlug && !!slug }
114
+ );
115
+ return {
116
+ item: data ?? null,
117
+ isLoading,
118
+ error,
119
+ refetch
120
+ };
121
+ }
122
+ function useCreateContent(typeSlug) {
123
+ const mutation = cmsResource.cms.cmsContent.create.use();
124
+ return {
125
+ ...mutation,
126
+ mutate: (vars) => mutation.mutate({
127
+ typeSlug,
128
+ slug: vars.slug,
129
+ data: vars.data
130
+ }),
131
+ mutateAsync: async (vars) => await mutation.mutateAsync({
132
+ typeSlug,
133
+ slug: vars.slug,
134
+ data: vars.data
135
+ })
136
+ };
137
+ }
138
+ function useUpdateContent(typeSlug) {
139
+ const mutation = cmsResource.cms.cmsContent.update.use();
140
+ const toVars = (vars) => ({
141
+ typeSlug,
142
+ id: vars.id,
143
+ data: vars.data
144
+ });
145
+ return {
146
+ ...mutation,
147
+ mutate: (vars) => mutation.mutate(toVars(vars)),
148
+ mutateAsync: async (vars) => await mutation.mutateAsync(
149
+ toVars(vars)
150
+ )
151
+ };
152
+ }
153
+ function useDeleteContent(typeSlug) {
154
+ const mutation = cmsResource.cms.cmsContent.delete.use();
155
+ return {
156
+ ...mutation,
157
+ mutate: (id) => mutation.mutate({ typeSlug, id }),
158
+ mutateAsync: (id) => mutation.mutateAsync({ typeSlug, id })
159
+ };
160
+ }
161
+ function useContentItemForm(config) {
162
+ return cmsResource.cms.cmsContent.useForm(
163
+ config
164
+ );
165
+ }
166
+ function useContentOptions(config) {
167
+ const { targetType, value, getOptionLabel, view, fields } = config;
168
+ return cmsResource.cms.cmsContent.useSelect({
169
+ query: "options",
170
+ searchArgs: (search) => [{ typeSlug: targetType, search, view, fields }],
171
+ getOptionValue: (item) => item.id,
172
+ getOptionLabel,
173
+ value,
174
+ preload: { args: (id) => [targetType, id, { view, fields }] },
175
+ enabled: !!targetType
176
+ });
177
+ }
178
+ function useContentItemPopulated(typeSlug, id) {
179
+ const { data, isLoading, error, refetch } = cmsResource.cms.cmsContent.populated.use(
180
+ [typeSlug, id],
181
+ { enabled: !!typeSlug && !!id }
182
+ );
183
+ return {
184
+ item: data ?? null,
185
+ isLoading,
186
+ error,
187
+ refetch
188
+ };
189
+ }
190
+ function useSuspenseContentItemPopulated(typeSlug, id) {
191
+ const { data, refetch } = cmsResource.cms.cmsContent.populated.useSuspense([
192
+ typeSlug,
193
+ id
194
+ ]);
195
+ return {
196
+ item: data ?? null,
197
+ refetch
198
+ };
199
+ }
200
+ function useContentByRelation(typeSlug, fieldName, targetId, options = {}) {
201
+ const { limit = 20, enabled = true, view, fields } = options;
202
+ const {
203
+ data,
204
+ isLoading,
205
+ error,
206
+ fetchNextPage,
207
+ hasNextPage,
208
+ isFetchingNextPage,
209
+ refetch
210
+ } = cmsResource.cms.cmsContent.byRelation.useInfinite(
211
+ [{ typeSlug, field: fieldName, targetId, limit, view, fields }],
212
+ { enabled: enabled && !!typeSlug && !!fieldName && !!targetId }
213
+ );
214
+ const { items, total } = flattenPages(
215
+ data?.pages
216
+ );
217
+ return {
218
+ items,
219
+ total,
220
+ isLoading,
221
+ error,
222
+ loadMore: fetchNextPage,
223
+ hasMore: !!hasNextPage,
224
+ isLoadingMore: isFetchingNextPage,
225
+ refetch
226
+ };
227
+ }
228
+ function useSuspenseContentByRelation(typeSlug, fieldName, targetId, options = {}) {
229
+ const { limit = 20, view, fields } = options;
230
+ const { data, fetchNextPage, hasNextPage, isFetchingNextPage, refetch } = cmsResource.cms.cmsContent.byRelation.useSuspenseInfinite([
231
+ { typeSlug, field: fieldName, targetId, limit, view, fields }
232
+ ]);
233
+ const { items, total } = flattenPages(
234
+ data.pages
235
+ );
236
+ return {
237
+ items,
238
+ total,
239
+ loadMore: fetchNextPage,
240
+ hasMore: !!hasNextPage,
241
+ isLoadingMore: isFetchingNextPage,
242
+ refetch
243
+ };
244
+ }
245
+ function useInverseRelations(contentTypeSlug, itemId) {
246
+ const { data, isLoading, error, refetch } = cmsResource.cms.cmsTypes.inverseRelations.use(
247
+ [{ slug: contentTypeSlug, itemId }],
248
+ { enabled: !!contentTypeSlug && !!itemId }
249
+ );
250
+ return {
251
+ inverseRelations: data ?? [],
252
+ isLoading,
253
+ error,
254
+ refetch
255
+ };
256
+ }
257
+ function useInverseRelationItems(params, options = {}) {
258
+ const { data, isLoading, error, refetch } = cmsResource.cms.cmsTypes.inverseRelationItems.use(
259
+ [
260
+ {
261
+ slug: params.contentTypeSlug,
262
+ sourceType: params.sourceType,
263
+ itemId: params.itemId,
264
+ fieldName: params.fieldName,
265
+ view: options.view,
266
+ fields: options.fields,
267
+ limit: options.limit,
268
+ offset: options.offset
269
+ }
270
+ ],
271
+ { enabled: options.enabled ?? true }
272
+ );
273
+ return {
274
+ items: data?.items ?? [],
275
+ total: data?.total ?? 0,
276
+ isLoading,
277
+ error,
278
+ refetch
279
+ };
280
+ }
281
+
282
+ exports.useContent = useContent;
283
+ exports.useContentByRelation = useContentByRelation;
284
+ exports.useContentItem = useContentItem;
285
+ exports.useContentItemBySlug = useContentItemBySlug;
286
+ exports.useContentItemForm = useContentItemForm;
287
+ exports.useContentItemPopulated = useContentItemPopulated;
288
+ exports.useContentOptions = useContentOptions;
289
+ exports.useContentType = useContentType;
290
+ exports.useContentTypes = useContentTypes;
291
+ exports.useCreateContent = useCreateContent;
292
+ exports.useDeleteContent = useDeleteContent;
293
+ exports.useInverseRelationItems = useInverseRelationItems;
294
+ exports.useInverseRelations = useInverseRelations;
295
+ exports.useSuspenseContent = useSuspenseContent;
296
+ exports.useSuspenseContentByRelation = useSuspenseContentByRelation;
297
+ exports.useSuspenseContentItem = useSuspenseContentItem;
298
+ exports.useSuspenseContentItemPopulated = useSuspenseContentItemPopulated;
299
+ exports.useSuspenseContentTypes = useSuspenseContentTypes;
300
+ exports.useUpdateContent = useUpdateContent;
@@ -0,0 +1,280 @@
1
+ 'use client';
2
+ import { cms } from './cms-resource.mjs';
3
+
4
+ function flattenPages(pages) {
5
+ const items = pages?.flatMap(
6
+ (page) => Array.isArray(page?.items) ? page.items : []
7
+ ) ?? [];
8
+ const total = pages?.[0]?.total ?? 0;
9
+ return { items, total };
10
+ }
11
+ function useContentTypes() {
12
+ const { data, isLoading, error, refetch } = cms.cmsTypes.list.use([]);
13
+ return {
14
+ contentTypes: data ?? [],
15
+ isLoading,
16
+ error,
17
+ refetch
18
+ };
19
+ }
20
+ function useSuspenseContentTypes() {
21
+ const { data, refetch } = cms.cmsTypes.list.useSuspense([]);
22
+ return {
23
+ contentTypes: data ?? [],
24
+ refetch
25
+ };
26
+ }
27
+ function useContentType(slug) {
28
+ const { data, isLoading, error, refetch } = cms.cmsTypes.detail.use([slug], {
29
+ enabled: !!slug
30
+ });
31
+ return {
32
+ contentType: data ?? null,
33
+ isLoading,
34
+ error,
35
+ refetch
36
+ };
37
+ }
38
+ function useContent(typeSlug, options = {}) {
39
+ const { limit = 10, enabled = true, search, view, fields } = options;
40
+ const {
41
+ data,
42
+ isLoading,
43
+ error,
44
+ fetchNextPage,
45
+ hasNextPage,
46
+ isFetchingNextPage,
47
+ refetch
48
+ } = cms.cmsContent.list.useInfinite(
49
+ [{ typeSlug, limit, search, view, fields }],
50
+ {
51
+ enabled: enabled && !!typeSlug
52
+ }
53
+ );
54
+ const { items, total } = flattenPages(
55
+ data?.pages
56
+ );
57
+ return {
58
+ items,
59
+ total,
60
+ isLoading,
61
+ error,
62
+ loadMore: fetchNextPage,
63
+ hasMore: !!hasNextPage,
64
+ isLoadingMore: isFetchingNextPage,
65
+ refetch
66
+ };
67
+ }
68
+ function useSuspenseContent(typeSlug, options = {}) {
69
+ const { limit = 10, search, view, fields } = options;
70
+ const { data, fetchNextPage, hasNextPage, isFetchingNextPage, refetch } = cms.cmsContent.list.useSuspenseInfinite([
71
+ { typeSlug, limit, search, view, fields }
72
+ ]);
73
+ const { items, total } = flattenPages(
74
+ data.pages
75
+ );
76
+ return {
77
+ items,
78
+ total,
79
+ loadMore: fetchNextPage,
80
+ hasMore: !!hasNextPage,
81
+ isLoadingMore: isFetchingNextPage,
82
+ refetch
83
+ };
84
+ }
85
+ function useContentItem(typeSlug, id, options) {
86
+ const { data, isLoading, error, refetch } = cms.cmsContent.detail.use(
87
+ [typeSlug, id, options],
88
+ { enabled: !!typeSlug && !!id }
89
+ );
90
+ return {
91
+ item: data ?? null,
92
+ isLoading,
93
+ error,
94
+ refetch
95
+ };
96
+ }
97
+ function useSuspenseContentItem(typeSlug, id, options) {
98
+ const { data, refetch } = cms.cmsContent.detail.useSuspense([
99
+ typeSlug,
100
+ id,
101
+ options
102
+ ]);
103
+ return {
104
+ item: data ?? null,
105
+ refetch
106
+ };
107
+ }
108
+ function useContentItemBySlug(typeSlug, slug, options) {
109
+ const { data, isLoading, error, refetch } = cms.cmsContent.bySlug.use(
110
+ [typeSlug, slug, options],
111
+ { enabled: !!typeSlug && !!slug }
112
+ );
113
+ return {
114
+ item: data ?? null,
115
+ isLoading,
116
+ error,
117
+ refetch
118
+ };
119
+ }
120
+ function useCreateContent(typeSlug) {
121
+ const mutation = cms.cmsContent.create.use();
122
+ return {
123
+ ...mutation,
124
+ mutate: (vars) => mutation.mutate({
125
+ typeSlug,
126
+ slug: vars.slug,
127
+ data: vars.data
128
+ }),
129
+ mutateAsync: async (vars) => await mutation.mutateAsync({
130
+ typeSlug,
131
+ slug: vars.slug,
132
+ data: vars.data
133
+ })
134
+ };
135
+ }
136
+ function useUpdateContent(typeSlug) {
137
+ const mutation = cms.cmsContent.update.use();
138
+ const toVars = (vars) => ({
139
+ typeSlug,
140
+ id: vars.id,
141
+ data: vars.data
142
+ });
143
+ return {
144
+ ...mutation,
145
+ mutate: (vars) => mutation.mutate(toVars(vars)),
146
+ mutateAsync: async (vars) => await mutation.mutateAsync(
147
+ toVars(vars)
148
+ )
149
+ };
150
+ }
151
+ function useDeleteContent(typeSlug) {
152
+ const mutation = cms.cmsContent.delete.use();
153
+ return {
154
+ ...mutation,
155
+ mutate: (id) => mutation.mutate({ typeSlug, id }),
156
+ mutateAsync: (id) => mutation.mutateAsync({ typeSlug, id })
157
+ };
158
+ }
159
+ function useContentItemForm(config) {
160
+ return cms.cmsContent.useForm(
161
+ config
162
+ );
163
+ }
164
+ function useContentOptions(config) {
165
+ const { targetType, value, getOptionLabel, view, fields } = config;
166
+ return cms.cmsContent.useSelect({
167
+ query: "options",
168
+ searchArgs: (search) => [{ typeSlug: targetType, search, view, fields }],
169
+ getOptionValue: (item) => item.id,
170
+ getOptionLabel,
171
+ value,
172
+ preload: { args: (id) => [targetType, id, { view, fields }] },
173
+ enabled: !!targetType
174
+ });
175
+ }
176
+ function useContentItemPopulated(typeSlug, id) {
177
+ const { data, isLoading, error, refetch } = cms.cmsContent.populated.use(
178
+ [typeSlug, id],
179
+ { enabled: !!typeSlug && !!id }
180
+ );
181
+ return {
182
+ item: data ?? null,
183
+ isLoading,
184
+ error,
185
+ refetch
186
+ };
187
+ }
188
+ function useSuspenseContentItemPopulated(typeSlug, id) {
189
+ const { data, refetch } = cms.cmsContent.populated.useSuspense([
190
+ typeSlug,
191
+ id
192
+ ]);
193
+ return {
194
+ item: data ?? null,
195
+ refetch
196
+ };
197
+ }
198
+ function useContentByRelation(typeSlug, fieldName, targetId, options = {}) {
199
+ const { limit = 20, enabled = true, view, fields } = options;
200
+ const {
201
+ data,
202
+ isLoading,
203
+ error,
204
+ fetchNextPage,
205
+ hasNextPage,
206
+ isFetchingNextPage,
207
+ refetch
208
+ } = cms.cmsContent.byRelation.useInfinite(
209
+ [{ typeSlug, field: fieldName, targetId, limit, view, fields }],
210
+ { enabled: enabled && !!typeSlug && !!fieldName && !!targetId }
211
+ );
212
+ const { items, total } = flattenPages(
213
+ data?.pages
214
+ );
215
+ return {
216
+ items,
217
+ total,
218
+ isLoading,
219
+ error,
220
+ loadMore: fetchNextPage,
221
+ hasMore: !!hasNextPage,
222
+ isLoadingMore: isFetchingNextPage,
223
+ refetch
224
+ };
225
+ }
226
+ function useSuspenseContentByRelation(typeSlug, fieldName, targetId, options = {}) {
227
+ const { limit = 20, view, fields } = options;
228
+ const { data, fetchNextPage, hasNextPage, isFetchingNextPage, refetch } = cms.cmsContent.byRelation.useSuspenseInfinite([
229
+ { typeSlug, field: fieldName, targetId, limit, view, fields }
230
+ ]);
231
+ const { items, total } = flattenPages(
232
+ data.pages
233
+ );
234
+ return {
235
+ items,
236
+ total,
237
+ loadMore: fetchNextPage,
238
+ hasMore: !!hasNextPage,
239
+ isLoadingMore: isFetchingNextPage,
240
+ refetch
241
+ };
242
+ }
243
+ function useInverseRelations(contentTypeSlug, itemId) {
244
+ const { data, isLoading, error, refetch } = cms.cmsTypes.inverseRelations.use(
245
+ [{ slug: contentTypeSlug, itemId }],
246
+ { enabled: !!contentTypeSlug && !!itemId }
247
+ );
248
+ return {
249
+ inverseRelations: data ?? [],
250
+ isLoading,
251
+ error,
252
+ refetch
253
+ };
254
+ }
255
+ function useInverseRelationItems(params, options = {}) {
256
+ const { data, isLoading, error, refetch } = cms.cmsTypes.inverseRelationItems.use(
257
+ [
258
+ {
259
+ slug: params.contentTypeSlug,
260
+ sourceType: params.sourceType,
261
+ itemId: params.itemId,
262
+ fieldName: params.fieldName,
263
+ view: options.view,
264
+ fields: options.fields,
265
+ limit: options.limit,
266
+ offset: options.offset
267
+ }
268
+ ],
269
+ { enabled: options.enabled ?? true }
270
+ );
271
+ return {
272
+ items: data?.items ?? [],
273
+ total: data?.total ?? 0,
274
+ isLoading,
275
+ error,
276
+ refetch
277
+ };
278
+ }
279
+
280
+ export { useContent, useContentByRelation, useContentItem, useContentItemBySlug, useContentItemForm, useContentItemPopulated, useContentOptions, useContentType, useContentTypes, useCreateContent, useDeleteContent, useInverseRelationItems, useInverseRelations, useSuspenseContent, useSuspenseContentByRelation, useSuspenseContentItem, useSuspenseContentItemPopulated, useSuspenseContentTypes, useUpdateContent };
@@ -0,0 +1,13 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ const hooks = require('@btst/stack/plugins/client/hooks');
5
+ const queryKeys = require('../../query-keys.cjs');
6
+ const constants = require('../constants.cjs');
7
+
8
+ const cms = hooks.createResource({
9
+ plugin: constants.CMS_PLUGIN_ID,
10
+ resources: queryKeys.cmsResources
11
+ });
12
+
13
+ exports.cms = cms;
@@ -0,0 +1,11 @@
1
+ 'use client';
2
+ import { createResource } from '@btst/stack/plugins/client/hooks';
3
+ import { cmsResources } from '../../query-keys.mjs';
4
+ import { CMS_PLUGIN_ID } from '../constants.mjs';
5
+
6
+ const cms = createResource({
7
+ plugin: CMS_PLUGIN_ID,
8
+ resources: cmsResources
9
+ });
10
+
11
+ export { cms };
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ const cmsHooks = require('./cms-hooks.cjs');
4
+
5
+
6
+
7
+ exports.useContent = cmsHooks.useContent;
8
+ exports.useContentByRelation = cmsHooks.useContentByRelation;
9
+ exports.useContentItem = cmsHooks.useContentItem;
10
+ exports.useContentItemBySlug = cmsHooks.useContentItemBySlug;
11
+ exports.useContentItemForm = cmsHooks.useContentItemForm;
12
+ exports.useContentItemPopulated = cmsHooks.useContentItemPopulated;
13
+ exports.useContentOptions = cmsHooks.useContentOptions;
14
+ exports.useContentType = cmsHooks.useContentType;
15
+ exports.useContentTypes = cmsHooks.useContentTypes;
16
+ exports.useCreateContent = cmsHooks.useCreateContent;
17
+ exports.useDeleteContent = cmsHooks.useDeleteContent;
18
+ exports.useInverseRelationItems = cmsHooks.useInverseRelationItems;
19
+ exports.useInverseRelations = cmsHooks.useInverseRelations;
20
+ exports.useSuspenseContent = cmsHooks.useSuspenseContent;
21
+ exports.useSuspenseContentByRelation = cmsHooks.useSuspenseContentByRelation;
22
+ exports.useSuspenseContentItem = cmsHooks.useSuspenseContentItem;
23
+ exports.useSuspenseContentItemPopulated = cmsHooks.useSuspenseContentItemPopulated;
24
+ exports.useSuspenseContentTypes = cmsHooks.useSuspenseContentTypes;
25
+ exports.useUpdateContent = cmsHooks.useUpdateContent;