@hed-hog/contact 0.0.294 → 0.0.296
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/person/dto/account.dto.d.ts +28 -0
- package/dist/person/dto/account.dto.d.ts.map +1 -0
- package/dist/person/dto/account.dto.js +123 -0
- package/dist/person/dto/account.dto.js.map +1 -0
- package/dist/person/dto/activity.dto.d.ts +15 -0
- package/dist/person/dto/activity.dto.d.ts.map +1 -0
- package/dist/person/dto/activity.dto.js +65 -0
- package/dist/person/dto/activity.dto.js.map +1 -0
- package/dist/person/dto/dashboard-query.dto.d.ts +9 -0
- package/dist/person/dto/dashboard-query.dto.d.ts.map +1 -0
- package/dist/person/dto/dashboard-query.dto.js +40 -0
- package/dist/person/dto/dashboard-query.dto.js.map +1 -0
- package/dist/person/dto/followup-query.dto.d.ts +10 -0
- package/dist/person/dto/followup-query.dto.d.ts.map +1 -0
- package/dist/person/dto/followup-query.dto.js +45 -0
- package/dist/person/dto/followup-query.dto.js.map +1 -0
- package/dist/person/dto/reports-query.dto.d.ts +8 -0
- package/dist/person/dto/reports-query.dto.d.ts.map +1 -0
- package/dist/person/dto/reports-query.dto.js +33 -0
- package/dist/person/dto/reports-query.dto.js.map +1 -0
- package/dist/person/person.controller.d.ts +266 -5
- package/dist/person/person.controller.d.ts.map +1 -1
- package/dist/person/person.controller.js +164 -6
- package/dist/person/person.controller.js.map +1 -1
- package/dist/person/person.service.d.ts +295 -5
- package/dist/person/person.service.d.ts.map +1 -1
- package/dist/person/person.service.js +1752 -27
- package/dist/person/person.service.js.map +1 -1
- package/dist/person-relation-type/person-relation-type.controller.d.ts +2 -2
- package/dist/person-relation-type/person-relation-type.service.d.ts +2 -2
- package/hedhog/data/route.yaml +68 -19
- package/hedhog/frontend/app/_lib/crm-sections.tsx.ejs +9 -9
- package/hedhog/frontend/app/accounts/_components/account-form-sheet.tsx.ejs +573 -477
- package/hedhog/frontend/app/accounts/_components/account-types.ts.ejs +9 -6
- package/hedhog/frontend/app/accounts/page.tsx.ejs +970 -892
- package/hedhog/frontend/app/activities/_components/activity-detail-sheet.tsx.ejs +240 -0
- package/hedhog/frontend/app/activities/_components/activity-types.ts.ejs +66 -0
- package/hedhog/frontend/app/activities/page.tsx.ejs +460 -812
- package/hedhog/frontend/app/dashboard/_components/dashboard-types.ts.ejs +70 -0
- package/hedhog/frontend/app/dashboard/page.tsx.ejs +639 -491
- package/hedhog/frontend/app/follow-ups/page.tsx.ejs +785 -696
- package/hedhog/frontend/app/person/_components/person-interaction-dialog.tsx.ejs +10 -12
- package/hedhog/frontend/app/reports/_components/report-types.ts.ejs +84 -0
- package/hedhog/frontend/app/reports/page.tsx.ejs +1196 -15
- package/hedhog/frontend/messages/en.json +242 -38
- package/hedhog/frontend/messages/pt.json +242 -38
- package/hedhog/table/crm_activity.yaml +68 -0
- package/hedhog/table/crm_stage_history.yaml +34 -0
- package/hedhog/table/person_company.yaml +27 -5
- package/package.json +9 -9
- package/src/person/dto/account.dto.ts +100 -0
- package/src/person/dto/activity.dto.ts +54 -0
- package/src/person/dto/dashboard-query.dto.ts +25 -0
- package/src/person/dto/followup-query.dto.ts +25 -0
- package/src/person/dto/reports-query.dto.ts +25 -0
- package/src/person/person.controller.ts +176 -43
- package/src/person/person.service.ts +4825 -2226
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { PersonStatus } from './create.dto';
|
|
2
|
+
export declare const ACCOUNT_LIFECYCLE_STAGES: readonly ["prospect", "customer", "churned", "inactive"];
|
|
3
|
+
export type AccountLifecycleStage = (typeof ACCOUNT_LIFECYCLE_STAGES)[number];
|
|
4
|
+
export declare class AccountListQueryDTO {
|
|
5
|
+
search?: string;
|
|
6
|
+
status?: 'all' | PersonStatus;
|
|
7
|
+
lifecycle_stage?: 'all' | AccountLifecycleStage;
|
|
8
|
+
sortField?: 'name' | 'created_at';
|
|
9
|
+
sortOrder?: 'asc' | 'desc';
|
|
10
|
+
}
|
|
11
|
+
export declare class CreateAccountDTO {
|
|
12
|
+
name: string;
|
|
13
|
+
trade_name?: string | null;
|
|
14
|
+
status: PersonStatus;
|
|
15
|
+
industry?: string | null;
|
|
16
|
+
website?: string | null;
|
|
17
|
+
email?: string | null;
|
|
18
|
+
phone?: string | null;
|
|
19
|
+
owner_user_id?: number | null;
|
|
20
|
+
annual_revenue?: number | null;
|
|
21
|
+
employee_count?: number | null;
|
|
22
|
+
lifecycle_stage?: AccountLifecycleStage | null;
|
|
23
|
+
city?: string | null;
|
|
24
|
+
state?: string | null;
|
|
25
|
+
}
|
|
26
|
+
export declare class UpdateAccountDTO extends CreateAccountDTO {
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=account.dto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account.dto.d.ts","sourceRoot":"","sources":["../../../src/person/dto/account.dto.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,eAAO,MAAM,wBAAwB,0DAK3B,CAAC;AAEX,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9E,qBAAa,mBAAmB;IAG9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAIhB,MAAM,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC;IAI9B,eAAe,CAAC,EAAE,KAAK,GAAG,qBAAqB,CAAC;IAIhD,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;IAIlC,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC5B;AAED,qBAAa,gBAAgB;IAE3B,IAAI,EAAE,MAAM,CAAC;IAIb,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAG3B,MAAM,EAAE,YAAY,CAAC;IAIrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAIzB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAIxB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAItB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAKtB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAK9B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAK/B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAI/B,eAAe,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAI/C,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAKrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,qBAAa,gBAAiB,SAAQ,gBAAgB;CAAG"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.UpdateAccountDTO = exports.CreateAccountDTO = exports.AccountListQueryDTO = exports.ACCOUNT_LIFECYCLE_STAGES = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
const create_dto_1 = require("./create.dto");
|
|
16
|
+
exports.ACCOUNT_LIFECYCLE_STAGES = [
|
|
17
|
+
'prospect',
|
|
18
|
+
'customer',
|
|
19
|
+
'churned',
|
|
20
|
+
'inactive',
|
|
21
|
+
];
|
|
22
|
+
class AccountListQueryDTO {
|
|
23
|
+
}
|
|
24
|
+
exports.AccountListQueryDTO = AccountListQueryDTO;
|
|
25
|
+
__decorate([
|
|
26
|
+
(0, class_validator_1.IsOptional)(),
|
|
27
|
+
(0, class_validator_1.IsString)(),
|
|
28
|
+
__metadata("design:type", String)
|
|
29
|
+
], AccountListQueryDTO.prototype, "search", void 0);
|
|
30
|
+
__decorate([
|
|
31
|
+
(0, class_validator_1.IsOptional)(),
|
|
32
|
+
(0, class_validator_1.IsIn)(['all', create_dto_1.PersonStatus.ACTIVE, create_dto_1.PersonStatus.INACTIVE]),
|
|
33
|
+
__metadata("design:type", String)
|
|
34
|
+
], AccountListQueryDTO.prototype, "status", void 0);
|
|
35
|
+
__decorate([
|
|
36
|
+
(0, class_validator_1.IsOptional)(),
|
|
37
|
+
(0, class_validator_1.IsIn)(['all', ...exports.ACCOUNT_LIFECYCLE_STAGES]),
|
|
38
|
+
__metadata("design:type", String)
|
|
39
|
+
], AccountListQueryDTO.prototype, "lifecycle_stage", void 0);
|
|
40
|
+
__decorate([
|
|
41
|
+
(0, class_validator_1.IsOptional)(),
|
|
42
|
+
(0, class_validator_1.IsIn)(['name', 'created_at']),
|
|
43
|
+
__metadata("design:type", String)
|
|
44
|
+
], AccountListQueryDTO.prototype, "sortField", void 0);
|
|
45
|
+
__decorate([
|
|
46
|
+
(0, class_validator_1.IsOptional)(),
|
|
47
|
+
(0, class_validator_1.IsIn)(['asc', 'desc']),
|
|
48
|
+
__metadata("design:type", String)
|
|
49
|
+
], AccountListQueryDTO.prototype, "sortOrder", void 0);
|
|
50
|
+
class CreateAccountDTO {
|
|
51
|
+
}
|
|
52
|
+
exports.CreateAccountDTO = CreateAccountDTO;
|
|
53
|
+
__decorate([
|
|
54
|
+
(0, class_validator_1.IsString)(),
|
|
55
|
+
__metadata("design:type", String)
|
|
56
|
+
], CreateAccountDTO.prototype, "name", void 0);
|
|
57
|
+
__decorate([
|
|
58
|
+
(0, class_validator_1.IsOptional)(),
|
|
59
|
+
(0, class_validator_1.IsString)(),
|
|
60
|
+
__metadata("design:type", String)
|
|
61
|
+
], CreateAccountDTO.prototype, "trade_name", void 0);
|
|
62
|
+
__decorate([
|
|
63
|
+
(0, class_validator_1.IsIn)([create_dto_1.PersonStatus.ACTIVE, create_dto_1.PersonStatus.INACTIVE]),
|
|
64
|
+
__metadata("design:type", String)
|
|
65
|
+
], CreateAccountDTO.prototype, "status", void 0);
|
|
66
|
+
__decorate([
|
|
67
|
+
(0, class_validator_1.IsOptional)(),
|
|
68
|
+
(0, class_validator_1.IsString)(),
|
|
69
|
+
__metadata("design:type", String)
|
|
70
|
+
], CreateAccountDTO.prototype, "industry", void 0);
|
|
71
|
+
__decorate([
|
|
72
|
+
(0, class_validator_1.IsOptional)(),
|
|
73
|
+
(0, class_validator_1.IsString)(),
|
|
74
|
+
__metadata("design:type", String)
|
|
75
|
+
], CreateAccountDTO.prototype, "website", void 0);
|
|
76
|
+
__decorate([
|
|
77
|
+
(0, class_validator_1.IsOptional)(),
|
|
78
|
+
(0, class_validator_1.IsEmail)(),
|
|
79
|
+
__metadata("design:type", String)
|
|
80
|
+
], CreateAccountDTO.prototype, "email", void 0);
|
|
81
|
+
__decorate([
|
|
82
|
+
(0, class_validator_1.IsOptional)(),
|
|
83
|
+
(0, class_validator_1.IsString)(),
|
|
84
|
+
__metadata("design:type", String)
|
|
85
|
+
], CreateAccountDTO.prototype, "phone", void 0);
|
|
86
|
+
__decorate([
|
|
87
|
+
(0, class_validator_1.IsOptional)(),
|
|
88
|
+
(0, class_transformer_1.Type)(() => Number),
|
|
89
|
+
(0, class_validator_1.IsInt)(),
|
|
90
|
+
__metadata("design:type", Number)
|
|
91
|
+
], CreateAccountDTO.prototype, "owner_user_id", void 0);
|
|
92
|
+
__decorate([
|
|
93
|
+
(0, class_validator_1.IsOptional)(),
|
|
94
|
+
(0, class_transformer_1.Type)(() => Number),
|
|
95
|
+
(0, class_validator_1.IsNumber)(),
|
|
96
|
+
__metadata("design:type", Number)
|
|
97
|
+
], CreateAccountDTO.prototype, "annual_revenue", void 0);
|
|
98
|
+
__decorate([
|
|
99
|
+
(0, class_validator_1.IsOptional)(),
|
|
100
|
+
(0, class_transformer_1.Type)(() => Number),
|
|
101
|
+
(0, class_validator_1.IsInt)(),
|
|
102
|
+
__metadata("design:type", Number)
|
|
103
|
+
], CreateAccountDTO.prototype, "employee_count", void 0);
|
|
104
|
+
__decorate([
|
|
105
|
+
(0, class_validator_1.IsOptional)(),
|
|
106
|
+
(0, class_validator_1.IsIn)(exports.ACCOUNT_LIFECYCLE_STAGES),
|
|
107
|
+
__metadata("design:type", String)
|
|
108
|
+
], CreateAccountDTO.prototype, "lifecycle_stage", void 0);
|
|
109
|
+
__decorate([
|
|
110
|
+
(0, class_validator_1.IsOptional)(),
|
|
111
|
+
(0, class_validator_1.IsString)(),
|
|
112
|
+
__metadata("design:type", String)
|
|
113
|
+
], CreateAccountDTO.prototype, "city", void 0);
|
|
114
|
+
__decorate([
|
|
115
|
+
(0, class_validator_1.IsOptional)(),
|
|
116
|
+
(0, class_validator_1.IsString)(),
|
|
117
|
+
(0, class_validator_1.MaxLength)(2),
|
|
118
|
+
__metadata("design:type", String)
|
|
119
|
+
], CreateAccountDTO.prototype, "state", void 0);
|
|
120
|
+
class UpdateAccountDTO extends CreateAccountDTO {
|
|
121
|
+
}
|
|
122
|
+
exports.UpdateAccountDTO = UpdateAccountDTO;
|
|
123
|
+
//# sourceMappingURL=account.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account.dto.js","sourceRoot":"","sources":["../../../src/person/dto/account.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAAyC;AACzC,qDAQyB;AACzB,6CAA4C;AAE/B,QAAA,wBAAwB,GAAG;IACtC,UAAU;IACV,UAAU;IACV,SAAS;IACT,UAAU;CACF,CAAC;AAIX,MAAa,mBAAmB;CAoB/B;AApBD,kDAoBC;AAjBC;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;mDACK;AAIhB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,sBAAI,EAAC,CAAC,KAAK,EAAE,yBAAY,CAAC,MAAM,EAAE,yBAAY,CAAC,QAAQ,CAAC,CAAC;;mDAC5B;AAI9B;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,sBAAI,EAAC,CAAC,KAAK,EAAE,GAAG,gCAAwB,CAAC,CAAC;;4DACK;AAIhD;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,sBAAI,EAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;;sDACK;AAIlC;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,sBAAI,EAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;;sDACK;AAG7B,MAAa,gBAAgB;CAsD5B;AAtDD,4CAsDC;AApDC;IADC,IAAA,0BAAQ,GAAE;;8CACE;AAIb;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;oDACgB;AAG3B;IADC,IAAA,sBAAI,EAAC,CAAC,yBAAY,CAAC,MAAM,EAAE,yBAAY,CAAC,QAAQ,CAAC,CAAC;;gDAC9B;AAIrB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;kDACc;AAIzB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;iDACa;AAIxB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,yBAAO,GAAE;;+CACY;AAItB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;+CACW;AAKtB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,uBAAK,GAAE;;uDACsB;AAK9B;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,0BAAQ,GAAE;;wDACoB;AAK/B;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,uBAAK,GAAE;;wDACuB;AAI/B;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,sBAAI,EAAC,gCAAwB,CAAC;;yDACgB;AAI/C;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;8CACU;AAKrB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,CAAC,CAAC;;+CACS;AAGxB,MAAa,gBAAiB,SAAQ,gBAAgB;CAAG;AAAzD,4CAAyD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const CRM_ACTIVITY_TYPES: readonly ["call", "email", "meeting", "whatsapp", "task", "note"];
|
|
2
|
+
export declare const CRM_ACTIVITY_PRIORITIES: readonly ["high", "medium", "low"];
|
|
3
|
+
export declare const CRM_ACTIVITY_STATUSES: readonly ["pending", "overdue", "completed"];
|
|
4
|
+
export declare const CRM_ACTIVITY_SOURCE_KINDS: readonly ["manual", "followup", "interaction"];
|
|
5
|
+
export type CrmActivityType = (typeof CRM_ACTIVITY_TYPES)[number];
|
|
6
|
+
export type CrmActivityPriority = (typeof CRM_ACTIVITY_PRIORITIES)[number];
|
|
7
|
+
export type CrmActivityStatus = (typeof CRM_ACTIVITY_STATUSES)[number];
|
|
8
|
+
export type CrmActivitySourceKind = (typeof CRM_ACTIVITY_SOURCE_KINDS)[number];
|
|
9
|
+
export declare class ActivityListQueryDTO {
|
|
10
|
+
search?: string;
|
|
11
|
+
status?: 'all' | CrmActivityStatus;
|
|
12
|
+
type?: 'all' | CrmActivityType;
|
|
13
|
+
priority?: 'all' | CrmActivityPriority;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=activity.dto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity.dto.d.ts","sourceRoot":"","sources":["../../../src/person/dto/activity.dto.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,kBAAkB,mEAOrB,CAAC;AAEX,eAAO,MAAM,uBAAuB,oCAAqC,CAAC;AAC1E,eAAO,MAAM,qBAAqB,8CAIxB,CAAC;AACX,eAAO,MAAM,yBAAyB,gDAI5B,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAClE,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3E,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AACvE,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/E,qBAAa,oBAAoB;IAK/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAMhB,MAAM,CAAC,EAAE,KAAK,GAAG,iBAAiB,CAAC;IAMnC,IAAI,CAAC,EAAE,KAAK,GAAG,eAAe,CAAC;IAM/B,QAAQ,CAAC,EAAE,KAAK,GAAG,mBAAmB,CAAC;CACxC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ActivityListQueryDTO = exports.CRM_ACTIVITY_SOURCE_KINDS = exports.CRM_ACTIVITY_STATUSES = exports.CRM_ACTIVITY_PRIORITIES = exports.CRM_ACTIVITY_TYPES = void 0;
|
|
13
|
+
const api_locale_1 = require("@hed-hog/api-locale");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
exports.CRM_ACTIVITY_TYPES = [
|
|
16
|
+
'call',
|
|
17
|
+
'email',
|
|
18
|
+
'meeting',
|
|
19
|
+
'whatsapp',
|
|
20
|
+
'task',
|
|
21
|
+
'note',
|
|
22
|
+
];
|
|
23
|
+
exports.CRM_ACTIVITY_PRIORITIES = ['high', 'medium', 'low'];
|
|
24
|
+
exports.CRM_ACTIVITY_STATUSES = [
|
|
25
|
+
'pending',
|
|
26
|
+
'overdue',
|
|
27
|
+
'completed',
|
|
28
|
+
];
|
|
29
|
+
exports.CRM_ACTIVITY_SOURCE_KINDS = [
|
|
30
|
+
'manual',
|
|
31
|
+
'followup',
|
|
32
|
+
'interaction',
|
|
33
|
+
];
|
|
34
|
+
class ActivityListQueryDTO {
|
|
35
|
+
}
|
|
36
|
+
exports.ActivityListQueryDTO = ActivityListQueryDTO;
|
|
37
|
+
__decorate([
|
|
38
|
+
(0, class_validator_1.IsOptional)(),
|
|
39
|
+
(0, class_validator_1.IsString)({
|
|
40
|
+
message: (args) => (0, api_locale_1.getLocaleText)('validation.stringRequired', args.value),
|
|
41
|
+
}),
|
|
42
|
+
__metadata("design:type", String)
|
|
43
|
+
], ActivityListQueryDTO.prototype, "search", void 0);
|
|
44
|
+
__decorate([
|
|
45
|
+
(0, class_validator_1.IsOptional)(),
|
|
46
|
+
(0, class_validator_1.IsIn)(['all', ...exports.CRM_ACTIVITY_STATUSES], {
|
|
47
|
+
message: (args) => (0, api_locale_1.getLocaleText)('validation.typeMustBeEnum', args.value),
|
|
48
|
+
}),
|
|
49
|
+
__metadata("design:type", String)
|
|
50
|
+
], ActivityListQueryDTO.prototype, "status", void 0);
|
|
51
|
+
__decorate([
|
|
52
|
+
(0, class_validator_1.IsOptional)(),
|
|
53
|
+
(0, class_validator_1.IsIn)(['all', ...exports.CRM_ACTIVITY_TYPES], {
|
|
54
|
+
message: (args) => (0, api_locale_1.getLocaleText)('validation.typeMustBeEnum', args.value),
|
|
55
|
+
}),
|
|
56
|
+
__metadata("design:type", String)
|
|
57
|
+
], ActivityListQueryDTO.prototype, "type", void 0);
|
|
58
|
+
__decorate([
|
|
59
|
+
(0, class_validator_1.IsOptional)(),
|
|
60
|
+
(0, class_validator_1.IsIn)(['all', ...exports.CRM_ACTIVITY_PRIORITIES], {
|
|
61
|
+
message: (args) => (0, api_locale_1.getLocaleText)('validation.typeMustBeEnum', args.value),
|
|
62
|
+
}),
|
|
63
|
+
__metadata("design:type", String)
|
|
64
|
+
], ActivityListQueryDTO.prototype, "priority", void 0);
|
|
65
|
+
//# sourceMappingURL=activity.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity.dto.js","sourceRoot":"","sources":["../../../src/person/dto/activity.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAoD;AACpD,qDAA6D;AAEhD,QAAA,kBAAkB,GAAG;IAChC,MAAM;IACN,OAAO;IACP,SAAS;IACT,UAAU;IACV,MAAM;IACN,MAAM;CACE,CAAC;AAEE,QAAA,uBAAuB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAU,CAAC;AAC7D,QAAA,qBAAqB,GAAG;IACnC,SAAS;IACT,SAAS;IACT,WAAW;CACH,CAAC;AACE,QAAA,yBAAyB,GAAG;IACvC,QAAQ;IACR,UAAU;IACV,aAAa;CACL,CAAC;AAOX,MAAa,oBAAoB;CAwBhC;AAxBD,oDAwBC;AAnBC;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,EAAC;QACR,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,0BAAa,EAAC,2BAA2B,EAAE,IAAI,CAAC,KAAK,CAAC;KAC1E,CAAC;;oDACc;AAMhB;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,sBAAI,EAAC,CAAC,KAAK,EAAE,GAAG,6BAAqB,CAAC,EAAE;QACvC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,0BAAa,EAAC,2BAA2B,EAAE,IAAI,CAAC,KAAK,CAAC;KAC1E,CAAC;;oDACiC;AAMnC;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,sBAAI,EAAC,CAAC,KAAK,EAAE,GAAG,0BAAkB,CAAC,EAAE;QACpC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,0BAAa,EAAC,2BAA2B,EAAE,IAAI,CAAC,KAAK,CAAC;KAC1E,CAAC;;kDAC6B;AAM/B;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,sBAAI,EAAC,CAAC,KAAK,EAAE,GAAG,+BAAuB,CAAC,EAAE;QACzC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,0BAAa,EAAC,2BAA2B,EAAE,IAAI,CAAC,KAAK,CAAC;KAC1E,CAAC;;sDACqC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const CRM_DASHBOARD_PERIODS: readonly ["7d", "30d", "90d", "custom"];
|
|
2
|
+
export type CrmDashboardPeriod = (typeof CRM_DASHBOARD_PERIODS)[number];
|
|
3
|
+
export declare class DashboardQueryDTO {
|
|
4
|
+
owner_user_id?: number;
|
|
5
|
+
period?: CrmDashboardPeriod;
|
|
6
|
+
date_from?: string;
|
|
7
|
+
date_to?: string;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=dashboard-query.dto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard-query.dto.d.ts","sourceRoot":"","sources":["../../../src/person/dto/dashboard-query.dto.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,qBAAqB,yCAA0C,CAAC;AAE7E,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE,qBAAa,iBAAiB;IAI5B,aAAa,CAAC,EAAE,MAAM,CAAC;IAIvB,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAI5B,SAAS,CAAC,EAAE,MAAM,CAAC;IAInB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.DashboardQueryDTO = exports.CRM_DASHBOARD_PERIODS = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
exports.CRM_DASHBOARD_PERIODS = ['7d', '30d', '90d', 'custom'];
|
|
16
|
+
class DashboardQueryDTO {
|
|
17
|
+
}
|
|
18
|
+
exports.DashboardQueryDTO = DashboardQueryDTO;
|
|
19
|
+
__decorate([
|
|
20
|
+
(0, class_validator_1.IsOptional)(),
|
|
21
|
+
(0, class_transformer_1.Type)(() => Number),
|
|
22
|
+
(0, class_validator_1.IsInt)(),
|
|
23
|
+
__metadata("design:type", Number)
|
|
24
|
+
], DashboardQueryDTO.prototype, "owner_user_id", void 0);
|
|
25
|
+
__decorate([
|
|
26
|
+
(0, class_validator_1.IsOptional)(),
|
|
27
|
+
(0, class_validator_1.IsIn)(exports.CRM_DASHBOARD_PERIODS),
|
|
28
|
+
__metadata("design:type", String)
|
|
29
|
+
], DashboardQueryDTO.prototype, "period", void 0);
|
|
30
|
+
__decorate([
|
|
31
|
+
(0, class_validator_1.IsOptional)(),
|
|
32
|
+
(0, class_validator_1.IsDateString)(),
|
|
33
|
+
__metadata("design:type", String)
|
|
34
|
+
], DashboardQueryDTO.prototype, "date_from", void 0);
|
|
35
|
+
__decorate([
|
|
36
|
+
(0, class_validator_1.IsOptional)(),
|
|
37
|
+
(0, class_validator_1.IsDateString)(),
|
|
38
|
+
__metadata("design:type", String)
|
|
39
|
+
], DashboardQueryDTO.prototype, "date_to", void 0);
|
|
40
|
+
//# sourceMappingURL=dashboard-query.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard-query.dto.js","sourceRoot":"","sources":["../../../src/person/dto/dashboard-query.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAAyC;AACzC,qDAAwE;AAE3D,QAAA,qBAAqB,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAU,CAAC;AAI7E,MAAa,iBAAiB;CAiB7B;AAjBD,8CAiBC;AAbC;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,uBAAK,GAAE;;wDACe;AAIvB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,sBAAI,EAAC,6BAAqB,CAAC;;iDACA;AAI5B;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,8BAAY,GAAE;;oDACI;AAInB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,8BAAY,GAAE;;kDACE"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare class FollowupListQueryDTO {
|
|
2
|
+
search?: string;
|
|
3
|
+
status?: 'all' | 'today' | 'upcoming' | 'overdue';
|
|
4
|
+
date_from?: string;
|
|
5
|
+
date_to?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class FollowupStatsQueryDTO {
|
|
8
|
+
search?: string;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=followup-query.dto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"followup-query.dto.d.ts","sourceRoot":"","sources":["../../../src/person/dto/followup-query.dto.ts"],"names":[],"mappings":"AAEA,qBAAa,oBAAoB;IAG/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAIhB,MAAM,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;IAIlD,SAAS,CAAC,EAAE,MAAM,CAAC;IAInB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,qBAAqB;IAGhC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.FollowupStatsQueryDTO = exports.FollowupListQueryDTO = void 0;
|
|
13
|
+
const class_validator_1 = require("class-validator");
|
|
14
|
+
class FollowupListQueryDTO {
|
|
15
|
+
}
|
|
16
|
+
exports.FollowupListQueryDTO = FollowupListQueryDTO;
|
|
17
|
+
__decorate([
|
|
18
|
+
(0, class_validator_1.IsOptional)(),
|
|
19
|
+
(0, class_validator_1.IsString)(),
|
|
20
|
+
__metadata("design:type", String)
|
|
21
|
+
], FollowupListQueryDTO.prototype, "search", void 0);
|
|
22
|
+
__decorate([
|
|
23
|
+
(0, class_validator_1.IsOptional)(),
|
|
24
|
+
(0, class_validator_1.IsIn)(['all', 'today', 'upcoming', 'overdue']),
|
|
25
|
+
__metadata("design:type", String)
|
|
26
|
+
], FollowupListQueryDTO.prototype, "status", void 0);
|
|
27
|
+
__decorate([
|
|
28
|
+
(0, class_validator_1.IsOptional)(),
|
|
29
|
+
(0, class_validator_1.Matches)(/^\d{4}-\d{2}-\d{2}$/),
|
|
30
|
+
__metadata("design:type", String)
|
|
31
|
+
], FollowupListQueryDTO.prototype, "date_from", void 0);
|
|
32
|
+
__decorate([
|
|
33
|
+
(0, class_validator_1.IsOptional)(),
|
|
34
|
+
(0, class_validator_1.Matches)(/^\d{4}-\d{2}-\d{2}$/),
|
|
35
|
+
__metadata("design:type", String)
|
|
36
|
+
], FollowupListQueryDTO.prototype, "date_to", void 0);
|
|
37
|
+
class FollowupStatsQueryDTO {
|
|
38
|
+
}
|
|
39
|
+
exports.FollowupStatsQueryDTO = FollowupStatsQueryDTO;
|
|
40
|
+
__decorate([
|
|
41
|
+
(0, class_validator_1.IsOptional)(),
|
|
42
|
+
(0, class_validator_1.IsString)(),
|
|
43
|
+
__metadata("design:type", String)
|
|
44
|
+
], FollowupStatsQueryDTO.prototype, "search", void 0);
|
|
45
|
+
//# sourceMappingURL=followup-query.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"followup-query.dto.js","sourceRoot":"","sources":["../../../src/person/dto/followup-query.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAsE;AAEtE,MAAa,oBAAoB;CAgBhC;AAhBD,oDAgBC;AAbC;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;oDACK;AAIhB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,sBAAI,EAAC,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;;oDACI;AAIlD;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,yBAAO,EAAC,qBAAqB,CAAC;;uDACZ;AAInB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,yBAAO,EAAC,qBAAqB,CAAC;;qDACd;AAGnB,MAAa,qBAAqB;CAIjC;AAJD,sDAIC;AADC;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;qDACK"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const CRM_REPORT_GROUP_BY: readonly ["day", "week", "month", "year"];
|
|
2
|
+
export type CrmReportGroupBy = (typeof CRM_REPORT_GROUP_BY)[number];
|
|
3
|
+
export declare class ReportsQueryDTO {
|
|
4
|
+
date_from: string;
|
|
5
|
+
date_to: string;
|
|
6
|
+
group_by: CrmReportGroupBy;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=reports-query.dto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reports-query.dto.d.ts","sourceRoot":"","sources":["../../../src/person/dto/reports-query.dto.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,mBAAmB,2CAA4C,CAAC;AAE7E,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,qBAAa,eAAe;IAK1B,SAAS,EAAE,MAAM,CAAC;IAMlB,OAAO,EAAE,MAAM,CAAC;IAKhB,QAAQ,EAAE,gBAAgB,CAAC;CAC5B"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ReportsQueryDTO = exports.CRM_REPORT_GROUP_BY = void 0;
|
|
13
|
+
const api_locale_1 = require("@hed-hog/api-locale");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
exports.CRM_REPORT_GROUP_BY = ['day', 'week', 'month', 'year'];
|
|
16
|
+
class ReportsQueryDTO {
|
|
17
|
+
}
|
|
18
|
+
exports.ReportsQueryDTO = ReportsQueryDTO;
|
|
19
|
+
__decorate([
|
|
20
|
+
(0, class_validator_1.IsDateString)({}, { message: (args) => (0, api_locale_1.getLocaleText)('validation.dateMustBeString', args.value) }),
|
|
21
|
+
__metadata("design:type", String)
|
|
22
|
+
], ReportsQueryDTO.prototype, "date_from", void 0);
|
|
23
|
+
__decorate([
|
|
24
|
+
(0, class_validator_1.IsDateString)({}, { message: (args) => (0, api_locale_1.getLocaleText)('validation.dateMustBeString', args.value) }),
|
|
25
|
+
__metadata("design:type", String)
|
|
26
|
+
], ReportsQueryDTO.prototype, "date_to", void 0);
|
|
27
|
+
__decorate([
|
|
28
|
+
(0, class_validator_1.IsIn)(exports.CRM_REPORT_GROUP_BY, {
|
|
29
|
+
message: (args) => (0, api_locale_1.getLocaleText)('validation.typeMustBeEnum', args.value),
|
|
30
|
+
}),
|
|
31
|
+
__metadata("design:type", String)
|
|
32
|
+
], ReportsQueryDTO.prototype, "group_by", void 0);
|
|
33
|
+
//# sourceMappingURL=reports-query.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reports-query.dto.js","sourceRoot":"","sources":["../../../src/person/dto/reports-query.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAoD;AACpD,qDAAqD;AAExC,QAAA,mBAAmB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAI7E,MAAa,eAAe;CAiB3B;AAjBD,0CAiBC;AAZC;IAJC,IAAA,8BAAY,EACX,EAAE,EACF,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,0BAAa,EAAC,6BAA6B,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAChF;;kDACiB;AAMlB;IAJC,IAAA,8BAAY,EACX,EAAE,EACF,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,0BAAa,EAAC,6BAA6B,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAChF;;gDACe;AAKhB;IAHC,IAAA,sBAAI,EAAC,2BAAmB,EAAE;QACzB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,0BAAa,EAAC,2BAA2B,EAAE,IAAI,CAAC,KAAK,CAAC;KAC1E,CAAC;;iDACyB"}
|