@angular/cdk 14.1.0-next.0 → 14.1.0-next.3

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 (199) hide show
  1. package/a11y/index.d.ts +3 -1
  2. package/drag-drop/index.d.ts +12 -58
  3. package/esm2020/a11y/a11y-module.mjs +5 -5
  4. package/esm2020/a11y/aria-describer/aria-describer.mjs +4 -4
  5. package/esm2020/a11y/focus-monitor/focus-monitor.mjs +7 -7
  6. package/esm2020/a11y/focus-trap/configurable-focus-trap-factory.mjs +4 -4
  7. package/esm2020/a11y/focus-trap/focus-trap-manager.mjs +4 -4
  8. package/esm2020/a11y/focus-trap/focus-trap.mjs +7 -7
  9. package/esm2020/a11y/high-contrast-mode/high-contrast-mode-detector.mjs +17 -5
  10. package/esm2020/a11y/input-modality/input-modality-detector.mjs +4 -4
  11. package/esm2020/a11y/interactivity-checker/interactivity-checker.mjs +4 -4
  12. package/esm2020/a11y/live-announcer/live-announcer.mjs +7 -7
  13. package/esm2020/accordion/accordion-item.mjs +4 -4
  14. package/esm2020/accordion/accordion-module.mjs +5 -5
  15. package/esm2020/accordion/accordion.mjs +4 -4
  16. package/esm2020/bidi/bidi-module.mjs +5 -5
  17. package/esm2020/bidi/dir.mjs +4 -4
  18. package/esm2020/bidi/directionality.mjs +4 -4
  19. package/esm2020/clipboard/clipboard-module.mjs +5 -5
  20. package/esm2020/clipboard/clipboard.mjs +4 -4
  21. package/esm2020/clipboard/copy-to-clipboard.mjs +4 -4
  22. package/esm2020/collections/unique-selection-dispatcher.mjs +4 -4
  23. package/esm2020/dialog/dialog-container.mjs +4 -4
  24. package/esm2020/dialog/dialog-module.mjs +5 -5
  25. package/esm2020/dialog/dialog.mjs +4 -4
  26. package/esm2020/drag-drop/directives/drag-handle.mjs +4 -4
  27. package/esm2020/drag-drop/directives/drag-placeholder.mjs +4 -4
  28. package/esm2020/drag-drop/directives/drag-preview.mjs +4 -4
  29. package/esm2020/drag-drop/directives/drag.mjs +4 -4
  30. package/esm2020/drag-drop/directives/drop-list-group.mjs +4 -4
  31. package/esm2020/drag-drop/directives/drop-list.mjs +4 -4
  32. package/esm2020/drag-drop/dom/client-rect.mjs +64 -0
  33. package/esm2020/drag-drop/dom/clone-node.mjs +65 -0
  34. package/esm2020/drag-drop/dom/parent-position-tracker.mjs +76 -0
  35. package/esm2020/drag-drop/dom/styling.mjs +69 -0
  36. package/esm2020/drag-drop/dom/transition-duration.mjs +36 -0
  37. package/esm2020/drag-drop/drag-drop-module.mjs +5 -5
  38. package/esm2020/drag-drop/drag-drop-registry.mjs +4 -4
  39. package/esm2020/drag-drop/drag-drop.mjs +4 -4
  40. package/esm2020/drag-drop/drag-ref.mjs +36 -22
  41. package/esm2020/drag-drop/drop-list-ref.mjs +36 -295
  42. package/esm2020/drag-drop/sorting/drop-list-sort-strategy.mjs +9 -0
  43. package/esm2020/drag-drop/sorting/single-axis-sort-strategy.mjs +341 -0
  44. package/esm2020/layout/breakpoints-observer.mjs +4 -4
  45. package/esm2020/layout/layout-module.mjs +5 -5
  46. package/esm2020/layout/media-matcher.mjs +4 -4
  47. package/esm2020/menu/context-menu-trigger.mjs +7 -7
  48. package/esm2020/menu/menu-aim.mjs +7 -7
  49. package/esm2020/menu/menu-bar.mjs +4 -4
  50. package/esm2020/menu/menu-base.mjs +4 -4
  51. package/esm2020/menu/menu-group.mjs +4 -4
  52. package/esm2020/menu/menu-item-checkbox.mjs +4 -4
  53. package/esm2020/menu/menu-item-radio.mjs +4 -4
  54. package/esm2020/menu/menu-item-selectable.mjs +4 -4
  55. package/esm2020/menu/menu-item.mjs +4 -4
  56. package/esm2020/menu/menu-module.mjs +5 -5
  57. package/esm2020/menu/menu-stack.mjs +4 -4
  58. package/esm2020/menu/menu-trigger-base.mjs +4 -4
  59. package/esm2020/menu/menu-trigger.mjs +4 -4
  60. package/esm2020/menu/menu.mjs +4 -4
  61. package/esm2020/observers/observe-content.mjs +14 -14
  62. package/esm2020/overlay/dispatchers/base-overlay-dispatcher.mjs +4 -4
  63. package/esm2020/overlay/dispatchers/overlay-keyboard-dispatcher.mjs +4 -4
  64. package/esm2020/overlay/dispatchers/overlay-outside-click-dispatcher.mjs +4 -4
  65. package/esm2020/overlay/fullscreen-overlay-container.mjs +4 -4
  66. package/esm2020/overlay/overlay-container.mjs +4 -4
  67. package/esm2020/overlay/overlay-directives.mjs +7 -7
  68. package/esm2020/overlay/overlay-module.mjs +5 -5
  69. package/esm2020/overlay/overlay.mjs +4 -4
  70. package/esm2020/overlay/position/overlay-position-builder.mjs +4 -4
  71. package/esm2020/overlay/scroll/scroll-strategy-options.mjs +4 -4
  72. package/esm2020/platform/platform-module.mjs +5 -5
  73. package/esm2020/platform/platform.mjs +4 -4
  74. package/esm2020/portal/portal-directives.mjs +17 -17
  75. package/esm2020/scrolling/fixed-size-virtual-scroll.mjs +4 -4
  76. package/esm2020/scrolling/public-api.mjs +4 -1
  77. package/esm2020/scrolling/scroll-dispatcher.mjs +4 -4
  78. package/esm2020/scrolling/scrollable.mjs +4 -4
  79. package/esm2020/scrolling/scrolling-module.mjs +27 -11
  80. package/esm2020/scrolling/viewport-ruler.mjs +4 -4
  81. package/esm2020/scrolling/virtual-for-of.mjs +4 -4
  82. package/esm2020/scrolling/virtual-scroll-viewport.mjs +74 -23
  83. package/esm2020/scrolling/virtual-scrollable-element.mjs +41 -0
  84. package/esm2020/scrolling/virtual-scrollable-window.mjs +40 -0
  85. package/esm2020/scrolling/virtual-scrollable.mjs +40 -0
  86. package/esm2020/stepper/step-header.mjs +4 -4
  87. package/esm2020/stepper/step-label.mjs +4 -4
  88. package/esm2020/stepper/stepper-button.mjs +7 -7
  89. package/esm2020/stepper/stepper-module.mjs +5 -5
  90. package/esm2020/stepper/stepper.mjs +7 -7
  91. package/esm2020/table/cell.mjs +22 -22
  92. package/esm2020/table/coalesced-style-scheduler.mjs +4 -4
  93. package/esm2020/table/row.mjs +28 -28
  94. package/esm2020/table/table-module.mjs +5 -5
  95. package/esm2020/table/table.mjs +19 -19
  96. package/esm2020/table/text-column.mjs +4 -4
  97. package/esm2020/testing/testbed/fake-events/dispatch-events.mjs +5 -5
  98. package/esm2020/testing/testbed/fake-events/event-objects.mjs +17 -6
  99. package/esm2020/testing/testbed/unit-test-element.mjs +17 -12
  100. package/esm2020/text-field/autofill.mjs +7 -7
  101. package/esm2020/text-field/autosize.mjs +4 -4
  102. package/esm2020/text-field/text-field-module.mjs +5 -5
  103. package/esm2020/tree/nested-node.mjs +4 -4
  104. package/esm2020/tree/node.mjs +4 -4
  105. package/esm2020/tree/outlet.mjs +4 -4
  106. package/esm2020/tree/padding.mjs +4 -4
  107. package/esm2020/tree/toggle.mjs +4 -4
  108. package/esm2020/tree/tree-module.mjs +5 -5
  109. package/esm2020/tree/tree.mjs +7 -7
  110. package/esm2020/version.mjs +1 -1
  111. package/fesm2015/a11y.mjs +59 -40
  112. package/fesm2015/a11y.mjs.map +1 -1
  113. package/fesm2015/accordion.mjs +10 -10
  114. package/fesm2015/accordion.mjs.map +1 -1
  115. package/fesm2015/bidi.mjs +10 -10
  116. package/fesm2015/bidi.mjs.map +1 -1
  117. package/fesm2015/cdk.mjs +1 -1
  118. package/fesm2015/cdk.mjs.map +1 -1
  119. package/fesm2015/clipboard.mjs +10 -10
  120. package/fesm2015/clipboard.mjs.map +1 -1
  121. package/fesm2015/collections.mjs +3 -3
  122. package/fesm2015/collections.mjs.map +1 -1
  123. package/fesm2015/dialog.mjs +10 -10
  124. package/fesm2015/dialog.mjs.map +1 -1
  125. package/fesm2015/drag-drop.mjs +552 -459
  126. package/fesm2015/drag-drop.mjs.map +1 -1
  127. package/fesm2015/layout.mjs +10 -10
  128. package/fesm2015/layout.mjs.map +1 -1
  129. package/fesm2015/menu.mjs +49 -49
  130. package/fesm2015/menu.mjs.map +1 -1
  131. package/fesm2015/observers.mjs +13 -13
  132. package/fesm2015/observers.mjs.map +1 -1
  133. package/fesm2015/overlay.mjs +34 -34
  134. package/fesm2015/overlay.mjs.map +1 -1
  135. package/fesm2015/platform.mjs +7 -7
  136. package/fesm2015/platform.mjs.map +1 -1
  137. package/fesm2015/portal.mjs +16 -16
  138. package/fesm2015/portal.mjs.map +1 -1
  139. package/fesm2015/scrolling.mjs +196 -49
  140. package/fesm2015/scrolling.mjs.map +1 -1
  141. package/fesm2015/stepper.mjs +22 -22
  142. package/fesm2015/stepper.mjs.map +1 -1
  143. package/fesm2015/table.mjs +76 -76
  144. package/fesm2015/table.mjs.map +1 -1
  145. package/fesm2015/testing/testbed.mjs +36 -20
  146. package/fesm2015/testing/testbed.mjs.map +1 -1
  147. package/fesm2015/text-field.mjs +13 -13
  148. package/fesm2015/text-field.mjs.map +1 -1
  149. package/fesm2015/tree.mjs +25 -25
  150. package/fesm2015/tree.mjs.map +1 -1
  151. package/fesm2020/a11y.mjs +52 -40
  152. package/fesm2020/a11y.mjs.map +1 -1
  153. package/fesm2020/accordion.mjs +10 -10
  154. package/fesm2020/accordion.mjs.map +1 -1
  155. package/fesm2020/bidi.mjs +10 -10
  156. package/fesm2020/bidi.mjs.map +1 -1
  157. package/fesm2020/cdk.mjs +1 -1
  158. package/fesm2020/cdk.mjs.map +1 -1
  159. package/fesm2020/clipboard.mjs +10 -10
  160. package/fesm2020/clipboard.mjs.map +1 -1
  161. package/fesm2020/collections.mjs +3 -3
  162. package/fesm2020/collections.mjs.map +1 -1
  163. package/fesm2020/dialog.mjs +10 -10
  164. package/fesm2020/dialog.mjs.map +1 -1
  165. package/fesm2020/drag-drop.mjs +552 -459
  166. package/fesm2020/drag-drop.mjs.map +1 -1
  167. package/fesm2020/layout.mjs +10 -10
  168. package/fesm2020/layout.mjs.map +1 -1
  169. package/fesm2020/menu.mjs +49 -49
  170. package/fesm2020/menu.mjs.map +1 -1
  171. package/fesm2020/observers.mjs +13 -13
  172. package/fesm2020/observers.mjs.map +1 -1
  173. package/fesm2020/overlay.mjs +34 -34
  174. package/fesm2020/overlay.mjs.map +1 -1
  175. package/fesm2020/platform.mjs +7 -7
  176. package/fesm2020/platform.mjs.map +1 -1
  177. package/fesm2020/portal.mjs +16 -16
  178. package/fesm2020/portal.mjs.map +1 -1
  179. package/fesm2020/scrolling.mjs +210 -49
  180. package/fesm2020/scrolling.mjs.map +1 -1
  181. package/fesm2020/stepper.mjs +22 -22
  182. package/fesm2020/stepper.mjs.map +1 -1
  183. package/fesm2020/table.mjs +76 -76
  184. package/fesm2020/table.mjs.map +1 -1
  185. package/fesm2020/testing/testbed.mjs +36 -20
  186. package/fesm2020/testing/testbed.mjs.map +1 -1
  187. package/fesm2020/text-field.mjs +13 -13
  188. package/fesm2020/text-field.mjs.map +1 -1
  189. package/fesm2020/tree.mjs +25 -25
  190. package/fesm2020/tree.mjs.map +1 -1
  191. package/package.json +1 -1
  192. package/schematics/ng-add/index.js +1 -1
  193. package/schematics/ng-add/index.mjs +1 -1
  194. package/scrolling/index.d.ts +71 -8
  195. package/esm2020/drag-drop/client-rect.mjs +0 -64
  196. package/esm2020/drag-drop/clone-node.mjs +0 -65
  197. package/esm2020/drag-drop/drag-styling.mjs +0 -69
  198. package/esm2020/drag-drop/parent-position-tracker.mjs +0 -76
  199. package/esm2020/drag-drop/transition-duration.mjs +0 -36
@@ -1,65 +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
- /** Creates a deep clone of an element. */
9
- export function deepCloneNode(node) {
10
- const clone = node.cloneNode(true);
11
- const descendantsWithId = clone.querySelectorAll('[id]');
12
- const nodeName = node.nodeName.toLowerCase();
13
- // Remove the `id` to avoid having multiple elements with the same id on the page.
14
- clone.removeAttribute('id');
15
- for (let i = 0; i < descendantsWithId.length; i++) {
16
- descendantsWithId[i].removeAttribute('id');
17
- }
18
- if (nodeName === 'canvas') {
19
- transferCanvasData(node, clone);
20
- }
21
- else if (nodeName === 'input' || nodeName === 'select' || nodeName === 'textarea') {
22
- transferInputData(node, clone);
23
- }
24
- transferData('canvas', node, clone, transferCanvasData);
25
- transferData('input, textarea, select', node, clone, transferInputData);
26
- return clone;
27
- }
28
- /** Matches elements between an element and its clone and allows for their data to be cloned. */
29
- function transferData(selector, node, clone, callback) {
30
- const descendantElements = node.querySelectorAll(selector);
31
- if (descendantElements.length) {
32
- const cloneElements = clone.querySelectorAll(selector);
33
- for (let i = 0; i < descendantElements.length; i++) {
34
- callback(descendantElements[i], cloneElements[i]);
35
- }
36
- }
37
- }
38
- // Counter for unique cloned radio button names.
39
- let cloneUniqueId = 0;
40
- /** Transfers the data of one input element to another. */
41
- function transferInputData(source, clone) {
42
- // Browsers throw an error when assigning the value of a file input programmatically.
43
- if (clone.type !== 'file') {
44
- clone.value = source.value;
45
- }
46
- // Radio button `name` attributes must be unique for radio button groups
47
- // otherwise original radio buttons can lose their checked state
48
- // once the clone is inserted in the DOM.
49
- if (clone.type === 'radio' && clone.name) {
50
- clone.name = `mat-clone-${clone.name}-${cloneUniqueId++}`;
51
- }
52
- }
53
- /** Transfers the data of one canvas element to another. */
54
- function transferCanvasData(source, clone) {
55
- const context = clone.getContext('2d');
56
- if (context) {
57
- // In some cases `drawImage` can throw (e.g. if the canvas size is 0x0).
58
- // We can't do much about it so just ignore the error.
59
- try {
60
- context.drawImage(source, 0, 0);
61
- }
62
- catch { }
63
- }
64
- }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvbmUtbm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGsvZHJhZy1kcm9wL2Nsb25lLW5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsMENBQTBDO0FBQzFDLE1BQU0sVUFBVSxhQUFhLENBQUMsSUFBaUI7SUFDN0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQWdCLENBQUM7SUFDbEQsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUU3QyxrRkFBa0Y7SUFDbEYsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUU1QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ2pELGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUM1QztJQUVELElBQUksUUFBUSxLQUFLLFFBQVEsRUFBRTtRQUN6QixrQkFBa0IsQ0FBQyxJQUF5QixFQUFFLEtBQTBCLENBQUMsQ0FBQztLQUMzRTtTQUFNLElBQUksUUFBUSxLQUFLLE9BQU8sSUFBSSxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxVQUFVLEVBQUU7UUFDbkYsaUJBQWlCLENBQUMsSUFBd0IsRUFBRSxLQUF5QixDQUFDLENBQUM7S0FDeEU7SUFFRCxZQUFZLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUN4RCxZQUFZLENBQUMseUJBQXlCLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3hFLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELGdHQUFnRztBQUNoRyxTQUFTLFlBQVksQ0FDbkIsUUFBZ0IsRUFDaEIsSUFBaUIsRUFDakIsS0FBa0IsRUFDbEIsUUFBdUM7SUFFdkMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUksUUFBUSxDQUFDLENBQUM7SUFFOUQsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUU7UUFDN0IsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFJLFFBQVEsQ0FBQyxDQUFDO1FBRTFELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbEQsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ25EO0tBQ0Y7QUFDSCxDQUFDO0FBRUQsZ0RBQWdEO0FBQ2hELElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQztBQUV0QiwwREFBMEQ7QUFDMUQsU0FBUyxpQkFBaUIsQ0FDeEIsTUFBaUMsRUFDakMsS0FBNEQ7SUFFNUQscUZBQXFGO0lBQ3JGLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7UUFDekIsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO0tBQzVCO0lBRUQsd0VBQXdFO0lBQ3hFLGdFQUFnRTtJQUNoRSx5Q0FBeUM7SUFDekMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFO1FBQ3hDLEtBQUssQ0FBQyxJQUFJLEdBQUcsYUFBYSxLQUFLLENBQUMsSUFBSSxJQUFJLGFBQWEsRUFBRSxFQUFFLENBQUM7S0FDM0Q7QUFDSCxDQUFDO0FBRUQsMkRBQTJEO0FBQzNELFNBQVMsa0JBQWtCLENBQUMsTUFBeUIsRUFBRSxLQUF3QjtJQUM3RSxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXZDLElBQUksT0FBTyxFQUFFO1FBQ1gsd0VBQXdFO1FBQ3hFLHNEQUFzRDtRQUN0RCxJQUFJO1lBQ0YsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ2pDO1FBQUMsTUFBTSxHQUFFO0tBQ1g7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKiBDcmVhdGVzIGEgZGVlcCBjbG9uZSBvZiBhbiBlbGVtZW50LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZXBDbG9uZU5vZGUobm9kZTogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XG4gIGNvbnN0IGNsb25lID0gbm9kZS5jbG9uZU5vZGUodHJ1ZSkgYXMgSFRNTEVsZW1lbnQ7XG4gIGNvbnN0IGRlc2NlbmRhbnRzV2l0aElkID0gY2xvbmUucXVlcnlTZWxlY3RvckFsbCgnW2lkXScpO1xuICBjb25zdCBub2RlTmFtZSA9IG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAvLyBSZW1vdmUgdGhlIGBpZGAgdG8gYXZvaWQgaGF2aW5nIG11bHRpcGxlIGVsZW1lbnRzIHdpdGggdGhlIHNhbWUgaWQgb24gdGhlIHBhZ2UuXG4gIGNsb25lLnJlbW92ZUF0dHJpYnV0ZSgnaWQnKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGRlc2NlbmRhbnRzV2l0aElkLmxlbmd0aDsgaSsrKSB7XG4gICAgZGVzY2VuZGFudHNXaXRoSWRbaV0ucmVtb3ZlQXR0cmlidXRlKCdpZCcpO1xuICB9XG5cbiAgaWYgKG5vZGVOYW1lID09PSAnY2FudmFzJykge1xuICAgIHRyYW5zZmVyQ2FudmFzRGF0YShub2RlIGFzIEhUTUxDYW52YXNFbGVtZW50LCBjbG9uZSBhcyBIVE1MQ2FudmFzRWxlbWVudCk7XG4gIH0gZWxzZSBpZiAobm9kZU5hbWUgPT09ICdpbnB1dCcgfHwgbm9kZU5hbWUgPT09ICdzZWxlY3QnIHx8IG5vZGVOYW1lID09PSAndGV4dGFyZWEnKSB7XG4gICAgdHJhbnNmZXJJbnB1dERhdGEobm9kZSBhcyBIVE1MSW5wdXRFbGVtZW50LCBjbG9uZSBhcyBIVE1MSW5wdXRFbGVtZW50KTtcbiAgfVxuXG4gIHRyYW5zZmVyRGF0YSgnY2FudmFzJywgbm9kZSwgY2xvbmUsIHRyYW5zZmVyQ2FudmFzRGF0YSk7XG4gIHRyYW5zZmVyRGF0YSgnaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QnLCBub2RlLCBjbG9uZSwgdHJhbnNmZXJJbnB1dERhdGEpO1xuICByZXR1cm4gY2xvbmU7XG59XG5cbi8qKiBNYXRjaGVzIGVsZW1lbnRzIGJldHdlZW4gYW4gZWxlbWVudCBhbmQgaXRzIGNsb25lIGFuZCBhbGxvd3MgZm9yIHRoZWlyIGRhdGEgdG8gYmUgY2xvbmVkLiAqL1xuZnVuY3Rpb24gdHJhbnNmZXJEYXRhPFQgZXh0ZW5kcyBFbGVtZW50PihcbiAgc2VsZWN0b3I6IHN0cmluZyxcbiAgbm9kZTogSFRNTEVsZW1lbnQsXG4gIGNsb25lOiBIVE1MRWxlbWVudCxcbiAgY2FsbGJhY2s6IChzb3VyY2U6IFQsIGNsb25lOiBUKSA9PiB2b2lkLFxuKSB7XG4gIGNvbnN0IGRlc2NlbmRhbnRFbGVtZW50cyA9IG5vZGUucXVlcnlTZWxlY3RvckFsbDxUPihzZWxlY3Rvcik7XG5cbiAgaWYgKGRlc2NlbmRhbnRFbGVtZW50cy5sZW5ndGgpIHtcbiAgICBjb25zdCBjbG9uZUVsZW1lbnRzID0gY2xvbmUucXVlcnlTZWxlY3RvckFsbDxUPihzZWxlY3Rvcik7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlc2NlbmRhbnRFbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgY2FsbGJhY2soZGVzY2VuZGFudEVsZW1lbnRzW2ldLCBjbG9uZUVsZW1lbnRzW2ldKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gQ291bnRlciBmb3IgdW5pcXVlIGNsb25lZCByYWRpbyBidXR0b24gbmFtZXMuXG5sZXQgY2xvbmVVbmlxdWVJZCA9IDA7XG5cbi8qKiBUcmFuc2ZlcnMgdGhlIGRhdGEgb2Ygb25lIGlucHV0IGVsZW1lbnQgdG8gYW5vdGhlci4gKi9cbmZ1bmN0aW9uIHRyYW5zZmVySW5wdXREYXRhKFxuICBzb3VyY2U6IEVsZW1lbnQgJiB7dmFsdWU6IHN0cmluZ30sXG4gIGNsb25lOiBFbGVtZW50ICYge3ZhbHVlOiBzdHJpbmc7IG5hbWU6IHN0cmluZzsgdHlwZTogc3RyaW5nfSxcbikge1xuICAvLyBCcm93c2VycyB0aHJvdyBhbiBlcnJvciB3aGVuIGFzc2lnbmluZyB0aGUgdmFsdWUgb2YgYSBmaWxlIGlucHV0IHByb2dyYW1tYXRpY2FsbHkuXG4gIGlmIChjbG9uZS50eXBlICE9PSAnZmlsZScpIHtcbiAgICBjbG9uZS52YWx1ZSA9IHNvdXJjZS52YWx1ZTtcbiAgfVxuXG4gIC8vIFJhZGlvIGJ1dHRvbiBgbmFtZWAgYXR0cmlidXRlcyBtdXN0IGJlIHVuaXF1ZSBmb3IgcmFkaW8gYnV0dG9uIGdyb3Vwc1xuICAvLyBvdGhlcndpc2Ugb3JpZ2luYWwgcmFkaW8gYnV0dG9ucyBjYW4gbG9zZSB0aGVpciBjaGVja2VkIHN0YXRlXG4gIC8vIG9uY2UgdGhlIGNsb25lIGlzIGluc2VydGVkIGluIHRoZSBET00uXG4gIGlmIChjbG9uZS50eXBlID09PSAncmFkaW8nICYmIGNsb25lLm5hbWUpIHtcbiAgICBjbG9uZS5uYW1lID0gYG1hdC1jbG9uZS0ke2Nsb25lLm5hbWV9LSR7Y2xvbmVVbmlxdWVJZCsrfWA7XG4gIH1cbn1cblxuLyoqIFRyYW5zZmVycyB0aGUgZGF0YSBvZiBvbmUgY2FudmFzIGVsZW1lbnQgdG8gYW5vdGhlci4gKi9cbmZ1bmN0aW9uIHRyYW5zZmVyQ2FudmFzRGF0YShzb3VyY2U6IEhUTUxDYW52YXNFbGVtZW50LCBjbG9uZTogSFRNTENhbnZhc0VsZW1lbnQpIHtcbiAgY29uc3QgY29udGV4dCA9IGNsb25lLmdldENvbnRleHQoJzJkJyk7XG5cbiAgaWYgKGNvbnRleHQpIHtcbiAgICAvLyBJbiBzb21lIGNhc2VzIGBkcmF3SW1hZ2VgIGNhbiB0aHJvdyAoZS5nLiBpZiB0aGUgY2FudmFzIHNpemUgaXMgMHgwKS5cbiAgICAvLyBXZSBjYW4ndCBkbyBtdWNoIGFib3V0IGl0IHNvIGp1c3QgaWdub3JlIHRoZSBlcnJvci5cbiAgICB0cnkge1xuICAgICAgY29udGV4dC5kcmF3SW1hZ2Uoc291cmNlLCAwLCAwKTtcbiAgICB9IGNhdGNoIHt9XG4gIH1cbn1cbiJdfQ==
@@ -1,69 +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
- * Shallow-extends a stylesheet object with another stylesheet-like object.
10
- * Note that the keys in `source` have to be dash-cased.
11
- * @docs-private
12
- */
13
- export function extendStyles(dest, source, importantProperties) {
14
- for (let key in source) {
15
- if (source.hasOwnProperty(key)) {
16
- const value = source[key];
17
- if (value) {
18
- dest.setProperty(key, value, importantProperties?.has(key) ? 'important' : '');
19
- }
20
- else {
21
- dest.removeProperty(key);
22
- }
23
- }
24
- }
25
- return dest;
26
- }
27
- /**
28
- * Toggles whether the native drag interactions should be enabled for an element.
29
- * @param element Element on which to toggle the drag interactions.
30
- * @param enable Whether the drag interactions should be enabled.
31
- * @docs-private
32
- */
33
- export function toggleNativeDragInteractions(element, enable) {
34
- const userSelect = enable ? '' : 'none';
35
- extendStyles(element.style, {
36
- 'touch-action': enable ? '' : 'none',
37
- '-webkit-user-drag': enable ? '' : 'none',
38
- '-webkit-tap-highlight-color': enable ? '' : 'transparent',
39
- 'user-select': userSelect,
40
- '-ms-user-select': userSelect,
41
- '-webkit-user-select': userSelect,
42
- '-moz-user-select': userSelect,
43
- });
44
- }
45
- /**
46
- * Toggles whether an element is visible while preserving its dimensions.
47
- * @param element Element whose visibility to toggle
48
- * @param enable Whether the element should be visible.
49
- * @param importantProperties Properties to be set as `!important`.
50
- * @docs-private
51
- */
52
- export function toggleVisibility(element, enable, importantProperties) {
53
- extendStyles(element.style, {
54
- position: enable ? '' : 'fixed',
55
- top: enable ? '' : '0',
56
- opacity: enable ? '' : '0',
57
- left: enable ? '' : '-999em',
58
- }, importantProperties);
59
- }
60
- /**
61
- * Combines a transform string with an optional other transform
62
- * that exited before the base transform was applied.
63
- */
64
- export function combineTransforms(transform, initialTransform) {
65
- return initialTransform && initialTransform != 'none'
66
- ? transform + ' ' + initialTransform
67
- : transform;
68
- }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1zdHlsaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay9kcmFnLWRyb3AvZHJhZy1zdHlsaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQVlIOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUMxQixJQUF5QixFQUN6QixNQUE4QixFQUM5QixtQkFBaUM7SUFFakMsS0FBSyxJQUFJLEdBQUcsSUFBSSxNQUFNLEVBQUU7UUFDdEIsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzlCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUUxQixJQUFJLEtBQUssRUFBRTtnQkFDVCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ2hGO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDMUI7U0FDRjtLQUNGO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsNEJBQTRCLENBQUMsT0FBb0IsRUFBRSxNQUFlO0lBQ2hGLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFFeEMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7UUFDMUIsY0FBYyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNO1FBQ3BDLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNO1FBQ3pDLDZCQUE2QixFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhO1FBQzFELGFBQWEsRUFBRSxVQUFVO1FBQ3pCLGlCQUFpQixFQUFFLFVBQVU7UUFDN0IscUJBQXFCLEVBQUUsVUFBVTtRQUNqQyxrQkFBa0IsRUFBRSxVQUFVO0tBQy9CLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLE9BQW9CLEVBQ3BCLE1BQWUsRUFDZixtQkFBaUM7SUFFakMsWUFBWSxDQUNWLE9BQU8sQ0FBQyxLQUFLLEVBQ2I7UUFDRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU87UUFDL0IsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHO1FBQ3RCLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRztRQUMxQixJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVE7S0FDN0IsRUFDRCxtQkFBbUIsQ0FDcEIsQ0FBQztBQUNKLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsU0FBaUIsRUFBRSxnQkFBeUI7SUFDNUUsT0FBTyxnQkFBZ0IsSUFBSSxnQkFBZ0IsSUFBSSxNQUFNO1FBQ25ELENBQUMsQ0FBQyxTQUFTLEdBQUcsR0FBRyxHQUFHLGdCQUFnQjtRQUNwQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLyoqXG4gKiBFeHRlbmRlZCBDU1NTdHlsZURlY2xhcmF0aW9uIHRoYXQgaW5jbHVkZXMgYSBjb3VwbGUgb2YgZHJhZy1yZWxhdGVkXG4gKiBwcm9wZXJ0aWVzIHRoYXQgYXJlbid0IGluIHRoZSBidWlsdC1pbiBUUyB0eXBpbmdzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERyYWdDU1NTdHlsZURlY2xhcmF0aW9uIGV4dGVuZHMgQ1NTU3R5bGVEZWNsYXJhdGlvbiB7XG4gIG1zU2Nyb2xsU25hcFR5cGU6IHN0cmluZztcbiAgc2Nyb2xsU25hcFR5cGU6IHN0cmluZztcbiAgd2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I6IHN0cmluZztcbn1cblxuLyoqXG4gKiBTaGFsbG93LWV4dGVuZHMgYSBzdHlsZXNoZWV0IG9iamVjdCB3aXRoIGFub3RoZXIgc3R5bGVzaGVldC1saWtlIG9iamVjdC5cbiAqIE5vdGUgdGhhdCB0aGUga2V5cyBpbiBgc291cmNlYCBoYXZlIHRvIGJlIGRhc2gtY2FzZWQuXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmRTdHlsZXMoXG4gIGRlc3Q6IENTU1N0eWxlRGVjbGFyYXRpb24sXG4gIHNvdXJjZTogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgaW1wb3J0YW50UHJvcGVydGllcz86IFNldDxzdHJpbmc+LFxuKSB7XG4gIGZvciAobGV0IGtleSBpbiBzb3VyY2UpIHtcbiAgICBpZiAoc291cmNlLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gc291cmNlW2tleV07XG5cbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBkZXN0LnNldFByb3BlcnR5KGtleSwgdmFsdWUsIGltcG9ydGFudFByb3BlcnRpZXM/LmhhcyhrZXkpID8gJ2ltcG9ydGFudCcgOiAnJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZXN0LnJlbW92ZVByb3BlcnR5KGtleSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRlc3Q7XG59XG5cbi8qKlxuICogVG9nZ2xlcyB3aGV0aGVyIHRoZSBuYXRpdmUgZHJhZyBpbnRlcmFjdGlvbnMgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIGFuIGVsZW1lbnQuXG4gKiBAcGFyYW0gZWxlbWVudCBFbGVtZW50IG9uIHdoaWNoIHRvIHRvZ2dsZSB0aGUgZHJhZyBpbnRlcmFjdGlvbnMuXG4gKiBAcGFyYW0gZW5hYmxlIFdoZXRoZXIgdGhlIGRyYWcgaW50ZXJhY3Rpb25zIHNob3VsZCBiZSBlbmFibGVkLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9nZ2xlTmF0aXZlRHJhZ0ludGVyYWN0aW9ucyhlbGVtZW50OiBIVE1MRWxlbWVudCwgZW5hYmxlOiBib29sZWFuKSB7XG4gIGNvbnN0IHVzZXJTZWxlY3QgPSBlbmFibGUgPyAnJyA6ICdub25lJztcblxuICBleHRlbmRTdHlsZXMoZWxlbWVudC5zdHlsZSwge1xuICAgICd0b3VjaC1hY3Rpb24nOiBlbmFibGUgPyAnJyA6ICdub25lJyxcbiAgICAnLXdlYmtpdC11c2VyLWRyYWcnOiBlbmFibGUgPyAnJyA6ICdub25lJyxcbiAgICAnLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yJzogZW5hYmxlID8gJycgOiAndHJhbnNwYXJlbnQnLFxuICAgICd1c2VyLXNlbGVjdCc6IHVzZXJTZWxlY3QsXG4gICAgJy1tcy11c2VyLXNlbGVjdCc6IHVzZXJTZWxlY3QsXG4gICAgJy13ZWJraXQtdXNlci1zZWxlY3QnOiB1c2VyU2VsZWN0LFxuICAgICctbW96LXVzZXItc2VsZWN0JzogdXNlclNlbGVjdCxcbiAgfSk7XG59XG5cbi8qKlxuICogVG9nZ2xlcyB3aGV0aGVyIGFuIGVsZW1lbnQgaXMgdmlzaWJsZSB3aGlsZSBwcmVzZXJ2aW5nIGl0cyBkaW1lbnNpb25zLlxuICogQHBhcmFtIGVsZW1lbnQgRWxlbWVudCB3aG9zZSB2aXNpYmlsaXR5IHRvIHRvZ2dsZVxuICogQHBhcmFtIGVuYWJsZSBXaGV0aGVyIHRoZSBlbGVtZW50IHNob3VsZCBiZSB2aXNpYmxlLlxuICogQHBhcmFtIGltcG9ydGFudFByb3BlcnRpZXMgUHJvcGVydGllcyB0byBiZSBzZXQgYXMgYCFpbXBvcnRhbnRgLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9nZ2xlVmlzaWJpbGl0eShcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIGVuYWJsZTogYm9vbGVhbixcbiAgaW1wb3J0YW50UHJvcGVydGllcz86IFNldDxzdHJpbmc+LFxuKSB7XG4gIGV4dGVuZFN0eWxlcyhcbiAgICBlbGVtZW50LnN0eWxlLFxuICAgIHtcbiAgICAgIHBvc2l0aW9uOiBlbmFibGUgPyAnJyA6ICdmaXhlZCcsXG4gICAgICB0b3A6IGVuYWJsZSA/ICcnIDogJzAnLFxuICAgICAgb3BhY2l0eTogZW5hYmxlID8gJycgOiAnMCcsXG4gICAgICBsZWZ0OiBlbmFibGUgPyAnJyA6ICctOTk5ZW0nLFxuICAgIH0sXG4gICAgaW1wb3J0YW50UHJvcGVydGllcyxcbiAgKTtcbn1cblxuLyoqXG4gKiBDb21iaW5lcyBhIHRyYW5zZm9ybSBzdHJpbmcgd2l0aCBhbiBvcHRpb25hbCBvdGhlciB0cmFuc2Zvcm1cbiAqIHRoYXQgZXhpdGVkIGJlZm9yZSB0aGUgYmFzZSB0cmFuc2Zvcm0gd2FzIGFwcGxpZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5lVHJhbnNmb3Jtcyh0cmFuc2Zvcm06IHN0cmluZywgaW5pdGlhbFRyYW5zZm9ybT86IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBpbml0aWFsVHJhbnNmb3JtICYmIGluaXRpYWxUcmFuc2Zvcm0gIT0gJ25vbmUnXG4gICAgPyB0cmFuc2Zvcm0gKyAnICcgKyBpbml0aWFsVHJhbnNmb3JtXG4gICAgOiB0cmFuc2Zvcm07XG59XG4iXX0=
@@ -1,76 +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 { _getEventTarget } from '@angular/cdk/platform';
9
- import { getMutableClientRect, adjustClientRect } from './client-rect';
10
- /** Keeps track of the scroll position and dimensions of the parents of an element. */
11
- export class ParentPositionTracker {
12
- constructor(_document) {
13
- this._document = _document;
14
- /** Cached positions of the scrollable parent elements. */
15
- this.positions = new Map();
16
- }
17
- /** Clears the cached positions. */
18
- clear() {
19
- this.positions.clear();
20
- }
21
- /** Caches the positions. Should be called at the beginning of a drag sequence. */
22
- cache(elements) {
23
- this.clear();
24
- this.positions.set(this._document, {
25
- scrollPosition: this.getViewportScrollPosition(),
26
- });
27
- elements.forEach(element => {
28
- this.positions.set(element, {
29
- scrollPosition: { top: element.scrollTop, left: element.scrollLeft },
30
- clientRect: getMutableClientRect(element),
31
- });
32
- });
33
- }
34
- /** Handles scrolling while a drag is taking place. */
35
- handleScroll(event) {
36
- const target = _getEventTarget(event);
37
- const cachedPosition = this.positions.get(target);
38
- if (!cachedPosition) {
39
- return null;
40
- }
41
- const scrollPosition = cachedPosition.scrollPosition;
42
- let newTop;
43
- let newLeft;
44
- if (target === this._document) {
45
- const viewportScrollPosition = this.getViewportScrollPosition();
46
- newTop = viewportScrollPosition.top;
47
- newLeft = viewportScrollPosition.left;
48
- }
49
- else {
50
- newTop = target.scrollTop;
51
- newLeft = target.scrollLeft;
52
- }
53
- const topDifference = scrollPosition.top - newTop;
54
- const leftDifference = scrollPosition.left - newLeft;
55
- // Go through and update the cached positions of the scroll
56
- // parents that are inside the element that was scrolled.
57
- this.positions.forEach((position, node) => {
58
- if (position.clientRect && target !== node && target.contains(node)) {
59
- adjustClientRect(position.clientRect, topDifference, leftDifference);
60
- }
61
- });
62
- scrollPosition.top = newTop;
63
- scrollPosition.left = newLeft;
64
- return { top: topDifference, left: leftDifference };
65
- }
66
- /**
67
- * Gets the scroll position of the viewport. Note that we use the scrollX and scrollY directly,
68
- * instead of going through the `ViewportRuler`, because the first value the ruler looks at is
69
- * the top/left offset of the `document.documentElement` which works for most cases, but breaks
70
- * if the element is offset by something like the `BlockScrollStrategy`.
71
- */
72
- getViewportScrollPosition() {
73
- return { top: window.scrollY, left: window.scrollX };
74
- }
75
- }
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyZW50LXBvc2l0aW9uLXRyYWNrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL2RyYWctZHJvcC9wYXJlbnQtcG9zaXRpb24tdHJhY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFDLG9CQUFvQixFQUFFLGdCQUFnQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBUXJFLHNGQUFzRjtBQUN0RixNQUFNLE9BQU8scUJBQXFCO0lBVWhDLFlBQW9CLFNBQW1CO1FBQW5CLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFUdkMsMERBQTBEO1FBQ2pELGNBQVMsR0FBRyxJQUFJLEdBQUcsRUFNekIsQ0FBQztJQUVzQyxDQUFDO0lBRTNDLG1DQUFtQztJQUNuQyxLQUFLO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsa0ZBQWtGO0lBQ2xGLEtBQUssQ0FBQyxRQUFnQztRQUNwQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2pDLGNBQWMsRUFBRSxJQUFJLENBQUMseUJBQXlCLEVBQUU7U0FDakQsQ0FBQyxDQUFDO1FBRUgsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUU7Z0JBQzFCLGNBQWMsRUFBRSxFQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsVUFBVSxFQUFDO2dCQUNsRSxVQUFVLEVBQUUsb0JBQW9CLENBQUMsT0FBTyxDQUFDO2FBQzFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHNEQUFzRDtJQUN0RCxZQUFZLENBQUMsS0FBWTtRQUN2QixNQUFNLE1BQU0sR0FBRyxlQUFlLENBQXlCLEtBQUssQ0FBRSxDQUFDO1FBQy9ELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWxELElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDbkIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxjQUFjLENBQUM7UUFDckQsSUFBSSxNQUFjLENBQUM7UUFDbkIsSUFBSSxPQUFlLENBQUM7UUFFcEIsSUFBSSxNQUFNLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUM3QixNQUFNLHNCQUFzQixHQUFHLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1lBQ2hFLE1BQU0sR0FBRyxzQkFBc0IsQ0FBQyxHQUFHLENBQUM7WUFDcEMsT0FBTyxHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQztTQUN2QzthQUFNO1lBQ0wsTUFBTSxHQUFJLE1BQXNCLENBQUMsU0FBUyxDQUFDO1lBQzNDLE9BQU8sR0FBSSxNQUFzQixDQUFDLFVBQVUsQ0FBQztTQUM5QztRQUVELE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDO1FBQ2xELE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO1FBRXJELDJEQUEyRDtRQUMzRCx5REFBeUQ7UUFDekQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDeEMsSUFBSSxRQUFRLENBQUMsVUFBVSxJQUFJLE1BQU0sS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbkUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUM7YUFDdEU7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILGNBQWMsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDO1FBQzVCLGNBQWMsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO1FBRTlCLE9BQU8sRUFBQyxHQUFHLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCx5QkFBeUI7UUFDdkIsT0FBTyxFQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFDLENBQUM7SUFDckQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7X2dldEV2ZW50VGFyZ2V0fSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHtnZXRNdXRhYmxlQ2xpZW50UmVjdCwgYWRqdXN0Q2xpZW50UmVjdH0gZnJvbSAnLi9jbGllbnQtcmVjdCc7XG5cbi8qKiBPYmplY3QgaG9sZGluZyB0aGUgc2Nyb2xsIHBvc2l0aW9uIG9mIHNvbWV0aGluZy4gKi9cbmludGVyZmFjZSBTY3JvbGxQb3NpdGlvbiB7XG4gIHRvcDogbnVtYmVyO1xuICBsZWZ0OiBudW1iZXI7XG59XG5cbi8qKiBLZWVwcyB0cmFjayBvZiB0aGUgc2Nyb2xsIHBvc2l0aW9uIGFuZCBkaW1lbnNpb25zIG9mIHRoZSBwYXJlbnRzIG9mIGFuIGVsZW1lbnQuICovXG5leHBvcnQgY2xhc3MgUGFyZW50UG9zaXRpb25UcmFja2VyIHtcbiAgLyoqIENhY2hlZCBwb3NpdGlvbnMgb2YgdGhlIHNjcm9sbGFibGUgcGFyZW50IGVsZW1lbnRzLiAqL1xuICByZWFkb25seSBwb3NpdGlvbnMgPSBuZXcgTWFwPFxuICAgIERvY3VtZW50IHwgSFRNTEVsZW1lbnQsXG4gICAge1xuICAgICAgc2Nyb2xsUG9zaXRpb246IFNjcm9sbFBvc2l0aW9uO1xuICAgICAgY2xpZW50UmVjdD86IENsaWVudFJlY3Q7XG4gICAgfVxuICA+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZG9jdW1lbnQ6IERvY3VtZW50KSB7fVxuXG4gIC8qKiBDbGVhcnMgdGhlIGNhY2hlZCBwb3NpdGlvbnMuICovXG4gIGNsZWFyKCkge1xuICAgIHRoaXMucG9zaXRpb25zLmNsZWFyKCk7XG4gIH1cblxuICAvKiogQ2FjaGVzIHRoZSBwb3NpdGlvbnMuIFNob3VsZCBiZSBjYWxsZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGRyYWcgc2VxdWVuY2UuICovXG4gIGNhY2hlKGVsZW1lbnRzOiByZWFkb25seSBIVE1MRWxlbWVudFtdKSB7XG4gICAgdGhpcy5jbGVhcigpO1xuICAgIHRoaXMucG9zaXRpb25zLnNldCh0aGlzLl9kb2N1bWVudCwge1xuICAgICAgc2Nyb2xsUG9zaXRpb246IHRoaXMuZ2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbigpLFxuICAgIH0pO1xuXG4gICAgZWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIHRoaXMucG9zaXRpb25zLnNldChlbGVtZW50LCB7XG4gICAgICAgIHNjcm9sbFBvc2l0aW9uOiB7dG9wOiBlbGVtZW50LnNjcm9sbFRvcCwgbGVmdDogZWxlbWVudC5zY3JvbGxMZWZ0fSxcbiAgICAgICAgY2xpZW50UmVjdDogZ2V0TXV0YWJsZUNsaWVudFJlY3QoZWxlbWVudCksXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBIYW5kbGVzIHNjcm9sbGluZyB3aGlsZSBhIGRyYWcgaXMgdGFraW5nIHBsYWNlLiAqL1xuICBoYW5kbGVTY3JvbGwoZXZlbnQ6IEV2ZW50KTogU2Nyb2xsUG9zaXRpb24gfCBudWxsIHtcbiAgICBjb25zdCB0YXJnZXQgPSBfZ2V0RXZlbnRUYXJnZXQ8SFRNTEVsZW1lbnQgfCBEb2N1bWVudD4oZXZlbnQpITtcbiAgICBjb25zdCBjYWNoZWRQb3NpdGlvbiA9IHRoaXMucG9zaXRpb25zLmdldCh0YXJnZXQpO1xuXG4gICAgaWYgKCFjYWNoZWRQb3NpdGlvbikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qgc2Nyb2xsUG9zaXRpb24gPSBjYWNoZWRQb3NpdGlvbi5zY3JvbGxQb3NpdGlvbjtcbiAgICBsZXQgbmV3VG9wOiBudW1iZXI7XG4gICAgbGV0IG5ld0xlZnQ6IG51bWJlcjtcblxuICAgIGlmICh0YXJnZXQgPT09IHRoaXMuX2RvY3VtZW50KSB7XG4gICAgICBjb25zdCB2aWV3cG9ydFNjcm9sbFBvc2l0aW9uID0gdGhpcy5nZXRWaWV3cG9ydFNjcm9sbFBvc2l0aW9uKCk7XG4gICAgICBuZXdUb3AgPSB2aWV3cG9ydFNjcm9sbFBvc2l0aW9uLnRvcDtcbiAgICAgIG5ld0xlZnQgPSB2aWV3cG9ydFNjcm9sbFBvc2l0aW9uLmxlZnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1RvcCA9ICh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbFRvcDtcbiAgICAgIG5ld0xlZnQgPSAodGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5zY3JvbGxMZWZ0O1xuICAgIH1cblxuICAgIGNvbnN0IHRvcERpZmZlcmVuY2UgPSBzY3JvbGxQb3NpdGlvbi50b3AgLSBuZXdUb3A7XG4gICAgY29uc3QgbGVmdERpZmZlcmVuY2UgPSBzY3JvbGxQb3NpdGlvbi5sZWZ0IC0gbmV3TGVmdDtcblxuICAgIC8vIEdvIHRocm91Z2ggYW5kIHVwZGF0ZSB0aGUgY2FjaGVkIHBvc2l0aW9ucyBvZiB0aGUgc2Nyb2xsXG4gICAgLy8gcGFyZW50cyB0aGF0IGFyZSBpbnNpZGUgdGhlIGVsZW1lbnQgdGhhdCB3YXMgc2Nyb2xsZWQuXG4gICAgdGhpcy5wb3NpdGlvbnMuZm9yRWFjaCgocG9zaXRpb24sIG5vZGUpID0+IHtcbiAgICAgIGlmIChwb3NpdGlvbi5jbGllbnRSZWN0ICYmIHRhcmdldCAhPT0gbm9kZSAmJiB0YXJnZXQuY29udGFpbnMobm9kZSkpIHtcbiAgICAgICAgYWRqdXN0Q2xpZW50UmVjdChwb3NpdGlvbi5jbGllbnRSZWN0LCB0b3BEaWZmZXJlbmNlLCBsZWZ0RGlmZmVyZW5jZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBzY3JvbGxQb3NpdGlvbi50b3AgPSBuZXdUb3A7XG4gICAgc2Nyb2xsUG9zaXRpb24ubGVmdCA9IG5ld0xlZnQ7XG5cbiAgICByZXR1cm4ge3RvcDogdG9wRGlmZmVyZW5jZSwgbGVmdDogbGVmdERpZmZlcmVuY2V9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHNjcm9sbCBwb3NpdGlvbiBvZiB0aGUgdmlld3BvcnQuIE5vdGUgdGhhdCB3ZSB1c2UgdGhlIHNjcm9sbFggYW5kIHNjcm9sbFkgZGlyZWN0bHksXG4gICAqIGluc3RlYWQgb2YgZ29pbmcgdGhyb3VnaCB0aGUgYFZpZXdwb3J0UnVsZXJgLCBiZWNhdXNlIHRoZSBmaXJzdCB2YWx1ZSB0aGUgcnVsZXIgbG9va3MgYXQgaXNcbiAgICogdGhlIHRvcC9sZWZ0IG9mZnNldCBvZiB0aGUgYGRvY3VtZW50LmRvY3VtZW50RWxlbWVudGAgd2hpY2ggd29ya3MgZm9yIG1vc3QgY2FzZXMsIGJ1dCBicmVha3NcbiAgICogaWYgdGhlIGVsZW1lbnQgaXMgb2Zmc2V0IGJ5IHNvbWV0aGluZyBsaWtlIHRoZSBgQmxvY2tTY3JvbGxTdHJhdGVneWAuXG4gICAqL1xuICBnZXRWaWV3cG9ydFNjcm9sbFBvc2l0aW9uKCkge1xuICAgIHJldHVybiB7dG9wOiB3aW5kb3cuc2Nyb2xsWSwgbGVmdDogd2luZG93LnNjcm9sbFh9O1xuICB9XG59XG4iXX0=
@@ -1,36 +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
- /** Parses a CSS time value to milliseconds. */
9
- function parseCssTimeUnitsToMs(value) {
10
- // Some browsers will return it in seconds, whereas others will return milliseconds.
11
- const multiplier = value.toLowerCase().indexOf('ms') > -1 ? 1 : 1000;
12
- return parseFloat(value) * multiplier;
13
- }
14
- /** Gets the transform transition duration, including the delay, of an element in milliseconds. */
15
- export function getTransformTransitionDurationInMs(element) {
16
- const computedStyle = getComputedStyle(element);
17
- const transitionedProperties = parseCssPropertyValue(computedStyle, 'transition-property');
18
- const property = transitionedProperties.find(prop => prop === 'transform' || prop === 'all');
19
- // If there's no transition for `all` or `transform`, we shouldn't do anything.
20
- if (!property) {
21
- return 0;
22
- }
23
- // Get the index of the property that we're interested in and match
24
- // it up to the same index in `transition-delay` and `transition-duration`.
25
- const propertyIndex = transitionedProperties.indexOf(property);
26
- const rawDurations = parseCssPropertyValue(computedStyle, 'transition-duration');
27
- const rawDelays = parseCssPropertyValue(computedStyle, 'transition-delay');
28
- return (parseCssTimeUnitsToMs(rawDurations[propertyIndex]) +
29
- parseCssTimeUnitsToMs(rawDelays[propertyIndex]));
30
- }
31
- /** Parses out multiple values from a computed style into an array. */
32
- function parseCssPropertyValue(computedStyle, name) {
33
- const value = computedStyle.getPropertyValue(name);
34
- return value.split(',').map(part => part.trim());
35
- }
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNpdGlvbi1kdXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGsvZHJhZy1kcm9wL3RyYW5zaXRpb24tZHVyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsK0NBQStDO0FBQy9DLFNBQVMscUJBQXFCLENBQUMsS0FBYTtJQUMxQyxvRkFBb0Y7SUFDcEYsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDckUsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsVUFBVSxDQUFDO0FBQ3hDLENBQUM7QUFFRCxrR0FBa0c7QUFDbEcsTUFBTSxVQUFVLGtDQUFrQyxDQUFDLE9BQW9CO0lBQ3JFLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELE1BQU0sc0JBQXNCLEdBQUcscUJBQXFCLENBQUMsYUFBYSxFQUFFLHFCQUFxQixDQUFDLENBQUM7SUFDM0YsTUFBTSxRQUFRLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLFdBQVcsSUFBSSxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUM7SUFFN0YsK0VBQStFO0lBQy9FLElBQUksQ0FBQyxRQUFRLEVBQUU7UUFDYixPQUFPLENBQUMsQ0FBQztLQUNWO0lBRUQsbUVBQW1FO0lBQ25FLDJFQUEyRTtJQUMzRSxNQUFNLGFBQWEsR0FBRyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0QsTUFBTSxZQUFZLEdBQUcscUJBQXFCLENBQUMsYUFBYSxFQUFFLHFCQUFxQixDQUFDLENBQUM7SUFDakYsTUFBTSxTQUFTLEdBQUcscUJBQXFCLENBQUMsYUFBYSxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFFM0UsT0FBTyxDQUNMLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsRCxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FDaEQsQ0FBQztBQUNKLENBQUM7QUFFRCxzRUFBc0U7QUFDdEUsU0FBUyxxQkFBcUIsQ0FBQyxhQUFrQyxFQUFFLElBQVk7SUFDN0UsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25ELE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNuRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKiBQYXJzZXMgYSBDU1MgdGltZSB2YWx1ZSB0byBtaWxsaXNlY29uZHMuICovXG5mdW5jdGlvbiBwYXJzZUNzc1RpbWVVbml0c1RvTXModmFsdWU6IHN0cmluZyk6IG51bWJlciB7XG4gIC8vIFNvbWUgYnJvd3NlcnMgd2lsbCByZXR1cm4gaXQgaW4gc2Vjb25kcywgd2hlcmVhcyBvdGhlcnMgd2lsbCByZXR1cm4gbWlsbGlzZWNvbmRzLlxuICBjb25zdCBtdWx0aXBsaWVyID0gdmFsdWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdtcycpID4gLTEgPyAxIDogMTAwMDtcbiAgcmV0dXJuIHBhcnNlRmxvYXQodmFsdWUpICogbXVsdGlwbGllcjtcbn1cblxuLyoqIEdldHMgdGhlIHRyYW5zZm9ybSB0cmFuc2l0aW9uIGR1cmF0aW9uLCBpbmNsdWRpbmcgdGhlIGRlbGF5LCBvZiBhbiBlbGVtZW50IGluIG1pbGxpc2Vjb25kcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUcmFuc2Zvcm1UcmFuc2l0aW9uRHVyYXRpb25Jbk1zKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcbiAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIGNvbnN0IHRyYW5zaXRpb25lZFByb3BlcnRpZXMgPSBwYXJzZUNzc1Byb3BlcnR5VmFsdWUoY29tcHV0ZWRTdHlsZSwgJ3RyYW5zaXRpb24tcHJvcGVydHknKTtcbiAgY29uc3QgcHJvcGVydHkgPSB0cmFuc2l0aW9uZWRQcm9wZXJ0aWVzLmZpbmQocHJvcCA9PiBwcm9wID09PSAndHJhbnNmb3JtJyB8fCBwcm9wID09PSAnYWxsJyk7XG5cbiAgLy8gSWYgdGhlcmUncyBubyB0cmFuc2l0aW9uIGZvciBgYWxsYCBvciBgdHJhbnNmb3JtYCwgd2Ugc2hvdWxkbid0IGRvIGFueXRoaW5nLlxuICBpZiAoIXByb3BlcnR5KSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICAvLyBHZXQgdGhlIGluZGV4IG9mIHRoZSBwcm9wZXJ0eSB0aGF0IHdlJ3JlIGludGVyZXN0ZWQgaW4gYW5kIG1hdGNoXG4gIC8vIGl0IHVwIHRvIHRoZSBzYW1lIGluZGV4IGluIGB0cmFuc2l0aW9uLWRlbGF5YCBhbmQgYHRyYW5zaXRpb24tZHVyYXRpb25gLlxuICBjb25zdCBwcm9wZXJ0eUluZGV4ID0gdHJhbnNpdGlvbmVkUHJvcGVydGllcy5pbmRleE9mKHByb3BlcnR5KTtcbiAgY29uc3QgcmF3RHVyYXRpb25zID0gcGFyc2VDc3NQcm9wZXJ0eVZhbHVlKGNvbXB1dGVkU3R5bGUsICd0cmFuc2l0aW9uLWR1cmF0aW9uJyk7XG4gIGNvbnN0IHJhd0RlbGF5cyA9IHBhcnNlQ3NzUHJvcGVydHlWYWx1ZShjb21wdXRlZFN0eWxlLCAndHJhbnNpdGlvbi1kZWxheScpO1xuXG4gIHJldHVybiAoXG4gICAgcGFyc2VDc3NUaW1lVW5pdHNUb01zKHJhd0R1cmF0aW9uc1twcm9wZXJ0eUluZGV4XSkgK1xuICAgIHBhcnNlQ3NzVGltZVVuaXRzVG9NcyhyYXdEZWxheXNbcHJvcGVydHlJbmRleF0pXG4gICk7XG59XG5cbi8qKiBQYXJzZXMgb3V0IG11bHRpcGxlIHZhbHVlcyBmcm9tIGEgY29tcHV0ZWQgc3R5bGUgaW50byBhbiBhcnJheS4gKi9cbmZ1bmN0aW9uIHBhcnNlQ3NzUHJvcGVydHlWYWx1ZShjb21wdXRlZFN0eWxlOiBDU1NTdHlsZURlY2xhcmF0aW9uLCBuYW1lOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHZhbHVlID0gY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpO1xuICByZXR1cm4gdmFsdWUuc3BsaXQoJywnKS5tYXAocGFydCA9PiBwYXJ0LnRyaW0oKSk7XG59XG4iXX0=