design-angular-kit 1.2.0 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,461 @@
1
+ <h1 align="center">Design Angular Kit</h1>
2
+
3
+ <p align="center">
4
+ <img src=".github/angular_design_kit.png" alt="angular-logo" width="120px" height="120px"/>
5
+ <br>
6
+ <i>Design Angular Kit è un toolkit basato su Bootstrap Italia
7
+ <br> per la creazione di applicazioni web sviluppate con Angular.</i>
8
+ <br>
9
+ </p>
10
+
11
+ <p align="center">
12
+ <a href="https://italia.github.io/design-angular-kit"><strong>italia.github.io/design-angular-kit</strong></a>
13
+ <br>
14
+ </p>
15
+
16
+ <p align="center">
17
+ <a href="https://www.npmjs.com/package/design-angular-kit"><img src="https://img.shields.io/npm/v/design-angular-kit.svg?logo=npm" alt="NPM"></a>
18
+ </p>
19
+
20
+ <p align="center">
21
+ <a href="https://github.com/italia/design-angular-kit/actions"><img src="https://github.com/italia/design-angular-kit/actions/workflows/publish-release.yml/badge.svg" alt="Build"></a>
22
+ <a href="https://codecov.io/gh/italia/design-angular-kit"><img src="https://codecov.io/gh/italia/design-angular-kit/branch/main/graph/badge.svg?token=0Ud6YSFi0r" alt="codecov"></a>
23
+ <a href="https://github.com/italia/design-angular-kit/blob/main/LICENSE"><img src="https://img.shields.io/github/license/italia/design-angular-kit.svg" alt="License"></a>
24
+ <a href="https://github.com/italia/design-angular-kit/issues"><img src="https://img.shields.io/github/issues/italia/design-angular-kit.svg" alt="GitHub issues"></a>
25
+ </p>
26
+
27
+ <p align="center">
28
+ <a href="https://github.com/semantic-release/semantic-release"><img src="https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release" alt="semantic-release: angular" /></a>
29
+ <a href="https://github.com/prettier/prettier"><img src="https://img.shields.io/badge/code%20style-prettier-ff69b4?logo=Prettier" alt="code style: prettier" /></a>
30
+ <a href="https://github.com/eslint/eslint"><img src="https://img.shields.io/badge/formatter-angular--eslint-4B32C3?logo=eslint" alt="formatter: angular-eslint" /></a>
31
+ </p>
32
+
33
+ <p align="center">
34
+ <a href="https://developersitalia.slack.com/messages/C04H3C19D52/"><img src="https://img.shields.io/badge/Slack%20channel-%23design--dev--angular-blue.svg" alt="Join the #design-dev-angular channel" /></a>
35
+ <a href="https://slack.developers.italia.it/"><img src="https://slack.developers.italia.it/badge.svg" alt="Get invited" /></a></p>
36
+
37
+ _Read this in other languages: [English 🇬🇧](README.EN.md)._
38
+
39
+ _⚠️ Se si necessita della vecchia versione il codice e la sua documentazione possono essere reperiti [qua](https://github.com/italia/design-angular-kit/tree/0.x)._
40
+
41
+ **Commenti e contributi di tutta la community sono più che benvenuti!** 🎉
42
+
43
+ ## Intro
44
+
45
+ **Design Angular kit** è un set di componenti Angular che implementa [Bootstrap Italia](https://italia.github.io/bootstrap-italia/) e gli stili presenti su [Design UI Kit](https://github.com/italia/design-ui-kit).
46
+ La versione pubblica della documentazione della libreria è disponibile [qui](https://italia.github.io/design-angular-kit) per l'ultima release stabile pubblicata, mentre [qui](https://design-angular-kit.vercel.app/) per la versione di sviluppo relativa al branch `main`.
47
+ Per giocare con la libreria è disponibile il [Playground Angular Kit](https://github.com/italia/design-angular-kit-playground).
48
+
49
+ ## Indice
50
+
51
+ - [Come usare il kit](#come-usare-il-kit)
52
+ - [Come contribuire](#come-contribuire-)
53
+ - [Come contribuire con il codice](#come-contribuire-con-il-codice)
54
+ - [Link utili](#link-utili)
55
+
56
+ ## Come usare il kit
57
+
58
+ Design Angular Kit è disponibile su NPM, per installarlo su una applicazione esistente sulla quale provare la libreria esegui il comando
59
+
60
+ ```sh
61
+ npm install design-angular-kit --save
62
+ ```
63
+
64
+ Scegli la versione corrispondente alla tua versione Angular:
65
+
66
+ | Angular | design-angular-kit |
67
+ | ------- | ------------------ |
68
+ | 18+ | v1.1.0 + |
69
+ | 17+ | v1.0.0 + |
70
+
71
+ In alternativa, puoi lanciar il comando
72
+
73
+ ```sh
74
+ ng add design-angular-kit --project <projectName>
75
+ ```
76
+
77
+ Eseguirà in serie:
78
+
79
+ - scelta della corretta versione da installare
80
+ - installazione della dipendenza
81
+ - aggiunta della dipendenza al package.json
82
+ - configurazione dell'applicazione
83
+
84
+ Le istruzioni del paragrafo successivo, **Configurazione**, verranno eseguite automaticamente, eccetto per la personalizzazione della configurazione di _i18n_.
85
+
86
+ ## Configurazione
87
+
88
+ ### Configurazione app
89
+
90
+ La libreria `design-angular-kit` può essere utilizzata con i componenti _standalone_ o con l'applicazione che utilizza i moduli. Segui la sezione di
91
+ configurazione che corrisponde alla tua applicazione.
92
+
93
+ #### Applicazione standalone
94
+
95
+ Utilizza la funzione `provideDesignAngularKit` nella configurazione dell'applicazione `ApplicationConfig` per
96
+ poter inizializzare le funzionalità della libreria.
97
+
98
+ ```typescript
99
+ import { provideDesignAngularKit } from 'design-angular-kit';
100
+
101
+ export const appConfig: ApplicationConfig = {
102
+ providers: [...provideDesignAngularKit()],
103
+ };
104
+ ```
105
+
106
+ #### Applicazione modulare
107
+
108
+ È necessario importare `DesignAngularKitModule` all'interno del modulo principale dell'applicazione (solitamente denominato **AppModule**)
109
+ utilizzando il metodo `forRoot` per poter inizializzare le funzionalità della libreria e **importare tutti i componenti**.
110
+
111
+ ```typescript
112
+ import { DesignAngularKitModule } from 'design-angular-kit';
113
+
114
+ @NgModule({
115
+ imports: [...DesignAngularKitModule.forRoot()],
116
+ })
117
+ export class AppModule {}
118
+ ```
119
+
120
+ Utilizza il metodo `forChild` durante l'importazione del modulo `DesignAngularKitModule` in altri moduli dell'applicazione per **importare tutti i componenti** della libreria.
121
+
122
+ ```typescript
123
+ import { DesignAngularKitModule } from 'design-angular-kit';
124
+
125
+ @NgModule({
126
+ imports: [...DesignAngularKitModule.forChild()],
127
+ exports: [DesignAngularKitModule],
128
+ })
129
+ export class SharedModule {}
130
+ ```
131
+
132
+ #### Applicazione ibrida
133
+
134
+ Se nella tua applicazione è presente il modulo **AppModule** ma vuoi utilizzare i nostri **componenti con la configurazione _standalone_**,
135
+ utilizza la funzione `provideDesignAngularKit` all'interno del modulo principale dell'applicazione per poter inizializzare le funzionalità della libreria.
136
+
137
+ ```typescript
138
+ import { provideDesignAngularKit } from 'design-angular-kit';
139
+
140
+ @NgModule({
141
+ imports: [],
142
+ providers: [provideDesignAngularKit()],
143
+ })
144
+ export class AppModule {}
145
+ ```
146
+
147
+ #### Parametri di configurazione
148
+
149
+ Sia per la funzione `provideDesignAngularKit` che per il modulo `DesignAngularKitModule.forRoot()` è possibile utilizzare una configurazione iniziale [`DesignAngularKitConfig`](/projects/design-angular-kit/src/lib/interfaces/design-angular-kit-config.ts).
150
+
151
+ ```typescript
152
+ import { provideDesignAngularKit, DesignAngularKitModule, DesignAngularKitConfig } from 'design-angular-kit';
153
+
154
+ // Puoi aggiungere alla libreria una configurazione iniziale
155
+ const initConfig: DesignAngularKitConfig | undefined = {
156
+ /**
157
+ * The bootstrap-italia asset folder path
158
+ * @default ./bootstrap-italia
159
+ */
160
+ assetBasePath: string | undefined,
161
+
162
+ /**
163
+ * Load the <a href="https://italia.github.io/bootstrap-italia/docs/come-iniziare/introduzione/#fonts">bootstrap-italia fonts</a>
164
+ * @default true
165
+ */
166
+ loadFont: boolean | undefined,
167
+
168
+ ...
169
+ };
170
+
171
+ provideDesignAngularKit(initConfig)
172
+
173
+ DesignAngularKitModule.forRoot(initConfig)
174
+ ```
175
+
176
+ ### Importazione stili bootstrap-italia
177
+
178
+ Configura gli stili richiesti nel file `styles.scss`. Importa la libreria SCSS come mostrato nell'esempio qui sotto.
179
+
180
+ ```scss
181
+ // Importazione libreria SCSS di bootstrap-italia
182
+ @import 'bootstrap-italia/src/scss/bootstrap-italia';
183
+ ```
184
+
185
+ <details>
186
+ <summary>Come personalizzare e sovrascrivere le variabili di default della libreria (es. colori, font-family, misure, ecc.)</summary>
187
+
188
+ Bootstrap Italia eredita ed estende tutte le variabili di default di Bootstrap, sovrascrivendo
189
+ alcuni valori in fase di compilazione e impostandone di nuovi all’occorenza. Un esempio fra tutti è
190
+ il valore del colore $primary che in Bootstrap Italia è rappresentato dal colore blu #0066CC,
191
+ tipico della libreria.
192
+
193
+ L’utilizzo del blu #0066CC dovrebbe però essere riservato alle amministrazioni centrali dello
194
+ Stato, e quindi ci si può trovare nella condizione di dover personalizzare i valori delle variabili
195
+ colore di Bootstrap Italia, impostando nuovi valori per le proprie necessità.
196
+
197
+ Questo colore e le altre tonalità vengono generate a partire dalla terna HSB, pertanto occorre modificare le variabili primary-h, primary-s e primary-b.
198
+ Per avere la corrispondenza tra valore esadecimale del colore e HSB si può utilizzare il portale rgb.to, ad esempio https://rgb.to/0066CC.
199
+
200
+ Di seguito un esempio di file `styles.scss` con la personalizzazione dei colori.
201
+ Le personalizzazioni delle variabili devono sempre essere effettuate prima dell'importazione del file `bootstrap-italia.scss`
202
+
203
+ ```scss
204
+ // modifica completa del template: è possibile ricompilare la libreria modificando alcune variabili SCSS
205
+
206
+ // Per l'override del colore $primary della palette in formato HSB (colore #FF3333 https://rgb.to/ff3333):
207
+ $primary-h: 0;
208
+ $primary-s: 80;
209
+ $primary-b: 100;
210
+
211
+ // Per l'override della famiglia di caratteri
212
+ $font-family-serif: 'Custom Font', Georgia, serif;
213
+ $font-family-sans-serif: 'Custom Font', Arial, Helvetica, sans-serif;
214
+ $font-family-monospace: 'Custom Font', 'Courier New', Courier, monospace;
215
+
216
+ // Importazione libreria SCSS di bootstrap-italia
217
+ @import 'bootstrap-italia/src/scss/bootstrap-italia';
218
+ ```
219
+
220
+ </details>
221
+
222
+ ### Supporto icone e assets
223
+
224
+ Per aggiungere il supporto icone/assets, modifica il tuo `angular.json` aggiungendo:
225
+
226
+ ```json
227
+ {
228
+ "assets": [
229
+ ...
230
+ {
231
+ "glob": "**/*",
232
+ "input": "./node_modules/bootstrap-italia/",
233
+ "output": "/bootstrap-italia/"
234
+ }
235
+ ]
236
+ }
237
+ ```
238
+
239
+ ### Supporto i18n (localizzazione)
240
+
241
+ La libreria usa [ngx-translate](https://github.com/ngx-translate/core) per aggiungere le localizazioni i18n.
242
+
243
+ Modifica il tuo `angular.json` aggiungendo:
244
+
245
+ ```json
246
+ {
247
+ "assets": [
248
+ ...
249
+ {
250
+ "glob": "**/*",
251
+ "input": "./node_modules/design-angular-kit/assets/i18n",
252
+ "output": "/bootstrap-italia/i18n/"
253
+ }
254
+ ]
255
+ }
256
+ ```
257
+
258
+ Puoi utilizzare le label localizzate della libreria `design-angular-kit` nella tua applicazione, ad esempio `{{'it.errors.required-field' | translate}}`. [Vedi le nostre label](projects/design-angular-kit/assets/i18n/it.json)
259
+
260
+ #### Localizzazione esistente
261
+
262
+ Se utilizzi già i file di localizzazione nella tua app, puoi utilizzare la libreria [ngx-translate-multi-http-loader](https://www.npmjs.com/package/ngx-translate-multi-http-loader)
263
+ per caricare sia i file di localizzazione dell'app che quelli della libreria `design-angular-kit`
264
+
265
+ **Utilizzando la funzione `provideDesignAngularKit`:**
266
+
267
+ ```typescript
268
+ import { HttpBackend } from '@angular/common/http';
269
+ import { TranslateLoader } from '@ngx-translate/core';
270
+ import { MultiTranslateHttpLoader } from 'ngx-translate-multi-http-loader';
271
+ import { provideDesignAngularKit } from 'design-angular-kit';
272
+
273
+ provideDesignAngularKit({
274
+ translateLoader: (itPrefix: string, itSuffix: string) => ({
275
+ provide: TranslateLoader,
276
+ useFactory: (http: HttpBackend) =>
277
+ new MultiTranslateHttpLoader(http, [
278
+ { prefix: itPrefix, suffix: itSuffix }, // Load library translations first, so you can edit the keys in your localization file
279
+ { prefix: './assets/i18n/' }, // Your i18n location
280
+ ]),
281
+ deps: [HttpBackend],
282
+ }),
283
+ });
284
+ ```
285
+
286
+ **Utilizzando il modulo `DesignAngularKitModule`:**
287
+
288
+ ```typescript
289
+ import { HttpBackend } from '@angular/common/http';
290
+ import { TranslateLoader } from '@ngx-translate/core';
291
+ import { MultiTranslateHttpLoader } from 'ngx-translate-multi-http-loader';
292
+ import { DesignAngularKitModule } from 'design-angular-kit';
293
+
294
+ DesignAngularKitModule.forRoot({
295
+ translateLoader: (itPrefix: string, itSuffix: string) => ({
296
+ provide: TranslateLoader,
297
+ useFactory: (http: HttpBackend) =>
298
+ new MultiTranslateHttpLoader(http, [
299
+ { prefix: itPrefix, suffix: itSuffix }, // Load library translations first, so you can edit the keys in your localization file
300
+ { prefix: './assets/i18n/' }, // Your i18n location
301
+ ]),
302
+ deps: [HttpBackend],
303
+ }),
304
+ });
305
+ ```
306
+
307
+ #### Personalizzazione della localizzazione
308
+
309
+ Se vuoi personalizzare le nostre label:
310
+
311
+ - Non includere il supporto i18n nel tuo `angular.json`
312
+ - Crea i tuoi file di localizzazione personalizzati nella tua cartella `assets/bootstrap-italia/i18n/` (crea il percorso se non esiste)
313
+ - Il json deve avere [questo formato](projects/design-angular-kit/assets/i18n/it.json).
314
+ - Aggiungi nella configurazione iniziale della libreria il `translateLoader` custom, sostituendo la stringa `assets/bootstrap-italia/i18n/` all'attributo `itPrefix`
315
+ - Oppure, aggiungi le localizzazioni nei tuoi file json, sovrascrivendo le [chiavi del json della libreria](projects/design-angular-kit/assets/i18n/it.json).
316
+
317
+ ### Utilizzo
318
+
319
+ Utilizzando il modulo `DesignAngularKitModule` tutti i componenti della libreria verranno importati nell'applicazione.
320
+
321
+ In alternativa, poiché tutti i nostri componenti e direttive sono _standalone_, puoi importare solo i componenti/moduli di cui hai bisogno, ad es. Alert, Paginazione e Breadcrumb.
322
+
323
+ ```typescript
324
+ import { ItAlertComponent, ItPaginationComponent, ItBreadcrumbsModule } from 'design-angular-kit';
325
+
326
+ @NgModule({
327
+ imports: [
328
+ ItAlertComponent,
329
+ ItPaginationComponent,
330
+ ItBreadcrumbsModule, // Include ItBreadcrumbComponent e ItBreadcrumbItemComponent
331
+ ],
332
+ })
333
+ export class YourAppModule {}
334
+ ```
335
+
336
+ ```typescript
337
+ import { ItAlertComponent, ItPaginationComponent, ItBreadcrumbsModule } from 'design-angular-kit';
338
+
339
+ @Component({
340
+ selector: 'app-product',
341
+ standalone: true,
342
+ imports: [ItAlertComponent, ItPaginationComponent, ItBreadcrumbsModule],
343
+ templateUrl: './product.component.html',
344
+ })
345
+ export class ProductComponent {}
346
+ ```
347
+
348
+ ## Come contribuire 💙
349
+
350
+ 👉🏻 È possibile contribuire alla libreria in vari modi:
351
+
352
+ - Con il proprio codice, prendendo in carico una issue tra quelle aperte e non già assegnate tra [le issue](https://github.com/italia/design-angular-kit/issues) di Angular Kit (è sufficiente anche un commento sulla issue per notificare la volontà di presa in carico).
353
+ - Attraverso la segnalazione di bug o miglioramenti al [repository ufficiale](https://github.com/italia/design-angular-kit/) di Angular Kit.
354
+ - Scrivendoci sul [canale dedicato](https://developersitalia.slack.com/messages/C04H3C19D52/) di Slack.
355
+
356
+ ## Come contribuire con il codice
357
+
358
+ Vorresti dare una mano su Design Angular Kit? **Sei nel posto giusto!**
359
+
360
+ Se non l'hai già fatto, inizia spendendo qualche minuto per approfondire la tua conoscenza sulle
361
+ [linee guida di design per i servizi web della PA](https://design-italia.readthedocs.io/it/stable/index.html),
362
+ e fai riferimento alle [indicazioni su come contribuire a Design Angular Kit](https://github.com/italia/design-angular-kit/blob/main/CONTRIBUTING.md).
363
+
364
+ ### Impostare l'ambiente locale
365
+
366
+ I requisiti minimi del tuo ambiente locale devono essere:
367
+
368
+ - NodeJS (>= 20)
369
+
370
+ A questo punto, è necessario impostare il tuo ambiente locale per la compilazione dei file sorgente e la generazione
371
+ della documentazione:
372
+
373
+ 1. Clonare il progetto
374
+
375
+ ```
376
+ git clone https://github.com/italia/design-angular-kit.git
377
+ ```
378
+
379
+ 2. Nella cartella di progetto installare le dipendenze
380
+
381
+ ```
382
+ npm i
383
+ ```
384
+
385
+ 3. Lanciare l'applicazione in locale
386
+
387
+ ```
388
+ npm run start
389
+ ```
390
+
391
+ 4. Per eseguire i test di unità eseguire il comando
392
+
393
+ ```
394
+ npm run test
395
+ ```
396
+
397
+ ### Impostare l'ambiente locale con Devcontainer
398
+
399
+ I requisiti minimi del tuo ambiente locale per lavorare con i Devcontainer devono essere:
400
+
401
+ - Visual Studio Code
402
+ - Docker
403
+ - git
404
+
405
+ Avvia Visual Studio Code e installa l'estensione Dev Containers di Microsoft (ms-vscode-remote.remote-containers).
406
+
407
+ A questo punto, è necessario impostare seguire i seguenti step:
408
+
409
+ 1. Clonare il progetto
410
+
411
+ ```
412
+ git clone https://github.com/italia/design-angular-kit.git
413
+ ```
414
+
415
+ 2. Aprire la cartella di progetto con Visual Studio Code
416
+
417
+ 3. Al caricamento, Visual Studio Code riconoscerà la presenta della configurazione di un Devcontainer. Aprire il progetto con il devcontainer. Altre info [qui](https://code.visualstudio.com/docs/devcontainers/create-dev-container).
418
+
419
+ 4. Visual Studio Code effettuerà il setup del container, andando ad installare la corretta versione di NodeJs, di npm e delle estensioni dell'IDE. Le dipendenze di progetto saranno installate nel processo di creazione del container. L'ambiente di sviuppo sarà pronto a setup ultimato.
420
+
421
+ 5. Lanciare l'applicazione in locale
422
+
423
+ ```
424
+ npm run start
425
+ ```
426
+
427
+ 6. Per eseguire i test di unità eseguire il comando
428
+
429
+ ```
430
+ npm run test
431
+ ```
432
+
433
+ ## Link utili
434
+
435
+ - [Playground Angular Kit](https://github.com/italia/design-angular-kit-playground)
436
+ - [Preview di Vercel (aggiornata ad ogni commit)](https://design-angular-kit.vercel.app/)
437
+
438
+ ### Dalla community
439
+
440
+ - [Video Commit University: Sviluppare da zero una Angular Web App per la PA](https://www.youtube.com/watch?v=gH-0P36E5jk&t=385s) ([slide](https://www.slideshare.net/commitsoftware/sviluppare-da-zero-una-angular-web-app-per-la-pa))
441
+ - [Video Meetup Angular Roma: Angular, Bootstrap Italia e non solo..](https://www.youtube.com/live/asGk-mYU-zM?feature=share)
442
+
443
+ ## Contributor della libreria
444
+
445
+ Un grazie speciale a chi ha reso possibile lo sviluppo di questa libreria
446
+
447
+ | [![Antonino Bonanno](https://github.com/AntoninoBonanno.png?size=100)](https://github.com/AntoninoBonanno) | [![Cristian Borelli](https://github.com/cri99.png?size=100)](https://github.com/cri99) | [![Alessio Napolitano](https://github.com/alenap93.png?size=100)](https://github.com/alenap93) |
448
+ | ---------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
449
+ | Antonino Bonanno | Cristian Borelli | Alessio Napolitano |
450
+
451
+ e grazie in particolare al team di [NetService](https://www.net-serv.it/):
452
+
453
+ <a href="https://www.net-serv.it/"><img src="https://www.net-serv.it/css/internet/agid/images/svg/logo-netservicesrl.svg" alt="NetService logo" width="300"></a>
454
+
455
+ ---
456
+
457
+ Tutti i contributor (_made with [contributors-img](https://contrib.rocks)_)
458
+
459
+ <a href = "https://github.com/italia/design-angular-kit/graphs/contributors">
460
+ <img src = "https://contrib.rocks/image?repo=italia/design-angular-kit"/>
461
+ </a>
@@ -53,6 +53,9 @@ export class ItDropdownComponent extends ItAbstractComponent {
53
53
  super.ngAfterViewInit();
54
54
  this.setDarkItems();
55
55
  this.updateListeners();
56
+ this.items?.forEach(item => {
57
+ item.mode = this.mode;
58
+ });
56
59
  }
57
60
  /**
58
61
  * Set child items dark mode
@@ -141,4 +144,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
141
144
  type: ViewChild,
142
145
  args: ['dropdownButton']
143
146
  }] } });
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9jb3JlL2Ryb3Bkb3duL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9kcm9wZG93bi9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBR04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQVc1RCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsbUJBQW1CO0lBVDVEOztRQVVFOztXQUVHO1FBQ00sU0FBSSxHQUE4QixRQUFRLENBQUM7UUFzQ3BEOztXQUVHO1FBQ08sY0FBUyxHQUF3QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTlEOztXQUVHO1FBQ08sZUFBVSxHQUF3QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRS9EOztXQUVHO1FBQ08sY0FBUyxH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QUNJLE1BQU07UUFDWCxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU87UUFDWixJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7OEdBdEpVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLHFKQXVCVixjQUFjLHNDQU1kLGNBQWMsMEJBTWQsY0FBYyxzS0FLakIsdUJBQXVCLHFOQ3ZFMUMsbWlEQTZDQSxrR0RoQlksZUFBZSxvSUFBRSxnQkFBZ0I7OzJGQUVoQyxtQkFBbUI7a0JBVC9CLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLGFBQWEsWUFHYixZQUFZLG1CQUNMLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLENBQUM7OEJBTW5DLElBQUk7c0JBQVosS0FBSztnQkFLRyxLQUFLO3NCQUFiLEtBQUs7Z0JBUUcsU0FBUztzQkFBakIsS0FBSztnQkFNZ0MsU0FBUztzQkFBOUMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBTUUsUUFBUTtzQkFBN0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBTUUsSUFBSTtzQkFBekMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBS00sS0FBSztzQkFBOUMsZUFBZTt1QkFBQyx1QkFBdUI7Z0JBSzlCLFNBQVM7c0JBQWxCLE1BQU07Z0JBS0csVUFBVTtzQkFBbkIsTUFBTTtnQkFLRyxTQUFTO3NCQUFsQixNQUFNO2dCQUtHLFdBQVc7c0JBQXBCLE1BQU07Z0JBSThCLGNBQWM7c0JBQWxELFNBQVM7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSXRBYnN0cmFjdENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL2Fic3RyYWN0cy9hYnN0cmFjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uQ29sb3IsIERyb3Bkb3duRGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9jb3JlJztcbmltcG9ydCB7IEl0RHJvcGRvd25JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vZHJvcGRvd24taXRlbS9kcm9wZG93bi1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEcm9wZG93biB9IGZyb20gJ2Jvb3RzdHJhcC1pdGFsaWEnO1xuaW1wb3J0IHsgSXRJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGlucHV0VG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvY29lcmNpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdpdC1kcm9wZG93bicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXG4gIGV4cG9ydEFzOiAnaXREcm9wZG93bicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbSXRJY29uQ29tcG9uZW50LCBOZ1RlbXBsYXRlT3V0bGV0XSxcbn0pXG5leHBvcnQgY2xhc3MgSXREcm9wZG93bkNvbXBvbmVudCBleHRlbmRzIEl0QWJzdHJhY3RDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICAvKipcbiAgICogRHJvcGRvd24gbW9kZVxuICAgKi9cbiAgQElucHV0KCkgbW9kZTogJ2J1dHRvbicgfCAnbGluaycgfCAnbmF2JyA9ICdidXR0b24nO1xuXG4gIC8qKlxuICAgKiBCdXR0b24gY29sb3JcbiAgICovXG4gIEBJbnB1dCgpIGNvbG9yPzogQnV0dG9uQ29sb3I7XG5cbiAgLyoqXG4gICAqIFRvIG9wZW4gbWVudSBpdGVtcyB0bzpcbiAgICogLSA8c3Ryb25nPmRyb3B1cDwvc3Ryb25nPjogdXBcbiAgICogLSA8c3Ryb25nPmRyb3BlbmQ8L3N0cm9uZz46IHJpZ2h0XG4gICAqIC0gPHN0cm9uZz5kcm9wc3RhcnQ8L3N0cm9uZz46IGxlZnRcbiAgICovXG4gIEBJbnB1dCgpIGRpcmVjdGlvbjogRHJvcGRvd25EaXJlY3Rpb24gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRvIGdldCBhIGRyb3Bkb3duIG1lbnUgYXMgd2lkZSBhcyB0aGUgZWxlbWVudCBjb250YWluaW5nIHRoZSBkcm9wZG93biBidXR0b25cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgZnVsbFdpZHRoPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29udGFpbnMgYSBNZWdhbWVudSBlbGVtZW50XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIG1lZ2FtZW51PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGFyayBtZW51IHN0eWxlXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGRhcms/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZHJvcGRvd24gaXRlbXNcbiAgICovXG4gIEBDb250ZW50Q2hpbGRyZW4oSXREcm9wZG93bkl0ZW1Db21wb25lbnQpIGl0ZW1zPzogUXVlcnlMaXN0PEl0RHJvcGRvd25JdGVtQ29tcG9uZW50PjtcblxuICAvKipcbiAgICogRmlyZXMgaW1tZWRpYXRlbHkgd2hlbiB0aGUgc2hvdyBpbnN0YW5jZSBtZXRob2QgaXMgY2FsbGVkLlxuICAgKi9cbiAgQE91dHB1dCgpIHNob3dFdmVudDogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgZHJvcGRvd24gaGFzIGJlZW4gbWFkZSB2aXNpYmxlIHRvIHRoZSB1c2VyIGFuZCBDU1MgdHJhbnNpdGlvbnMgaGF2ZSBjb21wbGV0ZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgc2hvd25FdmVudDogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogRmlyZXMgaW1tZWRpYXRlbHkgd2hlbiB0aGUgaGlkZSBpbnN0YW5jZSBtZXRob2QgaGFzIGJlZW4gY2FsbGVkLlxuICAgKi9cbiAgQE91dHB1dCgpIGhpZGVFdmVudDogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgZHJvcGRvd24gaGFzIGZpbmlzaGVkIGJlaW5nIGhpZGRlbiBmcm9tIHRoZSB1c2VyIGFuZCBDU1MgdHJhbnNpdGlvbnMgaGF2ZSBjb21wbGV0ZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgaGlkZGVuRXZlbnQ6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJpdmF0ZSBkcm9wZG93bj86IERyb3Bkb3duO1xuXG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duQnV0dG9uJykgcHJpdmF0ZSBkcm9wZG93bkJ1dHRvbj86IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuXG4gIGdldCBidXR0b25DbGFzcygpOiBzdHJpbmcge1xuICAgIGxldCBidG5DbGFzcyA9ICdidG4gZHJvcGRvd24tdG9nZ2xlJztcbiAgICBpZiAodGhpcy5jb2xvcikge1xuICAgICAgYnRuQ2xhc3MgKz0gYCBidG4tJHt0aGlzLmNvbG9yfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ0bkNsYXNzICs9IGAgYnRuLWRyb3Bkb3duYDtcbiAgICB9XG5cbiAgICByZXR1cm4gYnRuQ2xhc3M7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2RhcmsnXSAmJiAhY2hhbmdlc1snZGFyayddLmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLnNldERhcmtJdGVtcygpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snbW9kZSddICYmICFjaGFuZ2VzWydtb2RlJ10uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMudXBkYXRlTGlzdGVuZXJzKCk7XG4gICAgfVxuICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgIHRoaXMuc2V0RGFya0l0ZW1zKCk7XG4gICAgdGhpcy51cGRhdGVMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgY2hpbGQgaXRlbXMgZGFyayBtb2RlXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHNldERhcmtJdGVtcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kYXJrICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuaXRlbXM/LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGl0ZW0uc2V0RGFyayghIXRoaXMuZGFyayk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kcm9wZG93bkJ1dHRvbikge1xuICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZHJvcGRvd25CdXR0b24ubmF0aXZlRWxlbWVudDtcbiAgICAgIHRoaXMuZHJvcGRvd24gPSBEcm9wZG93bi5nZXRPckNyZWF0ZUluc3RhbmNlKGVsZW1lbnQpO1xuXG4gICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Nob3cuYnMuZHJvcGRvd24nLCBldmVudCA9PiB0aGlzLnNob3dFdmVudC5lbWl0KGV2ZW50KSk7XG4gICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Nob3duLmJzLmRyb3Bkb3duJywgZXZlbnQgPT4gdGhpcy5zaG93bkV2ZW50LmVtaXQoZXZlbnQpKTtcbiAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignaGlkZS5icy5kcm9wZG93bicsIGV2ZW50ID0+IHRoaXMuaGlkZUV2ZW50LmVtaXQoZXZlbnQpKTtcbiAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignaGlkZGVuLmJzLmRyb3Bkb3duJywgZXZlbnQgPT4gdGhpcy5oaWRkZW5FdmVudC5lbWl0KGV2ZW50KSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIGRyb3Bkb3duIG1lbnUgb2YgYSBnaXZlbiBuYXZiYXIgb3IgdGFiYmVkIG5hdmlnYXRpb24uXG4gICAqL1xuICBwdWJsaWMgdG9nZ2xlKCk6IHZvaWQge1xuICAgIHRoaXMuZHJvcGRvd24/LnRvZ2dsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3dzIHRoZSBkcm9wZG93biBtZW51IG9mIGEgZ2l2ZW4gbmF2YmFyIG9yIHRhYmJlZCBuYXZpZ2F0aW9uLlxuICAgKi9cbiAgcHVibGljIHNob3coKTogdm9pZCB7XG4gICAgdGhpcy5kcm9wZG93bj8uc2hvdygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhpZGVzIHRoZSBkcm9wZG93biBtZW51IG9mIGEgZ2l2ZW4gbmF2YmFyIG9yIHRhYmJlZCBuYXZpZ2F0aW9uLlxuICAgKi9cbiAgcHVibGljIGhpZGUoKTogdm9pZCB7XG4gICAgdGhpcy5kcm9wZG93bj8uaGlkZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHBvc2l0aW9uIG9mIGFuIGVsZW1lbnQncyBkcm9wZG93bi5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5kcm9wZG93bj8udXBkYXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogRGVzdHJveXMgYW4gZWxlbWVudCdzIGRyb3Bkb3duLiAoUmVtb3ZlcyBzdG9yZWQgZGF0YSBvbiB0aGUgRE9NIGVsZW1lbnQpXG4gICAqL1xuICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRyb3Bkb3duPy5kaXNwb3NlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkcm9wZG93biB7eyBkaXJlY3Rpb24gfX1cIiBbY2xhc3MubmF2LWl0ZW1dPVwibW9kZSA9PT0gJ25hdidcIiBbY2xhc3MubWVnYW1lbnVdPVwibWVnYW1lbnVcIj5cbiAgQGlmIChtb2RlID09PSAnYnV0dG9uJykge1xuICAgIDxidXR0b25cbiAgICAgICNkcm9wZG93bkJ1dHRvblxuICAgICAgW2lkXT1cImlkXCJcbiAgICAgIFtjbGFzc109XCJidXR0b25DbGFzc1wiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGRhdGEtYnMtdG9nZ2xlPVwiZHJvcGRvd25cIlxuICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPGl0LWljb24gc3ZnQ2xhc3M9XCJpY29uLWV4cGFuZFwiIG5hbWU9XCJleHBhbmRcIiBzaXplPVwic21cIiBbY29sb3JdPVwidGhpcy5jb2xvciA/ICdsaWdodCcgOiAncHJpbWFyeSdcIj48L2l0LWljb24+XG4gICAgPC9idXR0b24+XG4gIH0gQGVsc2Uge1xuICAgIDxhXG4gICAgICAjZHJvcGRvd25CdXR0b25cbiAgICAgIFtpZF09XCJpZFwiXG4gICAgICBbY2xhc3MuYnRuXT1cIm1vZGUgPT09ICdsaW5rJ1wiXG4gICAgICBbY2xhc3MuYnRuLWRyb3Bkb3duXT1cIm1vZGUgPT09ICdsaW5rJ1wiXG4gICAgICBbY2xhc3MubmF2LWxpbmtdPVwibW9kZSA9PT0gJ25hdidcIlxuICAgICAgY2xhc3M9XCJkcm9wZG93bi10b2dnbGVcIlxuICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCJcbiAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1dHRvbkNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxpdC1pY29uIHN2Z0NsYXNzPVwiaWNvbi1leHBhbmRcIiBuYW1lPVwiZXhwYW5kXCIgc2l6ZT1cInNtXCI+PC9pdC1pY29uPlxuICAgIDwvYT5cbiAgfVxuXG4gIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgW2NsYXNzLmZ1bGwtd2lkdGhdPVwiZnVsbFdpZHRoXCIgW2NsYXNzLmRhcmtdPVwiZGFya1wiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJpZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJsaW5rLWxpc3Qtd3JhcHBlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImxpbmstbGlzdC1oZWFkaW5nXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltsaXN0SGVhZGluZ11cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDx1bCBjbGFzcz1cImxpbmstbGlzdFwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbGlzdF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2J1dHRvbkNvbnRlbnQ+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIltidXR0b25dXCI+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9jb3JlL2Ryb3Bkb3duL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9kcm9wZG93bi9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBR04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQVc1RCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsbUJBQW1CO0lBVDVEOztRQVVFOztXQUVHO1FBQ00sU0FBSSxHQUE4QixRQUFRLENBQUM7UUFzQ3BEOztXQUVHO1FBQ08sY0FBUyxHQUF3QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTlEOztXQUVHO1FBQ08sZUFBVSxHQUF3QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRS9EOztXQUVHO1FBQ08sY0FBUyxH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b3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSXRBYnN0cmFjdENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL2Fic3RyYWN0cy9hYnN0cmFjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uQ29sb3IsIERyb3Bkb3duRGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9jb3JlJztcbmltcG9ydCB7IEl0RHJvcGRvd25JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vZHJvcGRvd24taXRlbS9kcm9wZG93bi1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEcm9wZG93biB9IGZyb20gJ2Jvb3RzdHJhcC1pdGFsaWEnO1xuaW1wb3J0IHsgSXRJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGlucHV0VG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvY29lcmNpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdpdC1kcm9wZG93bicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXG4gIGV4cG9ydEFzOiAnaXREcm9wZG93bicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbSXRJY29uQ29tcG9uZW50LCBOZ1RlbXBsYXRlT3V0bGV0XSxcbn0pXG5leHBvcnQgY2xhc3MgSXREcm9wZG93bkNvbXBvbmVudCBleHRlbmRzIEl0QWJzdHJhY3RDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICAvKipcbiAgICogRHJvcGRvd24gbW9kZVxuICAgKi9cbiAgQElucHV0KCkgbW9kZTogJ2J1dHRvbicgfCAnbGluaycgfCAnbmF2JyA9ICdidXR0b24nO1xuXG4gIC8qKlxuICAgKiBCdXR0b24gY29sb3JcbiAgICovXG4gIEBJbnB1dCgpIGNvbG9yPzogQnV0dG9uQ29sb3I7XG5cbiAgLyoqXG4gICAqIFRvIG9wZW4gbWVudSBpdGVtcyB0bzpcbiAgICogLSA8c3Ryb25nPmRyb3B1cDwvc3Ryb25nPjogdXBcbiAgICogLSA8c3Ryb25nPmRyb3BlbmQ8L3N0cm9uZz46IHJpZ2h0XG4gICAqIC0gPHN0cm9uZz5kcm9wc3RhcnQ8L3N0cm9uZz46IGxlZnRcbiAgICovXG4gIEBJbnB1dCgpIGRpcmVjdGlvbjogRHJvcGRvd25EaXJlY3Rpb24gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRvIGdldCBhIGRyb3Bkb3duIG1lbnUgYXMgd2lkZSBhcyB0aGUgZWxlbWVudCBjb250YWluaW5nIHRoZSBkcm9wZG93biBidXR0b25cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgZnVsbFdpZHRoPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29udGFpbnMgYSBNZWdhbWVudSBlbGVtZW50XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIG1lZ2FtZW51PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGFyayBtZW51IHN0eWxlXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGRhcms/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZHJvcGRvd24gaXRlbXNcbiAgICovXG4gIEBDb250ZW50Q2hpbGRyZW4oSXREcm9wZG93bkl0ZW1Db21wb25lbnQpIGl0ZW1zPzogUXVlcnlMaXN0PEl0RHJvcGRvd25JdGVtQ29tcG9uZW50PjtcblxuICAvKipcbiAgICogRmlyZXMgaW1tZWRpYXRlbHkgd2hlbiB0aGUgc2hvdyBpbnN0YW5jZSBtZXRob2QgaXMgY2FsbGVkLlxuICAgKi9cbiAgQE91dHB1dCgpIHNob3dFdmVudDogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgZHJvcGRvd24gaGFzIGJlZW4gbWFkZSB2aXNpYmxlIHRvIHRoZSB1c2VyIGFuZCBDU1MgdHJhbnNpdGlvbnMgaGF2ZSBjb21wbGV0ZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgc2hvd25FdmVudDogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogRmlyZXMgaW1tZWRpYXRlbHkgd2hlbiB0aGUgaGlkZSBpbnN0YW5jZSBtZXRob2QgaGFzIGJlZW4gY2FsbGVkLlxuICAgKi9cbiAgQE91dHB1dCgpIGhpZGVFdmVudDogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgZHJvcGRvd24gaGFzIGZpbmlzaGVkIGJlaW5nIGhpZGRlbiBmcm9tIHRoZSB1c2VyIGFuZCBDU1MgdHJhbnNpdGlvbnMgaGF2ZSBjb21wbGV0ZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgaGlkZGVuRXZlbnQ6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJpdmF0ZSBkcm9wZG93bj86IERyb3Bkb3duO1xuXG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duQnV0dG9uJykgcHJpdmF0ZSBkcm9wZG93bkJ1dHRvbj86IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuXG4gIGdldCBidXR0b25DbGFzcygpOiBzdHJpbmcge1xuICAgIGxldCBidG5DbGFzcyA9ICdidG4gZHJvcGRvd24tdG9nZ2xlJztcbiAgICBpZiAodGhpcy5jb2xvcikge1xuICAgICAgYnRuQ2xhc3MgKz0gYCBidG4tJHt0aGlzLmNvbG9yfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ0bkNsYXNzICs9IGAgYnRuLWRyb3Bkb3duYDtcbiAgICB9XG5cbiAgICByZXR1cm4gYnRuQ2xhc3M7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2RhcmsnXSAmJiAhY2hhbmdlc1snZGFyayddLmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLnNldERhcmtJdGVtcygpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snbW9kZSddICYmICFjaGFuZ2VzWydtb2RlJ10uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMudXBkYXRlTGlzdGVuZXJzKCk7XG4gICAgfVxuICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgIHRoaXMuc2V0RGFya0l0ZW1zKCk7XG4gICAgdGhpcy51cGRhdGVMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLml0ZW1zPy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgaXRlbS5tb2RlID0gdGhpcy5tb2RlO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBjaGlsZCBpdGVtcyBkYXJrIG1vZGVcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgc2V0RGFya0l0ZW1zKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhcmsgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5pdGVtcz8uZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaXRlbS5zZXREYXJrKCEhdGhpcy5kYXJrKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRyb3Bkb3duQnV0dG9uKSB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5kcm9wZG93bkJ1dHRvbi5uYXRpdmVFbGVtZW50O1xuICAgICAgdGhpcy5kcm9wZG93biA9IERyb3Bkb3duLmdldE9yQ3JlYXRlSW5zdGFuY2UoZWxlbWVudCk7XG5cbiAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2hvdy5icy5kcm9wZG93bicsIGV2ZW50ID0+IHRoaXMuc2hvd0V2ZW50LmVtaXQoZXZlbnQpKTtcbiAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2hvd24uYnMuZHJvcGRvd24nLCBldmVudCA9PiB0aGlzLnNob3duRXZlbnQuZW1pdChldmVudCkpO1xuICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdoaWRlLmJzLmRyb3Bkb3duJywgZXZlbnQgPT4gdGhpcy5oaWRlRXZlbnQuZW1pdChldmVudCkpO1xuICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdoaWRkZW4uYnMuZHJvcGRvd24nLCBldmVudCA9PiB0aGlzLmhpZGRlbkV2ZW50LmVtaXQoZXZlbnQpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgZHJvcGRvd24gbWVudSBvZiBhIGdpdmVuIG5hdmJhciBvciB0YWJiZWQgbmF2aWdhdGlvbi5cbiAgICovXG4gIHB1YmxpYyB0b2dnbGUoKTogdm9pZCB7XG4gICAgdGhpcy5kcm9wZG93bj8udG9nZ2xlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2hvd3MgdGhlIGRyb3Bkb3duIG1lbnUgb2YgYSBnaXZlbiBuYXZiYXIgb3IgdGFiYmVkIG5hdmlnYXRpb24uXG4gICAqL1xuICBwdWJsaWMgc2hvdygpOiB2b2lkIHtcbiAgICB0aGlzLmRyb3Bkb3duPy5zaG93KCk7XG4gIH1cblxuICAvKipcbiAgICogSGlkZXMgdGhlIGRyb3Bkb3duIG1lbnUgb2YgYSBnaXZlbiBuYXZiYXIgb3IgdGFiYmVkIG5hdmlnYXRpb24uXG4gICAqL1xuICBwdWJsaWMgaGlkZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRyb3Bkb3duPy5oaWRlKCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcG9zaXRpb24gb2YgYW4gZWxlbWVudCdzIGRyb3Bkb3duLlxuICAgKi9cbiAgcHVibGljIHVwZGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRyb3Bkb3duPy51cGRhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyBhbiBlbGVtZW50J3MgZHJvcGRvd24uIChSZW1vdmVzIHN0b3JlZCBkYXRhIG9uIHRoZSBET00gZWxlbWVudClcbiAgICovXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuZHJvcGRvd24/LmRpc3Bvc2UoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRyb3Bkb3duIHt7IGRpcmVjdGlvbiB9fVwiIFtjbGFzcy5uYXYtaXRlbV09XCJtb2RlID09PSAnbmF2J1wiIFtjbGFzcy5tZWdhbWVudV09XCJtZWdhbWVudVwiPlxuICBAaWYgKG1vZGUgPT09ICdidXR0b24nKSB7XG4gICAgPGJ1dHRvblxuICAgICAgI2Ryb3Bkb3duQnV0dG9uXG4gICAgICBbaWRdPVwiaWRcIlxuICAgICAgW2NsYXNzXT1cImJ1dHRvbkNsYXNzXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgZGF0YS1icy10b2dnbGU9XCJkcm9wZG93blwiXG4gICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25Db250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8aXQtaWNvbiBzdmdDbGFzcz1cImljb24tZXhwYW5kXCIgbmFtZT1cImV4cGFuZFwiIHNpemU9XCJzbVwiIFtjb2xvcl09XCJ0aGlzLmNvbG9yID8gJ2xpZ2h0JyA6ICdwcmltYXJ5J1wiPjwvaXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgfSBAZWxzZSB7XG4gICAgPGFcbiAgICAgICNkcm9wZG93bkJ1dHRvblxuICAgICAgW2lkXT1cImlkXCJcbiAgICAgIFtjbGFzcy5idG5dPVwibW9kZSA9PT0gJ2xpbmsnXCJcbiAgICAgIFtjbGFzcy5idG4tZHJvcGRvd25dPVwibW9kZSA9PT0gJ2xpbmsnXCJcbiAgICAgIFtjbGFzcy5uYXYtbGlua109XCJtb2RlID09PSAnbmF2J1wiXG4gICAgICBjbGFzcz1cImRyb3Bkb3duLXRvZ2dsZVwiXG4gICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgIGRhdGEtYnMtdG9nZ2xlPVwiZHJvcGRvd25cIlxuICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPGl0LWljb24gc3ZnQ2xhc3M9XCJpY29uLWV4cGFuZFwiIG5hbWU9XCJleHBhbmRcIiBzaXplPVwic21cIj48L2l0LWljb24+XG4gICAgPC9hPlxuICB9XG5cbiAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBbY2xhc3MuZnVsbC13aWR0aF09XCJmdWxsV2lkdGhcIiBbY2xhc3MuZGFya109XCJkYXJrXCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImlkXCI+XG4gICAgPGRpdiBjbGFzcz1cImxpbmstbGlzdC13cmFwcGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibGluay1saXN0LWhlYWRpbmdcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2xpc3RIZWFkaW5nXVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgICAgPHVsIGNsYXNzPVwibGluay1saXN0XCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltsaXN0XVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjYnV0dG9uQ29udGVudD5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2J1dHRvbl1cIj48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -13,6 +13,10 @@ export class ItDropdownItemComponent extends ItLinkComponent {
13
13
  * @default right
14
14
  */
15
15
  this.iconPosition = 'right';
16
+ /**
17
+ * Dropdown mode
18
+ */
19
+ this.mode = 'button';
16
20
  /**
17
21
  * Change icon color if menu is dark
18
22
  * @default false
@@ -21,6 +25,9 @@ export class ItDropdownItemComponent extends ItLinkComponent {
21
25
  }
22
26
  get linkClass() {
23
27
  let linkClass = `list-item ${this.active ? 'active' : 'dropdown-item'}`;
28
+ if (this.mode === 'nav') {
29
+ linkClass += ' nav-link';
30
+ }
24
31
  if (this.disabled) {
25
32
  linkClass += ' disabled';
26
33
  }
@@ -39,7 +46,7 @@ export class ItDropdownItemComponent extends ItLinkComponent {
39
46
  }
40
47
  }
41
48
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItDropdownItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
42
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: ItDropdownItemComponent, isStandalone: true, selector: "it-dropdown-item", inputs: { divider: ["divider", "divider", inputToBoolean], active: ["active", "active", inputToBoolean], large: ["large", "large", inputToBoolean], iconName: "iconName", iconPosition: "iconPosition" }, usesInheritance: true, ngImport: i0, template: "<li>\n @if (divider) {\n <span class=\"divider\"></span>\n } @else {\n <it-link [class]=\"linkClass\" [id]=\"id\" [href]=\"href\" [externalLink]=\"externalLink\" [disabled]=\"disabled\">\n @if (iconName && iconPosition === 'left') {\n <it-icon size=\"sm\" [name]=\"iconName\" [color]=\"isDark ? 'light' : 'primary'\" [svgClass]=\"iconPosition\"></it-icon>\n }\n <span><ng-content></ng-content></span>\n @if (iconName && iconPosition === 'right') {\n <it-icon size=\"sm\" [name]=\"iconName\" [color]=\"isDark ? 'light' : 'primary'\" [svgClass]=\"iconPosition\"></it-icon>\n }\n @if (active) {\n <span class=\"visually-hidden\">{{ 'it.core.active' | translate }}</span>\n }\n </it-link>\n }\n</li>\n", styles: [".list-item.disabled{pointer-events:none;cursor:default}\n"], dependencies: [{ kind: "component", type: ItIconComponent, selector: "it-icon", inputs: ["name", "size", "color", "padded", "svgClass", "title", "labelWaria"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: ItLinkComponent, selector: "it-link", inputs: ["href", "externalLink", "disabled", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
49
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: ItDropdownItemComponent, isStandalone: true, selector: "it-dropdown-item", inputs: { divider: ["divider", "divider", inputToBoolean], active: ["active", "active", inputToBoolean], large: ["large", "large", inputToBoolean], iconName: "iconName", iconPosition: "iconPosition", mode: "mode" }, usesInheritance: true, ngImport: i0, template: "<li>\n @if (divider) {\n <span class=\"divider\"></span>\n } @else {\n <it-link [class]=\"linkClass\" [id]=\"id\" [href]=\"href\" [externalLink]=\"externalLink\" [disabled]=\"disabled\">\n @if (iconName && iconPosition === 'left') {\n <it-icon size=\"sm\" [name]=\"iconName\" [color]=\"isDark ? 'light' : 'primary'\" [svgClass]=\"iconPosition\"></it-icon>\n }\n <span><ng-content></ng-content></span>\n @if (iconName && iconPosition === 'right') {\n <it-icon size=\"sm\" [name]=\"iconName\" [color]=\"isDark ? 'light' : 'primary'\" [svgClass]=\"iconPosition\"></it-icon>\n }\n @if (active) {\n <span class=\"visually-hidden\">{{ 'it.core.active' | translate }}</span>\n }\n </it-link>\n }\n</li>\n", styles: [".list-item.disabled{pointer-events:none;cursor:default}\n"], dependencies: [{ kind: "component", type: ItIconComponent, selector: "it-icon", inputs: ["name", "size", "color", "padded", "svgClass", "title", "labelWaria"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: ItLinkComponent, selector: "it-link", inputs: ["href", "externalLink", "disabled", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
43
50
  }
44
51
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItDropdownItemComponent, decorators: [{
45
52
  type: Component,
@@ -57,5 +64,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
57
64
  type: Input
58
65
  }], iconPosition: [{
59
66
  type: Input
67
+ }], mode: [{
68
+ type: Input
60
69
  }] } });
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24taXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvZHJvcGRvd24vZHJvcGRvd24taXRlbS9kcm9wZG93bi1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9kcm9wZG93bi9kcm9wZG93bi1pdGVtL2Ryb3Bkb3duLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFVNUQsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGVBQWU7SUFSNUQ7O1FBZ0NFOzs7V0FHRztRQUNNLGlCQUFZLEdBQXFCLE9BQU8sQ0FBQztRQUVsRDs7O1dBR0c7UUFDSCxXQUFNLEdBQVksS0FBSyxDQUFDO0tBdUJ6QjtJQXJCQyxJQUFJLFNBQVM7UUFDWCxJQUFJLFNBQVMsR0FBRyxhQUFhLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsU0FBUyxJQUFJLFdBQVcsQ0FBQztRQUMzQixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZixTQUFTLElBQUksUUFBUSxDQUFDO1FBQ3hCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixTQUFTLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoRixDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFhO1FBQ25CLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNuQixJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7OEdBeERVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLDhGQUtkLGNBQWMsZ0NBTWQsY0FBYyw2QkFNZCxjQUFjLHdHQ2pDcEMsK3ZCQWtCQSxtSERKWSxlQUFlLG1JQUFFLGVBQWUsNEZBQUUsZUFBZTs7MkZBRWhELHVCQUF1QjtrQkFSbkMsU0FBUztpQ0FDSSxJQUFJLFlBQ04sa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxlQUFlLEVBQUUsZUFBZSxFQUFFLGVBQWUsQ0FBQzs4QkFPdEIsT0FBTztzQkFBNUMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBTUUsTUFBTTtzQkFBM0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBTUUsS0FBSztzQkFBMUMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBSzNCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBTUcsWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJY29uTmFtZSB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvaWNvbic7XG5pbXBvcnQgeyBJdExpbmtDb21wb25lbnQgfSBmcm9tICcuLi8uLi9saW5rL2xpbmsuY29tcG9uZW50JztcbmltcG9ydCB7IEl0SWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbmltcG9ydCB7IGlucHV0VG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvY29lcmNpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdpdC1kcm9wZG93bi1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbSXRJY29uQ29tcG9uZW50LCBUcmFuc2xhdGVNb2R1bGUsIEl0TGlua0NvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIEl0RHJvcGRvd25JdGVtQ29tcG9uZW50IGV4dGVuZHMgSXRMaW5rQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFNob3cgZGl2aWRlclxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBpbnB1dFRvQm9vbGVhbiB9KSBkaXZpZGVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWN0aXZlIGl0ZW1cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgYWN0aXZlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVG8gaW5jcmVhc2UgdGhlIHNpemUgb2YgbGlua3NcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgbGFyZ2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiBpY29uIHRvIHNob3dcbiAgICovXG4gIEBJbnB1dCgpIGljb25OYW1lOiBJY29uTmFtZSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGljb24gcG9zaXRpb25cbiAgICogQGRlZmF1bHQgcmlnaHRcbiAgICovXG4gIEBJbnB1dCgpIGljb25Qb3NpdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JyA9ICdyaWdodCc7XG5cbiAgLyoqXG4gICAqIENoYW5nZSBpY29uIGNvbG9yIGlmIG1lbnUgaXMgZGFya1xuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgaXNEYXJrOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZ2V0IGxpbmtDbGFzcygpOiBzdHJpbmcge1xuICAgIGxldCBsaW5rQ2xhc3MgPSBgbGlzdC1pdGVtICR7dGhpcy5hY3RpdmUgPyAnYWN0aXZlJyA6ICdkcm9wZG93bi1pdGVtJ31gO1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICBsaW5rQ2xhc3MgKz0gJyBkaXNhYmxlZCc7XG4gICAgfVxuICAgIGlmICh0aGlzLmxhcmdlKSB7XG4gICAgICBsaW5rQ2xhc3MgKz0gJyBsYXJnZSc7XG4gICAgfVxuICAgIGlmICh0aGlzLmljb25OYW1lKSB7XG4gICAgICBsaW5rQ2xhc3MgKz0gYCAke3RoaXMuaWNvblBvc2l0aW9uID09PSAncmlnaHQnID8gJ3JpZ2h0LWljb24nIDogJ2xlZnQtaWNvbid9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gbGlua0NsYXNzO1xuICB9XG5cbiAgc2V0RGFyayhkYXJrOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEYXJrICE9PSBkYXJrKSB7XG4gICAgICB0aGlzLmlzRGFyayA9IGRhcms7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG59XG4iLCI8bGk+XG4gIEBpZiAoZGl2aWRlcikge1xuICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cbiAgfSBAZWxzZSB7XG4gICAgPGl0LWxpbmsgW2NsYXNzXT1cImxpbmtDbGFzc1wiIFtpZF09XCJpZFwiIFtocmVmXT1cImhyZWZcIiBbZXh0ZXJuYWxMaW5rXT1cImV4dGVybmFsTGlua1wiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgICAgQGlmIChpY29uTmFtZSAmJiBpY29uUG9zaXRpb24gPT09ICdsZWZ0Jykge1xuICAgICAgICA8aXQtaWNvbiBzaXplPVwic21cIiBbbmFtZV09XCJpY29uTmFtZVwiIFtjb2xvcl09XCJpc0RhcmsgPyAnbGlnaHQnIDogJ3ByaW1hcnknXCIgW3N2Z0NsYXNzXT1cImljb25Qb3NpdGlvblwiPjwvaXQtaWNvbj5cbiAgICAgIH1cbiAgICAgIDxzcGFuPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L3NwYW4+XG4gICAgICBAaWYgKGljb25OYW1lICYmIGljb25Qb3NpdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICA8aXQtaWNvbiBzaXplPVwic21cIiBbbmFtZV09XCJpY29uTmFtZVwiIFtjb2xvcl09XCJpc0RhcmsgPyAnbGlnaHQnIDogJ3ByaW1hcnknXCIgW3N2Z0NsYXNzXT1cImljb25Qb3NpdGlvblwiPjwvaXQtaWNvbj5cbiAgICAgIH1cbiAgICAgIEBpZiAoYWN0aXZlKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+e3sgJ2l0LmNvcmUuYWN0aXZlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgIH1cbiAgICA8L2l0LWxpbms+XG4gIH1cbjwvbGk+XG4iXX0=
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24taXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvZHJvcGRvd24vZHJvcGRvd24taXRlbS9kcm9wZG93bi1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9kcm9wZG93bi9kcm9wZG93bi1pdGVtL2Ryb3Bkb3duLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFVNUQsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGVBQWU7SUFSNUQ7O1FBZ0NFOzs7V0FHRztRQUNNLGlCQUFZLEdBQXFCLE9BQU8sQ0FBQztRQUVsRDs7V0FFRztRQUNNLFNBQUksR0FBK0IsUUFBUSxDQUFDO1FBRXJEOzs7V0FHRztRQUNILFdBQU0sR0FBWSxLQUFLLENBQUM7S0EwQnpCO0lBeEJDLElBQUksU0FBUztRQUNYLElBQUksU0FBUyxHQUFHLGFBQWEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4RSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDeEIsU0FBUyxJQUFJLFdBQVcsQ0FBQztRQUMzQixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsU0FBUyxJQUFJLFdBQVcsQ0FBQztRQUMzQixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZixTQUFTLElBQUksUUFBUSxDQUFDO1FBQ3hCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixTQUFTLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoRixDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFhO1FBQ25CLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNuQixJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7OEdBaEVVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLDhGQUtkLGNBQWMsZ0NBTWQsY0FBYyw2QkFNZCxjQUFjLHNIQ2pDcEMsK3ZCQWtCQSxtSERKWSxlQUFlLG1JQUFFLGVBQWUsNEZBQUUsZUFBZTs7MkZBRWhELHVCQUF1QjtrQkFSbkMsU0FBUztpQ0FDSSxJQUFJLFlBQ04sa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxlQUFlLEVBQUUsZUFBZSxFQUFFLGVBQWUsQ0FBQzs4QkFPdEIsT0FBTztzQkFBNUMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBTUUsTUFBTTtzQkFBM0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBTUUsS0FBSztzQkFBMUMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBSzNCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBTUcsWUFBWTtzQkFBcEIsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWNvbk5hbWUgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2ljb24nO1xuaW1wb3J0IHsgSXRMaW5rQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbGluay9saW5rLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJdEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQgeyBpbnB1dFRvQm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL2NvZXJjaW9uJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnaXQtZHJvcGRvd24taXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kcm9wZG93bi1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZHJvcGRvd24taXRlbS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0l0SWNvbkNvbXBvbmVudCwgVHJhbnNsYXRlTW9kdWxlLCBJdExpbmtDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBJdERyb3Bkb3duSXRlbUNvbXBvbmVudCBleHRlbmRzIEl0TGlua0NvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBTaG93IGRpdmlkZXJcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgZGl2aWRlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFjdGl2ZSBpdGVtXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGFjdGl2ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRvIGluY3JlYXNlIHRoZSBzaXplIG9mIGxpbmtzXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGxhcmdlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgaWNvbiB0byBzaG93XG4gICAqL1xuICBASW5wdXQoKSBpY29uTmFtZTogSWNvbk5hbWUgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBpY29uIHBvc2l0aW9uXG4gICAqIEBkZWZhdWx0IHJpZ2h0XG4gICAqL1xuICBASW5wdXQoKSBpY29uUG9zaXRpb246ICdsZWZ0JyB8ICdyaWdodCcgPSAncmlnaHQnO1xuXG4gIC8qKlxuICAgKiBEcm9wZG93biBtb2RlXG4gICAqL1xuICBASW5wdXQoKSBtb2RlPzogJ2J1dHRvbicgfCAnbGluaycgfCAnbmF2JyA9ICdidXR0b24nO1xuXG4gIC8qKlxuICAgKiBDaGFuZ2UgaWNvbiBjb2xvciBpZiBtZW51IGlzIGRhcmtcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGlzRGFyazogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGdldCBsaW5rQ2xhc3MoKTogc3RyaW5nIHtcbiAgICBsZXQgbGlua0NsYXNzID0gYGxpc3QtaXRlbSAke3RoaXMuYWN0aXZlID8gJ2FjdGl2ZScgOiAnZHJvcGRvd24taXRlbSd9YDtcbiAgICBpZiAodGhpcy5tb2RlID09PSAnbmF2Jykge1xuICAgICAgbGlua0NsYXNzICs9ICcgbmF2LWxpbmsnO1xuICAgIH1cbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgbGlua0NsYXNzICs9ICcgZGlzYWJsZWQnO1xuICAgIH1cbiAgICBpZiAodGhpcy5sYXJnZSkge1xuICAgICAgbGlua0NsYXNzICs9ICcgbGFyZ2UnO1xuICAgIH1cbiAgICBpZiAodGhpcy5pY29uTmFtZSkge1xuICAgICAgbGlua0NsYXNzICs9IGAgJHt0aGlzLmljb25Qb3NpdGlvbiA9PT0gJ3JpZ2h0JyA/ICdyaWdodC1pY29uJyA6ICdsZWZ0LWljb24nfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpbmtDbGFzcztcbiAgfVxuXG4gIHNldERhcmsoZGFyazogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGFyayAhPT0gZGFyaykge1xuICAgICAgdGhpcy5pc0RhcmsgPSBkYXJrO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxufVxuIiwiPGxpPlxuICBAaWYgKGRpdmlkZXIpIHtcbiAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XG4gIH0gQGVsc2Uge1xuICAgIDxpdC1saW5rIFtjbGFzc109XCJsaW5rQ2xhc3NcIiBbaWRdPVwiaWRcIiBbaHJlZl09XCJocmVmXCIgW2V4dGVybmFsTGlua109XCJleHRlcm5hbExpbmtcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICAgIEBpZiAoaWNvbk5hbWUgJiYgaWNvblBvc2l0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgICAgPGl0LWljb24gc2l6ZT1cInNtXCIgW25hbWVdPVwiaWNvbk5hbWVcIiBbY29sb3JdPVwiaXNEYXJrID8gJ2xpZ2h0JyA6ICdwcmltYXJ5J1wiIFtzdmdDbGFzc109XCJpY29uUG9zaXRpb25cIj48L2l0LWljb24+XG4gICAgICB9XG4gICAgICA8c3Bhbj48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9zcGFuPlxuICAgICAgQGlmIChpY29uTmFtZSAmJiBpY29uUG9zaXRpb24gPT09ICdyaWdodCcpIHtcbiAgICAgICAgPGl0LWljb24gc2l6ZT1cInNtXCIgW25hbWVdPVwiaWNvbk5hbWVcIiBbY29sb3JdPVwiaXNEYXJrID8gJ2xpZ2h0JyA6ICdwcmltYXJ5J1wiIFtzdmdDbGFzc109XCJpY29uUG9zaXRpb25cIj48L2l0LWljb24+XG4gICAgICB9XG4gICAgICBAaWYgKGFjdGl2ZSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPnt7ICdpdC5jb3JlLmFjdGl2ZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICB9XG4gICAgPC9pdC1saW5rPlxuICB9XG48L2xpPlxuIl19