@angular/core 18.0.0-next.4 → 18.0.0-next.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/esm2022/primitives/event-dispatch/contract_binary.mjs +10 -0
  2. package/esm2022/primitives/event-dispatch/index.mjs +13 -0
  3. package/esm2022/primitives/event-dispatch/src/a11y_click.mjs +54 -0
  4. package/esm2022/primitives/event-dispatch/src/accessibility.mjs +35 -0
  5. package/esm2022/primitives/event-dispatch/src/attribute.mjs +72 -0
  6. package/esm2022/primitives/event-dispatch/src/base_dispatcher.mjs +196 -0
  7. package/esm2022/primitives/event-dispatch/src/cache.mjs +95 -0
  8. package/esm2022/primitives/event-dispatch/src/char.mjs +35 -0
  9. package/esm2022/primitives/event-dispatch/src/custom_events.mjs +63 -0
  10. package/esm2022/primitives/event-dispatch/src/dispatcher.mjs +254 -0
  11. package/esm2022/primitives/event-dispatch/src/dom.mjs +48 -0
  12. package/esm2022/primitives/event-dispatch/src/earlyeventcontract.mjs +36 -0
  13. package/esm2022/primitives/event-dispatch/src/event.mjs +638 -0
  14. package/esm2022/primitives/event-dispatch/src/event_contract_container.mjs +63 -0
  15. package/esm2022/primitives/event-dispatch/src/event_contract_defines.mjs +48 -0
  16. package/esm2022/primitives/event-dispatch/src/event_contract_multi_container.mjs +192 -0
  17. package/esm2022/primitives/event-dispatch/src/event_handler.mjs +9 -0
  18. package/esm2022/primitives/event-dispatch/src/event_info.mjs +199 -0
  19. package/esm2022/primitives/event-dispatch/src/event_type.mjs +244 -0
  20. package/esm2022/primitives/event-dispatch/src/eventcontract.mjs +675 -0
  21. package/esm2022/primitives/event-dispatch/src/key_code.mjs +21 -0
  22. package/esm2022/primitives/event-dispatch/src/legacy_dispatcher.mjs +9 -0
  23. package/esm2022/primitives/event-dispatch/src/property.mjs +35 -0
  24. package/esm2022/primitives/event-dispatch/src/register_events.mjs +32 -0
  25. package/esm2022/primitives/event-dispatch/src/replay.mjs +389 -0
  26. package/esm2022/primitives/event-dispatch/src/restriction.mjs +15 -0
  27. package/esm2022/primitives/signals/index.mjs +3 -3
  28. package/esm2022/primitives/signals/src/computed.mjs +5 -3
  29. package/esm2022/primitives/signals/src/graph.mjs +14 -9
  30. package/esm2022/primitives/signals/src/signal.mjs +2 -2
  31. package/esm2022/primitives/signals/src/watch.mjs +2 -2
  32. package/esm2022/src/application/application_ref.mjs +4 -2
  33. package/esm2022/src/change_detection/scheduling/flags.mjs +10 -0
  34. package/esm2022/src/change_detection/scheduling/ng_zone_scheduling.mjs +18 -33
  35. package/esm2022/src/change_detection/scheduling/zoneless_scheduling.mjs +1 -1
  36. package/esm2022/src/change_detection/scheduling/zoneless_scheduling_impl.mjs +111 -9
  37. package/esm2022/src/core.mjs +3 -1
  38. package/esm2022/src/core_private_export.mjs +2 -3
  39. package/esm2022/src/debug/debug_node.mjs +1 -1
  40. package/esm2022/src/defer/instructions.mjs +31 -8
  41. package/esm2022/src/di/host_tag_name_token.mjs +65 -0
  42. package/esm2022/src/di/index.mjs +2 -1
  43. package/esm2022/src/errors.mjs +1 -1
  44. package/esm2022/src/hydration/annotate.mjs +15 -1
  45. package/esm2022/src/hydration/event_replay.mjs +181 -0
  46. package/esm2022/src/hydration/tokens.mjs +6 -1
  47. package/esm2022/src/metadata/directives.mjs +1 -62
  48. package/esm2022/src/pending_tasks.mjs +54 -11
  49. package/esm2022/src/platform/platform_ref.mjs +3 -3
  50. package/esm2022/src/render3/component_ref.mjs +1 -1
  51. package/esm2022/src/render3/context_discovery.mjs +15 -1
  52. package/esm2022/src/render3/instructions/control_flow.mjs +55 -8
  53. package/esm2022/src/render3/list_reconciliation.mjs +41 -1
  54. package/esm2022/src/testability/testability.mjs +2 -30
  55. package/esm2022/src/util/callback_scheduler.mjs +14 -3
  56. package/esm2022/src/version.mjs +1 -1
  57. package/esm2022/src/zone/ng_zone.mjs +22 -6
  58. package/esm2022/testing/src/async.mjs +2 -10
  59. package/esm2022/testing/src/component_fixture.mjs +7 -12
  60. package/esm2022/testing/src/defer.mjs +1 -2
  61. package/esm2022/testing/src/logger.mjs +3 -3
  62. package/esm2022/testing/src/test_bed_common.mjs +1 -6
  63. package/esm2022/testing/src/testing.mjs +1 -2
  64. package/event-dispatch-contract.min.js +1 -0
  65. package/fesm2022/core.mjs +608 -174
  66. package/fesm2022/core.mjs.map +1 -1
  67. package/fesm2022/primitives/event-dispatch.mjs +3044 -0
  68. package/fesm2022/primitives/event-dispatch.mjs.map +1 -0
  69. package/fesm2022/primitives/signals.mjs +17 -10
  70. package/fesm2022/primitives/signals.mjs.map +1 -1
  71. package/fesm2022/rxjs-interop.mjs +1 -1
  72. package/fesm2022/testing.mjs +35 -54
  73. package/fesm2022/testing.mjs.map +1 -1
  74. package/index.d.ts +199 -115
  75. package/package.json +10 -1
  76. package/primitives/event-dispatch/index.d.ts +627 -0
  77. package/primitives/signals/index.d.ts +1 -1
  78. package/rxjs-interop/index.d.ts +1 -1
  79. package/schematics/migrations/{transfer-state → http-providers}/bundle.js +254 -68
  80. package/schematics/migrations/http-providers/bundle.js.map +7 -0
  81. package/schematics/migrations/invalid-two-way-bindings/bundle.js +690 -413
  82. package/schematics/migrations/invalid-two-way-bindings/bundle.js.map +3 -3
  83. package/schematics/migrations.json +6 -16
  84. package/schematics/ng-generate/control-flow-migration/bundle.js +693 -417
  85. package/schematics/ng-generate/control-flow-migration/bundle.js.map +3 -3
  86. package/schematics/ng-generate/standalone-migration/bundle.js +1072 -735
  87. package/schematics/ng-generate/standalone-migration/bundle.js.map +3 -3
  88. package/testing/index.d.ts +2 -15
  89. package/esm2022/testing/src/private_export.mjs +0 -9
  90. package/schematics/migrations/block-template-entities/bundle.js +0 -22853
  91. package/schematics/migrations/block-template-entities/bundle.js.map +0 -7
  92. package/schematics/migrations/compiler-options/bundle.js +0 -582
  93. package/schematics/migrations/compiler-options/bundle.js.map +0 -7
  94. package/schematics/migrations/transfer-state/bundle.js.map +0 -7
@@ -0,0 +1,10 @@
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 { bootstrapEventContract } from './src/register_events';
9
+ window['__jsaction_bootstrap'] = bootstrapEventContract;
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfYmluYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9wcmltaXRpdmVzL2V2ZW50LWRpc3BhdGNoL2NvbnRyYWN0X2JpbmFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUU1RCxNQUFjLENBQUMsc0JBQXNCLENBQUMsR0FBRyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge2Jvb3RzdHJhcEV2ZW50Q29udHJhY3R9IGZyb20gJy4vc3JjL3JlZ2lzdGVyX2V2ZW50cyc7XG5cbih3aW5kb3cgYXMgYW55KVsnX19qc2FjdGlvbl9ib290c3RyYXAnXSA9IGJvb3RzdHJhcEV2ZW50Q29udHJhY3Q7XG4iXX0=
@@ -0,0 +1,13 @@
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
+ export { Dispatcher, registerDispatcher } from './src/dispatcher';
9
+ export { EventContractContainer } from './src/event_contract_container';
10
+ export { EventContract } from './src/eventcontract';
11
+ export { bootstrapEventContract } from './src/register_events';
12
+ export { EventInfoWrapper } from './src/event_info';
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3ByaW1pdGl2ZXMvZXZlbnQtZGlzcGF0Y2gvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5leHBvcnQge0Rpc3BhdGNoZXIsIHJlZ2lzdGVyRGlzcGF0Y2hlcn0gZnJvbSAnLi9zcmMvZGlzcGF0Y2hlcic7XG5leHBvcnQge0V2ZW50Q29udHJhY3RDb250YWluZXJ9IGZyb20gJy4vc3JjL2V2ZW50X2NvbnRyYWN0X2NvbnRhaW5lcic7XG5leHBvcnQge0V2ZW50Q29udHJhY3R9IGZyb20gJy4vc3JjL2V2ZW50Y29udHJhY3QnO1xuZXhwb3J0IHtib290c3RyYXBFdmVudENvbnRyYWN0fSBmcm9tICcuL3NyYy9yZWdpc3Rlcl9ldmVudHMnO1xuZXhwb3J0IHtFdmVudEluZm9XcmFwcGVyfSBmcm9tICcuL3NyYy9ldmVudF9pbmZvJztcbiJdfQ==
@@ -0,0 +1,54 @@
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 * as eventLib from './event';
9
+ import * as eventInfoLib from './event_info';
10
+ import { EventType } from './event_type';
11
+ /**
12
+ * Update `EventInfo` to be `eventType = 'click'` and sets `a11yClickKey` if it
13
+ * is a a11y click.
14
+ */
15
+ export function updateEventInfoForA11yClick(eventInfo) {
16
+ if (!eventLib.isActionKeyEvent(eventInfoLib.getEvent(eventInfo))) {
17
+ return;
18
+ }
19
+ eventInfoLib.setA11yClickKey(eventInfo, true);
20
+ // A 'click' triggered by a DOM keypress should be mapped to the 'click'
21
+ // jsaction.
22
+ eventInfoLib.setEventType(eventInfo, EventType.CLICK);
23
+ }
24
+ /**
25
+ * Call `preventDefault` on an a11y click if it is space key or to prevent the
26
+ * browser's default action for native HTML controls.
27
+ */
28
+ export function preventDefaultForA11yClick(eventInfo) {
29
+ if (!eventInfoLib.getA11yClickKey(eventInfo) ||
30
+ (!eventLib.isSpaceKeyEvent(eventInfoLib.getEvent(eventInfo)) &&
31
+ !eventLib.shouldCallPreventDefaultOnNativeHtmlControl(eventInfoLib.getEvent(eventInfo)))) {
32
+ return;
33
+ }
34
+ eventLib.preventDefault(eventInfoLib.getEvent(eventInfo));
35
+ }
36
+ /**
37
+ * Sets the `action` to `clickonly` for a click event that is not an a11y click
38
+ * and if there is not already a click action.
39
+ */
40
+ export function populateClickOnlyAction(actionElement, eventInfo, actionMap) {
41
+ if (
42
+ // If there's already an action, don't attempt to set a CLICKONLY
43
+ eventInfoLib.getAction(eventInfo) ||
44
+ // Only attempt CLICKONLY if the type is CLICK
45
+ eventInfoLib.getEventType(eventInfo) !== EventType.CLICK ||
46
+ // a11y clicks are never CLICKONLY
47
+ eventInfoLib.getA11yClickKey(eventInfo) ||
48
+ actionMap[EventType.CLICKONLY] === undefined) {
49
+ return;
50
+ }
51
+ eventInfoLib.setEventType(eventInfo, EventType.CLICKONLY);
52
+ eventInfoLib.setAction(eventInfo, actionMap[EventType.CLICKONLY], actionElement);
53
+ }
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYTExeV9jbGljay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvcHJpbWl0aXZlcy9ldmVudC1kaXNwYXRjaC9zcmMvYTExeV9jbGljay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEtBQUssUUFBUSxNQUFNLFNBQVMsQ0FBQztBQUNwQyxPQUFPLEtBQUssWUFBWSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRXZDOzs7R0FHRztBQUNILE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxTQUFpQztJQUMzRSxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2pFLE9BQU87SUFDVCxDQUFDO0lBQ0QsWUFBWSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUMsd0VBQXdFO0lBQ3hFLFlBQVk7SUFDWixZQUFZLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSwwQkFBMEIsQ0FBQyxTQUFpQztJQUMxRSxJQUNFLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7UUFDeEMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMxRCxDQUFDLFFBQVEsQ0FBQywyQ0FBMkMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFDMUYsQ0FBQztRQUNELE9BQU87SUFDVCxDQUFDO0lBQ0QsUUFBUSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDNUQsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsYUFBc0IsRUFDdEIsU0FBaUMsRUFDakMsU0FBa0M7SUFFbEM7SUFDRSxpRUFBaUU7SUFDakUsWUFBWSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7UUFDakMsOENBQThDO1FBQzlDLFlBQVksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssU0FBUyxDQUFDLEtBQUs7UUFDeEQsa0NBQWtDO1FBQ2xDLFlBQVksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDO1FBQ3ZDLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssU0FBUyxFQUM1QyxDQUFDO1FBQ0QsT0FBTztJQUNULENBQUM7SUFDRCxZQUFZLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUQsWUFBWSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztBQUNuRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIGV2ZW50TGliIGZyb20gJy4vZXZlbnQnO1xuaW1wb3J0ICogYXMgZXZlbnRJbmZvTGliIGZyb20gJy4vZXZlbnRfaW5mbyc7XG5pbXBvcnQge0V2ZW50VHlwZX0gZnJvbSAnLi9ldmVudF90eXBlJztcblxuLyoqXG4gKiBVcGRhdGUgYEV2ZW50SW5mb2AgdG8gYmUgYGV2ZW50VHlwZSA9ICdjbGljaydgIGFuZCBzZXRzIGBhMTF5Q2xpY2tLZXlgIGlmIGl0XG4gKiBpcyBhIGExMXkgY2xpY2suXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVFdmVudEluZm9Gb3JBMTF5Q2xpY2soZXZlbnRJbmZvOiBldmVudEluZm9MaWIuRXZlbnRJbmZvKSB7XG4gIGlmICghZXZlbnRMaWIuaXNBY3Rpb25LZXlFdmVudChldmVudEluZm9MaWIuZ2V0RXZlbnQoZXZlbnRJbmZvKSkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgZXZlbnRJbmZvTGliLnNldEExMXlDbGlja0tleShldmVudEluZm8sIHRydWUpO1xuICAvLyBBICdjbGljaycgdHJpZ2dlcmVkIGJ5IGEgRE9NIGtleXByZXNzIHNob3VsZCBiZSBtYXBwZWQgdG8gdGhlICdjbGljaydcbiAgLy8ganNhY3Rpb24uXG4gIGV2ZW50SW5mb0xpYi5zZXRFdmVudFR5cGUoZXZlbnRJbmZvLCBFdmVudFR5cGUuQ0xJQ0spO1xufVxuXG4vKipcbiAqIENhbGwgYHByZXZlbnREZWZhdWx0YCBvbiBhbiBhMTF5IGNsaWNrIGlmIGl0IGlzIHNwYWNlIGtleSBvciB0byBwcmV2ZW50IHRoZVxuICogYnJvd3NlcidzIGRlZmF1bHQgYWN0aW9uIGZvciBuYXRpdmUgSFRNTCBjb250cm9scy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZXZlbnREZWZhdWx0Rm9yQTExeUNsaWNrKGV2ZW50SW5mbzogZXZlbnRJbmZvTGliLkV2ZW50SW5mbykge1xuICBpZiAoXG4gICAgIWV2ZW50SW5mb0xpYi5nZXRBMTF5Q2xpY2tLZXkoZXZlbnRJbmZvKSB8fFxuICAgICghZXZlbnRMaWIuaXNTcGFjZUtleUV2ZW50KGV2ZW50SW5mb0xpYi5nZXRFdmVudChldmVudEluZm8pKSAmJlxuICAgICAgIWV2ZW50TGliLnNob3VsZENhbGxQcmV2ZW50RGVmYXVsdE9uTmF0aXZlSHRtbENvbnRyb2woZXZlbnRJbmZvTGliLmdldEV2ZW50KGV2ZW50SW5mbykpKVxuICApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgZXZlbnRMaWIucHJldmVudERlZmF1bHQoZXZlbnRJbmZvTGliLmdldEV2ZW50KGV2ZW50SW5mbykpO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIGBhY3Rpb25gIHRvIGBjbGlja29ubHlgIGZvciBhIGNsaWNrIGV2ZW50IHRoYXQgaXMgbm90IGFuIGExMXkgY2xpY2tcbiAqIGFuZCBpZiB0aGVyZSBpcyBub3QgYWxyZWFkeSBhIGNsaWNrIGFjdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBvcHVsYXRlQ2xpY2tPbmx5QWN0aW9uKFxuICBhY3Rpb25FbGVtZW50OiBFbGVtZW50LFxuICBldmVudEluZm86IGV2ZW50SW5mb0xpYi5FdmVudEluZm8sXG4gIGFjdGlvbk1hcDoge1trZXk6IHN0cmluZ106IHN0cmluZ30sXG4pIHtcbiAgaWYgKFxuICAgIC8vIElmIHRoZXJlJ3MgYWxyZWFkeSBhbiBhY3Rpb24sIGRvbid0IGF0dGVtcHQgdG8gc2V0IGEgQ0xJQ0tPTkxZXG4gICAgZXZlbnRJbmZvTGliLmdldEFjdGlvbihldmVudEluZm8pIHx8XG4gICAgLy8gT25seSBhdHRlbXB0IENMSUNLT05MWSBpZiB0aGUgdHlwZSBpcyBDTElDS1xuICAgIGV2ZW50SW5mb0xpYi5nZXRFdmVudFR5cGUoZXZlbnRJbmZvKSAhPT0gRXZlbnRUeXBlLkNMSUNLIHx8XG4gICAgLy8gYTExeSBjbGlja3MgYXJlIG5ldmVyIENMSUNLT05MWVxuICAgIGV2ZW50SW5mb0xpYi5nZXRBMTF5Q2xpY2tLZXkoZXZlbnRJbmZvKSB8fFxuICAgIGFjdGlvbk1hcFtFdmVudFR5cGUuQ0xJQ0tPTkxZXSA9PT0gdW5kZWZpbmVkXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuICBldmVudEluZm9MaWIuc2V0RXZlbnRUeXBlKGV2ZW50SW5mbywgRXZlbnRUeXBlLkNMSUNLT05MWSk7XG4gIGV2ZW50SW5mb0xpYi5zZXRBY3Rpb24oZXZlbnRJbmZvLCBhY3Rpb25NYXBbRXZlbnRUeXBlLkNMSUNLT05MWV0sIGFjdGlvbkVsZW1lbnQpO1xufVxuIl19
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ /**
9
+ * Defines special EventInfo and Event properties used when
10
+ * A11Y_SUPPORT_IN_DISPATCHER is enabled.
11
+ */
12
+ export var Attribute;
13
+ (function (Attribute) {
14
+ /**
15
+ * An event-type set when the event contract detects a KEYDOWN event but
16
+ * doesn't know if the key press can be treated like a click. The dispatcher
17
+ * will use this event-type to parse the keypress and handle it accordingly.
18
+ */
19
+ Attribute["MAYBE_CLICK_EVENT_TYPE"] = "maybe_click";
20
+ /**
21
+ * A property added to a dispatched event that had the MAYBE_CLICK_EVENTTYPE
22
+ * event-type but could not be used as a click. The dispatcher sets this
23
+ * property for non-global dispatches before it retriggers the event and it
24
+ * signifies that the event contract should not dispatch this event globally.
25
+ */
26
+ Attribute["SKIP_GLOBAL_DISPATCH"] = "a11ysgd";
27
+ /**
28
+ * A property added to a dispatched event that had the MAYBE_CLICK_EVENTTYPE
29
+ * event-type but could not be used as a click. The dispatcher sets this
30
+ * property before it retriggers the event and it signifies that the event
31
+ * contract should not look at CLICK actions for KEYDOWN events.
32
+ */
33
+ Attribute["SKIP_A11Y_CHECK"] = "a11ysc";
34
+ })(Attribute || (Attribute = {}));
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzaWJpbGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvcHJpbWl0aXZlcy9ldmVudC1kaXNwYXRjaC9zcmMvYWNjZXNzaWJpbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSDs7O0dBR0c7QUFDSCxNQUFNLENBQU4sSUFBWSxTQXVCWDtBQXZCRCxXQUFZLFNBQVM7SUFDbkI7Ozs7T0FJRztJQUNILG1EQUFzQyxDQUFBO0lBRXRDOzs7OztPQUtHO0lBQ0gsNkNBQWdDLENBQUE7SUFFaEM7Ozs7O09BS0c7SUFDSCx1Q0FBMEIsQ0FBQTtBQUM1QixDQUFDLEVBdkJXLFNBQVMsS0FBVCxTQUFTLFFBdUJwQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vKipcbiAqIERlZmluZXMgc3BlY2lhbCBFdmVudEluZm8gYW5kIEV2ZW50IHByb3BlcnRpZXMgdXNlZCB3aGVuXG4gKiBBMTFZX1NVUFBPUlRfSU5fRElTUEFUQ0hFUiBpcyBlbmFibGVkLlxuICovXG5leHBvcnQgZW51bSBBdHRyaWJ1dGUge1xuICAvKipcbiAgICogQW4gZXZlbnQtdHlwZSBzZXQgd2hlbiB0aGUgZXZlbnQgY29udHJhY3QgZGV0ZWN0cyBhIEtFWURPV04gZXZlbnQgYnV0XG4gICAqIGRvZXNuJ3Qga25vdyBpZiB0aGUga2V5IHByZXNzIGNhbiBiZSB0cmVhdGVkIGxpa2UgYSBjbGljay4gVGhlIGRpc3BhdGNoZXJcbiAgICogd2lsbCB1c2UgdGhpcyBldmVudC10eXBlIHRvIHBhcnNlIHRoZSBrZXlwcmVzcyBhbmQgaGFuZGxlIGl0IGFjY29yZGluZ2x5LlxuICAgKi9cbiAgTUFZQkVfQ0xJQ0tfRVZFTlRfVFlQRSA9ICdtYXliZV9jbGljaycsXG5cbiAgLyoqXG4gICAqIEEgcHJvcGVydHkgYWRkZWQgdG8gYSBkaXNwYXRjaGVkIGV2ZW50IHRoYXQgaGFkIHRoZSBNQVlCRV9DTElDS19FVkVOVFRZUEVcbiAgICogZXZlbnQtdHlwZSBidXQgY291bGQgbm90IGJlIHVzZWQgYXMgYSBjbGljay4gVGhlIGRpc3BhdGNoZXIgc2V0cyB0aGlzXG4gICAqIHByb3BlcnR5IGZvciBub24tZ2xvYmFsIGRpc3BhdGNoZXMgYmVmb3JlIGl0IHJldHJpZ2dlcnMgdGhlIGV2ZW50IGFuZCBpdFxuICAgKiBzaWduaWZpZXMgdGhhdCB0aGUgZXZlbnQgY29udHJhY3Qgc2hvdWxkIG5vdCBkaXNwYXRjaCB0aGlzIGV2ZW50IGdsb2JhbGx5LlxuICAgKi9cbiAgU0tJUF9HTE9CQUxfRElTUEFUQ0ggPSAnYTExeXNnZCcsXG5cbiAgLyoqXG4gICAqIEEgcHJvcGVydHkgYWRkZWQgdG8gYSBkaXNwYXRjaGVkIGV2ZW50IHRoYXQgaGFkIHRoZSBNQVlCRV9DTElDS19FVkVOVFRZUEVcbiAgICogZXZlbnQtdHlwZSBidXQgY291bGQgbm90IGJlIHVzZWQgYXMgYSBjbGljay4gVGhlIGRpc3BhdGNoZXIgc2V0cyB0aGlzXG4gICAqIHByb3BlcnR5IGJlZm9yZSBpdCByZXRyaWdnZXJzIHRoZSBldmVudCBhbmQgaXQgc2lnbmlmaWVzIHRoYXQgdGhlIGV2ZW50XG4gICAqIGNvbnRyYWN0IHNob3VsZCBub3QgbG9vayBhdCBDTElDSyBhY3Rpb25zIGZvciBLRVlET1dOIGV2ZW50cy5cbiAgICovXG4gIFNLSVBfQTExWV9DSEVDSyA9ICdhMTF5c2MnLFxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBFdmVudCB7XG4gICAgW0F0dHJpYnV0ZS5NQVlCRV9DTElDS19FVkVOVF9UWVBFXT86IGJvb2xlYW47XG4gICAgW0F0dHJpYnV0ZS5TS0lQX0dMT0JBTF9ESVNQQVRDSF0/OiBib29sZWFuO1xuICAgIFtBdHRyaWJ1dGUuU0tJUF9BMTFZX0NIRUNLXT86IGJvb2xlYW47XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,72 @@
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
+ export var Attribute;
9
+ (function (Attribute) {
10
+ /**
11
+ * The jsaction attribute defines a mapping of a DOM event to a
12
+ * generic event (aka jsaction), to which the actual event handlers
13
+ * that implement the behavior of the application are bound. The
14
+ * value is a semicolon separated list of colon separated pairs of
15
+ * an optional DOM event name and a jsaction name. If the optional
16
+ * DOM event name is omitted, 'click' is assumed. The jsaction names
17
+ * are dot separated pairs of a namespace and a simple jsaction
18
+ * name. If the namespace is absent, it is taken from the closest
19
+ * ancestor element with a jsnamespace attribute, if there is
20
+ * any. If there is no ancestor with a jsnamespace attribute, the
21
+ * simple name is assumed to be the jsaction name.
22
+ *
23
+ * Used by EventContract.
24
+ */
25
+ Attribute["JSACTION"] = "jsaction";
26
+ /**
27
+ * The jsnamespace attribute provides the namespace part of the
28
+ * jaction names occurring in the jsaction attribute where it's
29
+ * missing.
30
+ *
31
+ * Used by EventContract.
32
+ */
33
+ Attribute["JSNAMESPACE"] = "jsnamespace";
34
+ /**
35
+ * The oi attribute is a log impression tag for impression logging
36
+ * and action tracking. For an element that carries a jsaction
37
+ * attribute, the element is identified for the purpose of
38
+ * impression logging and click tracking by the dot separated path
39
+ * of all oi attributes in the chain of ancestors of the element.
40
+ *
41
+ * Used by ActionFlow.
42
+ */
43
+ Attribute["OI"] = "oi";
44
+ /**
45
+ * The ved attribute is an encoded ClickTrackingCGI proto to track
46
+ * visual elements.
47
+ *
48
+ * Used by ActionFlow.
49
+ */
50
+ Attribute["VED"] = "ved";
51
+ /**
52
+ * The vet attribute is the visual element type used to identify tracked
53
+ * visual elements.
54
+ */
55
+ Attribute["VET"] = "vet";
56
+ /**
57
+ * Support for iteration on reprocessing.
58
+ *
59
+ * Used by ActionFlow.
60
+ */
61
+ Attribute["JSINSTANCE"] = "jsinstance";
62
+ /**
63
+ * All click jsactions that happen on the element that carries this
64
+ * attribute or its descendants are automatically logged.
65
+ * Impressions of jsactions on these elements are tracked too, if
66
+ * requested by the impression() method of ActionFlow.
67
+ *
68
+ * Used by ActionFlow.
69
+ */
70
+ Attribute["JSTRACK"] = "jstrack";
71
+ })(Attribute || (Attribute = {}));
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9wcmltaXRpdmVzL2V2ZW50LWRpc3BhdGNoL3NyYy9hdHRyaWJ1dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsTUFBTSxDQUFOLElBQVksU0FvRVg7QUFwRUQsV0FBWSxTQUFTO0lBQ25COzs7Ozs7Ozs7Ozs7OztPQWNHO0lBQ0gsa0NBQXFCLENBQUE7SUFFckI7Ozs7OztPQU1HO0lBQ0gsd0NBQTJCLENBQUE7SUFFM0I7Ozs7Ozs7O09BUUc7SUFDSCxzQkFBUyxDQUFBO0lBRVQ7Ozs7O09BS0c7SUFDSCx3QkFBVyxDQUFBO0lBRVg7OztPQUdHO0lBQ0gsd0JBQVcsQ0FBQTtJQUVYOzs7O09BSUc7SUFDSCxzQ0FBeUIsQ0FBQTtJQUV6Qjs7Ozs7OztPQU9HO0lBQ0gsZ0NBQW1CLENBQUE7QUFDckIsQ0FBQyxFQXBFVyxTQUFTLEtBQVQsU0FBUyxRQW9FcEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuZXhwb3J0IGVudW0gQXR0cmlidXRlIHtcbiAgLyoqXG4gICAqIFRoZSBqc2FjdGlvbiBhdHRyaWJ1dGUgZGVmaW5lcyBhIG1hcHBpbmcgb2YgYSBET00gZXZlbnQgdG8gYVxuICAgKiBnZW5lcmljIGV2ZW50IChha2EganNhY3Rpb24pLCB0byB3aGljaCB0aGUgYWN0dWFsIGV2ZW50IGhhbmRsZXJzXG4gICAqIHRoYXQgaW1wbGVtZW50IHRoZSBiZWhhdmlvciBvZiB0aGUgYXBwbGljYXRpb24gYXJlIGJvdW5kLiBUaGVcbiAgICogdmFsdWUgaXMgYSBzZW1pY29sb24gc2VwYXJhdGVkIGxpc3Qgb2YgY29sb24gc2VwYXJhdGVkIHBhaXJzIG9mXG4gICAqIGFuIG9wdGlvbmFsIERPTSBldmVudCBuYW1lIGFuZCBhIGpzYWN0aW9uIG5hbWUuIElmIHRoZSBvcHRpb25hbFxuICAgKiBET00gZXZlbnQgbmFtZSBpcyBvbWl0dGVkLCAnY2xpY2snIGlzIGFzc3VtZWQuIFRoZSBqc2FjdGlvbiBuYW1lc1xuICAgKiBhcmUgZG90IHNlcGFyYXRlZCBwYWlycyBvZiBhIG5hbWVzcGFjZSBhbmQgYSBzaW1wbGUganNhY3Rpb25cbiAgICogbmFtZS4gSWYgdGhlIG5hbWVzcGFjZSBpcyBhYnNlbnQsIGl0IGlzIHRha2VuIGZyb20gdGhlIGNsb3Nlc3RcbiAgICogYW5jZXN0b3IgZWxlbWVudCB3aXRoIGEganNuYW1lc3BhY2UgYXR0cmlidXRlLCBpZiB0aGVyZSBpc1xuICAgKiBhbnkuIElmIHRoZXJlIGlzIG5vIGFuY2VzdG9yIHdpdGggYSBqc25hbWVzcGFjZSBhdHRyaWJ1dGUsIHRoZVxuICAgKiBzaW1wbGUgbmFtZSBpcyBhc3N1bWVkIHRvIGJlIHRoZSBqc2FjdGlvbiBuYW1lLlxuICAgKlxuICAgKiBVc2VkIGJ5IEV2ZW50Q29udHJhY3QuXG4gICAqL1xuICBKU0FDVElPTiA9ICdqc2FjdGlvbicsXG5cbiAgLyoqXG4gICAqIFRoZSBqc25hbWVzcGFjZSBhdHRyaWJ1dGUgcHJvdmlkZXMgdGhlIG5hbWVzcGFjZSBwYXJ0IG9mIHRoZVxuICAgKiBqYWN0aW9uIG5hbWVzIG9jY3VycmluZyBpbiB0aGUganNhY3Rpb24gYXR0cmlidXRlIHdoZXJlIGl0J3NcbiAgICogbWlzc2luZy5cbiAgICpcbiAgICogVXNlZCBieSBFdmVudENvbnRyYWN0LlxuICAgKi9cbiAgSlNOQU1FU1BBQ0UgPSAnanNuYW1lc3BhY2UnLFxuXG4gIC8qKlxuICAgKiBUaGUgb2kgYXR0cmlidXRlIGlzIGEgbG9nIGltcHJlc3Npb24gdGFnIGZvciBpbXByZXNzaW9uIGxvZ2dpbmdcbiAgICogYW5kIGFjdGlvbiB0cmFja2luZy4gRm9yIGFuIGVsZW1lbnQgdGhhdCBjYXJyaWVzIGEganNhY3Rpb25cbiAgICogYXR0cmlidXRlLCB0aGUgZWxlbWVudCBpcyBpZGVudGlmaWVkIGZvciB0aGUgcHVycG9zZSBvZlxuICAgKiBpbXByZXNzaW9uIGxvZ2dpbmcgYW5kIGNsaWNrIHRyYWNraW5nIGJ5IHRoZSBkb3Qgc2VwYXJhdGVkIHBhdGhcbiAgICogb2YgYWxsIG9pIGF0dHJpYnV0ZXMgaW4gdGhlIGNoYWluIG9mIGFuY2VzdG9ycyBvZiB0aGUgZWxlbWVudC5cbiAgICpcbiAgICogVXNlZCBieSBBY3Rpb25GbG93LlxuICAgKi9cbiAgT0kgPSAnb2knLFxuXG4gIC8qKlxuICAgKiBUaGUgdmVkIGF0dHJpYnV0ZSBpcyBhbiBlbmNvZGVkIENsaWNrVHJhY2tpbmdDR0kgcHJvdG8gdG8gdHJhY2tcbiAgICogdmlzdWFsIGVsZW1lbnRzLlxuICAgKlxuICAgKiBVc2VkIGJ5IEFjdGlvbkZsb3cuXG4gICAqL1xuICBWRUQgPSAndmVkJyxcblxuICAvKipcbiAgICogVGhlIHZldCBhdHRyaWJ1dGUgaXMgdGhlIHZpc3VhbCBlbGVtZW50IHR5cGUgdXNlZCB0byBpZGVudGlmeSB0cmFja2VkXG4gICAqIHZpc3VhbCBlbGVtZW50cy5cbiAgICovXG4gIFZFVCA9ICd2ZXQnLFxuXG4gIC8qKlxuICAgKiBTdXBwb3J0IGZvciBpdGVyYXRpb24gb24gcmVwcm9jZXNzaW5nLlxuICAgKlxuICAgKiBVc2VkIGJ5IEFjdGlvbkZsb3cuXG4gICAqL1xuICBKU0lOU1RBTkNFID0gJ2pzaW5zdGFuY2UnLFxuXG4gIC8qKlxuICAgKiBBbGwgY2xpY2sganNhY3Rpb25zIHRoYXQgaGFwcGVuIG9uIHRoZSBlbGVtZW50IHRoYXQgY2FycmllcyB0aGlzXG4gICAqIGF0dHJpYnV0ZSBvciBpdHMgZGVzY2VuZGFudHMgYXJlIGF1dG9tYXRpY2FsbHkgbG9nZ2VkLlxuICAgKiBJbXByZXNzaW9ucyBvZiBqc2FjdGlvbnMgb24gdGhlc2UgZWxlbWVudHMgYXJlIHRyYWNrZWQgdG9vLCBpZlxuICAgKiByZXF1ZXN0ZWQgYnkgdGhlIGltcHJlc3Npb24oKSBtZXRob2Qgb2YgQWN0aW9uRmxvdy5cbiAgICpcbiAgICogVXNlZCBieSBBY3Rpb25GbG93LlxuICAgKi9cbiAgSlNUUkFDSyA9ICdqc3RyYWNrJyxcbn1cbiJdfQ==
@@ -0,0 +1,196 @@
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 { Attribute as AccessibilityAttribute } from './accessibility';
9
+ import * as eventLib from './event';
10
+ import { EventInfoWrapper } from './event_info';
11
+ import { EventType } from './event_type';
12
+ import { replayEvent } from './replay';
13
+ import { Restriction } from './restriction';
14
+ /**
15
+ * Receives a DOM event, determines the jsaction associated with the source
16
+ * element of the DOM event, and invokes the handler associated with the
17
+ * jsaction.
18
+ */
19
+ export class BaseDispatcher {
20
+ /**
21
+ * Options are:
22
+ * 1. `eventReplayer`: When the event contract dispatches replay events
23
+ * to the Dispatcher, the Dispatcher collects them and in the next tick
24
+ * dispatches them to the `eventReplayer`.
25
+ * @param dispatchDelegate A function that should handle dispatching an `EventInfoWrapper` to handlers.
26
+ */
27
+ constructor(dispatchDelegate, { eventReplayer = undefined } = {}) {
28
+ this.dispatchDelegate = dispatchDelegate;
29
+ /** The queue of events. */
30
+ this.queuedEventInfoWrappers = [];
31
+ /** Whether the event replay is scheduled. */
32
+ this.eventReplayScheduled = false;
33
+ this.eventReplayer = eventReplayer;
34
+ }
35
+ /**
36
+ * Receives an event or the event queue from the EventContract. The event
37
+ * queue is copied and it attempts to replay.
38
+ * If event info is passed in it looks for an action handler that can handle
39
+ * the given event. If there is no handler registered queues the event and
40
+ * checks if a loader is registered for the given namespace. If so, calls it.
41
+ *
42
+ * Alternatively, if in global dispatch mode, calls all registered global
43
+ * handlers for the appropriate event type.
44
+ *
45
+ * The three functionalities of this call are deliberately not split into
46
+ * three methods (and then declared as an abstract interface), because the
47
+ * interface is used by EventContract, which lives in a different jsbinary.
48
+ * Therefore the interface between the three is defined entirely in terms that
49
+ * are invariant under jscompiler processing (Function and Array, as opposed
50
+ * to a custom type with method names).
51
+ *
52
+ * @param eventInfo The info for the event that triggered this call or the
53
+ * queue of events from EventContract.
54
+ * @param isGlobalDispatch If true, dispatches a global event instead of a
55
+ * regular jsaction handler.
56
+ * @return An `EventInfo` for the `EventContract` to handle again if the
57
+ * `Dispatcher` tried to resolve an a11y event as a click but failed.
58
+ */
59
+ dispatch(eventInfo, isGlobalDispatch) {
60
+ const eventInfoWrapper = new EventInfoWrapper(eventInfo);
61
+ if (eventInfoWrapper.getIsReplay()) {
62
+ if (isGlobalDispatch || !this.eventReplayer) {
63
+ return;
64
+ }
65
+ const resolved = resolveA11yEvent(eventInfoWrapper, isGlobalDispatch);
66
+ if (!resolved) {
67
+ // Send the event back through the `EventContract` by dispatching to
68
+ // the browser.
69
+ replayEvent(eventInfoWrapper.getEvent(), eventInfoWrapper.getTargetElement(), eventInfoWrapper.getEventType());
70
+ return;
71
+ }
72
+ this.queueEventInfoWrapper(eventInfoWrapper);
73
+ this.scheduleEventReplay();
74
+ return;
75
+ }
76
+ const resolved = resolveA11yEvent(eventInfoWrapper, isGlobalDispatch);
77
+ if (!resolved) {
78
+ // Reset action information.
79
+ eventInfoWrapper.setAction(undefined);
80
+ return eventInfoWrapper.eventInfo;
81
+ }
82
+ this.dispatchDelegate(eventInfoWrapper, isGlobalDispatch);
83
+ }
84
+ /** Queue an `EventInfoWrapper` for replay. */
85
+ queueEventInfoWrapper(eventInfoWrapper) {
86
+ this.queuedEventInfoWrappers.push(eventInfoWrapper);
87
+ }
88
+ /**
89
+ * Replays queued events, if any. The replaying will happen in its own
90
+ * stack once the current flow cedes control. This is done to mimic
91
+ * browser event handling.
92
+ */
93
+ scheduleEventReplay() {
94
+ if (this.eventReplayScheduled ||
95
+ !this.eventReplayer ||
96
+ this.queuedEventInfoWrappers.length === 0) {
97
+ return;
98
+ }
99
+ this.eventReplayScheduled = true;
100
+ Promise.resolve().then(() => {
101
+ this.eventReplayScheduled = false;
102
+ this.eventReplayer(this.queuedEventInfoWrappers);
103
+ });
104
+ }
105
+ }
106
+ /**
107
+ * If a 'MAYBE_CLICK_EVENT_TYPE' event was dispatched, updates the eventType
108
+ * to either click or keydown based on whether the keydown action can be
109
+ * treated as a click. For MAYBE_CLICK_EVENT_TYPE events that are just
110
+ * keydowns, we set flags on the event object so that the event contract
111
+ * does't try to dispatch it as a MAYBE_CLICK_EVENT_TYPE again.
112
+ *
113
+ * @param isGlobalDispatch Whether the eventInfo is meant to be dispatched to
114
+ * the global handlers.
115
+ * @return Returns false if the a11y event could not be resolved and should
116
+ * be re-dispatched.
117
+ */
118
+ function resolveA11yEvent(eventInfoWrapper, isGlobalDispatch = false) {
119
+ if (eventInfoWrapper.getEventType() !== AccessibilityAttribute.MAYBE_CLICK_EVENT_TYPE) {
120
+ return true;
121
+ }
122
+ if (isA11yClickEvent(eventInfoWrapper, isGlobalDispatch)) {
123
+ if (shouldPreventDefault(eventInfoWrapper)) {
124
+ eventLib.preventDefault(eventInfoWrapper.getEvent());
125
+ }
126
+ // If the keydown event can be treated as a click, we change the eventType
127
+ // to 'click' so that the dispatcher can retrieve the right handler for
128
+ // it. Even though EventInfo['action'] corresponds to the click action,
129
+ // the global handler and any custom 'getHandler' implementations may rely
130
+ // on the eventType instead.
131
+ eventInfoWrapper.setEventType(EventType.CLICK);
132
+ }
133
+ else {
134
+ // Otherwise, if the keydown can't be treated as a click, we need to
135
+ // retrigger it because now we need to look for 'keydown' actions instead.
136
+ eventInfoWrapper.setEventType(EventType.KEYDOWN);
137
+ if (!isGlobalDispatch) {
138
+ // This prevents the event contract from setting the
139
+ // AccessibilityAttribute.MAYBE_CLICK_EVENT_TYPE type for Keydown
140
+ // events.
141
+ eventInfoWrapper.getEvent()[AccessibilityAttribute.SKIP_A11Y_CHECK] = true;
142
+ // Since globally dispatched events will get handled by the dispatcher,
143
+ // don't have the event contract dispatch it again.
144
+ eventInfoWrapper.getEvent()[AccessibilityAttribute.SKIP_GLOBAL_DISPATCH] = true;
145
+ return false;
146
+ }
147
+ }
148
+ return true;
149
+ }
150
+ /**
151
+ * Returns true if the default action for this event should be prevented
152
+ * before the event handler is envoked.
153
+ */
154
+ function shouldPreventDefault(eventInfoWrapper) {
155
+ const actionElement = eventInfoWrapper.getAction()?.element;
156
+ // For parity with no-a11y-support behavior.
157
+ if (!actionElement) {
158
+ return false;
159
+ }
160
+ // Prevent scrolling if the Space key was pressed
161
+ if (eventLib.isSpaceKeyEvent(eventInfoWrapper.getEvent())) {
162
+ return true;
163
+ }
164
+ // or prevent the browser's default action for native HTML controls.
165
+ if (eventLib.shouldCallPreventDefaultOnNativeHtmlControl(eventInfoWrapper.getEvent())) {
166
+ return true;
167
+ }
168
+ // Prevent browser from following <a> node links if a jsaction is present
169
+ // and we are dispatching the action now. Note that the targetElement may be
170
+ // a child of an anchor that has a jsaction attached. For that reason, we
171
+ // need to check the actionElement rather than the targetElement.
172
+ if (actionElement.tagName === 'A') {
173
+ return true;
174
+ }
175
+ return false;
176
+ }
177
+ /**
178
+ * Returns true if the given key event can be treated as a 'click'.
179
+ *
180
+ * @param isGlobalDispatch Whether the eventInfo is meant to be dispatched to
181
+ * the global handlers.
182
+ */
183
+ function isA11yClickEvent(eventInfoWrapper, isGlobalDispatch) {
184
+ return ((isGlobalDispatch || eventInfoWrapper.getAction() !== undefined) &&
185
+ eventLib.isActionKeyEvent(eventInfoWrapper.getEvent()));
186
+ }
187
+ /**
188
+ * Registers deferred functionality for an EventContract and a Jsaction
189
+ * Dispatcher.
190
+ */
191
+ export function registerDispatcher(eventContract, dispatcher) {
192
+ eventContract.ecrd((eventInfo, globalDispatch) => {
193
+ return dispatcher.dispatch(eventInfo, globalDispatch);
194
+ }, Restriction.I_AM_THE_JSACTION_FRAMEWORK);
195
+ }
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV9kaXNwYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9wcmltaXRpdmVzL2V2ZW50LWRpc3BhdGNoL3NyYy9iYXNlX2Rpc3BhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLFNBQVMsSUFBSSxzQkFBc0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3BFLE9BQU8sS0FBSyxRQUFRLE1BQU0sU0FBUyxDQUFDO0FBQ3BDLE9BQU8sRUFBWSxnQkFBZ0IsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN6RCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRXZDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDckMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQVUxQzs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFRekI7Ozs7OztPQU1HO0lBQ0gsWUFDbUIsZ0JBR1IsRUFDVCxFQUFDLGFBQWEsR0FBRyxTQUFTLEtBQWdDLEVBQUU7UUFKM0MscUJBQWdCLEdBQWhCLGdCQUFnQixDQUd4QjtRQWxCWCwyQkFBMkI7UUFDViw0QkFBdUIsR0FBdUIsRUFBRSxDQUFDO1FBR2xFLDZDQUE2QztRQUNyQyx5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFnQm5DLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F1Qkc7SUFDSCxRQUFRLENBQUMsU0FBb0IsRUFBRSxnQkFBMEI7UUFDdkQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pELElBQUksZ0JBQWdCLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUNuQyxJQUFJLGdCQUFnQixJ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Z0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FDdkQsQ0FBQztBQUNKLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLGFBQXFDLEVBQ3JDLFVBQTBCO0lBRTFCLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFvQixFQUFFLGNBQXdCLEVBQUUsRUFBRTtRQUNwRSxPQUFPLFVBQVUsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3hELENBQUMsRUFBRSxXQUFXLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7QXR0cmlidXRlIGFzIEFjY2Vzc2liaWxpdHlBdHRyaWJ1dGV9IGZyb20gJy4vYWNjZXNzaWJpbGl0eSc7XG5pbXBvcnQgKiBhcyBldmVudExpYiBmcm9tICcuL2V2ZW50JztcbmltcG9ydCB7RXZlbnRJbmZvLCBFdmVudEluZm9XcmFwcGVyfSBmcm9tICcuL2V2ZW50X2luZm8nO1xuaW1wb3J0IHtFdmVudFR5cGV9IGZyb20gJy4vZXZlbnRfdHlwZSc7XG5pbXBvcnQge1VucmVuYW1lZEV2ZW50Q29udHJhY3R9IGZyb20gJy4vZXZlbnRjb250cmFjdCc7XG5pbXBvcnQge3JlcGxheUV2ZW50fSBmcm9tICcuL3JlcGxheSc7XG5pbXBvcnQge1Jlc3RyaWN0aW9ufSBmcm9tICcuL3Jlc3RyaWN0aW9uJztcbi8qKlxuICogQSByZXBsYXllciBpcyBhIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIHF1ZXVlZCBldmVudHMsXG4gKiBlaXRoZXIgZnJvbSB0aGUgYEV2ZW50Q29udHJhY3RgIG9yIHdoZW4gdGhlcmUgYXJlIG5vIGRldGVjdGVkIGhhbmRsZXJzLlxuICovXG5leHBvcnQgdHlwZSBSZXBsYXllciA9IChldmVudEluZm9XcmFwcGVyczogRXZlbnRJbmZvV3JhcHBlcltdKSA9PiB2b2lkO1xuLyoqXG4gKiBBIGhhbmRsZXIgaXMgZGlzcGF0Y2hlZCB0byBkdXJpbmcgbm9ybWFsIGhhbmRsaW5nLlxuICovXG5leHBvcnQgdHlwZSBFdmVudEluZm9XcmFwcGVySGFuZGxlciA9IChldmVudEluZm9XcmFwcGVyOiBFdmVudEluZm9XcmFwcGVyKSA9PiB2b2lkO1xuLyoqXG4gKiBSZWNlaXZlcyBhIERPTSBldmVudCwgZGV0ZXJtaW5lcyB0aGUganNhY3Rpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBzb3VyY2VcbiAqIGVsZW1lbnQgb2YgdGhlIERPTSBldmVudCwgYW5kIGludm9rZXMgdGhlIGhhbmRsZXIgYXNzb2NpYXRlZCB3aXRoIHRoZVxuICoganNhY3Rpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBCYXNlRGlzcGF0Y2hlciB7XG4gIC8qKiBUaGUgcXVldWUgb2YgZXZlbnRzLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHF1ZXVlZEV2ZW50SW5mb1dyYXBwZXJzOiBFdmVudEluZm9XcmFwcGVyW10gPSBbXTtcbiAgLyoqIFRoZSByZXBsYXllciBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGVyZSBhcmUgcXVldWVkIGV2ZW50cy4gKi9cbiAgcHJpdmF0ZSBldmVudFJlcGxheWVyPzogUmVwbGF5ZXI7XG4gIC8qKiBXaGV0aGVyIHRoZSBldmVudCByZXBsYXkgaXMgc2NoZWR1bGVkLiAqL1xuICBwcml2YXRlIGV2ZW50UmVwbGF5U2NoZWR1bGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgYXJlOlxuICAgKiAgIDEuIGBldmVudFJlcGxheWVyYDogV2hlbiB0aGUgZXZlbnQgY29udHJhY3QgZGlzcGF0Y2hlcyByZXBsYXkgZXZlbnRzXG4gICAqICAgICAgdG8gdGhlIERpc3BhdGNoZXIsIHRoZSBEaXNwYXRjaGVyIGNvbGxlY3RzIHRoZW0gYW5kIGluIHRoZSBuZXh0IHRpY2tcbiAgICogICAgICBkaXNwYXRjaGVzIHRoZW0gdG8gdGhlIGBldmVudFJlcGxheWVyYC5cbiAgICogQHBhcmFtIGRpc3BhdGNoRGVsZWdhdGUgQSBmdW5jdGlvbiB0aGF0IHNob3VsZCBoYW5kbGUgZGlzcGF0Y2hpbmcgYW4gYEV2ZW50SW5mb1dyYXBwZXJgIHRvIGhhbmRsZXJzLlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaXNwYXRjaERlbGVnYXRlOiAoXG4gICAgICBldmVudEluZm9XcmFwcGVyOiBFdmVudEluZm9XcmFwcGVyLFxuICAgICAgaXNHbG9iYWxEaXNwYXRjaD86IGJvb2xlYW4sXG4gICAgKSA9PiB2b2lkLFxuICAgIHtldmVudFJlcGxheWVyID0gdW5kZWZpbmVkfToge2V2ZW50UmVwbGF5ZXI/OiBSZXBsYXllcn0gPSB7fSxcbiAgKSB7XG4gICAgdGhpcy5ldmVudFJlcGxheWVyID0gZXZlbnRSZXBsYXllcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNlaXZlcyBhbiBldmVudCBvciB0aGUgZXZlbnQgcXVldWUgZnJvbSB0aGUgRXZlbnRDb250cmFjdC4gVGhlIGV2ZW50XG4gICAqIHF1ZXVlIGlzIGNvcGllZCBhbmQgaXQgYXR0ZW1wdHMgdG8gcmVwbGF5LlxuICAgKiBJZiBldmVudCBpbmZvIGlzIHBhc3NlZCBpbiBpdCBsb29rcyBmb3IgYW4gYWN0aW9uIGhhbmRsZXIgdGhhdCBjYW4gaGFuZGxlXG4gICAqIHRoZSBnaXZlbiBldmVudC4gIElmIHRoZXJlIGlzIG5vIGhhbmRsZXIgcmVnaXN0ZXJlZCBxdWV1ZXMgdGhlIGV2ZW50IGFuZFxuICAgKiBjaGVja3MgaWYgYSBsb2FkZXIgaXMgcmVnaXN0ZXJlZCBmb3IgdGhlIGdpdmVuIG5hbWVzcGFjZS4gSWYgc28sIGNhbGxzIGl0LlxuICAgKlxuICAgKiBBbHRlcm5hdGl2ZWx5LCBpZiBpbiBnbG9iYWwgZGlzcGF0Y2ggbW9kZSwgY2FsbHMgYWxsIHJlZ2lzdGVyZWQgZ2xvYmFsXG4gICAqIGhhbmRsZXJzIGZvciB0aGUgYXBwcm9wcmlhdGUgZXZlbnQgdHlwZS5cbiAgICpcbiAgICogVGhlIHRocmVlIGZ1bmN0aW9uYWxpdGllcyBvZiB0aGlzIGNhbGwgYXJlIGRlbGliZXJhdGVseSBub3Qgc3BsaXQgaW50b1xuICAgKiB0aHJlZSBtZXRob2RzIChhbmQgdGhlbiBkZWNsYXJlZCBhcyBhbiBhYnN0cmFjdCBpbnRlcmZhY2UpLCBiZWNhdXNlIHRoZVxuICAgKiBpbnRlcmZhY2UgaXMgdXNlZCBieSBFdmVudENvbnRyYWN0LCB3aGljaCBsaXZlcyBpbiBhIGRpZmZlcmVudCBqc2JpbmFyeS5cbiAgICogVGhlcmVmb3JlIHRoZSBpbnRlcmZhY2UgYmV0d2VlbiB0aGUgdGhyZWUgaXMgZGVmaW5lZCBlbnRpcmVseSBpbiB0ZXJtcyB0aGF0XG4gICAqIGFyZSBpbnZhcmlhbnQgdW5kZXIganNjb21waWxlciBwcm9jZXNzaW5nIChGdW5jdGlvbiBhbmQgQXJyYXksIGFzIG9wcG9zZWRcbiAgICogdG8gYSBjdXN0b20gdHlwZSB3aXRoIG1ldGhvZCBuYW1lcykuXG4gICAqXG4gICAqIEBwYXJhbSBldmVudEluZm8gVGhlIGluZm8gZm9yIHRoZSBldmVudCB0aGF0IHRyaWdnZXJlZCB0aGlzIGNhbGwgb3IgdGhlXG4gICAqICAgICBxdWV1ZSBvZiBldmVudHMgZnJvbSBFdmVudENvbnRyYWN0LlxuICAgKiBAcGFyYW0gaXNHbG9iYWxEaXNwYXRjaCBJZiB0cnVlLCBkaXNwYXRjaGVzIGEgZ2xvYmFsIGV2ZW50IGluc3RlYWQgb2YgYVxuICAgKiAgICAgcmVndWxhciBqc2FjdGlvbiBoYW5kbGVyLlxuICAgKiBAcmV0dXJuIEFuIGBFdmVudEluZm9gIGZvciB0aGUgYEV2ZW50Q29udHJhY3RgIHRvIGhhbmRsZSBhZ2FpbiBpZiB0aGVcbiAgICogICAgYERpc3BhdGNoZXJgIHRyaWVkIHRvIHJlc29sdmUgYW4gYTExeSBldmVudCBhcyBhIGNsaWNrIGJ1dCBmYWlsZWQuXG4gICAqL1xuICBkaXNwYXRjaChldmVudEluZm86IEV2ZW50SW5mbywgaXNHbG9iYWxEaXNwYXRjaD86IGJvb2xlYW4pOiBFdmVudEluZm8gfCB2b2lkIHtcbiAgICBjb25zdCBldmVudEluZm9XcmFwcGVyID0gbmV3IEV2ZW50SW5mb1dyYXBwZXIoZXZlbnRJbmZvKTtcbiAgICBpZiAoZXZlbnRJbmZvV3JhcHBlci5nZXRJc1JlcGxheSgpKSB7XG4gICAgICBpZiAoaXNHbG9iYWxEaXNwYXRjaCB8fCAhdGhpcy5ldmVudFJlcGxheWVyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZUExMXlFdmVudChldmVudEluZm9XcmFwcGVyLCBpc0dsb2JhbERpc3BhdGNoKTtcbiAgICAgIGlmICghcmVzb2x2ZWQpIHtcbiAgICAgICAgLy8gU2VuZCB0aGUgZXZlbnQgYmFjayB0aHJvdWdoIHRoZSBgRXZlbnRDb250cmFjdGAgYnkgZGlzcGF0Y2hpbmcgdG9cbiAgICAgICAgLy8gdGhlIGJyb3dzZXIuXG4gICAgICAgIHJlcGxheUV2ZW50KFxuICAgICAgICAgIGV2ZW50SW5mb1dyYXBwZXIuZ2V0RXZlbnQoKSxcbiAgICAgICAgICBldmVudEluZm9XcmFwcGVyLmdldFRhcmdldEVsZW1lbnQoKSxcbiAgICAgICAgICBldmVudEluZm9XcmFwcGVyLmdldEV2ZW50VHlwZSgpLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnF1ZXVlRXZlbnRJbmZvV3JhcHBlcihldmVudEluZm9XcmFwcGVyKTtcbiAgICAgIHRoaXMuc2NoZWR1bGVFdmVudFJlcGxheSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVBMTF5RXZlbnQoZXZlbnRJbmZvV3JhcHBlciwgaXNHbG9iYWxEaXNwYXRjaCk7XG4gICAgaWYgKCFyZXNvbHZlZCkge1xuICAgICAgLy8gUmVzZXQgYWN0aW9uIGluZm9ybWF0aW9uLlxuICAgICAgZXZlbnRJbmZvV3JhcHBlci5zZXRBY3Rpb24odW5kZWZpbmVkKTtcbiAgICAgIHJldHVybiBldmVudEluZm9XcmFwcGVyLmV2ZW50SW5mbztcbiAgICB9XG4gICAgdGhpcy5kaXNwYXRjaERlbGVnYXRlKGV2ZW50SW5mb1dyYXBwZXIsIGlzR2xvYmFsRGlzcGF0Y2gpO1xuICB9XG5cbiAgLyoqIFF1ZXVlIGFuIGBFdmVudEluZm9XcmFwcGVyYCBmb3IgcmVwbGF5LiAqL1xuICBxdWV1ZUV2ZW50SW5mb1dyYXBwZXIoZXZlbnRJbmZvV3JhcHBlcjogRXZlbnRJbmZvV3JhcHBlcikge1xuICAgIHRoaXMucXVldWVkRXZlbnRJbmZvV3JhcHBlcnMucHVzaChldmVudEluZm9XcmFwcGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYXlzIHF1ZXVlZCBldmVudHMsIGlmIGFueS4gVGhlIHJlcGxheWluZyB3aWxsIGhhcHBlbiBpbiBpdHMgb3duXG4gICAqIHN0YWNrIG9uY2UgdGhlIGN1cnJlbnQgZmxvdyBjZWRlcyBjb250cm9sLiBUaGlzIGlzIGRvbmUgdG8gbWltaWNcbiAgICogYnJvd3NlciBldmVudCBoYW5kbGluZy5cbiAgICovXG4gIHNjaGVkdWxlRXZlbnRSZXBsYXkoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5ldmVudFJlcGxheVNjaGVkdWxlZCB8fFxuICAgICAgIXRoaXMuZXZlbnRSZXBsYXllciB8fFxuICAgICAgdGhpcy5xdWV1ZWRFdmVudEluZm9XcmFwcGVycy5sZW5ndGggPT09IDBcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5ldmVudFJlcGxheVNjaGVkdWxlZCA9IHRydWU7XG4gICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLmV2ZW50UmVwbGF5U2NoZWR1bGVkID0gZmFsc2U7XG4gICAgICB0aGlzLmV2ZW50UmVwbGF5ZXIhKHRoaXMucXVldWVkRXZlbnRJbmZvV3JhcHBlcnMpO1xuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogSWYgYSAnTUFZQkVfQ0xJQ0tfRVZFTlRfVFlQRScgZXZlbnQgd2FzIGRpc3BhdGNoZWQsIHVwZGF0ZXMgdGhlIGV2ZW50VHlwZVxuICogdG8gZWl0aGVyIGNsaWNrIG9yIGtleWRvd24gYmFzZWQgb24gd2hldGhlciB0aGUga2V5ZG93biBhY3Rpb24gY2FuIGJlXG4gKiB0cmVhdGVkIGFzIGEgY2xpY2suIEZvciBNQVlCRV9DTElDS19FVkVOVF9UWVBFIGV2ZW50cyB0aGF0IGFyZSBqdXN0XG4gKiBrZXlkb3ducywgd2Ugc2V0IGZsYWdzIG9uIHRoZSBldmVudCBvYmplY3Qgc28gdGhhdCB0aGUgZXZlbnQgY29udHJhY3RcbiAqIGRvZXMndCB0cnkgdG8gZGlzcGF0Y2ggaXQgYXMgYSBNQVlCRV9DTElDS19FVkVOVF9UWVBFIGFnYWluLlxuICpcbiAqIEBwYXJhbSBpc0dsb2JhbERpc3BhdGNoIFdoZXRoZXIgdGhlIGV2ZW50SW5mbyBpcyBtZWFudCB0byBiZSBkaXNwYXRjaGVkIHRvXG4gKiAgICAgdGhlIGdsb2JhbCBoYW5kbGVycy5cbiAqIEByZXR1cm4gUmV0dXJucyBmYWxzZSBpZiB0aGUgYTExeSBldmVudCBjb3VsZCBub3QgYmUgcmVzb2x2ZWQgYW5kIHNob3VsZFxuICogICAgYmUgcmUtZGlzcGF0Y2hlZC5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUExMXlFdmVudChldmVudEluZm9XcmFwcGVyOiBFdmVudEluZm9XcmFwcGVyLCBpc0dsb2JhbERpc3BhdGNoID0gZmFsc2UpOiBib29sZWFuIHtcbiAgaWYgKGV2ZW50SW5mb1dyYXBwZXIuZ2V0RXZlbnRUeXBlKCkgIT09IEFjY2Vzc2liaWxpdHlBdHRyaWJ1dGUuTUFZQkVfQ0xJQ0tfRVZFTlRfVFlQRSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChpc0ExMXlDbGlja0V2ZW50KGV2ZW50SW5mb1dyYXBwZXIsIGlzR2xvYmFsRGlzcGF0Y2gpKSB7XG4gICAgaWYgKHNob3VsZFByZXZlbnREZWZhdWx0KGV2ZW50SW5mb1dyYXBwZXIpKSB7XG4gICAgICBldmVudExpYi5wcmV2ZW50RGVmYXVsdChldmVudEluZm9XcmFwcGVyLmdldEV2ZW50KCkpO1xuICAgIH1cbiAgICAvLyBJZiB0aGUga2V5ZG93biBldmVudCBjYW4gYmUgdHJlYXRlZCBhcyBhIGNsaWNrLCB3ZSBjaGFuZ2UgdGhlIGV2ZW50VHlwZVxuICAgIC8vIHRvICdjbGljaycgc28gdGhhdCB0aGUgZGlzcGF0Y2hlciBjYW4gcmV0cmlldmUgdGhlIHJpZ2h0IGhhbmRsZXIgZm9yXG4gICAgLy8gaXQuIEV2ZW4gdGhvdWdoIEV2ZW50SW5mb1snYWN0aW9uJ10gY29ycmVzcG9uZHMgdG8gdGhlIGNsaWNrIGFjdGlvbixcbiAgICAvLyB0aGUgZ2xvYmFsIGhhbmRsZXIgYW5kIGFueSBjdXN0b20gJ2dldEhhbmRsZXInIGltcGxlbWVudGF0aW9ucyBtYXkgcmVseVxuICAgIC8vIG9uIHRoZSBldmVudFR5cGUgaW5zdGVhZC5cbiAgICBldmVudEluZm9XcmFwcGVyLnNldEV2ZW50VHlwZShFdmVudFR5cGUuQ0xJQ0spO1xuICB9IGVsc2Uge1xuICAgIC8vIE90aGVyd2lzZSwgaWYgdGhlIGtleWRvd24gY2FuJ3QgYmUgdHJlYXRlZCBhcyBhIGNsaWNrLCB3ZSBuZWVkIHRvXG4gICAgLy8gcmV0cmlnZ2VyIGl0IGJlY2F1c2Ugbm93IHdlIG5lZWQgdG8gbG9vayBmb3IgJ2tleWRvd24nIGFjdGlvbnMgaW5zdGVhZC5cbiAgICBldmVudEluZm9XcmFwcGVyLnNldEV2ZW50VHlwZShFdmVudFR5cGUuS0VZRE9XTik7XG4gICAgaWYgKCFpc0dsb2JhbERpc3BhdGNoKSB7XG4gICAgICAvLyBUaGlzIHByZXZlbnRzIHRoZSBldmVudCBjb250cmFjdCBmcm9tIHNldHRpbmcgdGhlXG4gICAgICAvLyBBY2Nlc3NpYmlsaXR5QXR0cmlidXRlLk1BWUJFX0NMSUNLX0VWRU5UX1RZUEUgdHlwZSBmb3IgS2V5ZG93blxuICAgICAgLy8gZXZlbnRzLlxuICAgICAgZXZlbnRJbmZvV3JhcHBlci5nZXRFdmVudCgpW0FjY2Vzc2liaWxpdHlBdHRyaWJ1dGUuU0tJUF9BMTFZX0NIRUNLXSA9IHRydWU7XG4gICAgICAvLyBTaW5jZSBnbG9iYWxseSBkaXNwYXRjaGVkIGV2ZW50cyB3aWxsIGdldCBoYW5kbGVkIGJ5IHRoZSBkaXNwYXRjaGVyLFxuICAgICAgLy8gZG9uJ3QgaGF2ZSB0aGUgZXZlbnQgY29udHJhY3QgZGlzcGF0Y2ggaXQgYWdhaW4uXG4gICAgICBldmVudEluZm9XcmFwcGVyLmdldEV2ZW50KClbQWNjZXNzaWJpbGl0eUF0dHJpYnV0ZS5TS0lQX0dMT0JBTF9ESVNQQVRDSF0gPSB0cnVlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGRlZmF1bHQgYWN0aW9uIGZvciB0aGlzIGV2ZW50IHNob3VsZCBiZSBwcmV2ZW50ZWRcbiAqIGJlZm9yZSB0aGUgZXZlbnQgaGFuZGxlciBpcyBlbnZva2VkLlxuICovXG5mdW5jdGlvbiBzaG91bGRQcmV2ZW50RGVmYXVsdChldmVudEluZm9XcmFwcGVyOiBFdmVudEluZm9XcmFwcGVyKTogYm9vbGVhbiB7XG4gIGNvbnN0IGFjdGlvbkVsZW1lbnQgPSBldmVudEluZm9XcmFwcGVyLmdldEFjdGlvbigpPy5lbGVtZW50O1xuICAvLyBGb3IgcGFyaXR5IHdpdGggbm8tYTExeS1zdXBwb3J0IGJlaGF2aW9yLlxuICBpZiAoIWFjdGlvbkVsZW1lbnQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gUHJldmVudCBzY3JvbGxpbmcgaWYgdGhlIFNwYWNlIGtleSB3YXMgcHJlc3NlZFxuICBpZiAoZXZlbnRMaWIuaXNTcGFjZUtleUV2ZW50KGV2ZW50SW5mb1dyYXBwZXIuZ2V0RXZlbnQoKSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICAvLyBvciBwcmV2ZW50IHRoZSBicm93c2VyJ3MgZGVmYXVsdCBhY3Rpb24gZm9yIG5hdGl2ZSBIVE1MIGNvbnRyb2xzLlxuICBpZiAoZXZlbnRMaWIuc2hvdWxkQ2FsbFByZXZlbnREZWZhdWx0T25OYXRpdmVIdG1sQ29udHJvbChldmVudEluZm9XcmFwcGVyLmdldEV2ZW50KCkpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLy8gUHJldmVudCBicm93c2VyIGZyb20gZm9sbG93aW5nIDxhPiBub2RlIGxpbmtzIGlmIGEganNhY3Rpb24gaXMgcHJlc2VudFxuICAvLyBhbmQgd2UgYXJlIGRpc3BhdGNoaW5nIHRoZSBhY3Rpb24gbm93LiBOb3RlIHRoYXQgdGhlIHRhcmdldEVsZW1lbnQgbWF5IGJlXG4gIC8vIGEgY2hpbGQgb2YgYW4gYW5jaG9yIHRoYXQgaGFzIGEganNhY3Rpb24gYXR0YWNoZWQuIEZvciB0aGF0IHJlYXNvbiwgd2VcbiAgLy8gbmVlZCB0byBjaGVjayB0aGUgYWN0aW9uRWxlbWVudCByYXRoZXIgdGhhbiB0aGUgdGFyZ2V0RWxlbWVudC5cbiAgaWYgKGFjdGlvbkVsZW1lbnQudGFnTmFtZSA9PT0gJ0EnKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4ga2V5IGV2ZW50IGNhbiBiZSB0cmVhdGVkIGFzIGEgJ2NsaWNrJy5cbiAqXG4gKiBAcGFyYW0gaXNHbG9iYWxEaXNwYXRjaCBXaGV0aGVyIHRoZSBldmVudEluZm8gaXMgbWVhbnQgdG8gYmUgZGlzcGF0Y2hlZCB0b1xuICogICAgIHRoZSBnbG9iYWwgaGFuZGxlcnMuXG4gKi9cbmZ1bmN0aW9uIGlzQTExeUNsaWNrRXZlbnQoZXZlbnRJbmZvV3JhcHBlcjogRXZlbnRJbmZvV3JhcHBlciwgaXNHbG9iYWxEaXNwYXRjaD86IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICAoaXNHbG9iYWxEaXNwYXRjaCB8fCBldmVudEluZm9XcmFwcGVyLmdldEFjdGlvbigpICE9PSB1bmRlZmluZWQpICYmXG4gICAgZXZlbnRMaWIuaXNBY3Rpb25LZXlFdmVudChldmVudEluZm9XcmFwcGVyLmdldEV2ZW50KCkpXG4gICk7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIGRlZmVycmVkIGZ1bmN0aW9uYWxpdHkgZm9yIGFuIEV2ZW50Q29udHJhY3QgYW5kIGEgSnNhY3Rpb25cbiAqIERpc3BhdGNoZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckRpc3BhdGNoZXIoXG4gIGV2ZW50Q29udHJhY3Q6IFVucmVuYW1lZEV2ZW50Q29udHJhY3QsXG4gIGRpc3BhdGNoZXI6IEJhc2VEaXNwYXRjaGVyLFxuKSB7XG4gIGV2ZW50Q29udHJhY3QuZWNyZCgoZXZlbnRJbmZvOiBFdmVudEluZm8sIGdsb2JhbERpc3BhdGNoPzogYm9vbGVhbikgPT4ge1xuICAgIHJldHVybiBkaXNwYXRjaGVyLmRpc3BhdGNoKGV2ZW50SW5mbywgZ2xvYmFsRGlzcGF0Y2gpO1xuICB9LCBSZXN0cmljdGlvbi5JX0FNX1RIRV9KU0FDVElPTl9GUkFNRVdPUkspO1xufVxuIl19
@@ -0,0 +1,95 @@
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 { Property } from './property';
9
+ /**
10
+ * Map from jsaction annotation to a parsed map from event name to action name.
11
+ */
12
+ const parseCache = {};
13
+ /**
14
+ * Reads the jsaction parser cache from the given DOM Element.
15
+ *
16
+ * @param element .
17
+ * @return Map from event to qualified name of the jsaction bound to it.
18
+ */
19
+ export function get(element) {
20
+ // @ts-ignore
21
+ return element[Property.JSACTION];
22
+ }
23
+ /**
24
+ * Writes the jsaction parser cache to the given DOM Element.
25
+ *
26
+ * @param element .
27
+ * @param actionMap Map from event to qualified name of the jsaction bound to
28
+ * it.
29
+ */
30
+ export function set(element, actionMap) {
31
+ // @ts-ignore
32
+ element[Property.JSACTION] = actionMap;
33
+ }
34
+ /**
35
+ * Looks up the parsed action map from the source jsaction attribute value.
36
+ *
37
+ * @param text Unparsed jsaction attribute value.
38
+ * @return Parsed jsaction attribute value, if already present in the cache.
39
+ */
40
+ export function getParsed(text) {
41
+ return parseCache[text];
42
+ }
43
+ /**
44
+ * Inserts the parse result for the given source jsaction value into the cache.
45
+ *
46
+ * @param text Unparsed jsaction attribute value.
47
+ * @param parsed Attribute value parsed into the action map.
48
+ */
49
+ export function setParsed(text, parsed) {
50
+ parseCache[text] = parsed;
51
+ }
52
+ /**
53
+ * Clears the jsaction parser cache from the given DOM Element.
54
+ *
55
+ * @param element .
56
+ */
57
+ export function clear(element) {
58
+ if (Property.JSACTION in element) {
59
+ delete element[Property.JSACTION];
60
+ }
61
+ }
62
+ /**
63
+ * Reads the cached jsaction namespace from the given DOM
64
+ * Element. Undefined means there is no cached value; null is a cached
65
+ * jsnamespace attribute that's absent.
66
+ *
67
+ * @param element .
68
+ * @return .
69
+ */
70
+ export function getNamespace(element) {
71
+ // @ts-ignore
72
+ return element[Property.JSNAMESPACE];
73
+ }
74
+ /**
75
+ * Writes the cached jsaction namespace to the given DOM Element. Null
76
+ * represents a jsnamespace attribute that's absent.
77
+ *
78
+ * @param element .
79
+ * @param jsnamespace .
80
+ */
81
+ export function setNamespace(element, jsnamespace) {
82
+ // @ts-ignore
83
+ element[Property.JSNAMESPACE] = jsnamespace;
84
+ }
85
+ /**
86
+ * Clears the cached jsaction namespace from the given DOM Element.
87
+ *
88
+ * @param element .
89
+ */
90
+ export function clearNamespace(element) {
91
+ if (Property.JSNAMESPACE in element) {
92
+ delete element[Property.JSNAMESPACE];
93
+ }
94
+ }
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3ByaW1pdGl2ZXMvZXZlbnQtZGlzcGF0Y2gvc3JjL2NhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFFcEM7O0dBRUc7QUFDSCxNQUFNLFVBQVUsR0FBNkMsRUFBRSxDQUFDO0FBRWhFOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLEdBQUcsQ0FBQyxPQUFnQjtJQUNsQyxhQUFhO0lBQ2IsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQWdCLEVBQUUsU0FBa0M7SUFDdEUsYUFBYTtJQUNiLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUMsSUFBWTtJQUNwQyxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxQixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLElBQVksRUFBRSxNQUErQjtJQUNyRSxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQzVCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FBQyxPQUFnQjtJQUNwQyxJQUFJLFFBQVEsQ0FBQyxRQUFRLElBQUksT0FBTyxFQUFFLENBQUM7UUFDakMsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsT0FBZ0I7SUFDM0MsYUFBYTtJQUNiLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN2QyxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUFnQixFQUFFLFdBQTBCO0lBQ3ZFLGFBQWE7SUFDYixPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFdBQVcsQ0FBQztBQUM5QyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBZ0I7SUFDN0MsSUFBSSxRQUFRLENBQUMsV0FBVyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3BDLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2QyxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1Byb3BlcnR5fSBmcm9tICcuL3Byb3BlcnR5JztcblxuLyoqXG4gKiBNYXAgZnJvbSBqc2FjdGlvbiBhbm5vdGF0aW9uIHRvIGEgcGFyc2VkIG1hcCBmcm9tIGV2ZW50IG5hbWUgdG8gYWN0aW9uIG5hbWUuXG4gKi9cbmNvbnN0IHBhcnNlQ2FjaGU6IHtba2V5OiBzdHJpbmddOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfX0gPSB7fTtcblxuLyoqXG4gKiBSZWFkcyB0aGUganNhY3Rpb24gcGFyc2VyIGNhY2hlIGZyb20gdGhlIGdpdmVuIERPTSBFbGVtZW50LlxuICpcbiAqIEBwYXJhbSBlbGVtZW50IC5cbiAqIEByZXR1cm4gTWFwIGZyb20gZXZlbnQgdG8gcXVhbGlmaWVkIG5hbWUgb2YgdGhlIGpzYWN0aW9uIGJvdW5kIHRvIGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0KGVsZW1lbnQ6IEVsZW1lbnQpOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSB7XG4gIC8vIEB0cy1pZ25vcmVcbiAgcmV0dXJuIGVsZW1lbnRbUHJvcGVydHkuSlNBQ1RJT05dO1xufVxuXG4vKipcbiAqIFdyaXRlcyB0aGUganNhY3Rpb24gcGFyc2VyIGNhY2hlIHRvIHRoZSBnaXZlbiBET00gRWxlbWVudC5cbiAqXG4gKiBAcGFyYW0gZWxlbWVudCAuXG4gKiBAcGFyYW0gYWN0aW9uTWFwIE1hcCBmcm9tIGV2ZW50IHRvIHF1YWxpZmllZCBuYW1lIG9mIHRoZSBqc2FjdGlvbiBib3VuZCB0b1xuICogICAgIGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0KGVsZW1lbnQ6IEVsZW1lbnQsIGFjdGlvbk1hcDoge1trZXk6IHN0cmluZ106IHN0cmluZ30pIHtcbiAgLy8gQHRzLWlnbm9yZVxuICBlbGVtZW50W1Byb3BlcnR5LkpTQUNUSU9OXSA9IGFjdGlvbk1hcDtcbn1cblxuLyoqXG4gKiBMb29rcyB1cCB0aGUgcGFyc2VkIGFjdGlvbiBtYXAgZnJvbSB0aGUgc291cmNlIGpzYWN0aW9uIGF0dHJpYnV0ZSB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0gdGV4dCBVbnBhcnNlZCBqc2FjdGlvbiBhdHRyaWJ1dGUgdmFsdWUuXG4gKiBAcmV0dXJuIFBhcnNlZCBqc2FjdGlvbiBhdHRyaWJ1dGUgdmFsdWUsIGlmIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgY2FjaGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJzZWQodGV4dDogc3RyaW5nKToge1trZXk6IHN0cmluZ106IHN0cmluZ30gfCB1bmRlZmluZWQge1xuICByZXR1cm4gcGFyc2VDYWNoZVt0ZXh0XTtcbn1cblxuLyoqXG4gKiBJbnNlcnRzIHRoZSBwYXJzZSByZXN1bHQgZm9yIHRoZSBnaXZlbiBzb3VyY2UganNhY3Rpb24gdmFsdWUgaW50byB0aGUgY2FjaGUuXG4gKlxuICogQHBhcmFtIHRleHQgVW5wYXJzZWQganNhY3Rpb24gYXR0cmlidXRlIHZhbHVlLlxuICogQHBhcmFtIHBhcnNlZCBBdHRyaWJ1dGUgdmFsdWUgcGFyc2VkIGludG8gdGhlIGFjdGlvbiBtYXAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRQYXJzZWQodGV4dDogc3RyaW5nLCBwYXJzZWQ6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9KSB7XG4gIHBhcnNlQ2FjaGVbdGV4dF0gPSBwYXJzZWQ7XG59XG5cbi8qKlxuICogQ2xlYXJzIHRoZSBqc2FjdGlvbiBwYXJzZXIgY2FjaGUgZnJvbSB0aGUgZ2l2ZW4gRE9NIEVsZW1lbnQuXG4gKlxuICogQHBhcmFtIGVsZW1lbnQgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xlYXIoZWxlbWVudDogRWxlbWVudCkge1xuICBpZiAoUHJvcGVydHkuSlNBQ1RJT04gaW4gZWxlbWVudCkge1xuICAgIGRlbGV0ZSBlbGVtZW50W1Byb3BlcnR5LkpTQUNUSU9OXTtcbiAgfVxufVxuXG4vKipcbiAqIFJlYWRzIHRoZSBjYWNoZWQganNhY3Rpb24gbmFtZXNwYWNlIGZyb20gdGhlIGdpdmVuIERPTVxuICogRWxlbWVudC4gVW5kZWZpbmVkIG1lYW5zIHRoZXJlIGlzIG5vIGNhY2hlZCB2YWx1ZTsgbnVsbCBpcyBhIGNhY2hlZFxuICoganNuYW1lc3BhY2UgYXR0cmlidXRlIHRoYXQncyBhYnNlbnQuXG4gKlxuICogQHBhcmFtIGVsZW1lbnQgLlxuICogQHJldHVybiAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROYW1lc3BhY2UoZWxlbWVudDogRWxlbWVudCk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQge1xuICAvLyBAdHMtaWdub3JlXG4gIHJldHVybiBlbGVtZW50W1Byb3BlcnR5LkpTTkFNRVNQQUNFXTtcbn1cblxuLyoqXG4gKiBXcml0ZXMgdGhlIGNhY2hlZCBqc2FjdGlvbiBuYW1lc3BhY2UgdG8gdGhlIGdpdmVuIERPTSBFbGVtZW50LiBOdWxsXG4gKiByZXByZXNlbnRzIGEganNuYW1lc3BhY2UgYXR0cmlidXRlIHRoYXQncyBhYnNlbnQuXG4gKlxuICogQHBhcmFtIGVsZW1lbnQgLlxuICogQHBhcmFtIGpzbmFtZXNwYWNlIC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldE5hbWVzcGFjZShlbGVtZW50OiBFbGVtZW50LCBqc25hbWVzcGFjZTogc3RyaW5nIHwgbnVsbCkge1xuICAvLyBAdHMtaWdub3JlXG4gIGVsZW1lbnRbUHJvcGVydHkuSlNOQU1FU1BBQ0VdID0ganNuYW1lc3BhY2U7XG59XG5cbi8qKlxuICogQ2xlYXJzIHRoZSBjYWNoZWQganNhY3Rpb24gbmFtZXNwYWNlIGZyb20gdGhlIGdpdmVuIERPTSBFbGVtZW50LlxuICpcbiAqIEBwYXJhbSBlbGVtZW50IC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyTmFtZXNwYWNlKGVsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgaWYgKFByb3BlcnR5LkpTTkFNRVNQQUNFIGluIGVsZW1lbnQpIHtcbiAgICBkZWxldGUgZWxlbWVudFtQcm9wZXJ0eS5KU05BTUVTUEFDRV07XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,35 @@
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
+ export const Char = {
9
+ /**
10
+ * The separator between the namespace and the action name in the
11
+ * jsaction attribute value.
12
+ */
13
+ NAMESPACE_ACTION_SEPARATOR: '.',
14
+ /**
15
+ * The separator between the event name and action in the jsaction
16
+ * attribute value.
17
+ */
18
+ EVENT_ACTION_SEPARATOR: ':',
19
+ /**
20
+ * The separator between the logged oi attribute values in the &oi=
21
+ * URL parameter value.
22
+ */
23
+ OI_SEPARATOR: '.',
24
+ /**
25
+ * The separator between the key and the value pairs in the &cad=
26
+ * URL parameter value.
27
+ */
28
+ CAD_KEY_VALUE_SEPARATOR: ':',
29
+ /**
30
+ * The separator between the key-value pairs in the &cad= URL
31
+ * parameter value.
32
+ */
33
+ CAD_SEPARATOR: ',',
34
+ };
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvcHJpbWl0aXZlcy9ldmVudC1kaXNwYXRjaC9zcmMvY2hhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUc7SUFDbEI7OztPQUdHO0lBQ0gsMEJBQTBCLEVBQUUsR0FBRztJQUUvQjs7O09BR0c7SUFDSCxzQkFBc0IsRUFBRSxHQUFHO0lBRTNCOzs7T0FHRztJQUNILFlBQVksRUFBRSxHQUFHO0lBRWpCOzs7T0FHRztJQUNILHVCQUF1QixFQUFFLEdBQUc7SUFFNUI7OztPQUdHO0lBQ0gsYUFBYSxFQUFFLEdBQUc7Q0FDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5leHBvcnQgY29uc3QgQ2hhciA9IHtcbiAgLyoqXG4gICAqIFRoZSBzZXBhcmF0b3IgYmV0d2VlbiB0aGUgbmFtZXNwYWNlIGFuZCB0aGUgYWN0aW9uIG5hbWUgaW4gdGhlXG4gICAqIGpzYWN0aW9uIGF0dHJpYnV0ZSB2YWx1ZS5cbiAgICovXG4gIE5BTUVTUEFDRV9BQ1RJT05fU0VQQVJBVE9SOiAnLicsXG5cbiAgLyoqXG4gICAqIFRoZSBzZXBhcmF0b3IgYmV0d2VlbiB0aGUgZXZlbnQgbmFtZSBhbmQgYWN0aW9uIGluIHRoZSBqc2FjdGlvblxuICAgKiBhdHRyaWJ1dGUgdmFsdWUuXG4gICAqL1xuICBFVkVOVF9BQ1RJT05fU0VQQVJBVE9SOiAnOicsXG5cbiAgLyoqXG4gICAqIFRoZSBzZXBhcmF0b3IgYmV0d2VlbiB0aGUgbG9nZ2VkIG9pIGF0dHJpYnV0ZSB2YWx1ZXMgaW4gdGhlICZvaT1cbiAgICogVVJMIHBhcmFtZXRlciB2YWx1ZS5cbiAgICovXG4gIE9JX1NFUEFSQVRPUjogJy4nLFxuXG4gIC8qKlxuICAgKiBUaGUgc2VwYXJhdG9yIGJldHdlZW4gdGhlIGtleSBhbmQgdGhlIHZhbHVlIHBhaXJzIGluIHRoZSAmY2FkPVxuICAgKiBVUkwgcGFyYW1ldGVyIHZhbHVlLlxuICAgKi9cbiAgQ0FEX0tFWV9WQUxVRV9TRVBBUkFUT1I6ICc6JyxcblxuICAvKipcbiAgICogVGhlIHNlcGFyYXRvciBiZXR3ZWVuIHRoZSBrZXktdmFsdWUgcGFpcnMgaW4gdGhlICZjYWQ9IFVSTFxuICAgKiBwYXJhbWV0ZXIgdmFsdWUuXG4gICAqL1xuICBDQURfU0VQQVJBVE9SOiAnLCcsXG59O1xuIl19