@angular/cdk 19.0.0-next.0 → 19.0.0-next.2

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 (313) hide show
  1. package/a11y/index.d.ts +5 -1
  2. package/drag-drop/index.d.ts +1 -4
  3. package/fesm2022/a11y.mjs +21 -11
  4. package/fesm2022/a11y.mjs.map +1 -1
  5. package/fesm2022/cdk.mjs +1 -1
  6. package/fesm2022/cdk.mjs.map +1 -1
  7. package/fesm2022/drag-drop.mjs +17 -26
  8. package/fesm2022/drag-drop.mjs.map +1 -1
  9. package/fesm2022/overlay.mjs +20 -1
  10. package/fesm2022/overlay.mjs.map +1 -1
  11. package/fesm2022/platform.mjs +5 -8
  12. package/fesm2022/platform.mjs.map +1 -1
  13. package/fesm2022/private.mjs +52 -0
  14. package/fesm2022/private.mjs.map +1 -0
  15. package/fesm2022/testing/testbed.mjs +3 -2
  16. package/fesm2022/testing/testbed.mjs.map +1 -1
  17. package/fesm2022/text-field.mjs +17 -2
  18. package/fesm2022/text-field.mjs.map +1 -1
  19. package/fesm2022/tree.mjs +13 -7
  20. package/fesm2022/tree.mjs.map +1 -1
  21. package/overlay/_index.scss +15 -13
  22. package/overlay/index.d.ts +5 -0
  23. package/overlay-prebuilt.css +1 -1
  24. package/package.json +5 -55
  25. package/platform/index.d.ts +2 -1
  26. package/private/index.d.ts +21 -0
  27. package/schematics/ng-add/index.js +1 -1
  28. package/schematics/ng-add/index.mjs +1 -1
  29. package/text-field/index.d.ts +1 -0
  30. package/tree/index.d.ts +3 -1
  31. package/esm2022/a11y/a11y-module.mjs +0 -31
  32. package/esm2022/a11y/a11y_public_index.mjs +0 -5
  33. package/esm2022/a11y/aria-describer/aria-describer.mjs +0 -232
  34. package/esm2022/a11y/aria-describer/aria-reference.mjs +0 -47
  35. package/esm2022/a11y/fake-event-detection.mjs +0 -29
  36. package/esm2022/a11y/focus-monitor/focus-monitor.mjs +0 -468
  37. package/esm2022/a11y/focus-trap/configurable-focus-trap-config.mjs +0 -9
  38. package/esm2022/a11y/focus-trap/configurable-focus-trap-factory.mjs +0 -54
  39. package/esm2022/a11y/focus-trap/configurable-focus-trap.mjs +0 -51
  40. package/esm2022/a11y/focus-trap/event-listener-inert-strategy.mjs +0 -61
  41. package/esm2022/a11y/focus-trap/focus-trap-inert-strategy.mjs +0 -11
  42. package/esm2022/a11y/focus-trap/focus-trap-manager.mjs +0 -53
  43. package/esm2022/a11y/focus-trap/focus-trap.mjs +0 -396
  44. package/esm2022/a11y/high-contrast-mode/high-contrast-mode-detector.mjs +0 -116
  45. package/esm2022/a11y/index.mjs +0 -9
  46. package/esm2022/a11y/input-modality/input-modality-detector.mjs +0 -176
  47. package/esm2022/a11y/interactivity-checker/interactivity-checker.mjs +0 -238
  48. package/esm2022/a11y/key-manager/activedescendant-key-manager.mjs +0 -20
  49. package/esm2022/a11y/key-manager/focus-key-manager.mjs +0 -29
  50. package/esm2022/a11y/key-manager/list-key-manager.mjs +0 -357
  51. package/esm2022/a11y/key-manager/noop-tree-key-manager.mjs +0 -94
  52. package/esm2022/a11y/key-manager/tree-key-manager-strategy.mjs +0 -9
  53. package/esm2022/a11y/key-manager/tree-key-manager.mjs +0 -345
  54. package/esm2022/a11y/key-manager/typeahead.mjs +0 -91
  55. package/esm2022/a11y/live-announcer/live-announcer-tokens.mjs +0 -19
  56. package/esm2022/a11y/live-announcer/live-announcer.mjs +0 -210
  57. package/esm2022/a11y/public-api.mjs +0 -30
  58. package/esm2022/accordion/accordion-item.mjs +0 -162
  59. package/esm2022/accordion/accordion-module.mjs +0 -24
  60. package/esm2022/accordion/accordion.mjs +0 -65
  61. package/esm2022/accordion/accordion_public_index.mjs +0 -5
  62. package/esm2022/accordion/index.mjs +0 -9
  63. package/esm2022/accordion/public-api.mjs +0 -11
  64. package/esm2022/bidi/bidi-module.mjs +0 -23
  65. package/esm2022/bidi/bidi_public_index.mjs +0 -5
  66. package/esm2022/bidi/dir-document-token.mjs +0 -33
  67. package/esm2022/bidi/dir.mjs +0 -70
  68. package/esm2022/bidi/directionality.mjs +0 -52
  69. package/esm2022/bidi/index.mjs +0 -9
  70. package/esm2022/bidi/public-api.mjs +0 -12
  71. package/esm2022/clipboard/clipboard-module.mjs +0 -23
  72. package/esm2022/clipboard/clipboard.mjs +0 -53
  73. package/esm2022/clipboard/clipboard_public_index.mjs +0 -5
  74. package/esm2022/clipboard/copy-to-clipboard.mjs +0 -100
  75. package/esm2022/clipboard/index.mjs +0 -9
  76. package/esm2022/clipboard/pending-copy.mjs +0 -71
  77. package/esm2022/clipboard/public-api.mjs +0 -12
  78. package/esm2022/coercion/array.mjs +0 -11
  79. package/esm2022/coercion/boolean-property.mjs +0 -12
  80. package/esm2022/coercion/css-pixel-value.mjs +0 -15
  81. package/esm2022/coercion/element.mjs +0 -16
  82. package/esm2022/coercion/index.mjs +0 -9
  83. package/esm2022/coercion/number-property.mjs +0 -24
  84. package/esm2022/coercion/private/index.mjs +0 -9
  85. package/esm2022/coercion/private/observable.mjs +0 -19
  86. package/esm2022/coercion/private/private_public_index.mjs +0 -5
  87. package/esm2022/coercion/public-api.mjs +0 -14
  88. package/esm2022/coercion/string-array.mjs +0 -38
  89. package/esm2022/collections/array-data-source.mjs +0 -21
  90. package/esm2022/collections/collection-viewer.mjs +0 -9
  91. package/esm2022/collections/collections_public_index.mjs +0 -5
  92. package/esm2022/collections/data-source.mjs +0 -19
  93. package/esm2022/collections/dispose-view-repeater-strategy.mjs +0 -48
  94. package/esm2022/collections/index.mjs +0 -9
  95. package/esm2022/collections/public-api.mjs +0 -17
  96. package/esm2022/collections/recycle-view-repeater-strategy.mjs +0 -129
  97. package/esm2022/collections/selection-model.mjs +0 -225
  98. package/esm2022/collections/tree-adapter.mjs +0 -9
  99. package/esm2022/collections/unique-selection-dispatcher.mjs +0 -55
  100. package/esm2022/collections/view-repeater.mjs +0 -26
  101. package/esm2022/dialog/dialog-config.mjs +0 -70
  102. package/esm2022/dialog/dialog-container.mjs +0 -308
  103. package/esm2022/dialog/dialog-injectors.mjs +0 -40
  104. package/esm2022/dialog/dialog-module.mjs +0 -40
  105. package/esm2022/dialog/dialog-ref.mjs +0 -85
  106. package/esm2022/dialog/dialog.mjs +0 -303
  107. package/esm2022/dialog/dialog_public_index.mjs +0 -5
  108. package/esm2022/dialog/index.mjs +0 -9
  109. package/esm2022/dialog/public-api.mjs +0 -14
  110. package/esm2022/drag-drop/directives/assertions.mjs +0 -18
  111. package/esm2022/drag-drop/directives/config.mjs +0 -14
  112. package/esm2022/drag-drop/directives/drag-handle.mjs +0 -68
  113. package/esm2022/drag-drop/directives/drag-placeholder.mjs +0 -43
  114. package/esm2022/drag-drop/directives/drag-preview.mjs +0 -48
  115. package/esm2022/drag-drop/directives/drag.mjs +0 -520
  116. package/esm2022/drag-drop/directives/drop-list-group.mjs +0 -47
  117. package/esm2022/drag-drop/directives/drop-list.mjs +0 -352
  118. package/esm2022/drag-drop/dom/clone-node.mjs +0 -65
  119. package/esm2022/drag-drop/dom/dom-rect.mjs +0 -64
  120. package/esm2022/drag-drop/dom/parent-position-tracker.mjs +0 -76
  121. package/esm2022/drag-drop/dom/root-node.mjs +0 -21
  122. package/esm2022/drag-drop/dom/styling.mjs +0 -89
  123. package/esm2022/drag-drop/dom/transition-duration.mjs +0 -36
  124. package/esm2022/drag-drop/drag-drop-module.mjs +0 -49
  125. package/esm2022/drag-drop/drag-drop-registry.mjs +0 -266
  126. package/esm2022/drag-drop/drag-drop.mjs +0 -57
  127. package/esm2022/drag-drop/drag-drop_public_index.mjs +0 -5
  128. package/esm2022/drag-drop/drag-events.mjs +0 -9
  129. package/esm2022/drag-drop/drag-parent.mjs +0 -16
  130. package/esm2022/drag-drop/drag-ref.mjs +0 -1097
  131. package/esm2022/drag-drop/drag-utils.mjs +0 -60
  132. package/esm2022/drag-drop/drop-list-ref.mjs +0 -672
  133. package/esm2022/drag-drop/index.mjs +0 -9
  134. package/esm2022/drag-drop/preview-ref.mjs +0 -117
  135. package/esm2022/drag-drop/public-api.mjs +0 -23
  136. package/esm2022/drag-drop/sorting/drop-list-sort-strategy.mjs +0 -9
  137. package/esm2022/drag-drop/sorting/mixed-sort-strategy.mjs +0 -246
  138. package/esm2022/drag-drop/sorting/single-axis-sort-strategy.mjs +0 -343
  139. package/esm2022/index.mjs +0 -9
  140. package/esm2022/keycodes/index.mjs +0 -9
  141. package/esm2022/keycodes/keycodes.mjs +0 -127
  142. package/esm2022/keycodes/keycodes_public_index.mjs +0 -5
  143. package/esm2022/keycodes/modifiers.mjs +0 -18
  144. package/esm2022/keycodes/public-api.mjs +0 -10
  145. package/esm2022/layout/breakpoints-observer.mjs +0 -105
  146. package/esm2022/layout/breakpoints.mjs +0 -29
  147. package/esm2022/layout/index.mjs +0 -9
  148. package/esm2022/layout/layout-module.mjs +0 -19
  149. package/esm2022/layout/layout_public_index.mjs +0 -5
  150. package/esm2022/layout/media-matcher.mjs +0 -94
  151. package/esm2022/layout/public-api.mjs +0 -12
  152. package/esm2022/listbox/index.mjs +0 -9
  153. package/esm2022/listbox/listbox-module.mjs +0 -24
  154. package/esm2022/listbox/listbox.mjs +0 -888
  155. package/esm2022/listbox/listbox_public_index.mjs +0 -5
  156. package/esm2022/listbox/public-api.mjs +0 -10
  157. package/esm2022/menu/context-menu-trigger.mjs +0 -221
  158. package/esm2022/menu/event-detection.mjs +0 -28
  159. package/esm2022/menu/index.mjs +0 -9
  160. package/esm2022/menu/menu-aim.mjs +0 -204
  161. package/esm2022/menu/menu-bar.mjs +0 -134
  162. package/esm2022/menu/menu-base.mjs +0 -192
  163. package/esm2022/menu/menu-errors.mjs +0 -22
  164. package/esm2022/menu/menu-group.mjs +0 -31
  165. package/esm2022/menu/menu-interface.mjs +0 -11
  166. package/esm2022/menu/menu-item-checkbox.mjs +0 -50
  167. package/esm2022/menu/menu-item-radio.mjs +0 -72
  168. package/esm2022/menu/menu-item-selectable.mjs +0 -36
  169. package/esm2022/menu/menu-item.mjs +0 -270
  170. package/esm2022/menu/menu-module.mjs +0 -60
  171. package/esm2022/menu/menu-stack.mjs +0 -163
  172. package/esm2022/menu/menu-trigger-base.mjs +0 -119
  173. package/esm2022/menu/menu-trigger.mjs +0 -313
  174. package/esm2022/menu/menu.mjs +0 -135
  175. package/esm2022/menu/menu_public_index.mjs +0 -5
  176. package/esm2022/menu/pointer-focus-tracker.mjs +0 -51
  177. package/esm2022/menu/public-api.mjs +0 -24
  178. package/esm2022/observers/index.mjs +0 -9
  179. package/esm2022/observers/observe-content.mjs +0 -216
  180. package/esm2022/observers/observers_public_index.mjs +0 -5
  181. package/esm2022/observers/private/index.mjs +0 -9
  182. package/esm2022/observers/private/private_public_index.mjs +0 -5
  183. package/esm2022/observers/private/shared-resize-observer.mjs +0 -125
  184. package/esm2022/observers/public-api.mjs +0 -9
  185. package/esm2022/overlay/dispatchers/base-overlay-dispatcher.mjs +0 -52
  186. package/esm2022/overlay/dispatchers/index.mjs +0 -10
  187. package/esm2022/overlay/dispatchers/overlay-keyboard-dispatcher.mjs +0 -81
  188. package/esm2022/overlay/dispatchers/overlay-outside-click-dispatcher.mjs +0 -151
  189. package/esm2022/overlay/fullscreen-overlay-container.mjs +0 -94
  190. package/esm2022/overlay/index.mjs +0 -9
  191. package/esm2022/overlay/overlay-config.mjs +0 -45
  192. package/esm2022/overlay/overlay-container.mjs +0 -81
  193. package/esm2022/overlay/overlay-directives.mjs +0 -432
  194. package/esm2022/overlay/overlay-module.mjs +0 -28
  195. package/esm2022/overlay/overlay-ref.mjs +0 -437
  196. package/esm2022/overlay/overlay.mjs +0 -126
  197. package/esm2022/overlay/overlay_public_index.mjs +0 -5
  198. package/esm2022/overlay/position/connected-position.mjs +0 -88
  199. package/esm2022/overlay/position/flexible-connected-position-strategy.mjs +0 -1002
  200. package/esm2022/overlay/position/global-position-strategy.mjs +0 -237
  201. package/esm2022/overlay/position/overlay-position-builder.mjs +0 -50
  202. package/esm2022/overlay/position/position-strategy.mjs +0 -9
  203. package/esm2022/overlay/position/scroll-clip.mjs +0 -40
  204. package/esm2022/overlay/public-api.mjs +0 -22
  205. package/esm2022/overlay/scroll/block-scroll-strategy.mjs +0 -80
  206. package/esm2022/overlay/scroll/close-scroll-strategy.mjs +0 -65
  207. package/esm2022/overlay/scroll/index.mjs +0 -14
  208. package/esm2022/overlay/scroll/noop-scroll-strategy.mjs +0 -17
  209. package/esm2022/overlay/scroll/reposition-scroll-strategy.mjs +0 -61
  210. package/esm2022/overlay/scroll/scroll-strategy-options.mjs +0 -55
  211. package/esm2022/overlay/scroll/scroll-strategy.mjs +0 -14
  212. package/esm2022/platform/features/input-types.mjs +0 -59
  213. package/esm2022/platform/features/passive-listeners.mjs +0 -36
  214. package/esm2022/platform/features/scrolling.mjs +0 -104
  215. package/esm2022/platform/features/shadow-dom.mjs +0 -54
  216. package/esm2022/platform/features/test-environment.mjs +0 -24
  217. package/esm2022/platform/index.mjs +0 -9
  218. package/esm2022/platform/platform-module.mjs +0 -19
  219. package/esm2022/platform/platform.mjs +0 -85
  220. package/esm2022/platform/platform_public_index.mjs +0 -5
  221. package/esm2022/platform/public-api.mjs +0 -15
  222. package/esm2022/portal/dom-portal-outlet.mjs +0 -158
  223. package/esm2022/portal/index.mjs +0 -9
  224. package/esm2022/portal/portal-directives.mjs +0 -251
  225. package/esm2022/portal/portal-errors.mjs +0 -51
  226. package/esm2022/portal/portal-injector.mjs +0 -28
  227. package/esm2022/portal/portal.mjs +0 -189
  228. package/esm2022/portal/portal_public_index.mjs +0 -5
  229. package/esm2022/portal/public-api.mjs +0 -12
  230. package/esm2022/public-api.mjs +0 -9
  231. package/esm2022/scrolling/fixed-size-virtual-scroll.mjs +0 -218
  232. package/esm2022/scrolling/index.mjs +0 -9
  233. package/esm2022/scrolling/public-api.mjs +0 -20
  234. package/esm2022/scrolling/scroll-dispatcher.mjs +0 -163
  235. package/esm2022/scrolling/scrollable.mjs +0 -177
  236. package/esm2022/scrolling/scrolling-module.mjs +0 -69
  237. package/esm2022/scrolling/scrolling_public_index.mjs +0 -5
  238. package/esm2022/scrolling/viewport-ruler.mjs +0 -146
  239. package/esm2022/scrolling/virtual-for-of.mjs +0 -299
  240. package/esm2022/scrolling/virtual-scroll-repeater.mjs +0 -9
  241. package/esm2022/scrolling/virtual-scroll-strategy.mjs +0 -11
  242. package/esm2022/scrolling/virtual-scroll-viewport.mjs +0 -445
  243. package/esm2022/scrolling/virtual-scrollable-element.mjs +0 -42
  244. package/esm2022/scrolling/virtual-scrollable-window.mjs +0 -41
  245. package/esm2022/scrolling/virtual-scrollable.mjs +0 -40
  246. package/esm2022/stepper/index.mjs +0 -9
  247. package/esm2022/stepper/public-api.mjs +0 -13
  248. package/esm2022/stepper/step-header.mjs +0 -31
  249. package/esm2022/stepper/step-label.mjs +0 -24
  250. package/esm2022/stepper/stepper-button.mjs +0 -58
  251. package/esm2022/stepper/stepper-module.mjs +0 -41
  252. package/esm2022/stepper/stepper.mjs +0 -452
  253. package/esm2022/stepper/stepper_public_index.mjs +0 -5
  254. package/esm2022/table/can-stick.mjs +0 -46
  255. package/esm2022/table/cell.mjs +0 -245
  256. package/esm2022/table/coalesced-style-scheduler.mjs +0 -79
  257. package/esm2022/table/index.mjs +0 -9
  258. package/esm2022/table/public-api.mjs +0 -20
  259. package/esm2022/table/row.mjs +0 -317
  260. package/esm2022/table/sticky-position-listener.mjs +0 -11
  261. package/esm2022/table/sticky-styler.mjs +0 -347
  262. package/esm2022/table/table-errors.mjs +0 -67
  263. package/esm2022/table/table-module.mjs +0 -93
  264. package/esm2022/table/table.mjs +0 -1148
  265. package/esm2022/table/table_public_index.mjs +0 -5
  266. package/esm2022/table/text-column.mjs +0 -154
  267. package/esm2022/table/tokens.mjs +0 -16
  268. package/esm2022/testing/change-detection.mjs +0 -102
  269. package/esm2022/testing/component-harness.mjs +0 -328
  270. package/esm2022/testing/element-dimensions.mjs +0 -9
  271. package/esm2022/testing/harness-environment.mjs +0 -220
  272. package/esm2022/testing/index.mjs +0 -9
  273. package/esm2022/testing/public-api.mjs +0 -15
  274. package/esm2022/testing/selenium-webdriver/index.mjs +0 -9
  275. package/esm2022/testing/selenium-webdriver/public-api.mjs +0 -10
  276. package/esm2022/testing/selenium-webdriver/selenium-web-driver-element.mjs +0 -216
  277. package/esm2022/testing/selenium-webdriver/selenium-web-driver-harness-environment.mjs +0 -88
  278. package/esm2022/testing/selenium-webdriver/selenium-webdriver-keys.mjs +0 -64
  279. package/esm2022/testing/test-element-errors.mjs +0 -15
  280. package/esm2022/testing/test-element.mjs +0 -49
  281. package/esm2022/testing/testbed/fake-events/dispatch-events.mjs +0 -53
  282. package/esm2022/testing/testbed/fake-events/element-focus.mjs +0 -39
  283. package/esm2022/testing/testbed/fake-events/event-objects.mjs +0 -127
  284. package/esm2022/testing/testbed/fake-events/index.mjs +0 -14
  285. package/esm2022/testing/testbed/fake-events/type-in-element.mjs +0 -97
  286. package/esm2022/testing/testbed/index.mjs +0 -9
  287. package/esm2022/testing/testbed/public-api.mjs +0 -10
  288. package/esm2022/testing/testbed/task-state-zone-interceptor.mjs +0 -82
  289. package/esm2022/testing/testbed/testbed-harness-environment.mjs +0 -165
  290. package/esm2022/testing/testbed/unit-test-element.mjs +0 -258
  291. package/esm2022/testing/text-filtering.mjs +0 -21
  292. package/esm2022/text-field/autofill.mjs +0 -114
  293. package/esm2022/text-field/autosize.mjs +0 -309
  294. package/esm2022/text-field/index.mjs +0 -9
  295. package/esm2022/text-field/public-api.mjs +0 -11
  296. package/esm2022/text-field/text-field-module.mjs +0 -24
  297. package/esm2022/text-field/text-field_public_index.mjs +0 -5
  298. package/esm2022/tree/control/base-tree-control.mjs +0 -62
  299. package/esm2022/tree/control/flat-tree-control.mjs +0 -57
  300. package/esm2022/tree/control/nested-tree-control.mjs +0 -67
  301. package/esm2022/tree/control/tree-control.mjs +0 -2
  302. package/esm2022/tree/index.mjs +0 -9
  303. package/esm2022/tree/nested-node.mjs +0 -103
  304. package/esm2022/tree/node.mjs +0 -36
  305. package/esm2022/tree/outlet.mjs +0 -40
  306. package/esm2022/tree/padding.mjs +0 -129
  307. package/esm2022/tree/public-api.mjs +0 -20
  308. package/esm2022/tree/toggle.mjs +0 -51
  309. package/esm2022/tree/tree-errors.mjs +0 -44
  310. package/esm2022/tree/tree-module.mjs +0 -49
  311. package/esm2022/tree/tree.mjs +0 -1123
  312. package/esm2022/tree/tree_public_index.mjs +0 -5
  313. package/esm2022/version.mjs +0 -11
@@ -1,347 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- /**
9
- * List of all possible directions that can be used for sticky positioning.
10
- * @docs-private
11
- */
12
- export const STICKY_DIRECTIONS = ['top', 'bottom', 'left', 'right'];
13
- /**
14
- * Applies and removes sticky positioning styles to the `CdkTable` rows and columns cells.
15
- * @docs-private
16
- */
17
- export class StickyStyler {
18
- /**
19
- * @param _isNativeHtmlTable Whether the sticky logic should be based on a table
20
- * that uses the native `<table>` element.
21
- * @param _stickCellCss The CSS class that will be applied to every row/cell that has
22
- * sticky positioning applied.
23
- * @param direction The directionality context of the table (ltr/rtl); affects column positioning
24
- * by reversing left/right positions.
25
- * @param _isBrowser Whether the table is currently being rendered on the server or the client.
26
- * @param _needsPositionStickyOnElement Whether we need to specify position: sticky on cells
27
- * using inline styles. If false, it is assumed that position: sticky is included in
28
- * the component stylesheet for _stickCellCss.
29
- * @param _positionListener A listener that is notified of changes to sticky rows/columns
30
- * and their dimensions.
31
- */
32
- constructor(_isNativeHtmlTable, _stickCellCss, direction, _coalescedStyleScheduler, _isBrowser = true, _needsPositionStickyOnElement = true, _positionListener) {
33
- this._isNativeHtmlTable = _isNativeHtmlTable;
34
- this._stickCellCss = _stickCellCss;
35
- this.direction = direction;
36
- this._coalescedStyleScheduler = _coalescedStyleScheduler;
37
- this._isBrowser = _isBrowser;
38
- this._needsPositionStickyOnElement = _needsPositionStickyOnElement;
39
- this._positionListener = _positionListener;
40
- this._cachedCellWidths = [];
41
- this._borderCellCss = {
42
- 'top': `${_stickCellCss}-border-elem-top`,
43
- 'bottom': `${_stickCellCss}-border-elem-bottom`,
44
- 'left': `${_stickCellCss}-border-elem-left`,
45
- 'right': `${_stickCellCss}-border-elem-right`,
46
- };
47
- }
48
- /**
49
- * Clears the sticky positioning styles from the row and its cells by resetting the `position`
50
- * style, setting the zIndex to 0, and unsetting each provided sticky direction.
51
- * @param rows The list of rows that should be cleared from sticking in the provided directions
52
- * @param stickyDirections The directions that should no longer be set as sticky on the rows.
53
- */
54
- clearStickyPositioning(rows, stickyDirections) {
55
- const elementsToClear = [];
56
- for (const row of rows) {
57
- // If the row isn't an element (e.g. if it's an `ng-container`),
58
- // it won't have inline styles or `children` so we skip it.
59
- if (row.nodeType !== row.ELEMENT_NODE) {
60
- continue;
61
- }
62
- elementsToClear.push(row);
63
- for (let i = 0; i < row.children.length; i++) {
64
- elementsToClear.push(row.children[i]);
65
- }
66
- }
67
- // Coalesce with sticky row/column updates (and potentially other changes like column resize).
68
- this._coalescedStyleScheduler.schedule(() => {
69
- for (const element of elementsToClear) {
70
- this._removeStickyStyle(element, stickyDirections);
71
- }
72
- });
73
- }
74
- /**
75
- * Applies sticky left and right positions to the cells of each row according to the sticky
76
- * states of the rendered column definitions.
77
- * @param rows The rows that should have its set of cells stuck according to the sticky states.
78
- * @param stickyStartStates A list of boolean states where each state represents whether the cell
79
- * in this index position should be stuck to the start of the row.
80
- * @param stickyEndStates A list of boolean states where each state represents whether the cell
81
- * in this index position should be stuck to the end of the row.
82
- * @param recalculateCellWidths Whether the sticky styler should recalculate the width of each
83
- * column cell. If `false` cached widths will be used instead.
84
- */
85
- updateStickyColumns(rows, stickyStartStates, stickyEndStates, recalculateCellWidths = true) {
86
- if (!rows.length ||
87
- !this._isBrowser ||
88
- !(stickyStartStates.some(state => state) || stickyEndStates.some(state => state))) {
89
- if (this._positionListener) {
90
- this._positionListener.stickyColumnsUpdated({ sizes: [] });
91
- this._positionListener.stickyEndColumnsUpdated({ sizes: [] });
92
- }
93
- return;
94
- }
95
- // Coalesce with sticky row updates (and potentially other changes like column resize).
96
- this._coalescedStyleScheduler.schedule(() => {
97
- const firstRow = rows[0];
98
- const numCells = firstRow.children.length;
99
- const cellWidths = this._getCellWidths(firstRow, recalculateCellWidths);
100
- const startPositions = this._getStickyStartColumnPositions(cellWidths, stickyStartStates);
101
- const endPositions = this._getStickyEndColumnPositions(cellWidths, stickyEndStates);
102
- const lastStickyStart = stickyStartStates.lastIndexOf(true);
103
- const firstStickyEnd = stickyEndStates.indexOf(true);
104
- const isRtl = this.direction === 'rtl';
105
- const start = isRtl ? 'right' : 'left';
106
- const end = isRtl ? 'left' : 'right';
107
- for (const row of rows) {
108
- for (let i = 0; i < numCells; i++) {
109
- const cell = row.children[i];
110
- if (stickyStartStates[i]) {
111
- this._addStickyStyle(cell, start, startPositions[i], i === lastStickyStart);
112
- }
113
- if (stickyEndStates[i]) {
114
- this._addStickyStyle(cell, end, endPositions[i], i === firstStickyEnd);
115
- }
116
- }
117
- }
118
- if (this._positionListener) {
119
- this._positionListener.stickyColumnsUpdated({
120
- sizes: lastStickyStart === -1
121
- ? []
122
- : cellWidths
123
- .slice(0, lastStickyStart + 1)
124
- .map((width, index) => (stickyStartStates[index] ? width : null)),
125
- });
126
- this._positionListener.stickyEndColumnsUpdated({
127
- sizes: firstStickyEnd === -1
128
- ? []
129
- : cellWidths
130
- .slice(firstStickyEnd)
131
- .map((width, index) => (stickyEndStates[index + firstStickyEnd] ? width : null))
132
- .reverse(),
133
- });
134
- }
135
- });
136
- }
137
- /**
138
- * Applies sticky positioning to the row's cells if using the native table layout, and to the
139
- * row itself otherwise.
140
- * @param rowsToStick The list of rows that should be stuck according to their corresponding
141
- * sticky state and to the provided top or bottom position.
142
- * @param stickyStates A list of boolean states where each state represents whether the row
143
- * should be stuck in the particular top or bottom position.
144
- * @param position The position direction in which the row should be stuck if that row should be
145
- * sticky.
146
- *
147
- */
148
- stickRows(rowsToStick, stickyStates, position) {
149
- // Since we can't measure the rows on the server, we can't stick the rows properly.
150
- if (!this._isBrowser) {
151
- return;
152
- }
153
- // Coalesce with other sticky row updates (top/bottom), sticky columns updates
154
- // (and potentially other changes like column resize).
155
- this._coalescedStyleScheduler.schedule(() => {
156
- // If positioning the rows to the bottom, reverse their order when evaluating the sticky
157
- // position such that the last row stuck will be "bottom: 0px" and so on. Note that the
158
- // sticky states need to be reversed as well.
159
- const rows = position === 'bottom' ? rowsToStick.slice().reverse() : rowsToStick;
160
- const states = position === 'bottom' ? stickyStates.slice().reverse() : stickyStates;
161
- // Measure row heights all at once before adding sticky styles to reduce layout thrashing.
162
- const stickyOffsets = [];
163
- const stickyCellHeights = [];
164
- const elementsToStick = [];
165
- for (let rowIndex = 0, stickyOffset = 0; rowIndex < rows.length; rowIndex++) {
166
- if (!states[rowIndex]) {
167
- continue;
168
- }
169
- stickyOffsets[rowIndex] = stickyOffset;
170
- const row = rows[rowIndex];
171
- elementsToStick[rowIndex] = this._isNativeHtmlTable
172
- ? Array.from(row.children)
173
- : [row];
174
- const height = row.getBoundingClientRect().height;
175
- stickyOffset += height;
176
- stickyCellHeights[rowIndex] = height;
177
- }
178
- const borderedRowIndex = states.lastIndexOf(true);
179
- for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {
180
- if (!states[rowIndex]) {
181
- continue;
182
- }
183
- const offset = stickyOffsets[rowIndex];
184
- const isBorderedRowIndex = rowIndex === borderedRowIndex;
185
- for (const element of elementsToStick[rowIndex]) {
186
- this._addStickyStyle(element, position, offset, isBorderedRowIndex);
187
- }
188
- }
189
- if (position === 'top') {
190
- this._positionListener?.stickyHeaderRowsUpdated({
191
- sizes: stickyCellHeights,
192
- offsets: stickyOffsets,
193
- elements: elementsToStick,
194
- });
195
- }
196
- else {
197
- this._positionListener?.stickyFooterRowsUpdated({
198
- sizes: stickyCellHeights,
199
- offsets: stickyOffsets,
200
- elements: elementsToStick,
201
- });
202
- }
203
- });
204
- }
205
- /**
206
- * When using the native table in Safari, sticky footer cells do not stick. The only way to stick
207
- * footer rows is to apply sticky styling to the tfoot container. This should only be done if
208
- * all footer rows are sticky. If not all footer rows are sticky, remove sticky positioning from
209
- * the tfoot element.
210
- */
211
- updateStickyFooterContainer(tableElement, stickyStates) {
212
- if (!this._isNativeHtmlTable) {
213
- return;
214
- }
215
- // Coalesce with other sticky updates (and potentially other changes like column resize).
216
- this._coalescedStyleScheduler.schedule(() => {
217
- const tfoot = tableElement.querySelector('tfoot');
218
- if (tfoot) {
219
- if (stickyStates.some(state => !state)) {
220
- this._removeStickyStyle(tfoot, ['bottom']);
221
- }
222
- else {
223
- this._addStickyStyle(tfoot, 'bottom', 0, false);
224
- }
225
- }
226
- });
227
- }
228
- /**
229
- * Removes the sticky style on the element by removing the sticky cell CSS class, re-evaluating
230
- * the zIndex, removing each of the provided sticky directions, and removing the
231
- * sticky position if there are no more directions.
232
- */
233
- _removeStickyStyle(element, stickyDirections) {
234
- for (const dir of stickyDirections) {
235
- element.style[dir] = '';
236
- element.classList.remove(this._borderCellCss[dir]);
237
- }
238
- // If the element no longer has any more sticky directions, remove sticky positioning and
239
- // the sticky CSS class.
240
- // Short-circuit checking element.style[dir] for stickyDirections as they
241
- // were already removed above.
242
- const hasDirection = STICKY_DIRECTIONS.some(dir => stickyDirections.indexOf(dir) === -1 && element.style[dir]);
243
- if (hasDirection) {
244
- element.style.zIndex = this._getCalculatedZIndex(element);
245
- }
246
- else {
247
- // When not hasDirection, _getCalculatedZIndex will always return ''.
248
- element.style.zIndex = '';
249
- if (this._needsPositionStickyOnElement) {
250
- element.style.position = '';
251
- }
252
- element.classList.remove(this._stickCellCss);
253
- }
254
- }
255
- /**
256
- * Adds the sticky styling to the element by adding the sticky style class, changing position
257
- * to be sticky (and -webkit-sticky), setting the appropriate zIndex, and adding a sticky
258
- * direction and value.
259
- */
260
- _addStickyStyle(element, dir, dirValue, isBorderElement) {
261
- element.classList.add(this._stickCellCss);
262
- if (isBorderElement) {
263
- element.classList.add(this._borderCellCss[dir]);
264
- }
265
- element.style[dir] = `${dirValue}px`;
266
- element.style.zIndex = this._getCalculatedZIndex(element);
267
- if (this._needsPositionStickyOnElement) {
268
- element.style.cssText += 'position: -webkit-sticky; position: sticky; ';
269
- }
270
- }
271
- /**
272
- * Calculate what the z-index should be for the element, depending on what directions (top,
273
- * bottom, left, right) have been set. It should be true that elements with a top direction
274
- * should have the highest index since these are elements like a table header. If any of those
275
- * elements are also sticky in another direction, then they should appear above other elements
276
- * that are only sticky top (e.g. a sticky column on a sticky header). Bottom-sticky elements
277
- * (e.g. footer rows) should then be next in the ordering such that they are below the header
278
- * but above any non-sticky elements. Finally, left/right sticky elements (e.g. sticky columns)
279
- * should minimally increment so that they are above non-sticky elements but below top and bottom
280
- * elements.
281
- */
282
- _getCalculatedZIndex(element) {
283
- const zIndexIncrements = {
284
- top: 100,
285
- bottom: 10,
286
- left: 1,
287
- right: 1,
288
- };
289
- let zIndex = 0;
290
- // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,
291
- // loses the array generic type in the `for of`. But we *also* have to use `Array` because
292
- // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`
293
- for (const dir of STICKY_DIRECTIONS) {
294
- if (element.style[dir]) {
295
- zIndex += zIndexIncrements[dir];
296
- }
297
- }
298
- return zIndex ? `${zIndex}` : '';
299
- }
300
- /** Gets the widths for each cell in the provided row. */
301
- _getCellWidths(row, recalculateCellWidths = true) {
302
- if (!recalculateCellWidths && this._cachedCellWidths.length) {
303
- return this._cachedCellWidths;
304
- }
305
- const cellWidths = [];
306
- const firstRowCells = row.children;
307
- for (let i = 0; i < firstRowCells.length; i++) {
308
- let cell = firstRowCells[i];
309
- cellWidths.push(cell.getBoundingClientRect().width);
310
- }
311
- this._cachedCellWidths = cellWidths;
312
- return cellWidths;
313
- }
314
- /**
315
- * Determines the left and right positions of each sticky column cell, which will be the
316
- * accumulation of all sticky column cell widths to the left and right, respectively.
317
- * Non-sticky cells do not need to have a value set since their positions will not be applied.
318
- */
319
- _getStickyStartColumnPositions(widths, stickyStates) {
320
- const positions = [];
321
- let nextPosition = 0;
322
- for (let i = 0; i < widths.length; i++) {
323
- if (stickyStates[i]) {
324
- positions[i] = nextPosition;
325
- nextPosition += widths[i];
326
- }
327
- }
328
- return positions;
329
- }
330
- /**
331
- * Determines the left and right positions of each sticky column cell, which will be the
332
- * accumulation of all sticky column cell widths to the left and right, respectively.
333
- * Non-sticky cells do not need to have a value set since their positions will not be applied.
334
- */
335
- _getStickyEndColumnPositions(widths, stickyStates) {
336
- const positions = [];
337
- let nextPosition = 0;
338
- for (let i = widths.length; i > 0; i--) {
339
- if (stickyStates[i]) {
340
- positions[i] = nextPosition;
341
- nextPosition += widths[i];
342
- }
343
- }
344
- return positions;
345
- }
346
- }
347
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RpY2t5LXN0eWxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGsvdGFibGUvc3RpY2t5LXN0eWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFZSDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBc0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUV2Rjs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUl2Qjs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0gsWUFDVSxrQkFBMkIsRUFDM0IsYUFBcUIsRUFDdEIsU0FBb0IsRUFDbkIsd0JBQWtELEVBQ2xELGFBQWEsSUFBSSxFQUNSLGdDQUFnQyxJQUFJLEVBQ3BDLGlCQUE2QztRQU50RCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQVM7UUFDM0Isa0JBQWEsR0FBYixhQUFhLENBQVE7UUFDdEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNuQiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELGVBQVUsR0FBVixVQUFVLENBQU87UUFDUixrQ0FBNkIsR0FBN0IsNkJBQTZCLENBQU87UUFDcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUE0QjtRQXhCeEQsc0JBQWlCLEdBQWEsRUFBRSxDQUFDO1FBMEJ2QyxJQUFJLENBQUMsY0FBYyxHQUFHO1lBQ3BCLEtBQUssRUFBRSxHQUFHLGFBQWEsa0JBQWtCO1lBQ3pDLFFBQVEsRUFBRSxHQUFHLGFBQWEscUJBQXFCO1lBQy9DLE1BQU0sRUFBRSxHQUFHLGFBQWEsbUJBQW1CO1lBQzNDLE9BQU8sRUFBRSxHQUFHLGFBQWEsb0JBQW9CO1NBQzlDLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxzQkFBc0IsQ0FBQyxJQUFtQixFQUFFLGdCQUFtQztRQUM3RSxNQUFNLGVBQWUsR0FBa0IsRUFBRSxDQUFD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QjtRQUNwRSxNQUFNLFNBQVMsR0FBYSxFQUFFLENBQUM7UUFDL0IsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBRXJCLEtBQUssSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdkMsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDcEIsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQztnQkFDNUIsWUFBWSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vKipcbiAqIERpcmVjdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCB3aGVuIHNldHRpbmcgc3RpY2t5IHBvc2l0aW9uaW5nLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5pbXBvcnQge0RpcmVjdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHtfQ29hbGVzY2VkU3R5bGVTY2hlZHVsZXJ9IGZyb20gJy4vY29hbGVzY2VkLXN0eWxlLXNjaGVkdWxlcic7XG5pbXBvcnQge1N0aWNreVBvc2l0aW9uaW5nTGlzdGVuZXJ9IGZyb20gJy4vc3RpY2t5LXBvc2l0aW9uLWxpc3RlbmVyJztcblxuZXhwb3J0IHR5cGUgU3RpY2t5RGlyZWN0aW9uID0gJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCc7XG5cbi8qKlxuICogTGlzdCBvZiBhbGwgcG9zc2libGUgZGlyZWN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIGZvciBzdGlja3kgcG9zaXRpb25pbmcuXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbmV4cG9ydCBjb25zdCBTVElDS1lfRElSRUNUSU9OUzogU3RpY2t5RGlyZWN0aW9uW10gPSBbJ3RvcCcsICdib3R0b20nLCAnbGVmdCcsICdyaWdodCddO1xuXG4vKipcbiAqIEFwcGxpZXMgYW5kIHJlbW92ZXMgc3RpY2t5IHBvc2l0aW9uaW5nIHN0eWxlcyB0byB0aGUgYENka1RhYmxlYCByb3dzIGFuZCBjb2x1bW5zIGNlbGxzLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgY2xhc3MgU3RpY2t5U3R5bGVyIHtcbiAgcHJpdmF0ZSBfY2FjaGVkQ2VsbFdpZHRoczogbnVtYmVyW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYm9yZGVyQ2VsbENzczogUmVhZG9ubHk8e1tkIGluIFN0aWNreURpcmVjdGlvbl06IHN0cmluZ30+O1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gX2lzTmF0aXZlSHRtbFRhYmxlIFdoZXRoZXIgdGhlIHN0aWNreSBsb2dpYyBzaG91bGQgYmUgYmFzZWQgb24gYSB0YWJsZVxuICAgKiAgICAgdGhhdCB1c2VzIHRoZSBuYXRpdmUgYDx0YWJsZT5gIGVsZW1lbnQuXG4gICAqIEBwYXJhbSBfc3RpY2tDZWxsQ3NzIFRoZSBDU1MgY2xhc3MgdGhhdCB3aWxsIGJlIGFwcGxpZWQgdG8gZXZlcnkgcm93L2NlbGwgdGhhdCBoYXNcbiAgICogICAgIHN0aWNreSBwb3NpdGlvbmluZyBhcHBsaWVkLlxuICAgKiBAcGFyYW0gZGlyZWN0aW9uIFRoZSBkaXJlY3Rpb25hbGl0eSBjb250ZXh0IG9mIHRoZSB0YWJsZSAobHRyL3J0bCk7IGFmZmVjdHMgY29sdW1uIHBvc2l0aW9uaW5nXG4gICAqICAgICBieSByZXZlcnNpbmcgbGVmdC9yaWdodCBwb3NpdGlvbnMuXG4gICAqIEBwYXJhbSBfaXNCcm93c2VyIFdoZXRoZXIgdGhlIHRhYmxlIGlzIGN1cnJlbnRseSBiZWluZyByZW5kZXJlZCBvbiB0aGUgc2VydmVyIG9yIHRoZSBjbGllbnQuXG4gICAqIEBwYXJhbSBfbmVlZHNQb3NpdGlvblN0aWNreU9uRWxlbWVudCBXaGV0aGVyIHdlIG5lZWQgdG8gc3BlY2lmeSBwb3NpdGlvbjogc3RpY2t5IG9uIGNlbGxzXG4gICAqICAgICB1c2luZyBpbmxpbmUgc3R5bGVzLiBJZiBmYWxzZSwgaXQgaXMgYXNzdW1lZCB0aGF0IHBvc2l0aW9uOiBzdGlja3kgaXMgaW5jbHVkZWQgaW5cbiAgICogICAgIHRoZSBjb21wb25lbnQgc3R5bGVzaGVldCBmb3IgX3N0aWNrQ2VsbENzcy5cbiAgICogQHBhcmFtIF9wb3NpdGlvbkxpc3RlbmVyIEEgbGlzdGVuZXIgdGhhdCBpcyBub3RpZmllZCBvZiBjaGFuZ2VzIHRvIHN0aWNreSByb3dzL2NvbHVtbnNcbiAgICogICAgIGFuZCB0aGVpciBkaW1lbnNpb25zLlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfaXNOYXRpdmVIdG1sVGFibGU6IGJvb2xlYW4sXG4gICAgcHJpdmF0ZSBfc3RpY2tDZWxsQ3NzOiBzdHJpbmcsXG4gICAgcHVibGljIGRpcmVjdGlvbjogRGlyZWN0aW9uLFxuICAgIHByaXZhdGUgX2NvYWxlc2NlZFN0eWxlU2NoZWR1bGVyOiBfQ29hbGVzY2VkU3R5bGVTY2hlZHVsZXIsXG4gICAgcHJpdmF0ZSBfaXNCcm93c2VyID0gdHJ1ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9uZWVkc1Bvc2l0aW9uU3RpY2t5T25FbGVtZW50ID0gdHJ1ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wb3NpdGlvbkxpc3RlbmVyPzogU3RpY2t5UG9zaXRpb25pbmdMaXN0ZW5lcixcbiAgKSB7XG4gICAgdGhpcy5fYm9yZGVyQ2VsbENzcyA9IHtcbiAgICAgICd0b3AnOiBgJHtfc3RpY2tDZWxsQ3NzfS1ib3JkZXItZWxlbS10b3BgLFxuICAgICAgJ2JvdHRvbSc6IGAke19zdGlja0NlbGxDc3N9LWJvcmRlci1lbGVtLWJvdHRvbWAsXG4gICAgICAnbGVmdCc6IGAke19zdGlja0NlbGxDc3N9LWJvcmRlci1lbGVtLWxlZnRgLFxuICAgICAgJ3JpZ2h0JzogYCR7X3N0aWNrQ2VsbENzc30tYm9yZGVyLWVsZW0tcmlnaHRgLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIHRoZSBzdGlja3kgcG9zaXRpb25pbmcgc3R5bGVzIGZyb20gdGhlIHJvdyBhbmQgaXRzIGNlbGxzIGJ5IHJlc2V0dGluZyB0aGUgYHBvc2l0aW9uYFxuICAgKiBzdHlsZSwgc2V0dGluZyB0aGUgekluZGV4IHRvIDAsIGFuZCB1bnNldHRpbmcgZWFjaCBwcm92aWRlZCBzdGlja3kgZGlyZWN0aW9uLlxuICAgKiBAcGFyYW0gcm93cyBUaGUgbGlzdCBvZiByb3dzIHRoYXQgc2hvdWxkIGJlIGNsZWFyZWQgZnJvbSBzdGlja2luZyBpbiB0aGUgcHJvdmlkZWQgZGlyZWN0aW9uc1xuICAgKiBAcGFyYW0gc3RpY2t5RGlyZWN0aW9ucyBUaGUgZGlyZWN0aW9ucyB0aGF0IHNob3VsZCBubyBsb25nZXIgYmUgc2V0IGFzIHN0aWNreSBvbiB0aGUgcm93cy5cbiAgICovXG4gIGNsZWFyU3RpY2t5UG9zaXRpb25pbmcocm93czogSFRNTEVsZW1lbnRbXSwgc3RpY2t5RGlyZWN0aW9uczogU3RpY2t5RGlyZWN0aW9uW10pIHtcbiAgICBjb25zdCBlbGVtZW50c1RvQ2xlYXI6IEhUTUxFbGVtZW50W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHJvdyBvZiByb3dzKSB7XG4gICAgICAvLyBJZiB0aGUgcm93IGlzbid0IGFuIGVsZW1lbnQgKGUuZy4gaWYgaXQncyBhbiBgbmctY29udGFpbmVyYCksXG4gICAgICAvLyBpdCB3b24ndCBoYXZlIGlubGluZSBzdHlsZXMgb3IgYGNoaWxkcmVuYCBzbyB3ZSBza2lwIGl0LlxuICAgICAgaWYgKHJvdy5ub2RlVHlwZSAhPT0gcm93LkVMRU1FTlRfTk9ERSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgZWxlbWVudHNUb0NsZWFyLnB1c2gocm93KTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGVsZW1lbnRzVG9DbGVhci5wdXNoKHJvdy5jaGlsZHJlbltpXSBhcyBIVE1MRWxlbWVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ29hbGVzY2Ugd2l0aCBzdGlja3kgcm93L2NvbHVtbiB1cGRhdGVzIChhbmQgcG90ZW50aWFsbHkgb3RoZXIgY2hhbmdlcyBsaWtlIGNvbHVtbiByZXNpemUpLlxuICAgIHRoaXMuX2NvYWxlc2NlZFN0eWxlU2NoZWR1bGVyLnNjaGVkdWxlKCgpID0+IHtcbiAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBlbGVtZW50c1RvQ2xlYXIpIHtcbiAgICAgICAgdGhpcy5fcmVtb3ZlU3RpY2t5U3R5bGUoZWxlbWVudCwgc3RpY2t5RGlyZWN0aW9ucyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyBzdGlja3kgbGVmdCBhbmQgcmlnaHQgcG9zaXRpb25zIHRvIHRoZSBjZWxscyBvZiBlYWNoIHJvdyBhY2NvcmRpbmcgdG8gdGhlIHN0aWNreVxuICAgKiBzdGF0ZXMgb2YgdGhlIHJlbmRlcmVkIGNvbHVtbiBkZWZpbml0aW9ucy5cbiAgICogQHBhcmFtIHJvd3MgVGhlIHJvd3MgdGhhdCBzaG91bGQgaGF2ZSBpdHMgc2V0IG9mIGNlbGxzIHN0dWNrIGFjY29yZGluZyB0byB0aGUgc3RpY2t5IHN0YXRlcy5cbiAgICogQHBhcmFtIHN0aWNreVN0YXJ0U3RhdGVzIEEgbGlzdCBvZiBib29sZWFuIHN0YXRlcyB3aGVyZSBlYWNoIHN0YXRlIHJlcHJlc2VudHMgd2hldGhlciB0aGUgY2VsbFxuICAgKiAgICAgaW4gdGhpcyBpbmRleCBwb3NpdGlvbiBzaG91bGQgYmUgc3R1Y2sgdG8gdGhlIHN0YXJ0IG9mIHRoZSByb3cuXG4gICAqIEBwYXJhbSBzdGlja3lFbmRTdGF0ZXMgQSBsaXN0IG9mIGJvb2xlYW4gc3RhdGVzIHdoZXJlIGVhY2ggc3RhdGUgcmVwcmVzZW50cyB3aGV0aGVyIHRoZSBjZWxsXG4gICAqICAgICBpbiB0aGlzIGluZGV4IHBvc2l0aW9uIHNob3VsZCBiZSBzdHVjayB0byB0aGUgZW5kIG9mIHRoZSByb3cuXG4gICAqIEBwYXJhbSByZWNhbGN1bGF0ZUNlbGxXaWR0aHMgV2hldGhlciB0aGUgc3RpY2t5IHN0eWxlciBzaG91bGQgcmVjYWxjdWxhdGUgdGhlIHdpZHRoIG9mIGVhY2hcbiAgICogICAgIGNvbHVtbiBjZWxsLiBJZiBgZmFsc2VgIGNhY2hlZCB3aWR0aHMgd2lsbCBiZSB1c2VkIGluc3RlYWQuXG4gICAqL1xuICB1cGRhdGVTdGlja3lDb2x1bW5zKFxuICAgIHJvd3M6IEhUTUxFbGVtZW50W10sXG4gICAgc3RpY2t5U3RhcnRTdGF0ZXM6IGJvb2xlYW5bXSxcbiAgICBzdGlja3lFbmRTdGF0ZXM6IGJvb2xlYW5bXSxcbiAgICByZWNhbGN1bGF0ZUNlbGxXaWR0aHMgPSB0cnVlLFxuICApIHtcbiAgICBpZiAoXG4gICAgICAhcm93cy5sZW5ndGggfHxcbiAgICAgICF0aGlzLl9pc0Jyb3dzZXIgfHxcbiAgICAgICEoc3RpY2t5U3RhcnRTdGF0ZXMuc29tZShzdGF0ZSA9PiBzdGF0ZSkgfHwgc3RpY2t5RW5kU3RhdGVzLnNvbWUoc3RhdGUgPT4gc3RhdGUpKVxuICAgICkge1xuICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9uTGlzdGVuZXIpIHtcbiAgICAgICAgdGhpcy5fcG9zaXRpb25MaXN0ZW5lci5zdGlja3lDb2x1bW5zVXBkYXRlZCh7c2l6ZXM6IFtdfSk7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uTGlzdGVuZXIuc3RpY2t5RW5kQ29sdW1uc1VwZGF0ZWQoe3NpemVzOiBbXX0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ29hbGVzY2Ugd2l0aCBzdGlja3kgcm93IHVwZGF0ZXMgKGFuZCBwb3RlbnRpYWxseSBvdGhlciBjaGFuZ2VzIGxpa2UgY29sdW1uIHJlc2l6ZSkuXG4gICAgdGhpcy5fY29hbGVzY2VkU3R5bGVTY2hlZHVsZXIuc2NoZWR1bGUoKCkgPT4ge1xuICAgICAgY29uc3QgZmlyc3RSb3cgPSByb3dzWzBdO1xuICAgICAgY29uc3QgbnVtQ2VsbHMgPSBmaXJzdFJvdy5jaGlsZHJlbi5sZW5ndGg7XG4gICAgICBjb25zdCBjZWxsV2lkdGhzOiBudW1iZXJbXSA9IHRoaXMuX2dldENlbGxXaWR0aHMoZmlyc3RSb3csIHJlY2FsY3VsYXRlQ2VsbFdpZHRocyk7XG5cbiAgICAgIGNvbnN0IHN0YXJ0UG9zaXRpb25zID0gdGhpcy5fZ2V0U3RpY2t5U3RhcnRDb2x1bW5Qb3NpdGlvbnMoY2VsbFdpZHRocywgc3RpY2t5U3RhcnRTdGF0ZXMpO1xuICAgICAgY29uc3QgZW5kUG9zaXRpb25zID0gdGhpcy5fZ2V0U3RpY2t5RW5kQ29sdW1uUG9zaXRpb25zKGNlbGxXaWR0aHMsIHN0aWNreUVuZFN0YXRlcyk7XG5cbiAgICAgIGNvbnN0IGxhc3RTdGlja3lTdGFydCA9IHN0aWNreVN0YXJ0U3RhdGVzLmxhc3RJbmRleE9mKHRydWUpO1xuICAgICAgY29uc3QgZmlyc3RTdGlja3lFbmQgPSBzdGlja3lFbmRTdGF0ZXMuaW5kZXhPZih0cnVlKTtcblxuICAgICAgY29uc3QgaXNSdGwgPSB0aGlzLmRpcmVjdGlvbiA9PT0gJ3J0bCc7XG4gICAgICBjb25zdCBzdGFydCA9IGlzUnRsID8gJ3JpZ2h0JyA6ICdsZWZ0JztcbiAgICAgIGNvbnN0IGVuZCA9IGlzUnRsID8gJ2xlZnQnIDogJ3JpZ2h0JztcblxuICAgICAgZm9yIChjb25zdCByb3cgb2Ygcm93cykge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUNlbGxzOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBjZWxsID0gcm93LmNoaWxkcmVuW2ldIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgIGlmIChzdGlja3lTdGFydFN0YXRlc1tpXSkge1xuICAgICAgICAgICAgdGhpcy5fYWRkU3RpY2t5U3R5bGUoY2VsbCwgc3RhcnQsIHN0YXJ0UG9zaXRpb25zW2ldLCBpID09PSBsYXN0U3RpY2t5U3RhcnQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzdGlja3lFbmRTdGF0ZXNbaV0pIHtcbiAgICAgICAgICAgIHRoaXMuX2FkZFN0aWNreVN0eWxlKGNlbGwsIGVuZCwgZW5kUG9zaXRpb25zW2ldLCBpID09PSBmaXJzdFN0aWNreUVuZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9wb3NpdGlvbkxpc3RlbmVyKSB7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uTGlzdGVuZXIuc3RpY2t5Q29sdW1uc1VwZGF0ZWQoe1xuICAgICAgICAgIHNpemVzOlxuICAgICAgICAgICAgbGFzdFN0aWNreVN0YXJ0ID09PSAtMVxuICAgICAgICAgICAgICA/IFtdXG4gICAgICAgICAgICAgIDogY2VsbFdpZHRoc1xuICAgICAgICAgICAgICAgICAgLnNsaWNlKDAsIGxhc3RTdGlja3lTdGFydCArIDEpXG4gICAgICAgICAgICAgICAgICAubWFwKCh3aWR0aCwgaW5kZXgpID0+IChzdGlja3lTdGFydFN0YXRlc1tpbmRleF0gPyB3aWR0aCA6IG51bGwpKSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uTGlzdGVuZXIuc3RpY2t5RW5kQ29sdW1uc1VwZGF0ZWQoe1xuICAgICAgICAgIHNpemVzOlxuICAgICAgICAgICAgZmlyc3RTdGlja3lFbmQgPT09IC0xXG4gICAgICAgICAgICAgID8gW11cbiAgICAgICAgICAgICAgOiBjZWxsV2lkdGhzXG4gICAgICAgICAgICAgICAgICAuc2xpY2UoZmlyc3RTdGlja3lFbmQpXG4gICAgICAgICAgICAgICAgICAubWFwKCh3aWR0aCwgaW5kZXgpID0+IChzdGlja3lFbmRTdGF0ZXNbaW5kZXggKyBmaXJzdFN0aWNreUVuZF0gPyB3aWR0aCA6IG51bGwpKVxuICAgICAgICAgICAgICAgICAgLnJldmVyc2UoKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyBzdGlja3kgcG9zaXRpb25pbmcgdG8gdGhlIHJvdydzIGNlbGxzIGlmIHVzaW5nIHRoZSBuYXRpdmUgdGFibGUgbGF5b3V0LCBhbmQgdG8gdGhlXG4gICAqIHJvdyBpdHNlbGYgb3RoZXJ3aXNlLlxuICAgKiBAcGFyYW0gcm93c1RvU3RpY2sgVGhlIGxpc3Qgb2Ygcm93cyB0aGF0IHNob3VsZCBiZSBzdHVjayBhY2NvcmRpbmcgdG8gdGhlaXIgY29ycmVzcG9uZGluZ1xuICAgKiAgICAgc3RpY2t5IHN0YXRlIGFuZCB0byB0aGUgcHJvdmlkZWQgdG9wIG9yIGJvdHRvbSBwb3NpdGlvbi5cbiAgICogQHBhcmFtIHN0aWNreVN0YXRlcyBBIGxpc3Qgb2YgYm9vbGVhbiBzdGF0ZXMgd2hlcmUgZWFjaCBzdGF0ZSByZXByZXNlbnRzIHdoZXRoZXIgdGhlIHJvd1xuICAgKiAgICAgc2hvdWxkIGJlIHN0dWNrIGluIHRoZSBwYXJ0aWN1bGFyIHRvcCBvciBib3R0b20gcG9zaXRpb24uXG4gICAqIEBwYXJhbSBwb3NpdGlvbiBUaGUgcG9zaXRpb24gZGlyZWN0aW9uIGluIHdoaWNoIHRoZSByb3cgc2hvdWxkIGJlIHN0dWNrIGlmIHRoYXQgcm93IHNob3VsZCBiZVxuICAgKiAgICAgc3RpY2t5LlxuICAgKlxuICAgKi9cbiAgc3RpY2tSb3dzKHJvd3NUb1N0aWNrOiBIVE1MRWxlbWVudFtdLCBzdGlja3lTdGF0ZXM6IGJvb2xlYW5bXSwgcG9zaXRpb246ICd0b3AnIHwgJ2JvdHRvbScpIHtcbiAgICAvLyBTaW5jZSB3ZSBjYW4ndCBtZWFzdXJlIHRoZSByb3dzIG9uIHRoZSBzZXJ2ZXIsIHdlIGNhbid0IHN0aWNrIHRoZSByb3dzIHByb3Blcmx5LlxuICAgIGlmICghdGhpcy5faXNCcm93c2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ29hbGVzY2Ugd2l0aCBvdGhlciBzdGlja3kgcm93IHVwZGF0ZXMgKHRvcC9ib3R0b20pLCBzdGlja3kgY29sdW1ucyB1cGRhdGVzXG4gICAgLy8gKGFuZCBwb3RlbnRpYWxseSBvdGhlciBjaGFuZ2VzIGxpa2UgY29sdW1uIHJlc2l6ZSkuXG4gICAgdGhpcy5fY29hbGVzY2VkU3R5bGVTY2hlZHVsZXIuc2NoZWR1bGUoKCkgPT4ge1xuICAgICAgLy8gSWYgcG9zaXRpb25pbmcgdGhlIHJvd3MgdG8gdGhlIGJvdHRvbSwgcmV2ZXJzZSB0aGVpciBvcmRlciB3aGVuIGV2YWx1YXRpbmcgdGhlIHN0aWNreVxuICAgICAgLy8gcG9zaXRpb24gc3VjaCB0aGF0IHRoZSBsYXN0IHJvdyBzdHVjayB3aWxsIGJlIFwiYm90dG9tOiAwcHhcIiBhbmQgc28gb24uIE5vdGUgdGhhdCB0aGVcbiAgICAgIC8vIHN0aWNreSBzdGF0ZXMgbmVlZCB0byBiZSByZXZlcnNlZCBhcyB3ZWxsLlxuICAgICAgY29uc3Qgcm93cyA9IHBvc2l0aW9uID09PSAnYm90dG9tJyA/IHJvd3NUb1N0aWNrLnNsaWNlKCkucmV2ZXJzZSgpIDogcm93c1RvU3RpY2s7XG4gICAgICBjb25zdCBzdGF0ZXMgPSBwb3NpdGlvbiA9PT0gJ2JvdHRvbScgPyBzdGlja3lTdGF0ZXMuc2xpY2UoKS5yZXZlcnNlKCkgOiBzdGlja3lTdGF0ZXM7XG5cbiAgICAgIC8vIE1lYXN1cmUgcm93IGhlaWdodHMgYWxsIGF0IG9uY2UgYmVmb3JlIGFkZGluZyBzdGlja3kgc3R5bGVzIHRvIHJlZHVjZSBsYXlvdXQgdGhyYXNoaW5nLlxuICAgICAgY29uc3Qgc3RpY2t5T2Zmc2V0czogbnVtYmVyW10gPSBbXTtcbiAgICAgIGNvbnN0IHN0aWNreUNlbGxIZWlnaHRzOiAobnVtYmVyIHwgdW5kZWZpbmVkKVtdID0gW107XG4gICAgICBjb25zdCBlbGVtZW50c1RvU3RpY2s6IEhUTUxFbGVtZW50W11bXSA9IFtdO1xuXG4gICAgICBmb3IgKGxldCByb3dJbmRleCA9IDAsIHN0aWNreU9mZnNldCA9IDA7IHJvd0luZGV4IDwgcm93cy5sZW5ndGg7IHJvd0luZGV4KyspIHtcbiAgICAgICAgaWYgKCFzdGF0ZXNbcm93SW5kZXhdKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBzdGlja3lPZmZzZXRzW3Jvd0luZGV4XSA9IHN0aWNreU9mZnNldDtcbiAgICAgICAgY29uc3Qgcm93ID0gcm93c1tyb3dJbmRleF07XG4gICAgICAgIGVsZW1lbnRzVG9TdGlja1tyb3dJbmRleF0gPSB0aGlzLl9pc05hdGl2ZUh0bWxUYWJsZVxuICAgICAgICAgID8gKEFycmF5LmZyb20ocm93LmNoaWxkcmVuKSBhcyBIVE1MRWxlbWVudFtdKVxuICAgICAgICAgIDogW3Jvd107XG5cbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gcm93LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgICAgICAgc3RpY2t5T2Zmc2V0ICs9IGhlaWdodDtcbiAgICAgICAgc3RpY2t5Q2VsbEhlaWdodHNbcm93SW5kZXhdID0gaGVpZ2h0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBib3JkZXJlZFJvd0luZGV4ID0gc3RhdGVzLmxhc3RJbmRleE9mKHRydWUpO1xuXG4gICAgICBmb3IgKGxldCByb3dJbmRleCA9IDA7IHJvd0luZGV4IDwgcm93cy5sZW5ndGg7IHJvd0luZGV4KyspIHtcbiAgICAgICAgaWYgKCFzdGF0ZXNbcm93SW5kZXhdKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvZmZzZXQgPSBzdGlja3lPZmZzZXRzW3Jvd0luZGV4XTtcbiAgICAgICAgY29uc3QgaXNCb3JkZXJlZFJvd0luZGV4ID0gcm93SW5kZXggPT09IGJvcmRlcmVkUm93SW5kZXg7XG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBlbGVtZW50c1RvU3RpY2tbcm93SW5kZXhdKSB7XG4gICAgICAgICAgdGhpcy5fYWRkU3RpY2t5U3R5bGUoZWxlbWVudCwgcG9zaXRpb24sIG9mZnNldCwgaXNCb3JkZXJlZFJvd0luZGV4KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocG9zaXRpb24gPT09ICd0b3AnKSB7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uTGlzdGVuZXI/LnN0aWNreUhlYWRlclJvd3NVcGRhdGVkKHtcbiAgICAgICAgICBzaXplczogc3RpY2t5Q2VsbEhlaWdodHMsXG4gICAgICAgICAgb2Zmc2V0czogc3RpY2t5T2Zmc2V0cyxcbiAgICAgICAgICBlbGVtZW50czogZWxlbWVudHNUb1N0aWNrLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uTGlzdGVuZXI/LnN0aWNreUZvb3RlclJvd3NVcGRhdGVkKHtcbiAgICAgICAgICBzaXplczogc3RpY2t5Q2VsbEhlaWdodHMsXG4gICAgICAgICAgb2Zmc2V0czogc3RpY2t5T2Zmc2V0cyxcbiAgICAgICAgICBlbGVtZW50czogZWxlbWVudHNUb1N0aWNrLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIHVzaW5nIHRoZSBuYXRpdmUgdGFibGUgaW4gU2FmYXJpLCBzdGlja3kgZm9vdGVyIGNlbGxzIGRvIG5vdCBzdGljay4gVGhlIG9ubHkgd2F5IHRvIHN0aWNrXG4gICAqIGZvb3RlciByb3dzIGlzIHRvIGFwcGx5IHN0aWNreSBzdHlsaW5nIHRvIHRoZSB0Zm9vdCBjb250YWluZXIuIFRoaXMgc2hvdWxkIG9ubHkgYmUgZG9uZSBpZlxuICAgKiBhbGwgZm9vdGVyIHJvd3MgYXJlIHN0aWNreS4gSWYgbm90IGFsbCBmb290ZXIgcm93cyBhcmUgc3RpY2t5LCByZW1vdmUgc3RpY2t5IHBvc2l0aW9uaW5nIGZyb21cbiAgICogdGhlIHRmb290IGVsZW1lbnQuXG4gICAqL1xuICB1cGRhdGVTdGlja3lGb290ZXJDb250YWluZXIodGFibGVFbGVtZW50OiBFbGVtZW50LCBzdGlja3lTdGF0ZXM6IGJvb2xlYW5bXSkge1xuICAgIGlmICghdGhpcy5faXNOYXRpdmVIdG1sVGFibGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDb2FsZXNjZSB3aXRoIG90aGVyIHN0aWNreSB1cGRhdGVzIChhbmQgcG90ZW50aWFsbHkgb3RoZXIgY2hhbmdlcyBsaWtlIGNvbHVtbiByZXNpemUpLlxuICAgIHRoaXMuX2NvYWxlc2NlZFN0eWxlU2NoZWR1bGVyLnNjaGVkdWxlKCgpID0+IHtcbiAgICAgIGNvbnN0IHRmb290ID0gdGFibGVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3Rmb290JykhO1xuXG4gICAgICBpZiAodGZvb3QpIHtcbiAgICAgICAgaWYgKHN0aWNreVN0YXRlcy5zb21lKHN0YXRlID0+ICFzdGF0ZSkpIHtcbiAgICAgICAgICB0aGlzLl9yZW1vdmVTdGlja3lTdHlsZSh0Zm9vdCwgWydib3R0b20nXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fYWRkU3RpY2t5U3R5bGUodGZvb3QsICdib3R0b20nLCAwLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBzdGlja3kgc3R5bGUgb24gdGhlIGVsZW1lbnQgYnkgcmVtb3ZpbmcgdGhlIHN0aWNreSBjZWxsIENTUyBjbGFzcywgcmUtZXZhbHVhdGluZ1xuICAgKiB0aGUgekluZGV4LCByZW1vdmluZyBlYWNoIG9mIHRoZSBwcm92aWRlZCBzdGlja3kgZGlyZWN0aW9ucywgYW5kIHJlbW92aW5nIHRoZVxuICAgKiBzdGlja3kgcG9zaXRpb24gaWYgdGhlcmUgYXJlIG5vIG1vcmUgZGlyZWN0aW9ucy5cbiAgICovXG4gIF9yZW1vdmVTdGlja3lTdHlsZShlbGVtZW50OiBIVE1MRWxlbWVudCwgc3RpY2t5RGlyZWN0aW9uczogU3RpY2t5RGlyZWN0aW9uW10pIHtcbiAgICBmb3IgKGNvbnN0IGRpciBvZiBzdGlja3lEaXJlY3Rpb25zKSB7XG4gICAgICBlbGVtZW50LnN0eWxlW2Rpcl0gPSAnJztcbiAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9ib3JkZXJDZWxsQ3NzW2Rpcl0pO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBlbGVtZW50IG5vIGxvbmdlciBoYXMgYW55IG1vcmUgc3RpY2t5IGRpcmVjdGlvbnMsIHJlbW92ZSBzdGlja3kgcG9zaXRpb25pbmcgYW5kXG4gICAgLy8gdGhlIHN0aWNreSBDU1MgY2xhc3MuXG4gICAgLy8gU2hvcnQtY2lyY3VpdCBjaGVja2luZyBlbGVtZW50LnN0eWxlW2Rpcl0gZm9yIHN0aWNreURpcmVjdGlvbnMgYXMgdGhleVxuICAgIC8vIHdlcmUgYWxyZWFkeSByZW1vdmVkIGFib3ZlLlxuICAgIGNvbnN0IGhhc0RpcmVjdGlvbiA9IFNUSUNLWV9ESVJFQ1RJT05TLnNvbWUoXG4gICAgICBkaXIgPT4gc3RpY2t5RGlyZWN0aW9ucy5pbmRleE9mKGRpcikgPT09IC0xICYmIGVsZW1lbnQuc3R5bGVbZGlyXSxcbiAgICApO1xuICAgIGlmIChoYXNEaXJlY3Rpb24pIHtcbiAgICAgIGVsZW1lbnQuc3R5bGUuekluZGV4ID0gdGhpcy5fZ2V0Q2FsY3VsYXRlZFpJbmRleChlbGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gV2hlbiBub3QgaGFzRGlyZWN0aW9uLCBfZ2V0Q2FsY3VsYXRlZFpJbmRleCB3aWxsIGFsd2F5cyByZXR1cm4gJycuXG4gICAgICBlbGVtZW50LnN0eWxlLnpJbmRleCA9ICcnO1xuICAgICAgaWYgKHRoaXMuX25lZWRzUG9zaXRpb25TdGlja3lPbkVsZW1lbnQpIHtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICcnO1xuICAgICAgfVxuICAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX3N0aWNrQ2VsbENzcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgdGhlIHN0aWNreSBzdHlsaW5nIHRvIHRoZSBlbGVtZW50IGJ5IGFkZGluZyB0aGUgc3RpY2t5IHN0eWxlIGNsYXNzLCBjaGFuZ2luZyBwb3NpdGlvblxuICAgKiB0byBiZSBzdGlja3kgKGFuZCAtd2Via2l0LXN0aWNreSksIHNldHRpbmcgdGhlIGFwcHJvcHJpYXRlIHpJbmRleCwgYW5kIGFkZGluZyBhIHN0aWNreVxuICAgKiBkaXJlY3Rpb24gYW5kIHZhbHVlLlxuICAgKi9cbiAgX2FkZFN0aWNreVN0eWxlKFxuICAgIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICAgIGRpcjogU3RpY2t5RGlyZWN0aW9uLFxuICAgIGRpclZhbHVlOiBudW1iZXIsXG4gICAgaXNCb3JkZXJFbGVtZW50OiBib29sZWFuLFxuICApIHtcbiAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5fc3RpY2tDZWxsQ3NzKTtcbiAgICBpZiAoaXNCb3JkZXJFbGVtZW50KSB7XG4gICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5fYm9yZGVyQ2VsbENzc1tkaXJdKTtcbiAgICB9XG4gICAgZWxlbWVudC5zdHlsZVtkaXJdID0gYCR7ZGlyVmFsdWV9cHhgO1xuICAgIGVsZW1lbnQuc3R5bGUuekluZGV4ID0gdGhpcy5fZ2V0Q2FsY3VsYXRlZFpJbmRleChlbGVtZW50KTtcbiAgICBpZiAodGhpcy5fbmVlZHNQb3NpdGlvblN0aWNreU9uRWxlbWVudCkge1xuICAgICAgZWxlbWVudC5zdHlsZS5jc3NUZXh0ICs9ICdwb3NpdGlvbjogLXdlYmtpdC1zdGlja3k7IHBvc2l0aW9uOiBzdGlja3k7ICc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZSB3aGF0IHRoZSB6LWluZGV4IHNob3VsZCBiZSBmb3IgdGhlIGVsZW1lbnQsIGRlcGVuZGluZyBvbiB3aGF0IGRpcmVjdGlvbnMgKHRvcCxcbiAgICogYm90dG9tLCBsZWZ0LCByaWdodCkgaGF2ZSBiZWVuIHNldC4gSXQgc2hvdWxkIGJlIHRydWUgdGhhdCBlbGVtZW50cyB3aXRoIGEgdG9wIGRpcmVjdGlvblxuICAgKiBzaG91bGQgaGF2ZSB0aGUgaGlnaGVzdCBpbmRleCBzaW5jZSB0aGVzZSBhcmUgZWxlbWVudHMgbGlrZSBhIHRhYmxlIGhlYWRlci4gSWYgYW55IG9mIHRob3NlXG4gICAqIGVsZW1lbnRzIGFyZSBhbHNvIHN0aWNreSBpbiBhbm90aGVyIGRpcmVjdGlvbiwgdGhlbiB0aGV5IHNob3VsZCBhcHBlYXIgYWJvdmUgb3RoZXIgZWxlbWVudHNcbiAgICogdGhhdCBhcmUgb25seSBzdGlja3kgdG9wIChlLmcuIGEgc3RpY2t5IGNvbHVtbiBvbiBhIHN0aWNreSBoZWFkZXIpLiBCb3R0b20tc3RpY2t5IGVsZW1lbnRzXG4gICAqIChlLmcuIGZvb3RlciByb3dzKSBzaG91bGQgdGhlbiBiZSBuZXh0IGluIHRoZSBvcmRlcmluZyBzdWNoIHRoYXQgdGhleSBhcmUgYmVsb3cgdGhlIGhlYWRlclxuICAgKiBidXQgYWJvdmUgYW55IG5vbi1zdGlja3kgZWxlbWVudHMuIEZpbmFsbHksIGxlZnQvcmlnaHQgc3RpY2t5IGVsZW1lbnRzIChlLmcuIHN0aWNreSBjb2x1bW5zKVxuICAgKiBzaG91bGQgbWluaW1hbGx5IGluY3JlbWVudCBzbyB0aGF0IHRoZXkgYXJlIGFib3ZlIG5vbi1zdGlja3kgZWxlbWVudHMgYnV0IGJlbG93IHRvcCBhbmQgYm90dG9tXG4gICAqIGVsZW1lbnRzLlxuICAgKi9cbiAgX2dldENhbGN1bGF0ZWRaSW5kZXgoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBzdHJpbmcge1xuICAgIGNvbnN0IHpJbmRleEluY3JlbWVudHMgPSB7XG4gICAgICB0b3A6IDEwMCxcbiAgICAgIGJvdHRvbTogMTAsXG4gICAgICBsZWZ0OiAxLFxuICAgICAgcmlnaHQ6IDEsXG4gICAgfTtcblxuICAgIGxldCB6SW5kZXggPSAwO1xuICAgIC8vIFVzZSBgSXRlcmFibGVgIGluc3RlYWQgb2YgYEFycmF5YCBiZWNhdXNlIFR5cGVTY3JpcHQsIGFzIG9mIDMuNi4zLFxuICAgIC8vIGxvc2VzIHRoZSBhcnJheSBnZW5lcmljIHR5cGUgaW4gdGhlIGBmb3Igb2ZgLiBCdXQgd2UgKmFsc28qIGhhdmUgdG8gdXNlIGBBcnJheWAgYmVjYXVzZVxuICAgIC8vIHR5cGVzY3JpcHQgd29uJ3QgaXRlcmF0ZSBvdmVyIGFuIGBJdGVyYWJsZWAgdW5sZXNzIHlvdSBjb21waWxlIHdpdGggYC0tZG93bmxldmVsSXRlcmF0aW9uYFxuICAgIGZvciAoY29uc3QgZGlyIG9mIFNUSUNLWV9ESVJFQ1RJT05TIGFzIEl0ZXJhYmxlPFN0aWNreURpcmVjdGlvbj4gJiBTdGlja3lEaXJlY3Rpb25bXSkge1xuICAgICAgaWYgKGVsZW1lbnQuc3R5bGVbZGlyXSkge1xuICAgICAgICB6SW5kZXggKz0gekluZGV4SW5jcmVtZW50c1tkaXJdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB6SW5kZXggPyBgJHt6SW5kZXh9YCA6ICcnO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIHdpZHRocyBmb3IgZWFjaCBjZWxsIGluIHRoZSBwcm92aWRlZCByb3cuICovXG4gIF9nZXRDZWxsV2lkdGhzKHJvdzogSFRNTEVsZW1lbnQsIHJlY2FsY3VsYXRlQ2VsbFdpZHRocyA9IHRydWUpOiBudW1iZXJbXSB7XG4gICAgaWYgKCFyZWNhbGN1bGF0ZUNlbGxXaWR0aHMgJiYgdGhpcy5fY2FjaGVkQ2VsbFdpZHRocy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9jYWNoZWRDZWxsV2lkdGhzO1xuICAgIH1cblxuICAgIGNvbnN0IGNlbGxXaWR0aHM6IG51bWJlcltdID0gW107XG4gICAgY29uc3QgZmlyc3RSb3dDZWxscyA9IHJvdy5jaGlsZHJlbjtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpcnN0Um93Q2VsbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBjZWxsOiBIVE1MRWxlbWVudCA9IGZpcnN0Um93Q2VsbHNbaV0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBjZWxsV2lkdGhzLnB1c2goY2VsbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCk7XG4gICAgfVxuXG4gICAgdGhpcy5fY2FjaGVkQ2VsbFdpZHRocyA9IGNlbGxXaWR0aHM7XG4gICAgcmV0dXJuIGNlbGxXaWR0aHM7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB0aGUgbGVmdCBhbmQgcmlnaHQgcG9zaXRpb25zIG9mIGVhY2ggc3RpY2t5IGNvbHVtbiBjZWxsLCB3aGljaCB3aWxsIGJlIHRoZVxuICAgKiBhY2N1bXVsYXRpb24gb2YgYWxsIHN0aWNreSBjb2x1bW4gY2VsbCB3aWR0aHMgdG8gdGhlIGxlZnQgYW5kIHJpZ2h0LCByZXNwZWN0aXZlbHkuXG4gICAqIE5vbi1zdGlja3kgY2VsbHMgZG8gbm90IG5lZWQgdG8gaGF2ZSBhIHZhbHVlIHNldCBzaW5jZSB0aGVpciBwb3NpdGlvbnMgd2lsbCBub3QgYmUgYXBwbGllZC5cbiAgICovXG4gIF9nZXRTdGlja3lTdGFydENvbHVtblBvc2l0aW9ucyh3aWR0aHM6IG51bWJlcltdLCBzdGlja3lTdGF0ZXM6IGJvb2xlYW5bXSk6IG51bWJlcltdIHtcbiAgICBjb25zdCBwb3NpdGlvbnM6IG51bWJlcltdID0gW107XG4gICAgbGV0IG5leHRQb3NpdGlvbiA9IDA7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdpZHRocy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHN0aWNreVN0YXRlc1tpXSkge1xuICAgICAgICBwb3NpdGlvbnNbaV0gPSBuZXh0UG9zaXRpb247XG4gICAgICAgIG5leHRQb3NpdGlvbiArPSB3aWR0aHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvc2l0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHRoZSBsZWZ0IGFuZCByaWdodCBwb3NpdGlvbnMgb2YgZWFjaCBzdGlja3kgY29sdW1uIGNlbGwsIHdoaWNoIHdpbGwgYmUgdGhlXG4gICAqIGFjY3VtdWxhdGlvbiBvZiBhbGwgc3RpY2t5IGNvbHVtbiBjZWxsIHdpZHRocyB0byB0aGUgbGVmdCBhbmQgcmlnaHQsIHJlc3BlY3RpdmVseS5cbiAgICogTm9uLXN0aWNreSBjZWxscyBkbyBub3QgbmVlZCB0byBoYXZlIGEgdmFsdWUgc2V0IHNpbmNlIHRoZWlyIHBvc2l0aW9ucyB3aWxsIG5vdCBiZSBhcHBsaWVkLlxuICAgKi9cbiAgX2dldFN0aWNreUVuZENvbHVtblBvc2l0aW9ucyh3aWR0aHM6IG51bWJlcltdLCBzdGlja3lTdGF0ZXM6IGJvb2xlYW5bXSk6IG51bWJlcltdIHtcbiAgICBjb25zdCBwb3NpdGlvbnM6IG51bWJlcltdID0gW107XG4gICAgbGV0IG5leHRQb3NpdGlvbiA9IDA7XG5cbiAgICBmb3IgKGxldCBpID0gd2lkdGhzLmxlbmd0aDsgaSA+IDA7IGktLSkge1xuICAgICAgaWYgKHN0aWNreVN0YXRlc1tpXSkge1xuICAgICAgICBwb3NpdGlvbnNbaV0gPSBuZXh0UG9zaXRpb247XG4gICAgICAgIG5leHRQb3NpdGlvbiArPSB3aWR0aHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvc2l0aW9ucztcbiAgfVxufVxuIl19
@@ -1,67 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- /**
9
- * Returns an error to be thrown when attempting to find an nonexistent column.
10
- * @param id Id whose lookup failed.
11
- * @docs-private
12
- */
13
- export function getTableUnknownColumnError(id) {
14
- return Error(`Could not find column with id "${id}".`);
15
- }
16
- /**
17
- * Returns an error to be thrown when two column definitions have the same name.
18
- * @docs-private
19
- */
20
- export function getTableDuplicateColumnNameError(name) {
21
- return Error(`Duplicate column definition name provided: "${name}".`);
22
- }
23
- /**
24
- * Returns an error to be thrown when there are multiple rows that are missing a when function.
25
- * @docs-private
26
- */
27
- export function getTableMultipleDefaultRowDefsError() {
28
- return Error(`There can only be one default row without a when predicate function.`);
29
- }
30
- /**
31
- * Returns an error to be thrown when there are no matching row defs for a particular set of data.
32
- * @docs-private
33
- */
34
- export function getTableMissingMatchingRowDefError(data) {
35
- return Error(`Could not find a matching row definition for the` +
36
- `provided row data: ${JSON.stringify(data)}`);
37
- }
38
- /**
39
- * Returns an error to be thrown when there is no row definitions present in the content.
40
- * @docs-private
41
- */
42
- export function getTableMissingRowDefsError() {
43
- return Error('Missing definitions for header, footer, and row; ' +
44
- 'cannot determine which columns should be rendered.');
45
- }
46
- /**
47
- * Returns an error to be thrown when the data source does not match the compatible types.
48
- * @docs-private
49
- */
50
- export function getTableUnknownDataSourceError() {
51
- return Error(`Provided data source did not match an array, Observable, or DataSource`);
52
- }
53
- /**
54
- * Returns an error to be thrown when the text column cannot find a parent table to inject.
55
- * @docs-private
56
- */
57
- export function getTableTextColumnMissingParentTableError() {
58
- return Error(`Text column could not find a parent table for registration.`);
59
- }
60
- /**
61
- * Returns an error to be thrown when a table text column doesn't have a name.
62
- * @docs-private
63
- */
64
- export function getTableTextColumnMissingNameError() {
65
- return Error(`Table text column must have a name.`);
66
- }
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay90YWJsZS90YWJsZS1lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUg7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSwwQkFBMEIsQ0FBQyxFQUFVO0lBQ25ELE9BQU8sS0FBSyxDQUFDLGtDQUFrQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3pELENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZ0NBQWdDLENBQUMsSUFBWTtJQUMzRCxPQUFPLEtBQUssQ0FBQywrQ0FBK0MsSUFBSSxJQUFJLENBQUMsQ0FBQztBQUN4RSxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLG1DQUFtQztJQUNqRCxPQUFPLEtBQUssQ0FBQyxzRUFBc0UsQ0FBQyxDQUFDO0FBQ3ZGLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsa0NBQWtDLENBQUMsSUFBUztJQUMxRCxPQUFPLEtBQUssQ0FDVixrREFBa0Q7UUFDaEQsc0JBQXNCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDL0MsQ0FBQztBQUNKLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsMkJBQTJCO0lBQ3pDLE9BQU8sS0FBSyxDQUNWLG1EQUFtRDtRQUNqRCxvREFBb0QsQ0FDdkQsQ0FBQztBQUNKLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsOEJBQThCO0lBQzVDLE9BQU8sS0FBSyxDQUFDLHdFQUF3RSxDQUFDLENBQUM7QUFDekYsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSx5Q0FBeUM7SUFDdkQsT0FBTyxLQUFLLENBQUMsNkRBQTZELENBQUMsQ0FBQztBQUM5RSxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGtDQUFrQztJQUNoRCxPQUFPLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO0FBQ3RELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLyoqXG4gKiBSZXR1cm5zIGFuIGVycm9yIHRvIGJlIHRocm93biB3aGVuIGF0dGVtcHRpbmcgdG8gZmluZCBhbiBub25leGlzdGVudCBjb2x1bW4uXG4gKiBAcGFyYW0gaWQgSWQgd2hvc2UgbG9va3VwIGZhaWxlZC5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRhYmxlVW5rbm93bkNvbHVtbkVycm9yKGlkOiBzdHJpbmcpIHtcbiAgcmV0dXJuIEVycm9yKGBDb3VsZCBub3QgZmluZCBjb2x1bW4gd2l0aCBpZCBcIiR7aWR9XCIuYCk7XG59XG5cbi8qKlxuICogUmV0dXJucyBhbiBlcnJvciB0byBiZSB0aHJvd24gd2hlbiB0d28gY29sdW1uIGRlZmluaXRpb25zIGhhdmUgdGhlIHNhbWUgbmFtZS5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRhYmxlRHVwbGljYXRlQ29sdW1uTmFtZUVycm9yKG5hbWU6IHN0cmluZykge1xuICByZXR1cm4gRXJyb3IoYER1cGxpY2F0ZSBjb2x1bW4gZGVmaW5pdGlvbiBuYW1lIHByb3ZpZGVkOiBcIiR7bmFtZX1cIi5gKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFuIGVycm9yIHRvIGJlIHRocm93biB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSByb3dzIHRoYXQgYXJlIG1pc3NpbmcgYSB3aGVuIGZ1bmN0aW9uLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFibGVNdWx0aXBsZURlZmF1bHRSb3dEZWZzRXJyb3IoKSB7XG4gIHJldHVybiBFcnJvcihgVGhlcmUgY2FuIG9ubHkgYmUgb25lIGRlZmF1bHQgcm93IHdpdGhvdXQgYSB3aGVuIHByZWRpY2F0ZSBmdW5jdGlvbi5gKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFuIGVycm9yIHRvIGJlIHRocm93biB3aGVuIHRoZXJlIGFyZSBubyBtYXRjaGluZyByb3cgZGVmcyBmb3IgYSBwYXJ0aWN1bGFyIHNldCBvZiBkYXRhLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFibGVNaXNzaW5nTWF0Y2hpbmdSb3dEZWZFcnJvcihkYXRhOiBhbnkpIHtcbiAgcmV0dXJuIEVycm9yKFxuICAgIGBDb3VsZCBub3QgZmluZCBhIG1hdGNoaW5nIHJvdyBkZWZpbml0aW9uIGZvciB0aGVgICtcbiAgICAgIGBwcm92aWRlZCByb3cgZGF0YTogJHtKU09OLnN0cmluZ2lmeShkYXRhKX1gLFxuICApO1xufVxuXG4vKipcbiAqIFJldHVybnMgYW4gZXJyb3IgdG8gYmUgdGhyb3duIHdoZW4gdGhlcmUgaXMgbm8gcm93IGRlZmluaXRpb25zIHByZXNlbnQgaW4gdGhlIGNvbnRlbnQuXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUYWJsZU1pc3NpbmdSb3dEZWZzRXJyb3IoKSB7XG4gIHJldHVybiBFcnJvcihcbiAgICAnTWlzc2luZyBkZWZpbml0aW9ucyBmb3IgaGVhZGVyLCBmb290ZXIsIGFuZCByb3c7ICcgK1xuICAgICAgJ2Nhbm5vdCBkZXRlcm1pbmUgd2hpY2ggY29sdW1ucyBzaG91bGQgYmUgcmVuZGVyZWQuJyxcbiAgKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFuIGVycm9yIHRvIGJlIHRocm93biB3aGVuIHRoZSBkYXRhIHNvdXJjZSBkb2VzIG5vdCBtYXRjaCB0aGUgY29tcGF0aWJsZSB0eXBlcy5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRhYmxlVW5rbm93bkRhdGFTb3VyY2VFcnJvcigpIHtcbiAgcmV0dXJuIEVycm9yKGBQcm92aWRlZCBkYXRhIHNvdXJjZSBkaWQgbm90IG1hdGNoIGFuIGFycmF5LCBPYnNlcnZhYmxlLCBvciBEYXRhU291cmNlYCk7XG59XG5cbi8qKlxuICogUmV0dXJucyBhbiBlcnJvciB0byBiZSB0aHJvd24gd2hlbiB0aGUgdGV4dCBjb2x1bW4gY2Fubm90IGZpbmQgYSBwYXJlbnQgdGFibGUgdG8gaW5qZWN0LlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFibGVUZXh0Q29sdW1uTWlzc2luZ1BhcmVudFRhYmxlRXJyb3IoKSB7XG4gIHJldHVybiBFcnJvcihgVGV4dCBjb2x1bW4gY291bGQgbm90IGZpbmQgYSBwYXJlbnQgdGFibGUgZm9yIHJlZ2lzdHJhdGlvbi5gKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFuIGVycm9yIHRvIGJlIHRocm93biB3aGVuIGEgdGFibGUgdGV4dCBjb2x1bW4gZG9lc24ndCBoYXZlIGEgbmFtZS5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRhYmxlVGV4dENvbHVtbk1pc3NpbmdOYW1lRXJyb3IoKSB7XG4gIHJldHVybiBFcnJvcihgVGFibGUgdGV4dCBjb2x1bW4gbXVzdCBoYXZlIGEgbmFtZS5gKTtcbn1cbiJdfQ==
@@ -1,93 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { NgModule } from '@angular/core';
9
- import { HeaderRowOutlet, DataRowOutlet, CdkTable, CdkRecycleRows, FooterRowOutlet, NoDataRowOutlet, } from './table';
10
- import { CdkCellOutlet, CdkFooterRow, CdkFooterRowDef, CdkHeaderRow, CdkHeaderRowDef, CdkRow, CdkRowDef, CdkNoDataRow, } from './row';
11
- import { CdkColumnDef, CdkHeaderCellDef, CdkHeaderCell, CdkCell, CdkCellDef, CdkFooterCellDef, CdkFooterCell, } from './cell';
12
- import { CdkTextColumn } from './text-column';
13
- import { ScrollingModule } from '@angular/cdk/scrolling';
14
- import * as i0 from "@angular/core";
15
- const EXPORTED_DECLARATIONS = [
16
- CdkTable,
17
- CdkRowDef,
18
- CdkCellDef,
19
- CdkCellOutlet,
20
- CdkHeaderCellDef,
21
- CdkFooterCellDef,
22
- CdkColumnDef,
23
- CdkCell,
24
- CdkRow,
25
- CdkHeaderCell,
26
- CdkFooterCell,
27
- CdkHeaderRow,
28
- CdkHeaderRowDef,
29
- CdkFooterRow,
30
- CdkFooterRowDef,
31
- DataRowOutlet,
32
- HeaderRowOutlet,
33
- FooterRowOutlet,
34
- CdkTextColumn,
35
- CdkNoDataRow,
36
- CdkRecycleRows,
37
- NoDataRowOutlet,
38
- ];
39
- export class CdkTableModule {
40
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: CdkTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
41
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0-next.2", ngImport: i0, type: CdkTableModule, imports: [ScrollingModule, CdkTable,
42
- CdkRowDef,
43
- CdkCellDef,
44
- CdkCellOutlet,
45
- CdkHeaderCellDef,
46
- CdkFooterCellDef,
47
- CdkColumnDef,
48
- CdkCell,
49
- CdkRow,
50
- CdkHeaderCell,
51
- CdkFooterCell,
52
- CdkHeaderRow,
53
- CdkHeaderRowDef,
54
- CdkFooterRow,
55
- CdkFooterRowDef,
56
- DataRowOutlet,
57
- HeaderRowOutlet,
58
- FooterRowOutlet,
59
- CdkTextColumn,
60
- CdkNoDataRow,
61
- CdkRecycleRows,
62
- NoDataRowOutlet], exports: [CdkTable,
63
- CdkRowDef,
64
- CdkCellDef,
65
- CdkCellOutlet,
66
- CdkHeaderCellDef,
67
- CdkFooterCellDef,
68
- CdkColumnDef,
69
- CdkCell,
70
- CdkRow,
71
- CdkHeaderCell,
72
- CdkFooterCell,
73
- CdkHeaderRow,
74
- CdkHeaderRowDef,
75
- CdkFooterRow,
76
- CdkFooterRowDef,
77
- DataRowOutlet,
78
- HeaderRowOutlet,
79
- FooterRowOutlet,
80
- CdkTextColumn,
81
- CdkNoDataRow,
82
- CdkRecycleRows,
83
- NoDataRowOutlet] }); }
84
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: CdkTableModule, imports: [ScrollingModule] }); }
85
- }
86
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: CdkTableModule, decorators: [{
87
- type: NgModule,
88
- args: [{
89
- exports: EXPORTED_DECLARATIONS,
90
- imports: [ScrollingModule, ...EXPORTED_DECLARATIONS],
91
- }]
92
- }] });
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay90YWJsZS90YWJsZS1tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixRQUFRLEVBQ1IsY0FBYyxFQUNkLGVBQWUsRUFDZixlQUFlLEdBQ2hCLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFDTCxhQUFhLEVBQ2IsWUFBWSxFQUNaLGVBQWUsRUFDZixZQUFZLEVBQ1osZUFBZSxFQUNmLE1BQU0sRUFDTixTQUFTLEVBQ1QsWUFBWSxHQUNiLE1BQU0sT0FBTyxDQUFDO0FBQ2YsT0FBTyxFQUNMLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLE9BQU8sRUFDUCxVQUFVLEVBQ1YsZ0JBQWdCLEVBQ2hCLGFBQWEsR0FDZCxNQUFNLFFBQVEsQ0FBQztBQUNoQixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7QUFFdkQsTUFBTSxxQkFBcUIsR0FBRztJQUM1QixRQUFRO0lBQ1IsU0FBUztJQUNULFVBQVU7SUFDVixhQUFhO0lBQ2IsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQixZQUFZO0lBQ1osT0FBTztJQUNQLE1BQU07SUFDTixhQUFhO0lBQ2IsYUFBYTtJQUNiLFlBQVk7SUFDWixlQUFlO0lBQ2YsWUFBWTtJQUNaLGVBQWU7SUFDZixhQUFhO0lBQ2IsZUFBZTtJQUNmLGVBQWU7SUFDZixhQUFhO0lBQ2IsWUFBWTtJQUNaLGNBQWM7SUFDZCxlQUFlO0NBQ2hCLENBQUM7QUFNRixNQUFNLE9BQU8sY0FBYztxSEFBZCxjQUFjO3NIQUFkLGNBQWMsWUFGZixlQUFlLEVBMUJ6QixRQUFRO1lBQ1IsU0FBUztZQUNULFVBQVU7WUFDVixhQUFhO1lBQ2IsZ0JBQWdCO1lBQ2hCLGdCQUFnQjtZQUNoQixZQUFZO1lBQ1osT0FBTztZQUNQLE1BQU07WUFDTixhQUFhO1lBQ2IsYUFBYTtZQUNiLFlBQVk7WUFDWixlQUFlO1lBQ2YsWUFBWTtZQUNaLGVBQWU7WUFDZixhQUFhO1lBQ2IsZUFBZTtZQUNmLGVBQWU7WUFDZixhQUFhO1lBQ2IsWUFBWTtZQUNaLGNBQWM7WUFDZCxlQUFlLGFBckJmLFFBQVE7WUFDUixTQUFTO1lBQ1QsVUFBVTtZQUNWLGFBQWE7WUFDYixnQkFBZ0I7WUFDaEIsZ0JBQWdCO1lBQ2hCLFlBQVk7WUFDWixPQUFPO1lBQ1AsTUFBTTtZQUNOLGFBQWE7WUFDYixhQUFhO1lBQ2IsWUFBWTtZQUNaLGVBQWU7WUFDZixZQUFZO1lBQ1osZUFBZTtZQUNmLGFBQWE7WUFDYixlQUFlO1lBQ2YsZUFBZTtZQUNmLGFBQWE7WUFDYixZQUFZO1lBQ1osY0FBYztZQUNkLGVBQWU7c0hBT0osY0FBYyxZQUZmLGVBQWU7O2tHQUVkLGNBQWM7a0JBSjFCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLHFCQUFxQjtvQkFDOUIsT0FBTyxFQUFFLENBQUMsZUFBZSxFQUFFLEdBQUcscUJBQXFCLENBQUM7aUJBQ3JEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgSGVhZGVyUm93T3V0bGV0LFxuICBEYXRhUm93T3V0bGV0LFxuICBDZGtUYWJsZSxcbiAgQ2RrUmVjeWNsZVJvd3MsXG4gIEZvb3RlclJvd091dGxldCxcbiAgTm9EYXRhUm93T3V0bGV0LFxufSBmcm9tICcuL3RhYmxlJztcbmltcG9ydCB7XG4gIENka0NlbGxPdXRsZXQsXG4gIENka0Zvb3RlclJvdyxcbiAgQ2RrRm9vdGVyUm93RGVmLFxuICBDZGtIZWFkZXJSb3csXG4gIENka0hlYWRlclJvd0RlZixcbiAgQ2RrUm93LFxuICBDZGtSb3dEZWYsXG4gIENka05vRGF0YVJvdyxcbn0gZnJvbSAnLi9yb3cnO1xuaW1wb3J0IHtcbiAgQ2RrQ29sdW1uRGVmLFxuICBDZGtIZWFkZXJDZWxsRGVmLFxuICBDZGtIZWFkZXJDZWxsLFxuICBDZGtDZWxsLFxuICBDZGtDZWxsRGVmLFxuICBDZGtGb290ZXJDZWxsRGVmLFxuICBDZGtGb290ZXJDZWxsLFxufSBmcm9tICcuL2NlbGwnO1xuaW1wb3J0IHtDZGtUZXh0Q29sdW1ufSBmcm9tICcuL3RleHQtY29sdW1uJztcbmltcG9ydCB7U2Nyb2xsaW5nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcblxuY29uc3QgRVhQT1JURURfREVDTEFSQVRJT05TID0gW1xuICBDZGtUYWJsZSxcbiAgQ2RrUm93RGVmLFxuICBDZGtDZWxsRGVmLFxuICBDZGtDZWxsT3V0bGV0LFxuICBDZGtIZWFkZXJDZWxsRGVmLFxuICBDZGtGb290ZXJDZWxsRGVmLFxuICBDZGtDb2x1bW5EZWYsXG4gIENka0NlbGwsXG4gIENka1JvdyxcbiAgQ2RrSGVhZGVyQ2VsbCxcbiAgQ2RrRm9vdGVyQ2VsbCxcbiAgQ2RrSGVhZGVyUm93LFxuICBDZGtIZWFkZXJSb3dEZWYsXG4gIENka0Zvb3RlclJvdyxcbiAgQ2RrRm9vdGVyUm93RGVmLFxuICBEYXRhUm93T3V0bGV0LFxuICBIZWFkZXJSb3dPdXRsZXQsXG4gIEZvb3RlclJvd091dGxldCxcbiAgQ2RrVGV4dENvbHVtbixcbiAgQ2RrTm9EYXRhUm93LFxuICBDZGtSZWN5Y2xlUm93cyxcbiAgTm9EYXRhUm93T3V0bGV0LFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgZXhwb3J0czogRVhQT1JURURfREVDTEFSQVRJT05TLFxuICBpbXBvcnRzOiBbU2Nyb2xsaW5nTW9kdWxlLCAuLi5FWFBPUlRFRF9ERUNMQVJBVElPTlNdLFxufSlcbmV4cG9ydCBjbGFzcyBDZGtUYWJsZU1vZHVsZSB7fVxuIl19