@alfresco/adf-process-services-cloud 8.1.0-16120632321 → 8.1.0-16121703802

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 (172) hide show
  1. package/esm2022/adf-process-services-cloud.mjs +5 -0
  2. package/esm2022/lib/app/app-list-cloud.module.mjs +20 -0
  3. package/esm2022/lib/app/components/app-details-cloud/app-details-cloud.component.mjs +67 -0
  4. package/esm2022/lib/app/components/app-list-cloud/app-list-cloud.component.mjs +125 -0
  5. package/esm2022/lib/app/models/application-instance.model.mjs +24 -0
  6. package/esm2022/lib/app/public-api.mjs +22 -0
  7. package/esm2022/lib/app/services/apps-process-cloud.service.mjs +97 -0
  8. package/esm2022/lib/common/date-range-filter/date-range-filter.component.mjs +163 -0
  9. package/esm2022/lib/common/date-range-filter/date-range-filter.service.mjs +97 -0
  10. package/esm2022/lib/common/index.mjs +18 -0
  11. package/esm2022/lib/common/interface/environment.interface.mjs +18 -0
  12. package/esm2022/lib/common/interface/index.mjs +18 -0
  13. package/esm2022/lib/common/interface/public-api.mjs +18 -0
  14. package/esm2022/lib/common/public-api.mjs +19 -0
  15. package/esm2022/lib/form/components/cloud-form-rendering.service.mjs +57 -0
  16. package/esm2022/lib/form/components/form-cloud-custom-outcomes.component.mjs +31 -0
  17. package/esm2022/lib/form/components/form-cloud.component.mjs +415 -0
  18. package/esm2022/lib/form/components/form-definition-selector-cloud.component.mjs +53 -0
  19. package/esm2022/lib/form/components/spinner/form-spinner.component.mjs +35 -0
  20. package/esm2022/lib/form/components/widgets/attach-file/attach-file-cloud-widget.component.mjs +249 -0
  21. package/esm2022/lib/form/components/widgets/attach-file/file-properties-table/file-properties-table-cloud.component.mjs +136 -0
  22. package/esm2022/lib/form/components/widgets/data-table/data-table-adapter.widget.mjs +107 -0
  23. package/esm2022/lib/form/components/widgets/data-table/data-table.widget.mjs +120 -0
  24. package/esm2022/lib/form/components/widgets/data-table/helpers/data-table-path-parser.helper.mjs +122 -0
  25. package/esm2022/lib/form/components/widgets/date/date-cloud.widget.mjs +189 -0
  26. package/esm2022/lib/form/components/widgets/display-external-property/display-external-property.widget.mjs +85 -0
  27. package/esm2022/lib/form/components/widgets/display-rich-text/display-rich-text.widget.mjs +80 -0
  28. package/esm2022/lib/form/components/widgets/dropdown/dropdown-cloud.widget.mjs +463 -0
  29. package/esm2022/lib/form/components/widgets/dropdown/validators.mjs +29 -0
  30. package/esm2022/lib/form/components/widgets/file-viewer/file-viewer.widget.mjs +46 -0
  31. package/esm2022/lib/form/components/widgets/group/group-cloud.widget.mjs +82 -0
  32. package/esm2022/lib/form/components/widgets/people/people-cloud.widget.mjs +91 -0
  33. package/esm2022/lib/form/components/widgets/properties-viewer/properties-viewer-wrapper/properties-viewer-wrapper.component.mjs +81 -0
  34. package/esm2022/lib/form/components/widgets/properties-viewer/properties-viewer.widget.mjs +53 -0
  35. package/esm2022/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.schema.mjs +86 -0
  36. package/esm2022/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.widget.mjs +116 -0
  37. package/esm2022/lib/form/components/widgets/upload/upload-cloud.widget.mjs +187 -0
  38. package/esm2022/lib/form/form-cloud.module.mjs +103 -0
  39. package/esm2022/lib/form/models/form-cloud-representation.model.mjs +48 -0
  40. package/esm2022/lib/form/models/task-variable-cloud.model.mjs +28 -0
  41. package/esm2022/lib/form/public-api.mjs +44 -0
  42. package/esm2022/lib/form/services/content-cloud-node-selector.service.mjs +120 -0
  43. package/esm2022/lib/form/services/display-mode.service.mjs +146 -0
  44. package/esm2022/lib/form/services/form-cloud.service.interface.mjs +18 -0
  45. package/esm2022/lib/form/services/form-cloud.service.mjs +201 -0
  46. package/esm2022/lib/form/services/form-definition-selector-cloud.service.interface.mjs +18 -0
  47. package/esm2022/lib/form/services/form-definition-selector-cloud.service.mjs +51 -0
  48. package/esm2022/lib/form/services/form-utils.service.mjs +37 -0
  49. package/esm2022/lib/form/services/process-cloud-content.service.mjs +71 -0
  50. package/esm2022/lib/form/services/spinner/form-cloud-spinner.service.mjs +52 -0
  51. package/esm2022/lib/group/components/group-cloud.component.mjs +423 -0
  52. package/esm2022/lib/group/group-cloud.module.mjs +33 -0
  53. package/esm2022/lib/group/models/identity-group.model.mjs +18 -0
  54. package/esm2022/lib/group/public-api.mjs +21 -0
  55. package/esm2022/lib/group/services/identity-group.service.mjs +89 -0
  56. package/esm2022/lib/models/application-version.model.mjs +21 -0
  57. package/esm2022/lib/models/constant-values.type.mjs +18 -0
  58. package/esm2022/lib/models/data-column-custom-data.mjs +18 -0
  59. package/esm2022/lib/models/date-cloud-filter.model.mjs +31 -0
  60. package/esm2022/lib/models/date-format-cloud.model.mjs +18 -0
  61. package/esm2022/lib/models/engine-event-cloud.model.mjs +18 -0
  62. package/esm2022/lib/models/filter-cloud-model.mjs +128 -0
  63. package/esm2022/lib/models/process-definition-cloud.model.mjs +32 -0
  64. package/esm2022/lib/models/process-instance-variable.model.mjs +18 -0
  65. package/esm2022/lib/models/process-variable-filter.model.mjs +18 -0
  66. package/esm2022/lib/models/task-cloud.model.mjs +23 -0
  67. package/esm2022/lib/models/task-list-sorting.model.mjs +40 -0
  68. package/esm2022/lib/models/variable-definition.mjs +18 -0
  69. package/esm2022/lib/people/components/people-cloud.component.mjs +498 -0
  70. package/esm2022/lib/people/models/identity-user.model.mjs +18 -0
  71. package/esm2022/lib/people/people-cloud.module.mjs +33 -0
  72. package/esm2022/lib/people/public-api.mjs +21 -0
  73. package/esm2022/lib/people/services/identity-user.service.mjs +119 -0
  74. package/esm2022/lib/process/process-cloud.module.mjs +40 -0
  75. package/esm2022/lib/process/process-filters/components/edit-process-filter/edit-process-filter-cloud.component.mjs +801 -0
  76. package/esm2022/lib/process/process-filters/components/process-filter-dialog/process-filter-dialog-cloud.component.mjs +58 -0
  77. package/esm2022/lib/process/process-filters/components/process-filters/process-filters-cloud.component.mjs +292 -0
  78. package/esm2022/lib/process/process-filters/models/process-filter-cloud.model.mjs +170 -0
  79. package/esm2022/lib/process/process-filters/process-filters-cloud.module.mjs +44 -0
  80. package/esm2022/lib/process/process-filters/public-api.mjs +23 -0
  81. package/esm2022/lib/process/process-filters/services/process-filter-cloud.service.mjs +408 -0
  82. package/esm2022/lib/process/process-header/components/process-header-cloud.component.mjs +137 -0
  83. package/esm2022/lib/process/process-header/process-header-cloud.module.mjs +33 -0
  84. package/esm2022/lib/process/process-header/public-api.mjs +19 -0
  85. package/esm2022/lib/process/process-list/components/process-list-cloud.component.mjs +593 -0
  86. package/esm2022/lib/process/process-list/datatable/process-list-datatable-adapter.mjs +31 -0
  87. package/esm2022/lib/process/process-list/models/perocess-instance-cloud-view.model.mjs +18 -0
  88. package/esm2022/lib/process/process-list/models/process-cloud-preferences.mjs +24 -0
  89. package/esm2022/lib/process/process-list/models/process-cloud-preset.model.mjs +37 -0
  90. package/esm2022/lib/process/process-list/models/process-cloud-query-request.model.mjs +107 -0
  91. package/esm2022/lib/process/process-list/models/process-list-sorting.model.mjs +40 -0
  92. package/esm2022/lib/process/process-list/process-list-cloud.module.mjs +45 -0
  93. package/esm2022/lib/process/process-list/public-api.mjs +25 -0
  94. package/esm2022/lib/process/process-list/services/process-list-cloud.service.mjs +253 -0
  95. package/esm2022/lib/process/process-list/services/process-task-list-cloud.service.mjs +109 -0
  96. package/esm2022/lib/process/public-api.mjs +23 -0
  97. package/esm2022/lib/process/services/process-cloud.service.mjs +105 -0
  98. package/esm2022/lib/process/start-process/components/start-process-cloud.component.mjs +480 -0
  99. package/esm2022/lib/process/start-process/models/process-instance-cloud.model.mjs +18 -0
  100. package/esm2022/lib/process/start-process/models/process-payload-cloud.model.mjs +26 -0
  101. package/esm2022/lib/process/start-process/models/process-with-form-payload-cloud.model.mjs +26 -0
  102. package/esm2022/lib/process/start-process/public-api.mjs +21 -0
  103. package/esm2022/lib/process/start-process/services/start-process-cloud.service.mjs +125 -0
  104. package/esm2022/lib/process-services-cloud.module.mjs +91 -0
  105. package/esm2022/lib/rich-text-editor/editorjs-config.mjs +101 -0
  106. package/esm2022/lib/rich-text-editor/index.mjs +18 -0
  107. package/esm2022/lib/rich-text-editor/public-api.mjs +19 -0
  108. package/esm2022/lib/rich-text-editor/rich-text-editor.component.mjs +80 -0
  109. package/esm2022/lib/rich-text-editor/rich-text-editor.module.mjs +33 -0
  110. package/esm2022/lib/screen/components/screen-cloud/screen-cloud.component.mjs +186 -0
  111. package/esm2022/lib/screen/models/screen-cloud.model.mjs +18 -0
  112. package/esm2022/lib/screen/public-api.mjs +18 -0
  113. package/esm2022/lib/services/base-cloud.service.mjs +83 -0
  114. package/esm2022/lib/services/cloud-token.service.mjs +23 -0
  115. package/esm2022/lib/services/form-fields.interfaces.mjs +55 -0
  116. package/esm2022/lib/services/local-preference-cloud.service.mjs +122 -0
  117. package/esm2022/lib/services/notification-cloud.service.mjs +45 -0
  118. package/esm2022/lib/services/preference-cloud.interface.mjs +18 -0
  119. package/esm2022/lib/services/public-api.mjs +28 -0
  120. package/esm2022/lib/services/screen-rendering.service.mjs +30 -0
  121. package/esm2022/lib/services/task-list-cloud.service.interface.mjs +18 -0
  122. package/esm2022/lib/services/user-preference-cloud.service.mjs +105 -0
  123. package/esm2022/lib/services/variable-mapper.sevice.mjs +77 -0
  124. package/esm2022/lib/services/web-socket.service.mjs +146 -0
  125. package/esm2022/lib/task/models/start-task-cloud-request.model.mjs +32 -0
  126. package/esm2022/lib/task/models/task-details-cloud.model.mjs +26 -0
  127. package/esm2022/lib/task/models/task.model.mjs +23 -0
  128. package/esm2022/lib/task/public-api.mjs +26 -0
  129. package/esm2022/lib/task/services/task-cloud.service.mjs +272 -0
  130. package/esm2022/lib/task/task-cloud.module.mjs +45 -0
  131. package/esm2022/lib/task/task-filters/components/base-task-filters-cloud.component.mjs +59 -0
  132. package/esm2022/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.mjs +467 -0
  133. package/esm2022/lib/task/task-filters/components/edit-task-filters/edit-service-task-filter/edit-service-task-filter-cloud.component.mjs +205 -0
  134. package/esm2022/lib/task/task-filters/components/edit-task-filters/edit-task-filter/edit-task-filter-cloud.component.mjs +317 -0
  135. package/esm2022/lib/task/task-filters/components/service-task-filters/service-task-filters-cloud.component.mjs +146 -0
  136. package/esm2022/lib/task/task-filters/components/task-assignment-filter/task-assignment-filter.component.mjs +142 -0
  137. package/esm2022/lib/task/task-filters/components/task-filter-dialog/task-filter-dialog-cloud.component.mjs +72 -0
  138. package/esm2022/lib/task/task-filters/components/task-filters/task-filters-cloud.component.mjs +255 -0
  139. package/esm2022/lib/task/task-filters/models/filter-cloud.model.mjs +207 -0
  140. package/esm2022/lib/task/task-filters/public-api.mjs +27 -0
  141. package/esm2022/lib/task/task-filters/services/service-task-filter-cloud.service.mjs +283 -0
  142. package/esm2022/lib/task/task-filters/services/task-filter-cloud.service.mjs +392 -0
  143. package/esm2022/lib/task/task-filters/task-filters-cloud.module.mjs +56 -0
  144. package/esm2022/lib/task/task-form/components/task-form-cloud/task-form-cloud.component.mjs +214 -0
  145. package/esm2022/lib/task/task-form/components/user-task-cloud/complete-task/complete-task.directive.mjs +89 -0
  146. package/esm2022/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.mjs +283 -0
  147. package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/claim-task/claim-task-cloud.directive.mjs +101 -0
  148. package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/unclaim-task/unclaim-task-cloud.directive.mjs +87 -0
  149. package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/user-task-cloud-buttons.component.mjs +78 -0
  150. package/esm2022/lib/task/task-form/public-api.mjs +21 -0
  151. package/esm2022/lib/task/task-form/task-form.module.mjs +36 -0
  152. package/esm2022/lib/task/task-header/components/task-header-cloud.component.mjs +280 -0
  153. package/esm2022/lib/task/task-header/public-api.mjs +19 -0
  154. package/esm2022/lib/task/task-header/task-header-cloud.module.mjs +33 -0
  155. package/esm2022/lib/task/task-list/components/base-task-list-cloud.component.mjs +331 -0
  156. package/esm2022/lib/task/task-list/components/service-task-list/service-task-list-cloud.component.mjs +115 -0
  157. package/esm2022/lib/task/task-list/components/task-list/datatable/task-list-datatable-adapter.mjs +31 -0
  158. package/esm2022/lib/task/task-list/components/task-list/task-list-cloud.component.mjs +389 -0
  159. package/esm2022/lib/task/task-list/models/service-task-cloud.model.mjs +18 -0
  160. package/esm2022/lib/task/task-list/models/task-cloud-view.model.mjs +18 -0
  161. package/esm2022/lib/task/task-list/public-api.mjs +23 -0
  162. package/esm2022/lib/task/task-list/services/service-task-list-cloud.service.mjs +115 -0
  163. package/esm2022/lib/task/task-list/services/task-list-cloud.service.mjs +178 -0
  164. package/esm2022/lib/task/task-list/task-list-cloud.module.mjs +57 -0
  165. package/esm2022/lib/types.mjs +18 -0
  166. package/esm2022/public-api.mjs +40 -0
  167. package/fesm2022/adf-process-services-cloud.mjs +355 -350
  168. package/fesm2022/adf-process-services-cloud.mjs.map +1 -1
  169. package/lib/task/task-filters/components/base-task-filters-cloud.component.d.ts +1 -1
  170. package/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.d.ts +1 -1
  171. package/lib/task/task-list/components/base-task-list-cloud.component.d.ts +1 -1
  172. package/package.json +6 -4
@@ -0,0 +1,44 @@
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 * from './models/task-variable-cloud.model';
18
+ export * from './components/spinner/form-spinner.component';
19
+ export * from './components/form-cloud-custom-outcomes.component';
20
+ export * from './components/form-cloud.component';
21
+ export * from './components/form-definition-selector-cloud.component';
22
+ export * from './components/cloud-form-rendering.service';
23
+ export * from './components/widgets/attach-file/attach-file-cloud-widget.component';
24
+ export * from './components/widgets/attach-file/file-properties-table/file-properties-table-cloud.component';
25
+ export * from './components/widgets/upload/upload-cloud.widget';
26
+ export * from './components/widgets/date/date-cloud.widget';
27
+ export * from './components/widgets/dropdown/dropdown-cloud.widget';
28
+ export * from './components/widgets/group/group-cloud.widget';
29
+ export * from './components/widgets/people/people-cloud.widget';
30
+ export * from './components/widgets/properties-viewer/properties-viewer.widget';
31
+ export * from './components/widgets/properties-viewer/properties-viewer-wrapper/properties-viewer-wrapper.component';
32
+ export * from './components/widgets/file-viewer/file-viewer.widget';
33
+ export * from './components/widgets/display-rich-text/display-rich-text.widget';
34
+ // widgets with schema
35
+ export * from './components/widgets/radio-buttons/radio-buttons-cloud.widget';
36
+ export * from './components/widgets/radio-buttons/radio-buttons-cloud.schema';
37
+ export * from './services/content-cloud-node-selector.service';
38
+ export * from './services/form-cloud.service';
39
+ export * from './services/form-definition-selector-cloud.service';
40
+ export * from './services/content-cloud-node-selector.service';
41
+ export * from './services/process-cloud-content.service';
42
+ export * from './services/display-mode.service';
43
+ export * from './form-cloud.module';
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvZm9ybS9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILGNBQWMsb0NBQW9DLENBQUM7QUFFbkQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLDJDQUEyQyxDQUFDO0FBRTFELGNBQWMscUVBQXFFLENBQUM7QUFDcEYsY0FBYyw4RkFBOEYsQ0FBQztBQUM3RyxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyxpRUFBaUUsQ0FBQztBQUNoRixjQUFjLHNHQUFzRyxDQUFDO0FBQ3JILGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyxpRUFBaUUsQ0FBQztBQUVoRixzQkFBc0I7QUFDdEIsY0FBYywrREFBK0QsQ0FBQztBQUM5RSxjQUFjLCtEQUErRCxDQUFDO0FBRTlFLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLGlDQUFpQyxDQUFDO0FBRWhELGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL3Rhc2stdmFyaWFibGUtY2xvdWQubW9kZWwnO1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvc3Bpbm5lci9mb3JtLXNwaW5uZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9mb3JtLWNsb3VkLWN1c3RvbS1vdXRjb21lcy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2Zvcm0tY2xvdWQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9mb3JtLWRlZmluaXRpb24tc2VsZWN0b3ItY2xvdWQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9jbG91ZC1mb3JtLXJlbmRlcmluZy5zZXJ2aWNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3dpZGdldHMvYXR0YWNoLWZpbGUvYXR0YWNoLWZpbGUtY2xvdWQtd2lkZ2V0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvd2lkZ2V0cy9hdHRhY2gtZmlsZS9maWxlLXByb3BlcnRpZXMtdGFibGUvZmlsZS1wcm9wZXJ0aWVzLXRhYmxlLWNsb3VkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvd2lkZ2V0cy91cGxvYWQvdXBsb2FkLWNsb3VkLndpZGdldCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvd2lkZ2V0cy9kYXRlL2RhdGUtY2xvdWQud2lkZ2V0JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy93aWRnZXRzL2Ryb3Bkb3duL2Ryb3Bkb3duLWNsb3VkLndpZGdldCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvd2lkZ2V0cy9ncm91cC9ncm91cC1jbG91ZC53aWRnZXQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3dpZGdldHMvcGVvcGxlL3Blb3BsZS1jbG91ZC53aWRnZXQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3dpZGdldHMvcHJvcGVydGllcy12aWV3ZXIvcHJvcGVydGllcy12aWV3ZXIud2lkZ2V0JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy93aWRnZXRzL3Byb3BlcnRpZXMtdmlld2VyL3Byb3BlcnRpZXMtdmlld2VyLXdyYXBwZXIvcHJvcGVydGllcy12aWV3ZXItd3JhcHBlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3dpZGdldHMvZmlsZS12aWV3ZXIvZmlsZS12aWV3ZXIud2lkZ2V0JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy93aWRnZXRzL2Rpc3BsYXktcmljaC10ZXh0L2Rpc3BsYXktcmljaC10ZXh0LndpZGdldCc7XG5cbi8vIHdpZGdldHMgd2l0aCBzY2hlbWFcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy93aWRnZXRzL3JhZGlvLWJ1dHRvbnMvcmFkaW8tYnV0dG9ucy1jbG91ZC53aWRnZXQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3dpZGdldHMvcmFkaW8tYnV0dG9ucy9yYWRpby1idXR0b25zLWNsb3VkLnNjaGVtYSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvY29udGVudC1jbG91ZC1ub2RlLXNlbGVjdG9yLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9mb3JtLWNsb3VkLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9mb3JtLWRlZmluaXRpb24tc2VsZWN0b3ItY2xvdWQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2NvbnRlbnQtY2xvdWQtbm9kZS1zZWxlY3Rvci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvcHJvY2Vzcy1jbG91ZC1jb250ZW50LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9kaXNwbGF5LW1vZGUuc2VydmljZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1jbG91ZC5tb2R1bGUnO1xuIl19
@@ -0,0 +1,120 @@
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 { Injectable } from '@angular/core';
18
+ import { NotificationService } from '@alfresco/adf-core';
19
+ import { MatDialog } from '@angular/material/dialog';
20
+ import { ContentNodeSelectorComponent, NodeAction, AlfrescoApiService } from '@alfresco/adf-content-services';
21
+ import { NodesApi } from '@alfresco/js-api';
22
+ import { from, Subject, throwError } from 'rxjs';
23
+ import { catchError, map, mapTo } from 'rxjs/operators';
24
+ import * as i0 from "@angular/core";
25
+ import * as i1 from "@alfresco/adf-content-services";
26
+ import * as i2 from "@alfresco/adf-core";
27
+ import * as i3 from "@angular/material/dialog";
28
+ export class ContentCloudNodeSelectorService {
29
+ get nodesApi() {
30
+ this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance());
31
+ return this._nodesApi;
32
+ }
33
+ constructor(apiService, notificationService, dialog) {
34
+ this.apiService = apiService;
35
+ this.notificationService = notificationService;
36
+ this.dialog = dialog;
37
+ this.sourceNodeNotFound = false;
38
+ }
39
+ openUploadFileDialog(currentFolderId, selectionMode, isAllFileSources, restrictRootToCurrentFolderId) {
40
+ const select = new Subject();
41
+ select.subscribe({ complete: this.close.bind(this) });
42
+ const data = {
43
+ title: 'Select a file',
44
+ actionName: NodeAction.ATTACH,
45
+ currentFolderId,
46
+ restrictRootToCurrentFolderId,
47
+ select,
48
+ selectionMode,
49
+ isSelectionValid: (entry) => entry.isFile,
50
+ showFilesInResult: true,
51
+ showDropdownSiteList: false,
52
+ showLocalUploadButton: isAllFileSources
53
+ };
54
+ this.openContentNodeDialog(data, 'adf-content-node-selector-dialog', '66%');
55
+ return select;
56
+ }
57
+ async getNodeIdFromPath(destinationFolderPath) {
58
+ if (destinationFolderPath.alias && destinationFolderPath.path) {
59
+ try {
60
+ return await this.getNodeId(destinationFolderPath.alias, destinationFolderPath.path).toPromise();
61
+ }
62
+ catch {
63
+ /*empty*/
64
+ }
65
+ }
66
+ return this.getNodeId(destinationFolderPath.alias).toPromise();
67
+ }
68
+ async getNodeIdFromFolderVariableValue(variableValue, defaultAlias) {
69
+ const isExistingNode = await this.isExistingNode(variableValue);
70
+ return isExistingNode ? variableValue : this.getNodeId(defaultAlias).toPromise();
71
+ }
72
+ async isExistingNode(nodeId) {
73
+ let isExistingNode = false;
74
+ if (nodeId) {
75
+ try {
76
+ isExistingNode = await this.getNodeId(nodeId).pipe(mapTo(true)).toPromise();
77
+ }
78
+ catch {
79
+ /*empty*/
80
+ }
81
+ }
82
+ return isExistingNode;
83
+ }
84
+ getNodeId(nodeId, relativePath) {
85
+ let opts;
86
+ if (relativePath) {
87
+ opts = { relativePath };
88
+ }
89
+ return from(this.nodesApi.getNode(nodeId, opts)).pipe(map((nodeEntry) => nodeEntry.entry.id), catchError((error) => {
90
+ this.sourceNodeNotFound = true;
91
+ return this.handleError(error);
92
+ }));
93
+ }
94
+ openContentNodeDialog(data, currentPanelClass, chosenWidth) {
95
+ const contentNodeDialog = this.dialog.open(ContentNodeSelectorComponent, { data, panelClass: currentPanelClass, width: chosenWidth });
96
+ contentNodeDialog.afterOpened().subscribe(() => {
97
+ if (this.sourceNodeNotFound) {
98
+ this.notificationService.showWarning('ADF_CLOUD_TASK_FORM.ERROR.DESTINATION_FOLDER_PATH_ERROR');
99
+ }
100
+ });
101
+ contentNodeDialog.afterClosed().subscribe(() => {
102
+ this.sourceNodeNotFound = false;
103
+ });
104
+ }
105
+ close() {
106
+ this.dialog.closeAll();
107
+ }
108
+ handleError(error) {
109
+ return throwError(error || 'Server error');
110
+ }
111
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContentCloudNodeSelectorService, deps: [{ token: i1.AlfrescoApiService }, { token: i2.NotificationService }, { token: i3.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable }); }
112
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContentCloudNodeSelectorService, providedIn: 'root' }); }
113
+ }
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContentCloudNodeSelectorService, decorators: [{
115
+ type: Injectable,
116
+ args: [{
117
+ providedIn: 'root'
118
+ }]
119
+ }], ctorParameters: () => [{ type: i1.AlfrescoApiService }, { type: i2.NotificationService }, { type: i3.MatDialog }] });
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1jbG91ZC1ub2RlLXNlbGVjdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL2Zvcm0vc2VydmljZXMvY29udGVudC1jbG91ZC1ub2RlLXNlbGVjdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLDRCQUE0QixFQUFvQyxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoSixPQUFPLEVBQW1CLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdELE9BQU8sRUFBRSxJQUFJLEVBQWMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFNeEQsTUFBTSxPQUFPLCtCQUErQjtJQUV4QyxJQUFJLFFBQVE7UUFDUixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBSUQsWUFBb0IsVUFBOEIsRUFBVSxtQkFBd0MsRUFBVSxNQUFpQjtRQUEzRyxlQUFVLEdBQVYsVUFBVSxDQUFvQjtRQUFVLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBRi9ILHVCQUFrQixHQUFHLEtBQUssQ0FBQztJQUV1RyxDQUFDO0lBRW5JLG9CQUFvQixDQUNoQixlQUF3QixFQUN4QixhQUFzQixFQUN0QixnQkFBMEIsRUFDMUIsNkJBQXVDO1FBRXZDLE1BQU0sTUFBTSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDckMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEQsTUFBTSxJQUFJLEdBQUc7WUFDVCxLQUFLLEVBQUUsZUFBZTtZQUN0QixVQUFVLEVBQUUsVUFBVSxDQUFDLE1BQU07WUFDN0IsZUFBZTtZQUNmLDZCQUE2QjtZQUM3QixNQUFNO1lBQ04sYUFBYTtZQUNiLGdCQUFnQixFQUFFLENBQUMsS0FBVyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUMvQyxpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLG9CQUFvQixFQUFFLEtBQUs7WUFDM0IscUJBQXFCLEVBQUUsZ0JBQWdCO1NBQ04sQ0FBQztRQUN0QyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLGtDQUFrQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVFLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUMscUJBQWlEO1FBQ3JFLElBQUkscUJBQXFCLENBQUMsS0FBSyxJQUFJLHFCQUFxQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQzVELElBQUksQ0FBQztnQkFDRCxPQUFPLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDckcsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDTCxTQUFTO1lBQ2IsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkUsQ0FBQztJQUVELEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxhQUFxQixFQUFFLFlBQXFCO1FBQy9FLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoRSxPQUFPLGNBQWMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3JGLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQWM7UUFDL0IsSUFBSSxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksTUFBTSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUM7Z0JBQ0QsY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDaEYsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDTCxTQUFTO1lBQ2IsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLGNBQWMsQ0FBQztJQUMxQixDQUFDO0lBRU8sU0FBUyxDQUFDLE1BQWMsRUFBRSxZQUFxQjtRQUNuRCxJQUFJLElBQVMsQ0FBQztRQUNkLElBQUksWUFBWSxFQUFFLENBQUM7WUFDZixJQUFJLEdBQUcsRUFBRSxZQUFZLEVBQUUsQ0FBQztRQUM1QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNqRCxHQUFHLENBQUMsQ0FBQyxTQUFvQixFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUNqRCxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNqQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1lBQy9CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVPLHFCQUFxQixDQUFDLElBQXNDLEVBQUUsaUJBQXlCLEVBQUUsV0FBbUI7UUFDaEgsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDdEksaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUMzQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7WUFDcEcsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUMzQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELEtBQUs7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBVTtRQUMxQixPQUFPLFVBQVUsQ0FBQyxLQUFLLElBQUksY0FBYyxDQUFDLENBQUM7SUFDL0MsQ0FBQzsrR0FoR1EsK0JBQStCO21IQUEvQiwrQkFBK0IsY0FGNUIsTUFBTTs7NEZBRVQsK0JBQStCO2tCQUgzQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQ29udGVudE5vZGVTZWxlY3RvckNvbXBvbmVudCwgQ29udGVudE5vZGVTZWxlY3RvckNvbXBvbmVudERhdGEsIE5vZGVBY3Rpb24sIEFsZnJlc2NvQXBpU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29udGVudC1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBOb2RlLCBOb2RlRW50cnksIE5vZGVzQXBpIH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIG1hcFRvIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRGVzdGluYXRpb25Gb2xkZXJQYXRoTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvZm9ybS1jbG91ZC1yZXByZXNlbnRhdGlvbi5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ29udGVudENsb3VkTm9kZVNlbGVjdG9yU2VydmljZSB7XG4gICAgcHJpdmF0ZSBfbm9kZXNBcGk6IE5vZGVzQXBpO1xuICAgIGdldCBub2Rlc0FwaSgpOiBOb2Rlc0FwaSB7XG4gICAgICAgIHRoaXMuX25vZGVzQXBpID0gdGhpcy5fbm9kZXNBcGkgPz8gbmV3IE5vZGVzQXBpKHRoaXMuYXBpU2VydmljZS5nZXRJbnN0YW5jZSgpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVzQXBpO1xuICAgIH1cblxuICAgIHNvdXJjZU5vZGVOb3RGb3VuZCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBhcGlTZXJ2aWNlOiBBbGZyZXNjb0FwaVNlcnZpY2UsIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSwgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZykge31cblxuICAgIG9wZW5VcGxvYWRGaWxlRGlhbG9nKFxuICAgICAgICBjdXJyZW50Rm9sZGVySWQ/OiBzdHJpbmcsXG4gICAgICAgIHNlbGVjdGlvbk1vZGU/OiBzdHJpbmcsXG4gICAgICAgIGlzQWxsRmlsZVNvdXJjZXM/OiBib29sZWFuLFxuICAgICAgICByZXN0cmljdFJvb3RUb0N1cnJlbnRGb2xkZXJJZD86IGJvb2xlYW5cbiAgICApOiBPYnNlcnZhYmxlPE5vZGVbXT4ge1xuICAgICAgICBjb25zdCBzZWxlY3QgPSBuZXcgU3ViamVjdDxOb2RlW10+KCk7XG4gICAgICAgIHNlbGVjdC5zdWJzY3JpYmUoeyBjb21wbGV0ZTogdGhpcy5jbG9zZS5iaW5kKHRoaXMpIH0pO1xuICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgdGl0bGU6ICdTZWxlY3QgYSBmaWxlJyxcbiAgICAgICAgICAgIGFjdGlvbk5hbWU6IE5vZGVBY3Rpb24uQVRUQUNILFxuICAgICAgICAgICAgY3VycmVudEZvbGRlcklkLFxuICAgICAgICAgICAgcmVzdHJpY3RSb290VG9DdXJyZW50Rm9sZGVySWQsXG4gICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICBzZWxlY3Rpb25Nb2RlLFxuICAgICAgICAgICAgaXNTZWxlY3Rpb25WYWxpZDogKGVudHJ5OiBOb2RlKSA9PiBlbnRyeS5pc0ZpbGUsXG4gICAgICAgICAgICBzaG93RmlsZXNJblJlc3VsdDogdHJ1ZSxcbiAgICAgICAgICAgIHNob3dEcm9wZG93blNpdGVMaXN0OiBmYWxzZSxcbiAgICAgICAgICAgIHNob3dMb2NhbFVwbG9hZEJ1dHRvbjogaXNBbGxGaWxlU291cmNlc1xuICAgICAgICB9IGFzIENvbnRlbnROb2RlU2VsZWN0b3JDb21wb25lbnREYXRhO1xuICAgICAgICB0aGlzLm9wZW5Db250ZW50Tm9kZURpYWxvZyhkYXRhLCAnYWRmLWNvbnRlbnQtbm9kZS1zZWxlY3Rvci1kaWFsb2cnLCAnNjYlJyk7XG4gICAgICAgIHJldHVybiBzZWxlY3Q7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0Tm9kZUlkRnJvbVBhdGgoZGVzdGluYXRpb25Gb2xkZXJQYXRoOiBEZXN0aW5hdGlvbkZvbGRlclBhdGhNb2RlbCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGlmIChkZXN0aW5hdGlvbkZvbGRlclBhdGguYWxpYXMgJiYgZGVzdGluYXRpb25Gb2xkZXJQYXRoLnBhdGgpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0Tm9kZUlkKGRlc3RpbmF0aW9uRm9sZGVyUGF0aC5hbGlhcywgZGVzdGluYXRpb25Gb2xkZXJQYXRoLnBhdGgpLnRvUHJvbWlzZSgpO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgLyplbXB0eSovXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5nZXROb2RlSWQoZGVzdGluYXRpb25Gb2xkZXJQYXRoLmFsaWFzKS50b1Byb21pc2UoKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXROb2RlSWRGcm9tRm9sZGVyVmFyaWFibGVWYWx1ZSh2YXJpYWJsZVZhbHVlOiBzdHJpbmcsIGRlZmF1bHRBbGlhcz86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IGlzRXhpc3RpbmdOb2RlID0gYXdhaXQgdGhpcy5pc0V4aXN0aW5nTm9kZSh2YXJpYWJsZVZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGlzRXhpc3RpbmdOb2RlID8gdmFyaWFibGVWYWx1ZSA6IHRoaXMuZ2V0Tm9kZUlkKGRlZmF1bHRBbGlhcykudG9Qcm9taXNlKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgaXNFeGlzdGluZ05vZGUobm9kZUlkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgbGV0IGlzRXhpc3RpbmdOb2RlID0gZmFsc2U7XG4gICAgICAgIGlmIChub2RlSWQpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaXNFeGlzdGluZ05vZGUgPSBhd2FpdCB0aGlzLmdldE5vZGVJZChub2RlSWQpLnBpcGUobWFwVG8odHJ1ZSkpLnRvUHJvbWlzZSgpO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgLyplbXB0eSovXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzRXhpc3RpbmdOb2RlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Tm9kZUlkKG5vZGVJZDogc3RyaW5nLCByZWxhdGl2ZVBhdGg/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICBsZXQgb3B0czogYW55O1xuICAgICAgICBpZiAocmVsYXRpdmVQYXRoKSB7XG4gICAgICAgICAgICBvcHRzID0geyByZWxhdGl2ZVBhdGggfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnJvbSh0aGlzLm5vZGVzQXBpLmdldE5vZGUobm9kZUlkLCBvcHRzKSkucGlwZShcbiAgICAgICAgICAgIG1hcCgobm9kZUVudHJ5OiBOb2RlRW50cnkpID0+IG5vZGVFbnRyeS5lbnRyeS5pZCksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc291cmNlTm9kZU5vdEZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVFcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3BlbkNvbnRlbnROb2RlRGlhbG9nKGRhdGE6IENvbnRlbnROb2RlU2VsZWN0b3JDb21wb25lbnREYXRhLCBjdXJyZW50UGFuZWxDbGFzczogc3RyaW5nLCBjaG9zZW5XaWR0aDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnROb2RlRGlhbG9nID0gdGhpcy5kaWFsb2cub3BlbihDb250ZW50Tm9kZVNlbGVjdG9yQ29tcG9uZW50LCB7IGRhdGEsIHBhbmVsQ2xhc3M6IGN1cnJlbnRQYW5lbENsYXNzLCB3aWR0aDogY2hvc2VuV2lkdGggfSk7XG4gICAgICAgIGNvbnRlbnROb2RlRGlhbG9nLmFmdGVyT3BlbmVkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNvdXJjZU5vZGVOb3RGb3VuZCkge1xuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zaG93V2FybmluZygnQURGX0NMT1VEX1RBU0tfRk9STS5FUlJPUi5ERVNUSU5BVElPTl9GT0xERVJfUEFUSF9FUlJPUicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29udGVudE5vZGVEaWFsb2cuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zb3VyY2VOb2RlTm90Rm91bmQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2xvc2UoKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nLmNsb3NlQWxsKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IgfHwgJ1NlcnZlciBlcnJvcicpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,146 @@
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 { Injectable } from '@angular/core';
18
+ import { Subject } from 'rxjs';
19
+ import { FormCloudDisplayMode } from '../../services/form-fields.interfaces';
20
+ import * as i0 from "@angular/core";
21
+ export class DisplayModeService {
22
+ static { this.DEFAULT_DISPLAY_MODE_CONFIGURATIONS = [
23
+ {
24
+ displayMode: FormCloudDisplayMode.inline,
25
+ default: true
26
+ }
27
+ ]; }
28
+ static { this.IMPLEMENTED_DISPLAY_MODE_CONFIGURATIONS = [
29
+ ...DisplayModeService.DEFAULT_DISPLAY_MODE_CONFIGURATIONS,
30
+ {
31
+ displayMode: FormCloudDisplayMode.fullScreen,
32
+ options: {
33
+ onDisplayModeOn: () => { },
34
+ onDisplayModeOff: (id) => DisplayModeService.changeDisplayMode({ displayMode: FormCloudDisplayMode.inline, id }),
35
+ onCompleteTask: (id) => DisplayModeService.changeDisplayMode({ displayMode: FormCloudDisplayMode.inline, id }),
36
+ onSaveTask: () => { },
37
+ fullscreen: true,
38
+ displayToolbar: true,
39
+ displayCloseButton: true,
40
+ trapFocus: true
41
+ }
42
+ },
43
+ {
44
+ displayMode: FormCloudDisplayMode.standalone,
45
+ options: {
46
+ onDisplayModeOn: () => { },
47
+ onDisplayModeOff: () => { },
48
+ onCompleteTask: () => { },
49
+ onSaveTask: () => { },
50
+ fullscreen: true,
51
+ displayToolbar: false,
52
+ trapFocus: true
53
+ }
54
+ }
55
+ ]; }
56
+ static { this.DEFAULT_DISPLAY_MODE = FormCloudDisplayMode.inline; }
57
+ static { this.displayMode = new Subject(); }
58
+ static { this.displayMode$ = DisplayModeService.displayMode.asObservable(); }
59
+ static changeDisplayMode(change) {
60
+ DisplayModeService.displayMode.next(change);
61
+ }
62
+ getDefaultDisplayModeConfigurations() {
63
+ return DisplayModeService.DEFAULT_DISPLAY_MODE_CONFIGURATIONS;
64
+ }
65
+ getDisplayModeConfigurations(availableConfigurations) {
66
+ if (availableConfigurations && availableConfigurations.length > 0) {
67
+ return availableConfigurations;
68
+ }
69
+ else {
70
+ return this.getDefaultDisplayModeConfigurations();
71
+ }
72
+ }
73
+ getDisplayMode(displayMode, availableConfigurations) {
74
+ const configuration = this.findConfiguration(displayMode, availableConfigurations);
75
+ if (configuration) {
76
+ return configuration.displayMode;
77
+ }
78
+ else if (availableConfigurations && availableConfigurations.length > 0) {
79
+ return availableConfigurations.length === 1
80
+ ? availableConfigurations[0].displayMode
81
+ : availableConfigurations.find((config) => config.default)?.displayMode || availableConfigurations[0].displayMode;
82
+ }
83
+ else {
84
+ return DisplayModeService.DEFAULT_DISPLAY_MODE;
85
+ }
86
+ }
87
+ findConfiguration(displayMode, availableConfigurations) {
88
+ return this.getDisplayModeConfigurations(availableConfigurations).find((config) => config.displayMode === displayMode);
89
+ }
90
+ onCompleteTask(id, displayMode, availableConfigurations) {
91
+ const configuration = this.findConfiguration(displayMode, availableConfigurations);
92
+ if (configuration?.options?.onCompleteTask) {
93
+ configuration.options.onCompleteTask(id);
94
+ }
95
+ }
96
+ onSaveTask(id, displayMode, availableConfigurations) {
97
+ const configuration = this.findConfiguration(displayMode, availableConfigurations);
98
+ if (configuration?.options?.onSaveTask) {
99
+ configuration.options.onSaveTask(id);
100
+ }
101
+ }
102
+ onDisplayModeOff(id, displayMode, availableConfigurations) {
103
+ const configuration = this.findConfiguration(displayMode, availableConfigurations);
104
+ if (configuration?.options?.onDisplayModeOff) {
105
+ configuration.options.onDisplayModeOff(id);
106
+ }
107
+ }
108
+ onDisplayModeOn(id, displayMode, availableConfigurations) {
109
+ const configuration = this.findConfiguration(displayMode, availableConfigurations);
110
+ if (configuration?.options?.onDisplayModeOn) {
111
+ configuration.options.onDisplayModeOn(id);
112
+ }
113
+ }
114
+ switchToDisplayMode(id, newDisplayMode, oldDisplayMode, availableConfigurations) {
115
+ const oldConfiguration = this.findConfiguration(oldDisplayMode, availableConfigurations);
116
+ const newConfiguration = this.findConfiguration(newDisplayMode, availableConfigurations);
117
+ if (oldConfiguration?.displayMode !== newConfiguration?.displayMode) {
118
+ if (oldConfiguration) {
119
+ this.onDisplayModeOff(id, oldDisplayMode, availableConfigurations);
120
+ }
121
+ if (newConfiguration) {
122
+ DisplayModeService.changeDisplayMode({ id, displayMode: newConfiguration.displayMode });
123
+ this.onDisplayModeOn(id, newDisplayMode, availableConfigurations);
124
+ return newConfiguration.displayMode;
125
+ }
126
+ else {
127
+ const displayMode = this.getDisplayMode(newDisplayMode, availableConfigurations);
128
+ DisplayModeService.changeDisplayMode({ id, displayMode });
129
+ this.onDisplayModeOn(id, displayMode, availableConfigurations);
130
+ return displayMode;
131
+ }
132
+ }
133
+ else {
134
+ return oldConfiguration?.displayMode || this.getDisplayMode(oldDisplayMode, availableConfigurations);
135
+ }
136
+ }
137
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DisplayModeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
138
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DisplayModeService, providedIn: 'root' }); }
139
+ }
140
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DisplayModeService, decorators: [{
141
+ type: Injectable,
142
+ args: [{
143
+ providedIn: 'root'
144
+ }]
145
+ }] });
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGxheS1tb2RlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL2Zvcm0vc2VydmljZXMvZGlzcGxheS1tb2RlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBaUUsTUFBTSx1Q0FBdUMsQ0FBQzs7QUFLNUksTUFBTSxPQUFPLGtCQUFrQjthQUNKLHdDQUFtQyxHQUF3QztRQUM5RjtZQUNJLFdBQVcsRUFBRSxvQkFBb0IsQ0FBQyxNQUFNO1lBQ3hDLE9BQU8sRUFBRSxJQUFJO1NBQ2hCO0tBQ0osQUFMeUQsQ0FLeEQ7YUFFcUIsNENBQXVDLEdBQXdDO1FBQ2xHLEdBQUcsa0JBQWtCLENBQUMsbUNBQW1DO1FBQ3pEO1lBQ0ksV0FBVyxFQUFFLG9CQUFvQixDQUFDLFVBQVU7WUFDNUMsT0FBTyxFQUFFO2dCQUNMLGVBQWUsRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDO2dCQUN6QixnQkFBZ0IsRUFBRSxDQUFDLEVBQVUsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO2dCQUN4SCxjQUFjLEVBQUUsQ0FBQyxFQUFVLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztnQkFDdEgsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUM7Z0JBQ3BCLFVBQVUsRUFBRSxJ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aWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9ybUNsb3VkRGlzcGxheU1vZGUsIEZvcm1DbG91ZERpc3BsYXlNb2RlQ2hhbmdlLCBGb3JtQ2xvdWREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mb3JtLWZpZWxkcy5pbnRlcmZhY2VzJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEaXNwbGF5TW9kZVNlcnZpY2Uge1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9ESVNQTEFZX01PREVfQ09ORklHVVJBVElPTlM6IEZvcm1DbG91ZERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbltdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBkaXNwbGF5TW9kZTogRm9ybUNsb3VkRGlzcGxheU1vZGUuaW5saW5lLFxuICAgICAgICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgICAgICB9XG4gICAgXTtcblxuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSU1QTEVNRU5URURfRElTUExBWV9NT0RFX0NPTkZJR1VSQVRJT05TOiBGb3JtQ2xvdWREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25bXSA9IFtcbiAgICAgICAgLi4uRGlzcGxheU1vZGVTZXJ2aWNlLkRFRkFVTFRfRElTUExBWV9NT0RFX0NPTkZJR1VSQVRJT05TLFxuICAgICAgICB7XG4gICAgICAgICAgICBkaXNwbGF5TW9kZTogRm9ybUNsb3VkRGlzcGxheU1vZGUuZnVsbFNjcmVlbixcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBvbkRpc3BsYXlNb2RlT246ICgpID0+IHt9LFxuICAgICAgICAgICAgICAgIG9uRGlzcGxheU1vZGVPZmY6IChpZDogc3RyaW5nKSA9PiBEaXNwbGF5TW9kZVNlcnZpY2UuY2hhbmdlRGlzcGxheU1vZGUoeyBkaXNwbGF5TW9kZTogRm9ybUNsb3VkRGlzcGxheU1vZGUuaW5saW5lLCBpZCB9KSxcbiAgICAgICAgICAgICAgICBvbkNvbXBsZXRlVGFzazogKGlkOiBzdHJpbmcpID0+IERpc3BsYXlNb2RlU2VydmljZS5jaGFuZ2VEaXNwbGF5TW9kZSh7IGRpc3BsYXlNb2RlOiBGb3JtQ2xvdWREaXNwbGF5TW9kZS5pbmxpbmUsIGlkIH0pLFxuICAgICAgICAgICAgICAgIG9uU2F2ZVRhc2s6ICgpID0+IHt9LFxuICAgICAgICAgICAgICAgIGZ1bGxzY3JlZW46IHRydWUsXG4gICAgICAgICAgICAgICAgZGlzcGxheVRvb2xiYXI6IHRydWUsXG4gICAgICAgICAgICAgICAgZGlzcGxheUNsb3NlQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgICAgIHRyYXBGb2N1czogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBkaXNwbGF5TW9kZTogRm9ybUNsb3VkRGlzcGxheU1vZGUuc3RhbmRhbG9uZSxcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBvbkRpc3BsYXlNb2RlT246ICgpID0+IHt9LFxuICAgICAgICAgICAgICAgIG9uRGlzcGxheU1vZGVPZmY6ICgpID0+IHt9LFxuICAgICAgICAgICAgICAgIG9uQ29tcGxldGVUYXNrOiAoKSA9PiB7fSxcbiAgICAgICAgICAgICAgICBvblNhdmVUYXNrOiAoKSA9PiB7fSxcbiAgICAgICAgICAgICAgICBmdWxsc2NyZWVuOiB0cnVlLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlUb29sYmFyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB0cmFwRm9jdXM6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIF07XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfRElTUExBWV9NT0RFOiBGb3JtQ2xvdWREaXNwbGF5TW9kZSA9IEZvcm1DbG91ZERpc3BsYXlNb2RlLmlubGluZTtcblxuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGRpc3BsYXlNb2RlID0gbmV3IFN1YmplY3Q8Rm9ybUNsb3VkRGlzcGxheU1vZGVDaGFuZ2U+KCk7XG5cbiAgICBzdGF0aWMgcmVhZG9ubHkgZGlzcGxheU1vZGUkOiBPYnNlcnZhYmxlPEZvcm1DbG91ZERpc3BsYXlNb2RlQ2hhbmdlPiA9IERpc3BsYXlNb2RlU2VydmljZS5kaXNwbGF5TW9kZS5hc09ic2VydmFibGUoKTtcblxuICAgIHN0YXRpYyBjaGFuZ2VEaXNwbGF5TW9kZShjaGFuZ2U6IEZvcm1DbG91ZERpc3BsYXlNb2RlQ2hhbmdlKSB7XG4gICAgICAgIERpc3BsYXlNb2RlU2VydmljZS5kaXNwbGF5TW9kZS5uZXh0KGNoYW5nZSk7XG4gICAgfVxuXG4gICAgZ2V0RGVmYXVsdERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnMoKTogRm9ybUNsb3VkRGlzcGxheU1vZGVDb25maWd1cmF0aW9uW10ge1xuICAgICAgICByZXR1cm4gRGlzcGxheU1vZGVTZXJ2aWNlLkRFRkFVTFRfRElTUExBWV9NT0RFX0NPTkZJR1VSQVRJT05TO1xuICAgIH1cblxuICAgIGdldERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnMoYXZhaWxhYmxlQ29uZmlndXJhdGlvbnM/OiBGb3JtQ2xvdWREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25bXSk6IEZvcm1DbG91ZERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbltdIHtcbiAgICAgICAgaWYgKGF2YWlsYWJsZUNvbmZpZ3VyYXRpb25zICYmIGF2YWlsYWJsZUNvbmZpZ3VyYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBhdmFpbGFibGVDb25maWd1cmF0aW9ucztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldERlZmF1bHREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25zKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXREaXNwbGF5TW9kZShkaXNwbGF5TW9kZT86IHN0cmluZywgYXZhaWxhYmxlQ29uZmlndXJhdGlvbnM/OiBGb3JtQ2xvdWREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25bXSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSB0aGlzLmZpbmRDb25maWd1cmF0aW9uKGRpc3BsYXlNb2RlLCBhdmFpbGFibGVDb25maWd1cmF0aW9ucyk7XG5cbiAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBjb25maWd1cmF0aW9uLmRpc3BsYXlNb2RlO1xuICAgICAgICB9IGVsc2UgaWYgKGF2YWlsYWJsZUNvbmZpZ3VyYXRpb25zICYmIGF2YWlsYWJsZUNvbmZpZ3VyYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBhdmFpbGFibGVDb25maWd1cmF0aW9ucy5sZW5ndGggPT09IDFcbiAgICAgICAgICAgICAgICA/IGF2YWlsYWJsZUNvbmZpZ3VyYXRpb25zWzBdLmRpc3BsYXlNb2RlXG4gICAgICAgICAgICAgICAgOiBhdmFpbGFibGVDb25maWd1cmF0aW9ucy5maW5kKChjb25maWcpID0+IGNvbmZpZy5kZWZhdWx0KT8uZGlzcGxheU1vZGUgfHwgYXZhaWxhYmxlQ29uZmlndXJhdGlvbnNbMF0uZGlzcGxheU1vZGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gRGlzcGxheU1vZGVTZXJ2aWNlLkRFRkFVTFRfRElTUExBWV9NT0RFO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZENvbmZpZ3VyYXRpb24oZGlzcGxheU1vZGU/OiBzdHJpbmcsIGF2YWlsYWJsZUNvbmZpZ3VyYXRpb25zPzogRm9ybUNsb3VkRGlzcGxheU1vZGVDb25maWd1cmF0aW9uW10pOiBGb3JtQ2xvdWREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25zKGF2YWlsYWJsZUNvbmZpZ3VyYXRpb25zKS5maW5kKChjb25maWcpID0+IGNvbmZpZy5kaXNwbGF5TW9kZSA9PT0gZGlzcGxheU1vZGUpO1xuICAgIH1cblxuICAgIG9uQ29tcGxldGVUYXNrKGlkPzogc3RyaW5nLCBkaXNwbGF5TW9kZT86IHN0cmluZywgYXZhaWxhYmxlQ29uZmlndXJhdGlvbnM/OiBGb3JtQ2xvdWREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25bXSkge1xuICAgICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gdGhpcy5maW5kQ29uZmlndXJhdGlvbihkaXNwbGF5TW9kZSwgYXZhaWxhYmxlQ29uZmlndXJhdGlvbnMpO1xuXG4gICAgICAgIGlmIChjb25maWd1cmF0aW9uPy5vcHRpb25zPy5vbkNvbXBsZXRlVGFzaykge1xuICAgICAgICAgICAgY29uZmlndXJhdGlvbi5vcHRpb25zLm9uQ29tcGxldGVUYXNrKGlkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU2F2ZVRhc2soaWQ/OiBzdHJpbmcsIGRpc3BsYXlNb2RlPzogc3RyaW5nLCBhdmFpbGFibGVDb25maWd1cmF0aW9ucz86IEZvcm1DbG91ZERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbltdKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSB0aGlzLmZpbmRDb25maWd1cmF0aW9uKGRpc3BsYXlNb2RlLCBhdmFpbGFibGVDb25maWd1cmF0aW9ucyk7XG5cbiAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24/Lm9wdGlvbnM/Lm9uU2F2ZVRhc2spIHtcbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ub3B0aW9ucy5vblNhdmVUYXNrKGlkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRGlzcGxheU1vZGVPZmYoaWQ/OiBzdHJpbmcsIGRpc3BsYXlNb2RlPzogc3RyaW5nLCBhdmFpbGFibGVDb25maWd1cmF0aW9ucz86IEZvcm1DbG91ZERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbltdKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSB0aGlzLmZpbmRDb25maWd1cmF0aW9uKGRpc3BsYXlNb2RlLCBhdmFpbGFibGVDb25maWd1cmF0aW9ucyk7XG5cbiAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24/Lm9wdGlvbnM/Lm9uRGlzcGxheU1vZGVPZmYpIHtcbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ub3B0aW9ucy5vbkRpc3BsYXlNb2RlT2ZmKGlkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRGlzcGxheU1vZGVPbihpZD86IHN0cmluZywgZGlzcGxheU1vZGU/OiBzdHJpbmcsIGF2YWlsYWJsZUNvbmZpZ3VyYXRpb25zPzogRm9ybUNsb3VkRGlzcGxheU1vZGVDb25maWd1cmF0aW9uW10pIHtcbiAgICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IHRoaXMuZmluZENvbmZpZ3VyYXRpb24oZGlzcGxheU1vZGUsIGF2YWlsYWJsZUNvbmZpZ3VyYXRpb25zKTtcblxuICAgICAgICBpZiAoY29uZmlndXJhdGlvbj8ub3B0aW9ucz8ub25EaXNwbGF5TW9kZU9uKSB7XG4gICAgICAgICAgICBjb25maWd1cmF0aW9uLm9wdGlvbnMub25EaXNwbGF5TW9kZU9uKGlkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN3aXRjaFRvRGlzcGxheU1vZGUoXG4gICAgICAgIGlkPzogc3RyaW5nLFxuICAgICAgICBuZXdEaXNwbGF5TW9kZT86IHN0cmluZyxcbiAgICAgICAgb2xkRGlzcGxheU1vZGU/OiBzdHJpbmcsXG4gICAgICAgIGF2YWlsYWJsZUNvbmZpZ3VyYXRpb25zPzogRm9ybUNsb3VkRGlzcGxheU1vZGVDb25maWd1cmF0aW9uW11cbiAgICApOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBvbGRDb25maWd1cmF0aW9uID0gdGhpcy5maW5kQ29uZmlndXJhdGlvbihvbGREaXNwbGF5TW9kZSwgYXZhaWxhYmxlQ29uZmlndXJhdGlvbnMpO1xuICAgICAgICBjb25zdCBuZXdDb25maWd1cmF0aW9uID0gdGhpcy5maW5kQ29uZmlndXJhdGlvbihuZXdEaXNwbGF5TW9kZSwgYXZhaWxhYmxlQ29uZmlndXJhdGlvbnMpO1xuXG4gICAgICAgIGlmIChvbGRDb25maWd1cmF0aW9uPy5kaXNwbGF5TW9kZSAhPT0gbmV3Q29uZmlndXJhdGlvbj8uZGlzcGxheU1vZGUpIHtcbiAgICAgICAgICAgIGlmIChvbGRDb25maWd1cmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkRpc3BsYXlNb2RlT2ZmKGlkLCBvbGREaXNwbGF5TW9kZSwgYXZhaWxhYmxlQ29uZmlndXJhdGlvbnMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobmV3Q29uZmlndXJhdGlvbikge1xuICAgICAgICAgICAgICAgIERpc3BsYXlNb2RlU2VydmljZS5jaGFuZ2VEaXNwbGF5TW9kZSh7IGlkLCBkaXNwbGF5TW9kZTogbmV3Q29uZmlndXJhdGlvbi5kaXNwbGF5TW9kZSB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uRGlzcGxheU1vZGVPbihpZCwgbmV3RGlzcGxheU1vZGUsIGF2YWlsYWJsZUNvbmZpZ3VyYXRpb25zKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3Q29uZmlndXJhdGlvbi5kaXNwbGF5TW9kZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlzcGxheU1vZGUgPSB0aGlzLmdldERpc3BsYXlNb2RlKG5ld0Rpc3BsYXlNb2RlLCBhdmFpbGFibGVDb25maWd1cmF0aW9ucyk7XG4gICAgICAgICAgICAgICAgRGlzcGxheU1vZGVTZXJ2aWNlLmNoYW5nZURpc3BsYXlNb2RlKHsgaWQsIGRpc3BsYXlNb2RlIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMub25EaXNwbGF5TW9kZU9uKGlkLCBkaXNwbGF5TW9kZSwgYXZhaWxhYmxlQ29uZmlndXJhdGlvbnMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBkaXNwbGF5TW9kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBvbGRDb25maWd1cmF0aW9uPy5kaXNwbGF5TW9kZSB8fCB0aGlzLmdldERpc3BsYXlNb2RlKG9sZERpc3BsYXlNb2RlLCBhdmFpbGFibGVDb25maWd1cmF0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,18 @@
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 {};
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jbG91ZC5zZXJ2aWNlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvZm9ybS9zZXJ2aWNlcy9mb3JtLWNsb3VkLnNlcnZpY2UuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgVXBsb2FkQXBpIH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBGb3JtRmllbGRPcHRpb24sIEZvcm1Nb2RlbCwgRm9ybVZhbHVlcyB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBUYXNrRGV0YWlsc0Nsb3VkTW9kZWwgfSBmcm9tICcuLi8uLi90YXNrL21vZGVscy90YXNrLWRldGFpbHMtY2xvdWQubW9kZWwnO1xuaW1wb3J0IHsgVGFza1ZhcmlhYmxlQ2xvdWQgfSBmcm9tICcuLi9tb2RlbHMvdGFzay12YXJpYWJsZS1jbG91ZC5tb2RlbCc7XG5pbXBvcnQgeyBGb3JtQ29udGVudCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm0tZmllbGRzLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1DbG91ZFNlcnZpY2VJbnRlcmZhY2Uge1xuICAgIHVwbG9hZEFwaTogVXBsb2FkQXBpO1xuXG4gICAgZ2V0VGFza0Zvcm0oYXBwTmFtZTogc3RyaW5nLCB0YXNrSWQ6IHN0cmluZywgdmVyc2lvbj86IG51bWJlcik6IE9ic2VydmFibGU8YW55PjtcbiAgICBzYXZlVGFza0Zvcm0oYXBwTmFtZTogc3RyaW5nLCB0YXNrSWQ6IHN0cmluZywgcHJvY2Vzc0luc3RhbmNlSWQ6IHN0cmluZywgZm9ybUlkOiBzdHJpbmcsIHZhbHVlczogRm9ybVZhbHVlcyk6IE9ic2VydmFibGU8VGFza0RldGFpbHNDbG91ZE1vZGVsPjtcbiAgICBjcmVhdGVUZW1wb3JhcnlSYXdSZWxhdGVkQ29udGVudChmaWxlOiBhbnksIG5vZGVJZDogc3RyaW5nLCBjb250ZW50SG9zdDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+O1xuICAgIGNvbXBsZXRlVGFza0Zvcm0oXG4gICAgICAgIGFwcE5hbWU6IHN0cmluZyxcbiAgICAgICAgdGFza0lkOiBzdHJpbmcsXG4gICAgICAgIHByb2Nlc3NJbnN0YW5jZUlkOiBzdHJpbmcsXG4gICAgICAgIGZvcm1JZDogc3RyaW5nLFxuICAgICAgICBmb3JtVmFsdWVzOiBGb3JtVmFsdWVzLFxuICAgICAgICBvdXRjb21lOiBzdHJpbmcsXG4gICAgICAgIHZlcnNpb246IG51bWJlclxuICAgICk6IE9ic2VydmFibGU8VGFza0RldGFpbHNDbG91ZE1vZGVsPjtcbiAgICBnZXRUYXNrKGFwcE5hbWU6IHN0cmluZywgdGFza0lkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFRhc2tEZXRhaWxzQ2xvdWRNb2RlbD47XG4gICAgZ2V0VGFza1ZhcmlhYmxlcyhhcHBOYW1lOiBzdHJpbmcsIHRhc2tJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxUYXNrVmFyaWFibGVDbG91ZFtdPjtcbiAgICBnZXRGb3JtKGFwcE5hbWU6IHN0cmluZywgZm9ybUtleTogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyKTogT2JzZXJ2YWJsZTxGb3JtQ29udGVudD47XG4gICAgcGFyc2VGb3JtKGpzb246IGFueSwgZGF0YT86IFRhc2tWYXJpYWJsZUNsb3VkW10sIHJlYWRPbmx5PzogYm9vbGVhbik6IEZvcm1Nb2RlbDtcbiAgICBnZXRSZXN0V2lkZ2V0RGF0YShmb3JtTmFtZTogc3RyaW5nLCB3aWRnZXRJZDogc3RyaW5nLCBib2R5OiBNYXA8c3RyaW5nLCBzdHJpbmc+KTogT2JzZXJ2YWJsZTxGb3JtRmllbGRPcHRpb25bXT47XG59XG4iXX0=
@@ -0,0 +1,201 @@
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 { Inject, Injectable, InjectionToken, Optional } from '@angular/core';
18
+ import { FormModel } from '@alfresco/adf-core';
19
+ import { from, EMPTY } from 'rxjs';
20
+ import { expand, map, reduce, switchMap } from 'rxjs/operators';
21
+ import { UploadApi } from '@alfresco/js-api';
22
+ import { TaskVariableCloud } from '../models/task-variable-cloud.model';
23
+ import { BaseCloudService } from '../../services/base-cloud.service';
24
+ import { AdfHttpClient } from '@alfresco/adf-core/api';
25
+ import * as i0 from "@angular/core";
26
+ import * as i1 from "@alfresco/adf-core/api";
27
+ export const FORM_CLOUD_SERVICE_FIELD_VALIDATORS_TOKEN = new InjectionToken('FORM_CLOUD_SERVICE_FIELD_VALIDATORS_TOKEN');
28
+ export class FormCloudService extends BaseCloudService {
29
+ get uploadApi() {
30
+ this._uploadApi = this._uploadApi ?? new UploadApi(this.apiService.getInstance());
31
+ return this._uploadApi;
32
+ }
33
+ constructor(adfHttpClient, injectedFieldValidators) {
34
+ super(adfHttpClient);
35
+ this.fieldValidators = injectedFieldValidators || [];
36
+ }
37
+ /**
38
+ * Gets the form definition of a task.
39
+ *
40
+ * @param appName Name of the app
41
+ * @param taskId ID of the target task
42
+ * @param version Version of the form
43
+ * @returns Form definition
44
+ */
45
+ getTaskForm(appName, taskId, version) {
46
+ return this.getTask(appName, taskId).pipe(switchMap((task) => this.getForm(appName, task.formKey, version).pipe(map((form) => {
47
+ const flattenForm = {
48
+ ...form.formRepresentation,
49
+ ...form.formRepresentation.formDefinition,
50
+ taskId: task.id,
51
+ taskName: task.name,
52
+ processDefinitionId: task.processDefinitionId,
53
+ processInstanceId: task.processInstanceId
54
+ };
55
+ delete flattenForm.formDefinition;
56
+ return flattenForm;
57
+ }))));
58
+ }
59
+ /**
60
+ * Saves a task form.
61
+ *
62
+ * @param appName Name of the app
63
+ * @param taskId ID of the target task
64
+ * @param processInstanceId ID of processInstance
65
+ * @param formId ID of the form to save
66
+ * @param values Form values object
67
+ * @returns Updated task details
68
+ */
69
+ saveTaskForm(appName, taskId, processInstanceId, formId, values) {
70
+ const apiUrl = `${this.getBasePath(appName)}/form/v1/forms/${formId}/save`;
71
+ const saveFormRepresentation = {
72
+ values,
73
+ taskId,
74
+ processInstanceId
75
+ };
76
+ return this.post(apiUrl, saveFormRepresentation).pipe(map((res) => res.entry));
77
+ }
78
+ createTemporaryRawRelatedContent(file, nodeId, contentHost) {
79
+ const changedConfig = this.apiService.lastConfig;
80
+ changedConfig.provider = 'ALL';
81
+ changedConfig.hostEcm = contentHost.replace('/alfresco', '');
82
+ this.apiService.getInstance().setConfig(changedConfig);
83
+ return from(this.uploadApi.uploadFile(file, '', nodeId, null, { overwrite: true })).pipe(map((res) => res.entry));
84
+ }
85
+ /**
86
+ * Completes a task form.
87
+ *
88
+ * @param appName Name of the app
89
+ * @param taskId ID of the target task
90
+ * @param processInstanceId ID of processInstance
91
+ * @param formId ID of the form to complete
92
+ * @param formValues Form values object
93
+ * @param outcome Form outcome
94
+ * @param version of the form
95
+ * @returns Updated task details
96
+ */
97
+ completeTaskForm(appName, taskId, processInstanceId, formId, formValues, outcome, version) {
98
+ const apiUrl = `${this.getBasePath(appName)}/form/v1/forms/${formId}/submit/versions/${version}`;
99
+ const completeFormRepresentation = {
100
+ values: formValues,
101
+ taskId,
102
+ processInstanceId
103
+ };
104
+ if (outcome) {
105
+ completeFormRepresentation.outcome = outcome;
106
+ }
107
+ return this.post(apiUrl, completeFormRepresentation).pipe(map((res) => res.entry));
108
+ }
109
+ /**
110
+ * Gets details of a task
111
+ *
112
+ * @param appName Name of the app
113
+ * @param taskId ID of the target task
114
+ * @returns Details of the task
115
+ */
116
+ getTask(appName, taskId) {
117
+ const apiUrl = `${this.getBasePath(appName)}/query/v1/tasks/${taskId}`;
118
+ return this.get(apiUrl).pipe(map((res) => res.entry));
119
+ }
120
+ /**
121
+ * Gets the variables of a task.
122
+ *
123
+ * @param appName Name of the app
124
+ * @param taskId ID of the target task
125
+ * @returns Task variables
126
+ */
127
+ getTaskVariables(appName, taskId) {
128
+ const apiUrl = `${this.getBasePath(appName)}/query/v1/tasks/${taskId}/variables`;
129
+ let skipCount = 0;
130
+ const maxItems = 1000;
131
+ return this.get(apiUrl, { maxItems, skipCount }).pipe(expand((res) => {
132
+ skipCount += maxItems;
133
+ return res.list.pagination.hasMoreItems
134
+ ? this.get(apiUrl, {
135
+ maxItems,
136
+ skipCount
137
+ })
138
+ : EMPTY;
139
+ }), map((res) => res.list.entries.map((variable) => new TaskVariableCloud(variable.entry))), reduce((acc, res) => acc.concat(res), []));
140
+ }
141
+ /**
142
+ * Gets a form definition.
143
+ *
144
+ * @param appName Name of the app
145
+ * @param formKey key of the target task
146
+ * @param version Version of the form
147
+ * @returns Form definition
148
+ */
149
+ getForm(appName, formKey, version) {
150
+ let url = `${this.getBasePath(appName)}/form/v1/forms/${formKey}`;
151
+ if (version) {
152
+ url += `/versions/${version}`;
153
+ }
154
+ return this.get(url);
155
+ }
156
+ getRestWidgetData(formName, widgetId, body = {}) {
157
+ const appName = this.appConfigService.get('alfresco-deployed-apps')[0]?.name;
158
+ const apiUrl = `${this.getBasePath(appName)}/form/v1/forms/${formName}/values/${widgetId}`;
159
+ return this.post(apiUrl, body);
160
+ }
161
+ /**
162
+ * Parses JSON data to create a corresponding form.
163
+ *
164
+ * @param json JSON data to create the form
165
+ * @param data Values for the form's fields
166
+ * @param readOnly Toggles whether or not the form should be read-only
167
+ * @returns Form created from the JSON specification
168
+ */
169
+ parseForm(json, data, readOnly = false) {
170
+ if (json) {
171
+ const flattenForm = {
172
+ ...json.formRepresentation,
173
+ ...json.formRepresentation.formDefinition
174
+ };
175
+ delete flattenForm.formDefinition;
176
+ const formValues = {};
177
+ (data || []).forEach((variable) => {
178
+ formValues[variable.name] = variable.value;
179
+ });
180
+ return new FormModel(flattenForm, formValues, readOnly, undefined, undefined, this.fieldValidators);
181
+ }
182
+ return null;
183
+ }
184
+ getPreviewState() {
185
+ return false;
186
+ }
187
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormCloudService, deps: [{ token: i1.AdfHttpClient }, { token: FORM_CLOUD_SERVICE_FIELD_VALIDATORS_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
188
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormCloudService, providedIn: 'root' }); }
189
+ }
190
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormCloudService, decorators: [{
191
+ type: Injectable,
192
+ args: [{
193
+ providedIn: 'root'
194
+ }]
195
+ }], ctorParameters: () => [{ type: i1.AdfHttpClient }, { type: undefined, decorators: [{
196
+ type: Optional
197
+ }, {
198
+ type: Inject,
199
+ args: [FORM_CLOUD_SERVICE_FIELD_VALIDATORS_TOKEN]
200
+ }] }] });
201
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jbG91ZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3Byb2Nlc3Mtc2VydmljZXMtY2xvdWQvc3JjL2xpYi9mb3JtL3NlcnZpY2VzL2Zvcm0tY2xvdWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBYyxTQUFTLEVBQXVDLE1BQU0sb0JBQW9CLENBQUM7QUFDaEcsT0FBTyxFQUFjLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhFLE9BQU8sRUFBOEIsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFFdkQsTUFBTSxDQUFDLE1BQU0seUNBQXlDLEdBQUcsSUFBSSxjQUFjLENBQXVCLDJDQUEyQyxDQUFDLENBQUM7QUFLL0ksTUFBTSxPQUFPLGdCQUFpQixTQUFRLGdCQUFnQjtJQUdsRCxJQUFJLFNBQVM7UUFDVCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ2xGLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFDSSxhQUE0QixFQUNtQyx1QkFBOEM7UUFFN0csS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxlQUFlLEdBQUcsdUJBQXVCLElBQUksRUFBRSxDQUFDO0lBQ3pELENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsV0FBVyxDQUFDLE9BQWUsRUFBRSxNQUFjLEVBQUUsT0FBZ0I7UUFDekQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQ3JDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQzdDLEdBQUcsQ0FBQyxDQUFDLElBQWlCLEVBQUUsRUFBRTtZQUN0QixNQUFNLFdBQVcsR0FBRztnQkFDaEIsR0FBRyxJQUFJLENBQUMsa0JBQWtCO2dCQUMxQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjO2dCQUN6QyxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQ2YsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNuQixtQkFBbUIsRUFBRSxJQUFJLENBQUMsbUJBQW1CO2dCQUM3QyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCO2FBQzVDLENBQUM7WUFDRixPQUFPLFdBQVcsQ0FBQyxjQUFjLENBQUM7WUFDbEMsT0FBTyxXQUFXLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQ0wsQ0FDSixDQUNKLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsWUFBWSxDQUFDLE9BQWUsRUFBRSxNQUFjLEVBQUUsaUJBQXlCLEVBQUUsTUFBYyxFQUFFLE1BQWtCO1FBQ3ZHLE1BQU0sTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLE1BQU0sT0FBTyxDQUFDO1FBQzNFLE1BQU0sc0JBQXNCLEdBQVE7WUFDaEMsTUFBTTtZQUNOLE1BQU07WUFDTixpQkFBaUI7U0FDcEIsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsc0JBQXNCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQsZ0NBQWdDLENBQUMsSUFBUyxFQUFFLE1BQWMsRUFBRSxXQUFtQjtRQUMzRSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztRQUNqRCxhQUFhLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUMvQixhQUFhLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDM0gsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsZ0JBQWdCLENBQ1osT0FBZSxFQUNmLE1BQWMsRUFDZCxpQkFBeUIsRUFDekIsTUFBYyxFQUNkLFVBQXNCLEVBQ3RCLE9BQWUsRUFDZixPQUFlO1FBRWYsTUFBTSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsTUFBTSxvQkFBb0IsT0FBTyxFQUFFLENBQUM7UUFDakcsTUFBTSwwQkFBMEIsR0FBRztZQUMvQixNQUFNLEVBQUUsVUFBVTtZQUNsQixNQUFNO1lBQ04saUJBQWlCO1NBQ1UsQ0FBQztRQUVoQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1YsMEJBQTBCLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUNqRCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSwwQkFBMEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxPQUFPLENBQUMsT0FBZSxFQUFFLE1BQWM7UUFDbkMsTUFBTSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsTUFBTSxFQUFFLENBQUM7UUFFdkUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxnQkFBZ0IsQ0FBQyxPQUFlLEVBQUUsTUFBYztRQUM1QyxNQUFNLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLG1CQUFtQixNQUFNLFlBQVksQ0FBQztRQUNqRixJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBRXRCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ2pELE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2hCLFNBQVMsSUFBSSxRQUFRLENBQUM7WUFDdEIsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZO2dCQUNuQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUU7b0JBQ2IsUUFBUTtvQkFDUixTQUFTO2lCQUNaLENBQUM7Z0JBQ0osQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNoQixDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUM1RixNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUM1QyxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxPQUFPLENBQUMsT0FBZSxFQUFFLE9BQWUsRUFBRSxPQUFnQjtRQUN0RCxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGtCQUFrQixPQUFPLEVBQUUsQ0FBQztRQUVsRSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1YsR0FBRyxJQUFJLGFBQWEsT0FBTyxFQUFFLENBQUM7UUFDbEMsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsUUFBZ0IsRUFBRSxRQUFnQixFQUFFLE9BQVksRUFBRTtRQUNoRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDO1FBQzdFLE1BQU0sTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLFFBQVEsV0FBVyxRQUFRLEVBQUUsQ0FBQztRQUMzRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsU0FBUyxDQUFDLElBQVMsRUFBRSxJQUEwQixFQUFFLFdBQW9CLEtBQUs7UUFDdEUsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNQLE1BQU0sV0FBVyxHQUFHO2dCQUNoQixHQUFHLElBQUksQ0FBQyxrQkFBa0I7Z0JBQzFCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWM7YUFDNUMsQ0FBQztZQUNGLE9BQU8sV0FBVyxDQUFDLGNBQWMsQ0FBQztZQUVsQyxNQUFNLFVBQVUsR0FBZSxFQUFFLENBQUM7WUFDbEMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQzlCLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUMvQyxDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sSUFBSSxTQUFTLENBQUMsV0FBVyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDeEcsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxlQUFlO1FBQ1gsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQzsrR0F6TVEsZ0JBQWdCLCtDQVVELHlDQUF5QzttSEFWeEQsZ0JBQWdCLGNBRmIsTUFBTTs7NEZBRVQsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBV1EsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx5Q0FBeUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtVmFsdWVzLCBGb3JtTW9kZWwsIEZvcm1GaWVsZE9wdGlvbiwgRm9ybUZpZWxkVmFsaWRhdG9yIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZyb20sIEVNUFRZIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBleHBhbmQsIG1hcCwgcmVkdWNlLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUYXNrRGV0YWlsc0Nsb3VkTW9kZWwgfSBmcm9tICcuLi8uLi90YXNrL21vZGVscy90YXNrLWRldGFpbHMtY2xvdWQubW9kZWwnO1xuaW1wb3J0IHsgQ29tcGxldGVGb3JtUmVwcmVzZW50YXRpb24sIFVwbG9hZEFwaSB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgVGFza1ZhcmlhYmxlQ2xvdWQgfSBmcm9tICcuLi9tb2RlbHMvdGFzay12YXJpYWJsZS1jbG91ZC5tb2RlbCc7XG5pbXBvcnQgeyBCYXNlQ2xvdWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYmFzZS1jbG91ZC5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1Db250ZW50IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZm9ybS1maWVsZHMuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBGb3JtQ2xvdWRTZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi9mb3JtLWNsb3VkLnNlcnZpY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFkZkh0dHBDbGllbnQgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUvYXBpJztcblxuZXhwb3J0IGNvbnN0IEZPUk1fQ0xPVURfU0VSVklDRV9GSUVMRF9WQUxJREFUT1JTX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPEZvcm1GaWVsZFZhbGlkYXRvcltdPignRk9STV9DTE9VRF9TRVJWSUNFX0ZJRUxEX1ZBTElEQVRPUlNfVE9LRU4nKTtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGb3JtQ2xvdWRTZXJ2aWNlIGV4dGVuZHMgQmFzZUNsb3VkU2VydmljZSBpbXBsZW1lbnRzIEZvcm1DbG91ZFNlcnZpY2VJbnRlcmZhY2Uge1xuICAgIHByaXZhdGUgX3VwbG9hZEFwaTogVXBsb2FkQXBpO1xuICAgIHByaXZhdGUgZmllbGRWYWxpZGF0b3JzOiBGb3JtRmllbGRWYWxpZGF0b3JbXTtcbiAgICBnZXQgdXBsb2FkQXBpKCk6IFVwbG9hZEFwaSB7XG4gICAgICAgIHRoaXMuX3VwbG9hZEFwaSA9IHRoaXMuX3VwbG9hZEFwaSA/PyBuZXcgVXBsb2FkQXBpKHRoaXMuYXBpU2VydmljZS5nZXRJbnN0YW5jZSgpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VwbG9hZEFwaTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgYWRmSHR0cENsaWVudDogQWRmSHR0cENsaWVudCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChGT1JNX0NMT1VEX1NFUlZJQ0VfRklFTERfVkFMSURBVE9SU19UT0tFTikgaW5qZWN0ZWRGaWVsZFZhbGlkYXRvcnM/OiBGb3JtRmllbGRWYWxpZGF0b3JbXVxuICAgICkge1xuICAgICAgICBzdXBlcihhZGZIdHRwQ2xpZW50KTtcbiAgICAgICAgdGhpcy5maWVsZFZhbGlkYXRvcnMgPSBpbmplY3RlZEZpZWxkVmFsaWRhdG9ycyB8fCBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBmb3JtIGRlZmluaXRpb24gb2YgYSB0YXNrLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFwcE5hbWUgTmFtZSBvZiB0aGUgYXBwXG4gICAgICogQHBhcmFtIHRhc2tJZCBJRCBvZiB0aGUgdGFyZ2V0IHRhc2tcbiAgICAgKiBAcGFyYW0gdmVyc2lvbiBWZXJzaW9uIG9mIHRoZSBmb3JtXG4gICAgICogQHJldHVybnMgRm9ybSBkZWZpbml0aW9uXG4gICAgICovXG4gICAgZ2V0VGFza0Zvcm0oYXBwTmFtZTogc3RyaW5nLCB0YXNrSWQ6IHN0cmluZywgdmVyc2lvbj86IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRhc2soYXBwTmFtZSwgdGFza0lkKS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKCh0YXNrKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0Rm9ybShhcHBOYW1lLCB0YXNrLmZvcm1LZXksIHZlcnNpb24pLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIG1hcCgoZm9ybTogRm9ybUNvbnRlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsYXR0ZW5Gb3JtID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZvcm0uZm9ybVJlcHJlc2VudGF0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZvcm0uZm9ybVJlcHJlc2VudGF0aW9uLmZvcm1EZWZpbml0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tJZDogdGFzay5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrTmFtZTogdGFzay5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NEZWZpbml0aW9uSWQ6IHRhc2sucHJvY2Vzc0RlZmluaXRpb25JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzSW5zdGFuY2VJZDogdGFzay5wcm9jZXNzSW5zdGFuY2VJZFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBmbGF0dGVuRm9ybS5mb3JtRGVmaW5pdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbGF0dGVuRm9ybTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2F2ZXMgYSB0YXNrIGZvcm0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYXBwTmFtZSBOYW1lIG9mIHRoZSBhcHBcbiAgICAgKiBAcGFyYW0gdGFza0lkIElEIG9mIHRoZSB0YXJnZXQgdGFza1xuICAgICAqIEBwYXJhbSBwcm9jZXNzSW5zdGFuY2VJZCBJRCBvZiBwcm9jZXNzSW5zdGFuY2VcbiAgICAgKiBAcGFyYW0gZm9ybUlkIElEIG9mIHRoZSBmb3JtIHRvIHNhdmVcbiAgICAgKiBAcGFyYW0gdmFsdWVzIEZvcm0gdmFsdWVzIG9iamVjdFxuICAgICAqIEByZXR1cm5zIFVwZGF0ZWQgdGFzayBkZXRhaWxzXG4gICAgICovXG4gICAgc2F2ZVRhc2tGb3JtKGFwcE5hbWU6IHN0cmluZywgdGFza0lkOiBzdHJpbmcsIHByb2Nlc3NJbnN0YW5jZUlkOiBzdHJpbmcsIGZvcm1JZDogc3RyaW5nLCB2YWx1ZXM6IEZvcm1WYWx1ZXMpOiBPYnNlcnZhYmxlPFRhc2tEZXRhaWxzQ2xvdWRNb2RlbD4ge1xuICAgICAgICBjb25zdCBhcGlVcmwgPSBgJHt0aGlzLmdldEJhc2VQYXRoKGFwcE5hbWUpfS9mb3JtL3YxL2Zvcm1zLyR7Zm9ybUlkfS9zYXZlYDtcbiAgICAgICAgY29uc3Qgc2F2ZUZvcm1SZXByZXNlbnRhdGlvbjogYW55ID0ge1xuICAgICAgICAgICAgdmFsdWVzLFxuICAgICAgICAgICAgdGFza0lkLFxuICAgICAgICAgICAgcHJvY2Vzc0luc3RhbmNlSWRcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdGhpcy5wb3N0KGFwaVVybCwgc2F2ZUZvcm1SZXByZXNlbnRhdGlvbikucGlwZShtYXAoKHJlczogYW55KSA9PiByZXMuZW50cnkpKTtcbiAgICB9XG5cbiAgICBjcmVhdGVUZW1wb3JhcnlSYXdSZWxhdGVkQ29udGVudChmaWxlOiBhbnksIG5vZGVJZDogc3RyaW5nLCBjb250ZW50SG9zdDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgY29uc3QgY2hhbmdlZENvbmZpZyA9IHRoaXMuYXBpU2VydmljZS5sYXN0Q29uZmlnO1xuICAgICAgICBjaGFuZ2VkQ29uZmlnLnByb3ZpZGVyID0gJ0FMTCc7XG4gICAgICAgIGNoYW5nZWRDb25maWcuaG9zdEVjbSA9IGNvbnRlbnRIb3N0LnJlcGxhY2UoJy9hbGZyZXNjbycsICcnKTtcbiAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLmdldEluc3RhbmNlKCkuc2V0Q29uZmlnKGNoYW5nZWRDb25maWcpO1xuICAgICAgICByZXR1cm4gZnJvbSh0aGlzLnVwbG9hZEFwaS51cGxvYWRGaWxlKGZpbGUsICcnLCBub2RlSWQsIG51bGwsIHsgb3ZlcndyaXRlOiB0cnVlIH0pKS5waXBlKG1hcCgocmVzOiBhbnkpID0+IHJlcy5lbnRyeSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbXBsZXRlcyBhIHRhc2sgZm9ybS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhcHBOYW1lIE5hbWUgb2YgdGhlIGFwcFxuICAgICAqIEBwYXJhbSB0YXNrSWQgSUQgb2YgdGhlIHRhcmdldCB0YXNrXG4gICAgICogQHBhcmFtIHByb2Nlc3NJbnN0YW5jZUlkIElEIG9mIHByb2Nlc3NJbnN0YW5jZVxuICAgICAqIEBwYXJhbSBmb3JtSWQgSUQgb2YgdGhlIGZvcm0gdG8gY29tcGxldGVcbiAgICAgKiBAcGFyYW0gZm9ybVZhbHVlcyBGb3JtIHZhbHVlcyBvYmplY3RcbiAgICAgKiBAcGFyYW0gb3V0Y29tZSBGb3JtIG91dGNvbWVcbiAgICAgKiBAcGFyYW0gdmVyc2lvbiBvZiB0aGUgZm9ybVxuICAgICAqIEByZXR1cm5zIFVwZGF0ZWQgdGFzayBkZXRhaWxzXG4gICAgICovXG4gICAgY29tcGxldGVUYXNrRm9ybShcbiAgICAgICAgYXBwTmFtZTogc3RyaW5nLFxuICAgICAgICB0YXNrSWQ6IHN0cmluZyxcbiAgICAgICAgcHJvY2Vzc0luc3RhbmNlSWQ6IHN0cmluZyxcbiAgICAgICAgZm9ybUlkOiBzdHJpbmcsXG4gICAgICAgIGZvcm1WYWx1ZXM6IEZvcm1WYWx1ZXMsXG4gICAgICAgIG91dGNvbWU6IHN0cmluZyxcbiAgICAgICAgdmVyc2lvbjogbnVtYmVyXG4gICAgKTogT2JzZXJ2YWJsZTxUYXNrRGV0YWlsc0Nsb3VkTW9kZWw+IHtcbiAgICAgICAgY29uc3QgYXBpVXJsID0gYCR7dGhpcy5nZXRCYXNlUGF0aChhcHBOYW1lKX0vZm9ybS92MS9mb3Jtcy8ke2Zvcm1JZH0vc3VibWl0L3ZlcnNpb25zLyR7dmVyc2lvbn1gO1xuICAgICAgICBjb25zdCBjb21wbGV0ZUZvcm1SZXByZXNlbnRhdGlvbiA9IHtcbiAgICAgICAgICAgIHZhbHVlczogZm9ybVZhbHVlcyxcbiAgICAgICAgICAgIHRhc2tJZCxcbiAgICAgICAgICAgIHByb2Nlc3NJbnN0YW5jZUlkXG4gICAgICAgIH0gYXMgQ29tcGxldGVGb3JtUmVwcmVzZW50YXRpb247XG5cbiAgICAgICAgaWYgKG91dGNvbWUpIHtcbiAgICAgICAgICAgIGNvbXBsZXRlRm9ybVJlcHJlc2VudGF0aW9uLm91dGNvbWUgPSBvdXRjb21lO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucG9zdChhcGlVcmwsIGNvbXBsZXRlRm9ybVJlcHJlc2VudGF0aW9uKS5waXBlKG1hcCgocmVzOiBhbnkpID0+IHJlcy5lbnRyeSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgZGV0YWlscyBvZiBhIHRhc2tcbiAgICAgKlxuICAgICAqIEBwYXJhbSBhcHBOYW1lIE5hbWUgb2YgdGhlIGFwcFxuICAgICAqIEBwYXJhbSB0YXNrSWQgSUQgb2YgdGhlIHRhcmdldCB0YXNrXG4gICAgICogQHJldHVybnMgRGV0YWlscyBvZiB0aGUgdGFza1xuICAgICAqL1xuICAgIGdldFRhc2soYXBwTmFtZTogc3RyaW5nLCB0YXNrSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8VGFza0RldGFpbHNDbG91ZE1vZGVsPiB7XG4gICAgICAgIGNvbnN0IGFwaVVybCA9IGAke3RoaXMuZ2V0QmFzZVBhdGgoYXBwTmFtZSl9L3F1ZXJ5L3YxL3Rhc2tzLyR7dGFza0lkfWA7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KGFwaVVybCkucGlwZShtYXAoKHJlczogYW55KSA9PiByZXMuZW50cnkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB2YXJpYWJsZXMgb2YgYSB0YXNrLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFwcE5hbWUgTmFtZSBvZiB0aGUgYXBwXG4gICAgICogQHBhcmFtIHRhc2tJZCBJRCBvZiB0aGUgdGFyZ2V0IHRhc2tcbiAgICAgKiBAcmV0dXJucyBUYXNrIHZhcmlhYmxlc1xuICAgICAqL1xuICAgIGdldFRhc2tWYXJpYWJsZXMoYXBwTmFtZTogc3RyaW5nLCB0YXNrSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8VGFza1ZhcmlhYmxlQ2xvdWRbXT4ge1xuICAgICAgICBjb25zdCBhcGlVcmwgPSBgJHt0aGlzLmdldEJhc2VQYXRoKGFwcE5hbWUpfS9xdWVyeS92MS90YXNrcy8ke3Rhc2tJZH0vdmFyaWFibGVzYDtcbiAgICAgICAgbGV0IHNraXBDb3VudCA9IDA7XG4gICAgICAgIGNvbnN0IG1heEl0ZW1zID0gMTAwMDtcblxuICAgICAgICByZXR1cm4gdGhpcy5nZXQoYXBpVXJsLCB7IG1heEl0ZW1zLCBza2lwQ291bnQgfSkucGlwZShcbiAgICAgICAgICAgIGV4cGFuZCgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBza2lwQ291bnQgKz0gbWF4SXRlbXM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcy5saXN0LnBhZ2luYXRpb24uaGFzTW9yZUl0ZW1zXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5nZXQoYXBpVXJsLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1heEl0ZW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwQ291bnRcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICA6IEVNUFRZO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtYXAoKHJlczogYW55KSA9PiByZXMubGlzdC5lbnRyaWVzLm1hcCgodmFyaWFibGUpID0+IG5ldyBUYXNrVmFyaWFibGVDbG91ZCh2YXJpYWJsZS5lbnRyeSkpKSxcbiAgICAgICAgICAgIHJlZHVjZSgoYWNjLCByZXMpID0+IGFjYy5jb25jYXQocmVzKSwgW10pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIGZvcm0gZGVmaW5pdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhcHBOYW1lIE5hbWUgb2YgdGhlIGFwcFxuICAgICAqIEBwYXJhbSBmb3JtS2V5IGtleSBvZiB0aGUgdGFyZ2V0IHRhc2tcbiAgICAgKiBAcGFyYW0gdmVyc2lvbiBWZXJzaW9uIG9mIHRoZSBmb3JtXG4gICAgICogQHJldHVybnMgRm9ybSBkZWZpbml0aW9uXG4gICAgICovXG4gICAgZ2V0Rm9ybShhcHBOYW1lOiBzdHJpbmcsIGZvcm1LZXk6IHN0cmluZywgdmVyc2lvbj86IG51bWJlcik6IE9ic2VydmFibGU8Rm9ybUNvbnRlbnQ+IHtcbiAgICAgICAgbGV0IHVybCA9IGAke3RoaXMuZ2V0QmFzZVBhdGgoYXBwTmFtZSl9L2Zvcm0vdjEvZm9ybXMvJHtmb3JtS2V5fWA7XG5cbiAgICAgICAgaWYgKHZlcnNpb24pIHtcbiAgICAgICAgICAgIHVybCArPSBgL3ZlcnNpb25zLyR7dmVyc2lvbn1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KHVybCk7XG4gICAgfVxuXG4gICAgZ2V0UmVzdFdpZGdldERhdGEoZm9ybU5hbWU6IHN0cmluZywgd2lkZ2V0SWQ6IHN0cmluZywgYm9keTogYW55ID0ge30pOiBPYnNlcnZhYmxlPEZvcm1GaWVsZE9wdGlvbltdPiB7XG4gICAgICAgIGNvbnN0IGFwcE5hbWUgPSB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuZ2V0KCdhbGZyZXNjby1kZXBsb3llZC1hcHBzJylbMF0/Lm5hbWU7XG4gICAgICAgIGNvbnN0IGFwaVVybCA9IGAke3RoaXMuZ2V0QmFzZVBhdGgoYXBwTmFtZSl9L2Zvcm0vdjEvZm9ybXMvJHtmb3JtTmFtZX0vdmFsdWVzLyR7d2lkZ2V0SWR9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9zdChhcGlVcmwsIGJvZHkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhcnNlcyBKU09OIGRhdGEgdG8gY3JlYXRlIGEgY29ycmVzcG9uZGluZyBmb3JtLlxuICAgICAqXG4gICAgICogQHBhcmFtIGpzb24gSlNPTiBkYXRhIHRvIGNyZWF0ZSB0aGUgZm9ybVxuICAgICAqIEBwYXJhbSBkYXRhIFZhbHVlcyBmb3IgdGhlIGZvcm0ncyBmaWVsZHNcbiAgICAgKiBAcGFyYW0gcmVhZE9ubHkgVG9nZ2xlcyB3aGV0aGVyIG9yIG5vdCB0aGUgZm9ybSBzaG91bGQgYmUgcmVhZC1vbmx5XG4gICAgICogQHJldHVybnMgRm9ybSBjcmVhdGVkIGZyb20gdGhlIEpTT04gc3BlY2lmaWNhdGlvblxuICAgICAqL1xuICAgIHBhcnNlRm9ybShqc29uOiBhbnksIGRhdGE/OiBUYXNrVmFyaWFibGVDbG91ZFtdLCByZWFkT25seTogYm9vbGVhbiA9IGZhbHNlKTogRm9ybU1vZGVsIHtcbiAgICAgICAgaWYgKGpzb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGZsYXR0ZW5Gb3JtID0ge1xuICAgICAgICAgICAgICAgIC4uLmpzb24uZm9ybVJlcHJlc2VudGF0aW9uLFxuICAgICAgICAgICAgICAgIC4uLmpzb24uZm9ybVJlcHJlc2VudGF0aW9uLmZvcm1EZWZpbml0aW9uXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZGVsZXRlIGZsYXR0ZW5Gb3JtLmZvcm1EZWZpbml0aW9uO1xuXG4gICAgICAgICAgICBjb25zdCBmb3JtVmFsdWVzOiBGb3JtVmFsdWVzID0ge307XG4gICAgICAgICAgICAoZGF0YSB8fCBbXSkuZm9yRWFjaCgodmFyaWFibGUpID0+IHtcbiAgICAgICAgICAgICAgICBmb3JtVmFsdWVzW3ZhcmlhYmxlLm5hbWVdID0gdmFyaWFibGUudmFsdWU7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBGb3JtTW9kZWwoZmxhdHRlbkZvcm0sIGZvcm1WYWx1ZXMsIHJlYWRPbmx5LCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcy5maWVsZFZhbGlkYXRvcnMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGdldFByZXZpZXdTdGF0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbiJdfQ==