@angular/cdk 7.1.0 → 7.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/_a11y.scss +1 -1
- package/a11y/typings/focus-monitor/focus-monitor.d.ts +20 -5
- package/a11y/typings/focus-trap/focus-trap.d.ts +2 -0
- package/a11y/typings/index.metadata.json +1 -1
- package/bundles/cdk-a11y.umd.js +428 -197
- package/bundles/cdk-a11y.umd.js.map +1 -1
- package/bundles/cdk-a11y.umd.min.js +1 -1
- package/bundles/cdk-a11y.umd.min.js.map +1 -1
- package/bundles/cdk-accordion.umd.js +16 -9
- package/bundles/cdk-accordion.umd.js.map +1 -1
- package/bundles/cdk-accordion.umd.min.js.map +1 -1
- package/bundles/cdk-bidi.umd.js +11 -6
- package/bundles/cdk-bidi.umd.js.map +1 -1
- package/bundles/cdk-bidi.umd.min.js.map +1 -1
- package/bundles/cdk-coercion.umd.js +25 -9
- package/bundles/cdk-coercion.umd.js.map +1 -1
- package/bundles/cdk-coercion.umd.min.js +1 -1
- package/bundles/cdk-coercion.umd.min.js.map +1 -1
- package/bundles/cdk-collections.umd.js +28 -5
- package/bundles/cdk-collections.umd.js.map +1 -1
- package/bundles/cdk-collections.umd.min.js.map +1 -1
- package/bundles/cdk-drag-drop.umd.js +2297 -973
- package/bundles/cdk-drag-drop.umd.js.map +1 -1
- package/bundles/cdk-drag-drop.umd.min.js +2 -1
- package/bundles/cdk-drag-drop.umd.min.js.map +1 -1
- package/bundles/cdk-keycodes.umd.js +12 -2
- package/bundles/cdk-keycodes.umd.js.map +1 -1
- package/bundles/cdk-layout.umd.js +29 -22
- package/bundles/cdk-layout.umd.js.map +1 -1
- package/bundles/cdk-layout.umd.min.js +1 -1
- package/bundles/cdk-layout.umd.min.js.map +1 -1
- package/bundles/cdk-observers.umd.js +27 -8
- package/bundles/cdk-observers.umd.js.map +1 -1
- package/bundles/cdk-observers.umd.min.js +1 -1
- package/bundles/cdk-observers.umd.min.js.map +1 -1
- package/bundles/cdk-overlay.umd.js +586 -240
- package/bundles/cdk-overlay.umd.js.map +1 -1
- package/bundles/cdk-overlay.umd.min.js +2 -2
- package/bundles/cdk-overlay.umd.min.js.map +1 -1
- package/bundles/cdk-platform.umd.js +50 -28
- package/bundles/cdk-platform.umd.js.map +1 -1
- package/bundles/cdk-platform.umd.min.js.map +1 -1
- package/bundles/cdk-portal.umd.js +17 -10
- package/bundles/cdk-portal.umd.js.map +1 -1
- package/bundles/cdk-portal.umd.min.js.map +1 -1
- package/bundles/cdk-scrolling.umd.js +148 -50
- package/bundles/cdk-scrolling.umd.js.map +1 -1
- package/bundles/cdk-scrolling.umd.min.js +1 -1
- package/bundles/cdk-scrolling.umd.min.js.map +1 -1
- package/bundles/cdk-stepper.umd.js +69 -27
- package/bundles/cdk-stepper.umd.js.map +1 -1
- package/bundles/cdk-stepper.umd.min.js +1 -1
- package/bundles/cdk-stepper.umd.min.js.map +1 -1
- package/bundles/cdk-table.umd.js +189 -51
- package/bundles/cdk-table.umd.js.map +1 -1
- package/bundles/cdk-table.umd.min.js +1 -1
- package/bundles/cdk-table.umd.min.js.map +1 -1
- package/bundles/cdk-text-field.umd.js +76 -38
- package/bundles/cdk-text-field.umd.js.map +1 -1
- package/bundles/cdk-text-field.umd.min.js +1 -1
- package/bundles/cdk-text-field.umd.min.js.map +1 -1
- package/bundles/cdk-tree.umd.js +71 -34
- package/bundles/cdk-tree.umd.js.map +1 -1
- package/bundles/cdk-tree.umd.min.js +1 -1
- package/bundles/cdk-tree.umd.min.js.map +1 -1
- package/bundles/cdk.umd.js +5 -4
- package/bundles/cdk.umd.js.map +1 -1
- package/bundles/cdk.umd.min.js +1 -1
- package/bundles/cdk.umd.min.js.map +1 -1
- package/coercion/typings/element.d.ts +13 -0
- package/coercion/typings/index.metadata.json +1 -1
- package/coercion/typings/public-api.d.ts +1 -0
- package/drag-drop/typings/{drag-handle.d.ts → directives/drag-handle.d.ts} +6 -2
- package/drag-drop/typings/{drag-placeholder.d.ts → directives/drag-placeholder.d.ts} +0 -0
- package/drag-drop/typings/{drag-preview.d.ts → directives/drag-preview.d.ts} +0 -0
- package/drag-drop/typings/directives/drag.d.ts +110 -0
- package/{typings/esm5/drag-drop → drag-drop/typings/directives}/drop-list-group.d.ts +3 -0
- package/drag-drop/typings/{drop-list.d.ts → directives/drop-list.d.ts} +32 -72
- package/drag-drop/typings/drag-drop-registry.d.ts +8 -3
- package/drag-drop/typings/drag-events.d.ts +14 -7
- package/{typings/esm5/drag-drop/drag.d.ts → drag-drop/typings/drag-ref.d.ts} +152 -83
- package/drag-drop/typings/drop-list-container.d.ts +19 -3
- package/drag-drop/typings/drop-list-ref.d.ts +234 -0
- package/drag-drop/typings/index.d.ts +1 -0
- package/drag-drop/typings/index.metadata.json +1 -1
- package/drag-drop/typings/public-api.d.ts +13 -6
- package/esm2015/a11y.js +306 -182
- package/esm2015/a11y.js.map +1 -1
- package/esm2015/accordion.js +16 -11
- package/esm2015/accordion.js.map +1 -1
- package/esm2015/bidi.js +13 -8
- package/esm2015/bidi.js.map +1 -1
- package/esm2015/cdk.js +7 -6
- package/esm2015/cdk.js.map +1 -1
- package/esm2015/coercion.js +25 -8
- package/esm2015/coercion.js.map +1 -1
- package/esm2015/collections.js +22 -7
- package/esm2015/collections.js.map +1 -1
- package/esm2015/drag-drop.js +1774 -864
- package/esm2015/drag-drop.js.map +1 -1
- package/esm2015/keycodes.js +14 -4
- package/esm2015/keycodes.js.map +1 -1
- package/esm2015/layout.js +29 -19
- package/esm2015/layout.js.map +1 -1
- package/esm2015/observers.js +16 -11
- package/esm2015/observers.js.map +1 -1
- package/esm2015/overlay.js +373 -213
- package/esm2015/overlay.js.map +1 -1
- package/esm2015/platform.js +53 -31
- package/esm2015/platform.js.map +1 -1
- package/esm2015/portal.js +14 -10
- package/esm2015/portal.js.map +1 -1
- package/esm2015/scrolling.js +111 -51
- package/esm2015/scrolling.js.map +1 -1
- package/esm2015/stepper.js +56 -30
- package/esm2015/stepper.js.map +1 -1
- package/esm2015/table.js +96 -48
- package/esm2015/table.js.map +1 -1
- package/esm2015/text-field.js +54 -37
- package/esm2015/text-field.js.map +1 -1
- package/esm2015/tree.js +55 -36
- package/esm2015/tree.js.map +1 -1
- package/esm5/a11y.es5.js +432 -201
- package/esm5/a11y.es5.js.map +1 -1
- package/esm5/accordion.es5.js +18 -11
- package/esm5/accordion.es5.js.map +1 -1
- package/esm5/bidi.es5.js +13 -8
- package/esm5/bidi.es5.js.map +1 -1
- package/esm5/cdk.es5.js +7 -6
- package/esm5/cdk.es5.js.map +1 -1
- package/esm5/coercion.es5.js +25 -8
- package/esm5/coercion.es5.js.map +1 -1
- package/esm5/collections.es5.js +35 -7
- package/esm5/collections.es5.js.map +1 -1
- package/esm5/drag-drop.es5.js +2358 -1035
- package/esm5/drag-drop.es5.js.map +1 -1
- package/esm5/keycodes.es5.js +14 -4
- package/esm5/keycodes.es5.js.map +1 -1
- package/esm5/layout.es5.js +31 -24
- package/esm5/layout.es5.js.map +1 -1
- package/esm5/observers.es5.js +30 -11
- package/esm5/observers.es5.js.map +1 -1
- package/esm5/overlay.es5.js +590 -244
- package/esm5/overlay.es5.js.map +1 -1
- package/esm5/platform.es5.js +52 -30
- package/esm5/platform.es5.js.map +1 -1
- package/esm5/portal.es5.js +19 -12
- package/esm5/portal.es5.js.map +1 -1
- package/esm5/scrolling.es5.js +150 -52
- package/esm5/scrolling.es5.js.map +1 -1
- package/esm5/stepper.es5.js +71 -30
- package/esm5/stepper.es5.js.map +1 -1
- package/esm5/table.es5.js +191 -53
- package/esm5/table.es5.js.map +1 -1
- package/esm5/text-field.es5.js +75 -37
- package/esm5/text-field.es5.js.map +1 -1
- package/esm5/tree.es5.js +74 -37
- package/esm5/tree.es5.js.map +1 -1
- package/overlay/typings/index.metadata.json +1 -1
- package/overlay/typings/overlay-directives.d.ts +0 -2
- package/overlay/typings/overlay-ref.d.ts +1 -1
- package/package.json +4 -4
- package/portal/typings/portal.d.ts +1 -1
- package/schematics/migration.json +5 -0
- package/schematics/ng-generate/drag-drop/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts +2 -2
- package/schematics/ng-update/index.d.ts +2 -0
- package/schematics/ng-update/index.js +5 -0
- package/schematics/ng-update/index.js.map +1 -1
- package/schematics/ng-update/target-version.d.ts +7 -1
- package/schematics/ng-update/target-version.js +10 -0
- package/schematics/ng-update/target-version.js.map +1 -1
- package/schematics/ng-update/upgrade-data.js +2 -1
- package/schematics/ng-update/upgrade-data.js.map +1 -1
- package/schematics/ng-update/upgrade-rules/index.js +3 -2
- package/schematics/ng-update/upgrade-rules/index.js.map +1 -1
- package/schematics/utils/ast/ng-module-imports.d.ts +1 -1
- package/schematics/utils/ast/ng-module-imports.js +25 -13
- package/schematics/utils/ast/ng-module-imports.js.map +1 -1
- package/schematics/utils/get-project.js +2 -1
- package/schematics/utils/get-project.js.map +1 -1
- package/schematics/utils/parse5-element.js +3 -2
- package/schematics/utils/parse5-element.js.map +1 -1
- package/schematics/utils/project-targets.js +2 -1
- package/schematics/utils/project-targets.js.map +1 -1
- package/schematics/utils/version-agnostic-typescript.js +3 -2
- package/schematics/utils/version-agnostic-typescript.js.map +1 -1
- package/scrolling/typings/index.metadata.json +1 -1
- package/stepper/typings/index.metadata.json +1 -1
- package/stepper/typings/stepper.d.ts +13 -1
- package/text-field/typings/autosize.d.ts +6 -0
- package/text-field/typings/index.metadata.json +1 -1
- package/tree/typings/control/base-tree-control.d.ts +1 -1
- package/tree/typings/control/nested-tree-control.d.ts +2 -2
- package/tree/typings/control/tree-control.d.ts +1 -1
- package/tree/typings/nested-node.d.ts +5 -5
- package/typings/a11y/focus-monitor/focus-monitor.d.ts +20 -5
- package/typings/a11y/focus-trap/focus-trap.d.ts +2 -0
- package/typings/a11y/index.metadata.json +1 -1
- package/typings/coercion/element.d.ts +13 -0
- package/typings/coercion/index.metadata.json +1 -1
- package/typings/coercion/public-api.d.ts +1 -0
- package/typings/drag-drop/{drag-handle.d.ts → directives/drag-handle.d.ts} +6 -2
- package/typings/drag-drop/{drag-placeholder.d.ts → directives/drag-placeholder.d.ts} +0 -0
- package/typings/drag-drop/{drag-preview.d.ts → directives/drag-preview.d.ts} +0 -0
- package/typings/drag-drop/directives/drag.d.ts +110 -0
- package/typings/drag-drop/{drop-list-group.d.ts → directives/drop-list-group.d.ts} +3 -0
- package/typings/{esm5/drag-drop → drag-drop/directives}/drop-list.d.ts +32 -72
- package/typings/drag-drop/drag-drop-registry.d.ts +8 -3
- package/typings/drag-drop/drag-events.d.ts +14 -7
- package/typings/drag-drop/{drag.d.ts → drag-ref.d.ts} +152 -83
- package/typings/drag-drop/drop-list-container.d.ts +19 -3
- package/typings/drag-drop/drop-list-ref.d.ts +234 -0
- package/typings/drag-drop/index.d.ts +1 -0
- package/typings/drag-drop/index.metadata.json +1 -1
- package/typings/drag-drop/public-api.d.ts +13 -6
- package/typings/esm5/a11y/focus-monitor/focus-monitor.d.ts +20 -5
- package/typings/esm5/a11y/focus-trap/focus-trap.d.ts +2 -0
- package/typings/esm5/a11y/index.metadata.json +1 -1
- package/typings/esm5/coercion/element.d.ts +13 -0
- package/typings/esm5/coercion/index.metadata.json +1 -1
- package/typings/esm5/coercion/public-api.d.ts +1 -0
- package/typings/esm5/drag-drop/{drag-handle.d.ts → directives/drag-handle.d.ts} +6 -2
- package/typings/esm5/drag-drop/{drag-placeholder.d.ts → directives/drag-placeholder.d.ts} +0 -0
- package/typings/esm5/drag-drop/{drag-preview.d.ts → directives/drag-preview.d.ts} +0 -0
- package/typings/esm5/drag-drop/directives/drag.d.ts +110 -0
- package/{drag-drop/typings → typings/esm5/drag-drop/directives}/drop-list-group.d.ts +3 -0
- package/typings/{drag-drop → esm5/drag-drop/directives}/drop-list.d.ts +32 -72
- package/typings/esm5/drag-drop/drag-drop-registry.d.ts +8 -3
- package/typings/esm5/drag-drop/drag-events.d.ts +14 -7
- package/{drag-drop/typings/drag.d.ts → typings/esm5/drag-drop/drag-ref.d.ts} +152 -83
- package/typings/esm5/drag-drop/drop-list-container.d.ts +19 -3
- package/typings/esm5/drag-drop/drop-list-ref.d.ts +234 -0
- package/typings/esm5/drag-drop/index.d.ts +1 -0
- package/typings/esm5/drag-drop/index.metadata.json +1 -1
- package/typings/esm5/drag-drop/public-api.d.ts +13 -6
- package/typings/esm5/index.metadata.json +1 -1
- package/typings/esm5/overlay/index.metadata.json +1 -1
- package/typings/esm5/overlay/overlay-directives.d.ts +0 -2
- package/typings/esm5/overlay/overlay-ref.d.ts +1 -1
- package/typings/esm5/portal/portal.d.ts +1 -1
- package/typings/esm5/scrolling/index.metadata.json +1 -1
- package/typings/esm5/stepper/index.metadata.json +1 -1
- package/typings/esm5/stepper/stepper.d.ts +13 -1
- package/typings/esm5/text-field/autosize.d.ts +6 -0
- package/typings/esm5/text-field/index.metadata.json +1 -1
- package/typings/esm5/tree/control/base-tree-control.d.ts +1 -1
- package/typings/esm5/tree/control/nested-tree-control.d.ts +2 -2
- package/typings/esm5/tree/control/tree-control.d.ts +1 -1
- package/typings/esm5/tree/nested-node.d.ts +5 -5
- package/typings/index.metadata.json +1 -1
- package/typings/overlay/index.metadata.json +1 -1
- package/typings/overlay/overlay-directives.d.ts +0 -2
- package/typings/overlay/overlay-ref.d.ts +1 -1
- package/typings/portal/portal.d.ts +1 -1
- package/typings/schematics/ng-update/index.d.ts +2 -0
- package/typings/schematics/ng-update/target-version.d.ts +7 -1
- package/typings/schematics/utils/ast/ng-module-imports.d.ts +1 -1
- package/typings/scrolling/index.metadata.json +1 -1
- package/typings/stepper/index.metadata.json +1 -1
- package/typings/stepper/stepper.d.ts +13 -1
- package/typings/text-field/autosize.d.ts +6 -0
- package/typings/text-field/index.metadata.json +1 -1
- package/typings/tree/control/base-tree-control.d.ts +1 -1
- package/typings/tree/control/nested-tree-control.d.ts +2 -2
- package/typings/tree/control/tree-control.d.ts +1 -1
- package/typings/tree/nested-node.d.ts +5 -5
package/esm5/platform.es5.js
CHANGED
|
@@ -10,10 +10,12 @@ import { isPlatformBrowser } from '@angular/common';
|
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* @fileoverview added by tsickle
|
|
13
|
-
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
13
|
+
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
14
14
|
*/
|
|
15
|
+
// Whether the current platform supports the V8 Break Iterator. The V8 check
|
|
16
|
+
// is necessary to detect all Blink based browsers.
|
|
15
17
|
/** @type {?} */
|
|
16
|
-
var hasV8BreakIterator = (typeof Intl !== 'undefined' && (/** @type {?} */ (Intl)).v8BreakIterator);
|
|
18
|
+
var hasV8BreakIterator = (typeof Intl !== 'undefined' && ((/** @type {?} */ (Intl))).v8BreakIterator);
|
|
17
19
|
/**
|
|
18
20
|
* Service to detect the current platform by comparing the userAgent strings and
|
|
19
21
|
* checking browser-specific global properties.
|
|
@@ -43,11 +45,14 @@ var Platform = /** @class */ (function () {
|
|
|
43
45
|
/**
|
|
44
46
|
* Whether the current rendering engine is Blink.
|
|
45
47
|
*/
|
|
46
|
-
|
|
48
|
+
// EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.
|
|
49
|
+
this.BLINK = this.isBrowser && (!!(((/** @type {?} */ (window))).chrome || hasV8BreakIterator) &&
|
|
47
50
|
typeof CSS !== 'undefined' && !this.EDGE && !this.TRIDENT);
|
|
48
51
|
/**
|
|
49
52
|
* Whether the current rendering engine is WebKit.
|
|
50
53
|
*/
|
|
54
|
+
// Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to
|
|
55
|
+
// ensure that Webkit runs standalone and is not used as another engine's base.
|
|
51
56
|
this.WEBKIT = this.isBrowser &&
|
|
52
57
|
/AppleWebKit/i.test(navigator.userAgent) && !this.BLINK && !this.EDGE && !this.TRIDENT;
|
|
53
58
|
/**
|
|
@@ -58,14 +63,22 @@ var Platform = /** @class */ (function () {
|
|
|
58
63
|
/**
|
|
59
64
|
* Whether the current browser is Firefox.
|
|
60
65
|
*/
|
|
66
|
+
// It's difficult to detect the plain Gecko engine, because most of the browsers identify
|
|
67
|
+
// them self as Gecko-like browsers and modify the userAgent's according to that.
|
|
68
|
+
// Since we only cover one explicit Firefox case, we can simply check for Firefox
|
|
69
|
+
// instead of having an unstable check for Gecko.
|
|
61
70
|
this.FIREFOX = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);
|
|
62
71
|
/**
|
|
63
72
|
* Whether the current platform is Android.
|
|
64
73
|
*/
|
|
74
|
+
// Trident on mobile adds the android platform to the userAgent to trick detections.
|
|
65
75
|
this.ANDROID = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;
|
|
66
76
|
/**
|
|
67
77
|
* Whether the current browser is Safari.
|
|
68
78
|
*/
|
|
79
|
+
// Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake
|
|
80
|
+
// this and just place the Safari keyword in the userAgent. To be more safe about Safari every
|
|
81
|
+
// Safari browser should also use Webkit as its layout engine.
|
|
69
82
|
this.SAFARI = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;
|
|
70
83
|
}
|
|
71
84
|
Platform.decorators = [
|
|
@@ -81,7 +94,7 @@ var Platform = /** @class */ (function () {
|
|
|
81
94
|
|
|
82
95
|
/**
|
|
83
96
|
* @fileoverview added by tsickle
|
|
84
|
-
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
97
|
+
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
85
98
|
*/
|
|
86
99
|
var PlatformModule = /** @class */ (function () {
|
|
87
100
|
function PlatformModule() {
|
|
@@ -94,17 +107,23 @@ var PlatformModule = /** @class */ (function () {
|
|
|
94
107
|
|
|
95
108
|
/**
|
|
96
109
|
* @fileoverview added by tsickle
|
|
97
|
-
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
110
|
+
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
98
111
|
*/
|
|
99
112
|
|
|
100
|
-
/**
|
|
113
|
+
/**
|
|
101
114
|
* Cached result Set of input types support by the current browser.
|
|
102
|
-
|
|
115
|
+
* @type {?}
|
|
116
|
+
*/
|
|
103
117
|
var supportedInputTypes;
|
|
104
|
-
/**
|
|
118
|
+
/**
|
|
105
119
|
* Types of `<input>` that *might* be supported.
|
|
106
|
-
|
|
120
|
+
* @type {?}
|
|
121
|
+
*/
|
|
107
122
|
var candidateInputTypes = [
|
|
123
|
+
// `color` must come first. Chrome 56 shows a warning if we change the type to `color` after
|
|
124
|
+
// first changing it to something else:
|
|
125
|
+
// The specified value "" does not conform to the required format.
|
|
126
|
+
// The format is "#rrggbb" where rr, gg, bb are two-digit hexadecimal numbers.
|
|
108
127
|
'color',
|
|
109
128
|
'button',
|
|
110
129
|
'checkbox',
|
|
@@ -154,12 +173,13 @@ function getSupportedInputTypes() {
|
|
|
154
173
|
|
|
155
174
|
/**
|
|
156
175
|
* @fileoverview added by tsickle
|
|
157
|
-
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
176
|
+
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
158
177
|
*/
|
|
159
178
|
|
|
160
|
-
/**
|
|
179
|
+
/**
|
|
161
180
|
* Cached result of whether the user's browser supports passive event listeners.
|
|
162
|
-
|
|
181
|
+
* @type {?}
|
|
182
|
+
*/
|
|
163
183
|
var supportsPassiveEvents;
|
|
164
184
|
/**
|
|
165
185
|
* Checks whether the user's browser supports passive event listeners.
|
|
@@ -169,7 +189,7 @@ var supportsPassiveEvents;
|
|
|
169
189
|
function supportsPassiveEventListeners() {
|
|
170
190
|
if (supportsPassiveEvents == null && typeof window !== 'undefined') {
|
|
171
191
|
try {
|
|
172
|
-
window.addEventListener('test', /** @type {?} */ (
|
|
192
|
+
window.addEventListener('test', (/** @type {?} */ (null)), Object.defineProperty({}, 'passive', {
|
|
173
193
|
get: function () { return supportsPassiveEvents = true; }
|
|
174
194
|
}));
|
|
175
195
|
}
|
|
@@ -192,40 +212,41 @@ function normalizePassiveListenerOptions(options) {
|
|
|
192
212
|
|
|
193
213
|
/**
|
|
194
214
|
* @fileoverview added by tsickle
|
|
195
|
-
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
215
|
+
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
196
216
|
*/
|
|
197
217
|
|
|
198
218
|
/** @enum {number} */
|
|
199
219
|
var RtlScrollAxisType = {
|
|
200
220
|
/**
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
221
|
+
* scrollLeft is 0 when scrolled all the way left and (scrollWidth - clientWidth) when scrolled
|
|
222
|
+
* all the way right.
|
|
223
|
+
*/
|
|
204
224
|
NORMAL: 0,
|
|
205
225
|
/**
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
226
|
+
* scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled
|
|
227
|
+
* all the way right.
|
|
228
|
+
*/
|
|
209
229
|
NEGATED: 1,
|
|
210
230
|
/**
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
231
|
+
* scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled
|
|
232
|
+
* all the way right.
|
|
233
|
+
*/
|
|
214
234
|
INVERTED: 2,
|
|
215
235
|
};
|
|
216
236
|
RtlScrollAxisType[RtlScrollAxisType.NORMAL] = 'NORMAL';
|
|
217
237
|
RtlScrollAxisType[RtlScrollAxisType.NEGATED] = 'NEGATED';
|
|
218
238
|
RtlScrollAxisType[RtlScrollAxisType.INVERTED] = 'INVERTED';
|
|
219
|
-
/**
|
|
239
|
+
/**
|
|
220
240
|
* Cached result of the way the browser handles the horizontal scroll axis in RTL mode.
|
|
221
|
-
|
|
241
|
+
* @type {?}
|
|
242
|
+
*/
|
|
222
243
|
var rtlScrollAxisType;
|
|
223
244
|
/**
|
|
224
245
|
* Check whether the browser supports scroll behaviors.
|
|
225
246
|
* @return {?}
|
|
226
247
|
*/
|
|
227
248
|
function supportsScrollBehavior() {
|
|
228
|
-
return !!(typeof document == 'object' && 'scrollBehavior' in /** @type {?} */ (
|
|
249
|
+
return !!(typeof document == 'object' && 'scrollBehavior' in (/** @type {?} */ (document.documentElement)).style);
|
|
229
250
|
}
|
|
230
251
|
/**
|
|
231
252
|
* Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,
|
|
@@ -238,6 +259,7 @@ function getRtlScrollAxisType() {
|
|
|
238
259
|
return RtlScrollAxisType.NORMAL;
|
|
239
260
|
}
|
|
240
261
|
if (!rtlScrollAxisType) {
|
|
262
|
+
// Create a 1px wide scrolling container and a 2px wide content element.
|
|
241
263
|
/** @type {?} */
|
|
242
264
|
var scrollContainer = document.createElement('div');
|
|
243
265
|
/** @type {?} */
|
|
@@ -269,20 +291,20 @@ function getRtlScrollAxisType() {
|
|
|
269
291
|
scrollContainer.scrollLeft = 1;
|
|
270
292
|
rtlScrollAxisType =
|
|
271
293
|
scrollContainer.scrollLeft === 0 ? RtlScrollAxisType.NEGATED : RtlScrollAxisType.INVERTED;
|
|
272
|
-
}
|
|
273
|
-
((scrollContainer.parentNode)).removeChild(scrollContainer);
|
|
294
|
+
}
|
|
295
|
+
(/** @type {?} */ (scrollContainer.parentNode)).removeChild(scrollContainer);
|
|
274
296
|
}
|
|
275
297
|
return rtlScrollAxisType;
|
|
276
298
|
}
|
|
277
299
|
|
|
278
300
|
/**
|
|
279
301
|
* @fileoverview added by tsickle
|
|
280
|
-
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
302
|
+
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
281
303
|
*/
|
|
282
304
|
|
|
283
305
|
/**
|
|
284
306
|
* @fileoverview added by tsickle
|
|
285
|
-
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
307
|
+
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
286
308
|
*/
|
|
287
309
|
|
|
288
310
|
export { Platform, PlatformModule, getSupportedInputTypes, supportsPassiveEventListeners, normalizePassiveListenerOptions, supportsScrollBehavior, getRtlScrollAxisType, RtlScrollAxisType };
|
package/esm5/platform.es5.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.es5.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":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"platform.es5.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":[],"mappings":";;;;;;;;;;;;;;;;;AIcA,IAAM,kBAAkB,IAAI,OAAO,IAAI,KAAK,WAAW,IAAI,oBAAC,IAAI,IAAS,eAAe,CAAC,CAAzF;;;;;AAMA,AAAA,IAAA,QAAA,kBAAA,YAAA;;;;IAoDE,SAAF,QAAA,CAAuD,WAAoB,EAA3E;QAAuD,IAAvD,CAAA,WAAkE,GAAX,WAAW,CAAS;;;;;;;QA5CzE,IAAF,CAAA,SAAW,GAAY,IAAI,CAAC,WAAW;YACjC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC;;;;QAGrF,IAAF,CAAA,IAAM,GAAY,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;;;;QAGtE,IAAF,CAAA,OAAS,GAAY,IAAI,CAAC,SAAS,IAAI,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;;;;;QAIjF,IAAF,CAAA,KAAO,GAAY,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE,oBAAC,MAAM,IAAS,MAAM,IAAI,kBAAkB,CAAC;YAChF,OAAO,GAAG,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;;;;;QAK/D,IAAF,CAAA,MAAQ,GAAY,IAAI,CAAC,SAAS;YAC5B,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;;;;QAG3F,IAAF,CAAA,GAAK,GAAY,IAAI,CAAC,SAAS,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;YACzE,EAAE,UAAU,IAAI,MAAM,CAAC,CAAC;;;;;;;;QAO5B,IAAF,CAAA,OAAS,GAAY,IAAI,CAAC,SAAS,IAAI,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;;;;;QAItF,IAAF,CAAA,OAAS,GAAY,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;;;;;;;QAM3F,IAAF,CAAA,MAAQ,GAAY,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC;KAMtF;;QArDH,EAAA,IAAA,EAAC,UAAU,EAAX,IAAA,EAAA,CAAY,EAAC,UAAU,EAAE,MAAM,EAAC,EAAhC,EAAA;;;;QAoDA,EAAA,IAAA,EAAqE,MAAM,EAA3E,UAAA,EAAA,CAAA,EAAA,IAAA,EAAe,QAAQ,EAAvB,EAAA,EAAA,IAAA,EAA2B,MAAM,EAAjC,IAAA,EAAA,CAAkC,WAAW,EAA7C,EAAA,CAAA,EAAA;;;IAxEA,OAAA,QAAA,CAAA;CA0EC,EAAD,CAAA;;;;;;AD/DA,IAAA,cAAA,kBAAA,YAAA;IAAA,SAAA,cAAA,GAAA;KAC8B;;QAD9B,EAAA,IAAA,EAAC,QAAQ,EAAT,IAAA,EAAA,CAAU,EAAE,EAAZ,EAAA;;IAC6B,OAA7B,cAA8B,CAA9B;CAA8B,EAA9B,CAAA;;;;;;;;;;;ADHA,IAAI,mBAAgC,CAApC;;;;;AAGA,IAAM,mBAAmB,GAAG;;;;;IAK1B,OAAO;IACP,QAAQ;IACR,UAAU;IACV,MAAM;IACN,gBAAgB;IAChB,OAAO;IACP,MAAM;IACN,QAAQ;IACR,OAAO;IACP,OAAO;IACP,QAAQ;IACR,UAAU;IACV,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;CACP,CAAD;;;;AAGA,AAAA,SAAgB,sBAAsB,GAAtC;;IAEE,IAAI,mBAAmB,EAAE;QACvB,OAAO,mBAAmB,CAAC;KAC5B;;;;IAKD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,QAAQ,EAAE;QAC7C,mBAAmB,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACnD,OAAO,mBAAmB,CAAC;KAC5B;;IAEH,IAAM,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAxD;IACE,mBAAmB,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,MAAM,CAAC,UAAA,KAAK,EAAhE;QACI,gBAAgB,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7C,OAAO,gBAAgB,CAAC,IAAI,KAAK,KAAK,CAAC;KACxC,CAAC,CAAC,CAAC;IAEJ,OAAO,mBAAmB,CAAC;CAC5B;;;;;;;;;;;ADtDD,IAAI,qBAA8B,CAAlC;;;;;;AAMA,AAAA,SAAgB,6BAA6B,GAA7C;IACE,IAAI,qBAAqB,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QAClE,IAAI;YACF,MAAM,CAAC,gBAAgB,CAAC,MAAM,qBAAE,IAAI,IAAG,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE;gBAC1E,GAAG,EAAE,YAAb,EAAmB,OAAA,qBAAqB,GAAG,IAAI,CAA/C,EAA+C;aACxC,CAAC,CAAC,CAAC;SACL;gBAAS;YACR,qBAAqB,GAAG,qBAAqB,IAAI,KAAK,CAAC;SACxD;KACF;IAED,OAAO,qBAAqB,CAAC;CAC9B;;;;;;;;AAQD,AAAA,SAAgB,+BAA+B,CAAC,OAAgC,EAAhF;IAEE,OAAO,6BAA6B,EAAE,GAAG,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;CACtE;;;;;;;;;;;;;IDxBC,MAAF,EAAA,CAAQ;;;;;IAKN,OAAF,EAAA,CAAS;;;;;IAKP,QAAF,EAAA,CAAU;;;;;;;;;AAIV,IAAI,iBAAoC,CAAxC;;;;;AAGA,AAAA,SAAgB,sBAAsB,GAAtC;IACE,OAAO,CAAC,EAAE,OAAO,QAAQ,IAAI,QAAQ,IAAK,gBAAgB,IAAI,mBAAA,QAAQ,CAAC,eAAe,GAAE,KAAK,CAAC,CAAC;CAChG;;;;;;AAMD,AAAA,SAAgB,oBAAoB,GAApC;;IAEE,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,QAAQ,EAAE;QAC7C,OAAO,iBAAiB,CAAC,MAAM,CAAC;KACjC;IAED,IAAI,CAAC,iBAAiB,EAAE;;;QAE1B,IAAU,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAzD;;QACA,IAAU,cAAc,GAAG,eAAe,CAAC,KAAK,CAAhD;QACI,eAAe,CAAC,GAAG,GAAG,KAAK,CAAC;QAC5B,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC;QAC9B,cAAc,CAAC,KAAK,GAAG,KAAK,CAAC;QAC7B,cAAc,CAAC,QAAQ,GAAG,MAAM,CAAC;QACjC,cAAc,CAAC,UAAU,GAAG,QAAQ,CAAC;QACrC,cAAc,CAAC,aAAa,GAAG,MAAM,CAAC;QACtC,cAAc,CAAC,QAAQ,GAAG,UAAU,CAAC;;QAEzC,IAAU,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAjD;;QACA,IAAU,YAAY,GAAG,OAAO,CAAC,KAAK,CAAtC;QACI,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;QAC3B,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC;QAE5B,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAE3C,iBAAiB,GAAG,iBAAiB,CAAC,MAAM,CAAC;;;;QAK7C,IAAI,eAAe,CAAC,UAAU,KAAK,CAAC,EAAE;;;;;YAKpC,eAAe,CAAC,UAAU,GAAG,CAAC,CAAC;YAC/B,iBAAiB;gBACb,eAAe,CAAC,UAAU,KAAK,CAAC,GAAG,iBAAiB,CAAC,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC;SAC/F;QAED,mBAAA,eAAe,CAAC,UAAU,GAAE,WAAW,CAAC,eAAe,CAAC,CAAC;KAC1D;IACD,OAAO,iBAAiB,CAAC;CAC1B;;;;;;;;;;;;;;"}
|
package/esm5/portal.es5.js
CHANGED
|
@@ -10,7 +10,7 @@ import { ComponentFactoryResolver, Directive, EventEmitter, NgModule, Output, Te
|
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* @fileoverview added by tsickle
|
|
13
|
-
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
13
|
+
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
16
|
/**
|
|
@@ -65,7 +65,7 @@ function throwNoPortalAttachedError() {
|
|
|
65
65
|
|
|
66
66
|
/**
|
|
67
67
|
* @fileoverview added by tsickle
|
|
68
|
-
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
68
|
+
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
69
69
|
*/
|
|
70
70
|
/**
|
|
71
71
|
* A `Portal` is something that you want to render somewhere else.
|
|
@@ -101,7 +101,7 @@ Portal = /** @class */ (function () {
|
|
|
101
101
|
throwPortalAlreadyAttachedError();
|
|
102
102
|
}
|
|
103
103
|
this._attachedHost = host;
|
|
104
|
-
return /** @type {?} */ (host.attach(this));
|
|
104
|
+
return (/** @type {?} */ (host.attach(this)));
|
|
105
105
|
};
|
|
106
106
|
/** Detach this portal from its host */
|
|
107
107
|
/**
|
|
@@ -204,12 +204,12 @@ TemplatePortal = /** @class */ (function (_super) {
|
|
|
204
204
|
configurable: true
|
|
205
205
|
});
|
|
206
206
|
/**
|
|
207
|
-
* Attach the
|
|
207
|
+
* Attach the portal to the provided `PortalOutlet`.
|
|
208
208
|
* When a context is provided it will override the `context` property of the `TemplatePortal`
|
|
209
209
|
* instance.
|
|
210
210
|
*/
|
|
211
211
|
/**
|
|
212
|
-
* Attach the
|
|
212
|
+
* Attach the portal to the provided `PortalOutlet`.
|
|
213
213
|
* When a context is provided it will override the `context` property of the `TemplatePortal`
|
|
214
214
|
* instance.
|
|
215
215
|
* @param {?} host
|
|
@@ -217,7 +217,7 @@ TemplatePortal = /** @class */ (function (_super) {
|
|
|
217
217
|
* @return {?}
|
|
218
218
|
*/
|
|
219
219
|
TemplatePortal.prototype.attach = /**
|
|
220
|
-
* Attach the
|
|
220
|
+
* Attach the portal to the provided `PortalOutlet`.
|
|
221
221
|
* When a context is provided it will override the `context` property of the `TemplatePortal`
|
|
222
222
|
* instance.
|
|
223
223
|
* @param {?} host
|
|
@@ -348,9 +348,11 @@ BasePortalOutlet = /** @class */ (function () {
|
|
|
348
348
|
this._disposeFn = fn;
|
|
349
349
|
};
|
|
350
350
|
/**
|
|
351
|
+
* @private
|
|
351
352
|
* @return {?}
|
|
352
353
|
*/
|
|
353
354
|
BasePortalOutlet.prototype._invokeDisposeFn = /**
|
|
355
|
+
* @private
|
|
354
356
|
* @return {?}
|
|
355
357
|
*/
|
|
356
358
|
function () {
|
|
@@ -364,7 +366,7 @@ BasePortalOutlet = /** @class */ (function () {
|
|
|
364
366
|
|
|
365
367
|
/**
|
|
366
368
|
* @fileoverview added by tsickle
|
|
367
|
-
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
369
|
+
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
368
370
|
*/
|
|
369
371
|
/**
|
|
370
372
|
* A PortalOutlet for attaching portals to an arbitrary DOM element outside of the Angular
|
|
@@ -486,25 +488,28 @@ DomPortalOutlet = /** @class */ (function (_super) {
|
|
|
486
488
|
this.outletElement.parentNode.removeChild(this.outletElement);
|
|
487
489
|
}
|
|
488
490
|
};
|
|
491
|
+
/** Gets the root HTMLElement for an instantiated component. */
|
|
489
492
|
/**
|
|
490
493
|
* Gets the root HTMLElement for an instantiated component.
|
|
494
|
+
* @private
|
|
491
495
|
* @param {?} componentRef
|
|
492
496
|
* @return {?}
|
|
493
497
|
*/
|
|
494
498
|
DomPortalOutlet.prototype._getComponentRootNode = /**
|
|
495
499
|
* Gets the root HTMLElement for an instantiated component.
|
|
500
|
+
* @private
|
|
496
501
|
* @param {?} componentRef
|
|
497
502
|
* @return {?}
|
|
498
503
|
*/
|
|
499
504
|
function (componentRef) {
|
|
500
|
-
return /** @type {?} */ ((/** @type {?} */ (componentRef.hostView)).rootNodes[0]);
|
|
505
|
+
return (/** @type {?} */ (((/** @type {?} */ (componentRef.hostView))).rootNodes[0]));
|
|
501
506
|
};
|
|
502
507
|
return DomPortalOutlet;
|
|
503
508
|
}(BasePortalOutlet));
|
|
504
509
|
|
|
505
510
|
/**
|
|
506
511
|
* @fileoverview added by tsickle
|
|
507
|
-
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
512
|
+
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
508
513
|
*/
|
|
509
514
|
/**
|
|
510
515
|
* Directive version of a `TemplatePortal`. Because the directive *is* a TemplatePortal,
|
|
@@ -637,6 +642,8 @@ var CdkPortalOutlet = /** @class */ (function (_super) {
|
|
|
637
642
|
*/
|
|
638
643
|
function (portal) {
|
|
639
644
|
portal.setAttachedHost(this);
|
|
645
|
+
// If the portal specifies an origin, use that as the logical location of the component
|
|
646
|
+
// in the application tree. Otherwise use the location of this PortalOutlet.
|
|
640
647
|
/** @type {?} */
|
|
641
648
|
var viewContainerRef = portal.viewContainerRef != null ?
|
|
642
649
|
portal.viewContainerRef :
|
|
@@ -712,7 +719,7 @@ var PortalModule = /** @class */ (function () {
|
|
|
712
719
|
|
|
713
720
|
/**
|
|
714
721
|
* @fileoverview added by tsickle
|
|
715
|
-
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
722
|
+
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
716
723
|
*/
|
|
717
724
|
|
|
718
725
|
/**
|
|
@@ -753,12 +760,12 @@ PortalInjector = /** @class */ (function () {
|
|
|
753
760
|
|
|
754
761
|
/**
|
|
755
762
|
* @fileoverview added by tsickle
|
|
756
|
-
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
763
|
+
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
757
764
|
*/
|
|
758
765
|
|
|
759
766
|
/**
|
|
760
767
|
* @fileoverview added by tsickle
|
|
761
|
-
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
768
|
+
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
762
769
|
*/
|
|
763
770
|
|
|
764
771
|
export { DomPortalOutlet as DomPortalHost, CdkPortalOutlet as PortalHostDirective, CdkPortal as TemplatePortalDirective, BasePortalOutlet as BasePortalHost, Portal, ComponentPortal, TemplatePortal, BasePortalOutlet, DomPortalOutlet, CdkPortal, CdkPortalOutlet, PortalModule, PortalInjector };
|
package/esm5/portal.es5.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portal.es5.js","sources":["../../../src/cdk/portal/portal-injector.ts","../../../src/cdk/portal/portal-directives.ts","../../../src/cdk/portal/dom-portal-outlet.ts","../../../src/cdk/portal/portal.ts","../../../src/cdk/portal/portal-errors.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 {Injector} from '@angular/core';\n\n/**\n * Custom injector to be used when providing custom\n * injection tokens to components inside a portal.\n * @docs-private\n */\nexport class PortalInjector implements Injector {\n constructor(\n private _parentInjector: Injector,\n private _customTokens: WeakMap<any, any>) { }\n\n get(token: any, notFoundValue?: any): any {\n const value = this._customTokens.get(token);\n\n if (typeof value !== 'undefined') {\n return value;\n }\n\n return this._parentInjector.get<any>(token, notFoundValue);\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 ComponentFactoryResolver,\n ComponentRef,\n Directive,\n EmbeddedViewRef,\n EventEmitter,\n NgModule,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport {BasePortalOutlet, ComponentPortal, Portal, TemplatePortal} from './portal';\n\n\n/**\n * Directive version of a `TemplatePortal`. Because the directive *is* a TemplatePortal,\n * the directive instance itself can be attached to a host, enabling declarative use of portals.\n */\n@Directive({\n selector: '[cdk-portal], [cdkPortal], [portal]',\n exportAs: 'cdkPortal',\n})\nexport class CdkPortal extends TemplatePortal {\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n\n/**\n * Possible attached references to the CdkPortalOutlet.\n */\nexport type CdkPortalOutletAttachedRef = ComponentRef<any> | EmbeddedViewRef<any> | null;\n\n\n/**\n * Directive version of a PortalOutlet. Because the directive *is* a PortalOutlet, portals can be\n * directly attached to it, enabling declarative use.\n *\n * Usage:\n * `<ng-template [cdkPortalOutlet]=\"greeting\"></ng-template>`\n */\n@Directive({\n selector: '[cdkPortalOutlet], [cdkPortalHost], [portalHost]',\n exportAs: 'cdkPortalOutlet, cdkPortalHost',\n inputs: ['portal: cdkPortalOutlet']\n})\nexport class CdkPortalOutlet extends BasePortalOutlet implements OnInit, OnDestroy {\n /** Whether the portal component is initialized. */\n private _isInitialized = false;\n\n /** Reference to the currently-attached component/view ref. */\n private _attachedRef: CdkPortalOutletAttachedRef;\n\n constructor(\n private _componentFactoryResolver: ComponentFactoryResolver,\n private _viewContainerRef: ViewContainerRef) {\n super();\n }\n\n /** Portal associated with the Portal outlet. */\n get portal(): Portal<any> | null {\n return this._attachedPortal;\n }\n\n set portal(portal: Portal<any> | null) {\n // Ignore the cases where the `portal` is set to a falsy value before the lifecycle hooks have\n // run. This handles the cases where the user might do something like `<div cdkPortalOutlet>`\n // and attach a portal programmatically in the parent component. When Angular does the first CD\n // round, it will fire the setter with empty string, causing the user's content to be cleared.\n if (this.hasAttached() && !portal && !this._isInitialized) {\n return;\n }\n\n if (this.hasAttached()) {\n super.detach();\n }\n\n if (portal) {\n super.attach(portal);\n }\n\n this._attachedPortal = portal;\n }\n\n /** Emits when a portal is attached to the outlet. */\n @Output() attached: EventEmitter<CdkPortalOutletAttachedRef> =\n new EventEmitter<CdkPortalOutletAttachedRef>();\n\n /** Component or view reference that is attached to the portal. */\n get attachedRef(): CdkPortalOutletAttachedRef {\n return this._attachedRef;\n }\n\n ngOnInit() {\n this._isInitialized = true;\n }\n\n ngOnDestroy() {\n super.dispose();\n this._attachedPortal = null;\n this._attachedRef = null;\n }\n\n /**\n * Attach the given ComponentPortal to this PortalOutlet using the ComponentFactoryResolver.\n *\n * @param portal Portal to be attached to the portal outlet.\n * @returns Reference to the created component.\n */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n portal.setAttachedHost(this);\n\n // If the portal specifies an origin, use that as the logical location of the component\n // in the application tree. Otherwise use the location of this PortalOutlet.\n const viewContainerRef = portal.viewContainerRef != null ?\n portal.viewContainerRef :\n this._viewContainerRef;\n\n const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n const ref = viewContainerRef.createComponent(\n componentFactory, viewContainerRef.length,\n portal.injector || viewContainerRef.injector);\n\n super.setDisposeFn(() => ref.destroy());\n this._attachedPortal = portal;\n this._attachedRef = ref;\n this.attached.emit(ref);\n\n return ref;\n }\n\n /**\n * Attach the given TemplatePortal to this PortlHost as an embedded View.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n portal.setAttachedHost(this);\n const viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context);\n super.setDisposeFn(() => this._viewContainerRef.clear());\n\n this._attachedPortal = portal;\n this._attachedRef = viewRef;\n this.attached.emit(viewRef);\n\n return viewRef;\n }\n}\n\n\n@NgModule({\n exports: [CdkPortal, CdkPortalOutlet],\n declarations: [CdkPortal, CdkPortalOutlet],\n})\nexport class PortalModule {}\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 ComponentFactoryResolver,\n ComponentRef,\n EmbeddedViewRef,\n ApplicationRef,\n Injector,\n} from '@angular/core';\nimport {BasePortalOutlet, ComponentPortal, TemplatePortal} from './portal';\n\n\n/**\n * A PortalOutlet for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n */\nexport class DomPortalOutlet extends BasePortalOutlet {\n constructor(\n /** Element into which the content is projected. */\n public outletElement: Element,\n private _componentFactoryResolver: ComponentFactoryResolver,\n private _appRef: ApplicationRef,\n private _defaultInjector: Injector) {\n super();\n }\n\n /**\n * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n * @param portal Portal to be attached\n * @returns Reference to the created component.\n */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n let componentRef: ComponentRef<T>;\n\n // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n // for the component (in terms of Angular's component tree, not rendering).\n // When the ViewContainerRef is missing, we use the factory to create the component directly\n // and then manually attach the view to the application.\n if (portal.viewContainerRef) {\n componentRef = portal.viewContainerRef.createComponent(\n componentFactory,\n portal.viewContainerRef.length,\n portal.injector || portal.viewContainerRef.injector);\n\n this.setDisposeFn(() => componentRef.destroy());\n } else {\n componentRef = componentFactory.create(portal.injector || this._defaultInjector);\n this._appRef.attachView(componentRef.hostView);\n this.setDisposeFn(() => {\n this._appRef.detachView(componentRef.hostView);\n componentRef.destroy();\n });\n }\n // At this point the component has been instantiated, so we move it to the location in the DOM\n // where we want it to be rendered.\n this.outletElement.appendChild(this._getComponentRootNode(componentRef));\n\n return componentRef;\n }\n\n /**\n * Attaches a template portal to the DOM as an embedded view.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n let viewContainer = portal.viewContainerRef;\n let viewRef = viewContainer.createEmbeddedView(portal.templateRef, portal.context);\n viewRef.detectChanges();\n\n // The method `createEmbeddedView` will add the view as a child of the viewContainer.\n // But for the DomPortalOutlet the view can be added everywhere in the DOM\n // (e.g Overlay Container) To move the view to the specified host element. We just\n // re-append the existing root nodes.\n viewRef.rootNodes.forEach(rootNode => this.outletElement.appendChild(rootNode));\n\n this.setDisposeFn((() => {\n let index = viewContainer.indexOf(viewRef);\n if (index !== -1) {\n viewContainer.remove(index);\n }\n }));\n\n // TODO(jelbourn): Return locals from view.\n return viewRef;\n }\n\n /**\n * Clears out a portal from the DOM.\n */\n dispose(): void {\n super.dispose();\n if (this.outletElement.parentNode != null) {\n this.outletElement.parentNode.removeChild(this.outletElement);\n }\n }\n\n /** Gets the root HTMLElement for an instantiated component. */\n private _getComponentRootNode(componentRef: ComponentRef<any>): HTMLElement {\n return (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\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 TemplateRef,\n ViewContainerRef,\n ElementRef,\n ComponentRef,\n EmbeddedViewRef,\n Injector,\n ComponentFactoryResolver,\n} from '@angular/core';\nimport {\n throwNullPortalOutletError,\n throwPortalAlreadyAttachedError,\n throwNoPortalAttachedError,\n throwNullPortalError,\n throwPortalOutletAlreadyDisposedError,\n throwUnknownPortalTypeError\n} from './portal-errors';\n\n/** Interface that can be used to generically type a class. */\nexport interface ComponentType<T> {\n new (...args: any[]): T;\n}\n\n/**\n * A `Portal` is something that you want to render somewhere else.\n * It can be attach to / detached from a `PortalOutlet`.\n */\nexport abstract class Portal<T> {\n private _attachedHost: PortalOutlet | null;\n\n /** Attach this portal to a host. */\n attach(host: PortalOutlet): T {\n if (host == null) {\n throwNullPortalOutletError();\n }\n\n if (host.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n\n this._attachedHost = host;\n return <T> host.attach(this);\n }\n\n /** Detach this portal from its host */\n detach(): void {\n let host = this._attachedHost;\n\n if (host == null) {\n throwNoPortalAttachedError();\n } else {\n this._attachedHost = null;\n host.detach();\n }\n }\n\n /** Whether this portal is attached to a host. */\n get isAttached(): boolean {\n return this._attachedHost != null;\n }\n\n /**\n * Sets the PortalOutlet reference without performing `attach()`. This is used directly by\n * the PortalOutlet when it is performing an `attach()` or `detach()`.\n */\n setAttachedHost(host: PortalOutlet | null) {\n this._attachedHost = host;\n }\n}\n\n\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\nexport class ComponentPortal<T> extends Portal<ComponentRef<T>> {\n /** The type of the component that will be instantiated for attachment. */\n component: ComponentType<T>;\n\n /**\n * [Optional] Where the attached component should live in Angular's *logical* component tree.\n * This is different from where the component *renders*, which is determined by the PortalOutlet.\n * The origin is necessary when the host is outside of the Angular application context.\n */\n viewContainerRef?: ViewContainerRef | null;\n\n /** [Optional] Injector used for the instantiation of the component. */\n injector?: Injector | null;\n\n /**\n * Alternate `ComponentFactoryResolver` to use when resolving the associated component.\n * Defaults to using the resolver from the outlet that the portal is attached to.\n */\n componentFactoryResolver?: ComponentFactoryResolver | null;\n\n constructor(\n component: ComponentType<T>,\n viewContainerRef?: ViewContainerRef | null,\n injector?: Injector | null,\n componentFactoryResolver?: ComponentFactoryResolver | null) {\n super();\n this.component = component;\n this.viewContainerRef = viewContainerRef;\n this.injector = injector;\n this.componentFactoryResolver = componentFactoryResolver;\n }\n}\n\n/**\n * A `TemplatePortal` is a portal that represents some embedded template (TemplateRef).\n */\nexport class TemplatePortal<C = any> extends Portal<C> {\n /** The embedded template that will be used to instantiate an embedded View in the host. */\n templateRef: TemplateRef<C>;\n\n /** Reference to the ViewContainer into which the template will be stamped out. */\n viewContainerRef: ViewContainerRef;\n\n /** Contextual data to be passed in to the embedded view. */\n context: C | undefined;\n\n constructor(template: TemplateRef<C>, viewContainerRef: ViewContainerRef, context?: C) {\n super();\n this.templateRef = template;\n this.viewContainerRef = viewContainerRef;\n this.context = context;\n }\n\n get origin(): ElementRef {\n return this.templateRef.elementRef;\n }\n\n /**\n * Attach the the portal to the provided `PortalOutlet`.\n * When a context is provided it will override the `context` property of the `TemplatePortal`\n * instance.\n */\n attach(host: PortalOutlet, context: C | undefined = this.context): C {\n this.context = context;\n return super.attach(host);\n }\n\n detach(): void {\n this.context = undefined;\n return super.detach();\n }\n}\n\n\n/** A `PortalOutlet` is an space that can contain a single `Portal`. */\nexport interface PortalOutlet {\n /** Attaches a portal to this outlet. */\n attach(portal: Portal<any>): any;\n\n /** Detaches the currently attached portal from this outlet. */\n detach(): any;\n\n /** Performs cleanup before the outlet is destroyed. */\n dispose(): void;\n\n /** Whether there is currently a portal attached to this outlet. */\n hasAttached(): boolean;\n}\n\n\n/**\n * Partial implementation of PortalOutlet that handles attaching\n * ComponentPortal and TemplatePortal.\n */\nexport abstract class BasePortalOutlet implements PortalOutlet {\n /** The portal currently attached to the host. */\n protected _attachedPortal: Portal<any> | null;\n\n /** A function that will permanently dispose this host. */\n private _disposeFn: (() => void) | null;\n\n /** Whether this host has already been permanently disposed. */\n private _isDisposed: boolean = false;\n\n /** Whether this host has an attached portal. */\n hasAttached(): boolean {\n return !!this._attachedPortal;\n }\n\n attach<T>(portal: ComponentPortal<T>): ComponentRef<T>;\n attach<T>(portal: TemplatePortal<T>): EmbeddedViewRef<T>;\n attach(portal: any): any;\n\n /** Attaches a portal. */\n attach(portal: Portal<any>): any {\n if (!portal) {\n throwNullPortalError();\n }\n\n if (this.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n\n if (this._isDisposed) {\n throwPortalOutletAlreadyDisposedError();\n }\n\n if (portal instanceof ComponentPortal) {\n this._attachedPortal = portal;\n return this.attachComponentPortal(portal);\n } else if (portal instanceof TemplatePortal) {\n this._attachedPortal = portal;\n return this.attachTemplatePortal(portal);\n }\n\n throwUnknownPortalTypeError();\n }\n\n abstract attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T>;\n\n abstract attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C>;\n\n /** Detaches a previously attached portal. */\n detach(): void {\n if (this._attachedPortal) {\n this._attachedPortal.setAttachedHost(null);\n this._attachedPortal = null;\n }\n\n this._invokeDisposeFn();\n }\n\n /** Permanently dispose of this portal host. */\n dispose(): void {\n if (this.hasAttached()) {\n this.detach();\n }\n\n this._invokeDisposeFn();\n this._isDisposed = true;\n }\n\n /** @docs-private */\n setDisposeFn(fn: () => void) {\n this._disposeFn = fn;\n }\n\n private _invokeDisposeFn() {\n if (this._disposeFn) {\n this._disposeFn();\n this._disposeFn = null;\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\n/**\n * Throws an exception when attempting to attach a null portal to a host.\n * @docs-private\n */\nexport function throwNullPortalError() {\n throw Error('Must provide a portal to attach');\n}\n\n/**\n * Throws an exception when attempting to attach a portal to a host that is already attached.\n * @docs-private\n */\nexport function throwPortalAlreadyAttachedError() {\n throw Error('Host already has a portal attached');\n}\n\n/**\n * Throws an exception when attempting to attach a portal to an already-disposed host.\n * @docs-private\n */\nexport function throwPortalOutletAlreadyDisposedError() {\n throw Error('This PortalOutlet has already been disposed');\n}\n\n/**\n * Throws an exception when attempting to attach an unknown portal type.\n * @docs-private\n */\nexport function throwUnknownPortalTypeError() {\n throw Error('Attempting to attach an unknown Portal type. BasePortalOutlet accepts either ' +\n 'a ComponentPortal or a TemplatePortal.');\n}\n\n/**\n * Throws an exception when attempting to attach a portal to a null host.\n * @docs-private\n */\nexport function throwNullPortalOutletError() {\n throw Error('Attempting to attach a portal to a null PortalOutlet');\n}\n\n/**\n * Throws an exception when attempting to detach a portal that is not attached.\n * @docs-private\n */\nexport function throwNoPortalAttachedError() {\n throw Error('Attempting to detach a portal that is not attached to a host');\n}\n"],"names":["tslib_1.__extends"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"portal.es5.js","sources":["../../../src/cdk/portal/portal-injector.ts","../../../src/cdk/portal/portal-directives.ts","../../../src/cdk/portal/dom-portal-outlet.ts","../../../src/cdk/portal/portal.ts","../../../src/cdk/portal/portal-errors.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 {Injector} from '@angular/core';\n\n/**\n * Custom injector to be used when providing custom\n * injection tokens to components inside a portal.\n * @docs-private\n */\nexport class PortalInjector implements Injector {\n constructor(\n private _parentInjector: Injector,\n private _customTokens: WeakMap<any, any>) { }\n\n get(token: any, notFoundValue?: any): any {\n const value = this._customTokens.get(token);\n\n if (typeof value !== 'undefined') {\n return value;\n }\n\n return this._parentInjector.get<any>(token, notFoundValue);\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 ComponentFactoryResolver,\n ComponentRef,\n Directive,\n EmbeddedViewRef,\n EventEmitter,\n NgModule,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport {BasePortalOutlet, ComponentPortal, Portal, TemplatePortal} from './portal';\n\n\n/**\n * Directive version of a `TemplatePortal`. Because the directive *is* a TemplatePortal,\n * the directive instance itself can be attached to a host, enabling declarative use of portals.\n */\n@Directive({\n selector: '[cdk-portal], [cdkPortal], [portal]',\n exportAs: 'cdkPortal',\n})\nexport class CdkPortal extends TemplatePortal {\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n\n/**\n * Possible attached references to the CdkPortalOutlet.\n */\nexport type CdkPortalOutletAttachedRef = ComponentRef<any> | EmbeddedViewRef<any> | null;\n\n\n/**\n * Directive version of a PortalOutlet. Because the directive *is* a PortalOutlet, portals can be\n * directly attached to it, enabling declarative use.\n *\n * Usage:\n * `<ng-template [cdkPortalOutlet]=\"greeting\"></ng-template>`\n */\n@Directive({\n selector: '[cdkPortalOutlet], [cdkPortalHost], [portalHost]',\n exportAs: 'cdkPortalOutlet, cdkPortalHost',\n inputs: ['portal: cdkPortalOutlet']\n})\nexport class CdkPortalOutlet extends BasePortalOutlet implements OnInit, OnDestroy {\n /** Whether the portal component is initialized. */\n private _isInitialized = false;\n\n /** Reference to the currently-attached component/view ref. */\n private _attachedRef: CdkPortalOutletAttachedRef;\n\n constructor(\n private _componentFactoryResolver: ComponentFactoryResolver,\n private _viewContainerRef: ViewContainerRef) {\n super();\n }\n\n /** Portal associated with the Portal outlet. */\n get portal(): Portal<any> | null {\n return this._attachedPortal;\n }\n\n set portal(portal: Portal<any> | null) {\n // Ignore the cases where the `portal` is set to a falsy value before the lifecycle hooks have\n // run. This handles the cases where the user might do something like `<div cdkPortalOutlet>`\n // and attach a portal programmatically in the parent component. When Angular does the first CD\n // round, it will fire the setter with empty string, causing the user's content to be cleared.\n if (this.hasAttached() && !portal && !this._isInitialized) {\n return;\n }\n\n if (this.hasAttached()) {\n super.detach();\n }\n\n if (portal) {\n super.attach(portal);\n }\n\n this._attachedPortal = portal;\n }\n\n /** Emits when a portal is attached to the outlet. */\n @Output() attached: EventEmitter<CdkPortalOutletAttachedRef> =\n new EventEmitter<CdkPortalOutletAttachedRef>();\n\n /** Component or view reference that is attached to the portal. */\n get attachedRef(): CdkPortalOutletAttachedRef {\n return this._attachedRef;\n }\n\n ngOnInit() {\n this._isInitialized = true;\n }\n\n ngOnDestroy() {\n super.dispose();\n this._attachedPortal = null;\n this._attachedRef = null;\n }\n\n /**\n * Attach the given ComponentPortal to this PortalOutlet using the ComponentFactoryResolver.\n *\n * @param portal Portal to be attached to the portal outlet.\n * @returns Reference to the created component.\n */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n portal.setAttachedHost(this);\n\n // If the portal specifies an origin, use that as the logical location of the component\n // in the application tree. Otherwise use the location of this PortalOutlet.\n const viewContainerRef = portal.viewContainerRef != null ?\n portal.viewContainerRef :\n this._viewContainerRef;\n\n const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n const ref = viewContainerRef.createComponent(\n componentFactory, viewContainerRef.length,\n portal.injector || viewContainerRef.injector);\n\n super.setDisposeFn(() => ref.destroy());\n this._attachedPortal = portal;\n this._attachedRef = ref;\n this.attached.emit(ref);\n\n return ref;\n }\n\n /**\n * Attach the given TemplatePortal to this PortlHost as an embedded View.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n portal.setAttachedHost(this);\n const viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context);\n super.setDisposeFn(() => this._viewContainerRef.clear());\n\n this._attachedPortal = portal;\n this._attachedRef = viewRef;\n this.attached.emit(viewRef);\n\n return viewRef;\n }\n}\n\n\n@NgModule({\n exports: [CdkPortal, CdkPortalOutlet],\n declarations: [CdkPortal, CdkPortalOutlet],\n})\nexport class PortalModule {}\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 ComponentFactoryResolver,\n ComponentRef,\n EmbeddedViewRef,\n ApplicationRef,\n Injector,\n} from '@angular/core';\nimport {BasePortalOutlet, ComponentPortal, TemplatePortal} from './portal';\n\n\n/**\n * A PortalOutlet for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n */\nexport class DomPortalOutlet extends BasePortalOutlet {\n constructor(\n /** Element into which the content is projected. */\n public outletElement: Element,\n private _componentFactoryResolver: ComponentFactoryResolver,\n private _appRef: ApplicationRef,\n private _defaultInjector: Injector) {\n super();\n }\n\n /**\n * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n * @param portal Portal to be attached\n * @returns Reference to the created component.\n */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n let componentRef: ComponentRef<T>;\n\n // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n // for the component (in terms of Angular's component tree, not rendering).\n // When the ViewContainerRef is missing, we use the factory to create the component directly\n // and then manually attach the view to the application.\n if (portal.viewContainerRef) {\n componentRef = portal.viewContainerRef.createComponent(\n componentFactory,\n portal.viewContainerRef.length,\n portal.injector || portal.viewContainerRef.injector);\n\n this.setDisposeFn(() => componentRef.destroy());\n } else {\n componentRef = componentFactory.create(portal.injector || this._defaultInjector);\n this._appRef.attachView(componentRef.hostView);\n this.setDisposeFn(() => {\n this._appRef.detachView(componentRef.hostView);\n componentRef.destroy();\n });\n }\n // At this point the component has been instantiated, so we move it to the location in the DOM\n // where we want it to be rendered.\n this.outletElement.appendChild(this._getComponentRootNode(componentRef));\n\n return componentRef;\n }\n\n /**\n * Attaches a template portal to the DOM as an embedded view.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n let viewContainer = portal.viewContainerRef;\n let viewRef = viewContainer.createEmbeddedView(portal.templateRef, portal.context);\n viewRef.detectChanges();\n\n // The method `createEmbeddedView` will add the view as a child of the viewContainer.\n // But for the DomPortalOutlet the view can be added everywhere in the DOM\n // (e.g Overlay Container) To move the view to the specified host element. We just\n // re-append the existing root nodes.\n viewRef.rootNodes.forEach(rootNode => this.outletElement.appendChild(rootNode));\n\n this.setDisposeFn((() => {\n let index = viewContainer.indexOf(viewRef);\n if (index !== -1) {\n viewContainer.remove(index);\n }\n }));\n\n // TODO(jelbourn): Return locals from view.\n return viewRef;\n }\n\n /**\n * Clears out a portal from the DOM.\n */\n dispose(): void {\n super.dispose();\n if (this.outletElement.parentNode != null) {\n this.outletElement.parentNode.removeChild(this.outletElement);\n }\n }\n\n /** Gets the root HTMLElement for an instantiated component. */\n private _getComponentRootNode(componentRef: ComponentRef<any>): HTMLElement {\n return (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\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 TemplateRef,\n ViewContainerRef,\n ElementRef,\n ComponentRef,\n EmbeddedViewRef,\n Injector,\n ComponentFactoryResolver,\n} from '@angular/core';\nimport {\n throwNullPortalOutletError,\n throwPortalAlreadyAttachedError,\n throwNoPortalAttachedError,\n throwNullPortalError,\n throwPortalOutletAlreadyDisposedError,\n throwUnknownPortalTypeError\n} from './portal-errors';\n\n/** Interface that can be used to generically type a class. */\nexport interface ComponentType<T> {\n new (...args: any[]): T;\n}\n\n/**\n * A `Portal` is something that you want to render somewhere else.\n * It can be attach to / detached from a `PortalOutlet`.\n */\nexport abstract class Portal<T> {\n private _attachedHost: PortalOutlet | null;\n\n /** Attach this portal to a host. */\n attach(host: PortalOutlet): T {\n if (host == null) {\n throwNullPortalOutletError();\n }\n\n if (host.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n\n this._attachedHost = host;\n return <T> host.attach(this);\n }\n\n /** Detach this portal from its host */\n detach(): void {\n let host = this._attachedHost;\n\n if (host == null) {\n throwNoPortalAttachedError();\n } else {\n this._attachedHost = null;\n host.detach();\n }\n }\n\n /** Whether this portal is attached to a host. */\n get isAttached(): boolean {\n return this._attachedHost != null;\n }\n\n /**\n * Sets the PortalOutlet reference without performing `attach()`. This is used directly by\n * the PortalOutlet when it is performing an `attach()` or `detach()`.\n */\n setAttachedHost(host: PortalOutlet | null) {\n this._attachedHost = host;\n }\n}\n\n\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\nexport class ComponentPortal<T> extends Portal<ComponentRef<T>> {\n /** The type of the component that will be instantiated for attachment. */\n component: ComponentType<T>;\n\n /**\n * [Optional] Where the attached component should live in Angular's *logical* component tree.\n * This is different from where the component *renders*, which is determined by the PortalOutlet.\n * The origin is necessary when the host is outside of the Angular application context.\n */\n viewContainerRef?: ViewContainerRef | null;\n\n /** [Optional] Injector used for the instantiation of the component. */\n injector?: Injector | null;\n\n /**\n * Alternate `ComponentFactoryResolver` to use when resolving the associated component.\n * Defaults to using the resolver from the outlet that the portal is attached to.\n */\n componentFactoryResolver?: ComponentFactoryResolver | null;\n\n constructor(\n component: ComponentType<T>,\n viewContainerRef?: ViewContainerRef | null,\n injector?: Injector | null,\n componentFactoryResolver?: ComponentFactoryResolver | null) {\n super();\n this.component = component;\n this.viewContainerRef = viewContainerRef;\n this.injector = injector;\n this.componentFactoryResolver = componentFactoryResolver;\n }\n}\n\n/**\n * A `TemplatePortal` is a portal that represents some embedded template (TemplateRef).\n */\nexport class TemplatePortal<C = any> extends Portal<C> {\n /** The embedded template that will be used to instantiate an embedded View in the host. */\n templateRef: TemplateRef<C>;\n\n /** Reference to the ViewContainer into which the template will be stamped out. */\n viewContainerRef: ViewContainerRef;\n\n /** Contextual data to be passed in to the embedded view. */\n context: C | undefined;\n\n constructor(template: TemplateRef<C>, viewContainerRef: ViewContainerRef, context?: C) {\n super();\n this.templateRef = template;\n this.viewContainerRef = viewContainerRef;\n this.context = context;\n }\n\n get origin(): ElementRef {\n return this.templateRef.elementRef;\n }\n\n /**\n * Attach the portal to the provided `PortalOutlet`.\n * When a context is provided it will override the `context` property of the `TemplatePortal`\n * instance.\n */\n attach(host: PortalOutlet, context: C | undefined = this.context): C {\n this.context = context;\n return super.attach(host);\n }\n\n detach(): void {\n this.context = undefined;\n return super.detach();\n }\n}\n\n\n/** A `PortalOutlet` is an space that can contain a single `Portal`. */\nexport interface PortalOutlet {\n /** Attaches a portal to this outlet. */\n attach(portal: Portal<any>): any;\n\n /** Detaches the currently attached portal from this outlet. */\n detach(): any;\n\n /** Performs cleanup before the outlet is destroyed. */\n dispose(): void;\n\n /** Whether there is currently a portal attached to this outlet. */\n hasAttached(): boolean;\n}\n\n\n/**\n * Partial implementation of PortalOutlet that handles attaching\n * ComponentPortal and TemplatePortal.\n */\nexport abstract class BasePortalOutlet implements PortalOutlet {\n /** The portal currently attached to the host. */\n protected _attachedPortal: Portal<any> | null;\n\n /** A function that will permanently dispose this host. */\n private _disposeFn: (() => void) | null;\n\n /** Whether this host has already been permanently disposed. */\n private _isDisposed: boolean = false;\n\n /** Whether this host has an attached portal. */\n hasAttached(): boolean {\n return !!this._attachedPortal;\n }\n\n attach<T>(portal: ComponentPortal<T>): ComponentRef<T>;\n attach<T>(portal: TemplatePortal<T>): EmbeddedViewRef<T>;\n attach(portal: any): any;\n\n /** Attaches a portal. */\n attach(portal: Portal<any>): any {\n if (!portal) {\n throwNullPortalError();\n }\n\n if (this.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n\n if (this._isDisposed) {\n throwPortalOutletAlreadyDisposedError();\n }\n\n if (portal instanceof ComponentPortal) {\n this._attachedPortal = portal;\n return this.attachComponentPortal(portal);\n } else if (portal instanceof TemplatePortal) {\n this._attachedPortal = portal;\n return this.attachTemplatePortal(portal);\n }\n\n throwUnknownPortalTypeError();\n }\n\n abstract attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T>;\n\n abstract attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C>;\n\n /** Detaches a previously attached portal. */\n detach(): void {\n if (this._attachedPortal) {\n this._attachedPortal.setAttachedHost(null);\n this._attachedPortal = null;\n }\n\n this._invokeDisposeFn();\n }\n\n /** Permanently dispose of this portal host. */\n dispose(): void {\n if (this.hasAttached()) {\n this.detach();\n }\n\n this._invokeDisposeFn();\n this._isDisposed = true;\n }\n\n /** @docs-private */\n setDisposeFn(fn: () => void) {\n this._disposeFn = fn;\n }\n\n private _invokeDisposeFn() {\n if (this._disposeFn) {\n this._disposeFn();\n this._disposeFn = null;\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\n/**\n * Throws an exception when attempting to attach a null portal to a host.\n * @docs-private\n */\nexport function throwNullPortalError() {\n throw Error('Must provide a portal to attach');\n}\n\n/**\n * Throws an exception when attempting to attach a portal to a host that is already attached.\n * @docs-private\n */\nexport function throwPortalAlreadyAttachedError() {\n throw Error('Host already has a portal attached');\n}\n\n/**\n * Throws an exception when attempting to attach a portal to an already-disposed host.\n * @docs-private\n */\nexport function throwPortalOutletAlreadyDisposedError() {\n throw Error('This PortalOutlet has already been disposed');\n}\n\n/**\n * Throws an exception when attempting to attach an unknown portal type.\n * @docs-private\n */\nexport function throwUnknownPortalTypeError() {\n throw Error('Attempting to attach an unknown Portal type. BasePortalOutlet accepts either ' +\n 'a ComponentPortal or a TemplatePortal.');\n}\n\n/**\n * Throws an exception when attempting to attach a portal to a null host.\n * @docs-private\n */\nexport function throwNullPortalOutletError() {\n throw Error('Attempting to attach a portal to a null PortalOutlet');\n}\n\n/**\n * Throws an exception when attempting to detach a portal that is not attached.\n * @docs-private\n */\nexport function throwNoPortalAttachedError() {\n throw Error('Attempting to detach a portal that is not attached to a host');\n}\n"],"names":["tslib_1.__extends"],"mappings":"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"}
|