@skyux/list-builder 5.0.0 → 5.5.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (368) hide show
  1. package/README.md +6 -4
  2. package/bundles/skyux-list-builder.umd.js +317 -336
  3. package/documentation.json +857 -639
  4. package/esm2015/index.js +78 -0
  5. package/esm2015/index.js.map +1 -0
  6. package/esm2015/lib/modules/list/list-data-request.model.js +18 -0
  7. package/esm2015/lib/modules/list/list-data-request.model.js.map +1 -0
  8. package/esm2015/lib/modules/list/list-data-response.model.js +9 -0
  9. package/esm2015/lib/modules/list/list-data-response.model.js.map +1 -0
  10. package/esm2015/lib/modules/list/list-data.provider.js +7 -0
  11. package/esm2015/lib/modules/list/list-data.provider.js.map +1 -0
  12. package/esm2015/lib/modules/list/list-paging.component.js +13 -0
  13. package/esm2015/lib/modules/list/list-paging.component.js.map +1 -0
  14. package/esm2015/lib/modules/list/list-view.component.js +28 -0
  15. package/esm2015/lib/modules/list/list-view.component.js.map +1 -0
  16. package/esm2015/lib/modules/list/list.component.js +305 -0
  17. package/esm2015/lib/modules/list/list.component.js.map +1 -0
  18. package/esm2015/lib/modules/list/list.module.js +18 -0
  19. package/esm2015/lib/modules/list/list.module.js.map +1 -0
  20. package/esm2015/lib/modules/list/state/filters/filters.orchestrator.js +16 -0
  21. package/esm2015/lib/modules/list/state/filters/filters.orchestrator.js.map +1 -0
  22. package/esm2015/lib/modules/list/state/filters/update.action.js +9 -0
  23. package/esm2015/lib/modules/list/state/filters/update.action.js.map +1 -0
  24. package/esm2015/lib/modules/list/state/items/items.orchestrator.js +53 -0
  25. package/esm2015/lib/modules/list/state/items/items.orchestrator.js.map +1 -0
  26. package/esm2015/lib/modules/list/state/items/load.action.js +12 -0
  27. package/esm2015/lib/modules/list/state/items/load.action.js.map +1 -0
  28. package/esm2015/lib/modules/list/state/items/set-items-selected.action.js +13 -0
  29. package/esm2015/lib/modules/list/state/items/set-items-selected.action.js.map +1 -0
  30. package/esm2015/lib/modules/list/state/items/set-loading.action.js +9 -0
  31. package/esm2015/lib/modules/list/state/items/set-loading.action.js.map +1 -0
  32. package/esm2015/lib/modules/list/state/list-state-action.type.js +2 -0
  33. package/esm2015/lib/modules/list/state/list-state-action.type.js.map +1 -0
  34. package/esm2015/lib/modules/list/state/list-state.model.js +24 -0
  35. package/esm2015/lib/modules/list/state/list-state.model.js.map +1 -0
  36. package/esm2015/lib/modules/list/state/list-state.rxstate.js +80 -0
  37. package/esm2015/lib/modules/list/state/list-state.rxstate.js.map +1 -0
  38. package/esm2015/lib/modules/list/state/list-state.state-node.js +37 -0
  39. package/esm2015/lib/modules/list/state/list-state.state-node.js.map +1 -0
  40. package/esm2015/lib/modules/list/state/paging/paging.model.js +14 -0
  41. package/esm2015/lib/modules/list/state/paging/paging.model.js.map +1 -0
  42. package/esm2015/lib/modules/list/state/paging/paging.orchestrator.js +27 -0
  43. package/esm2015/lib/modules/list/state/paging/paging.orchestrator.js.map +1 -0
  44. package/esm2015/lib/modules/list/state/paging/set-items-per-page.action.js +9 -0
  45. package/esm2015/lib/modules/list/state/paging/set-items-per-page.action.js.map +1 -0
  46. package/esm2015/lib/modules/list/state/paging/set-max-pages.action.js +9 -0
  47. package/esm2015/lib/modules/list/state/paging/set-max-pages.action.js.map +1 -0
  48. package/esm2015/lib/modules/list/state/paging/set-page-number.action.js +9 -0
  49. package/esm2015/lib/modules/list/state/paging/set-page-number.action.js.map +1 -0
  50. package/esm2015/lib/modules/list/state/search/search.model.js +32 -0
  51. package/esm2015/lib/modules/list/state/search/search.model.js.map +1 -0
  52. package/esm2015/lib/modules/list/state/search/search.orchestrator.js +47 -0
  53. package/esm2015/lib/modules/list/state/search/search.orchestrator.js.map +1 -0
  54. package/esm2015/lib/modules/list/state/search/set-field-selectors.action.js +9 -0
  55. package/esm2015/lib/modules/list/state/search/set-field-selectors.action.js.map +1 -0
  56. package/esm2015/lib/modules/list/state/search/set-functions.action.js +9 -0
  57. package/esm2015/lib/modules/list/state/search/set-functions.action.js.map +1 -0
  58. package/esm2015/lib/modules/list/state/search/set-options.action.js +11 -0
  59. package/esm2015/lib/modules/list/state/search/set-options.action.js.map +1 -0
  60. package/esm2015/lib/modules/list/state/search/set-search-text.action.js +9 -0
  61. package/esm2015/lib/modules/list/state/search/set-search-text.action.js.map +1 -0
  62. package/esm2015/lib/modules/list/state/selected/load.action.js +9 -0
  63. package/esm2015/lib/modules/list/state/selected/load.action.js.map +1 -0
  64. package/esm2015/lib/modules/list/state/selected/selected.model.js +9 -0
  65. package/esm2015/lib/modules/list/state/selected/selected.model.js.map +1 -0
  66. package/esm2015/lib/modules/list/state/selected/selected.orchestrator.js +56 -0
  67. package/esm2015/lib/modules/list/state/selected/selected.orchestrator.js.map +1 -0
  68. package/esm2015/lib/modules/list/state/selected/set-item-selected.action.js +10 -0
  69. package/esm2015/lib/modules/list/state/selected/set-item-selected.action.js.map +1 -0
  70. package/esm2015/lib/modules/list/state/selected/set-items-selected.action.js +11 -0
  71. package/esm2015/lib/modules/list/state/selected/set-items-selected.action.js.map +1 -0
  72. package/esm2015/lib/modules/list/state/selected/set-loading.action.js +9 -0
  73. package/esm2015/lib/modules/list/state/selected/set-loading.action.js.map +1 -0
  74. package/esm2015/lib/modules/list/state/sort/label.model.js +25 -0
  75. package/esm2015/lib/modules/list/state/sort/label.model.js.map +1 -0
  76. package/esm2015/lib/modules/list/state/sort/set-available.action.js +9 -0
  77. package/esm2015/lib/modules/list/state/sort/set-available.action.js.map +1 -0
  78. package/esm2015/lib/modules/list/state/sort/set-field-selectors.action.js +9 -0
  79. package/esm2015/lib/modules/list/state/sort/set-field-selectors.action.js.map +1 -0
  80. package/esm2015/lib/modules/list/state/sort/set-global.action.js +9 -0
  81. package/esm2015/lib/modules/list/state/sort/set-global.action.js.map +1 -0
  82. package/esm2015/lib/modules/list/state/sort/sort.model.js +27 -0
  83. package/esm2015/lib/modules/list/state/sort/sort.model.js.map +1 -0
  84. package/esm2015/lib/modules/list/state/sort/sort.orchestrator.js +30 -0
  85. package/esm2015/lib/modules/list/state/sort/sort.orchestrator.js.map +1 -0
  86. package/esm2015/lib/modules/list/state/toolbar/disable.action.js +9 -0
  87. package/esm2015/lib/modules/list/state/toolbar/disable.action.js.map +1 -0
  88. package/esm2015/lib/modules/list/state/toolbar/load.action.js +10 -0
  89. package/esm2015/lib/modules/list/state/toolbar/load.action.js.map +1 -0
  90. package/esm2015/lib/modules/list/state/toolbar/remove.action.js +9 -0
  91. package/esm2015/lib/modules/list/state/toolbar/remove.action.js.map +1 -0
  92. package/esm2015/lib/modules/list/state/toolbar/set-exists.action.js +9 -0
  93. package/esm2015/lib/modules/list/state/toolbar/set-exists.action.js.map +1 -0
  94. package/esm2015/lib/modules/list/state/toolbar/set-type.action.js +9 -0
  95. package/esm2015/lib/modules/list/state/toolbar/set-type.action.js.map +1 -0
  96. package/esm2015/lib/modules/list/state/toolbar/show-multiselect-toolbar.action.js +9 -0
  97. package/esm2015/lib/modules/list/state/toolbar/show-multiselect-toolbar.action.js.map +1 -0
  98. package/esm2015/lib/modules/list/state/toolbar/toolbar-item.model.js +16 -0
  99. package/esm2015/lib/modules/list/state/toolbar/toolbar-item.model.js.map +1 -0
  100. package/esm2015/lib/modules/list/state/toolbar/toolbar.model.js +17 -0
  101. package/esm2015/lib/modules/list/state/toolbar/toolbar.model.js.map +1 -0
  102. package/esm2015/lib/modules/list/state/toolbar/toolbar.orchestrator.js +80 -0
  103. package/esm2015/lib/modules/list/state/toolbar/toolbar.orchestrator.js.map +1 -0
  104. package/esm2015/lib/modules/list/state/views/load.action.js +9 -0
  105. package/esm2015/lib/modules/list/state/views/load.action.js.map +1 -0
  106. package/esm2015/lib/modules/list/state/views/set-active.action.js +9 -0
  107. package/esm2015/lib/modules/list/state/views/set-active.action.js.map +1 -0
  108. package/esm2015/lib/modules/list/state/views/view.model.js +10 -0
  109. package/esm2015/lib/modules/list/state/views/view.model.js.map +1 -0
  110. package/esm2015/lib/modules/list/state/views/views.model.js +13 -0
  111. package/esm2015/lib/modules/list/state/views/views.model.js.map +1 -0
  112. package/esm2015/lib/modules/list/state/views/views.orchestrator.js +21 -0
  113. package/esm2015/lib/modules/list/state/views/views.orchestrator.js.map +1 -0
  114. package/esm2015/lib/modules/list-data-provider-in-memory/list-data-in-memory.provider.js +160 -0
  115. package/esm2015/lib/modules/list-data-provider-in-memory/list-data-in-memory.provider.js.map +1 -0
  116. package/esm2015/lib/modules/list-filters/filter.model.js +18 -0
  117. package/esm2015/lib/modules/list-filters/filter.model.js.map +1 -0
  118. package/esm2015/lib/modules/list-filters/list-filter-button.component.js +44 -0
  119. package/esm2015/lib/modules/list-filters/list-filter-button.component.js.map +1 -0
  120. package/esm2015/lib/modules/list-filters/list-filter-inline-item-renderer.component.js +34 -0
  121. package/esm2015/lib/modules/list-filters/list-filter-inline-item-renderer.component.js.map +1 -0
  122. package/esm2015/lib/modules/list-filters/list-filter-inline-item.component.js +45 -0
  123. package/esm2015/lib/modules/list-filters/list-filter-inline-item.component.js.map +1 -0
  124. package/esm2015/lib/modules/list-filters/list-filter-inline.component.js +74 -0
  125. package/esm2015/lib/modules/list-filters/list-filter-inline.component.js.map +1 -0
  126. package/esm2015/lib/modules/list-filters/list-filter-inline.model.js +21 -0
  127. package/esm2015/lib/modules/list-filters/list-filter-inline.model.js.map +1 -0
  128. package/esm2015/lib/modules/list-filters/list-filter-summary.component.js +60 -0
  129. package/esm2015/lib/modules/list-filters/list-filter-summary.component.js.map +1 -0
  130. package/esm2015/lib/modules/list-filters/list-filters.module.js +41 -0
  131. package/esm2015/lib/modules/list-filters/list-filters.module.js.map +1 -0
  132. package/esm2015/lib/modules/list-paging/list-paging.component.js +89 -0
  133. package/esm2015/lib/modules/list-paging/list-paging.component.js.map +1 -0
  134. package/esm2015/lib/modules/list-paging/list-paging.module.js +19 -0
  135. package/esm2015/lib/modules/list-paging/list-paging.module.js.map +1 -0
  136. package/esm2015/lib/modules/list-toolbar/list-multiselect-toolbar.component.js +153 -0
  137. package/esm2015/lib/modules/list-toolbar/list-multiselect-toolbar.component.js.map +1 -0
  138. package/esm2015/lib/modules/list-toolbar/list-secondary-actions/list-secondary-action.component.js +33 -0
  139. package/esm2015/lib/modules/list-toolbar/list-secondary-actions/list-secondary-action.component.js.map +1 -0
  140. package/esm2015/lib/modules/list-toolbar/list-secondary-actions/list-secondary-action.js +2 -0
  141. package/esm2015/lib/modules/list-toolbar/list-secondary-actions/list-secondary-action.js.map +1 -0
  142. package/esm2015/lib/modules/list-toolbar/list-secondary-actions/list-secondary-actions-host.component.js +50 -0
  143. package/esm2015/lib/modules/list-toolbar/list-secondary-actions/list-secondary-actions-host.component.js.map +1 -0
  144. package/esm2015/lib/modules/list-toolbar/list-secondary-actions/list-secondary-actions.component.js +45 -0
  145. package/esm2015/lib/modules/list-toolbar/list-secondary-actions/list-secondary-actions.component.js.map +1 -0
  146. package/esm2015/lib/modules/list-toolbar/list-secondary-actions/list-secondary-actions.module.js +46 -0
  147. package/esm2015/lib/modules/list-toolbar/list-secondary-actions/list-secondary-actions.module.js.map +1 -0
  148. package/esm2015/lib/modules/list-toolbar/list-secondary-actions/list-secondary-actions.service.js +36 -0
  149. package/esm2015/lib/modules/list-toolbar/list-secondary-actions/list-secondary-actions.service.js.map +1 -0
  150. package/esm2015/lib/modules/list-toolbar/list-toolbar-item-renderer.component.js +30 -0
  151. package/esm2015/lib/modules/list-toolbar/list-toolbar-item-renderer.component.js.map +1 -0
  152. package/esm2015/lib/modules/list-toolbar/list-toolbar-item.component.js +47 -0
  153. package/esm2015/lib/modules/list-toolbar/list-toolbar-item.component.js.map +1 -0
  154. package/esm2015/lib/modules/list-toolbar/list-toolbar-search-actions.component.js +19 -0
  155. package/esm2015/lib/modules/list-toolbar/list-toolbar-search-actions.component.js.map +1 -0
  156. package/esm2015/lib/modules/list-toolbar/list-toolbar-sort.component.js +25 -0
  157. package/esm2015/lib/modules/list-toolbar/list-toolbar-sort.component.js.map +1 -0
  158. package/esm2015/lib/modules/list-toolbar/list-toolbar-view-actions.component.js +21 -0
  159. package/esm2015/lib/modules/list-toolbar/list-toolbar-view-actions.component.js.map +1 -0
  160. package/esm2015/lib/modules/list-toolbar/list-toolbar.component.js +360 -0
  161. package/esm2015/lib/modules/list-toolbar/list-toolbar.component.js.map +1 -0
  162. package/esm2015/lib/modules/list-toolbar/list-toolbar.module.js +87 -0
  163. package/esm2015/lib/modules/list-toolbar/list-toolbar.module.js.map +1 -0
  164. package/esm2015/lib/modules/list-toolbar/state/config/config.model.js +14 -0
  165. package/esm2015/lib/modules/list-toolbar/state/config/config.model.js.map +1 -0
  166. package/esm2015/lib/modules/list-toolbar/state/config/config.orchestrator.js +21 -0
  167. package/esm2015/lib/modules/list-toolbar/state/config/config.orchestrator.js.map +1 -0
  168. package/esm2015/lib/modules/list-toolbar/state/config/set-search-enabled.action.js +9 -0
  169. package/esm2015/lib/modules/list-toolbar/state/config/set-search-enabled.action.js.map +1 -0
  170. package/esm2015/lib/modules/list-toolbar/state/config/set-sort-selector-enabled.action.js +10 -0
  171. package/esm2015/lib/modules/list-toolbar/state/config/set-sort-selector-enabled.action.js.map +1 -0
  172. package/esm2015/lib/modules/list-toolbar/state/toolbar-state-action.type.js +2 -0
  173. package/esm2015/lib/modules/list-toolbar/state/toolbar-state-action.type.js.map +1 -0
  174. package/esm2015/lib/modules/list-toolbar/state/toolbar-state.model.js +10 -0
  175. package/esm2015/lib/modules/list-toolbar/state/toolbar-state.model.js.map +1 -0
  176. package/esm2015/lib/modules/list-toolbar/state/toolbar-state.rxstate.js +19 -0
  177. package/esm2015/lib/modules/list-toolbar/state/toolbar-state.rxstate.js.map +1 -0
  178. package/esm2015/lib/modules/list-toolbar/state/toolbar-state.state-node.js +23 -0
  179. package/esm2015/lib/modules/list-toolbar/state/toolbar-state.state-node.js.map +1 -0
  180. package/esm2015/lib/modules/shared/sky-list-builder-resources.module.js +53 -0
  181. package/esm2015/lib/modules/shared/sky-list-builder-resources.module.js.map +1 -0
  182. package/esm2015/skyux-list-builder.js +2 -2
  183. package/esm2015/skyux-list-builder.js.map +1 -0
  184. package/fesm2015/skyux-list-builder.js +383 -399
  185. package/fesm2015/skyux-list-builder.js.map +1 -1
  186. package/index.d.ts +74 -0
  187. package/{modules → lib/modules}/list/list-data-request.model.d.ts +0 -0
  188. package/{modules → lib/modules}/list/list-data-response.model.d.ts +0 -0
  189. package/{modules → lib/modules}/list/list-data.provider.d.ts +0 -0
  190. package/{modules → lib/modules}/list/list-paging.component.d.ts +0 -0
  191. package/{modules → lib/modules}/list/list-view.component.d.ts +0 -0
  192. package/{modules → lib/modules}/list/list.component.d.ts +0 -0
  193. package/{modules → lib/modules}/list/list.module.d.ts +0 -0
  194. package/{modules → lib/modules}/list/state/filters/filters.orchestrator.d.ts +0 -0
  195. package/{modules → lib/modules}/list/state/filters/update.action.d.ts +0 -0
  196. package/{modules → lib/modules}/list/state/items/items.orchestrator.d.ts +0 -0
  197. package/{modules → lib/modules}/list/state/items/load.action.d.ts +0 -0
  198. package/{modules → lib/modules}/list/state/items/set-items-selected.action.d.ts +0 -0
  199. package/{modules → lib/modules}/list/state/items/set-loading.action.d.ts +0 -0
  200. package/{modules → lib/modules}/list/state/list-state-action.type.d.ts +0 -0
  201. package/{modules → lib/modules}/list/state/list-state.model.d.ts +0 -0
  202. package/{modules → lib/modules}/list/state/list-state.rxstate.d.ts +0 -0
  203. package/{modules → lib/modules}/list/state/list-state.state-node.d.ts +0 -0
  204. package/{modules → lib/modules}/list/state/paging/paging.model.d.ts +0 -0
  205. package/{modules → lib/modules}/list/state/paging/paging.orchestrator.d.ts +0 -0
  206. package/{modules → lib/modules}/list/state/paging/set-items-per-page.action.d.ts +0 -0
  207. package/{modules → lib/modules}/list/state/paging/set-max-pages.action.d.ts +0 -0
  208. package/{modules → lib/modules}/list/state/paging/set-page-number.action.d.ts +0 -0
  209. package/{modules → lib/modules}/list/state/search/search.model.d.ts +1 -0
  210. package/{modules → lib/modules}/list/state/search/search.orchestrator.d.ts +0 -0
  211. package/{modules → lib/modules}/list/state/search/set-field-selectors.action.d.ts +0 -0
  212. package/{modules → lib/modules}/list/state/search/set-functions.action.d.ts +0 -0
  213. package/{modules → lib/modules}/list/state/search/set-options.action.d.ts +0 -0
  214. package/{modules → lib/modules}/list/state/search/set-search-text.action.d.ts +0 -0
  215. package/{modules → lib/modules}/list/state/selected/load.action.d.ts +0 -0
  216. package/{modules → lib/modules}/list/state/selected/selected.model.d.ts +0 -0
  217. package/{modules → lib/modules}/list/state/selected/selected.orchestrator.d.ts +0 -0
  218. package/{modules → lib/modules}/list/state/selected/set-item-selected.action.d.ts +0 -0
  219. package/{modules → lib/modules}/list/state/selected/set-items-selected.action.d.ts +0 -0
  220. package/{modules → lib/modules}/list/state/selected/set-loading.action.d.ts +0 -0
  221. package/{modules → lib/modules}/list/state/sort/label.model.d.ts +0 -0
  222. package/{modules → lib/modules}/list/state/sort/set-available.action.d.ts +0 -0
  223. package/{modules → lib/modules}/list/state/sort/set-field-selectors.action.d.ts +0 -0
  224. package/{modules → lib/modules}/list/state/sort/set-global.action.d.ts +0 -0
  225. package/{modules → lib/modules}/list/state/sort/sort.model.d.ts +0 -0
  226. package/{modules → lib/modules}/list/state/sort/sort.orchestrator.d.ts +0 -0
  227. package/{modules → lib/modules}/list/state/toolbar/disable.action.d.ts +0 -0
  228. package/{modules → lib/modules}/list/state/toolbar/load.action.d.ts +0 -0
  229. package/{modules → lib/modules}/list/state/toolbar/remove.action.d.ts +0 -0
  230. package/{modules → lib/modules}/list/state/toolbar/set-exists.action.d.ts +0 -0
  231. package/{modules → lib/modules}/list/state/toolbar/set-type.action.d.ts +0 -0
  232. package/{modules → lib/modules}/list/state/toolbar/show-multiselect-toolbar.action.d.ts +0 -0
  233. package/{modules → lib/modules}/list/state/toolbar/toolbar-item.model.d.ts +0 -0
  234. package/{modules → lib/modules}/list/state/toolbar/toolbar.model.d.ts +0 -0
  235. package/{modules → lib/modules}/list/state/toolbar/toolbar.orchestrator.d.ts +0 -0
  236. package/{modules → lib/modules}/list/state/views/load.action.d.ts +0 -0
  237. package/{modules → lib/modules}/list/state/views/set-active.action.d.ts +0 -0
  238. package/{modules → lib/modules}/list/state/views/view.model.d.ts +0 -0
  239. package/{modules → lib/modules}/list/state/views/views.model.d.ts +0 -0
  240. package/{modules → lib/modules}/list/state/views/views.orchestrator.d.ts +0 -0
  241. package/{modules → lib/modules}/list-data-provider-in-memory/list-data-in-memory.provider.d.ts +0 -0
  242. package/{modules → lib/modules}/list-filters/filter.model.d.ts +0 -0
  243. package/{modules → lib/modules}/list-filters/list-filter-button.component.d.ts +0 -0
  244. package/{modules → lib/modules}/list-filters/list-filter-inline-item-renderer.component.d.ts +0 -0
  245. package/{modules → lib/modules}/list-filters/list-filter-inline-item.component.d.ts +0 -0
  246. package/{modules → lib/modules}/list-filters/list-filter-inline.component.d.ts +0 -0
  247. package/{modules → lib/modules}/list-filters/list-filter-inline.model.d.ts +0 -0
  248. package/{modules → lib/modules}/list-filters/list-filter-summary.component.d.ts +0 -0
  249. package/{modules → lib/modules}/list-filters/list-filters.module.d.ts +0 -0
  250. package/{modules → lib/modules}/list-paging/list-paging.component.d.ts +0 -0
  251. package/{modules → lib/modules}/list-paging/list-paging.module.d.ts +0 -0
  252. package/{modules → lib/modules}/list-toolbar/list-multiselect-toolbar.component.d.ts +0 -0
  253. package/{modules → lib/modules}/list-toolbar/list-secondary-actions/list-secondary-action.component.d.ts +0 -0
  254. package/{modules → lib/modules}/list-toolbar/list-secondary-actions/list-secondary-action.d.ts +0 -0
  255. package/{modules → lib/modules}/list-toolbar/list-secondary-actions/list-secondary-actions-host.component.d.ts +0 -0
  256. package/{modules → lib/modules}/list-toolbar/list-secondary-actions/list-secondary-actions.component.d.ts +0 -0
  257. package/{modules → lib/modules}/list-toolbar/list-secondary-actions/list-secondary-actions.module.d.ts +0 -0
  258. package/{modules → lib/modules}/list-toolbar/list-secondary-actions/list-secondary-actions.service.d.ts +0 -0
  259. package/{modules → lib/modules}/list-toolbar/list-toolbar-item-renderer.component.d.ts +0 -0
  260. package/{modules → lib/modules}/list-toolbar/list-toolbar-item.component.d.ts +3 -3
  261. package/{modules → lib/modules}/list-toolbar/list-toolbar-search-actions.component.d.ts +0 -0
  262. package/{modules → lib/modules}/list-toolbar/list-toolbar-sort.component.d.ts +0 -0
  263. package/{modules → lib/modules}/list-toolbar/list-toolbar-view-actions.component.d.ts +0 -0
  264. package/{modules → lib/modules}/list-toolbar/list-toolbar.component.d.ts +2 -2
  265. package/{modules → lib/modules}/list-toolbar/list-toolbar.module.d.ts +0 -0
  266. package/{modules → lib/modules}/list-toolbar/state/config/config.model.d.ts +0 -0
  267. package/{modules → lib/modules}/list-toolbar/state/config/config.orchestrator.d.ts +0 -0
  268. package/{modules → lib/modules}/list-toolbar/state/config/set-search-enabled.action.d.ts +0 -0
  269. package/{modules → lib/modules}/list-toolbar/state/config/set-sort-selector-enabled.action.d.ts +0 -0
  270. package/{modules → lib/modules}/list-toolbar/state/toolbar-state-action.type.d.ts +0 -0
  271. package/{modules → lib/modules}/list-toolbar/state/toolbar-state.model.d.ts +0 -0
  272. package/{modules → lib/modules}/list-toolbar/state/toolbar-state.rxstate.d.ts +0 -0
  273. package/{modules → lib/modules}/list-toolbar/state/toolbar-state.state-node.d.ts +0 -0
  274. package/{modules → lib/modules}/shared/sky-list-builder-resources.module.d.ts +0 -0
  275. package/package.json +13 -13
  276. package/skyux-list-builder.d.ts +1 -1
  277. package/LICENSE +0 -21
  278. package/bundles/skyux-list-builder.umd.js.map +0 -1
  279. package/esm2015/modules/list/list-data-request.model.js +0 -18
  280. package/esm2015/modules/list/list-data-response.model.js +0 -9
  281. package/esm2015/modules/list/list-data.provider.js +0 -7
  282. package/esm2015/modules/list/list-paging.component.js +0 -13
  283. package/esm2015/modules/list/list-view.component.js +0 -28
  284. package/esm2015/modules/list/list.component.js +0 -301
  285. package/esm2015/modules/list/list.module.js +0 -26
  286. package/esm2015/modules/list/state/filters/filters.orchestrator.js +0 -17
  287. package/esm2015/modules/list/state/filters/update.action.js +0 -9
  288. package/esm2015/modules/list/state/items/items.orchestrator.js +0 -52
  289. package/esm2015/modules/list/state/items/load.action.js +0 -12
  290. package/esm2015/modules/list/state/items/set-items-selected.action.js +0 -13
  291. package/esm2015/modules/list/state/items/set-loading.action.js +0 -9
  292. package/esm2015/modules/list/state/list-state-action.type.js +0 -2
  293. package/esm2015/modules/list/state/list-state.model.js +0 -24
  294. package/esm2015/modules/list/state/list-state.rxstate.js +0 -80
  295. package/esm2015/modules/list/state/list-state.state-node.js +0 -37
  296. package/esm2015/modules/list/state/paging/paging.model.js +0 -14
  297. package/esm2015/modules/list/state/paging/paging.orchestrator.js +0 -28
  298. package/esm2015/modules/list/state/paging/set-items-per-page.action.js +0 -9
  299. package/esm2015/modules/list/state/paging/set-max-pages.action.js +0 -9
  300. package/esm2015/modules/list/state/paging/set-page-number.action.js +0 -9
  301. package/esm2015/modules/list/state/search/search.model.js +0 -31
  302. package/esm2015/modules/list/state/search/search.orchestrator.js +0 -46
  303. package/esm2015/modules/list/state/search/set-field-selectors.action.js +0 -9
  304. package/esm2015/modules/list/state/search/set-functions.action.js +0 -9
  305. package/esm2015/modules/list/state/search/set-options.action.js +0 -11
  306. package/esm2015/modules/list/state/search/set-search-text.action.js +0 -9
  307. package/esm2015/modules/list/state/selected/load.action.js +0 -9
  308. package/esm2015/modules/list/state/selected/selected.model.js +0 -9
  309. package/esm2015/modules/list/state/selected/selected.orchestrator.js +0 -57
  310. package/esm2015/modules/list/state/selected/set-item-selected.action.js +0 -10
  311. package/esm2015/modules/list/state/selected/set-items-selected.action.js +0 -11
  312. package/esm2015/modules/list/state/selected/set-loading.action.js +0 -9
  313. package/esm2015/modules/list/state/sort/label.model.js +0 -25
  314. package/esm2015/modules/list/state/sort/set-available.action.js +0 -9
  315. package/esm2015/modules/list/state/sort/set-field-selectors.action.js +0 -9
  316. package/esm2015/modules/list/state/sort/set-global.action.js +0 -9
  317. package/esm2015/modules/list/state/sort/sort.model.js +0 -27
  318. package/esm2015/modules/list/state/sort/sort.orchestrator.js +0 -31
  319. package/esm2015/modules/list/state/toolbar/disable.action.js +0 -9
  320. package/esm2015/modules/list/state/toolbar/load.action.js +0 -10
  321. package/esm2015/modules/list/state/toolbar/remove.action.js +0 -9
  322. package/esm2015/modules/list/state/toolbar/set-exists.action.js +0 -9
  323. package/esm2015/modules/list/state/toolbar/set-type.action.js +0 -9
  324. package/esm2015/modules/list/state/toolbar/show-multiselect-toolbar.action.js +0 -9
  325. package/esm2015/modules/list/state/toolbar/toolbar-item.model.js +0 -16
  326. package/esm2015/modules/list/state/toolbar/toolbar.model.js +0 -17
  327. package/esm2015/modules/list/state/toolbar/toolbar.orchestrator.js +0 -81
  328. package/esm2015/modules/list/state/views/load.action.js +0 -9
  329. package/esm2015/modules/list/state/views/set-active.action.js +0 -9
  330. package/esm2015/modules/list/state/views/view.model.js +0 -10
  331. package/esm2015/modules/list/state/views/views.model.js +0 -13
  332. package/esm2015/modules/list/state/views/views.orchestrator.js +0 -23
  333. package/esm2015/modules/list-data-provider-in-memory/list-data-in-memory.provider.js +0 -150
  334. package/esm2015/modules/list-filters/filter.model.js +0 -18
  335. package/esm2015/modules/list-filters/list-filter-button.component.js +0 -43
  336. package/esm2015/modules/list-filters/list-filter-inline-item-renderer.component.js +0 -34
  337. package/esm2015/modules/list-filters/list-filter-inline-item.component.js +0 -44
  338. package/esm2015/modules/list-filters/list-filter-inline.component.js +0 -71
  339. package/esm2015/modules/list-filters/list-filter-inline.model.js +0 -21
  340. package/esm2015/modules/list-filters/list-filter-summary.component.js +0 -58
  341. package/esm2015/modules/list-filters/list-filters.module.js +0 -48
  342. package/esm2015/modules/list-paging/list-paging.component.js +0 -88
  343. package/esm2015/modules/list-paging/list-paging.module.js +0 -30
  344. package/esm2015/modules/list-toolbar/list-multiselect-toolbar.component.js +0 -150
  345. package/esm2015/modules/list-toolbar/list-secondary-actions/list-secondary-action.component.js +0 -32
  346. package/esm2015/modules/list-toolbar/list-secondary-actions/list-secondary-action.js +0 -2
  347. package/esm2015/modules/list-toolbar/list-secondary-actions/list-secondary-actions-host.component.js +0 -49
  348. package/esm2015/modules/list-toolbar/list-secondary-actions/list-secondary-actions.component.js +0 -50
  349. package/esm2015/modules/list-toolbar/list-secondary-actions/list-secondary-actions.module.js +0 -50
  350. package/esm2015/modules/list-toolbar/list-secondary-actions/list-secondary-actions.service.js +0 -36
  351. package/esm2015/modules/list-toolbar/list-toolbar-item-renderer.component.js +0 -30
  352. package/esm2015/modules/list-toolbar/list-toolbar-item.component.js +0 -47
  353. package/esm2015/modules/list-toolbar/list-toolbar-search-actions.component.js +0 -19
  354. package/esm2015/modules/list-toolbar/list-toolbar-sort.component.js +0 -25
  355. package/esm2015/modules/list-toolbar/list-toolbar-view-actions.component.js +0 -21
  356. package/esm2015/modules/list-toolbar/list-toolbar.component.js +0 -356
  357. package/esm2015/modules/list-toolbar/list-toolbar.module.js +0 -87
  358. package/esm2015/modules/list-toolbar/state/config/config.model.js +0 -14
  359. package/esm2015/modules/list-toolbar/state/config/config.orchestrator.js +0 -23
  360. package/esm2015/modules/list-toolbar/state/config/set-search-enabled.action.js +0 -9
  361. package/esm2015/modules/list-toolbar/state/config/set-sort-selector-enabled.action.js +0 -10
  362. package/esm2015/modules/list-toolbar/state/toolbar-state-action.type.js +0 -2
  363. package/esm2015/modules/list-toolbar/state/toolbar-state.model.js +0 -10
  364. package/esm2015/modules/list-toolbar/state/toolbar-state.rxstate.js +0 -19
  365. package/esm2015/modules/list-toolbar/state/toolbar-state.state-node.js +0 -23
  366. package/esm2015/modules/shared/sky-list-builder-resources.module.js +0 -41
  367. package/esm2015/public-api.js +0 -78
  368. package/public-api.d.ts +0 -74
@@ -1,21 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * Adds a section on the right side of the toolbar for items that substantially change
5
- * or affect the view of the list. This includes simple filters and view switchers.
6
- * If the view section includes more than one item, simple filters appear on the left
7
- * and view switchers appear on the right.
8
- */
9
- export class SkyListToolbarViewActionsComponent {
10
- }
11
- SkyListToolbarViewActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.8", ngImport: i0, type: SkyListToolbarViewActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12
- SkyListToolbarViewActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.8", type: SkyListToolbarViewActionsComponent, selector: "sky-list-toolbar-view-actions", ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:flex;align-items:center}:host::ng-deep>:not(:last-child){margin-right:5px}.sky-list-toolbar-view-actions ::ng-deep>:not(:last-child){margin-right:5px}\n"] });
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.8", ngImport: i0, type: SkyListToolbarViewActionsComponent, decorators: [{
14
- type: Component,
15
- args: [{
16
- selector: 'sky-list-toolbar-view-actions',
17
- templateUrl: './list-toolbar-view-actions.component.html',
18
- styleUrls: ['./list-toolbar-view-actions.component.scss']
19
- }]
20
- }] });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC10b29sYmFyLXZpZXctYWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saXN0LWJ1aWxkZXIvc3JjL21vZHVsZXMvbGlzdC10b29sYmFyL2xpc3QtdG9vbGJhci12aWV3LWFjdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGlzdC1idWlsZGVyL3NyYy9tb2R1bGVzL2xpc3QtdG9vbGJhci9saXN0LXRvb2xiYXItdmlldy1hY3Rpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7O0FBRXZCOzs7OztHQUtHO0FBTUgsTUFBTSxPQUFPLGtDQUFrQzs7K0hBQWxDLGtDQUFrQzttSEFBbEMsa0NBQWtDLHFFQ2YvQyw2QkFDQTsyRkRjYSxrQ0FBa0M7a0JBTDlDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLCtCQUErQjtvQkFDekMsV0FBVyxFQUFFLDRDQUE0QztvQkFDekQsU0FBUyxFQUFFLENBQUMsNENBQTRDLENBQUM7aUJBQzFEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEFkZHMgYSBzZWN0aW9uIG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSB0b29sYmFyIGZvciBpdGVtcyB0aGF0IHN1YnN0YW50aWFsbHkgY2hhbmdlXG4gKiBvciBhZmZlY3QgdGhlIHZpZXcgb2YgdGhlIGxpc3QuIFRoaXMgaW5jbHVkZXMgc2ltcGxlIGZpbHRlcnMgYW5kIHZpZXcgc3dpdGNoZXJzLlxuICogSWYgdGhlIHZpZXcgc2VjdGlvbiBpbmNsdWRlcyBtb3JlIHRoYW4gb25lIGl0ZW0sIHNpbXBsZSBmaWx0ZXJzIGFwcGVhciBvbiB0aGUgbGVmdFxuICogYW5kIHZpZXcgc3dpdGNoZXJzIGFwcGVhciBvbiB0aGUgcmlnaHQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1saXN0LXRvb2xiYXItdmlldy1hY3Rpb25zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3QtdG9vbGJhci12aWV3LWFjdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9saXN0LXRvb2xiYXItdmlldy1hY3Rpb25zLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2t5TGlzdFRvb2xiYXJWaWV3QWN0aW9uc0NvbXBvbmVudCB7IH1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
@@ -1,356 +0,0 @@
1
- import { combineLatest as observableCombineLatest, Subject } from 'rxjs';
2
- import { map as observableMap, takeUntil, take, distinctUntilChanged } from 'rxjs/operators';
3
- import { ChangeDetectionStrategy, Component, ContentChildren, Input, TemplateRef, ViewChild } from '@angular/core';
4
- import { getValue } from '@skyux/list-builder-common';
5
- import { SkySearchComponent } from '@skyux/lookup';
6
- import { ListToolbarItemModel } from '../list/state/toolbar/toolbar-item.model';
7
- import { ListToolbarSetTypeAction } from '../list/state/toolbar/set-type.action';
8
- import { ListSortLabelModel } from '../list/state/sort/label.model';
9
- import { ListPagingSetPageNumberAction } from '../list/state/paging/set-page-number.action';
10
- import { SkyListFilterInlineComponent } from '../list-filters/list-filter-inline.component';
11
- import { SkyListFilterSummaryComponent } from '../list-filters/list-filter-summary.component';
12
- import { SkyListToolbarItemComponent } from './list-toolbar-item.component';
13
- import { SkyListToolbarSortComponent } from './list-toolbar-sort.component';
14
- import { SkyListToolbarViewActionsComponent } from './list-toolbar-view-actions.component';
15
- import { ListToolbarConfigSetSearchEnabledAction } from './state/config/set-search-enabled.action';
16
- import { ListToolbarConfigSetSortSelectorEnabledAction } from './state/config/set-sort-selector-enabled.action';
17
- import { ListToolbarState } from './state/toolbar-state.state-node';
18
- import { ListToolbarStateDispatcher } from './state/toolbar-state.rxstate';
19
- import { ListToolbarStateModel } from './state/toolbar-state.model';
20
- import * as i0 from "@angular/core";
21
- import * as i1 from "../list/state/list-state.state-node";
22
- import * as i2 from "../list/state/list-state.rxstate";
23
- import * as i3 from "./state/toolbar-state.state-node";
24
- import * as i4 from "./state/toolbar-state.rxstate";
25
- import * as i5 from "@skyux/layout";
26
- import * as i6 from "./list-toolbar-item-renderer.component";
27
- import * as i7 from "./list-multiselect-toolbar.component";
28
- import * as i8 from "@skyux/lookup";
29
- import * as i9 from "@skyux/lists";
30
- import * as i10 from "@angular/common";
31
- let nextId = 0;
32
- /**
33
- * Displays a toolbar for a SKY UX-themed list of data.
34
- */
35
- export class SkyListToolbarComponent {
36
- constructor(changeDetector, state, dispatcher, toolbarState, toolbarDispatcher) {
37
- this.changeDetector = changeDetector;
38
- this.state = state;
39
- this.dispatcher = dispatcher;
40
- this.toolbarState = toolbarState;
41
- this.toolbarDispatcher = toolbarDispatcher;
42
- /**
43
- * Display the search bar in the standard position or in a separate section.
44
- * To highlight the search bar in a section above all other toolbar items,
45
- * set this property to `search`.
46
- * @default 'standard'
47
- */
48
- this.toolbarType = 'standard';
49
- this.isToolbarDisabled = false;
50
- this.inlineFilterBarExpanded = false;
51
- this.hasAdditionalToolbarSection = false;
52
- this.hasViewActions = false;
53
- this.filterButtonId = `sky-list-toolbar-filter-button-${++nextId}`;
54
- this.listFilterInlineId = `sky-list-toolbar-filter-inline-${++nextId}`;
55
- /**
56
- * Fires when users submit a search.
57
- * @internal
58
- */
59
- this.searchApplied = new Subject();
60
- this.customItemIds = [];
61
- this.hasSortSelectors = false;
62
- this.inlineFiltersItemToolbarIndex = 5000;
63
- this.sortSelectorItemToolbarIndex = 6000;
64
- this.ngUnsubscribe = new Subject();
65
- }
66
- /**
67
- * Indicates whether to use the in-memory search.
68
- * Setting this to `false` will allow consumers to run their own searches remotely,
69
- * and push new values to the list component by updating the `data` property.
70
- * @default true
71
- * @internal
72
- */
73
- set inMemorySearchEnabled(value) {
74
- this._inMemorySearchEnabled = value;
75
- }
76
- get inMemorySearchEnabled() {
77
- if (this._inMemorySearchEnabled === undefined) {
78
- return true;
79
- }
80
- return this._inMemorySearchEnabled;
81
- }
82
- get isFilterBarDisplayed() {
83
- return !this.isToolbarDisabled && this.hasInlineFilters && this.inlineFilterBarExpanded;
84
- }
85
- get filterButtonAriaControls() {
86
- return this.isFilterBarDisplayed ? this.listFilterInlineId : undefined;
87
- }
88
- ngOnInit() {
89
- this.dispatcher.toolbarExists(true);
90
- getValue(this.searchText, (searchText) => {
91
- this.updateSearchText(searchText);
92
- });
93
- getValue(this.searchEnabled, (searchEnabled) => {
94
- this.toolbarDispatcher.next(new ListToolbarConfigSetSearchEnabledAction(searchEnabled === undefined ? true : searchEnabled));
95
- });
96
- getValue(this.toolbarType, (type) => {
97
- this.dispatcher.next(new ListToolbarSetTypeAction(this.toolbarType));
98
- });
99
- getValue(this.sortSelectorEnabled, (sortSelectorEnabled) => {
100
- this.toolbarDispatcher.next(new ListToolbarConfigSetSortSelectorEnabledAction(sortSelectorEnabled === undefined ? true : sortSelectorEnabled));
101
- });
102
- this.sortSelectors = this.getSortSelectors();
103
- // Initialize the sort toolbar item if necessary
104
- this.sortSelectors
105
- .pipe(takeUntil(this.ngUnsubscribe), distinctUntilChanged())
106
- .subscribe((currentSort) => {
107
- if (currentSort.length > 0 && !this.hasSortSelectors) {
108
- this.hasSortSelectors = true;
109
- this.dispatcher.toolbarAddItems([
110
- new ListToolbarItemModel({
111
- id: 'sort-selector',
112
- template: this.sortSelectorTemplate,
113
- location: 'left',
114
- index: this.sortSelectorItemToolbarIndex
115
- })
116
- ]);
117
- }
118
- else if (currentSort.length < 1 && this.hasSortSelectors) {
119
- this.hasSortSelectors = false;
120
- this.dispatcher.toolbarRemoveItems([
121
- 'sort-selector'
122
- ]);
123
- }
124
- });
125
- this.searchTextInput = this.state.pipe(takeUntil(this.ngUnsubscribe), observableMap(s => s.search.searchText), distinctUntilChanged());
126
- this.view = this.state.pipe(takeUntil(this.ngUnsubscribe), observableMap(s => s.views.active), distinctUntilChanged());
127
- this.watchTemplates();
128
- this.type = this.state.pipe(takeUntil(this.ngUnsubscribe), observableMap((state) => state.toolbar.type), distinctUntilChanged());
129
- this.type.pipe(takeUntil(this.ngUnsubscribe))
130
- .subscribe((toolbarType) => {
131
- if (toolbarType === 'search') {
132
- this.dispatcher.toolbarRemoveItems(['search']);
133
- }
134
- else {
135
- this.dispatcher.toolbarAddItems([
136
- new ListToolbarItemModel({
137
- id: 'search',
138
- template: this.searchTemplate,
139
- location: 'right'
140
- })
141
- ]);
142
- }
143
- });
144
- this.isSearchEnabled = this.toolbarState.pipe(takeUntil(this.ngUnsubscribe), observableMap(s => s.config), distinctUntilChanged(), observableMap(c => c.searchEnabled));
145
- this.state.pipe(observableMap(s => s.toolbar), takeUntil(this.ngUnsubscribe), distinctUntilChanged(), observableMap(c => c.disabled))
146
- .subscribe(isDisabled => this.isToolbarDisabled = isDisabled);
147
- this.isSortSelectorEnabled = this.toolbarState.pipe(takeUntil(this.ngUnsubscribe), observableMap(s => s.config), distinctUntilChanged(), observableMap(c => c.sortSelectorEnabled));
148
- this.isMultiselectEnabled = this.state.pipe(takeUntil(this.ngUnsubscribe), observableMap(s => s.toolbar), distinctUntilChanged(), observableMap(t => t.showMultiselectToolbar));
149
- this.hasAppliedFilters = this.state.pipe(takeUntil(this.ngUnsubscribe), observableMap(s => s.filters), distinctUntilChanged(), observableMap((filters) => {
150
- let activeFilters = filters.filter((f) => {
151
- return f.value !== '' &&
152
- f.value !== undefined &&
153
- f.value !== false &&
154
- f.value !== f.defaultValue;
155
- });
156
- return activeFilters.length > 0;
157
- }));
158
- this.state.pipe(takeUntil(this.ngUnsubscribe))
159
- .subscribe((current) => {
160
- this.hasAdditionalToolbarSection = (current.toolbar.items.length > 0);
161
- this.changeDetector.detectChanges();
162
- });
163
- }
164
- ngAfterContentInit() {
165
- // Inject custom toolbar items.
166
- this.toolbarItems.forEach((toolbarItem) => {
167
- this.dispatcher.toolbarAddItems([
168
- new ListToolbarItemModel(toolbarItem)
169
- ]);
170
- this.customItemIds.push(toolbarItem.id);
171
- });
172
- this.toolbarItems.changes.pipe(takeUntil(this.ngUnsubscribe))
173
- .subscribe((newItems) => {
174
- newItems.forEach(item => {
175
- if (this.customItemIds.indexOf(item.id) < 0) {
176
- this.dispatcher.toolbarAddItems([
177
- new ListToolbarItemModel(item)
178
- ]);
179
- this.customItemIds.push(item.id);
180
- }
181
- });
182
- const itemsToRemove = [];
183
- this.customItemIds.forEach((itemId, index) => {
184
- if (!newItems.find(item => item.id === itemId)) {
185
- itemsToRemove.push(itemId);
186
- this.customItemIds.splice(index, 1);
187
- }
188
- });
189
- this.dispatcher.toolbarRemoveItems(itemsToRemove);
190
- });
191
- const sortModels = this.toolbarSorts.map(sort => new ListSortLabelModel({
192
- text: sort.label,
193
- fieldSelector: sort.field,
194
- fieldType: sort.type,
195
- global: true,
196
- descending: sort.descending
197
- }));
198
- this.dispatcher.sortSetGlobal(sortModels);
199
- // Add inline filters.
200
- this.showFilterSummary = (this.filterSummary.length > 0);
201
- this.hasInlineFilters = (this.inlineFilter.length > 0);
202
- if (this.hasInlineFilters) {
203
- this.dispatcher.toolbarAddItems([
204
- new ListToolbarItemModel({
205
- template: this.inlineFilterButtonTemplate,
206
- location: 'left',
207
- index: this.inlineFiltersItemToolbarIndex
208
- })
209
- ]);
210
- }
211
- // Check for view actions
212
- this.hasViewActions = (this.viewActions.length > 0);
213
- }
214
- ngOnDestroy() {
215
- this.searchApplied.complete();
216
- this.ngUnsubscribe.next();
217
- this.ngUnsubscribe.complete();
218
- }
219
- setSort(sort) {
220
- this.state.pipe(take(1)).subscribe((currentState) => {
221
- if (currentState.paging.pageNumber && currentState.paging.pageNumber !== 1) {
222
- this.dispatcher.next(new ListPagingSetPageNumberAction(Number(1)));
223
- }
224
- this.dispatcher.sortSetFieldSelectors([{ fieldSelector: sort.fieldSelector, descending: sort.descending }]);
225
- });
226
- }
227
- inlineFilterButtonClick() {
228
- this.inlineFilterBarExpanded = !this.inlineFilterBarExpanded;
229
- }
230
- updateSearchText(searchText) {
231
- this.searchApplied.next(searchText);
232
- if (this.inMemorySearchEnabled) {
233
- this.state.pipe(take(1)).subscribe((currentState) => {
234
- if (currentState.paging.pageNumber && currentState.paging.pageNumber !== 1) {
235
- this.dispatcher.next(new ListPagingSetPageNumberAction(Number(1)));
236
- }
237
- this.dispatcher.searchSetText(searchText);
238
- });
239
- }
240
- }
241
- itemIsInView(itemView, activeView) {
242
- return (itemView === undefined || itemView === activeView);
243
- }
244
- getSortSelectors() {
245
- return observableCombineLatest(this.state.pipe(observableMap(s => s.sort.available), distinctUntilChanged()), this.state.pipe(observableMap(s => s.sort.global), distinctUntilChanged()), this.state.pipe(observableMap(s => s.sort.fieldSelectors), distinctUntilChanged()), (available, global, fieldSelectors) => {
246
- // Get sorts that are in the global that are not in the available
247
- let sorts = global.filter(g => available.filter(a => a.fieldSelector === g.fieldSelector).length === 0);
248
- let resultSortSelectors = [...sorts, ...available].map(sortLabels => {
249
- let fs = fieldSelectors.filter(f => {
250
- return f.fieldSelector === sortLabels.fieldSelector
251
- && f.descending === sortLabels.descending;
252
- });
253
- let selected = false;
254
- if (fs.length > 0) {
255
- selected = true;
256
- }
257
- return {
258
- sort: sortLabels,
259
- selected: selected
260
- };
261
- });
262
- return resultSortSelectors;
263
- }).pipe(takeUntil(this.ngUnsubscribe));
264
- }
265
- watchTemplates() {
266
- observableCombineLatest(this.state.pipe(observableMap(s => s.toolbar), distinctUntilChanged()), this.view.pipe(distinctUntilChanged()), (toolbar, view) => {
267
- const items = toolbar.items.filter((i) => {
268
- return this.itemIsInView(i.view, view);
269
- });
270
- const templates = {};
271
- items.forEach((item) => {
272
- templates[item.location] = templates[item.location] || [];
273
- templates[item.location].push(item);
274
- });
275
- return templates;
276
- }).pipe(takeUntil(this.ngUnsubscribe))
277
- .subscribe((value) => {
278
- this.leftTemplates = value.left;
279
- this.centerTemplates = value.center;
280
- this.rightTemplates = value.right;
281
- this.changeDetector.markForCheck();
282
- });
283
- }
284
- }
285
- SkyListToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.8", ngImport: i0, type: SkyListToolbarComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ListState }, { token: i2.ListStateDispatcher }, { token: i3.ListToolbarState }, { token: i4.ListToolbarStateDispatcher }], target: i0.ɵɵFactoryTarget.Component });
286
- SkyListToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.8", type: SkyListToolbarComponent, selector: "sky-list-toolbar", inputs: { inMemorySearchEnabled: "inMemorySearchEnabled", placeholder: "placeholder", searchEnabled: "searchEnabled", sortSelectorEnabled: "sortSelectorEnabled", toolbarType: "toolbarType", searchText: "searchText" }, providers: [
287
- ListToolbarState,
288
- ListToolbarStateDispatcher,
289
- ListToolbarStateModel
290
- ], queries: [{ propertyName: "toolbarItems", predicate: SkyListToolbarItemComponent }, { propertyName: "toolbarSorts", predicate: SkyListToolbarSortComponent }, { propertyName: "filterSummary", predicate: SkyListFilterSummaryComponent }, { propertyName: "inlineFilter", predicate: SkyListFilterInlineComponent }, { propertyName: "viewActions", predicate: SkyListToolbarViewActionsComponent }], viewQueries: [{ propertyName: "searchComponent", first: true, predicate: SkySearchComponent, descendants: true, read: SkySearchComponent }, { propertyName: "searchTemplate", first: true, predicate: ["search"], descendants: true, read: TemplateRef, static: true }, { propertyName: "sortSelectorTemplate", first: true, predicate: ["sortSelector"], descendants: true, read: TemplateRef, static: true }, { propertyName: "inlineFilterButtonTemplate", first: true, predicate: ["inlineFilterButton"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div class=\"sky-list-toolbar-container\">\n <sky-toolbar *ngIf=\"(type | async) !== 'search'\">\n\n <sky-toolbar-section>\n <sky-toolbar-item *ngFor=\"let item of leftTemplates\">\n <sky-list-toolbar-item-renderer\n [attr.sky-cmp-id]=\"item.id\"\n [template]=\"item.template\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <sky-toolbar-item *ngFor=\"let item of centerTemplates\">\n <sky-list-toolbar-item-renderer\n [attr.sky-cmp-id]=\"item.id\"\n [template]=\"item.template\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <sky-toolbar-item *ngFor=\"let item of rightTemplates\"\n [attr.sky-toolbar-id]=\"item.id\"\n >\n <sky-list-toolbar-item-renderer\n [attr.sky-cmp-id]=\"item.id\"\n [template]=\"item.template\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n\n <ng-content></ng-content>\n\n <sky-toolbar-view-actions *ngIf=\"hasViewActions\">\n <ng-content\n select=\"sky-list-toolbar-view-actions\"\n >\n </ng-content>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n\n <sky-toolbar-section *ngIf=\"showFilterSummary && (hasAppliedFilters | async)\">\n <ng-content select=\"sky-list-filter-summary\">\n </ng-content>\n </sky-toolbar-section>\n </sky-toolbar>\n\n <div *ngIf=\"(type | async) === 'search' &&\n ((isSearchEnabled | async) || hasAdditionalToolbarSection)\"\n class=\"sky-list-toolbar-search\"\n >\n <sky-toolbar>\n <sky-toolbar-section *ngIf=\"(isSearchEnabled | async)\">\n <sky-toolbar-item>\n <sky-list-toolbar-item-renderer\n sky-cmp-id=\"search\"\n [template]=\"search\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n </sky-toolbar-section>\n <sky-toolbar-section [hidden]=\"!hasAdditionalToolbarSection\">\n <sky-toolbar-item *ngFor=\"let item of leftTemplates\">\n <sky-list-toolbar-item-renderer\n [attr.sky-cmp-id]=\"item.id\"\n [template]=\"item.template\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <sky-toolbar-item *ngFor=\"let item of centerTemplates\">\n <sky-list-toolbar-item-renderer\n [attr.sky-cmp-id]=\"item.id\"\n [template]=\"item.template\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <sky-toolbar-item *ngFor=\"let item of rightTemplates\"\n [attr.sky-toolbar-id]=\"item.id\"\n >\n <sky-list-toolbar-item-renderer *ngIf=\"item.id !== 'search'\"\n [attr.sky-cmp-id]=\"item.id\"\n [template]=\"item.template\"\n >\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <ng-content></ng-content>\n\n <sky-toolbar-view-actions *ngIf=\"hasViewActions\">\n <ng-content\n select=\"sky-list-toolbar-view-actions\"\n >\n </ng-content>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n </div>\n <div\n *ngIf=\"isFilterBarDisplayed\"\n [attr.aria-labelledby]=\"filterButtonId\"\n [id]=\"listFilterInlineId\"\n >\n <ng-content select=\"sky-list-filter-inline\">\n </ng-content>\n </div>\n <sky-list-multiselect-toolbar *ngIf=\"isMultiselectEnabled | async\">\n </sky-list-multiselect-toolbar>\n</div>\n\n<ng-template #search>\n <div *ngIf=\"isSearchEnabled | async\"\n class=\"sky-list-toolbar-search-wrapper\"\n >\n <sky-search\n [disabled]=\"isToolbarDisabled\"\n [expandMode]=\"(type | async) === 'search' ? 'fit' : 'responsive'\"\n [placeholderText]=\"placeholder\"\n [searchText]=\"searchTextInput | async\"\n (searchApply)=\"updateSearchText($event)\"\n >\n </sky-search>\n <ng-content\n select=\"sky-list-toolbar-search-actions\"\n ></ng-content>\n </div>\n</ng-template>\n\n<ng-template #sortSelector>\n <div *ngIf=\"(isSortSelectorEnabled | async) && (sortSelectors | async).length > 0\"\n class=\"sky-toolbar-item-sort-container\"\n >\n <sky-sort [showButtonText]=\"true\">\n <sky-sort-item *ngFor=\"let item of sortSelectors | async\"\n [active]=\"item.selected\"\n (itemSelect)=\"setSort(item.sort)\"\n >\n {{ item.sort.text }}\n </sky-sort-item>\n </sky-sort>\n </div>\n</ng-template>\n\n<ng-template #inlineFilterButton>\n <sky-filter-button\n [active]=\"hasAppliedFilters | async\"\n [ariaControls]=\"filterButtonAriaControls\"\n [ariaExpanded]=\"inlineFilterBarExpanded\"\n [disabled]=\"isToolbarDisabled\"\n [filterButtonId]=\"filterButtonId\"\n [showButtonText]=\"true\"\n (filterButtonClick)=\"inlineFilterButtonClick()\"\n >\n </sky-filter-button>\n</ng-template>\n", styles: [".sky-list-toolbar-search-wrapper{display:flex}.sky-list-toolbar-search-wrapper ::ng-deep .sky-search-dismiss-absolute{padding:0;position:static}.sky-list-toolbar-search-wrapper ::ng-deep .sky-search-container{position:relative;height:100%}.sky-list-toolbar-search-wrapper ::ng-deep sky-search{flex:1 1 auto}.sky-list-toolbar-search-wrapper ::ng-deep sky-list-toolbar-search-actions{flex:0 0 auto;z-index:1}.sky-list-toolbar-container ::ng-deep .sky-toolbar-section-items sky-toolbar-item{flex:0 1 auto;align-self:flex-start}.sky-list-toolbar-search ::ng-deep .sky-toolbar-section{padding-top:0}.sky-list-toolbar-search ::ng-deep .sky-toolbar-section-items{display:block;width:100%}.sky-list-toolbar-search ::ng-deep .sky-toolbar-item{margin:0}.sky-list-toolbar-search ::ng-deep .sky-toolbar-container,.sky-list-toolbar-search ::ng-deep .sky-search-dismiss-absolute{background-color:#eeeeef}.sky-list-toolbar-search ::ng-deep input[type=text]:disabled,.sky-list-toolbar-search ::ng-deep .sky-search-btn:disabled{background-color:#cdcfd2;opacity:1}.sky-list-toolbar-container ::ng-deep sky-toolbar-item[sky-toolbar-id=sort-selector] .sky-toolbar-item{margin-right:0}.sky-list-toolbar-container ::ng-deep sky-checkbox{position:relative;top:-2px}\n"], components: [{ type: i5.λ37, selector: "sky-toolbar" }, { type: i5.λ38, selector: "sky-toolbar-section" }, { type: i5.λ39, selector: "sky-toolbar-item" }, { type: i6.SkyListToolbarItemRendererComponent, selector: "sky-list-toolbar-item-renderer", inputs: ["template"] }, { type: i5.λ40, selector: "sky-toolbar-view-actions" }, { type: i7.SkyListMultiselectToolbarComponent, selector: "sky-list-multiselect-toolbar", inputs: ["showOnlySelected"] }, { type: i8.SkySearchComponent, selector: "sky-search", inputs: ["searchText", "expandMode", "debounceTime", "disabled", "placeholderText"], outputs: ["searchApply", "searchChange", "searchClear"] }, { type: i9.λ14, selector: "sky-sort", inputs: ["showButtonText"] }, { type: i9.λ13, selector: "sky-sort-item", inputs: ["active"], outputs: ["itemSelect"] }, { type: i9.λ1, selector: "sky-filter-button", inputs: ["filterButtonId", "ariaControls", "ariaExpanded", "active", "disabled", "showButtonText"], outputs: ["filterButtonClick"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i10.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
291
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.8", ngImport: i0, type: SkyListToolbarComponent, decorators: [{
292
- type: Component,
293
- args: [{
294
- selector: 'sky-list-toolbar',
295
- templateUrl: './list-toolbar.component.html',
296
- styleUrls: ['./list-toolbar.component.scss'],
297
- providers: [
298
- ListToolbarState,
299
- ListToolbarStateDispatcher,
300
- ListToolbarStateModel
301
- ],
302
- changeDetection: ChangeDetectionStrategy.OnPush
303
- }]
304
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.ListState }, { type: i2.ListStateDispatcher }, { type: i3.ListToolbarState }, { type: i4.ListToolbarStateDispatcher }]; }, propDecorators: { inMemorySearchEnabled: [{
305
- type: Input
306
- }], placeholder: [{
307
- type: Input
308
- }], searchEnabled: [{
309
- type: Input
310
- }], searchComponent: [{
311
- type: ViewChild,
312
- args: [SkySearchComponent, {
313
- read: SkySearchComponent,
314
- static: false
315
- }]
316
- }], sortSelectorEnabled: [{
317
- type: Input
318
- }], toolbarType: [{
319
- type: Input
320
- }], searchText: [{
321
- type: Input
322
- }], toolbarItems: [{
323
- type: ContentChildren,
324
- args: [SkyListToolbarItemComponent]
325
- }], toolbarSorts: [{
326
- type: ContentChildren,
327
- args: [SkyListToolbarSortComponent]
328
- }], filterSummary: [{
329
- type: ContentChildren,
330
- args: [SkyListFilterSummaryComponent]
331
- }], inlineFilter: [{
332
- type: ContentChildren,
333
- args: [SkyListFilterInlineComponent]
334
- }], viewActions: [{
335
- type: ContentChildren,
336
- args: [SkyListToolbarViewActionsComponent]
337
- }], searchTemplate: [{
338
- type: ViewChild,
339
- args: ['search', {
340
- read: TemplateRef,
341
- static: true
342
- }]
343
- }], sortSelectorTemplate: [{
344
- type: ViewChild,
345
- args: ['sortSelector', {
346
- read: TemplateRef,
347
- static: true
348
- }]
349
- }], inlineFilterButtonTemplate: [{
350
- type: ViewChild,
351
- args: ['inlineFilterButton', {
352
- read: TemplateRef,
353
- static: true
354
- }]
355
- }] } });
356
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC10b29sYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpc3QtYnVpbGRlci9zcmMvbW9kdWxlcy9saXN0LXRvb2xiYXIvbGlzdC10b29sYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpc3QtYnVpbGRlci9zcmMvbW9kdWxlcy9saXN0LXRvb2xiYXIvbGlzdC10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxhQUFhLElBQUksdUJBQXVCLEVBRXhDLE9BQU8sRUFDUixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBQyxHQUFHLElBQUksYUFBYSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzRixPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsS0FBSyxFQUlMLFdBQVcsRUFDWCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLFFBQVEsRUFDVCxNQUFNLDRCQUE0QixDQUFDO0FBTXBDLE9BQU8sRUFDTCxrQkFBa0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFNdkIsT0FBTyxFQUNMLG9CQUFvQixFQUNyQixNQUFNLDBDQUEwQyxDQUFDO0FBRWxELE9BQU8sRUFDTCx3QkFBd0IsRUFDekIsTUFBTSx1Q0FBdUMsQ0FBQztBQVUvQyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ25CLE1BQU0sZ0NBQWdDLENBQUM7QUFNeEMsT0FBTyxFQUNMLDZCQUE2QixFQUM5QixNQUFNLDZDQUE2QyxDQUFDO0FBRXJELE9BQU8sRUFDTCw0QkFBNEIsRUFDN0IsTUFBTSw4Q0FBOEMsQ0FBQztBQUV0RCxPQUFPLEVBQ0wsNkJBQTZCLEVBQzlCLE1BQU0sK0NBQStDLENBQUM7QUFFdkQsT0FBTyxFQUNM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QUFDLDZCQUE2QjtnQkFJdEMsWUFBWTtzQkFEbkIsZUFBZTt1QkFBQyw0QkFBNEI7Z0JBSXJDLFdBQVc7c0JBRGxCLGVBQWU7dUJBQUMsa0NBQWtDO2dCQU8zQyxjQUFjO3NCQUpyQixTQUFTO3VCQUFDLFFBQVEsRUFBRTt3QkFDbkIsSUFBSSxFQUFFLFdBQVc7d0JBQ2pCLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2dCQU9PLG9CQUFvQjtzQkFKM0IsU0FBUzt1QkFBQyxjQUFjLEVBQUU7d0JBQ3pCLElBQUksRUFBRSxXQUFXO3dCQUNqQixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFPTywwQkFBMEI7c0JBSmpDLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUU7d0JBQy9CLElBQUksRUFBRSxXQUFXO3dCQUNqQixNQUFNLEVBQUUsSUFBSTtxQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGNvbWJpbmVMYXRlc3QgYXMgb2JzZXJ2YWJsZUNvbWJpbmVMYXRlc3QsXG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3Rcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7bWFwIGFzIG9ic2VydmFibGVNYXAsIHRha2VVbnRpbCwgdGFrZSwgZGlzdGluY3RVbnRpbENoYW5nZWR9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBRdWVyeUxpc3QsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIGdldFZhbHVlXG59IGZyb20gJ0Bza3l1eC9saXN0LWJ1aWxkZXItY29tbW9uJztcblxuaW1wb3J0IHtcbiAgTGlzdFNvcnRGaWVsZFNlbGVjdG9yTW9kZWxcbn0gZnJvbSAnQHNreXV4L2xpc3QtYnVpbGRlci1jb21tb24nO1xuXG5pbXBvcnQge1xuICBTa3lTZWFyY2hDb21wb25lbnRcbn0gZnJvbSAnQHNreXV4L2xvb2t1cCc7XG5cbmltcG9ydCB7XG4gIExpc3RUb29sYmFyTW9kZWxcbn0gZnJvbSAnLi4vbGlzdC9zdGF0ZS90b29sYmFyL3Rvb2xiYXIubW9kZWwnO1xuXG5pbXBvcnQge1xuICBMaXN0VG9vbGJhckl0ZW1Nb2RlbFxufSBmcm9tICcuLi9saXN0L3N0YXRlL3Rvb2xiYXIvdG9vbGJhci1pdGVtLm1vZGVsJztcblxuaW1wb3J0IHtcbiAgTGlzdFRvb2xiYXJTZXRUeXBlQWN0aW9uXG59IGZyb20gJy4uL2xpc3Qvc3RhdGUvdG9vbGJhci9zZXQtdHlwZS5hY3Rpb24nO1xuXG5pbXBvcnQge1xuICBMaXN0U3RhdGVcbn0gZnJvbSAnLi4vbGlzdC9zdGF0ZS9saXN0LXN0YXRlLnN0YXRlLW5vZGUnO1xuXG5pbXBvcnQge1xuICBMaXN0U3RhdGVEaXNwYXRjaGVyXG59IGZyb20gJy4uL2xpc3Qvc3RhdGUvbGlzdC1zdGF0ZS5yeHN0YXRlJztcblxuaW1wb3J0IHtcbiAgTGlzdFNvcnRMYWJlbE1vZGVsXG59IGZyb20gJy4uL2xpc3Qvc3RhdGUvc29ydC9sYWJlbC5tb2RlbCc7XG5cbmltcG9ydCB7XG4gIExpc3RGaWx0ZXJNb2RlbFxufSBmcm9tICcuLi9saXN0LWZpbHRlcnMvZmlsdGVyLm1vZGVsJztcblxuaW1wb3J0IHtcbiAgTGlzdFBhZ2luZ1NldFBhZ2VOdW1iZXJBY3Rpb25cbn0gZnJvbSAnLi4vbGlzdC9zdGF0ZS9wYWdpbmcvc2V0LXBhZ2UtbnVtYmVyLmFjdGlvbic7XG5cbmltcG9ydCB7XG4gIFNreUxpc3RGaWx0ZXJJbmxpbmVDb21wb25lbnRcbn0gZnJvbSAnLi4vbGlzdC1maWx0ZXJzL2xpc3QtZmlsdGVyLWlubGluZS5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lMaXN0RmlsdGVyU3VtbWFyeUNvbXBvbmVudFxufSBmcm9tICcuLi9saXN0LWZpbHRlcnMvbGlzdC1maWx0ZXItc3VtbWFyeS5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lMaXN0VG9vbGJhckl0ZW1Db21wb25lbnRcbn0gZnJvbSAnLi9saXN0LXRvb2xiYXItaXRlbS5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lMaXN0VG9vbGJhclNvcnRDb21wb25lbnRcbn0gZnJvbSAnLi9saXN0LXRvb2xiYXItc29ydC5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lMaXN0VG9vbGJhclZpZXdBY3Rpb25zQ29tcG9uZW50XG59IGZyb20gJy4vbGlzdC10b29sYmFyLXZpZXctYWN0aW9ucy5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBMaXN0VG9vbGJhckNvbmZpZ1NldFNlYXJjaEVuYWJsZWRBY3Rpb25cbn0gZnJvbSAnLi9zdGF0ZS9jb25maWcvc2V0LXNlYXJjaC1lbmFibGVkLmFjdGlvbic7XG5cbmltcG9ydCB7XG4gIExpc3RUb29sYmFyQ29uZmlnU2V0U29ydFNlbGVjdG9yRW5hYmxlZEFjdGlvblxufSBmcm9tICcuL3N0YXRlL2NvbmZpZy9zZXQtc29ydC1zZWxlY3Rvci1lbmFibGVkLmFjdGlvbic7XG5cbmltcG9ydCB7XG4gIExpc3RUb29sYmFyU3RhdGVcbn0gZnJvbSAnLi9zdGF0ZS90b29sYmFyLXN0YXRlLnN0YXRlLW5vZGUnO1xuXG5pbXBvcnQge1xuICBMaXN0VG9vbGJhclN0YXRlRGlzcGF0Y2hlclxufSBmcm9tICcuL3N0YXRlL3Rvb2xiYXItc3RhdGUucnhzdGF0ZSc7XG5cbmltcG9ydCB7XG4gIExpc3RUb29sYmFyU3RhdGVNb2RlbFxufSBmcm9tICcuL3N0YXRlL3Rvb2xiYXItc3RhdGUubW9kZWwnO1xuXG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBEaXNwbGF5cyBhIHRvb2xiYXIgZm9yIGEgU0tZIFVYLXRoZW1lZCBsaXN0IG9mIGRhdGEuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1saXN0LXRvb2xiYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC10b29sYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC10b29sYmFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIExpc3RUb29sYmFyU3RhdGUsXG4gICAgTGlzdFRvb2xiYXJTdGF0ZURpc3BhdGNoZXIsXG4gICAgTGlzdFRvb2xiYXJTdGF0ZU1vZGVsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNreUxpc3RUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byB1c2UgdGhlIGluLW1lbW9yeSBzZWFyY2guXG4gICAqIFNldHRpbmcgdGhpcyB0byBgZmFsc2VgIHdpbGwgYWxsb3cgY29uc3VtZXJzIHRvIHJ1biB0aGVpciBvd24gc2VhcmNoZXMgcmVtb3RlbHksXG4gICAqIGFuZCBwdXNoIG5ldyB2YWx1ZXMgdG8gdGhlIGxpc3QgY29tcG9uZW50IGJ5IHVwZGF0aW5nIHRoZSBgZGF0YWAgcHJvcGVydHkuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQGludGVybmFsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGluTWVtb3J5U2VhcmNoRW5hYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2luTWVtb3J5U2VhcmNoRW5hYmxlZCA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBpbk1lbW9yeVNlYXJjaEVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX2luTWVtb3J5U2VhcmNoRW5hYmxlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2luTWVtb3J5U2VhcmNoRW5hYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgcGxhY2Vob2xkZXIgdGV4dCBmb3IgdGhlIHNlYXJjaCBiYXIgdGhhdCB0aGUgbGlzdCB0b29sYmFyIGNyZWF0ZXMgd2l0aFxuICAgKiBhIFtzZWFyY2ggY29tcG9uZW50XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvc2VhcmNoKS5cbiAgICogQGRlZmF1bHQgJ0ZpbmQgaW4gdGhpcyBsaXN0J1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGVuYWJsZSB0aGUgc2VhcmNoIGJhci5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNlYXJjaEVuYWJsZWQ6IGJvb2xlYW4gfCBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIEBWaWV3Q2hpbGQoU2t5U2VhcmNoQ29tcG9uZW50LCB7XG4gICAgcmVhZDogU2t5U2VhcmNoQ29tcG9uZW50LFxuICAgIHN0YXRpYzogZmFsc2VcbiAgfSlcbiAgcHVibGljIHNlYXJjaENvbXBvbmVudDogU2t5U2VhcmNoQ29tcG9uZW50O1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBlbmFibGUgdGhlIHNvcnQgc2VsZWN0b3IuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc29ydFNlbGVjdG9yRW5hYmxlZDogYm9vbGVhbiB8IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIERpc3BsYXkgdGhlIHNlYXJjaCBiYXIgaW4gdGhlIHN0YW5kYXJkIHBvc2l0aW9uIG9yIGluIGEgc2VwYXJhdGUgc2VjdGlvbi5cbiAgICogVG8gaGlnaGxpZ2h0IHRoZSBzZWFyY2ggYmFyIGluIGEgc2VjdGlvbiBhYm92ZSBhbGwgb3RoZXIgdG9vbGJhciBpdGVtcyxcbiAgICogc2V0IHRoaXMgcHJvcGVydHkgdG8gYHNlYXJjaGAuXG4gICAqIEBkZWZhdWx0ICdzdGFuZGFyZCdcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0b29sYmFyVHlwZTogc3RyaW5nID0gJ3N0YW5kYXJkJztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGEgdGV4dCBzdHJpbmcgdG8gc2VhcmNoIHdpdGguXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2VhcmNoVGV4dDogc3RyaW5nIHwgT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIHB1YmxpYyBnZXQgaXNGaWx0ZXJCYXJEaXNwbGF5ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmlzVG9vbGJhckRpc2FibGVkICYmIHRoaXMuaGFzSW5saW5lRmlsdGVycyAmJiB0aGlzLmlubGluZUZpbHRlckJhckV4cGFuZGVkO1xuICB9XG5cbiAgcHVibGljIGdldCBmaWx0ZXJCdXR0b25BcmlhQ29udHJvbHMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pc0ZpbHRlckJhckRpc3BsYXllZCA/IHRoaXMubGlzdEZpbHRlcklubGluZUlkIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHNvcnRTZWxlY3RvcnM6IE9ic2VydmFibGU8QXJyYXk8YW55Pj47XG4gIHB1YmxpYyBzZWFyY2hUZXh0SW5wdXQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgcHVibGljIHZpZXc6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgcHVibGljIGxlZnRUZW1wbGF0ZXM6IExpc3RUb29sYmFySXRlbU1vZGVsW107XG4gIHB1YmxpYyBjZW50ZXJUZW1wbGF0ZXM6IExpc3RUb29sYmFySXRlbU1vZGVsW107XG4gIHB1YmxpYyByaWdodFRlbXBsYXRlczogTGlzdFRvb2xiYXJJdGVtTW9kZWxbXTtcbiAgcHVibGljIHR5cGU6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgcHVibGljIGlzU2VhcmNoRW5hYmxlZDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHVibGljIGlzVG9vbGJhckRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBpc011bHRpc2VsZWN0RW5hYmxlZDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHVibGljIGlzU29ydFNlbGVjdG9yRW5hYmxlZDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHVibGljIGFwcGxpZWRGaWx0ZXJzOiBPYnNlcnZhYmxlPEFycmF5PExpc3RGaWx0ZXJNb2RlbD4+O1xuICBwdWJsaWMgaGFzQXBwbGllZEZpbHRlcnM6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHB1YmxpYyBzaG93RmlsdGVyU3VtbWFyeTogYm9vbGVhbjtcbiAgcHVibGljIGhhc0lubGluZUZpbHRlcnM6IGJvb2xlYW47XG4gIHB1YmxpYyBpbmxpbmVGaWx0ZXJCYXJFeHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgaGFzQWRkaXRpb25hbFRvb2xiYXJTZWN0aW9uID0gZmFsc2U7XG4gIHB1YmxpYyBoYXNWaWV3QWN0aW9ucyA9IGZhbHNlO1xuXG4gIHB1YmxpYyBmaWx0ZXJCdXR0b25JZDogc3RyaW5nID0gYHNreS1saXN0LXRvb2xiYXItZmlsdGVyLWJ1dHRvbi0keysrbmV4dElkfWA7XG4gIHB1YmxpYyBsaXN0RmlsdGVySW5saW5lSWQ6IHN0cmluZyA9IGBza3ktbGlzdC10b29sYmFyLWZpbHRlci1pbmxpbmUtJHsrK25leHRJZH1gO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIHN1Ym1pdCBhIHNlYXJjaC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc2VhcmNoQXBwbGllZDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2t5TGlzdFRvb2xiYXJJdGVtQ29tcG9uZW50KVxuICBwcml2YXRlIHRvb2xiYXJJdGVtczogUXVlcnlMaXN0PFNreUxpc3RUb29sYmFySXRlbUNvbXBvbmVudD47XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lMaXN0VG9vbGJhclNvcnRDb21wb25lbnQpXG4gIHByaXZhdGUgdG9vbGJhclNvcnRzOiBRdWVyeUxpc3Q8U2t5TGlzdFRvb2xiYXJTb3J0Q29tcG9uZW50PjtcblxuICBAQ29udGVudENoaWxkcmVuKFNreUxpc3RGaWx0ZXJTdW1tYXJ5Q29tcG9uZW50KVxuICBwcml2YXRlIGZpbHRlclN1bW1hcnk6IFF1ZXJ5TGlzdDxTa3lMaXN0RmlsdGVyU3VtbWFyeUNvbXBvbmVudD47XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lMaXN0RmlsdGVySW5saW5lQ29tcG9uZW50KVxuICBwcml2YXRlIGlubGluZUZpbHRlcjogUXVlcnlMaXN0PFNreUxpc3RGaWx0ZXJJbmxpbmVDb21wb25lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2t5TGlzdFRvb2xiYXJWaWV3QWN0aW9uc0NvbXBvbmVudClcbiAgcHJpdmF0ZSB2aWV3QWN0aW9uczogUXVlcnlMaXN0PFNreUxpc3RUb29sYmFyVmlld0FjdGlvbnNDb21wb25lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaCcsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWVcbiAgfSlcbiAgcHJpdmF0ZSBzZWFyY2hUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAVmlld0NoaWxkKCdzb3J0U2VsZWN0b3InLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlXG4gIH0pXG4gIHByaXZhdGUgc29ydFNlbGVjdG9yVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQFZpZXdDaGlsZCgnaW5saW5lRmlsdGVyQnV0dG9uJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZVxuICB9KVxuICBwcml2YXRlIGlubGluZUZpbHRlckJ1dHRvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIHByaXZhdGUgY3VzdG9tSXRlbUlkczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBoYXNTb3J0U2VsZWN0b3JzOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgaW5saW5lRmlsdGVyc0l0ZW1Ub29sYmFySW5kZXg6IG51bWJlciA9IDUwMDA7XG4gIHByaXZhdGUgc29ydFNlbGVjdG9ySXRlbVRvb2xiYXJJbmRleDogbnVtYmVyID0gNjAwMDtcbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIF9pbk1lbW9yeVNlYXJjaEVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBzdGF0ZTogTGlzdFN0YXRlLFxuICAgIHByaXZhdGUgZGlzcGF0Y2hlcjogTGlzdFN0YXRlRGlzcGF0Y2hlcixcbiAgICBwcml2YXRlIHRvb2xiYXJTdGF0ZTogTGlzdFRvb2xiYXJTdGF0ZSxcbiAgICBwdWJsaWMgdG9vbGJhckRpc3BhdGNoZXI6IExpc3RUb29sYmFyU3RhdGVEaXNwYXRjaGVyXG4gICkgeyB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZGlzcGF0Y2hlci50b29sYmFyRXhpc3RzKHRydWUpO1xuXG4gICAgZ2V0VmFsdWUodGhpcy5zZWFyY2hUZXh0LCAoc2VhcmNoVGV4dDogc3RyaW5nKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVNlYXJjaFRleHQoc2VhcmNoVGV4dCk7XG4gICAgfSk7XG5cbiAgICBnZXRWYWx1ZSh0aGlzLnNlYXJjaEVuYWJsZWQsIChzZWFyY2hFbmFibGVkOiBib29sZWFuKSA9PiB7XG4gICAgICB0aGlzLnRvb2xiYXJEaXNwYXRjaGVyLm5leHQoXG4gICAgICAgIG5ldyBMaXN0VG9vbGJhckNvbmZpZ1NldFNlYXJjaEVuYWJsZWRBY3Rpb24oXG4gICAgICAgICAgc2VhcmNoRW5hYmxlZCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IHNlYXJjaEVuYWJsZWRcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGdldFZhbHVlKHRoaXMudG9vbGJhclR5cGUsICh0eXBlOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMuZGlzcGF0Y2hlci5uZXh0KG5ldyBMaXN0VG9vbGJhclNldFR5cGVBY3Rpb24odGhpcy50b29sYmFyVHlwZSkpO1xuICAgIH0pO1xuXG4gICAgZ2V0VmFsdWUodGhpcy5zb3J0U2VsZWN0b3JFbmFibGVkLCAoc29ydFNlbGVjdG9yRW5hYmxlZDogYW55KSA9PiB7XG4gICAgICB0aGlzLnRvb2xiYXJEaXNwYXRjaGVyLm5leHQoXG4gICAgICAgIG5ldyBMaXN0VG9vbGJhckNvbmZpZ1NldFNvcnRTZWxlY3RvckVuYWJsZWRBY3Rpb24oXG4gICAgICAgICAgc29ydFNlbGVjdG9yRW5hYmxlZCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IHNvcnRTZWxlY3RvckVuYWJsZWRcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc29ydFNlbGVjdG9ycyA9IHRoaXMuZ2V0U29ydFNlbGVjdG9ycygpO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgc29ydCB0b29sYmFyIGl0ZW0gaWYgbmVjZXNzYXJ5XG4gICAgdGhpcy5zb3J0U2VsZWN0b3JzXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGN1cnJlbnRTb3J0KSA9PiB7XG4gICAgICAgIGlmIChjdXJyZW50U29ydC5sZW5ndGggPiAwICYmICF0aGlzLmhhc1NvcnRTZWxlY3RvcnMpIHtcbiAgICAgICAgICB0aGlzLmhhc1NvcnRTZWxlY3RvcnMgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuZGlzcGF0Y2hlci50b29sYmFyQWRkSXRlbXMoXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIG5ldyBMaXN0VG9vbGJhckl0ZW1Nb2RlbCh7XG4gICAgICAgICAgICAgICAgaWQ6ICdzb3J0LXNlbGVjdG9yJyxcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZTogdGhpcy5zb3J0U2VsZWN0b3JUZW1wbGF0ZSxcbiAgICAgICAgICAgICAgICBsb2NhdGlvbjogJ2xlZnQnLFxuICAgICAgICAgICAgICAgIGluZGV4OiB0aGlzLnNvcnRTZWxlY3Rvckl0ZW1Ub29sYmFySW5kZXhcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRTb3J0Lmxlbmd0aCA8IDEgJiYgdGhpcy5oYXNTb3J0U2VsZWN0b3JzKSB7XG4gICAgICAgICAgdGhpcy5oYXNTb3J0U2VsZWN0b3JzID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5kaXNwYXRjaGVyLnRvb2xiYXJSZW1vdmVJdGVtcyhbXG4gICAgICAgICAgICAnc29ydC1zZWxlY3RvcidcbiAgICAgICAgICBdKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLnNlYXJjaFRleHRJbnB1dCA9IHRoaXMuc3RhdGUucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLFxuICAgICAgb2JzZXJ2YWJsZU1hcChzID0+IHMuc2VhcmNoLnNlYXJjaFRleHQpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG5cbiAgICB0aGlzLnZpZXcgPSB0aGlzLnN0YXRlLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcbiAgICAgIG9ic2VydmFibGVNYXAocyA9PiBzLnZpZXdzLmFjdGl2ZSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcblxuICAgIHRoaXMud2F0Y2hUZW1wbGF0ZXMoKTtcblxuICAgIHRoaXMudHlwZSA9IHRoaXMuc3RhdGUucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLFxuICAgICAgb2JzZXJ2YWJsZU1hcCgoc3RhdGUpID0+IHN0YXRlLnRvb2xiYXIudHlwZSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcblxuICAgIHRoaXMudHlwZS5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCh0b29sYmFyVHlwZSkgPT4ge1xuICAgICAgICBpZiAodG9vbGJhclR5cGUgPT09ICdzZWFyY2gnKSB7XG4gICAgICAgICAgdGhpcy5kaXNwYXRjaGVyLnRvb2xiYXJSZW1vdmVJdGVtcyhbJ3NlYXJjaCddKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmRpc3BhdGNoZXIudG9vbGJhckFkZEl0ZW1zKFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBuZXcgTGlzdFRvb2xiYXJJdGVtTW9kZWwoe1xuICAgICAgICAgICAgICAgIGlkOiAnc2VhcmNoJyxcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZTogdGhpcy5zZWFyY2hUZW1wbGF0ZSxcbiAgICAgICAgICAgICAgICBsb2NhdGlvbjogJ3JpZ2h0J1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5pc1NlYXJjaEVuYWJsZWQgPSB0aGlzLnRvb2xiYXJTdGF0ZS5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksXG4gICAgICBvYnNlcnZhYmxlTWFwKHMgPT4gcy5jb25maWcpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIG9ic2VydmFibGVNYXAoYyA9PiBjLnNlYXJjaEVuYWJsZWQpKTtcblxuICAgIHRoaXMuc3RhdGUucGlwZShvYnNlcnZhYmxlTWFwKHMgPT4gcy50b29sYmFyKSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIG9ic2VydmFibGVNYXAoYyA9PiBjLmRpc2FibGVkKSlcbiAgICAgIC5zdWJzY3JpYmUoaXNEaXNhYmxlZCA9PiB0aGlzLmlzVG9vbGJhckRpc2FibGVkID0gaXNEaXNhYmxlZCk7XG5cbiAgICB0aGlzLmlzU29ydFNlbGVjdG9yRW5hYmxlZCA9IHRoaXMudG9vbGJhclN0YXRlLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcbiAgICAgIG9ic2VydmFibGVNYXAocyA9PiBzLmNvbmZpZyksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgb2JzZXJ2YWJsZU1hcChjID0+IGMuc29ydFNlbGVjdG9yRW5hYmxlZCkpO1xuXG4gICAgdGhpcy5pc011bHRpc2VsZWN0RW5hYmxlZCA9IHRoaXMuc3RhdGUucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLFxuICAgICAgb2JzZXJ2YWJsZU1hcChzID0+IHMudG9vbGJhciksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgb2JzZXJ2YWJsZU1hcCh0ID0+IHQuc2hvd011bHRpc2VsZWN0VG9vbGJhcikpO1xuXG4gICAgdGhpcy5oYXNBcHBsaWVkRmlsdGVycyA9IHRoaXMuc3RhdGUucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLFxuICAgICAgb2JzZXJ2YWJsZU1hcChzID0+IHMuZmlsdGVycyksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgb2JzZXJ2YWJsZU1hcCgoZmlsdGVycykgPT4ge1xuICAgICAgICBsZXQgYWN0aXZlRmlsdGVycyA9IGZpbHRlcnMuZmlsdGVyKChmKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGYudmFsdWUgIT09ICcnICYmXG4gICAgICAgICAgICBmLnZhbHVlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgIGYudmFsdWUgIT09IGZhbHNlICYmXG4gICAgICAgICAgICBmLnZhbHVlICE9PSBmLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBhY3RpdmVGaWx0ZXJzLmxlbmd0aCA+IDA7XG4gICAgICB9KSk7XG5cbiAgICB0aGlzLnN0YXRlLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGN1cnJlbnQ6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmhhc0FkZGl0aW9uYWxUb29sYmFyU2VjdGlvbiA9IChjdXJyZW50LnRvb2xiYXIuaXRlbXMubGVuZ3RoID4gMCk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIC8vIEluamVjdCBjdXN0b20gdG9vbGJhciBpdGVtcy5cbiAgICB0aGlzLnRvb2xiYXJJdGVtcy5mb3JFYWNoKCh0b29sYmFySXRlbSkgPT4ge1xuICAgICAgdGhpcy5kaXNwYXRjaGVyLnRvb2xiYXJBZGRJdGVtcyhcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBMaXN0VG9vbGJhckl0ZW1Nb2RlbCh0b29sYmFySXRlbSlcbiAgICAgICAgXVxuICAgICAgKTtcblxuICAgICAgdGhpcy5jdXN0b21JdGVtSWRzLnB1c2godG9vbGJhckl0ZW0uaWQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy50b29sYmFySXRlbXMuY2hhbmdlcy5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChuZXdJdGVtczogUXVlcnlMaXN0PFNreUxpc3RUb29sYmFySXRlbUNvbXBvbmVudD4pID0+IHtcbiAgICAgICAgbmV3SXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5jdXN0b21JdGVtSWRzLmluZGV4T2YoaXRlbS5pZCkgPCAwKSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BhdGNoZXIudG9vbGJhckFkZEl0ZW1zKFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgbmV3IExpc3RUb29sYmFySXRlbU1vZGVsKGl0ZW0pXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuY3VzdG9tSXRlbUlkcy5wdXNoKGl0ZW0uaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgaXRlbXNUb1JlbW92ZTogc3RyaW5nW10gPSBbXTtcblxuICAgICAgICB0aGlzLmN1c3RvbUl0ZW1JZHMuZm9yRWFjaCgoaXRlbUlkLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGlmICghbmV3SXRlbXMuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IGl0ZW1JZCkpIHtcbiAgICAgICAgICAgIGl0ZW1zVG9SZW1vdmUucHVzaChpdGVtSWQpO1xuICAgICAgICAgICAgdGhpcy5jdXN0b21JdGVtSWRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmRpc3BhdGNoZXIudG9vbGJhclJlbW92ZUl0ZW1zKGl0ZW1zVG9SZW1vdmUpO1xuICAgICAgfSk7XG5cbiAgICBjb25zdCBzb3J0TW9kZWxzID0gdGhpcy50b29sYmFyU29ydHMubWFwKHNvcnQgPT5cbiAgICAgIG5ldyBMaXN0U29ydExhYmVsTW9kZWwoXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiBzb3J0LmxhYmVsLFxuICAgICAgICAgIGZpZWxkU2VsZWN0b3I6IHNvcnQuZmllbGQsXG4gICAgICAgICAgZmllbGRUeXBlOiBzb3J0LnR5cGUsXG4gICAgICAgICAgZ2xvYmFsOiB0cnVlLFxuICAgICAgICAgIGRlc2NlbmRpbmc6IHNvcnQuZGVzY2VuZGluZ1xuICAgICAgICB9XG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuZGlzcGF0Y2hlci5zb3J0U2V0R2xvYmFsKHNvcnRNb2RlbHMpO1xuXG4gICAgLy8gQWRkIGlubGluZSBmaWx0ZXJzLlxuICAgIHRoaXMuc2hvd0ZpbHRlclN1bW1hcnkgPSAodGhpcy5maWx0ZXJTdW1tYXJ5Lmxlbmd0aCA+IDApO1xuICAgIHRoaXMuaGFzSW5saW5lRmlsdGVycyA9ICh0aGlzLmlubGluZUZpbHRlci5sZW5ndGggPiAwKTtcblxuICAgIGlmICh0aGlzLmhhc0lubGluZUZpbHRlcnMpIHtcbiAgICAgIHRoaXMuZGlzcGF0Y2hlci50b29sYmFyQWRkSXRlbXMoXG4gICAgICAgIFtcbiAgICAgICAgICBuZXcgTGlzdFRvb2xiYXJJdGVtTW9kZWwoe1xuICAgICAgICAgICAgdGVtcGxhdGU6IHRoaXMuaW5saW5lRmlsdGVyQnV0dG9uVGVtcGxhdGUsXG4gICAgICAgICAgICBsb2NhdGlvbjogJ2xlZnQnLFxuICAgICAgICAgICAgaW5kZXg6IHRoaXMuaW5saW5lRmlsdGVyc0l0ZW1Ub29sYmFySW5kZXhcbiAgICAgICAgICB9KVxuICAgICAgICBdXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciB2aWV3IGFjdGlvbnNcbiAgICB0aGlzLmhhc1ZpZXdBY3Rpb25zID0gKHRoaXMudmlld0FjdGlvbnMubGVuZ3RoID4gMCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zZWFyY2hBcHBsaWVkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRTb3J0KHNvcnQ6IExpc3RTb3J0TGFiZWxNb2RlbCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKGN1cnJlbnRTdGF0ZSkgPT4ge1xuICAgICAgaWYgKGN1cnJlbnRTdGF0ZS5wYWdpbmcucGFnZU51bWJlciAmJiBjdXJyZW50U3RhdGUucGFnaW5nLnBhZ2VOdW1iZXIgIT09IDEpIHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaGVyLm5leHQoXG4gICAgICAgICAgbmV3IExpc3RQYWdpbmdTZXRQYWdlTnVtYmVyQWN0aW9uKE51bWJlcigxKSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kaXNwYXRjaGVyLnNvcnRTZXRGaWVsZFNlbGVjdG9ycyhcbiAgICAgICAgW3sgZmllbGRTZWxlY3Rvcjogc29ydC5maWVsZFNlbGVjdG9yLCBkZXNjZW5kaW5nOiBzb3J0LmRlc2NlbmRpbmcgfV1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaW5saW5lRmlsdGVyQnV0dG9uQ2xpY2soKSB7XG4gICAgdGhpcy5pbmxpbmVGaWx0ZXJCYXJFeHBhbmRlZCA9ICF0aGlzLmlubGluZUZpbHRlckJhckV4cGFuZGVkO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVNlYXJjaFRleHQoc2VhcmNoVGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy5zZWFyY2hBcHBsaWVkLm5leHQoc2VhcmNoVGV4dCk7XG4gICAgaWYgKHRoaXMuaW5NZW1vcnlTZWFyY2hFbmFibGVkKSB7XG4gICAgICB0aGlzLnN0YXRlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChjdXJyZW50U3RhdGUpID0+IHtcbiAgICAgICAgaWYgKGN1cnJlbnRTdGF0ZS5wYWdpbmcucGFnZU51bWJlciAmJiBjdXJyZW50U3RhdGUucGFnaW5nLnBhZ2VOdW1iZXIgIT09IDEpIHtcbiAgICAgICAgICB0aGlzLmRpc3BhdGNoZXIubmV4dChcbiAgICAgICAgICAgIG5ldyBMaXN0UGFnaW5nU2V0UGFnZU51bWJlckFjdGlvbihOdW1iZXIoMSkpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGlzcGF0Y2hlci5zZWFyY2hTZXRUZXh0KHNlYXJjaFRleHQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpdGVtSXNJblZpZXcoaXRlbVZpZXc6IHN0cmluZywgYWN0aXZlVmlldzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIChpdGVtVmlldyA9PT0gdW5kZWZpbmVkIHx8IGl0ZW1WaWV3ID09PSBhY3RpdmVWaWV3KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U29ydFNlbGVjdG9ycygpIHtcbiAgICByZXR1cm4gb2JzZXJ2YWJsZUNvbWJpbmVMYXRlc3QoXG4gICAgICB0aGlzLnN0YXRlLnBpcGUob2JzZXJ2YWJsZU1hcChzID0+IHMuc29ydC5hdmFpbGFibGUpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKSxcbiAgICAgIHRoaXMuc3RhdGUucGlwZShvYnNlcnZhYmxlTWFwKHMgPT4gcy5zb3J0Lmdsb2JhbCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxuICAgICAgdGhpcy5zdGF0ZS5waXBlKG9ic2VydmFibGVNYXAocyA9PiBzLnNvcnQuZmllbGRTZWxlY3RvcnMpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKSxcbiAgICAgIChcbiAgICAgICAgYXZhaWxhYmxlOiBBcnJheTxMaXN0U29ydExhYmVsTW9kZWw+LFxuICAgICAgICBnbG9iYWw6IEFycmF5PExpc3RTb3J0TGFiZWxNb2RlbD4sXG4gICAgICAgIGZpZWxkU2VsZWN0b3JzOiBBcnJheTxMaXN0U29ydEZpZWxkU2VsZWN0b3JNb2RlbD5cbiAgICAgICkgPT4ge1xuXG4gICAgICAgIC8vIEdldCBzb3J0cyB0aGF0IGFyZSBpbiB0aGUgZ2xvYmFsIHRoYXQgYXJlIG5vdCBpbiB0aGUgYXZhaWxhYmxlXG4gICAgICAgIGxldCBzb3J0cyA9IGdsb2JhbC5maWx0ZXIoXG4gICAgICAgICAgZyA9PiBhdmFpbGFibGUuZmlsdGVyKGEgPT4gYS5maWVsZFNlbGVjdG9yID09PSBnLmZpZWxkU2VsZWN0b3IpLmxlbmd0aCA9PT0gMFxuICAgICAgICApO1xuXG4gICAgICAgIGxldCByZXN1bHRTb3J0U2VsZWN0b3JzID0gWy4uLnNvcnRzLCAuLi5hdmFpbGFibGVdLm1hcChzb3J0TGFiZWxzID0+IHtcbiAgICAgICAgICBsZXQgZnMgPSBmaWVsZFNlbGVjdG9ycy5maWx0ZXIoZiA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZi5maWVsZFNlbGVjdG9yID09PSBzb3J0TGFiZWxzLmZpZWxkU2VsZWN0b3JcbiAgICAgICAgICAgICAgJiYgZi5kZXNjZW5kaW5nID09PSBzb3J0TGFiZWxzLmRlc2NlbmRpbmc7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbGV0IHNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgaWYgKGZzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc29ydDogc29ydExhYmVscyxcbiAgICAgICAgICAgIHNlbGVjdGVkOiBzZWxlY3RlZFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHRTb3J0U2VsZWN0b3JzO1xuICAgICAgfVxuICAgICkucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgd2F0Y2hUZW1wbGF0ZXMoKSB7XG4gICAgb2JzZXJ2YWJsZUNvbWJpbmVMYXRlc3QoXG4gICAgICB0aGlzLnN0YXRlLnBpcGUob2JzZXJ2YWJsZU1hcChzID0+IHMudG9vbGJhciksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxuICAgICAgdGhpcy52aWV3LnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSksXG4gICAgICAodG9vbGJhcjogTGlzdFRvb2xiYXJNb2RlbCwgdmlldzogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdG9vbGJhci5pdGVtcy5maWx0ZXIoKGk6IExpc3RUb29sYmFySXRlbU1vZGVsKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaXRlbUlzSW5WaWV3KGkudmlldywgdmlldyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHRlbXBsYXRlczogYW55ID0ge307XG5cbiAgICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbTogTGlzdFRvb2xiYXJJdGVtTW9kZWwpID0+IHtcbiAgICAgICAgICB0ZW1wbGF0ZXNbaXRlbS5sb2NhdGlvbl0gPSB0ZW1wbGF0ZXNbaXRlbS5sb2NhdGlvbl0gfHwgW107XG4gICAgICAgICAgdGVtcGxhdGVzW2l0ZW0ubG9jYXRpb25dLnB1c2goaXRlbSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0ZW1wbGF0ZXM7XG4gICAgICB9XG4gICAgKS5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSlcbiAgICApXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICB0aGlzLmxlZnRUZW1wbGF0ZXMgPSB2YWx1ZS5sZWZ0O1xuICAgICAgICB0aGlzLmNlbnRlclRlbXBsYXRlcyA9IHZhbHVlLmNlbnRlcjtcbiAgICAgICAgdGhpcy5yaWdodFRlbXBsYXRlcyA9IHZhbHVlLnJpZ2h0O1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktbGlzdC10b29sYmFyLWNvbnRhaW5lclwiPlxuICA8c2t5LXRvb2xiYXIgKm5nSWY9XCIodHlwZSB8IGFzeW5jKSAhPT0gJ3NlYXJjaCdcIj5cblxuICAgIDxza3ktdG9vbGJhci1zZWN0aW9uPlxuICAgICAgPHNreS10b29sYmFyLWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGVmdFRlbXBsYXRlc1wiPlxuICAgICAgICA8c2t5LWxpc3QtdG9vbGJhci1pdGVtLXJlbmRlcmVyXG4gICAgICAgICAgW2F0dHIuc2t5LWNtcC1pZF09XCJpdGVtLmlkXCJcbiAgICAgICAgICBbdGVtcGxhdGVdPVwiaXRlbS50ZW1wbGF0ZVwiXG4gICAgICAgID5cbiAgICAgICAgPC9za3ktbGlzdC10b29sYmFyLWl0ZW0tcmVuZGVyZXI+XG4gICAgICA8L3NreS10b29sYmFyLWl0ZW0+XG4gICAgICA8c2t5LXRvb2xiYXItaXRlbSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjZW50ZXJUZW1wbGF0ZXNcIj5cbiAgICAgICAgPHNreS1saXN0LXRvb2xiYXItaXRlbS1yZW5kZXJlclxuICAgICAgICAgIFthdHRyLnNreS1jbXAtaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgICAgW3RlbXBsYXRlXT1cIml0ZW0udGVtcGxhdGVcIlxuICAgICAgICA+XG4gICAgICAgIDwvc2t5LWxpc3QtdG9vbGJhci1pdGVtLXJlbmRlcmVyPlxuICAgICAgPC9za3ktdG9vbGJhci1pdGVtPlxuICAgICAgPHNreS10b29sYmFyLWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgcmlnaHRUZW1wbGF0ZXNcIlxuICAgICAgICBbYXR0ci5za3ktdG9vbGJhci1pZF09XCJpdGVtLmlkXCJcbiAgICAgID5cbiAgICAgICAgPHNreS1saXN0LXRvb2xiYXItaXRlbS1yZW5kZXJlclxuICAgICAgICAgIFthdHRyLnNreS1jbXAtaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgICAgW3RlbXBsYXRlXT1cIml0ZW0udGVtcGxhdGVcIlxuICAgICAgICA+XG4gICAgICAgIDwvc2t5LWxpc3QtdG9vbGJhci1pdGVtLXJlbmRlcmVyPlxuICAgICAgPC9za3ktdG9vbGJhci1pdGVtPlxuXG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICAgIDxza3ktdG9vbGJhci12aWV3LWFjdGlvbnMgKm5nSWY9XCJoYXNWaWV3QWN0aW9uc1wiPlxuICAgICAgICA8bmctY29udGVudFxuICAgICAgICAgIHNlbGVjdD1cInNreS1saXN0LXRvb2xiYXItdmlldy1hY3Rpb25zXCJcbiAgICAgICAgPlxuICAgICAgICA8L25nLWNvbnRlbnQ+XG4gICAgICA8L3NreS10b29sYmFyLXZpZXctYWN0aW9ucz5cbiAgICA8L3NreS10b29sYmFyLXNlY3Rpb24+XG5cbiAgICA8c2t5LXRvb2xiYXItc2VjdGlvbiAqbmdJZj1cInNob3dGaWx0ZXJTdW1tYXJ5ICYmIChoYXNBcHBsaWVkRmlsdGVycyB8IGFzeW5jKVwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LWxpc3QtZmlsdGVyLXN1bW1hcnlcIj5cbiAgICAgIDwvbmctY29udGVudD5cbiAgICA8L3NreS10b29sYmFyLXNlY3Rpb24+XG4gIDwvc2t5LXRvb2xiYXI+XG5cbiAgPGRpdiAqbmdJZj1cIih0eXBlIHwgYXN5bmMpID09PSAnc2VhcmNoJyAmJlxuICAgICgoaXNTZWFyY2hFbmFibGVkIHwgYXN5bmMpIHx8IGhhc0FkZGl0aW9uYWxUb29sYmFyU2VjdGlvbilcIlxuICAgIGNsYXNzPVwic2t5LWxpc3QtdG9vbGJhci1zZWFyY2hcIlxuICA+XG4gICAgPHNreS10b29sYmFyPlxuICAgICAgPHNreS10b29sYmFyLXNlY3Rpb24gKm5nSWY9XCIoaXNTZWFyY2hFbmFibGVkIHwgYXN5bmMpXCI+XG4gICAgICAgIDxza3ktdG9vbGJhci1pdGVtPlxuICAgICAgICAgIDxza3ktbGlzdC10b29sYmFyLWl0ZW0tcmVuZGVyZXJcbiAgICAgICAgICAgIHNreS1jbXAtaWQ9XCJzZWFyY2hcIlxuICAgICAgICAgICAgW3RlbXBsYXRlXT1cInNlYXJjaFwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvc2t5LWxpc3QtdG9vbGJhci1pdGVtLXJlbmRlcmVyPlxuICAgICAgICA8L3NreS10b29sYmFyLWl0ZW0+XG4gICAgICA8L3NreS10b29sYmFyLXNlY3Rpb24+XG4gICAgICA8c2t5LXRvb2xiYXItc2VjdGlvbiBbaGlkZGVuXT1cIiFoYXNBZGRpdGlvbmFsVG9vbGJhclNlY3Rpb25cIj5cbiAgICAgICAgPHNreS10b29sYmFyLWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGVmdFRlbXBsYXRlc1wiPlxuICAgICAgICAgIDxza3ktbGlzdC10b29sYmFyLWl0ZW0tcmVuZGVyZXJcbiAgICAgICAgICAgIFthdHRyLnNreS1jbXAtaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgICAgICBbdGVtcGxhdGVdPVwiaXRlbS50ZW1wbGF0ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvc2t5LWxpc3QtdG9vbGJhci1pdGVtLXJlbmRlcmVyPlxuICAgICAgICA8L3NreS10b29sYmFyLWl0ZW0+XG4gICAgICAgIDxza3ktdG9vbGJhci1pdGVtICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNlbnRlclRlbXBsYXRlc1wiPlxuICAgICAgICAgIDxza3ktbGlzdC10b29sYmFyLWl0ZW0tcmVuZGVyZXJcbiAgICAgICAgICAgIFthdHRyLnNreS1jbXAtaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgICAgICBbdGVtcGxhdGVdPVwiaXRlbS50ZW1wbGF0ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvc2t5LWxpc3QtdG9vbGJhci1pdGVtLXJlbmRlcmVyPlxuICAgICAgICA8L3NreS10b29sYmFyLWl0ZW0+XG4gICAgICAgIDxza3ktdG9vbGJhci1pdGVtICpuZ0Zvcj1cImxldCBpdGVtIG9mIHJpZ2h0VGVtcGxhdGVzXCJcbiAgICAgICAgICBbYXR0ci5za3ktdG9vbGJhci1pZF09XCJpdGVtLmlkXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxza3ktbGlzdC10b29sYmFyLWl0ZW0tcmVuZGVyZXIgKm5nSWY9XCJpdGVtLmlkICE9PSAnc2VhcmNoJ1wiXG4gICAgICAgICAgICBbYXR0ci5za3ktY21wLWlkXT1cIml0ZW0uaWRcIlxuICAgICAgICAgICAgW3RlbXBsYXRlXT1cIml0ZW0udGVtcGxhdGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L3NreS1saXN0LXRvb2xiYXItaXRlbS1yZW5kZXJlcj5cbiAgICAgICAgPC9za3ktdG9vbGJhci1pdGVtPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICAgICAgPHNreS10b29sYmFyLXZpZXctYWN0aW9ucyAqbmdJZj1cImhhc1ZpZXdBY3Rpb25zXCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnRcbiAgICAgICAgICAgIHNlbGVjdD1cInNreS1saXN0LXRvb2xiYXItdmlldy1hY3Rpb25zXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9uZy1jb250ZW50PlxuICAgICAgICA8L3NreS10b29sYmFyLXZpZXctYWN0aW9ucz5cbiAgICAgIDwvc2t5LXRvb2xiYXItc2VjdGlvbj5cbiAgICA8L3NreS10b29sYmFyPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgICpuZ0lmPVwiaXNGaWx0ZXJCYXJEaXNwbGF5ZWRcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJmaWx0ZXJCdXR0b25JZFwiXG4gICAgW2lkXT1cImxpc3RGaWx0ZXJJbmxpbmVJZFwiXG4gID5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktbGlzdC1maWx0ZXItaW5saW5lXCI+XG4gICAgPC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbiAgPHNreS1saXN0LW11bHRpc2VsZWN0LXRvb2xiYXIgKm5nSWY9XCJpc011bHRpc2VsZWN0RW5hYmxlZCB8IGFzeW5jXCI+XG4gIDwvc2t5LWxpc3QtbXVsdGlzZWxlY3QtdG9vbGJhcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3NlYXJjaD5cbiAgPGRpdiAqbmdJZj1cImlzU2VhcmNoRW5hYmxlZCB8IGFzeW5jXCJcbiAgICBjbGFzcz1cInNreS1saXN0LXRvb2xiYXItc2VhcmNoLXdyYXBwZXJcIlxuICA+XG4gICAgPHNreS1zZWFyY2hcbiAgICAgIFtkaXNhYmxlZF09XCJpc1Rvb2xiYXJEaXNhYmxlZFwiXG4gICAgICBbZXhwYW5kTW9kZV09XCIodHlwZSB8IGFzeW5jKSA9PT0gJ3NlYXJjaCcgPyAnZml0JyA6ICdyZXNwb25zaXZlJ1wiXG4gICAgICBbcGxhY2Vob2xkZXJUZXh0XT1cInBsYWNlaG9sZGVyXCJcbiAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaFRleHRJbnB1dCB8IGFzeW5jXCJcbiAgICAgIChzZWFyY2hBcHBseSk9XCJ1cGRhdGVTZWFyY2hUZXh0KCRldmVudClcIlxuICAgID5cbiAgICA8L3NreS1zZWFyY2g+XG4gICAgPG5nLWNvbnRlbnRcbiAgICAgIHNlbGVjdD1cInNreS1saXN0LXRvb2xiYXItc2VhcmNoLWFjdGlvbnNcIlxuICAgID48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzb3J0U2VsZWN0b3I+XG4gIDxkaXYgKm5nSWY9XCIoaXNTb3J0U2VsZWN0b3JFbmFibGVkIHwgYXN5bmMpICYmIChzb3J0U2VsZWN0b3JzIHwgYXN5bmMpLmxlbmd0aCA+IDBcIlxuICAgIGNsYXNzPVwic2t5LXRvb2xiYXItaXRlbS1zb3J0LWNvbnRhaW5lclwiXG4gID5cbiAgICA8c2t5LXNvcnQgW3Nob3dCdXR0b25UZXh0XT1cInRydWVcIj5cbiAgICAgIDxza3ktc29ydC1pdGVtICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNvcnRTZWxlY3RvcnMgfCBhc3luY1wiXG4gICAgICAgIFthY3RpdmVdPVwiaXRlbS5zZWxlY3RlZFwiXG4gICAgICAgIChpdGVtU2VsZWN0KT1cInNldFNvcnQoaXRlbS5zb3J0KVwiXG4gICAgICA+XG4gICAgICAgIHt7IGl0ZW0uc29ydC50ZXh0IH19XG4gICAgICA8L3NreS1zb3J0LWl0ZW0+XG4gICAgPC9za3ktc29ydD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2lubGluZUZpbHRlckJ1dHRvbj5cbiAgPHNreS1maWx0ZXItYnV0dG9uXG4gICAgW2FjdGl2ZV09XCJoYXNBcHBsaWVkRmlsdGVycyB8IGFzeW5jXCJcbiAgICBbYXJpYUNvbnRyb2xzXT1cImZpbHRlckJ1dHRvbkFyaWFDb250cm9sc1wiXG4gICAgW2FyaWFFeHBhbmRlZF09XCJpbmxpbmVGaWx0ZXJCYXJFeHBhbmRlZFwiXG4gICAgW2Rpc2FibGVkXT1cImlzVG9vbGJhckRpc2FibGVkXCJcbiAgICBbZmlsdGVyQnV0dG9uSWRdPVwiZmlsdGVyQnV0dG9uSWRcIlxuICAgIFtzaG93QnV0dG9uVGV4dF09XCJ0cnVlXCJcbiAgICAoZmlsdGVyQnV0dG9uQ2xpY2spPVwiaW5saW5lRmlsdGVyQnV0dG9uQ2xpY2soKVwiXG4gID5cbiAgPC9za3ktZmlsdGVyLWJ1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,87 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { SkyToolbarModule } from '@skyux/layout';
4
- import { SkySearchModule } from '@skyux/lookup';
5
- import { SkyFilterModule, SkySortModule } from '@skyux/lists';
6
- import { SkyCheckboxModule } from '@skyux/forms';
7
- import { SkyI18nModule } from '@skyux/i18n';
8
- import { SkyListFiltersModule } from '../list-filters/list-filters.module';
9
- import { SkyIconModule } from '@skyux/indicators';
10
- import { SkyListToolbarComponent } from './list-toolbar.component';
11
- import { SkyListToolbarItemComponent } from './list-toolbar-item.component';
12
- import { SkyListToolbarItemRendererComponent } from './list-toolbar-item-renderer.component';
13
- import { SkyListToolbarSortComponent } from './list-toolbar-sort.component';
14
- import { SkyListMultiselectToolbarComponent } from './list-multiselect-toolbar.component';
15
- import { SkyListToolbarViewActionsComponent } from './list-toolbar-view-actions.component';
16
- import { SkyListBuilderResourcesModule } from '../shared/sky-list-builder-resources.module';
17
- import { SkyListToolbarSearchActionsComponent } from './list-toolbar-search-actions.component';
18
- import * as i0 from "@angular/core";
19
- export class SkyListToolbarModule {
20
- }
21
- SkyListToolbarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.8", ngImport: i0, type: SkyListToolbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
22
- SkyListToolbarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.8", ngImport: i0, type: SkyListToolbarModule, declarations: [SkyListToolbarComponent,
23
- SkyListToolbarItemComponent,
24
- SkyListToolbarItemRendererComponent,
25
- SkyListMultiselectToolbarComponent,
26
- SkyListToolbarSearchActionsComponent,
27
- SkyListToolbarSortComponent,
28
- SkyListToolbarViewActionsComponent], imports: [CommonModule,
29
- SkyCheckboxModule,
30
- SkyI18nModule,
31
- SkyToolbarModule,
32
- SkySearchModule,
33
- SkySortModule,
34
- SkyFilterModule,
35
- SkyListFiltersModule,
36
- SkyIconModule,
37
- SkyListBuilderResourcesModule], exports: [SkyListToolbarComponent,
38
- SkyListToolbarItemComponent,
39
- SkyListToolbarSearchActionsComponent,
40
- SkyListToolbarSortComponent,
41
- SkyListToolbarViewActionsComponent] });
42
- SkyListToolbarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.8", ngImport: i0, type: SkyListToolbarModule, imports: [[
43
- CommonModule,
44
- SkyCheckboxModule,
45
- SkyI18nModule,
46
- SkyToolbarModule,
47
- SkySearchModule,
48
- SkySortModule,
49
- SkyFilterModule,
50
- SkyListFiltersModule,
51
- SkyIconModule,
52
- SkyListBuilderResourcesModule
53
- ]] });
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.8", ngImport: i0, type: SkyListToolbarModule, decorators: [{
55
- type: NgModule,
56
- args: [{
57
- declarations: [
58
- SkyListToolbarComponent,
59
- SkyListToolbarItemComponent,
60
- SkyListToolbarItemRendererComponent,
61
- SkyListMultiselectToolbarComponent,
62
- SkyListToolbarSearchActionsComponent,
63
- SkyListToolbarSortComponent,
64
- SkyListToolbarViewActionsComponent
65
- ],
66
- imports: [
67
- CommonModule,
68
- SkyCheckboxModule,
69
- SkyI18nModule,
70
- SkyToolbarModule,
71
- SkySearchModule,
72
- SkySortModule,
73
- SkyFilterModule,
74
- SkyListFiltersModule,
75
- SkyIconModule,
76
- SkyListBuilderResourcesModule
77
- ],
78
- exports: [
79
- SkyListToolbarComponent,
80
- SkyListToolbarItemComponent,
81
- SkyListToolbarSearchActionsComponent,
82
- SkyListToolbarSortComponent,
83
- SkyListToolbarViewActionsComponent
84
- ]
85
- }]
86
- }] });
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC10b29sYmFyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpc3QtYnVpbGRlci9zcmMvbW9kdWxlcy9saXN0LXRvb2xiYXIvbGlzdC10b29sYmFyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxZQUFZLEVBQ2IsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxlQUFlLEVBQ2hCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNkLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFDTCxpQkFBaUIsRUFDbEIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUNMLGFBQWEsRUFDZCxNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQ0wsb0JBQW9CLEVBQ3JCLE1BQU0scUNBQXFDLENBQUM7QUFFN0MsT0FBTyxFQUNMLGFBQWEsRUFDZCxNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE9BQU8sRUFDTCx1QkFBdUIsRUFDeEIsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQ0wsMkJBQTJCLEVBQzVCLE1BQU0sK0JBQStCLENBQUM7QUFFdkMsT0FBTyxFQUNMLG1DQUFtQyxFQUNwQyxNQUFNLHdDQUF3QyxDQUFDO0FBRWhELE9BQU8sRUFDTCwyQkFBMkIsRUFDNUIsTUFBTSwrQkFBK0IsQ0FBQztBQUV2QyxPQUFPLEVBQ0wsa0NBQWtDLEVBQ25DLE1BQU0sc0NBQXNDLENBQUM7QUFFOUMsT0FBTyxFQUNMLGtDQUFrQyxFQUNuQyxNQUFNLHVDQUF1QyxDQUFDO0FBRS9DLE9BQU8sRUFDTCw2QkFBNkIsRUFDOUIsTUFBTSw2Q0FBNkMsQ0FBQztBQUVyRCxPQUFPLEVBQ0wsb0NBQW9DLEVBQ3JDLE1BQU0seUNBQXlDLENBQUM7O0FBZ0NqRCxNQUFNLE9BQU8sb0JBQW9COztpSEFBcEIsb0JBQW9CO2tIQUFwQixvQkFBb0IsaUJBNUI3Qix1QkFBdUI7UUFDdkIsMkJBQTJCO1FBQzNCLG1DQUFtQztRQUNuQyxrQ0FBa0M7UUFDbEMsb0NBQW9DO1FBQ3BDLDJCQUEyQjtRQUMzQixrQ0FBa0MsYUFHbEMsWUFBWTtRQUNaLGlCQUFpQjtRQUNqQixhQUFhO1FBQ2IsZ0JBQWdCO1FBQ2hCLGVBQWU7UUFDZixhQUFhO1FBQ2IsZUFBZTtRQUNmLG9CQUFvQjtRQUNwQixhQUFhO1FBQ2IsNkJBQTZCLGFBRzdCLHVCQUF1QjtRQUN2QiwyQkFBMkI7UUFDM0Isb0NBQW9DO1FBQ3BDLDJCQUEyQjtRQUMzQixrQ0FBa0M7a0hBR3pCLG9CQUFvQixZQXBCdEI7WUFDUCxZQUFZO1lBQ1osaUJBQWlCO1lBQ2pCLGFBQWE7WUFDYixnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLGFBQWE7WUFDYixlQUFlO1lBQ2Ysb0JBQW9CO1lBQ3BCLGFBQWE7WUFDYiw2QkFBNkI7U0FDOUI7MkZBU1Usb0JBQW9CO2tCQTlCaEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osdUJBQXVCO3dCQUN2QiwyQkFBMkI7d0JBQzNCLG1DQUFtQzt3QkFDbkMsa0NBQWtDO3dCQUNsQyxvQ0FBb0M7d0JBQ3BDLDJCQUEyQjt3QkFDM0Isa0NBQWtDO3FCQUNuQztvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixpQkFBaUI7d0JBQ2pCLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixvQkFBb0I7d0JBQ3BCLGFBQWE7d0JBQ2IsNkJBQTZCO3FCQUM5QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsdUJBQXVCO3dCQUN2QiwyQkFBMkI7d0JBQzNCLG9DQUFvQzt3QkFDcEMsMkJBQTJCO3dCQUMzQixrQ0FBa0M7cUJBQ25DO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgTmdNb2R1bGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIENvbW1vbk1vZHVsZVxufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQge1xuICBTa3lUb29sYmFyTW9kdWxlXG59IGZyb20gJ0Bza3l1eC9sYXlvdXQnO1xuXG5pbXBvcnQge1xuICBTa3lTZWFyY2hNb2R1bGVcbn0gZnJvbSAnQHNreXV4L2xvb2t1cCc7XG5cbmltcG9ydCB7XG4gIFNreUZpbHRlck1vZHVsZSxcbiAgU2t5U29ydE1vZHVsZVxufSBmcm9tICdAc2t5dXgvbGlzdHMnO1xuXG5pbXBvcnQge1xuICBTa3lDaGVja2JveE1vZHVsZVxufSBmcm9tICdAc2t5dXgvZm9ybXMnO1xuXG5pbXBvcnQge1xuICBTa3lJMThuTW9kdWxlXG59IGZyb20gJ0Bza3l1eC9pMThuJztcblxuaW1wb3J0IHtcbiAgU2t5TGlzdEZpbHRlcnNNb2R1bGVcbn0gZnJvbSAnLi4vbGlzdC1maWx0ZXJzL2xpc3QtZmlsdGVycy5tb2R1bGUnO1xuXG5pbXBvcnQge1xuICBTa3lJY29uTW9kdWxlXG59IGZyb20gJ0Bza3l1eC9pbmRpY2F0b3JzJztcblxuaW1wb3J0IHtcbiAgU2t5TGlzdFRvb2xiYXJDb21wb25lbnRcbn0gZnJvbSAnLi9saXN0LXRvb2xiYXIuY29tcG9uZW50JztcblxuaW1wb3J0IHtcbiAgU2t5TGlzdFRvb2xiYXJJdGVtQ29tcG9uZW50XG59IGZyb20gJy4vbGlzdC10b29sYmFyLWl0ZW0uY29tcG9uZW50JztcblxuaW1wb3J0IHtcbiAgU2t5TGlzdFRvb2xiYXJJdGVtUmVuZGVyZXJDb21wb25lbnRcbn0gZnJvbSAnLi9saXN0LXRvb2xiYXItaXRlbS1yZW5kZXJlci5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lMaXN0VG9vbGJhclNvcnRDb21wb25lbnRcbn0gZnJvbSAnLi9saXN0LXRvb2xiYXItc29ydC5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lMaXN0TXVsdGlzZWxlY3RUb29sYmFyQ29tcG9uZW50XG59IGZyb20gJy4vbGlzdC1tdWx0aXNlbGVjdC10b29sYmFyLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7XG4gIFNreUxpc3RUb29sYmFyVmlld0FjdGlvbnNDb21wb25lbnRcbn0gZnJvbSAnLi9saXN0LXRvb2xiYXItdmlldy1hY3Rpb25zLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7XG4gIFNreUxpc3RCdWlsZGVyUmVzb3VyY2VzTW9kdWxlXG59IGZyb20gJy4uL3NoYXJlZC9za3ktbGlzdC1idWlsZGVyLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQge1xuICBTa3lMaXN0VG9vbGJhclNlYXJjaEFjdGlvbnNDb21wb25lbnRcbn0gZnJvbSAnLi9saXN0LXRvb2xiYXItc2VhcmNoLWFjdGlvbnMuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgU2t5TGlzdFRvb2xiYXJDb21wb25lbnQsXG4gICAgU2t5TGlzdFRvb2xiYXJJdGVtQ29tcG9uZW50LFxuICAgIFNreUxpc3RUb29sYmFySXRlbVJlbmRlcmVyQ29tcG9uZW50LFxuICAgIFNreUxpc3RNdWx0aXNlbGVjdFRvb2xiYXJDb21wb25lbnQsXG4gICAgU2t5TGlzdFRvb2xiYXJTZWFyY2hBY3Rpb25zQ29tcG9uZW50LFxuICAgIFNreUxpc3RUb29sYmFyU29ydENvbXBvbmVudCxcbiAgICBTa3lMaXN0VG9vbGJhclZpZXdBY3Rpb25zQ29tcG9uZW50XG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU2t5Q2hlY2tib3hNb2R1bGUsXG4gICAgU2t5STE4bk1vZHVsZSxcbiAgICBTa3lUb29sYmFyTW9kdWxlLFxuICAgIFNreVNlYXJjaE1vZHVsZSxcbiAgICBTa3lTb3J0TW9kdWxlLFxuICAgIFNreUZpbHRlck1vZHVsZSxcbiAgICBTa3lMaXN0RmlsdGVyc01vZHVsZSxcbiAgICBTa3lJY29uTW9kdWxlLFxuICAgIFNreUxpc3RCdWlsZGVyUmVzb3VyY2VzTW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBTa3lMaXN0VG9vbGJhckNvbXBvbmVudCxcbiAgICBTa3lMaXN0VG9vbGJhckl0ZW1Db21wb25lbnQsXG4gICAgU2t5TGlzdFRvb2xiYXJTZWFyY2hBY3Rpb25zQ29tcG9uZW50LFxuICAgIFNreUxpc3RUb29sYmFyU29ydENvbXBvbmVudCxcbiAgICBTa3lMaXN0VG9vbGJhclZpZXdBY3Rpb25zQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2t5TGlzdFRvb2xiYXJNb2R1bGUgeyB9XG4iXX0=
@@ -1,14 +0,0 @@
1
- /**
2
- * @internal
3
- */
4
- export class ListToolbarConfigModel {
5
- constructor(data) {
6
- this.searchEnabled = true;
7
- this.sortSelectorEnabled = true;
8
- if (data) {
9
- this.searchEnabled = data.searchEnabled;
10
- this.sortSelectorEnabled = data.sortSelectorEnabled;
11
- }
12
- }
13
- }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGlzdC1idWlsZGVyL3NyYy9tb2R1bGVzL2xpc3QtdG9vbGJhci9zdGF0ZS9jb25maWcvY29uZmlnLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHNCQUFzQjtJQUlqQyxZQUFZLElBQVU7UUFIZixrQkFBYSxHQUFZLElBQUksQ0FBQztRQUM5Qix3QkFBbUIsR0FBWSxJQUFJLENBQUM7UUFHekMsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDeEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztTQUNyRDtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjbGFzcyBMaXN0VG9vbGJhckNvbmZpZ01vZGVsIHtcbiAgcHVibGljIHNlYXJjaEVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBwdWJsaWMgc29ydFNlbGVjdG9yRW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoZGF0YT86IGFueSkge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLnNlYXJjaEVuYWJsZWQgPSBkYXRhLnNlYXJjaEVuYWJsZWQ7XG4gICAgICB0aGlzLnNvcnRTZWxlY3RvckVuYWJsZWQgPSBkYXRhLnNvcnRTZWxlY3RvckVuYWJsZWQ7XG4gICAgfVxuICB9XG59XG4iXX0=