bways-report 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/LICENSE +26 -0
  2. package/README.md +477 -0
  3. package/esm2022/bways-report.mjs +5 -0
  4. package/esm2022/lib/core/errors/index.mjs +2 -0
  5. package/esm2022/lib/core/errors/reporting-errors.mjs +65 -0
  6. package/esm2022/lib/core/index.mjs +8 -0
  7. package/esm2022/lib/core/models/component-event.model.mjs +8 -0
  8. package/esm2022/lib/core/models/index.mjs +5 -0
  9. package/esm2022/lib/core/models/report-component.model.mjs +10 -0
  10. package/esm2022/lib/core/models/report-datasource.model.mjs +9 -0
  11. package/esm2022/lib/core/models/report-definition.model.mjs +13 -0
  12. package/esm2022/lib/core/models/report-grid.model.mjs +10 -0
  13. package/esm2022/lib/core/models/report-layout.model.mjs +9 -0
  14. package/esm2022/lib/core/models/report-parameter.model.mjs +9 -0
  15. package/esm2022/lib/core/models/validation.model.mjs +8 -0
  16. package/esm2022/lib/core/registry/component-category.mjs +8 -0
  17. package/esm2022/lib/core/registry/component-registry.mjs +90 -0
  18. package/esm2022/lib/core/registry/index.mjs +2 -0
  19. package/esm2022/lib/core/registry/property-definition.model.mjs +10 -0
  20. package/esm2022/lib/core/services/dynamic-form-builder.service.mjs +55 -0
  21. package/esm2022/lib/core/services/index.mjs +3 -0
  22. package/esm2022/lib/core/services/report-session-context.service.mjs +314 -0
  23. package/esm2022/lib/core/tokens/index.mjs +3 -0
  24. package/esm2022/lib/core/tokens/reporting-config.token.mjs +26 -0
  25. package/esm2022/lib/core/tokens/session-context.token.mjs +18 -0
  26. package/esm2022/lib/core/utilities/id-generator.mjs +17 -0
  27. package/esm2022/lib/core/utilities/index.mjs +3 -0
  28. package/esm2022/lib/core/utilities/schema-migration.mjs +38 -0
  29. package/esm2022/lib/core/utils/identifier-humanizer.mjs +88 -0
  30. package/esm2022/lib/core/validation/index.mjs +2 -0
  31. package/esm2022/lib/core/validation/validation-factory.mjs +70 -0
  32. package/esm2022/lib/data-access/adapters/http-lookup.adapter.mjs +107 -0
  33. package/esm2022/lib/data-access/adapters/http-schema-discovery.adapter.mjs +119 -0
  34. package/esm2022/lib/data-access/adapters/index.mjs +3 -0
  35. package/esm2022/lib/data-access/contracts/data-source.contract.mjs +28 -0
  36. package/esm2022/lib/data-access/contracts/index.mjs +7 -0
  37. package/esm2022/lib/data-access/contracts/lookup.contract.mjs +6 -0
  38. package/esm2022/lib/data-access/contracts/master-data.provider.mjs +24 -0
  39. package/esm2022/lib/data-access/contracts/report-persistence.contract.mjs +25 -0
  40. package/esm2022/lib/data-access/contracts/schema-discovery.contract.mjs +7 -0
  41. package/esm2022/lib/data-access/contracts/translation.contract.mjs +9 -0
  42. package/esm2022/lib/data-access/index.mjs +3 -0
  43. package/esm2022/lib/features/designer/components/component-palette/component-palette.component.mjs +542 -0
  44. package/esm2022/lib/features/designer/components/design-canvas/design-canvas.component.mjs +843 -0
  45. package/esm2022/lib/features/designer/components/property-editor/parameter-binding-editor.component.mjs +556 -0
  46. package/esm2022/lib/features/designer/components/property-editor/property-editor-datasource.component.mjs +845 -0
  47. package/esm2022/lib/features/designer/components/property-editor/property-editor-general.component.mjs +185 -0
  48. package/esm2022/lib/features/designer/components/property-editor/property-editor-grid.component.mjs +452 -0
  49. package/esm2022/lib/features/designer/components/property-editor/property-editor-layout.component.mjs +350 -0
  50. package/esm2022/lib/features/designer/components/property-editor/property-editor-report.component.mjs +175 -0
  51. package/esm2022/lib/features/designer/components/property-editor/property-editor-validation.component.mjs +137 -0
  52. package/esm2022/lib/features/designer/components/property-editor/property-editor.component.mjs +608 -0
  53. package/esm2022/lib/features/designer/components/toolbar/designer-toolbar.component.mjs +225 -0
  54. package/esm2022/lib/features/designer/designer.component.mjs +285 -0
  55. package/esm2022/lib/features/designer/index.mjs +7 -0
  56. package/esm2022/lib/features/designer/services/designer-state.service.mjs +310 -0
  57. package/esm2022/lib/features/designer/services/index.mjs +2 -0
  58. package/esm2022/lib/features/designer/utilities/canvas-layout.util.mjs +124 -0
  59. package/esm2022/lib/features/export/index.mjs +2 -0
  60. package/esm2022/lib/features/export/models/export.models.mjs +2 -0
  61. package/esm2022/lib/features/export/services/report-export.service.mjs +107 -0
  62. package/esm2022/lib/features/index.mjs +6 -0
  63. package/esm2022/lib/features/persistence/index.mjs +2 -0
  64. package/esm2022/lib/features/persistence/services/index.mjs +4 -0
  65. package/esm2022/lib/features/persistence/services/report-store.service.mjs +183 -0
  66. package/esm2022/lib/features/persistence/services/report-versioning.service.mjs +81 -0
  67. package/esm2022/lib/features/persistence/services/schema-validator.service.mjs +102 -0
  68. package/esm2022/lib/features/routing/components/routed-report-designer.component.mjs +156 -0
  69. package/esm2022/lib/features/routing/components/routed-report-runtime.component.mjs +163 -0
  70. package/esm2022/lib/features/routing/index.mjs +6 -0
  71. package/esm2022/lib/features/routing/models/report-route.models.mjs +2 -0
  72. package/esm2022/lib/features/routing/report-routes.mjs +49 -0
  73. package/esm2022/lib/features/routing/resolvers/report.resolver.mjs +22 -0
  74. package/esm2022/lib/features/routing/services/report-menu.service.mjs +77 -0
  75. package/esm2022/lib/features/runtime/dynamic-renderer.component.mjs +222 -0
  76. package/esm2022/lib/features/runtime/index.mjs +4 -0
  77. package/esm2022/lib/features/runtime/report-grid-bridge.component.mjs +409 -0
  78. package/esm2022/lib/features/runtime/report-runtime.component.mjs +147 -0
  79. package/esm2022/lib/primitives/components/button/rpt-button.component.mjs +88 -0
  80. package/esm2022/lib/primitives/components/chart-bridge/report-chart-bridge.component.mjs +361 -0
  81. package/esm2022/lib/primitives/components/checkbox/rpt-checkbox.component.mjs +86 -0
  82. package/esm2022/lib/primitives/components/date/rpt-date.component.mjs +91 -0
  83. package/esm2022/lib/primitives/components/dropdown/rpt-dropdown.component.mjs +204 -0
  84. package/esm2022/lib/primitives/components/icon/rpt-icon.component.mjs +476 -0
  85. package/esm2022/lib/primitives/components/index.mjs +10 -0
  86. package/esm2022/lib/primitives/components/input/rpt-input.component.mjs +88 -0
  87. package/esm2022/lib/primitives/components/kpi-card/rpt-kpi-card.component.mjs +197 -0
  88. package/esm2022/lib/primitives/components/number/rpt-number.component.mjs +110 -0
  89. package/esm2022/lib/primitives/index.mjs +3 -0
  90. package/esm2022/lib/primitives/register-builtins.mjs +328 -0
  91. package/esm2022/lib/provide-reporting.mjs +92 -0
  92. package/esm2022/public-api.mjs +9 -0
  93. package/fesm2022/bways-report.mjs +10360 -0
  94. package/fesm2022/bways-report.mjs.map +1 -0
  95. package/index.d.ts +5 -0
  96. package/lib/core/errors/index.d.ts +1 -0
  97. package/lib/core/errors/reporting-errors.d.ts +42 -0
  98. package/lib/core/index.d.ts +7 -0
  99. package/lib/core/models/component-event.model.d.ts +37 -0
  100. package/lib/core/models/index.d.ts +11 -0
  101. package/lib/core/models/report-component.model.d.ts +95 -0
  102. package/lib/core/models/report-datasource.model.d.ts +39 -0
  103. package/lib/core/models/report-definition.model.d.ts +100 -0
  104. package/lib/core/models/report-grid.model.d.ts +73 -0
  105. package/lib/core/models/report-layout.model.d.ts +43 -0
  106. package/lib/core/models/report-parameter.model.d.ts +22 -0
  107. package/lib/core/models/validation.model.d.ts +30 -0
  108. package/lib/core/registry/component-category.d.ts +16 -0
  109. package/lib/core/registry/component-registry.d.ts +101 -0
  110. package/lib/core/registry/index.d.ts +4 -0
  111. package/lib/core/registry/property-definition.model.d.ts +38 -0
  112. package/lib/core/services/dynamic-form-builder.service.d.ts +30 -0
  113. package/lib/core/services/index.d.ts +3 -0
  114. package/lib/core/services/report-session-context.service.d.ts +87 -0
  115. package/lib/core/tokens/index.d.ts +4 -0
  116. package/lib/core/tokens/reporting-config.token.d.ts +42 -0
  117. package/lib/core/tokens/session-context.token.d.ts +36 -0
  118. package/lib/core/utilities/id-generator.d.ts +9 -0
  119. package/lib/core/utilities/index.d.ts +3 -0
  120. package/lib/core/utilities/schema-migration.d.ts +10 -0
  121. package/lib/core/utils/identifier-humanizer.d.ts +22 -0
  122. package/lib/core/validation/index.d.ts +1 -0
  123. package/lib/core/validation/validation-factory.d.ts +31 -0
  124. package/lib/data-access/adapters/http-lookup.adapter.d.ts +19 -0
  125. package/lib/data-access/adapters/http-schema-discovery.adapter.d.ts +20 -0
  126. package/lib/data-access/adapters/index.d.ts +2 -0
  127. package/lib/data-access/contracts/data-source.contract.d.ts +37 -0
  128. package/lib/data-access/contracts/index.d.ts +9 -0
  129. package/lib/data-access/contracts/lookup.contract.d.ts +32 -0
  130. package/lib/data-access/contracts/master-data.provider.d.ts +54 -0
  131. package/lib/data-access/contracts/report-persistence.contract.d.ts +36 -0
  132. package/lib/data-access/contracts/schema-discovery.contract.d.ts +52 -0
  133. package/lib/data-access/contracts/translation.contract.d.ts +16 -0
  134. package/lib/data-access/index.d.ts +2 -0
  135. package/lib/features/designer/components/component-palette/component-palette.component.d.ts +39 -0
  136. package/lib/features/designer/components/design-canvas/design-canvas.component.d.ts +42 -0
  137. package/lib/features/designer/components/property-editor/parameter-binding-editor.component.d.ts +36 -0
  138. package/lib/features/designer/components/property-editor/property-editor-datasource.component.d.ts +68 -0
  139. package/lib/features/designer/components/property-editor/property-editor-general.component.d.ts +20 -0
  140. package/lib/features/designer/components/property-editor/property-editor-grid.component.d.ts +20 -0
  141. package/lib/features/designer/components/property-editor/property-editor-layout.component.d.ts +18 -0
  142. package/lib/features/designer/components/property-editor/property-editor-report.component.d.ts +15 -0
  143. package/lib/features/designer/components/property-editor/property-editor-validation.component.d.ts +12 -0
  144. package/lib/features/designer/components/property-editor/property-editor.component.d.ts +44 -0
  145. package/lib/features/designer/components/toolbar/designer-toolbar.component.d.ts +18 -0
  146. package/lib/features/designer/designer.component.d.ts +36 -0
  147. package/lib/features/designer/index.d.ts +7 -0
  148. package/lib/features/designer/services/designer-state.service.d.ts +103 -0
  149. package/lib/features/designer/services/index.d.ts +2 -0
  150. package/lib/features/designer/utilities/canvas-layout.util.d.ts +55 -0
  151. package/lib/features/export/index.d.ts +2 -0
  152. package/lib/features/export/models/export.models.d.ts +16 -0
  153. package/lib/features/export/services/report-export.service.d.ts +27 -0
  154. package/lib/features/index.d.ts +5 -0
  155. package/lib/features/persistence/index.d.ts +1 -0
  156. package/lib/features/persistence/services/index.d.ts +5 -0
  157. package/lib/features/persistence/services/report-store.service.d.ts +53 -0
  158. package/lib/features/persistence/services/report-versioning.service.d.ts +29 -0
  159. package/lib/features/persistence/services/schema-validator.service.d.ts +34 -0
  160. package/lib/features/routing/components/routed-report-designer.component.d.ts +18 -0
  161. package/lib/features/routing/components/routed-report-runtime.component.d.ts +18 -0
  162. package/lib/features/routing/index.d.ts +6 -0
  163. package/lib/features/routing/models/report-route.models.d.ts +41 -0
  164. package/lib/features/routing/report-routes.d.ts +16 -0
  165. package/lib/features/routing/resolvers/report.resolver.d.ts +7 -0
  166. package/lib/features/routing/services/report-menu.service.d.ts +30 -0
  167. package/lib/features/runtime/dynamic-renderer.component.d.ts +30 -0
  168. package/lib/features/runtime/index.d.ts +3 -0
  169. package/lib/features/runtime/report-grid-bridge.component.d.ts +94 -0
  170. package/lib/features/runtime/report-runtime.component.d.ts +26 -0
  171. package/lib/primitives/components/button/rpt-button.component.d.ts +19 -0
  172. package/lib/primitives/components/chart-bridge/report-chart-bridge.component.d.ts +45 -0
  173. package/lib/primitives/components/checkbox/rpt-checkbox.component.d.ts +14 -0
  174. package/lib/primitives/components/date/rpt-date.component.d.ts +17 -0
  175. package/lib/primitives/components/dropdown/rpt-dropdown.component.d.ts +32 -0
  176. package/lib/primitives/components/icon/rpt-icon.component.d.ts +41 -0
  177. package/lib/primitives/components/index.d.ts +12 -0
  178. package/lib/primitives/components/input/rpt-input.component.d.ts +16 -0
  179. package/lib/primitives/components/kpi-card/rpt-kpi-card.component.d.ts +43 -0
  180. package/lib/primitives/components/number/rpt-number.component.d.ts +20 -0
  181. package/lib/primitives/index.d.ts +2 -0
  182. package/lib/primitives/register-builtins.d.ts +11 -0
  183. package/lib/provide-reporting.d.ts +75 -0
  184. package/package.json +55 -0
  185. package/public-api.d.ts +5 -0
package/LICENSE ADDED
@@ -0,0 +1,26 @@
1
+ BWays-Report Software License Agreement
2
+
3
+ Copyright (c) 2026 CCPL / BWays Team. All rights reserved.
4
+
5
+ 1. GRANT OF LICENSE
6
+ Subject to the terms and conditions of this Agreement, CCPL / BWays Team ("Licensor") hereby grants to the individual or entity ("Licensee") a personal, non-exclusive, non-transferable, revocable license to install, import, and execute this library ("Software") solely as an integrated component in Licensee's software applications and projects.
7
+
8
+ 2. RESTRICTIONS ON USE
9
+ Except as expressly permitted in Section 1, Licensee shall not, and shall not permit or assist any third party to:
10
+ (a) Modify, adapt, alter, translate, or create derivative works based upon the Software or any part thereof.
11
+ (b) Copy, duplicate, replicate, or extract the source code, stylesheets, templates, assets, or binary files of the Software.
12
+ (c) Decompile, disassemble, reverse engineer, or otherwise attempt to derive or reconstruct the underlying source code, ideas, algorithms, file formats, or programming interfaces of the Software.
13
+ (d) Distribute, sublicense, rent, lease, loan, sell, resell, host, or otherwise make available the Software or any portion thereof as a standalone library, component, framework, or developer tool.
14
+ (e) Remove, obscure, or alter any copyright notices, trademarks, or other proprietary markings contained in or on the Software.
15
+
16
+ 3. INTELLECTUAL PROPERTY OWNERSHIP
17
+ The Software, including all copyrights, patents, trade secrets, trademarks, design rights, and other intellectual property rights therein, is and shall remain the sole and exclusive property of CCPL / BWays Team. This Agreement does not convey to Licensee any ownership interest in or to the Software, but only a limited right of use in accordance with the terms of this Agreement.
18
+
19
+ 4. TERMINATION
20
+ This license is effective until terminated. Licensee's rights under this Agreement will terminate automatically without notice if Licensee fails to comply with any of its terms. Upon termination, Licensee must cease all use of the Software and remove all copies from Licensee's systems and projects.
21
+
22
+ 5. DISCLAIMER OF WARRANTIES
23
+ THE SOFTWARE IS PROVIDED "AS IS" AND "AS AVAILABLE", WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, AND NON-INFRINGEMENT. LICENSOR DOES NOT WARRANT THAT THE SOFTWARE WILL BE ERROR-FREE, SECURE, OR UNINTERRUPTED.
24
+
25
+ 6. LIMITATION OF LIABILITY
26
+ IN NO EVENT SHALL CCPL / BWAYS TEAM BE LIABLE TO LICENSEE OR ANY THIRD PARTY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, PUNITIVE, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, BUSINESS, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, PERFORMANCE, OR INABILITY TO USE THE SOFTWARE, REGARDLESS OF THE THEORY OF LIABILITY (WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT, INCLUDING NEGLIGENCE OR OTHERWISE), EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package/README.md ADDED
@@ -0,0 +1,477 @@
1
+ # BWays-Report — Integration & Developer Guide
2
+
3
+ `bways-report` is an enterprise-grade, metadata-driven reporting platform and visual dynamic page builder for Angular 18+ business & ERP applications.
4
+
5
+ It allows non-developers to visually design reporting pages with filters, KPI metric cards, charts, and grids. The report configuration is saved purely as JSON metadata (`ReportDefinition`), and the runtime engine dynamically instantiates the reactive forms, controls, data queries, and results grid on the fly.
6
+
7
+ ---
8
+
9
+ ## Table of Contents
10
+
11
+ 1. [Installation](#1-installation)
12
+ 2. [Quick Start (App Configuration)](#2-quick-start-app-configuration)
13
+ 3. [Implementing Host Adapters](#3-implementing-host-adapters)
14
+ - [A. Data Source Adapter (Query Execution)](#a-data-source-adapter)
15
+ - [B. Persistence Adapter (Saving & Loading Reports)](#b-persistence-adapter)
16
+ - [C. Master Data Provider (Dropdown Lookups)](#c-master-data-provider)
17
+ 4. [Routing & ERP Navigation Integration](#4-routing--erp-navigation-integration)
18
+ - [Dynamic Route Generation](#dynamic-route-generation)
19
+ - [Categorized ERP Sidebar / Header Navigation](#categorized-erp-sidebar--header-navigation)
20
+ 5. [Embedding Components Directly](#5-embedding-components-directly)
21
+ - [Report Runtime (Interactive Report Page)](#report-runtime-interactive-report-page)
22
+ - [Visual Drag-and-Drop Designer](#visual-drag-and-drop-designer)
23
+ 6. [Grid & Chart Bridge Integration (BWays-Grid)](#6-grid--chart-bridge-integration-bways-grid)
24
+ 7. [Theming & CSS Custom Properties](#7-theming--css-custom-properties)
25
+ 8. [Registering Custom Host Controls](#8-registering-custom-host-controls)
26
+ 9. [Exporting Data (CSV & JSON)](#9-exporting-data-csv--json)
27
+
28
+ ---
29
+
30
+ ## 1. Installation
31
+
32
+ Install `bways-report` and its peer dependency `@angular/cdk` from npm:
33
+
34
+ ```bash
35
+ npm install bways-report @angular/cdk
36
+ ```
37
+
38
+ > **Requirements:**
39
+ > - Angular 18.0.0 or higher
40
+ > - Modern browser support (Chrome, Edge, Firefox, Safari)
41
+
42
+ ---
43
+
44
+ ## 2. Quick Start (App Configuration)
45
+
46
+ In your Angular host application's `app.config.ts`, register the library using `provideReporting()`:
47
+
48
+ ```typescript
49
+ // src/app/app.config.ts
50
+ import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core';
51
+ import { provideRouter } from '@angular/router';
52
+ import { provideReporting } from 'bways-report';
53
+ import { routes } from './app.routes';
54
+ import { ErpDataSourceAdapter } from './services/erp-datasource.adapter';
55
+ import { ErpPersistenceAdapter } from './services/erp-persistence.adapter';
56
+ import { ErpMasterDataProvider } from './services/erp-masterdata.provider';
57
+ // Optional: import your grid component (e.g., BWaysGridComponent from 'bways-grid')
58
+ import { BWaysGridComponent } from 'bways-grid';
59
+
60
+ export const appConfig: ApplicationConfig = {
61
+ providers: [
62
+ provideZoneChangeDetection({ eventCoalescing: true }),
63
+ provideRouter(routes),
64
+ provideReporting({
65
+ // Grid component delegation (falls back to built-in table if omitted)
66
+ gridComponent: BWaysGridComponent,
67
+
68
+ // Host ERP backend implementations
69
+ dataSourceAdapter: ErpDataSourceAdapter,
70
+ persistenceAdapter: ErpPersistenceAdapter,
71
+ masterDataProvider: ErpMasterDataProvider,
72
+
73
+ // Global defaults
74
+ defaultPageSize: 25,
75
+ dateFormat: 'dd/MM/yyyy',
76
+ enableDesigner: true,
77
+ }),
78
+ ],
79
+ };
80
+ ```
81
+
82
+ ---
83
+
84
+ ## 3. Implementing Host Adapters
85
+
86
+ The library is decoupled from your backend. You provide your business application's API handlers by extending three abstract contracts:
87
+
88
+ ### A. Data Source Adapter
89
+
90
+ Responsible for executing report queries and returning tabular result rows:
91
+
92
+ ```typescript
93
+ // src/app/services/erp-datasource.adapter.ts
94
+ import { Injectable, inject } from '@angular/core';
95
+ import { HttpClient } from '@angular/common/http';
96
+ import { Observable } from 'rxjs';
97
+ import { ReportDataSourceAdapter, ReportDataSourceDefinition } from 'bways-report';
98
+
99
+ @Injectable({ providedIn: 'root' })
100
+ export class ErpDataSourceAdapter extends ReportDataSourceAdapter {
101
+ private readonly http = inject(HttpClient);
102
+
103
+ execute(
104
+ dataSource: ReportDataSourceDefinition,
105
+ parameters: Record<string, unknown>
106
+ ): Observable<unknown[]> {
107
+ // Send report filter parameters to your backend API endpoint
108
+ return this.http.post<unknown[]>(dataSource.endpoint, parameters);
109
+ }
110
+ }
111
+ ```
112
+
113
+ ### B. Persistence Adapter
114
+
115
+ Responsible for saving, loading, listing, and publishing report metadata definitions (`ReportDefinition`):
116
+
117
+ ```typescript
118
+ // src/app/services/erp-persistence.adapter.ts
119
+ import { Injectable, inject } from '@angular/core';
120
+ import { HttpClient } from '@angular/common/http';
121
+ import { Observable } from 'rxjs';
122
+ import {
123
+ ReportPersistenceAdapter,
124
+ ReportDefinition,
125
+ ReportSummary,
126
+ } from 'bways-report';
127
+
128
+ @Injectable({ providedIn: 'root' })
129
+ export class ErpPersistenceAdapter extends ReportPersistenceAdapter {
130
+ private readonly http = inject(HttpClient);
131
+ private readonly baseUrl = '/api/reports';
132
+
133
+ load(reportId: string): Observable<ReportDefinition> {
134
+ return this.http.get<ReportDefinition>(`${this.baseUrl}/${reportId}`);
135
+ }
136
+
137
+ save(report: ReportDefinition): Observable<ReportDefinition> {
138
+ return this.http.post<ReportDefinition>(this.baseUrl, report);
139
+ }
140
+
141
+ list(): Observable<ReportSummary[]> {
142
+ return this.http.get<ReportSummary[]>(this.baseUrl);
143
+ }
144
+
145
+ delete(reportId: string): Observable<void> {
146
+ return this.http.delete<void>(`${this.baseUrl}/${reportId}`);
147
+ }
148
+
149
+ publish(reportId: string, version: number): Observable<void> {
150
+ return this.http.post<void>(`${this.baseUrl}/${reportId}/publish`, { version });
151
+ }
152
+ }
153
+ ```
154
+
155
+ ### C. Master Data Provider
156
+
157
+ Supplies option lists for dropdowns and lookups (e.g., Customers, Warehouses, Statuses):
158
+
159
+ ```typescript
160
+ // src/app/services/erp-masterdata.provider.ts
161
+ import { Injectable, inject } from '@angular/core';
162
+ import { HttpClient } from '@angular/common/http';
163
+ import { Observable } from 'rxjs';
164
+ import { MasterDataProvider, DropdownOption } from 'bways-report';
165
+
166
+ @Injectable({ providedIn: 'root' })
167
+ export class ErpMasterDataProvider extends MasterDataProvider {
168
+ private readonly http = inject(HttpClient);
169
+
170
+ getOptions(
171
+ masterName: string,
172
+ filter?: Record<string, unknown>
173
+ ): Observable<DropdownOption[]> {
174
+ return this.http.get<DropdownOption[]>(`/api/master-data/${masterName}`, {
175
+ params: filter as any,
176
+ });
177
+ }
178
+ }
179
+ ```
180
+
181
+ ---
182
+
183
+ ## 4. Routing & ERP Navigation Integration
184
+
185
+ ### Dynamic Route Generation
186
+
187
+ Mount all report runtime and designer routes with a single call in your `app.routes.ts`:
188
+
189
+ ```typescript
190
+ // src/app/app.routes.ts
191
+ import { Routes } from '@angular/router';
192
+ import { createReportRoutes } from 'bways-report';
193
+
194
+ export const routes: Routes = [
195
+ {
196
+ path: 'reports',
197
+ children: createReportRoutes({
198
+ // Optional: enforce auth or role guards
199
+ runtimeGuards: [],
200
+ designerGuards: [], // e.g. [AdminGuard]
201
+ enableDesignerRoutes: true, // creates 'new' and ':reportId/edit' routes
202
+ }),
203
+ },
204
+ ];
205
+ ```
206
+
207
+ This instantly creates:
208
+ - `/reports/:reportId` — Renders `RoutedReportRuntimeComponent` (resolves report via `reportResolver`, presents interactive filters, KPI metrics, chart, and result grid).
209
+ - `/reports/:reportId/edit` — Renders `RoutedReportDesignerComponent` (visual drag-and-drop builder loaded with current definition).
210
+ - `/reports/new` — Renders `RoutedReportDesignerComponent` initialized with a blank template.
211
+
212
+ ### Categorized ERP Sidebar / Header Navigation
213
+
214
+ Use `ReportMenuService` to generate hierarchical sidebar menus grouped by category (e.g. Finance, Sales, Inventory):
215
+
216
+ ```typescript
217
+ // src/app/components/sidebar/erp-sidebar.component.ts
218
+ import { Component, inject } from '@angular/core';
219
+ import { CommonModule } from '@angular/common';
220
+ import { RouterModule } from '@angular/router';
221
+ import { ReportMenuService } from 'bways-report';
222
+
223
+ @Component({
224
+ selector: 'erp-sidebar',
225
+ standalone: true,
226
+ imports: [CommonModule, RouterModule],
227
+ template: `
228
+ <aside class="sidebar">
229
+ <input
230
+ type="search"
231
+ placeholder="Search reports..."
232
+ (input)="onSearch($event)"
233
+ />
234
+
235
+ @for (group of menuService.menuGroups(); track group.category) {
236
+ <div class="menu-group">
237
+ <h4>{{ group.displayName }}</h4>
238
+ <ul>
239
+ @for (item of group.items; track item.id) {
240
+ <li>
241
+ <a [routerLink]="item.route" routerLinkActive="active">
242
+ {{ item.name }}
243
+ @if (item.isDraft) {
244
+ <span class="badge">Draft</span>
245
+ }
246
+ </a>
247
+ </li>
248
+ }
249
+ </ul>
250
+ </div>
251
+ }
252
+ </aside>
253
+ `,
254
+ })
255
+ export class ErpSidebarComponent {
256
+ readonly menuService = inject(ReportMenuService);
257
+
258
+ onSearch(event: Event): void {
259
+ const query = (event.target as HTMLInputElement).value;
260
+ this.menuService.setSearchQuery(query);
261
+ }
262
+ }
263
+ ```
264
+
265
+ ---
266
+
267
+ ## 5. Embedding Components Directly
268
+
269
+ If you prefer embedding components inside existing pages instead of routing:
270
+
271
+ ### Report Runtime (Interactive Report Page)
272
+
273
+ ```typescript
274
+ import { Component } from '@angular/core';
275
+ import { ReportRuntimeComponent, ReportDefinition } from 'bways-report';
276
+
277
+ @Component({
278
+ selector: 'my-report-page',
279
+ standalone: true,
280
+ imports: [ReportRuntimeComponent],
281
+ template: `
282
+ <!-- Option A: Load by ID via persistence adapter -->
283
+ <rpt-runtime [reportId]="'sales-register-2024'" />
284
+
285
+ <!-- Option B: Pass ReportDefinition directly -->
286
+ <!-- <rpt-runtime [report]="customDefinition" /> -->
287
+ `,
288
+ })
289
+ export class MyReportPageComponent {}
290
+ ```
291
+
292
+ ### Visual Drag-and-Drop Designer
293
+
294
+ ```typescript
295
+ import { Component } from '@angular/core';
296
+ import { DesignerComponent, ReportDefinition } from 'bways-report';
297
+
298
+ @Component({
299
+ selector: 'my-designer-page',
300
+ standalone: true,
301
+ imports: [DesignerComponent],
302
+ template: `
303
+ <rpt-designer
304
+ [initialReport]="reportDefinition"
305
+ (save)="onSaveReport($event)"
306
+ />
307
+ `,
308
+ })
309
+ export class MyDesignerPageComponent {
310
+ reportDefinition: ReportDefinition = /* ... */;
311
+
312
+ onSaveReport(updatedReport: ReportDefinition): void {
313
+ console.log('Saved report schema:', updatedReport);
314
+ }
315
+ }
316
+ ```
317
+
318
+ ---
319
+
320
+ ## 6. Grid & Chart Bridge Integration (BWays-Grid)
321
+
322
+ ### Using BWays-Grid or Custom Grid
323
+
324
+ Provide your grid component via the `GRID_COMPONENT` token in `provideReporting()`:
325
+
326
+ ```typescript
327
+ provideReporting({
328
+ gridComponent: BWaysGridComponent, // or AgGridWrapperComponent
329
+ })
330
+ ```
331
+
332
+ `ReportGridBridgeComponent` dynamically passes the data rows, columns configuration, sorting, and aggregate settings directly to your grid component. If no grid is provided, `bways-report` renders its high-performance built-in tabular grid with pagination and column sorting.
333
+
334
+ ### Using Chart Components
335
+
336
+ Provide a chart component wrapper (Chart.js, ApexCharts, Highcharts) via `chartComponent`:
337
+
338
+ ```typescript
339
+ provideReporting({
340
+ chartComponent: MyHostChartComponent,
341
+ })
342
+ ```
343
+
344
+ If not provided, the built-in SVG visual chart renderer outputs crisp, responsive Bar charts, Donut charts, and Line/Area charts with zero external dependencies.
345
+
346
+ ---
347
+
348
+ ## 7. Theming & CSS Custom Properties
349
+
350
+ `bways-report` uses CSS custom properties (`--rpt-*`) throughout all components, ensuring seamless alignment with your ERP application's design system:
351
+
352
+ ```css
353
+ /* In your host application's styles.scss or theme file */
354
+ :root {
355
+ /* Brand Colors */
356
+ --rpt-primary: #2563eb;
357
+ --rpt-primary-hover: #1d4ed8;
358
+ --rpt-primary-focus: rgba(37, 99, 235, 0.25);
359
+
360
+ /* Surface & Text */
361
+ --rpt-surface-bg: #ffffff;
362
+ --rpt-bg-subtle: #f8fafc;
363
+ --rpt-text-color: #0f172a;
364
+ --rpt-text-muted: #64748b;
365
+ --rpt-border-color: #e2e8f0;
366
+
367
+ /* Geometry & Typography */
368
+ --rpt-radius-md: 6px;
369
+ --rpt-radius-lg: 12px;
370
+ --rpt-font-family: 'Inter', system-ui, sans-serif;
371
+ --rpt-font-size-base: 0.875rem;
372
+
373
+ /* Status Colors */
374
+ --rpt-success-color: #10b981;
375
+ --rpt-warning-color: #f59e0b;
376
+ --rpt-error-color: #ef4444;
377
+ }
378
+
379
+ /* Dark Mode Theme */
380
+ [data-theme='dark'] {
381
+ --rpt-surface-bg: #1e293b;
382
+ --rpt-bg-subtle: #0f172a;
383
+ --rpt-text-color: #f8fafc;
384
+ --rpt-text-muted: #94a3b8;
385
+ --rpt-border-color: #334155;
386
+ }
387
+ ```
388
+
389
+ ---
390
+
391
+ ## 8. Registering Custom Host Controls
392
+
393
+ You can register custom Angular components (e.g., custom slider, multi-select, rich customer picker) into the `ComponentRegistry` so they appear in the Visual Designer palette and render dynamically at runtime:
394
+
395
+ ```typescript
396
+ import { ComponentRegistry, ComponentMetadata } from 'bways-report';
397
+ import { MyCustomPickerComponent } from './my-custom-picker.component';
398
+
399
+ export function configureCustomControls(registry: ComponentRegistry): void {
400
+ registry.register({
401
+ type: 'customer-picker',
402
+ displayName: 'Customer Picker',
403
+ category: 'input',
404
+ icon: 'person_search',
405
+ component: MyCustomPickerComponent,
406
+ createDefaultConfig: () => ({
407
+ id: 'cust-picker',
408
+ type: 'customer-picker',
409
+ label: 'Select Customer',
410
+ properties: { placeholder: 'Search customer...' },
411
+ layout: { columnSpan: 4 },
412
+ }),
413
+ propertySchema: [
414
+ { key: 'label', label: 'Label', type: 'string', required: true, group: 'General' },
415
+ { key: 'key', label: 'Field Name (Key)', type: 'string', required: true, group: 'General' },
416
+ { key: 'required', label: 'Required', type: 'boolean', group: 'Validation' },
417
+ ],
418
+ });
419
+ }
420
+ ```
421
+
422
+ ---
423
+
424
+ ## 9. Exporting Data (CSV & JSON)
425
+
426
+ Use `ReportExportService` for one-click file generation:
427
+
428
+ ```typescript
429
+ import { Component, inject } from '@angular/core';
430
+ import { ReportExportService } from 'bways-report';
431
+
432
+ @Component({
433
+ selector: 'export-actions',
434
+ standalone: true,
435
+ template: `
436
+ <button (click)="downloadCsv()">Download CSV</button>
437
+ <button (click)="downloadJson()">Download Metadata</button>
438
+ `,
439
+ })
440
+ export class ExportActionsComponent {
441
+ private readonly exportService = inject(ReportExportService);
442
+
443
+ downloadCsv(): void {
444
+ const data = [
445
+ { invoiceNo: 'INV-001', customer: 'Acme Corp', total: 4950 },
446
+ { invoiceNo: 'INV-002', customer: 'Globex Inc', total: 14080 },
447
+ ];
448
+
449
+ this.exportService.exportCsv(data, {
450
+ fileName: 'invoices-export.csv',
451
+ columns: [
452
+ { field: 'invoiceNo', header: 'Invoice #' },
453
+ { field: 'customer', header: 'Customer' },
454
+ {
455
+ field: 'total',
456
+ header: 'Total ($)',
457
+ formatter: (val: number) => `$${val.toLocaleString()}`
458
+ },
459
+ ],
460
+ addBom: true, // Includes UTF-8 BOM so Microsoft Excel renders international characters properly
461
+ });
462
+ }
463
+
464
+ downloadJson(): void {
465
+ this.exportService.exportJson(myReportDefinition, {
466
+ fileName: 'report-schema.json',
467
+ pretty: true,
468
+ });
469
+ }
470
+ }
471
+ ```
472
+
473
+ ---
474
+
475
+ ## License
476
+
477
+ MIT © BWays Technologies
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYndheXMtcmVwb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9id2F5cy1yZXBvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export { ReportDefinitionError, ComponentNotRegisteredError, DataSourceError, SchemaVersionError, AdapterNotProvidedError, } from './reporting-errors';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9jb3JlL2Vycm9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLDJCQUEyQixFQUMzQixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLHVCQUF1QixHQUN4QixNQUFNLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtcbiAgUmVwb3J0RGVmaW5pdGlvbkVycm9yLFxuICBDb21wb25lbnROb3RSZWdpc3RlcmVkRXJyb3IsXG4gIERhdGFTb3VyY2VFcnJvcixcbiAgU2NoZW1hVmVyc2lvbkVycm9yLFxuICBBZGFwdGVyTm90UHJvdmlkZWRFcnJvcixcbn0gZnJvbSAnLi9yZXBvcnRpbmctZXJyb3JzJztcbiJdfQ==
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Reporting library error types.
3
+ *
4
+ * Each error type has a distinct class for targeted catching
5
+ * and clear stack traces.
6
+ */
7
+ /**
8
+ * Thrown when a report definition fails validation.
9
+ */
10
+ export class ReportDefinitionError extends Error {
11
+ reportId;
12
+ constructor(message, reportId) {
13
+ super(`[BWays-Report] Report definition error${reportId ? ` (${reportId})` : ''}: ${message}`);
14
+ this.reportId = reportId;
15
+ this.name = 'ReportDefinitionError';
16
+ }
17
+ }
18
+ /**
19
+ * Thrown when a component type is not found in the registry.
20
+ */
21
+ export class ComponentNotRegisteredError extends Error {
22
+ componentType;
23
+ constructor(componentType) {
24
+ super(`[BWays-Report] Component type "${componentType}" is not registered. Did you forget to register it via ComponentRegistry?`);
25
+ this.componentType = componentType;
26
+ this.name = 'ComponentNotRegisteredError';
27
+ }
28
+ }
29
+ /**
30
+ * Thrown when a data source execution fails.
31
+ */
32
+ export class DataSourceError extends Error {
33
+ dataSourceId;
34
+ constructor(message, dataSourceId) {
35
+ super(`[BWays-Report] Data source error${dataSourceId ? ` (${dataSourceId})` : ''}: ${message}`);
36
+ this.dataSourceId = dataSourceId;
37
+ this.name = 'DataSourceError';
38
+ }
39
+ }
40
+ /**
41
+ * Thrown when a report definition's schema version is not supported.
42
+ */
43
+ export class SchemaVersionError extends Error {
44
+ currentVersion;
45
+ supportedVersion;
46
+ constructor(currentVersion, supportedVersion, customMessage) {
47
+ super(customMessage ??
48
+ `[BWays-Report] Schema version ${currentVersion} is not supported. Current supported version: ${supportedVersion}`);
49
+ this.currentVersion = currentVersion;
50
+ this.supportedVersion = supportedVersion;
51
+ this.name = 'SchemaVersionError';
52
+ }
53
+ }
54
+ /**
55
+ * Thrown when a required adapter/provider is not configured.
56
+ */
57
+ export class AdapterNotProvidedError extends Error {
58
+ adapterName;
59
+ constructor(adapterName) {
60
+ super(`[BWays-Report] ${adapterName} is not provided. Configure it via provideReporting({ ... }).`);
61
+ this.adapterName = adapterName;
62
+ this.name = 'AdapterNotProvidedError';
63
+ }
64
+ }
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0aW5nLWVycm9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2NvcmUvZXJyb3JzL3JlcG9ydGluZy1lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSDs7R0FFRztBQUNILE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxLQUFLO0lBQ0Q7SUFBN0MsWUFBWSxPQUFlLEVBQWtCLFFBQWlCO1FBQzVELEtBQUssQ0FBQyx5Q0FBeUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssT0FBTyxFQUFFLENBQUMsQ0FBQztRQURwRCxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBRTVELElBQUksQ0FBQyxJQUFJLEdBQUcsdUJBQXVCLENBQUM7SUFDdEMsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsS0FBSztJQUN4QjtJQUE1QixZQUE0QixhQUFxQjtRQUMvQyxLQUFLLENBQUMsa0NBQWtDLGFBQWEsMkVBQTJFLENBQUMsQ0FBQztRQUR4RyxrQkFBYSxHQUFiLGFBQWEsQ0FBUTtRQUUvQyxJQUFJLENBQUMsSUFBSSxHQUFHLDZCQUE2QixDQUFDO0lBQzVDLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGVBQWdCLFNBQVEsS0FBSztJQUNLO0lBQTdDLFlBQVksT0FBZSxFQUFrQixZQUFxQjtRQUNoRSxLQUFLLENBQUMsbUNBQW1DLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFEdEQsaUJBQVksR0FBWixZQUFZLENBQVM7UUFFaEUsSUFBSSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxLQUFLO0lBRXpCO0lBQ0E7SUFGbEIsWUFDa0IsY0FBc0IsRUFDdEIsZ0JBQXdCLEVBQ3hDLGFBQXNCO1FBRXRCLEtBQUssQ0FDSCxhQUFhO1lBQ1gsaUNBQWlDLGNBQWMsaURBQWlELGdCQUFnQixFQUFFLENBQ3JILENBQUM7UUFQYyxtQkFBYyxHQUFkLGNBQWMsQ0FBUTtRQUN0QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQVE7UUFPeEMsSUFBSSxDQUFDLElBQUksR0FBRyxvQkFBb0IsQ0FBQztJQUNuQyxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxLQUFLO0lBQ3BCO0lBQTVCLFlBQTRCLFdBQW1CO1FBQzdDLEtBQUssQ0FBQyxrQkFBa0IsV0FBVywrREFBK0QsQ0FBQyxDQUFDO1FBRDFFLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBRTdDLElBQUksQ0FBQyxJQUFJLEdBQUcseUJBQXlCLENBQUM7SUFDeEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZXBvcnRpbmcgbGlicmFyeSBlcnJvciB0eXBlcy5cbiAqXG4gKiBFYWNoIGVycm9yIHR5cGUgaGFzIGEgZGlzdGluY3QgY2xhc3MgZm9yIHRhcmdldGVkIGNhdGNoaW5nXG4gKiBhbmQgY2xlYXIgc3RhY2sgdHJhY2VzLlxuICovXG5cbi8qKlxuICogVGhyb3duIHdoZW4gYSByZXBvcnQgZGVmaW5pdGlvbiBmYWlscyB2YWxpZGF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgUmVwb3J0RGVmaW5pdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHB1YmxpYyByZWFkb25seSByZXBvcnRJZD86IHN0cmluZykge1xuICAgIHN1cGVyKGBbQldheXMtUmVwb3J0XSBSZXBvcnQgZGVmaW5pdGlvbiBlcnJvciR7cmVwb3J0SWQgPyBgICgke3JlcG9ydElkfSlgIDogJyd9OiAke21lc3NhZ2V9YCk7XG4gICAgdGhpcy5uYW1lID0gJ1JlcG9ydERlZmluaXRpb25FcnJvcic7XG4gIH1cbn1cblxuLyoqXG4gKiBUaHJvd24gd2hlbiBhIGNvbXBvbmVudCB0eXBlIGlzIG5vdCBmb3VuZCBpbiB0aGUgcmVnaXN0cnkuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb21wb25lbnROb3RSZWdpc3RlcmVkRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBjb21wb25lbnRUeXBlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgW0JXYXlzLVJlcG9ydF0gQ29tcG9uZW50IHR5cGUgXCIke2NvbXBvbmVudFR5cGV9XCIgaXMgbm90IHJlZ2lzdGVyZWQuIERpZCB5b3UgZm9yZ2V0IHRvIHJlZ2lzdGVyIGl0IHZpYSBDb21wb25lbnRSZWdpc3RyeT9gKTtcbiAgICB0aGlzLm5hbWUgPSAnQ29tcG9uZW50Tm90UmVnaXN0ZXJlZEVycm9yJztcbiAgfVxufVxuXG4vKipcbiAqIFRocm93biB3aGVuIGEgZGF0YSBzb3VyY2UgZXhlY3V0aW9uIGZhaWxzLlxuICovXG5leHBvcnQgY2xhc3MgRGF0YVNvdXJjZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHB1YmxpYyByZWFkb25seSBkYXRhU291cmNlSWQ/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihgW0JXYXlzLVJlcG9ydF0gRGF0YSBzb3VyY2UgZXJyb3Ike2RhdGFTb3VyY2VJZCA/IGAgKCR7ZGF0YVNvdXJjZUlkfSlgIDogJyd9OiAke21lc3NhZ2V9YCk7XG4gICAgdGhpcy5uYW1lID0gJ0RhdGFTb3VyY2VFcnJvcic7XG4gIH1cbn1cblxuLyoqXG4gKiBUaHJvd24gd2hlbiBhIHJlcG9ydCBkZWZpbml0aW9uJ3Mgc2NoZW1hIHZlcnNpb24gaXMgbm90IHN1cHBvcnRlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNjaGVtYVZlcnNpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGN1cnJlbnRWZXJzaW9uOiBudW1iZXIsXG4gICAgcHVibGljIHJlYWRvbmx5IHN1cHBvcnRlZFZlcnNpb246IG51bWJlcixcbiAgICBjdXN0b21NZXNzYWdlPzogc3RyaW5nXG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgY3VzdG9tTWVzc2FnZSA/P1xuICAgICAgICBgW0JXYXlzLVJlcG9ydF0gU2NoZW1hIHZlcnNpb24gJHtjdXJyZW50VmVyc2lvbn0gaXMgbm90IHN1cHBvcnRlZC4gQ3VycmVudCBzdXBwb3J0ZWQgdmVyc2lvbjogJHtzdXBwb3J0ZWRWZXJzaW9ufWBcbiAgICApO1xuICAgIHRoaXMubmFtZSA9ICdTY2hlbWFWZXJzaW9uRXJyb3InO1xuICB9XG59XG5cbi8qKlxuICogVGhyb3duIHdoZW4gYSByZXF1aXJlZCBhZGFwdGVyL3Byb3ZpZGVyIGlzIG5vdCBjb25maWd1cmVkLlxuICovXG5leHBvcnQgY2xhc3MgQWRhcHRlck5vdFByb3ZpZGVkRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBhZGFwdGVyTmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoYFtCV2F5cy1SZXBvcnRdICR7YWRhcHRlck5hbWV9IGlzIG5vdCBwcm92aWRlZC4gQ29uZmlndXJlIGl0IHZpYSBwcm92aWRlUmVwb3J0aW5nKHsgLi4uIH0pLmApO1xuICAgIHRoaXMubmFtZSA9ICdBZGFwdGVyTm90UHJvdmlkZWRFcnJvcic7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,8 @@
1
+ export * from './models';
2
+ export * from './registry';
3
+ export * from './tokens';
4
+ export * from './errors';
5
+ export * from './validation';
6
+ export * from './services';
7
+ export * from './utilities';
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9jb3JlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWdpc3RyeSc7XG5leHBvcnQgKiBmcm9tICcuL3Rva2Vucyc7XG5leHBvcnQgKiBmcm9tICcuL2Vycm9ycyc7XG5leHBvcnQgKiBmcm9tICcuL3ZhbGlkYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxpdGllcyc7XG4iXX0=
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Event and action definitions for report components.
3
+ *
4
+ * Events describe what happened (user interaction).
5
+ * Actions describe what should happen in response (command pattern).
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWV2ZW50Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvY29yZS9tb2RlbHMvY29tcG9uZW50LWV2ZW50Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFdmVudCBhbmQgYWN0aW9uIGRlZmluaXRpb25zIGZvciByZXBvcnQgY29tcG9uZW50cy5cbiAqXG4gKiBFdmVudHMgZGVzY3JpYmUgd2hhdCBoYXBwZW5lZCAodXNlciBpbnRlcmFjdGlvbikuXG4gKiBBY3Rpb25zIGRlc2NyaWJlIHdoYXQgc2hvdWxkIGhhcHBlbiBpbiByZXNwb25zZSAoY29tbWFuZCBwYXR0ZXJuKS5cbiAqL1xuXG4vKipcbiAqIEJpbmRzIGEgY29tcG9uZW50IGV2ZW50IHRvIGFuIGFjdGlvbi5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBganNvblxuICoge1xuICogICBcImV2ZW50XCI6IFwiY2hhbmdlXCIsXG4gKiAgIFwiYWN0aW9uXCI6IHsgXCJ0eXBlXCI6IFwicmVsb2FkLWRhdGFcIiwgXCJ0YXJnZXRcIjogXCJjaXR5RHJvcGRvd25cIiB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRFdmVudERlZmluaXRpb24ge1xuICAvKiogVGhlIERPTS9jb21wb25lbnQgZXZlbnQgbmFtZSAoZS5nLiwgJ2NoYW5nZScsICdjbGljaycsICdibHVyJykuICovXG4gIGV2ZW50OiBzdHJpbmc7XG5cbiAgLyoqIFRoZSBhY3Rpb24gdG8gZXhlY3V0ZSB3aGVuIHRoZSBldmVudCBmaXJlcy4gKi9cbiAgYWN0aW9uOiBDb21wb25lbnRBY3Rpb25EZWZpbml0aW9uO1xufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhIGNvbW1hbmQgdG8gZXhlY3V0ZSBpbiByZXNwb25zZSB0byBhIGNvbXBvbmVudCBldmVudC5cbiAqXG4gKiBBY3Rpb25zIGFyZSBkZWNsYXJhdGl2ZSDigJQgdGhlIHJ1bnRpbWUgZW5naW5lIGludGVycHJldHMgdGhlbS5cbiAqIFRoaXMgYXZvaWRzIGFyYml0cmFyeSBmdW5jdGlvbiByZWZlcmVuY2VzIGluIG1ldGFkYXRhLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEFjdGlvbkRlZmluaXRpb24ge1xuICAvKiogQWN0aW9uIHR5cGUgaWRlbnRpZmllciAoZS5nLiwgJ3JlbG9hZC1kYXRhJywgJ3NldC12YWx1ZScsICduYXZpZ2F0ZScsICdleGVjdXRlLXJlcG9ydCcpLiAqL1xuICB0eXBlOiBzdHJpbmc7XG5cbiAgLyoqIFRhcmdldCBjb21wb25lbnQgSUQgb3Iga2V5IHRoaXMgYWN0aW9uIGFmZmVjdHMuICovXG4gIHRhcmdldD86IHN0cmluZztcblxuICAvKiogQWRkaXRpb25hbCBhY3Rpb24gcGFyYW1ldGVycy4gKi9cbiAgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Barrel export for all core domain models.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9jb3JlL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQmFycmVsIGV4cG9ydCBmb3IgYWxsIGNvcmUgZG9tYWluIG1vZGVscy5cbiAqL1xuXG5leHBvcnQgdHlwZSB7XG4gIFJlcG9ydERlZmluaXRpb24sXG4gIFJlcG9ydFN1bW1hcnksXG4gIFJlcG9ydFBlcm1pc3Npb25EZWZpbml0aW9uLFxufSBmcm9tICcuL3JlcG9ydC1kZWZpbml0aW9uLm1vZGVsJztcblxuZXhwb3J0IHR5cGUge1xuICBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uLFxuICBDb21wb25lbnRCaW5kaW5nRGVmaW5pdGlvbixcbiAgQ29tcG9uZW50RGF0YVNvdXJjZURlZmluaXRpb24sXG4gIFZpc2liaWxpdHlEZWZpbml0aW9uLFxufSBmcm9tICcuL3JlcG9ydC1jb21wb25lbnQubW9kZWwnO1xuXG5leHBvcnQgdHlwZSB7XG4gIFJlcG9ydFBhcmFtZXRlckRlZmluaXRpb24sXG59IGZyb20gJy4vcmVwb3J0LXBhcmFtZXRlci5tb2RlbCc7XG5cbmV4cG9ydCB0eXBlIHtcbiAgUmVwb3J0RGF0YVNvdXJjZURlZmluaXRpb24sXG4gIERhdGFTb3VyY2VDYWNoZURlZmluaXRpb24sXG59IGZyb20gJy4vcmVwb3J0LWRhdGFzb3VyY2UubW9kZWwnO1xuXG5leHBvcnQgdHlwZSB7XG4gIFJlcG9ydEdyaWREZWZpbml0aW9uLFxuICBHcmlkQ29sdW1uRGVmaW5pdGlvbixcbiAgR3JpZE9wdGlvbnNEZWZpbml0aW9uLFxufSBmcm9tICcuL3JlcG9ydC1ncmlkLm1vZGVsJztcblxuZXhwb3J0IHR5cGUge1xuICBSZXBvcnRMYXlvdXREZWZpbml0aW9uLFxuICBDb21wb25lbnRMYXlvdXREZWZpbml0aW9uLFxufSBmcm9tICcuL3JlcG9ydC1sYXlvdXQubW9kZWwnO1xuXG5leHBvcnQgdHlwZSB7XG4gIFZhbGlkYXRpb25EZWZpbml0aW9uLFxufSBmcm9tICcuL3ZhbGlkYXRpb24ubW9kZWwnO1xuXG5leHBvcnQgdHlwZSB7XG4gIENvbXBvbmVudEV2ZW50RGVmaW5pdGlvbixcbiAgQ29tcG9uZW50QWN0aW9uRGVmaW5pdGlvbixcbn0gZnJvbSAnLi9jb21wb25lbnQtZXZlbnQubW9kZWwnO1xuIl19
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Report component definition — the metadata for a single UI element
3
+ * that appears on a report page.
4
+ *
5
+ * The `type` field is the registry key used to resolve the Angular component
6
+ * at runtime via `ComponentRegistry`. This avoids hard-coding component types
7
+ * in the renderer.
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWNvbXBvbmVudC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2NvcmUvbW9kZWxzL3JlcG9ydC1jb21wb25lbnQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVwb3J0IGNvbXBvbmVudCBkZWZpbml0aW9uIOKAlCB0aGUgbWV0YWRhdGEgZm9yIGEgc2luZ2xlIFVJIGVsZW1lbnRcbiAqIHRoYXQgYXBwZWFycyBvbiBhIHJlcG9ydCBwYWdlLlxuICpcbiAqIFRoZSBgdHlwZWAgZmllbGQgaXMgdGhlIHJlZ2lzdHJ5IGtleSB1c2VkIHRvIHJlc29sdmUgdGhlIEFuZ3VsYXIgY29tcG9uZW50XG4gKiBhdCBydW50aW1lIHZpYSBgQ29tcG9uZW50UmVnaXN0cnlgLiBUaGlzIGF2b2lkcyBoYXJkLWNvZGluZyBjb21wb25lbnQgdHlwZXNcbiAqIGluIHRoZSByZW5kZXJlci5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnRMYXlvdXREZWZpbml0aW9uIH0gZnJvbSAnLi9yZXBvcnQtbGF5b3V0Lm1vZGVsJztcbmltcG9ydCB7IFZhbGlkYXRpb25EZWZpbml0aW9uIH0gZnJvbSAnLi92YWxpZGF0aW9uLm1vZGVsJztcbmltcG9ydCB7IENvbXBvbmVudEV2ZW50RGVmaW5pdGlvbiB9IGZyb20gJy4vY29tcG9uZW50LWV2ZW50Lm1vZGVsJztcblxuLyoqXG4gKiBCaW5kaW5nIGNvbmZpZ3VyYXRpb24gZm9yIGNvbm5lY3RpbmcgYSBjb21wb25lbnQgdG8gYSBkYXRhIHNvdXJjZSBvciBwYXJhbWV0ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50QmluZGluZ0RlZmluaXRpb24ge1xuICAvKiogVGhlIGRhdGEgc291cmNlIElEIHRoaXMgY29tcG9uZW50IHJlYWRzIGZyb20uICovXG4gIGRhdGFTb3VyY2VJZD86IHN0cmluZztcblxuICAvKiogVGhlIGZpZWxkIHdpdGhpbiB0aGUgZGF0YSBzb3VyY2UgdG8gYmluZCB0byAoZm9yIGRpc3BsYXkgY29tcG9uZW50cykuICovXG4gIGZpZWxkPzogc3RyaW5nO1xuXG4gIC8qKiBUaGUgcGFyYW1ldGVyIGtleSB0aGlzIGNvbXBvbmVudCB3cml0ZXMgdG8gKGZvciBpbnB1dCBjb21wb25lbnRzKS4gKi9cbiAgcGFyYW1ldGVyS2V5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBEcm9wZG93blNvdXJjZVR5cGUgPSAnc3RhdGljJyB8ICd0YWJsZScgfCAncHJvY2VkdXJlJyB8ICdtYXN0ZXInO1xuXG4vKipcbiAqIERhdGEgc291cmNlIGNvbmZpZ3VyYXRpb24gZm9yIGNvbXBvbmVudHMgdGhhdCBsb2FkIHRoZWlyIG93biBkYXRhXG4gKiAoZS5nLiwgZHJvcGRvd25zIGxvYWRpbmcgb3B0aW9ucyBmcm9tIGRhdGFiYXNlIHRhYmxlcywgc3RvcmVkIHByb2NlZHVyZXMsIG9yIG1hc3RlciBkYXRhKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnREYXRhU291cmNlRGVmaW5pdGlvbiB7XG4gIC8qKiBTb3VyY2UgdHlwZTogJ3N0YXRpYycgfCAndGFibGUnIHwgJ3Byb2NlZHVyZScgfCAnbWFzdGVyJyAqL1xuICBzb3VyY2VUeXBlPzogRHJvcGRvd25Tb3VyY2VUeXBlO1xuXG4gIC8qKiBEYXRhYmFzZSBzY2hlbWEsIGUuZy4gJ2RibycgKGRlZmF1bHRzIHRvICdkYm8nKS4gKi9cbiAgc2NoZW1hPzogc3RyaW5nO1xuXG4gIC8qKiBEYXRhYmFzZSB0YWJsZSwgdmlldywgb3Igc3RvcmVkIHByb2NlZHVyZSBuYW1lIChlLmcuICdDdXN0b21lcnMnIG9yICd1c3BfR2V0QnJhbmNoZXMnKS4gKi9cbiAgZW50aXR5TmFtZT86IHN0cmluZztcblxuICAvKiogTWFzdGVyIGRhdGEgbmFtZSBmb3IgbGVnYWN5IG1hc3RlciBkYXRhIHByb3ZpZGVyIHJlc29sdXRpb24uICovXG4gIG1hc3Rlck5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqIERpc3BsYXkgZmllbGQgbmFtZSBpbiB0aGUgcmV0dXJuZWQgZGF0YSBpdGVtcyAoZS5nLiAnQ3VzdG9tZXJOYW1lJykuICovXG4gIGRpc3BsYXlGaWVsZD86IHN0cmluZztcblxuICAvKiogVmFsdWUgZmllbGQgbmFtZSBpbiB0aGUgcmV0dXJuZWQgZGF0YSBpdGVtcyAoZS5nLiAnQ3VzdG9tZXJJRCcpLiAqL1xuICB2YWx1ZUZpZWxkPzogc3RyaW5nO1xuXG4gIC8qKiBPcHRpb25hbCBzdGF0aWMgZmlsdGVyIHBhcmFtZXRlcnMgKGUuZy4geyBpc0FjdGl2ZTogMSB9KS4gKi9cbiAgZmlsdGVyPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgLyoqIFN0b3JlZCBwcm9jZWR1cmUgcGFyYW1ldGVyIG1hcHBpbmdzIChlLmcuIHsgJ0BCcmFuY2hJZCc6ICd7e2JyYW5jaFNlbGVjdH19JywgJ0BBY3RpdmVPbmx5JzogdHJ1ZSB9KS4gKi9cbiAgcGFyYW1ldGVyTWFwcGluZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPjtcblxuICAvKiogS2V5cyBvZiBvdGhlciBmb3JtIGNvbXBvbmVudHMgd2hvc2UgdmFsdWVzIHRoaXMgZGF0YSBzb3VyY2UgZGVwZW5kcyBvbiAoZm9yIENhc2NhZGluZyBEcm9wZG93bnMpLiAqL1xuICBkZXBlbmRzT24/OiBzdHJpbmdbXTtcblxuICAvKiogQ2FjaGUgdGltZS10by1saXZlIGluIHNlY29uZHMgKGRlZmF1bHQgMzAwcykuICovXG4gIGNhY2hlVHRsPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIENvbnRyb2xzIHdoZW4gYSBjb21wb25lbnQgaXMgdmlzaWJsZSBiYXNlZCBvbiBvdGhlciBjb21wb25lbnQgdmFsdWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZpc2liaWxpdHlEZWZpbml0aW9uIHtcbiAgLyoqIFRoZSBjb21wb25lbnQga2V5IHdob3NlIHZhbHVlIGRldGVybWluZXMgdmlzaWJpbGl0eS4gKi9cbiAgZGVwZW5kc09uOiBzdHJpbmc7XG5cbiAgLyoqIFRoZSBvcGVyYXRvciBmb3IgdGhlIGNvbmRpdGlvbi4gKi9cbiAgb3BlcmF0b3I6ICdlcXVhbHMnIHwgJ25vdEVxdWFscycgfCAnY29udGFpbnMnIHwgJ2dyZWF0ZXJUaGFuJyB8ICdsZXNzVGhhbicgfCAnaXNOb3RFbXB0eScgfCAnaXNFbXB0eSc7XG5cbiAgLyoqIFRoZSB2YWx1ZSB0byBjb21wYXJlIGFnYWluc3QuICovXG4gIHZhbHVlPzogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBGdWxsIG1ldGFkYXRhIGRlZmluaXRpb24gZm9yIGEgc2luZ2xlIGNvbXBvbmVudCBvbiBhIHJlcG9ydCBwYWdlLlxuICpcbiAqIFRoaXMgaXMgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2sgb2YgYSBgUmVwb3J0RGVmaW5pdGlvbmAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbiB7XG4gIC8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBjb21wb25lbnQgaW5zdGFuY2UuICovXG4gIGlkOiBzdHJpbmc7XG5cbiAgLyoqIFJlZ2lzdHJ5IGtleSDigJQgbWFwcyB0byBhbiBBbmd1bGFyIGNvbXBvbmVudCB2aWEgYENvbXBvbmVudFJlZ2lzdHJ5YC4gKi9cbiAgdHlwZTogc3RyaW5nO1xuXG4gIC8qKiBGb3JtIGNvbnRyb2wga2V5IC8gcGFyYW1ldGVyIGJpbmRpbmcgbmFtZS4gKi9cbiAga2V5Pzogc3RyaW5nO1xuXG4gIC8qKiBEaXNwbGF5IGxhYmVsIChvciB0cmFuc2xhdGlvbiBrZXkpLiAqL1xuICBsYWJlbD86IHN0cmluZztcblxuICAvKiogUmVuZGVyIG9yZGVyIChsb3dlciA9IGZpcnN0KS4gKi9cbiAgb3JkZXI/OiBudW1iZXI7XG5cbiAgLyoqIFBvc2l0aW9uIHdpdGhpbiB0aGUgcmVwb3J0IGxheW91dCBncmlkLiAqL1xuICBsYXlvdXQ/OiBDb21wb25lbnRMYXlvdXREZWZpbml0aW9uO1xuXG4gIC8qKiBDb21wb25lbnQtc3BlY2lmaWMgY29uZmlndXJhdGlvbiAoZS5nLiwgcGxhY2Vob2xkZXIsIGZvcm1hdCwgb3B0aW9ucykuICovXG4gIHByb3BlcnRpZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICAvKiogRGF0YSBiaW5kaW5nIGNvbmZpZ3VyYXRpb24uICovXG4gIGJpbmRpbmc/OiBDb21wb25lbnRCaW5kaW5nRGVmaW5pdGlvbjtcblxuICAvKiogVmFsaWRhdGlvbiBydWxlcy4gKi9cbiAgdmFsaWRhdGlvbj86IFZhbGlkYXRpb25EZWZpbml0aW9uO1xuXG4gIC8qKiBEYXRhIHNvdXJjZSBmb3IgdGhpcyBjb21wb25lbnQncyBvcHRpb25zL2RhdGEuICovXG4gIGRhdGFTb3VyY2U/OiBDb21wb25lbnREYXRhU291cmNlRGVmaW5pdGlvbjtcblxuICAvKiogRXZlbnQg4oaSIGFjdGlvbiBiaW5kaW5ncy4gKi9cbiAgZXZlbnRzPzogQ29tcG9uZW50RXZlbnREZWZpbml0aW9uW107XG5cbiAgLyoqIENvbmRpdGlvbmFsIHZpc2liaWxpdHkgcnVsZXMuICovXG4gIHZpc2liaWxpdHk/OiBWaXNpYmlsaXR5RGVmaW5pdGlvbjtcblxuICAvKiogV2hldGhlciB0aGlzIGNvbXBvbmVudCBpcyBlbmFibGVkLiBEZWZhdWx0cyB0byBgdHJ1ZWAuICovXG4gIGVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKiBDU1MgY2xhc3MgbmFtZXMgdG8gYWRkIHRvIHRoZSBjb21wb25lbnQgd3JhcHBlci4gKi9cbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XG59XG4iXX0=
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Report data source definitions.
3
+ *
4
+ * A data source describes how to fetch data for the report's result grid.
5
+ * The actual fetching is done by the host application through the
6
+ * `ReportDataSourceAdapter` contract.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRhdGFzb3VyY2UubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9jb3JlL21vZGVscy9yZXBvcnQtZGF0YXNvdXJjZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlcG9ydCBkYXRhIHNvdXJjZSBkZWZpbml0aW9ucy5cbiAqXG4gKiBBIGRhdGEgc291cmNlIGRlc2NyaWJlcyBob3cgdG8gZmV0Y2ggZGF0YSBmb3IgdGhlIHJlcG9ydCdzIHJlc3VsdCBncmlkLlxuICogVGhlIGFjdHVhbCBmZXRjaGluZyBpcyBkb25lIGJ5IHRoZSBob3N0IGFwcGxpY2F0aW9uIHRocm91Z2ggdGhlXG4gKiBgUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXJgIGNvbnRyYWN0LlxuICovXG5cbi8qKlxuICogRGVmaW5lcyBhIHNpbmdsZSBkYXRhIHNvdXJjZSBmb3IgdGhlIHJlcG9ydC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBvcnREYXRhU291cmNlRGVmaW5pdGlvbiB7XG4gIC8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBkYXRhIHNvdXJjZS4gKi9cbiAgaWQ6IHN0cmluZztcblxuICAvKiogSHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIGRhdGEgc291cmNlLiAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqIEVuZHBvaW50IGlkZW50aWZpZXIsIHN0b3JlZCBwcm9jZWR1cmUgbmFtZSwgb3IgcXVlcnkgcmVmZXJlbmNlLiAqL1xuICBlbmRwb2ludDogc3RyaW5nO1xuXG4gIC8qKiBIVFRQIG1ldGhvZCBvciBleGVjdXRpb24gbWV0aG9kIGhpbnQuICovXG4gIG1ldGhvZD86ICdHRVQnIHwgJ1BPU1QnIHwgJ1NUT1JFRF9QUk9DRURVUkUnIHwgJ0NVU1RPTSc7XG5cbiAgLyoqXG4gICAqIFBhcmFtZXRlciBrZXlzIHRoYXQgdGhpcyBkYXRhIHNvdXJjZSByZXF1aXJlcy5cbiAgICogVGhlc2UgYXJlIHJlc29sdmVkIGZyb20gdGhlIHJlcG9ydCdzIGN1cnJlbnQgcGFyYW1ldGVyIHZhbHVlc1xuICAgKiBiZWZvcmUgY2FsbGluZyB0aGUgYFJlcG9ydERhdGFTb3VyY2VBZGFwdGVyYC5cbiAgICovXG4gIHBhcmFtZXRlcktleXM/OiBzdHJpbmdbXTtcblxuICAvKiogV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IGV4ZWN1dGUgdGhpcyBkYXRhIHNvdXJjZSBvbiByZXBvcnQgbG9hZC4gKi9cbiAgYXV0b0V4ZWN1dGU/OiBib29sZWFuO1xuXG4gIC8qKiBDYWNoaW5nIHN0cmF0ZWd5LiAqL1xuICBjYWNoZT86IERhdGFTb3VyY2VDYWNoZURlZmluaXRpb247XG59XG5cbi8qKlxuICogQ2FjaGluZyBjb25maWd1cmF0aW9uIGZvciBhIGRhdGEgc291cmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFTb3VyY2VDYWNoZURlZmluaXRpb24ge1xuICAvKiogV2hldGhlciBjYWNoaW5nIGlzIGVuYWJsZWQgZm9yIHRoaXMgZGF0YSBzb3VyY2UuICovXG4gIGVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgLyoqIENhY2hlIGR1cmF0aW9uIGluIHNlY29uZHMuICovXG4gIHR0bFNlY29uZHM/OiBudW1iZXI7XG59XG4iXX0=