@acorex/modules 20.0.4 → 20.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/conversation/index.d.ts +157 -217
  2. package/fesm2022/{acorex-modules-application-management-module-designer.component-CvFiEI1a.mjs → acorex-modules-application-management-module-designer.component-oGgCaUDu.mjs} +2 -2
  3. package/fesm2022/{acorex-modules-application-management-module-designer.component-CvFiEI1a.mjs.map → acorex-modules-application-management-module-designer.component-oGgCaUDu.mjs.map} +1 -1
  4. package/fesm2022/acorex-modules-application-management.mjs +1 -1
  5. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-B10cRw3M.mjs → acorex-modules-auth-acorex-modules-auth-Cj4td3eM.mjs} +9 -9
  6. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-B10cRw3M.mjs.map → acorex-modules-auth-acorex-modules-auth-Cj4td3eM.mjs.map} +1 -1
  7. package/fesm2022/{acorex-modules-auth-app-chooser.component-C-HPf2jz.mjs → acorex-modules-auth-app-chooser.component-C60idNYx.mjs} +2 -2
  8. package/fesm2022/{acorex-modules-auth-app-chooser.component-C-HPf2jz.mjs.map → acorex-modules-auth-app-chooser.component-C60idNYx.mjs.map} +1 -1
  9. package/fesm2022/{acorex-modules-auth-login.module-eC1_ukrb.mjs → acorex-modules-auth-login.module-siRdi16m.mjs} +4 -4
  10. package/fesm2022/{acorex-modules-auth-login.module-eC1_ukrb.mjs.map → acorex-modules-auth-login.module-siRdi16m.mjs.map} +1 -1
  11. package/fesm2022/{acorex-modules-auth-master.layout-DpfqRgAl.mjs → acorex-modules-auth-master.layout-BJCAe5Ai.mjs} +2 -2
  12. package/fesm2022/{acorex-modules-auth-master.layout-DpfqRgAl.mjs.map → acorex-modules-auth-master.layout-BJCAe5Ai.mjs.map} +1 -1
  13. package/fesm2022/{acorex-modules-auth-password.component-DAB9dWB8.mjs → acorex-modules-auth-password.component-6-EEsfc2.mjs} +2 -2
  14. package/fesm2022/{acorex-modules-auth-password.component-DAB9dWB8.mjs.map → acorex-modules-auth-password.component-6-EEsfc2.mjs.map} +1 -1
  15. package/fesm2022/{acorex-modules-auth-password.component-rE9yrcGW.mjs → acorex-modules-auth-password.component-VhDUmkMc.mjs} +3 -3
  16. package/fesm2022/acorex-modules-auth-password.component-VhDUmkMc.mjs.map +1 -0
  17. package/fesm2022/{acorex-modules-auth-routes-EGvejNu9.mjs → acorex-modules-auth-routes-BwBn4o81.mjs} +2 -2
  18. package/fesm2022/{acorex-modules-auth-routes-EGvejNu9.mjs.map → acorex-modules-auth-routes-BwBn4o81.mjs.map} +1 -1
  19. package/fesm2022/{acorex-modules-auth-two-factor.module-DF3_fgzH.mjs → acorex-modules-auth-two-factor.module-D7NgZHmC.mjs} +2 -2
  20. package/fesm2022/{acorex-modules-auth-two-factor.module-DF3_fgzH.mjs.map → acorex-modules-auth-two-factor.module-D7NgZHmC.mjs.map} +1 -1
  21. package/fesm2022/{acorex-modules-auth-user-sessions.component-BPb-WS4k.mjs → acorex-modules-auth-user-sessions.component-DhlBCxly.mjs} +2 -2
  22. package/fesm2022/{acorex-modules-auth-user-sessions.component-BPb-WS4k.mjs.map → acorex-modules-auth-user-sessions.component-DhlBCxly.mjs.map} +1 -1
  23. package/fesm2022/acorex-modules-auth.mjs +1 -1
  24. package/fesm2022/acorex-modules-conversation.mjs +1762 -1568
  25. package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
  26. package/fesm2022/acorex-modules-dashboard-management.mjs +9 -9
  27. package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
  28. package/fesm2022/acorex-modules-notification-management.mjs +3 -3
  29. package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
  30. package/fesm2022/acorex-modules-organization-management-role.entity-BDErzNv-.mjs.map +1 -1
  31. package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-DqpAYmHM.mjs → acorex-modules-platform-management-acorex-modules-platform-management-Dfux0tkB.mjs} +6 -6
  32. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-Dfux0tkB.mjs.map +1 -0
  33. package/fesm2022/{acorex-modules-platform-management-list-version.component-DidjxkmH.mjs → acorex-modules-platform-management-list-version.component-CSNKxghv.mjs} +2 -2
  34. package/fesm2022/{acorex-modules-platform-management-list-version.component-DidjxkmH.mjs.map → acorex-modules-platform-management-list-version.component-CSNKxghv.mjs.map} +1 -1
  35. package/fesm2022/{acorex-modules-platform-management-settings.provider-DcHKHrSK.mjs → acorex-modules-platform-management-settings.provider-C4RaOgkr.mjs} +35 -25
  36. package/fesm2022/acorex-modules-platform-management-settings.provider-C4RaOgkr.mjs.map +1 -0
  37. package/fesm2022/acorex-modules-platform-management.mjs +1 -1
  38. package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-CtEDcg_B.mjs +589 -0
  39. package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-CtEDcg_B.mjs.map +1 -0
  40. package/fesm2022/acorex-modules-report-management.mjs +208 -0
  41. package/fesm2022/acorex-modules-report-management.mjs.map +1 -0
  42. package/fesm2022/acorex-modules-security-management.mjs +582 -72
  43. package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
  44. package/fesm2022/{acorex-modules-workflow-management-task-board.page-R4x5Rq-D.mjs → acorex-modules-workflow-management-task-board.page-Bugxqd0W.mjs} +2 -2
  45. package/fesm2022/acorex-modules-workflow-management-task-board.page-Bugxqd0W.mjs.map +1 -0
  46. package/fesm2022/acorex-modules-workflow-management.mjs +1 -1
  47. package/package.json +5 -1
  48. package/report-management/README.md +356 -0
  49. package/report-management/index.d.ts +39 -0
  50. package/security-management/index.d.ts +162 -2
  51. package/fesm2022/acorex-modules-auth-password.component-rE9yrcGW.mjs.map +0 -1
  52. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-DqpAYmHM.mjs.map +0 -1
  53. package/fesm2022/acorex-modules-platform-management-settings.provider-DcHKHrSK.mjs.map +0 -1
  54. package/fesm2022/acorex-modules-security-management-permissions-editor.component-B4TdyHtv.mjs +0 -218
  55. package/fesm2022/acorex-modules-security-management-permissions-editor.component-B4TdyHtv.mjs.map +0 -1
  56. package/fesm2022/acorex-modules-security-management-permissions-widget-column.component-DTMj6gxb.mjs +0 -41
  57. package/fesm2022/acorex-modules-security-management-permissions-widget-column.component-DTMj6gxb.mjs.map +0 -1
  58. package/fesm2022/acorex-modules-security-management-permissions-widget-designer.component-BJdbKpRQ.mjs +0 -20
  59. package/fesm2022/acorex-modules-security-management-permissions-widget-designer.component-BJdbKpRQ.mjs.map +0 -1
  60. package/fesm2022/acorex-modules-security-management-permissions-widget-edit.component-GTmDlgWW.mjs +0 -51
  61. package/fesm2022/acorex-modules-security-management-permissions-widget-edit.component-GTmDlgWW.mjs.map +0 -1
  62. package/fesm2022/acorex-modules-security-management-permissions-widget-print.component-BZ75aI18.mjs +0 -21
  63. package/fesm2022/acorex-modules-security-management-permissions-widget-print.component-BZ75aI18.mjs.map +0 -1
  64. package/fesm2022/acorex-modules-security-management-permissions-widget-view.component-CYQqerAX.mjs +0 -20
  65. package/fesm2022/acorex-modules-security-management-permissions-widget-view.component-CYQqerAX.mjs.map +0 -1
  66. package/fesm2022/acorex-modules-workflow-management-task-board.page-R4x5Rq-D.mjs.map +0 -1
@@ -0,0 +1,356 @@
1
+ # Report Management
2
+
3
+ This library provides comprehensive report management functionality for the ACoreX Platform, featuring a powerful Report Runner that enables users to discover, configure, and execute reports through an intuitive interface.
4
+
5
+ ## 🎯 **Core Features**
6
+
7
+ ### **Report Runner System**
8
+
9
+ - **Hierarchical Category Navigation**: Tree-based browsing through organized report categories
10
+ - **Dynamic Parameter Configuration**: Auto-generated forms based on report parameter definitions
11
+ - **Real-time Search**: Search across reports and categories with instant results
12
+ - **Responsive Layout**: Adaptive UI for desktop and mobile devices
13
+ - **State Management**: Persistent navigation and form state using NgRx Signals
14
+
15
+ ### **Current Capabilities**
16
+
17
+ - ✅ Report discovery and browsing
18
+ - ✅ Category-based organization
19
+ - ✅ Dynamic parameter forms with widget support
20
+ - ✅ Parameter validation and form management
21
+ - ✅ Responsive navigation with breadcrumbs
22
+ - ✅ Search and filtering functionality
23
+ - ✅ Integration with platform layout system
24
+
25
+ ## 📚 **Architecture**
26
+
27
+ ### **Core Components**
28
+
29
+ ```typescript
30
+ // Main Report Runner Components
31
+ AXPReportRunnerRootViewModel; // State management with NgRx Signals
32
+ AXMReportRunnerRootPageComponent; // Main navigation and layout
33
+ AXPReportRunnerParametersView; // Dynamic parameter form builder
34
+
35
+ // Data Providers
36
+ AXMReportDefinitionProvider; // Report definition data access
37
+ AXMReportCategoryProvider; // Category hierarchy management
38
+ ```
39
+
40
+ ### **Widget Integration**
41
+
42
+ The system leverages the platform's widget catalog for parameter inputs:
43
+
44
+ ```typescript
45
+ // Supported Parameter Widgets
46
+ - TextBox, NumberBox, DateTimeBox
47
+ - SelectBox (single/multi-select)
48
+ - ToggleSwitch, CheckBox
49
+ - DocumentAttachment
50
+ - LargeTextBox for descriptions
51
+ - Lookup widgets for entity references
52
+ ```
53
+
54
+ ## 🚀 **Planned Enhancements**
55
+
56
+ ### **Phase 1: Core Functionality Completion**
57
+
58
+ #### **🔥 High Priority (Essential)**
59
+
60
+ **1. Report Results Management**
61
+
62
+ ```typescript
63
+ // Missing critical functionality
64
+ - Report viewer/preview component
65
+ - Export options (PDF, Excel, CSV, JSON)
66
+ - Print functionality with formatting options
67
+ - Email/share report results
68
+ - Save generated reports for later access
69
+ ```
70
+
71
+ **2. Report History & Favorites**
72
+
73
+ ```typescript
74
+ // User experience improvements
75
+ - Recently run reports with quick access
76
+ - Favorite/bookmark frequently used reports
77
+ - Quick re-run with previously saved parameters
78
+ - Personal report library and organization
79
+ - Usage statistics and recommendations
80
+ ```
81
+
82
+ **3. Enhanced Export System**
83
+
84
+ ```typescript
85
+ // Professional output options
86
+ - Multi-format export (PDF, Excel, CSV, Word)
87
+ - Custom report templates and styling
88
+ - Batch export capabilities
89
+ - Automated delivery options
90
+ - Watermarking and branding
91
+ ```
92
+
93
+ ### **Phase 2: Advanced Features**
94
+
95
+ #### **📊 Scheduled Reports & Automation**
96
+
97
+ **4. Report Scheduling**
98
+
99
+ ```typescript
100
+ // Automated report generation
101
+ - Cron-based scheduling (daily, weekly, monthly, custom)
102
+ - Email delivery automation with distribution lists
103
+ - Parameter preset management for scheduled runs
104
+ - Schedule conflict resolution and queue management
105
+ - Notification system for failed/successful runs
106
+ ```
107
+
108
+ **5. Report Templates & Presets**
109
+
110
+ ```typescript
111
+ // Parameter management and reusability
112
+ - Save parameter combinations as named templates
113
+ - Share parameter presets across teams
114
+ - Default parameter values per user/role/department
115
+ - Template versioning and change tracking
116
+ - Import/export template configurations
117
+ ```
118
+
119
+ #### **🎨 Dashboard Integration**
120
+
121
+ **6. Dashboard & Visualization**
122
+
123
+ ```typescript
124
+ // Interactive reporting experience
125
+ - Convert reports to dashboard widgets
126
+ - Embed reports in custom dashboards
127
+ - Real-time data refresh capabilities
128
+ - Interactive charts and visualizations
129
+ - Drill-down functionality from summaries
130
+ ```
131
+
132
+ ### **Phase 3: Enterprise Features**
133
+
134
+ #### **🔐 Security & Governance**
135
+
136
+ **7. Advanced Access Control**
137
+
138
+ ```typescript
139
+ // Enterprise security features
140
+ - Role-based report access with fine-grained permissions
141
+ - Parameter-level security and data masking
142
+ - Row-level security integration
143
+ - Audit trail for all report activities
144
+ - Compliance reporting and data governance
145
+ ```
146
+
147
+ **8. Report Analytics & Insights**
148
+
149
+ ```typescript
150
+ // Usage and performance analytics
151
+ - Report execution statistics and performance metrics
152
+ - User behavior analytics and usage patterns
153
+ - Popular reports ranking and recommendations
154
+ - Resource usage monitoring and optimization
155
+ - Cost analysis for report generation
156
+ ```
157
+
158
+ #### **🤝 Collaboration & Workflow**
159
+
160
+ **9. Team Collaboration**
161
+
162
+ ```typescript
163
+ // Collaborative reporting features
164
+ - Share reports with specific users/groups/roles
165
+ - Comments and annotations on reports
166
+ - Report approval workflows and review processes
167
+ - Team workspaces with shared report collections
168
+ - Notification system for shared reports
169
+ ```
170
+
171
+ **10. Report Builder/Designer**
172
+
173
+ ```typescript
174
+ // Self-service report creation
175
+ - Visual drag-and-drop report designer
176
+ - Template gallery with industry-specific templates
177
+ - Data source configuration and mapping
178
+ - Preview mode with sample data
179
+ - Version control for custom reports
180
+ ```
181
+
182
+ ### **Phase 4: Integration & Advanced Analytics**
183
+
184
+ #### **🔌 External Integration**
185
+
186
+ **11. API & Integration Platform**
187
+
188
+ ```typescript
189
+ // Programmatic access and integration
190
+ - REST API for external applications
191
+ - Webhook notifications for report events
192
+ - Integration with external data sources
193
+ - Third-party tool connectors (Tableau, Power BI)
194
+ - Mobile app with offline capabilities
195
+ ```
196
+
197
+ **12. Advanced Search & Discovery**
198
+
199
+ ```typescript
200
+ // Enhanced content discovery
201
+ - AI-powered report recommendations
202
+ - Semantic search with natural language queries
203
+ - Advanced filtering by metadata, usage, performance
204
+ - Tag-based organization and discovery
205
+ - Related reports suggestions
206
+ ```
207
+
208
+ ## 💡 **Implementation Roadmap**
209
+
210
+ ### **Quarter 1: Foundation**
211
+
212
+ - ✅ Complete Report Results Viewer
213
+ - ✅ Implement Export System (PDF, Excel)
214
+ - ✅ Add Report History and Favorites
215
+
216
+ ### **Quarter 2: User Experience**
217
+
218
+ - 🔄 Scheduled Reports and Automation
219
+ - 🔄 Parameter Templates and Presets
220
+ - 🔄 Advanced Search and Filtering
221
+
222
+ ### **Quarter 3: Enterprise Ready**
223
+
224
+ - ⏳ Dashboard Integration
225
+ - ⏳ Access Control and Security
226
+ - ⏳ Report Analytics
227
+
228
+ ### **Quarter 4: Advanced Features**
229
+
230
+ - ⏳ Collaboration Tools
231
+ - ⏳ Report Builder/Designer
232
+ - ⏳ External Integrations
233
+
234
+ ## 📦 **Usage**
235
+
236
+ ### **Installation**
237
+
238
+ ```typescript
239
+ import { AXMReportManagementModule } from '@acorex/modules/report-management';
240
+
241
+ @NgModule({
242
+ imports: [AXMReportManagementModule],
243
+ })
244
+ export class AppModule {}
245
+ ```
246
+
247
+ ### **Navigation**
248
+
249
+ ```typescript
250
+ // Navigate to report runner
251
+ this.router.navigate(['reports']);
252
+
253
+ // Navigate to specific category
254
+ this.router.navigate(['reports', 'category-id']);
255
+
256
+ // Navigate to report with parameters
257
+ this.router.navigate(['reports', 'category-id'], {
258
+ queryParams: { report: 'report-id' },
259
+ });
260
+ ```
261
+
262
+ ### **Custom Parameter Groups**
263
+
264
+ ```typescript
265
+ // Example: Custom WHS incident parameters
266
+ const whsIncidentParameters: AXPReportParameterGroup = {
267
+ name: 'incidentDetails',
268
+ title: 'Incident Details',
269
+ parameters: [
270
+ {
271
+ path: 'incidentType',
272
+ title: 'Incident Type',
273
+ widget: {
274
+ type: AXPWidgetsList.Editors.SelectBox,
275
+ options: {
276
+ dataSource: ['Injury', 'Near Miss', 'Property Damage'],
277
+ },
278
+ },
279
+ },
280
+ // ... more parameters
281
+ ],
282
+ };
283
+ ```
284
+
285
+ ## 🛠️ **API Reference**
286
+
287
+ ### **Public Exports**
288
+
289
+ ```typescript
290
+ // Core Module
291
+ export { AXMReportManagementModule } from './lib/module';
292
+
293
+ // ViewModels
294
+ export { AXPReportRunnerRootViewModel } from './lib/features/report-runner/report-runner.viewmodel';
295
+
296
+ // Components
297
+ export { AXMReportRunnerRootPageComponent } from './lib/features/report-runner/report-runner-root-page/report-runner-root-page.component';
298
+
299
+ // Services and Providers
300
+ export { AXMReportDefinitionProvider, AXMReportCategoryProvider } from './lib/features/report-runner/reports.provider';
301
+
302
+ // Types and Interfaces
303
+ export * from './lib/types';
304
+ ```
305
+
306
+ ### **Key Interfaces**
307
+
308
+ ```typescript
309
+ // Report Definition Structure
310
+ interface AXPReportDefinition {
311
+ id: string;
312
+ title: string;
313
+ description?: string;
314
+ categoryIds: string[];
315
+ parameterGroups: AXPReportParameterGroup[];
316
+ }
317
+
318
+ // Category Structure
319
+ interface AXPReportCategory {
320
+ id: string;
321
+ title: string;
322
+ description?: string;
323
+ parentId?: string;
324
+ hasChild: boolean;
325
+ hasReport: boolean;
326
+ }
327
+
328
+ // Parameter Group Configuration
329
+ interface AXPReportParameterGroup {
330
+ name: string;
331
+ title: string;
332
+ description?: string;
333
+ parameters: AXPReportParameter[];
334
+ }
335
+ ```
336
+
337
+ ## 🤝 **Contributing**
338
+
339
+ When contributing to this module:
340
+
341
+ 1. **Follow the established patterns** for parameter groups and widget usage
342
+ 2. **Add comprehensive tests** for new features
343
+ 3. **Update documentation** including this README
344
+ 4. **Consider backward compatibility** when modifying existing APIs
345
+ 5. **Follow the platform's coding standards** and conventions
346
+
347
+ ## 📋 **Status Legend**
348
+
349
+ - ✅ **Completed**: Feature is implemented and available
350
+ - 🔄 **In Progress**: Currently being developed
351
+ - ⏳ **Planned**: Scheduled for future development
352
+ - 💡 **Proposed**: Under consideration for future releases
353
+
354
+ ---
355
+
356
+ > 💡 **Note**: This module is actively developed as part of the ACoreX Platform. For the latest updates and detailed API documentation, please refer to the platform documentation.
@@ -0,0 +1,39 @@
1
+ import { AXPAppStartUpService } from '@acorex/platform/core';
2
+ import * as i0 from '@angular/core';
3
+ import { Injector } from '@angular/core';
4
+ import * as i1 from '@acorex/platform/domain';
5
+
6
+ declare class AXMReportManagementModule {
7
+ constructor(appInitService: AXPAppStartUpService, injector: Injector);
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXMReportManagementModule, never>;
9
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AXMReportManagementModule, never, [typeof i1.AXPDomainModule], never>;
10
+ static ɵinj: i0.ɵɵInjectorDeclaration<AXMReportManagementModule>;
11
+ }
12
+
13
+ declare const RootConfig: {
14
+ config: {
15
+ i18n: string;
16
+ };
17
+ module: {
18
+ route: string;
19
+ name: string;
20
+ title: string;
21
+ icon: string;
22
+ };
23
+ entities: {
24
+ category: {
25
+ name: string;
26
+ title: string;
27
+ titlePlural: string;
28
+ icon: string;
29
+ };
30
+ report: {
31
+ name: string;
32
+ title: string;
33
+ titlePlural: string;
34
+ icon: string;
35
+ };
36
+ };
37
+ };
38
+
39
+ export { AXMReportManagementModule, RootConfig };
@@ -1,9 +1,15 @@
1
1
  import { AXPEntity } from '@acorex/platform/common';
2
2
  import * as i0 from '@angular/core';
3
- import { Injector } from '@angular/core';
3
+ import { Injector, OnInit } from '@angular/core';
4
4
  import { AXPEntityModel, AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';
5
5
  import * as i1 from '@acorex/platform/workflow';
6
+ import { AXPWorkflowService } from '@acorex/platform/workflow';
6
7
  import * as i2 from '@acorex/platform/layout/builder';
8
+ import { AXPValueWidgetComponent, AXPColumnWidgetComponent, AXPLayoutWidgetComponent, AXPWidgetConfig } from '@acorex/platform/layout/builder';
9
+ import { AXPPermissionGroupDefinition, AXPPermissionDefinition } from '@acorex/platform/auth';
10
+ import { AXValueChangedEvent } from '@acorex/cdk/common';
11
+ import { AXPPopupLayoutBaseComponent } from '@acorex/platform/layout/views';
12
+ import { AXPActionMenuItem, AXPExecuteCommand } from '@acorex/platform/core';
7
13
 
8
14
  declare const RootConfig: {
9
15
  config: {
@@ -163,5 +169,159 @@ declare class AXMSecurityManagementModule {
163
169
  static ɵinj: i0.ɵɵInjectorDeclaration<AXMSecurityManagementModule>;
164
170
  }
165
171
 
166
- export { AXMDeviceSessionsService, AXMDeviceSessionsServiceImpl, AXMSecurityManagementDeviceSessionsEntityModule, AXMSecurityManagementModule, AXMSecurityManagementRolesEntityService, AXMSecurityManagementRolesEntityServiceImpl, AXMSessionStatusTypes, AXMUsersEntityService, AXMUsersEntityServiceImpl, AXPSecurityManagementMenuKeys, RootConfig, factory };
172
+ declare class AXPPermissionsEditorComponent implements OnInit {
173
+ /** Service for fetching permission groups and definitions */
174
+ private permissionService;
175
+ /** Currently selected permission group */
176
+ protected selectedGroup: i0.WritableSignal<AXPPermissionGroupDefinition | null>;
177
+ /** All available permission groups */
178
+ protected groups: i0.WritableSignal<AXPPermissionGroupDefinition[]>;
179
+ /** Initial permissions to be selected - exposed as signal input */
180
+ initialPermissions: i0.InputSignal<string[]>;
181
+ /** Whether the editor is in read-only mode */
182
+ readOnly: i0.InputSignal<boolean>;
183
+ /** List of selected permission names */
184
+ protected selectedPermissions: i0.WritableSignal<string[]>;
185
+ /** Event emitted when permissions selection changes */
186
+ permissionsChanged: i0.OutputEmitterRef<string[]>;
187
+ /** Event emitted when permissions are applied/selected */
188
+ permissionsSelected: i0.OutputEmitterRef<string[]>;
189
+ /**
190
+ * Recursively maps permissions to include selection state and children.
191
+ */
192
+ private mapPermissions;
193
+ /**
194
+ * Computed: Returns mapped permissions for the selected group.
195
+ */
196
+ protected items: i0.Signal<any[]>;
197
+ /**
198
+ * Computed: Returns groups with badge counts.
199
+ */
200
+ protected groupsWithBadge: i0.Signal<{
201
+ badge: string;
202
+ name: string;
203
+ title: string;
204
+ description?: string;
205
+ permissions: AXPPermissionDefinition[];
206
+ }[]>;
207
+ /**
208
+ * Recursively collects all permission names (parents and children) from an array.
209
+ */
210
+ private collectAllPermissionNames;
211
+ /**
212
+ * Returns the badge count for a group (all selected permissions, including parents).
213
+ */
214
+ private getBadge;
215
+ /**
216
+ * Checks if a permission is selected.
217
+ */
218
+ private isSelected;
219
+ /**
220
+ * Recursively collects all descendant permission names for a single item (including itself).
221
+ */
222
+ private collectPermissionNames;
223
+ /**
224
+ * Gets the current selected permissions.
225
+ */
226
+ getSelectedPermissions(): string[];
227
+ /**
228
+ * Sets the selected permissions.
229
+ */
230
+ setSelectedPermissions(permissions: string[]): void;
231
+ /**
232
+ * Applies/selects the current permissions.
233
+ */
234
+ selectPermissions(): void;
235
+ /**
236
+ * Initializes the component and loads permission groups.
237
+ */
238
+ ngOnInit(): Promise<void>;
239
+ /**
240
+ * Handles group tab/menu item click.
241
+ */
242
+ protected handleMenuItemClick(item: AXPPermissionGroupDefinition): void;
243
+ /**
244
+ * Handles permission checkbox toggle (checks/unchecks all children recursively).
245
+ */
246
+ protected onPermissionToggle(item: any, e: AXValueChangedEvent): void;
247
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPPermissionsEditorComponent, never>;
248
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXPPermissionsEditorComponent, "axm-permissions-editor", never, { "initialPermissions": { "alias": "initialPermissions"; "required": false; "isSignal": true; }; "readOnly": { "alias": "readOnly"; "required": false; "isSignal": true; }; }, { "permissionsChanged": "permissionsChanged"; "permissionsSelected": "permissionsSelected"; }, never, never, true, never>;
249
+ }
250
+
251
+ declare class AXPPermissionsEditorPopupComponent extends AXPPopupLayoutBaseComponent {
252
+ /** Reference to the core permission editor component */
253
+ permissionEditor: AXPPermissionsEditorComponent;
254
+ /** Initial permissions to be selected */
255
+ protected initialPermissions: string[];
256
+ /**
257
+ * Initializes the component.
258
+ */
259
+ ngOnInit(): Promise<void>;
260
+ /**
261
+ * Returns the primary menu items for the popup layout.
262
+ */
263
+ protected getPrimaryMenuItems(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]>;
264
+ /**
265
+ * Handles permission selection changes from the editor component.
266
+ */
267
+ protected onPermissionsChanged(permissions: string[]): void;
268
+ /**
269
+ * Handles when permissions are selected from the editor component.
270
+ */
271
+ protected onPermissionsSelected(permissions: string[]): void;
272
+ /**
273
+ * Executes popup commands.
274
+ */
275
+ execute(command: AXPExecuteCommand): void | Promise<void>;
276
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPPermissionsEditorPopupComponent, never>;
277
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXPPermissionsEditorPopupComponent, "axm-permissions-editor-popup", never, {}, {}, never, never, true, never>;
278
+ }
279
+
280
+ interface PermissionPath {
281
+ group: AXPPermissionGroupDefinition;
282
+ path: AXPPermissionDefinition[];
283
+ displayPath: string;
284
+ }
285
+ declare class AXPPermissionsWidgetViewComponent extends AXPValueWidgetComponent<string[]> {
286
+ private permissionService;
287
+ private workflowService;
288
+ protected groups: i0.WritableSignal<AXPPermissionGroupDefinition[]>;
289
+ private loadGroupsEffect;
290
+ protected selectedPermissionsByGroup: i0.Signal<Record<string, PermissionPath[]>>;
291
+ protected isEmpty: i0.Signal<boolean>;
292
+ protected openPermissionsEditor(): Promise<void>;
293
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPPermissionsWidgetViewComponent, never>;
294
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXPPermissionsWidgetViewComponent, "ng-component", never, {}, {}, never, never, true, never>;
295
+ }
296
+
297
+ declare class AXPPermissionsWidgetEditComponent extends AXPValueWidgetComponent<string[]> {
298
+ /**
299
+ * Handles permissions changes from the editor.
300
+ */
301
+ protected onPermissionsChanged(permissions: string[]): void;
302
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPPermissionsWidgetEditComponent, never>;
303
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXPPermissionsWidgetEditComponent, "ng-component", never, {}, {}, never, never, true, never>;
304
+ }
305
+
306
+ declare class AXPPermissionsWidgetColumnComponent extends AXPColumnWidgetComponent<any> {
307
+ protected count: i0.Signal<number>;
308
+ protected workflowService: AXPWorkflowService;
309
+ openPermissionsEditor(): Promise<void>;
310
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPPermissionsWidgetColumnComponent, never>;
311
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXPPermissionsWidgetColumnComponent, "ng-component", never, { "rawValue": { "alias": "rawValue"; "required": false; }; "rowData": { "alias": "rowData"; "required": false; }; }, {}, never, never, true, never>;
312
+ }
313
+
314
+ declare class AXPPermissionsWidgetPrintComponent extends AXPLayoutWidgetComponent {
315
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPPermissionsWidgetPrintComponent, never>;
316
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXPPermissionsWidgetPrintComponent, "ng-component", never, {}, {}, never, never, true, never>;
317
+ }
318
+
319
+ declare class AXPPermissionsWidgetDesignerComponent extends AXPLayoutWidgetComponent {
320
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPPermissionsWidgetDesignerComponent, never>;
321
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXPPermissionsWidgetDesignerComponent, "ng-component", never, {}, {}, never, never, true, never>;
322
+ }
323
+
324
+ declare const AXPPermissionsWidget: AXPWidgetConfig;
325
+
326
+ export { AXMDeviceSessionsService, AXMDeviceSessionsServiceImpl, AXMPermissionsModule, AXMSecurityManagementDeviceSessionsEntityModule, AXMSecurityManagementModule, AXMSecurityManagementRolesEntityService, AXMSecurityManagementRolesEntityServiceImpl, AXMSessionStatusTypes, AXMUsersEntityService, AXMUsersEntityServiceImpl, AXPPermissionsEditorComponent, AXPPermissionsEditorPopupComponent, AXPPermissionsWidget, AXPPermissionsWidgetColumnComponent, AXPPermissionsWidgetDesignerComponent, AXPPermissionsWidgetEditComponent, AXPPermissionsWidgetPrintComponent, AXPPermissionsWidgetViewComponent, AXPSecurityManagementMenuKeys, RootConfig, factory };
167
327
  export type { AXMSecurityManagementDeviceSessionsEntityModel, AXMSecurityManagementRolesEntityModel, AXMSecurityManagementUsersEntityModel };
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-modules-auth-password.component-rE9yrcGW.mjs","sources":["../tmp-esm2022/auth/lib/pages/login/password/password.component.js"],"sourcesContent":["import { AXButtonModule } from '@acorex/components/button';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXFormComponent, AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPasswordBoxModule } from '@acorex/components/password-box';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { Component, ViewChild, inject } from '@angular/core';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { FormsModule } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\nimport { AXMAuthenticationTypes, AXM_AUTH_CONFIG_TOKEN } from '../../../auth.config';\nimport { AXPHomePageService } from '@acorex/platform/common';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@angular/forms\";\nimport * as i3 from \"@acorex/components/form\";\nimport * as i4 from \"@acorex/components/text-box\";\nimport * as i5 from \"@acorex/components/password-box\";\nimport * as i6 from \"@acorex/components/button\";\nimport * as i7 from \"@acorex/components/label\";\nimport * as i8 from \"@acorex/components/decorators\";\nimport * as i9 from \"@acorex/components/check-box\";\nimport * as i10 from \"@acorex/core/translation\";\nimport * as i11 from \"@acorex/components/loading\";\nconst MODULES = [\n CommonModule,\n FormsModule,\n AXFormModule,\n AXTextBoxModule,\n AXPasswordBoxModule,\n AXButtonModule,\n AXLabelModule,\n AXDecoratorModule,\n AXCheckBoxModule,\n AXTranslationModule,\n AXTranslationModule,\n AXLoadingModule,\n RouterModule,\n AXValidationModule,\n];\nexport class AXPLoginPasswordComponent {\n constructor() {\n this.configs = inject(AXM_AUTH_CONFIG_TOKEN);\n this.v1 = '';\n this.v2 = '';\n this.isLoading$ = new BehaviorSubject(false);\n this.submitText = 'signin.submit';\n this.dialogService = inject(AXDialogService);\n this.sessionService = inject(AXPSessionService);\n this.activateRoute = inject(ActivatedRoute);\n this.homePageService = inject(AXPHomePageService);\n this.router = inject(Router);\n this.isKeepLogin = false;\n }\n ngOnInit() {\n this.l2 = 'password';\n switch (this.configs.type) {\n case AXMAuthenticationTypes.EmailPassword:\n this.l1 = 'email';\n break;\n case AXMAuthenticationTypes.MobilePassword:\n this.l1 = 'mobile';\n break;\n case AXMAuthenticationTypes.UsernameEmailPassword:\n this.l1 = 'username-email';\n break;\n case AXMAuthenticationTypes.UsernamePassword:\n default:\n this.l1 = 'username';\n }\n }\n handleForgotOnClick() {\n this.router.navigate(['/auth/forgot']);\n }\n handleRegisterOnClick() {\n this.router.navigate([this.configs.signup?.url || '/auth/register']);\n }\n handleLoginClick() {\n const redirectUrl = this.activateRoute.snapshot.queryParams['redirectUrl'];\n this.form.validate().then(async (form) => {\n if (form.result) {\n this.isLoading$.next(true);\n this.submitText = 'processing';\n this.submitText = 'redirecting';\n try {\n await this.sessionService.signin({\n strategy: 'user-pass',\n username: this.v1,\n password: this.v2,\n });\n await this.sessionService.signInComplete();\n if (this.sessionService.tenant?.id == null) {\n this.router.navigate(['/auth/account/tenant-chooser']);\n }\n else if (this.sessionService.application?.id == null) {\n this.router.navigate(['/auth/account/app-chooser']);\n }\n else if (redirectUrl) {\n this.router.navigate([redirectUrl]);\n }\n else {\n await this.homePageService.navigateTo();\n }\n }\n catch (error) {\n console.log({ error });\n this.submitText = 'signin.submit';\n this.v2 = null;\n this.isLoading$.next(false);\n }\n }\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPLoginPasswordComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXPLoginPasswordComponent, isStandalone: true, selector: \"ng-component\", viewQueries: [{ propertyName: \"form\", first: true, predicate: AXFormComponent, descendants: true }], ngImport: i0, template: \"<ng-container *translate=\\\"let t\\\">\\n <div class=\\\"ax-text-center ax-mb-4\\\">\\n <h1 class=\\\"ax-font-bold ax-text-xl ax-mb-2\\\">\\n {{ t('signin.title', { scope: 'auth' }) | async }}\\n </h1>\\n <p class=\\\"ax-text-base ax-text-neutral-600\\\">\\n {{ t('signin.hint', { scope: 'auth' }) | async }}\\n </p>\\n </div>\\n <div class=\\\"ax-w-80 lg:ax-w-96\\\">\\n <ax-form>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-6\\\">\\n <ax-form-field>\\n <ax-label>{{ t(l1, { scope: 'auth' }) | async }}</ax-label>\\n <ax-text-box [name]=\\\"'username'\\\" [autoComplete]=\\\"'username'\\\" [(value)]=\\\"v1\\\">\\n <ax-validation-rule rule=\\\"required\\\"></ax-validation-rule>\\n </ax-text-box>\\n </ax-form-field>\\n <ax-form-field>\\n <ax-label>{{ t(l2, { scope: 'auth' }) | async }}</ax-label>\\n <ax-password-box [name]=\\\"'password'\\\" [autoComplete]=\\\"'current-password'\\\" [(value)]=\\\"v2\\\">\\n <ax-validation-rule rule=\\\"required\\\"></ax-validation-rule>\\n </ax-password-box>\\n </ax-form-field>\\n <div class=\\\"ax-flex ax-justify-between ax-items-center\\\">\\n <ax-check-box [(ngModel)]=\\\"isKeepLogin\\\">\\n <ax-label class=\\\"ax-mb-0\\\">{{ t('signin.remember', { scope: 'auth' }) | async }}</ax-label>\\n </ax-check-box>\\n <ax-button\\n color=\\\"primary\\\"\\n class=\\\"ax-sm\\\"\\n [text]=\\\"t('forgot.password', { scope: 'auth' }) | async\\\"\\n look=\\\"blank\\\"\\n (onClick)=\\\"handleForgotOnClick()\\\"\\n >\\n </ax-button>\\n </div>\\n </div>\\n <ax-button\\n color=\\\"primary\\\"\\n class=\\\"ax-mt-6 ax-w-full\\\"\\n [text]=\\\"t(submitText, { scope: 'auth' }) | async\\\"\\n (onClick)=\\\"handleLoginClick()\\\"\\n [disabled]=\\\"isLoading$ | async\\\"\\n [type]=\\\"'submit'\\\"\\n >\\n @if (isLoading$ | async) {\\n <ax-loading></ax-loading>\\n }\\n </ax-button>\\n @if(configs.signin_google ||configs.signin_apple ||configs.signup?.enable){\\n <div class=\\\"ax-heading ax-heading-center !ax-my-8\\\">\\n <span>{{ t('signin.or', { scope: 'auth' }) | async }}</span>\\n </div>\\n }\\n <div class=\\\"ax-flex ax-flex-col ax-gap-2 lg:ax-flex-row ax-justify-between ax-mt-6\\\">\\n @if(configs.signin_google){\\n <ax-button text=\\\"{{ 'authentication.with-google' | translate | async }}\\\" [color]=\\\"'default'\\\">\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-brands fa-google fa-lg ax-text-danger-500\\\"></i>\\n </ax-icon>\\n </ax-prefix> </ax-button\\n >} @if(configs.signin_apple){\\n\\n <ax-button text=\\\"{{ 'authentication.with-apple' | translate | async }}\\\" [color]=\\\"'default'\\\">\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-brands fa-apple fa-xl\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n </ax-button>\\n }\\n </div>\\n </ax-form>\\n @if(configs.signup?.enable){\\n <ax-button\\n class=\\\"ax-w-full ax-mt-2\\\"\\n (onClick)=\\\"handleRegisterOnClick()\\\"\\n text=\\\"{{ t('register', { scope: 'auth' }) | async }}\\\"\\n [color]=\\\"'default'\\\"\\n >\\n </ax-button>\\n }\\n </div>\\n </ng-container>\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: AXFormModule }, { kind: \"component\", type: i3.AXFormFieldComponent, selector: \"ax-form-field\", inputs: [\"labelMode\"] }, { kind: \"component\", type: i3.AXFormComponent, selector: \"ax-form\", inputs: [\"labelMode\", \"look\", \"messageStyle\", \"updateOn\"], outputs: [\"onValidate\", \"updateOnChange\"] }, { kind: \"directive\", type: i3.AXValidationRuleDirective, selector: \"ax-validation-rule\", inputs: [\"rule\", \"options\", \"message\", \"disabled\"] }, { kind: \"ngmodule\", type: AXTextBoxModule }, { kind: \"component\", type: i4.AXTextBoxComponent, selector: \"ax-text-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"value\", \"state\", \"name\", \"id\", \"placeholder\", \"maxLength\", \"allowNull\", \"type\", \"autoComplete\", \"look\", \"mask-options\", \"class\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"stateChange\", \"onValueChanged\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"ngmodule\", type: AXPasswordBoxModule }, { kind: \"component\", type: i5.AXPasswordBoxComponent, selector: \"ax-password-box\", inputs: [\"readonly\", \"disabled\", \"tabIndex\", \"placeholder\", \"value\", \"state\", \"name\", \"id\", \"look\", \"autoComplete\", \"showToggleButton\", \"class\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i6.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXLabelModule }, { kind: \"component\", type: i7.AXLabelComponent, selector: \"ax-label\", inputs: [\"required\", \"for\"], outputs: [\"requiredChange\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i8.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i8.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXCheckBoxModule }, { kind: \"component\", type: i9.AXCheckBoxComponent, selector: \"ax-check-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"color\", \"value\", \"name\", \"id\", \"checked\", \"indeterminate\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"onValueChanged\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"pipe\", type: i10.AXTranslatorPipe, name: \"translate\" }, { kind: \"directive\", type: i10.AXTranslatorDirective, selector: \"[translate]\" }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"component\", type: i11.AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }, { kind: \"ngmodule\", type: RouterModule }, { kind: \"ngmodule\", type: AXValidationModule }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPLoginPasswordComponent, decorators: [{\n type: Component,\n args: [{ imports: [...MODULES], template: \"<ng-container *translate=\\\"let t\\\">\\n <div class=\\\"ax-text-center ax-mb-4\\\">\\n <h1 class=\\\"ax-font-bold ax-text-xl ax-mb-2\\\">\\n {{ t('signin.title', { scope: 'auth' }) | async }}\\n </h1>\\n <p class=\\\"ax-text-base ax-text-neutral-600\\\">\\n {{ t('signin.hint', { scope: 'auth' }) | async }}\\n </p>\\n </div>\\n <div class=\\\"ax-w-80 lg:ax-w-96\\\">\\n <ax-form>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-6\\\">\\n <ax-form-field>\\n <ax-label>{{ t(l1, { scope: 'auth' }) | async }}</ax-label>\\n <ax-text-box [name]=\\\"'username'\\\" [autoComplete]=\\\"'username'\\\" [(value)]=\\\"v1\\\">\\n <ax-validation-rule rule=\\\"required\\\"></ax-validation-rule>\\n </ax-text-box>\\n </ax-form-field>\\n <ax-form-field>\\n <ax-label>{{ t(l2, { scope: 'auth' }) | async }}</ax-label>\\n <ax-password-box [name]=\\\"'password'\\\" [autoComplete]=\\\"'current-password'\\\" [(value)]=\\\"v2\\\">\\n <ax-validation-rule rule=\\\"required\\\"></ax-validation-rule>\\n </ax-password-box>\\n </ax-form-field>\\n <div class=\\\"ax-flex ax-justify-between ax-items-center\\\">\\n <ax-check-box [(ngModel)]=\\\"isKeepLogin\\\">\\n <ax-label class=\\\"ax-mb-0\\\">{{ t('signin.remember', { scope: 'auth' }) | async }}</ax-label>\\n </ax-check-box>\\n <ax-button\\n color=\\\"primary\\\"\\n class=\\\"ax-sm\\\"\\n [text]=\\\"t('forgot.password', { scope: 'auth' }) | async\\\"\\n look=\\\"blank\\\"\\n (onClick)=\\\"handleForgotOnClick()\\\"\\n >\\n </ax-button>\\n </div>\\n </div>\\n <ax-button\\n color=\\\"primary\\\"\\n class=\\\"ax-mt-6 ax-w-full\\\"\\n [text]=\\\"t(submitText, { scope: 'auth' }) | async\\\"\\n (onClick)=\\\"handleLoginClick()\\\"\\n [disabled]=\\\"isLoading$ | async\\\"\\n [type]=\\\"'submit'\\\"\\n >\\n @if (isLoading$ | async) {\\n <ax-loading></ax-loading>\\n }\\n </ax-button>\\n @if(configs.signin_google ||configs.signin_apple ||configs.signup?.enable){\\n <div class=\\\"ax-heading ax-heading-center !ax-my-8\\\">\\n <span>{{ t('signin.or', { scope: 'auth' }) | async }}</span>\\n </div>\\n }\\n <div class=\\\"ax-flex ax-flex-col ax-gap-2 lg:ax-flex-row ax-justify-between ax-mt-6\\\">\\n @if(configs.signin_google){\\n <ax-button text=\\\"{{ 'authentication.with-google' | translate | async }}\\\" [color]=\\\"'default'\\\">\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-brands fa-google fa-lg ax-text-danger-500\\\"></i>\\n </ax-icon>\\n </ax-prefix> </ax-button\\n >} @if(configs.signin_apple){\\n\\n <ax-button text=\\\"{{ 'authentication.with-apple' | translate | async }}\\\" [color]=\\\"'default'\\\">\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-brands fa-apple fa-xl\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n </ax-button>\\n }\\n </div>\\n </ax-form>\\n @if(configs.signup?.enable){\\n <ax-button\\n class=\\\"ax-w-full ax-mt-2\\\"\\n (onClick)=\\\"handleRegisterOnClick()\\\"\\n text=\\\"{{ t('register', { scope: 'auth' }) | async }}\\\"\\n [color]=\\\"'default'\\\"\\n >\\n </ax-button>\\n }\\n </div>\\n </ng-container>\\n\" }]\n }], propDecorators: { form: [{\n type: ViewChild,\n args: [AXFormComponent]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2F1dGgvc3JjL2xpYi9wYWdlcy9sb2dpbi9wYXNzd29yZC9wYXNzd29yZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXV0aC9zcmMvbGliL3BhZ2VzL2xvZ2luL3Bhc3N3b3JkL3Bhc3N3b3JkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFp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LElBQUksQ0FBQztvQkFDZixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDOUIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBakZVLHlCQUF5QjtrR0FBekIseUJBQXlCLDhHQWdCekIsZUFBZSxnREN6RDVCLDYwR0FzRkEsMkNEakVFLFlBQVksbUZBQ1osV0FBVyw4VkFDWCxZQUFZLGljQUNaLGVBQWUscWJBQ2YsbUJBQW1CLCtaQUNuQixjQUFjLDZYQUNkLGFBQWEsZ0tBQ2IsaUJBQWlCLHNWQUNqQixnQkFBZ0Isd1JBQ2hCLG1CQUFtQixnTEFFbkIsZUFBZSwrS0FDZixZQUFZLDhCQUNaLGtCQUFrQjs7MkZBT1AseUJBQXlCO2tCQUpyQyxTQUFTOzhCQUVDLENBQUMsR0FBRyxPQUFPLENBQUM7OEJBbUJiLElBQUk7c0JBRFgsU0FBUzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYQ2hlY2tCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY2hlY2stYm94JztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RpYWxvZyc7XG5pbXBvcnQgeyBBWEZvcm1Db21wb25lbnQsIEFYRm9ybU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9mb3JtJztcbmltcG9ydCB7IEFYTGFiZWxNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbGFiZWwnO1xuaW1wb3J0IHsgQVhMb2FkaW5nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgQVhQYXNzd29yZEJveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wYXNzd29yZC1ib3gnO1xuaW1wb3J0IHsgQVhUZXh0Qm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RleHQtYm94JztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciwgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgQVhWYWxpZGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgQVhQU2Vzc2lvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYTUF1dGhDb25maWdzLCBBWE1BdXRoZW50aWNhdGlvblR5cGVzLCBBWE1fQVVUSF9DT05GSUdfVE9LRU4gfSBmcm9tICcuLi8uLi8uLi9hdXRoLmNvbmZpZyc7XG5pbXBvcnQgeyBBWFBIb21lUGFnZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5jb25zdCBNT0RVTEVTID0gW1xuICBDb21tb25Nb2R1bGUsXG4gIEZvcm1zTW9kdWxlLFxuICBBWEZvcm1Nb2R1bGUsXG4gIEFYVGV4dEJveE1vZHVsZSxcbiAgQVhQYXNzd29yZEJveE1vZHVsZSxcbiAgQVhCdXR0b25Nb2R1bGUsXG4gIEFYTGFiZWxNb2R1bGUsXG4gIEFYRGVjb3JhdG9yTW9kdWxlLFxuICBBWENoZWNrQm94TW9kdWxlLFxuICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICBBWExvYWRpbmdNb2R1bGUsXG4gIFJvdXRlck1vZHVsZSxcbiAgQVhWYWxpZGF0aW9uTW9kdWxlLFxuXTtcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9wYXNzd29yZC5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFsuLi5NT0RVTEVTXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQTG9naW5QYXNzd29yZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByb3RlY3RlZCBjb25maWdzOiBBWE1BdXRoQ29uZmlncyA9IGluamVjdDxBWE1BdXRoQ29uZmlncz4oQVhNX0FVVEhfQ09ORklHX1RPS0VOKTtcbiAgcHJvdGVjdGVkIGwxITogc3RyaW5nO1xuICBwcm90ZWN0ZWQgbDIhOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIHYxID0gJyc7XG4gIHByb3RlY3RlZCB2Mjogc3RyaW5nIHwgbnVsbCA9ICcnO1xuXG4gIHByb3RlY3RlZCBpc0xvYWRpbmckOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBwcm90ZWN0ZWQgc3VibWl0VGV4dCA9ICdzaWduaW4uc3VibWl0JztcbiAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlID0gaW5qZWN0KEFYRGlhbG9nU2VydmljZSk7XG4gIHByaXZhdGUgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoQVhQU2Vzc2lvblNlcnZpY2UpO1xuICBwcml2YXRlIGFjdGl2YXRlUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIGhvbWVQYWdlU2VydmljZSA9IGluamVjdChBWFBIb21lUGFnZVNlcnZpY2UpO1xuXG4gIEBWaWV3Q2hpbGQoQVhGb3JtQ29tcG9uZW50KVxuICBwcml2YXRlIGZvcm0hOiBBWEZvcm1Db21wb25lbnQ7XG5cbiAgcHJpdmF0ZSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcblxuICBwcm90ZWN0ZWQgaXNLZWVwTG9naW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmwyID0gJ3Bhc3N3b3JkJztcbiAgICBzd2l0Y2ggKHRoaXMuY29uZmlncy50eXBlKSB7XG4gICAgICBjYXNlIEFYTUF1dGhlbnRpY2F0aW9uVHlwZXMuRW1haWxQYXNzd29yZDpcbiAgICAgICAgdGhpcy5sMSA9ICdlbWFpbCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBWE1BdXRoZW50aWNhdGlvblR5cGVzLk1vYmlsZVBhc3N3b3JkOlxuICAgICAgICB0aGlzLmwxID0gJ21vYmlsZSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBWE1BdXRoZW50aWNhdGlvblR5cGVzLlVzZXJuYW1lRW1haWxQYXNzd29yZDpcbiAgICAgICAgdGhpcy5sMSA9ICd1c2VybmFtZS1lbWFpbCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBWE1BdXRoZW50aWNhdGlvblR5cGVzLlVzZXJuYW1lUGFzc3dvcmQ6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmwxID0gJ3VzZXJuYW1lJztcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlRm9yZ290T25DbGljaygpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9hdXRoL2ZvcmdvdCddKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVSZWdpc3Rlck9uQ2xpY2soKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMuY29uZmlncy5zaWdudXA/LnVybCB8fCAnL2F1dGgvcmVnaXN0ZXInXSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlTG9naW5DbGljaygpIHtcbiAgICBjb25zdCByZWRpcmVjdFVybCA9IHRoaXMuYWN0aXZhdGVSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1sncmVkaXJlY3RVcmwnXTtcbiAgICB0aGlzLmZvcm0udmFsaWRhdGUoKS50aGVuKGFzeW5jIChmb3JtKSA9PiB7XG4gICAgICBpZiAoZm9ybS5yZXN1bHQpIHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuc3VibWl0VGV4dCA9ICdwcm9jZXNzaW5nJztcbiAgICAgICAgdGhpcy5zdWJtaXRUZXh0ID0gJ3JlZGlyZWN0aW5nJztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnNlc3Npb25TZXJ2aWNlLnNpZ25pbih7XG4gICAgICAgICAgICBzdHJhdGVneTogJ3VzZXItcGFzcycsXG4gICAgICAgICAgICB1c2VybmFtZTogdGhpcy52MSxcbiAgICAgICAgICAgIHBhc3N3b3JkOiB0aGlzLnYyISxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBhd2FpdCB0aGlzLnNlc3Npb25TZXJ2aWNlLnNpZ25JbkNvbXBsZXRlKCk7XG5cbiAgICAgICAgICBpZiAodGhpcy5zZXNzaW9uU2VydmljZS50ZW5hbnQ/LmlkID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2F1dGgvYWNjb3VudC90ZW5hbnQtY2hvb3NlciddKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2Vzc2lvblNlcnZpY2UuYXBwbGljYXRpb24/LmlkID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2F1dGgvYWNjb3VudC9hcHAtY2hvb3NlciddKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlZGlyZWN0VXJsKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcmVkaXJlY3RVcmxdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5ob21lUGFnZVNlcnZpY2UubmF2aWdhdGVUbygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKHsgZXJyb3IgfSk7XG4gICAgICAgICAgdGhpcy5zdWJtaXRUZXh0ID0gJ3NpZ25pbi5zdWJtaXQnO1xuICAgICAgICAgIHRoaXMudjIgPSBudWxsO1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICp0cmFuc2xhdGU9XCJsZXQgdFwiPlxuICA8ZGl2IGNsYXNzPVwiYXgtdGV4dC1jZW50ZXIgYXgtbWItNFwiPlxuICAgIDxoMSBjbGFzcz1cImF4LWZvbnQtYm9sZCBheC10ZXh0LXhsIGF4LW1iLTJcIj5cbiAgICAgIHt7IHQoJ3NpZ25pbi50aXRsZScsIHsgc2NvcGU6ICdhdXRoJyB9KSB8IGFzeW5jIH19XG4gICAgPC9oMT5cbiAgICA8cCBjbGFzcz1cImF4LXRleHQtYmFzZSBheC10ZXh0LW5ldXRyYWwtNjAwXCI+XG4gICAgICB7eyB0KCdzaWduaW4uaGludCcsIHsgc2NvcGU6ICdhdXRoJyB9KSB8IGFzeW5jIH19XG4gICAgPC9wPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImF4LXctODAgbGc6YXgtdy05NlwiPlxuICAgIDxheC1mb3JtPlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTZcIj5cbiAgICAgICAgPGF4LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPGF4LWxhYmVsPnt7IHQobDEsIHsgc2NvcGU6ICdhdXRoJyB9KSB8IGFzeW5jIH19PC9heC1sYWJlbD5cbiAgICAgICAgICA8YXgtdGV4dC1ib3ggW25hbWVdPVwiJ3VzZXJuYW1lJ1wiIFthdXRvQ29tcGxldGVdPVwiJ3VzZXJuYW1lJ1wiIFsodmFsdWUpXT1cInYxXCI+XG4gICAgICAgICAgICA8YXgtdmFsaWRhdGlvbi1ydWxlIHJ1bGU9XCJyZXF1aXJlZFwiPjwvYXgtdmFsaWRhdGlvbi1ydWxlPlxuICAgICAgICAgIDwvYXgtdGV4dC1ib3g+XG4gICAgICAgIDwvYXgtZm9ybS1maWVsZD5cbiAgICAgICAgPGF4LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPGF4LWxhYmVsPnt7IHQobDIsIHsgc2NvcGU6ICdhdXRoJyB9KSB8IGFzeW5jIH19PC9heC1sYWJlbD5cbiAgICAgICAgICA8YXgtcGFzc3dvcmQtYm94IFtuYW1lXT1cIidwYXNzd29yZCdcIiBbYXV0b0NvbXBsZXRlXT1cIidjdXJyZW50LXBhc3N3b3JkJ1wiIFsodmFsdWUpXT1cInYyXCI+XG4gICAgICAgICAgICA8YXgtdmFsaWRhdGlvbi1ydWxlIHJ1bGU9XCJyZXF1aXJlZFwiPjwvYXgtdmFsaWRhdGlvbi1ydWxlPlxuICAgICAgICAgIDwvYXgtcGFzc3dvcmQtYm94PlxuICAgICAgICA8L2F4LWZvcm0tZmllbGQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWp1c3RpZnktYmV0d2VlbiBheC1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8YXgtY2hlY2stYm94IFsobmdNb2RlbCldPVwiaXNLZWVwTG9naW5cIj5cbiAgICAgICAgICAgIDxheC1sYWJlbCBjbGFzcz1cImF4LW1iLTBcIj57eyB0KCdzaWduaW4ucmVtZW1iZXInLCB7IHNjb3BlOiAnYXV0aCcgfSkgfCBhc3luYyB9fTwvYXgtbGFiZWw+XG4gICAgICAgICAgPC9heC1jaGVjay1ib3g+XG4gICAgICAgICAgPGF4LWJ1dHRvblxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYXgtc21cIlxuICAgICAgICAgICAgW3RleHRdPVwidCgnZm9yZ290LnBhc3N3b3JkJywgeyBzY29wZTogJ2F1dGgnIH0pIHwgYXN5bmNcIlxuICAgICAgICAgICAgbG9vaz1cImJsYW5rXCJcbiAgICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZUZvcmdvdE9uQ2xpY2soKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8YXgtYnV0dG9uXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIGNsYXNzPVwiYXgtbXQtNiBheC13LWZ1bGxcIlxuICAgICAgICBbdGV4dF09XCJ0KHN1Ym1pdFRleHQsIHsgc2NvcGU6ICdhdXRoJyB9KSB8IGFzeW5jXCJcbiAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlTG9naW5DbGljaygpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzTG9hZGluZyQgfCBhc3luY1wiXG4gICAgICAgIFt0eXBlXT1cIidzdWJtaXQnXCJcbiAgICAgICAgPlxuICAgICAgICBAaWYgKGlzTG9hZGluZyQgfCBhc3luYykge1xuICAgICAgICAgIDxheC1sb2FkaW5nPjwvYXgtbG9hZGluZz5cbiAgICAgICAgfVxuICAgICAgPC9heC1idXR0b24+XG4gICAgICBAaWYoY29uZmlncy5zaWduaW5fZ29vZ2xlIHx8Y29uZmlncy5zaWduaW5fYXBwbGUgfHxjb25maWdzLnNpZ251cD8uZW5hYmxlKXtcbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWhlYWRpbmcgYXgtaGVhZGluZy1jZW50ZXIgIWF4LW15LThcIj5cbiAgICAgICAgICA8c3Bhbj57eyB0KCdzaWduaW4ub3InLCB7IHNjb3BlOiAnYXV0aCcgfSkgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtMiBsZzpheC1mbGV4LXJvdyBheC1qdXN0aWZ5LWJldHdlZW4gYXgtbXQtNlwiPlxuICAgICAgICBAaWYoY29uZmlncy5zaWduaW5fZ29vZ2xlKXtcbiAgICAgICAgICA8YXgtYnV0dG9uIHRleHQ9XCJ7eyAnYXV0aGVudGljYXRpb24ud2l0aC1nb29nbGUnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX1cIiBbY29sb3JdPVwiJ2RlZmF1bHQnXCI+XG4gICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICA8YXgtaWNvbj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLWJyYW5kcyBmYS1nb29nbGUgZmEtbGcgYXgtdGV4dC1kYW5nZXItNTAwXCI+PC9pPlxuICAgICAgICAgICAgICA8L2F4LWljb24+XG4gICAgICAgICAgICA8L2F4LXByZWZpeD4gPC9heC1idXR0b25cbiAgICAgICAgICAgID59IEBpZihjb25maWdzLnNpZ25pbl9hcHBsZSl7XG5cbiAgICAgICAgICAgIDxheC1idXR0b24gdGV4dD1cInt7ICdhdXRoZW50aWNhdGlvbi53aXRoLWFwcGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19XCIgW2NvbG9yXT1cIidkZWZhdWx0J1wiPlxuICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgIDxheC1pY29uPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1icmFuZHMgZmEtYXBwbGUgZmEteGxcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9heC1pY29uPlxuICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2F4LWZvcm0+XG4gICAgICBAaWYoY29uZmlncy5zaWdudXA/LmVuYWJsZSl7XG4gICAgICAgIDxheC1idXR0b25cbiAgICAgICAgICBjbGFzcz1cImF4LXctZnVsbCBheC1tdC0yXCJcbiAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVSZWdpc3Rlck9uQ2xpY2soKVwiXG4gICAgICAgICAgdGV4dD1cInt7IHQoJ3JlZ2lzdGVyJywgeyBzY29wZTogJ2F1dGgnIH0pIHwgYXN5bmMgfX1cIlxuICAgICAgICAgIFtjb2xvcl09XCInZGVmYXVsdCdcIlxuICAgICAgICAgID5cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuIl19"],"names":["i3","i6","i8","i10","i11"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,MAAM,OAAO,GAAG;AAChB,IAAI,YAAY;AAChB,IAAI,WAAW;AACf,IAAI,YAAY;AAChB,IAAI,eAAe;AACnB,IAAI,mBAAmB;AACvB,IAAI,cAAc;AAClB,IAAI,aAAa;AACjB,IAAI,iBAAiB;AACrB,IAAI,gBAAgB;AACpB,IAAI,mBAAmB;AACvB,IAAI,mBAAmB;AACvB,IAAI,eAAe;AACnB,IAAI,YAAY;AAChB,IAAI,kBAAkB;AACtB,CAAC;AACM,MAAM,yBAAyB,CAAC;AACvC,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACpD,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE;AACpB,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE;AACpB,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;AACpD,QAAQ,IAAI,CAAC,UAAU,GAAG,eAAe;AACzC,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;AACpD,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACvD,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC;AACnD,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACzD,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACpC,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK;AAChC;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,CAAC,EAAE,GAAG,UAAU;AAC5B,QAAQ,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI;AACjC,YAAY,KAAK,sBAAsB,CAAC,aAAa;AACrD,gBAAgB,IAAI,CAAC,EAAE,GAAG,OAAO;AACjC,gBAAgB;AAChB,YAAY,KAAK,sBAAsB,CAAC,cAAc;AACtD,gBAAgB,IAAI,CAAC,EAAE,GAAG,QAAQ;AAClC,gBAAgB;AAChB,YAAY,KAAK,sBAAsB,CAAC,qBAAqB;AAC7D,gBAAgB,IAAI,CAAC,EAAE,GAAG,gBAAgB;AAC1C,gBAAgB;AAChB,YAAY,KAAK,sBAAsB,CAAC,gBAAgB;AACxD,YAAY;AACZ,gBAAgB,IAAI,CAAC,EAAE,GAAG,UAAU;AACpC;AACA;AACA,IAAI,mBAAmB,GAAG;AAC1B,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,CAAC;AAC9C;AACA,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,gBAAgB,CAAC,CAAC;AAC5E;AACA,IAAI,gBAAgB,GAAG;AACvB,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC;AAClF,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK;AAClD,YAAY,IAAI,IAAI,CAAC,MAAM,EAAE;AAC7B,gBAAgB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1C,gBAAgB,IAAI,CAAC,UAAU,GAAG,YAAY;AAC9C,gBAAgB,IAAI,CAAC,UAAU,GAAG,aAAa;AAC/C,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AACrD,wBAAwB,QAAQ,EAAE,WAAW;AAC7C,wBAAwB,QAAQ,EAAE,IAAI,CAAC,EAAE;AACzC,wBAAwB,QAAQ,EAAE,IAAI,CAAC,EAAE;AACzC,qBAAqB,CAAC;AACtB,oBAAoB,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE;AAC9D,oBAAoB,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,IAAI,IAAI,EAAE;AAChE,wBAAwB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,8BAA8B,CAAC,CAAC;AAC9E;AACA,yBAAyB,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE,IAAI,IAAI,EAAE;AAC1E,wBAAwB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,2BAA2B,CAAC,CAAC;AAC3E;AACA,yBAAyB,IAAI,WAAW,EAAE;AAC1C,wBAAwB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC;AAC3D;AACA,yBAAyB;AACzB,wBAAwB,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE;AAC/D;AACA;AACA,gBAAgB,OAAO,KAAK,EAAE;AAC9B,oBAAoB,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;AAC1C,oBAAoB,IAAI,CAAC,UAAU,GAAG,eAAe;AACrD,oBAAoB,IAAI,CAAC,EAAE,GAAG,IAAI;AAClC,oBAAoB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/C;AACA;AACA,SAAS,CAAC;AACV;AACA,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAC3L,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,yBAAyB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,60GAA60G,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,eAAe,EAAE,QAAQ,EAAE,2CAA2C,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,qDAAqD,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,IAAE,CAAC,oBAAoB,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,IAAE,CAAC,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,IAAE,CAAC,yBAAyB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,kBAAkB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,sBAAsB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEC,EAAE,CAAC,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEC,IAAE,CAAC,wBAAwB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,IAAE,CAAC,2BAA2B,EAAE,QAAQ,EAAE,8IAA8I,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,mBAAmB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAEC,EAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,EAAG,CAAC,qBAAqB,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEC,IAAG,CAAC,kBAAkB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC,CAAC;AACtjO;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,CAAC;AACnI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,QAAQ,EAAE,60GAA60G,EAAE;AACr4G,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC;AACrC,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,eAAe;AACtC,aAAa,CAAC,EAAE,EAAE,CAAC;;;;"}