@theseam/ui-common 0.2.9 → 0.2.13

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 (365) hide show
  1. package/assets/vendor/intl-tel-input/js/utils.js +255 -254
  2. package/bundles/theseam-ui-common-asset-reader.umd.js +7 -9
  3. package/bundles/theseam-ui-common-asset-reader.umd.js.map +1 -1
  4. package/bundles/theseam-ui-common-breadcrumbs.umd.js +6 -8
  5. package/bundles/theseam-ui-common-breadcrumbs.umd.js.map +1 -1
  6. package/bundles/theseam-ui-common-buttons.umd.js +5 -5
  7. package/bundles/theseam-ui-common-buttons.umd.js.map +1 -1
  8. package/bundles/theseam-ui-common-card.umd.js +6 -6
  9. package/bundles/theseam-ui-common-card.umd.js.map +1 -1
  10. package/bundles/theseam-ui-common-checkbox.umd.js +4 -4
  11. package/bundles/theseam-ui-common-checkbox.umd.js.map +1 -1
  12. package/bundles/theseam-ui-common-confirm-dialog.umd.js +4 -4
  13. package/bundles/theseam-ui-common-confirm-dialog.umd.js.map +1 -1
  14. package/bundles/theseam-ui-common-core.umd.js +4 -4
  15. package/bundles/theseam-ui-common-core.umd.js.map +1 -1
  16. package/bundles/theseam-ui-common-data-exporter.umd.js +5 -5
  17. package/bundles/theseam-ui-common-data-filters.umd.js +9 -6
  18. package/bundles/theseam-ui-common-data-filters.umd.js.map +1 -1
  19. package/bundles/theseam-ui-common-datatable-dynamic.umd.js +7 -7
  20. package/bundles/theseam-ui-common-datatable-dynamic.umd.js.map +1 -1
  21. package/bundles/theseam-ui-common-datatable.umd.js +1353 -375
  22. package/bundles/theseam-ui-common-datatable.umd.js.map +1 -1
  23. package/bundles/theseam-ui-common-dynamic-component-loader.umd.js +5 -7
  24. package/bundles/theseam-ui-common-dynamic-component-loader.umd.js.map +1 -1
  25. package/bundles/theseam-ui-common-dynamic.umd.js +7 -9
  26. package/bundles/theseam-ui-common-dynamic.umd.js.map +1 -1
  27. package/bundles/theseam-ui-common-footer-bar.umd.js +3 -3
  28. package/bundles/theseam-ui-common-form-field-error.umd.js +5 -5
  29. package/bundles/theseam-ui-common-form-field-error.umd.js.map +1 -1
  30. package/bundles/theseam-ui-common-form-field.umd.js +5 -5
  31. package/bundles/theseam-ui-common-form-field.umd.js.map +1 -1
  32. package/bundles/theseam-ui-common-framework.umd.js +28 -30
  33. package/bundles/theseam-ui-common-framework.umd.js.map +1 -1
  34. package/bundles/theseam-ui-common-graphql.umd.js +958 -8
  35. package/bundles/theseam-ui-common-graphql.umd.js.map +1 -1
  36. package/bundles/theseam-ui-common-icon.umd.js +5 -5
  37. package/bundles/theseam-ui-common-icon.umd.js.map +1 -1
  38. package/bundles/theseam-ui-common-layout.umd.js +5 -7
  39. package/bundles/theseam-ui-common-layout.umd.js.map +1 -1
  40. package/bundles/theseam-ui-common-loading.umd.js +4 -4
  41. package/bundles/theseam-ui-common-menu.umd.js +5 -5
  42. package/bundles/theseam-ui-common-menu.umd.js.map +1 -1
  43. package/bundles/theseam-ui-common-modal.umd.js +6 -6
  44. package/bundles/theseam-ui-common-modal.umd.js.map +1 -1
  45. package/bundles/theseam-ui-common-models.umd.js +3 -3
  46. package/bundles/theseam-ui-common-popover.umd.js +4 -4
  47. package/bundles/theseam-ui-common-progress.umd.js +5 -5
  48. package/bundles/theseam-ui-common-progress.umd.js.map +1 -1
  49. package/bundles/theseam-ui-common-scrollbar.umd.js +7 -9
  50. package/bundles/theseam-ui-common-scrollbar.umd.js.map +1 -1
  51. package/bundles/theseam-ui-common-services.umd.js +6 -8
  52. package/bundles/theseam-ui-common-services.umd.js.map +1 -1
  53. package/bundles/theseam-ui-common-shared.umd.js +4 -4
  54. package/bundles/theseam-ui-common-shared.umd.js.map +1 -1
  55. package/bundles/theseam-ui-common-storage.umd.js +5 -7
  56. package/bundles/theseam-ui-common-storage.umd.js.map +1 -1
  57. package/bundles/theseam-ui-common-story-helpers.umd.js +4 -4
  58. package/bundles/theseam-ui-common-story-helpers.umd.js.map +1 -1
  59. package/bundles/theseam-ui-common-tabbed.umd.js +5 -5
  60. package/bundles/theseam-ui-common-tabbed.umd.js.map +1 -1
  61. package/bundles/theseam-ui-common-table-cell-type.umd.js +5 -7
  62. package/bundles/theseam-ui-common-table-cell-type.umd.js.map +1 -1
  63. package/bundles/theseam-ui-common-table-cell-types.umd.js +258 -32
  64. package/bundles/theseam-ui-common-table-cell-types.umd.js.map +1 -1
  65. package/bundles/theseam-ui-common-table.umd.js +5 -5
  66. package/bundles/theseam-ui-common-table.umd.js.map +1 -1
  67. package/bundles/theseam-ui-common-tel-input.umd.js +6 -6
  68. package/bundles/theseam-ui-common-tel-input.umd.js.map +1 -1
  69. package/bundles/theseam-ui-common-testing.umd.js +568 -0
  70. package/bundles/theseam-ui-common-testing.umd.js.map +1 -0
  71. package/bundles/theseam-ui-common-tiled-select.umd.js +56 -39
  72. package/bundles/theseam-ui-common-tiled-select.umd.js.map +1 -1
  73. package/bundles/theseam-ui-common-toggle-edit.umd.js +8 -10
  74. package/bundles/theseam-ui-common-toggle-edit.umd.js.map +1 -1
  75. package/bundles/theseam-ui-common-toggle-group.umd.js +4 -4
  76. package/bundles/theseam-ui-common-toggle-group.umd.js.map +1 -1
  77. package/bundles/theseam-ui-common-unsaved-changes-dialog.umd.js +5 -7
  78. package/bundles/theseam-ui-common-unsaved-changes-dialog.umd.js.map +1 -1
  79. package/bundles/theseam-ui-common-utils.umd.js +174 -81
  80. package/bundles/theseam-ui-common-utils.umd.js.map +1 -1
  81. package/bundles/theseam-ui-common-validators.umd.js +3 -3
  82. package/bundles/theseam-ui-common-viewers.umd.js +6 -8
  83. package/bundles/theseam-ui-common-viewers.umd.js.map +1 -1
  84. package/bundles/theseam-ui-common-widget.umd.js +18 -20
  85. package/bundles/theseam-ui-common-widget.umd.js.map +1 -1
  86. package/bundles/theseam-ui-common.umd.js +2 -2
  87. package/buttons/theseam-ui-common-buttons.metadata.json +1 -1
  88. package/card/theseam-ui-common-card.metadata.json +1 -1
  89. package/data-filters/data-filter.d.ts +10 -6
  90. package/data-filters/theseam-ui-common-data-filters.metadata.json +1 -1
  91. package/datatable/datatable/datatable.component.d.ts +48 -32
  92. package/datatable/datatable-column/datatable-column.component.d.ts +26 -25
  93. package/datatable/datatable-column-preferences/datatable-column-preferences.component.d.ts +7 -5
  94. package/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.d.ts +7 -1
  95. package/datatable/datatable-footer/datatable-footer-tpl.directive.d.ts +5 -0
  96. package/datatable/datatable-footer/datatable-footer.directive.d.ts +6 -0
  97. package/datatable/datatable-menu-bar/datatable-menu-bar.component.d.ts +1 -1
  98. package/datatable/directives/datatable-filter.directive.d.ts +1 -1
  99. package/datatable/models/columns-alteration.d.ts +61 -0
  100. package/datatable/models/columns-alterations/hide-column.columns-alteration.d.ts +15 -0
  101. package/datatable/models/columns-alterations/order.columns-alteration.d.ts +20 -0
  102. package/datatable/models/columns-alterations/sort.columns-alteration.d.ts +14 -0
  103. package/datatable/models/columns-alterations/width.columns-alteration.d.ts +16 -0
  104. package/datatable/models/datatable-accessor.d.ts +5 -3
  105. package/datatable/models/internal-column-props.d.ts +7 -0
  106. package/datatable/models/page-info.d.ts +12 -0
  107. package/datatable/models/preferences-accessor.d.ts +1 -1
  108. package/datatable/models/preferences.d.ts +11 -3
  109. package/datatable/models/sort-item.d.ts +2 -1
  110. package/datatable/public-api.d.ts +2 -0
  111. package/datatable/services/columns-alterations-manager.service.d.ts +39 -0
  112. package/datatable/services/columns-manager.service.d.ts +55 -0
  113. package/datatable/services/datatable-preferences.service.d.ts +10 -7
  114. package/datatable/theseam-ui-common-datatable.d.ts +2 -0
  115. package/datatable/theseam-ui-common-datatable.metadata.json +1 -1
  116. package/datatable/tokens/datatable-preferences-accessor.d.ts +2 -2
  117. package/datatable/utils/create-action-menu-column.d.ts +3 -0
  118. package/datatable/utils/create-checkbox-column.d.ts +3 -0
  119. package/datatable/utils/get-column-prop.d.ts +5 -0
  120. package/datatable/utils/map-columns-alterations-states.d.ts +2 -0
  121. package/datatable/utils/remove-unused-diffs.d.ts +7 -0
  122. package/datatable/utils/set-column-defaults.d.ts +2 -0
  123. package/datatable/utils/translate-templates.d.ts +2 -0
  124. package/datatable/utils/with-stored-column-info.d.ts +2 -2
  125. package/datatable-dynamic/theseam-ui-common-datatable-dynamic.metadata.json +1 -1
  126. package/esm2015/buttons/progress-circle-button/progress-circle-button.component.js +1 -1
  127. package/esm2015/card/card-action/card-action.component.js +1 -1
  128. package/esm2015/card/card-body/card-body.component.js +1 -1
  129. package/esm2015/data-filters/data-filter.js +5 -2
  130. package/esm2015/data-filters/filters/data-filter-search/data-filter-search.component.js +1 -1
  131. package/esm2015/data-filters/filters/data-filter-text/data-filter-text.component.js +1 -1
  132. package/esm2015/datatable/datatable/datatable.component.js +197 -211
  133. package/esm2015/datatable/datatable-action-menu/datatable-action-menu.component.js +1 -1
  134. package/esm2015/datatable/datatable-column/datatable-column.component.js +1 -1
  135. package/esm2015/datatable/datatable-column-preferences/datatable-column-preferences.component.js +42 -19
  136. package/esm2015/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.js +38 -4
  137. package/esm2015/datatable/datatable-export-button/datatable-export-button.component.js +1 -1
  138. package/esm2015/datatable/datatable-footer/datatable-footer-tpl.directive.js +15 -0
  139. package/esm2015/datatable/datatable-footer/datatable-footer.directive.js +18 -0
  140. package/esm2015/datatable/datatable-menu-bar/datatable-menu-bar.component.js +1 -1
  141. package/esm2015/datatable/datatable-menu-bar-column-center/datatable-menu-bar-column-center.component.js +1 -1
  142. package/esm2015/datatable/datatable-menu-bar-column-left/datatable-menu-bar-column-left.component.js +1 -1
  143. package/esm2015/datatable/datatable-menu-bar-column-right/datatable-menu-bar-column-right.component.js +1 -1
  144. package/esm2015/datatable/datatable-menu-bar-row/datatable-menu-bar-row.component.js +1 -1
  145. package/esm2015/datatable/datatable.module.js +7 -1
  146. package/esm2015/datatable/models/columns-alteration.js +38 -0
  147. package/esm2015/datatable/models/columns-alterations/hide-column.columns-alteration.js +38 -0
  148. package/esm2015/datatable/models/columns-alterations/order.columns-alteration.js +81 -0
  149. package/esm2015/datatable/models/columns-alterations/sort.columns-alteration.js +33 -0
  150. package/esm2015/datatable/models/columns-alterations/width.columns-alteration.js +41 -0
  151. package/esm2015/datatable/models/datatable-accessor.js +1 -1
  152. package/esm2015/datatable/models/internal-column-props.js +15 -0
  153. package/esm2015/datatable/models/page-info.js +1 -1
  154. package/esm2015/datatable/models/preferences-accessor.js +1 -1
  155. package/esm2015/datatable/models/preferences.js +6 -2
  156. package/esm2015/datatable/models/sort-item.js +1 -1
  157. package/esm2015/datatable/public-api.js +3 -1
  158. package/esm2015/datatable/services/columns-alterations-manager.service.js +134 -0
  159. package/esm2015/datatable/services/columns-manager.service.js +257 -0
  160. package/esm2015/datatable/services/datatable-preferences.service.js +78 -32
  161. package/esm2015/datatable/theseam-ui-common-datatable.js +3 -1
  162. package/esm2015/datatable/tokens/datatable-preferences-accessor.js +2 -2
  163. package/esm2015/datatable/utils/create-action-menu-column.js +18 -0
  164. package/esm2015/datatable/utils/create-checkbox-column.js +15 -0
  165. package/esm2015/datatable/utils/get-column-prop.js +9 -0
  166. package/esm2015/datatable/utils/map-columns-alterations-states.js +39 -0
  167. package/esm2015/datatable/utils/remove-unused-diffs.js +9 -0
  168. package/esm2015/datatable/utils/set-column-defaults.js +10 -0
  169. package/esm2015/datatable/utils/translate-templates.js +12 -0
  170. package/esm2015/datatable/utils/with-stored-column-info.js +1 -1
  171. package/esm2015/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.js +1 -1
  172. package/esm2015/datatable-dynamic/datatable-dynamic-filter-container/datatable-dynamic-filter-container.component.js +1 -1
  173. package/esm2015/datatable-dynamic/datatable-dynamic.component.js +1 -1
  174. package/esm2015/form-field/form-field.component.js +1 -1
  175. package/esm2015/form-field-error/form-field-error/form-field-error.component.js +1 -1
  176. package/esm2015/framework/base-layout/base-layout.component.js +1 -1
  177. package/esm2015/framework/dashboard/dashboard-widgets/dashboard-widgets.component.js +1 -1
  178. package/esm2015/framework/dynamic-router/hierarchy-router-outlet/hierarchy-router-outlet.component.js +1 -1
  179. package/esm2015/framework/schema-form-controls/schema-form-input/schema-form-input.component.js +1 -1
  180. package/esm2015/framework/schema-form-controls/schema-form-number/schema-form-number.component.js +1 -1
  181. package/esm2015/framework/schema-form-controls/schema-form-select/schema-form-select.component.js +1 -1
  182. package/esm2015/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.js +1 -1
  183. package/esm2015/framework/side-nav/side-nav-item/side-nav-item.component.js +3 -3
  184. package/esm2015/framework/side-nav/side-nav-toggle/side-nav-toggle.component.js +1 -1
  185. package/esm2015/framework/side-nav/side-nav.component.js +1 -1
  186. package/esm2015/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.js +1 -1
  187. package/esm2015/framework/top-bar/top-bar-title/top-bar-title.component.js +1 -1
  188. package/esm2015/framework/top-bar/top-bar.component.js +1 -1
  189. package/esm2015/graphql/datatable/create-page-info-observable.js +38 -0
  190. package/esm2015/graphql/datatable/datatable-graphql-query-ref.js +236 -0
  191. package/esm2015/graphql/datatable/datatable-graphql.service.js +35 -0
  192. package/esm2015/graphql/datatable/datatable-helpers.js +170 -0
  193. package/esm2015/graphql/datatable/get-page-info.js +11 -0
  194. package/esm2015/graphql/datatable/index.js +7 -0
  195. package/esm2015/graphql/datatable/map-filter-states.js +64 -0
  196. package/esm2015/graphql/datatable/map-page-info.js +14 -0
  197. package/esm2015/graphql/datatable/mapper-context.js +2 -0
  198. package/esm2015/graphql/models/gql-datatable-accessor.js +2 -0
  199. package/esm2015/graphql/models/index.js +2 -1
  200. package/esm2015/graphql/models/query-processing-config.js +1 -1
  201. package/esm2015/graphql/public-api.js +2 -1
  202. package/esm2015/graphql/utils/parse-hints.js +3 -3
  203. package/esm2015/icon/icon/icon.component.js +1 -1
  204. package/esm2015/loading/loading/loading.component.js +1 -1
  205. package/esm2015/menu/menu.component.js +1 -1
  206. package/esm2015/modal/modal-body/modal-body.component.js +1 -1
  207. package/esm2015/modal/modal-container/modal-container.component.js +1 -1
  208. package/esm2015/popover/popover/popover.component.js +1 -1
  209. package/esm2015/progress/progress-circle/progress-circle.component.js +1 -1
  210. package/esm2015/tabbed/tabbed.component.js +1 -1
  211. package/esm2015/table/table/table.component.js +1 -1
  212. package/esm2015/table-cell-types/public-api.js +8 -1
  213. package/esm2015/table-cell-types/table-cell-type-currency/table-cell-type-currency-config.js +2 -0
  214. package/esm2015/table-cell-types/table-cell-type-currency/table-cell-type-currency.component.js +74 -0
  215. package/esm2015/table-cell-types/table-cell-type-currency/table-cell-type-currency.js +2 -0
  216. package/esm2015/table-cell-types/table-cell-type-decimal/table-cell-type-decimal-config.js +1 -1
  217. package/esm2015/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.component.js +73 -0
  218. package/esm2015/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.js +2 -0
  219. package/esm2015/table-cell-types/table-cell-type-icon/table-cell-type-icon.component.js +1 -1
  220. package/esm2015/table-cell-types/table-cell-type-integer/table-cell-type-integer-config.js +1 -1
  221. package/esm2015/table-cell-types/table-cell-type-integer/table-cell-type-integer.component.js +71 -0
  222. package/esm2015/table-cell-types/table-cell-type-integer/table-cell-type-integer.js +2 -0
  223. package/esm2015/table-cell-types/table-cell-type-manifests.js +29 -17
  224. package/esm2015/table-cell-types/table-cell-type-progress-circle/table-cell-type-progress-circle.component.js +1 -1
  225. package/esm2015/table-cell-types/table-cell-types.module.js +9 -2
  226. package/esm2015/tel-input/tel-input/tel-input.component.js +1 -1
  227. package/esm2015/testing/current-tick-time.js +16 -0
  228. package/esm2015/testing/fake-toastr.js +29 -0
  229. package/esm2015/testing/get-harness.js +16 -0
  230. package/esm2015/testing/public-api.js +7 -0
  231. package/esm2015/testing/render-story.js +12 -0
  232. package/esm2015/testing/story-expect.js +39 -0
  233. package/esm2015/testing/theseam-ui-common-testing.js +5 -0
  234. package/esm2015/testing/tick-helper.js +74 -0
  235. package/esm2015/tiled-select/components/tiled-select/tiled-select.component.js +25 -17
  236. package/esm2015/tiled-select/components/tiled-select-tile/tiled-select-tile.component.js +5 -2
  237. package/esm2015/tiled-select/components/tiled-select-tile-icon/tiled-select-tile-icon.component.js +1 -1
  238. package/esm2015/tiled-select/public-api.js +2 -1
  239. package/esm2015/tiled-select/tiled-select.models.js +1 -1
  240. package/esm2015/tiled-select/tiled-select.module.js +4 -4
  241. package/esm2015/toggle-edit/toggle-edit-actions-container/toggle-edit-actions-container.component.js +1 -1
  242. package/esm2015/toggle-edit/toggle-edit.component.js +1 -1
  243. package/esm2015/utils/array-move.js +62 -0
  244. package/esm2015/utils/public-api.js +2 -1
  245. package/esm2015/utils/subscriber-count.js +31 -4
  246. package/esm2015/widget/widget/widget.component.js +1 -1
  247. package/esm2015/widget/widget-content-components/widget-button-group/widget-button-group.component.js +1 -1
  248. package/esm2015/widget/widget-content-components/widget-content-header/widget-content-header.component.js +1 -1
  249. package/esm2015/widget/widget-content-components/widget-empty-label/widget-empty-label.component.js +1 -1
  250. package/esm2015/widget/widget-content-components/widget-footer-link/widget-footer-link.component.js +1 -1
  251. package/esm2015/widget/widget-content-components/widget-footer-text/widget-footer-text.component.js +1 -1
  252. package/esm2015/widget/widget-content-components/widget-header-badge/widget-header-badge.component.js +1 -1
  253. package/esm2015/widget/widget-content-components/widget-tile/widget-tile-footer-item/widget-tile-footer-item.component.js +1 -1
  254. package/esm2015/widget/widget-content-components/widget-tile/widget-tile-group/widget-tile-group.component.js +1 -1
  255. package/esm2015/widget/widget-content-components/widget-tile/widget-tile.component.js +1 -1
  256. package/esm2015/widget/widget-content-components/widget-tile-list/widget-tile-list.component.js +1 -1
  257. package/esm2015/widget/widget-footer/widget-footer.component.js +1 -1
  258. package/fesm2015/theseam-ui-common-buttons.js +1 -1
  259. package/fesm2015/theseam-ui-common-card.js +2 -2
  260. package/fesm2015/theseam-ui-common-data-filters.js +6 -3
  261. package/fesm2015/theseam-ui-common-data-filters.js.map +1 -1
  262. package/fesm2015/theseam-ui-common-datatable-dynamic.js +3 -3
  263. package/fesm2015/theseam-ui-common-datatable.js +1136 -316
  264. package/fesm2015/theseam-ui-common-datatable.js.map +1 -1
  265. package/fesm2015/theseam-ui-common-form-field-error.js +1 -1
  266. package/fesm2015/theseam-ui-common-form-field.js +1 -1
  267. package/fesm2015/theseam-ui-common-framework.js +14 -14
  268. package/fesm2015/theseam-ui-common-framework.js.map +1 -1
  269. package/fesm2015/theseam-ui-common-graphql.js +555 -5
  270. package/fesm2015/theseam-ui-common-graphql.js.map +1 -1
  271. package/fesm2015/theseam-ui-common-icon.js +1 -1
  272. package/fesm2015/theseam-ui-common-loading.js +1 -1
  273. package/fesm2015/theseam-ui-common-menu.js +1 -1
  274. package/fesm2015/theseam-ui-common-modal.js +2 -2
  275. package/fesm2015/theseam-ui-common-popover.js +1 -1
  276. package/fesm2015/theseam-ui-common-progress.js +1 -1
  277. package/fesm2015/theseam-ui-common-tabbed.js +1 -1
  278. package/fesm2015/theseam-ui-common-table-cell-types.js +234 -22
  279. package/fesm2015/theseam-ui-common-table-cell-types.js.map +1 -1
  280. package/fesm2015/theseam-ui-common-table.js +1 -1
  281. package/fesm2015/theseam-ui-common-tel-input.js +1 -1
  282. package/fesm2015/theseam-ui-common-testing.js +191 -0
  283. package/fesm2015/theseam-ui-common-testing.js.map +1 -0
  284. package/fesm2015/theseam-ui-common-tiled-select.js +34 -21
  285. package/fesm2015/theseam-ui-common-tiled-select.js.map +1 -1
  286. package/fesm2015/theseam-ui-common-toggle-edit.js +2 -2
  287. package/fesm2015/theseam-ui-common-utils.js +92 -4
  288. package/fesm2015/theseam-ui-common-utils.js.map +1 -1
  289. package/fesm2015/theseam-ui-common-widget.js +12 -12
  290. package/form-field/theseam-ui-common-form-field.metadata.json +1 -1
  291. package/form-field-error/theseam-ui-common-form-field-error.metadata.json +1 -1
  292. package/framework/side-nav/side-nav-item/side-nav-item.component.scss +36 -9
  293. package/framework/theseam-ui-common-framework.metadata.json +1 -1
  294. package/graphql/datatable/create-page-info-observable.d.ts +4 -0
  295. package/graphql/datatable/datatable-graphql-query-ref.d.ts +65 -0
  296. package/graphql/datatable/datatable-graphql.service.d.ts +26 -0
  297. package/graphql/datatable/datatable-helpers.d.ts +12 -0
  298. package/graphql/datatable/get-page-info.d.ts +4 -0
  299. package/graphql/datatable/index.d.ts +6 -0
  300. package/graphql/datatable/map-filter-states.d.ts +18 -0
  301. package/graphql/datatable/map-page-info.d.ts +11 -0
  302. package/graphql/datatable/mapper-context.d.ts +6 -0
  303. package/graphql/models/gql-datatable-accessor.d.ts +9 -0
  304. package/graphql/models/index.d.ts +1 -0
  305. package/graphql/models/query-processing-config.d.ts +4 -0
  306. package/graphql/public-api.d.ts +1 -0
  307. package/graphql/theseam-ui-common-graphql.metadata.json +1 -1
  308. package/icon/theseam-ui-common-icon.metadata.json +1 -1
  309. package/loading/theseam-ui-common-loading.metadata.json +1 -1
  310. package/menu/theseam-ui-common-menu.metadata.json +1 -1
  311. package/modal/theseam-ui-common-modal.metadata.json +1 -1
  312. package/package.json +1 -1
  313. package/popover/theseam-ui-common-popover.metadata.json +1 -1
  314. package/progress/theseam-ui-common-progress.metadata.json +1 -1
  315. package/styles/common/_table.scss +0 -5
  316. package/styles/vendor/ngx-datatable/_ngx-datatable.scss +478 -87
  317. package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +174 -0
  318. package/styles/vendor/ngx-datatable/_themes/dark/_variables.scss +166 -0
  319. package/styles/vendor/ngx-datatable/_themes/material/_variables.scss +165 -0
  320. package/styles/vendor/ngx-datatable/_variables.scss +3 -0
  321. package/tabbed/theseam-ui-common-tabbed.metadata.json +1 -1
  322. package/table/theseam-ui-common-table.metadata.json +1 -1
  323. package/table-cell-types/public-api.d.ts +7 -0
  324. package/table-cell-types/table-cell-type-currency/table-cell-type-currency-config.d.ts +39 -0
  325. package/table-cell-types/table-cell-type-currency/table-cell-type-currency.component.d.ts +19 -0
  326. package/table-cell-types/table-cell-type-currency/table-cell-type-currency.d.ts +3 -0
  327. package/table-cell-types/table-cell-type-decimal/table-cell-type-decimal-config.d.ts +31 -1
  328. package/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.component.d.ts +19 -0
  329. package/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.d.ts +3 -0
  330. package/table-cell-types/table-cell-type-integer/table-cell-type-integer-config.d.ts +23 -1
  331. package/table-cell-types/table-cell-type-integer/table-cell-type-integer.component.d.ts +19 -0
  332. package/table-cell-types/table-cell-type-integer/table-cell-type-integer.d.ts +3 -0
  333. package/table-cell-types/table-cell-type-manifests.d.ts +2 -1
  334. package/table-cell-types/theseam-ui-common-table-cell-types.metadata.json +1 -1
  335. package/tel-input/theseam-ui-common-tel-input.metadata.json +1 -1
  336. package/testing/current-tick-time.d.ts +13 -0
  337. package/testing/fake-toastr.d.ts +30 -0
  338. package/testing/get-harness.d.ts +7 -0
  339. package/testing/package.json +11 -0
  340. package/testing/public-api.d.ts +6 -0
  341. package/testing/render-story.d.ts +2 -0
  342. package/testing/story-expect.d.ts +5 -0
  343. package/{test-helpers/theseam-ui-common-test-helpers.d.ts → testing/theseam-ui-common-testing.d.ts} +0 -0
  344. package/testing/theseam-ui-common-testing.metadata.json +1 -0
  345. package/{test-helpers → testing}/tick-helper.d.ts +0 -0
  346. package/tiled-select/components/tiled-select/tiled-select.component.d.ts +7 -3
  347. package/tiled-select/components/tiled-select-tile/tiled-select-tile.component.d.ts +1 -0
  348. package/tiled-select/theseam-ui-common-tiled-select.metadata.json +1 -1
  349. package/tiled-select/tiled-select.models.d.ts +3 -1
  350. package/toggle-edit/theseam-ui-common-toggle-edit.metadata.json +1 -1
  351. package/utils/array-move.d.ts +49 -0
  352. package/utils/public-api.d.ts +1 -0
  353. package/utils/subscriber-count.d.ts +13 -1
  354. package/utils/theseam-ui-common-utils.metadata.json +1 -1
  355. package/widget/theseam-ui-common-widget.metadata.json +1 -1
  356. package/bundles/theseam-ui-common-test-helpers.umd.js +0 -94
  357. package/bundles/theseam-ui-common-test-helpers.umd.js.map +0 -1
  358. package/esm2015/test-helpers/public-api.js +0 -2
  359. package/esm2015/test-helpers/theseam-ui-common-test-helpers.js +0 -5
  360. package/esm2015/test-helpers/tick-helper.js +0 -74
  361. package/fesm2015/theseam-ui-common-test-helpers.js +0 -81
  362. package/fesm2015/theseam-ui-common-test-helpers.js.map +0 -1
  363. package/test-helpers/package.json +0 -11
  364. package/test-helpers/public-api.d.ts +0 -1
  365. package/test-helpers/theseam-ui-common-test-helpers.metadata.json +0 -1
@@ -0,0 +1,236 @@
1
+ import { BehaviorSubject, defer, from, isObservable, Observable, of, Subject } from 'rxjs';
2
+ import { auditTime, filter, finalize, map, shareReplay, skip, startWith, switchMap, take, tap } from 'rxjs/operators';
3
+ import { NetworkStatus } from '@apollo/client/core';
4
+ import { hasProperty, notNullOrUndefined } from '@theseam/ui-common/utils';
5
+ import { DEFAULT_PAGE_SIZE } from './get-page-info';
6
+ /**
7
+ * Partially wraps ApolloClient's QueryRef with some of our datatable boilerplate.
8
+ *
9
+ * TODO: Decide how to handle/display errors.
10
+ */
11
+ export class DatatableGraphQLQueryRef {
12
+ constructor(
13
+ /** Original ApolloClient's QueryRef. */
14
+ _queryRef,
15
+ /**
16
+ * How long to wait before refetching from an update to the query or variables.
17
+ */
18
+ _updatesPollDelay = 500) {
19
+ this._queryRef = _queryRef;
20
+ this._updatesPollDelay = _updatesPollDelay;
21
+ this._variablesSubject = new BehaviorSubject({});
22
+ this._observingChangesSubject = new BehaviorSubject(false);
23
+ /**
24
+ * Temporary way of tracking total count when paging is disabled.
25
+ */
26
+ this._totalCount = DEFAULT_PAGE_SIZE;
27
+ this._variablesUpdatePending = false;
28
+ this._variablesSubject.next(this._queryRef.obsQuery.options.variables || {});
29
+ // this._getValueChanges().subscribe(v => this._logNetworkStatus(v.networkStatus))
30
+ this._valueChanges = defer(() => {
31
+ // console.log('Observing value changes')
32
+ const varChangesSub = this._variablesSubject.pipe(skip(1), tap(() => {
33
+ this._variablesUpdatePending = true;
34
+ }), auditTime(this._updatesPollDelay), finalize(() => {
35
+ // If the query stopped being observed before setting the pending
36
+ // variables, set them now.
37
+ if (this._variablesUpdatePending) {
38
+ this.refetch();
39
+ this._variablesUpdatePending = false;
40
+ }
41
+ })).subscribe(variables => {
42
+ // console.log('set vars', variables)
43
+ this._setVariablesImmediate(variables);
44
+ // this.refetch()
45
+ this._variablesUpdatePending = false;
46
+ });
47
+ this._observingChanges = true;
48
+ return this._queryRef.valueChanges.pipe(
49
+ // tap(v => {
50
+ // console.log('v', v)
51
+ // }),
52
+ filter(v => v.networkStatus === NetworkStatus.ready), finalize(() => {
53
+ // console.log('Done observing value changes')
54
+ varChangesSub.unsubscribe();
55
+ this._observingChanges = false;
56
+ }));
57
+ }).pipe(
58
+ // share()
59
+ shareReplay({ bufferSize: 1, refCount: true }));
60
+ this.loading$ = this._observingChangesSubject.pipe(switchMap(observingChanges => {
61
+ if (!observingChanges) {
62
+ return of(false);
63
+ }
64
+ return this._valueChanges.pipe(map(result => result.loading), startWith(this._queryRef.getCurrentResult().loading), auditTime(0), shareReplay({ bufferSize: 1, refCount: true }));
65
+ }));
66
+ }
67
+ get _observingChanges() { return this._observingChangesSubject.value; }
68
+ set _observingChanges(value) { this._observingChangesSubject.next(value); }
69
+ get updatesPollDelay() { return this._updatesPollDelay; }
70
+ get variablesUpdatePending() { return this._variablesUpdatePending; }
71
+ _logNetworkStatus(status) {
72
+ switch (status) {
73
+ case NetworkStatus.loading:
74
+ console.log('%cNetworkStatus: ', 'color:limegreen', 'Loading');
75
+ break;
76
+ case NetworkStatus.setVariables:
77
+ console.log('%cNetworkStatus: ', 'color:limegreen', 'SetVariables');
78
+ break;
79
+ case NetworkStatus.fetchMore:
80
+ console.log('%cNetworkStatus: ', 'color:limegreen', 'FetchMore');
81
+ break;
82
+ case NetworkStatus.refetch:
83
+ console.log('%cNetworkStatus: ', 'color:limegreen', 'Refetch');
84
+ break;
85
+ case NetworkStatus.poll:
86
+ console.log('%cNetworkStatus: ', 'color:limegreen', 'Poll');
87
+ break;
88
+ case NetworkStatus.ready:
89
+ console.log('%cNetworkStatus: ', 'color:limegreen', 'Ready');
90
+ break;
91
+ case NetworkStatus.error:
92
+ console.log('%cNetworkStatus: ', 'color:limegreen', 'Error');
93
+ break;
94
+ default: console.log('%cNetworkStatus: ', 'color:red', 'Unknown');
95
+ }
96
+ }
97
+ rows(mapper) {
98
+ return this._rowsObservable(mapper);
99
+ }
100
+ _rowsObservable(mapper) {
101
+ return new Observable((subscriber) => {
102
+ // const rowsBufferSubject = new BehaviorSubject<TRow[]>([])
103
+ // console.log('obs _rowsObservable')
104
+ let rowsBuffer = [];
105
+ // const rowsBufferSubject = new ReplaySubject<TRow[]>()
106
+ const rowsBufferSubject = new Subject();
107
+ const querySub = this._valueChanges.pipe(switchMap(result => {
108
+ if (result.data === undefined) {
109
+ return of([]);
110
+ }
111
+ return this._resolveRowMapper(mapper(result.data)).pipe(tap(mapperResult => {
112
+ var _a, _b;
113
+ // console.log('mapperResult', mapperResult)
114
+ if (this._needsToRequeryWithAllRecords(mapperResult)) {
115
+ this.patchVariables({ take: mapperResult.totalCount });
116
+ }
117
+ if (hasProperty(mapperResult, 'totalCount')) {
118
+ this._totalCount = mapperResult.totalCount;
119
+ }
120
+ // let rows = rowsBufferSubject.value || []
121
+ let rows = rowsBuffer || [];
122
+ const hasTotalCount = mapperResult.totalCount !== undefined && mapperResult.totalCount !== null;
123
+ // If the rows buffer is not the same size as the totalCount, create a
124
+ // new buffer.
125
+ //
126
+ // TODO: Find out if this is resetting the buffer too eagerly.
127
+ // ApolloClient may have a better solution.
128
+ if (hasTotalCount) {
129
+ if (mapperResult.totalCount !== rows.length) {
130
+ rows = new Array(mapperResult.totalCount || 0);
131
+ }
132
+ let startIndex = (_a = this.getVariables().skip) !== null && _a !== void 0 ? _a : 0;
133
+ if ((_b = this.getQueryProcessingConfig()) === null || _b === void 0 ? void 0 : _b.disablePaging) {
134
+ startIndex = 0;
135
+ }
136
+ // Insert rows into buffer location.
137
+ rows.splice(startIndex, mapperResult.rows.length, ...mapperResult.rows);
138
+ rows = [...rows];
139
+ }
140
+ else {
141
+ rows = [...mapperResult.rows];
142
+ }
143
+ rowsBuffer = rows;
144
+ rowsBufferSubject.next(rows);
145
+ }));
146
+ })).subscribe();
147
+ const rowsSub = rowsBufferSubject.subscribe(subscriber);
148
+ return () => {
149
+ // console.log('unsub')
150
+ querySub.unsubscribe();
151
+ rowsSub.unsubscribe();
152
+ rowsBufferSubject.next([]);
153
+ rowsBufferSubject.complete();
154
+ };
155
+ });
156
+ }
157
+ _needsToRequeryWithAllRecords(data) {
158
+ var _a;
159
+ if (!((_a = this.getQueryProcessingConfig()) === null || _a === void 0 ? void 0 : _a.disablePaging)) {
160
+ return false;
161
+ }
162
+ return hasProperty(data, 'totalCount') &&
163
+ hasProperty(data, 'rows') &&
164
+ Array.isArray(data.rows) &&
165
+ data.totalCount > data.rows.length &&
166
+ this._totalCount !== data.totalCount;
167
+ }
168
+ _resolveRowMapper(mapperReturn) {
169
+ if (isObservable(mapperReturn)) {
170
+ return mapperReturn.pipe(take(1));
171
+ }
172
+ return from(Promise.resolve(mapperReturn));
173
+ }
174
+ getVariables() {
175
+ // The types aren't accurate or Apollo has a bug, so I had to use `any`.
176
+ // return (this._queryRef as any).obsQuery.options.variables || {}
177
+ // TODO: Look into debouncing our variable setting, while still depending on Apollo for managing them.
178
+ return this._variablesSubject.value;
179
+ }
180
+ _setVariablesImmediate(variables) {
181
+ const _vars = this._withVariableOverrides(variables);
182
+ return this._queryRef.setVariables(_vars || {});
183
+ }
184
+ _patchVariablesImmediate(variables) {
185
+ const _variables = Object.assign(Object.assign({}, this.getVariables()), variables);
186
+ const _vars = this._withVariableOverrides(_variables);
187
+ return this._queryRef.setVariables(_vars || {});
188
+ }
189
+ setVariables(variables) {
190
+ this._variablesSubject.next(variables);
191
+ if (!this._observingChanges) {
192
+ this._setVariablesImmediate(variables);
193
+ }
194
+ }
195
+ patchVariables(variables) {
196
+ const _variables = Object.assign(Object.assign({}, this.getVariables()), variables);
197
+ this._variablesSubject.next(_variables);
198
+ if (!this._observingChanges) {
199
+ this._setVariablesImmediate(_variables);
200
+ }
201
+ }
202
+ refetch(variables) {
203
+ const _vars = this._withVariableOverrides(variables);
204
+ return this._queryRef.refetch(_vars);
205
+ }
206
+ setQuery(query, triggerRefetch = false) {
207
+ this._queryRef.setOptions({ query });
208
+ if (triggerRefetch) {
209
+ // TODO: Consider refactoring the refetch process. I can't call Apollo's
210
+ // refetch directly, because I want it to share the update triggered
211
+ // polling delay with the setting of variables.
212
+ // this._queryRef.refetch(this.getVariables())
213
+ // Fake variables update to trigger a refetch that shares it's refetch delay.
214
+ this.setVariables(this.getVariables());
215
+ }
216
+ }
217
+ getOptions() {
218
+ return this._queryRef.obsQuery.options;
219
+ }
220
+ getQueryProcessingConfig() {
221
+ var _a, _b;
222
+ return (_b = (_a = this.getOptions()) === null || _a === void 0 ? void 0 : _a.context) === null || _b === void 0 ? void 0 : _b.queryProcessingConfig;
223
+ }
224
+ _withVariableOverrides(variables) {
225
+ var _a, _b;
226
+ if (!notNullOrUndefined(variables) && !((_a = this.getQueryProcessingConfig()) === null || _a === void 0 ? void 0 : _a.disablePaging)) {
227
+ return undefined;
228
+ }
229
+ const _vars = Object.assign({}, (variables || {}));
230
+ if ((_b = this.getQueryProcessingConfig()) === null || _b === void 0 ? void 0 : _b.disablePaging) {
231
+ _vars.take = this._totalCount;
232
+ }
233
+ return _vars;
234
+ }
235
+ }
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXRhYmxlLWdyYXBocWwtcXVlcnktcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2dyYXBocWwvZGF0YXRhYmxlL2RhdGF0YWJsZS1ncmFwaHFsLXF1ZXJ5LXJlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQWlCLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQTtBQUNySCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFTLFdBQVcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFNUgsT0FBTyxFQUFtQyxhQUFhLEVBQXFCLE1BQU0scUJBQXFCLENBQUE7QUFDdkcsT0FBTyxFQUFFLFdBQVcsRUFBcUIsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUs3RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQXFCbkQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyx3QkFBd0I7SUFzQm5DO0lBQ0Usd0NBQXdDO0lBQ3ZCLFNBQXNDO0lBQ3ZEOztPQUVHO0lBQ2Msb0JBQTRCLEdBQUc7UUFKL0IsY0FBUyxHQUFULFNBQVMsQ0FBNkI7UUFJdEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFjO1FBMUJqQyxzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBYSxFQUFnQixDQUFDLENBQUE7UUFDckUsNkJBQXdCLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUE7UUFFL0U7O1dBRUc7UUFDSyxnQkFBVyxHQUFXLGlCQUFpQixDQUFBO1FBS3ZDLDRCQUF1QixHQUFHLEtBQUssQ0FBQTtRQWlCckMsSUFB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RSxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBQ3BDLElBQUksY0FBYyxFQUFFO1lBQ2xCLHdFQUF3RTtZQUN4RSxvRUFBb0U7WUFDcEUsK0NBQStDO1lBQy9DLDhDQUE4QztZQUU5Qyw2RUFBNkU7WUFDN0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQTtTQUN2QztJQUNILENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBUSxJQUFJLENBQUMsU0FBaUIsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFBO0lBQ2pELENBQUM7SUFFTSx3QkFBd0I7O1FBQzdCLE9BQU8sTUFBQSxNQUFBLElBQUksQ0FBQyxVQUFVLEVBQUUsMENBQUUsT0FBTywwQ0FBRSxxQkFBcUIsQ0FBQTtJQUMxRCxDQUFDO0lBRU8sc0JBQXNCLENBQUMsU0FBc0I7O1FBQ25ELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBQSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsMENBQUUsYUFBYSxDQUFDLEVBQUU7WUFDdkYsT0FBTyxTQUFTLENBQUE7U0FDakI7UUFFRCxNQUFNLEtBQUssR0FBRyxrQkFBSyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBZ0IsQ0FBQTtRQUNwRCxJQUFJLE1BQUEsSUFBSSxDQUFDLHdCQUF3QixFQUFFLDBDQUFFLGFBQWEsRUFBRTtZQUNsRCxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUE7U0FDOUI7UUFDRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZGVmZXIsIGZyb20sIGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmliZXIgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgYXVkaXRUaW1lLCBmaWx0ZXIsIGZpbmFsaXplLCBtYXAsIHNoYXJlLCBzaGFyZVJlcGxheSwgc2tpcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBBcG9sbG9RdWVyeVJlc3VsdCwgRG9jdW1lbnROb2RlLCBOZXR3b3JrU3RhdHVzLCBUeXBlZERvY3VtZW50Tm9kZSB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnXG5pbXBvcnQgeyBoYXNQcm9wZXJ0eSwgaXNOdWxsT3JVbmRlZmluZWQsIG5vdE51bGxPclVuZGVmaW5lZCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi91dGlscydcbmltcG9ydCB7IFF1ZXJ5UmVmIH0gZnJvbSAnYXBvbGxvLWFuZ3VsYXInXG5pbXBvcnQgeyBFbXB0eU9iamVjdCwgV2F0Y2hRdWVyeU9wdGlvbnMgfSBmcm9tICdhcG9sbG8tYW5ndWxhci90eXBlcydcblxuaW1wb3J0IHsgUXVlcnlQcm9jZXNzaW5nQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzJ1xuaW1wb3J0IHsgREVGQVVMVF9QQUdFX1NJWkUgfSBmcm9tICcuL2dldC1wYWdlLWluZm8nXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXRhYmxlR3JhcGhRTERhdGFNYXBwZXJSZXN1bHQ8VFJvdyA9IEVtcHR5T2JqZWN0PiB7XG4gIHJvd3M6IFRSb3dbXVxuXG4gIC8qKlxuICAgKiBJZiBkYXRhIGlzIHBhZ2VkLCB0aGlzIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgdW5wYWdlZCByb3dzLlxuICAgKi9cbiAgdG90YWxDb3VudD86IG51bWJlclxufVxuXG5leHBvcnQgdHlwZSBEYXRhdGFibGVHcmFwaFFMRGF0YU1hcHBlcjxURGF0YSwgVFJvdyA9IEVtcHR5T2JqZWN0PiA9IChkYXRhOiBURGF0YSkgPT5cbiAgICAoRGF0YXRhYmxlR3JhcGhRTERhdGFNYXBwZXJSZXN1bHQ8VFJvdz4gfFxuICAgIFByb21pc2U8RGF0YXRhYmxlR3JhcGhRTERhdGFNYXBwZXJSZXN1bHQ8VFJvdz4+IHxcbiAgICBPYnNlcnZhYmxlPERhdGF0YWJsZUdyYXBoUUxEYXRhTWFwcGVyUmVzdWx0PFRSb3c+PilcblxuZXhwb3J0IHR5cGUgRGF0YXRhYmxlR3JhcGhRTFZhcmlhYmxlcyA9IHtcbiAgc2tpcD86IG51bWJlclxuICB0YWtlPzogbnVtYmVyXG59ICYgRW1wdHlPYmplY3RcblxuLyoqXG4gKiBQYXJ0aWFsbHkgd3JhcHMgQXBvbGxvQ2xpZW50J3MgUXVlcnlSZWYgd2l0aCBzb21lIG9mIG91ciBkYXRhdGFibGUgYm9pbGVycGxhdGUuXG4gKlxuICogVE9ETzogRGVjaWRlIGhvdyB0byBoYW5kbGUvZGlzcGxheSBlcnJvcnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhdGFibGVHcmFwaFFMUXVlcnlSZWY8VERhdGEsIFRWYXJpYWJsZXMgZXh0ZW5kcyBEYXRhdGFibGVHcmFwaFFMVmFyaWFibGVzID0gRW1wdHlPYmplY3QsIFRSb3cgPSBFbXB0eU9iamVjdD4ge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZhcmlhYmxlc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRWYXJpYWJsZXM+KHt9IGFzIFRWYXJpYWJsZXMpXG4gIHByaXZhdGUgcmVhZG9ubHkgX29ic2VydmluZ0NoYW5nZXNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSlcblxuICAvKipcbiAgICogVGVtcG9yYXJ5IHdheSBvZiB0cmFja2luZyB0b3RhbCBjb3VudCB3aGVuIHBhZ2luZyBpcyBkaXNhYmxlZC5cbiAgICovXG4gIHByaXZhdGUgX3RvdGFsQ291bnQ6IG51bWJlciA9IERFRkFVTFRfUEFHRV9TSVpFXG5cbiAgcHJpdmF0ZSBnZXQgX29ic2VydmluZ0NoYW5nZXMoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9vYnNlcnZpbmdDaGFuZ2VzU3ViamVjdC52YWx1ZSB9XG4gIHByaXZhdGUgc2V0IF9vYnNlcnZpbmdDaGFuZ2VzKHZhbHVlOiBib29sZWFuKSB7IHRoaXMuX29ic2VydmluZ0NoYW5nZXNTdWJqZWN0Lm5leHQodmFsdWUpIH1cblxuICBwcml2YXRlIF92YXJpYWJsZXNVcGRhdGVQZW5kaW5nID0gZmFsc2VcblxuICBwcml2YXRlIHJlYWRvbmx5IF92YWx1ZUNoYW5nZXM6IE9ic2VydmFibGU8QXBvbGxvUXVlcnlSZXN1bHQ8VERhdGE+PlxuXG4gIHB1YmxpYyByZWFkb25seSBsb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPlxuXG4gIHB1YmxpYyBnZXQgdXBkYXRlc1BvbGxEZWxheSgpOiBudW1iZXIgeyByZXR1cm4gdGhpcy5fdXBkYXRlc1BvbGxEZWxheSB9XG4gIHB1YmxpYyBnZXQgdmFyaWFibGVzVXBkYXRlUGVuZGluZygpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX3ZhcmlhYmxlc1VwZGF0ZVBlbmRpbmcgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8qKiBPcmlnaW5hbCBBcG9sbG9DbGllbnQncyBRdWVyeVJlZi4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9xdWVyeVJlZjogUXVlcnlSZWY8VERhdGEsIFRWYXJpYWJsZXM+LFxuICAgIC8qKlxuICAgICAqIEhvdyBsb25nIHRvIHdhaXQgYmVmb3JlIHJlZmV0Y2hpbmcgZnJvbSBhbiB1cGRhdGUgdG8gdGhlIHF1ZXJ5IG9yIHZhcmlhYmxlcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF91cGRhdGVzUG9sbERlbGF5OiBudW1iZXIgPSA1MDBcbiAgKSB7XG4gICAgdGhpcy5fdmFyaWFibGVzU3ViamVjdC5uZXh0KCh0aGlzLl9xdWVyeVJlZiBhcyBhbnkpLm9ic1F1ZXJ5Lm9wdGlvbnMudmFyaWFibGVzIHx8IHt9KVxuICAgIC8vIHRoaXMuX2dldFZhbHVlQ2hhbmdlcygpLnN1YnNjcmliZSh2ID0+IHRoaXMuX2xvZ05ldHdvcmtTdGF0dXModi5uZXR3b3JrU3RhdHVzKSlcblxuICAgIHRoaXMuX3ZhbHVlQ2hhbmdlcyA9IGRlZmVyKCgpID0+IHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdPYnNlcnZpbmcgdmFsdWUgY2hhbmdlcycpXG4gICAgICBjb25zdCB2YXJDaGFuZ2VzU3ViID0gdGhpcy5fdmFyaWFibGVzU3ViamVjdC5waXBlKFxuICAgICAgICBza2lwKDEpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX3ZhcmlhYmxlc1VwZGF0ZVBlbmRpbmcgPSB0cnVlXG4gICAgICAgIH0pLFxuICAgICAgICBhdWRpdFRpbWUodGhpcy5fdXBkYXRlc1BvbGxEZWxheSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAvLyBJZiB0aGUgcXVlcnkgc3RvcHBlZCBiZWluZyBvYnNlcnZlZCBiZWZvcmUgc2V0dGluZyB0aGUgcGVuZGluZ1xuICAgICAgICAgIC8vIHZhcmlhYmxlcywgc2V0IHRoZW0gbm93LlxuICAgICAgICAgIGlmICh0aGlzLl92YXJpYWJsZXNVcGRhdGVQZW5kaW5nKSB7XG4gICAgICAgICAgICB0aGlzLnJlZmV0Y2goKVxuICAgICAgICAgICAgdGhpcy5fdmFyaWFibGVzVXBkYXRlUGVuZGluZyA9IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKS5zdWJzY3JpYmUodmFyaWFibGVzID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ3NldCB2YXJzJywgdmFyaWFibGVzKVxuICAgICAgICB0aGlzLl9zZXRWYXJpYWJsZXNJbW1lZGlhdGUodmFyaWFibGVzKVxuICAgICAgICAvLyB0aGlzLnJlZmV0Y2goKVxuICAgICAgICB0aGlzLl92YXJpYWJsZXNVcGRhdGVQZW5kaW5nID0gZmFsc2VcbiAgICAgIH0pXG4gICAgICB0aGlzLl9vYnNlcnZpbmdDaGFuZ2VzID0gdHJ1ZVxuXG4gICAgICByZXR1cm4gdGhpcy5fcXVlcnlSZWYudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgIC8vIHRhcCh2ID0+IHtcbiAgICAgICAgLy8gICBjb25zb2xlLmxvZygndicsIHYpXG4gICAgICAgIC8vIH0pLFxuICAgICAgICBmaWx0ZXIodiA9PiB2Lm5ldHdvcmtTdGF0dXMgPT09IE5ldHdvcmtTdGF0dXMucmVhZHkpLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ0RvbmUgb2JzZXJ2aW5nIHZhbHVlIGNoYW5nZXMnKVxuICAgICAgICAgIHZhckNoYW5nZXNTdWIudW5zdWJzY3JpYmUoKVxuICAgICAgICAgIHRoaXMuX29ic2VydmluZ0NoYW5nZXMgPSBmYWxzZVxuICAgICAgICB9KVxuICAgICAgKVxuICAgIH0pLnBpcGUoXG4gICAgICAvLyBzaGFyZSgpXG4gICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gICAgKVxuXG4gICAgdGhpcy5sb2FkaW5nJCA9IHRoaXMuX29ic2VydmluZ0NoYW5nZXNTdWJqZWN0LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAob2JzZXJ2aW5nQ2hhbmdlcyA9PiB7XG4gICAgICAgIGlmICghb2JzZXJ2aW5nQ2hhbmdlcykge1xuICAgICAgICAgIHJldHVybiBvZihmYWxzZSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICBtYXAocmVzdWx0ID0+IHJlc3VsdC5sb2FkaW5nKSxcbiAgICAgICAgICBzdGFydFdpdGgodGhpcy5fcXVlcnlSZWYuZ2V0Q3VycmVudFJlc3VsdCgpLmxvYWRpbmcpLFxuICAgICAgICAgIGF1ZGl0VGltZSgwKSxcbiAgICAgICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBfbG9nTmV0d29ya1N0YXR1cyhzdGF0dXM6IE5ldHdvcmtTdGF0dXMpIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSBOZXR3b3JrU3RhdHVzLmxvYWRpbmc6IGNvbnNvbGUubG9nKCclY05ldHdvcmtTdGF0dXM6ICcsICdjb2xvcjpsaW1lZ3JlZW4nLCAnTG9hZGluZycpOyBicmVha1xuICAgICAgY2FzZSBOZXR3b3JrU3RhdHVzLnNldFZhcmlhYmxlczogY29uc29sZS5sb2coJyVjTmV0d29ya1N0YXR1czogJywgJ2NvbG9yOmxpbWVncmVlbicsICdTZXRWYXJpYWJsZXMnKTsgYnJlYWtcbiAgICAgIGNhc2UgTmV0d29ya1N0YXR1cy5mZXRjaE1vcmU6IGNvbnNvbGUubG9nKCclY05ldHdvcmtTdGF0dXM6ICcsICdjb2xvcjpsaW1lZ3JlZW4nLCAnRmV0Y2hNb3JlJyk7IGJyZWFrXG4gICAgICBjYXNlIE5ldHdvcmtTdGF0dXMucmVmZXRjaDogY29uc29sZS5sb2coJyVjTmV0d29ya1N0YXR1czogJywgJ2NvbG9yOmxpbWVncmVlbicsICdSZWZldGNoJyk7IGJyZWFrXG4gICAgICBjYXNlIE5ldHdvcmtTdGF0dXMucG9sbDogY29uc29sZS5sb2coJyVjTmV0d29ya1N0YXR1czogJywgJ2NvbG9yOmxpbWVncmVlbicsICdQb2xsJyk7IGJyZWFrXG4gICAgICBjYXNlIE5ldHdvcmtTdGF0dXMucmVhZHk6IGNvbnNvbGUubG9nKCclY05ldHdvcmtTdGF0dXM6ICcsICdjb2xvcjpsaW1lZ3JlZW4nLCAnUmVhZHknKTsgYnJlYWtcbiAgICAgIGNhc2UgTmV0d29ya1N0YXR1cy5lcnJvcjogY29uc29sZS5sb2coJyVjTmV0d29ya1N0YXR1czogJywgJ2NvbG9yOmxpbWVncmVlbicsICdFcnJvcicpOyBicmVha1xuICAgICAgZGVmYXVsdDogY29uc29sZS5sb2coJyVjTmV0d29ya1N0YXR1czogJywgJ2NvbG9yOnJlZCcsICdVbmtub3duJylcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcm93cyhtYXBwZXI6IERhdGF0YWJsZUdyYXBoUUxEYXRhTWFwcGVyPFREYXRhLCBUUm93Pik6IE9ic2VydmFibGU8VFJvd1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3Jvd3NPYnNlcnZhYmxlKG1hcHBlcilcbiAgfVxuXG4gIHByaXZhdGUgX3Jvd3NPYnNlcnZhYmxlKG1hcHBlcjogRGF0YXRhYmxlR3JhcGhRTERhdGFNYXBwZXI8VERhdGEsIFRSb3c+KTogT2JzZXJ2YWJsZTxUUm93W10+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8VFJvd1tdPigoc3Vic2NyaWJlcjogU3Vic2NyaWJlcjxUUm93W10+KSA9PiB7XG4gICAgICAvLyBjb25zdCByb3dzQnVmZmVyU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VFJvd1tdPihbXSlcblxuICAgICAgLy8gY29uc29sZS5sb2coJ29icyBfcm93c09ic2VydmFibGUnKVxuXG4gICAgICBsZXQgcm93c0J1ZmZlcjogVFJvd1tdID0gW11cbiAgICAgIC8vIGNvbnN0IHJvd3NCdWZmZXJTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8VFJvd1tdPigpXG4gICAgICBjb25zdCByb3dzQnVmZmVyU3ViamVjdCA9IG5ldyBTdWJqZWN0PFRSb3dbXT4oKVxuXG4gICAgICBjb25zdCBxdWVyeVN1YiA9IHRoaXMuX3ZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAocmVzdWx0ID0+IHtcbiAgICAgICAgICBpZiAocmVzdWx0LmRhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKFtdKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0aGlzLl9yZXNvbHZlUm93TWFwcGVyKG1hcHBlcihyZXN1bHQuZGF0YSkpLnBpcGUoXG4gICAgICAgICAgICB0YXAobWFwcGVyUmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ21hcHBlclJlc3VsdCcsIG1hcHBlclJlc3VsdClcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX25lZWRzVG9SZXF1ZXJ5V2l0aEFsbFJlY29yZHMobWFwcGVyUmVzdWx0KSkge1xuICAgICAgICAgICAgICAgIHRoaXMucGF0Y2hWYXJpYWJsZXMoeyB0YWtlOiBtYXBwZXJSZXN1bHQudG90YWxDb3VudCB9IGFzIGFueSlcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChoYXNQcm9wZXJ0eShtYXBwZXJSZXN1bHQsICd0b3RhbENvdW50JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90b3RhbENvdW50ID0gbWFwcGVyUmVzdWx0LnRvdGFsQ291bnRcbiAgICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgICAgLy8gbGV0IHJvd3MgPSByb3dzQnVmZmVyU3ViamVjdC52YWx1ZSB8fCBbXVxuICAgICAgICAgICAgICBsZXQgcm93cyA9IHJvd3NCdWZmZXIgfHwgW11cblxuICAgICAgICAgICAgICBjb25zdCBoYXNUb3RhbENvdW50ID0gbWFwcGVyUmVzdWx0LnRvdGFsQ291bnQgIT09IHVuZGVmaW5lZCAmJiBtYXBwZXJSZXN1bHQudG90YWxDb3VudCAhPT0gbnVsbFxuXG4gICAgICAgICAgICAgIC8vIElmIHRoZSByb3dzIGJ1ZmZlciBpcyBub3QgdGhlIHNhbWUgc2l6ZSBhcyB0aGUgdG90YWxDb3VudCwgY3JlYXRlIGFcbiAgICAgICAgICAgICAgLy8gbmV3IGJ1ZmZlci5cbiAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgLy8gVE9ETzogRmluZCBvdXQgaWYgdGhpcyBpcyByZXNldHRpbmcgdGhlIGJ1ZmZlciB0b28gZWFnZXJseS5cbiAgICAgICAgICAgICAgLy8gQXBvbGxvQ2xpZW50IG1heSBoYXZlIGEgYmV0dGVyIHNvbHV0aW9uLlxuICAgICAgICAgICAgICBpZiAoaGFzVG90YWxDb3VudCkge1xuICAgICAgICAgICAgICAgIGlmIChtYXBwZXJSZXN1bHQudG90YWxDb3VudCAhPT0gcm93cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgIHJvd3MgPSBuZXcgQXJyYXk8VFJvdz4obWFwcGVyUmVzdWx0LnRvdGFsQ291bnQgfHwgMClcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgc3RhcnRJbmRleCA9IHRoaXMuZ2V0VmFyaWFibGVzKCkuc2tpcCA/PyAwXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2V0UXVlcnlQcm9jZXNzaW5nQ29uZmlnKCk/LmRpc2FibGVQYWdpbmcpIHtcbiAgICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSAwXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gSW5zZXJ0IHJvd3MgaW50byBidWZmZXIgbG9jYXRpb24uXG4gICAgICAgICAgICAgICAgcm93cy5zcGxpY2Uoc3RhcnRJbmRleCwgbWFwcGVyUmVzdWx0LnJvd3MubGVuZ3RoLCAuLi5tYXBwZXJSZXN1bHQucm93cylcblxuICAgICAgICAgICAgICAgIHJvd3MgPSBbIC4uLnJvd3MgXVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJvd3MgPSBbIC4uLm1hcHBlclJlc3VsdC5yb3dzIF1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJvd3NCdWZmZXIgPSByb3dzXG4gICAgICAgICAgICAgIHJvd3NCdWZmZXJTdWJqZWN0Lm5leHQocm93cylcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICB9KVxuICAgICAgKS5zdWJzY3JpYmUoKVxuXG4gICAgICBjb25zdCByb3dzU3ViID0gcm93c0J1ZmZlclN1YmplY3Quc3Vic2NyaWJlKHN1YnNjcmliZXIpXG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCd1bnN1YicpXG4gICAgICAgIHF1ZXJ5U3ViLnVuc3Vic2NyaWJlKClcbiAgICAgICAgcm93c1N1Yi51bnN1YnNjcmliZSgpXG5cbiAgICAgICAgcm93c0J1ZmZlclN1YmplY3QubmV4dChbXSlcbiAgICAgICAgcm93c0J1ZmZlclN1YmplY3QuY29tcGxldGUoKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIF9uZWVkc1RvUmVxdWVyeVdpdGhBbGxSZWNvcmRzKGRhdGE6IERhdGF0YWJsZUdyYXBoUUxEYXRhTWFwcGVyUmVzdWx0PFRSb3c+KTogYm9vbGVhbiB7XG4gICAgaWYgKCEodGhpcy5nZXRRdWVyeVByb2Nlc3NpbmdDb25maWcoKT8uZGlzYWJsZVBhZ2luZykpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHJldHVybiBoYXNQcm9wZXJ0eShkYXRhLCAndG90YWxDb3VudCcpICYmXG4gICAgICBoYXNQcm9wZXJ0eShkYXRhLCAncm93cycpICYmXG4gICAgICBBcnJheS5pc0FycmF5KGRhdGEucm93cykgJiZcbiAgICAgIGRhdGEudG90YWxDb3VudCA+IGRhdGEucm93cy5sZW5ndGggJiZcbiAgICAgIHRoaXMuX3RvdGFsQ291bnQgIT09IGRhdGEudG90YWxDb3VudFxuICB9XG5cbiAgcHJpdmF0ZSBfcmVzb2x2ZVJvd01hcHBlcihcbiAgICBtYXBwZXJSZXR1cm46IFJldHVyblR5cGU8RGF0YXRhYmxlR3JhcGhRTERhdGFNYXBwZXI8VERhdGEsIFRSb3c+PlxuICApOiBPYnNlcnZhYmxlPERhdGF0YWJsZUdyYXBoUUxEYXRhTWFwcGVyUmVzdWx0PFRSb3c+PiB7XG4gICAgaWYgKGlzT2JzZXJ2YWJsZShtYXBwZXJSZXR1cm4pKSB7XG4gICAgICByZXR1cm4gbWFwcGVyUmV0dXJuLnBpcGUodGFrZSgxKSlcbiAgICB9XG5cbiAgICByZXR1cm4gZnJvbShQcm9taXNlLnJlc29sdmUobWFwcGVyUmV0dXJuKSlcbiAgfVxuXG4gIHB1YmxpYyBnZXRWYXJpYWJsZXMoKTogVFZhcmlhYmxlcyB7XG4gICAgLy8gVGhlIHR5cGVzIGFyZW4ndCBhY2N1cmF0ZSBvciBBcG9sbG8gaGFzIGEgYnVnLCBzbyBJIGhhZCB0byB1c2UgYGFueWAuXG4gICAgLy8gcmV0dXJuICh0aGlzLl9xdWVyeVJlZiBhcyBhbnkpLm9ic1F1ZXJ5Lm9wdGlvbnMudmFyaWFibGVzIHx8IHt9XG5cbiAgICAvLyBUT0RPOiBMb29rIGludG8gZGVib3VuY2luZyBvdXIgdmFyaWFibGUgc2V0dGluZywgd2hpbGUgc3RpbGwgZGVwZW5kaW5nIG9uIEFwb2xsbyBmb3IgbWFuYWdpbmcgdGhlbS5cbiAgICByZXR1cm4gdGhpcy5fdmFyaWFibGVzU3ViamVjdC52YWx1ZVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0VmFyaWFibGVzSW1tZWRpYXRlKHZhcmlhYmxlczogVFZhcmlhYmxlcyk6IFByb21pc2U8dm9pZCB8IEFwb2xsb1F1ZXJ5UmVzdWx0PFREYXRhPj4ge1xuICAgIGNvbnN0IF92YXJzID0gdGhpcy5fd2l0aFZhcmlhYmxlT3ZlcnJpZGVzKHZhcmlhYmxlcylcbiAgICByZXR1cm4gdGhpcy5fcXVlcnlSZWYuc2V0VmFyaWFibGVzKF92YXJzIHx8IHt9IGFzIFRWYXJpYWJsZXMpXG4gIH1cblxuICBwcml2YXRlIF9wYXRjaFZhcmlhYmxlc0ltbWVkaWF0ZSh2YXJpYWJsZXM6IFBhcnRpYWw8VFZhcmlhYmxlcz4pOiBQcm9taXNlPHZvaWQgfCBBcG9sbG9RdWVyeVJlc3VsdDxURGF0YT4+IHtcbiAgICBjb25zdCBfdmFyaWFibGVzID0ge1xuICAgICAgLi4udGhpcy5nZXRWYXJpYWJsZXMoKSxcbiAgICAgIC4uLnZhcmlhYmxlc1xuICAgIH1cblxuICAgIGNvbnN0IF92YXJzID0gdGhpcy5fd2l0aFZhcmlhYmxlT3ZlcnJpZGVzKF92YXJpYWJsZXMpXG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5UmVmLnNldFZhcmlhYmxlcyhfdmFycyB8fCB7fSBhcyBUVmFyaWFibGVzKVxuICB9XG5cbiAgcHVibGljIHNldFZhcmlhYmxlcyh2YXJpYWJsZXM6IFRWYXJpYWJsZXMpOiB2b2lkIHtcbiAgICB0aGlzLl92YXJpYWJsZXNTdWJqZWN0Lm5leHQodmFyaWFibGVzKVxuICAgIGlmICghdGhpcy5fb2JzZXJ2aW5nQ2hhbmdlcykge1xuICAgICAgdGhpcy5fc2V0VmFyaWFibGVzSW1tZWRpYXRlKHZhcmlhYmxlcylcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcGF0Y2hWYXJpYWJsZXModmFyaWFibGVzOiBQYXJ0aWFsPFRWYXJpYWJsZXM+KTogdm9pZCB7XG4gICAgY29uc3QgX3ZhcmlhYmxlcyA9IHtcbiAgICAgIC4uLnRoaXMuZ2V0VmFyaWFibGVzKCksXG4gICAgICAuLi52YXJpYWJsZXNcbiAgICB9XG5cbiAgICB0aGlzLl92YXJpYWJsZXNTdWJqZWN0Lm5leHQoX3ZhcmlhYmxlcylcbiAgICBpZiAoIXRoaXMuX29ic2VydmluZ0NoYW5nZXMpIHtcbiAgICAgIHRoaXMuX3NldFZhcmlhYmxlc0ltbWVkaWF0ZShfdmFyaWFibGVzKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWZldGNoKHZhcmlhYmxlcz86IFRWYXJpYWJsZXMpOiBQcm9taXNlPEFwb2xsb1F1ZXJ5UmVzdWx0PFREYXRhPj4ge1xuICAgIGNvbnN0IF92YXJzID0gdGhpcy5fd2l0aFZhcmlhYmxlT3ZlcnJpZGVzKHZhcmlhYmxlcylcbiAgICByZXR1cm4gdGhpcy5fcXVlcnlSZWYucmVmZXRjaChfdmFycylcbiAgfVxuXG4gIHB1YmxpYyBzZXRRdWVyeShxdWVyeTogRG9jdW1lbnROb2RlIHwgVHlwZWREb2N1bWVudE5vZGU8VERhdGEsIFRWYXJpYWJsZXM+LCB0cmlnZ2VyUmVmZXRjaDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgdGhpcy5fcXVlcnlSZWYuc2V0T3B0aW9ucyh7IHF1ZXJ5IH0pXG4gICAgaWYgKHRyaWdnZXJSZWZldGNoKSB7XG4gICAgICAvLyBUT0RPOiBDb25zaWRlciByZWZhY3RvcmluZyB0aGUgcmVmZXRjaCBwcm9jZXNzLiBJIGNhbid0IGNhbGwgQXBvbGxvJ3NcbiAgICAgIC8vIHJlZmV0Y2ggZGlyZWN0bHksIGJlY2F1c2UgSSB3YW50IGl0IHRvIHNoYXJlIHRoZSB1cGRhdGUgdHJpZ2dlcmVkXG4gICAgICAvLyBwb2xsaW5nIGRlbGF5IHdpdGggdGhlIHNldHRpbmcgb2YgdmFyaWFibGVzLlxuICAgICAgLy8gdGhpcy5fcXVlcnlSZWYucmVmZXRjaCh0aGlzLmdldFZhcmlhYmxlcygpKVxuXG4gICAgICAvLyBGYWtlIHZhcmlhYmxlcyB1cGRhdGUgdG8gdHJpZ2dlciBhIHJlZmV0Y2ggdGhhdCBzaGFyZXMgaXQncyByZWZldGNoIGRlbGF5LlxuICAgICAgdGhpcy5zZXRWYXJpYWJsZXModGhpcy5nZXRWYXJpYWJsZXMoKSlcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0T3B0aW9ucygpOiBXYXRjaFF1ZXJ5T3B0aW9uczxUVmFyaWFibGVzLCBURGF0YT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAodGhpcy5fcXVlcnlSZWYgYXMgYW55KS5vYnNRdWVyeS5vcHRpb25zXG4gIH1cblxuICBwdWJsaWMgZ2V0UXVlcnlQcm9jZXNzaW5nQ29uZmlnKCk6IFF1ZXJ5UHJvY2Vzc2luZ0NvbmZpZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0T3B0aW9ucygpPy5jb250ZXh0Py5xdWVyeVByb2Nlc3NpbmdDb25maWdcbiAgfVxuXG4gIHByaXZhdGUgX3dpdGhWYXJpYWJsZU92ZXJyaWRlcyh2YXJpYWJsZXM/OiBUVmFyaWFibGVzKTogVFZhcmlhYmxlcyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFub3ROdWxsT3JVbmRlZmluZWQodmFyaWFibGVzKSAmJiAhKHRoaXMuZ2V0UXVlcnlQcm9jZXNzaW5nQ29uZmlnKCk/LmRpc2FibGVQYWdpbmcpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgX3ZhcnMgPSB7IC4uLih2YXJpYWJsZXMgfHwge30pIH0gYXMgVFZhcmlhYmxlc1xuICAgIGlmICh0aGlzLmdldFF1ZXJ5UHJvY2Vzc2luZ0NvbmZpZygpPy5kaXNhYmxlUGFnaW5nKSB7XG4gICAgICBfdmFycy50YWtlID0gdGhpcy5fdG90YWxDb3VudFxuICAgIH1cbiAgICByZXR1cm4gX3ZhcnNcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,35 @@
1
+ import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';
2
+ import { Apollo } from 'apollo-angular';
3
+ import { DatatableGraphQLQueryRef } from './datatable-graphql-query-ref';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "apollo-angular";
6
+ export const DATATABLE_GRAPHQL_SERVICE_CONFIG = new InjectionToken('DATATABLE_GRAPHQL_SERVICE_CONFIG');
7
+ const _CONFIG_DEFAULTS = {
8
+ pollingIntervalTime: 1 * 60 * 1000
9
+ };
10
+ export class DatatableGraphqlService {
11
+ constructor(_apollo, _config) {
12
+ this._apollo = _apollo;
13
+ this._config = Object.assign(Object.assign({}, _CONFIG_DEFAULTS), (_config || {}));
14
+ }
15
+ watchQuery(options, queryProcessingConfig) {
16
+ var _a;
17
+ const _options = Object.assign(Object.assign(Object.assign({ useInitialLoading: true }, _CONFIG_DEFAULTS), { pollInterval: this._config.pollingIntervalTime }), options);
18
+ if (queryProcessingConfig) {
19
+ _options.context = Object.assign(Object.assign({}, (_options.context || {})), { queryProcessingConfig: Object.assign(Object.assign({}, (((_a = _options.context) === null || _a === void 0 ? void 0 : _a.queryProcessingConfig) || {})), queryProcessingConfig) });
20
+ }
21
+ const queryRef = this._apollo.watchQuery(_options);
22
+ return new DatatableGraphQLQueryRef(queryRef);
23
+ }
24
+ }
25
+ DatatableGraphqlService.ɵprov = i0.ɵɵdefineInjectable({ factory: function DatatableGraphqlService_Factory() { return new DatatableGraphqlService(i0.ɵɵinject(i1.Apollo), i0.ɵɵinject(DATATABLE_GRAPHQL_SERVICE_CONFIG, 8)); }, token: DatatableGraphqlService, providedIn: "root" });
26
+ DatatableGraphqlService.decorators = [
27
+ { type: Injectable, args: [{
28
+ providedIn: 'root'
29
+ },] }
30
+ ];
31
+ DatatableGraphqlService.ctorParameters = () => [
32
+ { type: Apollo },
33
+ { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DATATABLE_GRAPHQL_SERVICE_CONFIG,] }] }
34
+ ];
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXRhYmxlLWdyYXBocWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9ncmFwaHFsL2RhdGF0YWJsZS9kYXRhdGFibGUtZ3JhcGhxbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFHNUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBSXZDLE9BQU8sRUFBRSx3QkFBd0IsRUFBNkIsTUFBTSwrQkFBK0IsQ0FBQTs7O0FBcUJuRyxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxJQUFJLGNBQWMsQ0FBZ0Msa0NBQWtDLENBQUMsQ0FBQTtBQUVySSxNQUFNLGdCQUFnQixHQUFrQztJQUN0RCxtQkFBbUIsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUk7Q0FDbkMsQ0FBQTtBQUtELE1BQU0sT0FBTyx1QkFBdUI7SUFJbEMsWUFDbUIsT0FBZSxFQUNzQixPQUF1QztRQUQ1RSxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBR2hDLElBQUksQ0FBQyxPQUFPLG1DQUNQLGdCQUFnQixHQUNoQixDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FDbkIsQ0FBQTtJQUNILENBQUM7SUFFTSxVQUFVLENBQ2YsT0FBMEMsRUFDMUMscUJBQTZDOztRQUU3QyxNQUFNLFFBQVEsK0NBQ1osaUJBQWlCLEVBQUUsSUFBSSxJQUNwQixnQkFBZ0IsS0FDbkIsWUFBWSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEtBQzNDLE9BQU8sQ0FDWCxDQUFBO1FBRUQsSUFBSSxxQkFBcUIsRUFBRTtZQUN6QixRQUFRLENBQUMsT0FBTyxtQ0FDWCxDQUFDLFFBQVEsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLEtBQzNCLHFCQUFxQixrQ0FDaEIsQ0FBQyxDQUFBLE1BQUEsUUFBUSxDQUFDLE9BQU8sMENBQUUscUJBQXFCLEtBQUksRUFBRSxDQUFDLEdBQy9DLHFCQUFxQixJQUUzQixDQUFBO1NBQ0Y7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBb0IsUUFBUSxDQUFDLENBQUE7UUFFckUsT0FBTyxJQUFJLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQy9DLENBQUM7Ozs7WUF6Q0YsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFqQ1EsTUFBTTs0Q0F3Q1YsUUFBUSxZQUFJLE1BQU0sU0FBQyxnQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmltcG9ydCB7IE9wZXJhdGlvblZhcmlhYmxlcyB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUvdHlwZXMnXG5pbXBvcnQgeyBBcG9sbG8gfSBmcm9tICdhcG9sbG8tYW5ndWxhcidcbmltcG9ydCB7IEVtcHR5T2JqZWN0LCBXYXRjaFF1ZXJ5T3B0aW9ucyB9IGZyb20gJ2Fwb2xsby1hbmd1bGFyL3R5cGVzJ1xuXG5pbXBvcnQgeyBRdWVyeVByb2Nlc3NpbmdDb25maWcgfSBmcm9tICcuLi9tb2RlbHMnXG5pbXBvcnQgeyBEYXRhdGFibGVHcmFwaFFMUXVlcnlSZWYsIERhdGF0YWJsZUdyYXBoUUxWYXJpYWJsZXMgfSBmcm9tICcuL2RhdGF0YWJsZS1ncmFwaHFsLXF1ZXJ5LXJlZidcblxuLyoqXG4gKiBOT1RFOiBBbnkgb2YgQXBvbGxvQ2xpZW50J3MgV2F0Y2hRdWVyeU9wdGlvbnMgcHJvcGVydGllcyBjYW4gYmUgc2V0LCBidXQgSVxuICogdGhpbmsgb3VyIGNvbXBvbmVudHMgc2hvdWxkIG9ubHkgYmUgcHJvdmlkaW5nIGBxdWVyeWAgYW5kIGB2YXJpYWJsZXNgLiBUaGVcbiAqIHJlc3Qgc2hvdWxkIGJlIGNvbW1vbiBvcHRpb25zIHNoYXJlZCBieSBhbGwgb3VyIGFwcCdzIGRhdGF0YWJsZXMuIFRoaXMgbWF5XG4gKiBjaGFuZ2UgaWYgaXQgaXMgZGV0ZXJtaW5lZCB0byBiZSB0b28gcmVzdHJpY3RpdmUuXG4gKi9cbmV4cG9ydCB0eXBlIERhdGF0YWJsZVF1ZXJ5T3B0aW9uczxUVmFyaWFibGVzID0gT3BlcmF0aW9uVmFyaWFibGVzLCBURGF0YSA9IGFueT4gPVxuICBQaWNrPFdhdGNoUXVlcnlPcHRpb25zPFRWYXJpYWJsZXMsIFREYXRhPiwgJ3F1ZXJ5Jz5cbiAgJiBQaWNrPFdhdGNoUXVlcnlPcHRpb25zPFRWYXJpYWJsZXMsIFREYXRhPiwgJ3ZhcmlhYmxlcyc+XG4gICYgUGljazxXYXRjaFF1ZXJ5T3B0aW9uczxUVmFyaWFibGVzLCBURGF0YT4sICdjb250ZXh0Jz5cblxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGF0YWJsZUdyYXBocWxTZXJ2aWNlQ29uZmlnIHtcbiAgLyoqXG4gICAqIFBvbGxpbmcgaW50ZXJ2YWwgdGltZSBpbiBtaWxsaXNlY29uZHMuXG4gICAqL1xuICBwb2xsaW5nSW50ZXJ2YWxUaW1lPzogbnVtYmVyXG59XG5cbmV4cG9ydCBjb25zdCBEQVRBVEFCTEVfR1JBUEhRTF9TRVJWSUNFX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxEYXRhdGFibGVHcmFwaHFsU2VydmljZUNvbmZpZz4oJ0RBVEFUQUJMRV9HUkFQSFFMX1NFUlZJQ0VfQ09ORklHJylcblxuY29uc3QgX0NPTkZJR19ERUZBVUxUUzogRGF0YXRhYmxlR3JhcGhxbFNlcnZpY2VDb25maWcgPSB7XG4gIHBvbGxpbmdJbnRlcnZhbFRpbWU6IDEgKiA2MCAqIDEwMDBcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRGF0YXRhYmxlR3JhcGhxbFNlcnZpY2Uge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbmZpZzogRGF0YXRhYmxlR3JhcGhxbFNlcnZpY2VDb25maWdcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9hcG9sbG86IEFwb2xsbyxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERBVEFUQUJMRV9HUkFQSFFMX1NFUlZJQ0VfQ09ORklHKSBfY29uZmlnPzogRGF0YXRhYmxlR3JhcGhxbFNlcnZpY2VDb25maWdcbiAgKSB7XG4gICAgdGhpcy5fY29uZmlnID0ge1xuICAgICAgLi4uX0NPTkZJR19ERUZBVUxUUyxcbiAgICAgIC4uLihfY29uZmlnIHx8IHt9KVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB3YXRjaFF1ZXJ5PFREYXRhLCBUVmFyaWFibGVzIGV4dGVuZHMgRGF0YXRhYmxlR3JhcGhRTFZhcmlhYmxlcyA9IEVtcHR5T2JqZWN0LCBUUm93ID0gRW1wdHlPYmplY3Q+KFxuICAgIG9wdGlvbnM6IERhdGF0YWJsZVF1ZXJ5T3B0aW9uczxUVmFyaWFibGVzPixcbiAgICBxdWVyeVByb2Nlc3NpbmdDb25maWc/OiBRdWVyeVByb2Nlc3NpbmdDb25maWdcbiAgKTogRGF0YXRhYmxlR3JhcGhRTFF1ZXJ5UmVmPFREYXRhLCBUVmFyaWFibGVzLCBUUm93PiB7XG4gICAgY29uc3QgX29wdGlvbnM6IFdhdGNoUXVlcnlPcHRpb25zPFRWYXJpYWJsZXMsIFREYXRhPiA9IHtcbiAgICAgIHVzZUluaXRpYWxMb2FkaW5nOiB0cnVlLFxuICAgICAgLi4uX0NPTkZJR19ERUZBVUxUUyxcbiAgICAgIHBvbGxJbnRlcnZhbDogdGhpcy5fY29uZmlnLnBvbGxpbmdJbnRlcnZhbFRpbWUsXG4gICAgICAuLi5vcHRpb25zXG4gICAgfVxuXG4gICAgaWYgKHF1ZXJ5UHJvY2Vzc2luZ0NvbmZpZykge1xuICAgICAgX29wdGlvbnMuY29udGV4dCA9IHtcbiAgICAgICAgLi4uKF9vcHRpb25zLmNvbnRleHQgfHwge30pLFxuICAgICAgICBxdWVyeVByb2Nlc3NpbmdDb25maWc6IHtcbiAgICAgICAgICAuLi4oX29wdGlvbnMuY29udGV4dD8ucXVlcnlQcm9jZXNzaW5nQ29uZmlnIHx8IHt9KSxcbiAgICAgICAgICAuLi5xdWVyeVByb2Nlc3NpbmdDb25maWdcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHF1ZXJ5UmVmID0gdGhpcy5fYXBvbGxvLndhdGNoUXVlcnk8VERhdGEsIFRWYXJpYWJsZXM+KF9vcHRpb25zKVxuXG4gICAgcmV0dXJuIG5ldyBEYXRhdGFibGVHcmFwaFFMUXVlcnlSZWYocXVlcnlSZWYpXG4gIH1cblxufVxuIl19
@@ -0,0 +1,170 @@
1
+ import { combineLatest, Observable, of, ReplaySubject } from 'rxjs';
2
+ import { distinctUntilChanged, map, shareReplay, startWith, switchMap, tap } from 'rxjs/operators';
3
+ import { subscriberCount, wrapIntoObservable } from '@theseam/ui-common/utils';
4
+ import { createPageInfoObservable } from './create-page-info-observable';
5
+ import { mapFilterStates } from './map-filter-states';
6
+ import { mapPageInfo } from './map-page-info';
7
+ export function observeRowsWithGqlInputsHandling(queryRef, rows, datatable, extraVariables, sortsMapper, filterStateMappers) {
8
+ return new Observable((subscriber) => {
9
+ const datatable$ = wrapIntoObservable(datatable);
10
+ const extraVariables$ = wrapIntoObservable(extraVariables);
11
+ const context$ = extraVariables$.pipe(map(_extraVariables => {
12
+ const context = {
13
+ extraVariables: _extraVariables
14
+ };
15
+ return context;
16
+ }), shareReplay({ bufferSize: 1, refCount: true }));
17
+ const datatableMappers = {
18
+ pageInfo: mapPageInfo,
19
+ sorts: sortsMapper,
20
+ filters: filterStateMappers,
21
+ };
22
+ const datatableResults$ = _createDatatableResultsObservable(datatable$, datatableMappers, context$);
23
+ const queryVariablesChanged$ = datatableResults$.pipe(tap(results => {
24
+ var _a, _b;
25
+ queryRef.setVariables(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (results.context || {})), results.pageInfo), (results.sorts.length > 0 ? { order: results.sorts } : {})), (((_a = results.filter) === null || _a === void 0 ? void 0 : _a.variables) || {})), (((_b = results.filter) === null || _b === void 0 ? void 0 : _b.filter) ? { where: results.filter.filter } : {})));
26
+ }));
27
+ // const _emitSubject = new Subject<void>()
28
+ // const queryVarsChangedSub = queryVariablesChanged$.pipe(
29
+ // switchMap(() => subscriberCount(rows, 'rows'))
30
+ // ).subscribe(subscriber)
31
+ const queryVarsChangedSub = queryVariablesChanged$.subscribe();
32
+ const _sub = subscriberCount(rows, 'rows').subscribe(subscriber);
33
+ return () => {
34
+ queryVarsChangedSub.unsubscribe();
35
+ _sub.unsubscribe();
36
+ };
37
+ });
38
+ // const context$ = extraVariables$.pipe(
39
+ // map(_extraVariables => {
40
+ // const context: MapperContext = {
41
+ // extraVariables: _extraVariables
42
+ // }
43
+ // return context
44
+ // })
45
+ // )
46
+ // const datatableMappers: DatatableMappers = {
47
+ // pageInfo: mapPageInfo,
48
+ // sorts: sortsMapper,
49
+ // filters: filterStateMappers,
50
+ // }
51
+ // const datatableResults$ = _createDatatableResultsObservable(
52
+ // datatable$,
53
+ // datatableMappers,
54
+ // context$,
55
+ // )
56
+ // const queryVariablesChanged$ = datatableResults$.pipe(
57
+ // tap(results => {
58
+ // queryRef.setVariables({
59
+ // ...(results.extraVariables || {}),
60
+ // ...results.pageInfo,
61
+ // ...(results.sorts.length > 0 ? { order: results.sorts } : {}),
62
+ // ...(results.filterInfo?.variables || {}),
63
+ // ...(results.filterInfo?.filter ? { where: results.filterInfo.filter } : {})
64
+ // } as any)
65
+ // })
66
+ // )
67
+ // const handleQueryInputs = combineLatest([ extraVariables$, pageInfo$ ]).pipe(
68
+ // switchMap(([ _extraVariables, pageInfo ]) => {
69
+ // // console.log('_extraVariables, pageInfo', _extraVariables, pageInfo)
70
+ // const context: MapperContext = {
71
+ // extraVariables: _extraVariables
72
+ // }
73
+ // return combineLatest([ sorts$, filterInfo$ ]).pipe(
74
+ // // map(([ sorts, filterInfo ]) => ({ extraVariables: _extraVariables, pageInfo, sorts, filterInfo }))
75
+ // map(([ sorts, filterInfo ]) => {
76
+ // // console.log('sorts, filterInfo', sorts, filterInfo)
77
+ // return { extraVariables: _extraVariables, pageInfo, sorts, filterInfo }
78
+ // })
79
+ // )
80
+ // }),
81
+ // tap(v => {
82
+ // // console.log('~~~', v)
83
+ // queryRef.setVariables({
84
+ // ...(v.extraVariables || {}),
85
+ // ...v.pageInfo,
86
+ // ...(v.sorts.length > 0 ? { order: v.sorts } : {}),
87
+ // ...(v.filterInfo?.variables || {}),
88
+ // ...(v.filterInfo?.filter ? { where: v.filterInfo.filter } : {})
89
+ // } as any)
90
+ // })
91
+ // )
92
+ // return defer(() => {
93
+ // const _emitted = new Subject<void>()
94
+ // const handlerSub = handleQueryInputs.pipe(
95
+ // // skip(1)
96
+ // // ).subscribe(() => _emitted.next())
97
+ // ).subscribe(() => {
98
+ // _emitted.next()
99
+ // })
100
+ // return _emitted.pipe(
101
+ // // tap(v => {
102
+ // // console.log('emitted', v)
103
+ // // }),
104
+ // distinctUntilChanged(),
105
+ // switchMap(() => subscriberCount(rows, 'rows')),
106
+ // // tap(v => {
107
+ // // console.log('emitting rows', v)
108
+ // // }),
109
+ // finalize(() => handlerSub.unsubscribe())
110
+ // )
111
+ // }).pipe(
112
+ // // tap(v => {
113
+ // // console.log('rows', v)
114
+ // // }),
115
+ // catchError(err => {
116
+ // console.error(err)
117
+ // return of([] as TRow[])
118
+ // }),
119
+ // shareReplay({ bufferSize: 1, refCount: true })
120
+ // )
121
+ }
122
+ function _createSortsObservable(datatable$) {
123
+ return datatable$.pipe(
124
+ // tap(v => console.log('sorts got dt', v)),
125
+ switchMap(dt => dt
126
+ ? dt.sort.pipe(map(v => v.sorts), startWith(dt.sorts)) // .pipe(tap(v => console.log('sorts 1', v)))
127
+ : of([]) // .pipe(tap(v => console.log('sorts 2', v)))
128
+ ), shareReplay({ bufferSize: 1, refCount: true }));
129
+ }
130
+ function _createFilterStatesObservable(datatable$) {
131
+ return datatable$.pipe(
132
+ // tap(v => console.log('filters got dt', v)),
133
+ switchMap(dt => dt
134
+ ? dt.filterStates // .pipe(tap(v => console.log('filterStates 1', v)))
135
+ : of([]) // .pipe(tap(v => console.log('filterStates 2', v)))
136
+ ),
137
+ // TODO: Remove when the datatable fixes the bug causing it to emit more than it should.
138
+ distinctUntilChanged((x, y) => JSON.stringify(x) === JSON.stringify(y)));
139
+ }
140
+ function _createDatatableResultsObservable(datatable$, mappers, context$) {
141
+ return new Observable((subscriber) => {
142
+ const datatableSubject = new ReplaySubject();
143
+ const dtSub = datatable$.subscribe(dt => datatableSubject.next(dt), err => datatableSubject.error(err), () => datatableSubject.complete());
144
+ const ctxSub = context$.pipe(switchMap(context => {
145
+ // TODO: Decide if the disabled paging feature will be reimplemented in a way
146
+ // that it should be considered here. `_isPagingDisabled(queryRef)`
147
+ const pageInfo$ = createPageInfoObservable(datatable$).pipe(map(info => mappers.pageInfo(info)));
148
+ const sorts$ = _createSortsObservable(datatable$).pipe(switchMap(m => wrapIntoObservable(mappers.sorts(m, context))));
149
+ const filterInfo$ = _createFilterStatesObservable(datatable$).pipe(switchMap(x => mapFilterStates(x, mappers.filters, context)));
150
+ return combineLatest([
151
+ pageInfo$,
152
+ sorts$,
153
+ filterInfo$,
154
+ ]).pipe(map(([pageInfo, sorts, filterInfo]) => ({
155
+ pageInfo,
156
+ sorts,
157
+ filter: filterInfo,
158
+ context: context
159
+ })));
160
+ })).subscribe(subscriber);
161
+ return () => {
162
+ dtSub.unsubscribe();
163
+ ctxSub.unsubscribe();
164
+ };
165
+ });
166
+ }
167
+ // function _isPagingDisabled<TData, TVariables, TRow>(queryRef: DatatableGraphQLQueryRef<TData, TVariables, TRow>): boolean {
168
+ // return queryRef.getQueryProcessingConfig()?.disablePaging ?? false
169
+ // }
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXRhYmxlLWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZ3JhcGhxbC9kYXRhdGFibGUvZGF0YXRhYmxlLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBUyxVQUFVLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBdUIsTUFBTSxNQUFNLENBQUE7QUFDL0YsT0FBTyxFQUFjLG9CQUFvQixFQUFZLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBUSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUU5SCxPQUFPLEVBQXNCLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBS2xHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBRXhFLE9BQU8sRUFBK0MsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDbEcsT0FBTyxFQUFFLFdBQVcsRUFBd0MsTUFBTSxpQkFBaUIsQ0FBQTtBQW9CbkYsTUFBTSxVQUFVLGdDQUFnQyxDQUM5QyxRQUE2RCxFQUM3RCxJQUF3QixFQUN4QixTQUEwSCxFQUMxSCxjQUEwRyxFQUMxRyxXQUF3QixFQUN4QixrQkFBc0M7SUFFdEMsT0FBTyxJQUFJLFVBQVUsQ0FBUyxDQUFDLFVBQThCLEVBQUUsRUFBRTtRQUMvRCxNQUFNLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNoRCxNQUFNLGVBQWUsR0FBRyxrQkFBa0IsQ0FBd0IsY0FBYyxDQUFDLENBQUE7UUFFakYsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FDbkMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFO1lBQ3BCLE1BQU0sT0FBTyxHQUFrQjtnQkFDN0IsY0FBYyxFQUFFLGVBQWU7YUFDaEMsQ0FBQTtZQUVELE9BQU8sT0FB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QUFBO1lBRUQsTUFBTSxXQUFXLEdBQUcsNkJBQTZCLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUNoRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FDN0QsQ0FBQTtZQUVELE9BQU8sYUFBYSxDQUFDO2dCQUNuQixTQUFTO2dCQUNULE1BQU07Z0JBQ04sV0FBVzthQUNaLENBQUMsQ0FBQyxJQUFJLENBQ0wsR0FBRyxDQUFDLENBQUMsQ0FBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN4QyxRQUFRO2dCQUNSLEtBQUs7Z0JBQ0wsTUFBTSxFQUFFLFVBQVU7Z0JBQ2xCLE9BQU8sRUFBRSxPQUFPO2FBQ2pCLENBQUMsQ0FBQyxDQUNKLENBQUE7UUFFSCxDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUV2QixPQUFPLEdBQUcsRUFBRTtZQUNWLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQTtZQUNuQixNQUFNLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDdEIsQ0FBQyxDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQsOEhBQThIO0FBQzlILHVFQUF1RTtBQUN2RSxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIGRlZmVyLCBPYnNlcnZhYmxlLCBvZiwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaWJlciB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmluYWxpemUsIG1hcCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHsgbm90TnVsbE9yVW5kZWZpbmVkLCBzdWJzY3JpYmVyQ291bnQsIHdyYXBJbnRvT2JzZXJ2YWJsZSB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi91dGlscydcbmltcG9ydCB7IEVtcHR5T2JqZWN0IH0gZnJvbSAnYXBvbGxvLWFuZ3VsYXIvdHlwZXMnXG5pbXBvcnQgeyBTb3J0SXRlbSB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9kYXRhdGFibGUnXG5cbmltcG9ydCB7IEdxbERhdGF0YWJsZUFjY2Vzc29yIH0gZnJvbSAnLi4vbW9kZWxzJ1xuaW1wb3J0IHsgY3JlYXRlUGFnZUluZm9PYnNlcnZhYmxlIH0gZnJvbSAnLi9jcmVhdGUtcGFnZS1pbmZvLW9ic2VydmFibGUnXG5pbXBvcnQgeyBEYXRhdGFibGVHcmFwaFFMUXVlcnlSZWYgfSBmcm9tICcuL2RhdGF0YWJsZS1ncmFwaHFsLXF1ZXJ5LXJlZidcbmltcG9ydCB7IEZpbHRlclN0YXRlTWFwcGVyUmVzdWx0LCBGaWx0ZXJTdGF0ZU1hcHBlcnMsIG1hcEZpbHRlclN0YXRlcyB9IGZyb20gJy4vbWFwLWZpbHRlci1zdGF0ZXMnXG5pbXBvcnQgeyBtYXBQYWdlSW5mbywgUGFnZUluZm9NYXBwZXIsIFBhZ2VJbmZvTWFwcGVyUmVzdWx0IH0gZnJvbSAnLi9tYXAtcGFnZS1pbmZvJ1xuaW1wb3J0IHsgTWFwcGVyQ29udGV4dCB9IGZyb20gJy4vbWFwcGVyLWNvbnRleHQnXG5cbmV4cG9ydCB0eXBlIFNvcnRzTWFwcGVyUmVzdWx0ID0geyBbbmFtZTogc3RyaW5nXTogYW55IH1bXVxuZXhwb3J0IHR5cGUgU29ydHNNYXBwZXIgPSAoc29ydHM6IFNvcnRJdGVtW10sIGNvbnRleHQ6IE1hcHBlckNvbnRleHQpXG4gID0+IChTb3J0c01hcHBlclJlc3VsdCB8IFByb21pc2U8U29ydHNNYXBwZXJSZXN1bHQ+IHwgT2JzZXJ2YWJsZTxTb3J0c01hcHBlclJlc3VsdD4pXG5cbmludGVyZmFjZSBEYXRhdGFibGVSZXN1bHRzIHtcbiAgcGFnZUluZm86IFBhZ2VJbmZvTWFwcGVyUmVzdWx0XG4gIHNvcnRzOiBTb3J0c01hcHBlclJlc3VsdFxuICBmaWx0ZXI6IEZpbHRlclN0YXRlTWFwcGVyUmVzdWx0XG4gIGNvbnRleHQ6IE1hcHBlckNvbnRleHRcbn1cblxuaW50ZXJmYWNlIERhdGF0YWJsZU1hcHBlcnMge1xuICBwYWdlSW5mbzogUGFnZUluZm9NYXBwZXJcbiAgc29ydHM6IFNvcnRzTWFwcGVyXG4gIGZpbHRlcnM6IEZpbHRlclN0YXRlTWFwcGVyc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb2JzZXJ2ZVJvd3NXaXRoR3FsSW5wdXRzSGFuZGxpbmc8VERhdGEsIFRSb3csIEdxbFZhcmlhYmxlcyBleHRlbmRzIEVtcHR5T2JqZWN0PihcbiAgcXVlcnlSZWY6IERhdGF0YWJsZUdyYXBoUUxRdWVyeVJlZjxURGF0YSwgR3FsVmFyaWFibGVzLCBUUm93PixcbiAgcm93czogT2JzZXJ2YWJsZTxUUm93W10+LFxuICBkYXRhdGFibGU6IE9ic2VydmFibGU8R3FsRGF0YXRhYmxlQWNjZXNzb3IgfCB1bmRlZmluZWQ+IHwgUHJvbWlzZTxHcWxEYXRhdGFibGVBY2Nlc3NvciB8IHVuZGVmaW5lZD4gfCBHcWxEYXRhdGFibGVBY2Nlc3NvcixcbiAgZXh0cmFWYXJpYWJsZXM6IE9ic2VydmFibGU8UGFydGlhbDxHcWxWYXJpYWJsZXM+PiB8IFByb21pc2U8UGFydGlhbDxHcWxWYXJpYWJsZXM+PiB8IFBhcnRpYWw8R3FsVmFyaWFibGVzPixcbiAgc29ydHNNYXBwZXI6IFNvcnRzTWFwcGVyLFxuICBmaWx0ZXJTdGF0ZU1hcHBlcnM6IEZpbHRlclN0YXRlTWFwcGVyc1xuKTogT2JzZXJ2YWJsZTxUUm93W10+IHtcbiAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFRSb3dbXT4oKHN1YnNjcmliZXI6IFN1YnNjcmliZXI8VFJvd1tdPikgPT4ge1xuICAgIGNvbnN0IGRhdGF0YWJsZSQgPSB3cmFwSW50b09ic2VydmFibGUoZGF0YXRhYmxlKVxuICAgIGNvbnN0IGV4dHJhVmFyaWFibGVzJCA9IHdyYXBJbnRvT2JzZXJ2YWJsZTxQYXJ0aWFsPEdxbFZhcmlhYmxlcz4+KGV4dHJhVmFyaWFibGVzKVxuXG4gICAgY29uc3QgY29udGV4dCQgPSBleHRyYVZhcmlhYmxlcyQucGlwZShcbiAgICAgIG1hcChfZXh0cmFWYXJpYWJsZXMgPT4ge1xuICAgICAgICBjb25zdCBjb250ZXh0OiBNYXBwZXJDb250ZXh0ID0ge1xuICAgICAgICAgIGV4dHJhVmFyaWFibGVzOiBfZXh0cmFWYXJpYWJsZXNcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250ZXh0XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSlcbiAgICApXG5cbiAgICBjb25zdCBkYXRhdGFibGVNYXBwZXJzOiBEYXRhdGFibGVNYXBwZXJzID0ge1xuICAgICAgcGFnZUluZm86IG1hcFBhZ2VJbmZvLFxuICAgICAgc29ydHM6IHNvcnRzTWFwcGVyLFxuICAgICAgZmlsdGVyczogZmlsdGVyU3RhdGVNYXBwZXJzLFxuICAgIH1cblxuICAgIGNvbnN0IGRhdGF0YWJsZVJlc3VsdHMkID0gX2NyZWF0ZURhdGF0YWJsZVJlc3VsdHNPYnNlcnZhYmxlKFxuICAgICAgZGF0YXRhYmxlJCxcbiAgICAgIGRhdGF0YWJsZU1hcHBlcnMsXG4gICAgICBjb250ZXh0JCxcbiAgICApXG5cbiAgICBjb25zdCBxdWVyeVZhcmlhYmxlc0NoYW5nZWQkID0gZGF0YXRhYmxlUmVzdWx0cyQucGlwZShcbiAgICAgIHRhcChyZXN1bHRzID0+IHtcbiAgICAgICAgcXVlcnlSZWYuc2V0VmFyaWFibGVzKHtcbiAgICAgICAgICAuLi4ocmVzdWx0cy5jb250ZXh0IHx8IHt9KSxcbiAgICAgICAgICAuLi5yZXN1bHRzLnBhZ2VJbmZvLFxuICAgICAgICAgIC4uLihyZXN1bHRzLnNvcnRzLmxlbmd0aCA+IDAgPyB7IG9yZGVyOiByZXN1bHRzLnNvcnRzIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHJlc3VsdHMuZmlsdGVyPy52YXJpYWJsZXMgfHwge30pLFxuICAgICAgICAgIC4uLihyZXN1bHRzLmZpbHRlcj8uZmlsdGVyID8geyB3aGVyZTogcmVzdWx0cy5maWx0ZXIuZmlsdGVyIH0gOiB7fSlcbiAgICAgICAgfSBhcyBhbnkpXG4gICAgICB9KVxuICAgIClcblxuICAgIC8vIGNvbnN0IF9lbWl0U3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcblxuICAgIC8vIGNvbnN0IHF1ZXJ5VmFyc0NoYW5nZWRTdWIgPSBxdWVyeVZhcmlhYmxlc0NoYW5nZWQkLnBpcGUoXG4gICAgLy8gICBzd2l0Y2hNYXAoKCkgPT4gc3Vic2NyaWJlckNvdW50KHJvd3MsICdyb3dzJykpXG4gICAgLy8gKS5zdWJzY3JpYmUoc3Vic2NyaWJlcilcbiAgICBjb25zdCBxdWVyeVZhcnNDaGFuZ2VkU3ViID0gcXVlcnlWYXJpYWJsZXNDaGFuZ2VkJC5zdWJzY3JpYmUoKVxuXG4gICAgY29uc3QgX3N1YiA9IHN1YnNjcmliZXJDb3VudChyb3dzLCAncm93cycpLnN1YnNjcmliZShzdWJzY3JpYmVyKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHF1ZXJ5VmFyc0NoYW5nZWRTdWIudW5zdWJzY3JpYmUoKVxuICAgICAgX3N1Yi51bnN1YnNjcmliZSgpXG4gICAgfVxuICB9KVxuXG5cblxuXG4gIC8vIGNvbnN0IGNvbnRleHQkID0gZXh0cmFWYXJpYWJsZXMkLnBpcGUoXG4gIC8vICAgbWFwKF9leHRyYVZhcmlhYmxlcyA9PiB7XG4gIC8vICAgICBjb25zdCBjb250ZXh0OiBNYXBwZXJDb250ZXh0ID0ge1xuICAvLyAgICAgICBleHRyYVZhcmlhYmxlczogX2V4dHJhVmFyaWFibGVzXG4gIC8vICAgICB9XG5cbiAgLy8gICAgIHJldHVybiBjb250ZXh0XG4gIC8vICAgfSlcbiAgLy8gKVxuXG4gIC8vIGNvbnN0IGRhdGF0YWJsZU1hcHBlcnM6IERhdGF0YWJsZU1hcHBlcnMgPSB7XG4gIC8vICAgcGFnZUluZm86IG1hcFBhZ2VJbmZvLFxuICAvLyAgIHNvcnRzOiBzb3J0c01hcHBlcixcbiAgLy8gICBmaWx0ZXJzOiBmaWx0ZXJTdGF0ZU1hcHBlcnMsXG4gIC8vIH1cblxuICAvLyBjb25zdCBkYXRhdGFibGVSZXN1bHRzJCA9IF9jcmVhdGVEYXRhdGFibGVSZXN1bHRzT2JzZXJ2YWJsZShcbiAgLy8gICBkYXRhdGFibGUkLFxuICAvLyAgIGRhdGF0YWJsZU1hcHBlcnMsXG4gIC8vICAgY29udGV4dCQsXG4gIC8vIClcblxuICAvLyBjb25zdCBxdWVyeVZhcmlhYmxlc0NoYW5nZWQkID0gZGF0YXRhYmxlUmVzdWx0cyQucGlwZShcbiAgLy8gICB0YXAocmVzdWx0cyA9PiB7XG4gIC8vICAgICBxdWVyeVJlZi5zZXRWYXJpYWJsZXMoe1xuICAvLyAgICAgICAuLi4ocmVzdWx0cy5leHRyYVZhcmlhYmxlcyB8fCB7fSksXG4gIC8vICAgICAgIC4uLnJlc3VsdHMucGFnZUluZm8sXG4gIC8vICAgICAgIC4uLihyZXN1bHRzLnNvcnRzLmxlbmd0aCA+IDAgPyB7IG9yZGVyOiByZXN1bHRzLnNvcnRzIH0gOiB7fSksXG4gIC8vICAgICAgIC4uLihyZXN1bHRzLmZpbHRlckluZm8/LnZhcmlhYmxlcyB8fCB7fSksXG4gIC8vICAgICAgIC4uLihyZXN1bHRzLmZpbHRlckluZm8/LmZpbHRlciA/IHsgd2hlcmU6IHJlc3VsdHMuZmlsdGVySW5mby5maWx0ZXIgfSA6IHt9KVxuICAvLyAgICAgfSBhcyBhbnkpXG4gIC8vICAgfSlcbiAgLy8gKVxuXG5cblxuICAvLyBjb25zdCBoYW5kbGVRdWVyeUlucHV0cyA9ICBjb21iaW5lTGF0ZXN0KFsgZXh0cmFWYXJpYWJsZXMkLCBwYWdlSW5mbyQgXSkucGlwZShcbiAgLy8gICBzd2l0Y2hNYXAoKFsgX2V4dHJhVmFyaWFibGVzLCBwYWdlSW5mbyBdKSA9PiB7XG4gIC8vICAgICAvLyBjb25zb2xlLmxvZygnX2V4dHJhVmFyaWFibGVzLCBwYWdlSW5mbycsIF9leHRyYVZhcmlhYmxlcywgcGFnZUluZm8pXG4gIC8vICAgICBjb25zdCBjb250ZXh0OiBNYXBwZXJDb250ZXh0ID0ge1xuICAvLyAgICAgICBleHRyYVZhcmlhYmxlczogX2V4dHJhVmFyaWFibGVzXG4gIC8vICAgICB9XG5cblxuICAvLyAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoWyBzb3J0cyQsIGZpbHRlckluZm8kIF0pLnBpcGUoXG4gIC8vICAgICAgIC8vIG1hcCgoWyBzb3J0cywgZmlsdGVySW5mbyBdKSA9PiAoeyBleHRyYVZhcmlhYmxlczogX2V4dHJhVmFyaWFibGVzLCBwYWdlSW5mbywgc29ydHMsIGZpbHRlckluZm8gfSkpXG4gIC8vICAgICAgIG1hcCgoWyBzb3J0cywgZmlsdGVySW5mbyBdKSA9PiB7XG4gIC8vICAgICAgICAgLy8gY29uc29sZS5sb2coJ3NvcnRzLCBmaWx0ZXJJbmZvJywgc29ydHMsIGZpbHRlckluZm8pXG4gIC8vICAgICAgICAgcmV0dXJuIHsgZXh0cmFWYXJpYWJsZXM6IF9leHRyYVZhcmlhYmxlcywgcGFnZUluZm8sIHNvcnRzLCBmaWx0ZXJJbmZvIH1cbiAgLy8gICAgICAgfSlcbiAgLy8gICAgIClcbiAgLy8gICB9KSxcbiAgLy8gICB0YXAodiA9PiB7XG4gIC8vICAgICAvLyBjb25zb2xlLmxvZygnfn5+JywgdilcbiAgLy8gICAgIHF1ZXJ5UmVmLnNldFZhcmlhYmxlcyh7XG4gIC8vICAgICAgIC4uLih2LmV4dHJhVmFyaWFibGVzIHx8IHt9KSxcbiAgLy8gICAgICAgLi4udi5wYWdlSW5mbyxcbiAgLy8gICAgICAgLi4uKHYuc29ydHMubGVuZ3RoID4gMCA/IHsgb3JkZXI6IHYuc29ydHMgfSA6IHt9KSxcbiAgLy8gICAgICAgLi4uKHYuZmlsdGVySW5mbz8udmFyaWFibGVzIHx8IHt9KSxcbiAgLy8gICAgICAgLi4uKHYuZmlsdGVySW5mbz8uZmlsdGVyID8geyB3aGVyZTogdi5maWx0ZXJJbmZvLmZpbHRlciB9IDoge30pXG4gIC8vICAgICB9IGFzIGFueSlcbiAgLy8gICB9KVxuICAvLyApXG5cbiAgLy8gcmV0dXJuIGRlZmVyKCgpID0+IHtcbiAgLy8gICBjb25zdCBfZW1pdHRlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcbiAgLy8gICBjb25zdCBoYW5kbGVyU3ViID0gaGFuZGxlUXVlcnlJbnB1dHMucGlwZShcbiAgLy8gICAgIC8vIHNraXAoMSlcbiAgLy8gICAvLyApLnN1YnNjcmliZSgoKSA9PiBfZW1pdHRlZC5uZXh0KCkpXG4gIC8vICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAvLyAgICAgX2VtaXR0ZWQubmV4dCgpXG4gIC8vICAgfSlcbiAgLy8gICByZXR1cm4gX2VtaXR0ZWQucGlwZShcbiAgLy8gICAgIC8vIHRhcCh2ID0+IHtcbiAgLy8gICAgIC8vICAgY29uc29sZS5sb2coJ2VtaXR0ZWQnLCB2KVxuICAvLyAgICAgLy8gfSksXG4gIC8vICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAvLyAgICAgc3dpdGNoTWFwKCgpID0+IHN1YnNjcmliZXJDb3VudChyb3dzLCAncm93cycpKSxcbiAgLy8gICAgIC8vIHRhcCh2ID0+IHtcbiAgLy8gICAgIC8vICAgY29uc29sZS5sb2coJ2VtaXR0aW5nIHJvd3MnLCB2KVxuICAvLyAgICAgLy8gfSksXG4gIC8vICAgICBmaW5hbGl6ZSgoKSA9PiBoYW5kbGVyU3ViLnVuc3Vic2NyaWJlKCkpXG4gIC8vICAgKVxuICAvLyB9KS5waXBlKFxuICAvLyAgIC8vIHRhcCh2ID0+IHtcbiAgLy8gICAvLyAgIGNvbnNvbGUubG9nKCdyb3dzJywgdilcbiAgLy8gICAvLyB9KSxcbiAgLy8gICBjYXRjaEVycm9yKGVyciA9PiB7XG4gIC8vICAgICBjb25zb2xlLmVycm9yKGVycilcbiAgLy8gICAgIHJldHVybiBvZihbXSBhcyBUUm93W10pXG4gIC8vICAgfSksXG4gIC8vICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KVxuICAvLyApXG59XG5cbmZ1bmN0aW9uIF9jcmVhdGVTb3J0c09ic2VydmFibGUoZGF0YXRhYmxlJDogT2JzZXJ2YWJsZTxHcWxEYXRhdGFibGVBY2Nlc3NvciB8IHVuZGVmaW5lZD4pIHtcbiAgcmV0dXJuIGRhdGF0YWJsZSQucGlwZShcbiAgICAvLyB0YXAodiA9PiBjb25zb2xlLmxvZygnc29ydHMgZ290IGR0JywgdikpLFxuICAgIHN3aXRjaE1hcChkdCA9PiBkdFxuICAgICAgPyBkdC5zb3J0LnBpcGUobWFwKHYgPT4gdi5zb3J0cyksIHN0YXJ0V2l0aChkdC5zb3J0cykpIC8vIC5waXBlKHRhcCh2ID0+IGNvbnNvbGUubG9nKCdzb3J0cyAxJywgdikpKVxuICAgICAgOiBvZihbXSkgLy8gLnBpcGUodGFwKHYgPT4gY29uc29sZS5sb2coJ3NvcnRzIDInLCB2KSkpXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gIClcbn1cblxuZnVuY3Rpb24gX2NyZWF0ZUZpbHRlclN0YXRlc09ic2VydmFibGUoZGF0YXRhYmxlJDogT2JzZXJ2YWJsZTxHcWxEYXRhdGFibGVBY2Nlc3NvciB8IHVuZGVmaW5lZD4pIHtcbiAgcmV0dXJuIGRhdGF0YWJsZSQucGlwZShcbiAgICAvLyB0YXAodiA9PiBjb25zb2xlLmxvZygnZmlsdGVycyBnb3QgZHQnLCB2KSksXG4gICAgc3dpdGNoTWFwKGR0ID0+IGR0XG4gICAgICA/IGR0LmZpbHRlclN0YXRlcyAvLyAucGlwZSh0YXAodiA9PiBjb25zb2xlLmxvZygnZmlsdGVyU3RhdGVzIDEnLCB2KSkpXG4gICAgICA6IG9mKFtdKSAvLyAucGlwZSh0YXAodiA9PiBjb25zb2xlLmxvZygnZmlsdGVyU3RhdGVzIDInLCB2KSkpXG4gICAgKSxcbiAgICAvLyBUT0RPOiBSZW1vdmUgd2hlbiB0aGUgZGF0YXRhYmxlIGZpeGVzIHRoZSBidWcgY2F1c2luZyBpdCB0byBlbWl0IG1vcmUgdGhhbiBpdCBzaG91bGQuXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHgsIHkpID0+IEpTT04uc3RyaW5naWZ5KHgpID09PSBKU09OLnN0cmluZ2lmeSh5KSksXG4gIClcbn1cblxuZnVuY3Rpb24gX2NyZWF0ZURhdGF0YWJsZVJlc3VsdHNPYnNlcnZhYmxlKFxuICBkYXRhdGFibGUkOiBPYnNlcnZhYmxlPEdxbERhdGF0YWJsZUFjY2Vzc29yIHwgdW5kZWZpbmVkPixcbiAgbWFwcGVyczogRGF0YXRhYmxlTWFwcGVycyxcbiAgY29udGV4dCQ6IE9ic2VydmFibGU8TWFwcGVyQ29udGV4dD4sXG4pOiBPYnNlcnZhYmxlPERhdGF0YWJsZVJlc3VsdHM+IHtcbiAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPERhdGF0YWJsZVJlc3VsdHM+KChzdWJzY3JpYmVyOiBTdWJzY3JpYmVyPERhdGF0YWJsZVJlc3VsdHM+KSA9PiB7XG4gICAgY29uc3QgZGF0YXRhYmxlU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PEdxbERhdGF0YWJsZUFjY2Vzc29yIHwgdW5kZWZpbmVkPigpXG5cbiAgICBjb25zdCBkdFN1YiA9IGRhdGF0YWJsZSQuc3Vic2NyaWJlKFxuICAgICAgZHQgPT4gZGF0YXRhYmxlU3ViamVjdC5uZXh0KGR0KSxcbiAgICAgIGVyciA9PiBkYXRhdGFibGVTdWJqZWN0LmVycm9yKGVyciksXG4gICAgICAoKSA9PiBkYXRhdGFibGVTdWJqZWN0LmNvbXBsZXRlKClcbiAgICApXG5cbiAgICBjb25zdCBjdHhTdWIgPSBjb250ZXh0JC5waXBlKFxuICAgICAgc3dpdGNoTWFwKGNvbnRleHQgPT4ge1xuXG4gICAgICAgIC8vIFRPRE86IERlY2lkZSBpZiB0aGUgZGlzYWJsZWQgcGFnaW5nIGZlYXR1cmUgd2lsbCBiZSByZWltcGxlbWVudGVkIGluIGEgd2F5XG4gICAgICAgIC8vIHRoYXQgaXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgaGVyZS4gYF9pc1BhZ2luZ0Rpc2FibGVkKHF1ZXJ5UmVmKWBcbiAgICAgICAgY29uc3QgcGFnZUluZm8kID0gY3JlYXRlUGFnZUluZm9PYnNlcnZhYmxlKGRhdGF0YWJsZSQpLnBpcGUoXG4gICAgICAgICAgbWFwKGluZm8gPT4gbWFwcGVycy5wYWdlSW5mbyhpbmZvKSlcbiAgICAgICAgKVxuXG4gICAgICAgIGNvbnN0IHNvcnRzJCA9IF9jcmVhdGVTb3J0c09ic2VydmFibGUoZGF0YXRhYmxlJCkucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAobSA9PiB3cmFwSW50b09ic2VydmFibGUobWFwcGVycy5zb3J0cyhtLCBjb250ZXh0KSkpXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCBmaWx0ZXJJbmZvJCA9IF9jcmVhdGVGaWx0ZXJTdGF0ZXNPYnNlcnZhYmxlKGRhdGF0YWJsZSQpLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKHggPT4gbWFwRmlsdGVyU3RhdGVzKHgsIG1hcHBlcnMuZmlsdGVycywgY29udGV4dCkpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgIHBhZ2VJbmZvJCxcbiAgICAgICAgICBzb3J0cyQsXG4gICAgICAgICAgZmlsdGVySW5mbyQsXG4gICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgbWFwKChbIHBhZ2VJbmZvLCBzb3J0cywgZmlsdGVySW5mbyBdKSA9PiAoe1xuICAgICAgICAgICAgcGFnZUluZm8sXG4gICAgICAgICAgICBzb3J0cyxcbiAgICAgICAgICAgIGZpbHRlcjogZmlsdGVySW5mbyxcbiAgICAgICAgICAgIGNvbnRleHQ6IGNvbnRleHRcbiAgICAgICAgICB9KSlcbiAgICAgICAgKVxuXG4gICAgICB9KVxuICAgICkuc3Vic2NyaWJlKHN1YnNjcmliZXIpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZHRTdWIudW5zdWJzY3JpYmUoKVxuICAgICAgY3R4U3ViLnVuc3Vic2NyaWJlKClcbiAgICB9XG4gIH0pXG59XG5cbi8vIGZ1bmN0aW9uIF9pc1BhZ2luZ0Rpc2FibGVkPFREYXRhLCBUVmFyaWFibGVzLCBUUm93PihxdWVyeVJlZjogRGF0YXRhYmxlR3JhcGhRTFF1ZXJ5UmVmPFREYXRhLCBUVmFyaWFibGVzLCBUUm93Pik6IGJvb2xlYW4ge1xuLy8gICByZXR1cm4gcXVlcnlSZWYuZ2V0UXVlcnlQcm9jZXNzaW5nQ29uZmlnKCk/LmRpc2FibGVQYWdpbmcgPz8gZmFsc2Vcbi8vIH1cbiJdfQ==
@@ -0,0 +1,11 @@
1
+ export const DEFAULT_PAGE_SIZE = 20;
2
+ export function getPageInfo(datatable, defaultPageSize = DEFAULT_PAGE_SIZE) {
3
+ var _a, _b, _c, _d, _e, _f, _g;
4
+ return {
5
+ offset: (_b = (_a = datatable === null || datatable === void 0 ? void 0 : datatable.ngxDatatable) === null || _a === void 0 ? void 0 : _a.offset) !== null && _b !== void 0 ? _b : 0,
6
+ pageSize: (_d = (_c = datatable === null || datatable === void 0 ? void 0 : datatable.ngxDatatable) === null || _c === void 0 ? void 0 : _c.pageSize) !== null && _d !== void 0 ? _d : defaultPageSize,
7
+ limit: (_e = datatable === null || datatable === void 0 ? void 0 : datatable.ngxDatatable) === null || _e === void 0 ? void 0 : _e.limit,
8
+ count: (_g = (_f = datatable === null || datatable === void 0 ? void 0 : datatable.ngxDatatable) === null || _f === void 0 ? void 0 : _f.count) !== null && _g !== void 0 ? _g : 0
9
+ };
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXBhZ2UtaW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9ncmFwaHFsL2RhdGF0YWJsZS9nZXQtcGFnZS1pbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLEVBQUUsQ0FBQTtBQUVuQyxNQUFNLFVBQVUsV0FBVyxDQUN6QixTQUFrRCxFQUNsRCxrQkFBMEIsaUJBQWlCOztJQUUzQyxPQUFPO1FBQ0wsTUFBTSxFQUFFLE1BQUEsTUFBQSxTQUFTLGFBQVQsU0FBUyx1QkFBVCxTQUFTLENBQUUsWUFBWSwwQ0FBRSxNQUFNLG1DQUFJLENBQUM7UUFDNUMsUUFBUSxFQUFFLE1BQUEsTUFBQSxTQUFTLGFBQVQsU0FBUyx1QkFBVCxTQUFTLENBQUUsWUFBWSwwQ0FBRSxRQUFRLG1DQUFJLGVBQWU7UUFDOUQsS0FBSyxFQUFFLE1BQUEsU0FBUyxhQUFULFNBQVMsdUJBQVQsU0FBUyxDQUFFLFlBQVksMENBQUUsS0FBSztRQUNyQyxLQUFLLEVBQUUsTUFBQSxNQUFBLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsQ0FBRSxZQUFZLDBDQUFFLEtBQUssbUNBQUksQ0FBQztLQUMzQyxDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRoZVNlYW1QYWdlSW5mbyB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9kYXRhdGFibGUnXG5cbmltcG9ydCB7IEdxbERhdGF0YWJsZUFjY2Vzc29yIH0gZnJvbSAnLi4vbW9kZWxzL2dxbC1kYXRhdGFibGUtYWNjZXNzb3InXG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1BBR0VfU0laRSA9IDIwXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYWdlSW5mbyhcbiAgZGF0YXRhYmxlOiBHcWxEYXRhdGFibGVBY2Nlc3NvciB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGRlZmF1bHRQYWdlU2l6ZTogbnVtYmVyID0gREVGQVVMVF9QQUdFX1NJWkVcbik6IFRoZVNlYW1QYWdlSW5mbyB7XG4gIHJldHVybiB7XG4gICAgb2Zmc2V0OiBkYXRhdGFibGU/Lm5neERhdGF0YWJsZT8ub2Zmc2V0ID8/IDAsXG4gICAgcGFnZVNpemU6IGRhdGF0YWJsZT8ubmd4RGF0YXRhYmxlPy5wYWdlU2l6ZSA/PyBkZWZhdWx0UGFnZVNpemUsXG4gICAgbGltaXQ6IGRhdGF0YWJsZT8ubmd4RGF0YXRhYmxlPy5saW1pdCxcbiAgICBjb3VudDogZGF0YXRhYmxlPy5uZ3hEYXRhdGFibGU/LmNvdW50ID8/IDBcbiAgfVxufVxuIl19
@@ -0,0 +1,7 @@
1
+ export * from './datatable-helpers';
2
+ export * from './datatable-graphql.service';
3
+ export * from './datatable-graphql-query-ref';
4
+ export * from './map-filter-states';
5
+ export * from './mapper-context';
6
+ export * from './get-page-info';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZ3JhcGhxbC9kYXRhdGFibGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLDZCQUE2QixDQUFBO0FBQzNDLGNBQWMsK0JBQStCLENBQUE7QUFDN0MsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLGtCQUFrQixDQUFBO0FBQ2hDLGNBQWMsaUJBQWlCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RhdGF0YWJsZS1oZWxwZXJzJ1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhdGFibGUtZ3JhcGhxbC5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhdGFibGUtZ3JhcGhxbC1xdWVyeS1yZWYnXG5leHBvcnQgKiBmcm9tICcuL21hcC1maWx0ZXItc3RhdGVzJ1xuZXhwb3J0ICogZnJvbSAnLi9tYXBwZXItY29udGV4dCdcbmV4cG9ydCAqIGZyb20gJy4vZ2V0LXBhZ2UtaW5mbydcbiJdfQ==