@angular/cdk 10.0.0-rc.3 → 10.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. package/a11y/aria-describer/aria-describer.d.ts +10 -1
  2. package/a11y/focus-trap/focus-trap.d.ts +4 -2
  3. package/a11y/index.metadata.json +1 -1
  4. package/a11y/interactivity-checker/interactivity-checker.d.ts +11 -1
  5. package/a11y/key-manager/list-key-manager.d.ts +6 -0
  6. package/accordion/accordion.d.ts +7 -1
  7. package/accordion/index.d.ts +1 -0
  8. package/accordion/index.metadata.json +1 -1
  9. package/bundles/cdk-a11y.umd.js +78 -15
  10. package/bundles/cdk-a11y.umd.js.map +1 -1
  11. package/bundles/cdk-a11y.umd.min.js +11 -11
  12. package/bundles/cdk-a11y.umd.min.js.map +1 -1
  13. package/bundles/cdk-accordion.umd.js +12 -4
  14. package/bundles/cdk-accordion.umd.js.map +1 -1
  15. package/bundles/cdk-accordion.umd.min.js +2 -2
  16. package/bundles/cdk-accordion.umd.min.js.map +1 -1
  17. package/bundles/cdk-drag-drop.umd.js +717 -641
  18. package/bundles/cdk-drag-drop.umd.js.map +1 -1
  19. package/bundles/cdk-drag-drop.umd.min.js +8 -16
  20. package/bundles/cdk-drag-drop.umd.min.js.map +1 -1
  21. package/bundles/cdk-overlay.umd.js +199 -42
  22. package/bundles/cdk-overlay.umd.js.map +1 -1
  23. package/bundles/cdk-overlay.umd.min.js +11 -18
  24. package/bundles/cdk-overlay.umd.min.js.map +1 -1
  25. package/bundles/cdk-platform.umd.js +0 -1
  26. package/bundles/cdk-platform.umd.js.map +1 -1
  27. package/bundles/cdk-platform.umd.min.js +2 -2
  28. package/bundles/cdk-platform.umd.min.js.map +1 -1
  29. package/bundles/cdk-scrolling.umd.js +26 -4
  30. package/bundles/cdk-scrolling.umd.js.map +1 -1
  31. package/bundles/cdk-scrolling.umd.min.js +11 -4
  32. package/bundles/cdk-scrolling.umd.min.js.map +1 -1
  33. package/bundles/cdk-testing-protractor.umd.min.js +1 -1
  34. package/bundles/cdk-testing-protractor.umd.min.js.map +1 -1
  35. package/bundles/cdk-testing-testbed.umd.min.js +8 -8
  36. package/bundles/cdk-testing-testbed.umd.min.js.map +1 -1
  37. package/bundles/cdk-testing.umd.js +32 -0
  38. package/bundles/cdk-testing.umd.js.map +1 -1
  39. package/bundles/cdk-testing.umd.min.js +5 -5
  40. package/bundles/cdk-testing.umd.min.js.map +1 -1
  41. package/bundles/cdk-tree.umd.js +6 -2
  42. package/bundles/cdk-tree.umd.js.map +1 -1
  43. package/bundles/cdk-tree.umd.min.js +3 -3
  44. package/bundles/cdk-tree.umd.min.js.map +1 -1
  45. package/bundles/cdk.umd.js +1 -1
  46. package/bundles/cdk.umd.js.map +1 -1
  47. package/bundles/cdk.umd.min.js +1 -1
  48. package/bundles/cdk.umd.min.js.map +1 -1
  49. package/drag-drop/directives/drag-handle.d.ts +7 -1
  50. package/drag-drop/directives/drag-placeholder.d.ts +7 -1
  51. package/drag-drop/directives/drag-preview.d.ts +7 -1
  52. package/drag-drop/directives/drag.d.ts +4 -14
  53. package/drag-drop/directives/drop-list-group.d.ts +7 -1
  54. package/drag-drop/directives/drop-list.d.ts +7 -1
  55. package/drag-drop/drag-ref.d.ts +6 -0
  56. package/drag-drop/drop-list-ref.d.ts +3 -2
  57. package/drag-drop/index.d.ts +2 -2
  58. package/drag-drop/index.metadata.json +1 -1
  59. package/esm2015/a11y/a11y-module.js +15 -19
  60. package/esm2015/a11y/aria-describer/aria-describer.js +177 -167
  61. package/esm2015/a11y/focus-monitor/focus-monitor.js +337 -345
  62. package/esm2015/a11y/focus-trap/configurable-focus-trap-factory.js +30 -34
  63. package/esm2015/a11y/focus-trap/focus-trap-manager.js +36 -40
  64. package/esm2015/a11y/focus-trap/focus-trap.js +85 -82
  65. package/esm2015/a11y/high-contrast-mode/high-contrast-mode-detector.js +56 -60
  66. package/esm2015/a11y/interactivity-checker/interactivity-checker.js +113 -104
  67. package/esm2015/a11y/key-manager/list-key-manager.js +29 -4
  68. package/esm2015/a11y/live-announcer/live-announcer.js +138 -146
  69. package/esm2015/accordion/accordion-item.js +119 -123
  70. package/esm2015/accordion/accordion-module.js +9 -13
  71. package/esm2015/accordion/accordion.js +49 -46
  72. package/esm2015/accordion/index.js +2 -1
  73. package/esm2015/bidi/bidi-module.js +9 -13
  74. package/esm2015/bidi/dir.js +41 -45
  75. package/esm2015/bidi/directionality.js +27 -31
  76. package/esm2015/clipboard/clipboard-module.js +9 -13
  77. package/esm2015/clipboard/clipboard.js +36 -40
  78. package/esm2015/clipboard/copy-to-clipboard.js +71 -75
  79. package/esm2015/collections/unique-selection-dispatcher.js +33 -37
  80. package/esm2015/drag-drop/directives/drag-handle.js +42 -39
  81. package/esm2015/drag-drop/directives/drag-placeholder.js +24 -21
  82. package/esm2015/drag-drop/directives/drag-preview.js +29 -26
  83. package/esm2015/drag-drop/directives/drag.js +313 -319
  84. package/esm2015/drag-drop/directives/drop-list-group.js +32 -29
  85. package/esm2015/drag-drop/directives/drop-list.js +251 -250
  86. package/esm2015/drag-drop/drag-drop-module.js +27 -31
  87. package/esm2015/drag-drop/drag-drop-registry.js +139 -143
  88. package/esm2015/drag-drop/drag-drop.js +33 -37
  89. package/esm2015/drag-drop/drag-ref.js +59 -25
  90. package/esm2015/drag-drop/drop-list-ref.js +15 -9
  91. package/esm2015/drag-drop/index.js +3 -2
  92. package/esm2015/layout/breakpoints-observer.js +81 -85
  93. package/esm2015/layout/layout-module.js +6 -10
  94. package/esm2015/layout/media-matcher.js +28 -32
  95. package/esm2015/observers/observe-content.js +147 -163
  96. package/esm2015/overlay/dispatchers/base-overlay-dispatcher.js +51 -0
  97. package/esm2015/overlay/dispatchers/index.js +10 -0
  98. package/esm2015/overlay/dispatchers/overlay-keyboard-dispatcher.js +79 -0
  99. package/esm2015/overlay/dispatchers/overlay-outside-click-dispatcher.js +94 -0
  100. package/esm2015/overlay/fullscreen-overlay-container.js +70 -74
  101. package/esm2015/overlay/index.js +5 -4
  102. package/esm2015/overlay/overlay-config.js +5 -1
  103. package/esm2015/overlay/overlay-container.js +69 -73
  104. package/esm2015/overlay/overlay-directives.js +245 -243
  105. package/esm2015/overlay/overlay-module.js +15 -19
  106. package/esm2015/overlay/overlay-ref.js +24 -2
  107. package/esm2015/overlay/overlay-reference.js +1 -1
  108. package/esm2015/overlay/overlay.js +93 -92
  109. package/esm2015/overlay/position/connected-position.js +14 -18
  110. package/esm2015/overlay/position/overlay-position-builder.js +43 -47
  111. package/esm2015/overlay/public-api.js +2 -2
  112. package/esm2015/overlay/scroll/scroll-strategy-options.js +33 -37
  113. package/esm2015/platform/features/scrolling.js +1 -2
  114. package/esm2015/platform/platform-module.js +6 -10
  115. package/esm2015/platform/platform.js +48 -52
  116. package/esm2015/portal/portal-directives.js +181 -201
  117. package/esm2015/scrolling/fixed-size-virtual-scroll.js +57 -47
  118. package/esm2015/scrolling/public-api.js +2 -1
  119. package/esm2015/scrolling/scroll-dispatcher.js +139 -143
  120. package/esm2015/scrolling/scrollable.js +135 -139
  121. package/esm2015/scrolling/scrolling-module.js +32 -40
  122. package/esm2015/scrolling/viewport-ruler.js +105 -109
  123. package/esm2015/scrolling/virtual-for-of.js +264 -268
  124. package/esm2015/scrolling/virtual-scroll-repeater.js +8 -0
  125. package/esm2015/scrolling/virtual-scroll-viewport.js +318 -322
  126. package/esm2015/stepper/step-header.js +20 -24
  127. package/esm2015/stepper/step-label.js +13 -17
  128. package/esm2015/stepper/stepper-button.js +59 -67
  129. package/esm2015/stepper/stepper-module.js +24 -28
  130. package/esm2015/stepper/stepper.js +313 -321
  131. package/esm2015/table/cell.js +129 -157
  132. package/esm2015/table/row.js +183 -219
  133. package/esm2015/table/table-module.js +9 -13
  134. package/esm2015/table/table.js +765 -785
  135. package/esm2015/table/text-column.js +85 -89
  136. package/esm2015/testing/component-harness.js +19 -1
  137. package/esm2015/testing/harness-environment.js +7 -1
  138. package/esm2015/text-field/autofill.js +89 -97
  139. package/esm2015/text-field/autosize.js +225 -229
  140. package/esm2015/text-field/text-field-module.js +10 -14
  141. package/esm2015/tree/control/nested-tree-control.js +7 -3
  142. package/esm2015/tree/nested-node.js +79 -83
  143. package/esm2015/tree/node.js +17 -21
  144. package/esm2015/tree/outlet.js +15 -19
  145. package/esm2015/tree/padding.js +88 -92
  146. package/esm2015/tree/toggle.js +32 -36
  147. package/esm2015/tree/tree-module.js +10 -14
  148. package/esm2015/tree/tree.js +266 -274
  149. package/esm2015/version.js +1 -1
  150. package/fesm2015/a11y.js +1021 -996
  151. package/fesm2015/a11y.js.map +1 -1
  152. package/fesm2015/accordion.js +173 -175
  153. package/fesm2015/accordion.js.map +1 -1
  154. package/fesm2015/bidi.js +74 -83
  155. package/fesm2015/bidi.js.map +1 -1
  156. package/fesm2015/cdk.js +1 -1
  157. package/fesm2015/cdk.js.map +1 -1
  158. package/fesm2015/clipboard.js +113 -122
  159. package/fesm2015/clipboard.js.map +1 -1
  160. package/fesm2015/collections.js +32 -35
  161. package/fesm2015/collections.js.map +1 -1
  162. package/fesm2015/drag-drop.js +1005 -961
  163. package/fesm2015/drag-drop.js.map +1 -1
  164. package/fesm2015/layout.js +111 -120
  165. package/fesm2015/layout.js.map +1 -1
  166. package/fesm2015/observers.js +146 -158
  167. package/fesm2015/observers.js.map +1 -1
  168. package/fesm2015/overlay.js +793 -659
  169. package/fesm2015/overlay.js.map +1 -1
  170. package/fesm2015/platform.js +52 -59
  171. package/fesm2015/platform.js.map +1 -1
  172. package/fesm2015/portal.js +180 -195
  173. package/fesm2015/portal.js.map +1 -1
  174. package/fesm2015/scrolling.js +1058 -1060
  175. package/fesm2015/scrolling.js.map +1 -1
  176. package/fesm2015/stepper.js +424 -445
  177. package/fesm2015/stepper.js.map +1 -1
  178. package/fesm2015/table.js +1178 -1247
  179. package/fesm2015/table.js.map +1 -1
  180. package/fesm2015/testing.js +25 -1
  181. package/fesm2015/testing.js.map +1 -1
  182. package/fesm2015/text-field.js +318 -330
  183. package/fesm2015/text-field.js.map +1 -1
  184. package/fesm2015/tree.js +517 -537
  185. package/fesm2015/tree.js.map +1 -1
  186. package/overlay/dispatchers/base-overlay-dispatcher.d.ts +28 -0
  187. package/overlay/dispatchers/index.d.ts +9 -0
  188. package/overlay/{keyboard → dispatchers}/overlay-keyboard-dispatcher.d.ts +4 -10
  189. package/overlay/dispatchers/overlay-outside-click-dispatcher.d.ts +27 -0
  190. package/overlay/index.d.ts +4 -3
  191. package/overlay/index.metadata.json +1 -1
  192. package/overlay/overlay-config.d.ts +4 -0
  193. package/overlay/overlay-directives.d.ts +4 -0
  194. package/overlay/overlay-ref.d.ts +8 -2
  195. package/overlay/overlay-reference.d.ts +1 -0
  196. package/overlay/overlay.d.ts +4 -2
  197. package/overlay/public-api.d.ts +1 -1
  198. package/package.json +3 -3
  199. package/schematics/index.js +1 -1
  200. package/schematics/migration.json +5 -0
  201. package/schematics/ng-add/index.js +1 -1
  202. package/schematics/ng-update/data/index.js +1 -1
  203. package/schematics/ng-update/devkit-file-system.d.ts +5 -5
  204. package/schematics/ng-update/devkit-file-system.js +21 -16
  205. package/schematics/ng-update/devkit-migration-rule.js +13 -20
  206. package/schematics/ng-update/devkit-migration.d.ts +0 -2
  207. package/schematics/ng-update/devkit-migration.js +1 -1
  208. package/schematics/ng-update/find-stylesheets.d.ts +10 -0
  209. package/schematics/ng-update/find-stylesheets.js +31 -0
  210. package/schematics/ng-update/index.d.ts +2 -0
  211. package/schematics/ng-update/index.js +7 -2
  212. package/schematics/ng-update/migrations/attribute-selectors.js +3 -3
  213. package/schematics/ng-update/migrations/css-selectors.js +3 -3
  214. package/schematics/ng-update/migrations/element-selectors.js +3 -3
  215. package/schematics/ng-update/public-api.js +1 -1
  216. package/schematics/update-tool/component-resource-collector.d.ts +1 -1
  217. package/schematics/update-tool/component-resource-collector.js +18 -14
  218. package/schematics/update-tool/file-system.d.ts +19 -14
  219. package/schematics/update-tool/file-system.js +1 -1
  220. package/schematics/update-tool/index.d.ts +21 -3
  221. package/schematics/update-tool/index.js +29 -23
  222. package/schematics/update-tool/public-api.js +1 -1
  223. package/schematics/update-tool/target-version.d.ts +2 -1
  224. package/schematics/update-tool/target-version.js +5 -3
  225. package/schematics/update-tool/utils/parse-tsconfig.d.ts +2 -1
  226. package/schematics/update-tool/utils/parse-tsconfig.js +6 -10
  227. package/schematics/update-tool/utils/virtual-host.d.ts +34 -0
  228. package/schematics/update-tool/utils/virtual-host.js +62 -0
  229. package/schematics/update-tool/version-changes.js +4 -6
  230. package/schematics/utils/index.js +1 -1
  231. package/schematics/utils/project-tsconfig-paths.d.ts +2 -1
  232. package/schematics/utils/project-tsconfig-paths.js +1 -1
  233. package/scrolling/index.metadata.json +1 -1
  234. package/scrolling/public-api.d.ts +1 -0
  235. package/scrolling/virtual-for-of.d.ts +2 -1
  236. package/scrolling/virtual-scroll-repeater.d.ts +16 -0
  237. package/scrolling/virtual-scroll-viewport.d.ts +4 -4
  238. package/testing/component-harness.d.ts +12 -0
  239. package/testing/harness-environment.d.ts +1 -0
  240. package/tree/control/nested-tree-control.d.ts +7 -2
  241. package/tree/index.metadata.json +1 -1
  242. package/esm2015/overlay/keyboard/overlay-keyboard-dispatcher.js +0 -100
package/fesm2015/bidi.js CHANGED
@@ -43,37 +43,34 @@ function DIR_DOCUMENT_FACTORY() {
43
43
  * The directionality (LTR / RTL) context for the application (or a subtree of it).
44
44
  * Exposes the current direction and a stream of direction changes.
45
45
  */
46
- let Directionality = /** @class */ (() => {
47
- class Directionality {
48
- constructor(_document) {
49
- /** The current 'ltr' or 'rtl' value. */
50
- this.value = 'ltr';
51
- /** Stream that emits whenever the 'ltr' / 'rtl' state changes. */
52
- this.change = new EventEmitter();
53
- if (_document) {
54
- // TODO: handle 'auto' value -
55
- // We still need to account for dir="auto".
56
- // It looks like HTMLElemenet.dir is also "auto" when that's set to the attribute,
57
- // but getComputedStyle return either "ltr" or "rtl". avoiding getComputedStyle for now
58
- const bodyDir = _document.body ? _document.body.dir : null;
59
- const htmlDir = _document.documentElement ? _document.documentElement.dir : null;
60
- const value = bodyDir || htmlDir;
61
- this.value = (value === 'ltr' || value === 'rtl') ? value : 'ltr';
62
- }
63
- }
64
- ngOnDestroy() {
65
- this.change.complete();
46
+ class Directionality {
47
+ constructor(_document) {
48
+ /** The current 'ltr' or 'rtl' value. */
49
+ this.value = 'ltr';
50
+ /** Stream that emits whenever the 'ltr' / 'rtl' state changes. */
51
+ this.change = new EventEmitter();
52
+ if (_document) {
53
+ // TODO: handle 'auto' value -
54
+ // We still need to account for dir="auto".
55
+ // It looks like HTMLElemenet.dir is also "auto" when that's set to the attribute,
56
+ // but getComputedStyle return either "ltr" or "rtl". avoiding getComputedStyle for now
57
+ const bodyDir = _document.body ? _document.body.dir : null;
58
+ const htmlDir = _document.documentElement ? _document.documentElement.dir : null;
59
+ const value = bodyDir || htmlDir;
60
+ this.value = (value === 'ltr' || value === 'rtl') ? value : 'ltr';
66
61
  }
67
62
  }
68
- Directionality.ɵprov = ɵɵdefineInjectable({ factory: function Directionality_Factory() { return new Directionality(ɵɵinject(DIR_DOCUMENT, 8)); }, token: Directionality, providedIn: "root" });
69
- Directionality.decorators = [
70
- { type: Injectable, args: [{ providedIn: 'root' },] }
71
- ];
72
- Directionality.ctorParameters = () => [
73
- { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DIR_DOCUMENT,] }] }
74
- ];
75
- return Directionality;
76
- })();
63
+ ngOnDestroy() {
64
+ this.change.complete();
65
+ }
66
+ }
67
+ Directionality.ɵprov = ɵɵdefineInjectable({ factory: function Directionality_Factory() { return new Directionality(ɵɵinject(DIR_DOCUMENT, 8)); }, token: Directionality, providedIn: "root" });
68
+ Directionality.decorators = [
69
+ { type: Injectable, args: [{ providedIn: 'root' },] }
70
+ ];
71
+ Directionality.ctorParameters = () => [
72
+ { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DIR_DOCUMENT,] }] }
73
+ ];
77
74
 
78
75
  /**
79
76
  * @license
@@ -88,51 +85,48 @@ let Directionality = /** @class */ (() => {
88
85
  * Provides itself as Directionality such that descendant directives only need to ever inject
89
86
  * Directionality to get the closest direction.
90
87
  */
91
- let Dir = /** @class */ (() => {
92
- class Dir {
93
- constructor() {
94
- /** Normalized direction that accounts for invalid/unsupported values. */
95
- this._dir = 'ltr';
96
- /** Whether the `value` has been set to its initial value. */
97
- this._isInitialized = false;
98
- /** Event emitted when the direction changes. */
99
- this.change = new EventEmitter();
100
- }
101
- /** @docs-private */
102
- get dir() { return this._dir; }
103
- set dir(value) {
104
- const old = this._dir;
105
- const normalizedValue = value ? value.toLowerCase() : value;
106
- this._rawDir = value;
107
- this._dir = (normalizedValue === 'ltr' || normalizedValue === 'rtl') ? normalizedValue : 'ltr';
108
- if (old !== this._dir && this._isInitialized) {
109
- this.change.emit(this._dir);
110
- }
111
- }
112
- /** Current layout direction of the element. */
113
- get value() { return this.dir; }
114
- /** Initialize once default value has been set. */
115
- ngAfterContentInit() {
116
- this._isInitialized = true;
117
- }
118
- ngOnDestroy() {
119
- this.change.complete();
88
+ class Dir {
89
+ constructor() {
90
+ /** Normalized direction that accounts for invalid/unsupported values. */
91
+ this._dir = 'ltr';
92
+ /** Whether the `value` has been set to its initial value. */
93
+ this._isInitialized = false;
94
+ /** Event emitted when the direction changes. */
95
+ this.change = new EventEmitter();
96
+ }
97
+ /** @docs-private */
98
+ get dir() { return this._dir; }
99
+ set dir(value) {
100
+ const old = this._dir;
101
+ const normalizedValue = value ? value.toLowerCase() : value;
102
+ this._rawDir = value;
103
+ this._dir = (normalizedValue === 'ltr' || normalizedValue === 'rtl') ? normalizedValue : 'ltr';
104
+ if (old !== this._dir && this._isInitialized) {
105
+ this.change.emit(this._dir);
120
106
  }
121
107
  }
122
- Dir.decorators = [
123
- { type: Directive, args: [{
124
- selector: '[dir]',
125
- providers: [{ provide: Directionality, useExisting: Dir }],
126
- host: { '[attr.dir]': '_rawDir' },
127
- exportAs: 'dir',
128
- },] }
129
- ];
130
- Dir.propDecorators = {
131
- change: [{ type: Output, args: ['dirChange',] }],
132
- dir: [{ type: Input }]
133
- };
134
- return Dir;
135
- })();
108
+ /** Current layout direction of the element. */
109
+ get value() { return this.dir; }
110
+ /** Initialize once default value has been set. */
111
+ ngAfterContentInit() {
112
+ this._isInitialized = true;
113
+ }
114
+ ngOnDestroy() {
115
+ this.change.complete();
116
+ }
117
+ }
118
+ Dir.decorators = [
119
+ { type: Directive, args: [{
120
+ selector: '[dir]',
121
+ providers: [{ provide: Directionality, useExisting: Dir }],
122
+ host: { '[attr.dir]': '_rawDir' },
123
+ exportAs: 'dir',
124
+ },] }
125
+ ];
126
+ Dir.propDecorators = {
127
+ change: [{ type: Output, args: ['dirChange',] }],
128
+ dir: [{ type: Input }]
129
+ };
136
130
 
137
131
  /**
138
132
  * @license
@@ -141,17 +135,14 @@ let Dir = /** @class */ (() => {
141
135
  * Use of this source code is governed by an MIT-style license that can be
142
136
  * found in the LICENSE file at https://angular.io/license
143
137
  */
144
- let BidiModule = /** @class */ (() => {
145
- class BidiModule {
146
- }
147
- BidiModule.decorators = [
148
- { type: NgModule, args: [{
149
- exports: [Dir],
150
- declarations: [Dir],
151
- },] }
152
- ];
153
- return BidiModule;
154
- })();
138
+ class BidiModule {
139
+ }
140
+ BidiModule.decorators = [
141
+ { type: NgModule, args: [{
142
+ exports: [Dir],
143
+ declarations: [Dir],
144
+ },] }
145
+ ];
155
146
 
156
147
  /**
157
148
  * @license
@@ -1 +1 @@
1
- {"version":3,"file":"bidi.js","sources":["../../../../../../src/cdk/bidi/dir-document-token.ts","../../../../../../src/cdk/bidi/directionality.ts","../../../../../../src/cdk/bidi/dir.ts","../../../../../../src/cdk/bidi/bidi-module.ts","../../../../../../src/cdk/bidi/public-api.ts","../../../../../../src/cdk/bidi/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {DOCUMENT} from '@angular/common';\nimport {inject, InjectionToken} from '@angular/core';\n\n\n/**\n * Injection token used to inject the document into Directionality.\n * This is used so that the value can be faked in tests.\n *\n * We can't use the real document in tests because changing the real `dir` causes geometry-based\n * tests in Safari to fail.\n *\n * We also can't re-provide the DOCUMENT token from platform-brower because the unit tests\n * themselves use things like `querySelector` in test code.\n *\n * This token is defined in a separate file from Directionality as a workaround for\n * https://github.com/angular/angular/issues/22559\n *\n * @docs-private\n */\nexport const DIR_DOCUMENT = new InjectionToken<Document>('cdk-dir-doc', {\n providedIn: 'root',\n factory: DIR_DOCUMENT_FACTORY,\n});\n\n/** @docs-private */\nexport function DIR_DOCUMENT_FACTORY(): Document {\n return inject(DOCUMENT);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {EventEmitter, Inject, Injectable, Optional, OnDestroy} from '@angular/core';\nimport {DIR_DOCUMENT} from './dir-document-token';\n\n\nexport type Direction = 'ltr' | 'rtl';\n\n\n/**\n * The directionality (LTR / RTL) context for the application (or a subtree of it).\n * Exposes the current direction and a stream of direction changes.\n */\n@Injectable({providedIn: 'root'})\nexport class Directionality implements OnDestroy {\n /** The current 'ltr' or 'rtl' value. */\n readonly value: Direction = 'ltr';\n\n /** Stream that emits whenever the 'ltr' / 'rtl' state changes. */\n readonly change = new EventEmitter<Direction>();\n\n constructor(@Optional() @Inject(DIR_DOCUMENT) _document?: any) {\n if (_document) {\n // TODO: handle 'auto' value -\n // We still need to account for dir=\"auto\".\n // It looks like HTMLElemenet.dir is also \"auto\" when that's set to the attribute,\n // but getComputedStyle return either \"ltr\" or \"rtl\". avoiding getComputedStyle for now\n const bodyDir = _document.body ? _document.body.dir : null;\n const htmlDir = _document.documentElement ? _document.documentElement.dir : null;\n const value = bodyDir || htmlDir;\n this.value = (value === 'ltr' || value === 'rtl') ? value : 'ltr';\n }\n }\n\n ngOnDestroy() {\n this.change.complete();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n Directive,\n Output,\n Input,\n EventEmitter,\n AfterContentInit,\n OnDestroy,\n} from '@angular/core';\n\nimport {Direction, Directionality} from './directionality';\n\n/**\n * Directive to listen for changes of direction of part of the DOM.\n *\n * Provides itself as Directionality such that descendant directives only need to ever inject\n * Directionality to get the closest direction.\n */\n@Directive({\n selector: '[dir]',\n providers: [{provide: Directionality, useExisting: Dir}],\n host: {'[attr.dir]': '_rawDir'},\n exportAs: 'dir',\n})\nexport class Dir implements Directionality, AfterContentInit, OnDestroy {\n /** Normalized direction that accounts for invalid/unsupported values. */\n private _dir: Direction = 'ltr';\n\n /** Whether the `value` has been set to its initial value. */\n private _isInitialized: boolean = false;\n\n /** Direction as passed in by the consumer. */\n _rawDir: string;\n\n /** Event emitted when the direction changes. */\n @Output('dirChange') change = new EventEmitter<Direction>();\n\n /** @docs-private */\n @Input()\n get dir(): Direction { return this._dir; }\n set dir(value: Direction) {\n const old = this._dir;\n const normalizedValue = value ? value.toLowerCase() : value;\n\n this._rawDir = value;\n this._dir = (normalizedValue === 'ltr' || normalizedValue === 'rtl') ? normalizedValue : 'ltr';\n\n if (old !== this._dir && this._isInitialized) {\n this.change.emit(this._dir);\n }\n }\n\n /** Current layout direction of the element. */\n get value(): Direction { return this.dir; }\n\n /** Initialize once default value has been set. */\n ngAfterContentInit() {\n this._isInitialized = true;\n }\n\n ngOnDestroy() {\n this.change.complete();\n }\n}\n\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {Dir} from './dir';\n\n\n@NgModule({\n exports: [Dir],\n declarations: [Dir],\n})\nexport class BidiModule { }\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport {Directionality, Direction} from './directionality';\nexport {DIR_DOCUMENT} from './dir-document-token';\nexport {Dir} from './dir';\nexport * from './bidi-module';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {DIR_DOCUMENT_FACTORY as ɵangular_material_src_cdk_bidi_bidi_a} from './dir-document-token';"],"names":[],"mappings":";;;AAAA;;;;;;;AAQA,AAIA;;;;;;;;;;;;;;;AAeA,MAAa,YAAY,GAAG,IAAI,cAAc,CAAW,aAAa,EAAE;IACtE,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,oBAAoB;CAC9B,CAAC,CAAC;;AAGH,SAAgB,oBAAoB;IAClC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;CACzB;;ACnCD;;;;;;;AAQA,AAOA;;;;AAIA;IAAA,MACa,cAAc;QAOzB,YAA8C,SAAe;;YALpD,UAAK,GAAc,KAAK,CAAC;;YAGzB,WAAM,GAAG,IAAI,YAAY,EAAa,CAAC;YAG9C,IAAI,SAAS,EAAE;;;;;gBAKb,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;gBAC3D,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe,GAAG,SAAS,CAAC,eAAe,CAAC,GAAG,GAAG,IAAI,CAAC;gBACjF,MAAM,KAAK,GAAG,OAAO,IAAI,OAAO,CAAC;gBACjC,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC;aACnE;SACF;QAED,WAAW;YACT,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;SACxB;;;;gBAvBF,UAAU,SAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;gDAQjB,QAAQ,YAAI,MAAM,SAAC,YAAY;;yBA3B9C;;;ACAA;;;;;;;AAQA,AAWA;;;;;;AAMA;IAAA,MAMa,GAAG;QANhB;;YAQU,SAAI,GAAc,KAAK,CAAC;;YAGxB,mBAAc,GAAY,KAAK,CAAC;;YAMnB,WAAM,GAAG,IAAI,YAAY,EAAa,CAAC;SA4B7D;;QAzBC,IACI,GAAG,KAAgB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE;QAC1C,IAAI,GAAG,CAAC,KAAgB;YACtB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,MAAM,eAAe,GAAG,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC;YAE5D,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,IAAI,GAAG,CAAC,eAAe,KAAK,KAAK,IAAI,eAAe,KAAK,KAAK,IAAI,eAAe,GAAG,KAAK,CAAC;YAE/F,IAAI,GAAG,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE;gBAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC7B;SACF;;QAGD,IAAI,KAAK,KAAgB,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE;;QAG3C,kBAAkB;YAChB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;SAC5B;QAED,WAAW;YACT,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;SACxB;;;gBA5CF,SAAS,SAAC;oBACT,QAAQ,EAAE,OAAO;oBACjB,SAAS,EAAE,CAAC,EAAC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,EAAC,CAAC;oBACxD,IAAI,EAAE,EAAC,YAAY,EAAE,SAAS,EAAC;oBAC/B,QAAQ,EAAE,KAAK;iBAChB;;;yBAYE,MAAM,SAAC,WAAW;sBAGlB,KAAK;;IAyBR,UAAC;;;ACtED;;;;;;;AAQA;IAIA,MAIa,UAAU;;;gBAJtB,QAAQ,SAAC;oBACR,OAAO,EAAE,CAAC,GAAG,CAAC;oBACd,YAAY,EAAE,CAAC,GAAG,CAAC;iBACpB;;IACyB,iBAAC;;;AChB3B;;;;;;GAMG;;ACNH;;GAEG;;;;"}
1
+ {"version":3,"file":"bidi.js","sources":["../../../../../../src/cdk/bidi/dir-document-token.ts","../../../../../../src/cdk/bidi/directionality.ts","../../../../../../src/cdk/bidi/dir.ts","../../../../../../src/cdk/bidi/bidi-module.ts","../../../../../../src/cdk/bidi/public-api.ts","../../../../../../src/cdk/bidi/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {DOCUMENT} from '@angular/common';\nimport {inject, InjectionToken} from '@angular/core';\n\n\n/**\n * Injection token used to inject the document into Directionality.\n * This is used so that the value can be faked in tests.\n *\n * We can't use the real document in tests because changing the real `dir` causes geometry-based\n * tests in Safari to fail.\n *\n * We also can't re-provide the DOCUMENT token from platform-brower because the unit tests\n * themselves use things like `querySelector` in test code.\n *\n * This token is defined in a separate file from Directionality as a workaround for\n * https://github.com/angular/angular/issues/22559\n *\n * @docs-private\n */\nexport const DIR_DOCUMENT = new InjectionToken<Document>('cdk-dir-doc', {\n providedIn: 'root',\n factory: DIR_DOCUMENT_FACTORY,\n});\n\n/** @docs-private */\nexport function DIR_DOCUMENT_FACTORY(): Document {\n return inject(DOCUMENT);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {EventEmitter, Inject, Injectable, Optional, OnDestroy} from '@angular/core';\nimport {DIR_DOCUMENT} from './dir-document-token';\n\n\nexport type Direction = 'ltr' | 'rtl';\n\n\n/**\n * The directionality (LTR / RTL) context for the application (or a subtree of it).\n * Exposes the current direction and a stream of direction changes.\n */\n@Injectable({providedIn: 'root'})\nexport class Directionality implements OnDestroy {\n /** The current 'ltr' or 'rtl' value. */\n readonly value: Direction = 'ltr';\n\n /** Stream that emits whenever the 'ltr' / 'rtl' state changes. */\n readonly change = new EventEmitter<Direction>();\n\n constructor(@Optional() @Inject(DIR_DOCUMENT) _document?: any) {\n if (_document) {\n // TODO: handle 'auto' value -\n // We still need to account for dir=\"auto\".\n // It looks like HTMLElemenet.dir is also \"auto\" when that's set to the attribute,\n // but getComputedStyle return either \"ltr\" or \"rtl\". avoiding getComputedStyle for now\n const bodyDir = _document.body ? _document.body.dir : null;\n const htmlDir = _document.documentElement ? _document.documentElement.dir : null;\n const value = bodyDir || htmlDir;\n this.value = (value === 'ltr' || value === 'rtl') ? value : 'ltr';\n }\n }\n\n ngOnDestroy() {\n this.change.complete();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n Directive,\n Output,\n Input,\n EventEmitter,\n AfterContentInit,\n OnDestroy,\n} from '@angular/core';\n\nimport {Direction, Directionality} from './directionality';\n\n/**\n * Directive to listen for changes of direction of part of the DOM.\n *\n * Provides itself as Directionality such that descendant directives only need to ever inject\n * Directionality to get the closest direction.\n */\n@Directive({\n selector: '[dir]',\n providers: [{provide: Directionality, useExisting: Dir}],\n host: {'[attr.dir]': '_rawDir'},\n exportAs: 'dir',\n})\nexport class Dir implements Directionality, AfterContentInit, OnDestroy {\n /** Normalized direction that accounts for invalid/unsupported values. */\n private _dir: Direction = 'ltr';\n\n /** Whether the `value` has been set to its initial value. */\n private _isInitialized: boolean = false;\n\n /** Direction as passed in by the consumer. */\n _rawDir: string;\n\n /** Event emitted when the direction changes. */\n @Output('dirChange') change = new EventEmitter<Direction>();\n\n /** @docs-private */\n @Input()\n get dir(): Direction { return this._dir; }\n set dir(value: Direction) {\n const old = this._dir;\n const normalizedValue = value ? value.toLowerCase() : value;\n\n this._rawDir = value;\n this._dir = (normalizedValue === 'ltr' || normalizedValue === 'rtl') ? normalizedValue : 'ltr';\n\n if (old !== this._dir && this._isInitialized) {\n this.change.emit(this._dir);\n }\n }\n\n /** Current layout direction of the element. */\n get value(): Direction { return this.dir; }\n\n /** Initialize once default value has been set. */\n ngAfterContentInit() {\n this._isInitialized = true;\n }\n\n ngOnDestroy() {\n this.change.complete();\n }\n}\n\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {Dir} from './dir';\n\n\n@NgModule({\n exports: [Dir],\n declarations: [Dir],\n})\nexport class BidiModule { }\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport {Directionality, Direction} from './directionality';\nexport {DIR_DOCUMENT} from './dir-document-token';\nexport {Dir} from './dir';\nexport * from './bidi-module';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {DIR_DOCUMENT_FACTORY as ɵangular_material_src_cdk_bidi_bidi_a} from './dir-document-token';"],"names":[],"mappings":";;;AAAA;;;;;;;AAQA,AAIA;;;;;;;;;;;;;;;AAeA,MAAa,YAAY,GAAG,IAAI,cAAc,CAAW,aAAa,EAAE;IACtE,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,oBAAoB;CAC9B,CAAC,CAAC;;AAGH,SAAgB,oBAAoB;IAClC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;CACzB;;ACnCD;;;;;;;AAQA,AAOA;;;;AAKA,MAAa,cAAc;IAOzB,YAA8C,SAAe;;QALpD,UAAK,GAAc,KAAK,CAAC;;QAGzB,WAAM,GAAG,IAAI,YAAY,EAAa,CAAC;QAG9C,IAAI,SAAS,EAAE;;;;;YAKb,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;YAC3D,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe,GAAG,SAAS,CAAC,eAAe,CAAC,GAAG,GAAG,IAAI,CAAC;YACjF,MAAM,KAAK,GAAG,OAAO,IAAI,OAAO,CAAC;YACjC,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC;SACnE;KACF;IAED,WAAW;QACT,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;KACxB;;;;YAvBF,UAAU,SAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;4CAQjB,QAAQ,YAAI,MAAM,SAAC,YAAY;;;AC3B9C;;;;;;;AAQA,AAWA;;;;;;AAYA,MAAa,GAAG;IANhB;;QAQU,SAAI,GAAc,KAAK,CAAC;;QAGxB,mBAAc,GAAY,KAAK,CAAC;;QAMnB,WAAM,GAAG,IAAI,YAAY,EAAa,CAAC;KA4B7D;;IAzBC,IACI,GAAG,KAAgB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE;IAC1C,IAAI,GAAG,CAAC,KAAgB;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,MAAM,eAAe,GAAG,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC;QAE5D,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,CAAC,eAAe,KAAK,KAAK,IAAI,eAAe,KAAK,KAAK,IAAI,eAAe,GAAG,KAAK,CAAC;QAE/F,IAAI,GAAG,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE;YAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC7B;KACF;;IAGD,IAAI,KAAK,KAAgB,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE;;IAG3C,kBAAkB;QAChB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;KAC5B;IAED,WAAW;QACT,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;KACxB;;;YA5CF,SAAS,SAAC;gBACT,QAAQ,EAAE,OAAO;gBACjB,SAAS,EAAE,CAAC,EAAC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,EAAC,CAAC;gBACxD,IAAI,EAAE,EAAC,YAAY,EAAE,SAAS,EAAC;gBAC/B,QAAQ,EAAE,KAAK;aAChB;;;qBAYE,MAAM,SAAC,WAAW;kBAGlB,KAAK;;;AC7CR;;;;;;;AAQA,MAQa,UAAU;;;YAJtB,QAAQ,SAAC;gBACR,OAAO,EAAE,CAAC,GAAG,CAAC;gBACd,YAAY,EAAE,CAAC,GAAG,CAAC;aACpB;;;ACfD;;;;;;GAMG;;ACNH;;GAEG;;;;"}
package/fesm2015/cdk.js CHANGED
@@ -8,7 +8,7 @@ import { Version } from '@angular/core';
8
8
  * found in the LICENSE file at https://angular.io/license
9
9
  */
10
10
  /** Current version of the Angular Component Development Kit. */
11
- const VERSION = new Version('10.0.0-rc.3');
11
+ const VERSION = new Version('10.1.0');
12
12
 
13
13
  /**
14
14
  * @license
@@ -1 +1 @@
1
- {"version":3,"file":"cdk.js","sources":["../../../../../../src/cdk/version.ts","../../../../../../src/cdk/public-api.ts","../../../../../../src/cdk/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Version} from '@angular/core';\n\n/** Current version of the Angular Component Development Kit. */\nexport const VERSION = new Version('10.0.0-rc.3');\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './version';\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;AAAA;;;;;;;AAQA,AAEA;AACA,MAAa,OAAO,GAAG,IAAI,OAAO,CAAC,mBAAmB,CAAC;;ACXvD;;;;;;GAMG;;ACNH;;;;;;GAMG;;;;"}
1
+ {"version":3,"file":"cdk.js","sources":["../../../../../../src/cdk/version.ts","../../../../../../src/cdk/public-api.ts","../../../../../../src/cdk/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Version} from '@angular/core';\n\n/** Current version of the Angular Component Development Kit. */\nexport const VERSION = new Version('10.1.0');\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './version';\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;AAAA;;;;;;;AAQA,AAEA;AACA,MAAa,OAAO,GAAG,IAAI,OAAO,CAAC,mBAAmB,CAAC;;ACXvD;;;;;;GAMG;;ACNH;;;;;;GAMG;;;;"}
@@ -78,45 +78,42 @@ class PendingCopy {
78
78
  /**
79
79
  * A service for copying text to the clipboard.
80
80
  */
81
- let Clipboard = /** @class */ (() => {
82
- class Clipboard {
83
- constructor(document) {
84
- this._document = document;
85
- }
86
- /**
87
- * Copies the provided text into the user's clipboard.
88
- *
89
- * @param text The string to copy.
90
- * @returns Whether the operation was successful.
91
- */
92
- copy(text) {
93
- const pendingCopy = this.beginCopy(text);
94
- const successful = pendingCopy.copy();
95
- pendingCopy.destroy();
96
- return successful;
97
- }
98
- /**
99
- * Prepares a string to be copied later. This is useful for large strings
100
- * which take too long to successfully render and be copied in the same tick.
101
- *
102
- * The caller must call `destroy` on the returned `PendingCopy`.
103
- *
104
- * @param text The string to copy.
105
- * @returns the pending copy operation.
106
- */
107
- beginCopy(text) {
108
- return new PendingCopy(text, this._document);
109
- }
81
+ class Clipboard {
82
+ constructor(document) {
83
+ this._document = document;
110
84
  }
111
- Clipboard.ɵprov = ɵɵdefineInjectable({ factory: function Clipboard_Factory() { return new Clipboard(ɵɵinject(DOCUMENT)); }, token: Clipboard, providedIn: "root" });
112
- Clipboard.decorators = [
113
- { type: Injectable, args: [{ providedIn: 'root' },] }
114
- ];
115
- Clipboard.ctorParameters = () => [
116
- { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }
117
- ];
118
- return Clipboard;
119
- })();
85
+ /**
86
+ * Copies the provided text into the user's clipboard.
87
+ *
88
+ * @param text The string to copy.
89
+ * @returns Whether the operation was successful.
90
+ */
91
+ copy(text) {
92
+ const pendingCopy = this.beginCopy(text);
93
+ const successful = pendingCopy.copy();
94
+ pendingCopy.destroy();
95
+ return successful;
96
+ }
97
+ /**
98
+ * Prepares a string to be copied later. This is useful for large strings
99
+ * which take too long to successfully render and be copied in the same tick.
100
+ *
101
+ * The caller must call `destroy` on the returned `PendingCopy`.
102
+ *
103
+ * @param text The string to copy.
104
+ * @returns the pending copy operation.
105
+ */
106
+ beginCopy(text) {
107
+ return new PendingCopy(text, this._document);
108
+ }
109
+ }
110
+ Clipboard.ɵprov = ɵɵdefineInjectable({ factory: function Clipboard_Factory() { return new Clipboard(ɵɵinject(DOCUMENT)); }, token: Clipboard, providedIn: "root" });
111
+ Clipboard.decorators = [
112
+ { type: Injectable, args: [{ providedIn: 'root' },] }
113
+ ];
114
+ Clipboard.ctorParameters = () => [
115
+ { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }
116
+ ];
120
117
 
121
118
  /**
122
119
  * @license
@@ -131,83 +128,80 @@ const CKD_COPY_TO_CLIPBOARD_CONFIG = new InjectionToken('CKD_COPY_TO_CLIPBOARD_C
131
128
  * Provides behavior for a button that when clicked copies content into user's
132
129
  * clipboard.
133
130
  */
134
- let CdkCopyToClipboard = /** @class */ (() => {
135
- class CdkCopyToClipboard {
136
- constructor(_clipboard, _ngZone, config) {
137
- this._clipboard = _clipboard;
138
- this._ngZone = _ngZone;
139
- /** Content to be copied. */
140
- this.text = '';
141
- /**
142
- * How many times to attempt to copy the text. This may be necessary for longer text, because
143
- * the browser needs time to fill an intermediate textarea element and copy the content.
144
- */
145
- this.attempts = 1;
146
- /**
147
- * Emits when some text is copied to the clipboard. The
148
- * emitted value indicates whether copying was successful.
149
- */
150
- this.copied = new EventEmitter();
151
- /** Copies that are currently being attempted. */
152
- this._pending = new Set();
153
- if (config && config.attempts != null) {
154
- this.attempts = config.attempts;
155
- }
131
+ class CdkCopyToClipboard {
132
+ constructor(_clipboard, _ngZone, config) {
133
+ this._clipboard = _clipboard;
134
+ this._ngZone = _ngZone;
135
+ /** Content to be copied. */
136
+ this.text = '';
137
+ /**
138
+ * How many times to attempt to copy the text. This may be necessary for longer text, because
139
+ * the browser needs time to fill an intermediate textarea element and copy the content.
140
+ */
141
+ this.attempts = 1;
142
+ /**
143
+ * Emits when some text is copied to the clipboard. The
144
+ * emitted value indicates whether copying was successful.
145
+ */
146
+ this.copied = new EventEmitter();
147
+ /** Copies that are currently being attempted. */
148
+ this._pending = new Set();
149
+ if (config && config.attempts != null) {
150
+ this.attempts = config.attempts;
156
151
  }
157
- /** Copies the current text to the clipboard. */
158
- copy(attempts = this.attempts) {
159
- if (attempts > 1) {
160
- let remainingAttempts = attempts;
161
- const pending = this._clipboard.beginCopy(this.text);
162
- this._pending.add(pending);
163
- const attempt = () => {
164
- const successful = pending.copy();
165
- if (!successful && --remainingAttempts && !this._destroyed) {
166
- // We use 1 for the timeout since it's more predictable when flushing in unit tests.
167
- this._currentTimeout = this._ngZone.runOutsideAngular(() => setTimeout(attempt, 1));
168
- }
169
- else {
170
- this._currentTimeout = null;
171
- this._pending.delete(pending);
172
- pending.destroy();
173
- this.copied.emit(successful);
174
- }
175
- };
176
- attempt();
177
- }
178
- else {
179
- this.copied.emit(this._clipboard.copy(this.text));
180
- }
152
+ }
153
+ /** Copies the current text to the clipboard. */
154
+ copy(attempts = this.attempts) {
155
+ if (attempts > 1) {
156
+ let remainingAttempts = attempts;
157
+ const pending = this._clipboard.beginCopy(this.text);
158
+ this._pending.add(pending);
159
+ const attempt = () => {
160
+ const successful = pending.copy();
161
+ if (!successful && --remainingAttempts && !this._destroyed) {
162
+ // We use 1 for the timeout since it's more predictable when flushing in unit tests.
163
+ this._currentTimeout = this._ngZone.runOutsideAngular(() => setTimeout(attempt, 1));
164
+ }
165
+ else {
166
+ this._currentTimeout = null;
167
+ this._pending.delete(pending);
168
+ pending.destroy();
169
+ this.copied.emit(successful);
170
+ }
171
+ };
172
+ attempt();
181
173
  }
182
- ngOnDestroy() {
183
- if (this._currentTimeout) {
184
- clearTimeout(this._currentTimeout);
185
- }
186
- this._pending.forEach(copy => copy.destroy());
187
- this._pending.clear();
188
- this._destroyed = true;
174
+ else {
175
+ this.copied.emit(this._clipboard.copy(this.text));
176
+ }
177
+ }
178
+ ngOnDestroy() {
179
+ if (this._currentTimeout) {
180
+ clearTimeout(this._currentTimeout);
189
181
  }
182
+ this._pending.forEach(copy => copy.destroy());
183
+ this._pending.clear();
184
+ this._destroyed = true;
190
185
  }
191
- CdkCopyToClipboard.decorators = [
192
- { type: Directive, args: [{
193
- selector: '[cdkCopyToClipboard]',
194
- host: {
195
- '(click)': 'copy()',
196
- }
197
- },] }
198
- ];
199
- CdkCopyToClipboard.ctorParameters = () => [
200
- { type: Clipboard },
201
- { type: NgZone },
202
- { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [CKD_COPY_TO_CLIPBOARD_CONFIG,] }] }
203
- ];
204
- CdkCopyToClipboard.propDecorators = {
205
- text: [{ type: Input, args: ['cdkCopyToClipboard',] }],
206
- attempts: [{ type: Input, args: ['cdkCopyToClipboardAttempts',] }],
207
- copied: [{ type: Output, args: ['cdkCopyToClipboardCopied',] }]
208
- };
209
- return CdkCopyToClipboard;
210
- })();
186
+ }
187
+ CdkCopyToClipboard.decorators = [
188
+ { type: Directive, args: [{
189
+ selector: '[cdkCopyToClipboard]',
190
+ host: {
191
+ '(click)': 'copy()',
192
+ }
193
+ },] }
194
+ ];
195
+ CdkCopyToClipboard.ctorParameters = () => [
196
+ { type: Clipboard },
197
+ { type: NgZone },
198
+ { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [CKD_COPY_TO_CLIPBOARD_CONFIG,] }] }
199
+ ];
200
+ CdkCopyToClipboard.propDecorators = {
201
+ text: [{ type: Input, args: ['cdkCopyToClipboard',] }],
202
+ attempts: [{ type: Input, args: ['cdkCopyToClipboardAttempts',] }],
203
+ copied: [{ type: Output, args: ['cdkCopyToClipboardCopied',] }]
204
+ };
211
205
 
212
206
  /**
213
207
  * @license
@@ -216,17 +210,14 @@ let CdkCopyToClipboard = /** @class */ (() => {
216
210
  * Use of this source code is governed by an MIT-style license that can be
217
211
  * found in the LICENSE file at https://angular.io/license
218
212
  */
219
- let ClipboardModule = /** @class */ (() => {
220
- class ClipboardModule {
221
- }
222
- ClipboardModule.decorators = [
223
- { type: NgModule, args: [{
224
- declarations: [CdkCopyToClipboard],
225
- exports: [CdkCopyToClipboard],
226
- },] }
227
- ];
228
- return ClipboardModule;
229
- })();
213
+ class ClipboardModule {
214
+ }
215
+ ClipboardModule.decorators = [
216
+ { type: NgModule, args: [{
217
+ declarations: [CdkCopyToClipboard],
218
+ exports: [CdkCopyToClipboard],
219
+ },] }
220
+ ];
230
221
 
231
222
  /**
232
223
  * @license
@@ -1 +1 @@
1
- {"version":3,"file":"clipboard.js","sources":["../../../../../../src/cdk/clipboard/pending-copy.ts","../../../../../../src/cdk/clipboard/clipboard.ts","../../../../../../src/cdk/clipboard/copy-to-clipboard.ts","../../../../../../src/cdk/clipboard/clipboard-module.ts","../../../../../../src/cdk/clipboard/public-api.ts","../../../../../../src/cdk/clipboard/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * A pending copy-to-clipboard operation.\n *\n * The implementation of copying text to the clipboard modifies the DOM and\n * forces a relayout. This relayout can take too long if the string is large,\n * causing the execCommand('copy') to happen too long after the user clicked.\n * This results in the browser refusing to copy. This object lets the\n * relayout happen in a separate tick from copying by providing a copy function\n * that can be called later.\n *\n * Destroy must be called when no longer in use, regardless of whether `copy` is\n * called.\n */\nexport class PendingCopy {\n private _textarea: HTMLTextAreaElement|undefined;\n\n constructor(text: string, private readonly _document: Document) {\n const textarea = this._textarea = this._document.createElement('textarea');\n const styles = textarea.style;\n\n // Hide the element for display and accessibility. Set an\n // absolute position so the page layout isn't affected.\n styles.opacity = '0';\n styles.position = 'absolute';\n styles.left = styles.top = '-999em';\n textarea.setAttribute('aria-hidden', 'true');\n textarea.value = text;\n this._document.body.appendChild(textarea);\n }\n\n /** Finishes copying the text. */\n copy(): boolean {\n const textarea = this._textarea;\n let successful = false;\n\n try { // Older browsers could throw if copy is not supported.\n if (textarea) {\n const currentFocus = this._document.activeElement as HTMLOrSVGElement | null;\n\n textarea.select();\n textarea.setSelectionRange(0, textarea.value.length);\n successful = this._document.execCommand('copy');\n\n if (currentFocus) {\n currentFocus.focus();\n }\n }\n } catch {\n // Discard error.\n // Initial setting of {@code successful} will represent failure here.\n }\n\n return successful;\n }\n\n /** Cleans up DOM changes used to perform the copy operation. */\n destroy() {\n const textarea = this._textarea;\n\n if (textarea) {\n if (textarea.parentNode) {\n textarea.parentNode.removeChild(textarea);\n }\n\n this._textarea = undefined;\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {DOCUMENT} from '@angular/common';\nimport {Inject, Injectable} from '@angular/core';\nimport {PendingCopy} from './pending-copy';\n\n\n/**\n * A service for copying text to the clipboard.\n */\n@Injectable({providedIn: 'root'})\nexport class Clipboard {\n private readonly _document: Document;\n\n constructor(@Inject(DOCUMENT) document: any) {\n this._document = document;\n }\n\n /**\n * Copies the provided text into the user's clipboard.\n *\n * @param text The string to copy.\n * @returns Whether the operation was successful.\n */\n copy(text: string): boolean {\n const pendingCopy = this.beginCopy(text);\n const successful = pendingCopy.copy();\n pendingCopy.destroy();\n\n return successful;\n }\n\n /**\n * Prepares a string to be copied later. This is useful for large strings\n * which take too long to successfully render and be copied in the same tick.\n *\n * The caller must call `destroy` on the returned `PendingCopy`.\n *\n * @param text The string to copy.\n * @returns the pending copy operation.\n */\n beginCopy(text: string): PendingCopy {\n return new PendingCopy(text, this._document);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n Directive,\n EventEmitter,\n Input,\n Output,\n NgZone,\n InjectionToken,\n Inject,\n Optional,\n OnDestroy,\n} from '@angular/core';\nimport {Clipboard} from './clipboard';\nimport {PendingCopy} from './pending-copy';\n\n/** Object that can be used to configure the default options for `CdkCopyToClipboard`. */\nexport interface CdkCopyToClipboardConfig {\n /** Default number of attempts to make when copying text to the clipboard. */\n attempts?: number;\n}\n\n/** Injection token that can be used to provide the default options to `CdkCopyToClipboard`. */\nexport const CKD_COPY_TO_CLIPBOARD_CONFIG =\n new InjectionToken<CdkCopyToClipboardConfig>('CKD_COPY_TO_CLIPBOARD_CONFIG');\n\n/**\n * Provides behavior for a button that when clicked copies content into user's\n * clipboard.\n */\n@Directive({\n selector: '[cdkCopyToClipboard]',\n host: {\n '(click)': 'copy()',\n }\n})\nexport class CdkCopyToClipboard implements OnDestroy {\n /** Content to be copied. */\n @Input('cdkCopyToClipboard') text: string = '';\n\n /**\n * How many times to attempt to copy the text. This may be necessary for longer text, because\n * the browser needs time to fill an intermediate textarea element and copy the content.\n */\n @Input('cdkCopyToClipboardAttempts') attempts: number = 1;\n\n /**\n * Emits when some text is copied to the clipboard. The\n * emitted value indicates whether copying was successful.\n */\n @Output('cdkCopyToClipboardCopied') copied = new EventEmitter<boolean>();\n\n /** Copies that are currently being attempted. */\n private _pending = new Set<PendingCopy>();\n\n /** Whether the directive has been destroyed. */\n private _destroyed: boolean;\n\n /** Timeout for the current copy attempt. */\n private _currentTimeout: any;\n\n constructor(\n private _clipboard: Clipboard,\n private _ngZone: NgZone,\n @Optional() @Inject(CKD_COPY_TO_CLIPBOARD_CONFIG) config?: CdkCopyToClipboardConfig) {\n\n if (config && config.attempts != null) {\n this.attempts = config.attempts;\n }\n }\n\n /** Copies the current text to the clipboard. */\n copy(attempts: number = this.attempts): void {\n if (attempts > 1) {\n let remainingAttempts = attempts;\n const pending = this._clipboard.beginCopy(this.text);\n this._pending.add(pending);\n\n const attempt = () => {\n const successful = pending.copy();\n if (!successful && --remainingAttempts && !this._destroyed) {\n // We use 1 for the timeout since it's more predictable when flushing in unit tests.\n this._currentTimeout = this._ngZone.runOutsideAngular(() => setTimeout(attempt, 1));\n } else {\n this._currentTimeout = null;\n this._pending.delete(pending);\n pending.destroy();\n this.copied.emit(successful);\n }\n };\n attempt();\n } else {\n this.copied.emit(this._clipboard.copy(this.text));\n }\n }\n\n ngOnDestroy() {\n if (this._currentTimeout) {\n clearTimeout(this._currentTimeout);\n }\n\n this._pending.forEach(copy => copy.destroy());\n this._pending.clear();\n this._destroyed = true;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\n\nimport {CdkCopyToClipboard} from './copy-to-clipboard';\n\n@NgModule({\n declarations: [CdkCopyToClipboard],\n exports: [CdkCopyToClipboard],\n})\nexport class ClipboardModule {\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './clipboard';\nexport * from './clipboard-module';\nexport * from './copy-to-clipboard';\nexport * from './pending-copy';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clipboard.js","sources":["../../../../../../src/cdk/clipboard/pending-copy.ts","../../../../../../src/cdk/clipboard/clipboard.ts","../../../../../../src/cdk/clipboard/copy-to-clipboard.ts","../../../../../../src/cdk/clipboard/clipboard-module.ts","../../../../../../src/cdk/clipboard/public-api.ts","../../../../../../src/cdk/clipboard/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * A pending copy-to-clipboard operation.\n *\n * The implementation of copying text to the clipboard modifies the DOM and\n * forces a relayout. This relayout can take too long if the string is large,\n * causing the execCommand('copy') to happen too long after the user clicked.\n * This results in the browser refusing to copy. This object lets the\n * relayout happen in a separate tick from copying by providing a copy function\n * that can be called later.\n *\n * Destroy must be called when no longer in use, regardless of whether `copy` is\n * called.\n */\nexport class PendingCopy {\n private _textarea: HTMLTextAreaElement|undefined;\n\n constructor(text: string, private readonly _document: Document) {\n const textarea = this._textarea = this._document.createElement('textarea');\n const styles = textarea.style;\n\n // Hide the element for display and accessibility. Set an\n // absolute position so the page layout isn't affected.\n styles.opacity = '0';\n styles.position = 'absolute';\n styles.left = styles.top = '-999em';\n textarea.setAttribute('aria-hidden', 'true');\n textarea.value = text;\n this._document.body.appendChild(textarea);\n }\n\n /** Finishes copying the text. */\n copy(): boolean {\n const textarea = this._textarea;\n let successful = false;\n\n try { // Older browsers could throw if copy is not supported.\n if (textarea) {\n const currentFocus = this._document.activeElement as HTMLOrSVGElement | null;\n\n textarea.select();\n textarea.setSelectionRange(0, textarea.value.length);\n successful = this._document.execCommand('copy');\n\n if (currentFocus) {\n currentFocus.focus();\n }\n }\n } catch {\n // Discard error.\n // Initial setting of {@code successful} will represent failure here.\n }\n\n return successful;\n }\n\n /** Cleans up DOM changes used to perform the copy operation. */\n destroy() {\n const textarea = this._textarea;\n\n if (textarea) {\n if (textarea.parentNode) {\n textarea.parentNode.removeChild(textarea);\n }\n\n this._textarea = undefined;\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {DOCUMENT} from '@angular/common';\nimport {Inject, Injectable} from '@angular/core';\nimport {PendingCopy} from './pending-copy';\n\n\n/**\n * A service for copying text to the clipboard.\n */\n@Injectable({providedIn: 'root'})\nexport class Clipboard {\n private readonly _document: Document;\n\n constructor(@Inject(DOCUMENT) document: any) {\n this._document = document;\n }\n\n /**\n * Copies the provided text into the user's clipboard.\n *\n * @param text The string to copy.\n * @returns Whether the operation was successful.\n */\n copy(text: string): boolean {\n const pendingCopy = this.beginCopy(text);\n const successful = pendingCopy.copy();\n pendingCopy.destroy();\n\n return successful;\n }\n\n /**\n * Prepares a string to be copied later. This is useful for large strings\n * which take too long to successfully render and be copied in the same tick.\n *\n * The caller must call `destroy` on the returned `PendingCopy`.\n *\n * @param text The string to copy.\n * @returns the pending copy operation.\n */\n beginCopy(text: string): PendingCopy {\n return new PendingCopy(text, this._document);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n Directive,\n EventEmitter,\n Input,\n Output,\n NgZone,\n InjectionToken,\n Inject,\n Optional,\n OnDestroy,\n} from '@angular/core';\nimport {Clipboard} from './clipboard';\nimport {PendingCopy} from './pending-copy';\n\n/** Object that can be used to configure the default options for `CdkCopyToClipboard`. */\nexport interface CdkCopyToClipboardConfig {\n /** Default number of attempts to make when copying text to the clipboard. */\n attempts?: number;\n}\n\n/** Injection token that can be used to provide the default options to `CdkCopyToClipboard`. */\nexport const CKD_COPY_TO_CLIPBOARD_CONFIG =\n new InjectionToken<CdkCopyToClipboardConfig>('CKD_COPY_TO_CLIPBOARD_CONFIG');\n\n/**\n * Provides behavior for a button that when clicked copies content into user's\n * clipboard.\n */\n@Directive({\n selector: '[cdkCopyToClipboard]',\n host: {\n '(click)': 'copy()',\n }\n})\nexport class CdkCopyToClipboard implements OnDestroy {\n /** Content to be copied. */\n @Input('cdkCopyToClipboard') text: string = '';\n\n /**\n * How many times to attempt to copy the text. This may be necessary for longer text, because\n * the browser needs time to fill an intermediate textarea element and copy the content.\n */\n @Input('cdkCopyToClipboardAttempts') attempts: number = 1;\n\n /**\n * Emits when some text is copied to the clipboard. The\n * emitted value indicates whether copying was successful.\n */\n @Output('cdkCopyToClipboardCopied') copied = new EventEmitter<boolean>();\n\n /** Copies that are currently being attempted. */\n private _pending = new Set<PendingCopy>();\n\n /** Whether the directive has been destroyed. */\n private _destroyed: boolean;\n\n /** Timeout for the current copy attempt. */\n private _currentTimeout: any;\n\n constructor(\n private _clipboard: Clipboard,\n private _ngZone: NgZone,\n @Optional() @Inject(CKD_COPY_TO_CLIPBOARD_CONFIG) config?: CdkCopyToClipboardConfig) {\n\n if (config && config.attempts != null) {\n this.attempts = config.attempts;\n }\n }\n\n /** Copies the current text to the clipboard. */\n copy(attempts: number = this.attempts): void {\n if (attempts > 1) {\n let remainingAttempts = attempts;\n const pending = this._clipboard.beginCopy(this.text);\n this._pending.add(pending);\n\n const attempt = () => {\n const successful = pending.copy();\n if (!successful && --remainingAttempts && !this._destroyed) {\n // We use 1 for the timeout since it's more predictable when flushing in unit tests.\n this._currentTimeout = this._ngZone.runOutsideAngular(() => setTimeout(attempt, 1));\n } else {\n this._currentTimeout = null;\n this._pending.delete(pending);\n pending.destroy();\n this.copied.emit(successful);\n }\n };\n attempt();\n } else {\n this.copied.emit(this._clipboard.copy(this.text));\n }\n }\n\n ngOnDestroy() {\n if (this._currentTimeout) {\n clearTimeout(this._currentTimeout);\n }\n\n this._pending.forEach(copy => copy.destroy());\n this._pending.clear();\n this._destroyed = true;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\n\nimport {CdkCopyToClipboard} from './copy-to-clipboard';\n\n@NgModule({\n declarations: [CdkCopyToClipboard],\n exports: [CdkCopyToClipboard],\n})\nexport class ClipboardModule {\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './clipboard';\nexport * from './clipboard-module';\nexport * from './copy-to-clipboard';\nexport * from './pending-copy';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}