@isaiahiroko/tilmart-ngx-apps-admin 0.2.3 → 0.2.5
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/fesm2022/{isaiahiroko-tilmart-ngx-apps-admin-settings.module-Cz6xPNwB.mjs → isaiahiroko-tilmart-ngx-apps-admin-settings.module-CFVgAQ2f.mjs} +48 -4
- package/fesm2022/isaiahiroko-tilmart-ngx-apps-admin-settings.module-CFVgAQ2f.mjs.map +1 -0
- package/fesm2022/isaiahiroko-tilmart-ngx-apps-admin-staff.module-BWhhEZcd.mjs +185 -0
- package/fesm2022/isaiahiroko-tilmart-ngx-apps-admin-staff.module-BWhhEZcd.mjs.map +1 -0
- package/fesm2022/isaiahiroko-tilmart-ngx-apps-admin.mjs +12 -2
- package/fesm2022/isaiahiroko-tilmart-ngx-apps-admin.mjs.map +1 -1
- package/package.json +1 -1
- package/fesm2022/isaiahiroko-tilmart-ngx-apps-admin-settings.module-Cz6xPNwB.mjs.map +0 -1
|
@@ -5,7 +5,7 @@ import { RouterModule } from '@angular/router';
|
|
|
5
5
|
import { BaseDirective, titleCase, using, notify, SharedModule } from '@thescaffold/ngx-core';
|
|
6
6
|
import * as i2 from '@thescaffold/ngx-ui';
|
|
7
7
|
import { ElementsModule, WebgetsModule } from '@thescaffold/ngx-ui';
|
|
8
|
-
import { BehaviorSubject, takeUntil, map
|
|
8
|
+
import { BehaviorSubject, firstValueFrom, takeUntil, map } from 'rxjs';
|
|
9
9
|
import * as i1 from '@angular/forms';
|
|
10
10
|
import * as i3 from '@angular/common';
|
|
11
11
|
|
|
@@ -58,8 +58,12 @@ class SettingsComponent extends BaseDirective {
|
|
|
58
58
|
],
|
|
59
59
|
fields: [
|
|
60
60
|
{ key: 'name', label: 'Name', type: 'text', required: true },
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
// Populated from `apps/commerce/static-list-item` in `init()` below
|
|
62
|
+
// (StaticLists) — this form has no per-field dependent-options
|
|
63
|
+
// support, so LGA lists every LGA rather than just the picked
|
|
64
|
+
// state's (leave blank on the zone itself for a whole-state zone).
|
|
65
|
+
{ key: 'state', label: 'State', type: 'select', required: true, options: [] },
|
|
66
|
+
{ key: 'lga', label: 'LGA (blank = whole state)', type: 'select', options: [] },
|
|
63
67
|
],
|
|
64
68
|
data$: new BehaviorSubject(null),
|
|
65
69
|
page: 1,
|
|
@@ -163,11 +167,51 @@ class SettingsComponent extends BaseDirective {
|
|
|
163
167
|
this.init = () => {
|
|
164
168
|
for (const section of this.sections)
|
|
165
169
|
this.load(section);
|
|
170
|
+
void this.loadZoneOptions();
|
|
166
171
|
};
|
|
167
172
|
}
|
|
168
173
|
get activeSection() {
|
|
169
174
|
return this.sections.find((s) => s.key === this.active);
|
|
170
175
|
}
|
|
176
|
+
async loadZoneOptions() {
|
|
177
|
+
const zones = this.sections.find((s) => s.key === 'zones');
|
|
178
|
+
const stateField = zones.fields.find((f) => f.key === 'state');
|
|
179
|
+
const lgaField = zones.fields.find((f) => f.key === 'lga');
|
|
180
|
+
const [statesRes, lgaRows] = await Promise.all([
|
|
181
|
+
firstValueFrom(this.apiService.on('apps/commerce/static-list-item').getMany({
|
|
182
|
+
listKey: 'ng-state',
|
|
183
|
+
perPage: 200,
|
|
184
|
+
})),
|
|
185
|
+
this.fetchAllPages({ listKey: 'ng-lga' }),
|
|
186
|
+
]);
|
|
187
|
+
stateField.options = (statesRes?.data ?? []).map((r) => ({
|
|
188
|
+
value: r.code,
|
|
189
|
+
label: r.label,
|
|
190
|
+
}));
|
|
191
|
+
lgaField.options = lgaRows.map((r) => ({
|
|
192
|
+
value: r.code,
|
|
193
|
+
label: `${r.label} (${r.parentCode})`,
|
|
194
|
+
}));
|
|
195
|
+
}
|
|
196
|
+
// The CRUD list endpoint caps `perPage` at 200 server-side regardless of
|
|
197
|
+
// what's asked for — 774 LGAs need 4 pages.
|
|
198
|
+
async fetchAllPages(filter) {
|
|
199
|
+
const rows = [];
|
|
200
|
+
let page = 1;
|
|
201
|
+
for (;;) {
|
|
202
|
+
const res = await firstValueFrom(this.apiService.on('apps/commerce/static-list-item').getMany({
|
|
203
|
+
...filter,
|
|
204
|
+
page,
|
|
205
|
+
perPage: 200,
|
|
206
|
+
}));
|
|
207
|
+
const batch = res?.data ?? [];
|
|
208
|
+
rows.push(...batch);
|
|
209
|
+
if (batch.length < 200)
|
|
210
|
+
break;
|
|
211
|
+
page++;
|
|
212
|
+
}
|
|
213
|
+
return rows;
|
|
214
|
+
}
|
|
171
215
|
load(section, page = section.page, query = section.query) {
|
|
172
216
|
section.page = page;
|
|
173
217
|
section.query = query;
|
|
@@ -315,4 +359,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
315
359
|
}] });
|
|
316
360
|
|
|
317
361
|
export { SettingsModule };
|
|
318
|
-
//# sourceMappingURL=isaiahiroko-tilmart-ngx-apps-admin-settings.module-
|
|
362
|
+
//# sourceMappingURL=isaiahiroko-tilmart-ngx-apps-admin-settings.module-CFVgAQ2f.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isaiahiroko-tilmart-ngx-apps-admin-settings.module-CFVgAQ2f.mjs","sources":["../../../projects/admin/src/lib/pages/settings/settings.component.ts","../../../projects/admin/src/lib/pages/settings/settings.component.html","../../../projects/admin/src/lib/pages/settings/settings.module.ts"],"sourcesContent":["import { Component } from '@angular/core';\nimport { BaseDirective, notify, titleCase, using } from '@thescaffold/ngx-core';\nimport { BehaviorSubject, firstValueFrom, map, takeUntil } from 'rxjs';\nimport { CrudFieldSpec } from '../_shared/simple-crud.base';\n\ninterface Section {\n key: string;\n title: string;\n singularLabel: string;\n mount: string;\n columns: { key: string; value: string; type?: string; class?: string }[];\n fields: CrudFieldSpec[];\n data$: BehaviorSubject<any>;\n page: number;\n query?: string;\n}\n\n// R1 production-readiness pass — ADM-12 / ORD-05. P7.1's original\n// version stacked these four config resources as read-only lists; ops\n// had no way to add a channel, shipping zone, shipping method or return\n// policy \"without a deploy\" (ADM-12's own words). Same field-by-field\n// form idea as `SimpleCrudDirective`, adapted for four resources sharing\n// one tabbed page rather than one resource per route.\n@Component({\n standalone: false,\n selector: 'x-settings',\n templateUrl: './settings.component.html',\n styleUrl: './settings.component.scss',\n})\nexport class SettingsComponent extends BaseDirective {\n readonly sections: Section[] = [\n {\n key: 'channels',\n title: 'Channels',\n singularLabel: 'channel',\n mount: 'apps/commerce/channel',\n columns: [\n { key: 'name', value: 'Name' },\n { key: 'code', value: 'Code' },\n { key: 'currency', value: 'Currency' },\n ],\n fields: [\n { key: 'name', label: 'Name', type: 'text', required: true },\n { key: 'code', label: 'Code', type: 'text', required: true, placeholder: 'e.g. web-ng' },\n { key: 'currency', label: 'Currency', type: 'text', placeholder: 'NGN' },\n {\n key: 'taxMode',\n label: 'Tax mode',\n type: 'select',\n options: [\n { value: 'inclusive', label: 'Inclusive' },\n { value: 'exclusive', label: 'Exclusive' },\n ],\n },\n ],\n data$: new BehaviorSubject<any>(null),\n page: 1,\n },\n {\n key: 'zones',\n title: 'Shipping zones',\n singularLabel: 'shipping zone',\n mount: 'apps/commerce/delivery-zone',\n columns: [\n { key: 'name', value: 'Name' },\n { key: 'state', value: 'State' },\n { key: 'lga', value: 'LGA' },\n ],\n fields: [\n { key: 'name', label: 'Name', type: 'text', required: true },\n // Populated from `apps/commerce/static-list-item` in `init()` below\n // (StaticLists) — this form has no per-field dependent-options\n // support, so LGA lists every LGA rather than just the picked\n // state's (leave blank on the zone itself for a whole-state zone).\n { key: 'state', label: 'State', type: 'select', required: true, options: [] },\n { key: 'lga', label: 'LGA (blank = whole state)', type: 'select', options: [] },\n ],\n data$: new BehaviorSubject<any>(null),\n page: 1,\n },\n {\n key: 'methods',\n title: 'Shipping methods',\n singularLabel: 'shipping method',\n mount: 'apps/commerce/delivery-method',\n columns: [\n { key: 'name', value: 'Name' },\n { key: 'flatFee', value: 'Flat fee' },\n { key: 'perKg', value: 'Per kg' },\n {\n key: 'enabled',\n value: 'Enabled',\n type: 'class',\n class: 'badge text-bg-light border',\n },\n ],\n fields: [\n { key: 'name', label: 'Name', type: 'text', required: true },\n {\n key: 'type',\n label: 'Type',\n type: 'select',\n options: [\n { value: 'door', label: 'Door delivery' },\n { value: 'express', label: 'Express' },\n { value: 'pickup', label: 'Pickup' },\n { value: 'scheduled', label: 'Scheduled' },\n { value: 'freight', label: 'Freight' },\n ],\n },\n { key: 'estimateDaysMin', label: 'Estimate — min days', type: 'number' },\n { key: 'estimateDaysMax', label: 'Estimate — max days', type: 'number' },\n { key: 'enabled', label: 'Enabled', type: 'boolean' },\n {\n key: 'rateRules',\n label: 'Rate rules (JSON array)',\n type: 'json',\n placeholder: '[{\"zoneId\": null, \"flatFee\": 2000, \"perKg\": 150}]',\n },\n ],\n data$: new BehaviorSubject<any>(null),\n page: 1,\n },\n {\n key: 'returns',\n title: 'Return policies',\n singularLabel: 'return policy',\n mount: 'apps/commerce/return-policy',\n columns: [\n { key: 'windowDays', value: 'Window (days)' },\n { key: 'restockingFeePct', value: 'Restock fee %' },\n { key: 'whoPaysReturn', value: 'Who pays' },\n {\n key: 'enabled',\n value: 'Enabled',\n type: 'class',\n class: 'badge text-bg-light border',\n },\n ],\n fields: [\n { key: 'windowDays', label: 'Return window (days)', type: 'number', required: true },\n {\n key: 'reasonCode',\n label: 'Reason code (blank = default policy)',\n type: 'select',\n options: [\n { value: 'damaged_in_transit', label: 'Damaged in transit' },\n { value: 'wrong_item', label: 'Wrong item' },\n { value: 'not_as_described', label: 'Not as described' },\n { value: 'faulty_on_arrival', label: 'Faulty on arrival' },\n { value: 'changed_mind', label: 'Changed mind' },\n { value: 'missing_parts', label: 'Missing parts' },\n ],\n },\n { key: 'restockingFeePct', label: 'Restocking fee %', type: 'number' },\n {\n key: 'whoPaysReturn',\n label: 'Who pays for return shipping',\n type: 'select',\n options: [\n { value: 'customer', label: 'Customer' },\n { value: 'tilmart', label: 'Tilmart' },\n { value: 'seller', label: 'Seller' },\n ],\n },\n { key: 'allowChangeOfMind', label: 'Allow change-of-mind returns', type: 'boolean' },\n { key: 'enabled', label: 'Enabled', type: 'boolean' },\n ],\n data$: new BehaviorSubject<any>(null),\n page: 1,\n },\n ];\n\n active = this.sections[0].key;\n editing = false;\n saving = false;\n draft: Record<string, any> | null = null;\n\n get activeSection(): Section {\n return this.sections.find((s) => s.key === this.active)!;\n }\n\n override init = () => {\n for (const section of this.sections) this.load(section);\n void this.loadZoneOptions();\n };\n\n private async loadZoneOptions(): Promise<void> {\n const zones = this.sections.find((s) => s.key === 'zones')!;\n const stateField = zones.fields.find((f) => f.key === 'state')!;\n const lgaField = zones.fields.find((f) => f.key === 'lga')!;\n const [statesRes, lgaRows]: any[] = await Promise.all([\n firstValueFrom(\n this.apiService.on('apps/commerce/static-list-item').getMany({\n listKey: 'ng-state',\n perPage: 200,\n } as any),\n ),\n this.fetchAllPages({ listKey: 'ng-lga' }),\n ]);\n stateField.options = (statesRes?.data ?? []).map((r: any) => ({\n value: r.code,\n label: r.label,\n }));\n lgaField.options = lgaRows.map((r: any) => ({\n value: r.code,\n label: `${r.label} (${r.parentCode})`,\n }));\n }\n\n // The CRUD list endpoint caps `perPage` at 200 server-side regardless of\n // what's asked for — 774 LGAs need 4 pages.\n private async fetchAllPages(filter: Record<string, unknown>): Promise<any[]> {\n const rows: any[] = [];\n let page = 1;\n for (;;) {\n const res: any = await firstValueFrom(\n this.apiService.on('apps/commerce/static-list-item').getMany({\n ...filter,\n page,\n perPage: 200,\n } as any),\n );\n const batch = res?.data ?? [];\n rows.push(...batch);\n if (batch.length < 200) break;\n page++;\n }\n return rows;\n }\n\n private load(section: Section, page = section.page, query = section.query): void {\n section.page = page;\n section.query = query;\n const params: any = { page, perPage: 100 };\n if (query) params.query = query;\n this.apiService\n .on(section.mount)\n .getMany(params)\n .pipe(\n takeUntil(this.$),\n map((response: any) => ({\n title: titleCase(section.title),\n columns: section.columns,\n rows: response?.data,\n hasHeaders: true,\n hasTextFilter: true,\n page: response?.meta?.current_page,\n perPage: response?.meta?.per_page,\n total: response?.meta?.total,\n onPage: (p: number) => this.load(section, p, query),\n onSearch: (q: string) => this.load(section, 1, q),\n onRefresh: () => this.load(section, page, query),\n links: {\n secondary: [{ title: 'Edit', fn: (_l: any, item: any) => this.edit(item) }],\n },\n })),\n )\n .subscribe(using((data) => section.data$.next(data)));\n }\n\n selectTab(key: string): void {\n this.active = key;\n this.editing = false;\n this.draft = null;\n }\n\n startCreate(): void {\n this.editing = true;\n const draft: Record<string, any> = {};\n for (const field of this.activeSection.fields) {\n draft[field.key] = field.type === 'boolean' ? false : '';\n }\n this.draft = draft;\n }\n\n edit(item: any): void {\n this.editing = true;\n const draft = { ...item };\n for (const field of this.activeSection.fields) {\n if (field.type === 'json' && draft[field.key] != null && typeof draft[field.key] !== 'string') {\n draft[field.key] = JSON.stringify(draft[field.key], null, 2);\n }\n }\n this.draft = draft;\n }\n\n cancelEdit(): void {\n this.editing = false;\n this.draft = null;\n }\n\n async save(): Promise<void> {\n if (!this.draft) return;\n const section = this.activeSection;\n this.saving = true;\n try {\n const payload: Record<string, any> = {};\n for (const field of section.fields) {\n const raw = this.draft[field.key];\n if (field.type === 'number') {\n payload[field.key] = raw !== null && raw !== undefined && `${raw}` !== '' ? Number(raw) : undefined;\n } else if (field.type === 'boolean') {\n payload[field.key] = !!raw;\n } else if (field.type === 'json') {\n try {\n payload[field.key] = raw && `${raw}`.trim() ? JSON.parse(raw) : undefined;\n } catch {\n payload[field.key] = undefined;\n }\n } else {\n payload[field.key] = raw || undefined;\n }\n }\n\n const source = this.apiService.on(section.mount);\n if (this.draft['id']) {\n await firstValueFrom(source.update(this.draft['id'], payload));\n } else {\n await firstValueFrom(source.create(payload));\n }\n notify(`${titleCase(section.singularLabel)} saved.`, undefined, 'success');\n this.editing = false;\n this.draft = null;\n this.load(section, section.page, section.query);\n } catch {\n notify('Could not save (check required fields).', undefined, 'error');\n } finally {\n this.saving = false;\n }\n }\n\n async remove(): Promise<void> {\n if (!this.draft?.['id']) return;\n const section = this.activeSection;\n try {\n await firstValueFrom(this.apiService.on(section.mount).remove(this.draft['id']));\n notify(`${titleCase(section.singularLabel)} deleted.`, undefined, 'success');\n this.editing = false;\n this.draft = null;\n this.load(section, section.page, section.query);\n } catch {\n notify('Could not delete — it may still be referenced elsewhere.', undefined, 'error');\n }\n }\n}\n","<div class=\"x-page-head\">\n <div class=\"x-page-title\">Settings</div>\n <div class=\"x-page-subtitle\">\n Channels, shipping and returns configuration.\n </div>\n</div>\n\n<nav class=\"x-settings-tabs\">\n @for (s of sections; track s.key) {\n <button\n type=\"button\"\n class=\"x-settings-tab\"\n [class.is-active]=\"active === s.key\"\n (click)=\"selectTab(s.key)\"\n >\n {{ s.title }}\n </button>\n }\n</nav>\n\n@for (s of sections; track s.key) {\n @if (active === s.key) {\n @if (!editing) {\n <div class=\"x-settings-toolbar\">\n <button type=\"button\" class=\"x-settings-btn x-settings-btn-primary\" (click)=\"startCreate()\">\n + New {{ s.singularLabel }}\n </button>\n </div>\n @if (s.data$ | async; as list) {\n <x-webget-collection [data]=\"list\"></x-webget-collection>\n } @else {\n <x-element-loader></x-element-loader>\n }\n } @else if (draft) {\n <div class=\"x-settings-editor\">\n <div class=\"x-settings-editor-head\">\n <div class=\"x-settings-editor-title\">{{ draft['id'] ? 'Edit' : 'New' }} {{ s.singularLabel }}</div>\n <div class=\"x-settings-editor-actions\">\n @if (draft['id']) {\n <button type=\"button\" class=\"x-settings-btn x-settings-danger\" (click)=\"remove()\">Delete</button>\n }\n <button type=\"button\" class=\"x-settings-btn\" (click)=\"cancelEdit()\">Close</button>\n <button type=\"button\" class=\"x-settings-btn x-settings-btn-primary\" [disabled]=\"saving\" (click)=\"save()\">\n {{ saving ? 'Saving…' : 'Save' }}\n </button>\n </div>\n </div>\n\n <div class=\"x-settings-grid\">\n @for (f of s.fields; track f.key) {\n <label class=\"x-settings-f\" [class.x-settings-f-wide]=\"f.type === 'textarea' || f.type === 'json'\">\n {{ f.label }}\n @if (f.required) {\n <span class=\"x-settings-required\">*</span>\n }\n @switch (f.type) {\n @case ('boolean') {\n <input type=\"checkbox\" [(ngModel)]=\"draft[f.key]\" />\n }\n @case ('select') {\n <select [(ngModel)]=\"draft[f.key]\">\n <option value=\"\">— choose —</option>\n @for (opt of f.options; track opt.value) {\n <option [value]=\"opt.value\">{{ opt.label }}</option>\n }\n </select>\n }\n @case ('json') {\n <textarea rows=\"4\" class=\"x-settings-json\" [(ngModel)]=\"draft[f.key]\" [placeholder]=\"f.placeholder || '{}'\"></textarea>\n }\n @case ('number') {\n <input type=\"number\" [(ngModel)]=\"draft[f.key]\" [placeholder]=\"f.placeholder || ''\" />\n }\n @default {\n <input type=\"text\" [(ngModel)]=\"draft[f.key]\" [placeholder]=\"f.placeholder || ''\" />\n }\n }\n </label>\n }\n </div>\n </div>\n }\n }\n}\n\n<div class=\"x-settings-more\">\n <p>\n <strong>Users & roles</strong> —\n <a routerLink=\"/admin/users\">manage accounts</a>.\n </p>\n <p>\n <strong>Notifications</strong> — transactional and marketing templates\n are seeded per environment (NotificationTemplates); per-customer\n preferences are on the customer record.\n </p>\n <p class=\"x-settings-audit\">\n <strong>Audit log</strong> — every privileged action is recorded\n (ntx-apps-audit); <a routerLink=\"/admin/audit\">open the viewer</a>.\n </p>\n</div>\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '@thescaffold/ngx-core';\nimport { ElementsModule, WebgetsModule } from '@thescaffold/ngx-ui';\nimport { SettingsComponent } from './settings.component';\n\n@NgModule({\n declarations: [SettingsComponent],\n imports: [\n SharedModule,\n ElementsModule,\n WebgetsModule,\n RouterModule.forChild([{ path: '', component: SettingsComponent }]),\n ],\n})\nexport class SettingsModule {}\n"],"names":["i2","i3","i4","i1"],"mappings":"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"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Component, NgModule } from '@angular/core';
|
|
3
|
+
import * as i1$1 from '@angular/router';
|
|
4
|
+
import { RouterModule } from '@angular/router';
|
|
5
|
+
import { using, notify, SharedModule } from '@thescaffold/ngx-core';
|
|
6
|
+
import * as i2 from '@thescaffold/ngx-ui';
|
|
7
|
+
import { ElementsModule, WebgetsModule } from '@thescaffold/ngx-ui';
|
|
8
|
+
import { takeUntil } from 'rxjs';
|
|
9
|
+
import { L as ListPageDirective } from './isaiahiroko-tilmart-ngx-apps-admin-list-page.base-Cl7JZ-Tp.mjs';
|
|
10
|
+
import * as i1 from '@angular/forms';
|
|
11
|
+
import * as i3 from '@angular/common';
|
|
12
|
+
|
|
13
|
+
// Staff (admin dashboard accounts) — super admin only. Backed by
|
|
14
|
+
// `apps/admin/staff` (libs/admin), which enforces the super-admin check
|
|
15
|
+
// server-side; the nav entry and route are only a courtesy. Roles offered
|
|
16
|
+
// here are the existing platform RoleTypes (support agent, catalogue
|
|
17
|
+
// manager, order manager, finance manager, super administrator) — the
|
|
18
|
+
// permission strings shown under each are the ones that role already
|
|
19
|
+
// carries, not something this page defines.
|
|
20
|
+
class StaffComponent extends ListPageDirective {
|
|
21
|
+
constructor() {
|
|
22
|
+
super(...arguments);
|
|
23
|
+
this.pluralName = 'staff';
|
|
24
|
+
this.dataSource = this.apiService.on('apps/admin/staff');
|
|
25
|
+
this.columns = [
|
|
26
|
+
{ key: 'name', value: 'Name' },
|
|
27
|
+
{ key: 'ref', value: 'Email' },
|
|
28
|
+
{ key: 'roleLabel', value: 'Roles' },
|
|
29
|
+
{ key: 'statusLabel', value: 'Status', type: 'class', class: 'badge text-bg-light border' },
|
|
30
|
+
{ key: 'createdAt', value: 'Added', type: 'date' },
|
|
31
|
+
];
|
|
32
|
+
this.roles = [];
|
|
33
|
+
this.mode = null;
|
|
34
|
+
this.saving = false;
|
|
35
|
+
this.draft = null;
|
|
36
|
+
// Shown once after a create that generated the password server-side.
|
|
37
|
+
this.created = null;
|
|
38
|
+
this.init = () => {
|
|
39
|
+
this.apiService
|
|
40
|
+
.get('apps/admin/staff/roles')
|
|
41
|
+
.pipe(takeUntil(this.$))
|
|
42
|
+
.subscribe(using((res) => (this.roles = res?.data ?? [])));
|
|
43
|
+
this.list();
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
mapRow(row) {
|
|
47
|
+
return {
|
|
48
|
+
...row,
|
|
49
|
+
name: [row.firstName, row.lastName].filter(Boolean).join(' ') || '—',
|
|
50
|
+
roleLabel: (row.roles ?? []).map((r) => this.roleTitle(r)).join(', '),
|
|
51
|
+
statusLabel: row.suspended ? 'Suspended' : 'Active',
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
extraCollectionFields() {
|
|
55
|
+
return {
|
|
56
|
+
links: {
|
|
57
|
+
secondary: [
|
|
58
|
+
{ title: 'Edit roles', fn: (_link, item) => this.editRoles(item) },
|
|
59
|
+
{
|
|
60
|
+
title: 'Suspend / reactivate',
|
|
61
|
+
fn: (_link, item) => this.toggleSuspended(item),
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
roleTitle(role) {
|
|
68
|
+
if (role.name === 'global_admin')
|
|
69
|
+
return 'Super administrator';
|
|
70
|
+
if (role.title)
|
|
71
|
+
return role.title;
|
|
72
|
+
const words = role.name.replace(/_/g, ' ');
|
|
73
|
+
return words.charAt(0).toUpperCase() + words.slice(1);
|
|
74
|
+
}
|
|
75
|
+
startCreate() {
|
|
76
|
+
this.created = null;
|
|
77
|
+
this.mode = 'create';
|
|
78
|
+
this.draft = { email: '', firstName: '', lastName: '', password: '', roleTypeIds: [] };
|
|
79
|
+
}
|
|
80
|
+
editRoles(item) {
|
|
81
|
+
this.created = null;
|
|
82
|
+
this.mode = 'roles';
|
|
83
|
+
this.draft = {
|
|
84
|
+
id: item.id,
|
|
85
|
+
ref: item.ref,
|
|
86
|
+
email: item.ref,
|
|
87
|
+
firstName: item.firstName ?? '',
|
|
88
|
+
lastName: item.lastName ?? '',
|
|
89
|
+
password: '',
|
|
90
|
+
roleTypeIds: (item.roles ?? []).map((r) => r.id),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
cancel() {
|
|
94
|
+
this.mode = null;
|
|
95
|
+
this.draft = null;
|
|
96
|
+
}
|
|
97
|
+
hasRole(id) {
|
|
98
|
+
return !!this.draft?.roleTypeIds.includes(id);
|
|
99
|
+
}
|
|
100
|
+
toggleRole(id) {
|
|
101
|
+
if (!this.draft)
|
|
102
|
+
return;
|
|
103
|
+
const ids = this.draft.roleTypeIds;
|
|
104
|
+
this.draft.roleTypeIds = ids.includes(id) ? ids.filter((r) => r !== id) : [...ids, id];
|
|
105
|
+
}
|
|
106
|
+
save() {
|
|
107
|
+
if (!this.draft || this.saving)
|
|
108
|
+
return;
|
|
109
|
+
const d = this.draft;
|
|
110
|
+
if (!d.roleTypeIds.length) {
|
|
111
|
+
notify('Assign at least one role.', undefined, 'error');
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const request$ = this.mode === 'create'
|
|
115
|
+
? this.apiService.post('apps/admin/staff', {
|
|
116
|
+
email: d.email,
|
|
117
|
+
firstName: d.firstName,
|
|
118
|
+
lastName: d.lastName,
|
|
119
|
+
...(d.password ? { password: d.password } : {}),
|
|
120
|
+
roleTypeIds: d.roleTypeIds,
|
|
121
|
+
})
|
|
122
|
+
: this.apiService.patch(`apps/admin/staff/${d.id}/roles`, { roleTypeIds: d.roleTypeIds });
|
|
123
|
+
this.saving = true;
|
|
124
|
+
request$.pipe(takeUntil(this.$)).subscribe({
|
|
125
|
+
next: (res) => {
|
|
126
|
+
this.saving = false;
|
|
127
|
+
if (this.mode === 'create' && res?.data?.temporaryPassword) {
|
|
128
|
+
this.created = { ref: res.data.ref, password: res.data.temporaryPassword };
|
|
129
|
+
}
|
|
130
|
+
notify(this.mode === 'create' ? 'Staff account created.' : 'Roles updated.', undefined, 'success');
|
|
131
|
+
this.cancel();
|
|
132
|
+
this.list(this.page, this.perPage, this.query);
|
|
133
|
+
},
|
|
134
|
+
error: (err) => {
|
|
135
|
+
this.saving = false;
|
|
136
|
+
notify(err?.error?.message || 'Could not save.', undefined, 'error');
|
|
137
|
+
},
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
toggleSuspended(item) {
|
|
141
|
+
const action = item.suspended ? 'unsuspend' : 'suspend';
|
|
142
|
+
this.apiService
|
|
143
|
+
.patch(`apps/admin/staff/${item.id}/${action}`, {})
|
|
144
|
+
.pipe(takeUntil(this.$))
|
|
145
|
+
.subscribe({
|
|
146
|
+
next: () => {
|
|
147
|
+
notify(item.suspended ? 'Account reactivated.' : 'Account suspended.', undefined, 'success');
|
|
148
|
+
this.list(this.page, this.perPage, this.query);
|
|
149
|
+
},
|
|
150
|
+
error: (err) => notify(err?.error?.message || 'Could not update the account.', undefined, 'error'),
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: StaffComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
154
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: StaffComponent, isStandalone: false, selector: "x-staff", usesInheritance: true, ngImport: i0, template: "<div class=\"x-page-head\">\n <div class=\"x-page-title\">Staff</div>\n <div class=\"x-page-subtitle\">\n Back-office accounts and the roles that decide what each can do in the admin console. Super administrators only.\n </div>\n</div>\n\n@if (created) {\n <div class=\"x-scrud-editor\" style=\"margin-bottom: 14px\">\n <div class=\"x-scrud-editor-title\">Account created for {{ created.ref }}</div>\n <div class=\"x-page-subtitle\">\n Temporary password (shown once \u2014 copy it now and share it securely):\n <code>{{ created.password }}</code>\n </div>\n <div class=\"x-scrud-editor-actions\">\n <button type=\"button\" class=\"x-scrud-btn\" (click)=\"created = null\">Dismiss</button>\n </div>\n </div>\n}\n\n@if (!mode) {\n <div class=\"x-scrud-toolbar\">\n <button type=\"button\" class=\"x-scrud-btn x-scrud-btn-primary\" (click)=\"startCreate()\">+ New staff member</button>\n </div>\n\n @if (list$ | async; as list) {\n <x-webget-collection [data]=\"list\"></x-webget-collection>\n } @else {\n <x-element-loader></x-element-loader>\n }\n} @else if (draft) {\n <div class=\"x-scrud-editor\">\n <div class=\"x-scrud-editor-head\">\n <div class=\"x-scrud-editor-title\">\n {{ mode === 'create' ? 'New staff member' : 'Roles for ' + draft.ref }}\n </div>\n <div class=\"x-scrud-editor-actions\">\n <button type=\"button\" class=\"x-scrud-btn\" (click)=\"cancel()\">Close</button>\n <button type=\"button\" class=\"x-scrud-btn x-scrud-btn-primary\" [disabled]=\"saving\" (click)=\"save()\">\n {{ saving ? 'Saving\u2026' : 'Save' }}\n </button>\n </div>\n </div>\n\n @if (mode === 'create') {\n <div class=\"x-scrud-grid\">\n <label class=\"x-scrud-f\">\n First name <span class=\"x-scrud-required\">*</span>\n <input type=\"text\" [(ngModel)]=\"draft.firstName\" />\n </label>\n <label class=\"x-scrud-f\">\n Last name <span class=\"x-scrud-required\">*</span>\n <input type=\"text\" [(ngModel)]=\"draft.lastName\" />\n </label>\n <label class=\"x-scrud-f\">\n Email <span class=\"x-scrud-required\">*</span>\n <input type=\"email\" [(ngModel)]=\"draft.email\" autocomplete=\"off\" />\n </label>\n <label class=\"x-scrud-f\">\n Initial password\n <input type=\"text\" [(ngModel)]=\"draft.password\" placeholder=\"Leave blank to generate one\" autocomplete=\"off\" />\n </label>\n </div>\n }\n\n <div class=\"x-scrud-f\">\n Roles <span class=\"x-scrud-required\">*</span>\n @for (role of roles; track role.id) {\n <label style=\"display: flex; gap: 8px; align-items: flex-start; font-weight: 400; margin-top: 6px\">\n <input type=\"checkbox\" [checked]=\"hasRole(role.id)\" (change)=\"toggleRole(role.id)\" style=\"margin-top: 3px\" />\n <span>\n <strong>{{ roleTitle(role) }}</strong>\n @if (role.superAdmin) {\n <span class=\"badge text-bg-light border\" style=\"margin-left: 6px\">can manage staff</span>\n }\n <span style=\"display: block; font-size: 11.5px; color: var(--color-text-muted)\">\n {{ role.permissions.length }} permission{{ role.permissions.length === 1 ? '' : 's' }}\n </span>\n </span>\n </label>\n }\n </div>\n </div>\n}\n", styles: [".x-page-head{margin-bottom:20px}.x-page-title{font-size:24px;font-weight:800;color:var(--color-text)}.x-page-subtitle{font-size:13.5px;color:var(--color-text-muted);margin-top:2px}.x-scrud-toolbar{display:flex;justify-content:flex-end;margin-bottom:14px}.x-scrud-btn{border:1px solid var(--color-border);background:transparent;border-radius:var(--radius-md);padding:6px 14px;font-size:12.5px;font-weight:700;cursor:pointer;color:var(--color-text-muted)}.x-scrud-btn:disabled{opacity:.5;cursor:default}.x-scrud-btn-primary{border-color:var(--color-accent);color:var(--color-accent-hover)}.x-scrud-danger{color:var(--color-danger, #c0362c)}.x-scrud-editor{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:16px;display:flex;flex-direction:column;gap:14px}.x-scrud-editor-head{display:flex;align-items:center;justify-content:space-between}.x-scrud-editor-title{font-size:16px;font-weight:800;color:var(--color-text)}.x-scrud-editor-actions{display:flex;gap:8px}.x-scrud-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.x-scrud-f{display:flex;flex-direction:column;gap:4px;font-size:11.5px;color:var(--color-text-muted);font-weight:700}.x-scrud-f-wide{grid-column:1/-1}.x-scrud-f input,.x-scrud-f select,.x-scrud-f textarea{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:6px 10px;font-size:13px;background:var(--color-surface);color:var(--color-text);font-weight:400}.x-scrud-f input[type=checkbox]{width:18px;height:18px}.x-scrud-json{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.x-scrud-required{color:var(--color-danger, #c0362c)}\n"], dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.LoaderComponent, selector: "x-element-loader", inputs: ["data"] }, { kind: "component", type: i2.CollectionComponent, selector: "x-webget-collection", inputs: ["data"], outputs: ["search", "filter", "refresh", "select", "page", "show"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
|
|
155
|
+
}
|
|
156
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: StaffComponent, decorators: [{
|
|
157
|
+
type: Component,
|
|
158
|
+
args: [{ standalone: false, selector: 'x-staff', template: "<div class=\"x-page-head\">\n <div class=\"x-page-title\">Staff</div>\n <div class=\"x-page-subtitle\">\n Back-office accounts and the roles that decide what each can do in the admin console. Super administrators only.\n </div>\n</div>\n\n@if (created) {\n <div class=\"x-scrud-editor\" style=\"margin-bottom: 14px\">\n <div class=\"x-scrud-editor-title\">Account created for {{ created.ref }}</div>\n <div class=\"x-page-subtitle\">\n Temporary password (shown once \u2014 copy it now and share it securely):\n <code>{{ created.password }}</code>\n </div>\n <div class=\"x-scrud-editor-actions\">\n <button type=\"button\" class=\"x-scrud-btn\" (click)=\"created = null\">Dismiss</button>\n </div>\n </div>\n}\n\n@if (!mode) {\n <div class=\"x-scrud-toolbar\">\n <button type=\"button\" class=\"x-scrud-btn x-scrud-btn-primary\" (click)=\"startCreate()\">+ New staff member</button>\n </div>\n\n @if (list$ | async; as list) {\n <x-webget-collection [data]=\"list\"></x-webget-collection>\n } @else {\n <x-element-loader></x-element-loader>\n }\n} @else if (draft) {\n <div class=\"x-scrud-editor\">\n <div class=\"x-scrud-editor-head\">\n <div class=\"x-scrud-editor-title\">\n {{ mode === 'create' ? 'New staff member' : 'Roles for ' + draft.ref }}\n </div>\n <div class=\"x-scrud-editor-actions\">\n <button type=\"button\" class=\"x-scrud-btn\" (click)=\"cancel()\">Close</button>\n <button type=\"button\" class=\"x-scrud-btn x-scrud-btn-primary\" [disabled]=\"saving\" (click)=\"save()\">\n {{ saving ? 'Saving\u2026' : 'Save' }}\n </button>\n </div>\n </div>\n\n @if (mode === 'create') {\n <div class=\"x-scrud-grid\">\n <label class=\"x-scrud-f\">\n First name <span class=\"x-scrud-required\">*</span>\n <input type=\"text\" [(ngModel)]=\"draft.firstName\" />\n </label>\n <label class=\"x-scrud-f\">\n Last name <span class=\"x-scrud-required\">*</span>\n <input type=\"text\" [(ngModel)]=\"draft.lastName\" />\n </label>\n <label class=\"x-scrud-f\">\n Email <span class=\"x-scrud-required\">*</span>\n <input type=\"email\" [(ngModel)]=\"draft.email\" autocomplete=\"off\" />\n </label>\n <label class=\"x-scrud-f\">\n Initial password\n <input type=\"text\" [(ngModel)]=\"draft.password\" placeholder=\"Leave blank to generate one\" autocomplete=\"off\" />\n </label>\n </div>\n }\n\n <div class=\"x-scrud-f\">\n Roles <span class=\"x-scrud-required\">*</span>\n @for (role of roles; track role.id) {\n <label style=\"display: flex; gap: 8px; align-items: flex-start; font-weight: 400; margin-top: 6px\">\n <input type=\"checkbox\" [checked]=\"hasRole(role.id)\" (change)=\"toggleRole(role.id)\" style=\"margin-top: 3px\" />\n <span>\n <strong>{{ roleTitle(role) }}</strong>\n @if (role.superAdmin) {\n <span class=\"badge text-bg-light border\" style=\"margin-left: 6px\">can manage staff</span>\n }\n <span style=\"display: block; font-size: 11.5px; color: var(--color-text-muted)\">\n {{ role.permissions.length }} permission{{ role.permissions.length === 1 ? '' : 's' }}\n </span>\n </span>\n </label>\n }\n </div>\n </div>\n}\n", styles: [".x-page-head{margin-bottom:20px}.x-page-title{font-size:24px;font-weight:800;color:var(--color-text)}.x-page-subtitle{font-size:13.5px;color:var(--color-text-muted);margin-top:2px}.x-scrud-toolbar{display:flex;justify-content:flex-end;margin-bottom:14px}.x-scrud-btn{border:1px solid var(--color-border);background:transparent;border-radius:var(--radius-md);padding:6px 14px;font-size:12.5px;font-weight:700;cursor:pointer;color:var(--color-text-muted)}.x-scrud-btn:disabled{opacity:.5;cursor:default}.x-scrud-btn-primary{border-color:var(--color-accent);color:var(--color-accent-hover)}.x-scrud-danger{color:var(--color-danger, #c0362c)}.x-scrud-editor{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:16px;display:flex;flex-direction:column;gap:14px}.x-scrud-editor-head{display:flex;align-items:center;justify-content:space-between}.x-scrud-editor-title{font-size:16px;font-weight:800;color:var(--color-text)}.x-scrud-editor-actions{display:flex;gap:8px}.x-scrud-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.x-scrud-f{display:flex;flex-direction:column;gap:4px;font-size:11.5px;color:var(--color-text-muted);font-weight:700}.x-scrud-f-wide{grid-column:1/-1}.x-scrud-f input,.x-scrud-f select,.x-scrud-f textarea{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:6px 10px;font-size:13px;background:var(--color-surface);color:var(--color-text);font-weight:400}.x-scrud-f input[type=checkbox]{width:18px;height:18px}.x-scrud-json{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.x-scrud-required{color:var(--color-danger, #c0362c)}\n"] }]
|
|
159
|
+
}] });
|
|
160
|
+
|
|
161
|
+
class StaffModule {
|
|
162
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: StaffModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
163
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.16", ngImport: i0, type: StaffModule, declarations: [StaffComponent], imports: [SharedModule,
|
|
164
|
+
ElementsModule,
|
|
165
|
+
WebgetsModule, i1$1.RouterModule] }); }
|
|
166
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: StaffModule, imports: [SharedModule,
|
|
167
|
+
ElementsModule,
|
|
168
|
+
WebgetsModule,
|
|
169
|
+
RouterModule.forChild([{ path: '', component: StaffComponent }])] }); }
|
|
170
|
+
}
|
|
171
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: StaffModule, decorators: [{
|
|
172
|
+
type: NgModule,
|
|
173
|
+
args: [{
|
|
174
|
+
declarations: [StaffComponent],
|
|
175
|
+
imports: [
|
|
176
|
+
SharedModule,
|
|
177
|
+
ElementsModule,
|
|
178
|
+
WebgetsModule,
|
|
179
|
+
RouterModule.forChild([{ path: '', component: StaffComponent }]),
|
|
180
|
+
],
|
|
181
|
+
}]
|
|
182
|
+
}] });
|
|
183
|
+
|
|
184
|
+
export { StaffModule };
|
|
185
|
+
//# sourceMappingURL=isaiahiroko-tilmart-ngx-apps-admin-staff.module-BWhhEZcd.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isaiahiroko-tilmart-ngx-apps-admin-staff.module-BWhhEZcd.mjs","sources":["../../../projects/admin/src/lib/pages/staff/staff.component.ts","../../../projects/admin/src/lib/pages/staff/staff.component.html","../../../projects/admin/src/lib/pages/staff/staff.module.ts"],"sourcesContent":["import { Component } from '@angular/core';\nimport { notify, using } from '@thescaffold/ngx-core';\nimport { takeUntil } from 'rxjs';\nimport { ListPageDirective } from '../_shared/list-page.base';\n\ninterface StaffRole {\n id: string;\n name: string;\n title: string;\n permissions: string[];\n superAdmin: boolean;\n}\n\n// Staff (admin dashboard accounts) — super admin only. Backed by\n// `apps/admin/staff` (libs/admin), which enforces the super-admin check\n// server-side; the nav entry and route are only a courtesy. Roles offered\n// here are the existing platform RoleTypes (support agent, catalogue\n// manager, order manager, finance manager, super administrator) — the\n// permission strings shown under each are the ones that role already\n// carries, not something this page defines.\n@Component({\n standalone: false,\n selector: 'x-staff',\n templateUrl: './staff.component.html',\n styleUrl: '../_shared/simple-crud.component.scss',\n})\nexport class StaffComponent extends ListPageDirective {\n protected pluralName = 'staff';\n protected dataSource = this.apiService.on('apps/admin/staff');\n\n protected columns = [\n { key: 'name', value: 'Name' },\n { key: 'ref', value: 'Email' },\n { key: 'roleLabel', value: 'Roles' },\n { key: 'statusLabel', value: 'Status', type: 'class', class: 'badge text-bg-light border' },\n { key: 'createdAt', value: 'Added', type: 'date' },\n ];\n\n roles: StaffRole[] = [];\n mode: 'create' | 'roles' | null = null;\n saving = false;\n draft: { id?: string; ref?: string; email: string; firstName: string; lastName: string; password: string; roleTypeIds: string[] } | null = null;\n // Shown once after a create that generated the password server-side.\n created: { ref: string; password: string } | null = null;\n\n override init = () => {\n this.apiService\n .get('apps/admin/staff/roles')\n .pipe(takeUntil(this.$))\n .subscribe(using((res: any) => (this.roles = res?.data ?? [])));\n this.list();\n };\n\n protected override mapRow(row: any) {\n return {\n ...row,\n name: [row.firstName, row.lastName].filter(Boolean).join(' ') || '—',\n roleLabel: (row.roles ?? []).map((r: any) => this.roleTitle(r)).join(', '),\n statusLabel: row.suspended ? 'Suspended' : 'Active',\n };\n }\n\n protected override extraCollectionFields() {\n return {\n links: {\n secondary: [\n { title: 'Edit roles', fn: (_link: any, item: any) => this.editRoles(item) },\n {\n title: 'Suspend / reactivate',\n fn: (_link: any, item: any) => this.toggleSuspended(item),\n },\n ],\n },\n };\n }\n\n roleTitle(role: { name: string; title?: string }): string {\n if (role.name === 'global_admin') return 'Super administrator';\n if (role.title) return role.title;\n const words = role.name.replace(/_/g, ' ');\n return words.charAt(0).toUpperCase() + words.slice(1);\n }\n\n startCreate(): void {\n this.created = null;\n this.mode = 'create';\n this.draft = { email: '', firstName: '', lastName: '', password: '', roleTypeIds: [] };\n }\n\n editRoles(item: any): void {\n this.created = null;\n this.mode = 'roles';\n this.draft = {\n id: item.id,\n ref: item.ref,\n email: item.ref,\n firstName: item.firstName ?? '',\n lastName: item.lastName ?? '',\n password: '',\n roleTypeIds: (item.roles ?? []).map((r: any) => r.id),\n };\n }\n\n cancel(): void {\n this.mode = null;\n this.draft = null;\n }\n\n hasRole(id: string): boolean {\n return !!this.draft?.roleTypeIds.includes(id);\n }\n\n toggleRole(id: string): void {\n if (!this.draft) return;\n const ids = this.draft.roleTypeIds;\n this.draft.roleTypeIds = ids.includes(id) ? ids.filter((r) => r !== id) : [...ids, id];\n }\n\n save(): void {\n if (!this.draft || this.saving) return;\n const d = this.draft;\n if (!d.roleTypeIds.length) {\n notify('Assign at least one role.', undefined, 'error');\n return;\n }\n const request$ =\n this.mode === 'create'\n ? this.apiService.post('apps/admin/staff', {\n email: d.email,\n firstName: d.firstName,\n lastName: d.lastName,\n ...(d.password ? { password: d.password } : {}),\n roleTypeIds: d.roleTypeIds,\n })\n : this.apiService.patch(`apps/admin/staff/${d.id}/roles`, { roleTypeIds: d.roleTypeIds });\n\n this.saving = true;\n request$.pipe(takeUntil(this.$)).subscribe({\n next: (res: any) => {\n this.saving = false;\n if (this.mode === 'create' && res?.data?.temporaryPassword) {\n this.created = { ref: res.data.ref, password: res.data.temporaryPassword };\n }\n notify(this.mode === 'create' ? 'Staff account created.' : 'Roles updated.', undefined, 'success');\n this.cancel();\n this.list(this.page, this.perPage, this.query);\n },\n error: (err: any) => {\n this.saving = false;\n notify(err?.error?.message || 'Could not save.', undefined, 'error');\n },\n });\n }\n\n toggleSuspended(item: any): void {\n const action = item.suspended ? 'unsuspend' : 'suspend';\n this.apiService\n .patch(`apps/admin/staff/${item.id}/${action}`, {})\n .pipe(takeUntil(this.$))\n .subscribe({\n next: () => {\n notify(item.suspended ? 'Account reactivated.' : 'Account suspended.', undefined, 'success');\n this.list(this.page, this.perPage, this.query);\n },\n error: (err: any) => notify(err?.error?.message || 'Could not update the account.', undefined, 'error'),\n });\n }\n}\n","<div class=\"x-page-head\">\n <div class=\"x-page-title\">Staff</div>\n <div class=\"x-page-subtitle\">\n Back-office accounts and the roles that decide what each can do in the admin console. Super administrators only.\n </div>\n</div>\n\n@if (created) {\n <div class=\"x-scrud-editor\" style=\"margin-bottom: 14px\">\n <div class=\"x-scrud-editor-title\">Account created for {{ created.ref }}</div>\n <div class=\"x-page-subtitle\">\n Temporary password (shown once — copy it now and share it securely):\n <code>{{ created.password }}</code>\n </div>\n <div class=\"x-scrud-editor-actions\">\n <button type=\"button\" class=\"x-scrud-btn\" (click)=\"created = null\">Dismiss</button>\n </div>\n </div>\n}\n\n@if (!mode) {\n <div class=\"x-scrud-toolbar\">\n <button type=\"button\" class=\"x-scrud-btn x-scrud-btn-primary\" (click)=\"startCreate()\">+ New staff member</button>\n </div>\n\n @if (list$ | async; as list) {\n <x-webget-collection [data]=\"list\"></x-webget-collection>\n } @else {\n <x-element-loader></x-element-loader>\n }\n} @else if (draft) {\n <div class=\"x-scrud-editor\">\n <div class=\"x-scrud-editor-head\">\n <div class=\"x-scrud-editor-title\">\n {{ mode === 'create' ? 'New staff member' : 'Roles for ' + draft.ref }}\n </div>\n <div class=\"x-scrud-editor-actions\">\n <button type=\"button\" class=\"x-scrud-btn\" (click)=\"cancel()\">Close</button>\n <button type=\"button\" class=\"x-scrud-btn x-scrud-btn-primary\" [disabled]=\"saving\" (click)=\"save()\">\n {{ saving ? 'Saving…' : 'Save' }}\n </button>\n </div>\n </div>\n\n @if (mode === 'create') {\n <div class=\"x-scrud-grid\">\n <label class=\"x-scrud-f\">\n First name <span class=\"x-scrud-required\">*</span>\n <input type=\"text\" [(ngModel)]=\"draft.firstName\" />\n </label>\n <label class=\"x-scrud-f\">\n Last name <span class=\"x-scrud-required\">*</span>\n <input type=\"text\" [(ngModel)]=\"draft.lastName\" />\n </label>\n <label class=\"x-scrud-f\">\n Email <span class=\"x-scrud-required\">*</span>\n <input type=\"email\" [(ngModel)]=\"draft.email\" autocomplete=\"off\" />\n </label>\n <label class=\"x-scrud-f\">\n Initial password\n <input type=\"text\" [(ngModel)]=\"draft.password\" placeholder=\"Leave blank to generate one\" autocomplete=\"off\" />\n </label>\n </div>\n }\n\n <div class=\"x-scrud-f\">\n Roles <span class=\"x-scrud-required\">*</span>\n @for (role of roles; track role.id) {\n <label style=\"display: flex; gap: 8px; align-items: flex-start; font-weight: 400; margin-top: 6px\">\n <input type=\"checkbox\" [checked]=\"hasRole(role.id)\" (change)=\"toggleRole(role.id)\" style=\"margin-top: 3px\" />\n <span>\n <strong>{{ roleTitle(role) }}</strong>\n @if (role.superAdmin) {\n <span class=\"badge text-bg-light border\" style=\"margin-left: 6px\">can manage staff</span>\n }\n <span style=\"display: block; font-size: 11.5px; color: var(--color-text-muted)\">\n {{ role.permissions.length }} permission{{ role.permissions.length === 1 ? '' : 's' }}\n </span>\n </span>\n </label>\n }\n </div>\n </div>\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '@thescaffold/ngx-core';\nimport { ElementsModule, WebgetsModule } from '@thescaffold/ngx-ui';\nimport { StaffComponent } from './staff.component';\n\n@NgModule({\n declarations: [StaffComponent],\n imports: [\n SharedModule,\n ElementsModule,\n WebgetsModule,\n RouterModule.forChild([{ path: '', component: StaffComponent }]),\n ],\n})\nexport class StaffModule {}\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -199,6 +199,11 @@ class PagesModule {
|
|
|
199
199
|
path: 'navigation',
|
|
200
200
|
loadChildren: () => import('./isaiahiroko-tilmart-ngx-apps-admin-navigation.module-De1Cvqqa.mjs').then((m) => m.NavigationModule),
|
|
201
201
|
},
|
|
202
|
+
{
|
|
203
|
+
// Super-admin-only staff (admin account) management.
|
|
204
|
+
path: 'staff',
|
|
205
|
+
loadChildren: () => import('./isaiahiroko-tilmart-ngx-apps-admin-staff.module-BWhhEZcd.mjs').then((m) => m.StaffModule),
|
|
206
|
+
},
|
|
202
207
|
{
|
|
203
208
|
path: 'users',
|
|
204
209
|
loadChildren: () => import('./isaiahiroko-tilmart-ngx-apps-admin-users.module-C31RJJJ_.mjs').then((m) => m.UsersModule),
|
|
@@ -248,7 +253,7 @@ class PagesModule {
|
|
|
248
253
|
},
|
|
249
254
|
{
|
|
250
255
|
path: 'settings',
|
|
251
|
-
loadChildren: () => import('./isaiahiroko-tilmart-ngx-apps-admin-settings.module-
|
|
256
|
+
loadChildren: () => import('./isaiahiroko-tilmart-ngx-apps-admin-settings.module-CFVgAQ2f.mjs').then((m) => m.SettingsModule),
|
|
252
257
|
},
|
|
253
258
|
{
|
|
254
259
|
// P7.3 — queues + SLA board, cron catalogue.
|
|
@@ -389,6 +394,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
389
394
|
path: 'navigation',
|
|
390
395
|
loadChildren: () => import('./isaiahiroko-tilmart-ngx-apps-admin-navigation.module-De1Cvqqa.mjs').then((m) => m.NavigationModule),
|
|
391
396
|
},
|
|
397
|
+
{
|
|
398
|
+
// Super-admin-only staff (admin account) management.
|
|
399
|
+
path: 'staff',
|
|
400
|
+
loadChildren: () => import('./isaiahiroko-tilmart-ngx-apps-admin-staff.module-BWhhEZcd.mjs').then((m) => m.StaffModule),
|
|
401
|
+
},
|
|
392
402
|
{
|
|
393
403
|
path: 'users',
|
|
394
404
|
loadChildren: () => import('./isaiahiroko-tilmart-ngx-apps-admin-users.module-C31RJJJ_.mjs').then((m) => m.UsersModule),
|
|
@@ -438,7 +448,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
438
448
|
},
|
|
439
449
|
{
|
|
440
450
|
path: 'settings',
|
|
441
|
-
loadChildren: () => import('./isaiahiroko-tilmart-ngx-apps-admin-settings.module-
|
|
451
|
+
loadChildren: () => import('./isaiahiroko-tilmart-ngx-apps-admin-settings.module-CFVgAQ2f.mjs').then((m) => m.SettingsModule),
|
|
442
452
|
},
|
|
443
453
|
{
|
|
444
454
|
// P7.3 — queues + SLA board, cron catalogue.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isaiahiroko-tilmart-ngx-apps-admin.mjs","sources":["../../../projects/admin/src/lib/app.config.ts","../../../projects/admin/src/lib/pages/pages.component.ts","../../../projects/admin/src/lib/pages/pages.module.ts","../../../projects/admin/src/lib/app.module.ts","../../../projects/admin/src/lib/index.ts","../../../projects/admin/src/public-api.ts","../../../projects/admin/src/isaiahiroko-tilmart-ngx-apps-admin.ts"],"sourcesContent":["import { getClientId, getEnv, translate } from '@thescaffold/ngx-core';\nimport { AppDataContract } from '@thescaffold/ngx-ui';\n\nexport const config: () => AppDataContract = () => ({\n name: getEnv('APP_NAME'),\n desc: getEnv('APP_DESC'),\n url: getEnv('APP_URL'),\n logo: getEnv('APP_LOGO'),\n business: {\n name: getEnv('BUSINESS_NAME'),\n desc: getEnv('BUSINESS_DESC'),\n url: getEnv('BUSINESS_URL'),\n },\n group: {\n name: getEnv('GROUP_NAME'),\n desc: getEnv('GROUP_DESC'),\n url: getEnv('GROUP_URL'),\n },\n app: {\n name: getEnv('APP_NAME'),\n desc: getEnv('APP_DESC'),\n url: getEnv('APP_URL'),\n logo: getEnv('APP_LOGO'),\n },\n guardBaseUrl: getEnv('GUARD_BASE_URL'),\n identityBaseUrl: getEnv('IDENTITY_BASE_URL'),\n paymentBaseUrl: getEnv('PAYMENT_BASE_URL'),\n clientId: getClientId(),\n});\n\nexport const paths = () => [\n 'translations/en/ngx/packages/common.yaml',\n 'translations/en/ngx/packages/core.yaml',\n 'translations/en/ngx/packages/ui.yaml',\n\n 'translations/en/ngx/apps/admin.yaml',\n];\n\nexport const messages = () => ({\n forbidden: {\n message: {\n title: translate('apps.admin.messages.forbidden.title'),\n desc: translate('apps.admin.messages.forbidden.desc'),\n code: 'ERR-X-000',\n },\n },\n});\n","import { Component, inject } from '@angular/core';\nimport {\n BaseDirective,\n CommonActionType,\n StateService,\n} from '@thescaffold/ngx-core';\nimport { config } from '../app.config';\n\n@Component({\n standalone: false,\n selector: 'x-pages',\n template: `\n <router-outlet></router-outlet>\n\n <!-- misc -->\n <ng-template #loader>\n <x-element-loader></x-element-loader>\n </ng-template>\n\n <ng-template #empty>\n <x-element-blank></x-element-blank>\n </ng-template>\n `,\n styles: [],\n host: { '[attr.x-pages-app-name]': '\"admin\"' },\n})\nexport class PagesComponent extends BaseDirective {\n private readonly stateService = inject(StateService);\n\n override init = () => {\n this.stateService.dispatch({\n type: CommonActionType.APP_CONFIG,\n payload: {\n ...config(),\n },\n });\n };\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { ConsentBarModule, StatusBarModule } from '@thescaffold/ngx-common';\nimport { SharedModule } from '@thescaffold/ngx-core';\nimport {\n ElementsModule,\n LayoutsModule,\n ProgressModule,\n WebgetsModule,\n} from '@thescaffold/ngx-ui';\nimport { PagesComponent } from './pages.component';\n\n@NgModule({\n declarations: [PagesComponent],\n imports: [\n SharedModule,\n RouterModule.forChild([\n {\n path: '',\n component: PagesComponent,\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'orders' },\n {\n // P4.19 — ORD-12 ops queues (rebuilt from the Salama Cycles\n // kanban onto apps/commerce/order).\n path: 'board',\n loadChildren: () =>\n import('./order-board/order-board.module').then((m) => m.OrderBoardModule),\n },\n {\n path: 'orders',\n loadChildren: () =>\n import('./orders/orders.module').then((m) => m.OrdersModule),\n },\n {\n // P4.19 — fulfilment queue: dispatch / deliver / exception.\n path: 'shipments',\n loadChildren: () =>\n import('./shipments/shipments.module').then((m) => m.ShipmentsModule),\n },\n {\n path: 'catalog',\n loadChildren: () =>\n import('./catalog/catalog.module').then((m) => m.CatalogModule),\n },\n {\n path: 'brands',\n loadChildren: () =>\n import('./brands/brands.module').then((m) => m.BrandsModule),\n },\n {\n path: 'categories',\n loadChildren: () =>\n import('./categories/categories.module').then((m) => m.CategoriesModule),\n },\n {\n path: 'attribute-templates',\n loadChildren: () =>\n import('./attribute-templates/attribute-templates.module').then(\n (m) => m.AttributeTemplatesModule,\n ),\n },\n {\n path: 'compatibility-rules',\n loadChildren: () =>\n import('./compatibility-rules/compatibility-rules.module').then(\n (m) => m.CompatibilityRulesModule,\n ),\n },\n {\n path: 'bulk-upload',\n loadChildren: () =>\n import('./bulk-upload/bulk-upload.module').then(\n (m) => m.BulkUploadModule,\n ),\n },\n {\n path: 'data-quality',\n loadChildren: () =>\n import('./data-quality/data-quality.module').then(\n (m) => m.DataQualityModule,\n ),\n },\n {\n path: 'routes',\n loadChildren: () =>\n import('./routes/routes.module').then(\n (m) => m.RoutesModule,\n ),\n },\n {\n path: 'payments',\n loadChildren: () =>\n import('./payments/payments.module').then(\n (m) => m.PaymentsModule,\n ),\n },\n {\n path: 'inbox',\n loadChildren: () =>\n import('./inbox/inbox.module').then((m) => m.InboxModule),\n },\n {\n path: 'referrals',\n loadChildren: () =>\n import('./referrals/referrals.module').then(\n (m) => m.ReferralsModule,\n ),\n },\n {\n // P5.11 — UGC-04 moderation queue.\n path: 'moderation',\n loadChildren: () =>\n import('./moderation/moderation.module').then(\n (m) => m.ModerationModule,\n ),\n },\n {\n // P6.7 — PROMO-06 homepage composer.\n path: 'homepage',\n loadChildren: () =>\n import('./homepage/homepage.module').then(\n (m) => m.HomepageModule,\n ),\n },\n {\n path: 'banners',\n loadChildren: () =>\n import('./banners/banners.module').then((m) => m.BannersModule),\n },\n {\n path: 'flash-sales',\n loadChildren: () =>\n import('./flash-sales/flash-sales.module').then(\n (m) => m.FlashSalesModule,\n ),\n },\n {\n // P6.10 — CMS-01 page builder.\n path: 'content',\n loadChildren: () =>\n import('./content/content.module').then((m) => m.ContentModule),\n },\n {\n // P6.11 — CMS-02 Learn-hub article editor.\n path: 'articles',\n loadChildren: () =>\n import('./articles/articles.module').then((m) => m.ArticlesModule),\n },\n {\n // P6.12 — CMS-03 navigation menu editor.\n path: 'navigation',\n loadChildren: () =>\n import('./navigation/navigation.module').then(\n (m) => m.NavigationModule,\n ),\n },\n {\n path: 'users',\n loadChildren: () =>\n import('./users/users.module').then((m) => m.UsersModule),\n },\n {\n path: 'reports',\n loadChildren: () =>\n import('./reports/reports.module').then((m) => m.ReportsModule),\n },\n // P7.1 — ops console section pass (PRD 6.2, TRD 9.2). Standard\n // list/detail views over the commerce API for the sections that\n // had no page yet.\n {\n path: 'customers',\n loadChildren: () =>\n import('./customers/customers.module').then((m) => m.CustomersModule),\n },\n {\n path: 'promotions',\n loadChildren: () =>\n import('./promotions/promotions.module').then(\n (m) => m.PromotionsModule,\n ),\n },\n {\n path: 'coupons',\n loadChildren: () =>\n import('./coupons/coupons.module').then((m) => m.CouponsModule),\n },\n {\n path: 'redirects',\n loadChildren: () =>\n import('./redirects/redirects.module').then(\n (m) => m.RedirectsModule,\n ),\n },\n {\n path: 'stock',\n loadChildren: () =>\n import('./stock/stock.module').then((m) => m.StockModule),\n },\n {\n path: 'returns',\n loadChildren: () =>\n import('./returns/returns.module').then((m) => m.ReturnsModule),\n },\n {\n path: 'claims',\n loadChildren: () =>\n import('./claims/claims.module').then((m) => m.ClaimsModule),\n },\n {\n path: 'disputes',\n loadChildren: () =>\n import('./disputes/disputes.module').then((m) => m.DisputesModule),\n },\n {\n path: 'payouts',\n loadChildren: () =>\n import('./payouts/payouts.module').then((m) => m.PayoutsModule),\n },\n {\n path: 'settings',\n loadChildren: () =>\n import('./settings/settings.module').then((m) => m.SettingsModule),\n },\n {\n // P7.3 — queues + SLA board, cron catalogue.\n path: 'queues',\n loadChildren: () =>\n import('./queues/queues.module').then((m) => m.QueuesModule),\n },\n {\n // P7.5 — SUP-03 canned-response library.\n path: 'macros',\n loadChildren: () =>\n import('./macros/macros.module').then((m) => m.MacrosModule),\n },\n {\n // P7.6 — ADM-14 / SEC-07 audit-log viewer.\n path: 'audit',\n loadChildren: () =>\n import('./audit/audit.module').then((m) => m.AuditModule),\n },\n {\n // P7.14 — N.4 single-order observability trace.\n path: 'trace',\n loadChildren: () =>\n import('./trace/trace.module').then((m) => m.TraceModule),\n },\n {\n // P7.7 — SEC-04 / SEC-05 NDPR data-subject requests.\n path: 'data-requests',\n loadChildren: () =>\n import('./data-requests/data-requests.module').then(\n (m) => m.DataRequestsModule,\n ),\n },\n ],\n },\n ]),\n LayoutsModule,\n WebgetsModule,\n ElementsModule,\n ProgressModule,\n StatusBarModule,\n ConsentBarModule,\n ],\n})\nexport class PagesModule {}\n","import { NgModule } from '@angular/core';\nimport { AppModuleDirective } from '@thescaffold/ngx-common';\nimport { PagesModule } from './pages/pages.module';\n\n@NgModule({\n imports: [PagesModule],\n exports: [PagesModule],\n})\nexport class AppModule extends AppModuleDirective {}\n","export { AppModule as AdminAppModule } from './app.module';\nexport { PagesModule } from './pages/pages.module';\n\nexport const routes = {\n root: ['/', 'admin'],\n};\n","/*\n * Public API Surface of admin\n */\n\nexport * from './lib/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;AAGO,MAAM,MAAM,GAA0B,OAAO;AAClD,IAAA,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC;AACxB,IAAA,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC;AACxB,IAAA,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC;AACtB,IAAA,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC;AACxB,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE,MAAM,CAAC,eAAe,CAAC;AAC7B,QAAA,IAAI,EAAE,MAAM,CAAC,eAAe,CAAC;AAC7B,QAAA,GAAG,EAAE,MAAM,CAAC,cAAc,CAAC;AAC5B,KAAA;AACD,IAAA,KAAK,EAAE;AACL,QAAA,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC;AAC1B,QAAA,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC;AAC1B,QAAA,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC;AACzB,KAAA;AACD,IAAA,GAAG,EAAE;AACH,QAAA,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC;AACxB,QAAA,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC;AACxB,QAAA,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC;AACtB,QAAA,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC;AACzB,KAAA;AACD,IAAA,YAAY,EAAE,MAAM,CAAC,gBAAgB,CAAC;AACtC,IAAA,eAAe,EAAE,MAAM,CAAC,mBAAmB,CAAC;AAC5C,IAAA,cAAc,EAAE,MAAM,CAAC,kBAAkB,CAAC;IAC1C,QAAQ,EAAE,WAAW,EAAE;AACxB,CAAA,CAAC;AAEK,MAAM,KAAK,GAAG,MAAM;IACzB,0CAA0C;IAC1C,wCAAwC;IACxC,sCAAsC;IAEtC,qCAAqC;CACtC;AAEM,MAAM,QAAQ,GAAG,OAAO;AAC7B,IAAA,SAAS,EAAE;AACT,QAAA,OAAO,EAAE;AACP,YAAA,KAAK,EAAE,SAAS,CAAC,qCAAqC,CAAC;AACvD,YAAA,IAAI,EAAE,SAAS,CAAC,oCAAoC,CAAC;AACrD,YAAA,IAAI,EAAE,WAAW;AAClB,SAAA;AACF,KAAA;AACF,CAAA,CAAC;;ACpBI,MAAO,cAAe,SAAQ,aAAa,CAAA;AAlBjD,IAAA,WAAA,GAAA;;AAmBmB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QAE3C,IAAA,CAAA,IAAI,GAAG,MAAK;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;gBACzB,IAAI,EAAE,gBAAgB,CAAC,UAAU;AACjC,gBAAA,OAAO,EAAE;AACP,oBAAA,GAAG,MAAM,EAAE;AACZ,iBAAA;AACF,aAAA,CAAC;AACJ,QAAA,CAAC;AACF,IAAA;+GAXY,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAff;;;;;;;;;;;AAWT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAIU,cAAc,EAAA,UAAA,EAAA,CAAA;kBAlB1B,SAAS;iCACI,KAAK,EAAA,QAAA,EACP,SAAS,EAAA,QAAA,EACT;;;;;;;;;;;AAWT,EAAA,CAAA,EAAA,IAAA,EAEK,EAAE,yBAAyB,EAAE,SAAS,EAAE,EAAA;;;MCmPnC,WAAW,CAAA;+GAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,CA9PP,cAAc,CAAA,EAAA,OAAA,EAAA,CAE3B,YAAY,mBAoPZ,aAAa;YACb,aAAa;YACb,cAAc;YACd,cAAc;YACd,eAAe;YACf,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAGP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,YA5PpB,YAAY;YACZ,YAAY,CAAC,QAAQ,CAAC;AACpB,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,SAAS,EAAE,cAAc;AACzB,oBAAA,QAAQ,EAAE;wBACR,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE;AACrD,wBAAA;;;AAGE,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,YAAY,EAAE,MACZ,OAAO,sEAAkC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC;AAC7E,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,QAAQ;AACd,4BAAA,YAAY,EAAE,MACZ,OAAO,iEAAwB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC;AAC/D,yBAAA;AACD,wBAAA;;AAEE,4BAAA,IAAI,EAAE,WAAW;AACjB,4BAAA,YAAY,EAAE,MACZ,OAAO,oEAA8B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;AACxE,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,SAAS;AACf,4BAAA,YAAY,EAAE,MACZ,OAAO,kEAA0B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;AAClE,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,QAAQ;AACd,4BAAA,YAAY,EAAE,MACZ,OAAO,iEAAwB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC;AAC/D,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,YAAY;AAClB,4BAAA,YAAY,EAAE,MACZ,OAAO,qEAAgC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC;AAC3E,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,qBAAqB;AAC3B,4BAAA,YAAY,EAAE,MACZ,OAAO,8EAAkD,CAAC,CAAC,IAAI,CAC7D,CAAC,CAAC,KAAK,CAAC,CAAC,wBAAwB,CAClC;AACJ,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,qBAAqB;AAC3B,4BAAA,YAAY,EAAE,MACZ,OAAO,8EAAkD,CAAC,CAAC,IAAI,CAC7D,CAAC,CAAC,KAAK,CAAC,CAAC,wBAAwB,CAClC;AACJ,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,aAAa;AACnB,4BAAA,YAAY,EAAE,MACZ,OAAO,sEAAkC,CAAC,CAAC,IAAI,CAC7C,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAC1B;AACJ,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,cAAc;AACpB,4BAAA,YAAY,EAAE,MACZ,OAAO,uEAAoC,CAAC,CAAC,IAAI,CAC/C,CAAC,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAC3B;AACJ,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,QAAQ;AACd,4BAAA,YAAY,EAAE,MACZ,OAAO,iEAAwB,CAAC,CAAC,IAAI,CACnC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CACtB;AACJ,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,UAAU;AAChB,4BAAA,YAAY,EAAE,MACZ,OAAO,mEAA4B,CAAC,CAAC,IAAI,CACvC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CACxB;AACJ,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,YAAY,EAAE,MACZ,OAAO,gEAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;AAC5D,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,WAAW;AACjB,4BAAA,YAAY,EAAE,MACZ,OAAO,oEAA8B,CAAC,CAAC,IAAI,CACzC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CACzB;AACJ,yBAAA;AACD,wBAAA;;AAEE,4BAAA,IAAI,EAAE,YAAY;AAClB,4BAAA,YAAY,EAAE,MACZ,OAAO,qEAAgC,CAAC,CAAC,IAAI,CAC3C,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAC1B;AACJ,yBAAA;AACD,wBAAA;;AAEE,4BAAA,IAAI,EAAE,UAAU;AAChB,4BAAA,YAAY,EAAE,MACZ,OAAO,mEAA4B,CAAC,CAAC,IAAI,CACvC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CACxB;AACJ,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,SAAS;AACf,4BAAA,YAAY,EAAE,MACZ,OAAO,kEAA0B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;AAClE,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,aAAa;AACnB,4BAAA,YAAY,EAAE,MACZ,OAAO,sEAAkC,CAAC,CAAC,IAAI,CAC7C,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAC1B;AACJ,yBAAA;AACD,wBAAA;;AAEE,4BAAA,IAAI,EAAE,SAAS;AACf,4BAAA,YAAY,EAAE,MACZ,OAAO,kEAA0B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;AAClE,yBAAA;AACD,wBAAA;;AAEE,4BAAA,IAAI,EAAE,UAAU;AAChB,4BAAA,YAAY,EAAE,MACZ,OAAO,mEAA4B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC;AACrE,yBAAA;AACD,wBAAA;;AAEE,4BAAA,IAAI,EAAE,YAAY;AAClB,4BAAA,YAAY,EAAE,MACZ,OAAO,qEAAgC,CAAC,CAAC,IAAI,CAC3C,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAC1B;AACJ,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,YAAY,EAAE,MACZ,OAAO,gEAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;AAC5D,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,SAAS;AACf,4BAAA,YAAY,EAAE,MACZ,OAAO,kEAA0B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;AAClE,yBAAA;;;;AAID,wBAAA;AACE,4BAAA,IAAI,EAAE,WAAW;AACjB,4BAAA,YAAY,EAAE,MACZ,OAAO,oEAA8B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;AACxE,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,YAAY;AAClB,4BAAA,YAAY,EAAE,MACZ,OAAO,qEAAgC,CAAC,CAAC,IAAI,CAC3C,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAC1B;AACJ,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,SAAS;AACf,4BAAA,YAAY,EAAE,MACZ,OAAO,kEAA0B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;AAClE,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,WAAW;AACjB,4BAAA,YAAY,EAAE,MACZ,OAAO,oEAA8B,CAAC,CAAC,IAAI,CACzC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CACzB;AACJ,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,YAAY,EAAE,MACZ,OAAO,gEAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;AAC5D,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,SAAS;AACf,4BAAA,YAAY,EAAE,MACZ,OAAO,kEAA0B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;AAClE,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,QAAQ;AACd,4BAAA,YAAY,EAAE,MACZ,OAAO,iEAAwB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC;AAC/D,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,UAAU;AAChB,4BAAA,YAAY,EAAE,MACZ,OAAO,mEAA4B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC;AACrE,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,SAAS;AACf,4BAAA,YAAY,EAAE,MACZ,OAAO,kEAA0B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;AAClE,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,UAAU;AAChB,4BAAA,YAAY,EAAE,MACZ,OAAO,mEAA4B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC;AACrE,yBAAA;AACD,wBAAA;;AAEE,4BAAA,IAAI,EAAE,QAAQ;AACd,4BAAA,YAAY,EAAE,MACZ,OAAO,iEAAwB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC;AAC/D,yBAAA;AACD,wBAAA;;AAEE,4BAAA,IAAI,EAAE,QAAQ;AACd,4BAAA,YAAY,EAAE,MACZ,OAAO,iEAAwB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC;AAC/D,yBAAA;AACD,wBAAA;;AAEE,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,YAAY,EAAE,MACZ,OAAO,gEAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;AAC5D,yBAAA;AACD,wBAAA;;AAEE,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,YAAY,EAAE,MACZ,OAAO,gEAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;AAC5D,yBAAA;AACD,wBAAA;;AAEE,4BAAA,IAAI,EAAE,eAAe;AACrB,4BAAA,YAAY,EAAE,MACZ,OAAO,wEAAsC,CAAC,CAAC,IAAI,CACjD,CAAC,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAC5B;AACJ,yBAAA;AACF,qBAAA;AACF,iBAAA;aACF,CAAC;YACF,aAAa;YACb,aAAa;YACb,cAAc;YACd,cAAc;YACd,eAAe;YACf,gBAAgB,CAAA,EAAA,CAAA,CAAA;;4FAGP,WAAW,EAAA,UAAA,EAAA,CAAA;kBA/PvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,cAAc,CAAC;AAC9B,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,YAAY,CAAC,QAAQ,CAAC;AACpB,4BAAA;AACE,gCAAA,IAAI,EAAE,EAAE;AACR,gCAAA,SAAS,EAAE,cAAc;AACzB,gCAAA,QAAQ,EAAE;oCACR,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE;AACrD,oCAAA;;;AAGE,wCAAA,IAAI,EAAE,OAAO;AACb,wCAAA,YAAY,EAAE,MACZ,OAAO,sEAAkC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC;AAC7E,qCAAA;AACD,oCAAA;AACE,wCAAA,IAAI,EAAE,QAAQ;AACd,wCAAA,YAAY,EAAE,MACZ,OAAO,iEAAwB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC;AAC/D,qCAAA;AACD,oCAAA;;AAEE,wCAAA,IAAI,EAAE,WAAW;AACjB,wCAAA,YAAY,EAAE,MACZ,OAAO,oEAA8B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;AACxE,qCAAA;AACD,oCAAA;AACE,wCAAA,IAAI,EAAE,SAAS;AACf,wCAAA,YAAY,EAAE,MACZ,OAAO,kEAA0B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;AAClE,qCAAA;AACD,oCAAA;AACE,wCAAA,IAAI,EAAE,QAAQ;AACd,wCAAA,YAAY,EAAE,MACZ,OAAO,iEAAwB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC;AAC/D,qCAAA;AACD,oCAAA;AACE,wCAAA,IAAI,EAAE,YAAY;AAClB,wCAAA,YAAY,EAAE,MACZ,OAAO,qEAAgC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC;AAC3E,qCAAA;AACD,oCAAA;AACE,wCAAA,IAAI,EAAE,qBAAqB;AAC3B,wCAAA,YAAY,EAAE,MACZ,OAAO,8EAAkD,CAAC,CAAC,IAAI,CAC7D,CAAC,CAAC,KAAK,CAAC,CAAC,wBAAwB,CAClC;AACJ,qCAAA;AACD,oCAAA;AACE,wCAAA,IAAI,EAAE,qBAAqB;AAC3B,wCAAA,YAAY,EAAE,MACZ,OAAO,8EAAkD,CAAC,CAAC,IAAI,CAC7D,CAAC,CAAC,KAAK,CAAC,CAAC,wBAAwB,CAClC;AACJ,qCAAA;AACD,oCAAA;AACE,wCAAA,IAAI,EAAE,aAAa;AACnB,wCAAA,YAAY,EAAE,MACZ,OAAO,sEAAkC,CAAC,CAAC,IAAI,CAC7C,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAC1B;AACJ,qCAAA;AACD,oCAAA;AACE,wCAAA,IAAI,EAAE,cAAc;AACpB,wCAAA,YAAY,EAAE,MACZ,OAAO,uEAAoC,CAAC,CAAC,IAAI,CAC/C,CAAC,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAC3B;AACJ,qCAAA;AACD,oCAAA;AACE,wCAAA,IAAI,EAAE,QAAQ;AACd,wCAAA,YAAY,EAAE,MACZ,OAAO,iEAAwB,CAAC,CAAC,IAAI,CACnC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CACtB;AACJ,qCAAA;AACD,oCAAA;AACE,wCAAA,IAAI,EAAE,UAAU;AAChB,wCAAA,YAAY,EAAE,MACZ,OAAO,mEAA4B,CAAC,CAAC,IAAI,CACvC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CACxB;AACJ,qCAAA;AACD,oCAAA;AACE,wCAAA,IAAI,EAAE,OAAO;AACb,wCAAA,YAAY,EAAE,MACZ,OAAO,gEAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;AAC5D,qCAAA;AACD,oCAAA;AACE,wCAAA,IAAI,EAAE,WAAW;AACjB,wCAAA,YAAY,EAAE,MACZ,OAAO,oEAA8B,CAAC,CAAC,IAAI,CACzC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CACzB;AACJ,qCAAA;AACD,oCAAA;;AAEE,wCAAA,IAAI,EAAE,YAAY;AAClB,wCAAA,YAAY,EAAE,MACZ,OAAO,qEAAgC,CAAC,CAAC,IAAI,CAC3C,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAC1B;AACJ,qCAAA;AACD,oCAAA;;AAEE,wCAAA,IAAI,EAAE,UAAU;AAChB,wCAAA,YAAY,EAAE,MACZ,OAAO,mEAA4B,CAAC,CAAC,IAAI,CACvC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CACxB;AACJ,qCAAA;AACD,oCAAA;AACE,wCAAA,IAAI,EAAE,SAAS;AACf,wCAAA,YAAY,EAAE,MACZ,OAAO,kEAA0B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;AAClE,qCAAA;AACD,oCAAA;AACE,wCAAA,IAAI,EAAE,aAAa;AACnB,wCAAA,YAAY,EAAE,MACZ,OAAO,sEAAkC,CAAC,CAAC,IAAI,CAC7C,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAC1B;AACJ,qCAAA;AACD,oCAAA;;AAEE,wCAAA,IAAI,EAAE,SAAS;AACf,wCAAA,YAAY,EAAE,MACZ,OAAO,kEAA0B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;AAClE,qCAAA;AACD,oCAAA;;AAEE,wCAAA,IAAI,EAAE,UAAU;AAChB,wCAAA,YAAY,EAAE,MACZ,OAAO,mEAA4B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC;AACrE,qCAAA;AACD,oCAAA;;AAEE,wCAAA,IAAI,EAAE,YAAY;AAClB,wCAAA,YAAY,EAAE,MACZ,OAAO,qEAAgC,CAAC,CAAC,IAAI,CAC3C,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAC1B;AACJ,qCAAA;AACD,oCAAA;AACE,wCAAA,IAAI,EAAE,OAAO;AACb,wCAAA,YAAY,EAAE,MACZ,OAAO,gEAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;AAC5D,qCAAA;AACD,oCAAA;AACE,wCAAA,IAAI,EAAE,SAAS;AACf,wCAAA,YAAY,EAAE,MACZ,OAAO,kEAA0B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;AAClE,qCAAA;;;;AAID,oCAAA;AACE,wCAAA,IAAI,EAAE,WAAW;AACjB,wCAAA,YAAY,EAAE,MACZ,OAAO,oEAA8B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;AACxE,qCAAA;AACD,oCAAA;AACE,wCAAA,IAAI,EAAE,YAAY;AAClB,wCAAA,YAAY,EAAE,MACZ,OAAO,qEAAgC,CAAC,CAAC,IAAI,CAC3C,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAC1B;AACJ,qCAAA;AACD,oCAAA;AACE,wCAAA,IAAI,EAAE,SAAS;AACf,wCAAA,YAAY,EAAE,MACZ,OAAO,kEAA0B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;AAClE,qCAAA;AACD,oCAAA;AACE,wCAAA,IAAI,EAAE,WAAW;AACjB,wCAAA,YAAY,EAAE,MACZ,OAAO,oEAA8B,CAAC,CAAC,IAAI,CACzC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CACzB;AACJ,qCAAA;AACD,oCAAA;AACE,wCAAA,IAAI,EAAE,OAAO;AACb,wCAAA,YAAY,EAAE,MACZ,OAAO,gEAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;AAC5D,qCAAA;AACD,oCAAA;AACE,wCAAA,IAAI,EAAE,SAAS;AACf,wCAAA,YAAY,EAAE,MACZ,OAAO,kEAA0B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;AAClE,qCAAA;AACD,oCAAA;AACE,wCAAA,IAAI,EAAE,QAAQ;AACd,wCAAA,YAAY,EAAE,MACZ,OAAO,iEAAwB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC;AAC/D,qCAAA;AACD,oCAAA;AACE,wCAAA,IAAI,EAAE,UAAU;AAChB,wCAAA,YAAY,EAAE,MACZ,OAAO,mEAA4B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC;AACrE,qCAAA;AACD,oCAAA;AACE,wCAAA,IAAI,EAAE,SAAS;AACf,wCAAA,YAAY,EAAE,MACZ,OAAO,kEAA0B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;AAClE,qCAAA;AACD,oCAAA;AACE,wCAAA,IAAI,EAAE,UAAU;AAChB,wCAAA,YAAY,EAAE,MACZ,OAAO,mEAA4B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC;AACrE,qCAAA;AACD,oCAAA;;AAEE,wCAAA,IAAI,EAAE,QAAQ;AACd,wCAAA,YAAY,EAAE,MACZ,OAAO,iEAAwB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC;AAC/D,qCAAA;AACD,oCAAA;;AAEE,wCAAA,IAAI,EAAE,QAAQ;AACd,wCAAA,YAAY,EAAE,MACZ,OAAO,iEAAwB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC;AAC/D,qCAAA;AACD,oCAAA;;AAEE,wCAAA,IAAI,EAAE,OAAO;AACb,wCAAA,YAAY,EAAE,MACZ,OAAO,gEAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;AAC5D,qCAAA;AACD,oCAAA;;AAEE,wCAAA,IAAI,EAAE,OAAO;AACb,wCAAA,YAAY,EAAE,MACZ,OAAO,gEAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;AAC5D,qCAAA;AACD,oCAAA;;AAEE,wCAAA,IAAI,EAAE,eAAe;AACrB,wCAAA,YAAY,EAAE,MACZ,OAAO,wEAAsC,CAAC,CAAC,IAAI,CACjD,CAAC,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAC5B;AACJ,qCAAA;AACF,iCAAA;AACF,6BAAA;yBACF,CAAC;wBACF,aAAa;wBACb,aAAa;wBACb,cAAc;wBACd,cAAc;wBACd,eAAe;wBACf,gBAAgB;AACjB,qBAAA;AACF,iBAAA;;;AClQK,MAAO,SAAU,SAAQ,kBAAkB,CAAA;+GAApC,SAAS,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAT,SAAS,EAAA,OAAA,EAAA,CAHV,WAAW,CAAA,EAAA,OAAA,EAAA,CACX,WAAW,CAAA,EAAA,CAAA,CAAA;gHAEV,SAAS,EAAA,OAAA,EAAA,CAHV,WAAW,EACX,WAAW,CAAA,EAAA,CAAA,CAAA;;4FAEV,SAAS,EAAA,UAAA,EAAA,CAAA;kBAJrB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,WAAW,CAAC;oBACtB,OAAO,EAAE,CAAC,WAAW,CAAC;AACvB,iBAAA;;;ACJM,MAAM,MAAM,GAAG;AACpB,IAAA,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC;;;ACJtB;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"isaiahiroko-tilmart-ngx-apps-admin.mjs","sources":["../../../projects/admin/src/lib/app.config.ts","../../../projects/admin/src/lib/pages/pages.component.ts","../../../projects/admin/src/lib/pages/pages.module.ts","../../../projects/admin/src/lib/app.module.ts","../../../projects/admin/src/lib/index.ts","../../../projects/admin/src/public-api.ts","../../../projects/admin/src/isaiahiroko-tilmart-ngx-apps-admin.ts"],"sourcesContent":["import { getClientId, getEnv, translate } from '@thescaffold/ngx-core';\nimport { AppDataContract } from '@thescaffold/ngx-ui';\n\nexport const config: () => AppDataContract = () => ({\n name: getEnv('APP_NAME'),\n desc: getEnv('APP_DESC'),\n url: getEnv('APP_URL'),\n logo: getEnv('APP_LOGO'),\n business: {\n name: getEnv('BUSINESS_NAME'),\n desc: getEnv('BUSINESS_DESC'),\n url: getEnv('BUSINESS_URL'),\n },\n group: {\n name: getEnv('GROUP_NAME'),\n desc: getEnv('GROUP_DESC'),\n url: getEnv('GROUP_URL'),\n },\n app: {\n name: getEnv('APP_NAME'),\n desc: getEnv('APP_DESC'),\n url: getEnv('APP_URL'),\n logo: getEnv('APP_LOGO'),\n },\n guardBaseUrl: getEnv('GUARD_BASE_URL'),\n identityBaseUrl: getEnv('IDENTITY_BASE_URL'),\n paymentBaseUrl: getEnv('PAYMENT_BASE_URL'),\n clientId: getClientId(),\n});\n\nexport const paths = () => [\n 'translations/en/ngx/packages/common.yaml',\n 'translations/en/ngx/packages/core.yaml',\n 'translations/en/ngx/packages/ui.yaml',\n\n 'translations/en/ngx/apps/admin.yaml',\n];\n\nexport const messages = () => ({\n forbidden: {\n message: {\n title: translate('apps.admin.messages.forbidden.title'),\n desc: translate('apps.admin.messages.forbidden.desc'),\n code: 'ERR-X-000',\n },\n },\n});\n","import { Component, inject } from '@angular/core';\nimport {\n BaseDirective,\n CommonActionType,\n StateService,\n} from '@thescaffold/ngx-core';\nimport { config } from '../app.config';\n\n@Component({\n standalone: false,\n selector: 'x-pages',\n template: `\n <router-outlet></router-outlet>\n\n <!-- misc -->\n <ng-template #loader>\n <x-element-loader></x-element-loader>\n </ng-template>\n\n <ng-template #empty>\n <x-element-blank></x-element-blank>\n </ng-template>\n `,\n styles: [],\n host: { '[attr.x-pages-app-name]': '\"admin\"' },\n})\nexport class PagesComponent extends BaseDirective {\n private readonly stateService = inject(StateService);\n\n override init = () => {\n this.stateService.dispatch({\n type: CommonActionType.APP_CONFIG,\n payload: {\n ...config(),\n },\n });\n };\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { ConsentBarModule, StatusBarModule } from '@thescaffold/ngx-common';\nimport { SharedModule } from '@thescaffold/ngx-core';\nimport {\n ElementsModule,\n LayoutsModule,\n ProgressModule,\n WebgetsModule,\n} from '@thescaffold/ngx-ui';\nimport { PagesComponent } from './pages.component';\n\n@NgModule({\n declarations: [PagesComponent],\n imports: [\n SharedModule,\n RouterModule.forChild([\n {\n path: '',\n component: PagesComponent,\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'orders' },\n {\n // P4.19 — ORD-12 ops queues (rebuilt from the Salama Cycles\n // kanban onto apps/commerce/order).\n path: 'board',\n loadChildren: () =>\n import('./order-board/order-board.module').then((m) => m.OrderBoardModule),\n },\n {\n path: 'orders',\n loadChildren: () =>\n import('./orders/orders.module').then((m) => m.OrdersModule),\n },\n {\n // P4.19 — fulfilment queue: dispatch / deliver / exception.\n path: 'shipments',\n loadChildren: () =>\n import('./shipments/shipments.module').then((m) => m.ShipmentsModule),\n },\n {\n path: 'catalog',\n loadChildren: () =>\n import('./catalog/catalog.module').then((m) => m.CatalogModule),\n },\n {\n path: 'brands',\n loadChildren: () =>\n import('./brands/brands.module').then((m) => m.BrandsModule),\n },\n {\n path: 'categories',\n loadChildren: () =>\n import('./categories/categories.module').then((m) => m.CategoriesModule),\n },\n {\n path: 'attribute-templates',\n loadChildren: () =>\n import('./attribute-templates/attribute-templates.module').then(\n (m) => m.AttributeTemplatesModule,\n ),\n },\n {\n path: 'compatibility-rules',\n loadChildren: () =>\n import('./compatibility-rules/compatibility-rules.module').then(\n (m) => m.CompatibilityRulesModule,\n ),\n },\n {\n path: 'bulk-upload',\n loadChildren: () =>\n import('./bulk-upload/bulk-upload.module').then(\n (m) => m.BulkUploadModule,\n ),\n },\n {\n path: 'data-quality',\n loadChildren: () =>\n import('./data-quality/data-quality.module').then(\n (m) => m.DataQualityModule,\n ),\n },\n {\n path: 'routes',\n loadChildren: () =>\n import('./routes/routes.module').then(\n (m) => m.RoutesModule,\n ),\n },\n {\n path: 'payments',\n loadChildren: () =>\n import('./payments/payments.module').then(\n (m) => m.PaymentsModule,\n ),\n },\n {\n path: 'inbox',\n loadChildren: () =>\n import('./inbox/inbox.module').then((m) => m.InboxModule),\n },\n {\n path: 'referrals',\n loadChildren: () =>\n import('./referrals/referrals.module').then(\n (m) => m.ReferralsModule,\n ),\n },\n {\n // P5.11 — UGC-04 moderation queue.\n path: 'moderation',\n loadChildren: () =>\n import('./moderation/moderation.module').then(\n (m) => m.ModerationModule,\n ),\n },\n {\n // P6.7 — PROMO-06 homepage composer.\n path: 'homepage',\n loadChildren: () =>\n import('./homepage/homepage.module').then(\n (m) => m.HomepageModule,\n ),\n },\n {\n path: 'banners',\n loadChildren: () =>\n import('./banners/banners.module').then((m) => m.BannersModule),\n },\n {\n path: 'flash-sales',\n loadChildren: () =>\n import('./flash-sales/flash-sales.module').then(\n (m) => m.FlashSalesModule,\n ),\n },\n {\n // P6.10 — CMS-01 page builder.\n path: 'content',\n loadChildren: () =>\n import('./content/content.module').then((m) => m.ContentModule),\n },\n {\n // P6.11 — CMS-02 Learn-hub article editor.\n path: 'articles',\n loadChildren: () =>\n import('./articles/articles.module').then((m) => m.ArticlesModule),\n },\n {\n // P6.12 — CMS-03 navigation menu editor.\n path: 'navigation',\n loadChildren: () =>\n import('./navigation/navigation.module').then(\n (m) => m.NavigationModule,\n ),\n },\n {\n // Super-admin-only staff (admin account) management.\n path: 'staff',\n loadChildren: () =>\n import('./staff/staff.module').then((m) => m.StaffModule),\n },\n {\n path: 'users',\n loadChildren: () =>\n import('./users/users.module').then((m) => m.UsersModule),\n },\n {\n path: 'reports',\n loadChildren: () =>\n import('./reports/reports.module').then((m) => m.ReportsModule),\n },\n // P7.1 — ops console section pass (PRD 6.2, TRD 9.2). Standard\n // list/detail views over the commerce API for the sections that\n // had no page yet.\n {\n path: 'customers',\n loadChildren: () =>\n import('./customers/customers.module').then((m) => m.CustomersModule),\n },\n {\n path: 'promotions',\n loadChildren: () =>\n import('./promotions/promotions.module').then(\n (m) => m.PromotionsModule,\n ),\n },\n {\n path: 'coupons',\n loadChildren: () =>\n import('./coupons/coupons.module').then((m) => m.CouponsModule),\n },\n {\n path: 'redirects',\n loadChildren: () =>\n import('./redirects/redirects.module').then(\n (m) => m.RedirectsModule,\n ),\n },\n {\n path: 'stock',\n loadChildren: () =>\n import('./stock/stock.module').then((m) => m.StockModule),\n },\n {\n path: 'returns',\n loadChildren: () =>\n import('./returns/returns.module').then((m) => m.ReturnsModule),\n },\n {\n path: 'claims',\n loadChildren: () =>\n import('./claims/claims.module').then((m) => m.ClaimsModule),\n },\n {\n path: 'disputes',\n loadChildren: () =>\n import('./disputes/disputes.module').then((m) => m.DisputesModule),\n },\n {\n path: 'payouts',\n loadChildren: () =>\n import('./payouts/payouts.module').then((m) => m.PayoutsModule),\n },\n {\n path: 'settings',\n loadChildren: () =>\n import('./settings/settings.module').then((m) => m.SettingsModule),\n },\n {\n // P7.3 — queues + SLA board, cron catalogue.\n path: 'queues',\n loadChildren: () =>\n import('./queues/queues.module').then((m) => m.QueuesModule),\n },\n {\n // P7.5 — SUP-03 canned-response library.\n path: 'macros',\n loadChildren: () =>\n import('./macros/macros.module').then((m) => m.MacrosModule),\n },\n {\n // P7.6 — ADM-14 / SEC-07 audit-log viewer.\n path: 'audit',\n loadChildren: () =>\n import('./audit/audit.module').then((m) => m.AuditModule),\n },\n {\n // P7.14 — N.4 single-order observability trace.\n path: 'trace',\n loadChildren: () =>\n import('./trace/trace.module').then((m) => m.TraceModule),\n },\n {\n // P7.7 — SEC-04 / SEC-05 NDPR data-subject requests.\n path: 'data-requests',\n loadChildren: () =>\n import('./data-requests/data-requests.module').then(\n (m) => m.DataRequestsModule,\n ),\n },\n ],\n },\n ]),\n LayoutsModule,\n WebgetsModule,\n ElementsModule,\n ProgressModule,\n StatusBarModule,\n ConsentBarModule,\n ],\n})\nexport class PagesModule {}\n","import { NgModule } from '@angular/core';\nimport { AppModuleDirective } from '@thescaffold/ngx-common';\nimport { PagesModule } from './pages/pages.module';\n\n@NgModule({\n imports: [PagesModule],\n exports: [PagesModule],\n})\nexport class AppModule extends AppModuleDirective {}\n","export { AppModule as AdminAppModule } from './app.module';\nexport { PagesModule } from './pages/pages.module';\n\nexport const routes = {\n root: ['/', 'admin'],\n};\n","/*\n * Public API Surface of admin\n */\n\nexport * from './lib/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isaiahiroko-tilmart-ngx-apps-admin-settings.module-Cz6xPNwB.mjs","sources":["../../../projects/admin/src/lib/pages/settings/settings.component.ts","../../../projects/admin/src/lib/pages/settings/settings.component.html","../../../projects/admin/src/lib/pages/settings/settings.module.ts"],"sourcesContent":["import { Component } from '@angular/core';\nimport { BaseDirective, notify, titleCase, using } from '@thescaffold/ngx-core';\nimport { BehaviorSubject, firstValueFrom, map, takeUntil } from 'rxjs';\nimport { CrudFieldSpec } from '../_shared/simple-crud.base';\n\ninterface Section {\n key: string;\n title: string;\n singularLabel: string;\n mount: string;\n columns: { key: string; value: string; type?: string; class?: string }[];\n fields: CrudFieldSpec[];\n data$: BehaviorSubject<any>;\n page: number;\n query?: string;\n}\n\n// R1 production-readiness pass — ADM-12 / ORD-05. P7.1's original\n// version stacked these four config resources as read-only lists; ops\n// had no way to add a channel, shipping zone, shipping method or return\n// policy \"without a deploy\" (ADM-12's own words). Same field-by-field\n// form idea as `SimpleCrudDirective`, adapted for four resources sharing\n// one tabbed page rather than one resource per route.\n@Component({\n standalone: false,\n selector: 'x-settings',\n templateUrl: './settings.component.html',\n styleUrl: './settings.component.scss',\n})\nexport class SettingsComponent extends BaseDirective {\n readonly sections: Section[] = [\n {\n key: 'channels',\n title: 'Channels',\n singularLabel: 'channel',\n mount: 'apps/commerce/channel',\n columns: [\n { key: 'name', value: 'Name' },\n { key: 'code', value: 'Code' },\n { key: 'currency', value: 'Currency' },\n ],\n fields: [\n { key: 'name', label: 'Name', type: 'text', required: true },\n { key: 'code', label: 'Code', type: 'text', required: true, placeholder: 'e.g. web-ng' },\n { key: 'currency', label: 'Currency', type: 'text', placeholder: 'NGN' },\n {\n key: 'taxMode',\n label: 'Tax mode',\n type: 'select',\n options: [\n { value: 'inclusive', label: 'Inclusive' },\n { value: 'exclusive', label: 'Exclusive' },\n ],\n },\n ],\n data$: new BehaviorSubject<any>(null),\n page: 1,\n },\n {\n key: 'zones',\n title: 'Shipping zones',\n singularLabel: 'shipping zone',\n mount: 'apps/commerce/delivery-zone',\n columns: [\n { key: 'name', value: 'Name' },\n { key: 'state', value: 'State' },\n { key: 'lga', value: 'LGA' },\n ],\n fields: [\n { key: 'name', label: 'Name', type: 'text', required: true },\n { key: 'state', label: 'State', type: 'text', required: true },\n { key: 'lga', label: 'LGA', type: 'text' },\n ],\n data$: new BehaviorSubject<any>(null),\n page: 1,\n },\n {\n key: 'methods',\n title: 'Shipping methods',\n singularLabel: 'shipping method',\n mount: 'apps/commerce/delivery-method',\n columns: [\n { key: 'name', value: 'Name' },\n { key: 'flatFee', value: 'Flat fee' },\n { key: 'perKg', value: 'Per kg' },\n {\n key: 'enabled',\n value: 'Enabled',\n type: 'class',\n class: 'badge text-bg-light border',\n },\n ],\n fields: [\n { key: 'name', label: 'Name', type: 'text', required: true },\n {\n key: 'type',\n label: 'Type',\n type: 'select',\n options: [\n { value: 'door', label: 'Door delivery' },\n { value: 'express', label: 'Express' },\n { value: 'pickup', label: 'Pickup' },\n { value: 'scheduled', label: 'Scheduled' },\n { value: 'freight', label: 'Freight' },\n ],\n },\n { key: 'estimateDaysMin', label: 'Estimate — min days', type: 'number' },\n { key: 'estimateDaysMax', label: 'Estimate — max days', type: 'number' },\n { key: 'enabled', label: 'Enabled', type: 'boolean' },\n {\n key: 'rateRules',\n label: 'Rate rules (JSON array)',\n type: 'json',\n placeholder: '[{\"zoneId\": null, \"flatFee\": 2000, \"perKg\": 150}]',\n },\n ],\n data$: new BehaviorSubject<any>(null),\n page: 1,\n },\n {\n key: 'returns',\n title: 'Return policies',\n singularLabel: 'return policy',\n mount: 'apps/commerce/return-policy',\n columns: [\n { key: 'windowDays', value: 'Window (days)' },\n { key: 'restockingFeePct', value: 'Restock fee %' },\n { key: 'whoPaysReturn', value: 'Who pays' },\n {\n key: 'enabled',\n value: 'Enabled',\n type: 'class',\n class: 'badge text-bg-light border',\n },\n ],\n fields: [\n { key: 'windowDays', label: 'Return window (days)', type: 'number', required: true },\n {\n key: 'reasonCode',\n label: 'Reason code (blank = default policy)',\n type: 'select',\n options: [\n { value: 'damaged_in_transit', label: 'Damaged in transit' },\n { value: 'wrong_item', label: 'Wrong item' },\n { value: 'not_as_described', label: 'Not as described' },\n { value: 'faulty_on_arrival', label: 'Faulty on arrival' },\n { value: 'changed_mind', label: 'Changed mind' },\n { value: 'missing_parts', label: 'Missing parts' },\n ],\n },\n { key: 'restockingFeePct', label: 'Restocking fee %', type: 'number' },\n {\n key: 'whoPaysReturn',\n label: 'Who pays for return shipping',\n type: 'select',\n options: [\n { value: 'customer', label: 'Customer' },\n { value: 'tilmart', label: 'Tilmart' },\n { value: 'seller', label: 'Seller' },\n ],\n },\n { key: 'allowChangeOfMind', label: 'Allow change-of-mind returns', type: 'boolean' },\n { key: 'enabled', label: 'Enabled', type: 'boolean' },\n ],\n data$: new BehaviorSubject<any>(null),\n page: 1,\n },\n ];\n\n active = this.sections[0].key;\n editing = false;\n saving = false;\n draft: Record<string, any> | null = null;\n\n get activeSection(): Section {\n return this.sections.find((s) => s.key === this.active)!;\n }\n\n override init = () => {\n for (const section of this.sections) this.load(section);\n };\n\n private load(section: Section, page = section.page, query = section.query): void {\n section.page = page;\n section.query = query;\n const params: any = { page, perPage: 100 };\n if (query) params.query = query;\n this.apiService\n .on(section.mount)\n .getMany(params)\n .pipe(\n takeUntil(this.$),\n map((response: any) => ({\n title: titleCase(section.title),\n columns: section.columns,\n rows: response?.data,\n hasHeaders: true,\n hasTextFilter: true,\n page: response?.meta?.current_page,\n perPage: response?.meta?.per_page,\n total: response?.meta?.total,\n onPage: (p: number) => this.load(section, p, query),\n onSearch: (q: string) => this.load(section, 1, q),\n onRefresh: () => this.load(section, page, query),\n links: {\n secondary: [{ title: 'Edit', fn: (_l: any, item: any) => this.edit(item) }],\n },\n })),\n )\n .subscribe(using((data) => section.data$.next(data)));\n }\n\n selectTab(key: string): void {\n this.active = key;\n this.editing = false;\n this.draft = null;\n }\n\n startCreate(): void {\n this.editing = true;\n const draft: Record<string, any> = {};\n for (const field of this.activeSection.fields) {\n draft[field.key] = field.type === 'boolean' ? false : '';\n }\n this.draft = draft;\n }\n\n edit(item: any): void {\n this.editing = true;\n const draft = { ...item };\n for (const field of this.activeSection.fields) {\n if (field.type === 'json' && draft[field.key] != null && typeof draft[field.key] !== 'string') {\n draft[field.key] = JSON.stringify(draft[field.key], null, 2);\n }\n }\n this.draft = draft;\n }\n\n cancelEdit(): void {\n this.editing = false;\n this.draft = null;\n }\n\n async save(): Promise<void> {\n if (!this.draft) return;\n const section = this.activeSection;\n this.saving = true;\n try {\n const payload: Record<string, any> = {};\n for (const field of section.fields) {\n const raw = this.draft[field.key];\n if (field.type === 'number') {\n payload[field.key] = raw !== null && raw !== undefined && `${raw}` !== '' ? Number(raw) : undefined;\n } else if (field.type === 'boolean') {\n payload[field.key] = !!raw;\n } else if (field.type === 'json') {\n try {\n payload[field.key] = raw && `${raw}`.trim() ? JSON.parse(raw) : undefined;\n } catch {\n payload[field.key] = undefined;\n }\n } else {\n payload[field.key] = raw || undefined;\n }\n }\n\n const source = this.apiService.on(section.mount);\n if (this.draft['id']) {\n await firstValueFrom(source.update(this.draft['id'], payload));\n } else {\n await firstValueFrom(source.create(payload));\n }\n notify(`${titleCase(section.singularLabel)} saved.`, undefined, 'success');\n this.editing = false;\n this.draft = null;\n this.load(section, section.page, section.query);\n } catch {\n notify('Could not save (check required fields).', undefined, 'error');\n } finally {\n this.saving = false;\n }\n }\n\n async remove(): Promise<void> {\n if (!this.draft?.['id']) return;\n const section = this.activeSection;\n try {\n await firstValueFrom(this.apiService.on(section.mount).remove(this.draft['id']));\n notify(`${titleCase(section.singularLabel)} deleted.`, undefined, 'success');\n this.editing = false;\n this.draft = null;\n this.load(section, section.page, section.query);\n } catch {\n notify('Could not delete — it may still be referenced elsewhere.', undefined, 'error');\n }\n }\n}\n","<div class=\"x-page-head\">\n <div class=\"x-page-title\">Settings</div>\n <div class=\"x-page-subtitle\">\n Channels, shipping and returns configuration.\n </div>\n</div>\n\n<nav class=\"x-settings-tabs\">\n @for (s of sections; track s.key) {\n <button\n type=\"button\"\n class=\"x-settings-tab\"\n [class.is-active]=\"active === s.key\"\n (click)=\"selectTab(s.key)\"\n >\n {{ s.title }}\n </button>\n }\n</nav>\n\n@for (s of sections; track s.key) {\n @if (active === s.key) {\n @if (!editing) {\n <div class=\"x-settings-toolbar\">\n <button type=\"button\" class=\"x-settings-btn x-settings-btn-primary\" (click)=\"startCreate()\">\n + New {{ s.singularLabel }}\n </button>\n </div>\n @if (s.data$ | async; as list) {\n <x-webget-collection [data]=\"list\"></x-webget-collection>\n } @else {\n <x-element-loader></x-element-loader>\n }\n } @else if (draft) {\n <div class=\"x-settings-editor\">\n <div class=\"x-settings-editor-head\">\n <div class=\"x-settings-editor-title\">{{ draft['id'] ? 'Edit' : 'New' }} {{ s.singularLabel }}</div>\n <div class=\"x-settings-editor-actions\">\n @if (draft['id']) {\n <button type=\"button\" class=\"x-settings-btn x-settings-danger\" (click)=\"remove()\">Delete</button>\n }\n <button type=\"button\" class=\"x-settings-btn\" (click)=\"cancelEdit()\">Close</button>\n <button type=\"button\" class=\"x-settings-btn x-settings-btn-primary\" [disabled]=\"saving\" (click)=\"save()\">\n {{ saving ? 'Saving…' : 'Save' }}\n </button>\n </div>\n </div>\n\n <div class=\"x-settings-grid\">\n @for (f of s.fields; track f.key) {\n <label class=\"x-settings-f\" [class.x-settings-f-wide]=\"f.type === 'textarea' || f.type === 'json'\">\n {{ f.label }}\n @if (f.required) {\n <span class=\"x-settings-required\">*</span>\n }\n @switch (f.type) {\n @case ('boolean') {\n <input type=\"checkbox\" [(ngModel)]=\"draft[f.key]\" />\n }\n @case ('select') {\n <select [(ngModel)]=\"draft[f.key]\">\n <option value=\"\">— choose —</option>\n @for (opt of f.options; track opt.value) {\n <option [value]=\"opt.value\">{{ opt.label }}</option>\n }\n </select>\n }\n @case ('json') {\n <textarea rows=\"4\" class=\"x-settings-json\" [(ngModel)]=\"draft[f.key]\" [placeholder]=\"f.placeholder || '{}'\"></textarea>\n }\n @case ('number') {\n <input type=\"number\" [(ngModel)]=\"draft[f.key]\" [placeholder]=\"f.placeholder || ''\" />\n }\n @default {\n <input type=\"text\" [(ngModel)]=\"draft[f.key]\" [placeholder]=\"f.placeholder || ''\" />\n }\n }\n </label>\n }\n </div>\n </div>\n }\n }\n}\n\n<div class=\"x-settings-more\">\n <p>\n <strong>Users & roles</strong> —\n <a routerLink=\"/admin/users\">manage accounts</a>.\n </p>\n <p>\n <strong>Notifications</strong> — transactional and marketing templates\n are seeded per environment (NotificationTemplates); per-customer\n preferences are on the customer record.\n </p>\n <p class=\"x-settings-audit\">\n <strong>Audit log</strong> — every privileged action is recorded\n (ntx-apps-audit); <a routerLink=\"/admin/audit\">open the viewer</a>.\n </p>\n</div>\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '@thescaffold/ngx-core';\nimport { ElementsModule, WebgetsModule } from '@thescaffold/ngx-ui';\nimport { SettingsComponent } from './settings.component';\n\n@NgModule({\n declarations: [SettingsComponent],\n imports: [\n SharedModule,\n ElementsModule,\n WebgetsModule,\n RouterModule.forChild([{ path: '', component: SettingsComponent }]),\n ],\n})\nexport class SettingsModule {}\n"],"names":["i2","i3","i4","i1"],"mappings":";;;;;;;;;;;AAiBA;AACA;AACA;AACA;AACA;AACA;AAOM,MAAO,iBAAkB,SAAQ,aAAa,CAAA;AANpD,IAAA,WAAA,GAAA;;AAOW,QAAA,IAAA,CAAA,QAAQ,GAAc;AAC7B,YAAA;AACE,gBAAA,GAAG,EAAE,UAAU;AACf,gBAAA,KAAK,EAAE,UAAU;AACjB,gBAAA,aAAa,EAAE,SAAS;AACxB,gBAAA,KAAK,EAAE,uBAAuB;AAC9B,gBAAA,OAAO,EAAE;AACP,oBAAA,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;AAC9B,oBAAA,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;AAC9B,oBAAA,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;AACvC,iBAAA;AACD,gBAAA,MAAM,EAAE;AACN,oBAAA,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;AAC5D,oBAAA,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE;AACxF,oBAAA,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE;AACxE,oBAAA;AACE,wBAAA,GAAG,EAAE,SAAS;AACd,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,OAAO,EAAE;AACP,4BAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;AAC1C,4BAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;AAC3C,yBAAA;AACF,qBAAA;AACF,iBAAA;AACD,gBAAA,KAAK,EAAE,IAAI,eAAe,CAAM,IAAI,CAAC;AACrC,gBAAA,IAAI,EAAE,CAAC;AACR,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,OAAO;AACZ,gBAAA,KAAK,EAAE,gBAAgB;AACvB,gBAAA,aAAa,EAAE,eAAe;AAC9B,gBAAA,KAAK,EAAE,6BAA6B;AACpC,gBAAA,OAAO,EAAE;AACP,oBAAA,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;AAC9B,oBAAA,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;AAChC,oBAAA,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;AAC7B,iBAAA;AACD,gBAAA,MAAM,EAAE;AACN,oBAAA,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;AAC5D,oBAAA,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;oBAC9D,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;AAC3C,iBAAA;AACD,gBAAA,KAAK,EAAE,IAAI,eAAe,CAAM,IAAI,CAAC;AACrC,gBAAA,IAAI,EAAE,CAAC;AACR,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,KAAK,EAAE,kBAAkB;AACzB,gBAAA,aAAa,EAAE,iBAAiB;AAChC,gBAAA,KAAK,EAAE,+BAA+B;AACtC,gBAAA,OAAO,EAAE;AACP,oBAAA,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;AAC9B,oBAAA,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE;AACrC,oBAAA,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE;AACjC,oBAAA;AACE,wBAAA,GAAG,EAAE,SAAS;AACd,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,KAAK,EAAE,4BAA4B;AACpC,qBAAA;AACF,iBAAA;AACD,gBAAA,MAAM,EAAE;AACN,oBAAA,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;AAC5D,oBAAA;AACE,wBAAA,GAAG,EAAE,MAAM;AACX,wBAAA,KAAK,EAAE,MAAM;AACb,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,OAAO,EAAE;AACP,4BAAA,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE;AACzC,4BAAA,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;AACtC,4BAAA,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;AACpC,4BAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;AAC1C,4BAAA,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;AACvC,yBAAA;AACF,qBAAA;oBACD,EAAE,GAAG,EAAE,iBAAiB,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxE,EAAE,GAAG,EAAE,iBAAiB,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxE,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;AACrD,oBAAA;AACE,wBAAA,GAAG,EAAE,WAAW;AAChB,wBAAA,KAAK,EAAE,yBAAyB;AAChC,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,WAAW,EAAE,mDAAmD;AACjE,qBAAA;AACF,iBAAA;AACD,gBAAA,KAAK,EAAE,IAAI,eAAe,CAAM,IAAI,CAAC;AACrC,gBAAA,IAAI,EAAE,CAAC;AACR,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,KAAK,EAAE,iBAAiB;AACxB,gBAAA,aAAa,EAAE,eAAe;AAC9B,gBAAA,KAAK,EAAE,6BAA6B;AACpC,gBAAA,OAAO,EAAE;AACP,oBAAA,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE;AAC7C,oBAAA,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,eAAe,EAAE;AACnD,oBAAA,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,EAAE;AAC3C,oBAAA;AACE,wBAAA,GAAG,EAAE,SAAS;AACd,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,KAAK,EAAE,4BAA4B;AACpC,qBAAA;AACF,iBAAA;AACD,gBAAA,MAAM,EAAE;AACN,oBAAA,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;AACpF,oBAAA;AACE,wBAAA,GAAG,EAAE,YAAY;AACjB,wBAAA,KAAK,EAAE,sCAAsC;AAC7C,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,OAAO,EAAE;AACP,4BAAA,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,oBAAoB,EAAE;AAC5D,4BAAA,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;AAC5C,4BAAA,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;AACxD,4BAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE;AAC1D,4BAAA,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;AAChD,4BAAA,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE;AACnD,yBAAA;AACF,qBAAA;oBACD,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE;AACtE,oBAAA;AACE,wBAAA,GAAG,EAAE,eAAe;AACpB,wBAAA,KAAK,EAAE,8BAA8B;AACrC,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,OAAO,EAAE;AACP,4BAAA,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;AACxC,4BAAA,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;AACtC,4BAAA,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;AACrC,yBAAA;AACF,qBAAA;oBACD,EAAE,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,8BAA8B,EAAE,IAAI,EAAE,SAAS,EAAE;oBACpF,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;AACtD,iBAAA;AACD,gBAAA,KAAK,EAAE,IAAI,eAAe,CAAM,IAAI,CAAC;AACrC,gBAAA,IAAI,EAAE,CAAC;AACR,aAAA;SACF;QAED,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG;QAC7B,IAAA,CAAA,OAAO,GAAG,KAAK;QACf,IAAA,CAAA,MAAM,GAAG,KAAK;QACd,IAAA,CAAA,KAAK,GAA+B,IAAI;QAM/B,IAAA,CAAA,IAAI,GAAG,MAAK;AACnB,YAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ;AAAE,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AACzD,QAAA,CAAC;AAoHF,IAAA;AA1HC,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,CAAE;IAC1D;AAMQ,IAAA,IAAI,CAAC,OAAgB,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,EAAA;AACvE,QAAA,OAAO,CAAC,IAAI,GAAG,IAAI;AACnB,QAAA,OAAO,CAAC,KAAK,GAAG,KAAK;QACrB,MAAM,MAAM,GAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE;AAC1C,QAAA,IAAI,KAAK;AAAE,YAAA,MAAM,CAAC,KAAK,GAAG,KAAK;AAC/B,QAAA,IAAI,CAAC;AACF,aAAA,EAAE,CAAC,OAAO,CAAC,KAAK;aAChB,OAAO,CAAC,MAAM;AACd,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EACjB,GAAG,CAAC,CAAC,QAAa,MAAM;AACtB,YAAA,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;YAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,QAAQ,EAAE,IAAI;AACpB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY;AAClC,YAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ;AACjC,YAAA,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK;AAC5B,YAAA,MAAM,EAAE,CAAC,CAAS,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC;AACnD,YAAA,QAAQ,EAAE,CAAC,CAAS,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACjD,YAAA,SAAS,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC;AAChD,YAAA,KAAK,EAAE;gBACL,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAO,EAAE,IAAS,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5E,aAAA;AACF,SAAA,CAAC,CAAC;AAEJ,aAAA,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD;AAEA,IAAA,SAAS,CAAC,GAAW,EAAA;AACnB,QAAA,IAAI,CAAC,MAAM,GAAG,GAAG;AACjB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;IACnB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QACnB,MAAM,KAAK,GAAwB,EAAE;QACrC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AAC7C,YAAA,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,GAAG,KAAK,GAAG,EAAE;QAC1D;AACA,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACpB;AAEA,IAAA,IAAI,CAAC,IAAS,EAAA;AACZ,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,MAAM,KAAK,GAAG,EAAE,GAAG,IAAI,EAAE;QACzB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YAC7C,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;gBAC7F,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9D;QACF;AACA,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACpB;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;IACnB;AAEA,IAAA,MAAM,IAAI,GAAA;QACR,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE;AACjB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa;AAClC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,QAAA,IAAI;YACF,MAAM,OAAO,GAAwB,EAAE;AACvC,YAAA,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE;gBAClC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACjC,gBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC3B,oBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,CAAA,EAAG,GAAG,CAAA,CAAE,KAAK,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS;gBACrG;AAAO,qBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;oBACnC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG;gBAC5B;AAAO,qBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;AAChC,oBAAA,IAAI;wBACF,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAA,EAAG,GAAG,CAAA,CAAE,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS;oBAC3E;AAAE,oBAAA,MAAM;AACN,wBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS;oBAChC;gBACF;qBAAO;oBACL,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,SAAS;gBACvC;YACF;AAEA,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;AAChD,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AACpB,gBAAA,MAAM,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;YAChE;iBAAO;gBACL,MAAM,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC9C;AACA,YAAA,MAAM,CAAC,CAAA,EAAG,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA,OAAA,CAAS,EAAE,SAAS,EAAE,SAAS,CAAC;AAC1E,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC;QACjD;AAAE,QAAA,MAAM;AACN,YAAA,MAAM,CAAC,yCAAyC,EAAE,SAAS,EAAE,OAAO,CAAC;QACvE;gBAAU;AACR,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;QACrB;IACF;AAEA,IAAA,MAAM,MAAM,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAAE;AACzB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa;AAClC,QAAA,IAAI;YACF,MAAM,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAChF,YAAA,MAAM,CAAC,CAAA,EAAG,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA,SAAA,CAAW,EAAE,SAAS,EAAE,SAAS,CAAC;AAC5E,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC;QACjD;AAAE,QAAA,MAAM;AACN,YAAA,MAAM,CAAC,0DAA0D,EAAE,SAAS,EAAE,OAAO,CAAC;QACxF;IACF;+GA1QW,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,8FC7B9B,2uHAoGA,EAAA,MAAA,EAAA,CAAA,g0EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDvEa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,YAAY,EAAA,QAAA,EAAA,2uHAAA,EAAA,MAAA,EAAA,CAAA,g0EAAA,CAAA,EAAA;;;MEVX,cAAc,CAAA;+GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAd,cAAc,EAAA,YAAA,EAAA,CARV,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAE9B,YAAY;YACZ,cAAc;YACd,aAAa,EAAAC,IAAA,CAAA,YAAA,CAAA,EAAA,CAAA,CAAA;AAIJ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YANvB,YAAY;YACZ,cAAc;YACd,aAAa;AACb,YAAA,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAA,EAAA,CAAA,CAAA;;4FAG1D,cAAc,EAAA,UAAA,EAAA,CAAA;kBAT1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,iBAAiB,CAAC;AACjC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,cAAc;wBACd,aAAa;AACb,wBAAA,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC;AACpE,qBAAA;AACF,iBAAA;;;;;"}
|