@alfresco/adf-content-services 8.1.0-15902121227 → 8.1.0-15972188736

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 (408) hide show
  1. package/fesm2022/adf-content-services.mjs +808 -829
  2. package/fesm2022/adf-content-services.mjs.map +1 -1
  3. package/lib/new-version-uploader/new-version-uploader.dialog.scss +1 -1
  4. package/lib/upload/components/base-upload/upload-base.d.ts +1 -1
  5. package/package.json +4 -6
  6. package/esm2022/adf-content-services.mjs +0 -5
  7. package/esm2022/lib/agent/index.mjs +0 -18
  8. package/esm2022/lib/agent/public-api.mjs +0 -18
  9. package/esm2022/lib/agent/services/agent.service.mjs +0 -60
  10. package/esm2022/lib/alfresco-icon/alfresco-icon.component.mjs +0 -27
  11. package/esm2022/lib/api-factories/alfresco-api-no-auth.service.mjs +0 -42
  12. package/esm2022/lib/api-factories/alfresco-api-v2-loader.service.mjs +0 -77
  13. package/esm2022/lib/api-factories/index.mjs +0 -18
  14. package/esm2022/lib/api-factories/public-api.mjs +0 -19
  15. package/esm2022/lib/aspect-list/aspect-list-dialog-data.interface.mjs +0 -18
  16. package/esm2022/lib/aspect-list/aspect-list-dialog.component.mjs +0 -78
  17. package/esm2022/lib/aspect-list/aspect-list.component.mjs +0 -140
  18. package/esm2022/lib/aspect-list/aspect-list.module.mjs +0 -35
  19. package/esm2022/lib/aspect-list/index.mjs +0 -18
  20. package/esm2022/lib/aspect-list/public-api.mjs +0 -24
  21. package/esm2022/lib/aspect-list/services/aspect-list.service.mjs +0 -83
  22. package/esm2022/lib/aspect-list/services/dialog-aspect-list.service.mjs +0 -86
  23. package/esm2022/lib/aspect-list/services/node-aspect.service.mjs +0 -52
  24. package/esm2022/lib/auth-loader/content-auth-loader-factory.mjs +0 -26
  25. package/esm2022/lib/auth-loader/content-auth-loader.service.mjs +0 -42
  26. package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +0 -167
  27. package/esm2022/lib/breadcrumb/breadcrumb.module.mjs +0 -35
  28. package/esm2022/lib/breadcrumb/dropdown-breadcrumb.component.mjs +0 -66
  29. package/esm2022/lib/breadcrumb/index.mjs +0 -18
  30. package/esm2022/lib/breadcrumb/public-api.mjs +0 -20
  31. package/esm2022/lib/category/categories-management/categories-management-mode.mjs +0 -22
  32. package/esm2022/lib/category/categories-management/categories-management.component.mjs +0 -309
  33. package/esm2022/lib/category/category.module.mjs +0 -33
  34. package/esm2022/lib/category/index.mjs +0 -18
  35. package/esm2022/lib/category/models/category-node.interface.mjs +0 -18
  36. package/esm2022/lib/category/public-api.mjs +0 -23
  37. package/esm2022/lib/category/services/category-tree-datasource.service.mjs +0 -80
  38. package/esm2022/lib/category/services/category.service.mjs +0 -159
  39. package/esm2022/lib/common/events/file.event.mjs +0 -46
  40. package/esm2022/lib/common/index.mjs +0 -18
  41. package/esm2022/lib/common/interfaces/saved-search.interface.mjs +0 -18
  42. package/esm2022/lib/common/interfaces/search-configuration.interface.mjs +0 -18
  43. package/esm2022/lib/common/mocks/ecm-user.service.mock.mjs +0 -37
  44. package/esm2022/lib/common/models/allowable-operations.enum.mjs +0 -30
  45. package/esm2022/lib/common/models/ecm-company.model.mjs +0 -19
  46. package/esm2022/lib/common/models/ecm-user.model.mjs +0 -45
  47. package/esm2022/lib/common/models/file.model.mjs +0 -53
  48. package/esm2022/lib/common/models/node-metadata.model.mjs +0 -23
  49. package/esm2022/lib/common/models/permissions.enum.mjs +0 -32
  50. package/esm2022/lib/common/public-api.mjs +0 -37
  51. package/esm2022/lib/common/services/card-view-content-update.service.mjs +0 -55
  52. package/esm2022/lib/common/services/content.service.mjs +0 -180
  53. package/esm2022/lib/common/services/discovery-api.service.mjs +0 -79
  54. package/esm2022/lib/common/services/favorites-api.service.mjs +0 -84
  55. package/esm2022/lib/common/services/nodes-api.service.mjs +0 -251
  56. package/esm2022/lib/common/services/people-content.service.mjs +0 -138
  57. package/esm2022/lib/common/services/rendition.service.mjs +0 -270
  58. package/esm2022/lib/common/services/saved-searches.service.mjs +0 -206
  59. package/esm2022/lib/common/services/sites.service.mjs +0 -243
  60. package/esm2022/lib/common/services/upload.service.mjs +0 -391
  61. package/esm2022/lib/content-metadata/components/content-metadata/content-metadata-header.component.mjs +0 -55
  62. package/esm2022/lib/content-metadata/components/content-metadata/content-metadata.component.mjs +0 -491
  63. package/esm2022/lib/content-metadata/components/content-metadata-card/content-metadata-card.component.mjs +0 -129
  64. package/esm2022/lib/content-metadata/content-metadata.module.mjs +0 -36
  65. package/esm2022/lib/content-metadata/index.mjs +0 -18
  66. package/esm2022/lib/content-metadata/interfaces/aspect-oriented-config.interface.mjs +0 -18
  67. package/esm2022/lib/content-metadata/interfaces/card-view-group.interface.mjs +0 -18
  68. package/esm2022/lib/content-metadata/interfaces/content-metadata-config.interface.mjs +0 -18
  69. package/esm2022/lib/content-metadata/interfaces/content-metadata-custom-panel.interface.mjs +0 -18
  70. package/esm2022/lib/content-metadata/interfaces/content-metadata-panel.interface.mjs +0 -18
  71. package/esm2022/lib/content-metadata/interfaces/content-metadata.interfaces.mjs +0 -28
  72. package/esm2022/lib/content-metadata/interfaces/indifferent-config.interface.mjs +0 -18
  73. package/esm2022/lib/content-metadata/interfaces/layout-oriented-config.interface.mjs +0 -18
  74. package/esm2022/lib/content-metadata/interfaces/organised-property-group.interface.mjs +0 -18
  75. package/esm2022/lib/content-metadata/interfaces/preset-config.interface.mjs +0 -18
  76. package/esm2022/lib/content-metadata/interfaces/property-group.interface.mjs +0 -18
  77. package/esm2022/lib/content-metadata/interfaces/property.interface.mjs +0 -18
  78. package/esm2022/lib/content-metadata/public-api.mjs +0 -31
  79. package/esm2022/lib/content-metadata/services/basic-properties.service.mjs +0 -107
  80. package/esm2022/lib/content-metadata/services/config/aspect-oriented-config.service.mjs +0 -106
  81. package/esm2022/lib/content-metadata/services/config/content-metadata-config.factory.mjs +0 -76
  82. package/esm2022/lib/content-metadata/services/config/indifferent-config.service.mjs +0 -40
  83. package/esm2022/lib/content-metadata/services/config/layout-oriented-config.service.mjs +0 -108
  84. package/esm2022/lib/content-metadata/services/config/property-group-reader.mjs +0 -33
  85. package/esm2022/lib/content-metadata/services/content-metadata.service.mjs +0 -99
  86. package/esm2022/lib/content-metadata/services/content-type-property.service.mjs +0 -134
  87. package/esm2022/lib/content-metadata/services/property-descriptors.service.mjs +0 -52
  88. package/esm2022/lib/content-metadata/services/property-groups-translator.service.mjs +0 -169
  89. package/esm2022/lib/content-node-selector/content-node-dialog.service.mjs +0 -256
  90. package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.component.mjs +0 -618
  91. package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.service.mjs +0 -66
  92. package/esm2022/lib/content-node-selector/content-node-selector.component-data.interface.mjs +0 -18
  93. package/esm2022/lib/content-node-selector/content-node-selector.component.mjs +0 -206
  94. package/esm2022/lib/content-node-selector/content-node-selector.module.mjs +0 -50
  95. package/esm2022/lib/content-node-selector/index.mjs +0 -18
  96. package/esm2022/lib/content-node-selector/name-location-cell/name-location-cell.component.mjs +0 -48
  97. package/esm2022/lib/content-node-selector/public-api.mjs +0 -25
  98. package/esm2022/lib/content-node-selector/site-dropdown/sites-dropdown.component.mjs +0 -168
  99. package/esm2022/lib/content-node-share/content-node-share.dialog.mjs +0 -288
  100. package/esm2022/lib/content-node-share/content-node-share.directive.mjs +0 -102
  101. package/esm2022/lib/content-node-share/content-node-share.module.mjs +0 -35
  102. package/esm2022/lib/content-node-share/content-node-share.settings.mjs +0 -18
  103. package/esm2022/lib/content-node-share/index.mjs +0 -18
  104. package/esm2022/lib/content-node-share/public-api.mjs +0 -22
  105. package/esm2022/lib/content-node-share/services/shared-links-api.service.mjs +0 -83
  106. package/esm2022/lib/content-type/content-type-dialog.component.mjs +0 -58
  107. package/esm2022/lib/content-type/content-type-metadata.interface.mjs +0 -18
  108. package/esm2022/lib/content-type/content-type.service.mjs +0 -52
  109. package/esm2022/lib/content-type/index.mjs +0 -20
  110. package/esm2022/lib/content.module.mjs +0 -277
  111. package/esm2022/lib/dialogs/category-selector/category-selector.dialog.mjs +0 -52
  112. package/esm2022/lib/dialogs/dialog.module.mjs +0 -52
  113. package/esm2022/lib/dialogs/download-zip/download-zip.dialog.mjs +0 -111
  114. package/esm2022/lib/dialogs/download-zip/download-zip.dialog.module.mjs +0 -38
  115. package/esm2022/lib/dialogs/download-zip/services/download-zip.service.mjs +0 -66
  116. package/esm2022/lib/dialogs/folder/folder-name.validators.mjs +0 -44
  117. package/esm2022/lib/dialogs/folder/folder.dialog.mjs +0 -147
  118. package/esm2022/lib/dialogs/index.mjs +0 -18
  119. package/esm2022/lib/dialogs/library/library.dialog.mjs +0 -225
  120. package/esm2022/lib/dialogs/node-lock/node-lock.dialog.mjs +0 -116
  121. package/esm2022/lib/dialogs/public-api.mjs +0 -25
  122. package/esm2022/lib/directives/auto-focus.directive.mjs +0 -38
  123. package/esm2022/lib/directives/check-allowable-operation.directive.mjs +0 -126
  124. package/esm2022/lib/directives/content-directive.module.mjs +0 -75
  125. package/esm2022/lib/directives/index.mjs +0 -18
  126. package/esm2022/lib/directives/library-favorite.directive.mjs +0 -119
  127. package/esm2022/lib/directives/library-membership.directive.mjs +0 -202
  128. package/esm2022/lib/directives/node-counter.directive.mjs +0 -60
  129. package/esm2022/lib/directives/node-delete.directive.mjs +0 -177
  130. package/esm2022/lib/directives/node-download.directive.mjs +0 -138
  131. package/esm2022/lib/directives/node-favorite.directive.mjs +0 -193
  132. package/esm2022/lib/directives/node-lock.directive.mjs +0 -57
  133. package/esm2022/lib/directives/node-restore.directive.mjs +0 -218
  134. package/esm2022/lib/directives/public-api.mjs +0 -28
  135. package/esm2022/lib/document-list/components/content-action/content-action-list.component.mjs +0 -60
  136. package/esm2022/lib/document-list/components/content-action/content-action.component.mjs +0 -196
  137. package/esm2022/lib/document-list/components/document-list.component.mjs +0 -964
  138. package/esm2022/lib/document-list/components/document-list.token.mjs +0 -21
  139. package/esm2022/lib/document-list/components/file-auto-download/file-auto-download.component.mjs +0 -43
  140. package/esm2022/lib/document-list/components/filter-header/filter-header.component.mjs +0 -107
  141. package/esm2022/lib/document-list/components/library-name-column/library-name-column.component.mjs +0 -133
  142. package/esm2022/lib/document-list/components/library-role-column/library-role-column.component.mjs +0 -93
  143. package/esm2022/lib/document-list/components/library-status-column/library-status-column.component.mjs +0 -88
  144. package/esm2022/lib/document-list/components/name-column/name-column.component.mjs +0 -120
  145. package/esm2022/lib/document-list/components/node.event.mjs +0 -30
  146. package/esm2022/lib/document-list/components/trashcan-name-column/trashcan-name-column.component.mjs +0 -83
  147. package/esm2022/lib/document-list/data/image-resolver.model.mjs +0 -18
  148. package/esm2022/lib/document-list/data/row-filter.model.mjs +0 -18
  149. package/esm2022/lib/document-list/data/share-data-row.model.mjs +0 -102
  150. package/esm2022/lib/document-list/data/share-datatable-adapter.mjs +0 -258
  151. package/esm2022/lib/document-list/document-list.module.mjs +0 -79
  152. package/esm2022/lib/document-list/index.mjs +0 -18
  153. package/esm2022/lib/document-list/interfaces/document-list-loader.interface.mjs +0 -18
  154. package/esm2022/lib/document-list/models/content-action.model.mjs +0 -59
  155. package/esm2022/lib/document-list/models/document-folder.model.mjs +0 -23
  156. package/esm2022/lib/document-list/models/node-action.enum.mjs +0 -27
  157. package/esm2022/lib/document-list/models/permissions-style.model.mjs +0 -27
  158. package/esm2022/lib/document-list/models/permissions.model.mjs +0 -26
  159. package/esm2022/lib/document-list/models/preset.model.mjs +0 -257
  160. package/esm2022/lib/document-list/public-api.mjs +0 -47
  161. package/esm2022/lib/document-list/services/custom-resources.service.mjs +0 -378
  162. package/esm2022/lib/document-list/services/document-actions.service.mjs +0 -142
  163. package/esm2022/lib/document-list/services/document-list.service.mjs +0 -175
  164. package/esm2022/lib/document-list/services/folder-actions.service.mjs +0 -137
  165. package/esm2022/lib/document-list/services/lock.service.mjs +0 -72
  166. package/esm2022/lib/document-list/services/node-actions.service.mjs +0 -122
  167. package/esm2022/lib/group/index.mjs +0 -18
  168. package/esm2022/lib/group/public-api.mjs +0 -18
  169. package/esm2022/lib/group/services/group.service.mjs +0 -84
  170. package/esm2022/lib/infinite-scroll-datasource/index.mjs +0 -18
  171. package/esm2022/lib/infinite-scroll-datasource/infinite-scroll-datasource.mjs +0 -69
  172. package/esm2022/lib/infinite-scroll-datasource/public-api.mjs +0 -18
  173. package/esm2022/lib/interfaces/base-card-view-content-update.interface.mjs +0 -18
  174. package/esm2022/lib/interfaces/index.mjs +0 -18
  175. package/esm2022/lib/interfaces/library-entity.interface.mjs +0 -18
  176. package/esm2022/lib/interfaces/library-membership-error-event.interface.mjs +0 -18
  177. package/esm2022/lib/interfaces/library-membership-toggle-event.interface.mjs +0 -18
  178. package/esm2022/lib/interfaces/node-allowable-operation-subject.interface.mjs +0 -18
  179. package/esm2022/lib/interfaces/public-api.mjs +0 -23
  180. package/esm2022/lib/interfaces/restore-message-model.interface.mjs +0 -19
  181. package/esm2022/lib/legal-hold/index.mjs +0 -18
  182. package/esm2022/lib/legal-hold/public-api.mjs +0 -18
  183. package/esm2022/lib/legal-hold/services/legal-hold.service.mjs +0 -136
  184. package/esm2022/lib/material.module.mjs +0 -183
  185. package/esm2022/lib/mock/alfresco-api.service.mock.mjs +0 -43
  186. package/esm2022/lib/mock/date-range-search-filter.mock.mjs +0 -65
  187. package/esm2022/lib/mock/document-library.model.mock.mjs +0 -84
  188. package/esm2022/lib/mock/document-list.component.mock.mjs +0 -364
  189. package/esm2022/lib/mock/index.mjs +0 -18
  190. package/esm2022/lib/mock/new-version-uploader.service.mock.mjs +0 -161
  191. package/esm2022/lib/mock/public-api.mjs +0 -27
  192. package/esm2022/lib/mock/search-filter-mock.mjs +0 -637
  193. package/esm2022/lib/mock/search-query.mock.mjs +0 -40
  194. package/esm2022/lib/mock/search.component.mock.mjs +0 -165
  195. package/esm2022/lib/mock/search.service.mock.mjs +0 -61
  196. package/esm2022/lib/mock/sites-dropdown.component.mock.mjs +0 -281
  197. package/esm2022/lib/new-version-uploader/index.mjs +0 -18
  198. package/esm2022/lib/new-version-uploader/models/index.mjs +0 -18
  199. package/esm2022/lib/new-version-uploader/models/new-version-uploader.model.mjs +0 -24
  200. package/esm2022/lib/new-version-uploader/new-version-uploader.dialog.mjs +0 -75
  201. package/esm2022/lib/new-version-uploader/new-version-uploader.module.mjs +0 -33
  202. package/esm2022/lib/new-version-uploader/new-version-uploader.service.mjs +0 -103
  203. package/esm2022/lib/new-version-uploader/public-api.mjs +0 -21
  204. package/esm2022/lib/node-comments/index.mjs +0 -18
  205. package/esm2022/lib/node-comments/node-comments.component.mjs +0 -44
  206. package/esm2022/lib/node-comments/node-comments.module.mjs +0 -33
  207. package/esm2022/lib/node-comments/public-api.mjs +0 -20
  208. package/esm2022/lib/node-comments/services/node-comments.service.mjs +0 -85
  209. package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog-data.interface.mjs +0 -18
  210. package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog.component.mjs +0 -124
  211. package/esm2022/lib/permission-manager/components/add-permission/add-permission-panel.component.mjs +0 -103
  212. package/esm2022/lib/permission-manager/components/add-permission/add-permission.component.mjs +0 -70
  213. package/esm2022/lib/permission-manager/components/add-permission/search-config-permission.service.mjs +0 -45
  214. package/esm2022/lib/permission-manager/components/inherited-button.directive.mjs +0 -67
  215. package/esm2022/lib/permission-manager/components/node-path-column/node-path-column.component.mjs +0 -56
  216. package/esm2022/lib/permission-manager/components/permission-container/permission-container.component.mjs +0 -103
  217. package/esm2022/lib/permission-manager/components/permission-list/permission-list.component.mjs +0 -88
  218. package/esm2022/lib/permission-manager/components/permission-list/permission-list.service.mjs +0 -219
  219. package/esm2022/lib/permission-manager/components/pop-over.directive.mjs +0 -134
  220. package/esm2022/lib/permission-manager/components/user-icon-column/user-icon-column.component.mjs +0 -88
  221. package/esm2022/lib/permission-manager/components/user-name-column/user-name-column.component.mjs +0 -82
  222. package/esm2022/lib/permission-manager/components/user-role-column/user-role-column.component.mjs +0 -112
  223. package/esm2022/lib/permission-manager/index.mjs +0 -18
  224. package/esm2022/lib/permission-manager/models/member.model.mjs +0 -59
  225. package/esm2022/lib/permission-manager/models/permission.model.mjs +0 -29
  226. package/esm2022/lib/permission-manager/models/role.model.mjs +0 -18
  227. package/esm2022/lib/permission-manager/permission-manager.module.mjs +0 -84
  228. package/esm2022/lib/permission-manager/public-api.mjs +0 -36
  229. package/esm2022/lib/permission-manager/services/node-permission-dialog.service.mjs +0 -78
  230. package/esm2022/lib/permission-manager/services/node-permission.service.mjs +0 -299
  231. package/esm2022/lib/pipes/content-pipe.module.mjs +0 -37
  232. package/esm2022/lib/pipes/index.mjs +0 -18
  233. package/esm2022/lib/pipes/node-name-tooltip.pipe.mjs +0 -69
  234. package/esm2022/lib/pipes/public-api.mjs +0 -19
  235. package/esm2022/lib/prediction/index.mjs +0 -18
  236. package/esm2022/lib/prediction/public-api.mjs +0 -18
  237. package/esm2022/lib/prediction/services/index.mjs +0 -18
  238. package/esm2022/lib/prediction/services/prediction.service.mjs +0 -57
  239. package/esm2022/lib/search/components/empty-search-result.component.mjs +0 -27
  240. package/esm2022/lib/search/components/index.mjs +0 -43
  241. package/esm2022/lib/search/components/reset-search.directive.mjs +0 -41
  242. package/esm2022/lib/search/components/search-check-list/index.mjs +0 -18
  243. package/esm2022/lib/search/components/search-check-list/search-check-list.component.mjs +0 -159
  244. package/esm2022/lib/search/components/search-chip-autocomplete-input/index.mjs +0 -18
  245. package/esm2022/lib/search/components/search-chip-autocomplete-input/search-chip-autocomplete-input.component.mjs +0 -170
  246. package/esm2022/lib/search/components/search-chip-list/search-chip-list.component.mjs +0 -47
  247. package/esm2022/lib/search/components/search-control.component.mjs +0 -181
  248. package/esm2022/lib/search/components/search-date-range-tabbed/index.mjs +0 -22
  249. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/date-range-type.mjs +0 -23
  250. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/in-last-date-type.mjs +0 -23
  251. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.component.mjs +0 -197
  252. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.mjs +0 -18
  253. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range-tabbed.component.mjs +0 -201
  254. package/esm2022/lib/search/components/search-datetime-range/index.mjs +0 -18
  255. package/esm2022/lib/search/components/search-datetime-range/search-datetime-range.component.mjs +0 -224
  256. package/esm2022/lib/search/components/search-facet-field/index.mjs +0 -18
  257. package/esm2022/lib/search/components/search-facet-field/search-facet-field.component.mjs +0 -133
  258. package/esm2022/lib/search/components/search-filter/index.mjs +0 -19
  259. package/esm2022/lib/search/components/search-filter/search-filter-card/search-filter-card.component.mjs +0 -46
  260. package/esm2022/lib/search/components/search-filter/search-filter.component.mjs +0 -81
  261. package/esm2022/lib/search/components/search-filter-autocomplete-chips/index.mjs +0 -18
  262. package/esm2022/lib/search/components/search-filter-autocomplete-chips/search-filter-autocomplete-chips.component.mjs +0 -155
  263. package/esm2022/lib/search/components/search-filter-chips/index.mjs +0 -23
  264. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip/search-facet-chip.component.mjs +0 -105
  265. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-chip-tabbed.component.mjs +0 -110
  266. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-tabbed-content.component.mjs +0 -129
  267. package/esm2022/lib/search/components/search-filter-chips/search-filter-chips.component.mjs +0 -64
  268. package/esm2022/lib/search/components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component.mjs +0 -44
  269. package/esm2022/lib/search/components/search-filter-chips/search-widget-chip/search-widget-chip.component.mjs +0 -110
  270. package/esm2022/lib/search/components/search-filter-container/index.mjs +0 -18
  271. package/esm2022/lib/search/components/search-filter-container/search-filter-container.component.mjs +0 -123
  272. package/esm2022/lib/search/components/search-filter-tabbed/index.mjs +0 -19
  273. package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tab.directive.mjs +0 -36
  274. package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tabbed.component.mjs +0 -64
  275. package/esm2022/lib/search/components/search-form/index.mjs +0 -18
  276. package/esm2022/lib/search/components/search-form/search-form.component.mjs +0 -53
  277. package/esm2022/lib/search/components/search-input/index.mjs +0 -18
  278. package/esm2022/lib/search/components/search-input/search-input.component.mjs +0 -109
  279. package/esm2022/lib/search/components/search-logical-filter/index.mjs +0 -18
  280. package/esm2022/lib/search/components/search-logical-filter/search-logical-filter.component.mjs +0 -164
  281. package/esm2022/lib/search/components/search-number-range/index.mjs +0 -18
  282. package/esm2022/lib/search/components/search-number-range/search-number-range.component.mjs +0 -155
  283. package/esm2022/lib/search/components/search-panel/index.mjs +0 -18
  284. package/esm2022/lib/search/components/search-panel/search-panel.component.mjs +0 -44
  285. package/esm2022/lib/search/components/search-properties/file-size-condition.mjs +0 -18
  286. package/esm2022/lib/search/components/search-properties/file-size-operator.enum.mjs +0 -23
  287. package/esm2022/lib/search/components/search-properties/file-size-unit.enum.mjs +0 -26
  288. package/esm2022/lib/search/components/search-properties/index.mjs +0 -22
  289. package/esm2022/lib/search/components/search-properties/search-properties.component.mjs +0 -244
  290. package/esm2022/lib/search/components/search-properties/search-properties.mjs +0 -18
  291. package/esm2022/lib/search/components/search-radio/index.mjs +0 -18
  292. package/esm2022/lib/search/components/search-radio/search-radio.component.mjs +0 -146
  293. package/esm2022/lib/search/components/search-slider/index.mjs +0 -18
  294. package/esm2022/lib/search/components/search-slider/search-slider.component.mjs +0 -120
  295. package/esm2022/lib/search/components/search-sorting-picker/index.mjs +0 -18
  296. package/esm2022/lib/search/components/search-sorting-picker/search-sorting-picker.component.mjs +0 -77
  297. package/esm2022/lib/search/components/search-text/index.mjs +0 -18
  298. package/esm2022/lib/search/components/search-text/search-text.component.mjs +0 -135
  299. package/esm2022/lib/search/components/search-widget-container/index.mjs +0 -18
  300. package/esm2022/lib/search/components/search-widget-container/search-widget-container.component.mjs +0 -113
  301. package/esm2022/lib/search/components/search.component.mjs +0 -153
  302. package/esm2022/lib/search/forms/index.mjs +0 -19
  303. package/esm2022/lib/search/forms/live-error-state-matcher.mjs +0 -23
  304. package/esm2022/lib/search/forms/search-term-validator.mjs +0 -26
  305. package/esm2022/lib/search/index.mjs +0 -18
  306. package/esm2022/lib/search/mocks/index.mjs +0 -18
  307. package/esm2022/lib/search/mocks/search.service.mock.mjs +0 -56
  308. package/esm2022/lib/search/models/autocomplete-option.interface.mjs +0 -22
  309. package/esm2022/lib/search/models/facet-field-bucket.interface.mjs +0 -18
  310. package/esm2022/lib/search/models/facet-field.interface.mjs +0 -29
  311. package/esm2022/lib/search/models/facet-query.interface.mjs +0 -18
  312. package/esm2022/lib/search/models/facet-widget.interface.mjs +0 -18
  313. package/esm2022/lib/search/models/filter-query.interface.mjs +0 -18
  314. package/esm2022/lib/search/models/filter-search.interface.mjs +0 -18
  315. package/esm2022/lib/search/models/index.mjs +0 -34
  316. package/esm2022/lib/search/models/response-facet-query-list.model.mjs +0 -31
  317. package/esm2022/lib/search/models/search-category.interface.mjs +0 -18
  318. package/esm2022/lib/search/models/search-configuration.interface.mjs +0 -18
  319. package/esm2022/lib/search/models/search-filter-list.model.mjs +0 -148
  320. package/esm2022/lib/search/models/search-form.interface.mjs +0 -18
  321. package/esm2022/lib/search/models/search-range.interface.mjs +0 -18
  322. package/esm2022/lib/search/models/search-sorting-definition.interface.mjs +0 -18
  323. package/esm2022/lib/search/models/search-widget-settings.interface.mjs +0 -18
  324. package/esm2022/lib/search/models/search-widget.interface.mjs +0 -18
  325. package/esm2022/lib/search/models/tabbed-facet-field.interface.mjs +0 -18
  326. package/esm2022/lib/search/public-api.mjs +0 -24
  327. package/esm2022/lib/search/search-configuration.token.mjs +0 -19
  328. package/esm2022/lib/search/search.module.mjs +0 -192
  329. package/esm2022/lib/search/services/base-query-builder.service.mjs +0 -509
  330. package/esm2022/lib/search/services/index.mjs +0 -24
  331. package/esm2022/lib/search/services/search-configuration.service.mjs +0 -50
  332. package/esm2022/lib/search/services/search-facet-filters.service.mjs +0 -374
  333. package/esm2022/lib/search/services/search-filter.service.mjs +0 -56
  334. package/esm2022/lib/search/services/search-header-query-builder.service.mjs +0 -136
  335. package/esm2022/lib/search/services/search-query-builder.service.mjs +0 -48
  336. package/esm2022/lib/search/services/search.service.mjs +0 -89
  337. package/esm2022/lib/search-ai/index.mjs +0 -18
  338. package/esm2022/lib/search-ai/models/search-ai-input-state.mjs +0 -18
  339. package/esm2022/lib/search-ai/public-api.mjs +0 -19
  340. package/esm2022/lib/search-ai/services/search-ai.service.mjs +0 -103
  341. package/esm2022/lib/security/index.mjs +0 -18
  342. package/esm2022/lib/security/public-api.mjs +0 -18
  343. package/esm2022/lib/security/services/models/security-controls-group-response.interface.mjs +0 -18
  344. package/esm2022/lib/security/services/models/security-controls-mark-response.interface.mjs +0 -18
  345. package/esm2022/lib/security/services/security-controls-groups-marks-security.service.mjs +0 -274
  346. package/esm2022/lib/security-options-loader/security-options-loader.service.mjs +0 -43
  347. package/esm2022/lib/services/alfresco-api.interface.mjs +0 -18
  348. package/esm2022/lib/services/alfresco-api.service.mjs +0 -120
  349. package/esm2022/lib/services/index.mjs +0 -18
  350. package/esm2022/lib/services/public-api.mjs +0 -18
  351. package/esm2022/lib/tag/index.mjs +0 -18
  352. package/esm2022/lib/tag/public-api.mjs +0 -24
  353. package/esm2022/lib/tag/services/tag.service.mjs +0 -171
  354. package/esm2022/lib/tag/tag-actions/tag-actions.component.mjs +0 -115
  355. package/esm2022/lib/tag/tag-list/tag-list.component.mjs +0 -98
  356. package/esm2022/lib/tag/tag-node-list/tag-node-list.component.mjs +0 -80
  357. package/esm2022/lib/tag/tag.module.mjs +0 -37
  358. package/esm2022/lib/tag/tags-creator/tags-creator-mode.mjs +0 -27
  359. package/esm2022/lib/tag/tags-creator/tags-creator.component.mjs +0 -371
  360. package/esm2022/lib/testing/content.testing.module.mjs +0 -56
  361. package/esm2022/lib/tree/components/tree.component.mjs +0 -313
  362. package/esm2022/lib/tree/index.mjs +0 -18
  363. package/esm2022/lib/tree/models/tree-context-menu-result.interface.mjs +0 -18
  364. package/esm2022/lib/tree/models/tree-node.interface.mjs +0 -22
  365. package/esm2022/lib/tree/models/tree-response.interface.mjs +0 -18
  366. package/esm2022/lib/tree/public-api.mjs +0 -23
  367. package/esm2022/lib/tree/services/tree.service.mjs +0 -134
  368. package/esm2022/lib/tree/tree.module.mjs +0 -33
  369. package/esm2022/lib/tree-view/components/tree-view.component.mjs +0 -76
  370. package/esm2022/lib/tree-view/data/tree-view-datasource.mjs +0 -99
  371. package/esm2022/lib/tree-view/index.mjs +0 -18
  372. package/esm2022/lib/tree-view/models/tree-view.model.mjs +0 -28
  373. package/esm2022/lib/tree-view/public-api.mjs +0 -22
  374. package/esm2022/lib/tree-view/services/tree-view.service.mjs +0 -38
  375. package/esm2022/lib/tree-view/tree-view.module.mjs +0 -33
  376. package/esm2022/lib/upload/components/base-upload/upload-base.mjs +0 -176
  377. package/esm2022/lib/upload/components/file-uploading-dialog.component.mjs +0 -191
  378. package/esm2022/lib/upload/components/file-uploading-list-row.component.mjs +0 -93
  379. package/esm2022/lib/upload/components/file-uploading-list.component.mjs +0 -124
  380. package/esm2022/lib/upload/components/upload-button.component.mjs +0 -134
  381. package/esm2022/lib/upload/components/upload-drag-area.component.mjs +0 -112
  382. package/esm2022/lib/upload/components/upload-files.event.mjs +0 -41
  383. package/esm2022/lib/upload/components/upload-version-button.component.mjs +0 -55
  384. package/esm2022/lib/upload/directives/file-draggable.directive.mjs +0 -154
  385. package/esm2022/lib/upload/directives/toggle-icon.directive.mjs +0 -75
  386. package/esm2022/lib/upload/index.mjs +0 -18
  387. package/esm2022/lib/upload/pipes/file-upload-error.pipe.mjs +0 -39
  388. package/esm2022/lib/upload/public-api.mjs +0 -29
  389. package/esm2022/lib/upload/upload.module.mjs +0 -72
  390. package/esm2022/lib/version-compatibility/index.mjs +0 -18
  391. package/esm2022/lib/version-compatibility/public-api.mjs +0 -20
  392. package/esm2022/lib/version-compatibility/version-compatibility-factory.mjs +0 -26
  393. package/esm2022/lib/version-compatibility/version-compatibility.directive.mjs +0 -53
  394. package/esm2022/lib/version-compatibility/version-compatibility.module.mjs +0 -33
  395. package/esm2022/lib/version-compatibility/version-compatibility.service.mjs +0 -76
  396. package/esm2022/lib/version-manager/content-version.service.mjs +0 -53
  397. package/esm2022/lib/version-manager/index.mjs +0 -18
  398. package/esm2022/lib/version-manager/public-api.mjs +0 -23
  399. package/esm2022/lib/version-manager/version-comparison.component.mjs +0 -43
  400. package/esm2022/lib/version-manager/version-list.component.mjs +0 -216
  401. package/esm2022/lib/version-manager/version-manager.component.mjs +0 -146
  402. package/esm2022/lib/version-manager/version-manager.module.mjs +0 -48
  403. package/esm2022/lib/version-manager/version-upload.component.mjs +0 -155
  404. package/esm2022/lib/viewer/alfresco-viewer.module.mjs +0 -33
  405. package/esm2022/lib/viewer/components/alfresco-viewer.component.mjs +0 -409
  406. package/esm2022/lib/viewer/index.mjs +0 -18
  407. package/esm2022/lib/viewer/public-api.mjs +0 -19
  408. package/esm2022/public-api.mjs +0 -56
@@ -1,313 +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 { Component, EventEmitter, HostBinding, Input, Output, QueryList, TemplateRef, ViewChildren, ViewEncapsulation } from '@angular/core';
18
- import { BehaviorSubject, merge, Subject } from 'rxjs';
19
- import { TreeNodeType } from '../models/tree-node.interface';
20
- import { TreeService } from '../services/tree.service';
21
- import { ContextMenuDirective, IconComponent, UserPreferencesService } from '@alfresco/adf-core';
22
- import { SelectionModel } from '@angular/cdk/collections';
23
- import { MatCheckbox, MatCheckboxModule } from '@angular/material/checkbox';
24
- import { takeUntil } from 'rxjs/operators';
25
- import { CommonModule } from '@angular/common';
26
- import { TranslateModule } from '@ngx-translate/core';
27
- import { MatTreeModule } from '@angular/material/tree';
28
- import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
29
- import { MatButtonModule } from '@angular/material/button';
30
- import { MatMenuModule } from '@angular/material/menu';
31
- import { MatIconModule } from '@angular/material/icon';
32
- import * as i0 from "@angular/core";
33
- import * as i1 from "../services/tree.service";
34
- import * as i2 from "@alfresco/adf-core";
35
- import * as i3 from "@angular/common";
36
- import * as i4 from "@ngx-translate/core";
37
- import * as i5 from "@angular/material/tree";
38
- import * as i6 from "@angular/material/progress-spinner";
39
- import * as i7 from "@angular/material/button";
40
- import * as i8 from "@angular/material/checkbox";
41
- import * as i9 from "@angular/material/menu";
42
- import * as i10 from "@angular/material/icon";
43
- export class TreeComponent {
44
- constructor(treeService, userPreferenceService) {
45
- this.treeService = treeService;
46
- this.userPreferenceService = userPreferenceService;
47
- /** Variable defining if tree header should be sticky. By default set to false */
48
- this.stickyHeader = false;
49
- /** Variable defining if tree nodes should be selectable. By default set to false */
50
- this.selectableNodes = false;
51
- /** Icon shown when node has children and is collapsed. By default set to chevron_right */
52
- this.expandIcon = 'chevron_right';
53
- /** Icon shown when node is expanded. By default set to expand_more */
54
- this.collapseIcon = 'expand_more';
55
- /** Emitted when pagination has been changed */
56
- this.paginationChanged = new EventEmitter();
57
- /** Emitted when any context menu option is selected */
58
- this.contextMenuOptionSelected = new EventEmitter();
59
- this.loadingRootSource = new BehaviorSubject(false);
60
- this.contextMenuOptionsChanged$ = new Subject();
61
- this.treeNodesSelection = new SelectionModel(true, [], true, (node1, node2) => node1.id === node2.id);
62
- }
63
- set contextMenuSource(contextMenuSource) {
64
- this._contextMenuSource = contextMenuSource;
65
- }
66
- /** Array of context menu options which should be displayed for each row. */
67
- set contextMenuOptions(contextMenuOptions) {
68
- this.contextMenuOptionsChanged$.next();
69
- if (contextMenuOptions) {
70
- this._contextMenuOptions = contextMenuOptions.map((option) => {
71
- if (!option.subject) {
72
- option = {
73
- ...option,
74
- subject: new Subject()
75
- };
76
- }
77
- return option;
78
- });
79
- merge(...this.contextMenuOptions.map((option) => option.subject))
80
- .pipe(takeUntil(this.contextMenuOptionsChanged$))
81
- .subscribe((option) => {
82
- this.contextMenuOptionSelected.emit({
83
- row: this._contextMenuSource,
84
- contextMenuOption: option
85
- });
86
- });
87
- }
88
- else {
89
- this._contextMenuOptions = contextMenuOptions;
90
- }
91
- }
92
- get contextMenuOptions() {
93
- return this._contextMenuOptions;
94
- }
95
- ngOnInit() {
96
- this.loadingRoot$ = this.loadingRootSource.asObservable();
97
- this.refreshTree(0, this.userPreferenceService.paginationSize);
98
- this.treeNodesSelection.changed.subscribe((selectionChange) => {
99
- this.onTreeSelectionChange(selectionChange);
100
- });
101
- }
102
- ngOnDestroy() {
103
- this.contextMenuOptionsChanged$.next();
104
- this.contextMenuOptionsChanged$.complete();
105
- }
106
- /**
107
- * Checks if node is LoadMoreNode node
108
- *
109
- * @param _idx (unused)
110
- * @param node node to be checked
111
- * @returns `true` if there are more items to load, otherwise `false`
112
- */
113
- isLoadMoreNode(_idx, node) {
114
- return node.nodeType === TreeNodeType.LoadMoreNode;
115
- }
116
- /**
117
- * Checks if tree is empty
118
- *
119
- * @returns boolean
120
- */
121
- isEmpty() {
122
- return this.treeService.isEmpty();
123
- }
124
- /**
125
- * Returns action icon based on expanded/collapsed node state.
126
- *
127
- * @param node node to be checked
128
- * @returns collapse or expand icon
129
- */
130
- expandCollapseIconValue(node) {
131
- return this.treeService.treeControl.isExpanded(node) ? this.collapseIcon : this.expandIcon;
132
- }
133
- /**
134
- * Refreshes the tree, root nodes are reloaded, tree selection is cleared.
135
- *
136
- * @param skipCount Number of root nodes to skip.
137
- * @param maxItems Maximum number of nodes returned from Observable.
138
- * @param searchTerm Specifies if categories should be filtered out by name or not. If not specified then returns categories without filtering.
139
- */
140
- refreshTree(skipCount, maxItems, searchTerm) {
141
- this.loadingRootSource.next(true);
142
- this.treeNodesSelection.clear();
143
- this.treeService.getSubNodes('-root-', skipCount, maxItems, searchTerm).subscribe((response) => {
144
- this.treeService.treeNodes = response.entries;
145
- this.treeNodesSelection.deselect(...response.entries);
146
- this.paginationChanged.emit(response.pagination);
147
- this.loadingRootSource.next(false);
148
- });
149
- }
150
- /**
151
- * Collapses or expanding the node based on its current state
152
- *
153
- * @param node node to be collapsed/expanded
154
- */
155
- expandCollapseNode(node) {
156
- if (node.hasChildren && !node.isLoading) {
157
- if (this.treeService.treeControl.isExpanded(node)) {
158
- this.treeService.collapseNode(node);
159
- }
160
- else {
161
- node.isLoading = true;
162
- this.treeService.getSubNodes(node.id, 0, this.userPreferenceService.paginationSize).subscribe((response) => {
163
- this.treeService.expandNode(node, response.entries);
164
- node.isLoading = false;
165
- if (this.treeNodesSelection.isSelected(node)) {
166
- //timeout used to update nodeCheckboxes query list after new nodes are added so they can be selected
167
- setTimeout(() => {
168
- this.treeNodesSelection.select(...response.entries);
169
- });
170
- }
171
- });
172
- }
173
- }
174
- }
175
- /**
176
- * Loads more subnode for a given parent node
177
- *
178
- * @param node parent node
179
- */
180
- loadMoreSubnodes(node) {
181
- node.isLoading = true;
182
- const parentNode = this.treeService.getParentNode(node.parentId);
183
- this.treeService.removeNode(node);
184
- const loadedChildren = this.treeService.getChildren(parentNode).length;
185
- this.treeService
186
- .getSubNodes(parentNode.id, loadedChildren, this.userPreferenceService.paginationSize)
187
- .subscribe((response) => {
188
- this.treeService.appendNodes(parentNode, response.entries);
189
- node.isLoading = false;
190
- if (this.treeNodesSelection.isSelected(parentNode)) {
191
- //timeout used to update nodeCheckboxes query list after new nodes are added so they can be selected
192
- setTimeout(() => {
193
- this.treeNodesSelection.select(...response.entries);
194
- });
195
- }
196
- });
197
- }
198
- /**
199
- * When node is selected it selects all its descendants
200
- *
201
- * @param node selected node
202
- */
203
- onNodeSelected(node) {
204
- this.treeNodesSelection.toggle(node);
205
- const descendants = this.treeService.treeControl.getDescendants(node).filter(this.isRegularNode);
206
- if (descendants.length > 0) {
207
- this.treeNodesSelection.isSelected(node)
208
- ? this.treeNodesSelection.select(...descendants)
209
- : this.treeNodesSelection.deselect(...descendants);
210
- }
211
- this.checkParentsSelection(node);
212
- }
213
- /**
214
- * Checks if all descendants of a node are selected
215
- *
216
- * @param node selected node
217
- * @returns boolean
218
- */
219
- descendantsAllSelected(node) {
220
- const descendants = this.treeService.treeControl.getDescendants(node).filter(this.isRegularNode);
221
- return descendants.length > 0 && descendants.every((descendant) => this.treeNodesSelection.isSelected(descendant));
222
- }
223
- /**
224
- * Checks if some descendants of a node are selected
225
- *
226
- * @param node selected node
227
- * @returns boolean
228
- */
229
- descendantsPartiallySelected(node) {
230
- const descendants = this.treeService.treeControl.getDescendants(node).filter(this.isRegularNode);
231
- return (descendants.length > 0 &&
232
- !this.descendantsAllSelected(node) &&
233
- descendants.some((descendant) => this.treeNodesSelection.isSelected(descendant)));
234
- }
235
- checkParentsSelection(node) {
236
- let parent = this.treeService.getParentNode(node.parentId);
237
- while (parent) {
238
- this.checkRootNodeSelection(parent);
239
- parent = this.treeService.getParentNode(parent.parentId);
240
- }
241
- }
242
- checkRootNodeSelection(node) {
243
- const nodeSelected = this.treeNodesSelection.isSelected(node);
244
- const descAllSelected = this.descendantsAllSelected(node);
245
- if (nodeSelected && !descAllSelected) {
246
- this.treeNodesSelection.deselect(node);
247
- }
248
- else if (!nodeSelected && descAllSelected) {
249
- this.treeNodesSelection.select(node);
250
- }
251
- }
252
- onTreeSelectionChange(selectionChange) {
253
- selectionChange.removed.forEach((unselectedNode) => {
254
- if (this.isRegularNode(unselectedNode)) {
255
- this.nodeCheckboxes.find((checkbox) => checkbox.id === unselectedNode.id).checked = false;
256
- }
257
- });
258
- selectionChange.added.forEach((selectedNode) => {
259
- if (this.isRegularNode(selectedNode)) {
260
- this.nodeCheckboxes.find((checkbox) => checkbox.id === selectedNode.id).checked = true;
261
- }
262
- });
263
- }
264
- isRegularNode(node) {
265
- return node.nodeType !== TreeNodeType.LoadMoreNode;
266
- }
267
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TreeComponent, deps: [{ token: i1.TreeService }, { token: i2.UserPreferencesService }], target: i0.ɵɵFactoryTarget.Component }); }
268
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TreeComponent, isStandalone: true, selector: "adf-tree", inputs: { emptyContentTemplate: "emptyContentTemplate", nodeActionsMenuTemplate: "nodeActionsMenuTemplate", stickyHeader: "stickyHeader", selectableNodes: "selectableNodes", displayName: "displayName", loadMoreSuffix: "loadMoreSuffix", expandIcon: "expandIcon", collapseIcon: "collapseIcon", contextMenuOptions: "contextMenuOptions" }, outputs: { paginationChanged: "paginationChanged", contextMenuOptionSelected: "contextMenuOptionSelected" }, host: { properties: { "class.adf-tree-sticky-header": "this.stickyHeader" }, classAttribute: "adf-tree" }, viewQueries: [{ propertyName: "nodeCheckboxes", predicate: MatCheckbox, descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"(loadingRoot$ | async) === false; else loadingSpinner\">\n <ng-container *ngIf=\"!this.isEmpty(); else emptyContent\">\n <div class=\"adf-tree-row adf-tree-header\" *ngIf=\"displayName\">\n <div class=\"adf-tree-cell adf-tree-cell-header\" data-automation-id=\"tree-header-display-name\">\n <span class=\"adf-tree-cell-value\">\n {{ displayName | translate }}\n </span>\n </div>\n </div>\n <mat-tree\n class=\"adf-tree-body\"\n [dataSource]=\"treeService\"\n [treeControl]=\"treeService.treeControl\">\n <mat-tree-node\n class=\"adf-tree-load-more-row\"\n [attr.data-automation-id]=\"'loadMoreSubnodes_' + node.parentId\"\n *matTreeNodeDef=\"let node when isLoadMoreNode\"\n matTreeNodePadding>\n <div class=\"adf-tree-expand-collapse-container\">\n <button class=\"adf-tree-load-more-button\" mat-icon-button (click)=\"loadMoreSubnodes(node)\">\n <mat-progress-spinner\n color=\"primary\"\n mode=\"indeterminate\"\n [diameter]=\"24\"\n *ngIf=\"node.isLoading; else loadMoreIcon\" />\n <ng-template #loadMoreIcon>\n <adf-icon [value]=\"'chevron_right'\" />\n </ng-template>\n </button>\n </div>\n <div class=\"adf-tree-cell\">\n <span\n class=\"adf-tree-cell-value\"\n tabindex=\"0\"\n role=\"button\"\n (keyup.enter)=\"loadMoreSubnodes(node)\"\n (click)=\"loadMoreSubnodes(node)\">\n {{ 'ADF-TREE.LOAD-MORE-BUTTON' | translate: { name: loadMoreSuffix } }}\n </span>\n </div>\n </mat-tree-node>\n <mat-tree-node\n class=\"adf-tree-row\"\n [attr.data-automation-id]=\"'node_' + node.id\"\n *matTreeNodeDef=\"let node\"\n matTreeNodePadding\n [adf-context-menu]=\"contextMenuOptions\"\n [adf-context-menu-enabled]=\"!!contextMenuOptions\"\n (contextmenu)=\"contextMenuSource = node\">\n <div class=\"adf-tree-expand-collapse-container\">\n <button *ngIf=\"node.hasChildren\"\n class=\"adf-tree-expand-collapse-button\"\n (click)=\"expandCollapseNode(node)\"\n mat-icon-button>\n <mat-progress-spinner\n color=\"primary\"\n mode=\"indeterminate\"\n [diameter]=\"24\"\n *ngIf=\"node.isLoading; else expandCollapseIcon\" />\n <ng-template #expandCollapseIcon>\n <adf-icon [value]=\"expandCollapseIconValue(node)\" />\n </ng-template>\n </button>\n </div>\n <ng-container *ngIf=\"selectableNodes\">\n <mat-checkbox *ngIf=\"node.hasChildren; else noChildrenNodeCheckbox\"\n color=\"primary\"\n [id]=\"node.id\"\n [checked]=\"descendantsAllSelected(node)\"\n [indeterminate]=\"descendantsPartiallySelected(node)\"\n (change)=\"onNodeSelected(node)\"\n data-automation-id=\"has-children-node-checkbox\" />\n <ng-template #noChildrenNodeCheckbox>\n <mat-checkbox\n color=\"primary\"\n [id]=\"node.id\"\n [checked]=\"treeNodesSelection.isSelected(node)\"\n (change)=\"onNodeSelected(node)\"\n data-automation-id=\"no-children-node-checkbox\" />\n </ng-template>\n </ng-container>\n <div class=\"adf-tree-cell\">\n <span\n class=\"adf-tree-cell-value\"\n [class.adf-tree-clickable-cell-value]=\"node.hasChildren\"\n tabindex=\"0\"\n role=\"button\"\n (keyup.enter)=\"expandCollapseNode(node)\"\n (click)=\"expandCollapseNode(node)\">\n {{ node.nodeName }}\n </span>\n </div>\n <div class=\"adf-tree-actions\">\n <button mat-icon-button\n [matMenuTriggerFor]=\"menu\"\n [attr.id]=\"'action_menu_right_' + node.id\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <ng-template\n [ngTemplateOutlet]=\"nodeActionsMenuTemplate\"\n [ngTemplateOutletContext]=\"{ node: node }\" />\n </mat-menu>\n </div>\n </mat-tree-node>\n </mat-tree>\n </ng-container>\n</ng-container>\n\n<ng-template #emptyContent>\n <ng-template [ngTemplateOutlet]=\"emptyContentTemplate\" />\n</ng-template>\n\n<ng-template #loadingSpinner>\n <div class=\"adf-tree-loading-spinner-container\">\n <mat-progress-spinner\n color=\"primary\"\n mode=\"indeterminate\" />\n </div>\n</ng-template>\n", styles: [".adf-tree-sticky-header{display:flex;flex-direction:column;height:100%}.adf-tree-sticky-header mat-tree{overflow-y:scroll}.adf-tree-load-more-row .adf-tree-cell-value,.adf-tree-clickable-cell-value{cursor:pointer}.adf-tree-row,.adf-tree-load-more-row{transition:all .3s ease;display:flex;align-items:center;padding-left:15px;padding-right:15px;transition-property:background-color;border-bottom:1px solid var(--adf-theme-foreground-text-color-007);min-height:56px;-webkit-user-select:none;user-select:none}.adf-tree-row .adf-tree-expand-collapse-container,.adf-tree-load-more-row .adf-tree-expand-collapse-container{min-width:55px}.adf-tree-row:hover,.adf-tree-load-more-row:hover{background-color:var(--adf-theme-background-hover-color)}.adf-tree-row:hover .adf-tree-actions,.adf-tree-load-more-row:hover .adf-tree-actions{display:flex}.adf-tree-row:focus,.adf-tree-load-more-row:focus{background-color:var(--adf-theme-background-hover-color);outline-offset:-1px;outline:1px solid var(--theme-accent-color-a200)}.adf-tree-row .adf-tree-expand-collapse-button,.adf-tree-row .adf-tree-load-more-button,.adf-tree-load-more-row .adf-tree-expand-collapse-button,.adf-tree-load-more-row .adf-tree-load-more-button{display:flex;align-items:center;justify-content:center;margin-left:15px}.adf-tree-row .adf-tree-cell,.adf-tree-load-more-row .adf-tree-cell{color:var(--adf-theme-foreground-text-color);width:100%}.adf-tree-row .adf-tree-cell .adf-tree-cell-value,.adf-tree-load-more-row .adf-tree-cell .adf-tree-cell-value{display:inline-block;padding:10px;word-break:break-word}.adf-tree-header{display:flex;width:fit-content;min-width:100%;box-sizing:border-box}.adf-tree-header .adf-tree-cell-header:has(.adf-tree-cell-value){cursor:pointer;position:relative;vertical-align:bottom;text-overflow:ellipsis;font-weight:700;line-height:24px;letter-spacing:0;min-height:56px;font-size:12px;color:var(--adf-theme-foreground-text-color);box-sizing:border-box;padding-top:12px}.adf-tree-header .adf-tree-cell-header:has(.adf-tree-cell-value):focus{outline-offset:-1px;outline:1px solid var(--theme-accent-color-a200)}.adf-tree-loading-spinner-container{width:100%;height:100%;display:flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i5.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i5.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "component", type: i5.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i5.MatTreeNode, selector: "mat-tree-node", inputs: ["tabIndex", "disabled"], outputs: ["activation", "expandedChange"], exportAs: ["matTreeNode"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: IconComponent, selector: "adf-icon", inputs: ["color", "fontSet", "value"] }, { kind: "directive", type: ContextMenuDirective, selector: "[adf-context-menu]", inputs: ["adf-context-menu", "adf-context-menu-enabled"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i8.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i9.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i9.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None }); }
269
- }
270
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TreeComponent, decorators: [{
271
- type: Component,
272
- args: [{ selector: 'adf-tree', standalone: true, imports: [
273
- CommonModule,
274
- TranslateModule,
275
- MatTreeModule,
276
- MatProgressSpinnerModule,
277
- MatButtonModule,
278
- IconComponent,
279
- ContextMenuDirective,
280
- MatCheckboxModule,
281
- MatMenuModule,
282
- MatIconModule
283
- ], host: { class: 'adf-tree' }, encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"(loadingRoot$ | async) === false; else loadingSpinner\">\n <ng-container *ngIf=\"!this.isEmpty(); else emptyContent\">\n <div class=\"adf-tree-row adf-tree-header\" *ngIf=\"displayName\">\n <div class=\"adf-tree-cell adf-tree-cell-header\" data-automation-id=\"tree-header-display-name\">\n <span class=\"adf-tree-cell-value\">\n {{ displayName | translate }}\n </span>\n </div>\n </div>\n <mat-tree\n class=\"adf-tree-body\"\n [dataSource]=\"treeService\"\n [treeControl]=\"treeService.treeControl\">\n <mat-tree-node\n class=\"adf-tree-load-more-row\"\n [attr.data-automation-id]=\"'loadMoreSubnodes_' + node.parentId\"\n *matTreeNodeDef=\"let node when isLoadMoreNode\"\n matTreeNodePadding>\n <div class=\"adf-tree-expand-collapse-container\">\n <button class=\"adf-tree-load-more-button\" mat-icon-button (click)=\"loadMoreSubnodes(node)\">\n <mat-progress-spinner\n color=\"primary\"\n mode=\"indeterminate\"\n [diameter]=\"24\"\n *ngIf=\"node.isLoading; else loadMoreIcon\" />\n <ng-template #loadMoreIcon>\n <adf-icon [value]=\"'chevron_right'\" />\n </ng-template>\n </button>\n </div>\n <div class=\"adf-tree-cell\">\n <span\n class=\"adf-tree-cell-value\"\n tabindex=\"0\"\n role=\"button\"\n (keyup.enter)=\"loadMoreSubnodes(node)\"\n (click)=\"loadMoreSubnodes(node)\">\n {{ 'ADF-TREE.LOAD-MORE-BUTTON' | translate: { name: loadMoreSuffix } }}\n </span>\n </div>\n </mat-tree-node>\n <mat-tree-node\n class=\"adf-tree-row\"\n [attr.data-automation-id]=\"'node_' + node.id\"\n *matTreeNodeDef=\"let node\"\n matTreeNodePadding\n [adf-context-menu]=\"contextMenuOptions\"\n [adf-context-menu-enabled]=\"!!contextMenuOptions\"\n (contextmenu)=\"contextMenuSource = node\">\n <div class=\"adf-tree-expand-collapse-container\">\n <button *ngIf=\"node.hasChildren\"\n class=\"adf-tree-expand-collapse-button\"\n (click)=\"expandCollapseNode(node)\"\n mat-icon-button>\n <mat-progress-spinner\n color=\"primary\"\n mode=\"indeterminate\"\n [diameter]=\"24\"\n *ngIf=\"node.isLoading; else expandCollapseIcon\" />\n <ng-template #expandCollapseIcon>\n <adf-icon [value]=\"expandCollapseIconValue(node)\" />\n </ng-template>\n </button>\n </div>\n <ng-container *ngIf=\"selectableNodes\">\n <mat-checkbox *ngIf=\"node.hasChildren; else noChildrenNodeCheckbox\"\n color=\"primary\"\n [id]=\"node.id\"\n [checked]=\"descendantsAllSelected(node)\"\n [indeterminate]=\"descendantsPartiallySelected(node)\"\n (change)=\"onNodeSelected(node)\"\n data-automation-id=\"has-children-node-checkbox\" />\n <ng-template #noChildrenNodeCheckbox>\n <mat-checkbox\n color=\"primary\"\n [id]=\"node.id\"\n [checked]=\"treeNodesSelection.isSelected(node)\"\n (change)=\"onNodeSelected(node)\"\n data-automation-id=\"no-children-node-checkbox\" />\n </ng-template>\n </ng-container>\n <div class=\"adf-tree-cell\">\n <span\n class=\"adf-tree-cell-value\"\n [class.adf-tree-clickable-cell-value]=\"node.hasChildren\"\n tabindex=\"0\"\n role=\"button\"\n (keyup.enter)=\"expandCollapseNode(node)\"\n (click)=\"expandCollapseNode(node)\">\n {{ node.nodeName }}\n </span>\n </div>\n <div class=\"adf-tree-actions\">\n <button mat-icon-button\n [matMenuTriggerFor]=\"menu\"\n [attr.id]=\"'action_menu_right_' + node.id\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <ng-template\n [ngTemplateOutlet]=\"nodeActionsMenuTemplate\"\n [ngTemplateOutletContext]=\"{ node: node }\" />\n </mat-menu>\n </div>\n </mat-tree-node>\n </mat-tree>\n </ng-container>\n</ng-container>\n\n<ng-template #emptyContent>\n <ng-template [ngTemplateOutlet]=\"emptyContentTemplate\" />\n</ng-template>\n\n<ng-template #loadingSpinner>\n <div class=\"adf-tree-loading-spinner-container\">\n <mat-progress-spinner\n color=\"primary\"\n mode=\"indeterminate\" />\n </div>\n</ng-template>\n", styles: [".adf-tree-sticky-header{display:flex;flex-direction:column;height:100%}.adf-tree-sticky-header mat-tree{overflow-y:scroll}.adf-tree-load-more-row .adf-tree-cell-value,.adf-tree-clickable-cell-value{cursor:pointer}.adf-tree-row,.adf-tree-load-more-row{transition:all .3s ease;display:flex;align-items:center;padding-left:15px;padding-right:15px;transition-property:background-color;border-bottom:1px solid var(--adf-theme-foreground-text-color-007);min-height:56px;-webkit-user-select:none;user-select:none}.adf-tree-row .adf-tree-expand-collapse-container,.adf-tree-load-more-row .adf-tree-expand-collapse-container{min-width:55px}.adf-tree-row:hover,.adf-tree-load-more-row:hover{background-color:var(--adf-theme-background-hover-color)}.adf-tree-row:hover .adf-tree-actions,.adf-tree-load-more-row:hover .adf-tree-actions{display:flex}.adf-tree-row:focus,.adf-tree-load-more-row:focus{background-color:var(--adf-theme-background-hover-color);outline-offset:-1px;outline:1px solid var(--theme-accent-color-a200)}.adf-tree-row .adf-tree-expand-collapse-button,.adf-tree-row .adf-tree-load-more-button,.adf-tree-load-more-row .adf-tree-expand-collapse-button,.adf-tree-load-more-row .adf-tree-load-more-button{display:flex;align-items:center;justify-content:center;margin-left:15px}.adf-tree-row .adf-tree-cell,.adf-tree-load-more-row .adf-tree-cell{color:var(--adf-theme-foreground-text-color);width:100%}.adf-tree-row .adf-tree-cell .adf-tree-cell-value,.adf-tree-load-more-row .adf-tree-cell .adf-tree-cell-value{display:inline-block;padding:10px;word-break:break-word}.adf-tree-header{display:flex;width:fit-content;min-width:100%;box-sizing:border-box}.adf-tree-header .adf-tree-cell-header:has(.adf-tree-cell-value){cursor:pointer;position:relative;vertical-align:bottom;text-overflow:ellipsis;font-weight:700;line-height:24px;letter-spacing:0;min-height:56px;font-size:12px;color:var(--adf-theme-foreground-text-color);box-sizing:border-box;padding-top:12px}.adf-tree-header .adf-tree-cell-header:has(.adf-tree-cell-value):focus{outline-offset:-1px;outline:1px solid var(--theme-accent-color-a200)}.adf-tree-loading-spinner-container{width:100%;height:100%;display:flex;align-items:center;justify-content:center}\n"] }]
284
- }], ctorParameters: () => [{ type: i1.TreeService }, { type: i2.UserPreferencesService }], propDecorators: { emptyContentTemplate: [{
285
- type: Input
286
- }], nodeActionsMenuTemplate: [{
287
- type: Input
288
- }], stickyHeader: [{
289
- type: Input
290
- }, {
291
- type: HostBinding,
292
- args: ['class.adf-tree-sticky-header']
293
- }], selectableNodes: [{
294
- type: Input
295
- }], displayName: [{
296
- type: Input
297
- }], loadMoreSuffix: [{
298
- type: Input
299
- }], expandIcon: [{
300
- type: Input
301
- }], collapseIcon: [{
302
- type: Input
303
- }], paginationChanged: [{
304
- type: Output
305
- }], contextMenuOptionSelected: [{
306
- type: Output
307
- }], nodeCheckboxes: [{
308
- type: ViewChildren,
309
- args: [MatCheckbox]
310
- }], contextMenuOptions: [{
311
- type: Input
312
- }] } });
313
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL3RyZWUvY29tcG9uZW50cy90cmVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvdHJlZS9jb21wb25lbnRzL3RyZWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQVksWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxhQUFhLEVBQW1CLHNCQUFzQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEgsT0FBTyxFQUFtQixjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FB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Q3hCLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixvQkFBb0I7d0JBQ3BCLGlCQUFpQjt3QkFDakIsYUFBYTt3QkFDYixhQUFhO3FCQUNoQixRQUdLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxpQkFDWixpQkFBaUIsQ0FBQyxJQUFJO3FIQUs5QixvQkFBb0I7c0JBRDFCLEtBQUs7Z0JBS0MsdUJBQXVCO3NCQUQ3QixLQUFLO2dCQU1DLFlBQVk7c0JBRmxCLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsOEJBQThCO2dCQUtwQyxlQUFlO3NCQURyQixLQUFLO2dCQUtDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBS0MsY0FBYztzQkFEcEIsS0FBSztnQkFLQyxVQUFVO3NCQURoQixLQUFLO2dCQUtDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBS0MsaUJBQWlCO3NCQUR2QixNQUFNO2dCQUtBLHlCQUF5QjtzQkFEL0IsTUFBTTtnQkFJQSxjQUFjO3NCQURwQixZQUFZO3VCQUFDLFdBQVc7Z0JBa0JyQixrQkFBa0I7c0JBRHJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBtZXJnZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVHJlZU5vZGUsIFRyZWVOb2RlVHlwZSB9IGZyb20gJy4uL21vZGVscy90cmVlLW5vZGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IFRyZWVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdHJlZS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRleHRNZW51RGlyZWN0aXZlLCBJY29uQ29tcG9uZW50LCBQYWdpbmF0aW9uTW9kZWwsIFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgU2VsZWN0aW9uQ2hhbmdlLCBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBUcmVlUmVzcG9uc2UgfSBmcm9tICcuLi9tb2RlbHMvdHJlZS1yZXNwb25zZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3gsIE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgVHJlZUNvbnRleHRNZW51UmVzdWx0IH0gZnJvbSAnLi4vbW9kZWxzL3RyZWUtY29udGV4dC1tZW51LXJlc3VsdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWF0VHJlZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RyZWUnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FkZi10cmVlJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgICAgIE1hdFRyZWVNb2R1bGUsXG4gICAgICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgICAgICBJY29uQ29tcG9uZW50LFxuICAgICAgICBDb250ZXh0TWVudURpcmVjdGl2ZSxcbiAgICAgICAgTWF0Q2hlY2tib3hNb2R1bGUsXG4gICAgICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgICAgIE1hdEljb25Nb2R1bGVcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90cmVlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90cmVlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgaG9zdDogeyBjbGFzczogJ2FkZi10cmVlJyB9LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgVHJlZUNvbXBvbmVudDxUIGV4dGVuZHMgVHJlZU5vZGU+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBUZW1wbGF0ZVJlZiB0byBwcm92aWRlIGVtcHR5IHRlbXBsYXRlIHdoZW4gbm8gbm9kZXMgYXJlIGxvYWRlZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGVtcHR5Q29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIFRlbXBsYXRlUmVmIHRvIHByb3ZpZGUgY29udGV4dCBtZW51IGl0ZW1zIGZvciBjb250ZXh0IG1lbnUgZGlzcGxheWVkIG9uIGVhY2ggcm93Ki9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBub2RlQWN0aW9uc01lbnVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBWYXJpYWJsZSBkZWZpbmluZyBpZiB0cmVlIGhlYWRlciBzaG91bGQgYmUgc3RpY2t5LiBCeSBkZWZhdWx0IHNldCB0byBmYWxzZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hZGYtdHJlZS1zdGlja3ktaGVhZGVyJylcbiAgICBwdWJsaWMgc3RpY2t5SGVhZGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogVmFyaWFibGUgZGVmaW5pbmcgaWYgdHJlZSBub2RlcyBzaG91bGQgYmUgc2VsZWN0YWJsZS4gQnkgZGVmYXVsdCBzZXQgdG8gZmFsc2UgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZWxlY3RhYmxlTm9kZXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBUcmVlIGRpc3BsYXkgbmFtZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG5cbiAgICAvKiogTG9hZCBtb3JlIHN1ZmZpeCBmb3IgbG9hZCBtb3JlIGJ1dHRvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxvYWRNb3JlU3VmZml4OiBzdHJpbmc7XG5cbiAgICAvKiogSWNvbiBzaG93biB3aGVuIG5vZGUgaGFzIGNoaWxkcmVuIGFuZCBpcyBjb2xsYXBzZWQuIEJ5IGRlZmF1bHQgc2V0IHRvIGNoZXZyb25fcmlnaHQgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBleHBhbmRJY29uOiBzdHJpbmcgPSAnY2hldnJvbl9yaWdodCc7XG5cbiAgICAvKiogSWNvbiBzaG93biB3aGVuIG5vZGUgaXMgZXhwYW5kZWQuIEJ5IGRlZmF1bHQgc2V0IHRvIGV4cGFuZF9tb3JlICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY29sbGFwc2VJY29uOiBzdHJpbmcgPSAnZXhwYW5kX21vcmUnO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBwYWdpbmF0aW9uIGhhcyBiZWVuIGNoYW5nZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcGFnaW5hdGlvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxQYWdpbmF0aW9uTW9kZWw+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBhbnkgY29udGV4dCBtZW51IG9wdGlvbiBpcyBzZWxlY3RlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjb250ZXh0TWVudU9wdGlvblNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxUcmVlQ29udGV4dE1lbnVSZXN1bHQ8VD4+KCk7XG5cbiAgICBAVmlld0NoaWxkcmVuKE1hdENoZWNrYm94KVxuICAgIHB1YmxpYyBub2RlQ2hlY2tib3hlczogUXVlcnlMaXN0PE1hdENoZWNrYm94PjtcblxuICAgIHByaXZhdGUgbG9hZGluZ1Jvb3RTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIF9jb250ZXh0TWVudVNvdXJjZTogVDtcbiAgICBwcml2YXRlIF9jb250ZXh0TWVudU9wdGlvbnM6IGFueVtdO1xuICAgIHByaXZhdGUgY29udGV4dE1lbnVPcHRpb25zQ2hhbmdlZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHB1YmxpYyBsb2FkaW5nUm9vdCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgcHVibGljIHRyZWVOb2Rlc1NlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxUPih0cnVlLCBbXSwgdHJ1ZSwgKG5vZGUxOiBULCBub2RlMjogVCkgPT4gbm9kZTEuaWQgPT09IG5vZGUyLmlkKTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0cmVlU2VydmljZTogVHJlZVNlcnZpY2U8VD4sIHByaXZhdGUgdXNlclByZWZlcmVuY2VTZXJ2aWNlOiBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlKSB7fVxuXG4gICAgc2V0IGNvbnRleHRNZW51U291cmNlKGNvbnRleHRNZW51U291cmNlOiBUKSB7XG4gICAgICAgIHRoaXMuX2NvbnRleHRNZW51U291cmNlID0gY29udGV4dE1lbnVTb3VyY2U7XG4gICAgfVxuXG4gICAgLyoqIEFycmF5IG9mIGNvbnRleHQgbWVudSBvcHRpb25zIHdoaWNoIHNob3VsZCBiZSBkaXNwbGF5ZWQgZm9yIGVhY2ggcm93LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNvbnRleHRNZW51T3B0aW9ucyhjb250ZXh0TWVudU9wdGlvbnM6IGFueVtdKSB7XG4gICAgICAgIHRoaXMuY29udGV4dE1lbnVPcHRpb25zQ2hhbmdlZCQubmV4dCgpO1xuICAgICAgICBpZiAoY29udGV4dE1lbnVPcHRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLl9jb250ZXh0TWVudU9wdGlvbnMgPSBjb250ZXh0TWVudU9wdGlvbnMubWFwKChvcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5zdWJqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbiA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLm9wdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YmplY3Q6IG5ldyBTdWJqZWN0KClcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbWVyZ2UoLi4udGhpcy5jb250ZXh0TWVudU9wdGlvbnMubWFwKChvcHRpb24pID0+IG9wdGlvbi5zdWJqZWN0KSlcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5jb250ZXh0TWVudU9wdGlvbnNDaGFuZ2VkJCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dE1lbnVPcHRpb25TZWxlY3RlZC5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdzogdGhpcy5fY29udGV4dE1lbnVTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0TWVudU9wdGlvbjogb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fY29udGV4dE1lbnVPcHRpb25zID0gY29udGV4dE1lbnVPcHRpb25zO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGNvbnRleHRNZW51T3B0aW9ucygpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb250ZXh0TWVudU9wdGlvbnM7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9hZGluZ1Jvb3QkID0gdGhpcy5sb2FkaW5nUm9vdFNvdXJjZS5hc09ic2VydmFibGUoKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoVHJlZSgwLCB0aGlzLnVzZXJQcmVmZXJlbmNlU2VydmljZS5wYWdpbmF0aW9uU2l6ZSk7XG4gICAgICAgIHRoaXMudHJlZU5vZGVzU2VsZWN0aW9uLmNoYW5nZWQuc3Vic2NyaWJlKChzZWxlY3Rpb25DaGFuZ2U6IFNlbGVjdGlvbkNoYW5nZTxUPikgPT4ge1xuICAgICAgICAgICAgdGhpcy5vblRyZWVTZWxlY3Rpb25DaGFuZ2Uoc2VsZWN0aW9uQ2hhbmdlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuY29udGV4dE1lbnVPcHRpb25zQ2hhbmdlZCQubmV4dCgpO1xuICAgICAgICB0aGlzLmNvbnRleHRNZW51T3B0aW9uc0NoYW5nZWQkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIG5vZGUgaXMgTG9hZE1vcmVOb2RlIG5vZGVcbiAgICAgKlxuICAgICAqIEBwYXJhbSBfaWR4ICh1bnVzZWQpXG4gICAgICogQHBhcmFtIG5vZGUgbm9kZSB0byBiZSBjaGVja2VkXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZXJlIGFyZSBtb3JlIGl0ZW1zIHRvIGxvYWQsIG90aGVyd2lzZSBgZmFsc2VgXG4gICAgICovXG4gICAgcHVibGljIGlzTG9hZE1vcmVOb2RlKF9pZHg6IG51bWJlciwgbm9kZTogVCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gbm9kZS5ub2RlVHlwZSA9PT0gVHJlZU5vZGVUeXBlLkxvYWRNb3JlTm9kZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdHJlZSBpcyBlbXB0eVxuICAgICAqXG4gICAgICogQHJldHVybnMgYm9vbGVhblxuICAgICAqL1xuICAgIHB1YmxpYyBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50cmVlU2VydmljZS5pc0VtcHR5KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhY3Rpb24gaWNvbiBiYXNlZCBvbiBleHBhbmRlZC9jb2xsYXBzZWQgbm9kZSBzdGF0ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBub2RlIG5vZGUgdG8gYmUgY2hlY2tlZFxuICAgICAqIEByZXR1cm5zIGNvbGxhcHNlIG9yIGV4cGFuZCBpY29uXG4gICAgICovXG4gICAgcHVibGljIGV4cGFuZENvbGxhcHNlSWNvblZhbHVlKG5vZGU6IFQpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy50cmVlU2VydmljZS50cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpID8gdGhpcy5jb2xsYXBzZUljb24gOiB0aGlzLmV4cGFuZEljb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVmcmVzaGVzIHRoZSB0cmVlLCByb290IG5vZGVzIGFyZSByZWxvYWRlZCwgdHJlZSBzZWxlY3Rpb24gaXMgY2xlYXJlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBza2lwQ291bnQgTnVtYmVyIG9mIHJvb3Qgbm9kZXMgdG8gc2tpcC5cbiAgICAgKiBAcGFyYW0gbWF4SXRlbXMgTWF4aW11bSBudW1iZXIgb2Ygbm9kZXMgcmV0dXJuZWQgZnJvbSBPYnNlcnZhYmxlLlxuICAgICAqIEBwYXJhbSBzZWFyY2hUZXJtIFNwZWNpZmllcyBpZiBjYXRlZ29yaWVzIHNob3VsZCBiZSBmaWx0ZXJlZCBvdXQgYnkgbmFtZSBvciBub3QuIElmIG5vdCBzcGVjaWZpZWQgdGhlbiByZXR1cm5zIGNhdGVnb3JpZXMgd2l0aG91dCBmaWx0ZXJpbmcuXG4gICAgICovXG4gICAgcHVibGljIHJlZnJlc2hUcmVlKHNraXBDb3VudD86IG51bWJlciwgbWF4SXRlbXM/OiBudW1iZXIsIHNlYXJjaFRlcm0/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nUm9vdFNvdXJjZS5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLnRyZWVOb2Rlc1NlbGVjdGlvbi5jbGVhcigpO1xuICAgICAgICB0aGlzLnRyZWVTZXJ2aWNlLmdldFN1Yk5vZGVzKCctcm9vdC0nLCBza2lwQ291bnQsIG1heEl0ZW1zLCBzZWFyY2hUZXJtKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBUcmVlUmVzcG9uc2U8VD4pID0+IHtcbiAgICAgICAgICAgIHRoaXMudHJlZVNlcnZpY2UudHJlZU5vZGVzID0gcmVzcG9uc2UuZW50cmllcztcbiAgICAgICAgICAgIHRoaXMudHJlZU5vZGVzU2VsZWN0aW9uLmRlc2VsZWN0KC4uLnJlc3BvbnNlLmVudHJpZXMpO1xuICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uQ2hhbmdlZC5lbWl0KHJlc3BvbnNlLnBhZ2luYXRpb24pO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nUm9vdFNvdXJjZS5uZXh0KGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29sbGFwc2VzIG9yIGV4cGFuZGluZyB0aGUgbm9kZSBiYXNlZCBvbiBpdHMgY3VycmVudCBzdGF0ZVxuICAgICAqXG4gICAgICogQHBhcmFtIG5vZGUgbm9kZSB0byBiZSBjb2xsYXBzZWQvZXhwYW5kZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgZXhwYW5kQ29sbGFwc2VOb2RlKG5vZGU6IFQpOiB2b2lkIHtcbiAgICAgICAgaWYgKG5vZGUuaGFzQ2hpbGRyZW4gJiYgIW5vZGUuaXNMb2FkaW5nKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50cmVlU2VydmljZS50cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50cmVlU2VydmljZS5jb2xsYXBzZU5vZGUobm9kZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGUuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnRyZWVTZXJ2aWNlLmdldFN1Yk5vZGVzKG5vZGUuaWQsIDAsIHRoaXMudXNlclByZWZlcmVuY2VTZXJ2aWNlLnBhZ2luYXRpb25TaXplKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBUcmVlUmVzcG9uc2U8VD4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmVlU2VydmljZS5leHBhbmROb2RlKG5vZGUsIHJlc3BvbnNlLmVudHJpZXMpO1xuICAgICAgICAgICAgICAgICAgICBub2RlLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50cmVlTm9kZXNTZWxlY3Rpb24uaXNTZWxlY3RlZChub2RlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy90aW1lb3V0IHVzZWQgdG8gdXBkYXRlIG5vZGVDaGVja2JveGVzIHF1ZXJ5IGxpc3QgYWZ0ZXIgbmV3IG5vZGVzIGFyZSBhZGRlZCBzbyB0aGV5IGNhbiBiZSBzZWxlY3RlZFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmVlTm9kZXNTZWxlY3Rpb24uc2VsZWN0KC4uLnJlc3BvbnNlLmVudHJpZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExvYWRzIG1vcmUgc3Vibm9kZSBmb3IgYSBnaXZlbiBwYXJlbnQgbm9kZVxuICAgICAqXG4gICAgICogQHBhcmFtIG5vZGUgcGFyZW50IG5vZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgbG9hZE1vcmVTdWJub2Rlcyhub2RlOiBUKTogdm9pZCB7XG4gICAgICAgIG5vZGUuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgcGFyZW50Tm9kZTogVCA9IHRoaXMudHJlZVNlcnZpY2UuZ2V0UGFyZW50Tm9kZShub2RlLnBhcmVudElkKTtcbiAgICAgICAgdGhpcy50cmVlU2VydmljZS5yZW1vdmVOb2RlKG5vZGUpO1xuICAgICAgICBjb25zdCBsb2FkZWRDaGlsZHJlbjogbnVtYmVyID0gdGhpcy50cmVlU2VydmljZS5nZXRDaGlsZHJlbihwYXJlbnROb2RlKS5sZW5ndGg7XG4gICAgICAgIHRoaXMudHJlZVNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRTdWJOb2RlcyhwYXJlbnROb2RlLmlkLCBsb2FkZWRDaGlsZHJlbiwgdGhpcy51c2VyUHJlZmVyZW5jZVNlcnZpY2UucGFnaW5hdGlvblNpemUpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogVHJlZVJlc3BvbnNlPFQ+KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50cmVlU2VydmljZS5hcHBlbmROb2RlcyhwYXJlbnROb2RlLCByZXNwb25zZS5lbnRyaWVzKTtcbiAgICAgICAgICAgICAgICBub2RlLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyZWVOb2Rlc1NlbGVjdGlvbi5pc1NlbGVjdGVkKHBhcmVudE5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vdGltZW91dCB1c2VkIHRvIHVwZGF0ZSBub2RlQ2hlY2tib3hlcyBxdWVyeSBsaXN0IGFmdGVyIG5ldyBub2RlcyBhcmUgYWRkZWQgc28gdGhleSBjYW4gYmUgc2VsZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyZWVOb2Rlc1NlbGVjdGlvbi5zZWxlY3QoLi4ucmVzcG9uc2UuZW50cmllcyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZW4gbm9kZSBpcyBzZWxlY3RlZCBpdCBzZWxlY3RzIGFsbCBpdHMgZGVzY2VuZGFudHNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBub2RlIHNlbGVjdGVkIG5vZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgb25Ob2RlU2VsZWN0ZWQobm9kZTogVCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRyZWVOb2Rlc1NlbGVjdGlvbi50b2dnbGUobm9kZSk7XG4gICAgICAgIGNvbnN0IGRlc2NlbmRhbnRzOiBUW10gPSB0aGlzLnRyZWVTZXJ2aWNlLnRyZWVDb250cm9sLmdldERlc2NlbmRhbnRzKG5vZGUpLmZpbHRlcih0aGlzLmlzUmVndWxhck5vZGUpO1xuICAgICAgICBpZiAoZGVzY2VuZGFudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy50cmVlTm9kZXNTZWxlY3Rpb24uaXNTZWxlY3RlZChub2RlKVxuICAgICAgICAgICAgICAgID8gdGhpcy50cmVlTm9kZXNTZWxlY3Rpb24uc2VsZWN0KC4uLmRlc2NlbmRhbnRzKVxuICAgICAgICAgICAgICAgIDogdGhpcy50cmVlTm9kZXNTZWxlY3Rpb24uZGVzZWxlY3QoLi4uZGVzY2VuZGFudHMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2hlY2tQYXJlbnRzU2VsZWN0aW9uKG5vZGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBhbGwgZGVzY2VuZGFudHMgb2YgYSBub2RlIGFyZSBzZWxlY3RlZFxuICAgICAqXG4gICAgICogQHBhcmFtIG5vZGUgc2VsZWN0ZWQgbm9kZVxuICAgICAqIEByZXR1cm5zIGJvb2xlYW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZGVzY2VuZGFudHNBbGxTZWxlY3RlZChub2RlOiBUKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGRlc2NlbmRhbnRzOiBUW10gPSB0aGlzLnRyZWVTZXJ2aWNlLnRyZWVDb250cm9sLmdldERlc2NlbmRhbnRzKG5vZGUpLmZpbHRlcih0aGlzLmlzUmVndWxhck5vZGUpO1xuICAgICAgICByZXR1cm4gZGVzY2VuZGFudHMubGVuZ3RoID4gMCAmJiBkZXNjZW5kYW50cy5ldmVyeSgoZGVzY2VuZGFudDogVCkgPT4gdGhpcy50cmVlTm9kZXNTZWxlY3Rpb24uaXNTZWxlY3RlZChkZXNjZW5kYW50KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHNvbWUgZGVzY2VuZGFudHMgb2YgYSBub2RlIGFyZSBzZWxlY3RlZFxuICAgICAqXG4gICAgICogQHBhcmFtIG5vZGUgc2VsZWN0ZWQgbm9kZVxuICAgICAqIEByZXR1cm5zIGJvb2xlYW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZGVzY2VuZGFudHNQYXJ0aWFsbHlTZWxlY3RlZChub2RlOiBUKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGRlc2NlbmRhbnRzOiBUW10gPSB0aGlzLnRyZWVTZXJ2aWNlLnRyZWVDb250cm9sLmdldERlc2NlbmRhbnRzKG5vZGUpLmZpbHRlcih0aGlzLmlzUmVndWxhck5vZGUpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgZGVzY2VuZGFudHMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgIXRoaXMuZGVzY2VuZGFudHNBbGxTZWxlY3RlZChub2RlKSAmJlxuICAgICAgICAgICAgZGVzY2VuZGFudHMuc29tZSgoZGVzY2VuZGFudDogVCkgPT4gdGhpcy50cmVlTm9kZXNTZWxlY3Rpb24uaXNTZWxlY3RlZChkZXNjZW5kYW50KSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrUGFyZW50c1NlbGVjdGlvbihub2RlOiBUKTogdm9pZCB7XG4gICAgICAgIGxldCBwYXJlbnQ6IFQgPSB0aGlzLnRyZWVTZXJ2aWNlLmdldFBhcmVudE5vZGUobm9kZS5wYXJlbnRJZCk7XG4gICAgICAgIHdoaWxlIChwYXJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tSb290Tm9kZVNlbGVjdGlvbihwYXJlbnQpO1xuICAgICAgICAgICAgcGFyZW50ID0gdGhpcy50cmVlU2VydmljZS5nZXRQYXJlbnROb2RlKHBhcmVudC5wYXJlbnRJZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrUm9vdE5vZGVTZWxlY3Rpb24obm9kZTogVCk6IHZvaWQge1xuICAgICAgICBjb25zdCBub2RlU2VsZWN0ZWQ6IGJvb2xlYW4gPSB0aGlzLnRyZWVOb2Rlc1NlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUpO1xuICAgICAgICBjb25zdCBkZXNjQWxsU2VsZWN0ZWQgPSB0aGlzLmRlc2NlbmRhbnRzQWxsU2VsZWN0ZWQobm9kZSk7XG4gICAgICAgIGlmIChub2RlU2VsZWN0ZWQgJiYgIWRlc2NBbGxTZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy50cmVlTm9kZXNTZWxlY3Rpb24uZGVzZWxlY3Qobm9kZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIW5vZGVTZWxlY3RlZCAmJiBkZXNjQWxsU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMudHJlZU5vZGVzU2VsZWN0aW9uLnNlbGVjdChub2RlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25UcmVlU2VsZWN0aW9uQ2hhbmdlKHNlbGVjdGlvbkNoYW5nZTogU2VsZWN0aW9uQ2hhbmdlPFQ+KTogdm9pZCB7XG4gICAgICAgIHNlbGVjdGlvbkNoYW5nZS5yZW1vdmVkLmZvckVhY2goKHVuc2VsZWN0ZWROb2RlOiBUKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1JlZ3VsYXJOb2RlKHVuc2VsZWN0ZWROb2RlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubm9kZUNoZWNrYm94ZXMuZmluZCgoY2hlY2tib3g6IE1hdENoZWNrYm94KSA9PiBjaGVja2JveC5pZCA9PT0gdW5zZWxlY3RlZE5vZGUuaWQpLmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHNlbGVjdGlvbkNoYW5nZS5hZGRlZC5mb3JFYWNoKChzZWxlY3RlZE5vZGU6IFQpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzUmVndWxhck5vZGUoc2VsZWN0ZWROb2RlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubm9kZUNoZWNrYm94ZXMuZmluZCgoY2hlY2tib3g6IE1hdENoZWNrYm94KSA9PiBjaGVja2JveC5pZCA9PT0gc2VsZWN0ZWROb2RlLmlkKS5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1JlZ3VsYXJOb2RlKG5vZGU6IFQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIG5vZGUubm9kZVR5cGUgIT09IFRyZWVOb2RlVHlwZS5Mb2FkTW9yZU5vZGU7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIihsb2FkaW5nUm9vdCQgfCBhc3luYykgPT09IGZhbHNlOyBlbHNlIGxvYWRpbmdTcGlubmVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0aGlzLmlzRW1wdHkoKTsgZWxzZSBlbXB0eUNvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZi10cmVlLXJvdyBhZGYtdHJlZS1oZWFkZXJcIiAqbmdJZj1cImRpc3BsYXlOYW1lXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXRyZWUtY2VsbCBhZGYtdHJlZS1jZWxsLWhlYWRlclwiIGRhdGEtYXV0b21hdGlvbi1pZD1cInRyZWUtaGVhZGVyLWRpc3BsYXktbmFtZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWRmLXRyZWUtY2VsbC12YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBkaXNwbGF5TmFtZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG1hdC10cmVlXG4gICAgICAgICAgICBjbGFzcz1cImFkZi10cmVlLWJvZHlcIlxuICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwidHJlZVNlcnZpY2VcIlxuICAgICAgICAgICAgW3RyZWVDb250cm9sXT1cInRyZWVTZXJ2aWNlLnRyZWVDb250cm9sXCI+XG4gICAgICAgICAgICA8bWF0LXRyZWUtbm9kZVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLXRyZWUtbG9hZC1tb3JlLXJvd1wiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidsb2FkTW9yZVN1Ym5vZGVzXycgKyBub2RlLnBhcmVudElkXCJcbiAgICAgICAgICAgICAgICAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZSB3aGVuIGlzTG9hZE1vcmVOb2RlXCJcbiAgICAgICAgICAgICAgICBtYXRUcmVlTm9kZVBhZGRpbmc+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi10cmVlLWV4cGFuZC1jb2xsYXBzZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFkZi10cmVlLWxvYWQtbW9yZS1idXR0b25cIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImxvYWRNb3JlU3Vibm9kZXMobm9kZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZT1cImluZGV0ZXJtaW5hdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaWFtZXRlcl09XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJub2RlLmlzTG9hZGluZzsgZWxzZSBsb2FkTW9yZUljb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNsb2FkTW9yZUljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFkZi1pY29uIFt2YWx1ZV09XCInY2hldnJvbl9yaWdodCdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi10cmVlLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLXRyZWUtY2VsbC12YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwibG9hZE1vcmVTdWJub2Rlcyhub2RlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibG9hZE1vcmVTdWJub2Rlcyhub2RlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0FERi1UUkVFLkxPQUQtTU9SRS1CVVRUT04nIHwgdHJhbnNsYXRlOiB7IG5hbWU6IGxvYWRNb3JlU3VmZml4IH0gfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tYXQtdHJlZS1ub2RlPlxuICAgICAgICAgICAgPG1hdC10cmVlLW5vZGVcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi10cmVlLXJvd1wiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidub2RlXycgKyBub2RlLmlkXCJcbiAgICAgICAgICAgICAgICAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZVwiXG4gICAgICAgICAgICAgICAgbWF0VHJlZU5vZGVQYWRkaW5nXG4gICAgICAgICAgICAgICAgW2FkZi1jb250ZXh0LW1lbnVdPVwiY29udGV4dE1lbnVPcHRpb25zXCJcbiAgICAgICAgICAgICAgICBbYWRmLWNvbnRleHQtbWVudS1lbmFibGVkXT1cIiEhY29udGV4dE1lbnVPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAoY29udGV4dG1lbnUpPVwiY29udGV4dE1lbnVTb3VyY2UgPSBub2RlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi10cmVlLWV4cGFuZC1jb2xsYXBzZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIm5vZGUuaGFzQ2hpbGRyZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLXRyZWUtZXhwYW5kLWNvbGxhcHNlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImV4cGFuZENvbGxhcHNlTm9kZShub2RlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RpYW1ldGVyXT1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm5vZGUuaXNMb2FkaW5nOyBlbHNlIGV4cGFuZENvbGxhcHNlSWNvblwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2V4cGFuZENvbGxhcHNlSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YWRmLWljb24gW3ZhbHVlXT1cImV4cGFuZENvbGxhcHNlSWNvblZhbHVlKG5vZGUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RhYmxlTm9kZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCAqbmdJZj1cIm5vZGUuaGFzQ2hpbGRyZW47IGVsc2Ugbm9DaGlsZHJlbk5vZGVDaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwibm9kZS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZGVzY2VuZGFudHNBbGxTZWxlY3RlZChub2RlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiZGVzY2VuZGFudHNQYXJ0aWFsbHlTZWxlY3RlZChub2RlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbk5vZGVTZWxlY3RlZChub2RlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiaGFzLWNoaWxkcmVuLW5vZGUtY2hlY2tib3hcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vQ2hpbGRyZW5Ob2RlQ2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwibm9kZS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwidHJlZU5vZGVzU2VsZWN0aW9uLmlzU2VsZWN0ZWQobm9kZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25Ob2RlU2VsZWN0ZWQobm9kZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cIm5vLWNoaWxkcmVuLW5vZGUtY2hlY2tib3hcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtdHJlZS1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi10cmVlLWNlbGwtdmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFkZi10cmVlLWNsaWNrYWJsZS1jZWxsLXZhbHVlXT1cIm5vZGUuaGFzQ2hpbGRyZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImV4cGFuZENvbGxhcHNlTm9kZShub2RlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZXhwYW5kQ29sbGFwc2VOb2RlKG5vZGUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBub2RlLm5vZGVOYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXRyZWUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCInYWN0aW9uX21lbnVfcmlnaHRfJyArIG5vZGUuaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9kZUFjdGlvbnNNZW51VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IG5vZGU6IG5vZGUgfVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21hdC10cmVlLW5vZGU+XG4gICAgICAgIDwvbWF0LXRyZWU+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNlbXB0eUNvbnRlbnQ+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVtcHR5Q29udGVudFRlbXBsYXRlXCIgLz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ1NwaW5uZXI+XG4gICAgPGRpdiBjbGFzcz1cImFkZi10cmVlLWxvYWRpbmctc3Bpbm5lci1jb250YWluZXJcIj5cbiAgICAgICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiAvPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -1,18 +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 * from './public-api';
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL3RyZWUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -1,18 +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 {};
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1jb250ZXh0LW1lbnUtcmVzdWx0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvdHJlZS9tb2RlbHMvdHJlZS1jb250ZXh0LW1lbnUtcmVzdWx0LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUciLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJlZUNvbnRleHRNZW51UmVzdWx0PFQ+IHtcbiAgICByb3c6IFQ7XG4gICAgY29udGV4dE1lbnVPcHRpb246IGFueTtcbn1cbiJdfQ==
@@ -1,22 +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 var TreeNodeType;
18
- (function (TreeNodeType) {
19
- TreeNodeType[TreeNodeType["RegularNode"] = 0] = "RegularNode";
20
- TreeNodeType[TreeNodeType["LoadMoreNode"] = 1] = "LoadMoreNode";
21
- })(TreeNodeType || (TreeNodeType = {}));
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub2RlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvdHJlZS9tb2RlbHMvdHJlZS1ub2RlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxNQUFNLENBQU4sSUFBWSxZQUdYO0FBSEQsV0FBWSxZQUFZO0lBQ3BCLDZEQUFXLENBQUE7SUFDWCwrREFBWSxDQUFBO0FBQ2hCLENBQUMsRUFIVyxZQUFZLEtBQVosWUFBWSxRQUd2QiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuZXhwb3J0IGVudW0gVHJlZU5vZGVUeXBlIHtcbiAgICBSZWd1bGFyTm9kZSxcbiAgICBMb2FkTW9yZU5vZGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmVlTm9kZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBub2RlTmFtZTogc3RyaW5nO1xuICAgIHBhcmVudElkOiBzdHJpbmc7XG4gICAgbGV2ZWw6IG51bWJlcjtcbiAgICBub2RlVHlwZTogVHJlZU5vZGVUeXBlO1xuICAgIGhhc0NoaWxkcmVuOiBib29sZWFuO1xuICAgIGlzTG9hZGluZzogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -1,18 +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 {};
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1yZXNwb25zZS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL3RyZWUvbW9kZWxzL3RyZWUtcmVzcG9uc2UuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgVHJlZU5vZGUgfSBmcm9tICcuL3RyZWUtbm9kZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbk1vZGVsIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBUcmVlUmVzcG9uc2U8VCBleHRlbmRzIFRyZWVOb2RlPiB7XG4gICAgcGFnaW5hdGlvbjogUGFnaW5hdGlvbk1vZGVsO1xuICAgIGVudHJpZXM6IFRbXTtcbn1cbiJdfQ==
@@ -1,23 +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 * from './tree.module';
18
- export * from './models/tree-response.interface';
19
- export * from './models/tree-node.interface';
20
- export * from './models/tree-context-menu-result.interface';
21
- export * from './services/tree.service';
22
- export * from './components/tree.component';
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvdHJlZS9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi90cmVlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVscy90cmVlLXJlc3BvbnNlLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVscy90cmVlLW5vZGUuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL3RyZWUtY29udGV4dC1tZW51LXJlc3VsdC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy90cmVlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3RyZWUuY29tcG9uZW50JztcbiJdfQ==