@angular/cdk 10.0.2 → 10.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/a11y/aria-describer/aria-describer.d.ts +10 -1
- package/a11y/index.metadata.json +1 -1
- package/a11y/interactivity-checker/interactivity-checker.d.ts +11 -1
- package/a11y/key-manager/list-key-manager.d.ts +6 -0
- package/accordion/accordion.d.ts +7 -1
- package/accordion/index.d.ts +1 -0
- package/accordion/index.metadata.json +1 -1
- package/bundles/cdk-a11y.umd.js +514 -410
- package/bundles/cdk-a11y.umd.js.map +1 -1
- package/bundles/cdk-a11y.umd.min.js +35 -11
- package/bundles/cdk-a11y.umd.min.js.map +1 -1
- package/bundles/cdk-accordion.umd.js +47 -39
- package/bundles/cdk-accordion.umd.js.map +1 -1
- package/bundles/cdk-accordion.umd.min.js +10 -2
- package/bundles/cdk-accordion.umd.min.js.map +1 -1
- package/bundles/cdk-bidi.umd.js +25 -25
- package/bundles/cdk-bidi.umd.js.map +1 -1
- package/bundles/cdk-bidi.umd.min.js +5 -4
- package/bundles/cdk-bidi.umd.min.js.map +1 -1
- package/bundles/cdk-clipboard.umd.js +37 -36
- package/bundles/cdk-clipboard.umd.js.map +1 -1
- package/bundles/cdk-clipboard.umd.min.js +10 -2
- package/bundles/cdk-clipboard.umd.min.js.map +1 -1
- package/bundles/cdk-coercion.umd.js.map +1 -1
- package/bundles/cdk-collections.umd.js +303 -237
- package/bundles/cdk-collections.umd.js.map +1 -1
- package/bundles/cdk-collections.umd.min.js +3 -9
- package/bundles/cdk-collections.umd.min.js.map +1 -1
- package/bundles/cdk-drag-drop.umd.js +1059 -927
- package/bundles/cdk-drag-drop.umd.js.map +1 -1
- package/bundles/cdk-drag-drop.umd.min.js +72 -10
- package/bundles/cdk-drag-drop.umd.min.js.map +1 -1
- package/bundles/cdk-keycodes.umd.js.map +1 -1
- package/bundles/cdk-layout.umd.js +18 -18
- package/bundles/cdk-layout.umd.js.map +1 -1
- package/bundles/cdk-layout.umd.min.js +6 -5
- package/bundles/cdk-layout.umd.min.js.map +1 -1
- package/bundles/cdk-observers.umd.js +34 -34
- package/bundles/cdk-observers.umd.js.map +1 -1
- package/bundles/cdk-observers.umd.min.js +2 -2
- package/bundles/cdk-observers.umd.min.js.map +1 -1
- package/bundles/cdk-overlay.umd.js +638 -416
- package/bundles/cdk-overlay.umd.js.map +1 -1
- package/bundles/cdk-overlay.umd.min.js +51 -12
- package/bundles/cdk-overlay.umd.min.js.map +1 -1
- package/bundles/cdk-platform.umd.js +10 -10
- package/bundles/cdk-platform.umd.js.map +1 -1
- package/bundles/cdk-platform.umd.min.js +4 -11
- package/bundles/cdk-platform.umd.min.js.map +1 -1
- package/bundles/cdk-portal.umd.js +355 -300
- package/bundles/cdk-portal.umd.js.map +1 -1
- package/bundles/cdk-portal.umd.min.js +4 -5
- package/bundles/cdk-portal.umd.min.js.map +1 -1
- package/bundles/cdk-scrolling.umd.js +482 -392
- package/bundles/cdk-scrolling.umd.js.map +1 -1
- package/bundles/cdk-scrolling.umd.min.js +20 -12
- package/bundles/cdk-scrolling.umd.min.js.map +1 -1
- package/bundles/cdk-stepper.umd.js +117 -117
- package/bundles/cdk-stepper.umd.js.map +1 -1
- package/bundles/cdk-stepper.umd.min.js +11 -2
- package/bundles/cdk-stepper.umd.min.js.map +1 -1
- package/bundles/cdk-table.umd.js +862 -607
- package/bundles/cdk-table.umd.js.map +1 -1
- package/bundles/cdk-table.umd.min.js +8 -15
- package/bundles/cdk-table.umd.min.js.map +1 -1
- package/bundles/cdk-testing-protractor.umd.js +300 -241
- package/bundles/cdk-testing-protractor.umd.js.map +1 -1
- package/bundles/cdk-testing-protractor.umd.min.js +2 -9
- package/bundles/cdk-testing-protractor.umd.min.js.map +1 -1
- package/bundles/cdk-testing-testbed.umd.js +337 -276
- package/bundles/cdk-testing-testbed.umd.js.map +1 -1
- package/bundles/cdk-testing-testbed.umd.min.js +7 -30
- package/bundles/cdk-testing-testbed.umd.min.js.map +1 -1
- package/bundles/cdk-testing.umd.js +358 -270
- package/bundles/cdk-testing.umd.js.map +1 -1
- package/bundles/cdk-testing.umd.min.js +3 -18
- package/bundles/cdk-testing.umd.min.js.map +1 -1
- package/bundles/cdk-text-field.umd.js +51 -51
- package/bundles/cdk-text-field.umd.js.map +1 -1
- package/bundles/cdk-text-field.umd.min.js +10 -2
- package/bundles/cdk-text-field.umd.min.js.map +1 -1
- package/bundles/cdk-tree.umd.js +449 -396
- package/bundles/cdk-tree.umd.js.map +1 -1
- package/bundles/cdk-tree.umd.min.js +28 -3
- package/bundles/cdk-tree.umd.min.js.map +1 -1
- package/bundles/cdk.umd.js +1 -1
- 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/drag-drop/clone-node.d.ts +9 -0
- package/drag-drop/directives/drag-handle.d.ts +8 -2
- package/drag-drop/directives/drag-placeholder.d.ts +7 -1
- package/drag-drop/directives/drag-preview.d.ts +7 -1
- package/drag-drop/directives/drag.d.ts +3 -7
- package/drag-drop/directives/drop-list-group.d.ts +7 -1
- package/drag-drop/directives/drop-list.d.ts +7 -1
- package/drag-drop/index.d.ts +2 -2
- package/drag-drop/index.metadata.json +1 -1
- package/drag-drop/parent-position-tracker.d.ts +1 -1
- package/esm2015/a11y/aria-describer/aria-describer.js +21 -7
- package/esm2015/a11y/focus-trap/configurable-focus-trap-factory.js +3 -3
- package/esm2015/a11y/focus-trap/focus-trap.js +1 -1
- package/esm2015/a11y/interactivity-checker/interactivity-checker.js +43 -30
- package/esm2015/a11y/key-manager/list-key-manager.js +27 -2
- package/esm2015/a11y/live-announcer/live-announcer.js +1 -1
- package/esm2015/accordion/accordion-item.js +7 -7
- package/esm2015/accordion/accordion.js +9 -2
- package/esm2015/accordion/index.js +2 -1
- package/esm2015/clipboard/pending-copy.js +7 -6
- package/esm2015/drag-drop/clone-node.js +54 -0
- package/esm2015/drag-drop/directives/drag-handle.js +12 -5
- package/esm2015/drag-drop/directives/drag-placeholder.js +10 -3
- package/esm2015/drag-drop/directives/drag-preview.js +10 -3
- package/esm2015/drag-drop/directives/drag.js +19 -15
- package/esm2015/drag-drop/directives/drop-list-group.js +9 -2
- package/esm2015/drag-drop/directives/drop-list.js +19 -8
- package/esm2015/drag-drop/drag-ref.js +2 -29
- package/esm2015/drag-drop/index.js +3 -2
- package/esm2015/layout/breakpoints-observer.js +1 -1
- package/esm2015/overlay/dispatchers/base-overlay-dispatcher.js +51 -0
- package/esm2015/overlay/dispatchers/index.js +10 -0
- package/esm2015/overlay/dispatchers/overlay-keyboard-dispatcher.js +79 -0
- package/esm2015/overlay/dispatchers/overlay-outside-click-dispatcher.js +94 -0
- package/esm2015/overlay/index.js +5 -4
- package/esm2015/overlay/overlay-config.js +5 -1
- package/esm2015/overlay/overlay-directives.js +34 -8
- package/esm2015/overlay/overlay-module.js +2 -2
- package/esm2015/overlay/overlay-ref.js +24 -2
- package/esm2015/overlay/overlay-reference.js +1 -1
- package/esm2015/overlay/overlay.js +10 -5
- package/esm2015/overlay/position/connected-position-strategy.js +1 -5
- package/esm2015/overlay/position/flexible-connected-position-strategy.js +3 -3
- package/esm2015/overlay/position/overlay-position-builder.js +1 -1
- package/esm2015/overlay/public-api.js +2 -2
- package/esm2015/portal/dom-portal-outlet.js +5 -2
- package/esm2015/scrolling/public-api.js +2 -1
- package/esm2015/scrolling/scrolling-module.js +4 -1
- package/esm2015/scrolling/viewport-ruler.js +24 -10
- package/esm2015/scrolling/virtual-for-of.js +26 -12
- package/esm2015/scrolling/virtual-scroll-repeater.js +8 -0
- package/esm2015/scrolling/virtual-scroll-viewport.js +2 -2
- package/esm2015/table/cell.js +18 -3
- package/esm2015/table/coalesced-style-scheduler.js +87 -0
- package/esm2015/table/public-api.js +2 -1
- package/esm2015/table/sticky-styler.js +79 -45
- package/esm2015/table/table.js +33 -12
- package/esm2015/testing/component-harness.js +19 -1
- package/esm2015/testing/harness-environment.js +7 -1
- package/esm2015/testing/testbed/fake-events/dispatch-events.js +5 -4
- package/esm2015/testing/testbed/fake-events/event-objects.js +10 -7
- package/esm2015/testing/testbed/fake-events/type-in-element.js +4 -4
- package/esm2015/testing/testbed/unit-test-element.js +20 -12
- package/esm2015/tree/control/nested-tree-control.js +7 -3
- package/esm2015/tree/tree.js +9 -23
- package/esm2015/version.js +1 -1
- package/fesm2015/a11y.js +88 -38
- package/fesm2015/a11y.js.map +1 -1
- package/fesm2015/accordion.js +13 -6
- package/fesm2015/accordion.js.map +1 -1
- package/fesm2015/cdk.js +1 -1
- package/fesm2015/cdk.js.map +1 -1
- package/fesm2015/clipboard.js +6 -5
- package/fesm2015/clipboard.js.map +1 -1
- package/fesm2015/drag-drop.js +669 -600
- package/fesm2015/drag-drop.js.map +1 -1
- package/fesm2015/overlay.js +215 -40
- package/fesm2015/overlay.js.map +1 -1
- package/fesm2015/portal.js +4 -1
- package/fesm2015/portal.js.map +1 -1
- package/fesm2015/scrolling.js +60 -21
- package/fesm2015/scrolling.js.map +1 -1
- package/fesm2015/table.js +214 -61
- package/fesm2015/table.js.map +1 -1
- package/fesm2015/testing/testbed.js +35 -23
- package/fesm2015/testing/testbed.js.map +1 -1
- package/fesm2015/testing.js +25 -1
- package/fesm2015/testing.js.map +1 -1
- package/fesm2015/tree.js +13 -23
- package/fesm2015/tree.js.map +1 -1
- package/overlay/dispatchers/base-overlay-dispatcher.d.ts +28 -0
- package/overlay/dispatchers/index.d.ts +9 -0
- package/overlay/{keyboard → dispatchers}/overlay-keyboard-dispatcher.d.ts +4 -10
- package/overlay/dispatchers/overlay-outside-click-dispatcher.d.ts +27 -0
- package/overlay/index.d.ts +4 -3
- package/overlay/index.metadata.json +1 -1
- package/overlay/overlay-config.d.ts +4 -0
- package/overlay/overlay-directives.d.ts +5 -0
- package/overlay/overlay-ref.d.ts +8 -2
- package/overlay/overlay-reference.d.ts +1 -0
- package/overlay/overlay.d.ts +4 -2
- package/overlay/position/connected-position-strategy.d.ts +0 -2
- package/overlay/public-api.d.ts +1 -1
- package/package.json +1 -1
- package/schematics/ng-add/index.js +1 -1
- package/scrolling/index.metadata.json +1 -1
- package/scrolling/public-api.d.ts +1 -0
- package/scrolling/scrolling-module.d.ts +3 -0
- package/scrolling/viewport-ruler.d.ts +2 -2
- package/scrolling/virtual-for-of.d.ts +2 -1
- package/scrolling/virtual-scroll-repeater.d.ts +16 -0
- package/scrolling/virtual-scroll-viewport.d.ts +4 -4
- package/table/cell.d.ts +13 -0
- package/table/coalesced-style-scheduler.d.ts +41 -0
- package/table/index.metadata.json +1 -1
- package/table/public-api.d.ts +1 -0
- package/table/sticky-styler.d.ts +7 -1
- package/table/table.d.ts +9 -1
- package/testing/component-harness.d.ts +12 -0
- package/testing/harness-environment.d.ts +1 -0
- package/testing/testbed/fake-events/dispatch-events.d.ts +3 -2
- package/testing/testbed/fake-events/event-objects.d.ts +2 -2
- package/testing/testbed/unit-test-element.d.ts +7 -0
- package/tree/control/nested-tree-control.d.ts +7 -2
- package/tree/index.metadata.json +1 -1
- package/tree/tree.d.ts +2 -4
- package/esm2015/overlay/keyboard/overlay-keyboard-dispatcher.js +0 -96
package/tree/index.metadata.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"BaseTreeControl":{"__symbolic":"class","arity":2,"members":{"getDescendants":[{"__symbolic":"method"}],"expandAll":[{"__symbolic":"method"}],"toggle":[{"__symbolic":"method"}],"expand":[{"__symbolic":"method"}],"collapse":[{"__symbolic":"method"}],"isExpanded":[{"__symbolic":"method"}],"toggleDescendants":[{"__symbolic":"method"}],"collapseAll":[{"__symbolic":"method"}],"expandDescendants":[{"__symbolic":"method"}],"collapseDescendants":[{"__symbolic":"method"}],"_trackByValue":[{"__symbolic":"method"}]}},"FlatTreeControlOptions":{"__symbolic":"interface"},"FlatTreeControl":{"__symbolic":"class","arity":2,"extends":{"__symbolic":"reference","name":"BaseTreeControl"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":20,"character":23,"module":"./control/flat-tree-control"},{"__symbolic":"error","message":"Expression form not supported","line":20,"character":69,"module":"./control/flat-tree-control"},{"__symbolic":"reference","name":"any","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":21,"character":46,"context":{"typeName":"T"},"module":"./control/flat-tree-control"},{"__symbolic":"error","message":"Could not resolve type","line":21,"character":49,"context":{"typeName":"K"},"module":"./control/flat-tree-control"}]}]}],"getDescendants":[{"__symbolic":"method"}],"expandAll":[{"__symbolic":"method"}]}},"NestedTreeControl":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"BaseTreeControl"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":15,"character":34,"module":"./control/nested-tree-control"}]}],"expandAll":[{"__symbolic":"method"}],"getDescendants":[{"__symbolic":"method"}],"_getDescendants":[{"__symbolic":"method"}]}},"TreeControl":{"__symbolic":"interface"},"CdkNestedTreeNode":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"CdkTreeNode"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":30,"character":1},"arguments":[{"selector":"cdk-nested-tree-node","exportAs":"cdkNestedTreeNode","host":{"[attr.aria-expanded]":"isExpanded","[attr.role]":"role","class":"cdk-tree-node cdk-nested-tree-node","$quoted$":["[attr.aria-expanded]","[attr.role]","class"]},"providers":[{"provide":{"__symbolic":"reference","name":"CdkTreeNode"},"useExisting":{"__symbolic":"reference","name":"CdkNestedTreeNode"}},{"provide":{"__symbolic":"reference","name":"CDK_TREE_NODE_OUTLET_NODE"},"useExisting":{"__symbolic":"reference","name":"CdkNestedTreeNode"}}]}]}],"members":{"nodeOutlet":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChildren","line":51,"character":3},"arguments":[{"__symbolic":"reference","name":"CdkTreeNodeOutlet"},{"descendants":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":58,"character":48,"context":{"typeName":"HTMLElement"},"module":"./nested-node"}]},{"__symbolic":"reference","name":"CdkTree"},{"__symbolic":"reference","module":"@angular/core","name":"IterableDiffers","line":60,"character":34}]}],"ngAfterContentInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"updateChildrenNodes":[{"__symbolic":"method"}],"_clear":[{"__symbolic":"method"}],"_getNodeOutlet":[{"__symbolic":"method"}]}},"CdkTreeNodeOutletContext":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":25,"character":20,"context":{"typeName":"T"},"module":"./node"}]}]}},"CdkTreeNodeDef":{"__symbolic":"class","arity":1,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":34,"character":1},"arguments":[{"selector":"[cdkTreeNodeDef]","inputs":["when: cdkTreeNodeDefWhen"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"TemplateRef","module":"@angular/core","arguments":[{"__symbolic":"reference","name":"any"}]}]}]}},"CdkTreeNodePadding":{"__symbolic":"class","arity":1,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":22,"character":1},"arguments":[{"selector":"[cdkTreeNodePadding]"}]}],"members":{"level":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3},"arguments":["cdkTreeNodePadding"]}]}],"indent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":51,"character":3},"arguments":["cdkTreeNodePaddingIndent"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":77,"character":15}}]],"parameters":[{"__symbolic":"reference","name":"CdkTreeNode"},{"__symbolic":"reference","name":"CdkTree"},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":75,"character":25},{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":76,"character":43,"context":{"typeName":"HTMLElement"},"module":"./padding"}]},{"__symbolic":"reference","module":"@angular/cdk/bidi","name":"Directionality","line":77,"character":40}]}],"ngOnDestroy":[{"__symbolic":"method"}],"_paddingIndent":[{"__symbolic":"method"}],"_setPadding":[{"__symbolic":"method"}]}},"CDK_TREE_NODE_OUTLET_NODE":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":20,"character":45},"arguments":["CDK_TREE_NODE_OUTLET_NODE"]},"CdkTreeNodeOutlet":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":26,"character":1},"arguments":[{"selector":"[cdkTreeNodeOutlet]"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":32,"character":7},"arguments":[{"__symbolic":"reference","name":"CDK_TREE_NODE_OUTLET_NODE"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":32,"character":42}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ViewContainerRef","line":31,"character":28},{"__symbolic":"reference","name":"any"}]}]}},"CdkTree":{"__symbolic":"class","arity":1,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":53,"character":1},"arguments":[{"selector":"cdk-tree","exportAs":"cdkTree","template":"<ng-container cdkTreeNodeOutlet></ng-container>","host":{"class":"cdk-tree","role":"tree","$quoted$":["class","role"]},"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":61,"character":17},"member":"None"},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":67,"character":19},"member":"Default"}}]}],"members":{"dataSource":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":90,"character":3}}]}],"treeControl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":100,"character":3}}]}],"trackBy":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":108,"character":3}}]}],"_nodeOutlet":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":111,"character":3},"arguments":[{"__symbolic":"reference","name":"CdkTreeNodeOutlet"},{"static":true}]}]}],"_nodeDefs":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChildren","line":114,"character":3},"arguments":[{"__symbolic":"reference","name":"CdkTreeNodeDef"},{"descendants":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"IterableDiffers","line":129,"character":32},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":130,"character":42}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"ngAfterContentChecked":[{"__symbolic":"method"}],"_switchDataSource":[{"__symbolic":"method"}],"_observeRenderChanges":[{"__symbolic":"method"}],"renderNodeChanges":[{"__symbolic":"method"}],"_getNodeDef":[{"__symbolic":"method"}],"insertNode":[{"__symbolic":"method"}]}},"CdkTreeNode":{"__symbolic":"class","arity":1,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":296,"character":1},"arguments":[{"selector":"cdk-tree-node","exportAs":"cdkTreeNode","host":{"[attr.aria-expanded]":"isExpanded","[attr.aria-level]":"role === \"treeitem\" ? level : null","[attr.role]":"role","class":"cdk-tree-node","$quoted$":["[attr.aria-expanded]","[attr.aria-level]","[attr.role]","class"]}}]}],"members":{"role":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":342,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":344,"character":48,"context":{"typeName":"HTMLElement"},"module":"./tree"}]},{"__symbolic":"reference","name":"CdkTree"}]}],"ngOnDestroy":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"_setRoleFromData":[{"__symbolic":"method"}],"_setRoleFromChildren":[{"__symbolic":"method"}]},"statics":{"mostRecentTreeNode":null}},"getTreeNoValidDataSourceError":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"Error"},"arguments":["A valid data source must be provided."]}},"getTreeMultipleDefaultNodeDefsError":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"Error"},"arguments":["There can only be one default row without a when predicate function."]}},"getTreeMissingMatchingNodeDefError":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"Error"},"arguments":["Could not find a matching node definition for the provided node data."]}},"getTreeControlMissingError":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"Error"},"arguments":["Could not find a tree control for the tree."]}},"getTreeControlFunctionsMissingError":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"Error"},"arguments":["Could not find functions for nested/flat tree in tree control."]}},"CdkTreeModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":27,"character":1},"arguments":[{"exports":[{"__symbolic":"reference","name":"CdkNestedTreeNode"},{"__symbolic":"reference","name":"CdkTreeNodeDef"},{"__symbolic":"reference","name":"CdkTreeNodePadding"},{"__symbolic":"reference","name":"CdkTreeNodeToggle"},{"__symbolic":"reference","name":"CdkTree"},{"__symbolic":"reference","name":"CdkTreeNode"},{"__symbolic":"reference","name":"CdkTreeNodeOutlet"}],"declarations":[{"__symbolic":"reference","name":"CdkNestedTreeNode"},{"__symbolic":"reference","name":"CdkTreeNodeDef"},{"__symbolic":"reference","name":"CdkTreeNodePadding"},{"__symbolic":"reference","name":"CdkTreeNodeToggle"},{"__symbolic":"reference","name":"CdkTree"},{"__symbolic":"reference","name":"CdkTreeNode"},{"__symbolic":"reference","name":"CdkTreeNodeOutlet"}],"providers":[{"__symbolic":"reference","module":"@angular/cdk/a11y","name":"FocusMonitor","line":30,"character":14},{"__symbolic":"reference","name":"CdkTreeNodeDef"}]}]}],"members":{}},"CdkTreeNodeToggle":{"__symbolic":"class","arity":1,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":16,"character":1},"arguments":[{"selector":"[cdkTreeNodeToggle]"}]}],"members":{"recursive":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3},"arguments":["cdkTreeNodeToggleRecursive"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"CdkTree"},{"__symbolic":"reference","name":"CdkTreeNode"}]}],"_toggle":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":32,"character":3},"arguments":["click",["$event"]]}]}]}}},"origins":{"BaseTreeControl":"./control/base-tree-control","FlatTreeControlOptions":"./control/flat-tree-control","FlatTreeControl":"./control/flat-tree-control","NestedTreeControl":"./control/nested-tree-control","TreeControl":"./control/tree-control","CdkNestedTreeNode":"./nested-node","CdkTreeNodeOutletContext":"./node","CdkTreeNodeDef":"./node","CdkTreeNodePadding":"./padding","CDK_TREE_NODE_OUTLET_NODE":"./outlet","CdkTreeNodeOutlet":"./outlet","CdkTree":"./tree","CdkTreeNode":"./tree","getTreeNoValidDataSourceError":"./tree-errors","getTreeMultipleDefaultNodeDefsError":"./tree-errors","getTreeMissingMatchingNodeDefError":"./tree-errors","getTreeControlMissingError":"./tree-errors","getTreeControlFunctionsMissingError":"./tree-errors","CdkTreeModule":"./tree-module","CdkTreeNodeToggle":"./toggle"},"importAs":"@angular/cdk/tree"}
|
|
1
|
+
{"__symbolic":"module","version":4,"metadata":{"BaseTreeControl":{"__symbolic":"class","arity":2,"members":{"getDescendants":[{"__symbolic":"method"}],"expandAll":[{"__symbolic":"method"}],"toggle":[{"__symbolic":"method"}],"expand":[{"__symbolic":"method"}],"collapse":[{"__symbolic":"method"}],"isExpanded":[{"__symbolic":"method"}],"toggleDescendants":[{"__symbolic":"method"}],"collapseAll":[{"__symbolic":"method"}],"expandDescendants":[{"__symbolic":"method"}],"collapseDescendants":[{"__symbolic":"method"}],"_trackByValue":[{"__symbolic":"method"}]}},"FlatTreeControlOptions":{"__symbolic":"interface"},"FlatTreeControl":{"__symbolic":"class","arity":2,"extends":{"__symbolic":"reference","name":"BaseTreeControl"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":20,"character":23,"module":"./control/flat-tree-control"},{"__symbolic":"error","message":"Expression form not supported","line":20,"character":69,"module":"./control/flat-tree-control"},{"__symbolic":"reference","name":"any","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":21,"character":46,"context":{"typeName":"T"},"module":"./control/flat-tree-control"},{"__symbolic":"error","message":"Could not resolve type","line":21,"character":49,"context":{"typeName":"K"},"module":"./control/flat-tree-control"}]}]}],"getDescendants":[{"__symbolic":"method"}],"expandAll":[{"__symbolic":"method"}]}},"NestedTreeControlOptions":{"__symbolic":"interface"},"NestedTreeControl":{"__symbolic":"class","arity":2,"extends":{"__symbolic":"reference","name":"BaseTreeControl"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":20,"character":26,"module":"./control/nested-tree-control"},{"__symbolic":"reference","name":"any","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":21,"character":48,"context":{"typeName":"T"},"module":"./control/nested-tree-control"},{"__symbolic":"error","message":"Could not resolve type","line":21,"character":51,"context":{"typeName":"K"},"module":"./control/nested-tree-control"}]}]}],"expandAll":[{"__symbolic":"method"}],"getDescendants":[{"__symbolic":"method"}],"_getDescendants":[{"__symbolic":"method"}]}},"TreeControl":{"__symbolic":"interface"},"CdkNestedTreeNode":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"CdkTreeNode"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":30,"character":1},"arguments":[{"selector":"cdk-nested-tree-node","exportAs":"cdkNestedTreeNode","host":{"[attr.aria-expanded]":"isExpanded","[attr.role]":"role","class":"cdk-tree-node cdk-nested-tree-node","$quoted$":["[attr.aria-expanded]","[attr.role]","class"]},"providers":[{"provide":{"__symbolic":"reference","name":"CdkTreeNode"},"useExisting":{"__symbolic":"reference","name":"CdkNestedTreeNode"}},{"provide":{"__symbolic":"reference","name":"CDK_TREE_NODE_OUTLET_NODE"},"useExisting":{"__symbolic":"reference","name":"CdkNestedTreeNode"}}]}]}],"members":{"nodeOutlet":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChildren","line":51,"character":3},"arguments":[{"__symbolic":"reference","name":"CdkTreeNodeOutlet"},{"descendants":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":58,"character":48,"context":{"typeName":"HTMLElement"},"module":"./nested-node"}]},{"__symbolic":"reference","name":"CdkTree"},{"__symbolic":"reference","module":"@angular/core","name":"IterableDiffers","line":60,"character":34}]}],"ngAfterContentInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"updateChildrenNodes":[{"__symbolic":"method"}],"_clear":[{"__symbolic":"method"}],"_getNodeOutlet":[{"__symbolic":"method"}]}},"CdkTreeNodeOutletContext":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":25,"character":20,"context":{"typeName":"T"},"module":"./node"}]}]}},"CdkTreeNodeDef":{"__symbolic":"class","arity":1,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":34,"character":1},"arguments":[{"selector":"[cdkTreeNodeDef]","inputs":["when: cdkTreeNodeDefWhen"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"TemplateRef","module":"@angular/core","arguments":[{"__symbolic":"reference","name":"any"}]}]}]}},"CdkTreeNodePadding":{"__symbolic":"class","arity":1,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":22,"character":1},"arguments":[{"selector":"[cdkTreeNodePadding]"}]}],"members":{"level":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3},"arguments":["cdkTreeNodePadding"]}]}],"indent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":51,"character":3},"arguments":["cdkTreeNodePaddingIndent"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":77,"character":15}}]],"parameters":[{"__symbolic":"reference","name":"CdkTreeNode"},{"__symbolic":"reference","name":"CdkTree"},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":75,"character":25},{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":76,"character":43,"context":{"typeName":"HTMLElement"},"module":"./padding"}]},{"__symbolic":"reference","module":"@angular/cdk/bidi","name":"Directionality","line":77,"character":40}]}],"ngOnDestroy":[{"__symbolic":"method"}],"_paddingIndent":[{"__symbolic":"method"}],"_setPadding":[{"__symbolic":"method"}]}},"CDK_TREE_NODE_OUTLET_NODE":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":20,"character":45},"arguments":["CDK_TREE_NODE_OUTLET_NODE"]},"CdkTreeNodeOutlet":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":26,"character":1},"arguments":[{"selector":"[cdkTreeNodeOutlet]"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":32,"character":7},"arguments":[{"__symbolic":"reference","name":"CDK_TREE_NODE_OUTLET_NODE"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":32,"character":42}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ViewContainerRef","line":31,"character":28},{"__symbolic":"reference","name":"any"}]}]}},"CdkTree":{"__symbolic":"class","arity":1,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":53,"character":1},"arguments":[{"selector":"cdk-tree","exportAs":"cdkTree","template":"<ng-container cdkTreeNodeOutlet></ng-container>","host":{"class":"cdk-tree","role":"tree","$quoted$":["class","role"]},"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":61,"character":17},"member":"None"},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":67,"character":19},"member":"Default"}}]}],"members":{"dataSource":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":90,"character":3}}]}],"treeControl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":100,"character":3}}]}],"trackBy":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":108,"character":3}}]}],"_nodeOutlet":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":111,"character":3},"arguments":[{"__symbolic":"reference","name":"CdkTreeNodeOutlet"},{"static":true}]}]}],"_nodeDefs":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChildren","line":114,"character":3},"arguments":[{"__symbolic":"reference","name":"CdkTreeNodeDef"},{"descendants":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"IterableDiffers","line":129,"character":32},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":130,"character":42}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"ngAfterContentChecked":[{"__symbolic":"method"}],"_switchDataSource":[{"__symbolic":"method"}],"_observeRenderChanges":[{"__symbolic":"method"}],"renderNodeChanges":[{"__symbolic":"method"}],"_getNodeDef":[{"__symbolic":"method"}],"insertNode":[{"__symbolic":"method"}]}},"CdkTreeNode":{"__symbolic":"class","arity":1,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":296,"character":1},"arguments":[{"selector":"cdk-tree-node","exportAs":"cdkTreeNode","host":{"[attr.aria-expanded]":"isExpanded","[attr.aria-level]":"level + 1","[attr.role]":"role","class":"cdk-tree-node","$quoted$":["[attr.aria-expanded]","[attr.aria-level]","[attr.role]","class"]}}]}],"members":{"role":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":342,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":344,"character":48,"context":{"typeName":"HTMLElement"},"module":"./tree"}]},{"__symbolic":"reference","name":"CdkTree"}]}],"ngOnDestroy":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"_setRoleFromData":[{"__symbolic":"method"}]},"statics":{"mostRecentTreeNode":null}},"getTreeNoValidDataSourceError":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"Error"},"arguments":["A valid data source must be provided."]}},"getTreeMultipleDefaultNodeDefsError":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"Error"},"arguments":["There can only be one default row without a when predicate function."]}},"getTreeMissingMatchingNodeDefError":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"Error"},"arguments":["Could not find a matching node definition for the provided node data."]}},"getTreeControlMissingError":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"Error"},"arguments":["Could not find a tree control for the tree."]}},"getTreeControlFunctionsMissingError":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"Error"},"arguments":["Could not find functions for nested/flat tree in tree control."]}},"CdkTreeModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":27,"character":1},"arguments":[{"exports":[{"__symbolic":"reference","name":"CdkNestedTreeNode"},{"__symbolic":"reference","name":"CdkTreeNodeDef"},{"__symbolic":"reference","name":"CdkTreeNodePadding"},{"__symbolic":"reference","name":"CdkTreeNodeToggle"},{"__symbolic":"reference","name":"CdkTree"},{"__symbolic":"reference","name":"CdkTreeNode"},{"__symbolic":"reference","name":"CdkTreeNodeOutlet"}],"declarations":[{"__symbolic":"reference","name":"CdkNestedTreeNode"},{"__symbolic":"reference","name":"CdkTreeNodeDef"},{"__symbolic":"reference","name":"CdkTreeNodePadding"},{"__symbolic":"reference","name":"CdkTreeNodeToggle"},{"__symbolic":"reference","name":"CdkTree"},{"__symbolic":"reference","name":"CdkTreeNode"},{"__symbolic":"reference","name":"CdkTreeNodeOutlet"}],"providers":[{"__symbolic":"reference","module":"@angular/cdk/a11y","name":"FocusMonitor","line":30,"character":14},{"__symbolic":"reference","name":"CdkTreeNodeDef"}]}]}],"members":{}},"CdkTreeNodeToggle":{"__symbolic":"class","arity":1,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":16,"character":1},"arguments":[{"selector":"[cdkTreeNodeToggle]"}]}],"members":{"recursive":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3},"arguments":["cdkTreeNodeToggleRecursive"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"CdkTree"},{"__symbolic":"reference","name":"CdkTreeNode"}]}],"_toggle":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":32,"character":3},"arguments":["click",["$event"]]}]}]}}},"origins":{"BaseTreeControl":"./control/base-tree-control","FlatTreeControlOptions":"./control/flat-tree-control","FlatTreeControl":"./control/flat-tree-control","NestedTreeControlOptions":"./control/nested-tree-control","NestedTreeControl":"./control/nested-tree-control","TreeControl":"./control/tree-control","CdkNestedTreeNode":"./nested-node","CdkTreeNodeOutletContext":"./node","CdkTreeNodeDef":"./node","CdkTreeNodePadding":"./padding","CDK_TREE_NODE_OUTLET_NODE":"./outlet","CdkTreeNodeOutlet":"./outlet","CdkTree":"./tree","CdkTreeNode":"./tree","getTreeNoValidDataSourceError":"./tree-errors","getTreeMultipleDefaultNodeDefsError":"./tree-errors","getTreeMissingMatchingNodeDefError":"./tree-errors","getTreeControlMissingError":"./tree-errors","getTreeControlFunctionsMissingError":"./tree-errors","CdkTreeModule":"./tree-module","CdkTreeNodeToggle":"./toggle"},"importAs":"@angular/cdk/tree"}
|
package/tree/tree.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { FocusableOption } from '@angular/cdk/a11y';
|
|
9
9
|
import { CollectionViewer, DataSource } from '@angular/cdk/collections';
|
|
10
|
-
import { AfterContentChecked, ChangeDetectorRef, ElementRef, IterableDiffer, IterableDiffers, OnDestroy, OnInit, QueryList,
|
|
10
|
+
import { AfterContentChecked, ChangeDetectorRef, ElementRef, IterableDiffer, IterableDiffers, OnDestroy, OnInit, QueryList, TrackByFunction, ViewContainerRef } from '@angular/core';
|
|
11
11
|
import { BehaviorSubject, Observable, Subject } from 'rxjs';
|
|
12
12
|
import { TreeControl } from './control/tree-control';
|
|
13
13
|
import { CdkTreeNodeDef } from './node';
|
|
@@ -106,8 +106,7 @@ export declare class CdkTreeNode<T> implements FocusableOption, OnDestroy {
|
|
|
106
106
|
get isExpanded(): boolean;
|
|
107
107
|
get level(): number;
|
|
108
108
|
/**
|
|
109
|
-
* The role of the node should be '
|
|
110
|
-
* and 'treeitem' if it's a leaf node.
|
|
109
|
+
* The role of the node should always be 'treeitem'.
|
|
111
110
|
*/
|
|
112
111
|
role: 'treeitem' | 'group';
|
|
113
112
|
constructor(_elementRef: ElementRef<HTMLElement>, _tree: CdkTree<T>);
|
|
@@ -115,5 +114,4 @@ export declare class CdkTreeNode<T> implements FocusableOption, OnDestroy {
|
|
|
115
114
|
/** Focuses the menu item. Implements for FocusableOption. */
|
|
116
115
|
focus(): void;
|
|
117
116
|
protected _setRoleFromData(): void;
|
|
118
|
-
protected _setRoleFromChildren(children: T[]): void;
|
|
119
117
|
}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
import { DOCUMENT } from '@angular/common';
|
|
9
|
-
import { Inject, Injectable, Optional, SkipSelf, } from '@angular/core';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "@angular/common";
|
|
12
|
-
/**
|
|
13
|
-
* Service for dispatching keyboard events that land on the body to appropriate overlay ref,
|
|
14
|
-
* if any. It maintains a list of attached overlays to determine best suited overlay based
|
|
15
|
-
* on event target and order of overlay opens.
|
|
16
|
-
*/
|
|
17
|
-
export class OverlayKeyboardDispatcher {
|
|
18
|
-
constructor(document) {
|
|
19
|
-
/** Currently attached overlays in the order they were attached. */
|
|
20
|
-
this._attachedOverlays = [];
|
|
21
|
-
/** Keyboard event listener that will be attached to the body. */
|
|
22
|
-
this._keydownListener = (event) => {
|
|
23
|
-
const overlays = this._attachedOverlays;
|
|
24
|
-
for (let i = overlays.length - 1; i > -1; i--) {
|
|
25
|
-
// Dispatch the keydown event to the top overlay which has subscribers to its keydown events.
|
|
26
|
-
// We want to target the most recent overlay, rather than trying to match where the event came
|
|
27
|
-
// from, because some components might open an overlay, but keep focus on a trigger element
|
|
28
|
-
// (e.g. for select and autocomplete). We skip overlays without keydown event subscriptions,
|
|
29
|
-
// because we don't want overlays that don't handle keyboard events to block the ones below
|
|
30
|
-
// them that do.
|
|
31
|
-
if (overlays[i]._keydownEvents.observers.length > 0) {
|
|
32
|
-
overlays[i]._keydownEvents.next(event);
|
|
33
|
-
break;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
this._document = document;
|
|
38
|
-
}
|
|
39
|
-
ngOnDestroy() {
|
|
40
|
-
this._detach();
|
|
41
|
-
}
|
|
42
|
-
/** Add a new overlay to the list of attached overlay refs. */
|
|
43
|
-
add(overlayRef) {
|
|
44
|
-
// Ensure that we don't get the same overlay multiple times.
|
|
45
|
-
this.remove(overlayRef);
|
|
46
|
-
// Lazily start dispatcher once first overlay is added
|
|
47
|
-
if (!this._isAttached) {
|
|
48
|
-
this._document.body.addEventListener('keydown', this._keydownListener);
|
|
49
|
-
this._isAttached = true;
|
|
50
|
-
}
|
|
51
|
-
this._attachedOverlays.push(overlayRef);
|
|
52
|
-
}
|
|
53
|
-
/** Remove an overlay from the list of attached overlay refs. */
|
|
54
|
-
remove(overlayRef) {
|
|
55
|
-
const index = this._attachedOverlays.indexOf(overlayRef);
|
|
56
|
-
if (index > -1) {
|
|
57
|
-
this._attachedOverlays.splice(index, 1);
|
|
58
|
-
}
|
|
59
|
-
// Remove the global listener once there are no more overlays.
|
|
60
|
-
if (this._attachedOverlays.length === 0) {
|
|
61
|
-
this._detach();
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
/** Detaches the global keyboard event listener. */
|
|
65
|
-
_detach() {
|
|
66
|
-
if (this._isAttached) {
|
|
67
|
-
this._document.body.removeEventListener('keydown', this._keydownListener);
|
|
68
|
-
this._isAttached = false;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
OverlayKeyboardDispatcher.ɵprov = i0.ɵɵdefineInjectable({ factory: function OverlayKeyboardDispatcher_Factory() { return new OverlayKeyboardDispatcher(i0.ɵɵinject(i1.DOCUMENT)); }, token: OverlayKeyboardDispatcher, providedIn: "root" });
|
|
73
|
-
OverlayKeyboardDispatcher.decorators = [
|
|
74
|
-
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
75
|
-
];
|
|
76
|
-
OverlayKeyboardDispatcher.ctorParameters = () => [
|
|
77
|
-
{ type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }
|
|
78
|
-
];
|
|
79
|
-
/** @docs-private @deprecated @breaking-change 8.0.0 */
|
|
80
|
-
export function OVERLAY_KEYBOARD_DISPATCHER_PROVIDER_FACTORY(dispatcher, _document) {
|
|
81
|
-
return dispatcher || new OverlayKeyboardDispatcher(_document);
|
|
82
|
-
}
|
|
83
|
-
/** @docs-private @deprecated @breaking-change 8.0.0 */
|
|
84
|
-
export const OVERLAY_KEYBOARD_DISPATCHER_PROVIDER = {
|
|
85
|
-
// If there is already an OverlayKeyboardDispatcher available, use that.
|
|
86
|
-
// Otherwise, provide a new one.
|
|
87
|
-
provide: OverlayKeyboardDispatcher,
|
|
88
|
-
deps: [
|
|
89
|
-
[new Optional(), new SkipSelf(), OverlayKeyboardDispatcher],
|
|
90
|
-
// Coerce to `InjectionToken` so that the `deps` match the "shape"
|
|
91
|
-
// of the type expected by Angular
|
|
92
|
-
DOCUMENT
|
|
93
|
-
],
|
|
94
|
-
useFactory: OVERLAY_KEYBOARD_DISPATCHER_PROVIDER_FACTORY
|
|
95
|
-
};
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1rZXlib2FyZC1kaXNwYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay9vdmVybGF5L2tleWJvYXJkL292ZXJsYXkta2V5Ym9hcmQtZGlzcGF0Y2hlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUNMLE1BQU0sRUFDTixVQUFVLEVBR1YsUUFBUSxFQUNSLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQzs7O0FBSXZCOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8seUJBQXlCO0lBUXBDLFlBQThCLFFBQWE7UUFOM0MsbUVBQW1FO1FBQ25FLHNCQUFpQixHQUF1QixFQUFFLENBQUM7UUFpRDNDLGlFQUFpRTtRQUN6RCxxQkFBZ0IsR0FBRyxDQUFDLEtBQW9CLEVBQUUsRUFBRTtZQUNsRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7WUFFeEMsS0FBSyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzdDLDZGQUE2RjtnQkFDN0YsOEZBQThGO2dCQUM5RiwyRkFBMkY7Z0JBQzNGLDRGQUE0RjtnQkFDNUYsMkZBQTJGO2dCQUMzRixnQkFBZ0I7Z0JBQ2hCLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDbkQsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3ZDLE1BQU07aUJBQ1A7YUFDRjtRQUNILENBQUMsQ0FBQTtRQTNEQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztJQUM1QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsOERBQThEO0lBQzlELEdBQUcsQ0FBQyxVQUE0QjtRQUM5Qiw0REFBNEQ7UUFDNUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV4QixzREFBc0Q7UUFDdEQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1NBQ3pCO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsZ0VBQWdFO0lBQ2hFLE1BQU0sQ0FBQyxVQUE0QjtRQUNqQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXpELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDekM7UUFFRCw4REFBOEQ7UUFDOUQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN2QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDaEI7SUFDSCxDQUFDO0lBRUQsbURBQW1EO0lBQzNDLE9BQU87UUFDYixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzFFLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1NBQzFCO0lBQ0gsQ0FBQzs7OztZQW5ERixVQUFVLFNBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOzs7NENBU2pCLE1BQU0sU0FBQyxRQUFROztBQWdFOUIsdURBQXVEO0FBQ3ZELE1BQU0sVUFBVSw0Q0FBNEMsQ0FDeEQsVUFBcUMsRUFBRSxTQUFjO0lBQ3ZELE9BQU8sVUFBVSxJQUFJLElBQUkseUJBQXlCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDaEUsQ0FBQztBQUVELHVEQUF1RDtBQUN2RCxNQUFNLENBQUMsTUFBTSxvQ0FBb0MsR0FBRztJQUNsRCx3RUFBd0U7SUFDeEUsZ0NBQWdDO0lBQ2hDLE9BQU8sRUFBRSx5QkFBeUI7SUFDbEMsSUFBSSxFQUFFO1FBQ0osQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUseUJBQXlCLENBQUM7UUFFM0Qsa0VBQWtFO1FBQ2xFLGtDQUFrQztRQUNsQyxRQUErQjtLQUNoQztJQUNELFVBQVUsRUFBRSw0Q0FBNEM7Q0FDekQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgSW5qZWN0LFxuICBJbmplY3RhYmxlLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgU2tpcFNlbGYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPdmVybGF5UmVmZXJlbmNlfSBmcm9tICcuLi9vdmVybGF5LXJlZmVyZW5jZSc7XG5cblxuLyoqXG4gKiBTZXJ2aWNlIGZvciBkaXNwYXRjaGluZyBrZXlib2FyZCBldmVudHMgdGhhdCBsYW5kIG9uIHRoZSBib2R5IHRvIGFwcHJvcHJpYXRlIG92ZXJsYXkgcmVmLFxuICogaWYgYW55LiBJdCBtYWludGFpbnMgYSBsaXN0IG9mIGF0dGFjaGVkIG92ZXJsYXlzIHRvIGRldGVybWluZSBiZXN0IHN1aXRlZCBvdmVybGF5IGJhc2VkXG4gKiBvbiBldmVudCB0YXJnZXQgYW5kIG9yZGVyIG9mIG92ZXJsYXkgb3BlbnMuXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIE92ZXJsYXlLZXlib2FyZERpc3BhdGNoZXIgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIC8qKiBDdXJyZW50bHkgYXR0YWNoZWQgb3ZlcmxheXMgaW4gdGhlIG9yZGVyIHRoZXkgd2VyZSBhdHRhY2hlZC4gKi9cbiAgX2F0dGFjaGVkT3ZlcmxheXM6IE92ZXJsYXlSZWZlcmVuY2VbXSA9IFtdO1xuXG4gIHByaXZhdGUgX2RvY3VtZW50OiBEb2N1bWVudDtcbiAgcHJpdmF0ZSBfaXNBdHRhY2hlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KERPQ1VNRU5UKSBkb2N1bWVudDogYW55KSB7XG4gICAgdGhpcy5fZG9jdW1lbnQgPSBkb2N1bWVudDtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2RldGFjaCgpO1xuICB9XG5cbiAgLyoqIEFkZCBhIG5ldyBvdmVybGF5IHRvIHRoZSBsaXN0IG9mIGF0dGFjaGVkIG92ZXJsYXkgcmVmcy4gKi9cbiAgYWRkKG92ZXJsYXlSZWY6IE92ZXJsYXlSZWZlcmVuY2UpOiB2b2lkIHtcbiAgICAvLyBFbnN1cmUgdGhhdCB3ZSBkb24ndCBnZXQgdGhlIHNhbWUgb3ZlcmxheSBtdWx0aXBsZSB0aW1lcy5cbiAgICB0aGlzLnJlbW92ZShvdmVybGF5UmVmKTtcblxuICAgIC8vIExhemlseSBzdGFydCBkaXNwYXRjaGVyIG9uY2UgZmlyc3Qgb3ZlcmxheSBpcyBhZGRlZFxuICAgIGlmICghdGhpcy5faXNBdHRhY2hlZCkge1xuICAgICAgdGhpcy5fZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5fa2V5ZG93bkxpc3RlbmVyKTtcbiAgICAgIHRoaXMuX2lzQXR0YWNoZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuX2F0dGFjaGVkT3ZlcmxheXMucHVzaChvdmVybGF5UmVmKTtcbiAgfVxuXG4gIC8qKiBSZW1vdmUgYW4gb3ZlcmxheSBmcm9tIHRoZSBsaXN0IG9mIGF0dGFjaGVkIG92ZXJsYXkgcmVmcy4gKi9cbiAgcmVtb3ZlKG92ZXJsYXlSZWY6IE92ZXJsYXlSZWZlcmVuY2UpOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuX2F0dGFjaGVkT3ZlcmxheXMuaW5kZXhPZihvdmVybGF5UmVmKTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLl9hdHRhY2hlZE92ZXJsYXlzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIHRoZSBnbG9iYWwgbGlzdGVuZXIgb25jZSB0aGVyZSBhcmUgbm8gbW9yZSBvdmVybGF5cy5cbiAgICBpZiAodGhpcy5fYXR0YWNoZWRPdmVybGF5cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuX2RldGFjaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBEZXRhY2hlcyB0aGUgZ2xvYmFsIGtleWJvYXJkIGV2ZW50IGxpc3RlbmVyLiAqL1xuICBwcml2YXRlIF9kZXRhY2goKSB7XG4gICAgaWYgKHRoaXMuX2lzQXR0YWNoZWQpIHtcbiAgICAgIHRoaXMuX2RvY3VtZW50LmJvZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuX2tleWRvd25MaXN0ZW5lcik7XG4gICAgICB0aGlzLl9pc0F0dGFjaGVkID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqIEtleWJvYXJkIGV2ZW50IGxpc3RlbmVyIHRoYXQgd2lsbCBiZSBhdHRhY2hlZCB0byB0aGUgYm9keS4gKi9cbiAgcHJpdmF0ZSBfa2V5ZG93bkxpc3RlbmVyID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgY29uc3Qgb3ZlcmxheXMgPSB0aGlzLl9hdHRhY2hlZE92ZXJsYXlzO1xuXG4gICAgZm9yIChsZXQgaSA9IG92ZXJsYXlzLmxlbmd0aCAtIDE7IGkgPiAtMTsgaS0tKSB7XG4gICAgICAvLyBEaXNwYXRjaCB0aGUga2V5ZG93biBldmVudCB0byB0aGUgdG9wIG92ZXJsYXkgd2hpY2ggaGFzIHN1YnNjcmliZXJzIHRvIGl0cyBrZXlkb3duIGV2ZW50cy5cbiAgICAgIC8vIFdlIHdhbnQgdG8gdGFyZ2V0IHRoZSBtb3N0IHJlY2VudCBvdmVybGF5LCByYXRoZXIgdGhhbiB0cnlpbmcgdG8gbWF0Y2ggd2hlcmUgdGhlIGV2ZW50IGNhbWVcbiAgICAgIC8vIGZyb20sIGJlY2F1c2Ugc29tZSBjb21wb25lbnRzIG1pZ2h0IG9wZW4gYW4gb3ZlcmxheSwgYnV0IGtlZXAgZm9jdXMgb24gYSB0cmlnZ2VyIGVsZW1lbnRcbiAgICAgIC8vIChlLmcuIGZvciBzZWxlY3QgYW5kIGF1dG9jb21wbGV0ZSkuIFdlIHNraXAgb3ZlcmxheXMgd2l0aG91dCBrZXlkb3duIGV2ZW50IHN1YnNjcmlwdGlvbnMsXG4gICAgICAvLyBiZWNhdXNlIHdlIGRvbid0IHdhbnQgb3ZlcmxheXMgdGhhdCBkb24ndCBoYW5kbGUga2V5Ym9hcmQgZXZlbnRzIHRvIGJsb2NrIHRoZSBvbmVzIGJlbG93XG4gICAgICAvLyB0aGVtIHRoYXQgZG8uXG4gICAgICBpZiAob3ZlcmxheXNbaV0uX2tleWRvd25FdmVudHMub2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgb3ZlcmxheXNbaV0uX2tleWRvd25FdmVudHMubmV4dChldmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cbi8qKiBAZG9jcy1wcml2YXRlIEBkZXByZWNhdGVkIEBicmVha2luZy1jaGFuZ2UgOC4wLjAgKi9cbmV4cG9ydCBmdW5jdGlvbiBPVkVSTEFZX0tFWUJPQVJEX0RJU1BBVENIRVJfUFJPVklERVJfRkFDVE9SWShcbiAgICBkaXNwYXRjaGVyOiBPdmVybGF5S2V5Ym9hcmREaXNwYXRjaGVyLCBfZG9jdW1lbnQ6IGFueSkge1xuICByZXR1cm4gZGlzcGF0Y2hlciB8fCBuZXcgT3ZlcmxheUtleWJvYXJkRGlzcGF0Y2hlcihfZG9jdW1lbnQpO1xufVxuXG4vKiogQGRvY3MtcHJpdmF0ZSBAZGVwcmVjYXRlZCBAYnJlYWtpbmctY2hhbmdlIDguMC4wICovXG5leHBvcnQgY29uc3QgT1ZFUkxBWV9LRVlCT0FSRF9ESVNQQVRDSEVSX1BST1ZJREVSID0ge1xuICAvLyBJZiB0aGVyZSBpcyBhbHJlYWR5IGFuIE92ZXJsYXlLZXlib2FyZERpc3BhdGNoZXIgYXZhaWxhYmxlLCB1c2UgdGhhdC5cbiAgLy8gT3RoZXJ3aXNlLCBwcm92aWRlIGEgbmV3IG9uZS5cbiAgcHJvdmlkZTogT3ZlcmxheUtleWJvYXJkRGlzcGF0Y2hlcixcbiAgZGVwczogW1xuICAgIFtuZXcgT3B0aW9uYWwoKSwgbmV3IFNraXBTZWxmKCksIE92ZXJsYXlLZXlib2FyZERpc3BhdGNoZXJdLFxuXG4gICAgLy8gQ29lcmNlIHRvIGBJbmplY3Rpb25Ub2tlbmAgc28gdGhhdCB0aGUgYGRlcHNgIG1hdGNoIHRoZSBcInNoYXBlXCJcbiAgICAvLyBvZiB0aGUgdHlwZSBleHBlY3RlZCBieSBBbmd1bGFyXG4gICAgRE9DVU1FTlQgYXMgSW5qZWN0aW9uVG9rZW48YW55PlxuICBdLFxuICB1c2VGYWN0b3J5OiBPVkVSTEFZX0tFWUJPQVJEX0RJU1BBVENIRVJfUFJPVklERVJfRkFDVE9SWVxufTtcbiJdfQ==
|