zova-module-rest-resource 5.1.50 → 5.1.52
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.
- package/dist/index.js +77 -5
- package/dist/index.js.map +1 -1
- package/dist/lib/selectedIds.d.ts +3 -0
- package/dist/lib/selectedIds.d.ts.map +1 -0
- package/dist/model/resource.d.ts +12 -0
- package/dist/model/resource.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/lib/selectedIds.ts +15 -0
- package/src/model/resource.ts +58 -1
package/dist/index.js
CHANGED
|
@@ -24,8 +24,27 @@ async function runMutationSuccess(options) {
|
|
|
24
24
|
await options.onSuccess?.();
|
|
25
25
|
}
|
|
26
26
|
//#endregion
|
|
27
|
+
//#region src/lib/selectedIds.ts
|
|
28
|
+
function validateSelectedIds(ids) {
|
|
29
|
+
if (ids.length === 0) throw new Error("selected ids cannot empty");
|
|
30
|
+
const keys = /* @__PURE__ */ new Set();
|
|
31
|
+
for (const id of ids) {
|
|
32
|
+
if (isNil(id) || id === "") throw new Error("selected row id cannot empty");
|
|
33
|
+
const key = String(id);
|
|
34
|
+
if (keys.has(key)) throw new Error(`duplicate selected row id: ${key}`);
|
|
35
|
+
keys.add(key);
|
|
36
|
+
}
|
|
37
|
+
return [...ids];
|
|
38
|
+
}
|
|
39
|
+
//#endregion
|
|
27
40
|
//#region src/model/resource.ts
|
|
28
|
-
var _dec$4
|
|
41
|
+
var _dec$4;
|
|
42
|
+
var _dec2$4;
|
|
43
|
+
var _dec3$3;
|
|
44
|
+
var _dec4$2;
|
|
45
|
+
var _class$4;
|
|
46
|
+
var _class2$2;
|
|
47
|
+
var _descriptor;
|
|
29
48
|
function _initializerDefineProperty(e, i, r, l) {
|
|
30
49
|
r && Object.defineProperty(e, i, {
|
|
31
50
|
enumerable: r.enumerable,
|
|
@@ -154,6 +173,39 @@ var ModelResource = (_dec$4 = Model({ enableSelector: true }), _dec2$4 = BeanInf
|
|
|
154
173
|
}
|
|
155
174
|
});
|
|
156
175
|
}
|
|
176
|
+
mutationSelected(options) {
|
|
177
|
+
const { action, getIds, mutationFn, onSuccess, invalidateSelect = true } = options;
|
|
178
|
+
return this.$useMutationData({
|
|
179
|
+
mutationKey: [
|
|
180
|
+
"selected",
|
|
181
|
+
action,
|
|
182
|
+
"mutation"
|
|
183
|
+
],
|
|
184
|
+
mutationFn: async (variables) => {
|
|
185
|
+
this._getMutationSelectedIds(getIds, variables);
|
|
186
|
+
return await mutationFn(variables);
|
|
187
|
+
},
|
|
188
|
+
onSuccess: async (data, variables, context) => {
|
|
189
|
+
const ids = this._getMutationSelectedIds(getIds, variables);
|
|
190
|
+
await runMutationSuccess({
|
|
191
|
+
invalidateSelect: invalidateSelect ? () => this.$invalidateQueries({ queryKey: ["select"] }) : void 0,
|
|
192
|
+
invalidateItem: async () => {
|
|
193
|
+
await Promise.all(ids.map((id) => this.$invalidateQueries({ queryKey: this.keyItemRoot(id) })));
|
|
194
|
+
},
|
|
195
|
+
onSuccess: () => onSuccess?.(data, variables, context)
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
deleteBulk() {
|
|
201
|
+
return this.mutationSelected({
|
|
202
|
+
action: "delete",
|
|
203
|
+
getIds: (body) => body.ids,
|
|
204
|
+
mutationFn: async (body) => {
|
|
205
|
+
return this.$fetch.post(this.sys.util.apiActionPathTranslate(`${this.resourceApi}/bulk/delete`), body, this.sys.util.apiActionConfigPrepare());
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
}
|
|
157
209
|
update(id) {
|
|
158
210
|
return this.mutationItem({
|
|
159
211
|
id,
|
|
@@ -217,6 +269,9 @@ var ModelResource = (_dec$4 = Model({ enableSelector: true }), _dec2$4 = BeanInf
|
|
|
217
269
|
if (typeof schemaName === "object") schemaName = schemaName[SymbolOpenapiSchemaName];
|
|
218
270
|
return this.$sdk.getSchemaDefaultValue(schemaName);
|
|
219
271
|
}
|
|
272
|
+
_getMutationSelectedIds(getIds, variables) {
|
|
273
|
+
return validateSelectedIds(getIds(variables));
|
|
274
|
+
}
|
|
220
275
|
keySelect(actionPath, query) {
|
|
221
276
|
return [
|
|
222
277
|
"select",
|
|
@@ -249,7 +304,13 @@ var ModelResource = (_dec$4 = Model({ enableSelector: true }), _dec2$4 = BeanInf
|
|
|
249
304
|
}), _class2$2)) || _class$4) || _class$4);
|
|
250
305
|
//#endregion
|
|
251
306
|
//#region src/page/entry/controller.tsx
|
|
252
|
-
var _dec$3
|
|
307
|
+
var _dec$3;
|
|
308
|
+
var _dec2$3;
|
|
309
|
+
var _dec3$2;
|
|
310
|
+
var _dec4$1;
|
|
311
|
+
var _dec5$1;
|
|
312
|
+
var _class$3;
|
|
313
|
+
var _class2$1;
|
|
253
314
|
function _applyDecoratedDescriptor$1(i, e, r, n, l) {
|
|
254
315
|
var a = {};
|
|
255
316
|
return Object.keys(n).forEach(function(i) {
|
|
@@ -327,12 +388,21 @@ var ControllerPageEntry = (_dec$3 = Controller(), _dec2$3 = BeanInfo({ module: "
|
|
|
327
388
|
], Object.getOwnPropertyDescriptor(_class2$1.prototype, "$$modelResource"), _class2$1.prototype), _class2$1)) || _class$3) || _class$3);
|
|
328
389
|
//#endregion
|
|
329
390
|
//#region src/page/entryCreate/controller.tsx
|
|
330
|
-
var _dec$2
|
|
391
|
+
var _dec$2;
|
|
392
|
+
var _dec2$2;
|
|
393
|
+
var _dec3$1;
|
|
394
|
+
var _class$2;
|
|
331
395
|
var ControllerPageEntryCreateSchemaParams = ControllerPageEntrySchemaParams;
|
|
332
396
|
var ControllerPageEntryCreate = (_dec$2 = Controller(), _dec2$2 = Virtual(), _dec3$1 = BeanInfo({ module: "rest-resource" }), _dec$2(_class$2 = _dec2$2(_class$2 = _dec3$1(_class$2 = class ControllerPageEntryCreate extends ControllerPageEntry {}) || _class$2) || _class$2) || _class$2);
|
|
333
397
|
//#endregion
|
|
334
398
|
//#region src/page/resource/controller.tsx
|
|
335
|
-
var _dec$1
|
|
399
|
+
var _dec$1;
|
|
400
|
+
var _dec2$1;
|
|
401
|
+
var _dec3;
|
|
402
|
+
var _dec4;
|
|
403
|
+
var _dec5;
|
|
404
|
+
var _class$1;
|
|
405
|
+
var _class2;
|
|
336
406
|
function _applyDecoratedDescriptor(i, e, r, n, l) {
|
|
337
407
|
var a = {};
|
|
338
408
|
return Object.keys(n).forEach(function(i) {
|
|
@@ -448,7 +518,9 @@ var routes = [
|
|
|
448
518
|
//#region src/.metadata/index.ts
|
|
449
519
|
/** pages: end */
|
|
450
520
|
/** scope: begin */
|
|
451
|
-
var _dec
|
|
521
|
+
var _dec;
|
|
522
|
+
var _dec2;
|
|
523
|
+
var _class;
|
|
452
524
|
var pagePathSchemas = {};
|
|
453
525
|
var pageNameSchemas = {
|
|
454
526
|
"rest-resource:entry": { params: NSControllerPageEntry.paramsSchema },
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["isNil","z","BeanControllerPageBase","deepExtend","Use","usePrepareArg","ZovaJsx","Controller","formMetaFromFormScene","$QueryEnsureLoaded","_isSlot","s","Object","prototype","toString","call","_isVNode","ControllerPageEntrySchemaParams","object","resource","string","id","optional","formScene","ControllerPageEntry","_dec","_dec2","__z_BeanInfo","module","_dec3","beanFullName","_dec4","Reflect","metadata","Function","_dec5","_class","_class2","constructor","args","formMeta","formProvider","formSchema","jsxZova","$$modelResource","$params","entryId","__init__","$computed","getFormSchema","_prepareJsx","getFormApiSchemas","sdk","bean","_newBeanSimple","components","render","blocks","rest","length","domBlocks","forEach","block","index","options","key","domBlock","Array","isArray","push","_createVNode","ZPage","default","_applyDecoratedDescriptor","getOwnPropertyDescriptor","Virtual","Controller","ControllerPageEntry","ControllerPageEntrySchemaParams","ControllerPageEntryCreateSchemaParams","ControllerPageEntryCreate","_dec","_dec2","_dec3","__z_BeanInfo","module","_class","z","BeanControllerPageBase","deepExtend","Use","usePrepareArg","ZovaJsx","Controller","$QueryEnsureLoaded","_isSlot","s","Object","prototype","toString","call","_isVNode","ControllerPageResourceSchemaParams","object","resource","string","ControllerPageResource","_dec","_dec2","__z_BeanInfo","module","_dec3","beanFullName","_dec4","Reflect","metadata","Function","_dec5","_class","_class2","constructor","args","jsxZova","$$modelResource","$params","__init__","_prepareJsx","apiSchemasSelect","sdk","bean","_newBeanSimple","schemaRow","render","blocks","rest","length","domBlocks","forEach","block","index","options","key","domBlock","Array","isArray","push","_createVNode","ZPage","default","_applyDecoratedDescriptor","getOwnPropertyDescriptor"],"sources":["../src/lib/deleteRequest.ts","../src/lib/mutationSuccess.ts","../src/model/resource.ts","../src/page/entry/controller.tsx","../src/page/entryCreate/controller.tsx","../src/page/resource/controller.tsx","../src/.metadata/page/entry.ts","../src/.metadata/page/entryCreate.ts","../src/.metadata/page/resource.ts","../src/lib/resourceRouteMeta.ts","../src/routes.ts","../src/.metadata/index.ts"],"sourcesContent":["export function prepareDeleteRequestConfig(config, body) {\n if (body === undefined) return config;\n return {\n ...config,\n data: body\n };\n}","export async function runMutationSuccess(options) {\n await options.invalidateSelect?.();\n await options.invalidateItem?.();\n await options.onSuccess?.();\n}","var _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor;\nfunction _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\nfunction _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\nfunction _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\nimport { hashkey, isNil } from '@cabloy/utils';\nimport { UseScope } from 'zova';\nimport { formSceneFromFormMeta } from 'zova-module-a-form';\nimport { $QueryEnsureLoaded, BeanModelBase, Model } from 'zova-module-a-model';\nimport { SymbolOpenapiSchemaName } from 'zova-module-a-openapi';\nimport { prepareDeleteRequestConfig } from '../lib/deleteRequest.js';\nimport { runMutationSuccess } from '../lib/mutationSuccess.js';\nexport let ModelResource = (_dec = Model({\n enableSelector: true\n}), _dec2 = __z_BeanInfo({\n module: \"rest-resource\"\n}), _dec3 = UseScope(\"a-openapi\"), _dec4 = Reflect.metadata(\"design:type\", typeof ScopeModuleAOpenapi === \"undefined\" ? Object : ScopeModuleAOpenapi), _dec(_class = _dec2(_class = (_class2 = class ModelResource extends BeanModelBase {\n constructor(...args) {\n super(...args);\n this.resource = void 0;\n this.resourceApi = void 0;\n this.permissions = void 0;\n this.formProvider = void 0;\n this.schemaView = void 0;\n this.schemaCreate = void 0;\n this.schemaUpdate = void 0;\n this.schemaFilter = void 0;\n this.schemaOrder = void 0;\n this.schemaRow = void 0;\n this.schemaPages = void 0;\n _initializerDefineProperty(this, \"$$scopeOpenapi\", _descriptor, this);\n }\n async __init__(resource) {\n if (!resource) throw new Error('resource not specified');\n await super.__init__(resource);\n this.resource = resource;\n this.permissions = this.$computed(() => {\n if (this.$ssr.cookieDisabledOnServer) return;\n const permissions = this.$sdk.getPermissions(this.resource);\n return permissions.data;\n });\n this.formProvider = this.$computed(() => {\n return this.$$scopeOpenapi.config.formProvider;\n });\n this.schemaView = this.$computed(() => {\n return this.apiSchemasView.responseBody;\n });\n this.schemaCreate = this.$computed(() => {\n return this.apiSchemasCreate.requestBody;\n });\n this.schemaUpdate = this.$computed(() => {\n return this.apiSchemasUpdate.requestBody;\n });\n this.schemaFilter = this.$computed(() => {\n return this.apiSchemasSelect.filter;\n });\n this.schemaOrder = this.$computed(() => {\n return this.apiSchemasSelect.order;\n });\n this.schemaRow = this.$computed(() => {\n return this.apiSchemasSelect.row;\n });\n this.schemaPages = this.$computed(() => {\n return this.apiSchemasSelect.paged;\n });\n // bootstrap\n await this._bootstrap();\n }\n selectGeneral(actionPath, query) {\n return this.$useStateData({\n queryKey: this.keySelect(actionPath, query),\n queryFn: async () => {\n const apiPath = actionPath ? `${this.resourceApi}/${actionPath}` : this.resourceApi;\n return this.$fetch.get(this.sys.util.apiActionPathTranslate(apiPath), this.sys.util.apiActionConfigPrepare(undefined, {\n query\n }));\n }\n });\n }\n select(query) {\n return this.selectGeneral(undefined, query);\n }\n query(action, queryFn) {\n return this.$useStateData({\n queryKey: this.keySelect(action),\n queryFn\n });\n }\n queryItem(options) {\n const {\n id,\n action,\n queryFn,\n meta\n } = options;\n if (isNil(id)) throw new Error('row id cannot empty');\n return this.$useStateData({\n queryKey: this.keyItem(id, action),\n queryFn,\n meta\n });\n }\n view(id) {\n return this.queryItem({\n id,\n action: 'view',\n queryFn: async () => {\n const res = await this.$fetch.get(this.sys.util.apiActionPathTranslate(`${this.resourceApi}/:id`, {\n id\n }), this.sys.util.apiActionConfigPrepare());\n return res ?? null;\n }\n });\n }\n create() {\n return this.$useMutationData({\n mutationKey: ['create'],\n mutationFn: async params => {\n return this.$fetch.post(this.sys.util.apiActionPathTranslate(this.resourceApi), params, this.sys.util.apiActionConfigPrepare());\n },\n onSuccess: async () => {\n await runMutationSuccess({\n invalidateSelect: () => this.$invalidateQueries({\n queryKey: ['select']\n })\n });\n }\n });\n }\n mutationItem(options) {\n const {\n id,\n action,\n mutationFn,\n onSuccess,\n invalidateSelect = true\n } = options;\n if (isNil(id)) throw new Error('row id cannot empty');\n return this.$useMutationData({\n mutationKey: [...this.keyItem(id, action), 'mutation'],\n mutationFn,\n onSuccess: async (data, variables, context) => {\n await runMutationSuccess({\n invalidateSelect: invalidateSelect ? () => this.$invalidateQueries({\n queryKey: ['select']\n }) : undefined,\n invalidateItem: () => this.$invalidateQueries({\n queryKey: this.keyItemRoot(id)\n }),\n onSuccess: () => onSuccess?.(data, variables, context)\n });\n }\n });\n }\n update(id) {\n return this.mutationItem({\n id,\n action: 'update',\n mutationFn: async params => {\n return this.$fetch.patch(this.sys.util.apiActionPathTranslate(`${this.resourceApi}/:id`, {\n id\n }), params, this.sys.util.apiActionConfigPrepare());\n }\n });\n }\n delete(id) {\n return this.mutationItem({\n id,\n action: 'delete',\n mutationFn: async body => {\n const apiPath = this.sys.util.apiActionPathTranslate(`${this.resourceApi}/:id`, {\n id\n });\n const apiConfig = prepareDeleteRequestConfig(this.sys.util.apiActionConfigPrepare(), body);\n return this.$fetch.delete(apiPath, apiConfig);\n }\n });\n }\n get apiSchemasSelect() {\n return this.$sdk.createApiSchemas(this.resourceApi, 'get');\n }\n get apiSchemasView() {\n return this.$sdk.createApiSchemas(`${this.resourceApi}/:id`, 'get');\n }\n get apiSchemasCreate() {\n return this.$sdk.createApiSchemas(this.resourceApi, 'post');\n }\n get apiSchemasUpdate() {\n return this.$sdk.createApiSchemas(`${this.resourceApi}/:id`, 'patch');\n }\n get apiSchemasDelete() {\n return this.$sdk.createApiSchemas(`${this.resourceApi}/:id`, 'delete');\n }\n getFormSchema(formMeta) {\n const formScene = formMeta.formScene ?? formSceneFromFormMeta(formMeta);\n if (formScene === 'view') return this.schemaView;\n if (formScene === 'create') return this.schemaCreate;\n if (formScene === 'edit') return this.schemaUpdate;\n }\n getFormApiSchemas(formMeta) {\n const formScene = formMeta.formScene ?? formSceneFromFormMeta(formMeta);\n if (formScene === 'view') return this.apiSchemasView;\n if (formScene === 'create') return this.apiSchemasCreate;\n if (formScene === 'edit') return this.apiSchemasUpdate;\n throw new Error('invalid parameters');\n }\n getFormMutationSubmit(formMeta, id) {\n if (formMeta.formMode !== 'edit') return;\n if (formMeta.editMode === 'create') {\n return this.create();\n } else if (formMeta.editMode === 'update') {\n return this.update(id);\n }\n }\n getFormData(formMeta, id) {\n if (formMeta.formMode === 'edit' && formMeta.editMode === 'create') {\n return this.getQueryDataDefaultValue(this.schemaCreate);\n }\n if (isNil(id)) return undefined;\n return this.view(id).data;\n }\n getQueryDataDefaultValue(schemaName) {\n if (!schemaName) return;\n if (typeof schemaName === 'object') {\n schemaName = schemaName[SymbolOpenapiSchemaName];\n }\n return this.$sdk.getSchemaDefaultValue(schemaName);\n }\n keySelect(actionPath, query) {\n return ['select', actionPath ?? '', hashkey(query)];\n }\n keyItemRoot(id) {\n if (isNil(id)) throw new Error('row id cannot empty');\n return ['item', id];\n }\n keyItem(id, action) {\n if (isNil(id)) throw new Error('row id cannot empty');\n return ['item', id, action];\n }\n async _bootstrap() {\n const queryBootstrap = await $QueryEnsureLoaded(() => this.$sdk.getBootstrap(this.resource));\n if (!queryBootstrap?.data) {\n throw new Error(`not found sdk of resource: ${this.resource}`);\n }\n this.resourceApi = this.sys.util.parseResourceApi(this.resource, queryBootstrap.data.apiPath);\n }\n}, _descriptor = _applyDecoratedDescriptor(_class2.prototype, \"$$scopeOpenapi\", [_dec3, _dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _class2)) || _class) || _class);","import type {\n IFormMeta,\n IFormProvider,\n ISchemaObjectExtensionField,\n TypeFormScene,\n} from 'zova-module-a-openapi';\n\nimport { isNil } from '@cabloy/utils';\nimport { VNode } from 'vue';\nimport { z } from 'zod';\nimport { BeanControllerPageBase, deepExtend, Use, usePrepareArg } from 'zova';\nimport { ZovaJsx } from 'zova-jsx';\nimport { Controller } from 'zova-module-a-bean';\nimport { formMetaFromFormScene } from 'zova-module-a-form';\nimport { $QueryEnsureLoaded } from 'zova-module-a-model';\nimport { ZPage } from 'zova-module-home-base';\n\nimport type { ModelResource } from '../../model/resource.js';\n\nexport const ControllerPageEntrySchemaParams = z.object({\n resource: z.string(),\n id: z.string().optional(),\n formScene: z.string().optional(),\n});\n\n@Controller()\nexport class ControllerPageEntry extends BeanControllerPageBase {\n formMeta: IFormMeta;\n formProvider: IFormProvider;\n formSchema?: ISchemaObjectExtensionField;\n jsxZova: ZovaJsx;\n\n @Use({ beanFullName: 'rest-resource.model.resource' })\n get $$modelResource(): ModelResource {\n return usePrepareArg(this.$params.resource, true);\n }\n\n get resource() {\n return this.$params.resource;\n }\n\n get entryId() {\n return this.$params.id;\n }\n\n get formScene() {\n return (\n (this.$params.formScene as TypeFormScene | undefined) ??\n (isNil(this.entryId) ? 'create' : 'view')\n );\n }\n\n protected async __init__() {\n this.formMeta = this.$computed(() => {\n return formMetaFromFormScene(this.formScene);\n });\n this.formProvider = this.$computed(() => {\n return this.$$modelResource.formProvider;\n });\n this.formSchema = this.$computed(() => {\n return this.$$modelResource.getFormSchema(this.formMeta);\n });\n // jsx\n this._prepareJsx();\n // load schema\n await $QueryEnsureLoaded(() => this.$$modelResource.getFormApiSchemas(this.formMeta)?.sdk);\n }\n\n private _prepareJsx() {\n this.jsxZova = this.bean._newBeanSimple(ZovaJsx, false, this.formProvider.components);\n }\n\n protected render() {\n const blocks = this.formSchema?.rest?.blocks;\n if (!blocks || blocks.length === 0) return;\n const domBlocks: VNode[] = [];\n blocks.forEach((block, index) => {\n const options = deepExtend(\n { key: index },\n {\n resource: this.resource,\n id: this.entryId,\n formScene: this.formScene,\n },\n block.options,\n );\n const domBlock = this.jsxZova.render(block.render!, options);\n if (!domBlock) return;\n if (Array.isArray(domBlock)) {\n domBlocks.push(...domBlock);\n } else {\n domBlocks.push(domBlock);\n }\n });\n return <ZPage>{domBlocks}</ZPage>;\n }\n}\n","import { Virtual } from 'zova-core';\nimport { Controller } from 'zova-module-a-bean';\n\nimport { ControllerPageEntry, ControllerPageEntrySchemaParams } from '../entry/controller.jsx';\n\nexport const ControllerPageEntryCreateSchemaParams = ControllerPageEntrySchemaParams;\n\n@Controller()\n@Virtual()\nexport class ControllerPageEntryCreate extends ControllerPageEntry {}\n","import { VNode } from 'vue';\nimport { z } from 'zod';\nimport { BeanControllerPageBase, deepExtend, Use, usePrepareArg } from 'zova';\nimport { ZovaJsx } from 'zova-jsx';\nimport { Controller } from 'zova-module-a-bean';\nimport { $QueryEnsureLoaded } from 'zova-module-a-model';\nimport { ZPage } from 'zova-module-home-base';\n\nimport type { ModelResource } from '../../model/resource.js';\n\nexport const ControllerPageResourceSchemaParams = z.object({\n resource: z.string(),\n});\n\n@Controller()\nexport class ControllerPageResource extends BeanControllerPageBase {\n jsxZova: ZovaJsx;\n\n @Use({ beanFullName: 'rest-resource.model.resource' })\n get $$modelResource(): ModelResource {\n return usePrepareArg(this.$params.resource, true);\n }\n\n get resource() {\n return this.$params.resource;\n }\n\n protected async __init__() {\n // jsx\n this._prepareJsx();\n // load schema/data\n await $QueryEnsureLoaded(() => this.$$modelResource.apiSchemasSelect.sdk);\n }\n\n private _prepareJsx() {\n this.jsxZova = this.bean._newBeanSimple(ZovaJsx, false);\n }\n\n get schemaRow() {\n return this.$$modelResource.schemaRow;\n }\n\n public render() {\n const blocks = this.schemaRow?.rest?.blocks;\n if (!blocks || blocks.length === 0) return;\n const domBlocks: VNode[] = [];\n blocks.forEach((block, index) => {\n const options = deepExtend(\n { key: index },\n {\n resource: this.resource,\n },\n block.options,\n );\n const domBlock = this.jsxZova.render(block.render!, options);\n if (!domBlock) return;\n if (Array.isArray(domBlock)) {\n domBlocks.push(...domBlock);\n } else {\n domBlocks.push(domBlock);\n }\n });\n return <ZPage>{domBlocks}</ZPage>;\n }\n}\n","import { createZovaComponentPage } from 'zova';\nimport { ControllerPageEntry } from '../../page/entry/controller.jsx';\nimport { ControllerPageEntrySchemaParams } from '../../page/entry/controller.jsx';\nexport let NSControllerPageEntry;\n(function (_NSControllerPageEntry) {\n const paramsSchema = _NSControllerPageEntry.paramsSchema = ControllerPageEntrySchemaParams;\n})(NSControllerPageEntry || (NSControllerPageEntry = {}));\nexport const ZPageEntry = createZovaComponentPage(ControllerPageEntry, undefined, undefined);","import { createZovaComponentPage } from 'zova';\nimport { ControllerPageEntryCreate } from '../../page/entryCreate/controller.jsx';\nimport { ControllerPageEntryCreateSchemaParams } from '../../page/entryCreate/controller.jsx';\nexport let NSControllerPageEntryCreate;\n(function (_NSControllerPageEntryCreate) {\n const paramsSchema = _NSControllerPageEntryCreate.paramsSchema = ControllerPageEntryCreateSchemaParams;\n})(NSControllerPageEntryCreate || (NSControllerPageEntryCreate = {}));\nexport const ZPageEntryCreate = createZovaComponentPage(ControllerPageEntryCreate, undefined, undefined);","import { createZovaComponentPage } from 'zova';\nimport { ControllerPageResource } from '../../page/resource/controller.jsx';\nimport { ControllerPageResourceSchemaParams } from '../../page/resource/controller.jsx';\nexport let NSControllerPageResource;\n(function (_NSControllerPageResource) {\n const paramsSchema = _NSControllerPageResource.paramsSchema = ControllerPageResourceSchemaParams;\n})(NSControllerPageResource || (NSControllerPageResource = {}));\nexport const ZPageResource = createZovaComponentPage(ControllerPageResource, undefined, undefined);","export const resourceRouteMeta = {\n tabKey: resourceTabKey,\n componentKey: resourceTabKey,\n ssrProfile: 'session'\n};\nexport function resourceTabKey(route) {\n return `/rest/resource/${encodeURIComponent(route.params.resource)}`;\n}","import { ZPageEntry } from './.metadata/page/entry.js';\nimport { ZPageEntryCreate } from './.metadata/page/entryCreate.js';\nimport { ZPageResource } from './.metadata/page/resource.js';\nimport { resourceRouteMeta, resourceTabKey } from './lib/resourceRouteMeta.js';\nexport const routes = [{\n name: 'resource',\n path: ':resource',\n component: ZPageResource,\n meta: resourceRouteMeta\n}, {\n name: 'entryCreate',\n path: ':resource/create',\n component: ZPageEntryCreate,\n meta: {\n tabKey: resourceTabKey,\n ssrProfile: 'session'\n }\n}, {\n name: 'entry',\n path: ':resource/:id/:formScene?',\n component: ZPageEntry,\n meta: {\n tabKey: resourceTabKey,\n ssrProfile: 'session'\n }\n}];","var _dec, _dec2, _class;\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\n// eslint-disable\n/** model: begin */\nexport * from '../model/resource.js';\nimport 'zova-module-a-model';\n/** model: end */\n/** model: begin */\nimport { ModelResource } from '../model/resource.js';\nimport 'zova';\n/** model: end */\n/** controller: begin */\nexport * from '../page/entry/controller.jsx';\nexport * from '../page/entryCreate/controller.jsx';\nexport * from '../page/resource/controller.jsx';\nimport 'zova';\n/** controller: end */\n/** controller: begin */\nimport { ControllerPageEntry } from '../page/entry/controller.jsx';\nimport { ControllerPageEntryCreate } from '../page/entryCreate/controller.jsx';\nimport { ControllerPageResource } from '../page/resource/controller.jsx';\nimport 'zova';\n/** controller: end */\n/** pages: begin */\nexport * from './page/entry.js';\nimport { NSControllerPageEntry } from './page/entry.js';\nexport * from './page/entryCreate.js';\nimport { NSControllerPageEntryCreate } from './page/entryCreate.js';\nexport * from './page/resource.js';\nimport { NSControllerPageResource } from './page/resource.js';\nexport * from '../routes.js';\nimport 'zova';\nexport const pagePathSchemas = {};\nexport const pageNameSchemas = {\n 'rest-resource:entry': {\n params: NSControllerPageEntry.paramsSchema\n },\n 'rest-resource:entryCreate': {\n params: NSControllerPageEntryCreate.paramsSchema\n },\n 'rest-resource:resource': {\n params: NSControllerPageResource.paramsSchema\n }\n};\n/** pages: end */\n\n/** scope: begin */\nimport { BeanScopeBase } from 'zova';\nimport { Scope } from 'zova-module-a-bean';\nexport let ScopeModuleRestResource = (_dec = Scope(), _dec2 = __z_BeanInfo({\n module: \"rest-resource\"\n}), _dec(_class = _dec2(_class = class ScopeModuleRestResource extends BeanScopeBase {}) || _class) || _class);\nimport 'zova';\n\n/** scope: end */"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["isNil","z","BeanControllerPageBase","deepExtend","Use","usePrepareArg","ZovaJsx","Controller","formMetaFromFormScene","$QueryEnsureLoaded","_isSlot","s","Object","prototype","toString","call","_isVNode","ControllerPageEntrySchemaParams","object","resource","string","id","optional","formScene","ControllerPageEntry","_dec","_dec2","__z_BeanInfo","module","_dec3","beanFullName","_dec4","Reflect","metadata","Function","_dec5","_class","_class2","constructor","args","formMeta","formProvider","formSchema","jsxZova","$$modelResource","$params","entryId","__init__","$computed","getFormSchema","_prepareJsx","getFormApiSchemas","sdk","bean","_newBeanSimple","components","render","blocks","rest","length","domBlocks","forEach","block","index","options","key","domBlock","Array","isArray","push","_createVNode","ZPage","default","_applyDecoratedDescriptor","getOwnPropertyDescriptor","Virtual","Controller","ControllerPageEntry","ControllerPageEntrySchemaParams","ControllerPageEntryCreateSchemaParams","ControllerPageEntryCreate","_dec","_dec2","_dec3","__z_BeanInfo","module","_class","z","BeanControllerPageBase","deepExtend","Use","usePrepareArg","ZovaJsx","Controller","$QueryEnsureLoaded","_isSlot","s","Object","prototype","toString","call","_isVNode","ControllerPageResourceSchemaParams","object","resource","string","ControllerPageResource","_dec","_dec2","__z_BeanInfo","module","_dec3","beanFullName","_dec4","Reflect","metadata","Function","_dec5","_class","_class2","constructor","args","jsxZova","$$modelResource","$params","__init__","_prepareJsx","apiSchemasSelect","sdk","bean","_newBeanSimple","schemaRow","render","blocks","rest","length","domBlocks","forEach","block","index","options","key","domBlock","Array","isArray","push","_createVNode","ZPage","default","_applyDecoratedDescriptor","getOwnPropertyDescriptor"],"sources":["../src/lib/deleteRequest.ts","../src/lib/mutationSuccess.ts","../src/lib/selectedIds.ts","../src/model/resource.ts","../src/page/entry/controller.tsx","../src/page/entryCreate/controller.tsx","../src/page/resource/controller.tsx","../src/.metadata/page/entry.ts","../src/.metadata/page/entryCreate.ts","../src/.metadata/page/resource.ts","../src/lib/resourceRouteMeta.ts","../src/routes.ts","../src/.metadata/index.ts"],"sourcesContent":["export function prepareDeleteRequestConfig(config, body) {\n if (body === undefined) return config;\n return {\n ...config,\n data: body\n };\n}","export async function runMutationSuccess(options) {\n await options.invalidateSelect?.();\n await options.invalidateItem?.();\n await options.onSuccess?.();\n}","import { isNil } from '@cabloy/utils';\nexport function validateSelectedIds(ids) {\n if (ids.length === 0) throw new Error('selected ids cannot empty');\n const keys = new Set();\n for (const id of ids) {\n if (isNil(id) || id === '') throw new Error('selected row id cannot empty');\n const key = String(id);\n if (keys.has(key)) throw new Error(`duplicate selected row id: ${key}`);\n keys.add(key);\n }\n return [...ids];\n}","var _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor;\nfunction _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\nfunction _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\nfunction _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\nimport { hashkey, isNil } from '@cabloy/utils';\nimport { UseScope } from 'zova';\nimport { formSceneFromFormMeta } from 'zova-module-a-form';\nimport { $QueryEnsureLoaded, BeanModelBase, Model } from 'zova-module-a-model';\nimport { SymbolOpenapiSchemaName } from 'zova-module-a-openapi';\nimport { prepareDeleteRequestConfig } from '../lib/deleteRequest.js';\nimport { runMutationSuccess } from '../lib/mutationSuccess.js';\nimport { validateSelectedIds } from '../lib/selectedIds.js';\nexport let ModelResource = (_dec = Model({\n enableSelector: true\n}), _dec2 = __z_BeanInfo({\n module: \"rest-resource\"\n}), _dec3 = UseScope(\"a-openapi\"), _dec4 = Reflect.metadata(\"design:type\", typeof ScopeModuleAOpenapi === \"undefined\" ? Object : ScopeModuleAOpenapi), _dec(_class = _dec2(_class = (_class2 = class ModelResource extends BeanModelBase {\n constructor(...args) {\n super(...args);\n this.resource = void 0;\n this.resourceApi = void 0;\n this.permissions = void 0;\n this.formProvider = void 0;\n this.schemaView = void 0;\n this.schemaCreate = void 0;\n this.schemaUpdate = void 0;\n this.schemaFilter = void 0;\n this.schemaOrder = void 0;\n this.schemaRow = void 0;\n this.schemaPages = void 0;\n _initializerDefineProperty(this, \"$$scopeOpenapi\", _descriptor, this);\n }\n async __init__(resource) {\n if (!resource) throw new Error('resource not specified');\n await super.__init__(resource);\n this.resource = resource;\n this.permissions = this.$computed(() => {\n if (this.$ssr.cookieDisabledOnServer) return;\n const permissions = this.$sdk.getPermissions(this.resource);\n return permissions.data;\n });\n this.formProvider = this.$computed(() => {\n return this.$$scopeOpenapi.config.formProvider;\n });\n this.schemaView = this.$computed(() => {\n return this.apiSchemasView.responseBody;\n });\n this.schemaCreate = this.$computed(() => {\n return this.apiSchemasCreate.requestBody;\n });\n this.schemaUpdate = this.$computed(() => {\n return this.apiSchemasUpdate.requestBody;\n });\n this.schemaFilter = this.$computed(() => {\n return this.apiSchemasSelect.filter;\n });\n this.schemaOrder = this.$computed(() => {\n return this.apiSchemasSelect.order;\n });\n this.schemaRow = this.$computed(() => {\n return this.apiSchemasSelect.row;\n });\n this.schemaPages = this.$computed(() => {\n return this.apiSchemasSelect.paged;\n });\n // bootstrap\n await this._bootstrap();\n }\n selectGeneral(actionPath, query) {\n return this.$useStateData({\n queryKey: this.keySelect(actionPath, query),\n queryFn: async () => {\n const apiPath = actionPath ? `${this.resourceApi}/${actionPath}` : this.resourceApi;\n return this.$fetch.get(this.sys.util.apiActionPathTranslate(apiPath), this.sys.util.apiActionConfigPrepare(undefined, {\n query\n }));\n }\n });\n }\n select(query) {\n return this.selectGeneral(undefined, query);\n }\n query(action, queryFn) {\n return this.$useStateData({\n queryKey: this.keySelect(action),\n queryFn\n });\n }\n queryItem(options) {\n const {\n id,\n action,\n queryFn,\n meta\n } = options;\n if (isNil(id)) throw new Error('row id cannot empty');\n return this.$useStateData({\n queryKey: this.keyItem(id, action),\n queryFn,\n meta\n });\n }\n view(id) {\n return this.queryItem({\n id,\n action: 'view',\n queryFn: async () => {\n const res = await this.$fetch.get(this.sys.util.apiActionPathTranslate(`${this.resourceApi}/:id`, {\n id\n }), this.sys.util.apiActionConfigPrepare());\n return res ?? null;\n }\n });\n }\n create() {\n return this.$useMutationData({\n mutationKey: ['create'],\n mutationFn: async params => {\n return this.$fetch.post(this.sys.util.apiActionPathTranslate(this.resourceApi), params, this.sys.util.apiActionConfigPrepare());\n },\n onSuccess: async () => {\n await runMutationSuccess({\n invalidateSelect: () => this.$invalidateQueries({\n queryKey: ['select']\n })\n });\n }\n });\n }\n mutationItem(options) {\n const {\n id,\n action,\n mutationFn,\n onSuccess,\n invalidateSelect = true\n } = options;\n if (isNil(id)) throw new Error('row id cannot empty');\n return this.$useMutationData({\n mutationKey: [...this.keyItem(id, action), 'mutation'],\n mutationFn,\n onSuccess: async (data, variables, context) => {\n await runMutationSuccess({\n invalidateSelect: invalidateSelect ? () => this.$invalidateQueries({\n queryKey: ['select']\n }) : undefined,\n invalidateItem: () => this.$invalidateQueries({\n queryKey: this.keyItemRoot(id)\n }),\n onSuccess: () => onSuccess?.(data, variables, context)\n });\n }\n });\n }\n mutationSelected(options) {\n const {\n action,\n getIds,\n mutationFn,\n onSuccess,\n invalidateSelect = true\n } = options;\n return this.$useMutationData({\n mutationKey: ['selected', action, 'mutation'],\n mutationFn: async variables => {\n this._getMutationSelectedIds(getIds, variables);\n return await mutationFn(variables);\n },\n onSuccess: async (data, variables, context) => {\n const ids = this._getMutationSelectedIds(getIds, variables);\n await runMutationSuccess({\n invalidateSelect: invalidateSelect ? () => this.$invalidateQueries({\n queryKey: ['select']\n }) : undefined,\n invalidateItem: async () => {\n await Promise.all(ids.map(id => this.$invalidateQueries({\n queryKey: this.keyItemRoot(id)\n })));\n },\n onSuccess: () => onSuccess?.(data, variables, context)\n });\n }\n });\n }\n deleteBulk() {\n return this.mutationSelected({\n action: 'delete',\n getIds: body => body.ids,\n mutationFn: async body => {\n return this.$fetch.post(this.sys.util.apiActionPathTranslate(`${this.resourceApi}/bulk/delete`), body, this.sys.util.apiActionConfigPrepare());\n }\n });\n }\n update(id) {\n return this.mutationItem({\n id,\n action: 'update',\n mutationFn: async params => {\n return this.$fetch.patch(this.sys.util.apiActionPathTranslate(`${this.resourceApi}/:id`, {\n id\n }), params, this.sys.util.apiActionConfigPrepare());\n }\n });\n }\n delete(id) {\n return this.mutationItem({\n id,\n action: 'delete',\n mutationFn: async body => {\n const apiPath = this.sys.util.apiActionPathTranslate(`${this.resourceApi}/:id`, {\n id\n });\n const apiConfig = prepareDeleteRequestConfig(this.sys.util.apiActionConfigPrepare(), body);\n return this.$fetch.delete(apiPath, apiConfig);\n }\n });\n }\n get apiSchemasSelect() {\n return this.$sdk.createApiSchemas(this.resourceApi, 'get');\n }\n get apiSchemasView() {\n return this.$sdk.createApiSchemas(`${this.resourceApi}/:id`, 'get');\n }\n get apiSchemasCreate() {\n return this.$sdk.createApiSchemas(this.resourceApi, 'post');\n }\n get apiSchemasUpdate() {\n return this.$sdk.createApiSchemas(`${this.resourceApi}/:id`, 'patch');\n }\n get apiSchemasDelete() {\n return this.$sdk.createApiSchemas(`${this.resourceApi}/:id`, 'delete');\n }\n getFormSchema(formMeta) {\n const formScene = formMeta.formScene ?? formSceneFromFormMeta(formMeta);\n if (formScene === 'view') return this.schemaView;\n if (formScene === 'create') return this.schemaCreate;\n if (formScene === 'edit') return this.schemaUpdate;\n }\n getFormApiSchemas(formMeta) {\n const formScene = formMeta.formScene ?? formSceneFromFormMeta(formMeta);\n if (formScene === 'view') return this.apiSchemasView;\n if (formScene === 'create') return this.apiSchemasCreate;\n if (formScene === 'edit') return this.apiSchemasUpdate;\n throw new Error('invalid parameters');\n }\n getFormMutationSubmit(formMeta, id) {\n if (formMeta.formMode !== 'edit') return;\n if (formMeta.editMode === 'create') {\n return this.create();\n } else if (formMeta.editMode === 'update') {\n return this.update(id);\n }\n }\n getFormData(formMeta, id) {\n if (formMeta.formMode === 'edit' && formMeta.editMode === 'create') {\n return this.getQueryDataDefaultValue(this.schemaCreate);\n }\n if (isNil(id)) return undefined;\n return this.view(id).data;\n }\n getQueryDataDefaultValue(schemaName) {\n if (!schemaName) return;\n if (typeof schemaName === 'object') {\n schemaName = schemaName[SymbolOpenapiSchemaName];\n }\n return this.$sdk.getSchemaDefaultValue(schemaName);\n }\n _getMutationSelectedIds(getIds, variables) {\n return validateSelectedIds(getIds(variables));\n }\n keySelect(actionPath, query) {\n return ['select', actionPath ?? '', hashkey(query)];\n }\n keyItemRoot(id) {\n if (isNil(id)) throw new Error('row id cannot empty');\n return ['item', id];\n }\n keyItem(id, action) {\n if (isNil(id)) throw new Error('row id cannot empty');\n return ['item', id, action];\n }\n async _bootstrap() {\n const queryBootstrap = await $QueryEnsureLoaded(() => this.$sdk.getBootstrap(this.resource));\n if (!queryBootstrap?.data) {\n throw new Error(`not found sdk of resource: ${this.resource}`);\n }\n this.resourceApi = this.sys.util.parseResourceApi(this.resource, queryBootstrap.data.apiPath);\n }\n}, _descriptor = _applyDecoratedDescriptor(_class2.prototype, \"$$scopeOpenapi\", [_dec3, _dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _class2)) || _class) || _class);","import type {\n IFormMeta,\n IFormProvider,\n ISchemaObjectExtensionField,\n TypeFormScene,\n} from 'zova-module-a-openapi';\n\nimport { isNil } from '@cabloy/utils';\nimport { VNode } from 'vue';\nimport { z } from 'zod';\nimport { BeanControllerPageBase, deepExtend, Use, usePrepareArg } from 'zova';\nimport { ZovaJsx } from 'zova-jsx';\nimport { Controller } from 'zova-module-a-bean';\nimport { formMetaFromFormScene } from 'zova-module-a-form';\nimport { $QueryEnsureLoaded } from 'zova-module-a-model';\nimport { ZPage } from 'zova-module-home-base';\n\nimport type { ModelResource } from '../../model/resource.js';\n\nexport const ControllerPageEntrySchemaParams = z.object({\n resource: z.string(),\n id: z.string().optional(),\n formScene: z.string().optional(),\n});\n\n@Controller()\nexport class ControllerPageEntry extends BeanControllerPageBase {\n formMeta: IFormMeta;\n formProvider: IFormProvider;\n formSchema?: ISchemaObjectExtensionField;\n jsxZova: ZovaJsx;\n\n @Use({ beanFullName: 'rest-resource.model.resource' })\n get $$modelResource(): ModelResource {\n return usePrepareArg(this.$params.resource, true);\n }\n\n get resource() {\n return this.$params.resource;\n }\n\n get entryId() {\n return this.$params.id;\n }\n\n get formScene() {\n return (\n (this.$params.formScene as TypeFormScene | undefined) ??\n (isNil(this.entryId) ? 'create' : 'view')\n );\n }\n\n protected async __init__() {\n this.formMeta = this.$computed(() => {\n return formMetaFromFormScene(this.formScene);\n });\n this.formProvider = this.$computed(() => {\n return this.$$modelResource.formProvider;\n });\n this.formSchema = this.$computed(() => {\n return this.$$modelResource.getFormSchema(this.formMeta);\n });\n // jsx\n this._prepareJsx();\n // load schema\n await $QueryEnsureLoaded(() => this.$$modelResource.getFormApiSchemas(this.formMeta)?.sdk);\n }\n\n private _prepareJsx() {\n this.jsxZova = this.bean._newBeanSimple(ZovaJsx, false, this.formProvider.components);\n }\n\n protected render() {\n const blocks = this.formSchema?.rest?.blocks;\n if (!blocks || blocks.length === 0) return;\n const domBlocks: VNode[] = [];\n blocks.forEach((block, index) => {\n const options = deepExtend(\n { key: index },\n {\n resource: this.resource,\n id: this.entryId,\n formScene: this.formScene,\n },\n block.options,\n );\n const domBlock = this.jsxZova.render(block.render!, options);\n if (!domBlock) return;\n if (Array.isArray(domBlock)) {\n domBlocks.push(...domBlock);\n } else {\n domBlocks.push(domBlock);\n }\n });\n return <ZPage>{domBlocks}</ZPage>;\n }\n}\n","import { Virtual } from 'zova-core';\nimport { Controller } from 'zova-module-a-bean';\n\nimport { ControllerPageEntry, ControllerPageEntrySchemaParams } from '../entry/controller.jsx';\n\nexport const ControllerPageEntryCreateSchemaParams = ControllerPageEntrySchemaParams;\n\n@Controller()\n@Virtual()\nexport class ControllerPageEntryCreate extends ControllerPageEntry {}\n","import { VNode } from 'vue';\nimport { z } from 'zod';\nimport { BeanControllerPageBase, deepExtend, Use, usePrepareArg } from 'zova';\nimport { ZovaJsx } from 'zova-jsx';\nimport { Controller } from 'zova-module-a-bean';\nimport { $QueryEnsureLoaded } from 'zova-module-a-model';\nimport { ZPage } from 'zova-module-home-base';\n\nimport type { ModelResource } from '../../model/resource.js';\n\nexport const ControllerPageResourceSchemaParams = z.object({\n resource: z.string(),\n});\n\n@Controller()\nexport class ControllerPageResource extends BeanControllerPageBase {\n jsxZova: ZovaJsx;\n\n @Use({ beanFullName: 'rest-resource.model.resource' })\n get $$modelResource(): ModelResource {\n return usePrepareArg(this.$params.resource, true);\n }\n\n get resource() {\n return this.$params.resource;\n }\n\n protected async __init__() {\n // jsx\n this._prepareJsx();\n // load schema/data\n await $QueryEnsureLoaded(() => this.$$modelResource.apiSchemasSelect.sdk);\n }\n\n private _prepareJsx() {\n this.jsxZova = this.bean._newBeanSimple(ZovaJsx, false);\n }\n\n get schemaRow() {\n return this.$$modelResource.schemaRow;\n }\n\n public render() {\n const blocks = this.schemaRow?.rest?.blocks;\n if (!blocks || blocks.length === 0) return;\n const domBlocks: VNode[] = [];\n blocks.forEach((block, index) => {\n const options = deepExtend(\n { key: index },\n {\n resource: this.resource,\n },\n block.options,\n );\n const domBlock = this.jsxZova.render(block.render!, options);\n if (!domBlock) return;\n if (Array.isArray(domBlock)) {\n domBlocks.push(...domBlock);\n } else {\n domBlocks.push(domBlock);\n }\n });\n return <ZPage>{domBlocks}</ZPage>;\n }\n}\n","import { createZovaComponentPage } from 'zova';\nimport { ControllerPageEntry } from '../../page/entry/controller.jsx';\nimport { ControllerPageEntrySchemaParams } from '../../page/entry/controller.jsx';\nexport let NSControllerPageEntry;\n(function (_NSControllerPageEntry) {\n const paramsSchema = _NSControllerPageEntry.paramsSchema = ControllerPageEntrySchemaParams;\n})(NSControllerPageEntry || (NSControllerPageEntry = {}));\nexport const ZPageEntry = createZovaComponentPage(ControllerPageEntry, undefined, undefined);","import { createZovaComponentPage } from 'zova';\nimport { ControllerPageEntryCreate } from '../../page/entryCreate/controller.jsx';\nimport { ControllerPageEntryCreateSchemaParams } from '../../page/entryCreate/controller.jsx';\nexport let NSControllerPageEntryCreate;\n(function (_NSControllerPageEntryCreate) {\n const paramsSchema = _NSControllerPageEntryCreate.paramsSchema = ControllerPageEntryCreateSchemaParams;\n})(NSControllerPageEntryCreate || (NSControllerPageEntryCreate = {}));\nexport const ZPageEntryCreate = createZovaComponentPage(ControllerPageEntryCreate, undefined, undefined);","import { createZovaComponentPage } from 'zova';\nimport { ControllerPageResource } from '../../page/resource/controller.jsx';\nimport { ControllerPageResourceSchemaParams } from '../../page/resource/controller.jsx';\nexport let NSControllerPageResource;\n(function (_NSControllerPageResource) {\n const paramsSchema = _NSControllerPageResource.paramsSchema = ControllerPageResourceSchemaParams;\n})(NSControllerPageResource || (NSControllerPageResource = {}));\nexport const ZPageResource = createZovaComponentPage(ControllerPageResource, undefined, undefined);","export const resourceRouteMeta = {\n tabKey: resourceTabKey,\n componentKey: resourceTabKey,\n ssrProfile: 'session'\n};\nexport function resourceTabKey(route) {\n return `/rest/resource/${encodeURIComponent(route.params.resource)}`;\n}","import { ZPageEntry } from './.metadata/page/entry.js';\nimport { ZPageEntryCreate } from './.metadata/page/entryCreate.js';\nimport { ZPageResource } from './.metadata/page/resource.js';\nimport { resourceRouteMeta, resourceTabKey } from './lib/resourceRouteMeta.js';\nexport const routes = [{\n name: 'resource',\n path: ':resource',\n component: ZPageResource,\n meta: resourceRouteMeta\n}, {\n name: 'entryCreate',\n path: ':resource/create',\n component: ZPageEntryCreate,\n meta: {\n tabKey: resourceTabKey,\n ssrProfile: 'session'\n }\n}, {\n name: 'entry',\n path: ':resource/:id/:formScene?',\n component: ZPageEntry,\n meta: {\n tabKey: resourceTabKey,\n ssrProfile: 'session'\n }\n}];","var _dec, _dec2, _class;\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\n// eslint-disable\n/** model: begin */\nexport * from '../model/resource.js';\nimport 'zova-module-a-model';\n/** model: end */\n/** model: begin */\nimport { ModelResource } from '../model/resource.js';\nimport 'zova';\n/** model: end */\n/** controller: begin */\nexport * from '../page/entry/controller.jsx';\nexport * from '../page/entryCreate/controller.jsx';\nexport * from '../page/resource/controller.jsx';\nimport 'zova';\n/** controller: end */\n/** controller: begin */\nimport { ControllerPageEntry } from '../page/entry/controller.jsx';\nimport { ControllerPageEntryCreate } from '../page/entryCreate/controller.jsx';\nimport { ControllerPageResource } from '../page/resource/controller.jsx';\nimport 'zova';\n/** controller: end */\n/** pages: begin */\nexport * from './page/entry.js';\nimport { NSControllerPageEntry } from './page/entry.js';\nexport * from './page/entryCreate.js';\nimport { NSControllerPageEntryCreate } from './page/entryCreate.js';\nexport * from './page/resource.js';\nimport { NSControllerPageResource } from './page/resource.js';\nexport * from '../routes.js';\nimport 'zova';\nexport const pagePathSchemas = {};\nexport const pageNameSchemas = {\n 'rest-resource:entry': {\n params: NSControllerPageEntry.paramsSchema\n },\n 'rest-resource:entryCreate': {\n params: NSControllerPageEntryCreate.paramsSchema\n },\n 'rest-resource:resource': {\n params: NSControllerPageResource.paramsSchema\n }\n};\n/** pages: end */\n\n/** scope: begin */\nimport { BeanScopeBase } from 'zova';\nimport { Scope } from 'zova-module-a-bean';\nexport let ScopeModuleRestResource = (_dec = Scope(), _dec2 = __z_BeanInfo({\n module: \"rest-resource\"\n}), _dec(_class = _dec2(_class = class ScopeModuleRestResource extends BeanScopeBase {}) || _class) || _class);\nimport 'zova';\n\n/** scope: end */"],"mappings":";;;;;;;;;;;AAAA,SAAgB,2BAA2B,QAAQ,MAAM;CACvD,IAAI,SAAS,KAAA,GAAW,OAAO;CAC/B,OAAO;EACL,GAAG;EACH,MAAM;CACR;AACF;;;ACNA,eAAsB,mBAAmB,SAAS;CAChD,MAAM,QAAQ,mBAAmB;CACjC,MAAM,QAAQ,iBAAiB;CAC/B,MAAM,QAAQ,YAAY;AAC5B;;;ACHA,SAAgB,oBAAoB,KAAK;CACvC,IAAI,IAAI,WAAW,GAAG,MAAM,IAAI,MAAM,2BAA2B;CACjE,MAAM,uBAAO,IAAI,IAAI;CACrB,KAAK,MAAM,MAAM,KAAK;EACpB,IAAI,MAAM,EAAE,KAAK,OAAO,IAAI,MAAM,IAAI,MAAM,8BAA8B;EAC1E,MAAM,MAAM,OAAO,EAAE;EACrB,IAAI,KAAK,IAAI,GAAG,GAAG,MAAM,IAAI,MAAM,8BAA8B,KAAK;EACtE,KAAK,IAAI,GAAG;CACd;CACA,OAAO,CAAC,GAAG,GAAG;AAChB;;;ACXA,IAAI;AAAM,IAAA;AAAO,IAAA;AAAO,IAAA;AAAO,IAAA;AAAQ,IAAA;AAAS,IAAA;AAChD,SAAS,2BAA2B,GAAG,GAAG,GAAG,GAAG;CAAE,KAAK,OAAO,eAAe,GAAG,GAAG;EAAE,YAAY,EAAE;EAAY,cAAc,EAAE;EAAc,UAAU,EAAE;EAAU,OAAO,EAAE,cAAc,EAAE,YAAY,KAAK,CAAC,IAAI,KAAK;CAAE,CAAC;AAAG;AAC7N,SAAS,4BAA0B,GAAG,GAAG,GAAG,GAAG,GAAG;CAAE,IAAI,IAAI,CAAC;CAAG,OAAO,OAAO,KAAK,CAAC,CAAC,CAAC,QAAQ,SAAU,GAAG;EAAE,EAAE,KAAK,EAAE;CAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC,EAAE,eAAe,WAAW,KAAK,EAAE,iBAAiB,EAAE,WAAW,CAAC,IAAI,IAAI,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,SAAU,GAAG,GAAG;EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,KAAK;CAAG,GAAG,CAAC,GAAG,KAAK,KAAK,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE,cAAc,KAAK,IAAI,KAAK,MAAM,EAAE,eAAe,OAAO,eAAe,GAAG,GAAG,CAAC,GAAG,QAAQ;AAAG;AAWlgB,IAAW,iBAAiB,SAAO,MAAM,EACvC,gBAAgB,KAClB,CAAC,GAAG,UAAQ,SAAa,EACvB,QAAQ,gBACV,CAAC,GAAG,UAAQ,SAAS,WAAW,GAAG,UAAQ,QAAQ,SAAS,eAAe,OAAO,wBAAwB,cAAc,SAAS,mBAAmB,GAAG,OAAK,WAAS,QAAM,YAAU,YAAU,MAAM,sBAAsB,cAAc;CACvO,YAAY,GAAG,MAAM;EACnB,MAAM,GAAG,IAAI;EACb,KAAK,WAAW,KAAK;EACrB,KAAK,cAAc,KAAK;EACxB,KAAK,cAAc,KAAK;EACxB,KAAK,eAAe,KAAK;EACzB,KAAK,aAAa,KAAK;EACvB,KAAK,eAAe,KAAK;EACzB,KAAK,eAAe,KAAK;EACzB,KAAK,eAAe,KAAK;EACzB,KAAK,cAAc,KAAK;EACxB,KAAK,YAAY,KAAK;EACtB,KAAK,cAAc,KAAK;EACxB,2BAA2B,MAAM,kBAAkB,aAAa,IAAI;CACtE;CACA,MAAM,SAAS,UAAU;EACvB,IAAI,CAAC,UAAU,MAAM,IAAI,MAAM,wBAAwB;EACvD,MAAM,MAAM,SAAS,QAAQ;EAC7B,KAAK,WAAW;EAChB,KAAK,cAAc,KAAK,gBAAgB;GACtC,IAAI,KAAK,KAAK,wBAAwB;GAEtC,OADoB,KAAK,KAAK,eAAe,KAAK,QAC3C,CAAA,CAAY;EACrB,CAAC;EACD,KAAK,eAAe,KAAK,gBAAgB;GACvC,OAAO,KAAK,eAAe,OAAO;EACpC,CAAC;EACD,KAAK,aAAa,KAAK,gBAAgB;GACrC,OAAO,KAAK,eAAe;EAC7B,CAAC;EACD,KAAK,eAAe,KAAK,gBAAgB;GACvC,OAAO,KAAK,iBAAiB;EAC/B,CAAC;EACD,KAAK,eAAe,KAAK,gBAAgB;GACvC,OAAO,KAAK,iBAAiB;EAC/B,CAAC;EACD,KAAK,eAAe,KAAK,gBAAgB;GACvC,OAAO,KAAK,iBAAiB;EAC/B,CAAC;EACD,KAAK,cAAc,KAAK,gBAAgB;GACtC,OAAO,KAAK,iBAAiB;EAC/B,CAAC;EACD,KAAK,YAAY,KAAK,gBAAgB;GACpC,OAAO,KAAK,iBAAiB;EAC/B,CAAC;EACD,KAAK,cAAc,KAAK,gBAAgB;GACtC,OAAO,KAAK,iBAAiB;EAC/B,CAAC;EAED,MAAM,KAAK,WAAW;CACxB;CACA,cAAc,YAAY,OAAO;EAC/B,OAAO,KAAK,cAAc;GACxB,UAAU,KAAK,UAAU,YAAY,KAAK;GAC1C,SAAS,YAAY;IACnB,MAAM,UAAU,aAAa,GAAG,KAAK,YAAY,GAAG,eAAe,KAAK;IACxE,OAAO,KAAK,OAAO,IAAI,KAAK,IAAI,KAAK,uBAAuB,OAAO,GAAG,KAAK,IAAI,KAAK,uBAAuB,KAAA,GAAW,EACpH,MACF,CAAC,CAAC;GACJ;EACF,CAAC;CACH;CACA,OAAO,OAAO;EACZ,OAAO,KAAK,cAAc,KAAA,GAAW,KAAK;CAC5C;CACA,MAAM,QAAQ,SAAS;EACrB,OAAO,KAAK,cAAc;GACxB,UAAU,KAAK,UAAU,MAAM;GAC/B;EACF,CAAC;CACH;CACA,UAAU,SAAS;EACjB,MAAM,EACJ,IACA,QACA,SACA,SACE;EACJ,IAAI,MAAM,EAAE,GAAG,MAAM,IAAI,MAAM,qBAAqB;EACpD,OAAO,KAAK,cAAc;GACxB,UAAU,KAAK,QAAQ,IAAI,MAAM;GACjC;GACA;EACF,CAAC;CACH;CACA,KAAK,IAAI;EACP,OAAO,KAAK,UAAU;GACpB;GACA,QAAQ;GACR,SAAS,YAAY;IAInB,OAAO,MAHW,KAAK,OAAO,IAAI,KAAK,IAAI,KAAK,uBAAuB,GAAG,KAAK,YAAY,OAAO,EAChG,GACF,CAAC,GAAG,KAAK,IAAI,KAAK,uBAAuB,CAAC,KAC5B;GAChB;EACF,CAAC;CACH;CACA,SAAS;EACP,OAAO,KAAK,iBAAiB;GAC3B,aAAa,CAAC,QAAQ;GACtB,YAAY,OAAM,WAAU;IAC1B,OAAO,KAAK,OAAO,KAAK,KAAK,IAAI,KAAK,uBAAuB,KAAK,WAAW,GAAG,QAAQ,KAAK,IAAI,KAAK,uBAAuB,CAAC;GAChI;GACA,WAAW,YAAY;IACrB,MAAM,mBAAmB,EACvB,wBAAwB,KAAK,mBAAmB,EAC9C,UAAU,CAAC,QAAQ,EACrB,CAAC,EACH,CAAC;GACH;EACF,CAAC;CACH;CACA,aAAa,SAAS;EACpB,MAAM,EACJ,IACA,QACA,YACA,WACA,mBAAmB,SACjB;EACJ,IAAI,MAAM,EAAE,GAAG,MAAM,IAAI,MAAM,qBAAqB;EACpD,OAAO,KAAK,iBAAiB;GAC3B,aAAa,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,GAAG,UAAU;GACrD;GACA,WAAW,OAAO,MAAM,WAAW,YAAY;IAC7C,MAAM,mBAAmB;KACvB,kBAAkB,yBAAyB,KAAK,mBAAmB,EACjE,UAAU,CAAC,QAAQ,EACrB,CAAC,IAAI,KAAA;KACL,sBAAsB,KAAK,mBAAmB,EAC5C,UAAU,KAAK,YAAY,EAAE,EAC/B,CAAC;KACD,iBAAiB,YAAY,MAAM,WAAW,OAAO;IACvD,CAAC;GACH;EACF,CAAC;CACH;CACA,iBAAiB,SAAS;EACxB,MAAM,EACJ,QACA,QACA,YACA,WACA,mBAAmB,SACjB;EACJ,OAAO,KAAK,iBAAiB;GAC3B,aAAa;IAAC;IAAY;IAAQ;GAAU;GAC5C,YAAY,OAAM,cAAa;IAC7B,KAAK,wBAAwB,QAAQ,SAAS;IAC9C,OAAO,MAAM,WAAW,SAAS;GACnC;GACA,WAAW,OAAO,MAAM,WAAW,YAAY;IAC7C,MAAM,MAAM,KAAK,wBAAwB,QAAQ,SAAS;IAC1D,MAAM,mBAAmB;KACvB,kBAAkB,yBAAyB,KAAK,mBAAmB,EACjE,UAAU,CAAC,QAAQ,EACrB,CAAC,IAAI,KAAA;KACL,gBAAgB,YAAY;MAC1B,MAAM,QAAQ,IAAI,IAAI,KAAI,OAAM,KAAK,mBAAmB,EACtD,UAAU,KAAK,YAAY,EAAE,EAC/B,CAAC,CAAC,CAAC;KACL;KACA,iBAAiB,YAAY,MAAM,WAAW,OAAO;IACvD,CAAC;GACH;EACF,CAAC;CACH;CACA,aAAa;EACX,OAAO,KAAK,iBAAiB;GAC3B,QAAQ;GACR,SAAQ,SAAQ,KAAK;GACrB,YAAY,OAAM,SAAQ;IACxB,OAAO,KAAK,OAAO,KAAK,KAAK,IAAI,KAAK,uBAAuB,GAAG,KAAK,YAAY,aAAa,GAAG,MAAM,KAAK,IAAI,KAAK,uBAAuB,CAAC;GAC/I;EACF,CAAC;CACH;CACA,OAAO,IAAI;EACT,OAAO,KAAK,aAAa;GACvB;GACA,QAAQ;GACR,YAAY,OAAM,WAAU;IAC1B,OAAO,KAAK,OAAO,MAAM,KAAK,IAAI,KAAK,uBAAuB,GAAG,KAAK,YAAY,OAAO,EACvF,GACF,CAAC,GAAG,QAAQ,KAAK,IAAI,KAAK,uBAAuB,CAAC;GACpD;EACF,CAAC;CACH;CACA,OAAO,IAAI;EACT,OAAO,KAAK,aAAa;GACvB;GACA,QAAQ;GACR,YAAY,OAAM,SAAQ;IACxB,MAAM,UAAU,KAAK,IAAI,KAAK,uBAAuB,GAAG,KAAK,YAAY,OAAO,EAC9E,GACF,CAAC;IACD,MAAM,YAAY,2BAA2B,KAAK,IAAI,KAAK,uBAAuB,GAAG,IAAI;IACzF,OAAO,KAAK,OAAO,OAAO,SAAS,SAAS;GAC9C;EACF,CAAC;CACH;CACA,IAAI,mBAAmB;EACrB,OAAO,KAAK,KAAK,iBAAiB,KAAK,aAAa,KAAK;CAC3D;CACA,IAAI,iBAAiB;EACnB,OAAO,KAAK,KAAK,iBAAiB,GAAG,KAAK,YAAY,OAAO,KAAK;CACpE;CACA,IAAI,mBAAmB;EACrB,OAAO,KAAK,KAAK,iBAAiB,KAAK,aAAa,MAAM;CAC5D;CACA,IAAI,mBAAmB;EACrB,OAAO,KAAK,KAAK,iBAAiB,GAAG,KAAK,YAAY,OAAO,OAAO;CACtE;CACA,IAAI,mBAAmB;EACrB,OAAO,KAAK,KAAK,iBAAiB,GAAG,KAAK,YAAY,OAAO,QAAQ;CACvE;CACA,cAAc,UAAU;EACtB,MAAM,YAAY,SAAS,aAAa,sBAAsB,QAAQ;EACtE,IAAI,cAAc,QAAQ,OAAO,KAAK;EACtC,IAAI,cAAc,UAAU,OAAO,KAAK;EACxC,IAAI,cAAc,QAAQ,OAAO,KAAK;CACxC;CACA,kBAAkB,UAAU;EAC1B,MAAM,YAAY,SAAS,aAAa,sBAAsB,QAAQ;EACtE,IAAI,cAAc,QAAQ,OAAO,KAAK;EACtC,IAAI,cAAc,UAAU,OAAO,KAAK;EACxC,IAAI,cAAc,QAAQ,OAAO,KAAK;EACtC,MAAM,IAAI,MAAM,oBAAoB;CACtC;CACA,sBAAsB,UAAU,IAAI;EAClC,IAAI,SAAS,aAAa,QAAQ;EAClC,IAAI,SAAS,aAAa,UACxB,OAAO,KAAK,OAAO;OACd,IAAI,SAAS,aAAa,UAC/B,OAAO,KAAK,OAAO,EAAE;CAEzB;CACA,YAAY,UAAU,IAAI;EACxB,IAAI,SAAS,aAAa,UAAU,SAAS,aAAa,UACxD,OAAO,KAAK,yBAAyB,KAAK,YAAY;EAExD,IAAI,MAAM,EAAE,GAAG,OAAO,KAAA;EACtB,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC;CACvB;CACA,yBAAyB,YAAY;EACnC,IAAI,CAAC,YAAY;EACjB,IAAI,OAAO,eAAe,UACxB,aAAa,WAAW;EAE1B,OAAO,KAAK,KAAK,sBAAsB,UAAU;CACnD;CACA,wBAAwB,QAAQ,WAAW;EACzC,OAAO,oBAAoB,OAAO,SAAS,CAAC;CAC9C;CACA,UAAU,YAAY,OAAO;EAC3B,OAAO;GAAC;GAAU,cAAc;GAAI,QAAQ,KAAK;EAAC;CACpD;CACA,YAAY,IAAI;EACd,IAAI,MAAM,EAAE,GAAG,MAAM,IAAI,MAAM,qBAAqB;EACpD,OAAO,CAAC,QAAQ,EAAE;CACpB;CACA,QAAQ,IAAI,QAAQ;EAClB,IAAI,MAAM,EAAE,GAAG,MAAM,IAAI,MAAM,qBAAqB;EACpD,OAAO;GAAC;GAAQ;GAAI;EAAM;CAC5B;CACA,MAAM,aAAa;EACjB,MAAM,iBAAiB,MAAM,yBAAyB,KAAK,KAAK,aAAa,KAAK,QAAQ,CAAC;EAC3F,IAAI,CAAC,gBAAgB,MACnB,MAAM,IAAI,MAAM,8BAA8B,KAAK,UAAU;EAE/D,KAAK,cAAc,KAAK,IAAI,KAAK,iBAAiB,KAAK,UAAU,eAAe,KAAK,OAAO;CAC9F;AACF,GAAG,cAAc,4BAA0B,UAAQ,WAAW,kBAAkB,CAAC,SAAO,OAAK,GAAG;CAC9F,cAAc;CACd,YAAY;CACZ,UAAU;CACV,aAAa;AACf,CAAC,GAAG,UAAQ,KAAK,QAAM,KAAK;;;;;;;;;;;;;;;;;;;ACxR6B,SAAAU,UAAAC,GAAA;CAAA,OAAA,OAAAA,MAAA,cAAAC,OAAAC,UAAAC,SAAAC,KAAAJ,CAAA,MAAA,qBAAA,CAAAK,QAAAL,CAAA;AAAA;AAKzD,IAAaM,kCAAkChB,EAAEiB,OAAO;CACtDC,UAAUlB,EAAEmB,OAAO;CACnBC,IAAIpB,EAAEmB,OAAO,CAAC,CAACE,SAAS;CACxBC,WAAWtB,EAAEmB,OAAO,CAAC,CAACE,SAAS;AACjC,CAAC;AAED,IACaE,uBAAmBC,SAD/BlB,WAAW,GAACmB,UAAAC,SAAA,EAAAC,QAAA,gBAAA,CAAA,GAAAC,UAOVzB,IAAI,EAAE0B,cAAc,+BAA+B,CAAC,GAACC,UAAAC,QAAAC,SAAA,eAAAC,QAAA,GAAAC,UAAAH,QAAAC,SAAA,qBAAA,CAAA,CAAA,GAAAR,OAAAW,WAAAV,QAAAU,YAAAC,YAPxD,MACab,4BAA4BtB,uBAAuB;CAAAoC,YAAA,GAAAC,MAAA;EAAA,MAAA,GAAAA,IAAA;EAAA,KAC9DC,WAAQ,KAAA;EAAA,KACRC,eAAY,KAAA;EAAA,KACZC,aAAU,KAAA;EAAA,KACVC,UAAO,KAAA;CAAA;CAEP,IACIC,kBAAiC;EACnC,OAAOvC,cAAc,KAAKwC,QAAQ1B,UAAU,IAAI;CAClD;CAEA,IAAIA,WAAW;EACb,OAAO,KAAK0B,QAAQ1B;CACtB;CAEA,IAAI2B,UAAU;EACZ,OAAO,KAAKD,QAAQxB;CACtB;CAEA,IAAIE,YAAY;EACd,OACG,KAAKsB,QAAQtB,cACbvB,MAAM,KAAK8C,OAAO,IAAI,WAAW;CAEtC;CAEA,MAAgBC,WAAW;EACzB,KAAKP,WAAW,KAAKQ,gBAAgB;GACnC,OAAOxC,sBAAsB,KAAKe,SAAS;EAC7C,CAAC;EACD,KAAKkB,eAAe,KAAKO,gBAAgB;GACvC,OAAO,KAAKJ,gBAAgBH;EAC9B,CAAC;EACD,KAAKC,aAAa,KAAKM,gBAAgB;GACrC,OAAO,KAAKJ,gBAAgBK,cAAc,KAAKT,QAAQ;EACzD,CAAC;EAED,KAAKU,YAAY;EAEjB,MAAMzC,yBAAyB,KAAKmC,gBAAgBO,kBAAkB,KAAKX,QAAQ,CAAC,EAAEY,GAAG;CAC3F;CAEQF,cAAc;EACpB,KAAKP,UAAU,KAAKU,KAAKC,eAAehD,SAAS,OAAO,KAAKmC,aAAac,UAAU;CACtF;CAEUC,SAAS;EACjB,MAAMC,SAAS,KAAKf,YAAYgB,MAAMD;EACtC,IAAI,CAACA,UAAUA,OAAOE,WAAW,GAAG;EACpC,MAAMC,YAAqB,CAAA;EAC3BH,OAAOI,SAASC,OAAOC,UAAU;GAC/B,MAAMC,UAAU7D,WACd,EAAE8D,KAAKF,MAAM,GACb;IACE5C,UAAU,KAAKA;IACfE,IAAI,KAAKyB;IACTvB,WAAW,KAAKA;GAClB,GACAuC,MAAME,OACR;GACA,MAAME,WAAW,KAAKvB,QAAQa,OAAOM,MAAMN,QAASQ,OAAO;GAC3D,IAAI,CAACE,UAAU;GACf,IAAIC,MAAMC,QAAQF,QAAQ,GACxBN,UAAUS,KAAK,GAAGH,QAAQ;QAE1BN,UAAUS,KAAKH,QAAQ;EAE3B,CAAC;EACD,OAAAI,YAAAC,SAAA,MAAA7D,UAAekD,SAAS,IAATA,YAAS,EAAAY,eAAA,CAATZ,SAAS,EAAA,CAAA;CAC1B;AACF,GAACa,4BAAApC,UAAAxB,WAAA,mBAAA;CAAAgB;CAAAE;CAAAI;AAAA,GAAAvB,OAAA8D,yBAAArC,UAAAxB,WAAA,iBAAA,GAAAwB,UAAAxB,SAAA,GAAAwB,UAAA,KAAAD,QAAA,KAAAA;;;;;;;AC3FD,IAAa2C,wCAAwCD;AAErD,IAEaE,6BAAyBC,SAFrCL,WAAW,GAACM,UACZP,QAAQ,GAACQ,UAAAC,SAAA,EAAAC,QAAA,gBAAA,CAAA,GAAAJ,OAAAK,WAAAJ,QAAAI,WAAAH,QAAAG,WADV,MAEaN,kCAAkCH,oBAAoB,CAAA,CAAE,KAAAS,QAAA,KAAAA,QAAA,KAAAA;;;;;;;;;;;;;;;;;;;ACJZ,SAAAS,QAAAC,GAAA;CAAA,OAAA,OAAAA,MAAA,cAAAC,OAAAC,UAAAC,SAAAC,KAAAJ,CAAA,MAAA,qBAAA,CAAAK,QAAAL,CAAA;AAAA;AAKzD,IAAaM,qCAAqCf,EAAEgB,OAAO,EACzDC,UAAUjB,EAAEkB,OAAO,EACrB,CAAC;AAED,IACaC,0BAAsBC,SADlCd,WAAW,GAACe,UAAAC,SAAA,EAAAC,QAAA,gBAAA,CAAA,GAAAC,QAIVrB,IAAI,EAAEsB,cAAc,+BAA+B,CAAC,GAACC,QAAAC,QAAAC,SAAA,eAAAC,QAAA,GAAAC,QAAAH,QAAAC,SAAA,qBAAA,CAAA,CAAA,GAAAR,OAAAW,WAAAV,QAAAU,YAAAC,UAJxD,MACab,+BAA+BlB,uBAAuB;CAAAgC,YAAA,GAAAC,MAAA;EAAA,MAAA,GAAAA,IAAA;EAAA,KACjEC,UAAO,KAAA;CAAA;CAEP,IACIC,kBAAiC;EACnC,OAAOhC,cAAc,KAAKiC,QAAQpB,UAAU,IAAI;CAClD;CAEA,IAAIA,WAAW;EACb,OAAO,KAAKoB,QAAQpB;CACtB;CAEA,MAAgBqB,WAAW;EAEzB,KAAKC,YAAY;EAEjB,MAAMhC,yBAAyB,KAAK6B,gBAAgBI,iBAAiBC,GAAG;CAC1E;CAEQF,cAAc;EACpB,KAAKJ,UAAU,KAAKO,KAAKC,eAAetC,SAAS,KAAK;CACxD;CAEA,IAAIuC,YAAY;EACd,OAAO,KAAKR,gBAAgBQ;CAC9B;CAEOC,SAAS;EACd,MAAMC,SAAS,KAAKF,WAAWG,MAAMD;EACrC,IAAI,CAACA,UAAUA,OAAOE,WAAW,GAAG;EACpC,MAAMC,YAAqB,CAAA;EAC3BH,OAAOI,SAASC,OAAOC,UAAU;GAC/B,MAAMC,UAAUnD,WACd,EAAEoD,KAAKF,MAAM,GACb,EACEnC,UAAU,KAAKA,SACjB,GACAkC,MAAME,OACR;GACA,MAAME,WAAW,KAAKpB,QAAQU,OAAOM,MAAMN,QAASQ,OAAO;GAC3D,IAAI,CAACE,UAAU;GACf,IAAIC,MAAMC,QAAQF,QAAQ,GACxBN,UAAUS,KAAK,GAAGH,QAAQ;QAE1BN,UAAUS,KAAKH,QAAQ;EAE3B,CAAC;EACD,OAAAI,YAAAC,OAAA,MAAApD,QAAeyC,SAAS,IAATA,YAAS,EAAAY,eAAA,CAATZ,SAAS,EAAA,CAAA;CAC1B;AACF,GAACa,0BAAA9B,QAAArB,WAAA,mBAAA;CAAAa;CAAAE;CAAAI;AAAA,GAAApB,OAAAqD,yBAAA/B,QAAArB,WAAA,iBAAA,GAAAqB,QAAArB,SAAA,GAAAqB,QAAA,KAAAD,QAAA,KAAAA;;;AC7DD,IAAW;CACV,SAAU,wBAAwB;CACZ,uBAAuB,eAAe;AAC7D,EAAA,CAAG,0BAA0B,wBAAwB,CAAC,EAAE;AACxD,IAAa,aAAa,wBAAwB,qBAAqB,KAAA,GAAW,KAAA,CAAS;;;ACJ3F,IAAW;CACV,SAAU,8BAA8B;CAClB,6BAA6B,eAAe;AACnE,EAAA,CAAG,gCAAgC,8BAA8B,CAAC,EAAE;AACpE,IAAa,mBAAmB,wBAAwB,2BAA2B,KAAA,GAAW,KAAA,CAAS;;;ACJvG,IAAW;CACV,SAAU,2BAA2B;CACf,0BAA0B,eAAe;AAChE,EAAA,CAAG,6BAA6B,2BAA2B,CAAC,EAAE;AAC9D,IAAa,gBAAgB,wBAAwB,wBAAwB,KAAA,GAAW,KAAA,CAAS;;;ACPjG,IAAa,oBAAoB;CAC/B,QAAQ;CACR,cAAc;CACd,YAAY;AACd;AACA,SAAgB,eAAe,OAAO;CACpC,OAAO,kBAAkB,mBAAmB,MAAM,OAAO,QAAQ;AACnE;;;ACHA,IAAa,SAAS;CAAC;EACrB,MAAM;EACN,MAAM;EACN,WAAW;EACX,MAAM;CACR;CAAG;EACD,MAAM;EACN,MAAM;EACN,WAAW;EACX,MAAM;GACJ,QAAQ;GACR,YAAY;EACd;CACF;CAAG;EACD,MAAM;EACN,MAAM;EACN,WAAW;EACX,MAAM;GACJ,QAAQ;GACR,YAAY;EACd;CACF;AAAC;;;;;ACzBD,IAAI;AAAM,IAAA;AAAO,IAAA;AAgCjB,IAAa,kBAAkB,CAAC;AAChC,IAAa,kBAAkB;CAC7B,uBAAuB,EACrB,QAAQ,sBAAsB,aAChC;CACA,6BAA6B,EAC3B,QAAQ,4BAA4B,aACtC;CACA,0BAA0B,EACxB,QAAQ,yBAAyB,aACnC;AACF;AAMA,IAAW,2BAA2B,OAAO,MAAM,GAAG,QAAQ,SAAa,EACzE,QAAQ,gBACV,CAAC,GAAG,KAAK,SAAS,MAAM,SAAS,MAAM,gCAAgC,cAAc,CAAC,CAAC,KAAK,MAAM,KAAK"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectedIds.d.ts","sourceRoot":"","sources":["../../src/lib/selectedIds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAIpD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,SAAS,aAAa,EAAE,GAAG,aAAa,EAAE,CAUlF"}
|
package/dist/model/resource.d.ts
CHANGED
|
@@ -23,6 +23,13 @@ interface IModelResourceMutationItemOptions<TData = void, TVariables = void> {
|
|
|
23
23
|
onSuccess?: (data: TData, variables: TVariables, context: unknown) => void | Promise<void>;
|
|
24
24
|
invalidateSelect?: boolean;
|
|
25
25
|
}
|
|
26
|
+
interface IModelResourceMutationSelectedOptions<TData = void, TVariables = void> {
|
|
27
|
+
action: string;
|
|
28
|
+
getIds: (variables: TVariables) => readonly TableIdentity[];
|
|
29
|
+
mutationFn: (params: TVariables) => Promise<TData>;
|
|
30
|
+
onSuccess?: (data: TData, variables: TVariables, context: unknown) => void | Promise<void>;
|
|
31
|
+
invalidateSelect?: boolean;
|
|
32
|
+
}
|
|
26
33
|
export declare class ModelResource<Entity = any, EntityCreate = Partial<Entity>, EntityUpdate = Partial<Entity>, EntityDelete = void> extends BeanModelBase {
|
|
27
34
|
resource: string;
|
|
28
35
|
resourceApi: string;
|
|
@@ -44,6 +51,10 @@ export declare class ModelResource<Entity = any, EntityCreate = Partial<Entity>,
|
|
|
44
51
|
view(id: TableIdentity): import("zova-module-a-model").ModelUseQueryReturnType<Entity | null, Error>;
|
|
45
52
|
create(): import("vue").UnwrapNestedRefs<import("@tanstack/vue-query").UseMutationReturnType<void, Error, EntityCreate, unknown>>;
|
|
46
53
|
mutationItem<TData = void, TVariables = void>(options: IModelResourceMutationItemOptions<TData, TVariables>): import("vue").UnwrapNestedRefs<import("@tanstack/vue-query").UseMutationReturnType<TData, Error, TVariables, unknown>>;
|
|
54
|
+
mutationSelected<TData = void, TVariables = void>(options: IModelResourceMutationSelectedOptions<TData, TVariables>): import("vue").UnwrapNestedRefs<import("@tanstack/vue-query").UseMutationReturnType<TData, Error, TVariables, unknown>>;
|
|
55
|
+
deleteBulk(): import("vue").UnwrapNestedRefs<import("@tanstack/vue-query").UseMutationReturnType<void, Error, {
|
|
56
|
+
ids: readonly TableIdentity[];
|
|
57
|
+
}, unknown>>;
|
|
47
58
|
update(id: TableIdentity): import("vue").UnwrapNestedRefs<import("@tanstack/vue-query").UseMutationReturnType<void, Error, EntityUpdate, unknown>>;
|
|
48
59
|
delete(id: TableIdentity): import("vue").UnwrapNestedRefs<import("@tanstack/vue-query").UseMutationReturnType<void, Error, EntityDelete, unknown>>;
|
|
49
60
|
get apiSchemasSelect(): import("zova-module-a-openapi").IOpenapiSchemas;
|
|
@@ -56,6 +67,7 @@ export declare class ModelResource<Entity = any, EntityCreate = Partial<Entity>,
|
|
|
56
67
|
getFormMutationSubmit(formMeta: IFormMeta, id?: TableIdentity): DataMutation | undefined;
|
|
57
68
|
getFormData(formMeta: IFormMeta, id?: TableIdentity): Entity | EntityCreate | EntityUpdate | undefined;
|
|
58
69
|
getQueryDataDefaultValue(schemaName?: SchemaObject | string): EntityCreate | undefined;
|
|
70
|
+
private _getMutationSelectedIds;
|
|
59
71
|
protected keySelect(actionPath?: string, query?: ITableQuery): readonly ["select", string, string];
|
|
60
72
|
protected keyItemRoot(id: TableIdentity): readonly ["item", TableIdentity];
|
|
61
73
|
protected keyItem(id: TableIdentity, action: string): readonly ["item", TableIdentity, string];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/model/resource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACpG,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,2BAA2B,EAC3B,WAAW,EACX,SAAS,EACT,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAsB,aAAa,EAAS,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAA2B,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/model/resource.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { TableIdentity } from 'table-identity';
|
|
2
|
+
|
|
3
|
+
import { isNil } from '@cabloy/utils';
|
|
4
|
+
|
|
5
|
+
export function validateSelectedIds(ids: readonly TableIdentity[]): TableIdentity[] {
|
|
6
|
+
if (ids.length === 0) throw new Error('selected ids cannot empty');
|
|
7
|
+
const keys = new Set<string>();
|
|
8
|
+
for (const id of ids) {
|
|
9
|
+
if (isNil(id) || id === '') throw new Error('selected row id cannot empty');
|
|
10
|
+
const key = String(id);
|
|
11
|
+
if (keys.has(key)) throw new Error(`duplicate selected row id: ${key}`);
|
|
12
|
+
keys.add(key);
|
|
13
|
+
}
|
|
14
|
+
return [...ids];
|
|
15
|
+
}
|
package/src/model/resource.ts
CHANGED
|
@@ -18,6 +18,7 @@ import { ScopeModuleAOpenapi, SymbolOpenapiSchemaName } from 'zova-module-a-open
|
|
|
18
18
|
|
|
19
19
|
import { prepareDeleteRequestConfig } from '../lib/deleteRequest.js';
|
|
20
20
|
import { runMutationSuccess } from '../lib/mutationSuccess.js';
|
|
21
|
+
import { validateSelectedIds } from '../lib/selectedIds.js';
|
|
21
22
|
|
|
22
23
|
export interface IModelOptionsResource extends IDecoratorModelOptions {}
|
|
23
24
|
|
|
@@ -40,6 +41,14 @@ interface IModelResourceMutationItemOptions<TData = void, TVariables = void> {
|
|
|
40
41
|
invalidateSelect?: boolean;
|
|
41
42
|
}
|
|
42
43
|
|
|
44
|
+
interface IModelResourceMutationSelectedOptions<TData = void, TVariables = void> {
|
|
45
|
+
action: string;
|
|
46
|
+
getIds: (variables: TVariables) => readonly TableIdentity[];
|
|
47
|
+
mutationFn: (params: TVariables) => Promise<TData>;
|
|
48
|
+
onSuccess?: (data: TData, variables: TVariables, context: unknown) => void | Promise<void>;
|
|
49
|
+
invalidateSelect?: boolean;
|
|
50
|
+
}
|
|
51
|
+
|
|
43
52
|
@Model<IModelOptionsResource>({
|
|
44
53
|
enableSelector: true,
|
|
45
54
|
})
|
|
@@ -144,7 +153,7 @@ export class ModelResource<
|
|
|
144
153
|
this.sys.util.apiActionPathTranslate(`${this.resourceApi}/:id`, { id }),
|
|
145
154
|
this.sys.util.apiActionConfigPrepare(),
|
|
146
155
|
);
|
|
147
|
-
return res ?? null;
|
|
156
|
+
return (res as Entity | null) ?? null;
|
|
148
157
|
},
|
|
149
158
|
});
|
|
150
159
|
}
|
|
@@ -187,6 +196,47 @@ export class ModelResource<
|
|
|
187
196
|
});
|
|
188
197
|
}
|
|
189
198
|
|
|
199
|
+
mutationSelected<TData = void, TVariables = void>(
|
|
200
|
+
options: IModelResourceMutationSelectedOptions<TData, TVariables>,
|
|
201
|
+
) {
|
|
202
|
+
const { action, getIds, mutationFn, onSuccess, invalidateSelect = true } = options;
|
|
203
|
+
return this.$useMutationData<TData, TVariables>({
|
|
204
|
+
mutationKey: ['selected', action, 'mutation'],
|
|
205
|
+
mutationFn: async variables => {
|
|
206
|
+
this._getMutationSelectedIds(getIds, variables);
|
|
207
|
+
return await mutationFn(variables);
|
|
208
|
+
},
|
|
209
|
+
onSuccess: async (data, variables, context) => {
|
|
210
|
+
const ids = this._getMutationSelectedIds(getIds, variables);
|
|
211
|
+
await runMutationSuccess({
|
|
212
|
+
invalidateSelect: invalidateSelect
|
|
213
|
+
? () => this.$invalidateQueries({ queryKey: ['select'] })
|
|
214
|
+
: undefined,
|
|
215
|
+
invalidateItem: async () => {
|
|
216
|
+
await Promise.all(
|
|
217
|
+
ids.map(id => this.$invalidateQueries({ queryKey: this.keyItemRoot(id) })),
|
|
218
|
+
);
|
|
219
|
+
},
|
|
220
|
+
onSuccess: () => onSuccess?.(data, variables, context),
|
|
221
|
+
});
|
|
222
|
+
},
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
deleteBulk() {
|
|
227
|
+
return this.mutationSelected<void, { ids: readonly TableIdentity[] }>({
|
|
228
|
+
action: 'delete',
|
|
229
|
+
getIds: body => body.ids,
|
|
230
|
+
mutationFn: async body => {
|
|
231
|
+
return this.$fetch.post<any, void, { ids: readonly TableIdentity[] }>(
|
|
232
|
+
this.sys.util.apiActionPathTranslate(`${this.resourceApi}/bulk/delete`),
|
|
233
|
+
body,
|
|
234
|
+
this.sys.util.apiActionConfigPrepare(),
|
|
235
|
+
);
|
|
236
|
+
},
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
|
|
190
240
|
update(id: TableIdentity) {
|
|
191
241
|
return this.mutationItem<void, EntityUpdate>({
|
|
192
242
|
id,
|
|
@@ -276,6 +326,13 @@ export class ModelResource<
|
|
|
276
326
|
return this.$sdk.getSchemaDefaultValue(schemaName) as EntityCreate | undefined;
|
|
277
327
|
}
|
|
278
328
|
|
|
329
|
+
private _getMutationSelectedIds<TVariables>(
|
|
330
|
+
getIds: (variables: TVariables) => readonly TableIdentity[],
|
|
331
|
+
variables: TVariables,
|
|
332
|
+
) {
|
|
333
|
+
return validateSelectedIds(getIds(variables));
|
|
334
|
+
}
|
|
335
|
+
|
|
279
336
|
protected keySelect(actionPath?: string, query?: ITableQuery) {
|
|
280
337
|
return ['select', actionPath ?? '', hashkey(query)] as const;
|
|
281
338
|
}
|