ctt-puro 0.47.0 → 0.47.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.
@@ -128,11 +128,20 @@ export class Utils {
128
128
  reader.onerror = (error) => reject(error);
129
129
  });
130
130
  }
131
- static normalizeText(text) {
132
- return text
133
- ?.normalize('NFD') // Descompone los caracteres con acentos
134
- ?.replace(/[\u0300-\u036f]/g, '') // Elimina los acentos
135
- ?.toLowerCase();
131
+ static normalizeControlName(value, fallback) {
132
+ if (typeof value !== 'string')
133
+ return fallback;
134
+ const normalized = value
135
+ .normalize('NFD')
136
+ .replace(/[\u0300-\u036f]/g, '')
137
+ .replace(/[^a-zA-Z0-9 ]/g, ' ')
138
+ .trim()
139
+ .split(/\s+/)
140
+ .map((part, i) => i === 0
141
+ ? part.toLowerCase()
142
+ : part.charAt(0).toUpperCase() + part.slice(1).toLowerCase())
143
+ .join('');
144
+ return normalized || fallback;
136
145
  }
137
146
  }
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wdXJvL3NyYy9saWIvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLEtBQUs7SUFDZCw4REFBOEQ7SUFDOUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFhO1FBQzdCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxnRkFBZ0Y7SUFDaEYsTUFBTSxDQUFDLDRCQUE0QixDQUFDLEdBQVE7UUFDeEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3BCLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDckU7YUFBTSxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLFdBQVcsS0FBSyxNQUFNLEVBQUU7WUFDbkQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtnQkFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDeEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDL0QsT0FBTyxNQUFNLENBQUM7WUFDbEIsQ0FBQyxFQUFFLEVBQVMsQ0FBQyxDQUFDO1NBQ2pCO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRUQsTUFB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bnQiOlsiaW1wb3J0IHsgQm9keUNvbXBvbmVudCwgUHVyb0J1dHRvbkkgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGNsYXNzIFV0aWxzIHtcbiAgICAvLyBGdW5jacOzbiBwYXJhIGNvbnZlcnRpciB1bmEgY2FkZW5hIGRlIHNuYWtlX2Nhc2UgYSBjYW1lbENhc2VcbiAgICBzdGF0aWMgc25ha2VUb0NhbWVsKHNuYWtlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gc25ha2UucmVwbGFjZSgvKF9cXHcpL2csIChtYXRjaGVzKSA9PiBtYXRjaGVzWzFdLnRvVXBwZXJDYXNlKCkpO1xuICAgIH1cblxuICAgIC8vIEZ1bmNpw7NuIHBhcmEgY29udmVydGlyIGxhcyBwcm9waWVkYWRlcyBkZSB1biBvYmpldG8gZGUgc25ha2VfY2FzZSBhIGNhbWVsQ2FzZVxuICAgIHN0YXRpYyBjb252ZXJ0T2JqZWN0S2V5c1RvQ2FtZWxDYXNlKG9iajogYW55KTogYW55IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgICAgICAgcmV0dXJuIG9iai5tYXAoKGl0ZW0pID0+IHRoaXMuY29udmVydE9iamVjdEtleXNUb0NhbWVsQ2FzZShpdGVtKSk7XG4gICAgICAgIH0gZWxzZSBpZiAob2JqICE9PSBudWxsICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5yZWR1Y2UoKHJlc3VsdCwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FtZWxLZXkgPSB0aGlzLnNuYWtlVG9DYW1lbChrZXkpO1xuICAgICAgICAgICAgICAgIHJlc3VsdFtjYW1lbEtleV0gPSB0aGlzLmNvbnZlcnRPYmplY3RLZXlzVG9DYW1lbENhc2Uob2JqW2tleV0pO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9LCB7fSBhcyBhbnkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuXG4gICAgc3RhdGljIGZvcm1hdExpbmtUeXBlKGxpbmtUeXBlOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gbGlua1R5cGUgPT09ICdleHRlcm5hbF9saW5rJyB8fCBsaW5rVHlwZSA9PT0gJ2V4dGVybmFsJ1xuICAgICAgICAgICAgPyAnZXh0ZXJuYWwnXG4gICAgICAgICAgICA6IGxpbmtUeXBlID09PSAnaW50ZXJuYWxfbGluaycgfHwgbGlua1R5cGUgPT09ICdpbnRlcm5hbCdcbiAgICAgICAgICAgICAgPyAnaW50ZXJuYWwnXG4gICAgICAgICAgICAgIDogbGlua1R5cGU7XG4gICAgfVxuXG4gICAgc3RhdGljIG1hcFNvY2lhbGNvbnMoaWNvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgc3dpdGNoIChpY29uKSB7XG4gICAgICAgICAgICBjYXNlICdpbnN0YWdyYW0nOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaWNvbi0xJztcbiAgICAgICAgICAgIGNhc2UgJ2xpbmtlZGluJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2ljb24tMic7XG4gICAgICAgICAgICBjYXNlICd5b3V0dWJlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2ljb24tMyc7XG4gICAgICAgICAgICBjYXNlICd0d2l0dGVyJzpcbiAgICAgICAgICAgIGNhc2UgJ3gnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaWNvbi00JztcbiAgICAgICAgICAgIGNhc2UgJ2ZhY2Vib29rJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2ljb24tNSc7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICd1bmRlZmluZWQnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIHVybFZhbGlkYXRpb24oXG4gICAgICAgIHVybDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICBsaW5rVHlwZTogc3RyaW5nLFxuICAgICAgICBzaXRlOiBudW1iZXIgfCBzdHJpbmdcbiAgICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB1cmxNYXBwZWQgPVxuICAgICAgICAgICAgdXJsICYmIHR5cGVvZiB1cmwgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgPyB1cmw/LmNoYXJBdCh1cmw/Lmxlbmd0aCAtIDEpID09PSAnLydcbiAgICAgICAgICAgICAgICAgICAgPyB1cmw/LnNsaWNlKDAsIC0xKVxuICAgICAgICAgICAgICAgICAgICA6IHVybFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBpc0ludGVybmFsTGluayA9XG4gICAgICAgICAgICBsaW5rVHlwZSA9PT0gJ2ludGVybmFsJyB8fFxuICAgICAgICAgICAgbGlua1R5cGUgPT09ICdpbnRlcm5hbF9saW5rJyB8fFxuICAgICAgICAgICAgbGlua1R5cGUgPT09ICdzZWxmX2xpbmsnIHx8XG4gICAgICAgICAgICBsaW5rVHlwZSA9PT0gJ2ludGVybmFsX2hvdGVsX2xpbmsnO1xuICAgICAgICBpZiAodXJsTWFwcGVkICYmIGlzSW50ZXJuYWxMaW5rICYmIHR5cGVvZiBzaXRlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgc3dpdGNoIChzaXRlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYC9wdXJvaG90ZWxzJHt1cmxNYXBwZWR9YDtcblxuICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAvcHVyb2JlYWNoJHt1cmxNYXBwZWR9YDtcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmxNYXBwZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHNpdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7c2l0ZX0ke3VybE1hcHBlZH1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybE1hcHBlZDtcbiAgICB9XG5cbiAgICBzdGF0aWMgbWFwQnV0dG9ucyhcbiAgICAgICAgc2l0ZTogc3RyaW5nIHwgbnVtYmVyID0gMSxcbiAgICAgICAgYnV0dG9uOiBhbnkgfCBhbnlbXSB8IHVuZGVmaW5lZCB8IG51bGwsXG4gICAgICAgIGJ1dHRvblR5cGU/OiBzdHJpbmdcbiAgICApOiAoUHVyb0J1dHRvbkkgfCB1bmRlZmluZWQpW10ge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShidXR0b24pKSB7XG4gICAgICAgICAgICByZXR1cm4gYnV0dG9uXG4gICAgICAgICAgICAgICAgPy5maWx0ZXIoKGJ0bikgPT4gYnRuICYmIGJ0bi5sYWJlbD8ubGVuZ3RoKVxuICAgICAgICAgICAgICAgID8ubWFwKChidG4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3VXJsID0gYnRuLmxpbmtWYWx1ZSB8fCBidG4ubGlua192YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3TGlua1R5cGUgPSBidG4ubGlua1R5cGUgfHwgYnRuLmxpbmtfdHlwZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsID0gVXRpbHMudXJsVmFsaWRhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhd1VybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhd0xpbmtUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l0ZVxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBidXR0b25UeXBlID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBidG4/LmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6IFV0aWxzLmZvcm1hdExpbmtUeXBlKHJhd0xpbmtUeXBlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGJ0bi5pY29uID8gYnRuPy5pY29uIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICB9IGFzIFB1cm9CdXR0b25JO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGJ1dHRvbikge1xuICAgICAgICAgICAgY29uc3QgcmF3VXJsID0gYnV0dG9uLmxpbmtWYWx1ZSB8fCBidXR0b24ubGlua192YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IHJhd0xpbmtUeXBlID0gYnV0dG9uLmxpbmtUeXBlIHx8IGJ1dHRvbi5saW5rX3R5cGU7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIGJ1dHRvbi5sYWJlbD8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgID8gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYnV0dG9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogVXRpbHMuZm9ybWF0TGlua1R5cGUocmF3TGlua1R5cGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFV0aWxzLnVybFZhbGlkYXRpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXdVcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXdMaW5rVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICB9IGFzIFB1cm9CdXR0b25JKVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgZmlsbGFueXMobWF4OiBudW1iZXIsIHplcm9TdGFydCA9IHRydWUsIG51bWJlclN0YXJ0ID0gMCk6IGFueVtdIHtcbiAgICAgICAgY29uc3QgYXJyYXk6IGFueVtdID0gW107XG4gICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgd2hpbGUgKGkgPCBtYXggKyAxKSB7XG4gICAgICAgICAgICBpZiAoaSA+PSBudW1iZXJTdGFydCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gaSA8IDEwID8gYDAke2l9YCA6IGAke2l9YDtcbiAgICAgICAgICAgICAgICBhcnJheS5wdXNoKHsgY29kZTogaSwgbmFtZTogdmFsdWUgfSBhcyBhbnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF6ZXJvU3RhcnQgJiYgIW51bWJlclN0YXJ0KSB7XG4gICAgICAgICAgICBhcnJheS5zaGlmdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIHN0YXRpYyBmaW5kQ29tcG9uZW50PFQ+KFxuICAgICAgICBib2R5OiBCb2R5Q29tcG9uZW50PFQ+W10sXG4gICAgICAgIG5hbWU6IHN0cmluZ1xuICAgICk6IFQgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gYm9keS5maW5kKChjb21wb25lbnQpID0+IGNvbXBvbmVudD8ubmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gbmFtZSlcbiAgICAgICAgICAgID8ucHJvcHM7XG4gICAgfVxuXG4gICAgc3RhdGljIGNvbnZlcnRUb0Jhc2U2NChmaWxlOiBGaWxlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpOiB2b2lkID0+IHJlc29sdmUocmVhZGVyLnJlc3VsdCBhcyBzdHJpbmcpO1xuICAgICAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSAoZXJyb3IpOiB2b2lkID0+IHJlamVjdChlcnJvcik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHN0YXRpYyBub3JtYWxpemVUZXh0KHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0ZXh0XG4gICAgICAgICAgICA/Lm5vcm1hbGl6ZSgnTkZEJykgLy8gRGVzY29tcG9uZSBsb3MgY2FyYWN0ZXJlcyBjb24gYWNlbnRvc1xuICAgICAgICAgICAgPy5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJykgLy8gRWxpbWluYSBsb3MgYWNlbnRvc1xuICAgICAgICAgICAgPy50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbn1cbiJdfQ==
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wdXJvL3NyYy9saWIvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLEtBQUs7SUFDZCw4REFBOEQ7SUFDOUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFhO1FBQzdCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxnRkFBZ0Y7SUFDaEYsTUFBTSxDQUFDLDRCQUE0QixDQUFDLEdBQVE7UUFDeEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3BCLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDckU7YUFBTSxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLFdBQVcsS0FBSyxNQUFNLEVBQUU7WUFDbkQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtnQkFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDeEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDL0QsT0FBTyxNQUFNLENBQUM7WUFDbEIsQ0FBQyxFQUFFLEVBQVMsQ0FBQyxDQUFDO1NBQ2pCO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRUQsTUFB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QyxnQkFBZ0IsRUFBRSxHQUFHLENBQUM7YUFDOUIsSUFBSSxFQUFFO2FBQ04sS0FBSyxDQUFDLEtBQUssQ0FBQzthQUNaLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUNiLENBQUMsS0FBSyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FDbkU7YUFDQSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFZCxPQUFPLFVBQVUsSUFBSSxRQUFRLENBQUM7SUFDbEMsQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9keUNvbXBvbmVudCwgUHVyb0J1dHRvbkkgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGNsYXNzIFV0aWxzIHtcbiAgICAvLyBGdW5jacOzbiBwYXJhIGNvbnZlcnRpciB1bmEgY2FkZW5hIGRlIHNuYWtlX2Nhc2UgYSBjYW1lbENhc2VcbiAgICBzdGF0aWMgc25ha2VUb0NhbWVsKHNuYWtlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gc25ha2UucmVwbGFjZSgvKF9cXHcpL2csIChtYXRjaGVzKSA9PiBtYXRjaGVzWzFdLnRvVXBwZXJDYXNlKCkpO1xuICAgIH1cblxuICAgIC8vIEZ1bmNpw7NuIHBhcmEgY29udmVydGlyIGxhcyBwcm9waWVkYWRlcyBkZSB1biBvYmpldG8gZGUgc25ha2VfY2FzZSBhIGNhbWVsQ2FzZVxuICAgIHN0YXRpYyBjb252ZXJ0T2JqZWN0S2V5c1RvQ2FtZWxDYXNlKG9iajogYW55KTogYW55IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgICAgICAgcmV0dXJuIG9iai5tYXAoKGl0ZW0pID0+IHRoaXMuY29udmVydE9iamVjdEtleXNUb0NhbWVsQ2FzZShpdGVtKSk7XG4gICAgICAgIH0gZWxzZSBpZiAob2JqICE9PSBudWxsICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5yZWR1Y2UoKHJlc3VsdCwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FtZWxLZXkgPSB0aGlzLnNuYWtlVG9DYW1lbChrZXkpO1xuICAgICAgICAgICAgICAgIHJlc3VsdFtjYW1lbEtleV0gPSB0aGlzLmNvbnZlcnRPYmplY3RLZXlzVG9DYW1lbENhc2Uob2JqW2tleV0pO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9LCB7fSBhcyBhbnkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuXG4gICAgc3RhdGljIGZvcm1hdExpbmtUeXBlKGxpbmtUeXBlOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gbGlua1R5cGUgPT09ICdleHRlcm5hbF9saW5rJyB8fCBsaW5rVHlwZSA9PT0gJ2V4dGVybmFsJ1xuICAgICAgICAgICAgPyAnZXh0ZXJuYWwnXG4gICAgICAgICAgICA6IGxpbmtUeXBlID09PSAnaW50ZXJuYWxfbGluaycgfHwgbGlua1R5cGUgPT09ICdpbnRlcm5hbCdcbiAgICAgICAgICAgICAgPyAnaW50ZXJuYWwnXG4gICAgICAgICAgICAgIDogbGlua1R5cGU7XG4gICAgfVxuXG4gICAgc3RhdGljIG1hcFNvY2lhbGNvbnMoaWNvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgc3dpdGNoIChpY29uKSB7XG4gICAgICAgICAgICBjYXNlICdpbnN0YWdyYW0nOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaWNvbi0xJztcbiAgICAgICAgICAgIGNhc2UgJ2xpbmtlZGluJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2ljb24tMic7XG4gICAgICAgICAgICBjYXNlICd5b3V0dWJlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2ljb24tMyc7XG4gICAgICAgICAgICBjYXNlICd0d2l0dGVyJzpcbiAgICAgICAgICAgIGNhc2UgJ3gnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaWNvbi00JztcbiAgICAgICAgICAgIGNhc2UgJ2ZhY2Vib29rJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2ljb24tNSc7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICd1bmRlZmluZWQnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIHVybFZhbGlkYXRpb24oXG4gICAgICAgIHVybDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICBsaW5rVHlwZTogc3RyaW5nLFxuICAgICAgICBzaXRlOiBudW1iZXIgfCBzdHJpbmdcbiAgICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB1cmxNYXBwZWQgPVxuICAgICAgICAgICAgdXJsICYmIHR5cGVvZiB1cmwgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgPyB1cmw/LmNoYXJBdCh1cmw/Lmxlbmd0aCAtIDEpID09PSAnLydcbiAgICAgICAgICAgICAgICAgICAgPyB1cmw/LnNsaWNlKDAsIC0xKVxuICAgICAgICAgICAgICAgICAgICA6IHVybFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBpc0ludGVybmFsTGluayA9XG4gICAgICAgICAgICBsaW5rVHlwZSA9PT0gJ2ludGVybmFsJyB8fFxuICAgICAgICAgICAgbGlua1R5cGUgPT09ICdpbnRlcm5hbF9saW5rJyB8fFxuICAgICAgICAgICAgbGlua1R5cGUgPT09ICdzZWxmX2xpbmsnIHx8XG4gICAgICAgICAgICBsaW5rVHlwZSA9PT0gJ2ludGVybmFsX2hvdGVsX2xpbmsnO1xuICAgICAgICBpZiAodXJsTWFwcGVkICYmIGlzSW50ZXJuYWxMaW5rICYmIHR5cGVvZiBzaXRlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgc3dpdGNoIChzaXRlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYC9wdXJvaG90ZWxzJHt1cmxNYXBwZWR9YDtcblxuICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAvcHVyb2JlYWNoJHt1cmxNYXBwZWR9YDtcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmxNYXBwZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHNpdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7c2l0ZX0ke3VybE1hcHBlZH1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybE1hcHBlZDtcbiAgICB9XG5cbiAgICBzdGF0aWMgbWFwQnV0dG9ucyhcbiAgICAgICAgc2l0ZTogc3RyaW5nIHwgbnVtYmVyID0gMSxcbiAgICAgICAgYnV0dG9uOiBhbnkgfCBhbnlbXSB8IHVuZGVmaW5lZCB8IG51bGwsXG4gICAgICAgIGJ1dHRvblR5cGU/OiBzdHJpbmdcbiAgICApOiAoUHVyb0J1dHRvbkkgfCB1bmRlZmluZWQpW10ge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShidXR0b24pKSB7XG4gICAgICAgICAgICByZXR1cm4gYnV0dG9uXG4gICAgICAgICAgICAgICAgPy5maWx0ZXIoKGJ0bikgPT4gYnRuICYmIGJ0bi5sYWJlbD8ubGVuZ3RoKVxuICAgICAgICAgICAgICAgID8ubWFwKChidG4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3VXJsID0gYnRuLmxpbmtWYWx1ZSB8fCBidG4ubGlua192YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3TGlua1R5cGUgPSBidG4ubGlua1R5cGUgfHwgYnRuLmxpbmtfdHlwZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsID0gVXRpbHMudXJsVmFsaWRhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhd1VybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhd0xpbmtUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l0ZVxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBidXR0b25UeXBlID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBidG4/LmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6IFV0aWxzLmZvcm1hdExpbmtUeXBlKHJhd0xpbmtUeXBlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGJ0bi5pY29uID8gYnRuPy5pY29uIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICB9IGFzIFB1cm9CdXR0b25JO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGJ1dHRvbikge1xuICAgICAgICAgICAgY29uc3QgcmF3VXJsID0gYnV0dG9uLmxpbmtWYWx1ZSB8fCBidXR0b24ubGlua192YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IHJhd0xpbmtUeXBlID0gYnV0dG9uLmxpbmtUeXBlIHx8IGJ1dHRvbi5saW5rX3R5cGU7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIGJ1dHRvbi5sYWJlbD8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgID8gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYnV0dG9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogVXRpbHMuZm9ybWF0TGlua1R5cGUocmF3TGlua1R5cGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFV0aWxzLnVybFZhbGlkYXRpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXdVcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXdMaW5rVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICB9IGFzIFB1cm9CdXR0b25JKVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgZmlsbGFueXMobWF4OiBudW1iZXIsIHplcm9TdGFydCA9IHRydWUsIG51bWJlclN0YXJ0ID0gMCk6IGFueVtdIHtcbiAgICAgICAgY29uc3QgYXJyYXk6IGFueVtdID0gW107XG4gICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgd2hpbGUgKGkgPCBtYXggKyAxKSB7XG4gICAgICAgICAgICBpZiAoaSA+PSBudW1iZXJTdGFydCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gaSA8IDEwID8gYDAke2l9YCA6IGAke2l9YDtcbiAgICAgICAgICAgICAgICBhcnJheS5wdXNoKHsgY29kZTogaSwgbmFtZTogdmFsdWUgfSBhcyBhbnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF6ZXJvU3RhcnQgJiYgIW51bWJlclN0YXJ0KSB7XG4gICAgICAgICAgICBhcnJheS5zaGlmdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIHN0YXRpYyBmaW5kQ29tcG9uZW50PFQ+KFxuICAgICAgICBib2R5OiBCb2R5Q29tcG9uZW50PFQ+W10sXG4gICAgICAgIG5hbWU6IHN0cmluZ1xuICAgICk6IFQgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gYm9keS5maW5kKChjb21wb25lbnQpID0+IGNvbXBvbmVudD8ubmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gbmFtZSlcbiAgICAgICAgICAgID8ucHJvcHM7XG4gICAgfVxuXG4gICAgc3RhdGljIGNvbnZlcnRUb0Jhc2U2NChmaWxlOiBGaWxlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpOiB2b2lkID0+IHJlc29sdmUocmVhZGVyLnJlc3VsdCBhcyBzdHJpbmcpO1xuICAgICAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSAoZXJyb3IpOiB2b2lkID0+IHJlamVjdChlcnJvcik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHN0YXRpYyBub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgdmFsdWU6IHVua25vd24sXG4gICAgICAgIGZhbGxiYWNrOiBzdHJpbmdcbiAgICApOiBzdHJpbmcge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykgcmV0dXJuIGZhbGxiYWNrO1xuXG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB2YWx1ZVxuICAgICAgICAgICAgLm5vcm1hbGl6ZSgnTkZEJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9bXmEtekEtWjAtOSBdL2csICcgJylcbiAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAgIC5zcGxpdCgvXFxzKy8pXG4gICAgICAgICAgICAubWFwKChwYXJ0LCBpKSA9PlxuICAgICAgICAgICAgICAgIGkgPT09IDBcbiAgICAgICAgICAgICAgICAgICAgPyBwYXJ0LnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgOiBwYXJ0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcGFydC5zbGljZSgxKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuam9pbignJyk7XG5cbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWQgfHwgZmFsbGJhY2s7XG4gICAgfVxuXG59XG4iXX0=
@@ -3532,11 +3532,20 @@ class Utils {
3532
3532
  reader.onerror = (error) => reject(error);
3533
3533
  });
3534
3534
  }
3535
- static normalizeText(text) {
3536
- return text
3537
- ?.normalize('NFD') // Descompone los caracteres con acentos
3538
- ?.replace(/[\u0300-\u036f]/g, '') // Elimina los acentos
3539
- ?.toLowerCase();
3535
+ static normalizeControlName(value, fallback) {
3536
+ if (typeof value !== 'string')
3537
+ return fallback;
3538
+ const normalized = value
3539
+ .normalize('NFD')
3540
+ .replace(/[\u0300-\u036f]/g, '')
3541
+ .replace(/[^a-zA-Z0-9 ]/g, ' ')
3542
+ .trim()
3543
+ .split(/\s+/)
3544
+ .map((part, i) => i === 0
3545
+ ? part.toLowerCase()
3546
+ : part.charAt(0).toUpperCase() + part.slice(1).toLowerCase())
3547
+ .join('');
3548
+ return normalized || fallback;
3540
3549
  }
3541
3550
  }
3542
3551
 
@@ -5205,7 +5214,7 @@ class MapperService {
5205
5214
  placeholder: props?.texts?.prefixes,
5206
5215
  },
5207
5216
  inputName: {
5208
- name: Utils.normalizeText(props?.texts?.inputName),
5217
+ name: Utils.normalizeControlName(props?.texts?.inputName, 'name'),
5209
5218
  placeholder: props?.texts?.inputName,
5210
5219
  value: '',
5211
5220
  type: 'text',
@@ -5215,7 +5224,7 @@ class MapperService {
5215
5224
  },
5216
5225
  inputSurname: {
5217
5226
  title: props?.texts?.surnames,
5218
- name: Utils.normalizeText(props?.texts?.surnames),
5227
+ name: Utils.normalizeControlName(props?.texts?.surnames, 'surname'),
5219
5228
  placeholder: props?.texts?.surnames,
5220
5229
  value: '',
5221
5230
  type: 'text',
@@ -5225,7 +5234,7 @@ class MapperService {
5225
5234
  },
5226
5235
  emailInput: {
5227
5236
  title: props?.texts?.inputEmail,
5228
- name: Utils.normalizeText(props?.texts?.inputEmail),
5237
+ name: Utils.normalizeControlName(props?.texts?.inputEmail, 'email'),
5229
5238
  placeholder: props?.texts?.inputEmail,
5230
5239
  value: '',
5231
5240
  type: 'email',
@@ -5235,7 +5244,7 @@ class MapperService {
5235
5244
  },
5236
5245
  phoneInput: {
5237
5246
  title: props?.texts?.inputPhone,
5238
- name: Utils.normalizeText(props?.texts?.inputPhone),
5247
+ name: Utils.normalizeControlName(props?.texts?.inputPhone, 'phone'),
5239
5248
  placeholder: props?.texts?.inputPhone,
5240
5249
  value: '',
5241
5250
  type: 'tel',
@@ -5759,8 +5768,7 @@ class MapperService {
5759
5768
  placeholder: props?.texts?.prefixes,
5760
5769
  },
5761
5770
  addressInput: {
5762
- name: Utils.normalizeText(props?.texts?.addressInput) ??
5763
- 'address',
5771
+ name: Utils.normalizeControlName(props?.texts?.addressInput, 'address'),
5764
5772
  placeholder: props?.texts?.addressInput ?? 'Establishment Address',
5765
5773
  value: '',
5766
5774
  type: 'text',
@@ -5770,7 +5778,7 @@ class MapperService {
5770
5778
  },
5771
5779
  sizeInput: {
5772
5780
  title: props?.texts?.sizeInput ?? 'size',
5773
- name: Utils.normalizeText(props?.texts?.sizeInput) ?? 'size',
5781
+ name: Utils.normalizeControlName(props?.texts?.sizeInput, 'size'),
5774
5782
  placeholder: props?.texts?.sizeInput ?? 'Venue Size (m²)',
5775
5783
  value: '',
5776
5784
  type: 'text',
@@ -5779,7 +5787,7 @@ class MapperService {
5779
5787
  valid: signal(true),
5780
5788
  },
5781
5789
  nameInput: {
5782
- name: Utils.normalizeText(props?.texts?.inputName) ?? 'name',
5790
+ name: Utils.normalizeControlName(props?.texts?.inputName, 'name'),
5783
5791
  placeholder: props?.texts?.inputName ?? 'First Name',
5784
5792
  value: '',
5785
5793
  type: 'text',
@@ -5789,7 +5797,7 @@ class MapperService {
5789
5797
  },
5790
5798
  surnameInput: {
5791
5799
  title: props?.texts?.surnames ?? 'surname',
5792
- name: Utils.normalizeText(props?.texts?.surnames) ?? 'surname',
5800
+ name: Utils.normalizeControlName(props?.texts?.surnames, 'surname'),
5793
5801
  placeholder: props?.texts?.surnames ?? 'Last Name',
5794
5802
  value: '',
5795
5803
  type: 'text',
@@ -5799,7 +5807,7 @@ class MapperService {
5799
5807
  },
5800
5808
  emailInput: {
5801
5809
  title: props?.texts?.inputEmail ?? 'email',
5802
- name: Utils.normalizeText(props?.texts?.inputEmail) ?? 'email',
5810
+ name: Utils.normalizeControlName(props?.texts?.inputEmail, 'email'),
5803
5811
  placeholder: props?.texts?.inputEmail ?? 'Email Address',
5804
5812
  value: '',
5805
5813
  type: 'email',
@@ -5809,7 +5817,7 @@ class MapperService {
5809
5817
  },
5810
5818
  confirmEmailInput: {
5811
5819
  title: props?.texts?.inputEmail ?? 'emailc',
5812
- name: Utils.normalizeText(props?.texts?.inputEmail) ?? 'emailc',
5820
+ name: Utils.normalizeControlName(props?.texts?.inputEmail, 'emailc'),
5813
5821
  placeholder: props?.texts?.inputEmail ?? 'Confirm your email',
5814
5822
  value: '',
5815
5823
  type: 'email',
@@ -5819,7 +5827,7 @@ class MapperService {
5819
5827
  },
5820
5828
  phoneInput: {
5821
5829
  title: props?.texts?.inputPhone ?? 'phone',
5822
- name: Utils.normalizeText(props?.texts?.inputPhone) ?? 'phone',
5830
+ name: Utils.normalizeControlName(props?.texts?.inputPhone, 'phone'),
5823
5831
  placeholder: props?.texts?.inputPhone ?? 'Teléfono',
5824
5832
  value: '',
5825
5833
  type: 'tel',
@@ -5828,8 +5836,7 @@ class MapperService {
5828
5836
  valid: signal(true),
5829
5837
  },
5830
5838
  materialsInput: {
5831
- name: Utils.normalizeText(props?.texts?.inputMaterials) ??
5832
- 'materials',
5839
+ name: Utils.normalizeControlName(props?.texts?.inputMaterials, 'materials'),
5833
5840
  type: props?.texts?.inputMaterials,
5834
5841
  label: props?.texts?.inputMaterials ?? 'Supporting materials',
5835
5842
  value: null,
@@ -6117,7 +6124,7 @@ class MapperService {
6117
6124
  placeholder: props?.texts?.prefixes,
6118
6125
  },
6119
6126
  nameInput: {
6120
- name: Utils.normalizeText(props?.texts?.inputName) ??
6127
+ name: Utils.normalizeControlName(props?.texts?.inputName, 'name') ??
6121
6128
  'First name',
6122
6129
  placeholder: props?.texts?.inputName ?? 'First name',
6123
6130
  value: '',
@@ -6128,7 +6135,7 @@ class MapperService {
6128
6135
  },
6129
6136
  surnameInput: {
6130
6137
  title: props?.texts?.surnames,
6131
- name: Utils.normalizeText(props?.texts?.surnames) ?? 'Last name',
6138
+ name: Utils.normalizeControlName(props?.texts?.surnames, 'surname') ?? 'Last name',
6132
6139
  placeholder: props?.texts?.surnames ?? 'Last name',
6133
6140
  value: '',
6134
6141
  type: 'text',
@@ -6138,7 +6145,7 @@ class MapperService {
6138
6145
  },
6139
6146
  emailInput: {
6140
6147
  title: props?.texts?.inputEmail ?? 'email',
6141
- name: Utils.normalizeText(props?.texts?.inputEmail) ?? 'email',
6148
+ name: Utils.normalizeControlName(props?.texts?.inputEmail, 'email') ?? 'email',
6142
6149
  placeholder: props?.texts?.inputEmail ?? 'Email address',
6143
6150
  value: '',
6144
6151
  type: 'email',
@@ -6148,7 +6155,7 @@ class MapperService {
6148
6155
  },
6149
6156
  confirmEmailInput: {
6150
6157
  title: props?.texts?.inputEmail ?? 'email 2',
6151
- name: Utils.normalizeText(props?.texts?.inputEmail) ?? 'email 2',
6158
+ name: Utils.normalizeControlName(props?.texts?.inputEmail, 'emailc') ?? 'email 2',
6152
6159
  placeholder: props?.texts?.inputEmail ?? 'Confirm your email',
6153
6160
  value: '',
6154
6161
  type: 'email',
@@ -6158,7 +6165,7 @@ class MapperService {
6158
6165
  },
6159
6166
  phoneInput: {
6160
6167
  title: props?.texts?.inputPhone ?? 'phone',
6161
- name: Utils.normalizeText(props?.texts?.inputPhone) ?? 'phone',
6168
+ name: Utils.normalizeControlName(props?.texts?.inputPhone, 'phone') ?? 'phone',
6162
6169
  placeholder: props?.texts?.inputPhone ?? 'Teléfono',
6163
6170
  value: '',
6164
6171
  type: 'tel',
@@ -6167,7 +6174,7 @@ class MapperService {
6167
6174
  valid: signal(true),
6168
6175
  },
6169
6176
  filesInput: {
6170
- name: Utils.normalizeText(props?.texts?.filesInput) ??
6177
+ name: Utils.normalizeControlName(props?.texts?.filesInput, 'additionalFiles') ??
6171
6178
  'additionalFiles',
6172
6179
  type: props?.texts?.filesInput ?? 'Additional files',
6173
6180
  label: props?.texts?.filesInput,
@@ -6176,7 +6183,7 @@ class MapperService {
6176
6183
  // validators: [Validators.required],
6177
6184
  },
6178
6185
  cvInput: {
6179
- name: Utils.normalizeText(props?.texts?.cvInput) ?? 'cv',
6186
+ name: Utils.normalizeControlName(props?.texts?.cvInput, 'cv') ?? 'cv',
6180
6187
  type: props?.texts?.cvInput,
6181
6188
  label: props?.texts?.cvInput ?? 'Upload yo ur CV here',
6182
6189
  value: null,
@@ -6237,7 +6244,7 @@ class MapperService {
6237
6244
  placeholder: props?.texts?.prefixes,
6238
6245
  },
6239
6246
  nameInput: {
6240
- name: this.sanitize(props?.texts?.nameTitle),
6247
+ name: Utils.normalizeControlName(props?.texts?.nameTitle, 'name'),
6241
6248
  placeholder: props?.texts?.nameTitle,
6242
6249
  value: '',
6243
6250
  type: 'text',
@@ -6247,7 +6254,7 @@ class MapperService {
6247
6254
  },
6248
6255
  surnameInput: {
6249
6256
  title: props?.texts?.surnamesTitle,
6250
- name: this.sanitize(props?.texts?.surnamesTitle),
6257
+ name: Utils.normalizeControlName(props?.texts?.surnamesTitle, 'surname'),
6251
6258
  placeholder: props?.texts?.surnamesTitle,
6252
6259
  value: '',
6253
6260
  type: 'text',
@@ -6257,7 +6264,7 @@ class MapperService {
6257
6264
  },
6258
6265
  emailInput: {
6259
6266
  title: props?.texts?.emailTitle,
6260
- name: this.sanitize(props?.texts?.emailTitle),
6267
+ name: Utils.normalizeControlName(props?.texts?.emailTitle, 'email'),
6261
6268
  placeholder: props?.texts?.emailTitle,
6262
6269
  value: '',
6263
6270
  type: 'email',
@@ -6266,7 +6273,7 @@ class MapperService {
6266
6273
  valid: signal(true),
6267
6274
  },
6268
6275
  companyNameInput: {
6269
- name: this.sanitize(props?.texts?.companyTitle),
6276
+ name: Utils.normalizeControlName(props?.texts?.companyTitle, 'companyName'),
6270
6277
  placeholder: props?.texts?.companyTitle,
6271
6278
  value: '',
6272
6279
  type: 'text',
@@ -6276,7 +6283,7 @@ class MapperService {
6276
6283
  },
6277
6284
  phoneInput: {
6278
6285
  title: props?.texts?.phoneTitle,
6279
- name: this.sanitize(props?.texts?.phoneTitle),
6286
+ name: Utils.normalizeControlName(props?.texts?.phoneTitle, 'phone'),
6280
6287
  placeholder: props?.texts?.phoneTitle,
6281
6288
  value: '',
6282
6289
  type: 'tel',
@@ -6285,7 +6292,7 @@ class MapperService {
6285
6292
  valid: signal(true),
6286
6293
  },
6287
6294
  npInput: {
6288
- name: this.sanitize(props?.texts?.npTitle),
6295
+ name: Utils.normalizeControlName(props?.texts?.npTitle, 'npTitle'),
6289
6296
  placeholder: props?.texts?.npTitle,
6290
6297
  value: '',
6291
6298
  type: 'text',
@@ -6294,7 +6301,7 @@ class MapperService {
6294
6301
  valid: signal(true),
6295
6302
  },
6296
6303
  dateInput: {
6297
- name: this.sanitize(props?.texts?.dateTitle),
6304
+ name: Utils.normalizeControlName(props?.texts?.dateTitle, 'date'),
6298
6305
  placeholder: props?.texts?.dateTitle,
6299
6306
  value: '',
6300
6307
  type: 'text',
@@ -6303,7 +6310,7 @@ class MapperService {
6303
6310
  valid: signal(true),
6304
6311
  },
6305
6312
  sHourInput: {
6306
- name: this.sanitize(props?.texts?.sHourTitle),
6313
+ name: Utils.normalizeControlName(props?.texts?.sHourTitle, 'startHour'),
6307
6314
  placeholder: props?.texts?.sHourTitle,
6308
6315
  value: '',
6309
6316
  type: 'text',
@@ -6312,7 +6319,7 @@ class MapperService {
6312
6319
  valid: signal(true),
6313
6320
  },
6314
6321
  fHourInput: {
6315
- name: this.sanitize(props?.texts?.fHourTitle),
6322
+ name: Utils.normalizeControlName(props?.texts?.fHourTitle, 'endHour'),
6316
6323
  placeholder: props?.texts?.fHourTitle,
6317
6324
  value: '',
6318
6325
  type: 'text',
@@ -6321,7 +6328,7 @@ class MapperService {
6321
6328
  valid: signal(true),
6322
6329
  },
6323
6330
  typeEventInput: {
6324
- name: this.sanitize(props?.texts?.neDropdown),
6331
+ name: Utils.normalizeControlName(props?.texts?.neDropdown, 'eventType'),
6325
6332
  placeholder: props?.texts?.neDropdown,
6326
6333
  value: '',
6327
6334
  type: 'text',
@@ -8432,7 +8439,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
8432
8439
 
8433
8440
  class PuroSlider3colComponent {
8434
8441
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroSlider3colComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8435
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroSlider3colComponent, isStandalone: true, selector: "lib-puro-slider3col", inputs: { items: "items", title: "title", button: "button" }, ngImport: i0, template: "@if (items && items.length > 0) {\n <section\n class=\"events js-active-slider generalMargin\"\n [puroSlider]=\"items\"\n data-slides_infinite=\"true\"\n data-slider_name=\"js-events-slider\"\n data-slider_showbtns=\"true\"\n data-slider_showdots=\"false\"\n data-slider_fade=\"false\"\n data-slider_centermode=\"true\"\n data-slider_autoplay=\"true\"\n data-slides_pc=\"3\"\n data-slides_laptop=\"3\"\n data-slides_tablet=\"1\"\n data-slides_mobile=\"1\"\n data-slides_mobile_small=\"1\"\n data-slides_mobile_xsmall=\"1\"\n >\n @if (title) {\n <span class=\"events__title\">{{ title }}</span>\n }\n <div class=\"events__inner relative\">\n <div class=\"events__container\">\n <div\n class=\"js-events-slider events__slider js-slider_fix-arrows\"\n >\n @for (item of items || []; track $index) {\n <div>\n <div class=\"events__box\">\n @if (item.title) {\n <div class=\"events__heading photo\">\n {{ item.title }}\n </div>\n }\n <div class=\"events__inner\">\n <div\n class=\"events__graphic js-slider_fix-arrows-zone\"\n >\n @if (item.img) {\n <img\n [ngSrc]=\"item.img.src\"\n class=\"events__graphic--img\"\n width=\"509\"\n height=\"510\"\n [alt]=\"item.img.alt\"\n decoding=\"async\"\n />\n }\n </div>\n <div class=\"events__info\">\n @if (item.location) {\n <span\n class=\"events__name __heading photo\"\n >{{ item.location }}</span\n >\n }\n @if (item.icon) {\n <div class=\"events__icon\">\n <i\n class=\"icon-{{ item.icon }}\"\n ></i>\n </div>\n }\n @if (item.date) {\n <span\n class=\"events__date __subHeading photo\"\n >{{\n item.date\n | date: 'dd-MM-yyyy'\n }}</span\n >\n }\n </div>\n <div class=\"btn__group\">\n @if (item.link) {\n <a\n [linkType]=\"item.link.linkType\"\n [href]=\"item.link.url\"\n class=\"btn__link\"\n [attr.aria-label]=\"\n item.link.label\n \"\n ><span>{{\n item.link.label\n }}</span></a\n >\n }\n @if (item.button) {\n <a\n [href]=\"item.button.url\"\n [linkType]=\"item.button.url\"\n class=\"btn btn__secondary\"\n [attr.aria-label]=\"\n item.button.label\n \"\n >\n <span>{{\n item.button.label\n }}</span>\n </a>\n }\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n <div class=\"js-slider-arrows\"></div>\n </div>\n </div>\n\n @if (button) {\n <div class=\"btn__group\">\n <a\n [linkType]=\"button.linkType\"\n [href]=\"button.url\"\n class=\"btn btn__primary--outline\"\n [attr.aria-label]=\"button.label\"\n ><span>{{ button.label }}</span></a\n >\n </div>\n }\n </section>\n}\n", styles: [".events__icon i{width:47px;height:47px;background-color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }, { kind: "directive", type: PuroLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick"], outputs: ["bookClick", "anchorClicked"] }, { kind: "directive", type: PuroSliderDirective, selector: "[puroSlider]", inputs: ["puroSlider"] }, { kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8442
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroSlider3colComponent, isStandalone: true, selector: "lib-puro-slider3col", inputs: { items: "items", title: "title", button: "button" }, ngImport: i0, template: "@if (items && items.length > 0) {\n <section\n class=\"events js-active-slider generalMargin\"\n [puroSlider]=\"items\"\n data-slides_infinite=\"true\"\n data-slider_name=\"js-events-slider\"\n data-slider_showbtns=\"true\"\n data-slider_showdots=\"false\"\n data-slider_fade=\"false\"\n data-slider_centermode=\"true\"\n data-slider_autoplay=\"true\"\n data-slides_pc=\"3\"\n data-slides_laptop=\"3\"\n data-slides_tablet=\"1\"\n data-slides_mobile=\"1\"\n data-slides_mobile_small=\"1\"\n data-slides_mobile_xsmall=\"1\"\n >\n @if (title) {\n <span class=\"events__title\">{{ title }}</span>\n }\n <div class=\"events__inner relative\">\n <div class=\"events__container\">\n <div\n class=\"js-events-slider events__slider js-slider_fix-arrows\"\n >\n @for (item of items || []; track $index) {\n <div>\n <div class=\"events__box\">\n @if (item.title) {\n <div class=\"events__heading photo\">\n {{ item.title }}\n </div>\n }\n <div class=\"events__inner\">\n <div\n class=\"events__graphic js-slider_fix-arrows-zone\"\n >\n @if (item.img) {\n <img\n [ngSrc]=\"item.img.src\"\n class=\"events__graphic--img\"\n width=\"509\"\n height=\"510\"\n [alt]=\"item.img.alt\"\n decoding=\"async\"\n />\n }\n </div>\n <div class=\"events__info\">\n @if (item.location) {\n <span\n class=\"events__name __heading photo\"\n >{{ item.location }}</span\n >\n }\n @if (item.icon) {\n <div class=\"events__icon\">\n <i\n class=\"icon-{{ item.icon }}\"\n ></i>\n </div>\n }\n @if (item.date) {\n <span\n class=\"events__date __subHeading photo\"\n >{{\n item.date\n | date: 'dd-MM-yyyy'\n }}</span\n >\n }\n </div>\n <div class=\"btn__group\">\n @if (item.link) {\n <a\n [linkType]=\"item.link.linkType\"\n [href]=\"item.link.url\"\n class=\"btn__link\"\n [attr.aria-label]=\"\n item.link.label\n \"\n ><span>{{\n item.link.label\n }}</span></a\n >\n }\n @if (item.button) {\n <a\n [href]=\"item.button.url\"\n [linkType]=\"item.button.url\"\n class=\"btn__link\"\n [attr.aria-label]=\"\n item.button.label\n \"\n >\n <span>{{\n item.button.label\n }}</span>\n </a>\n }\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n <div class=\"js-slider-arrows\"></div>\n </div>\n </div>\n\n @if (button) {\n <div class=\"btn__group\">\n <a\n [linkType]=\"button.linkType\"\n [href]=\"button.url\"\n class=\"btn btn__primary--outline\"\n [attr.aria-label]=\"button.label\"\n ><span>{{ button.label }}</span></a\n >\n </div>\n }\n </section>\n}\n", styles: [".events__icon i{width:47px;height:47px;background-color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }, { kind: "directive", type: PuroLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick"], outputs: ["bookClick", "anchorClicked"] }, { kind: "directive", type: PuroSliderDirective, selector: "[puroSlider]", inputs: ["puroSlider"] }, { kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8436
8443
  }
8437
8444
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroSlider3colComponent, decorators: [{
8438
8445
  type: Component,
@@ -8441,7 +8448,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
8441
8448
  PuroLinkTypeDirective,
8442
8449
  PuroSliderDirective,
8443
8450
  NgOptimizedImage,
8444
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (items && items.length > 0) {\n <section\n class=\"events js-active-slider generalMargin\"\n [puroSlider]=\"items\"\n data-slides_infinite=\"true\"\n data-slider_name=\"js-events-slider\"\n data-slider_showbtns=\"true\"\n data-slider_showdots=\"false\"\n data-slider_fade=\"false\"\n data-slider_centermode=\"true\"\n data-slider_autoplay=\"true\"\n data-slides_pc=\"3\"\n data-slides_laptop=\"3\"\n data-slides_tablet=\"1\"\n data-slides_mobile=\"1\"\n data-slides_mobile_small=\"1\"\n data-slides_mobile_xsmall=\"1\"\n >\n @if (title) {\n <span class=\"events__title\">{{ title }}</span>\n }\n <div class=\"events__inner relative\">\n <div class=\"events__container\">\n <div\n class=\"js-events-slider events__slider js-slider_fix-arrows\"\n >\n @for (item of items || []; track $index) {\n <div>\n <div class=\"events__box\">\n @if (item.title) {\n <div class=\"events__heading photo\">\n {{ item.title }}\n </div>\n }\n <div class=\"events__inner\">\n <div\n class=\"events__graphic js-slider_fix-arrows-zone\"\n >\n @if (item.img) {\n <img\n [ngSrc]=\"item.img.src\"\n class=\"events__graphic--img\"\n width=\"509\"\n height=\"510\"\n [alt]=\"item.img.alt\"\n decoding=\"async\"\n />\n }\n </div>\n <div class=\"events__info\">\n @if (item.location) {\n <span\n class=\"events__name __heading photo\"\n >{{ item.location }}</span\n >\n }\n @if (item.icon) {\n <div class=\"events__icon\">\n <i\n class=\"icon-{{ item.icon }}\"\n ></i>\n </div>\n }\n @if (item.date) {\n <span\n class=\"events__date __subHeading photo\"\n >{{\n item.date\n | date: 'dd-MM-yyyy'\n }}</span\n >\n }\n </div>\n <div class=\"btn__group\">\n @if (item.link) {\n <a\n [linkType]=\"item.link.linkType\"\n [href]=\"item.link.url\"\n class=\"btn__link\"\n [attr.aria-label]=\"\n item.link.label\n \"\n ><span>{{\n item.link.label\n }}</span></a\n >\n }\n @if (item.button) {\n <a\n [href]=\"item.button.url\"\n [linkType]=\"item.button.url\"\n class=\"btn btn__secondary\"\n [attr.aria-label]=\"\n item.button.label\n \"\n >\n <span>{{\n item.button.label\n }}</span>\n </a>\n }\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n <div class=\"js-slider-arrows\"></div>\n </div>\n </div>\n\n @if (button) {\n <div class=\"btn__group\">\n <a\n [linkType]=\"button.linkType\"\n [href]=\"button.url\"\n class=\"btn btn__primary--outline\"\n [attr.aria-label]=\"button.label\"\n ><span>{{ button.label }}</span></a\n >\n </div>\n }\n </section>\n}\n", styles: [".events__icon i{width:47px;height:47px;background-color:#fff}\n"] }]
8451
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (items && items.length > 0) {\n <section\n class=\"events js-active-slider generalMargin\"\n [puroSlider]=\"items\"\n data-slides_infinite=\"true\"\n data-slider_name=\"js-events-slider\"\n data-slider_showbtns=\"true\"\n data-slider_showdots=\"false\"\n data-slider_fade=\"false\"\n data-slider_centermode=\"true\"\n data-slider_autoplay=\"true\"\n data-slides_pc=\"3\"\n data-slides_laptop=\"3\"\n data-slides_tablet=\"1\"\n data-slides_mobile=\"1\"\n data-slides_mobile_small=\"1\"\n data-slides_mobile_xsmall=\"1\"\n >\n @if (title) {\n <span class=\"events__title\">{{ title }}</span>\n }\n <div class=\"events__inner relative\">\n <div class=\"events__container\">\n <div\n class=\"js-events-slider events__slider js-slider_fix-arrows\"\n >\n @for (item of items || []; track $index) {\n <div>\n <div class=\"events__box\">\n @if (item.title) {\n <div class=\"events__heading photo\">\n {{ item.title }}\n </div>\n }\n <div class=\"events__inner\">\n <div\n class=\"events__graphic js-slider_fix-arrows-zone\"\n >\n @if (item.img) {\n <img\n [ngSrc]=\"item.img.src\"\n class=\"events__graphic--img\"\n width=\"509\"\n height=\"510\"\n [alt]=\"item.img.alt\"\n decoding=\"async\"\n />\n }\n </div>\n <div class=\"events__info\">\n @if (item.location) {\n <span\n class=\"events__name __heading photo\"\n >{{ item.location }}</span\n >\n }\n @if (item.icon) {\n <div class=\"events__icon\">\n <i\n class=\"icon-{{ item.icon }}\"\n ></i>\n </div>\n }\n @if (item.date) {\n <span\n class=\"events__date __subHeading photo\"\n >{{\n item.date\n | date: 'dd-MM-yyyy'\n }}</span\n >\n }\n </div>\n <div class=\"btn__group\">\n @if (item.link) {\n <a\n [linkType]=\"item.link.linkType\"\n [href]=\"item.link.url\"\n class=\"btn__link\"\n [attr.aria-label]=\"\n item.link.label\n \"\n ><span>{{\n item.link.label\n }}</span></a\n >\n }\n @if (item.button) {\n <a\n [href]=\"item.button.url\"\n [linkType]=\"item.button.url\"\n class=\"btn__link\"\n [attr.aria-label]=\"\n item.button.label\n \"\n >\n <span>{{\n item.button.label\n }}</span>\n </a>\n }\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n <div class=\"js-slider-arrows\"></div>\n </div>\n </div>\n\n @if (button) {\n <div class=\"btn__group\">\n <a\n [linkType]=\"button.linkType\"\n [href]=\"button.url\"\n class=\"btn btn__primary--outline\"\n [attr.aria-label]=\"button.label\"\n ><span>{{ button.label }}</span></a\n >\n </div>\n }\n </section>\n}\n", styles: [".events__icon i{width:47px;height:47px;background-color:#fff}\n"] }]
8445
8452
  }], propDecorators: { items: [{
8446
8453
  type: Input
8447
8454
  }], title: [{