source: trip-planner-front/node_modules/primeng/fesm2015/primeng-menu.mjs@ 76712b2

Last change on this file since 76712b2 was 59329aa, checked in by Ema <ema_spirova@…>, 3 years ago

adding photos

  • Property mode set to 100644
File size: 23.7 KB
Line 
1import * as i0 from '@angular/core';
2import { forwardRef, Component, ViewEncapsulation, Inject, Input, EventEmitter, ChangeDetectionStrategy, ViewChild, Output, NgModule } from '@angular/core';
3import { trigger, transition, style, animate } from '@angular/animations';
4import * as i1 from '@angular/common';
5import { CommonModule } from '@angular/common';
6import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
7import { ZIndexUtils } from 'primeng/utils';
8import * as i2 from '@angular/router';
9import { RouterModule } from '@angular/router';
10import * as i3 from 'primeng/ripple';
11import { RippleModule } from 'primeng/ripple';
12import * as i5 from 'primeng/tooltip';
13import { TooltipModule } from 'primeng/tooltip';
14import * as i4 from 'primeng/api';
15
16class MenuItemContent {
17 constructor(menu) {
18 this.menu = menu;
19 }
20 onItemKeyDown(event) {
21 let listItem = event.currentTarget.parentElement;
22 switch (event.code) {
23 case 'ArrowDown':
24 var nextItem = this.findNextItem(listItem);
25 if (nextItem) {
26 nextItem.children[0].focus();
27 }
28 event.preventDefault();
29 break;
30 case 'ArrowUp':
31 var prevItem = this.findPrevItem(listItem);
32 if (prevItem) {
33 prevItem.children[0].focus();
34 }
35 event.preventDefault();
36 break;
37 case 'Space':
38 case 'Enter':
39 if (listItem && !DomHandler.hasClass(listItem, 'p-disabled')) {
40 listItem.children[0].click();
41 }
42 event.preventDefault();
43 break;
44 default:
45 break;
46 }
47 }
48 findNextItem(item) {
49 let nextItem = item.nextElementSibling;
50 if (nextItem)
51 return DomHandler.hasClass(nextItem, 'p-disabled') || !DomHandler.hasClass(nextItem, 'p-menuitem') ? this.findNextItem(nextItem) : nextItem;
52 else
53 return null;
54 }
55 findPrevItem(item) {
56 let prevItem = item.previousElementSibling;
57 if (prevItem)
58 return DomHandler.hasClass(prevItem, 'p-disabled') || !DomHandler.hasClass(prevItem, 'p-menuitem') ? this.findPrevItem(prevItem) : prevItem;
59 else
60 return null;
61 }
62}
63MenuItemContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenuItemContent, deps: [{ token: forwardRef(() => Menu) }], target: i0.ɵɵFactoryTarget.Component });
64MenuItemContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: MenuItemContent, selector: "[pMenuItemContent]", inputs: { item: ["pMenuItemContent", "item"] }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
65 <a *ngIf="!item.routerLink" (keydown)="onItemKeyDown($event)" [attr.href]="item.url||null" class="p-menuitem-link" [attr.tabindex]="item.disabled ? null : '0'" [attr.data-automationid]="item.automationId" [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id"
66 [ngClass]="{'p-disabled':item.disabled}" (click)="menu.itemClick($event, item)" role="menuitem">
67 <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
68 <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
69 <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
70 </a>
71 <a *ngIf="item.routerLink" (keydown)="onItemKeyDown($event)" [routerLink]="item.routerLink" [attr.data-automationid]="item.automationId" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'"
72 [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link" [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled ? null : '0'"
73 [attr.title]="item.title" [ngClass]="{'p-disabled':item.disabled}" (click)="menu.itemClick($event, item)" role="menuitem" pRipple
74 [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
75 <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
76 <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
77 <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
78 </a>
79 `, isInline: true, directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], encapsulation: i0.ViewEncapsulation.None });
80i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenuItemContent, decorators: [{
81 type: Component,
82 args: [{
83 selector: '[pMenuItemContent]',
84 template: `
85 <a *ngIf="!item.routerLink" (keydown)="onItemKeyDown($event)" [attr.href]="item.url||null" class="p-menuitem-link" [attr.tabindex]="item.disabled ? null : '0'" [attr.data-automationid]="item.automationId" [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id"
86 [ngClass]="{'p-disabled':item.disabled}" (click)="menu.itemClick($event, item)" role="menuitem">
87 <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
88 <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
89 <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
90 </a>
91 <a *ngIf="item.routerLink" (keydown)="onItemKeyDown($event)" [routerLink]="item.routerLink" [attr.data-automationid]="item.automationId" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'"
92 [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link" [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled ? null : '0'"
93 [attr.title]="item.title" [ngClass]="{'p-disabled':item.disabled}" (click)="menu.itemClick($event, item)" role="menuitem" pRipple
94 [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
95 <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
96 <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
97 <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
98 </a>
99 `,
100 encapsulation: ViewEncapsulation.None,
101 host: {
102 'class': 'p-element'
103 }
104 }]
105 }], ctorParameters: function () {
106 return [{ type: undefined, decorators: [{
107 type: Inject,
108 args: [forwardRef(() => Menu)]
109 }] }];
110 }, propDecorators: { item: [{
111 type: Input,
112 args: ["pMenuItemContent"]
113 }] } });
114class Menu {
115 constructor(el, renderer, cd, config, overlayService) {
116 this.el = el;
117 this.renderer = renderer;
118 this.cd = cd;
119 this.config = config;
120 this.overlayService = overlayService;
121 this.autoZIndex = true;
122 this.baseZIndex = 0;
123 this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
124 this.hideTransitionOptions = '.1s linear';
125 this.onShow = new EventEmitter();
126 this.onHide = new EventEmitter();
127 }
128 toggle(event) {
129 if (this.visible)
130 this.hide();
131 else
132 this.show(event);
133 this.preventDocumentDefault = true;
134 }
135 show(event) {
136 this.target = event.currentTarget;
137 this.relativeAlign = event.relativeAlign;
138 this.visible = true;
139 this.preventDocumentDefault = true;
140 this.cd.markForCheck();
141 }
142 onOverlayAnimationStart(event) {
143 switch (event.toState) {
144 case 'visible':
145 if (this.popup) {
146 this.container = event.element;
147 this.moveOnTop();
148 this.onShow.emit({});
149 this.appendOverlay();
150 this.alignOverlay();
151 this.bindDocumentClickListener();
152 this.bindDocumentResizeListener();
153 this.bindScrollListener();
154 }
155 break;
156 case 'void':
157 this.onOverlayHide();
158 this.onHide.emit({});
159 break;
160 }
161 }
162 onOverlayAnimationEnd(event) {
163 switch (event.toState) {
164 case 'void':
165 if (this.autoZIndex) {
166 ZIndexUtils.clear(event.element);
167 }
168 break;
169 }
170 }
171 alignOverlay() {
172 if (this.relativeAlign)
173 DomHandler.relativePosition(this.container, this.target);
174 else
175 DomHandler.absolutePosition(this.container, this.target);
176 }
177 appendOverlay() {
178 if (this.appendTo) {
179 if (this.appendTo === 'body')
180 document.body.appendChild(this.container);
181 else
182 DomHandler.appendChild(this.container, this.appendTo);
183 }
184 }
185 restoreOverlayAppend() {
186 if (this.container && this.appendTo) {
187 this.el.nativeElement.appendChild(this.container);
188 }
189 }
190 moveOnTop() {
191 if (this.autoZIndex) {
192 ZIndexUtils.set('menu', this.container, this.baseZIndex + this.config.zIndex.menu);
193 }
194 }
195 hide() {
196 this.visible = false;
197 this.relativeAlign = false;
198 this.cd.markForCheck();
199 }
200 onWindowResize() {
201 this.hide();
202 }
203 itemClick(event, item) {
204 if (item.disabled) {
205 event.preventDefault();
206 return;
207 }
208 if (!item.url) {
209 event.preventDefault();
210 }
211 if (item.command) {
212 item.command({
213 originalEvent: event,
214 item: item
215 });
216 }
217 if (this.popup) {
218 this.hide();
219 }
220 }
221 onOverlayClick(event) {
222 if (this.popup) {
223 this.overlayService.add({
224 originalEvent: event,
225 target: this.el.nativeElement
226 });
227 }
228 this.preventDocumentDefault = true;
229 }
230 bindDocumentClickListener() {
231 if (!this.documentClickListener) {
232 const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
233 this.documentClickListener = this.renderer.listen(documentTarget, 'click', () => {
234 if (!this.preventDocumentDefault) {
235 this.hide();
236 }
237 this.preventDocumentDefault = false;
238 });
239 }
240 }
241 unbindDocumentClickListener() {
242 if (this.documentClickListener) {
243 this.documentClickListener();
244 this.documentClickListener = null;
245 }
246 }
247 bindDocumentResizeListener() {
248 this.documentResizeListener = this.onWindowResize.bind(this);
249 window.addEventListener('resize', this.documentResizeListener);
250 }
251 unbindDocumentResizeListener() {
252 if (this.documentResizeListener) {
253 window.removeEventListener('resize', this.documentResizeListener);
254 this.documentResizeListener = null;
255 }
256 }
257 bindScrollListener() {
258 if (!this.scrollHandler) {
259 this.scrollHandler = new ConnectedOverlayScrollHandler(this.target, () => {
260 if (this.visible) {
261 this.hide();
262 }
263 });
264 }
265 this.scrollHandler.bindScrollListener();
266 }
267 unbindScrollListener() {
268 if (this.scrollHandler) {
269 this.scrollHandler.unbindScrollListener();
270 }
271 }
272 onOverlayHide() {
273 this.unbindDocumentClickListener();
274 this.unbindDocumentResizeListener();
275 this.unbindScrollListener();
276 this.preventDocumentDefault = false;
277 this.target = null;
278 }
279 ngOnDestroy() {
280 if (this.popup) {
281 if (this.scrollHandler) {
282 this.scrollHandler.destroy();
283 this.scrollHandler = null;
284 }
285 if (this.container && this.autoZIndex) {
286 ZIndexUtils.clear(this.container);
287 }
288 this.restoreOverlayAppend();
289 this.onOverlayHide();
290 }
291 }
292 hasSubMenu() {
293 if (this.model) {
294 for (var item of this.model) {
295 if (item.items) {
296 return true;
297 }
298 }
299 }
300 return false;
301 }
302}
303Menu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Menu, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i4.PrimeNGConfig }, { token: i4.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
304Menu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Menu, selector: "p-menu", inputs: { model: "model", popup: "popup", style: "style", styleClass: "styleClass", appendTo: "appendTo", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onShow: "onShow", onHide: "onHide" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: `
305 <div #container [ngClass]="{'p-menu p-component': true, 'p-menu-overlay': popup}"
306 [class]="styleClass" [ngStyle]="style" *ngIf="!popup || visible" (click)="onOverlayClick($event)"
307 [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" [@.disabled]="popup !== true" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)">
308 <ul class="p-menu-list p-reset" role="menu">
309 <ng-template ngFor let-submenu [ngForOf]="model" *ngIf="hasSubMenu()">
310 <li class="p-menu-separator" *ngIf="submenu.separator" [ngClass]="{'p-hidden': submenu.visible === false}" role="separator"></li>
311 <li class="p-submenu-header" [attr.data-automationid]="submenu.automationId" *ngIf="!submenu.separator" [ngClass]="{'p-hidden': submenu.visible === false}" role="none">
312 <span *ngIf="submenu.escape !== false; else htmlSubmenuLabel">{{submenu.label}}</span>
313 <ng-template #htmlSubmenuLabel><span [innerHTML]="submenu.label"></span></ng-template>
314 </li>
315 <ng-template ngFor let-item [ngForOf]="submenu.items">
316 <li class="p-menu-separator" *ngIf="item.separator" [ngClass]="{'p-hidden': (item.visible === false || submenu.visible === false)}" role="separator"></li>
317 <li class="p-menuitem" *ngIf="!item.separator" [pMenuItemContent]="item" [ngClass]="{'p-hidden': (item.visible === false || submenu.visible === false)}" [ngStyle]="item.style" [class]="item.styleClass" role="none"></li>
318 </ng-template>
319 </ng-template>
320 <ng-template ngFor let-item [ngForOf]="model" *ngIf="!hasSubMenu()">
321 <li class="p-menu-separator" *ngIf="item.separator" [ngClass]="{'p-hidden': item.visible === false}" role="separator"></li>
322 <li class="p-menuitem" *ngIf="!item.separator" [pMenuItemContent]="item" [ngClass]="{'p-hidden': item.visible === false}" [ngStyle]="item.style" [class]="item.styleClass" pTooltip [tooltipOptions]="item.tooltipOptions" role="none"></li>
323 </ng-template>
324 </ul>
325 </div>
326 `, isInline: true, styles: [".p-menu-overlay{position:absolute;top:0;left:0}.p-menu ul{margin:0;padding:0;list-style:none}.p-menu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-menu .p-menuitem-text{line-height:1}\n"], components: [{ type: MenuItemContent, selector: "[pMenuItemContent]", inputs: ["pMenuItemContent"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }], animations: [
327 trigger('overlayAnimation', [
328 transition(':enter', [
329 style({ opacity: 0, transform: 'scaleY(0.8)' }),
330 animate('{{showTransitionParams}}')
331 ]),
332 transition(':leave', [
333 animate('{{hideTransitionParams}}', style({ opacity: 0 }))
334 ])
335 ])
336 ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
337i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Menu, decorators: [{
338 type: Component,
339 args: [{ selector: 'p-menu', template: `
340 <div #container [ngClass]="{'p-menu p-component': true, 'p-menu-overlay': popup}"
341 [class]="styleClass" [ngStyle]="style" *ngIf="!popup || visible" (click)="onOverlayClick($event)"
342 [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" [@.disabled]="popup !== true" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)">
343 <ul class="p-menu-list p-reset" role="menu">
344 <ng-template ngFor let-submenu [ngForOf]="model" *ngIf="hasSubMenu()">
345 <li class="p-menu-separator" *ngIf="submenu.separator" [ngClass]="{'p-hidden': submenu.visible === false}" role="separator"></li>
346 <li class="p-submenu-header" [attr.data-automationid]="submenu.automationId" *ngIf="!submenu.separator" [ngClass]="{'p-hidden': submenu.visible === false}" role="none">
347 <span *ngIf="submenu.escape !== false; else htmlSubmenuLabel">{{submenu.label}}</span>
348 <ng-template #htmlSubmenuLabel><span [innerHTML]="submenu.label"></span></ng-template>
349 </li>
350 <ng-template ngFor let-item [ngForOf]="submenu.items">
351 <li class="p-menu-separator" *ngIf="item.separator" [ngClass]="{'p-hidden': (item.visible === false || submenu.visible === false)}" role="separator"></li>
352 <li class="p-menuitem" *ngIf="!item.separator" [pMenuItemContent]="item" [ngClass]="{'p-hidden': (item.visible === false || submenu.visible === false)}" [ngStyle]="item.style" [class]="item.styleClass" role="none"></li>
353 </ng-template>
354 </ng-template>
355 <ng-template ngFor let-item [ngForOf]="model" *ngIf="!hasSubMenu()">
356 <li class="p-menu-separator" *ngIf="item.separator" [ngClass]="{'p-hidden': item.visible === false}" role="separator"></li>
357 <li class="p-menuitem" *ngIf="!item.separator" [pMenuItemContent]="item" [ngClass]="{'p-hidden': item.visible === false}" [ngStyle]="item.style" [class]="item.styleClass" pTooltip [tooltipOptions]="item.tooltipOptions" role="none"></li>
358 </ng-template>
359 </ul>
360 </div>
361 `, animations: [
362 trigger('overlayAnimation', [
363 transition(':enter', [
364 style({ opacity: 0, transform: 'scaleY(0.8)' }),
365 animate('{{showTransitionParams}}')
366 ]),
367 transition(':leave', [
368 animate('{{hideTransitionParams}}', style({ opacity: 0 }))
369 ])
370 ])
371 ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
372 'class': 'p-element'
373 }, styles: [".p-menu-overlay{position:absolute;top:0;left:0}.p-menu ul{margin:0;padding:0;list-style:none}.p-menu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-menu .p-menuitem-text{line-height:1}\n"] }]
374 }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i4.PrimeNGConfig }, { type: i4.OverlayService }]; }, propDecorators: { model: [{
375 type: Input
376 }], popup: [{
377 type: Input
378 }], style: [{
379 type: Input
380 }], styleClass: [{
381 type: Input
382 }], appendTo: [{
383 type: Input
384 }], autoZIndex: [{
385 type: Input
386 }], baseZIndex: [{
387 type: Input
388 }], showTransitionOptions: [{
389 type: Input
390 }], hideTransitionOptions: [{
391 type: Input
392 }], containerViewChild: [{
393 type: ViewChild,
394 args: ['container']
395 }], onShow: [{
396 type: Output
397 }], onHide: [{
398 type: Output
399 }] } });
400class MenuModule {
401}
402MenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
403MenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenuModule, declarations: [Menu, MenuItemContent], imports: [CommonModule, RouterModule, RippleModule, TooltipModule], exports: [Menu, RouterModule, TooltipModule] });
404MenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenuModule, imports: [[CommonModule, RouterModule, RippleModule, TooltipModule], RouterModule, TooltipModule] });
405i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenuModule, decorators: [{
406 type: NgModule,
407 args: [{
408 imports: [CommonModule, RouterModule, RippleModule, TooltipModule],
409 exports: [Menu, RouterModule, TooltipModule],
410 declarations: [Menu, MenuItemContent]
411 }]
412 }] });
413
414/**
415 * Generated bundle index. Do not edit.
416 */
417
418export { Menu, MenuItemContent, MenuModule };
Note: See TracBrowser for help on using the repository browser.