@alfresco/adf-process-services-cloud 7.1.0-15303058550 → 8.0.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 (212) hide show
  1. package/bundles/assets/adf-process-services-cloud/i18n/de.json +2 -2
  2. package/fesm2022/adf-process-services-cloud.mjs +829 -720
  3. package/fesm2022/adf-process-services-cloud.mjs.map +1 -1
  4. package/lib/app/components/app-list-cloud/app-list-cloud.component.scss +3 -3
  5. package/lib/common/date-range-filter/date-range-filter.service.d.ts +1 -1
  6. package/lib/flex.scss +81 -0
  7. package/lib/form/components/form-cloud.component.d.ts +4 -4
  8. package/lib/form/components/form-cloud.component.scss +16 -4
  9. package/lib/form/components/widgets/data-table/data-table-adapter.widget.d.ts +1 -2
  10. package/lib/form/components/widgets/data-table/data-table.widget.d.ts +1 -0
  11. package/lib/form/components/widgets/data-table/data-table.widget.scss +8 -0
  12. package/lib/form/components/widgets/data-table/helpers/data-table-path-parser.helper.d.ts +2 -1
  13. package/lib/form/components/widgets/date/date-cloud.widget.scss +10 -4
  14. package/lib/form/components/widgets/display-external-property/display-external-property.widget.scss +1 -1
  15. package/lib/form/components/widgets/display-rich-text/display-rich-text.widget.scss +0 -2
  16. package/lib/form/components/widgets/dropdown/dropdown-cloud.widget.d.ts +2 -0
  17. package/lib/form/components/widgets/dropdown/dropdown-cloud.widget.scss +2 -2
  18. package/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.widget.scss +1 -2
  19. package/lib/group/components/group-cloud.component.d.ts +3 -1
  20. package/lib/group/components/group-cloud.component.scss +5 -5
  21. package/lib/mat-selectors.scss +9 -0
  22. package/lib/models/constant-values.type.d.ts +19 -0
  23. package/lib/models/process-definition-cloud.model.d.ts +2 -0
  24. package/lib/models/task-cloud.model.d.ts +2 -0
  25. package/lib/people/components/people-cloud.component.d.ts +3 -1
  26. package/lib/people/components/people-cloud.component.scss +6 -6
  27. package/lib/process/process-filters/components/edit-process-filter/edit-process-filter-cloud.component.scss +7 -7
  28. package/lib/process/process-filters/models/process-filter-cloud.model.d.ts +1 -0
  29. package/lib/process/process-header/components/process-header-cloud.component.scss +1 -1
  30. package/lib/process/start-process/components/start-process-cloud.component.d.ts +4 -2
  31. package/lib/process-services-cloud.module.d.ts +12 -0
  32. package/lib/providers.d.ts +36 -0
  33. package/lib/screen/components/screen-cloud/screen-cloud.component.d.ts +10 -1
  34. package/lib/screen/models/screen-cloud.model.d.ts +7 -3
  35. package/lib/services/web-socket.service.d.ts +2 -5
  36. package/lib/task/models/task-details-cloud.model.d.ts +1 -0
  37. package/lib/task/task-filters/components/base-task-filters-cloud.component.d.ts +1 -1
  38. package/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.d.ts +1 -1
  39. package/lib/task/task-filters/components/edit-task-filters/edit-service-task-filter/edit-service-task-filter-cloud.component.scss +7 -7
  40. package/lib/task/task-filters/components/edit-task-filters/edit-task-filter/edit-task-filter-cloud.component.scss +7 -7
  41. package/lib/task/task-filters/components/task-assignment-filter/task-assignment-filter.component.scss +4 -4
  42. package/lib/task/task-form/components/task-form-cloud/task-form-cloud.component.scss +3 -3
  43. package/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.d.ts +11 -3
  44. package/lib/task/task-header/components/task-header-cloud.component.scss +2 -2
  45. package/lib/task/task-list/components/base-task-list-cloud.component.d.ts +1 -1
  46. package/package.json +5 -8
  47. package/public-api.d.ts +1 -0
  48. package/esm2022/adf-process-services-cloud.mjs +0 -5
  49. package/esm2022/lib/app/app-list-cloud.module.mjs +0 -20
  50. package/esm2022/lib/app/components/app-details-cloud/app-details-cloud.component.mjs +0 -67
  51. package/esm2022/lib/app/components/app-list-cloud/app-list-cloud.component.mjs +0 -126
  52. package/esm2022/lib/app/models/application-instance.model.mjs +0 -24
  53. package/esm2022/lib/app/public-api.mjs +0 -22
  54. package/esm2022/lib/app/services/apps-process-cloud.service.mjs +0 -97
  55. package/esm2022/lib/common/date-range-filter/date-range-filter.component.mjs +0 -164
  56. package/esm2022/lib/common/date-range-filter/date-range-filter.service.mjs +0 -97
  57. package/esm2022/lib/common/index.mjs +0 -18
  58. package/esm2022/lib/common/interface/environment.interface.mjs +0 -18
  59. package/esm2022/lib/common/interface/index.mjs +0 -18
  60. package/esm2022/lib/common/interface/public-api.mjs +0 -18
  61. package/esm2022/lib/common/public-api.mjs +0 -19
  62. package/esm2022/lib/form/components/cloud-form-rendering.service.mjs +0 -57
  63. package/esm2022/lib/form/components/form-cloud-custom-outcomes.component.mjs +0 -31
  64. package/esm2022/lib/form/components/form-cloud.component.mjs +0 -394
  65. package/esm2022/lib/form/components/form-definition-selector-cloud.component.mjs +0 -54
  66. package/esm2022/lib/form/components/spinner/form-spinner.component.mjs +0 -36
  67. package/esm2022/lib/form/components/widgets/attach-file/attach-file-cloud-widget.component.mjs +0 -250
  68. package/esm2022/lib/form/components/widgets/attach-file/file-properties-table/file-properties-table-cloud.component.mjs +0 -137
  69. package/esm2022/lib/form/components/widgets/data-table/data-table-adapter.widget.mjs +0 -111
  70. package/esm2022/lib/form/components/widgets/data-table/data-table.widget.mjs +0 -119
  71. package/esm2022/lib/form/components/widgets/data-table/helpers/data-table-path-parser.helper.mjs +0 -122
  72. package/esm2022/lib/form/components/widgets/date/date-cloud.widget.mjs +0 -189
  73. package/esm2022/lib/form/components/widgets/display-external-property/display-external-property.widget.mjs +0 -86
  74. package/esm2022/lib/form/components/widgets/display-rich-text/display-rich-text.widget.mjs +0 -80
  75. package/esm2022/lib/form/components/widgets/dropdown/dropdown-cloud.widget.mjs +0 -451
  76. package/esm2022/lib/form/components/widgets/dropdown/validators.mjs +0 -29
  77. package/esm2022/lib/form/components/widgets/file-viewer/file-viewer.widget.mjs +0 -47
  78. package/esm2022/lib/form/components/widgets/group/group-cloud.widget.mjs +0 -83
  79. package/esm2022/lib/form/components/widgets/people/people-cloud.widget.mjs +0 -91
  80. package/esm2022/lib/form/components/widgets/properties-viewer/properties-viewer-wrapper/properties-viewer-wrapper.component.mjs +0 -81
  81. package/esm2022/lib/form/components/widgets/properties-viewer/properties-viewer.widget.mjs +0 -54
  82. package/esm2022/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.schema.mjs +0 -86
  83. package/esm2022/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.widget.mjs +0 -117
  84. package/esm2022/lib/form/components/widgets/upload/upload-cloud.widget.mjs +0 -188
  85. package/esm2022/lib/form/form-cloud.module.mjs +0 -103
  86. package/esm2022/lib/form/models/form-cloud-representation.model.mjs +0 -48
  87. package/esm2022/lib/form/models/task-variable-cloud.model.mjs +0 -28
  88. package/esm2022/lib/form/public-api.mjs +0 -44
  89. package/esm2022/lib/form/services/content-cloud-node-selector.service.mjs +0 -120
  90. package/esm2022/lib/form/services/display-mode.service.mjs +0 -146
  91. package/esm2022/lib/form/services/form-cloud.service.interface.mjs +0 -18
  92. package/esm2022/lib/form/services/form-cloud.service.mjs +0 -201
  93. package/esm2022/lib/form/services/form-definition-selector-cloud.service.interface.mjs +0 -18
  94. package/esm2022/lib/form/services/form-definition-selector-cloud.service.mjs +0 -51
  95. package/esm2022/lib/form/services/form-utils.service.mjs +0 -37
  96. package/esm2022/lib/form/services/process-cloud-content.service.mjs +0 -71
  97. package/esm2022/lib/form/services/spinner/form-cloud-spinner.service.mjs +0 -50
  98. package/esm2022/lib/group/components/group-cloud.component.mjs +0 -422
  99. package/esm2022/lib/group/group-cloud.module.mjs +0 -33
  100. package/esm2022/lib/group/models/identity-group.model.mjs +0 -18
  101. package/esm2022/lib/group/public-api.mjs +0 -21
  102. package/esm2022/lib/group/services/identity-group.service.mjs +0 -89
  103. package/esm2022/lib/models/application-version.model.mjs +0 -21
  104. package/esm2022/lib/models/data-column-custom-data.mjs +0 -18
  105. package/esm2022/lib/models/date-cloud-filter.model.mjs +0 -31
  106. package/esm2022/lib/models/date-format-cloud.model.mjs +0 -18
  107. package/esm2022/lib/models/engine-event-cloud.model.mjs +0 -18
  108. package/esm2022/lib/models/filter-cloud-model.mjs +0 -128
  109. package/esm2022/lib/models/process-definition-cloud.model.mjs +0 -31
  110. package/esm2022/lib/models/process-instance-variable.model.mjs +0 -18
  111. package/esm2022/lib/models/process-variable-filter.model.mjs +0 -18
  112. package/esm2022/lib/models/task-cloud.model.mjs +0 -23
  113. package/esm2022/lib/models/task-list-sorting.model.mjs +0 -40
  114. package/esm2022/lib/models/variable-definition.mjs +0 -18
  115. package/esm2022/lib/people/components/people-cloud.component.mjs +0 -497
  116. package/esm2022/lib/people/models/identity-user.model.mjs +0 -18
  117. package/esm2022/lib/people/people-cloud.module.mjs +0 -33
  118. package/esm2022/lib/people/public-api.mjs +0 -21
  119. package/esm2022/lib/people/services/identity-user.service.mjs +0 -119
  120. package/esm2022/lib/process/process-cloud.module.mjs +0 -40
  121. package/esm2022/lib/process/process-filters/components/edit-process-filter/edit-process-filter-cloud.component.mjs +0 -802
  122. package/esm2022/lib/process/process-filters/components/process-filter-dialog/process-filter-dialog-cloud.component.mjs +0 -59
  123. package/esm2022/lib/process/process-filters/components/process-filters/process-filters-cloud.component.mjs +0 -290
  124. package/esm2022/lib/process/process-filters/models/process-filter-cloud.model.mjs +0 -169
  125. package/esm2022/lib/process/process-filters/process-filters-cloud.module.mjs +0 -44
  126. package/esm2022/lib/process/process-filters/public-api.mjs +0 -23
  127. package/esm2022/lib/process/process-filters/services/process-filter-cloud.service.mjs +0 -405
  128. package/esm2022/lib/process/process-header/components/process-header-cloud.component.mjs +0 -137
  129. package/esm2022/lib/process/process-header/process-header-cloud.module.mjs +0 -33
  130. package/esm2022/lib/process/process-header/public-api.mjs +0 -19
  131. package/esm2022/lib/process/process-list/components/process-list-cloud.component.mjs +0 -583
  132. package/esm2022/lib/process/process-list/datatable/process-list-datatable-adapter.mjs +0 -31
  133. package/esm2022/lib/process/process-list/models/perocess-instance-cloud-view.model.mjs +0 -18
  134. package/esm2022/lib/process/process-list/models/process-cloud-preferences.mjs +0 -24
  135. package/esm2022/lib/process/process-list/models/process-cloud-preset.model.mjs +0 -37
  136. package/esm2022/lib/process/process-list/models/process-cloud-query-request.model.mjs +0 -107
  137. package/esm2022/lib/process/process-list/models/process-list-sorting.model.mjs +0 -40
  138. package/esm2022/lib/process/process-list/process-list-cloud.module.mjs +0 -45
  139. package/esm2022/lib/process/process-list/public-api.mjs +0 -25
  140. package/esm2022/lib/process/process-list/services/process-list-cloud.service.mjs +0 -253
  141. package/esm2022/lib/process/process-list/services/process-task-list-cloud.service.mjs +0 -109
  142. package/esm2022/lib/process/public-api.mjs +0 -23
  143. package/esm2022/lib/process/services/process-cloud.service.mjs +0 -105
  144. package/esm2022/lib/process/start-process/components/start-process-cloud.component.mjs +0 -444
  145. package/esm2022/lib/process/start-process/models/process-instance-cloud.model.mjs +0 -18
  146. package/esm2022/lib/process/start-process/models/process-payload-cloud.model.mjs +0 -26
  147. package/esm2022/lib/process/start-process/models/process-with-form-payload-cloud.model.mjs +0 -26
  148. package/esm2022/lib/process/start-process/public-api.mjs +0 -21
  149. package/esm2022/lib/process/start-process/services/start-process-cloud.service.mjs +0 -125
  150. package/esm2022/lib/process-services-cloud.module.mjs +0 -91
  151. package/esm2022/lib/rich-text-editor/editorjs-config.mjs +0 -101
  152. package/esm2022/lib/rich-text-editor/index.mjs +0 -18
  153. package/esm2022/lib/rich-text-editor/public-api.mjs +0 -19
  154. package/esm2022/lib/rich-text-editor/rich-text-editor.component.mjs +0 -80
  155. package/esm2022/lib/rich-text-editor/rich-text-editor.module.mjs +0 -33
  156. package/esm2022/lib/screen/components/screen-cloud/screen-cloud.component.mjs +0 -154
  157. package/esm2022/lib/screen/models/screen-cloud.model.mjs +0 -18
  158. package/esm2022/lib/screen/public-api.mjs +0 -18
  159. package/esm2022/lib/services/base-cloud.service.mjs +0 -83
  160. package/esm2022/lib/services/cloud-token.service.mjs +0 -23
  161. package/esm2022/lib/services/form-fields.interfaces.mjs +0 -55
  162. package/esm2022/lib/services/local-preference-cloud.service.mjs +0 -115
  163. package/esm2022/lib/services/notification-cloud.service.mjs +0 -45
  164. package/esm2022/lib/services/preference-cloud.interface.mjs +0 -18
  165. package/esm2022/lib/services/public-api.mjs +0 -28
  166. package/esm2022/lib/services/screen-rendering.service.mjs +0 -30
  167. package/esm2022/lib/services/task-list-cloud.service.interface.mjs +0 -18
  168. package/esm2022/lib/services/user-preference-cloud.service.mjs +0 -105
  169. package/esm2022/lib/services/variable-mapper.sevice.mjs +0 -77
  170. package/esm2022/lib/services/web-socket.service.mjs +0 -182
  171. package/esm2022/lib/task/models/start-task-cloud-request.model.mjs +0 -32
  172. package/esm2022/lib/task/models/task-details-cloud.model.mjs +0 -26
  173. package/esm2022/lib/task/models/task.model.mjs +0 -23
  174. package/esm2022/lib/task/public-api.mjs +0 -26
  175. package/esm2022/lib/task/services/task-cloud.service.mjs +0 -272
  176. package/esm2022/lib/task/task-cloud.module.mjs +0 -45
  177. package/esm2022/lib/task/task-filters/components/base-task-filters-cloud.component.mjs +0 -59
  178. package/esm2022/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.mjs +0 -467
  179. package/esm2022/lib/task/task-filters/components/edit-task-filters/edit-service-task-filter/edit-service-task-filter-cloud.component.mjs +0 -206
  180. package/esm2022/lib/task/task-filters/components/edit-task-filters/edit-task-filter/edit-task-filter-cloud.component.mjs +0 -320
  181. package/esm2022/lib/task/task-filters/components/service-task-filters/service-task-filters-cloud.component.mjs +0 -147
  182. package/esm2022/lib/task/task-filters/components/task-assignment-filter/task-assignment-filter.component.mjs +0 -143
  183. package/esm2022/lib/task/task-filters/components/task-filter-dialog/task-filter-dialog-cloud.component.mjs +0 -73
  184. package/esm2022/lib/task/task-filters/components/task-filters/task-filters-cloud.component.mjs +0 -256
  185. package/esm2022/lib/task/task-filters/models/filter-cloud.model.mjs +0 -207
  186. package/esm2022/lib/task/task-filters/public-api.mjs +0 -27
  187. package/esm2022/lib/task/task-filters/services/service-task-filter-cloud.service.mjs +0 -283
  188. package/esm2022/lib/task/task-filters/services/task-filter-cloud.service.mjs +0 -392
  189. package/esm2022/lib/task/task-filters/task-filters-cloud.module.mjs +0 -56
  190. package/esm2022/lib/task/task-form/components/task-form-cloud/task-form-cloud.component.mjs +0 -199
  191. package/esm2022/lib/task/task-form/components/user-task-cloud/complete-task/complete-task.directive.mjs +0 -89
  192. package/esm2022/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.mjs +0 -259
  193. package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/claim-task/claim-task-cloud.directive.mjs +0 -101
  194. package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/unclaim-task/unclaim-task-cloud.directive.mjs +0 -87
  195. package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/user-task-cloud-buttons.component.mjs +0 -79
  196. package/esm2022/lib/task/task-form/public-api.mjs +0 -21
  197. package/esm2022/lib/task/task-form/task-form.module.mjs +0 -36
  198. package/esm2022/lib/task/task-header/components/task-header-cloud.component.mjs +0 -280
  199. package/esm2022/lib/task/task-header/public-api.mjs +0 -19
  200. package/esm2022/lib/task/task-header/task-header-cloud.module.mjs +0 -33
  201. package/esm2022/lib/task/task-list/components/base-task-list-cloud.component.mjs +0 -331
  202. package/esm2022/lib/task/task-list/components/service-task-list/service-task-list-cloud.component.mjs +0 -116
  203. package/esm2022/lib/task/task-list/components/task-list/datatable/task-list-datatable-adapter.mjs +0 -31
  204. package/esm2022/lib/task/task-list/components/task-list/task-list-cloud.component.mjs +0 -390
  205. package/esm2022/lib/task/task-list/models/service-task-cloud.model.mjs +0 -18
  206. package/esm2022/lib/task/task-list/models/task-cloud-view.model.mjs +0 -18
  207. package/esm2022/lib/task/task-list/public-api.mjs +0 -23
  208. package/esm2022/lib/task/task-list/services/service-task-list-cloud.service.mjs +0 -115
  209. package/esm2022/lib/task/task-list/services/task-list-cloud.service.mjs +0 -178
  210. package/esm2022/lib/task/task-list/task-list-cloud.module.mjs +0 -57
  211. package/esm2022/lib/types.mjs +0 -18
  212. package/esm2022/public-api.mjs +0 -40
@@ -1,111 +0,0 @@
1
- /*!
2
- * @license
3
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- import { ObjectDataTableAdapter, ObjectDataColumn, ObjectDataRow } from '@alfresco/adf-core';
18
- import { DataTablePathParserHelper } from './helpers/data-table-path-parser.helper';
19
- export class WidgetDataTableAdapter {
20
- get selectedRow() {
21
- return this.adapter.selectedRow;
22
- }
23
- get rowsChanged() {
24
- return this.adapter.rowsChanged;
25
- }
26
- constructor(data, schema) {
27
- this.columnKeys = [];
28
- this.helper = new DataTablePathParserHelper();
29
- this.adapter = new ObjectDataTableAdapter(data, schema);
30
- this.createColumns(schema);
31
- this.createRows(data);
32
- }
33
- createColumns(schema) {
34
- if (schema?.length) {
35
- this.adapter.setColumns(this.buildColumnsFromSchema(schema));
36
- }
37
- }
38
- buildColumnsFromSchema(schema) {
39
- return schema.map((dataColumn) => {
40
- this.columnKeys.push(dataColumn.key);
41
- return new ObjectDataColumn(dataColumn);
42
- });
43
- }
44
- createRows(data) {
45
- if (data?.length) {
46
- this.adapter.setRows(data.map((item) => this.buildDataRowFromItem(item)));
47
- }
48
- }
49
- buildDataRowFromItem(item) {
50
- const rowData = {};
51
- this.columnKeys.forEach((path, i) => {
52
- const rowValue = this.extractPropertyValue(this.helper.splitPathIntoProperties(path), item);
53
- if (rowValue) {
54
- rowData[this.columnKeys[i]] = rowValue;
55
- }
56
- });
57
- return new ObjectDataRow(rowData);
58
- }
59
- extractPropertyValue(properties, item) {
60
- return properties.reduce((acc, property) => {
61
- if (!acc) {
62
- return undefined;
63
- }
64
- const propertyIndexReferences = this.helper.getIndexReferencesFromProperty(property);
65
- const isPropertyWithSingleIndexReference = propertyIndexReferences.length === 1;
66
- const purePropertyName = this.helper.extractPurePropertyName(property);
67
- return isPropertyWithSingleIndexReference ? acc[purePropertyName]?.[propertyIndexReferences[0]] : acc[purePropertyName];
68
- }, item);
69
- }
70
- getColumns() {
71
- return this.adapter.getColumns();
72
- }
73
- getRows() {
74
- if (this.isDataSourceValid()) {
75
- return this.adapter.getRows();
76
- }
77
- return [];
78
- }
79
- setRows(rows) {
80
- this.adapter.setRows(rows);
81
- }
82
- setColumns(columns) {
83
- this.adapter.setColumns(columns);
84
- }
85
- getValue(row, col, resolverFn) {
86
- return this.adapter.getValue(row, col, resolverFn);
87
- }
88
- getColumnType(row, col) {
89
- return this.adapter.getColumnType(row, col);
90
- }
91
- getSorting() {
92
- return this.adapter.getSorting();
93
- }
94
- setSorting(sorting) {
95
- this.adapter.setSorting(sorting);
96
- }
97
- sort(key, direction) {
98
- this.adapter.sort(key, direction);
99
- }
100
- isDataSourceValid() {
101
- return this.hasAllColumnsLinkedToData() && this.allMandatoryColumnPropertiesHaveValues();
102
- }
103
- allMandatoryColumnPropertiesHaveValues() {
104
- return this.adapter.getColumns().every((column) => !!column.key);
105
- }
106
- hasAllColumnsLinkedToData() {
107
- const availableColumnKeys = this.adapter.getColumns().map((column) => column.key);
108
- return availableColumnKeys.every((columnKey) => this.adapter.getRows().some((row) => Object.keys(row.obj).includes(columnKey)));
109
- }
110
- }
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1hZGFwdGVyLndpZGdldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvZm9ybS9jb21wb25lbnRzL3dpZGdldHMvZGF0YS10YWJsZS9kYXRhLXRhYmxlLWFkYXB0ZXIud2lkZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxzQkFBc0IsRUFBdUIsZ0JBQWdCLEVBQUUsYUFBYSxFQUFpQyxNQUFNLG9CQUFvQixDQUFDO0FBQ2pKLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBR3BGLE1BQU0sT0FBTyxzQkFBc0I7SUFLL0IsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUNwQyxDQUFDO0lBRUQsWUFBWSxJQUFXLEVBQUUsTUFBb0I7UUFYckMsZUFBVSxHQUFhLEVBQUUsQ0FBQztRQUMxQixXQUFNLEdBQUcsSUFBSSx5QkFBeUIsRUFBRSxDQUFDO1FBVzdDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFeEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFTyxhQUFhLENBQUMsTUFBb0I7UUFDdEMsSUFBSSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxD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QUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwSSxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IE9iamVjdERhdGFUYWJsZUFkYXB0ZXIsIERhdGFDb2x1bW4sIERhdGFSb3csIE9iamVjdERhdGFDb2x1bW4sIE9iamVjdERhdGFSb3csIERhdGFUYWJsZUFkYXB0ZXIsIERhdGFTb3J0aW5nIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IERhdGFUYWJsZVBhdGhQYXJzZXJIZWxwZXIgfSBmcm9tICcuL2hlbHBlcnMvZGF0YS10YWJsZS1wYXRoLXBhcnNlci5oZWxwZXInO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY2xhc3MgV2lkZ2V0RGF0YVRhYmxlQWRhcHRlciBpbXBsZW1lbnRzIERhdGFUYWJsZUFkYXB0ZXIge1xuICAgIHByaXZhdGUgYWRhcHRlcjogT2JqZWN0RGF0YVRhYmxlQWRhcHRlcjtcbiAgICBwcml2YXRlIGNvbHVtbktleXM6IHN0cmluZ1tdID0gW107XG4gICAgcHJpdmF0ZSBoZWxwZXIgPSBuZXcgRGF0YVRhYmxlUGF0aFBhcnNlckhlbHBlcigpO1xuXG4gICAgZ2V0IHNlbGVjdGVkUm93KCk6IERhdGFSb3cge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLnNlbGVjdGVkUm93O1xuICAgIH1cblxuICAgIGdldCByb3dzQ2hhbmdlZCgpOiBTdWJqZWN0PEFycmF5PERhdGFSb3c+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIucm93c0NoYW5nZWQ7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoZGF0YTogYW55W10sIHNjaGVtYTogRGF0YUNvbHVtbltdKSB7XG4gICAgICAgIHRoaXMuYWRhcHRlciA9IG5ldyBPYmplY3REYXRhVGFibGVBZGFwdGVyKGRhdGEsIHNjaGVtYSk7XG5cbiAgICAgICAgdGhpcy5jcmVhdGVDb2x1bW5zKHNjaGVtYSk7XG4gICAgICAgIHRoaXMuY3JlYXRlUm93cyhkYXRhKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUNvbHVtbnMoc2NoZW1hOiBEYXRhQ29sdW1uW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKHNjaGVtYT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmFkYXB0ZXIuc2V0Q29sdW1ucyh0aGlzLmJ1aWxkQ29sdW1uc0Zyb21TY2hlbWEoc2NoZW1hKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkQ29sdW1uc0Zyb21TY2hlbWEoc2NoZW1hOiBEYXRhQ29sdW1uW10pOiBPYmplY3REYXRhQ29sdW1uW10ge1xuICAgICAgICByZXR1cm4gc2NoZW1hLm1hcCgoZGF0YUNvbHVtbikgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb2x1bW5LZXlzLnB1c2goZGF0YUNvbHVtbi5rZXkpO1xuXG4gICAgICAgICAgICByZXR1cm4gbmV3IE9iamVjdERhdGFDb2x1bW4oZGF0YUNvbHVtbik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlUm93cyhkYXRhOiBhbnlbXSk6IHZvaWQge1xuICAgICAgICBpZiAoZGF0YT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmFkYXB0ZXIuc2V0Um93cyhkYXRhLm1hcCgoaXRlbSkgPT4gdGhpcy5idWlsZERhdGFSb3dGcm9tSXRlbShpdGVtKSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZERhdGFSb3dGcm9tSXRlbShpdGVtOiBhbnkpOiBPYmplY3REYXRhUm93IHtcbiAgICAgICAgY29uc3Qgcm93RGF0YSA9IHt9O1xuICAgICAgICB0aGlzLmNvbHVtbktleXMuZm9yRWFjaCgocGF0aCwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgcm93VmFsdWUgPSB0aGlzLmV4dHJhY3RQcm9wZXJ0eVZhbHVlKHRoaXMuaGVscGVyLnNwbGl0UGF0aEludG9Qcm9wZXJ0aWVzKHBhdGgpLCBpdGVtKTtcblxuICAgICAgICAgICAgaWYgKHJvd1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcm93RGF0YVt0aGlzLmNvbHVtbktleXNbaV1dID0gcm93VmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBuZXcgT2JqZWN0RGF0YVJvdyhyb3dEYXRhKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4dHJhY3RQcm9wZXJ0eVZhbHVlKHByb3BlcnRpZXM6IHN0cmluZ1tdLCBpdGVtOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gcHJvcGVydGllcy5yZWR1Y2UoKGFjYywgcHJvcGVydHkpID0+IHtcbiAgICAgICAgICAgIGlmICghYWNjKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcHJvcGVydHlJbmRleFJlZmVyZW5jZXMgPSB0aGlzLmhlbHBlci5nZXRJbmRleFJlZmVyZW5jZXNGcm9tUHJvcGVydHkocHJvcGVydHkpO1xuICAgICAgICAgICAgY29uc3QgaXNQcm9wZXJ0eVdpdGhTaW5nbGVJbmRleFJlZmVyZW5jZSA9IHByb3BlcnR5SW5kZXhSZWZlcmVuY2VzLmxlbmd0aCA9PT0gMTtcblxuICAgICAgICAgICAgY29uc3QgcHVyZVByb3BlcnR5TmFtZSA9IHRoaXMuaGVscGVyLmV4dHJhY3RQdXJlUHJvcGVydHlOYW1lKHByb3BlcnR5KTtcblxuICAgICAgICAgICAgcmV0dXJuIGlzUHJvcGVydHlXaXRoU2luZ2xlSW5kZXhSZWZlcmVuY2UgPyBhY2NbcHVyZVByb3BlcnR5TmFtZV0/Lltwcm9wZXJ0eUluZGV4UmVmZXJlbmNlc1swXV0gOiBhY2NbcHVyZVByb3BlcnR5TmFtZV07XG4gICAgICAgIH0sIGl0ZW0pO1xuICAgIH1cblxuICAgIGdldENvbHVtbnMoKTogQXJyYXk8RGF0YUNvbHVtbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmdldENvbHVtbnMoKTtcbiAgICB9XG5cbiAgICBnZXRSb3dzKCk6IERhdGFSb3dbXSB7XG4gICAgICAgIGlmICh0aGlzLmlzRGF0YVNvdXJjZVZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZ2V0Um93cygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHNldFJvd3Mocm93czogQXJyYXk8RGF0YVJvdz4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hZGFwdGVyLnNldFJvd3Mocm93cyk7XG4gICAgfVxuXG4gICAgc2V0Q29sdW1ucyhjb2x1bW5zOiBBcnJheTxEYXRhQ29sdW1uPik6IHZvaWQge1xuICAgICAgICB0aGlzLmFkYXB0ZXIuc2V0Q29sdW1ucyhjb2x1bW5zKTtcbiAgICB9XG5cbiAgICBnZXRWYWx1ZShyb3c6IERhdGFSb3csIGNvbDogRGF0YUNvbHVtbiwgcmVzb2x2ZXJGbj86IChfcm93OiBEYXRhUm93LCBfY29sOiBEYXRhQ29sdW1uKSA9PiBhbnkpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmdldFZhbHVlKHJvdywgY29sLCByZXNvbHZlckZuKTtcbiAgICB9XG5cbiAgICBnZXRDb2x1bW5UeXBlKHJvdzogRGF0YVJvdywgY29sOiBEYXRhQ29sdW1uKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5nZXRDb2x1bW5UeXBlKHJvdywgY29sKTtcbiAgICB9XG5cbiAgICBnZXRTb3J0aW5nKCk6IERhdGFTb3J0aW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5nZXRTb3J0aW5nKCk7XG4gICAgfVxuXG4gICAgc2V0U29ydGluZyhzb3J0aW5nOiBEYXRhU29ydGluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmFkYXB0ZXIuc2V0U29ydGluZyhzb3J0aW5nKTtcbiAgICB9XG5cbiAgICBzb3J0KGtleT86IHN0cmluZywgZGlyZWN0aW9uPzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWRhcHRlci5zb3J0KGtleSwgZGlyZWN0aW9uKTtcbiAgICB9XG5cbiAgICBpc0RhdGFTb3VyY2VWYWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzQWxsQ29sdW1uc0xpbmtlZFRvRGF0YSgpICYmIHRoaXMuYWxsTWFuZGF0b3J5Q29sdW1uUHJvcGVydGllc0hhdmVWYWx1ZXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFsbE1hbmRhdG9yeUNvbHVtblByb3BlcnRpZXNIYXZlVmFsdWVzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmdldENvbHVtbnMoKS5ldmVyeSgoY29sdW1uKSA9PiAhIWNvbHVtbi5rZXkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzQWxsQ29sdW1uc0xpbmtlZFRvRGF0YSgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgYXZhaWxhYmxlQ29sdW1uS2V5czogc3RyaW5nW10gPSB0aGlzLmFkYXB0ZXIuZ2V0Q29sdW1ucygpLm1hcCgoY29sdW1uKSA9PiBjb2x1bW4ua2V5KTtcblxuICAgICAgICByZXR1cm4gYXZhaWxhYmxlQ29sdW1uS2V5cy5ldmVyeSgoY29sdW1uS2V5KSA9PiB0aGlzLmFkYXB0ZXIuZ2V0Um93cygpLnNvbWUoKHJvdykgPT4gT2JqZWN0LmtleXMocm93Lm9iaikuaW5jbHVkZXMoY29sdW1uS2V5KSkpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,119 +0,0 @@
1
- /*!
2
- * @license
3
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- /* eslint-disable @angular-eslint/component-selector */
18
- import { Component, ViewEncapsulation } from '@angular/core';
19
- import { WidgetComponent, FormService, FormBaseModule, DataTableComponent } from '@alfresco/adf-core';
20
- import { CommonModule } from '@angular/common';
21
- import { TranslateModule } from '@ngx-translate/core';
22
- import { FormCloudService } from '../../../services/form-cloud.service';
23
- import { WidgetDataTableAdapter } from './data-table-adapter.widget';
24
- import { DataTablePathParserHelper } from './helpers/data-table-path-parser.helper';
25
- import * as i0 from "@angular/core";
26
- import * as i1 from "@alfresco/adf-core";
27
- import * as i2 from "../../../services/form-cloud.service";
28
- import * as i3 from "@angular/common";
29
- import * as i4 from "@ngx-translate/core";
30
- export class DataTableWidgetComponent extends WidgetComponent {
31
- constructor(formService, formCloudService) {
32
- super(formService);
33
- this.formService = formService;
34
- this.formCloudService = formCloudService;
35
- this.dataTableLoadFailed = false;
36
- this.previewState = false;
37
- this.defaultResponseProperty = 'data';
38
- this.pathParserHelper = new DataTablePathParserHelper();
39
- }
40
- ngOnInit() {
41
- this.init();
42
- this.formService.onFormVariableChanged.subscribe(({ field }) => {
43
- if (field.id === this.field.id) {
44
- this.init();
45
- }
46
- });
47
- }
48
- init() {
49
- this.setPreviewState();
50
- this.getTableData();
51
- this.initDataTable();
52
- }
53
- getTableData() {
54
- this.variableName = this.field?.variableConfig?.variableName;
55
- this.columnsSchema = this.field?.schemaDefinition;
56
- this.getRowsData();
57
- }
58
- initDataTable() {
59
- this.dataTableLoadFailed = false;
60
- if (this.rowsData?.length) {
61
- this.dataSource = new WidgetDataTableAdapter(this.rowsData, this.columnsSchema);
62
- if (this.dataSource.isDataSourceValid()) {
63
- this.field.updateForm();
64
- }
65
- else {
66
- this.handleError('Data source has corrupted model or structure');
67
- }
68
- }
69
- else {
70
- this.handleError('Data source not found or it is not an array/object');
71
- }
72
- }
73
- getRowsData() {
74
- const optionsPath = this.field?.variableConfig?.optionsPath ?? this.defaultResponseProperty;
75
- const fieldValue = this.field?.value;
76
- const rowsData = fieldValue || this.getDataFromVariable();
77
- if (rowsData) {
78
- const dataFromPath = this.pathParserHelper.retrieveDataFromPath(rowsData, optionsPath);
79
- this.rowsData = (dataFromPath?.length ? dataFromPath : rowsData);
80
- }
81
- }
82
- getDataFromVariable() {
83
- const processVariables = this.field?.form?.processVariables;
84
- const formVariables = this.field?.form?.variables;
85
- const processVariableDropdownOptions = this.getVariableValueByName(processVariables, this.variableName);
86
- const formVariableDropdownOptions = this.getVariableValueByName(formVariables, this.variableName);
87
- return processVariableDropdownOptions ?? formVariableDropdownOptions;
88
- }
89
- getVariableValueByName(variables, variableName) {
90
- return variables?.find((variable) => variable?.name === `variables.${variableName}` || variable?.name === variableName)
91
- ?.value;
92
- }
93
- setPreviewState() {
94
- this.previewState = this.formCloudService.getPreviewState();
95
- }
96
- handleError(error) {
97
- if (!this.previewState) {
98
- this.dataTableLoadFailed = true;
99
- this.widgetError.emit(error);
100
- }
101
- }
102
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DataTableWidgetComponent, deps: [{ token: i1.FormService }, { token: i2.FormCloudService }], target: i0.ɵɵFactoryTarget.Component }); }
103
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: DataTableWidgetComponent, isStandalone: true, selector: "data-table", host: { listeners: { "click": "event($event)", "blur": "event($event)", "change": "event($event)", "focus": "event($event)", "focusin": "event($event)", "focusout": "event($event)", "input": "event($event)", "invalid": "event($event)", "select": "event($event)" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"adf-data-table-widget-container\">\n <div class=\"adf-data-table-widget-label\">\n <label\n class=\"adf-label\"\n [class.adf-left-label]=\"field.leftLabels\"\n [attr.for]=\"field.id\">\n {{field.name | translate }}\n </label>\n </div>\n\n <ng-container *ngIf=\"!previewState; else previewTemplate\">\n <adf-datatable data-automation-id=\"adf-data-table-widget\" [data]=\"dataSource\" />\n\n <error-widget *ngIf=\"dataTableLoadFailed\"\n class=\"adf-data-table-widget-failed-message\"\n required=\"{{ 'FORM.FIELD.DATA_TABLE_LOAD_FAILED' | translate }}\" />\n </ng-container>\n\n <ng-template #previewTemplate>\n <adf-datatable data-automation-id=\"adf-data-table-widget-preview\" />\n </ng-template>\n</div>\n", styles: [".adf-data-table-widget-failed-message{margin:10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormBaseModule }, { kind: "component", type: i1.ErrorWidgetComponent, selector: "error-widget", inputs: ["error", "required"] }, { kind: "component", type: DataTableComponent, selector: "adf-datatable", inputs: ["data", "rows", "sorting", "columns", "selectionMode", "multiselect", "mainTableAction", "actions", "showMainDatatableActions", "showProvidedActions", "actionsPosition", "actionsVisibleOnHover", "fallbackThumbnail", "contextMenu", "rowStyle", "rowStyleClass", "showHeader", "stickyHeader", "loading", "noPermission", "rowMenuCacheEnabled", "resolverFn", "allowFiltering", "isResizingEnabled", "blurOnResize", "displayCheckboxesOnHover", "enableDragRows"], outputs: ["rowClick", "rowDblClick", "showRowContextMenu", "showRowActionsMenu", "executeRowAction", "columnOrderChanged", "columnsWidthChanged", "selectedItemsCountChanged", "dragDropped"] }], encapsulation: i0.ViewEncapsulation.None }); }
104
- }
105
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DataTableWidgetComponent, decorators: [{
106
- type: Component,
107
- args: [{ standalone: true, imports: [CommonModule, TranslateModule, FormBaseModule, DataTableComponent], selector: 'data-table', host: {
108
- '(click)': 'event($event)',
109
- '(blur)': 'event($event)',
110
- '(change)': 'event($event)',
111
- '(focus)': 'event($event)',
112
- '(focusin)': 'event($event)',
113
- '(focusout)': 'event($event)',
114
- '(input)': 'event($event)',
115
- '(invalid)': 'event($event)',
116
- '(select)': 'event($event)'
117
- }, encapsulation: ViewEncapsulation.None, template: "<div class=\"adf-data-table-widget-container\">\n <div class=\"adf-data-table-widget-label\">\n <label\n class=\"adf-label\"\n [class.adf-left-label]=\"field.leftLabels\"\n [attr.for]=\"field.id\">\n {{field.name | translate }}\n </label>\n </div>\n\n <ng-container *ngIf=\"!previewState; else previewTemplate\">\n <adf-datatable data-automation-id=\"adf-data-table-widget\" [data]=\"dataSource\" />\n\n <error-widget *ngIf=\"dataTableLoadFailed\"\n class=\"adf-data-table-widget-failed-message\"\n required=\"{{ 'FORM.FIELD.DATA_TABLE_LOAD_FAILED' | translate }}\" />\n </ng-container>\n\n <ng-template #previewTemplate>\n <adf-datatable data-automation-id=\"adf-data-table-widget-preview\" />\n </ng-template>\n</div>\n", styles: [".adf-data-table-widget-failed-message{margin:10px}\n"] }]
118
- }], ctorParameters: () => [{ type: i1.FormService }, { type: i2.FormCloudService }] });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS53aWRnZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL2Zvcm0vY29tcG9uZW50cy93aWRnZXRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS53aWRnZXQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL2Zvcm0vY29tcG9uZW50cy93aWRnZXRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS53aWRnZXQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLFNBQVMsRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQXVCLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0gsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV4RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7Ozs7O0FBcUJwRixNQUFNLE9BQU8sd0JBQXlCLFNBQVEsZUFBZTtJQVd6RCxZQUFtQixXQUF3QixFQUFVLGdCQUFrQztRQUNuRixLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFESixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFUdkYsd0JBQW1CLEdBQUcsS0FB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LGVBQWU7cUJBQzlCLGlCQUNjLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXaWRnZXRDb21wb25lbnQsIEZvcm1TZXJ2aWNlLCBGb3JtQmFzZU1vZHVsZSwgRGF0YVJvdywgRGF0YUNvbHVtbiwgRGF0YVRhYmxlQ29tcG9uZW50IH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEZvcm1DbG91ZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mb3JtLWNsb3VkLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFza1ZhcmlhYmxlQ2xvdWQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvdGFzay12YXJpYWJsZS1jbG91ZC5tb2RlbCc7XG5pbXBvcnQgeyBXaWRnZXREYXRhVGFibGVBZGFwdGVyIH0gZnJvbSAnLi9kYXRhLXRhYmxlLWFkYXB0ZXIud2lkZ2V0JztcbmltcG9ydCB7IERhdGFUYWJsZVBhdGhQYXJzZXJIZWxwZXIgfSBmcm9tICcuL2hlbHBlcnMvZGF0YS10YWJsZS1wYXRoLXBhcnNlci5oZWxwZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZSwgRm9ybUJhc2VNb2R1bGUsIERhdGFUYWJsZUNvbXBvbmVudF0sXG4gICAgc2VsZWN0b3I6ICdkYXRhLXRhYmxlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGF0YS10YWJsZS53aWRnZXQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZGF0YS10YWJsZS53aWRnZXQuc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhjbGljayknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoYmx1ciknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoY2hhbmdlKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhmb2N1cyknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoZm9jdXNpbiknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoZm9jdXNvdXQpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGlucHV0KSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhpbnZhbGlkKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhzZWxlY3QpJzogJ2V2ZW50KCRldmVudCknXG4gICAgfSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIERhdGFUYWJsZVdpZGdldENvbXBvbmVudCBleHRlbmRzIFdpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgZGF0YVNvdXJjZTogV2lkZ2V0RGF0YVRhYmxlQWRhcHRlcjtcbiAgICBkYXRhVGFibGVMb2FkRmFpbGVkID0gZmFsc2U7XG4gICAgcHJldmlld1N0YXRlID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHJvd3NEYXRhOiBEYXRhUm93W107XG4gICAgcHJpdmF0ZSBjb2x1bW5zU2NoZW1hOiBEYXRhQ29sdW1uW107XG4gICAgcHJpdmF0ZSB2YXJpYWJsZU5hbWU6IHN0cmluZztcbiAgICBwcml2YXRlIGRlZmF1bHRSZXNwb25zZVByb3BlcnR5ID0gJ2RhdGEnO1xuICAgIHByaXZhdGUgcGF0aFBhcnNlckhlbHBlciA9IG5ldyBEYXRhVGFibGVQYXRoUGFyc2VySGVscGVyKCk7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZm9ybVNlcnZpY2U6IEZvcm1TZXJ2aWNlLCBwcml2YXRlIGZvcm1DbG91ZFNlcnZpY2U6IEZvcm1DbG91ZFNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoZm9ybVNlcnZpY2UpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluaXQoKTtcblxuICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLm9uRm9ybVZhcmlhYmxlQ2hhbmdlZC5zdWJzY3JpYmUoKHsgZmllbGQgfSkgPT4ge1xuICAgICAgICAgICAgaWYgKGZpZWxkLmlkID09PSB0aGlzLmZpZWxkLmlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRQcmV2aWV3U3RhdGUoKTtcbiAgICAgICAgdGhpcy5nZXRUYWJsZURhdGEoKTtcbiAgICAgICAgdGhpcy5pbml0RGF0YVRhYmxlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUYWJsZURhdGEoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFyaWFibGVOYW1lID0gdGhpcy5maWVsZD8udmFyaWFibGVDb25maWc/LnZhcmlhYmxlTmFtZTtcbiAgICAgICAgdGhpcy5jb2x1bW5zU2NoZW1hID0gdGhpcy5maWVsZD8uc2NoZW1hRGVmaW5pdGlvbjtcblxuICAgICAgICB0aGlzLmdldFJvd3NEYXRhKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0RGF0YVRhYmxlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRhdGFUYWJsZUxvYWRGYWlsZWQgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5yb3dzRGF0YT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgV2lkZ2V0RGF0YVRhYmxlQWRhcHRlcih0aGlzLnJvd3NEYXRhLCB0aGlzLmNvbHVtbnNTY2hlbWEpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhU291cmNlLmlzRGF0YVNvdXJjZVZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLnVwZGF0ZUZvcm0oKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcignRGF0YSBzb3VyY2UgaGFzIGNvcnJ1cHRlZCBtb2RlbCBvciBzdHJ1Y3R1cmUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoJ0RhdGEgc291cmNlIG5vdCBmb3VuZCBvciBpdCBpcyBub3QgYW4gYXJyYXkvb2JqZWN0Jyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFJvd3NEYXRhKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBvcHRpb25zUGF0aCA9IHRoaXMuZmllbGQ/LnZhcmlhYmxlQ29uZmlnPy5vcHRpb25zUGF0aCA/PyB0aGlzLmRlZmF1bHRSZXNwb25zZVByb3BlcnR5O1xuICAgICAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5maWVsZD8udmFsdWU7XG4gICAgICAgIGNvbnN0IHJvd3NEYXRhID0gZmllbGRWYWx1ZSB8fCB0aGlzLmdldERhdGFGcm9tVmFyaWFibGUoKTtcblxuICAgICAgICBpZiAocm93c0RhdGEpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFGcm9tUGF0aCA9IHRoaXMucGF0aFBhcnNlckhlbHBlci5yZXRyaWV2ZURhdGFGcm9tUGF0aChyb3dzRGF0YSwgb3B0aW9uc1BhdGgpO1xuICAgICAgICAgICAgdGhpcy5yb3dzRGF0YSA9IChkYXRhRnJvbVBhdGg/Lmxlbmd0aCA/IGRhdGFGcm9tUGF0aCA6IHJvd3NEYXRhKSBhcyBEYXRhUm93W107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERhdGFGcm9tVmFyaWFibGUoKTogYW55IHtcbiAgICAgICAgY29uc3QgcHJvY2Vzc1ZhcmlhYmxlcyA9IHRoaXMuZmllbGQ/LmZvcm0/LnByb2Nlc3NWYXJpYWJsZXM7XG4gICAgICAgIGNvbnN0IGZvcm1WYXJpYWJsZXMgPSB0aGlzLmZpZWxkPy5mb3JtPy52YXJpYWJsZXM7XG5cbiAgICAgICAgY29uc3QgcHJvY2Vzc1ZhcmlhYmxlRHJvcGRvd25PcHRpb25zID0gdGhpcy5nZXRWYXJpYWJsZVZhbHVlQnlOYW1lKHByb2Nlc3NWYXJpYWJsZXMsIHRoaXMudmFyaWFibGVOYW1lKTtcbiAgICAgICAgY29uc3QgZm9ybVZhcmlhYmxlRHJvcGRvd25PcHRpb25zID0gdGhpcy5nZXRWYXJpYWJsZVZhbHVlQnlOYW1lKGZvcm1WYXJpYWJsZXMsIHRoaXMudmFyaWFibGVOYW1lKTtcblxuICAgICAgICByZXR1cm4gcHJvY2Vzc1ZhcmlhYmxlRHJvcGRvd25PcHRpb25zID8/IGZvcm1WYXJpYWJsZURyb3Bkb3duT3B0aW9ucztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFZhcmlhYmxlVmFsdWVCeU5hbWUodmFyaWFibGVzOiBUYXNrVmFyaWFibGVDbG91ZFtdLCB2YXJpYWJsZU5hbWU6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIHJldHVybiB2YXJpYWJsZXM/LmZpbmQoKHZhcmlhYmxlOiBUYXNrVmFyaWFibGVDbG91ZCkgPT4gdmFyaWFibGU/Lm5hbWUgPT09IGB2YXJpYWJsZXMuJHt2YXJpYWJsZU5hbWV9YCB8fCB2YXJpYWJsZT8ubmFtZSA9PT0gdmFyaWFibGVOYW1lKVxuICAgICAgICAgICAgPy52YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFByZXZpZXdTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcmV2aWV3U3RhdGUgPSB0aGlzLmZvcm1DbG91ZFNlcnZpY2UuZ2V0UHJldmlld1N0YXRlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogYW55KSB7XG4gICAgICAgIGlmICghdGhpcy5wcmV2aWV3U3RhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YVRhYmxlTG9hZEZhaWxlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLndpZGdldEVycm9yLmVtaXQoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFkZi1kYXRhLXRhYmxlLXdpZGdldC1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYWRmLWRhdGEtdGFibGUtd2lkZ2V0LWxhYmVsXCI+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgY2xhc3M9XCJhZGYtbGFiZWxcIlxuICAgICAgICAgICAgW2NsYXNzLmFkZi1sZWZ0LWxhYmVsXT1cImZpZWxkLmxlZnRMYWJlbHNcIlxuICAgICAgICAgICAgW2F0dHIuZm9yXT1cImZpZWxkLmlkXCI+XG4gICAgICAgICAgICAgICAge3tmaWVsZC5uYW1lIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXByZXZpZXdTdGF0ZTsgZWxzZSBwcmV2aWV3VGVtcGxhdGVcIj5cbiAgICAgICAgPGFkZi1kYXRhdGFibGUgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLWRhdGEtdGFibGUtd2lkZ2V0XCIgW2RhdGFdPVwiZGF0YVNvdXJjZVwiIC8+XG5cbiAgICAgICAgPGVycm9yLXdpZGdldCAqbmdJZj1cImRhdGFUYWJsZUxvYWRGYWlsZWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJhZGYtZGF0YS10YWJsZS13aWRnZXQtZmFpbGVkLW1lc3NhZ2VcIlxuICAgICAgICAgICAgcmVxdWlyZWQ9XCJ7eyAnRk9STS5GSUVMRC5EQVRBX1RBQkxFX0xPQURfRkFJTEVEJyB8IHRyYW5zbGF0ZSB9fVwiIC8+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI3ByZXZpZXdUZW1wbGF0ZT5cbiAgICAgICAgPGFkZi1kYXRhdGFibGUgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLWRhdGEtdGFibGUtd2lkZ2V0LXByZXZpZXdcIiAvPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
@@ -1,122 +0,0 @@
1
- /*!
2
- * @license
3
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- export class DataTablePathParserHelper {
18
- constructor() {
19
- this.removeSquareBracketsRegEx = /^\[(.*)\]$/;
20
- this.indexReferencesRegEx = /(\[\d+\])+$/;
21
- }
22
- retrieveDataFromPath(data, path) {
23
- if (!path) {
24
- return [];
25
- }
26
- const properties = this.splitPathIntoProperties(path);
27
- const currentProperty = properties.shift();
28
- const propertyIndexReferences = this.getIndexReferencesFromProperty(currentProperty);
29
- const purePropertyName = this.extractPurePropertyName(currentProperty);
30
- const isPropertyWithMultipleIndexReferences = propertyIndexReferences.length > 1;
31
- if (isPropertyWithMultipleIndexReferences || !this.isPropertyExistsInData(data, purePropertyName)) {
32
- return [];
33
- }
34
- const isPropertyWithSingleIndexReference = propertyIndexReferences.length === 1;
35
- const nestedData = isPropertyWithSingleIndexReference ? data[purePropertyName]?.[propertyIndexReferences[0]] : data[purePropertyName];
36
- if (nestedData && properties.length === 0) {
37
- if (this.isDataArrayOrObject(nestedData)) {
38
- return Array.isArray(nestedData) ? nestedData : [nestedData];
39
- }
40
- }
41
- return this.retrieveDataFromPath(nestedData, properties.join('.'));
42
- }
43
- splitPathIntoProperties(path) {
44
- const properties = [];
45
- const separator = '.';
46
- const openBracket = '[';
47
- const closeBracket = ']';
48
- let currentPropertyBuffer = '';
49
- let bracketCount = 0;
50
- const isPropertySeparatorOutsideBrackets = () => bracketCount === 0;
51
- if (!path) {
52
- return properties;
53
- }
54
- for (const char of path) {
55
- switch (char) {
56
- case separator:
57
- if (isPropertySeparatorOutsideBrackets()) {
58
- properties.push(currentPropertyBuffer);
59
- currentPropertyBuffer = '';
60
- }
61
- else {
62
- currentPropertyBuffer += char;
63
- }
64
- break;
65
- case openBracket:
66
- bracketCount++;
67
- currentPropertyBuffer += char;
68
- break;
69
- case closeBracket:
70
- bracketCount--;
71
- currentPropertyBuffer += char;
72
- break;
73
- default:
74
- currentPropertyBuffer += char;
75
- break;
76
- }
77
- }
78
- if (currentPropertyBuffer) {
79
- properties.push(currentPropertyBuffer);
80
- }
81
- return properties;
82
- }
83
- getIndexReferencesFromProperty(property) {
84
- const match = this.indexReferencesRegEx.exec(property);
85
- if (!match) {
86
- return [];
87
- }
88
- const indexReferencesString = match[0];
89
- const numbersFromBrackets = indexReferencesString.slice(1, -1).split('][').map(Number);
90
- return numbersFromBrackets;
91
- }
92
- extractPurePropertyName(property) {
93
- const propertyIndexReferences = this.getIndexReferencesFromProperty(property);
94
- const numberOfIndexReferences = propertyIndexReferences.length;
95
- if (property == null) {
96
- return '';
97
- }
98
- else if (numberOfIndexReferences !== 0) {
99
- return this.removeSquareBracketsAndIndexReferencesFromProperty(property);
100
- }
101
- else {
102
- return this.removeSquareBracketsFromProperty(property);
103
- }
104
- }
105
- removeSquareBracketsAndIndexReferencesFromProperty(property) {
106
- const propertyWithoutIndexReferences = property?.replace(this.indexReferencesRegEx, '');
107
- return this.removeSquareBracketsFromProperty(propertyWithoutIndexReferences);
108
- }
109
- removeSquareBracketsFromProperty(property) {
110
- return property?.replace(this.removeSquareBracketsRegEx, '$1');
111
- }
112
- isPropertyExistsInData(data, property) {
113
- return Object.prototype.hasOwnProperty.call(data, property);
114
- }
115
- isDataArrayOrObject(data) {
116
- if (data == null) {
117
- return false;
118
- }
119
- return Array.isArray(data) || typeof data === 'object';
120
- }
121
- }
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1wYXRoLXBhcnNlci5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL2Zvcm0vY29tcG9uZW50cy93aWRnZXRzL2RhdGEtdGFibGUvaGVscGVycy9kYXRhLXRhYmxlLXBhdGgtcGFyc2VyLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxNQUFNLE9BQU8seUJBQXlCO0lBQXRDO1FBQ3FCLDhCQUF5QixHQUFHLFlBQVksQ0FBQztRQUN6Qyx5QkFBb0IsR0FBRyxhQUFhLENBQUM7SUF1SDFELENBQUM7SUFySEcsb0JBQW9CLENBQUMsSUFBUyxFQUFFLElBQVk7UUFDeEMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1IsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RELE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQyxNQUFNLHVCQUF1QixHQUFHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNyRixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2RSxNQUFNLHFDQUFxQyxHQUFHLHVCQUF1QixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFFakYsSUFBSSxxQ0FBcUMsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1lBQ2hHLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sa0NBQWtDLEdBQUcsdUJBQXVCLENBQUMsTUFBTSxLQUFLLENB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IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuZXhwb3J0IGNsYXNzIERhdGFUYWJsZVBhdGhQYXJzZXJIZWxwZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVtb3ZlU3F1YXJlQnJhY2tldHNSZWdFeCA9IC9eXFxbKC4qKVxcXSQvO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5kZXhSZWZlcmVuY2VzUmVnRXggPSAvKFxcW1xcZCtcXF0pKyQvO1xuXG4gICAgcmV0cmlldmVEYXRhRnJvbVBhdGgoZGF0YTogYW55LCBwYXRoOiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgICAgIGlmICghcGF0aCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMuc3BsaXRQYXRoSW50b1Byb3BlcnRpZXMocGF0aCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQcm9wZXJ0eSA9IHByb3BlcnRpZXMuc2hpZnQoKTtcbiAgICAgICAgY29uc3QgcHJvcGVydHlJbmRleFJlZmVyZW5jZXMgPSB0aGlzLmdldEluZGV4UmVmZXJlbmNlc0Zyb21Qcm9wZXJ0eShjdXJyZW50UHJvcGVydHkpO1xuICAgICAgICBjb25zdCBwdXJlUHJvcGVydHlOYW1lID0gdGhpcy5leHRyYWN0UHVyZVByb3BlcnR5TmFtZShjdXJyZW50UHJvcGVydHkpO1xuICAgICAgICBjb25zdCBpc1Byb3BlcnR5V2l0aE11bHRpcGxlSW5kZXhSZWZlcmVuY2VzID0gcHJvcGVydHlJbmRleFJlZmVyZW5jZXMubGVuZ3RoID4gMTtcblxuICAgICAgICBpZiAoaXNQcm9wZXJ0eVdpdGhNdWx0aXBsZUluZGV4UmVmZXJlbmNlcyB8fCAhdGhpcy5pc1Byb3BlcnR5RXhpc3RzSW5EYXRhKGRhdGEsIHB1cmVQcm9wZXJ0eU5hbWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc1Byb3BlcnR5V2l0aFNpbmdsZUluZGV4UmVmZXJlbmNlID0gcHJvcGVydHlJbmRleFJlZmVyZW5jZXMubGVuZ3RoID09PSAxO1xuICAgICAgICBjb25zdCBuZXN0ZWREYXRhID0gaXNQcm9wZXJ0eVdpdGhTaW5nbGVJbmRleFJlZmVyZW5jZSA/IGRhdGFbcHVyZVByb3BlcnR5TmFtZV0/Lltwcm9wZXJ0eUluZGV4UmVmZXJlbmNlc1swXV0gOiBkYXRhW3B1cmVQcm9wZXJ0eU5hbWVdO1xuXG4gICAgICAgIGlmIChuZXN0ZWREYXRhICYmIHByb3BlcnRpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0RhdGFBcnJheU9yT2JqZWN0KG5lc3RlZERhdGEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkobmVzdGVkRGF0YSkgPyBuZXN0ZWREYXRhIDogW25lc3RlZERhdGFdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmV0cmlldmVEYXRhRnJvbVBhdGgobmVzdGVkRGF0YSwgcHJvcGVydGllcy5qb2luKCcuJykpO1xuICAgIH1cblxuICAgIHNwbGl0UGF0aEludG9Qcm9wZXJ0aWVzKHBhdGg6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgcHJvcGVydGllczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgY29uc3Qgc2VwYXJhdG9yID0gJy4nO1xuICAgICAgICBjb25zdCBvcGVuQnJhY2tldCA9ICdbJztcbiAgICAgICAgY29uc3QgY2xvc2VCcmFja2V0ID0gJ10nO1xuXG4gICAgICAgIGxldCBjdXJyZW50UHJvcGVydHlCdWZmZXIgPSAnJztcbiAgICAgICAgbGV0IGJyYWNrZXRDb3VudCA9IDA7XG4gICAgICAgIGNvbnN0IGlzUHJvcGVydHlTZXBhcmF0b3JPdXRzaWRlQnJhY2tldHMgPSAoKSA9PiBicmFja2V0Q291bnQgPT09IDA7XG5cbiAgICAgICAgaWYgKCFwYXRoKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJvcGVydGllcztcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgY2hhciBvZiBwYXRoKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGNoYXIpIHtcbiAgICAgICAgICAgICAgICBjYXNlIHNlcGFyYXRvcjpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzUHJvcGVydHlTZXBhcmF0b3JPdXRzaWRlQnJhY2tldHMoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllcy5wdXNoKGN1cnJlbnRQcm9wZXJ0eUJ1ZmZlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UHJvcGVydHlCdWZmZXIgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQcm9wZXJ0eUJ1ZmZlciArPSBjaGFyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2Ugb3BlbkJyYWNrZXQ6XG4gICAgICAgICAgICAgICAgICAgIGJyYWNrZXRDb3VudCsrO1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50UHJvcGVydHlCdWZmZXIgKz0gY2hhcjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBjbG9zZUJyYWNrZXQ6XG4gICAgICAgICAgICAgICAgICAgIGJyYWNrZXRDb3VudC0tO1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50UHJvcGVydHlCdWZmZXIgKz0gY2hhcjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFByb3BlcnR5QnVmZmVyICs9IGNoYXI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGN1cnJlbnRQcm9wZXJ0eUJ1ZmZlcikge1xuICAgICAgICAgICAgcHJvcGVydGllcy5wdXNoKGN1cnJlbnRQcm9wZXJ0eUJ1ZmZlcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcHJvcGVydGllcztcbiAgICB9XG5cbiAgICBnZXRJbmRleFJlZmVyZW5jZXNGcm9tUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IG51bWJlcltdIHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSB0aGlzLmluZGV4UmVmZXJlbmNlc1JlZ0V4LmV4ZWMocHJvcGVydHkpO1xuICAgICAgICBpZiAoIW1hdGNoKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbmRleFJlZmVyZW5jZXNTdHJpbmcgPSBtYXRjaFswXTtcbiAgICAgICAgY29uc3QgbnVtYmVyc0Zyb21CcmFja2V0cyA9IGluZGV4UmVmZXJlbmNlc1N0cmluZy5zbGljZSgxLCAtMSkuc3BsaXQoJ11bJykubWFwKE51bWJlcik7XG5cbiAgICAgICAgcmV0dXJuIG51bWJlcnNGcm9tQnJhY2tldHM7XG4gICAgfVxuXG4gICAgZXh0cmFjdFB1cmVQcm9wZXJ0eU5hbWUocHJvcGVydHk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5SW5kZXhSZWZlcmVuY2VzID0gdGhpcy5nZXRJbmRleFJlZmVyZW5jZXNGcm9tUHJvcGVydHkocHJvcGVydHkpO1xuICAgICAgICBjb25zdCBudW1iZXJPZkluZGV4UmVmZXJlbmNlcyA9IHByb3BlcnR5SW5kZXhSZWZlcmVuY2VzLmxlbmd0aDtcblxuICAgICAgICBpZiAocHJvcGVydHkgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9IGVsc2UgaWYgKG51bWJlck9mSW5kZXhSZWZlcmVuY2VzICE9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZW1vdmVTcXVhcmVCcmFja2V0c0FuZEluZGV4UmVmZXJlbmNlc0Zyb21Qcm9wZXJ0eShwcm9wZXJ0eSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZW1vdmVTcXVhcmVCcmFja2V0c0Zyb21Qcm9wZXJ0eShwcm9wZXJ0eSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZVNxdWFyZUJyYWNrZXRzQW5kSW5kZXhSZWZlcmVuY2VzRnJvbVByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBwcm9wZXJ0eVdpdGhvdXRJbmRleFJlZmVyZW5jZXMgPSBwcm9wZXJ0eT8ucmVwbGFjZSh0aGlzLmluZGV4UmVmZXJlbmNlc1JlZ0V4LCAnJyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVtb3ZlU3F1YXJlQnJhY2tldHNGcm9tUHJvcGVydHkocHJvcGVydHlXaXRob3V0SW5kZXhSZWZlcmVuY2VzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZVNxdWFyZUJyYWNrZXRzRnJvbVByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gcHJvcGVydHk/LnJlcGxhY2UodGhpcy5yZW1vdmVTcXVhcmVCcmFja2V0c1JlZ0V4LCAnJDEnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzUHJvcGVydHlFeGlzdHNJbkRhdGEoZGF0YTogYW55LCBwcm9wZXJ0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGF0YSwgcHJvcGVydHkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNEYXRhQXJyYXlPck9iamVjdChkYXRhOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGRhdGEgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGRhdGEpIHx8IHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JztcbiAgICB9XG59XG4iXX0=