@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,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGVfcHVibGljX2luZGV4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay90YWJsZS90YWJsZV9wdWJsaWNfaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -1,154 +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 { ChangeDetectionStrategy, Component, Inject, Input, Optional, ViewChild, ViewEncapsulation, } from '@angular/core';
9
- import { CdkCellDef, CdkColumnDef, CdkHeaderCellDef, CdkHeaderCell, CdkCell } from './cell';
10
- import { CdkTable } from './table';
11
- import { getTableTextColumnMissingParentTableError, getTableTextColumnMissingNameError, } from './table-errors';
12
- import { TEXT_COLUMN_OPTIONS } from './tokens';
13
- import * as i0 from "@angular/core";
14
- import * as i1 from "./table";
15
- /**
16
- * Column that simply shows text content for the header and row cells. Assumes that the table
17
- * is using the native table implementation (`<table>`).
18
- *
19
- * By default, the name of this column will be the header text and data property accessor.
20
- * The header text can be overridden with the `headerText` input. Cell values can be overridden with
21
- * the `dataAccessor` input. Change the text justification to the start or end using the `justify`
22
- * input.
23
- */
24
- export class CdkTextColumn {
25
- /** Column name that should be used to reference this column. */
26
- get name() {
27
- return this._name;
28
- }
29
- set name(name) {
30
- this._name = name;
31
- // With Ivy, inputs can be initialized before static query results are
32
- // available. In that case, we defer the synchronization until "ngOnInit" fires.
33
- this._syncColumnDefName();
34
- }
35
- constructor(
36
- // `CdkTextColumn` is always requiring a table, but we just assert it manually
37
- // for better error reporting.
38
- // tslint:disable-next-line: lightweight-tokens
39
- _table, _options) {
40
- this._table = _table;
41
- this._options = _options;
42
- /** Alignment of the cell values. */
43
- this.justify = 'start';
44
- this._options = _options || {};
45
- }
46
- ngOnInit() {
47
- this._syncColumnDefName();
48
- if (this.headerText === undefined) {
49
- this.headerText = this._createDefaultHeaderText();
50
- }
51
- if (!this.dataAccessor) {
52
- this.dataAccessor =
53
- this._options.defaultDataAccessor || ((data, name) => data[name]);
54
- }
55
- if (this._table) {
56
- // Provide the cell and headerCell directly to the table with the static `ViewChild` query,
57
- // since the columnDef will not pick up its content by the time the table finishes checking
58
- // its content and initializing the rows.
59
- this.columnDef.cell = this.cell;
60
- this.columnDef.headerCell = this.headerCell;
61
- this._table.addColumnDef(this.columnDef);
62
- }
63
- else if (typeof ngDevMode === 'undefined' || ngDevMode) {
64
- throw getTableTextColumnMissingParentTableError();
65
- }
66
- }
67
- ngOnDestroy() {
68
- if (this._table) {
69
- this._table.removeColumnDef(this.columnDef);
70
- }
71
- }
72
- /**
73
- * Creates a default header text. Use the options' header text transformation function if one
74
- * has been provided. Otherwise simply capitalize the column name.
75
- */
76
- _createDefaultHeaderText() {
77
- const name = this.name;
78
- if (!name && (typeof ngDevMode === 'undefined' || ngDevMode)) {
79
- throw getTableTextColumnMissingNameError();
80
- }
81
- if (this._options && this._options.defaultHeaderTextTransform) {
82
- return this._options.defaultHeaderTextTransform(name);
83
- }
84
- return name[0].toUpperCase() + name.slice(1);
85
- }
86
- /** Synchronizes the column definition name with the text column name. */
87
- _syncColumnDefName() {
88
- if (this.columnDef) {
89
- this.columnDef.name = this.name;
90
- }
91
- }
92
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: CdkTextColumn, deps: [{ token: i1.CdkTable, optional: true }, { token: TEXT_COLUMN_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
93
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0-next.2", type: CdkTextColumn, isStandalone: true, selector: "cdk-text-column", inputs: { name: "name", headerText: "headerText", dataAccessor: "dataAccessor", justify: "justify" }, viewQueries: [{ propertyName: "columnDef", first: true, predicate: CdkColumnDef, descendants: true, static: true }, { propertyName: "cell", first: true, predicate: CdkCellDef, descendants: true, static: true }, { propertyName: "headerCell", first: true, predicate: CdkHeaderCellDef, descendants: true, static: true }], ngImport: i0, template: `
94
- <ng-container cdkColumnDef>
95
- <th cdk-header-cell *cdkHeaderCellDef [style.text-align]="justify">
96
- {{headerText}}
97
- </th>
98
- <td cdk-cell *cdkCellDef="let data" [style.text-align]="justify">
99
- {{dataAccessor(data, name)}}
100
- </td>
101
- </ng-container>
102
- `, isInline: true, dependencies: [{ kind: "directive", type: CdkColumnDef, selector: "[cdkColumnDef]", inputs: ["cdkColumnDef", "sticky", "stickyEnd"] }, { kind: "directive", type: CdkHeaderCellDef, selector: "[cdkHeaderCellDef]" }, { kind: "directive", type: CdkHeaderCell, selector: "cdk-header-cell, th[cdk-header-cell]" }, { kind: "directive", type: CdkCellDef, selector: "[cdkCellDef]" }, { kind: "directive", type: CdkCell, selector: "cdk-cell, td[cdk-cell]" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
103
- }
104
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: CdkTextColumn, decorators: [{
105
- type: Component,
106
- args: [{
107
- selector: 'cdk-text-column',
108
- template: `
109
- <ng-container cdkColumnDef>
110
- <th cdk-header-cell *cdkHeaderCellDef [style.text-align]="justify">
111
- {{headerText}}
112
- </th>
113
- <td cdk-cell *cdkCellDef="let data" [style.text-align]="justify">
114
- {{dataAccessor(data, name)}}
115
- </td>
116
- </ng-container>
117
- `,
118
- encapsulation: ViewEncapsulation.None,
119
- // Change detection is intentionally not set to OnPush. This component's template will be provided
120
- // to the table to be inserted into its view. This is problematic when change detection runs since
121
- // the bindings in this template will be evaluated _after_ the table's view is evaluated, which
122
- // mean's the template in the table's view will not have the updated value (and in fact will cause
123
- // an ExpressionChangedAfterItHasBeenCheckedError).
124
- // tslint:disable-next-line:validate-decorators
125
- changeDetection: ChangeDetectionStrategy.Default,
126
- standalone: true,
127
- imports: [CdkColumnDef, CdkHeaderCellDef, CdkHeaderCell, CdkCellDef, CdkCell],
128
- }]
129
- }], ctorParameters: () => [{ type: i1.CdkTable, decorators: [{
130
- type: Optional
131
- }] }, { type: undefined, decorators: [{
132
- type: Optional
133
- }, {
134
- type: Inject,
135
- args: [TEXT_COLUMN_OPTIONS]
136
- }] }], propDecorators: { name: [{
137
- type: Input
138
- }], headerText: [{
139
- type: Input
140
- }], dataAccessor: [{
141
- type: Input
142
- }], justify: [{
143
- type: Input
144
- }], columnDef: [{
145
- type: ViewChild,
146
- args: [CdkColumnDef, { static: true }]
147
- }], cell: [{
148
- type: ViewChild,
149
- args: [CdkCellDef, { static: true }]
150
- }], headerCell: [{
151
- type: ViewChild,
152
- args: [CdkHeaderCellDef, { static: true }]
153
- }] } });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1jb2x1bW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL3RhYmxlL3RleHQtY29sdW1uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUMxRixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQ2pDLE9BQU8sRUFDTCx5Q0FBeUMsRUFDekMsa0NBQWtDLEdBQ25DLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLG1CQUFtQixFQUFvQixNQUFNLFVBQVUsQ0FBQzs7O0FBRWhFOzs7Ozs7OztHQVFHO0FBd0JILE1BQU0sT0FBTyxhQUFhO0lBQ3hCLGdFQUFnRTtJQUNoRSxJQUNJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLElBQVk7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFFbEIsc0VBQXNFO1FBQ3RFLGdGQUFnRjtRQUNoRixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBeUNEO0lBQ0UsOEVBQThFO0lBQzlFLDhCQUE4QjtJQUM5QiwrQ0FBK0M7SUFDM0IsTUFBbUIsRUFDVSxRQUE4QjtRQUQzRCxXQUFNLEdBQU4sTUFBTSxDQUFhO1FBQ1UsYUFBUSxHQUFSLFFBQVEsQ0FBc0I7UUE3QmpGLG9DQUFvQztRQUMzQixZQUFPLEdBQStCLE9BQU8sQ0FBQztRQThCckQsSUFBSSxD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b0JBQ2hELFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUM7aUJBQzlFOzswQkEwREksUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxtQkFBbUI7eUNBdkRyQyxJQUFJO3NCQURQLEtBQUs7Z0JBaUJHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBUUcsWUFBWTtzQkFBcEIsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR21DLFNBQVM7c0JBQWpELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFTQSxJQUFJO3NCQUExQyxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBU1EsVUFBVTtzQkFBdEQsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q2RrQ2VsbERlZiwgQ2RrQ29sdW1uRGVmLCBDZGtIZWFkZXJDZWxsRGVmLCBDZGtIZWFkZXJDZWxsLCBDZGtDZWxsfSBmcm9tICcuL2NlbGwnO1xuaW1wb3J0IHtDZGtUYWJsZX0gZnJvbSAnLi90YWJsZSc7XG5pbXBvcnQge1xuICBnZXRUYWJsZVRleHRDb2x1bW5NaXNzaW5nUGFyZW50VGFibGVFcnJvcixcbiAgZ2V0VGFibGVUZXh0Q29sdW1uTWlzc2luZ05hbWVFcnJvcixcbn0gZnJvbSAnLi90YWJsZS1lcnJvcnMnO1xuaW1wb3J0IHtURVhUX0NPTFVNTl9PUFRJT05TLCBUZXh0Q29sdW1uT3B0aW9uc30gZnJvbSAnLi90b2tlbnMnO1xuXG4vKipcbiAqIENvbHVtbiB0aGF0IHNpbXBseSBzaG93cyB0ZXh0IGNvbnRlbnQgZm9yIHRoZSBoZWFkZXIgYW5kIHJvdyBjZWxscy4gQXNzdW1lcyB0aGF0IHRoZSB0YWJsZVxuICogaXMgdXNpbmcgdGhlIG5hdGl2ZSB0YWJsZSBpbXBsZW1lbnRhdGlvbiAoYDx0YWJsZT5gKS5cbiAqXG4gKiBCeSBkZWZhdWx0LCB0aGUgbmFtZSBvZiB0aGlzIGNvbHVtbiB3aWxsIGJlIHRoZSBoZWFkZXIgdGV4dCBhbmQgZGF0YSBwcm9wZXJ0eSBhY2Nlc3Nvci5cbiAqIFRoZSBoZWFkZXIgdGV4dCBjYW4gYmUgb3ZlcnJpZGRlbiB3aXRoIHRoZSBgaGVhZGVyVGV4dGAgaW5wdXQuIENlbGwgdmFsdWVzIGNhbiBiZSBvdmVycmlkZGVuIHdpdGhcbiAqIHRoZSBgZGF0YUFjY2Vzc29yYCBpbnB1dC4gQ2hhbmdlIHRoZSB0ZXh0IGp1c3RpZmljYXRpb24gdG8gdGhlIHN0YXJ0IG9yIGVuZCB1c2luZyB0aGUgYGp1c3RpZnlgXG4gKiBpbnB1dC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2RrLXRleHQtY29sdW1uJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGFpbmVyIGNka0NvbHVtbkRlZj5cbiAgICAgIDx0aCBjZGstaGVhZGVyLWNlbGwgKmNka0hlYWRlckNlbGxEZWYgW3N0eWxlLnRleHQtYWxpZ25dPVwianVzdGlmeVwiPlxuICAgICAgICB7e2hlYWRlclRleHR9fVxuICAgICAgPC90aD5cbiAgICAgIDx0ZCBjZGstY2VsbCAqY2RrQ2VsbERlZj1cImxldCBkYXRhXCIgW3N0eWxlLnRleHQtYWxpZ25dPVwianVzdGlmeVwiPlxuICAgICAgICB7e2RhdGFBY2Nlc3NvcihkYXRhLCBuYW1lKX19XG4gICAgICA8L3RkPlxuICAgIDwvbmctY29udGFpbmVyPlxuICBgLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAvLyBDaGFuZ2UgZGV0ZWN0aW9uIGlzIGludGVudGlvbmFsbHkgbm90IHNldCB0byBPblB1c2guIFRoaXMgY29tcG9uZW50J3MgdGVtcGxhdGUgd2lsbCBiZSBwcm92aWRlZFxuICAvLyB0byB0aGUgdGFibGUgdG8gYmUgaW5zZXJ0ZWQgaW50byBpdHMgdmlldy4gVGhpcyBpcyBwcm9ibGVtYXRpYyB3aGVuIGNoYW5nZSBkZXRlY3Rpb24gcnVucyBzaW5jZVxuICAvLyB0aGUgYmluZGluZ3MgaW4gdGhpcyB0ZW1wbGF0ZSB3aWxsIGJlIGV2YWx1YXRlZCBfYWZ0ZXJfIHRoZSB0YWJsZSdzIHZpZXcgaXMgZXZhbHVhdGVkLCB3aGljaFxuICAvLyBtZWFuJ3MgdGhlIHRlbXBsYXRlIGluIHRoZSB0YWJsZSdzIHZpZXcgd2lsbCBub3QgaGF2ZSB0aGUgdXBkYXRlZCB2YWx1ZSAoYW5kIGluIGZhY3Qgd2lsbCBjYXVzZVxuICAvLyBhbiBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yKS5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhbGlkYXRlLWRlY29yYXRvcnNcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ2RrQ29sdW1uRGVmLCBDZGtIZWFkZXJDZWxsRGVmLCBDZGtIZWFkZXJDZWxsLCBDZGtDZWxsRGVmLCBDZGtDZWxsXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2RrVGV4dENvbHVtbjxUPiBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgLyoqIENvbHVtbiBuYW1lIHRoYXQgc2hvdWxkIGJlIHVzZWQgdG8gcmVmZXJlbmNlIHRoaXMgY29sdW1uLiAqL1xuICBASW5wdXQoKVxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICB9XG4gIHNldCBuYW1lKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuX25hbWUgPSBuYW1lO1xuXG4gICAgLy8gV2l0aCBJdnksIGlucHV0cyBjYW4gYmUgaW5pdGlhbGl6ZWQgYmVmb3JlIHN0YXRpYyBxdWVyeSByZXN1bHRzIGFyZVxuICAgIC8vIGF2YWlsYWJsZS4gSW4gdGhhdCBjYXNlLCB3ZSBkZWZlciB0aGUgc3luY2hyb25pemF0aW9uIHVudGlsIFwibmdPbkluaXRcIiBmaXJlcy5cbiAgICB0aGlzLl9zeW5jQ29sdW1uRGVmTmFtZSgpO1xuICB9XG4gIF9uYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRleHQgbGFiZWwgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIGNvbHVtbiBoZWFkZXIuIElmIHRoaXMgcHJvcGVydHkgaXMgbm90XG4gICAqIHNldCwgdGhlIGhlYWRlciB0ZXh0IHdpbGwgZGVmYXVsdCB0byB0aGUgY29sdW1uIG5hbWUgd2l0aCBpdHMgZmlyc3QgbGV0dGVyIGNhcGl0YWxpemVkLlxuICAgKi9cbiAgQElucHV0KCkgaGVhZGVyVGV4dDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBY2Nlc3NvciBmdW5jdGlvbiB0byByZXRyaWV2ZSB0aGUgZGF0YSByZW5kZXJlZCBmb3IgZWFjaCBjZWxsLiBJZiB0aGlzXG4gICAqIHByb3BlcnR5IGlzIG5vdCBzZXQsIHRoZSBkYXRhIGNlbGxzIHdpbGwgcmVuZGVyIHRoZSB2YWx1ZSBmb3VuZCBpbiB0aGUgZGF0YSdzIHByb3BlcnR5IG1hdGNoaW5nXG4gICAqIHRoZSBjb2x1bW4ncyBuYW1lLiBGb3IgZXhhbXBsZSwgaWYgdGhlIGNvbHVtbiBpcyBuYW1lZCBgaWRgLCB0aGVuIHRoZSByZW5kZXJlZCB2YWx1ZSB3aWxsIGJlXG4gICAqIHZhbHVlIGRlZmluZWQgYnkgdGhlIGRhdGEncyBgaWRgIHByb3BlcnR5LlxuICAgKi9cbiAgQElucHV0KCkgZGF0YUFjY2Vzc29yOiAoZGF0YTogVCwgbmFtZTogc3RyaW5nKSA9PiBzdHJpbmc7XG5cbiAgLyoqIEFsaWdubWVudCBvZiB0aGUgY2VsbCB2YWx1ZXMuICovXG4gIEBJbnB1dCgpIGp1c3RpZnk6ICdzdGFydCcgfCAnZW5kJyB8ICdjZW50ZXInID0gJ3N0YXJ0JztcblxuICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICBAVmlld0NoaWxkKENka0NvbHVtbkRlZiwge3N0YXRpYzogdHJ1ZX0pIGNvbHVtbkRlZjogQ2RrQ29sdW1uRGVmO1xuXG4gIC8qKlxuICAgKiBUaGUgY29sdW1uIGNlbGwgaXMgcHJvdmlkZWQgdG8gdGhlIGNvbHVtbiBkdXJpbmcgYG5nT25Jbml0YCB3aXRoIGEgc3RhdGljIHF1ZXJ5LlxuICAgKiBOb3JtYWxseSwgdGhpcyB3aWxsIGJlIHJldHJpZXZlZCBieSB0aGUgY29sdW1uIHVzaW5nIGBDb250ZW50Q2hpbGRgLCBidXQgdGhhdCBhc3N1bWVzIHRoZVxuICAgKiBjb2x1bW4gZGVmaW5pdGlvbiB3YXMgcHJvdmlkZWQgaW4gdGhlIHNhbWUgdmlldyBhcyB0aGUgdGFibGUsIHdoaWNoIGlzIG5vdCB0aGUgY2FzZSB3aXRoIHRoaXNcbiAgICogY29tcG9uZW50LlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBAVmlld0NoaWxkKENka0NlbGxEZWYsIHtzdGF0aWM6IHRydWV9KSBjZWxsOiBDZGtDZWxsRGVmO1xuXG4gIC8qKlxuICAgKiBUaGUgY29sdW1uIGhlYWRlckNlbGwgaXMgcHJvdmlkZWQgdG8gdGhlIGNvbHVtbiBkdXJpbmcgYG5nT25Jbml0YCB3aXRoIGEgc3RhdGljIHF1ZXJ5LlxuICAgKiBOb3JtYWxseSwgdGhpcyB3aWxsIGJlIHJldHJpZXZlZCBieSB0aGUgY29sdW1uIHVzaW5nIGBDb250ZW50Q2hpbGRgLCBidXQgdGhhdCBhc3N1bWVzIHRoZVxuICAgKiBjb2x1bW4gZGVmaW5pdGlvbiB3YXMgcHJvdmlkZWQgaW4gdGhlIHNhbWUgdmlldyBhcyB0aGUgdGFibGUsIHdoaWNoIGlzIG5vdCB0aGUgY2FzZSB3aXRoIHRoaXNcbiAgICogY29tcG9uZW50LlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBAVmlld0NoaWxkKENka0hlYWRlckNlbGxEZWYsIHtzdGF0aWM6IHRydWV9KSBoZWFkZXJDZWxsOiBDZGtIZWFkZXJDZWxsRGVmO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8vIGBDZGtUZXh0Q29sdW1uYCBpcyBhbHdheXMgcmVxdWlyaW5nIGEgdGFibGUsIGJ1dCB3ZSBqdXN0IGFzc2VydCBpdCBtYW51YWxseVxuICAgIC8vIGZvciBiZXR0ZXIgZXJyb3IgcmVwb3J0aW5nLlxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbGlnaHR3ZWlnaHQtdG9rZW5zXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfdGFibGU6IENka1RhYmxlPFQ+LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVEVYVF9DT0xVTU5fT1BUSU9OUykgcHJpdmF0ZSBfb3B0aW9uczogVGV4dENvbHVtbk9wdGlvbnM8VD4sXG4gICkge1xuICAgIHRoaXMuX29wdGlvbnMgPSBfb3B0aW9ucyB8fCB7fTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX3N5bmNDb2x1bW5EZWZOYW1lKCk7XG5cbiAgICBpZiAodGhpcy5oZWFkZXJUZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuaGVhZGVyVGV4dCA9IHRoaXMuX2NyZWF0ZURlZmF1bHRIZWFkZXJUZXh0KCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmRhdGFBY2Nlc3Nvcikge1xuICAgICAgdGhpcy5kYXRhQWNjZXNzb3IgPVxuICAgICAgICB0aGlzLl9vcHRpb25zLmRlZmF1bHREYXRhQWNjZXNzb3IgfHwgKChkYXRhOiBULCBuYW1lOiBzdHJpbmcpID0+IChkYXRhIGFzIGFueSlbbmFtZV0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl90YWJsZSkge1xuICAgICAgLy8gUHJvdmlkZSB0aGUgY2VsbCBhbmQgaGVhZGVyQ2VsbCBkaXJlY3RseSB0byB0aGUgdGFibGUgd2l0aCB0aGUgc3RhdGljIGBWaWV3Q2hpbGRgIHF1ZXJ5LFxuICAgICAgLy8gc2luY2UgdGhlIGNvbHVtbkRlZiB3aWxsIG5vdCBwaWNrIHVwIGl0cyBjb250ZW50IGJ5IHRoZSB0aW1lIHRoZSB0YWJsZSBmaW5pc2hlcyBjaGVja2luZ1xuICAgICAgLy8gaXRzIGNvbnRlbnQgYW5kIGluaXRpYWxpemluZyB0aGUgcm93cy5cbiAgICAgIHRoaXMuY29sdW1uRGVmLmNlbGwgPSB0aGlzLmNlbGw7XG4gICAgICB0aGlzLmNvbHVtbkRlZi5oZWFkZXJDZWxsID0gdGhpcy5oZWFkZXJDZWxsO1xuICAgICAgdGhpcy5fdGFibGUuYWRkQ29sdW1uRGVmKHRoaXMuY29sdW1uRGVmKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkge1xuICAgICAgdGhyb3cgZ2V0VGFibGVUZXh0Q29sdW1uTWlzc2luZ1BhcmVudFRhYmxlRXJyb3IoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5fdGFibGUpIHtcbiAgICAgIHRoaXMuX3RhYmxlLnJlbW92ZUNvbHVtbkRlZih0aGlzLmNvbHVtbkRlZik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBkZWZhdWx0IGhlYWRlciB0ZXh0LiBVc2UgdGhlIG9wdGlvbnMnIGhlYWRlciB0ZXh0IHRyYW5zZm9ybWF0aW9uIGZ1bmN0aW9uIGlmIG9uZVxuICAgKiBoYXMgYmVlbiBwcm92aWRlZC4gT3RoZXJ3aXNlIHNpbXBseSBjYXBpdGFsaXplIHRoZSBjb2x1bW4gbmFtZS5cbiAgICovXG4gIF9jcmVhdGVEZWZhdWx0SGVhZGVyVGV4dCgpIHtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5uYW1lO1xuXG4gICAgaWYgKCFuYW1lICYmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpKSB7XG4gICAgICB0aHJvdyBnZXRUYWJsZVRleHRDb2x1bW5NaXNzaW5nTmFtZUVycm9yKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX29wdGlvbnMgJiYgdGhpcy5fb3B0aW9ucy5kZWZhdWx0SGVhZGVyVGV4dFRyYW5zZm9ybSkge1xuICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnMuZGVmYXVsdEhlYWRlclRleHRUcmFuc2Zvcm0obmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5hbWVbMF0udG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoMSk7XG4gIH1cblxuICAvKiogU3luY2hyb25pemVzIHRoZSBjb2x1bW4gZGVmaW5pdGlvbiBuYW1lIHdpdGggdGhlIHRleHQgY29sdW1uIG5hbWUuICovXG4gIHByaXZhdGUgX3N5bmNDb2x1bW5EZWZOYW1lKCkge1xuICAgIGlmICh0aGlzLmNvbHVtbkRlZikge1xuICAgICAgdGhpcy5jb2x1bW5EZWYubmFtZSA9IHRoaXMubmFtZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,16 +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 { InjectionToken } from '@angular/core';
9
- /**
10
- * Used to provide a table to some of the sub-components without causing a circular dependency.
11
- * @docs-private
12
- */
13
- export const CDK_TABLE = new InjectionToken('CDK_TABLE');
14
- /** Injection token that can be used to specify the text column options. */
15
- export const TEXT_COLUMN_OPTIONS = new InjectionToken('text-column-options');
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay90YWJsZS90b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU3Qzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxjQUFjLENBQU0sV0FBVyxDQUFDLENBQUM7QUFjOUQsMkVBQTJFO0FBQzNFLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUNuRCxxQkFBcUIsQ0FDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0luamVjdGlvblRva2VufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBVc2VkIHRvIHByb3ZpZGUgYSB0YWJsZSB0byBzb21lIG9mIHRoZSBzdWItY29tcG9uZW50cyB3aXRob3V0IGNhdXNpbmcgYSBjaXJjdWxhciBkZXBlbmRlbmN5LlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgY29uc3QgQ0RLX1RBQkxFID0gbmV3IEluamVjdGlvblRva2VuPGFueT4oJ0NES19UQUJMRScpO1xuXG4vKiogQ29uZmlndXJhYmxlIG9wdGlvbnMgZm9yIGBDZGtUZXh0Q29sdW1uYC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dENvbHVtbk9wdGlvbnM8VD4ge1xuICAvKipcbiAgICogRGVmYXVsdCBmdW5jdGlvbiB0aGF0IHByb3ZpZGVzIHRoZSBoZWFkZXIgdGV4dCBiYXNlZCBvbiB0aGUgY29sdW1uIG5hbWUgaWYgYSBoZWFkZXJcbiAgICogdGV4dCBpcyBub3QgcHJvdmlkZWQuXG4gICAqL1xuICBkZWZhdWx0SGVhZGVyVGV4dFRyYW5zZm9ybT86IChuYW1lOiBzdHJpbmcpID0+IHN0cmluZztcblxuICAvKiogRGVmYXVsdCBkYXRhIGFjY2Vzc29yIHRvIHVzZSBpZiBvbmUgaXMgbm90IHByb3ZpZGVkLiAqL1xuICBkZWZhdWx0RGF0YUFjY2Vzc29yPzogKGRhdGE6IFQsIG5hbWU6IHN0cmluZykgPT4gc3RyaW5nO1xufVxuXG4vKiogSW5qZWN0aW9uIHRva2VuIHRoYXQgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgdGV4dCBjb2x1bW4gb3B0aW9ucy4gKi9cbmV4cG9ydCBjb25zdCBURVhUX0NPTFVNTl9PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuPFRleHRDb2x1bW5PcHRpb25zPGFueT4+KFxuICAndGV4dC1jb2x1bW4tb3B0aW9ucycsXG4pO1xuIl19
@@ -1,102 +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 { BehaviorSubject } from 'rxjs';
9
- /** Subject used to dispatch and listen for changes to the auto change detection status . */
10
- const autoChangeDetectionSubject = new BehaviorSubject({
11
- isDisabled: false,
12
- });
13
- /** The current subscription to `autoChangeDetectionSubject`. */
14
- let autoChangeDetectionSubscription;
15
- /**
16
- * The default handler for auto change detection status changes. This handler will be used if the
17
- * specific environment does not install its own.
18
- * @param status The new auto change detection status.
19
- */
20
- function defaultAutoChangeDetectionHandler(status) {
21
- status.onDetectChangesNow?.();
22
- }
23
- /**
24
- * Allows a test `HarnessEnvironment` to install its own handler for auto change detection status
25
- * changes.
26
- * @param handler The handler for the auto change detection status.
27
- */
28
- export function handleAutoChangeDetectionStatus(handler) {
29
- stopHandlingAutoChangeDetectionStatus();
30
- autoChangeDetectionSubscription = autoChangeDetectionSubject.subscribe(handler);
31
- }
32
- /** Allows a `HarnessEnvironment` to stop handling auto change detection status changes. */
33
- export function stopHandlingAutoChangeDetectionStatus() {
34
- autoChangeDetectionSubscription?.unsubscribe();
35
- autoChangeDetectionSubscription = null;
36
- }
37
- /**
38
- * Batches together triggering of change detection over the duration of the given function.
39
- * @param fn The function to call with batched change detection.
40
- * @param triggerBeforeAndAfter Optionally trigger change detection once before and after the batch
41
- * operation. If false, change detection will not be triggered.
42
- * @return The result of the given function.
43
- */
44
- async function batchChangeDetection(fn, triggerBeforeAndAfter) {
45
- // If change detection batching is already in progress, just run the function.
46
- if (autoChangeDetectionSubject.getValue().isDisabled) {
47
- return await fn();
48
- }
49
- // If nothing is handling change detection batching, install the default handler.
50
- if (!autoChangeDetectionSubscription) {
51
- handleAutoChangeDetectionStatus(defaultAutoChangeDetectionHandler);
52
- }
53
- if (triggerBeforeAndAfter) {
54
- await new Promise(resolve => autoChangeDetectionSubject.next({
55
- isDisabled: true,
56
- onDetectChangesNow: resolve,
57
- }));
58
- // The function passed in may throw (e.g. if the user wants to make an expectation of an error
59
- // being thrown. If this happens, we need to make sure we still re-enable change detection, so
60
- // we wrap it in a `finally` block.
61
- try {
62
- return await fn();
63
- }
64
- finally {
65
- await new Promise(resolve => autoChangeDetectionSubject.next({
66
- isDisabled: false,
67
- onDetectChangesNow: resolve,
68
- }));
69
- }
70
- }
71
- else {
72
- autoChangeDetectionSubject.next({ isDisabled: true });
73
- // The function passed in may throw (e.g. if the user wants to make an expectation of an error
74
- // being thrown. If this happens, we need to make sure we still re-enable change detection, so
75
- // we wrap it in a `finally` block.
76
- try {
77
- return await fn();
78
- }
79
- finally {
80
- autoChangeDetectionSubject.next({ isDisabled: false });
81
- }
82
- }
83
- }
84
- /**
85
- * Disables the harness system's auto change detection for the duration of the given function.
86
- * @param fn The function to disable auto change detection for.
87
- * @return The result of the given function.
88
- */
89
- export async function manualChangeDetection(fn) {
90
- return batchChangeDetection(fn, false);
91
- }
92
- /**
93
- * Resolves the given list of async values in parallel (i.e. via Promise.all) while batching change
94
- * detection over the entire operation such that change detection occurs exactly once before
95
- * resolving the values and once after.
96
- * @param values A getter for the async values to resolve in parallel with batched change detection.
97
- * @return The resolved values.
98
- */
99
- export async function parallel(values) {
100
- return batchChangeDetection(() => Promise.all(values()), true);
101
- }
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLWRldGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGsvdGVzdGluZy9jaGFuZ2UtZGV0ZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxlQUFlLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFjbkQsNEZBQTRGO0FBQzVGLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxlQUFlLENBQTRCO0lBQ2hGLFVBQVUsRUFBRSxLQUFLO0NBQ2xCLENBQUMsQ0FBQztBQUVILGdFQUFnRTtBQUNoRSxJQUFJLCtCQUFvRCxDQUFDO0FBRXpEOzs7O0dBSUc7QUFDSCxTQUFTLGlDQUFpQyxDQUFDLE1BQWlDO0lBQzFFLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUM7QUFDaEMsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsK0JBQStCLENBQzdDLE9BQW9EO0lBRXBELHFDQUFxQyxFQUFFLENBQUM7SUFDeEMsK0JBQStCLEdBQUcsMEJBQTBCLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2xGLENBQUM7QUFFRCwyRkFBMkY7QUFDM0YsTUFBTSxVQUFVLHFDQUFxQztJQUNuRCwrQkFBK0IsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUMvQywrQkFBK0IsR0FBRyxJQUFJLENBQUM7QUFDekMsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILEtBQUssVUFBVSxvQkFBb0IsQ0FBSSxFQUFvQixFQUFFLHFCQUE4QjtJQUN6Riw4RUFBOEU7SUFDOUUsSUFBSSwwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNyRCxPQUFPLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELGlGQUFpRjtJQUNqRixJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQztRQUNyQywrQkFBK0IsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFDMUIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUMxQiwwQkFBMEIsQ0FBQyxJQUFJLENBQUM7WUFDOUIsVUFBVSxFQUFFLElBQUk7WUFDaEIsa0JBQWtCLEVBQUUsT0FBcUI7U0FDMUMsQ0FBQyxDQUNILENBQUM7UUFDRiw4RkFBOEY7UUFDOUYsOEZBQThGO1FBQzlGLG1DQUFtQztRQUNuQyxJQUFJLENBQUM7WUFDSCxPQUFPLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDcEIsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsTUFBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUMxQiwwQkFBMEIsQ0FBQyxJQUFJLENBQUM7Z0JBQzlCLFVBQVUsRUFBRSxLQUFLO2dCQUNqQixrQkFBa0IsRUFBRSxPQUFxQjthQUMxQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO1NBQU0sQ0FBQztRQUNOLDBCQUEwQixDQUFDLElBQUksQ0FBQyxFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQ3BELDhGQUE4RjtRQUM5Riw4RkFBOEY7UUFDOUYsbUNBQW1DO1FBQ25DLElBQUksQ0FBQztZQUNILE9BQU8sTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUNwQixDQUFDO2dCQUFTLENBQUM7WUFDVCwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsRUFBQyxVQUFVLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxxQkFBcUIsQ0FBSSxFQUFvQjtJQUNqRSxPQUFPLG9CQUFvQixDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBa0VEOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsUUFBUSxDQUFJLE1BQTBDO0lBQzFFLE9BQU8sb0JBQW9CLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5cbi8qKiBSZXByZXNlbnRzIHRoZSBzdGF0dXMgb2YgYXV0byBjaGFuZ2UgZGV0ZWN0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRvQ2hhbmdlRGV0ZWN0aW9uU3RhdHVzIHtcbiAgLyoqIFdoZXRoZXIgYXV0byBjaGFuZ2UgZGV0ZWN0aW9uIGlzIGRpc2FibGVkLiAqL1xuICBpc0Rpc2FibGVkOiBib29sZWFuO1xuICAvKipcbiAgICogQW4gb3B0aW9uYWwgY2FsbGJhY2ssIGlmIHByZXNlbnQgaXQgaW5kaWNhdGVzIHRoYXQgY2hhbmdlIGRldGVjdGlvbiBzaG91bGQgYmUgcnVuIGltbWVkaWF0ZWx5LFxuICAgKiB3aGlsZSBoYW5kbGluZyB0aGUgc3RhdHVzIGNoYW5nZS4gVGhlIGNhbGxiYWNrIHNob3VsZCB0aGVuIGJlIGNhbGxlZCBhcyBzb29uIGFzIGNoYW5nZVxuICAgKiBkZXRlY3Rpb24gaXMgZG9uZS5cbiAgICovXG4gIG9uRGV0ZWN0Q2hhbmdlc05vdz86ICgpID0+IHZvaWQ7XG59XG5cbi8qKiBTdWJqZWN0IHVzZWQgdG8gZGlzcGF0Y2ggYW5kIGxpc3RlbiBmb3IgY2hhbmdlcyB0byB0aGUgYXV0byBjaGFuZ2UgZGV0ZWN0aW9uIHN0YXR1cyAuICovXG5jb25zdCBhdXRvQ2hhbmdlRGV0ZWN0aW9uU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0b0NoYW5nZURldGVjdGlvblN0YXR1cz4oe1xuICBpc0Rpc2FibGVkOiBmYWxzZSxcbn0pO1xuXG4vKiogVGhlIGN1cnJlbnQgc3Vic2NyaXB0aW9uIHRvIGBhdXRvQ2hhbmdlRGV0ZWN0aW9uU3ViamVjdGAuICovXG5sZXQgYXV0b0NoYW5nZURldGVjdGlvblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbDtcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBoYW5kbGVyIGZvciBhdXRvIGNoYW5nZSBkZXRlY3Rpb24gc3RhdHVzIGNoYW5nZXMuIFRoaXMgaGFuZGxlciB3aWxsIGJlIHVzZWQgaWYgdGhlXG4gKiBzcGVjaWZpYyBlbnZpcm9ubWVudCBkb2VzIG5vdCBpbnN0YWxsIGl0cyBvd24uXG4gKiBAcGFyYW0gc3RhdHVzIFRoZSBuZXcgYXV0byBjaGFuZ2UgZGV0ZWN0aW9uIHN0YXR1cy5cbiAqL1xuZnVuY3Rpb24gZGVmYXVsdEF1dG9DaGFuZ2VEZXRlY3Rpb25IYW5kbGVyKHN0YXR1czogQXV0b0NoYW5nZURldGVjdGlvblN0YXR1cykge1xuICBzdGF0dXMub25EZXRlY3RDaGFuZ2VzTm93Py4oKTtcbn1cblxuLyoqXG4gKiBBbGxvd3MgYSB0ZXN0IGBIYXJuZXNzRW52aXJvbm1lbnRgIHRvIGluc3RhbGwgaXRzIG93biBoYW5kbGVyIGZvciBhdXRvIGNoYW5nZSBkZXRlY3Rpb24gc3RhdHVzXG4gKiBjaGFuZ2VzLlxuICogQHBhcmFtIGhhbmRsZXIgVGhlIGhhbmRsZXIgZm9yIHRoZSBhdXRvIGNoYW5nZSBkZXRlY3Rpb24gc3RhdHVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlQXV0b0NoYW5nZURldGVjdGlvblN0YXR1cyhcbiAgaGFuZGxlcjogKHN0YXR1czogQXV0b0NoYW5nZURldGVjdGlvblN0YXR1cykgPT4gdm9pZCxcbikge1xuICBzdG9wSGFuZGxpbmdBdXRvQ2hhbmdlRGV0ZWN0aW9uU3RhdHVzKCk7XG4gIGF1dG9DaGFuZ2VEZXRlY3Rpb25TdWJzY3JpcHRpb24gPSBhdXRvQ2hhbmdlRGV0ZWN0aW9uU3ViamVjdC5zdWJzY3JpYmUoaGFuZGxlcik7XG59XG5cbi8qKiBBbGxvd3MgYSBgSGFybmVzc0Vudmlyb25tZW50YCB0byBzdG9wIGhhbmRsaW5nIGF1dG8gY2hhbmdlIGRldGVjdGlvbiBzdGF0dXMgY2hhbmdlcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdG9wSGFuZGxpbmdBdXRvQ2hhbmdlRGV0ZWN0aW9uU3RhdHVzKCkge1xuICBhdXRvQ2hhbmdlRGV0ZWN0aW9uU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICBhdXRvQ2hhbmdlRGV0ZWN0aW9uU3Vic2NyaXB0aW9uID0gbnVsbDtcbn1cblxuLyoqXG4gKiBCYXRjaGVzIHRvZ2V0aGVyIHRyaWdnZXJpbmcgb2YgY2hhbmdlIGRldGVjdGlvbiBvdmVyIHRoZSBkdXJhdGlvbiBvZiB0aGUgZ2l2ZW4gZnVuY3Rpb24uXG4gKiBAcGFyYW0gZm4gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBiYXRjaGVkIGNoYW5nZSBkZXRlY3Rpb24uXG4gKiBAcGFyYW0gdHJpZ2dlckJlZm9yZUFuZEFmdGVyIE9wdGlvbmFsbHkgdHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIG9uY2UgYmVmb3JlIGFuZCBhZnRlciB0aGUgYmF0Y2hcbiAqICAgb3BlcmF0aW9uLiBJZiBmYWxzZSwgY2hhbmdlIGRldGVjdGlvbiB3aWxsIG5vdCBiZSB0cmlnZ2VyZWQuXG4gKiBAcmV0dXJuIFRoZSByZXN1bHQgb2YgdGhlIGdpdmVuIGZ1bmN0aW9uLlxuICovXG5hc3luYyBmdW5jdGlvbiBiYXRjaENoYW5nZURldGVjdGlvbjxUPihmbjogKCkgPT4gUHJvbWlzZTxUPiwgdHJpZ2dlckJlZm9yZUFuZEFmdGVyOiBib29sZWFuKSB7XG4gIC8vIElmIGNoYW5nZSBkZXRlY3Rpb24gYmF0Y2hpbmcgaXMgYWxyZWFkeSBpbiBwcm9ncmVzcywganVzdCBydW4gdGhlIGZ1bmN0aW9uLlxuICBpZiAoYXV0b0NoYW5nZURldGVjdGlvblN1YmplY3QuZ2V0VmFsdWUoKS5pc0Rpc2FibGVkKSB7XG4gICAgcmV0dXJuIGF3YWl0IGZuKCk7XG4gIH1cblxuICAvLyBJZiBub3RoaW5nIGlzIGhhbmRsaW5nIGNoYW5nZSBkZXRlY3Rpb24gYmF0Y2hpbmcsIGluc3RhbGwgdGhlIGRlZmF1bHQgaGFuZGxlci5cbiAgaWYgKCFhdXRvQ2hhbmdlRGV0ZWN0aW9uU3Vic2NyaXB0aW9uKSB7XG4gICAgaGFuZGxlQXV0b0NoYW5nZURldGVjdGlvblN0YXR1cyhkZWZhdWx0QXV0b0NoYW5nZURldGVjdGlvbkhhbmRsZXIpO1xuICB9XG5cbiAgaWYgKHRyaWdnZXJCZWZvcmVBbmRBZnRlcikge1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT5cbiAgICAgIGF1dG9DaGFuZ2VEZXRlY3Rpb25TdWJqZWN0Lm5leHQoe1xuICAgICAgICBpc0Rpc2FibGVkOiB0cnVlLFxuICAgICAgICBvbkRldGVjdENoYW5nZXNOb3c6IHJlc29sdmUgYXMgKCkgPT4gdm9pZCxcbiAgICAgIH0pLFxuICAgICk7XG4gICAgLy8gVGhlIGZ1bmN0aW9uIHBhc3NlZCBpbiBtYXkgdGhyb3cgKGUuZy4gaWYgdGhlIHVzZXIgd2FudHMgdG8gbWFrZSBhbiBleHBlY3RhdGlvbiBvZiBhbiBlcnJvclxuICAgIC8vIGJlaW5nIHRocm93bi4gSWYgdGhpcyBoYXBwZW5zLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBzdGlsbCByZS1lbmFibGUgY2hhbmdlIGRldGVjdGlvbiwgc29cbiAgICAvLyB3ZSB3cmFwIGl0IGluIGEgYGZpbmFsbHlgIGJsb2NrLlxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgZm4oKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PlxuICAgICAgICBhdXRvQ2hhbmdlRGV0ZWN0aW9uU3ViamVjdC5uZXh0KHtcbiAgICAgICAgICBpc0Rpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgICBvbkRldGVjdENoYW5nZXNOb3c6IHJlc29sdmUgYXMgKCkgPT4gdm9pZCxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBhdXRvQ2hhbmdlRGV0ZWN0aW9uU3ViamVjdC5uZXh0KHtpc0Rpc2FibGVkOiB0cnVlfSk7XG4gICAgLy8gVGhlIGZ1bmN0aW9uIHBhc3NlZCBpbiBtYXkgdGhyb3cgKGUuZy4gaWYgdGhlIHVzZXIgd2FudHMgdG8gbWFrZSBhbiBleHBlY3RhdGlvbiBvZiBhbiBlcnJvclxuICAgIC8vIGJlaW5nIHRocm93bi4gSWYgdGhpcyBoYXBwZW5zLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBzdGlsbCByZS1lbmFibGUgY2hhbmdlIGRldGVjdGlvbiwgc29cbiAgICAvLyB3ZSB3cmFwIGl0IGluIGEgYGZpbmFsbHlgIGJsb2NrLlxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgZm4oKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXV0b0NoYW5nZURldGVjdGlvblN1YmplY3QubmV4dCh7aXNEaXNhYmxlZDogZmFsc2V9KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBEaXNhYmxlcyB0aGUgaGFybmVzcyBzeXN0ZW0ncyBhdXRvIGNoYW5nZSBkZXRlY3Rpb24gZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgZ2l2ZW4gZnVuY3Rpb24uXG4gKiBAcGFyYW0gZm4gVGhlIGZ1bmN0aW9uIHRvIGRpc2FibGUgYXV0byBjaGFuZ2UgZGV0ZWN0aW9uIGZvci5cbiAqIEByZXR1cm4gVGhlIHJlc3VsdCBvZiB0aGUgZ2l2ZW4gZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtYW51YWxDaGFuZ2VEZXRlY3Rpb248VD4oZm46ICgpID0+IFByb21pc2U8VD4pIHtcbiAgcmV0dXJuIGJhdGNoQ2hhbmdlRGV0ZWN0aW9uKGZuLCBmYWxzZSk7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGdpdmVuIGxpc3Qgb2YgYXN5bmMgdmFsdWVzIGluIHBhcmFsbGVsIChpLmUuIHZpYSBQcm9taXNlLmFsbCkgd2hpbGUgYmF0Y2hpbmcgY2hhbmdlXG4gKiBkZXRlY3Rpb24gb3ZlciB0aGUgZW50aXJlIG9wZXJhdGlvbiBzdWNoIHRoYXQgY2hhbmdlIGRldGVjdGlvbiBvY2N1cnMgZXhhY3RseSBvbmNlIGJlZm9yZVxuICogcmVzb2x2aW5nIHRoZSB2YWx1ZXMgYW5kIG9uY2UgYWZ0ZXIuXG4gKiBAcGFyYW0gdmFsdWVzIEEgZ2V0dGVyIGZvciB0aGUgYXN5bmMgdmFsdWVzIHRvIHJlc29sdmUgaW4gcGFyYWxsZWwgd2l0aCBiYXRjaGVkIGNoYW5nZSBkZXRlY3Rpb24uXG4gKiBAcmV0dXJuIFRoZSByZXNvbHZlZCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbGxlbDxUMSwgVDIsIFQzLCBUNCwgVDU+KFxuICB2YWx1ZXM6ICgpID0+IFtcbiAgICBUMSB8IFByb21pc2VMaWtlPFQxPixcbiAgICBUMiB8IFByb21pc2VMaWtlPFQyPixcbiAgICBUMyB8IFByb21pc2VMaWtlPFQzPixcbiAgICBUNCB8IFByb21pc2VMaWtlPFQ0PixcbiAgICBUNSB8IFByb21pc2VMaWtlPFQ1PixcbiAgXSxcbik6IFByb21pc2U8W1QxLCBUMiwgVDMsIFQ0LCBUNV0+O1xuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBnaXZlbiBsaXN0IG9mIGFzeW5jIHZhbHVlcyBpbiBwYXJhbGxlbCAoaS5lLiB2aWEgUHJvbWlzZS5hbGwpIHdoaWxlIGJhdGNoaW5nIGNoYW5nZVxuICogZGV0ZWN0aW9uIG92ZXIgdGhlIGVudGlyZSBvcGVyYXRpb24gc3VjaCB0aGF0IGNoYW5nZSBkZXRlY3Rpb24gb2NjdXJzIGV4YWN0bHkgb25jZSBiZWZvcmVcbiAqIHJlc29sdmluZyB0aGUgdmFsdWVzIGFuZCBvbmNlIGFmdGVyLlxuICogQHBhcmFtIHZhbHVlcyBBIGdldHRlciBmb3IgdGhlIGFzeW5jIHZhbHVlcyB0byByZXNvbHZlIGluIHBhcmFsbGVsIHdpdGggYmF0Y2hlZCBjaGFuZ2UgZGV0ZWN0aW9uLlxuICogQHJldHVybiBUaGUgcmVzb2x2ZWQgdmFsdWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyYWxsZWw8VDEsIFQyLCBUMywgVDQ+KFxuICB2YWx1ZXM6ICgpID0+IFtcbiAgICBUMSB8IFByb21pc2VMaWtlPFQxPixcbiAgICBUMiB8IFByb21pc2VMaWtlPFQyPixcbiAgICBUMyB8IFByb21pc2VMaWtlPFQzPixcbiAgICBUNCB8IFByb21pc2VMaWtlPFQ0PixcbiAgXSxcbik6IFByb21pc2U8W1QxLCBUMiwgVDMsIFQ0XT47XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGdpdmVuIGxpc3Qgb2YgYXN5bmMgdmFsdWVzIGluIHBhcmFsbGVsIChpLmUuIHZpYSBQcm9taXNlLmFsbCkgd2hpbGUgYmF0Y2hpbmcgY2hhbmdlXG4gKiBkZXRlY3Rpb24gb3ZlciB0aGUgZW50aXJlIG9wZXJhdGlvbiBzdWNoIHRoYXQgY2hhbmdlIGRldGVjdGlvbiBvY2N1cnMgZXhhY3RseSBvbmNlIGJlZm9yZVxuICogcmVzb2x2aW5nIHRoZSB2YWx1ZXMgYW5kIG9uY2UgYWZ0ZXIuXG4gKiBAcGFyYW0gdmFsdWVzIEEgZ2V0dGVyIGZvciB0aGUgYXN5bmMgdmFsdWVzIHRvIHJlc29sdmUgaW4gcGFyYWxsZWwgd2l0aCBiYXRjaGVkIGNoYW5nZSBkZXRlY3Rpb24uXG4gKiBAcmV0dXJuIFRoZSByZXNvbHZlZCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbGxlbDxUMSwgVDIsIFQzPihcbiAgdmFsdWVzOiAoKSA9PiBbVDEgfCBQcm9taXNlTGlrZTxUMT4sIFQyIHwgUHJvbWlzZUxpa2U8VDI+LCBUMyB8IFByb21pc2VMaWtlPFQzPl0sXG4pOiBQcm9taXNlPFtUMSwgVDIsIFQzXT47XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGdpdmVuIGxpc3Qgb2YgYXN5bmMgdmFsdWVzIGluIHBhcmFsbGVsIChpLmUuIHZpYSBQcm9taXNlLmFsbCkgd2hpbGUgYmF0Y2hpbmcgY2hhbmdlXG4gKiBkZXRlY3Rpb24gb3ZlciB0aGUgZW50aXJlIG9wZXJhdGlvbiBzdWNoIHRoYXQgY2hhbmdlIGRldGVjdGlvbiBvY2N1cnMgZXhhY3RseSBvbmNlIGJlZm9yZVxuICogcmVzb2x2aW5nIHRoZSB2YWx1ZXMgYW5kIG9uY2UgYWZ0ZXIuXG4gKiBAcGFyYW0gdmFsdWVzIEEgZ2V0dGVyIGZvciB0aGUgYXN5bmMgdmFsdWVzIHRvIHJlc29sdmUgaW4gcGFyYWxsZWwgd2l0aCBiYXRjaGVkIGNoYW5nZSBkZXRlY3Rpb24uXG4gKiBAcmV0dXJuIFRoZSByZXNvbHZlZCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbGxlbDxUMSwgVDI+KFxuICB2YWx1ZXM6ICgpID0+IFtUMSB8IFByb21pc2VMaWtlPFQxPiwgVDIgfCBQcm9taXNlTGlrZTxUMj5dLFxuKTogUHJvbWlzZTxbVDEsIFQyXT47XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGdpdmVuIGxpc3Qgb2YgYXN5bmMgdmFsdWVzIGluIHBhcmFsbGVsIChpLmUuIHZpYSBQcm9taXNlLmFsbCkgd2hpbGUgYmF0Y2hpbmcgY2hhbmdlXG4gKiBkZXRlY3Rpb24gb3ZlciB0aGUgZW50aXJlIG9wZXJhdGlvbiBzdWNoIHRoYXQgY2hhbmdlIGRldGVjdGlvbiBvY2N1cnMgZXhhY3RseSBvbmNlIGJlZm9yZVxuICogcmVzb2x2aW5nIHRoZSB2YWx1ZXMgYW5kIG9uY2UgYWZ0ZXIuXG4gKiBAcGFyYW0gdmFsdWVzIEEgZ2V0dGVyIGZvciB0aGUgYXN5bmMgdmFsdWVzIHRvIHJlc29sdmUgaW4gcGFyYWxsZWwgd2l0aCBiYXRjaGVkIGNoYW5nZSBkZXRlY3Rpb24uXG4gKiBAcmV0dXJuIFRoZSByZXNvbHZlZCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbGxlbDxUPih2YWx1ZXM6ICgpID0+IChUIHwgUHJvbWlzZUxpa2U8VD4pW10pOiBQcm9taXNlPFRbXT47XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGdpdmVuIGxpc3Qgb2YgYXN5bmMgdmFsdWVzIGluIHBhcmFsbGVsIChpLmUuIHZpYSBQcm9taXNlLmFsbCkgd2hpbGUgYmF0Y2hpbmcgY2hhbmdlXG4gKiBkZXRlY3Rpb24gb3ZlciB0aGUgZW50aXJlIG9wZXJhdGlvbiBzdWNoIHRoYXQgY2hhbmdlIGRldGVjdGlvbiBvY2N1cnMgZXhhY3RseSBvbmNlIGJlZm9yZVxuICogcmVzb2x2aW5nIHRoZSB2YWx1ZXMgYW5kIG9uY2UgYWZ0ZXIuXG4gKiBAcGFyYW0gdmFsdWVzIEEgZ2V0dGVyIGZvciB0aGUgYXN5bmMgdmFsdWVzIHRvIHJlc29sdmUgaW4gcGFyYWxsZWwgd2l0aCBiYXRjaGVkIGNoYW5nZSBkZXRlY3Rpb24uXG4gKiBAcmV0dXJuIFRoZSByZXNvbHZlZCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwYXJhbGxlbDxUPih2YWx1ZXM6ICgpID0+IEl0ZXJhYmxlPFQgfCBQcm9taXNlTGlrZTxUPj4pOiBQcm9taXNlPFRbXT4ge1xuICByZXR1cm4gYmF0Y2hDaGFuZ2VEZXRlY3Rpb24oKCkgPT4gUHJvbWlzZS5hbGwodmFsdWVzKCkpLCB0cnVlKTtcbn1cbiJdfQ==