@angular/cdk 7.3.3 → 7.3.7

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 (119) hide show
  1. package/bundles/cdk-drag-drop.umd.js +1 -1
  2. package/bundles/cdk-drag-drop.umd.js.map +1 -1
  3. package/bundles/cdk-drag-drop.umd.min.js +2 -2
  4. package/bundles/cdk-drag-drop.umd.min.js.map +1 -1
  5. package/bundles/cdk-overlay.umd.js +8 -3
  6. package/bundles/cdk-overlay.umd.js.map +1 -1
  7. package/bundles/cdk-overlay.umd.min.js +2 -2
  8. package/bundles/cdk-overlay.umd.min.js.map +1 -1
  9. package/bundles/cdk-platform.umd.js +12 -1
  10. package/bundles/cdk-platform.umd.js.map +1 -1
  11. package/bundles/cdk-platform.umd.min.js +1 -1
  12. package/bundles/cdk-platform.umd.min.js.map +1 -1
  13. package/bundles/cdk-scrolling.umd.js +85 -19
  14. package/bundles/cdk-scrolling.umd.js.map +1 -1
  15. package/bundles/cdk-scrolling.umd.min.js +1 -1
  16. package/bundles/cdk-scrolling.umd.min.js.map +1 -1
  17. package/bundles/cdk-stepper.umd.js +4 -4
  18. package/bundles/cdk-stepper.umd.js.map +1 -1
  19. package/bundles/cdk-stepper.umd.min.js +1 -1
  20. package/bundles/cdk-stepper.umd.min.js.map +1 -1
  21. package/bundles/cdk-table.umd.js +2 -0
  22. package/bundles/cdk-table.umd.js.map +1 -1
  23. package/bundles/cdk-table.umd.min.js.map +1 -1
  24. package/bundles/cdk-tree.umd.js +127 -51
  25. package/bundles/cdk-tree.umd.js.map +1 -1
  26. package/bundles/cdk-tree.umd.min.js +1 -1
  27. package/bundles/cdk-tree.umd.min.js.map +1 -1
  28. package/bundles/cdk.umd.js +1 -1
  29. package/bundles/cdk.umd.js.map +1 -1
  30. package/bundles/cdk.umd.min.js +1 -1
  31. package/bundles/cdk.umd.min.js.map +1 -1
  32. package/esm2015/cdk.js +1 -1
  33. package/esm2015/cdk.js.map +1 -1
  34. package/esm2015/drag-drop.js +1 -1
  35. package/esm2015/drag-drop.js.map +1 -1
  36. package/esm2015/overlay.js +5 -2
  37. package/esm2015/overlay.js.map +1 -1
  38. package/esm2015/platform.js +12 -1
  39. package/esm2015/platform.js.map +1 -1
  40. package/esm2015/scrolling.js +59 -15
  41. package/esm2015/scrolling.js.map +1 -1
  42. package/esm2015/stepper.js +0 -1
  43. package/esm2015/stepper.js.map +1 -1
  44. package/esm2015/table.js +2 -0
  45. package/esm2015/table.js.map +1 -1
  46. package/esm2015/tree.js +110 -54
  47. package/esm2015/tree.js.map +1 -1
  48. package/esm5/cdk.es5.js +1 -1
  49. package/esm5/cdk.es5.js.map +1 -1
  50. package/esm5/drag-drop.es5.js +1 -1
  51. package/esm5/drag-drop.es5.js.map +1 -1
  52. package/esm5/overlay.es5.js +8 -3
  53. package/esm5/overlay.es5.js.map +1 -1
  54. package/esm5/platform.es5.js +12 -1
  55. package/esm5/platform.es5.js.map +1 -1
  56. package/esm5/scrolling.es5.js +86 -20
  57. package/esm5/scrolling.es5.js.map +1 -1
  58. package/esm5/stepper.es5.js +0 -1
  59. package/esm5/stepper.es5.js.map +1 -1
  60. package/esm5/table.es5.js +2 -0
  61. package/esm5/table.es5.js.map +1 -1
  62. package/esm5/tree.es5.js +128 -53
  63. package/esm5/tree.es5.js.map +1 -1
  64. package/overlay/typings/position/flexible-connected-position-strategy.d.ts +1 -1
  65. package/package.json +2 -2
  66. package/platform/typings/index.metadata.json +1 -1
  67. package/schematics/ng-update/upgrade-rules/project-tsconfig-paths.js +11 -13
  68. package/schematics/ng-update/upgrade-rules/project-tsconfig-paths.js.map +1 -1
  69. package/schematics/utils/ast/ng-module-imports.js +1 -1
  70. package/schematics/utils/ast/ng-module-imports.js.map +1 -1
  71. package/scrolling/typings/index.metadata.json +1 -1
  72. package/scrolling/typings/virtual-for-of.d.ts +8 -2
  73. package/stepper/typings/index.metadata.json +1 -1
  74. package/stepper/typings/stepper.d.ts +59 -3
  75. package/table/typings/index.metadata.json +1 -1
  76. package/table/typings/table.d.ts +2 -0
  77. package/tree/typings/index.metadata.json +1 -1
  78. package/tree/typings/nested-node.d.ts +3 -1
  79. package/tree/typings/outlet.d.ts +9 -2
  80. package/tree/typings/padding.d.ts +3 -1
  81. package/tree/typings/tree.d.ts +2 -0
  82. package/typings/esm5/index.metadata.json +1 -1
  83. package/typings/esm5/overlay/position/flexible-connected-position-strategy.d.ts +1 -1
  84. package/typings/esm5/platform/index.metadata.json +1 -1
  85. package/typings/esm5/scrolling/index.metadata.json +1 -1
  86. package/typings/esm5/scrolling/virtual-for-of.d.ts +8 -2
  87. package/typings/esm5/stepper/index.metadata.json +1 -1
  88. package/typings/esm5/stepper/stepper.d.ts +59 -3
  89. package/typings/esm5/table/index.metadata.json +1 -1
  90. package/typings/esm5/table/table.d.ts +2 -0
  91. package/typings/esm5/tree/index.metadata.json +1 -1
  92. package/typings/esm5/tree/nested-node.d.ts +3 -1
  93. package/typings/esm5/tree/outlet.d.ts +9 -2
  94. package/typings/esm5/tree/padding.d.ts +3 -1
  95. package/typings/esm5/tree/tree.d.ts +2 -0
  96. package/typings/index.metadata.json +1 -1
  97. package/typings/overlay/position/flexible-connected-position-strategy.d.ts +1 -1
  98. package/typings/platform/index.metadata.json +1 -1
  99. package/typings/scrolling/index.metadata.json +1 -1
  100. package/typings/scrolling/virtual-for-of.d.ts +8 -2
  101. package/typings/stepper/index.metadata.json +1 -1
  102. package/typings/stepper/stepper.d.ts +59 -3
  103. package/typings/table/index.metadata.json +1 -1
  104. package/typings/table/table.d.ts +2 -0
  105. package/typings/tree/index.metadata.json +1 -1
  106. package/typings/tree/nested-node.d.ts +3 -1
  107. package/typings/tree/outlet.d.ts +9 -2
  108. package/typings/tree/padding.d.ts +3 -1
  109. package/typings/tree/tree.d.ts +2 -0
  110. package/schematics/ng-update/data/attribute-selectors.ts +0 -35
  111. package/schematics/ng-update/data/class-names.ts +0 -55
  112. package/schematics/ng-update/data/constructor-checks.ts +0 -22
  113. package/schematics/ng-update/data/css-selectors.ts +0 -30
  114. package/schematics/ng-update/data/element-selectors.ts +0 -21
  115. package/schematics/ng-update/data/index.ts +0 -17
  116. package/schematics/ng-update/data/input-names.ts +0 -118
  117. package/schematics/ng-update/data/method-call-checks.ts +0 -39
  118. package/schematics/ng-update/data/output-names.ts +0 -28
  119. package/schematics/ng-update/data/property-names.ts +0 -164
@@ -18,7 +18,18 @@
18
18
  // Whether the current platform supports the V8 Break Iterator. The V8 check
19
19
  // is necessary to detect all Blink based browsers.
20
20
  /** @type {?} */
21
- var hasV8BreakIterator = (typeof Intl !== 'undefined' && ((/** @type {?} */ (Intl))).v8BreakIterator);
21
+ var hasV8BreakIterator;
22
+ // We need a try/catch around the reference to `Intl`, because accessing it in some cases can
23
+ // cause IE to throw. These cases are tied to particular versions of Windows and can happen if
24
+ // the consumer is providing a polyfilled `Map`. See:
25
+ // https://github.com/Microsoft/ChakraCore/issues/3189
26
+ // https://github.com/angular/material2/issues/15687
27
+ try {
28
+ hasV8BreakIterator = (typeof Intl !== 'undefined' && ((/** @type {?} */ (Intl))).v8BreakIterator);
29
+ }
30
+ catch (_a) {
31
+ hasV8BreakIterator = false;
32
+ }
22
33
  /**
23
34
  * Service to detect the current platform by comparing the userAgent strings and
24
35
  * checking browser-specific global properties.
@@ -1 +1 @@
1
- {"version":3,"file":"cdk-platform.umd.js","sources":["../../src/cdk/platform/features/scrolling.ts","../../src/cdk/platform/features/passive-listeners.ts","../../src/cdk/platform/features/input-types.ts","../../src/cdk/platform/platform-module.ts","../../src/cdk/platform/platform.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/** The possible ways the browser may handle the horizontal scroll axis in RTL languages. */\nexport enum RtlScrollAxisType {\n /**\n * scrollLeft is 0 when scrolled all the way left and (scrollWidth - clientWidth) when scrolled\n * all the way right.\n */\n NORMAL,\n /**\n * scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled\n * all the way right.\n */\n NEGATED,\n /**\n * scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled\n * all the way right.\n */\n INVERTED\n}\n\n/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */\nlet rtlScrollAxisType: RtlScrollAxisType;\n\n/** Check whether the browser supports scroll behaviors. */\nexport function supportsScrollBehavior(): boolean {\n return !!(typeof document == 'object' && 'scrollBehavior' in document.documentElement!.style);\n}\n\n/**\n * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,\n * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.\n */\nexport function getRtlScrollAxisType(): RtlScrollAxisType {\n // We can't check unless we're on the browser. Just assume 'normal' if we're not.\n if (typeof document !== 'object' || !document) {\n return RtlScrollAxisType.NORMAL;\n }\n\n if (!rtlScrollAxisType) {\n // Create a 1px wide scrolling container and a 2px wide content element.\n const scrollContainer = document.createElement('div');\n const containerStyle = scrollContainer.style;\n scrollContainer.dir = 'rtl';\n containerStyle.height = '1px';\n containerStyle.width = '1px';\n containerStyle.overflow = 'auto';\n containerStyle.visibility = 'hidden';\n containerStyle.pointerEvents = 'none';\n containerStyle.position = 'absolute';\n\n const content = document.createElement('div');\n const contentStyle = content.style;\n contentStyle.width = '2px';\n contentStyle.height = '1px';\n\n scrollContainer.appendChild(content);\n document.body.appendChild(scrollContainer);\n\n rtlScrollAxisType = RtlScrollAxisType.NORMAL;\n\n // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL\n // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're\n // dealing with one of the other two types of browsers.\n if (scrollContainer.scrollLeft === 0) {\n // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an\n // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by\n // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will\n // return 0 when we read it again.\n scrollContainer.scrollLeft = 1;\n rtlScrollAxisType =\n scrollContainer.scrollLeft === 0 ? RtlScrollAxisType.NEGATED : RtlScrollAxisType.INVERTED;\n }\n\n scrollContainer.parentNode!.removeChild(scrollContainer);\n }\n return rtlScrollAxisType;\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\n/** Cached result of whether the user's browser supports passive event listeners. */\nlet supportsPassiveEvents: boolean;\n\n/**\n * Checks whether the user's browser supports passive event listeners.\n * See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n */\nexport function supportsPassiveEventListeners(): boolean {\n if (supportsPassiveEvents == null && typeof window !== 'undefined') {\n try {\n window.addEventListener('test', null!, Object.defineProperty({}, 'passive', {\n get: () => supportsPassiveEvents = true\n }));\n } finally {\n supportsPassiveEvents = supportsPassiveEvents || false;\n }\n }\n\n return supportsPassiveEvents;\n}\n\n/**\n * Normalizes an `AddEventListener` object to something that can be passed\n * to `addEventListener` on any browser, no matter whether it supports the\n * `options` parameter.\n * @param options Object to be normalized.\n */\nexport function normalizePassiveListenerOptions(options: AddEventListenerOptions):\n AddEventListenerOptions | boolean {\n return supportsPassiveEventListeners() ? options : !!options.capture;\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\n/** Cached result Set of input types support by the current browser. */\nlet supportedInputTypes: Set<string>;\n\n/** Types of `<input>` that *might* be supported. */\nconst candidateInputTypes = [\n // `color` must come first. Chrome 56 shows a warning if we change the type to `color` after\n // first changing it to something else:\n // The specified value \"\" does not conform to the required format.\n // The format is \"#rrggbb\" where rr, gg, bb are two-digit hexadecimal numbers.\n 'color',\n 'button',\n 'checkbox',\n 'date',\n 'datetime-local',\n 'email',\n 'file',\n 'hidden',\n 'image',\n 'month',\n 'number',\n 'password',\n 'radio',\n 'range',\n 'reset',\n 'search',\n 'submit',\n 'tel',\n 'text',\n 'time',\n 'url',\n 'week',\n];\n\n/** @returns The input types supported by this browser. */\nexport function getSupportedInputTypes(): Set<string> {\n // Result is cached.\n if (supportedInputTypes) {\n return supportedInputTypes;\n }\n\n // We can't check if an input type is not supported until we're on the browser, so say that\n // everything is supported when not on the browser. We don't use `Platform` here since it's\n // just a helper function and can't inject it.\n if (typeof document !== 'object' || !document) {\n supportedInputTypes = new Set(candidateInputTypes);\n return supportedInputTypes;\n }\n\n let featureTestInput = document.createElement('input');\n supportedInputTypes = new Set(candidateInputTypes.filter(value => {\n featureTestInput.setAttribute('type', value);\n return featureTestInput.type === value;\n }));\n\n return supportedInputTypes;\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\n\n@NgModule({})\nexport class PlatformModule {}\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 {Inject, Injectable, Optional, PLATFORM_ID} from '@angular/core';\nimport {isPlatformBrowser} from '@angular/common';\n\n\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nconst hasV8BreakIterator = (typeof Intl !== 'undefined' && (Intl as any).v8BreakIterator);\n\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\n@Injectable({providedIn: 'root'})\nexport class Platform {\n /**\n * Whether the Angular application is being rendered in the browser.\n * We want to use the Angular platform check because if the Document is shimmed\n * without the navigator, the following checks will fail. This is preferred because\n * sometimes the Document may be shimmed without the user's knowledge or intention\n */\n isBrowser: boolean = this._platformId ?\n isPlatformBrowser(this._platformId) : typeof document === 'object' && !!document;\n\n /** Whether the current browser is Microsoft Edge. */\n EDGE: boolean = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n\n /** Whether the current rendering engine is Microsoft Trident. */\n TRIDENT: boolean = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);\n\n /** Whether the current rendering engine is Blink. */\n // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n BLINK: boolean = this.isBrowser && (!!((window as any).chrome || hasV8BreakIterator) &&\n typeof CSS !== 'undefined' && !this.EDGE && !this.TRIDENT);\n\n /** Whether the current rendering engine is WebKit. */\n // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to\n // ensure that Webkit runs standalone and is not used as another engine's base.\n WEBKIT: boolean = this.isBrowser &&\n /AppleWebKit/i.test(navigator.userAgent) && !this.BLINK && !this.EDGE && !this.TRIDENT;\n\n /** Whether the current platform is Apple iOS. */\n IOS: boolean = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) &&\n !('MSStream' in window);\n\n /** Whether the current browser is Firefox. */\n // It's difficult to detect the plain Gecko engine, because most of the browsers identify\n // them self as Gecko-like browsers and modify the userAgent's according to that.\n // Since we only cover one explicit Firefox case, we can simply check for Firefox\n // instead of having an unstable check for Gecko.\n FIREFOX: boolean = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n\n /** Whether the current platform is Android. */\n // Trident on mobile adds the android platform to the userAgent to trick detections.\n ANDROID: boolean = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;\n\n /** Whether the current browser is Safari. */\n // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake\n // this and just place the Safari keyword in the userAgent. To be more safe about Safari every\n // Safari browser should also use Webkit as its layout engine.\n SAFARI: boolean = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n\n /**\n * @breaking-change 8.0.0 remove optional decorator\n */\n constructor(@Optional() @Inject(PLATFORM_ID) private _platformId?: Object) {\n }\n}\n\n"],"names":["NgModule","Optional","Inject","PLATFORM_ID","Injectable","isPlatformBrowser"],"mappings":"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"}
1
+ {"version":3,"file":"cdk-platform.umd.js","sources":["../../src/cdk/platform/features/scrolling.ts","../../src/cdk/platform/features/passive-listeners.ts","../../src/cdk/platform/features/input-types.ts","../../src/cdk/platform/platform-module.ts","../../src/cdk/platform/platform.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/** The possible ways the browser may handle the horizontal scroll axis in RTL languages. */\nexport enum RtlScrollAxisType {\n /**\n * scrollLeft is 0 when scrolled all the way left and (scrollWidth - clientWidth) when scrolled\n * all the way right.\n */\n NORMAL,\n /**\n * scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled\n * all the way right.\n */\n NEGATED,\n /**\n * scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled\n * all the way right.\n */\n INVERTED\n}\n\n/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */\nlet rtlScrollAxisType: RtlScrollAxisType;\n\n/** Check whether the browser supports scroll behaviors. */\nexport function supportsScrollBehavior(): boolean {\n return !!(typeof document == 'object' && 'scrollBehavior' in document.documentElement!.style);\n}\n\n/**\n * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,\n * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.\n */\nexport function getRtlScrollAxisType(): RtlScrollAxisType {\n // We can't check unless we're on the browser. Just assume 'normal' if we're not.\n if (typeof document !== 'object' || !document) {\n return RtlScrollAxisType.NORMAL;\n }\n\n if (!rtlScrollAxisType) {\n // Create a 1px wide scrolling container and a 2px wide content element.\n const scrollContainer = document.createElement('div');\n const containerStyle = scrollContainer.style;\n scrollContainer.dir = 'rtl';\n containerStyle.height = '1px';\n containerStyle.width = '1px';\n containerStyle.overflow = 'auto';\n containerStyle.visibility = 'hidden';\n containerStyle.pointerEvents = 'none';\n containerStyle.position = 'absolute';\n\n const content = document.createElement('div');\n const contentStyle = content.style;\n contentStyle.width = '2px';\n contentStyle.height = '1px';\n\n scrollContainer.appendChild(content);\n document.body.appendChild(scrollContainer);\n\n rtlScrollAxisType = RtlScrollAxisType.NORMAL;\n\n // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL\n // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're\n // dealing with one of the other two types of browsers.\n if (scrollContainer.scrollLeft === 0) {\n // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an\n // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by\n // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will\n // return 0 when we read it again.\n scrollContainer.scrollLeft = 1;\n rtlScrollAxisType =\n scrollContainer.scrollLeft === 0 ? RtlScrollAxisType.NEGATED : RtlScrollAxisType.INVERTED;\n }\n\n scrollContainer.parentNode!.removeChild(scrollContainer);\n }\n return rtlScrollAxisType;\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\n/** Cached result of whether the user's browser supports passive event listeners. */\nlet supportsPassiveEvents: boolean;\n\n/**\n * Checks whether the user's browser supports passive event listeners.\n * See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n */\nexport function supportsPassiveEventListeners(): boolean {\n if (supportsPassiveEvents == null && typeof window !== 'undefined') {\n try {\n window.addEventListener('test', null!, Object.defineProperty({}, 'passive', {\n get: () => supportsPassiveEvents = true\n }));\n } finally {\n supportsPassiveEvents = supportsPassiveEvents || false;\n }\n }\n\n return supportsPassiveEvents;\n}\n\n/**\n * Normalizes an `AddEventListener` object to something that can be passed\n * to `addEventListener` on any browser, no matter whether it supports the\n * `options` parameter.\n * @param options Object to be normalized.\n */\nexport function normalizePassiveListenerOptions(options: AddEventListenerOptions):\n AddEventListenerOptions | boolean {\n return supportsPassiveEventListeners() ? options : !!options.capture;\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\n/** Cached result Set of input types support by the current browser. */\nlet supportedInputTypes: Set<string>;\n\n/** Types of `<input>` that *might* be supported. */\nconst candidateInputTypes = [\n // `color` must come first. Chrome 56 shows a warning if we change the type to `color` after\n // first changing it to something else:\n // The specified value \"\" does not conform to the required format.\n // The format is \"#rrggbb\" where rr, gg, bb are two-digit hexadecimal numbers.\n 'color',\n 'button',\n 'checkbox',\n 'date',\n 'datetime-local',\n 'email',\n 'file',\n 'hidden',\n 'image',\n 'month',\n 'number',\n 'password',\n 'radio',\n 'range',\n 'reset',\n 'search',\n 'submit',\n 'tel',\n 'text',\n 'time',\n 'url',\n 'week',\n];\n\n/** @returns The input types supported by this browser. */\nexport function getSupportedInputTypes(): Set<string> {\n // Result is cached.\n if (supportedInputTypes) {\n return supportedInputTypes;\n }\n\n // We can't check if an input type is not supported until we're on the browser, so say that\n // everything is supported when not on the browser. We don't use `Platform` here since it's\n // just a helper function and can't inject it.\n if (typeof document !== 'object' || !document) {\n supportedInputTypes = new Set(candidateInputTypes);\n return supportedInputTypes;\n }\n\n let featureTestInput = document.createElement('input');\n supportedInputTypes = new Set(candidateInputTypes.filter(value => {\n featureTestInput.setAttribute('type', value);\n return featureTestInput.type === value;\n }));\n\n return supportedInputTypes;\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\n\n@NgModule({})\nexport class PlatformModule {}\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 {Inject, Injectable, Optional, PLATFORM_ID} from '@angular/core';\nimport {isPlatformBrowser} from '@angular/common';\n\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nlet hasV8BreakIterator: boolean;\n\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/material2/issues/15687\ntry {\n hasV8BreakIterator = (typeof Intl !== 'undefined' && (Intl as any).v8BreakIterator);\n} catch {\n hasV8BreakIterator = false;\n}\n\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\n@Injectable({providedIn: 'root'})\nexport class Platform {\n /**\n * Whether the Angular application is being rendered in the browser.\n * We want to use the Angular platform check because if the Document is shimmed\n * without the navigator, the following checks will fail. This is preferred because\n * sometimes the Document may be shimmed without the user's knowledge or intention\n */\n isBrowser: boolean = this._platformId ?\n isPlatformBrowser(this._platformId) : typeof document === 'object' && !!document;\n\n /** Whether the current browser is Microsoft Edge. */\n EDGE: boolean = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n\n /** Whether the current rendering engine is Microsoft Trident. */\n TRIDENT: boolean = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);\n\n /** Whether the current rendering engine is Blink. */\n // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n BLINK: boolean = this.isBrowser && (!!((window as any).chrome || hasV8BreakIterator) &&\n typeof CSS !== 'undefined' && !this.EDGE && !this.TRIDENT);\n\n /** Whether the current rendering engine is WebKit. */\n // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to\n // ensure that Webkit runs standalone and is not used as another engine's base.\n WEBKIT: boolean = this.isBrowser &&\n /AppleWebKit/i.test(navigator.userAgent) && !this.BLINK && !this.EDGE && !this.TRIDENT;\n\n /** Whether the current platform is Apple iOS. */\n IOS: boolean = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) &&\n !('MSStream' in window);\n\n /** Whether the current browser is Firefox. */\n // It's difficult to detect the plain Gecko engine, because most of the browsers identify\n // them self as Gecko-like browsers and modify the userAgent's according to that.\n // Since we only cover one explicit Firefox case, we can simply check for Firefox\n // instead of having an unstable check for Gecko.\n FIREFOX: boolean = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n\n /** Whether the current platform is Android. */\n // Trident on mobile adds the android platform to the userAgent to trick detections.\n ANDROID: boolean = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;\n\n /** Whether the current browser is Safari. */\n // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake\n // this and just place the Safari keyword in the userAgent. To be more safe about Safari every\n // Safari browser should also use Webkit as its layout engine.\n SAFARI: boolean = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n\n /**\n * @breaking-change 8.0.0 remove optional decorator\n */\n constructor(@Optional() @Inject(PLATFORM_ID) private _platformId?: Object) {\n}\n}\n\n"],"names":["NgModule","Optional","Inject","PLATFORM_ID","Injectable","isPlatformBrowser"],"mappings":"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"}
@@ -5,5 +5,5 @@
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/common")):"function"==typeof define&&define.amd?define("@angular/cdk/platform",["exports","@angular/core","@angular/common"],t):t((e.ng=e.ng||{},e.ng.cdk=e.ng.cdk||{},e.ng.cdk.platform={}),e.ng.core,e.ng.common)}(this,function(e,t,r){"use strict";function n(){if(u)return u;if("object"!=typeof document||!document)return u=new Set(p);var e=document.createElement("input");return u=new Set(p.filter(function(t){return e.setAttribute("type",t),e.type===t}))}function i(){if(null==d&&"undefined"!=typeof window)try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){return d=!0}}))}finally{d=d||!1}return d}function o(e){return i()?e:!!e.capture}function s(){return!!("object"==typeof document&&"scrollBehavior"in document.documentElement.style)}function a(){if("object"!=typeof document||!document)return m.NORMAL;if(!h){var e=document.createElement("div"),t=e.style;e.dir="rtl",t.height="1px",t.width="1px",t.overflow="auto",t.visibility="hidden",t.pointerEvents="none",t.position="absolute";var r=document.createElement("div"),n=r.style;n.width="2px",n.height="1px",e.appendChild(r),document.body.appendChild(e),h=m.NORMAL,0===e.scrollLeft&&(e.scrollLeft=1,h=0===e.scrollLeft?m.NEGATED:m.INVERTED),e.parentNode.removeChild(e)}return h}var u,d,c="undefined"!=typeof Intl&&Intl.v8BreakIterator,l=function(){function e(e){this._platformId=e,this.isBrowser=this._platformId?r.isPlatformBrowser(this._platformId):"object"==typeof document&&!!document,this.EDGE=this.isBrowser&&/(edge)/i.test(navigator.userAgent),this.TRIDENT=this.isBrowser&&/(msie|trident)/i.test(navigator.userAgent),this.BLINK=this.isBrowser&&!(!window.chrome&&!c)&&"undefined"!=typeof CSS&&!this.EDGE&&!this.TRIDENT,this.WEBKIT=this.isBrowser&&/AppleWebKit/i.test(navigator.userAgent)&&!this.BLINK&&!this.EDGE&&!this.TRIDENT,this.IOS=this.isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!("MSStream"in window),this.FIREFOX=this.isBrowser&&/(firefox|minefield)/i.test(navigator.userAgent),this.ANDROID=this.isBrowser&&/android/i.test(navigator.userAgent)&&!this.TRIDENT,this.SAFARI=this.isBrowser&&/safari/i.test(navigator.userAgent)&&this.WEBKIT}return e.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],e.ctorParameters=function(){return[{type:Object,decorators:[{type:t.Optional},{type:t.Inject,args:[t.PLATFORM_ID]}]}]},e.ngInjectableDef=t.defineInjectable({factory:function(){return new e(t.inject(t.PLATFORM_ID,8))},token:e,providedIn:"root"}),e}(),f=function(){function e(){}return e.decorators=[{type:t.NgModule,args:[{}]}],e}(),p=["color","button","checkbox","date","datetime-local","email","file","hidden","image","month","number","password","radio","range","reset","search","submit","tel","text","time","url","week"],m={NORMAL:0,NEGATED:1,INVERTED:2};m[m.NORMAL]="NORMAL",m[m.NEGATED]="NEGATED",m[m.INVERTED]="INVERTED";var h;e.Platform=l,e.PlatformModule=f,e.getSupportedInputTypes=n,e.supportsPassiveEventListeners=i,e.normalizePassiveListenerOptions=o,e.supportsScrollBehavior=s,e.getRtlScrollAxisType=a,e.RtlScrollAxisType=m,Object.defineProperty(e,"__esModule",{value:!0})});
8
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/common")):"function"==typeof define&&define.amd?define("@angular/cdk/platform",["exports","@angular/core","@angular/common"],t):t((e.ng=e.ng||{},e.ng.cdk=e.ng.cdk||{},e.ng.cdk.platform={}),e.ng.core,e.ng.common)}(this,function(e,t,r){"use strict";function n(){if(d)return d;if("object"!=typeof document||!document)return d=new Set(p);var e=document.createElement("input");return d=new Set(p.filter(function(t){return e.setAttribute("type",t),e.type===t}))}function i(){if(null==c&&"undefined"!=typeof window)try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){return c=!0}}))}finally{c=c||!1}return c}function o(e){return i()?e:!!e.capture}function s(){return!!("object"==typeof document&&"scrollBehavior"in document.documentElement.style)}function a(){if("object"!=typeof document||!document)return h.NORMAL;if(!m){var e=document.createElement("div"),t=e.style;e.dir="rtl",t.height="1px",t.width="1px",t.overflow="auto",t.visibility="hidden",t.pointerEvents="none",t.position="absolute";var r=document.createElement("div"),n=r.style;n.width="2px",n.height="1px",e.appendChild(r),document.body.appendChild(e),m=h.NORMAL,0===e.scrollLeft&&(e.scrollLeft=1,m=0===e.scrollLeft?h.NEGATED:h.INVERTED),e.parentNode.removeChild(e)}return m}var u;try{u="undefined"!=typeof Intl&&Intl.v8BreakIterator}catch(e){u=!1}var d,c,l=function(){function e(e){this._platformId=e,this.isBrowser=this._platformId?r.isPlatformBrowser(this._platformId):"object"==typeof document&&!!document,this.EDGE=this.isBrowser&&/(edge)/i.test(navigator.userAgent),this.TRIDENT=this.isBrowser&&/(msie|trident)/i.test(navigator.userAgent),this.BLINK=this.isBrowser&&!(!window.chrome&&!u)&&"undefined"!=typeof CSS&&!this.EDGE&&!this.TRIDENT,this.WEBKIT=this.isBrowser&&/AppleWebKit/i.test(navigator.userAgent)&&!this.BLINK&&!this.EDGE&&!this.TRIDENT,this.IOS=this.isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!("MSStream"in window),this.FIREFOX=this.isBrowser&&/(firefox|minefield)/i.test(navigator.userAgent),this.ANDROID=this.isBrowser&&/android/i.test(navigator.userAgent)&&!this.TRIDENT,this.SAFARI=this.isBrowser&&/safari/i.test(navigator.userAgent)&&this.WEBKIT}return e.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],e.ctorParameters=function(){return[{type:Object,decorators:[{type:t.Optional},{type:t.Inject,args:[t.PLATFORM_ID]}]}]},e.ngInjectableDef=t.defineInjectable({factory:function(){return new e(t.inject(t.PLATFORM_ID,8))},token:e,providedIn:"root"}),e}(),f=function(){function e(){}return e.decorators=[{type:t.NgModule,args:[{}]}],e}(),p=["color","button","checkbox","date","datetime-local","email","file","hidden","image","month","number","password","radio","range","reset","search","submit","tel","text","time","url","week"],h={NORMAL:0,NEGATED:1,INVERTED:2};h[h.NORMAL]="NORMAL",h[h.NEGATED]="NEGATED",h[h.INVERTED]="INVERTED";var m;e.Platform=l,e.PlatformModule=f,e.getSupportedInputTypes=n,e.supportsPassiveEventListeners=i,e.normalizePassiveListenerOptions=o,e.supportsScrollBehavior=s,e.getRtlScrollAxisType=a,e.RtlScrollAxisType=h,Object.defineProperty(e,"__esModule",{value:!0})});
9
9
  //# sourceMappingURL=cdk-platform.umd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cdk-platform.umd.min.js","sources":["../../src/cdk/platform/features/input-types.ts","../../src/cdk/platform/features/passive-listeners.ts","../../src/cdk/platform/features/scrolling.ts","../../src/cdk/platform/platform.ts","../../src/cdk/platform/platform-module.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/** Cached result Set of input types support by the current browser. */\nlet supportedInputTypes: Set<string>;\n\n/** Types of `<input>` that *might* be supported. */\nconst candidateInputTypes = [\n // `color` must come first. Chrome 56 shows a warning if we change the type to `color` after\n // first changing it to something else:\n // The specified value \"\" does not conform to the required format.\n // The format is \"#rrggbb\" where rr, gg, bb are two-digit hexadecimal numbers.\n 'color',\n 'button',\n 'checkbox',\n 'date',\n 'datetime-local',\n 'email',\n 'file',\n 'hidden',\n 'image',\n 'month',\n 'number',\n 'password',\n 'radio',\n 'range',\n 'reset',\n 'search',\n 'submit',\n 'tel',\n 'text',\n 'time',\n 'url',\n 'week',\n];\n\n/** @returns The input types supported by this browser. */\nexport function getSupportedInputTypes(): Set<string> {\n // Result is cached.\n if (supportedInputTypes) {\n return supportedInputTypes;\n }\n\n // We can't check if an input type is not supported until we're on the browser, so say that\n // everything is supported when not on the browser. We don't use `Platform` here since it's\n // just a helper function and can't inject it.\n if (typeof document !== 'object' || !document) {\n supportedInputTypes = new Set(candidateInputTypes);\n return supportedInputTypes;\n }\n\n let featureTestInput = document.createElement('input');\n supportedInputTypes = new Set(candidateInputTypes.filter(value => {\n featureTestInput.setAttribute('type', value);\n return featureTestInput.type === value;\n }));\n\n return supportedInputTypes;\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\n/** Cached result of whether the user's browser supports passive event listeners. */\nlet supportsPassiveEvents: boolean;\n\n/**\n * Checks whether the user's browser supports passive event listeners.\n * See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n */\nexport function supportsPassiveEventListeners(): boolean {\n if (supportsPassiveEvents == null && typeof window !== 'undefined') {\n try {\n window.addEventListener('test', null!, Object.defineProperty({}, 'passive', {\n get: () => supportsPassiveEvents = true\n }));\n } finally {\n supportsPassiveEvents = supportsPassiveEvents || false;\n }\n }\n\n return supportsPassiveEvents;\n}\n\n/**\n * Normalizes an `AddEventListener` object to something that can be passed\n * to `addEventListener` on any browser, no matter whether it supports the\n * `options` parameter.\n * @param options Object to be normalized.\n */\nexport function normalizePassiveListenerOptions(options: AddEventListenerOptions):\n AddEventListenerOptions | boolean {\n return supportsPassiveEventListeners() ? options : !!options.capture;\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\n/** The possible ways the browser may handle the horizontal scroll axis in RTL languages. */\nexport enum RtlScrollAxisType {\n /**\n * scrollLeft is 0 when scrolled all the way left and (scrollWidth - clientWidth) when scrolled\n * all the way right.\n */\n NORMAL,\n /**\n * scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled\n * all the way right.\n */\n NEGATED,\n /**\n * scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled\n * all the way right.\n */\n INVERTED\n}\n\n/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */\nlet rtlScrollAxisType: RtlScrollAxisType;\n\n/** Check whether the browser supports scroll behaviors. */\nexport function supportsScrollBehavior(): boolean {\n return !!(typeof document == 'object' && 'scrollBehavior' in document.documentElement!.style);\n}\n\n/**\n * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,\n * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.\n */\nexport function getRtlScrollAxisType(): RtlScrollAxisType {\n // We can't check unless we're on the browser. Just assume 'normal' if we're not.\n if (typeof document !== 'object' || !document) {\n return RtlScrollAxisType.NORMAL;\n }\n\n if (!rtlScrollAxisType) {\n // Create a 1px wide scrolling container and a 2px wide content element.\n const scrollContainer = document.createElement('div');\n const containerStyle = scrollContainer.style;\n scrollContainer.dir = 'rtl';\n containerStyle.height = '1px';\n containerStyle.width = '1px';\n containerStyle.overflow = 'auto';\n containerStyle.visibility = 'hidden';\n containerStyle.pointerEvents = 'none';\n containerStyle.position = 'absolute';\n\n const content = document.createElement('div');\n const contentStyle = content.style;\n contentStyle.width = '2px';\n contentStyle.height = '1px';\n\n scrollContainer.appendChild(content);\n document.body.appendChild(scrollContainer);\n\n rtlScrollAxisType = RtlScrollAxisType.NORMAL;\n\n // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL\n // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're\n // dealing with one of the other two types of browsers.\n if (scrollContainer.scrollLeft === 0) {\n // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an\n // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by\n // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will\n // return 0 when we read it again.\n scrollContainer.scrollLeft = 1;\n rtlScrollAxisType =\n scrollContainer.scrollLeft === 0 ? RtlScrollAxisType.NEGATED : RtlScrollAxisType.INVERTED;\n }\n\n scrollContainer.parentNode!.removeChild(scrollContainer);\n }\n return rtlScrollAxisType;\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 {Inject, Injectable, Optional, PLATFORM_ID} from '@angular/core';\nimport {isPlatformBrowser} from '@angular/common';\n\n\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nconst hasV8BreakIterator = (typeof Intl !== 'undefined' && (Intl as any).v8BreakIterator);\n\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\n@Injectable({providedIn: 'root'})\nexport class Platform {\n /**\n * Whether the Angular application is being rendered in the browser.\n * We want to use the Angular platform check because if the Document is shimmed\n * without the navigator, the following checks will fail. This is preferred because\n * sometimes the Document may be shimmed without the user's knowledge or intention\n */\n isBrowser: boolean = this._platformId ?\n isPlatformBrowser(this._platformId) : typeof document === 'object' && !!document;\n\n /** Whether the current browser is Microsoft Edge. */\n EDGE: boolean = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n\n /** Whether the current rendering engine is Microsoft Trident. */\n TRIDENT: boolean = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);\n\n /** Whether the current rendering engine is Blink. */\n // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n BLINK: boolean = this.isBrowser && (!!((window as any).chrome || hasV8BreakIterator) &&\n typeof CSS !== 'undefined' && !this.EDGE && !this.TRIDENT);\n\n /** Whether the current rendering engine is WebKit. */\n // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to\n // ensure that Webkit runs standalone and is not used as another engine's base.\n WEBKIT: boolean = this.isBrowser &&\n /AppleWebKit/i.test(navigator.userAgent) && !this.BLINK && !this.EDGE && !this.TRIDENT;\n\n /** Whether the current platform is Apple iOS. */\n IOS: boolean = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) &&\n !('MSStream' in window);\n\n /** Whether the current browser is Firefox. */\n // It's difficult to detect the plain Gecko engine, because most of the browsers identify\n // them self as Gecko-like browsers and modify the userAgent's according to that.\n // Since we only cover one explicit Firefox case, we can simply check for Firefox\n // instead of having an unstable check for Gecko.\n FIREFOX: boolean = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n\n /** Whether the current platform is Android. */\n // Trident on mobile adds the android platform to the userAgent to trick detections.\n ANDROID: boolean = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;\n\n /** Whether the current browser is Safari. */\n // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake\n // this and just place the Safari keyword in the userAgent. To be more safe about Safari every\n // Safari browser should also use Webkit as its layout engine.\n SAFARI: boolean = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n\n /**\n * @breaking-change 8.0.0 remove optional decorator\n */\n constructor(@Optional() @Inject(PLATFORM_ID) private _platformId?: Object) {\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';\n\n\n@NgModule({})\nexport class PlatformModule {}\n"],"names":["getSupportedInputTypes","supportedInputTypes","document","Set","candidateInputTypes","featureTestInput","createElement","filter","value","setAttribute","type","supportsPassiveEventListeners","supportsPassiveEvents","window","addEventListener","Object","defineProperty","get","normalizePassiveListenerOptions","options","capture","supportsScrollBehavior","style","getRtlScrollAxisType","RtlScrollAxisType","NORMAL","rtlScrollAxisType","scrollContainer","containerStyle","dir","height","width","overflow","visibility","pointerEvents","position","content","contentStyle","appendChild","body","scrollLeft","NEGATED","INVERTED","removeChild","hasV8BreakIterator","Intl","v8BreakIterator","Platform","_platformId","this","isBrowser","isPlatformBrowser","EDGE","test","navigator","userAgent","TRIDENT","BLINK","chrome","CSS","WEBKIT","IOS","FIREFOX","ANDROID","SAFARI","Injectable","args","providedIn","decorators","Optional","Inject","PLATFORM_ID","PlatformModule","NgModule"],"mappings":"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"}
1
+ {"version":3,"file":"cdk-platform.umd.min.js","sources":["../../src/cdk/platform/features/input-types.ts","../../src/cdk/platform/features/passive-listeners.ts","../../src/cdk/platform/features/scrolling.ts","../../src/cdk/platform/platform.ts","../../src/cdk/platform/platform-module.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/** Cached result Set of input types support by the current browser. */\nlet supportedInputTypes: Set<string>;\n\n/** Types of `<input>` that *might* be supported. */\nconst candidateInputTypes = [\n // `color` must come first. Chrome 56 shows a warning if we change the type to `color` after\n // first changing it to something else:\n // The specified value \"\" does not conform to the required format.\n // The format is \"#rrggbb\" where rr, gg, bb are two-digit hexadecimal numbers.\n 'color',\n 'button',\n 'checkbox',\n 'date',\n 'datetime-local',\n 'email',\n 'file',\n 'hidden',\n 'image',\n 'month',\n 'number',\n 'password',\n 'radio',\n 'range',\n 'reset',\n 'search',\n 'submit',\n 'tel',\n 'text',\n 'time',\n 'url',\n 'week',\n];\n\n/** @returns The input types supported by this browser. */\nexport function getSupportedInputTypes(): Set<string> {\n // Result is cached.\n if (supportedInputTypes) {\n return supportedInputTypes;\n }\n\n // We can't check if an input type is not supported until we're on the browser, so say that\n // everything is supported when not on the browser. We don't use `Platform` here since it's\n // just a helper function and can't inject it.\n if (typeof document !== 'object' || !document) {\n supportedInputTypes = new Set(candidateInputTypes);\n return supportedInputTypes;\n }\n\n let featureTestInput = document.createElement('input');\n supportedInputTypes = new Set(candidateInputTypes.filter(value => {\n featureTestInput.setAttribute('type', value);\n return featureTestInput.type === value;\n }));\n\n return supportedInputTypes;\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\n/** Cached result of whether the user's browser supports passive event listeners. */\nlet supportsPassiveEvents: boolean;\n\n/**\n * Checks whether the user's browser supports passive event listeners.\n * See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n */\nexport function supportsPassiveEventListeners(): boolean {\n if (supportsPassiveEvents == null && typeof window !== 'undefined') {\n try {\n window.addEventListener('test', null!, Object.defineProperty({}, 'passive', {\n get: () => supportsPassiveEvents = true\n }));\n } finally {\n supportsPassiveEvents = supportsPassiveEvents || false;\n }\n }\n\n return supportsPassiveEvents;\n}\n\n/**\n * Normalizes an `AddEventListener` object to something that can be passed\n * to `addEventListener` on any browser, no matter whether it supports the\n * `options` parameter.\n * @param options Object to be normalized.\n */\nexport function normalizePassiveListenerOptions(options: AddEventListenerOptions):\n AddEventListenerOptions | boolean {\n return supportsPassiveEventListeners() ? options : !!options.capture;\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\n/** The possible ways the browser may handle the horizontal scroll axis in RTL languages. */\nexport enum RtlScrollAxisType {\n /**\n * scrollLeft is 0 when scrolled all the way left and (scrollWidth - clientWidth) when scrolled\n * all the way right.\n */\n NORMAL,\n /**\n * scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled\n * all the way right.\n */\n NEGATED,\n /**\n * scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled\n * all the way right.\n */\n INVERTED\n}\n\n/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */\nlet rtlScrollAxisType: RtlScrollAxisType;\n\n/** Check whether the browser supports scroll behaviors. */\nexport function supportsScrollBehavior(): boolean {\n return !!(typeof document == 'object' && 'scrollBehavior' in document.documentElement!.style);\n}\n\n/**\n * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,\n * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.\n */\nexport function getRtlScrollAxisType(): RtlScrollAxisType {\n // We can't check unless we're on the browser. Just assume 'normal' if we're not.\n if (typeof document !== 'object' || !document) {\n return RtlScrollAxisType.NORMAL;\n }\n\n if (!rtlScrollAxisType) {\n // Create a 1px wide scrolling container and a 2px wide content element.\n const scrollContainer = document.createElement('div');\n const containerStyle = scrollContainer.style;\n scrollContainer.dir = 'rtl';\n containerStyle.height = '1px';\n containerStyle.width = '1px';\n containerStyle.overflow = 'auto';\n containerStyle.visibility = 'hidden';\n containerStyle.pointerEvents = 'none';\n containerStyle.position = 'absolute';\n\n const content = document.createElement('div');\n const contentStyle = content.style;\n contentStyle.width = '2px';\n contentStyle.height = '1px';\n\n scrollContainer.appendChild(content);\n document.body.appendChild(scrollContainer);\n\n rtlScrollAxisType = RtlScrollAxisType.NORMAL;\n\n // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL\n // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're\n // dealing with one of the other two types of browsers.\n if (scrollContainer.scrollLeft === 0) {\n // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an\n // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by\n // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will\n // return 0 when we read it again.\n scrollContainer.scrollLeft = 1;\n rtlScrollAxisType =\n scrollContainer.scrollLeft === 0 ? RtlScrollAxisType.NEGATED : RtlScrollAxisType.INVERTED;\n }\n\n scrollContainer.parentNode!.removeChild(scrollContainer);\n }\n return rtlScrollAxisType;\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 {Inject, Injectable, Optional, PLATFORM_ID} from '@angular/core';\nimport {isPlatformBrowser} from '@angular/common';\n\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nlet hasV8BreakIterator: boolean;\n\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/material2/issues/15687\ntry {\n hasV8BreakIterator = (typeof Intl !== 'undefined' && (Intl as any).v8BreakIterator);\n} catch {\n hasV8BreakIterator = false;\n}\n\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\n@Injectable({providedIn: 'root'})\nexport class Platform {\n /**\n * Whether the Angular application is being rendered in the browser.\n * We want to use the Angular platform check because if the Document is shimmed\n * without the navigator, the following checks will fail. This is preferred because\n * sometimes the Document may be shimmed without the user's knowledge or intention\n */\n isBrowser: boolean = this._platformId ?\n isPlatformBrowser(this._platformId) : typeof document === 'object' && !!document;\n\n /** Whether the current browser is Microsoft Edge. */\n EDGE: boolean = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n\n /** Whether the current rendering engine is Microsoft Trident. */\n TRIDENT: boolean = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);\n\n /** Whether the current rendering engine is Blink. */\n // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n BLINK: boolean = this.isBrowser && (!!((window as any).chrome || hasV8BreakIterator) &&\n typeof CSS !== 'undefined' && !this.EDGE && !this.TRIDENT);\n\n /** Whether the current rendering engine is WebKit. */\n // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to\n // ensure that Webkit runs standalone and is not used as another engine's base.\n WEBKIT: boolean = this.isBrowser &&\n /AppleWebKit/i.test(navigator.userAgent) && !this.BLINK && !this.EDGE && !this.TRIDENT;\n\n /** Whether the current platform is Apple iOS. */\n IOS: boolean = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) &&\n !('MSStream' in window);\n\n /** Whether the current browser is Firefox. */\n // It's difficult to detect the plain Gecko engine, because most of the browsers identify\n // them self as Gecko-like browsers and modify the userAgent's according to that.\n // Since we only cover one explicit Firefox case, we can simply check for Firefox\n // instead of having an unstable check for Gecko.\n FIREFOX: boolean = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n\n /** Whether the current platform is Android. */\n // Trident on mobile adds the android platform to the userAgent to trick detections.\n ANDROID: boolean = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;\n\n /** Whether the current browser is Safari. */\n // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake\n // this and just place the Safari keyword in the userAgent. To be more safe about Safari every\n // Safari browser should also use Webkit as its layout engine.\n SAFARI: boolean = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n\n /**\n * @breaking-change 8.0.0 remove optional decorator\n */\n constructor(@Optional() @Inject(PLATFORM_ID) private _platformId?: Object) {\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';\n\n\n@NgModule({})\nexport class PlatformModule {}\n"],"names":["getSupportedInputTypes","supportedInputTypes","document","Set","candidateInputTypes","featureTestInput","createElement","filter","value","setAttribute","type","supportsPassiveEventListeners","supportsPassiveEvents","window","addEventListener","Object","defineProperty","get","normalizePassiveListenerOptions","options","capture","supportsScrollBehavior","style","getRtlScrollAxisType","RtlScrollAxisType","NORMAL","rtlScrollAxisType","scrollContainer","containerStyle","dir","height","width","overflow","visibility","pointerEvents","position","content","contentStyle","appendChild","body","scrollLeft","NEGATED","INVERTED","removeChild","hasV8BreakIterator","Intl","v8BreakIterator","_a","Platform","_platformId","this","isBrowser","isPlatformBrowser","EDGE","test","navigator","userAgent","TRIDENT","BLINK","chrome","CSS","WEBKIT","IOS","FIREFOX","ANDROID","SAFARI","Injectable","args","providedIn","decorators","Optional","Inject","PLATFORM_ID","PlatformModule","NgModule"],"mappings":"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"}
@@ -940,6 +940,13 @@ var CdkScrollable = /** @class */ (function () {
940
940
  function rangesEqual(r1, r2) {
941
941
  return r1.start == r2.start && r1.end == r2.end;
942
942
  }
943
+ /**
944
+ * Scheduler to be used for scroll events. Needs to fall back to
945
+ * something that doesn't rely on requestAnimationFrame on environments
946
+ * that don't support it (e.g. server-side rendering).
947
+ * @type {?}
948
+ */
949
+ var SCROLL_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? rxjs.animationFrameScheduler : rxjs.asapScheduler;
943
950
  /**
944
951
  * A viewport that virtualizes it's scrolling with the help of `CdkVirtualForOf`.
945
952
  */
@@ -1044,7 +1051,7 @@ var CdkVirtualScrollViewport = /** @class */ (function (_super) {
1044
1051
  // Collect multiple events into one until the next animation frame. This way if
1045
1052
  // there are multiple scroll events in the same frame we only need to recheck
1046
1053
  // our layout once.
1047
- operators.auditTime(0, rxjs.animationFrameScheduler))
1054
+ operators.auditTime(0, SCROLL_SCHEDULER))
1048
1055
  .subscribe(function () { return _this._scrollStrategy.onContentScrolled(); });
1049
1056
  _this._markChangeDetectionNeeded();
1050
1057
  }); });
@@ -1839,12 +1846,11 @@ var CdkVirtualForOf = /** @class */ (function () {
1839
1846
  if (record.previousIndex == null) { // Item added.
1840
1847
  // Item added.
1841
1848
  /** @type {?} */
1842
- var view = _this._getViewForNewItem();
1843
- _this._viewContainerRef.insert(view, (/** @type {?} */ (currentIndex)));
1849
+ var view = _this._insertViewForNewItem((/** @type {?} */ (currentIndex)));
1844
1850
  view.context.$implicit = record.item;
1845
1851
  }
1846
1852
  else if (currentIndex == null) { // Item removed.
1847
- _this._cacheView((/** @type {?} */ (_this._viewContainerRef.detach((/** @type {?} */ (adjustedPreviousIndex))))));
1853
+ _this._cacheView(_this._detachView((/** @type {?} */ (adjustedPreviousIndex))));
1848
1854
  }
1849
1855
  else { // Item moved.
1850
1856
  // Item moved.
@@ -1904,28 +1910,21 @@ var CdkVirtualForOf = /** @class */ (function () {
1904
1910
  }
1905
1911
  }
1906
1912
  };
1907
- /** Get a view for a new item, either from the cache or by creating a new one. */
1913
+ /** Inserts a view for a new item, either from the cache or by creating a new one. */
1908
1914
  /**
1909
- * Get a view for a new item, either from the cache or by creating a new one.
1915
+ * Inserts a view for a new item, either from the cache or by creating a new one.
1910
1916
  * @private
1917
+ * @param {?} index
1911
1918
  * @return {?}
1912
1919
  */
1913
- CdkVirtualForOf.prototype._getViewForNewItem = /**
1914
- * Get a view for a new item, either from the cache or by creating a new one.
1920
+ CdkVirtualForOf.prototype._insertViewForNewItem = /**
1921
+ * Inserts a view for a new item, either from the cache or by creating a new one.
1915
1922
  * @private
1923
+ * @param {?} index
1916
1924
  * @return {?}
1917
1925
  */
1918
- function () {
1919
- return this._templateCache.pop() || this._viewContainerRef.createEmbeddedView(this._template, {
1920
- $implicit: (/** @type {?} */ (null)),
1921
- cdkVirtualForOf: this._cdkVirtualForOf,
1922
- index: -1,
1923
- count: -1,
1924
- first: false,
1925
- last: false,
1926
- odd: false,
1927
- even: false
1928
- });
1926
+ function (index) {
1927
+ return this._insertViewFromCache(index) || this._createEmbeddedViewAt(index);
1929
1928
  };
1930
1929
  /** Update the computed properties on the `CdkVirtualForOfContext`. */
1931
1930
  /**
@@ -1946,6 +1945,73 @@ var CdkVirtualForOf = /** @class */ (function () {
1946
1945
  context.even = context.index % 2 === 0;
1947
1946
  context.odd = !context.even;
1948
1947
  };
1948
+ /** Creates a new embedded view and moves it to the given index */
1949
+ /**
1950
+ * Creates a new embedded view and moves it to the given index
1951
+ * @private
1952
+ * @param {?} index
1953
+ * @return {?}
1954
+ */
1955
+ CdkVirtualForOf.prototype._createEmbeddedViewAt = /**
1956
+ * Creates a new embedded view and moves it to the given index
1957
+ * @private
1958
+ * @param {?} index
1959
+ * @return {?}
1960
+ */
1961
+ function (index) {
1962
+ /** @type {?} */
1963
+ var view = this._viewContainerRef.createEmbeddedView(this._template, {
1964
+ $implicit: (/** @type {?} */ (null)),
1965
+ cdkVirtualForOf: this._cdkVirtualForOf,
1966
+ index: -1,
1967
+ count: -1,
1968
+ first: false,
1969
+ last: false,
1970
+ odd: false,
1971
+ even: false
1972
+ });
1973
+ if (index < this._viewContainerRef.length) {
1974
+ this._viewContainerRef.move(view, index);
1975
+ }
1976
+ return view;
1977
+ };
1978
+ /** Inserts a recycled view from the cache at the given index. */
1979
+ /**
1980
+ * Inserts a recycled view from the cache at the given index.
1981
+ * @private
1982
+ * @param {?} index
1983
+ * @return {?}
1984
+ */
1985
+ CdkVirtualForOf.prototype._insertViewFromCache = /**
1986
+ * Inserts a recycled view from the cache at the given index.
1987
+ * @private
1988
+ * @param {?} index
1989
+ * @return {?}
1990
+ */
1991
+ function (index) {
1992
+ /** @type {?} */
1993
+ var cachedView = this._templateCache.pop();
1994
+ if (cachedView) {
1995
+ this._viewContainerRef.insert(cachedView, index);
1996
+ }
1997
+ return cachedView || null;
1998
+ };
1999
+ /** Detaches the embedded view at the given index. */
2000
+ /**
2001
+ * Detaches the embedded view at the given index.
2002
+ * @private
2003
+ * @param {?} index
2004
+ * @return {?}
2005
+ */
2006
+ CdkVirtualForOf.prototype._detachView = /**
2007
+ * Detaches the embedded view at the given index.
2008
+ * @private
2009
+ * @param {?} index
2010
+ * @return {?}
2011
+ */
2012
+ function (index) {
2013
+ return (/** @type {?} */ (this._viewContainerRef.detach(index)));
2014
+ };
1949
2015
  CdkVirtualForOf.decorators = [
1950
2016
  { type: core.Directive, args: [{
1951
2017
  selector: '[cdkVirtualFor][cdkVirtualForOf]',