@postxl/generators 1.12.2 → 1.13.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.
- package/dist/backend-ai/ai.generator.d.ts +18 -0
- package/dist/backend-ai/ai.generator.js +174 -0
- package/dist/backend-ai/ai.generator.js.map +1 -0
- package/dist/backend-ai/generators/ai-agent-service.generator.d.ts +4 -0
- package/dist/backend-ai/generators/ai-agent-service.generator.js +264 -0
- package/dist/backend-ai/generators/ai-agent-service.generator.js.map +1 -0
- package/dist/backend-ai/generators/ai-cache-service.generator.d.ts +1 -0
- package/dist/backend-ai/generators/ai-cache-service.generator.js +110 -0
- package/dist/backend-ai/generators/ai-cache-service.generator.js.map +1 -0
- package/dist/backend-ai/generators/ai-config.generator.d.ts +1 -0
- package/dist/backend-ai/generators/ai-config.generator.js +27 -0
- package/dist/backend-ai/generators/ai-config.generator.js.map +1 -0
- package/dist/backend-ai/generators/ai-module.generator.d.ts +2 -0
- package/dist/backend-ai/generators/ai-module.generator.js +89 -0
- package/dist/backend-ai/generators/ai-module.generator.js.map +1 -0
- package/dist/backend-ai/generators/ai-route.generator.d.ts +1 -0
- package/dist/backend-ai/generators/ai-route.generator.js +29 -0
- package/dist/backend-ai/generators/ai-route.generator.js.map +1 -0
- package/dist/backend-ai/generators/ai-tools-service.generator.d.ts +4 -0
- package/dist/backend-ai/generators/ai-tools-service.generator.js +222 -0
- package/dist/backend-ai/generators/ai-tools-service.generator.js.map +1 -0
- package/dist/backend-ai/generators/model-provider-interface.generator.d.ts +1 -0
- package/dist/backend-ai/generators/model-provider-interface.generator.js +48 -0
- package/dist/backend-ai/generators/model-provider-interface.generator.js.map +1 -0
- package/dist/backend-ai/generators/openai-model-provider-service.generator.d.ts +1 -0
- package/dist/backend-ai/generators/openai-model-provider-service.generator.js +128 -0
- package/dist/backend-ai/generators/openai-model-provider-service.generator.js.map +1 -0
- package/dist/backend-ai/index.d.ts +4 -0
- package/dist/backend-ai/index.js +40 -0
- package/dist/backend-ai/index.js.map +1 -0
- package/dist/backend-core/generators/main.generator.js +4 -3
- package/dist/backend-core/generators/main.generator.js.map +1 -1
- package/dist/backend-e2e/backend-e2e.generator.js +4 -4
- package/dist/backend-e2e/backend-e2e.generator.js.map +1 -1
- package/dist/backend-import/generators/detect-delta/detect-delta-functions.generator.js +1 -1
- package/dist/backend-router-trpc/generators/app-routes.generator.js +3 -1
- package/dist/backend-router-trpc/generators/app-routes.generator.js.map +1 -1
- package/dist/backend-router-trpc/generators/trpc-plugin.generator.js +3 -0
- package/dist/backend-router-trpc/generators/trpc-plugin.generator.js.map +1 -1
- package/dist/backend-router-trpc/generators/trpc-router-module.generator.js +2 -1
- package/dist/backend-router-trpc/generators/trpc-router-module.generator.js.map +1 -1
- package/dist/backend-router-trpc/generators/trpc-shared.generator.js +7 -1
- package/dist/backend-router-trpc/generators/trpc-shared.generator.js.map +1 -1
- package/dist/backend-router-trpc/router-trpc.generator.d.ts +2 -1
- package/dist/backend-router-trpc/router-trpc.generator.js +2 -0
- package/dist/backend-router-trpc/router-trpc.generator.js.map +1 -1
- package/dist/backend-seed/seed.generator.js +10 -1
- package/dist/backend-seed/seed.generator.js.map +1 -1
- package/dist/base/template/scripts/setup.sh +9 -4
- package/dist/base/template/sonar-project.properties +9 -1
- package/dist/devops/generators/bitbucket-pipelines-yml.generator.js +1 -0
- package/dist/devops/generators/bitbucket-pipelines-yml.generator.js.map +1 -1
- package/dist/devops/generators/e2e-yml.generator.js +35 -10
- package/dist/devops/generators/e2e-yml.generator.js.map +1 -1
- package/dist/devops/generators/jenkinsfile.generator.js +25 -1
- package/dist/devops/generators/jenkinsfile.generator.js.map +1 -1
- package/dist/e2e/template/e2e/specs/example.spec.ts-snapshots/Navigate-to-homepage-and-take-snapshot-1-chromium-linux.png +0 -0
- package/dist/frontend-actions/actions.generator.d.ts +9 -0
- package/dist/frontend-actions/actions.generator.js +111 -0
- package/dist/frontend-actions/actions.generator.js.map +1 -0
- package/dist/frontend-actions/generators/ai-action-text.utils.generator.d.ts +1 -0
- package/dist/frontend-actions/generators/ai-action-text.utils.generator.js +52 -0
- package/dist/frontend-actions/generators/ai-action-text.utils.generator.js.map +1 -0
- package/dist/frontend-actions/generators/ai-assistant-store.generator.d.ts +1 -0
- package/dist/frontend-actions/generators/ai-assistant-store.generator.js +230 -0
- package/dist/frontend-actions/generators/ai-assistant-store.generator.js.map +1 -0
- package/dist/frontend-actions/generators/ai-sidebar-content.generator.d.ts +1 -0
- package/dist/frontend-actions/generators/ai-sidebar-content.generator.js +139 -0
- package/dist/frontend-actions/generators/ai-sidebar-content.generator.js.map +1 -0
- package/dist/frontend-actions/generators/ai-sidepane.generator.d.ts +1 -0
- package/dist/frontend-actions/generators/ai-sidepane.generator.js +98 -0
- package/dist/frontend-actions/generators/ai-sidepane.generator.js.map +1 -0
- package/dist/frontend-actions/generators/base-global-actions.generator.d.ts +1 -0
- package/dist/frontend-actions/generators/base-global-actions.generator.js +405 -0
- package/dist/frontend-actions/generators/base-global-actions.generator.js.map +1 -0
- package/dist/frontend-actions/generators/command-palette-action.generator.d.ts +1 -0
- package/dist/frontend-actions/generators/command-palette-action.generator.js +87 -0
- package/dist/frontend-actions/generators/command-palette-action.generator.js.map +1 -0
- package/dist/frontend-actions/generators/command-palette-store.generator.d.ts +1 -0
- package/dist/frontend-actions/generators/command-palette-store.generator.js +288 -0
- package/dist/frontend-actions/generators/command-palette-store.generator.js.map +1 -0
- package/dist/frontend-actions/generators/command-palette.generator.d.ts +5 -0
- package/dist/frontend-actions/generators/command-palette.generator.js +332 -0
- package/dist/frontend-actions/generators/command-palette.generator.js.map +1 -0
- package/dist/frontend-actions/generators/filter-utils.generator.d.ts +1 -0
- package/dist/frontend-actions/generators/filter-utils.generator.js +50 -0
- package/dist/frontend-actions/generators/filter-utils.generator.js.map +1 -0
- package/dist/frontend-actions/generators/sidepanel-toggle.generator.d.ts +1 -0
- package/dist/frontend-actions/generators/sidepanel-toggle.generator.js +37 -0
- package/dist/frontend-actions/generators/sidepanel-toggle.generator.js.map +1 -0
- package/dist/frontend-actions/index.d.ts +4 -0
- package/dist/frontend-actions/index.js +40 -0
- package/dist/frontend-actions/index.js.map +1 -0
- package/dist/frontend-admin/admin.generator.d.ts +3 -1
- package/dist/frontend-admin/admin.generator.js +8 -1
- package/dist/frontend-admin/admin.generator.js.map +1 -1
- package/dist/frontend-admin/generators/admin-global-actions.generator.d.ts +4 -0
- package/dist/frontend-admin/generators/admin-global-actions.generator.js +152 -0
- package/dist/frontend-admin/generators/admin-global-actions.generator.js.map +1 -0
- package/dist/frontend-admin/generators/comment-sidebar.generator.js +5 -3
- package/dist/frontend-admin/generators/comment-sidebar.generator.js.map +1 -1
- package/dist/frontend-admin/generators/detail-sidebar.generator.js +40 -24
- package/dist/frontend-admin/generators/detail-sidebar.generator.js.map +1 -1
- package/dist/frontend-admin/generators/model-admin-page.generator.js +172 -11
- package/dist/frontend-admin/generators/model-admin-page.generator.js.map +1 -1
- package/dist/frontend-admin/utils.d.ts +1 -0
- package/dist/frontend-admin/utils.js +1 -0
- package/dist/frontend-admin/utils.js.map +1 -1
- package/dist/frontend-core/generators/tsconfig.generator.js +1 -0
- package/dist/frontend-core/generators/tsconfig.generator.js.map +1 -1
- package/dist/frontend-core/template/.env.example +3 -0
- package/dist/frontend-core/template/src/components/admin/table-view-panel.tsx +22 -4
- package/dist/frontend-core/template/src/components/ui/color-mode-toggle/color-mode-toggle.tsx +1 -1
- package/dist/frontend-core/template/src/lib/color.ts +6 -3
- package/dist/frontend-core/template/src/lib/config.ts +3 -1
- package/dist/frontend-tables/generators/model-table.generator.js +13 -0
- package/dist/frontend-tables/generators/model-table.generator.js.map +1 -1
- package/dist/generators.js +4 -0
- package/dist/generators.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/types/template/ai.types.ts +34 -0
- package/dist/types/types.generator.js +1 -0
- package/dist/types/types.generator.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateSidepanelToggle = generateSidepanelToggle;
|
|
4
|
+
function generateSidepanelToggle() {
|
|
5
|
+
return `import { PanelRightIcon } from 'lucide-react'
|
|
6
|
+
import { useLocation } from '@tanstack/react-router'
|
|
7
|
+
|
|
8
|
+
import { Button } from '@postxl/ui-components'
|
|
9
|
+
|
|
10
|
+
import { APP_CONFIG } from '@lib/config'
|
|
11
|
+
import { useAiAssistantActions, useAiAssistantState } from './ai-assistant-store'
|
|
12
|
+
|
|
13
|
+
export const SidepanelToggle = () => {
|
|
14
|
+
const pathname = useLocation({ select: (location) => location.pathname })
|
|
15
|
+
const open = useAiAssistantState((state) => state.open)
|
|
16
|
+
const { setOpen } = useAiAssistantActions()
|
|
17
|
+
const isAdminRoute = pathname.startsWith('/admin')
|
|
18
|
+
|
|
19
|
+
if (!APP_CONFIG.enableAI && !isAdminRoute) {
|
|
20
|
+
return null
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return (
|
|
24
|
+
<Button
|
|
25
|
+
variant="outline"
|
|
26
|
+
size="icon"
|
|
27
|
+
className="fixed right-4 top-4 z-40"
|
|
28
|
+
onClick={() => setOpen(!open)}
|
|
29
|
+
aria-label={open ? 'Close sidepanel' : 'Open sidepanel'}
|
|
30
|
+
>
|
|
31
|
+
<PanelRightIcon className="size-4" />
|
|
32
|
+
</Button>
|
|
33
|
+
)
|
|
34
|
+
}
|
|
35
|
+
`;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=sidepanel-toggle.generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidepanel-toggle.generator.js","sourceRoot":"","sources":["../../../src/frontend-actions/generators/sidepanel-toggle.generator.ts"],"names":[],"mappings":";;AAAA,0DAgCC;AAhCD,SAAgB,uBAAuB;IACrC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BR,CAAA;AACD,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import * as Generator from './actions.generator';
|
|
2
|
+
export type WithFrontendActions<Context extends import('@postxl/generator').Context> = Generator.WithFrontendActions<Context>;
|
|
3
|
+
export declare const frontendActionsGenerator: import("@postxl/generator").GeneratorInterface;
|
|
4
|
+
export declare const frontendActionsGeneratorId: string & import("zod").$brand<"PXL.GeneratorInterfaceId">;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.frontendActionsGeneratorId = exports.frontendActionsGenerator = void 0;
|
|
37
|
+
const Generator = __importStar(require("./actions.generator"));
|
|
38
|
+
exports.frontendActionsGenerator = Generator.generator;
|
|
39
|
+
exports.frontendActionsGeneratorId = Generator.generatorId;
|
|
40
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/frontend-actions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+DAAgD;AAInC,QAAA,wBAAwB,GAAG,SAAS,CAAC,SAAS,CAAA;AAC9C,QAAA,0BAA0B,GAAG,SAAS,CAAC,WAAW,CAAA"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import * as Generator from '@postxl/generator';
|
|
2
2
|
import { WithBackendTrpcRouter } from '../backend-router-trpc';
|
|
3
3
|
import { WithBase } from '../base';
|
|
4
|
+
import { WithFrontendActions } from '../frontend-actions';
|
|
4
5
|
import { WithFrontend } from '../frontend-core';
|
|
5
6
|
import { WithForms } from '../frontend-forms';
|
|
6
7
|
import { WithTables } from '../frontend-tables';
|
|
7
8
|
import { WithTrpcClient } from '../frontend-trpc-client/trpc-client.generator';
|
|
8
9
|
import { WithTypes } from '../types';
|
|
9
|
-
type
|
|
10
|
+
type FrontendAdminBaseContext = WithFrontend<WithForms<WithTrpcClient<WithBackendTrpcRouter<WithTypes<WithBase<Generator.Context>>>>>>;
|
|
11
|
+
type ContextRequirements = WithTables<WithFrontendActions<FrontendAdminBaseContext>>;
|
|
10
12
|
export type ModelContextRequirements = Generator.InferModelContext<ContextRequirements>;
|
|
11
13
|
export type EnumContextRequirements = Generator.InferEnumContext<ContextRequirements>;
|
|
12
14
|
export type ContextResult = WithAdmin<ContextRequirements>;
|
|
@@ -37,8 +37,10 @@ exports.generator = exports.generatorId = void 0;
|
|
|
37
37
|
const node_path_1 = require("node:path");
|
|
38
38
|
const Generator = __importStar(require("@postxl/generator"));
|
|
39
39
|
const base_1 = require("../base");
|
|
40
|
+
const frontend_actions_1 = require("../frontend-actions");
|
|
40
41
|
const frontend_tables_1 = require("../frontend-tables");
|
|
41
42
|
const types_1 = require("../types");
|
|
43
|
+
const admin_global_actions_generator_1 = require("./generators/admin-global-actions.generator");
|
|
42
44
|
const admin_overview_page_generator_1 = require("./generators/admin-overview-page.generator");
|
|
43
45
|
const admin_sidebar_generator_1 = require("./generators/admin-sidebar.generator");
|
|
44
46
|
const audit_log_sidebar_generator_1 = require("./generators/audit-log-sidebar.generator");
|
|
@@ -57,7 +59,7 @@ exports.generatorId = Generator.toGeneratorInterfaceId('frontend-admin');
|
|
|
57
59
|
const moduleName = Generator.toBackendModuleName('admin');
|
|
58
60
|
exports.generator = {
|
|
59
61
|
id: exports.generatorId,
|
|
60
|
-
requires: [base_1.baseGeneratorId, types_1.typesGeneratorId, frontend_tables_1.frontendTablesGeneratorId],
|
|
62
|
+
requires: [base_1.baseGeneratorId, types_1.typesGeneratorId, frontend_tables_1.frontendTablesGeneratorId, frontend_actions_1.frontendActionsGeneratorId],
|
|
61
63
|
register: (context) => {
|
|
62
64
|
const hasCommentModel = context.models.has('Comment');
|
|
63
65
|
const admin = {
|
|
@@ -111,6 +113,10 @@ exports.generator = {
|
|
|
111
113
|
hasIndex: false,
|
|
112
114
|
isAbsolute: true,
|
|
113
115
|
});
|
|
116
|
+
context.frontendActions.globalActionHooks.push({
|
|
117
|
+
name: Generator.toFunctionName('useAdminGlobalActions'),
|
|
118
|
+
location: Generator.toBackendModuleLocation('@admin/admin-global.actions'),
|
|
119
|
+
});
|
|
114
120
|
return { ...context, admin, models };
|
|
115
121
|
},
|
|
116
122
|
generate: async (context) => {
|
|
@@ -127,6 +133,7 @@ exports.generator = {
|
|
|
127
133
|
content: (0, data_management_page_generator_1.generateDataManagementPage)({ context }),
|
|
128
134
|
});
|
|
129
135
|
context.vfs.write((0, node_path_1.join)(paths.components, 'admin', Generator.toLocalReactComponent(context.admin.components.sidebar)), (0, admin_sidebar_generator_1.generateAdminSidebar)({ context }));
|
|
136
|
+
context.vfs.write((0, node_path_1.join)(paths.components, 'admin', 'admin-global.actions.tsx'), (0, admin_global_actions_generator_1.generateAdminGlobalActions)({ context }));
|
|
130
137
|
context.vfs.write((0, node_path_1.join)(paths.components, 'admin', Generator.toLocalReactComponent(context.admin.components.auditLogSidebar)), (0, audit_log_sidebar_generator_1.generateAuditLogSidebar)({ context }));
|
|
131
138
|
context.vfs.write((0, node_path_1.join)(paths.components, 'admin', Generator.toLocalReactComponent(context.admin.components.adminDetailSidebar)), (0, detail_sidebar_generator_1.generateAdminDetailSidebar)({ context }));
|
|
132
139
|
if (context.admin.components.commentSidebar) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.generator.js","sourceRoot":"","sources":["../../src/frontend-admin/admin.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAgC;AAEhC,6DAA8C;AAG9C,kCAAmD;
|
|
1
|
+
{"version":3,"file":"admin.generator.js","sourceRoot":"","sources":["../../src/frontend-admin/admin.generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.generateAdminGlobalActions = generateAdminGlobalActions;
|
|
37
|
+
const Generator = __importStar(require("@postxl/generator"));
|
|
38
|
+
const utils_1 = require("../utils");
|
|
39
|
+
function generateAdminGlobalActions({ context }) {
|
|
40
|
+
const imports = Generator.ImportGenerator.from(Generator.toFilePath('./admin-global-actions.tsx'))
|
|
41
|
+
.addImport({ from: Generator.toPackageName('react'), items: [Generator.toFunctionName('useEffect')] })
|
|
42
|
+
.addImport({
|
|
43
|
+
from: Generator.toPackageName('@tanstack/react-router'),
|
|
44
|
+
items: [Generator.toFunctionName('useNavigate')],
|
|
45
|
+
})
|
|
46
|
+
.addImport({
|
|
47
|
+
from: Generator.toBackendModuleLocation('@app-actions/command-palette-action'),
|
|
48
|
+
items: [Generator.toFunctionName('command'), Generator.toFunctionName('waitForNextFrame')],
|
|
49
|
+
})
|
|
50
|
+
.addImport({
|
|
51
|
+
from: Generator.toBackendModuleLocation('@app-actions/command-palette-store'),
|
|
52
|
+
items: [Generator.toFunctionName('useCommandPaletteActions')],
|
|
53
|
+
});
|
|
54
|
+
const { schemas: sortedSchemas, modelsBySchema } = (0, utils_1.groupAndSortModelsBySchema)(context);
|
|
55
|
+
const createActions = sortedSchemas
|
|
56
|
+
.map((schema) => {
|
|
57
|
+
const models = (modelsBySchema.get(schema) ?? []).filter((model) => !model.isReadonly);
|
|
58
|
+
return models
|
|
59
|
+
.map((model) => {
|
|
60
|
+
return `
|
|
61
|
+
command({
|
|
62
|
+
key: 'create-admin-${model.name.toLowerCase()}',
|
|
63
|
+
visibility: 'visible',
|
|
64
|
+
group: 'Create',
|
|
65
|
+
label: 'Create new ${model.userFriendlyName}',
|
|
66
|
+
keywords: ['create', 'new', '${model.name.toLowerCase()}', '${model.userFriendlyName.toLowerCase()}'],
|
|
67
|
+
run: async () => {
|
|
68
|
+
if (typeof globalThis !== 'undefined') {
|
|
69
|
+
globalThis.sessionStorage.setItem('pxl:create-intent-model', '${model.name}')
|
|
70
|
+
globalThis.dispatchEvent(new CustomEvent('pxl:create-intent', { detail: { model: '${model.name}' } }))
|
|
71
|
+
}
|
|
72
|
+
await navigate({ to: '${model.route}' })
|
|
73
|
+
await waitForNextFrame()
|
|
74
|
+
return { kind: 'close' }
|
|
75
|
+
},
|
|
76
|
+
})
|
|
77
|
+
`;
|
|
78
|
+
})
|
|
79
|
+
.join(',\n');
|
|
80
|
+
})
|
|
81
|
+
.join(',\n');
|
|
82
|
+
const modelActions = sortedSchemas
|
|
83
|
+
.map((schema) => {
|
|
84
|
+
const models = modelsBySchema.get(schema) ?? [];
|
|
85
|
+
return models
|
|
86
|
+
.map((model) => {
|
|
87
|
+
return `
|
|
88
|
+
command({
|
|
89
|
+
key: 'navigate-admin-${model.name.toLowerCase()}',
|
|
90
|
+
visibility: 'visible',
|
|
91
|
+
group: 'Navigate',
|
|
92
|
+
label: 'Admin: ${model.userFriendlyName}',
|
|
93
|
+
keywords: ['admin', '${model.name.toLowerCase()}', '${model.userFriendlyName.toLowerCase()}'],
|
|
94
|
+
run: async () => {
|
|
95
|
+
await navigate({ to: '${model.route}' })
|
|
96
|
+
await waitForNextFrame()
|
|
97
|
+
return { kind: 'close' }
|
|
98
|
+
},
|
|
99
|
+
})
|
|
100
|
+
`;
|
|
101
|
+
})
|
|
102
|
+
.join(',\n');
|
|
103
|
+
})
|
|
104
|
+
.join(',\n');
|
|
105
|
+
const dynamicActions = [createActions, modelActions].filter((value) => value.trim().length > 0).join(',\n');
|
|
106
|
+
return `
|
|
107
|
+
${imports.generate()}
|
|
108
|
+
|
|
109
|
+
export const useAdminGlobalActions = () => {
|
|
110
|
+
const navigate = useNavigate()
|
|
111
|
+
const { registerGlobalActions } = useCommandPaletteActions()
|
|
112
|
+
|
|
113
|
+
useEffect(() => {
|
|
114
|
+
const actions = [
|
|
115
|
+
command({
|
|
116
|
+
key: 'navigate-admin-overview',
|
|
117
|
+
visibility: 'visible',
|
|
118
|
+
group: 'Navigate',
|
|
119
|
+
label: 'Admin: Overview',
|
|
120
|
+
keywords: ['admin', 'overview'],
|
|
121
|
+
run: async () => {
|
|
122
|
+
await navigate({ to: '/admin' })
|
|
123
|
+
await waitForNextFrame()
|
|
124
|
+
return { kind: 'close' }
|
|
125
|
+
},
|
|
126
|
+
}),
|
|
127
|
+
${dynamicActions}
|
|
128
|
+
]
|
|
129
|
+
|
|
130
|
+
if (import.meta.env.VITE_PUBLIC_ALLOW_ADMIN === 'true') {
|
|
131
|
+
actions.push(
|
|
132
|
+
command({
|
|
133
|
+
key: 'navigate-admin-data-management',
|
|
134
|
+
visibility: 'visible',
|
|
135
|
+
group: 'Navigate',
|
|
136
|
+
label: 'Admin: Data Management',
|
|
137
|
+
keywords: ['admin', 'data', 'management'],
|
|
138
|
+
run: async () => {
|
|
139
|
+
await navigate({ to: '/admin/data-management' })
|
|
140
|
+
await waitForNextFrame()
|
|
141
|
+
return { kind: 'close' }
|
|
142
|
+
},
|
|
143
|
+
}),
|
|
144
|
+
)
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
registerGlobalActions(...actions)
|
|
148
|
+
}, [navigate, registerGlobalActions])
|
|
149
|
+
}
|
|
150
|
+
`;
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=admin-global-actions.generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-global-actions.generator.js","sourceRoot":"","sources":["../../../src/frontend-admin/generators/admin-global-actions.generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -72,9 +72,10 @@ type ModelCommentContentProps = Readonly<{
|
|
|
72
72
|
labelMap?: Record<string, string>
|
|
73
73
|
selectedEntityId?: string
|
|
74
74
|
onCommentCountChange?: (count: number) => void
|
|
75
|
+
singleCommentThread?: boolean
|
|
75
76
|
}>
|
|
76
77
|
|
|
77
|
-
export function ${context.admin.components.commentSidebar.name}({ model, filteredIds, labelMap, selectedEntityId, onCommentCountChange }: ModelCommentContentProps) {
|
|
78
|
+
export function ${context.admin.components.commentSidebar.name}({ model, filteredIds, labelMap, selectedEntityId, onCommentCountChange, singleCommentThread }: ModelCommentContentProps) {
|
|
78
79
|
const { viewerData } = useAuth()
|
|
79
80
|
const currentUserId = viewerData?.user?.id
|
|
80
81
|
const [commentTarget, setCommentTarget] = useState<{ entityId: string; label: string } | null>(null)
|
|
@@ -130,6 +131,7 @@ export function ${context.admin.components.commentSidebar.name}({ model, filtere
|
|
|
130
131
|
comments: items.filter(c => !c.replyToCommentId).map(c => toItem(c, items)),
|
|
131
132
|
}))
|
|
132
133
|
.filter(g => g.comments.length > 0)
|
|
134
|
+
.sort((a, b) => a.groupName.localeCompare(b.groupName))
|
|
133
135
|
}, [comments, userMap, labelMap])
|
|
134
136
|
|
|
135
137
|
const commentCount = useMemo(() => groups.reduce((sum, g) => sum + g.comments.length, 0), [groups])
|
|
@@ -232,10 +234,10 @@ export function ${context.admin.components.commentSidebar.name}({ model, filtere
|
|
|
232
234
|
)}
|
|
233
235
|
{groups.length > 0 && (
|
|
234
236
|
<CommentList
|
|
235
|
-
comments={groups}
|
|
237
|
+
comments={singleCommentThread && groups.length === 1 ? groups[0].comments : groups}
|
|
236
238
|
onResolve={handleResolve}
|
|
237
239
|
onReply={currentUserId ? handleReply : undefined}
|
|
238
|
-
onCreate={currentUserId ? handleCreate : undefined}
|
|
240
|
+
onCreate={singleCommentThread && groups.length === 1 ? (currentUserId ? (text: string) => handleCreate(text, groups[0].groupId) : undefined) : (currentUserId ? handleCreate : undefined)}
|
|
239
241
|
/>
|
|
240
242
|
)}
|
|
241
243
|
</div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comment-sidebar.generator.js","sourceRoot":"","sources":["../../../src/frontend-admin/generators/comment-sidebar.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,
|
|
1
|
+
{"version":3,"file":"comment-sidebar.generator.js","sourceRoot":"","sources":["../../../src/frontend-admin/generators/comment-sidebar.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,wDA+MC;AAxND,6DAA8C;AAI9C;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,EAAE,OAAO,EAA8B;IAC5E,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,SAAgB,CAAE,CAAA;IAC1D,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAa,CAAE,CAAA;IAEpD,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe;QACvC,EAAE;SACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,cAAe,CAAC,QAAQ,CAAC;SACvD,SAAS,CAAC;QACT,IAAI,EAAE,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC;QACtC,KAAK,EAAE;YACL,SAAS,CAAC,cAAc,CAAC,UAAU,CAAC;YACpC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC;YACnC,SAAS,CAAC,cAAc,CAAC,aAAa,CAAC;YACvC,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC;SACtC;KACF,CAAC;SACD,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC;SAC3B,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC;SACxB,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;SAC9B,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAE9B,MAAM,cAAc,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAA;IAEhD,OAAO;EACP,OAAO,CAAC,QAAQ,EAAE;;;;;;;;;;;;;;kBAcF,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,cAAe,CAAC,IAAI;;;;;;MAMzD,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI;MACxC,YAAY,CAAC,SAAS,CAAC,MAAO,CAAC,IAAI;MACnC,YAAY,CAAC,SAAS,CAAC,WAAY,CAAC,IAAI;MACxC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI;QAClC,YAAY,CAAC,SAAS,CAAC,IAAI;;;;;;;;;YASvB,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,iBAAiB,SAAS,CAAC,SAAS,CAAC,IAAI;;;;;;;;;;0BAUvD,cAAc;;;;yDAIiB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDAiCtB,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI;;;;;;;;iCAQ1C,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI;;;;sCAIlB,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI;;;;;;;;iCAQ/B,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI;;;;;;;;;;;;iCAYvB,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsEvD,CAAA;AACD,CAAC"}
|
|
@@ -44,15 +44,24 @@ function generateAdminDetailSidebar({ context }) {
|
|
|
44
44
|
const imports = Generator.ImportGenerator
|
|
45
45
|
//
|
|
46
46
|
.from(Generator.toBackendModuleLocation('@ui/admin/AdminDetailSidebar'))
|
|
47
|
-
.add(context.admin.components.auditLogSidebar)
|
|
47
|
+
.add(context.admin.components.auditLogSidebar)
|
|
48
|
+
.addImport({
|
|
49
|
+
from: Generator.toBackendModuleLocation('@app-actions/ai-assistant-store'),
|
|
50
|
+
items: [Generator.toFunctionName('useAiAssistantActions'), Generator.toFunctionName('useAiAssistantState')],
|
|
51
|
+
})
|
|
52
|
+
.addImport({
|
|
53
|
+
from: Generator.toBackendModuleLocation('@app-actions/ai-sidebar-content'),
|
|
54
|
+
items: [Generator.toFunctionName('AiSidebarContent')],
|
|
55
|
+
});
|
|
48
56
|
const hasComments = !!context.admin.components.commentSidebar;
|
|
49
57
|
if (hasComments) {
|
|
50
|
-
imports.add(context.admin.components.commentSidebar);
|
|
58
|
+
imports.add(context.admin.components.commentSidebar); // NOSONAR
|
|
51
59
|
}
|
|
52
60
|
return `
|
|
53
|
-
${hasComments ? "import { useState } from 'react'" : ''}
|
|
54
61
|
import type { ComponentProps } from 'react'
|
|
62
|
+
${hasComments ? "import { useState } from 'react'" : ''}
|
|
55
63
|
${imports.generate()}
|
|
64
|
+
import { APP_CONFIG } from '@lib/config'
|
|
56
65
|
import {
|
|
57
66
|
Badge,
|
|
58
67
|
Sidebar,
|
|
@@ -60,12 +69,10 @@ import {
|
|
|
60
69
|
SidebarGroup,
|
|
61
70
|
SidebarGroupContent,
|
|
62
71
|
SidebarRail,
|
|
63
|
-
|
|
64
|
-
? `Tabs,
|
|
72
|
+
Tabs,
|
|
65
73
|
TabsContent,
|
|
66
74
|
TabsList,
|
|
67
|
-
TabsTrigger
|
|
68
|
-
: ''}
|
|
75
|
+
TabsTrigger,
|
|
69
76
|
} from '@postxl/ui-components'
|
|
70
77
|
|
|
71
78
|
type AdminDetailSidebarProps = Readonly<{
|
|
@@ -79,7 +86,8 @@ type AdminDetailSidebarProps = Readonly<{
|
|
|
79
86
|
${hasComments
|
|
80
87
|
? `filteredIds?: string[]
|
|
81
88
|
labelMap?: Record<string, string>
|
|
82
|
-
selectedEntityId?: string
|
|
89
|
+
selectedEntityId?: string
|
|
90
|
+
singleCommentThread?: boolean`
|
|
83
91
|
: ''}
|
|
84
92
|
}> & ComponentProps<typeof Sidebar>
|
|
85
93
|
|
|
@@ -91,33 +99,45 @@ export function AdminDetailSidebar({
|
|
|
91
99
|
labelField,
|
|
92
100
|
onClearField,
|
|
93
101
|
onClearEntity,
|
|
94
|
-
${hasComments ? 'filteredIds, labelMap, selectedEntityId,' : ''}
|
|
102
|
+
${hasComments ? 'filteredIds, labelMap, selectedEntityId, singleCommentThread,' : ''}
|
|
95
103
|
...sidebarProps
|
|
96
104
|
}: AdminDetailSidebarProps) {
|
|
97
105
|
${hasComments ? 'const [commentCount, setCommentCount] = useState(0)' : ''}
|
|
106
|
+
const activeAdminTab = useAiAssistantState((state) => state.activeAdminTab)
|
|
107
|
+
const { setActiveAdminTab } = useAiAssistantActions()
|
|
108
|
+
const availableTabs = new Set([${hasComments ? "'comments', " : ''}'audit-log', ...(APP_CONFIG.enableAI ? ['ai'] : [])])
|
|
109
|
+
const selectedTab = availableTabs.has(activeAdminTab) ? activeAdminTab : '${hasComments ? 'comments' : 'audit-log'}'
|
|
110
|
+
|
|
98
111
|
return (
|
|
99
112
|
<Sidebar {...sidebarProps} onMouseDown={(e) => e.stopPropagation()}>
|
|
100
113
|
<SidebarRail />
|
|
101
114
|
<SidebarContent>
|
|
102
|
-
|
|
103
|
-
? `<Tabs defaultValue="comments">
|
|
115
|
+
<Tabs value={selectedTab} onValueChange={setActiveAdminTab} className="h-full">
|
|
104
116
|
<SidebarGroup>
|
|
105
117
|
<SidebarGroupContent className="px-2 pt-2">
|
|
106
118
|
<TabsList variant="protocol">
|
|
107
|
-
|
|
119
|
+
${hasComments
|
|
120
|
+
? `<TabsTrigger value="comments" variant="protocol" className="group/tab cursor-pointer px-3 h-8">Comments{commentCount > 0 && <Badge variant="secondary" size="xs" className="ml-1.5 transition-none group-hover/tab:bg-primary group-hover/tab:text-primary-foreground group-data-[state=active]/tab:bg-primary group-data-[state=active]/tab:text-primary-foreground">{commentCount}</Badge>}</TabsTrigger>`
|
|
121
|
+
: ''}
|
|
108
122
|
<TabsTrigger value="audit-log" variant="protocol" className="cursor-pointer px-3 h-8">Audit Log</TabsTrigger>
|
|
123
|
+
{APP_CONFIG.enableAI && (
|
|
124
|
+
<TabsTrigger value="ai" variant="protocol" className="cursor-pointer px-3 h-8">AI</TabsTrigger>
|
|
125
|
+
)}
|
|
109
126
|
</TabsList>
|
|
110
127
|
</SidebarGroupContent>
|
|
111
128
|
</SidebarGroup>
|
|
112
|
-
|
|
129
|
+
${hasComments
|
|
130
|
+
? `<TabsContent value="comments" className="mt-0">
|
|
113
131
|
<${context.admin.components.commentSidebar.name}
|
|
114
132
|
model={model}
|
|
115
133
|
filteredIds={filteredIds}
|
|
116
134
|
labelMap={labelMap}
|
|
117
135
|
selectedEntityId={selectedEntityId}
|
|
118
136
|
onCommentCountChange={setCommentCount}
|
|
137
|
+
singleCommentThread={singleCommentThread}
|
|
119
138
|
/>
|
|
120
|
-
</TabsContent
|
|
139
|
+
</TabsContent>`
|
|
140
|
+
: ''}
|
|
121
141
|
<TabsContent value="audit-log" className="mt-0">
|
|
122
142
|
<AuditLogSidebar
|
|
123
143
|
model={model}
|
|
@@ -129,16 +149,12 @@ export function AdminDetailSidebar({
|
|
|
129
149
|
onClearEntity={onClearEntity}
|
|
130
150
|
/>
|
|
131
151
|
</TabsContent>
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
labelField={labelField}
|
|
139
|
-
onClearField={onClearField}
|
|
140
|
-
onClearEntity={onClearEntity}
|
|
141
|
-
/>`}
|
|
152
|
+
{APP_CONFIG.enableAI && (
|
|
153
|
+
<TabsContent value="ai" className="mt-0 h-full min-h-0">
|
|
154
|
+
<AiSidebarContent />
|
|
155
|
+
</TabsContent>
|
|
156
|
+
)}
|
|
157
|
+
</Tabs>
|
|
142
158
|
</SidebarContent>
|
|
143
159
|
</Sidebar>
|
|
144
160
|
)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detail-sidebar.generator.js","sourceRoot":"","sources":["../../../src/frontend-admin/generators/detail-sidebar.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,
|
|
1
|
+
{"version":3,"file":"detail-sidebar.generator.js","sourceRoot":"","sources":["../../../src/frontend-admin/generators/detail-sidebar.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,gEAgIC;AAzID,6DAA8C;AAI9C;;;;GAIG;AACH,SAAgB,0BAA0B,CAAC,EAAE,OAAO,EAA8B;IAChF,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe;QACvC,EAAE;SACD,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,8BAA8B,CAAC,CAAC;SACvE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC;SAC7C,SAAS,CAAC;QACT,IAAI,EAAE,SAAS,CAAC,uBAAuB,CAAC,iCAAiC,CAAC;QAC1E,KAAK,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,uBAAuB,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;KAC5G,CAAC;SACD,SAAS,CAAC;QACT,IAAI,EAAE,SAAS,CAAC,uBAAuB,CAAC,iCAAiC,CAAC;QAC1E,KAAK,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;KACtD,CAAC,CAAA;IAEJ,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAA;IAC7D,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,cAAe,CAAC,CAAA,CAAC,UAAU;IAClE,CAAC;IAED,OAAO;;EAEP,WAAW,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,EAAE;EACrD,OAAO,CAAC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;IAwBhB,WAAW;QACT,CAAC,CAAC;;;gCAGwB;QAC1B,CAAC,CAAC,EACN;;;;;;;;;;;IAWE,WAAW,CAAC,CAAC,CAAC,+DAA+D,CAAC,CAAC,CAAC,EAAE;;;IAGlF,WAAW,CAAC,CAAC,CAAC,qDAAqD,CAAC,CAAC,CAAC,EAAE;;;mCAGzC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;8EACU,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW;;;;;;;;;;kBAWlG,WAAW;QACT,CAAC,CAAC,6YAA6Y;QAC/Y,CAAC,CAAC,EACN;;;;;;;;YASJ,WAAW;QACT,CAAC,CAAC;eACD,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,cAAe,CAAC,IAAI;;;;;;;;yBAQnC;QACX,CAAC,CAAC,EACN;;;;;;;;;;;;;;;;;;;;;;CAsBT,CAAA;AACD,CAAC"}
|