uni-app-fe 0.1.2 → 0.1.4

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.
@@ -5,7 +5,7 @@ import { config } from 'devextreme-angular/common';
5
5
  import { locale, loadMessages } from 'devextreme-angular/common/core/localization';
6
6
  import esMessages from 'devextreme/localization/messages/es.json';
7
7
  import itMessages from 'devextreme/localization/messages/it.json';
8
- import { firstValueFrom } from 'rxjs/internal/firstValueFrom';
8
+ import { firstValueFrom } from 'rxjs';
9
9
  import { UniHttpManager } from 'uni-manager/http';
10
10
  import { UniLocaleManager } from 'uni-manager/locale';
11
11
 
@@ -1 +1 @@
1
- {"version":3,"file":"uni-app-fe-manager.mjs","sources":["../../../projects/uni-app-fe/manager/locale.manager.ts","../../../projects/uni-app-fe/manager/uni-app-fe-manager.ts"],"sourcesContent":["import { registerLocaleData } from '@angular/common';\r\nimport localeEsCl from '@angular/common/locales/es-CL';\r\nimport localeIt from '@angular/common/locales/it';\r\nimport { config } from 'devextreme-angular/common';\r\nimport { loadMessages, locale } from 'devextreme-angular/common/core/localization';\r\nimport esMessages from 'devextreme/localization/messages/es.json';\r\nimport itMessages from 'devextreme/localization/messages/it.json';\r\nimport { firstValueFrom } from 'rxjs/internal/firstValueFrom';\r\nimport { UniHttpManager } from 'uni-manager/http';\r\nimport { UniLocaleManager } from 'uni-manager/locale';\r\n\r\nexport class UniLocaleManagerAngular {\r\n /* ------------------------------------------------------------------------------- */\r\n /* ----------------------------------- Config ------------------------------------ */\r\n /* ------------------------------------------------------------------------------- */\r\n /**\r\n * Registra i dati specifici del locale nel framework Angular.\r\n * Necessario per garantire che le pipe built-in (es. DatePipe, CurrencyPipe) operino secondo le convenzioni del paese corrente.\r\n */\r\n public static setLocaleAngular(currentLocale: string): void {\r\n if (!currentLocale) return;\r\n\r\n /* Imposta i dati del locale corrente in Angular necessari per le pipe */\r\n if (currentLocale === 'it-IT') {\r\n registerLocaleData(localeIt, 'it-IT');\r\n } else if (currentLocale === 'es-CL') {\r\n registerLocaleData(localeEsCl, 'es-CL');\r\n }\r\n }\r\n\r\n /**\r\n * Inizializza la localizzazione specifica per i componenti DevExtreme.\r\n * Imposta il locale per le formattazioni native dei widget e carica i file di messaggi JSON per la traduzione dei testi di sistema.\r\n */\r\n public static setLocaleDevextreme(currentLocale: string): void {\r\n if (!currentLocale) return;\r\n\r\n /* Imposta la lingua */\r\n locale(currentLocale);\r\n\r\n /* Forza la valuta a mano in base alla stringa esatta */\r\n if (currentLocale === 'it-IT') {\r\n config({ defaultCurrency: 'EUR' });\r\n } else if (currentLocale === 'es-CL') {\r\n config({ defaultCurrency: 'CLP' });\r\n }\r\n\r\n /* Carica i messaggi di traduzione */\r\n switch (UniLocaleManager.language) {\r\n case 'it': {\r\n loadMessages(itMessages);\r\n break;\r\n }\r\n case 'es': {\r\n loadMessages(esMessages);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /* ------------------------------------------------------------------------------- */\r\n /* ------------------------------------ Http ------------------------------------- */\r\n /* ------------------------------------------------------------------------------- */\r\n /**\r\n * Recupera il dizionario delle traduzioni dal server remoto in base al locale corrente.\r\n * Una volta completata la chiamata HTTP, aggiorna automaticamente lo store interno\r\n * tramite il metodo setTranslations.\r\n */\r\n public static async fetchTranslation(currentLocale: string): Promise<void> {\r\n if (!currentLocale) return;\r\n\r\n const res = await firstValueFrom(\r\n UniHttpManager.read$<{\r\n locale: string;\r\n localesSupported: string[];\r\n translations: Record<string, string>;\r\n }>({\r\n ref: 'locale',\r\n path: `/Locale/${currentLocale}`,\r\n }),\r\n );\r\n\r\n UniLocaleManager.setLocalesSupported(res?.localesSupported);\r\n UniLocaleManager.setTranslations(\r\n Object.fromEntries(\r\n Object.entries(res?.translations ?? {}).map((x) => [x[0].toLowerCase(), x[1]]),\r\n ),\r\n );\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;MAWa,uBAAuB,CAAA;;;;AAIlC;;;AAGG;IACI,OAAO,gBAAgB,CAAC,aAAqB,EAAA;AAClD,QAAA,IAAI,CAAC,aAAa;YAAE;;AAGpB,QAAA,IAAI,aAAa,KAAK,OAAO,EAAE;AAC7B,YAAA,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC;QACvC;AAAO,aAAA,IAAI,aAAa,KAAK,OAAO,EAAE;AACpC,YAAA,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAAC;QACzC;IACF;AAEA;;;AAGG;IACI,OAAO,mBAAmB,CAAC,aAAqB,EAAA;AACrD,QAAA,IAAI,CAAC,aAAa;YAAE;;QAGpB,MAAM,CAAC,aAAa,CAAC;;AAGrB,QAAA,IAAI,aAAa,KAAK,OAAO,EAAE;AAC7B,YAAA,MAAM,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;QACpC;AAAO,aAAA,IAAI,aAAa,KAAK,OAAO,EAAE;AACpC,YAAA,MAAM,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;QACpC;;AAGA,QAAA,QAAQ,gBAAgB,CAAC,QAAQ;YAC/B,KAAK,IAAI,EAAE;gBACT,YAAY,CAAC,UAAU,CAAC;gBACxB;YACF;YACA,KAAK,IAAI,EAAE;gBACT,YAAY,CAAC,UAAU,CAAC;gBACxB;YACF;;IAEJ;;;;AAKA;;;;AAIG;AACI,IAAA,aAAa,gBAAgB,CAAC,aAAqB,EAAA;AACxD,QAAA,IAAI,CAAC,aAAa;YAAE;QAEpB,MAAM,GAAG,GAAG,MAAM,cAAc,CAC9B,cAAc,CAAC,KAAK,CAIjB;AACD,YAAA,GAAG,EAAE,QAAQ;YACb,IAAI,EAAE,CAAA,QAAA,EAAW,aAAa,CAAA,CAAE;AACjC,SAAA,CAAC,CACH;AAED,QAAA,gBAAgB,CAAC,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,CAAC;AAC3D,QAAA,gBAAgB,CAAC,eAAe,CAC9B,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC/E,CACF;IACH;AACD;;ACzFD;;AAEG;;;;"}
1
+ {"version":3,"file":"uni-app-fe-manager.mjs","sources":["../../../projects/uni-app-fe/manager/locale.manager.ts","../../../projects/uni-app-fe/manager/uni-app-fe-manager.ts"],"sourcesContent":["import { registerLocaleData } from '@angular/common';\r\nimport localeEsCl from '@angular/common/locales/es-CL';\r\nimport localeIt from '@angular/common/locales/it';\r\nimport { config } from 'devextreme-angular/common';\r\nimport { loadMessages, locale } from 'devextreme-angular/common/core/localization';\r\nimport esMessages from 'devextreme/localization/messages/es.json';\r\nimport itMessages from 'devextreme/localization/messages/it.json';\r\nimport { firstValueFrom } from 'rxjs';\r\nimport { UniHttpManager } from 'uni-manager/http';\r\nimport { UniLocaleManager } from 'uni-manager/locale';\r\n\r\nexport class UniLocaleManagerAngular {\r\n /* ------------------------------------------------------------------------------- */\r\n /* ----------------------------------- Config ------------------------------------ */\r\n /* ------------------------------------------------------------------------------- */\r\n /**\r\n * Registra i dati specifici del locale nel framework Angular.\r\n * Necessario per garantire che le pipe built-in (es. DatePipe, CurrencyPipe) operino secondo le convenzioni del paese corrente.\r\n */\r\n public static setLocaleAngular(currentLocale: string): void {\r\n if (!currentLocale) return;\r\n\r\n /* Imposta i dati del locale corrente in Angular necessari per le pipe */\r\n if (currentLocale === 'it-IT') {\r\n registerLocaleData(localeIt, 'it-IT');\r\n } else if (currentLocale === 'es-CL') {\r\n registerLocaleData(localeEsCl, 'es-CL');\r\n }\r\n }\r\n\r\n /**\r\n * Inizializza la localizzazione specifica per i componenti DevExtreme.\r\n * Imposta il locale per le formattazioni native dei widget e carica i file di messaggi JSON per la traduzione dei testi di sistema.\r\n */\r\n public static setLocaleDevextreme(currentLocale: string): void {\r\n if (!currentLocale) return;\r\n\r\n /* Imposta la lingua */\r\n locale(currentLocale);\r\n\r\n /* Forza la valuta a mano in base alla stringa esatta */\r\n if (currentLocale === 'it-IT') {\r\n config({ defaultCurrency: 'EUR' });\r\n } else if (currentLocale === 'es-CL') {\r\n config({ defaultCurrency: 'CLP' });\r\n }\r\n\r\n /* Carica i messaggi di traduzione */\r\n switch (UniLocaleManager.language) {\r\n case 'it': {\r\n loadMessages(itMessages);\r\n break;\r\n }\r\n case 'es': {\r\n loadMessages(esMessages);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /* ------------------------------------------------------------------------------- */\r\n /* ------------------------------------ Http ------------------------------------- */\r\n /* ------------------------------------------------------------------------------- */\r\n /**\r\n * Recupera il dizionario delle traduzioni dal server remoto in base al locale corrente.\r\n * Una volta completata la chiamata HTTP, aggiorna automaticamente lo store interno\r\n * tramite il metodo setTranslations.\r\n */\r\n public static async fetchTranslation(currentLocale: string): Promise<void> {\r\n if (!currentLocale) return;\r\n\r\n const res = await firstValueFrom(\r\n UniHttpManager.read$<{\r\n locale: string;\r\n localesSupported: string[];\r\n translations: Record<string, string>;\r\n }>({\r\n ref: 'locale',\r\n path: `/Locale/${currentLocale}`,\r\n }),\r\n );\r\n\r\n UniLocaleManager.setLocalesSupported(res?.localesSupported);\r\n UniLocaleManager.setTranslations(\r\n Object.fromEntries(\r\n Object.entries(res?.translations ?? {}).map((x) => [x[0].toLowerCase(), x[1]]),\r\n ),\r\n );\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;MAWa,uBAAuB,CAAA;;;;AAIlC;;;AAGG;IACI,OAAO,gBAAgB,CAAC,aAAqB,EAAA;AAClD,QAAA,IAAI,CAAC,aAAa;YAAE;;AAGpB,QAAA,IAAI,aAAa,KAAK,OAAO,EAAE;AAC7B,YAAA,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC;QACvC;AAAO,aAAA,IAAI,aAAa,KAAK,OAAO,EAAE;AACpC,YAAA,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAAC;QACzC;IACF;AAEA;;;AAGG;IACI,OAAO,mBAAmB,CAAC,aAAqB,EAAA;AACrD,QAAA,IAAI,CAAC,aAAa;YAAE;;QAGpB,MAAM,CAAC,aAAa,CAAC;;AAGrB,QAAA,IAAI,aAAa,KAAK,OAAO,EAAE;AAC7B,YAAA,MAAM,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;QACpC;AAAO,aAAA,IAAI,aAAa,KAAK,OAAO,EAAE;AACpC,YAAA,MAAM,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;QACpC;;AAGA,QAAA,QAAQ,gBAAgB,CAAC,QAAQ;YAC/B,KAAK,IAAI,EAAE;gBACT,YAAY,CAAC,UAAU,CAAC;gBACxB;YACF;YACA,KAAK,IAAI,EAAE;gBACT,YAAY,CAAC,UAAU,CAAC;gBACxB;YACF;;IAEJ;;;;AAKA;;;;AAIG;AACI,IAAA,aAAa,gBAAgB,CAAC,aAAqB,EAAA;AACxD,QAAA,IAAI,CAAC,aAAa;YAAE;QAEpB,MAAM,GAAG,GAAG,MAAM,cAAc,CAC9B,cAAc,CAAC,KAAK,CAIjB;AACD,YAAA,GAAG,EAAE,QAAQ;YACb,IAAI,EAAE,CAAA,QAAA,EAAW,aAAa,CAAA,CAAE;AACjC,SAAA,CAAC,CACH;AAED,QAAA,gBAAgB,CAAC,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,CAAC;AAC3D,QAAA,gBAAgB,CAAC,eAAe,CAC9B,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC/E,CACF;IACH;AACD;;ACzFD;;AAEG;;;;"}
@@ -133,25 +133,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImpo
133
133
  }]
134
134
  }] });
135
135
 
136
+ /**
137
+ * Pipe per traduzioni che supportano sintassi Markdown-like e HTML.
138
+ * ```text
139
+ * Regole di formattazione:
140
+ * - **testo** => Grassetto
141
+ * - *testo* => Corsivo
142
+ * - `testo` => Codice
143
+ * - [testo](url) => Link
144
+ * - ==testo== => Evidenziato
145
+ * - {testo|colore} => Colore dinamico
146
+ * ```
147
+ * Uso: {{ 'KEY' | translate_html: { prefix: 'btn', params: { name: 'Mario' } } }}
148
+ */
136
149
  class UniTranslateHtmlPipe {
137
150
  constructor() {
138
151
  /* Service */
139
152
  this.sanitizer = inject(DomSanitizer);
153
+ /* Constant */
154
+ this.MARKDOWN_RULES = [
155
+ { regex: /\{\s*(.*?)\s*\|\s*(\w+)\s*\}/g, replacement: '<span style="color: $2">$1</span>' }, // Colore
156
+ { regex: /\*\*(.*?)\*\*/g, replacement: '<b>$1</b>' }, // Grassetto
157
+ { regex: /\*(.*?)\*/g, replacement: '<i>$1</i>' }, // Corsivo
158
+ { regex: /`(.*?)`/g, replacement: '<code>$1</code>' }, // Codice
159
+ { regex: /\[(.*?)\]\((.*?)\)/g, replacement: '<a href="$2" target="_blank">$1</a>' }, // Link
160
+ { regex: /==(.*?)==/g, replacement: '<mark>$1</mark>' }, // Evidenziato
161
+ ];
140
162
  }
141
- transform(key, params) {
163
+ transform(key, options) {
142
164
  if (!key)
143
165
  return '';
144
- if (params?.isToTranslate === false)
166
+ if (options?.isToTranslate === false)
145
167
  return key;
146
- let translation = UniLocaleManager.translate(key, params?.prefix ?? 'lbl', params?.interpolationParameters);
147
- // Applica le trasformazioni Markdown-like in HTML
148
- translation = translation
149
- .replaceAll(/\*\*(.*?)\*\*/g, '<b>$1</b>') // Converte **testo** in grassetto
150
- .replaceAll(/\*(.*?)\*/g, '<i>$1</i>') // Converte *testo* in corsivo
151
- .replaceAll(/`(.*?)`/g, '<code>$1</code>') // Converte `testo` in formato codice
152
- .replaceAll(/\[(.*?)\]\((.*?)\)/g, '<a href="$2" target="_blank">$1</a>') // Converte [testo](url) in link
153
- .replaceAll(/==(.*?)==/g, '<mark>$1</mark>') // Converte ==testo== in evidenziato
154
- .replaceAll(/\{(\w+)\|(\w+)\}/g, '<span style="color: $2">$1</span>'); // Converte {testo|colore} in span colorato
168
+ let translation = UniLocaleManager.translate(key, options?.prefix ?? 'lbl', options?.params);
169
+ for (const rule of this.MARKDOWN_RULES) {
170
+ translation = translation.replace(rule.regex, rule.replacement);
171
+ }
155
172
  return this.sanitizer.bypassSecurityTrustHtml(translation);
156
173
  }
157
174
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: UniTranslateHtmlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
@@ -166,10 +183,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImpo
166
183
  }] });
167
184
 
168
185
  class UniTranslateInlineParametersPipe {
169
- transform(key, splitChar, params) {
186
+ transform(key, splitChar, options) {
170
187
  if (!key)
171
188
  return '';
172
- if (params?.isToTranslate === false)
189
+ if (options?.isToTranslate === false)
173
190
  return key;
174
191
  return UniLocaleManager.translateInlineParams(key, splitChar);
175
192
  }
@@ -185,12 +202,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImpo
185
202
  }] });
186
203
 
187
204
  class UniTranslatePipe {
188
- transform(key, params) {
205
+ transform(key, options) {
189
206
  if (!key)
190
207
  return '';
191
- if (params?.isToTranslate === false)
208
+ if (options?.isToTranslate === false)
192
209
  return key;
193
- return UniLocaleManager.translate(key, params?.prefix ?? 'lbl', params?.interpolationParameters);
210
+ return UniLocaleManager.translate(key, options?.prefix ?? 'lbl', options?.params);
194
211
  }
195
212
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: UniTranslatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
196
213
  static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.12", ngImport: i0, type: UniTranslatePipe, isStandalone: true, name: "translate" }); }
@@ -1 +1 @@
1
- {"version":3,"file":"uni-app-fe-pipe.mjs","sources":["../../../projects/uni-app-fe/pipe/fa-icon-transform.pipe.ts","../../../projects/uni-app-fe/pipe/uni-capitalize.pipe.ts","../../../projects/uni-app-fe/pipe/uni-control-validity.pipe.ts","../../../projects/uni-app-fe/pipe/uni-get-combo.pipe.ts","../../../projects/uni-app-fe/pipe/uni-labelize.pipe.ts","../../../projects/uni-app-fe/pipe/uni-pad.pipe.ts","../../../projects/uni-app-fe/pipe/uni-replace.pipe.ts","../../../projects/uni-app-fe/pipe/uni-translate-html.pipe.ts","../../../projects/uni-app-fe/pipe/uni-translate-inline-parameters.pipe.ts","../../../projects/uni-app-fe/pipe/uni-translate.pipe.ts","../../../projects/uni-app-fe/pipe/uni-truncate-number.pipe.ts","../../../projects/uni-app-fe/pipe/uni-app-fe-pipe.ts"],"sourcesContent":["import { Pipe, type PipeTransform } from '@angular/core';\r\nimport { icon } from '@fortawesome/fontawesome-svg-core';\r\nimport { IconDefinition } from '@fortawesome/free-solid-svg-icons';\r\n\r\n@Pipe({\r\n name: 'icon_transform',\r\n standalone: true,\r\n})\r\nexport class FaIconTransformPipe implements PipeTransform {\r\n transform(iconDefinition: IconDefinition): string {\r\n return icon(iconDefinition).html[0];\r\n }\r\n}\r\n","import { Pipe, type PipeTransform } from '@angular/core';\r\nimport { UniTypeStringManager } from 'uni-manager/type';\r\n\r\n@Pipe({\r\n name: 'capitalize',\r\n standalone: true,\r\n})\r\nexport class UniCapitalizePipe implements PipeTransform {\r\n transform(key: string | null | undefined): string {\r\n if (!key) return '';\r\n\r\n return UniTypeStringManager.toCapitalize(key);\r\n }\r\n}\r\n","import { Pipe, type PipeTransform } from '@angular/core';\r\nimport { ValidationError } from '@angular/forms/signals';\r\nimport { UniLocaleManager } from 'uni-manager/locale';\r\nimport { UniTypeStringManager } from 'uni-manager/type';\r\n\r\n@Pipe({\r\n name: 'control_validity',\r\n standalone: true,\r\n})\r\nexport class UniControlValidityPipe implements PipeTransform {\r\n transform(\r\n errors: ValidationError.WithFieldTree[] | null | undefined,\r\n ): { message: string; type: string }[] {\r\n if (!errors || errors.length === 0) return [];\r\n\r\n return errors.map((error) => {\r\n return {\r\n type: error.kind,\r\n message: UniLocaleManager.translate(UniTypeStringManager.toLabelize(error.kind)),\r\n };\r\n });\r\n }\r\n}\r\n","import { Pipe, type PipeTransform } from '@angular/core';\r\nimport { Combo } from 'uni-model-type';\r\n\r\n@Pipe({\r\n name: 'get_combo',\r\n standalone: true,\r\n})\r\nexport class UniGetComboPipe implements PipeTransform {\r\n transform(id: number | null | undefined, combos: Combo[] | undefined): Combo | undefined {\r\n if (!id) return undefined;\r\n\r\n return combos?.find((x) => x.id === id);\r\n }\r\n}\r\n","import { Pipe, type PipeTransform } from '@angular/core';\r\nimport { UniTypeStringManager } from 'uni-manager/type';\r\n\r\n@Pipe({\r\n name: 'labelize',\r\n standalone: true,\r\n})\r\nexport class UniLabelizePipe implements PipeTransform {\r\n transform(key: string | null | undefined, prefix = 'lbl', isToLabelize?: boolean): string {\r\n if (!key) return '';\r\n\r\n if (isToLabelize === false) return key;\r\n\r\n return UniTypeStringManager.toLabelize(key, prefix);\r\n }\r\n}\r\n","import { Pipe, type PipeTransform } from '@angular/core';\r\nimport { UniTypeNumberManager } from 'uni-manager/type';\r\n\r\n@Pipe({\r\n name: 'pad',\r\n standalone: true,\r\n})\r\nexport class UniPadPipe implements PipeTransform {\r\n transform(value: string | number | null | undefined, count: number, character = '0'): string {\r\n if (!value) return '';\r\n\r\n return UniTypeNumberManager.toPad(value, count, character);\r\n }\r\n}\r\n","import { Pipe, type PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'replace',\r\n standalone: true,\r\n})\r\nexport class UniReplacePipe implements PipeTransform {\r\n transform(\r\n key: string | null | undefined,\r\n values: { searchValue: string; replaceValue?: string }[],\r\n ): string {\r\n if (!key) return '';\r\n\r\n let fixedKey = key.trim();\r\n\r\n for (const value of values) {\r\n fixedKey = fixedKey.replaceAll(value.searchValue, value.replaceValue ?? '');\r\n }\r\n\r\n return fixedKey;\r\n }\r\n}\r\n","import { inject, Pipe, type PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { UniLocaleManager } from 'uni-manager/locale';\r\n\r\n@Pipe({\r\n name: 'translate_html',\r\n standalone: true,\r\n})\r\nexport class UniTranslateHtmlPipe implements PipeTransform {\r\n /* Service */\r\n private sanitizer = inject(DomSanitizer);\r\n\r\n transform(\r\n key: string | null | undefined,\r\n params?: {\r\n prefix?: string;\r\n interpolationParameters?: Record<string, string | number | Date>;\r\n isToTranslate?: boolean;\r\n },\r\n ): SafeHtml {\r\n if (!key) return '';\r\n\r\n if (params?.isToTranslate === false) return key;\r\n\r\n let translation = UniLocaleManager.translate(\r\n key,\r\n params?.prefix ?? 'lbl',\r\n params?.interpolationParameters,\r\n );\r\n // Applica le trasformazioni Markdown-like in HTML\r\n translation = translation\r\n .replaceAll(/\\*\\*(.*?)\\*\\*/g, '<b>$1</b>') // Converte **testo** in grassetto\r\n .replaceAll(/\\*(.*?)\\*/g, '<i>$1</i>') // Converte *testo* in corsivo\r\n .replaceAll(/`(.*?)`/g, '<code>$1</code>') // Converte `testo` in formato codice\r\n .replaceAll(/\\[(.*?)\\]\\((.*?)\\)/g, '<a href=\"$2\" target=\"_blank\">$1</a>') // Converte [testo](url) in link\r\n .replaceAll(/==(.*?)==/g, '<mark>$1</mark>') // Converte ==testo== in evidenziato\r\n .replaceAll(/\\{(\\w+)\\|(\\w+)\\}/g, '<span style=\"color: $2\">$1</span>'); // Converte {testo|colore} in span colorato\r\n\r\n return this.sanitizer.bypassSecurityTrustHtml(translation);\r\n }\r\n}\r\n","import { Pipe, type PipeTransform } from '@angular/core';\r\nimport { UniLocaleManager } from 'uni-manager/locale';\r\n\r\n@Pipe({\r\n name: 'translate_inline_parameters',\r\n standalone: true,\r\n})\r\nexport class UniTranslateInlineParametersPipe implements PipeTransform {\r\n transform(\r\n key: string | null | undefined,\r\n splitChar: string,\r\n params?: { isToTranslate?: boolean },\r\n ): string {\r\n if (!key) return '';\r\n\r\n if (params?.isToTranslate === false) return key;\r\n\r\n return UniLocaleManager.translateInlineParams(key, splitChar);\r\n }\r\n}\r\n","import { Pipe, type PipeTransform } from '@angular/core';\r\nimport { UniLocaleManager } from 'uni-manager/locale';\r\n\r\n@Pipe({\r\n name: 'translate',\r\n standalone: true,\r\n})\r\nexport class UniTranslatePipe implements PipeTransform {\r\n transform(\r\n key: string | null | undefined,\r\n params?: {\r\n prefix?: string;\r\n interpolationParameters?: Record<string, string | number | Date>;\r\n isToTranslate?: boolean;\r\n },\r\n ): string {\r\n if (!key) return '';\r\n\r\n if (params?.isToTranslate === false) return key;\r\n\r\n return UniLocaleManager.translate(\r\n key,\r\n params?.prefix ?? 'lbl',\r\n params?.interpolationParameters,\r\n );\r\n }\r\n}\r\n","import { Pipe, type PipeTransform } from '@angular/core';\r\nimport { UniTypeNumberManager } from 'uni-manager/type';\r\n\r\n@Pipe({\r\n name: 'truncate_number',\r\n standalone: true,\r\n})\r\nexport class UniTruncateNumberPipe implements PipeTransform {\r\n transform(\r\n value: number | null | undefined,\r\n decimalDigits = 0,\r\n maxIntegerDigits?: number,\r\n ): string {\r\n if (value === null || value === undefined || Number.isNaN(value)) {\r\n return '';\r\n }\r\n\r\n return UniTypeNumberManager.toTruncateAndAdUdm(value, decimalDigits, maxIntegerDigits);\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uni-app-fe-pipe.mjs","sources":["../../../projects/uni-app-fe/pipe/fa-icon-transform.pipe.ts","../../../projects/uni-app-fe/pipe/uni-capitalize.pipe.ts","../../../projects/uni-app-fe/pipe/uni-control-validity.pipe.ts","../../../projects/uni-app-fe/pipe/uni-get-combo.pipe.ts","../../../projects/uni-app-fe/pipe/uni-labelize.pipe.ts","../../../projects/uni-app-fe/pipe/uni-pad.pipe.ts","../../../projects/uni-app-fe/pipe/uni-replace.pipe.ts","../../../projects/uni-app-fe/pipe/uni-translate-html.pipe.ts","../../../projects/uni-app-fe/pipe/uni-translate-inline-parameters.pipe.ts","../../../projects/uni-app-fe/pipe/uni-translate.pipe.ts","../../../projects/uni-app-fe/pipe/uni-truncate-number.pipe.ts","../../../projects/uni-app-fe/pipe/uni-app-fe-pipe.ts"],"sourcesContent":["import { Pipe, type PipeTransform } from '@angular/core';\r\nimport { icon } from '@fortawesome/fontawesome-svg-core';\r\nimport { IconDefinition } from '@fortawesome/free-solid-svg-icons';\r\n\r\n@Pipe({\r\n name: 'icon_transform',\r\n standalone: true,\r\n})\r\nexport class FaIconTransformPipe implements PipeTransform {\r\n transform(iconDefinition: IconDefinition): string {\r\n return icon(iconDefinition).html[0];\r\n }\r\n}\r\n","import { Pipe, type PipeTransform } from '@angular/core';\r\nimport { UniTypeStringManager } from 'uni-manager/type';\r\n\r\n@Pipe({\r\n name: 'capitalize',\r\n standalone: true,\r\n})\r\nexport class UniCapitalizePipe implements PipeTransform {\r\n transform(key: string | null | undefined): string {\r\n if (!key) return '';\r\n\r\n return UniTypeStringManager.toCapitalize(key);\r\n }\r\n}\r\n","import { Pipe, type PipeTransform } from '@angular/core';\r\nimport { ValidationError } from '@angular/forms/signals';\r\nimport { UniLocaleManager } from 'uni-manager/locale';\r\nimport { UniTypeStringManager } from 'uni-manager/type';\r\n\r\n@Pipe({\r\n name: 'control_validity',\r\n standalone: true,\r\n})\r\nexport class UniControlValidityPipe implements PipeTransform {\r\n transform(\r\n errors: ValidationError.WithFieldTree[] | null | undefined,\r\n ): { message: string; type: string }[] {\r\n if (!errors || errors.length === 0) return [];\r\n\r\n return errors.map((error) => {\r\n return {\r\n type: error.kind,\r\n message: UniLocaleManager.translate(UniTypeStringManager.toLabelize(error.kind)),\r\n };\r\n });\r\n }\r\n}\r\n","import { Pipe, type PipeTransform } from '@angular/core';\r\nimport type { Combo } from 'uni-model-type/type';\r\n\r\n@Pipe({\r\n name: 'get_combo',\r\n standalone: true,\r\n})\r\nexport class UniGetComboPipe implements PipeTransform {\r\n transform(id: number | null | undefined, combos: Combo[] | undefined): Combo | undefined {\r\n if (!id) return undefined;\r\n\r\n return combos?.find((x) => x.id === id);\r\n }\r\n}\r\n","import { Pipe, type PipeTransform } from '@angular/core';\r\nimport { UniTypeStringManager } from 'uni-manager/type';\r\n\r\n@Pipe({\r\n name: 'labelize',\r\n standalone: true,\r\n})\r\nexport class UniLabelizePipe implements PipeTransform {\r\n transform(key: string | null | undefined, prefix = 'lbl', isToLabelize?: boolean): string {\r\n if (!key) return '';\r\n\r\n if (isToLabelize === false) return key;\r\n\r\n return UniTypeStringManager.toLabelize(key, prefix);\r\n }\r\n}\r\n","import { Pipe, type PipeTransform } from '@angular/core';\r\nimport { UniTypeNumberManager } from 'uni-manager/type';\r\n\r\n@Pipe({\r\n name: 'pad',\r\n standalone: true,\r\n})\r\nexport class UniPadPipe implements PipeTransform {\r\n transform(value: string | number | null | undefined, count: number, character = '0'): string {\r\n if (!value) return '';\r\n\r\n return UniTypeNumberManager.toPad(value, count, character);\r\n }\r\n}\r\n","import { Pipe, type PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'replace',\r\n standalone: true,\r\n})\r\nexport class UniReplacePipe implements PipeTransform {\r\n transform(\r\n key: string | null | undefined,\r\n values: { searchValue: string; replaceValue?: string }[],\r\n ): string {\r\n if (!key) return '';\r\n\r\n let fixedKey = key.trim();\r\n\r\n for (const value of values) {\r\n fixedKey = fixedKey.replaceAll(value.searchValue, value.replaceValue ?? '');\r\n }\r\n\r\n return fixedKey;\r\n }\r\n}\r\n","import { inject, Pipe, type PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { UniLocaleManager } from 'uni-manager/locale';\r\n\r\n/**\r\n * Pipe per traduzioni che supportano sintassi Markdown-like e HTML.\r\n * ```text\r\n * Regole di formattazione:\r\n * - **testo** => Grassetto\r\n * - *testo* => Corsivo\r\n * - `testo` => Codice\r\n * - [testo](url) => Link\r\n * - ==testo== => Evidenziato\r\n * - {testo|colore} => Colore dinamico\r\n * ```\r\n * Uso: {{ 'KEY' | translate_html: { prefix: 'btn', params: { name: 'Mario' } } }}\r\n */\r\n@Pipe({\r\n name: 'translate_html',\r\n standalone: true,\r\n})\r\nexport class UniTranslateHtmlPipe implements PipeTransform {\r\n /* Service */\r\n private readonly sanitizer = inject(DomSanitizer);\r\n\r\n /* Constant */\r\n private readonly MARKDOWN_RULES = [\r\n { regex: /\\{\\s*(.*?)\\s*\\|\\s*(\\w+)\\s*\\}/g, replacement: '<span style=\"color: $2\">$1</span>' }, // Colore\r\n { regex: /\\*\\*(.*?)\\*\\*/g, replacement: '<b>$1</b>' }, // Grassetto\r\n { regex: /\\*(.*?)\\*/g, replacement: '<i>$1</i>' }, // Corsivo\r\n { regex: /`(.*?)`/g, replacement: '<code>$1</code>' }, // Codice\r\n { regex: /\\[(.*?)\\]\\((.*?)\\)/g, replacement: '<a href=\"$2\" target=\"_blank\">$1</a>' }, // Link\r\n { regex: /==(.*?)==/g, replacement: '<mark>$1</mark>' }, // Evidenziato\r\n ];\r\n\r\n transform(\r\n key: string | null | undefined,\r\n options?: {\r\n prefix?: string;\r\n params?: Record<string, string | number | Date>;\r\n isToTranslate?: boolean;\r\n },\r\n ): SafeHtml {\r\n if (!key) return '';\r\n\r\n if (options?.isToTranslate === false) return key;\r\n\r\n let translation = UniLocaleManager.translate(key, options?.prefix ?? 'lbl', options?.params);\r\n\r\n for (const rule of this.MARKDOWN_RULES) {\r\n translation = translation.replace(rule.regex, rule.replacement);\r\n }\r\n\r\n return this.sanitizer.bypassSecurityTrustHtml(translation);\r\n }\r\n}\r\n","import { Pipe, type PipeTransform } from '@angular/core';\r\nimport { UniLocaleManager } from 'uni-manager/locale';\r\n\r\n@Pipe({\r\n name: 'translate_inline_parameters',\r\n standalone: true,\r\n})\r\nexport class UniTranslateInlineParametersPipe implements PipeTransform {\r\n transform(\r\n key: string | null | undefined,\r\n splitChar: string,\r\n options?: { isToTranslate?: boolean },\r\n ): string {\r\n if (!key) return '';\r\n\r\n if (options?.isToTranslate === false) return key;\r\n\r\n return UniLocaleManager.translateInlineParams(key, splitChar);\r\n }\r\n}\r\n","import { Pipe, type PipeTransform } from '@angular/core';\r\nimport { UniLocaleManager } from 'uni-manager/locale';\r\n\r\n@Pipe({\r\n name: 'translate',\r\n standalone: true,\r\n})\r\nexport class UniTranslatePipe implements PipeTransform {\r\n transform(\r\n key: string | null | undefined,\r\n options?: {\r\n prefix?: string;\r\n params?: Record<string, string | number | Date>;\r\n isToTranslate?: boolean;\r\n },\r\n ): string {\r\n if (!key) return '';\r\n\r\n if (options?.isToTranslate === false) return key;\r\n\r\n return UniLocaleManager.translate(key, options?.prefix ?? 'lbl', options?.params);\r\n }\r\n}\r\n","import { Pipe, type PipeTransform } from '@angular/core';\r\nimport { UniTypeNumberManager } from 'uni-manager/type';\r\n\r\n@Pipe({\r\n name: 'truncate_number',\r\n standalone: true,\r\n})\r\nexport class UniTruncateNumberPipe implements PipeTransform {\r\n transform(\r\n value: number | null | undefined,\r\n decimalDigits = 0,\r\n maxIntegerDigits?: number,\r\n ): string {\r\n if (value === null || value === undefined || Number.isNaN(value)) {\r\n return '';\r\n }\r\n\r\n return UniTypeNumberManager.toTruncateAndAdUdm(value, decimalDigits, maxIntegerDigits);\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -381,7 +381,10 @@ class UniToastService {
381
381
  show: { type: 'fade', duration: 400, from: 0, to: 1 },
382
382
  hide: { type: 'fade', duration: 300, from: 1, to: 0 },
383
383
  },
384
- }, { position: 'bottom center', direction: 'up-push' });
384
+ }, {
385
+ position: 'bottom center',
386
+ direction: 'up-push',
387
+ });
385
388
  }
386
389
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: UniToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
387
390
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: UniToastService, providedIn: 'root' }); }
@@ -1 +1 @@
1
- {"version":3,"file":"uni-app-fe-service.mjs","sources":["../../../projects/uni-app-fe/service/uni-loader.service.ts","../../../projects/uni-app-fe/service/uni-popup.service.ts","../../../projects/uni-app-fe/service/uni-toast.service.ts","../../../projects/uni-app-fe/service/uni-app-fe-service.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport LoadPanel from 'devextreme/ui/load_panel';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UniLoaderService {\r\n /* Load Panel */\r\n private loadPanel: LoadPanel;\r\n\r\n constructor() {\r\n const container = document.querySelector('body');\r\n const content: HTMLDivElement = document.createElement('div');\r\n container!.append(content);\r\n\r\n this.loadPanel = new LoadPanel(content, {\r\n showIndicator: true,\r\n showPane: true,\r\n shading: true,\r\n shadingColor: 'rgba(0,0,0,0.4)',\r\n });\r\n }\r\n\r\n /* ------------------------------------- Methods ------------------------------------- */\r\n public show(): void {\r\n this.loadPanel.show();\r\n }\r\n\r\n public hide(): void {\r\n this.loadPanel.hide();\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { ClickEvent } from 'devextreme/ui/button_types';\r\nimport { custom } from 'devextreme/ui/dialog';\r\nimport Popup, { ToolbarItem } from 'devextreme/ui/popup';\r\nimport { UniLocaleManager } from 'uni-manager/locale';\r\n\r\nexport type PopupType = 'info' | 'warning' | 'error';\r\n\r\nexport type Instance = Popup<{\r\n title: string;\r\n showTitle: boolean;\r\n deferRendering: boolean;\r\n maxHeight: number;\r\n maxWidth: number;\r\n dragEnabled: boolean;\r\n showCloseButton: boolean;\r\n hideOnOutsideClick: boolean;\r\n shading: boolean;\r\n wrapperAttr: { id: string; class: string };\r\n toolbarItems: ToolbarItem[];\r\n contentTemplate: () => HTMLDivElement;\r\n onHidden: () => Promise<void>;\r\n}>;\r\n\r\nexport type PopupContent =\r\n | {\r\n message: string;\r\n html?: never;\r\n }\r\n | {\r\n message?: never;\r\n html: string;\r\n };\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UniPopupService {\r\n /* Variables */\r\n private instances = new Map<string, Instance>();\r\n\r\n /* -------------------------------- Methods: popup -------------------------------- */\r\n public async createPopupConfirm(\r\n args: PopupContent & {\r\n onConfirm: (e: ClickEvent) => void;\r\n lblTitle?: string;\r\n maxWidth?: number;\r\n },\r\n ): Promise<void> {\r\n const { message, html, onConfirm, lblTitle, maxWidth } = args;\r\n\r\n // Creazione del contenuto come stringa HTML\r\n const messageHtml =\r\n html ??\r\n `\r\n <div style=\"\r\n white-space: pre-line;\r\n word-break: break-all;\r\n padding: 0rem 1rem 1rem 1rem;\r\n max-width: ${typeof maxWidth === 'number' ? maxWidth + 'px' : '800px'};\r\n \">\r\n ${message ?? ''}\r\n </div>\r\n `;\r\n\r\n await custom({\r\n title: lblTitle && UniLocaleManager.translate(lblTitle),\r\n dragEnabled: false,\r\n showTitle: !!lblTitle,\r\n messageHtml,\r\n buttons: [\r\n { text: UniLocaleManager.translate('Confirm', 'btn'), onClick: onConfirm },\r\n { text: UniLocaleManager.translate('Cancel', 'btn'), onClick: undefined },\r\n ],\r\n }).show();\r\n }\r\n\r\n public async createPopup(\r\n id: string,\r\n args: PopupContent & {\r\n type?: PopupType;\r\n title?: string;\r\n detail?: { message: string; messageToCopy?: string };\r\n closable?: boolean;\r\n },\r\n ): Promise<Instance> {\r\n /* Recupera args */\r\n const { type, message, html, title, detail, closable } = args;\r\n\r\n /* Pulsanti: dettaglio (errore o altro) */\r\n const toolbarItems: ToolbarItem[] = [];\r\n if (detail) {\r\n const detailsButtons = this.createDetailsButtons(\r\n id,\r\n message ?? html,\r\n html !== undefined,\r\n detail,\r\n );\r\n toolbarItems.push(...detailsButtons);\r\n }\r\n\r\n /* Aggiunge pulsante per la chiusura del popup (possibile poi solo da qui) */\r\n if (closable !== false) {\r\n const closeButton = this.createCloseButton(id);\r\n toolbarItems.push(closeButton);\r\n }\r\n\r\n /* Crea popup passando esplicitamente l'informazione sul formato del contenuto */\r\n const instance = await this.createPopupInstance(id, {\r\n type,\r\n title,\r\n content: message ?? html,\r\n isContentHtml: !!html,\r\n toolbarItems,\r\n });\r\n return instance;\r\n }\r\n\r\n public async createPopupError(\r\n id: string | undefined = undefined,\r\n args: {\r\n title?: string;\r\n message: string;\r\n detail?: { message: string; messageToCopy?: string };\r\n closable?: boolean;\r\n },\r\n ): Promise<Instance> {\r\n /* Recupera args */\r\n const { title, message, detail, closable } = args;\r\n\r\n /* Crea popup */\r\n const instance = await this.createPopup(id ?? `popup-${Date.now()}`, {\r\n type: 'error',\r\n title: title ?? UniLocaleManager.translate('ErrorFrontend'),\r\n message,\r\n detail,\r\n closable,\r\n });\r\n return instance;\r\n }\r\n\r\n public async createPopupErrorHttp(args: {\r\n ref?: string;\r\n err: HttpErrorResponse;\r\n }): Promise<Instance> {\r\n /* Recupera args */\r\n const { ref, err } = args;\r\n\r\n /* Creazione id */\r\n const id = `popup-${ref ?? Date.now()}`;\r\n\r\n /* Message detail */\r\n const { status, statusText, message, error: errorResponse } = err;\r\n let errorDetail = `[${status} - ${statusText}]: ${message}`;\r\n if (errorResponse) {\r\n try {\r\n if (errorResponse instanceof Blob) {\r\n errorDetail += `\\n ${await errorResponse.text()}`;\r\n } else if (typeof errorResponse === 'string') {\r\n errorDetail += `\\n ${errorResponse}`;\r\n } else if (typeof errorResponse === 'object') {\r\n errorDetail += `\\n ${JSON.stringify(errorResponse, undefined, 2)}`;\r\n } else {\r\n errorDetail += `\\n ${String(errorResponse)}`;\r\n }\r\n } catch (error) {\r\n errorDetail += `\\n Error processing the error message: ${error}`;\r\n }\r\n }\r\n\r\n /* Crea popup */\r\n const instance = this.createPopupError(id, {\r\n title: UniLocaleManager.translate(`ErrorBackend`),\r\n message: UniLocaleManager.translate(`error${err.status}`),\r\n detail: {\r\n message: errorDetail,\r\n messageToCopy: JSON.stringify(err),\r\n },\r\n closable: true,\r\n });\r\n return instance;\r\n }\r\n\r\n public async createPopupErrorCustom(args: {\r\n ref?: string;\r\n label: string;\r\n interpolationParameters?: Record<string, string | number | Date>;\r\n }): Promise<Instance> {\r\n /* Recupera args */\r\n const { ref, label, interpolationParameters } = args;\r\n\r\n /* Creazione id */\r\n const id = `popup-${ref ?? Date.now()}`;\r\n\r\n /* Crea popup */\r\n const instance = this.createPopupError(id, {\r\n title: UniLocaleManager.translate('ErrorBackendCustom'),\r\n message: UniLocaleManager.translate(label, 'lbl', interpolationParameters),\r\n closable: true,\r\n });\r\n return instance;\r\n }\r\n\r\n public async updateContentPopup(id: string, content: PopupContent): Promise<void> {\r\n /* Recupero popup */\r\n const popup = this.instances.get(id);\r\n if (!popup) {\r\n throw new Error(`Popup not found (id: ${id}`);\r\n }\r\n\r\n /* Recupero elemento html del popup */\r\n const element = popup.content().firstElementChild as HTMLElement;\r\n if (!element) return;\r\n\r\n /* Selezione del metodo di rendering e del layout in base alla proprietà definita */\r\n if (content.html === undefined) {\r\n this.setContentCenter(element, content.message);\r\n } else {\r\n this.setContent(element, content.html, true);\r\n }\r\n }\r\n\r\n public async closePopup(id: string): Promise<void> {\r\n /* Recupero popup */\r\n const popup = this.instances.get(id);\r\n if (!popup) {\r\n throw new Error(`Popup not found (id: ${id}`);\r\n }\r\n\r\n /* Esecuzione del processo di chiusura asincrona del componente DevExtreme */\r\n await popup.hide();\r\n }\r\n\r\n /* -------------------------------- Methods: instance -------------------------------- */\r\n private async createPopupInstance(\r\n id: string,\r\n args: {\r\n type?: PopupType;\r\n title?: string;\r\n content: string;\r\n isContentHtml: boolean;\r\n toolbarItems: ToolbarItem[];\r\n },\r\n ): Promise<Instance> {\r\n /* Recupera argomenti */\r\n const { type, title, content, isContentHtml, toolbarItems = [] } = args;\r\n\r\n /* Evita doppia istanza con lo stesso id */\r\n const popup = this.instances.get(id);\r\n if (popup) {\r\n popup.show();\r\n return popup;\r\n }\r\n\r\n /* Crea container del popup */\r\n const container = document.createElement('div');\r\n document.body.append(container);\r\n\r\n /* Crea popup */\r\n const instance = new Popup(container, {\r\n title: title ?? '',\r\n showTitle: !!title,\r\n deferRendering: false,\r\n maxHeight: 500,\r\n maxWidth: 1000,\r\n dragEnabled: false,\r\n showCloseButton: false,\r\n hideOnOutsideClick: false,\r\n shading: true,\r\n wrapperAttr: {\r\n id,\r\n class: `uni-popup-${type ?? 'info'}`,\r\n },\r\n toolbarItems,\r\n contentTemplate: (): HTMLDivElement => {\r\n const element = document.createElement('div');\r\n element.style.whiteSpace = 'pre-line';\r\n element.style.wordBreak = 'break-all';\r\n element.style.height = '100%';\r\n\r\n // Sceglie il metodo di iniezione e lo stile corretto in base al tipo di contenuto\r\n if (isContentHtml) {\r\n this.setContent(element, content, true);\r\n } else {\r\n this.setContentCenter(element, content);\r\n }\r\n\r\n return element;\r\n },\r\n onHidden: async (): Promise<void> => {\r\n // Rimozione del riferimento dalla mappa per prevenire interazioni concorrenti\r\n this.instances.delete(id);\r\n\r\n // Rilascio delle risorse allocate dal widget al termine dell'animazione di uscita\r\n instance.dispose();\r\n\r\n // Rimozione definitiva dell'elemento HTML dal Document Object Model (DOM)\r\n instance.element()?.remove();\r\n },\r\n });\r\n\r\n /* Mostra popup */\r\n this.instances.set(id, instance);\r\n await instance.show();\r\n\r\n return instance;\r\n }\r\n\r\n /* -------------------------------- Methods: utils -------------------------------- */\r\n private createCloseButton(id: string): ToolbarItem {\r\n return {\r\n widget: 'dxButton',\r\n toolbar: 'bottom',\r\n location: 'after',\r\n options: {\r\n type: 'normal',\r\n icon: 'close',\r\n text: UniLocaleManager.translate('Close', 'btn'),\r\n stylingMode: 'contained',\r\n onClick: (): Promise<void> => this.closePopup(id),\r\n },\r\n };\r\n }\r\n\r\n private createDetailsButtons(\r\n id: string,\r\n content: string,\r\n isContentHtml: boolean,\r\n detail: { message: string; messageToCopy?: string },\r\n ): ToolbarItem[] {\r\n // Variabile di stato per i dettagli\r\n let inShow = false;\r\n\r\n /* Pulsanti: 'dettagli' e 'indietro */\r\n const items: ToolbarItem[] = [\r\n {\r\n widget: 'dxButton',\r\n toolbar: 'bottom',\r\n location: 'before',\r\n options: {\r\n type: 'normal',\r\n icon: 'find',\r\n text: UniLocaleManager.translate('Details', 'btn'),\r\n stylingMode: 'contained',\r\n onClick: async (e: { component: any }): Promise<void> => {\r\n const popup = this.instances.get(id);\r\n if (!popup) {\r\n throw new Error(`Popup not found (id: ${id}`);\r\n }\r\n\r\n const element = popup.content().firstElementChild as HTMLElement;\r\n if (!element) return;\r\n\r\n inShow = !inShow;\r\n\r\n if (inShow) {\r\n this.setContent(element, detail.message, false);\r\n } else {\r\n // Sceglie il metodo di iniezione e lo stile corretto in base al tipo di contenuto\r\n if (isContentHtml) {\r\n this.setContent(element, content, true);\r\n } else {\r\n this.setContentCenter(element, content);\r\n }\r\n }\r\n\r\n e.component.option({\r\n text: UniLocaleManager.translate(inShow ? 'Back' : 'Details', 'btn'),\r\n icon: inShow ? 'back' : 'find',\r\n });\r\n },\r\n },\r\n },\r\n {\r\n widget: 'dxButton',\r\n toolbar: 'bottom',\r\n location: 'before',\r\n options: {\r\n type: 'normal',\r\n icon: 'refresh',\r\n text: UniLocaleManager.translate('Refresh', 'btn'),\r\n stylingMode: 'contained',\r\n onClick: (): void => location.reload(),\r\n },\r\n },\r\n ];\r\n\r\n /* Pulsanti: 'copiare dettagli' */\r\n if (detail.messageToCopy) {\r\n items.push({\r\n visible: globalThis.isSecureContext,\r\n widget: 'dxButton',\r\n toolbar: 'bottom',\r\n location: 'after',\r\n options: {\r\n type: 'normal',\r\n icon: 'copy',\r\n text: UniLocaleManager.translate('Copy', 'btn'),\r\n stylingMode: 'contained',\r\n onClick: (): Promise<void> => navigator?.clipboard?.writeText(detail.messageToCopy!),\r\n },\r\n });\r\n }\r\n\r\n return items;\r\n }\r\n\r\n private setContent(element: HTMLElement, content: string, isContentHtml: boolean): void {\r\n if (isContentHtml) {\r\n element.innerHTML = content;\r\n } else {\r\n element.textContent = content;\r\n }\r\n element.style.display = 'block';\r\n element.style.textAlign = 'left';\r\n element.style.alignItems = ''; // Reset flexbox\r\n element.style.justifyContent = ''; // Reset flexbox\r\n }\r\n\r\n private setContentCenter(element: HTMLElement, content: string): void {\r\n element.textContent = content;\r\n element.style.display = 'flex';\r\n element.style.alignItems = 'center';\r\n element.style.justifyContent = 'center';\r\n element.style.textAlign = 'center';\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { ToastType } from 'devextreme/ui/toast_types';\r\nimport { IToastManager, ToastConfig } from 'uni-manager/toast';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UniToastService implements IToastManager {\r\n public success(message: string, config?: ToastConfig): void {\r\n this.show(message, 'success', config);\r\n }\r\n\r\n public info(message: string, config?: ToastConfig): void {\r\n this.show(message, 'info', config);\r\n }\r\n\r\n public warning(message: string, config?: ToastConfig): void {\r\n this.show(message, 'warning', config);\r\n }\r\n\r\n public error(message: string, config?: ToastConfig): void {\r\n this.show(message, 'error', config);\r\n }\r\n\r\n /* ----------------------- Metodi: utils ----------------------- */\r\n private show(message: string, type: ToastType, config?: ToastConfig): void {\r\n notify(\r\n {\r\n message,\r\n type,\r\n height: 50,\r\n width: 400,\r\n displayTime: config?.duration ?? 4000,\r\n animation: {\r\n show: { type: 'fade', duration: 400, from: 0, to: 1 },\r\n hide: { type: 'fade', duration: 300, from: 1, to: 0 },\r\n },\r\n },\r\n { position: 'bottom center', direction: 'up-push' },\r\n );\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uni-app-fe-service.mjs","sources":["../../../projects/uni-app-fe/service/uni-loader.service.ts","../../../projects/uni-app-fe/service/uni-popup.service.ts","../../../projects/uni-app-fe/service/uni-toast.service.ts","../../../projects/uni-app-fe/service/uni-app-fe-service.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport LoadPanel from 'devextreme/ui/load_panel';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UniLoaderService {\r\n /* Load Panel */\r\n private loadPanel: LoadPanel;\r\n\r\n constructor() {\r\n const container = document.querySelector('body');\r\n const content: HTMLDivElement = document.createElement('div');\r\n container!.append(content);\r\n\r\n this.loadPanel = new LoadPanel(content, {\r\n showIndicator: true,\r\n showPane: true,\r\n shading: true,\r\n shadingColor: 'rgba(0,0,0,0.4)',\r\n });\r\n }\r\n\r\n /* ------------------------------------- Methods ------------------------------------- */\r\n public show(): void {\r\n this.loadPanel.show();\r\n }\r\n\r\n public hide(): void {\r\n this.loadPanel.hide();\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { ClickEvent } from 'devextreme/ui/button_types';\r\nimport { custom } from 'devextreme/ui/dialog';\r\nimport Popup, { ToolbarItem } from 'devextreme/ui/popup';\r\nimport { UniLocaleManager } from 'uni-manager/locale';\r\n\r\nexport type PopupType = 'info' | 'warning' | 'error';\r\n\r\nexport type Instance = Popup<{\r\n title: string;\r\n showTitle: boolean;\r\n deferRendering: boolean;\r\n maxHeight: number;\r\n maxWidth: number;\r\n dragEnabled: boolean;\r\n showCloseButton: boolean;\r\n hideOnOutsideClick: boolean;\r\n shading: boolean;\r\n wrapperAttr: { id: string; class: string };\r\n toolbarItems: ToolbarItem[];\r\n contentTemplate: () => HTMLDivElement;\r\n onHidden: () => Promise<void>;\r\n}>;\r\n\r\nexport type PopupContent =\r\n | {\r\n message: string;\r\n html?: never;\r\n }\r\n | {\r\n message?: never;\r\n html: string;\r\n };\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UniPopupService {\r\n /* Variables */\r\n private instances = new Map<string, Instance>();\r\n\r\n /* -------------------------------- Methods: popup -------------------------------- */\r\n public async createPopupConfirm(\r\n args: PopupContent & {\r\n onConfirm: (e: ClickEvent) => void;\r\n lblTitle?: string;\r\n maxWidth?: number;\r\n },\r\n ): Promise<void> {\r\n const { message, html, onConfirm, lblTitle, maxWidth } = args;\r\n\r\n // Creazione del contenuto come stringa HTML\r\n const messageHtml =\r\n html ??\r\n `\r\n <div style=\"\r\n white-space: pre-line;\r\n word-break: break-all;\r\n padding: 0rem 1rem 1rem 1rem;\r\n max-width: ${typeof maxWidth === 'number' ? maxWidth + 'px' : '800px'};\r\n \">\r\n ${message ?? ''}\r\n </div>\r\n `;\r\n\r\n await custom({\r\n title: lblTitle && UniLocaleManager.translate(lblTitle),\r\n dragEnabled: false,\r\n showTitle: !!lblTitle,\r\n messageHtml,\r\n buttons: [\r\n { text: UniLocaleManager.translate('Confirm', 'btn'), onClick: onConfirm },\r\n { text: UniLocaleManager.translate('Cancel', 'btn'), onClick: undefined },\r\n ],\r\n }).show();\r\n }\r\n\r\n public async createPopup(\r\n id: string,\r\n args: PopupContent & {\r\n type?: PopupType;\r\n title?: string;\r\n detail?: { message: string; messageToCopy?: string };\r\n closable?: boolean;\r\n },\r\n ): Promise<Instance> {\r\n /* Recupera args */\r\n const { type, message, html, title, detail, closable } = args;\r\n\r\n /* Pulsanti: dettaglio (errore o altro) */\r\n const toolbarItems: ToolbarItem[] = [];\r\n if (detail) {\r\n const detailsButtons = this.createDetailsButtons(\r\n id,\r\n message ?? html,\r\n html !== undefined,\r\n detail,\r\n );\r\n toolbarItems.push(...detailsButtons);\r\n }\r\n\r\n /* Aggiunge pulsante per la chiusura del popup (possibile poi solo da qui) */\r\n if (closable !== false) {\r\n const closeButton = this.createCloseButton(id);\r\n toolbarItems.push(closeButton);\r\n }\r\n\r\n /* Crea popup passando esplicitamente l'informazione sul formato del contenuto */\r\n const instance = await this.createPopupInstance(id, {\r\n type,\r\n title,\r\n content: message ?? html,\r\n isContentHtml: !!html,\r\n toolbarItems,\r\n });\r\n return instance;\r\n }\r\n\r\n public async createPopupError(\r\n id: string | undefined = undefined,\r\n args: {\r\n title?: string;\r\n message: string;\r\n detail?: { message: string; messageToCopy?: string };\r\n closable?: boolean;\r\n },\r\n ): Promise<Instance> {\r\n /* Recupera args */\r\n const { title, message, detail, closable } = args;\r\n\r\n /* Crea popup */\r\n const instance = await this.createPopup(id ?? `popup-${Date.now()}`, {\r\n type: 'error',\r\n title: title ?? UniLocaleManager.translate('ErrorFrontend'),\r\n message,\r\n detail,\r\n closable,\r\n });\r\n return instance;\r\n }\r\n\r\n public async createPopupErrorHttp(args: {\r\n ref?: string;\r\n err: HttpErrorResponse;\r\n }): Promise<Instance> {\r\n /* Recupera args */\r\n const { ref, err } = args;\r\n\r\n /* Creazione id */\r\n const id = `popup-${ref ?? Date.now()}`;\r\n\r\n /* Message detail */\r\n const { status, statusText, message, error: errorResponse } = err;\r\n let errorDetail = `[${status} - ${statusText}]: ${message}`;\r\n if (errorResponse) {\r\n try {\r\n if (errorResponse instanceof Blob) {\r\n errorDetail += `\\n ${await errorResponse.text()}`;\r\n } else if (typeof errorResponse === 'string') {\r\n errorDetail += `\\n ${errorResponse}`;\r\n } else if (typeof errorResponse === 'object') {\r\n errorDetail += `\\n ${JSON.stringify(errorResponse, undefined, 2)}`;\r\n } else {\r\n errorDetail += `\\n ${String(errorResponse)}`;\r\n }\r\n } catch (error) {\r\n errorDetail += `\\n Error processing the error message: ${error}`;\r\n }\r\n }\r\n\r\n /* Crea popup */\r\n const instance = this.createPopupError(id, {\r\n title: UniLocaleManager.translate(`ErrorBackend`),\r\n message: UniLocaleManager.translate(`error${err.status}`),\r\n detail: {\r\n message: errorDetail,\r\n messageToCopy: JSON.stringify(err),\r\n },\r\n closable: true,\r\n });\r\n return instance;\r\n }\r\n\r\n public async createPopupErrorCustom(args: {\r\n ref?: string;\r\n label: string;\r\n interpolationParameters?: Record<string, string | number | Date>;\r\n }): Promise<Instance> {\r\n /* Recupera args */\r\n const { ref, label, interpolationParameters } = args;\r\n\r\n /* Creazione id */\r\n const id = `popup-${ref ?? Date.now()}`;\r\n\r\n /* Crea popup */\r\n const instance = this.createPopupError(id, {\r\n title: UniLocaleManager.translate('ErrorBackendCustom'),\r\n message: UniLocaleManager.translate(label, 'lbl', interpolationParameters),\r\n closable: true,\r\n });\r\n return instance;\r\n }\r\n\r\n public async updateContentPopup(id: string, content: PopupContent): Promise<void> {\r\n /* Recupero popup */\r\n const popup = this.instances.get(id);\r\n if (!popup) {\r\n throw new Error(`Popup not found (id: ${id}`);\r\n }\r\n\r\n /* Recupero elemento html del popup */\r\n const element = popup.content().firstElementChild as HTMLElement;\r\n if (!element) return;\r\n\r\n /* Selezione del metodo di rendering e del layout in base alla proprietà definita */\r\n if (content.html === undefined) {\r\n this.setContentCenter(element, content.message);\r\n } else {\r\n this.setContent(element, content.html, true);\r\n }\r\n }\r\n\r\n public async closePopup(id: string): Promise<void> {\r\n /* Recupero popup */\r\n const popup = this.instances.get(id);\r\n if (!popup) {\r\n throw new Error(`Popup not found (id: ${id}`);\r\n }\r\n\r\n /* Esecuzione del processo di chiusura asincrona del componente DevExtreme */\r\n await popup.hide();\r\n }\r\n\r\n /* -------------------------------- Methods: instance -------------------------------- */\r\n private async createPopupInstance(\r\n id: string,\r\n args: {\r\n type?: PopupType;\r\n title?: string;\r\n content: string;\r\n isContentHtml: boolean;\r\n toolbarItems: ToolbarItem[];\r\n },\r\n ): Promise<Instance> {\r\n /* Recupera argomenti */\r\n const { type, title, content, isContentHtml, toolbarItems = [] } = args;\r\n\r\n /* Evita doppia istanza con lo stesso id */\r\n const popup = this.instances.get(id);\r\n if (popup) {\r\n popup.show();\r\n return popup;\r\n }\r\n\r\n /* Crea container del popup */\r\n const container = document.createElement('div');\r\n document.body.append(container);\r\n\r\n /* Crea popup */\r\n const instance = new Popup(container, {\r\n title: title ?? '',\r\n showTitle: !!title,\r\n deferRendering: false,\r\n maxHeight: 500,\r\n maxWidth: 1000,\r\n dragEnabled: false,\r\n showCloseButton: false,\r\n hideOnOutsideClick: false,\r\n shading: true,\r\n wrapperAttr: {\r\n id,\r\n class: `uni-popup-${type ?? 'info'}`,\r\n },\r\n toolbarItems,\r\n contentTemplate: (): HTMLDivElement => {\r\n const element = document.createElement('div');\r\n element.style.whiteSpace = 'pre-line';\r\n element.style.wordBreak = 'break-all';\r\n element.style.height = '100%';\r\n\r\n // Sceglie il metodo di iniezione e lo stile corretto in base al tipo di contenuto\r\n if (isContentHtml) {\r\n this.setContent(element, content, true);\r\n } else {\r\n this.setContentCenter(element, content);\r\n }\r\n\r\n return element;\r\n },\r\n onHidden: async (): Promise<void> => {\r\n // Rimozione del riferimento dalla mappa per prevenire interazioni concorrenti\r\n this.instances.delete(id);\r\n\r\n // Rilascio delle risorse allocate dal widget al termine dell'animazione di uscita\r\n instance.dispose();\r\n\r\n // Rimozione definitiva dell'elemento HTML dal Document Object Model (DOM)\r\n instance.element()?.remove();\r\n },\r\n });\r\n\r\n /* Mostra popup */\r\n this.instances.set(id, instance);\r\n await instance.show();\r\n\r\n return instance;\r\n }\r\n\r\n /* -------------------------------- Methods: utils -------------------------------- */\r\n private createCloseButton(id: string): ToolbarItem {\r\n return {\r\n widget: 'dxButton',\r\n toolbar: 'bottom',\r\n location: 'after',\r\n options: {\r\n type: 'normal',\r\n icon: 'close',\r\n text: UniLocaleManager.translate('Close', 'btn'),\r\n stylingMode: 'contained',\r\n onClick: (): Promise<void> => this.closePopup(id),\r\n },\r\n };\r\n }\r\n\r\n private createDetailsButtons(\r\n id: string,\r\n content: string,\r\n isContentHtml: boolean,\r\n detail: { message: string; messageToCopy?: string },\r\n ): ToolbarItem[] {\r\n // Variabile di stato per i dettagli\r\n let inShow = false;\r\n\r\n /* Pulsanti: 'dettagli' e 'indietro */\r\n const items: ToolbarItem[] = [\r\n {\r\n widget: 'dxButton',\r\n toolbar: 'bottom',\r\n location: 'before',\r\n options: {\r\n type: 'normal',\r\n icon: 'find',\r\n text: UniLocaleManager.translate('Details', 'btn'),\r\n stylingMode: 'contained',\r\n onClick: async (e: { component: any }): Promise<void> => {\r\n const popup = this.instances.get(id);\r\n if (!popup) {\r\n throw new Error(`Popup not found (id: ${id}`);\r\n }\r\n\r\n const element = popup.content().firstElementChild as HTMLElement;\r\n if (!element) return;\r\n\r\n inShow = !inShow;\r\n\r\n if (inShow) {\r\n this.setContent(element, detail.message, false);\r\n } else {\r\n // Sceglie il metodo di iniezione e lo stile corretto in base al tipo di contenuto\r\n if (isContentHtml) {\r\n this.setContent(element, content, true);\r\n } else {\r\n this.setContentCenter(element, content);\r\n }\r\n }\r\n\r\n e.component.option({\r\n text: UniLocaleManager.translate(inShow ? 'Back' : 'Details', 'btn'),\r\n icon: inShow ? 'back' : 'find',\r\n });\r\n },\r\n },\r\n },\r\n {\r\n widget: 'dxButton',\r\n toolbar: 'bottom',\r\n location: 'before',\r\n options: {\r\n type: 'normal',\r\n icon: 'refresh',\r\n text: UniLocaleManager.translate('Refresh', 'btn'),\r\n stylingMode: 'contained',\r\n onClick: (): void => location.reload(),\r\n },\r\n },\r\n ];\r\n\r\n /* Pulsanti: 'copiare dettagli' */\r\n if (detail.messageToCopy) {\r\n items.push({\r\n visible: globalThis.isSecureContext,\r\n widget: 'dxButton',\r\n toolbar: 'bottom',\r\n location: 'after',\r\n options: {\r\n type: 'normal',\r\n icon: 'copy',\r\n text: UniLocaleManager.translate('Copy', 'btn'),\r\n stylingMode: 'contained',\r\n onClick: (): Promise<void> => navigator?.clipboard?.writeText(detail.messageToCopy!),\r\n },\r\n });\r\n }\r\n\r\n return items;\r\n }\r\n\r\n private setContent(element: HTMLElement, content: string, isContentHtml: boolean): void {\r\n if (isContentHtml) {\r\n element.innerHTML = content;\r\n } else {\r\n element.textContent = content;\r\n }\r\n element.style.display = 'block';\r\n element.style.textAlign = 'left';\r\n element.style.alignItems = ''; // Reset flexbox\r\n element.style.justifyContent = ''; // Reset flexbox\r\n }\r\n\r\n private setContentCenter(element: HTMLElement, content: string): void {\r\n element.textContent = content;\r\n element.style.display = 'flex';\r\n element.style.alignItems = 'center';\r\n element.style.justifyContent = 'center';\r\n element.style.textAlign = 'center';\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { ToastType } from 'devextreme/ui/toast_types';\r\nimport type { IToastManager, ToastConfig } from 'uni-model-type/type';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UniToastService implements IToastManager {\r\n public success(message: string, config?: ToastConfig): void {\r\n this.show(message, 'success', config);\r\n }\r\n\r\n public info(message: string, config?: ToastConfig): void {\r\n this.show(message, 'info', config);\r\n }\r\n\r\n public warning(message: string, config?: ToastConfig): void {\r\n this.show(message, 'warning', config);\r\n }\r\n\r\n public error(message: string, config?: ToastConfig): void {\r\n this.show(message, 'error', config);\r\n }\r\n\r\n /* ----------------------- Metodi: utils ----------------------- */\r\n private show(message: string, type: ToastType, config?: ToastConfig): void {\r\n notify(\r\n {\r\n message,\r\n type,\r\n height: 50,\r\n width: 400,\r\n displayTime: config?.duration ?? 4000,\r\n animation: {\r\n show: { type: 'fade', duration: 400, from: 0, to: 1 },\r\n hide: { type: 'fade', duration: 300, from: 1, to: 0 },\r\n },\r\n },\r\n {\r\n position: 'bottom center',\r\n direction: 'up-push',\r\n },\r\n );\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}