@seniorsistemas/angular-components 17.25.11 → 17.26.0-bugfix-sds-262-150ffd6b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/bundles/seniorsistemas-angular-components.umd.js +592 -66
  2. package/bundles/seniorsistemas-angular-components.umd.js.map +1 -1
  3. package/bundles/seniorsistemas-angular-components.umd.min.js +2 -2
  4. package/bundles/seniorsistemas-angular-components.umd.min.js.map +1 -1
  5. package/components/dynamic-form/configurations/fields/field.d.ts +1 -1
  6. package/components/dynamic-form/configurations/fields/text-area-field.d.ts +2 -0
  7. package/components/index.d.ts +1 -0
  8. package/components/speech-recognition/speech-recognition/speech-recognition.component.d.ts +50 -0
  9. package/components/speech-recognition/speech-recognition.module.d.ts +2 -0
  10. package/components/speech-recognition/speech-recognition.service.d.ts +18 -0
  11. package/components/speech-recognition/text-to-speech.service.d.ts +22 -0
  12. package/components/text-area/index.d.ts +2 -0
  13. package/components/text-area/text-area/text-area.component.d.ts +24 -0
  14. package/components/text-area/text-area.module.d.ts +2 -0
  15. package/esm2015/components/dynamic-form/components/fields/text-area/text-area-field.component.js +2 -2
  16. package/esm2015/components/dynamic-form/components/lookup/lookup.component.js +3 -3
  17. package/esm2015/components/dynamic-form/configurations/fields/field.js +4 -2
  18. package/esm2015/components/dynamic-form/configurations/fields/text-area-field.js +3 -1
  19. package/esm2015/components/dynamic-form/dynamic-form.module.js +3 -1
  20. package/esm2015/components/index.js +2 -1
  21. package/esm2015/components/speech-recognition/speech-recognition/speech-recognition.component.js +202 -0
  22. package/esm2015/components/speech-recognition/speech-recognition.module.js +19 -0
  23. package/esm2015/components/speech-recognition/speech-recognition.service.js +102 -0
  24. package/esm2015/components/speech-recognition/text-to-speech.service.js +75 -0
  25. package/esm2015/components/text-area/index.js +3 -0
  26. package/esm2015/components/text-area/text-area/text-area.component.js +87 -0
  27. package/esm2015/components/text-area/text-area.module.js +24 -0
  28. package/esm2015/locale/fallback.js +6 -2
  29. package/esm2015/seniorsistemas-angular-components.js +65 -61
  30. package/esm5/components/dynamic-form/components/fields/text-area/text-area-field.component.js +2 -2
  31. package/esm5/components/dynamic-form/components/lookup/lookup.component.js +3 -3
  32. package/esm5/components/dynamic-form/configurations/fields/field.js +9 -3
  33. package/esm5/components/dynamic-form/configurations/fields/text-area-field.js +3 -1
  34. package/esm5/components/dynamic-form/dynamic-form.module.js +3 -1
  35. package/esm5/components/index.js +2 -1
  36. package/esm5/components/speech-recognition/speech-recognition/speech-recognition.component.js +216 -0
  37. package/esm5/components/speech-recognition/speech-recognition.module.js +22 -0
  38. package/esm5/components/speech-recognition/speech-recognition.service.js +104 -0
  39. package/esm5/components/speech-recognition/text-to-speech.service.js +83 -0
  40. package/esm5/components/text-area/index.js +3 -0
  41. package/esm5/components/text-area/text-area/text-area.component.js +94 -0
  42. package/esm5/components/text-area/text-area.module.js +27 -0
  43. package/esm5/locale/fallback.js +6 -2
  44. package/esm5/seniorsistemas-angular-components.js +65 -61
  45. package/fesm2015/seniorsistemas-angular-components.js +486 -7
  46. package/fesm2015/seniorsistemas-angular-components.js.map +1 -1
  47. package/fesm5/seniorsistemas-angular-components.js +528 -8
  48. package/fesm5/seniorsistemas-angular-components.js.map +1 -1
  49. package/package.json +1 -1
  50. package/seniorsistemas-angular-components.d.ts +64 -60
  51. package/seniorsistemas-angular-components.metadata.json +1 -1
@@ -69,4 +69,5 @@ export * from "./toast/index";
69
69
  * @deprecated Will be removed on a major update
70
70
  */
71
71
  export * from "./number-input/index";
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsa0JBQWtCLENBQUE7QUFDaEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGVBQWUsQ0FBQztBQUM5Qjs7R0FFRztBQUNILGNBQWMsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9hY2NvcmRpb24vaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2FsZXJ0L2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9iYWRnZS9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYmlnbnVtYmVyLWlucHV0L2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9icmVhZGNydW1iL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9idXR0b24vaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NhbGVuZGFyLW1hc2svaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NhcmQvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NoYXQvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NoZWNrYm94L2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb2RlLWVkaXRvci9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29sbGFwc2UtbGluay9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29udHJvbC1lcnJvcnMvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvdW50cnktcGhvbmUtcGlja2VyL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jdXN0b20tZmllbGRzL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9keW5hbWljLWZvcm0vaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2VkaXRhYmxlLW92ZXJsYXkvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2VtcHR5LXN0YXRlL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9maWxlLXVwbG9hZC9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZ2FudHQvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2dsb2JhbC1zZWFyY2gvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2lhLWluc2lnaHQvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2dyaWQtbWVudS9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaW1hZ2UtY3JvcHBlci9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaW5mby1zaWduL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pbmxpbmUtZWRpdC9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4va2FuYmFuL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9sb2FkaW5nLXN0YXRlL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9sb2NhbGUvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xvY2FsaXplZC1udW1iZXItaW5wdXQvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21hc2svaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21vdXNlLWV2ZW50cy9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbmF2aWdhdGlvbi1idXR0b24vaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL29iamVjdC1jYXJkL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wYW5lbC9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGFzc3dvcmQtc3RyZW5ndGgvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Byb2R1Y3QtaGVhZGVyL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wcm9maWxlLXBpY3R1cmUtcGlja2VyL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wcm9ncmVzc2Jhci9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmF0aW5nLXNjYWxlL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zZWxlY3QtYnV0dG9uL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zaGFyZWQvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NpZGViYXIvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NsaWRlLXBhbmVsL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zbGlkZXIvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NwbGl0LWJ1dHRvbi9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3RhdHMtY2FyZC9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3RlcHMvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3N3aXRjaC9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGFibGUvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RhYmxlLWhlYWRlci9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVtcGxhdGUvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RleHQtYXJlYS1pYS9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGh1bWJuYWlsL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi90aHVtYm5haWxzL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi90aWVyZWQtbWVudS9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGlsZS9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGltZWxpbmUvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Rva2VuLWxpc3QvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Rvb2x0aXAvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi93b3Jrc3BhY2Utc3dpdGNoL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9sYWJlbC12YWx1ZS9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGlja2xpc3QvaW5kZXhcIlxuZXhwb3J0ICogZnJvbSBcIi4vY2hpcHMvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gJy4vaGVscC1wb3BvdmVyL2luZGV4JztcbmV4cG9ydCAqIGZyb20gXCIuL3RvYXN0L2luZGV4XCI7XG4vKipcbiAqIEBkZXByZWNhdGVkIFdpbGwgYmUgcmVtb3ZlZCBvbiBhIG1ham9yIHVwZGF0ZVxuICovXG5leHBvcnQgKiBmcm9tIFwiLi9udW1iZXItaW5wdXQvaW5kZXhcIjtcbiJdfQ==
72
+ export * from './text-area/index';
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsa0JBQWtCLENBQUE7QUFDaEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGVBQWUsQ0FBQztBQUM5Qjs7R0FFRztBQUNILGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxtQkFBbUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2FjY29yZGlvbi9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYWxlcnQvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2JhZGdlL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9iaWdudW1iZXItaW5wdXQvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2JyZWFkY3J1bWIvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2J1dHRvbi9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY2FsZW5kYXItbWFzay9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY2FyZC9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY2hhdC9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY2hlY2tib3gvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvZGUtZWRpdG9yL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb2xsYXBzZS1saW5rL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb250cm9sLWVycm9ycy9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY291bnRyeS1waG9uZS1waWNrZXIvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2N1c3RvbS1maWVsZHMvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2R5bmFtaWMtZm9ybS9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZWRpdGFibGUtb3ZlcmxheS9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZW1wdHktc3RhdGUvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2ZpbGUtdXBsb2FkL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9nYW50dC9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZ2xvYmFsLXNlYXJjaC9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaWEtaW5zaWdodC9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZ3JpZC1tZW51L2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pbWFnZS1jcm9wcGVyL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pbmZvLXNpZ24vaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2lubGluZS1lZGl0L2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9rYW5iYW4vaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xvYWRpbmctc3RhdGUvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xvY2FsZS9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbG9jYWxpemVkLW51bWJlci1pbnB1dC9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbWFzay9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbW91c2UtZXZlbnRzL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9uYXZpZ2F0aW9uLWJ1dHRvbi9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vb2JqZWN0LWNhcmQvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BhbmVsL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wYXNzd29yZC1zdHJlbmd0aC9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcHJvZHVjdC1oZWFkZXIvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Byb2ZpbGUtcGljdHVyZS1waWNrZXIvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Byb2dyZXNzYmFyL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yYXRpbmctc2NhbGUvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NlbGVjdC1idXR0b24vaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NoYXJlZC9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc2lkZWJhci9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc2xpZGUtcGFuZWwvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NsaWRlci9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3BsaXQtYnV0dG9uL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdGF0cy1jYXJkL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdGVwcy9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3dpdGNoL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi90YWJsZS9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGFibGUtaGVhZGVyL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZW1wbGF0ZS9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGV4dC1hcmVhLWlhL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi90aHVtYm5haWwvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RodW1ibmFpbHMvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RpZXJlZC1tZW51L2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi90aWxlL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi90aW1lbGluZS9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdG9rZW4tbGlzdC9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdG9vbHRpcC9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHMvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3dvcmtzcGFjZS1zd2l0Y2gvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xhYmVsLXZhbHVlL2luZGV4XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9waWNrbGlzdC9pbmRleFwiXG5leHBvcnQgKiBmcm9tIFwiLi9jaGlwcy9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSAnLi9oZWxwLXBvcG92ZXIvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSBcIi4vdG9hc3QvaW5kZXhcIjtcbi8qKlxuICogQGRlcHJlY2F0ZWQgV2lsbCBiZSByZW1vdmVkIG9uIGEgbWFqb3IgdXBkYXRlXG4gKi9cbmV4cG9ydCAqIGZyb20gXCIuL251bWJlci1pbnB1dC9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSAnLi90ZXh0LWFyZWEvaW5kZXgnXG4iXX0=
@@ -0,0 +1,216 @@
1
+ import { __decorate } from "tslib";
2
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
3
+ import { TranslateService } from '@ngx-translate/core';
4
+ import { Subject } from 'rxjs';
5
+ import { takeUntil } from 'rxjs/operators';
6
+ import { SpeechRecognitionService } from '../speech-recognition.service';
7
+ import { TextToSpeechService } from '../text-to-speech.service';
8
+ var SpeechRecognitionComponent = /** @class */ (function () {
9
+ function SpeechRecognitionComponent(speechRecognitionService, textToSpeechService, translateService) {
10
+ var _this = this;
11
+ this.speechRecognitionService = speechRecognitionService;
12
+ this.textToSpeechService = textToSpeechService;
13
+ this.translateService = translateService;
14
+ this._recognizedText = '';
15
+ this.originalTextAreaElementText = '';
16
+ this.isDoneSpeaking = false;
17
+ this.onDestroy$ = new Subject();
18
+ this.VOICE_SPEEDS = [0.5, 1, 1.5, 2];
19
+ this.SPEECH_RECOGNITION_MARGIN_OFFSET = 13;
20
+ this.keydownEventListener = function (event) {
21
+ if (_this.disabled) {
22
+ event.preventDefault();
23
+ }
24
+ };
25
+ this.TEXT_AREA_ELEMENT_MUTATION_OBSERVER = new MutationObserver(function () {
26
+ _this.SPEECH_CONTAINER_WIDTH_CALLBACK();
27
+ });
28
+ this.SPEECH_CONTAINER_WIDTH_CALLBACK = function () {
29
+ _this.setSpeechContainerWidth();
30
+ };
31
+ this.speechRecognitionContainerWidth = 0;
32
+ this.disabled = false;
33
+ this.isSpeaking = false;
34
+ this.voiceSpeed = 1;
35
+ this.isDisabledMicrophone = false;
36
+ this.canRenderMicrophone = true;
37
+ this.canRenderTextToSpeech = true;
38
+ this.canRenderListeningText = false;
39
+ this.canRenderDiscard = false;
40
+ this.canRenderAprove = false;
41
+ this.canRenderTextToSpeechToolbar = false;
42
+ this.isPlayingTextToSpeech = false;
43
+ this.recognizedText = new EventEmitter();
44
+ }
45
+ SpeechRecognitionComponent.prototype.ngOnInit = function () {
46
+ if (!this.textAreaElement) {
47
+ throw new Error('textAreaElement is required');
48
+ }
49
+ this.textAreaElement.placeholder = this.translateService.instant("platform.angular_components.text_area_speech_recognition_placeholder");
50
+ this.textAreaElement.addEventListener('keydown', this.keydownEventListener);
51
+ var config = { attributes: true, childList: true, subtree: true };
52
+ this.TEXT_AREA_ELEMENT_MUTATION_OBSERVER.observe(this.textAreaElement, config);
53
+ window.addEventListener('resize', this.SPEECH_CONTAINER_WIDTH_CALLBACK);
54
+ };
55
+ SpeechRecognitionComponent.prototype.ngAfterViewInit = function () {
56
+ var _this = this;
57
+ setTimeout(function () {
58
+ _this.setSpeechContainerWidth();
59
+ });
60
+ };
61
+ SpeechRecognitionComponent.prototype.onListen = function () {
62
+ var _this = this;
63
+ if (this.isDisabledMicrophone || this.isListening) {
64
+ return;
65
+ }
66
+ this.disabled = true;
67
+ this.canRenderMicrophone = false;
68
+ this.canRenderListeningText = true;
69
+ if (this.textAreaElement.value && !this.originalTextAreaElementText) {
70
+ this.originalTextAreaElementText = this.textAreaElement.value;
71
+ }
72
+ this.textAreaElement.value = '';
73
+ this.isSpeaking = true;
74
+ this.speechRecognitionService.listen()
75
+ .pipe(takeUntil(this.onDestroy$))
76
+ .subscribe(function (_a) {
77
+ var text = _a.text, isFinal = _a.isFinal;
78
+ _this._recognizedText = text;
79
+ _this.setTextAreaValue(text);
80
+ setTimeout(function () {
81
+ _this.textAreaElement.scrollTop = _this.textAreaElement.scrollHeight;
82
+ }, 120);
83
+ if (isFinal) {
84
+ _this.canRenderAprove = true;
85
+ _this.canRenderDiscard = true;
86
+ _this.canRenderListeningText = false;
87
+ _this.isSpeaking = false;
88
+ }
89
+ });
90
+ };
91
+ SpeechRecognitionComponent.prototype.onOpenToolbar = function () {
92
+ if (this.isDisabledTextToSpeech) {
93
+ return;
94
+ }
95
+ this.canRenderTextToSpeechToolbar = true;
96
+ this.canRenderTextToSpeech = false;
97
+ this.isPlayingTextToSpeech = true;
98
+ this.speak();
99
+ };
100
+ SpeechRecognitionComponent.prototype.onCloseToolbar = function () {
101
+ this.canRenderTextToSpeechToolbar = false;
102
+ this.canRenderTextToSpeech = true;
103
+ this.isPlayingTextToSpeech = false;
104
+ this.textToSpeechService.cancel();
105
+ this.voiceSpeed = 1;
106
+ };
107
+ SpeechRecognitionComponent.prototype.onDiscard = function () {
108
+ this.canRenderAprove = false;
109
+ this.canRenderDiscard = false;
110
+ this.canRenderMicrophone = true;
111
+ this.canRenderTextToSpeechToolbar = false;
112
+ this.canRenderTextToSpeech = true;
113
+ this._recognizedText = '';
114
+ this.setTextAreaValue(this.originalTextAreaElementText);
115
+ this.disabled = false;
116
+ this.textToSpeechService.cancel();
117
+ };
118
+ SpeechRecognitionComponent.prototype.onAprove = function () {
119
+ this.canRenderAprove = false;
120
+ this.canRenderDiscard = false;
121
+ this.canRenderMicrophone = true;
122
+ this.canRenderTextToSpeechToolbar = false;
123
+ this.canRenderTextToSpeech = true;
124
+ this.originalTextAreaElementText = this._recognizedText;
125
+ this.recognizedText.emit(this._recognizedText);
126
+ this._recognizedText = '';
127
+ this.disabled = false;
128
+ this.textToSpeechService.cancel();
129
+ };
130
+ SpeechRecognitionComponent.prototype.ngOnDestroy = function () {
131
+ this.onDestroy$.next();
132
+ this.onDestroy$.complete();
133
+ this.textAreaElement.removeEventListener('keydown', this.keydownEventListener);
134
+ window.removeEventListener('resize', this.SPEECH_CONTAINER_WIDTH_CALLBACK);
135
+ this.TEXT_AREA_ELEMENT_MUTATION_OBSERVER.disconnect();
136
+ };
137
+ SpeechRecognitionComponent.prototype.toggleTextToSpeech = function () {
138
+ if (this.isPlayingTextToSpeech) {
139
+ this.textToSpeechService.pause();
140
+ }
141
+ else {
142
+ if (this.isDoneSpeaking) {
143
+ this.speak();
144
+ }
145
+ else {
146
+ this.textToSpeechService.resume();
147
+ }
148
+ }
149
+ this.isPlayingTextToSpeech = !this.isPlayingTextToSpeech;
150
+ };
151
+ SpeechRecognitionComponent.prototype.restartTextToSpeech = function () {
152
+ this.isPlayingTextToSpeech = true;
153
+ this.textToSpeechService.cancel();
154
+ this.speak();
155
+ };
156
+ SpeechRecognitionComponent.prototype.updateVoiceSpeed = function () {
157
+ var voiceSpeedIndex = this.VOICE_SPEEDS.indexOf(this.voiceSpeed);
158
+ var nextVoiceSpeedIndex = this.VOICE_SPEEDS[voiceSpeedIndex + 1] ? voiceSpeedIndex + 1 : 0;
159
+ this.voiceSpeed = this.VOICE_SPEEDS[nextVoiceSpeedIndex];
160
+ this.textToSpeechService.cancel();
161
+ this.speak();
162
+ };
163
+ SpeechRecognitionComponent.prototype.stopListening = function () {
164
+ this.speechRecognitionService.stop();
165
+ };
166
+ Object.defineProperty(SpeechRecognitionComponent.prototype, "isListening", {
167
+ get: function () {
168
+ return this.speechRecognitionService.isListening;
169
+ },
170
+ enumerable: true,
171
+ configurable: true
172
+ });
173
+ Object.defineProperty(SpeechRecognitionComponent.prototype, "isDisabledTextToSpeech", {
174
+ get: function () {
175
+ var hasTextToSpeechVoice = this.textToSpeechService.hasVoice;
176
+ return !this._recognizedText || !hasTextToSpeechVoice || this.isListening;
177
+ },
178
+ enumerable: true,
179
+ configurable: true
180
+ });
181
+ SpeechRecognitionComponent.prototype.setTextAreaValue = function (value) {
182
+ this.textAreaElement.value = value;
183
+ };
184
+ SpeechRecognitionComponent.prototype.speak = function () {
185
+ var _this = this;
186
+ this.isDoneSpeaking = false;
187
+ this.textToSpeechService.speak(this._recognizedText, this.voiceSpeed).then(function () {
188
+ _this.isPlayingTextToSpeech = false;
189
+ _this.isDoneSpeaking = true;
190
+ });
191
+ };
192
+ SpeechRecognitionComponent.prototype.setSpeechContainerWidth = function () {
193
+ this.speechRecognitionContainerWidth = this.textAreaElement.getBoundingClientRect().width - this.SPEECH_RECOGNITION_MARGIN_OFFSET;
194
+ };
195
+ SpeechRecognitionComponent.ctorParameters = function () { return [
196
+ { type: SpeechRecognitionService },
197
+ { type: TextToSpeechService },
198
+ { type: TranslateService }
199
+ ]; };
200
+ __decorate([
201
+ Input()
202
+ ], SpeechRecognitionComponent.prototype, "textAreaElement", void 0);
203
+ __decorate([
204
+ Output()
205
+ ], SpeechRecognitionComponent.prototype, "recognizedText", void 0);
206
+ SpeechRecognitionComponent = __decorate([
207
+ Component({
208
+ selector: 's-speech-recognition',
209
+ template: "<section class=\"speech-recognition\" [style.width.px]=\"speechRecognitionContainerWidth\" *ngIf=\"speechRecognitionContainerWidth\">\n <div class=\"speech-recognition-text\">\n <ng-container *ngIf=\"canRenderMicrophone\">\n {{ 'platform.angular_components.text_area_before_speech' | translate }}\n </ng-container>\n\n <ng-container *ngIf=\"isSpeaking\">\n {{ 'platform.angular_components.text_area_while_speech' | translate }}\n </ng-container>\n\n <ng-container *ngIf=\"canRenderAprove && canRenderDiscard\">\n {{ 'platform.angular_components.text_area_end_speech' | translate }}\n </ng-container>\n </div>\n <div class=\"speech-recognition-buttons\">\n <span\n *ngIf=\"canRenderListeningText\"\n (click)=\"stopListening()\"\n class=\"speech-recognition-item speech-recognition-item-regular\">\n <i class=\"far fa-ellipsis-h\"></i>\n </span>\n\n <span\n *ngIf=\"canRenderMicrophone\"\n (click)=\"onListen()\"\n class=\"speech-recognition-item speech-recognition-item-microphone\"\n [class.speech-recognition-item-disabled]=\"isDisabledMicrophone || isListening || disabled\">\n <i class=\"fas fa-microphone\"></i>\n </span>\n\n <span\n *ngIf=\"canRenderAprove\"\n (click)=\"onAprove()\"\n class=\"speech-recognition-item speech-recognition-item-aprove\">\n <i class=\"fas fa-check\"></i>\n </span>\n\n <span *ngIf=\"canRenderDiscard\"\n (click)=\"onDiscard()\"\n class=\"speech-recognition-item speech-recognition-item-discard\">\n <i class=\"fas fa-times\"></i>\n </span>\n\n <span\n *ngIf=\"canRenderTextToSpeech\"\n (click)=\"onOpenToolbar()\"\n class=\"speech-recognition-item speech-recognition-item-regular\"\n [class.speech-recognition-item-disabled]=\"isDisabledTextToSpeech\">\n <i class=\"fas fa-volume-down\"></i>\n </span>\n\n <span\n *ngIf=\"canRenderTextToSpeechToolbar\"\n class=\"speech-recognition-item-toolbar\">\n <i class=\"fas\" [class.fa-pause]=\"isPlayingTextToSpeech\" [class.fa-play]=\"!isPlayingTextToSpeech\"\n (click)=\"toggleTextToSpeech()\"></i>\n <i class=\"fas fa-backward\" (click)=\"restartTextToSpeech()\"></i>\n <span (click)=\"updateVoiceSpeed()\">\n {{ voiceSpeed }}x\n </span>\n <i class=\"fas fa-times\" (click)=\"onCloseToolbar()\"></i>\n </span>\n </div>\n</section>\n",
210
+ styles: [".speech-recognition{display:-ms-flexbox;display:flex;gap:10px;-ms-flex-pack:justify;justify-content:space-between}.speech-recognition-buttons{display:-ms-flexbox;display:flex;gap:10px;position:relative;bottom:15px}.speech-recognition-item{display:-ms-inline-flexbox;display:inline-flex;height:25px;padding:4px 12px;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;gap:8px;border-radius:15px;cursor:pointer;transition:background .1s ease-in}.speech-recognition-item i,.speech-recognition-item span{color:#fff}.speech-recognition-item-disabled{cursor:default!important}.speech-recognition-item-disabled *{opacity:.5}.speech-recognition-item-microphone{background:#428bca}.speech-recognition-item-microphone:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-regular{background:#7892a1}.speech-recognition-item-regular:not(.speech-recognition-item-disabled):hover{background:#697882}.speech-recognition-item-aprove{background:#0c9348}.speech-recognition-item-aprove:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-discard{background:#c13018}.speech-recognition-item-discard:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-toolbar{background:#7892a1;display:-ms-flexbox;display:flex;border-radius:15px;-ms-flex-align:center;align-items:center;color:#fff}.speech-recognition-item-toolbar i,.speech-recognition-item-toolbar span{cursor:pointer}.speech-recognition-item-toolbar i:not(:first-child),.speech-recognition-item-toolbar i:not(:last-child){padding:6px}.speech-recognition-item-toolbar i:first-child{padding-left:10px}.speech-recognition-item-toolbar i:last-child{padding-right:10px}.speech-recognition-item-toolbar span{height:25px}.speech-recognition-text{color:#212533;font-size:12px;font-style:normal;font-weight:400;word-break:break-word}"]
211
+ })
212
+ ], SpeechRecognitionComponent);
213
+ return SpeechRecognitionComponent;
214
+ }());
215
+ export { SpeechRecognitionComponent };
216
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlZWNoLXJlY29nbml0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3NwZWVjaC1yZWNvZ25pdGlvbi9zcGVlY2gtcmVjb2duaXRpb24vc3BlZWNoLXJlY29nbml0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBT2hFO0lBcUNFLG9DQUNtQix3QkFBa0QsRUFDbEQsbUJBQXdDLEVBQ3hDLGdCQUFrQztRQUhyRCxpQkFJSztRQUhjLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBdEM3QyxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixnQ0FBMkIsR0FBRyxFQUFFLENBQUM7UUFDakMsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDZCxlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNqQyxpQkFBWSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEMscUNBQWdDLEdBQUcsRUFBRSxDQUFDO1FBQ3RDLHlC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RUFBc0M7SUFtQ3BDO1FBQVQsTUFBTSxFQUFFO3NFQUE2QztJQXBDM0MsMEJBQTBCO1FBTHRDLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxzQkFBc0I7WUFDaEMsK3JGQUFrRDs7U0FFbkQsQ0FBQztPQUNXLDBCQUEwQixDQW1NdEM7SUFBRCxpQ0FBQztDQUFBLEFBbk1ELElBbU1DO1NBbk1ZLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc3BlZWNoLXJlY29nbml0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGV4dFRvU3BlZWNoU2VydmljZSB9IGZyb20gJy4uL3RleHQtdG8tc3BlZWNoLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzLXNwZWVjaC1yZWNvZ25pdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zcGVlY2gtcmVjb2duaXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zcGVlY2gtcmVjb2duaXRpb24uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgdGV4dEFyZWFFbGVtZW50OiBIVE1MVGV4dEFyZWFFbGVtZW50O1xuICBwcml2YXRlIF9yZWNvZ25pemVkVGV4dCA9ICcnO1xuICBwcml2YXRlIG9yaWdpbmFsVGV4dEFyZWFFbGVtZW50VGV4dCA9ICcnO1xuICBwcml2YXRlIGlzRG9uZVNwZWFraW5nID0gZmFsc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgb25EZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgVk9JQ0VfU1BFRURTID0gWzAuNSwgMSwgMS41LCAyXTtcbiAgcHJpdmF0ZSByZWFkb25seSBTUEVFQ0hfUkVDT0dOSVRJT05fTUFSR0lOX09GRlNFVCA9IDEzO1xuICBwcml2YXRlIHJlYWRvbmx5IGtleWRvd25FdmVudExpc3RlbmVyID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgVEVYVF9BUkVBX0VMRU1FTlRfTVVUQVRJT05fT0JTRVJWRVIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7XG4gICAgdGhpcy5TUEVFQ0hfQ09OVEFJTkVSX1dJRFRIX0NBTExCQUNLKCk7XG4gIH0pXG5cbiAgcHJpdmF0ZSByZWFkb25seSBTUEVFQ0hfQ09OVEFJTkVSX1dJRFRIX0NBTExCQUNLID0gKCkgPT4ge1xuICAgIHRoaXMuc2V0U3BlZWNoQ29udGFpbmVyV2lkdGgoKTtcbiAgfVxuICBzcGVlY2hSZWNvZ25pdGlvbkNvbnRhaW5lcldpZHRoID0gMDtcblxuICBkaXNhYmxlZCA9IGZhbHNlO1xuICBpc1NwZWFraW5nID0gZmFsc2U7XG4gIHZvaWNlU3BlZWQgPSAxO1xuICBpc0Rpc2FibGVkTWljcm9waG9uZSA9IGZhbHNlO1xuXG4gIGNhblJlbmRlck1pY3JvcGhvbmUgPSB0cnVlO1xuICBjYW5SZW5kZXJUZXh0VG9TcGVlY2ggPSB0cnVlO1xuICBjYW5SZW5kZXJMaXN0ZW5pbmdUZXh0ID0gZmFsc2U7XG4gIGNhblJlbmRlckRpc2NhcmQgPSBmYWxzZTtcbiAgY2FuUmVuZGVyQXByb3ZlID0gZmFsc2U7XG4gIGNhblJlbmRlclRleHRUb1NwZWVjaFRvb2xiYXIgPSBmYWxzZTtcblxuICBpc1BsYXlpbmdUZXh0VG9TcGVlY2ggPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgcmVjb2duaXplZFRleHQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzcGVlY2hSZWNvZ25pdGlvblNlcnZpY2U6IFNwZWVjaFJlY29nbml0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRleHRUb1NwZWVjaFNlcnZpY2U6IFRleHRUb1NwZWVjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRleHRBcmVhRWxlbWVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0ZXh0QXJlYUVsZW1lbnQgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgdGhpcy50ZXh0QXJlYUVsZW1lbnQucGxhY2Vob2xkZXIgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcInBsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy50ZXh0X2FyZWFfc3BlZWNoX3JlY29nbml0aW9uX3BsYWNlaG9sZGVyXCIpO1xuICAgIHRoaXMudGV4dEFyZWFFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmtleWRvd25FdmVudExpc3RlbmVyKVxuICAgIGNvbnN0IGNvbmZpZzogTXV0YXRpb25PYnNlcnZlckluaXQgPSB7IGF0dHJpYnV0ZXM6IHRydWUsIGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9O1xuICAgIHRoaXMuVEVYVF9BUkVBX0VMRU1FTlRfTVVUQVRJT05fT0JTRVJWRVIub2JzZXJ2ZSh0aGlzLnRleHRBcmVhRWxlbWVudCwgY29uZmlnKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5TUEVFQ0hfQ09OVEFJTkVSX1dJRFRIX0NBTExCQUNLKVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZXRTcGVlY2hDb250YWluZXJXaWR0aCgpO1xuICAgIH0pXG4gIH1cblxuICBvbkxpc3RlbigpIHtcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkTWljcm9waG9uZSB8fCB0aGlzLmlzTGlzdGVuaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGlzYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMuY2FuUmVuZGVyTWljcm9waG9uZSA9IGZhbHNlO1xuICAgIHRoaXMuY2FuUmVuZGVyTGlzdGVuaW5nVGV4dCA9IHRydWU7XG4gICAgaWYgKHRoaXMudGV4dEFyZWFFbGVtZW50LnZhbHVlICYmICF0aGlzLm9yaWdpbmFsVGV4dEFyZWFFbGVtZW50VGV4dCkge1xuICAgICAgdGhpcy5vcmlnaW5hbFRleHRBcmVhRWxlbWVudFRleHQgPSB0aGlzLnRleHRBcmVhRWxlbWVudC52YWx1ZTtcbiAgICB9XG5cblxuICAgIHRoaXMudGV4dEFyZWFFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgdGhpcy5pc1NwZWFraW5nID0gdHJ1ZTtcbiAgICB0aGlzLnNwZWVjaFJlY29nbml0aW9uU2VydmljZS5saXN0ZW4oKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKCh7IHRleHQsIGlzRmluYWwgfSkgPT4ge1xuICAgICAgICB0aGlzLl9yZWNvZ25pemVkVGV4dCA9IHRleHQ7XG4gICAgICAgIHRoaXMuc2V0VGV4dEFyZWFWYWx1ZSh0ZXh0KTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy50ZXh0QXJlYUVsZW1lbnQuc2Nyb2xsVG9wID0gdGhpcy50ZXh0QXJlYUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICB9LCAxMjApXG4gICAgICAgIGlmIChpc0ZpbmFsKSB7XG4gICAgICAgICAgdGhpcy5jYW5SZW5kZXJBcHJvdmUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY2FuUmVuZGVyRGlzY2FyZCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5jYW5SZW5kZXJMaXN0ZW5pbmdUZXh0ID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5pc1NwZWFraW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH1cblxuICBvbk9wZW5Ub29sYmFyKCkge1xuICAgIGlmICh0aGlzLmlzRGlzYWJsZWRUZXh0VG9TcGVlY2gpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jYW5SZW5kZXJUZXh0VG9TcGVlY2hUb29sYmFyID0gdHJ1ZTtcbiAgICB0aGlzLmNhblJlbmRlclRleHRUb1NwZWVjaCA9IGZhbHNlO1xuICAgIHRoaXMuaXNQbGF5aW5nVGV4dFRvU3BlZWNoID0gdHJ1ZTtcbiAgICB0aGlzLnNwZWFrKCk7XG4gIH1cblxuICBvbkNsb3NlVG9vbGJhcigpIHtcbiAgICB0aGlzLmNhblJlbmRlclRleHRUb1NwZWVjaFRvb2xiYXIgPSBmYWxzZTtcbiAgICB0aGlzLmNhblJlbmRlclRleHRUb1NwZWVjaCA9IHRydWU7XG4gICAgdGhpcy5pc1BsYXlpbmdUZXh0VG9TcGVlY2ggPSBmYWxzZTtcbiAgICB0aGlzLnRleHRUb1NwZWVjaFNlcnZpY2UuY2FuY2VsKCk7XG4gICAgdGhpcy52b2ljZVNwZWVkID0gMTtcbiAgfVxuICBvbkRpc2NhcmQoKSB7XG4gICAgdGhpcy5jYW5SZW5kZXJBcHJvdmUgPSBmYWxzZTtcbiAgICB0aGlzLmNhblJlbmRlckRpc2NhcmQgPSBmYWxzZTtcbiAgICB0aGlzLmNhblJlbmRlck1pY3JvcGhvbmUgPSB0cnVlO1xuICAgIHRoaXMuY2FuUmVuZGVyVGV4dFRvU3BlZWNoVG9vbGJhciA9IGZhbHNlO1xuICAgIHRoaXMuY2FuUmVuZGVyVGV4dFRvU3BlZWNoID0gdHJ1ZTtcbiAgICB0aGlzLl9yZWNvZ25pemVkVGV4dCA9ICcnO1xuICAgIHRoaXMuc2V0VGV4dEFyZWFWYWx1ZSh0aGlzLm9yaWdpbmFsVGV4dEFyZWFFbGVtZW50VGV4dCk7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMudGV4dFRvU3BlZWNoU2VydmljZS5jYW5jZWwoKTtcbiAgfVxuXG4gIG9uQXByb3ZlKCkge1xuICAgIHRoaXMuY2FuUmVuZGVyQXByb3ZlID0gZmFsc2U7XG4gICAgdGhpcy5jYW5SZW5kZXJEaXNjYXJkID0gZmFsc2U7XG4gICAgdGhpcy5jYW5SZW5kZXJNaWNyb3Bob25lID0gdHJ1ZTtcbiAgICB0aGlzLmNhblJlbmRlclRleHRUb1NwZWVjaFRvb2xiYXIgPSBmYWxzZTtcbiAgICB0aGlzLmNhblJlbmRlclRleHRUb1NwZWVjaCA9IHRydWU7XG4gICAgdGhpcy5vcmlnaW5hbFRleHRBcmVhRWxlbWVudFRleHQgPSB0aGlzLl9yZWNvZ25pemVkVGV4dFxuICAgIHRoaXMucmVjb2duaXplZFRleHQuZW1pdCh0aGlzLl9yZWNvZ25pemVkVGV4dCk7XG4gICAgdGhpcy5fcmVjb2duaXplZFRleHQgPSAnJztcbiAgICB0aGlzLmRpc2FibGVkID0gZmFsc2U7XG4gICAgdGhpcy50ZXh0VG9TcGVlY2hTZXJ2aWNlLmNhbmNlbCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLm9uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB0aGlzLnRleHRBcmVhRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5rZXlkb3duRXZlbnRMaXN0ZW5lcik7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuU1BFRUNIX0NPTlRBSU5FUl9XSURUSF9DQUxMQkFDSyk7XG4gICAgdGhpcy5URVhUX0FSRUFfRUxFTUVOVF9NVVRBVElPTl9PQlNFUlZFUi5kaXNjb25uZWN0KCk7XG4gIH1cblxuICB0b2dnbGVUZXh0VG9TcGVlY2goKSB7XG4gICAgaWYgKHRoaXMuaXNQbGF5aW5nVGV4dFRvU3BlZWNoKSB7XG4gICAgICB0aGlzLnRleHRUb1NwZWVjaFNlcnZpY2UucGF1c2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuaXNEb25lU3BlYWtpbmcpIHtcbiAgICAgICAgdGhpcy5zcGVhaygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50ZXh0VG9TcGVlY2hTZXJ2aWNlLnJlc3VtZSgpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmlzUGxheWluZ1RleHRUb1NwZWVjaCA9ICF0aGlzLmlzUGxheWluZ1RleHRUb1NwZWVjaDtcbiAgfVxuXG4gIHJlc3RhcnRUZXh0VG9TcGVlY2goKSB7XG4gICAgdGhpcy5pc1BsYXlpbmdUZXh0VG9TcGVlY2ggPSB0cnVlO1xuICAgIHRoaXMudGV4dFRvU3BlZWNoU2VydmljZS5jYW5jZWwoKTtcbiAgICB0aGlzLnNwZWFrKCk7XG4gIH1cblxuICB1cGRhdGVWb2ljZVNwZWVkKCkge1xuICAgIGNvbnN0IHZvaWNlU3BlZWRJbmRleCA9IHRoaXMuVk9JQ0VfU1BFRURTLmluZGV4T2YodGhpcy52b2ljZVNwZWVkKTtcbiAgICBjb25zdCBuZXh0Vm9pY2VTcGVlZEluZGV4ID0gdGhpcy5WT0lDRV9TUEVFRFNbdm9pY2VTcGVlZEluZGV4ICsgMV0gPyB2b2ljZVNwZWVkSW5kZXggKyAxIDogMDtcbiAgICB0aGlzLnZvaWNlU3BlZWQgPSB0aGlzLlZPSUNFX1NQRUVEU1tuZXh0Vm9pY2VTcGVlZEluZGV4XTtcbiAgICB0aGlzLnRleHRUb1NwZWVjaFNlcnZpY2UuY2FuY2VsKCk7XG4gICAgdGhpcy5zcGVhaygpXG4gIH1cblxuICBzdG9wTGlzdGVuaW5nKCkge1xuICAgIHRoaXMuc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlLnN0b3AoKTtcbiAgfVxuXG4gIGdldCBpc0xpc3RlbmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5zcGVlY2hSZWNvZ25pdGlvblNlcnZpY2UuaXNMaXN0ZW5pbmdcbiAgfVxuXG4gIGdldCBpc0Rpc2FibGVkVGV4dFRvU3BlZWNoKCkge1xuICAgIGNvbnN0IGhhc1RleHRUb1NwZWVjaFZvaWNlID0gdGhpcy50ZXh0VG9TcGVlY2hTZXJ2aWNlLmhhc1ZvaWNlO1xuICAgIHJldHVybiAhdGhpcy5fcmVjb2duaXplZFRleHQgfHwgIWhhc1RleHRUb1NwZWVjaFZvaWNlIHx8IHRoaXMuaXNMaXN0ZW5pbmc7XG4gIH1cbiAgcHJpdmF0ZSBzZXRUZXh0QXJlYVZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRleHRBcmVhRWxlbWVudC52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzcGVhaygpIHtcbiAgICB0aGlzLmlzRG9uZVNwZWFraW5nID0gZmFsc2U7XG4gICAgdGhpcy50ZXh0VG9TcGVlY2hTZXJ2aWNlLnNwZWFrKHRoaXMuX3JlY29nbml6ZWRUZXh0LCB0aGlzLnZvaWNlU3BlZWQpLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5pc1BsYXlpbmdUZXh0VG9TcGVlY2ggPSBmYWxzZTtcbiAgICAgIHRoaXMuaXNEb25lU3BlYWtpbmcgPSB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTcGVlY2hDb250YWluZXJXaWR0aCgpIHtcbiAgICB0aGlzLnNwZWVjaFJlY29nbml0aW9uQ29udGFpbmVyV2lkdGggPSB0aGlzLnRleHRBcmVhRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCAtIHRoaXMuU1BFRUNIX1JFQ09HTklUSU9OX01BUkdJTl9PRkZTRVQ7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,22 @@
1
+ import { __decorate } from "tslib";
2
+ import { CommonModule } from '@angular/common';
3
+ import { NgModule } from '@angular/core';
4
+ import { SpeechRecognitionComponent } from './speech-recognition/speech-recognition.component';
5
+ import { TranslateModule } from '@ngx-translate/core';
6
+ var SpeechRecognitionModule = /** @class */ (function () {
7
+ function SpeechRecognitionModule() {
8
+ }
9
+ SpeechRecognitionModule = __decorate([
10
+ NgModule({
11
+ declarations: [SpeechRecognitionComponent],
12
+ imports: [
13
+ CommonModule,
14
+ TranslateModule
15
+ ],
16
+ exports: [SpeechRecognitionComponent]
17
+ })
18
+ ], SpeechRecognitionModule);
19
+ return SpeechRecognitionModule;
20
+ }());
21
+ export { SpeechRecognitionModule };
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlZWNoLXJlY29nbml0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3NwZWVjaC1yZWNvZ25pdGlvbi9zcGVlY2gtcmVjb2duaXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMvRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFVdEQ7SUFBQTtJQUF1QyxDQUFDO0lBQTNCLHVCQUF1QjtRQVJuQyxRQUFRLENBQUM7WUFDUixZQUFZLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztZQUMxQyxPQUFPLEVBQUU7Z0JBQ1AsWUFBWTtnQkFDWixlQUFlO2FBQ2hCO1lBQ0QsT0FBTyxFQUFFLENBQUMsMEJBQTBCLENBQUM7U0FDdEMsQ0FBQztPQUNXLHVCQUF1QixDQUFJO0lBQUQsOEJBQUM7Q0FBQSxBQUF4QyxJQUF3QztTQUEzQix1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNwZWVjaFJlY29nbml0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9zcGVlY2gtcmVjb2duaXRpb24vc3BlZWNoLXJlY29nbml0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU3BlZWNoUmVjb2duaXRpb25Db21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbU3BlZWNoUmVjb2duaXRpb25Db21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIFNwZWVjaFJlY29nbml0aW9uTW9kdWxlIHsgfVxuIl19
@@ -0,0 +1,104 @@
1
+ import { __decorate } from "tslib";
2
+ import { Injectable, NgZone } from '@angular/core';
3
+ import { Subject } from 'rxjs';
4
+ import { LocaleService } from '../locale/locale.service';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../locale/locale.service";
7
+ var SpeechRecognitionService = /** @class */ (function () {
8
+ function SpeechRecognitionService(localeService, ngZone) {
9
+ this.localeService = localeService;
10
+ this.ngZone = ngZone;
11
+ this.isListening = false;
12
+ this.TIMEOUT_NO_MESSAGE = 3000;
13
+ this.setRecognition();
14
+ }
15
+ SpeechRecognitionService.prototype.listen = function () {
16
+ var _this = this;
17
+ if (this.isListening) {
18
+ return;
19
+ }
20
+ var speechSubject = new Subject();
21
+ this.isListening = true;
22
+ this.recognition.continuous = true;
23
+ this.recognition.interimResults = true;
24
+ this.recognition.maxAlternatives = 1;
25
+ var silenceTimer;
26
+ var restartSilenceTimer = function () {
27
+ if (silenceTimer !== undefined) {
28
+ clearTimeout(silenceTimer);
29
+ }
30
+ silenceTimer = setTimeout(function () {
31
+ _this.recognition.stop();
32
+ }, _this.TIMEOUT_NO_MESSAGE);
33
+ };
34
+ var fullTranscript = '';
35
+ var interimTranscript = '';
36
+ this.recognition.onresult = function (event) {
37
+ _this.ngZone.run(function () {
38
+ restartSilenceTimer();
39
+ var interimTranscript = '';
40
+ for (var i = event.resultIndex; i < event.results.length; ++i) {
41
+ var transcript = event.results[i][0].transcript;
42
+ if (event.results[i].isFinal) {
43
+ fullTranscript += transcript + '\n';
44
+ }
45
+ else {
46
+ interimTranscript += transcript;
47
+ }
48
+ }
49
+ interimTranscript = interimTranscript;
50
+ speechSubject.next({ text: fullTranscript + interimTranscript, isFinal: false });
51
+ });
52
+ };
53
+ this.recognition.onerror = function () {
54
+ _this.ngZone.run(function () {
55
+ if (silenceTimer !== undefined) {
56
+ clearTimeout(silenceTimer);
57
+ }
58
+ _this.isListening = false;
59
+ speechSubject.next({
60
+ isFinal: true,
61
+ text: ''
62
+ });
63
+ });
64
+ };
65
+ this.recognition.onend = function () {
66
+ _this.ngZone.run(function () {
67
+ if (silenceTimer !== undefined) {
68
+ clearTimeout(silenceTimer);
69
+ }
70
+ speechSubject.next({ text: fullTranscript + interimTranscript, isFinal: true });
71
+ _this.isListening = false;
72
+ speechSubject.complete();
73
+ });
74
+ };
75
+ this.recognition.start();
76
+ return speechSubject;
77
+ };
78
+ SpeechRecognitionService.prototype.stop = function () {
79
+ this.recognition.stop();
80
+ };
81
+ SpeechRecognitionService.prototype.setRecognition = function () {
82
+ var SpeechRecognitionConstructor = window.SpeechRecognition || window.webkitSpeechRecognition;
83
+ if (!SpeechRecognitionConstructor) {
84
+ throw new Error('Speech recognition is not supported in this browser.');
85
+ }
86
+ this.recognition = new SpeechRecognitionConstructor();
87
+ this.recognition.lang = this.localeService.getLocaleOptions().locale || 'pt-BR';
88
+ this.recognition.interimResults = false;
89
+ this.recognition.maxAlternatives = 1;
90
+ };
91
+ SpeechRecognitionService.ctorParameters = function () { return [
92
+ { type: LocaleService },
93
+ { type: NgZone }
94
+ ]; };
95
+ SpeechRecognitionService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SpeechRecognitionService_Factory() { return new SpeechRecognitionService(i0.ɵɵinject(i1.LocaleService), i0.ɵɵinject(i0.NgZone)); }, token: SpeechRecognitionService, providedIn: "root" });
96
+ SpeechRecognitionService = __decorate([
97
+ Injectable({
98
+ providedIn: 'root'
99
+ })
100
+ ], SpeechRecognitionService);
101
+ return SpeechRecognitionService;
102
+ }());
103
+ export { SpeechRecognitionService };
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlZWNoLXJlY29nbml0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9zcGVlY2gtcmVjb2duaXRpb24vc3BlZWNoLXJlY29nbml0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7QUFVekQ7SUFLRSxrQ0FBNkIsYUFBNEIsRUFBbUIsTUFBYztRQUE3RCxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFtQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBSjFGLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRUgsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBR3pDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQseUNBQU0sR0FBTjtRQUFBLGlCQWlFQztRQWhFQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsT0FBTztTQUNSO1FBQ0QsSUFBTSxhQUFhLEdBQUcsSUFBSSxPQUFPLEVBQWdCLENBQUM7UUFDbEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUN2QyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFDckMsSUFBSSxZQUFpQixDQUFDO1FBQ3RCLElBQU0sbUJBQW1CLEdBQUc7WUFDMUIsSUFBSSxZQUFZLEtBQUssU0FBUyxFQUFFO2dCQUM5QixZ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QUMsV0FBVyxHQUFHLElBQUksNEJBQTRCLEVBQUUsQ0FBQztRQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQztRQUNoRixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7O2dCQXZGMkMsYUFBYTtnQkFBMkIsTUFBTTs7O0lBTC9FLHdCQUF3QjtRQUhwQyxVQUFVLENBQUM7WUFDVixVQUFVLEVBQUUsTUFBTTtTQUNuQixDQUFDO09BQ1csd0JBQXdCLENBNkZwQzttQ0F6R0Q7Q0F5R0MsQUE3RkQsSUE2RkM7U0E3Rlksd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnLi4vbG9jYWxlL2xvY2FsZS5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBTcGVlY2hSZXN1bHQge1xuICB0ZXh0OiBzdHJpbmc7XG4gIGlzRmluYWw6IGJvb2xlYW47XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFNwZWVjaFJlY29nbml0aW9uU2VydmljZSB7XG4gIGlzTGlzdGVuaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgcmVjb2duaXRpb24hOiBTcGVlY2hSZWNvZ25pdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBUSU1FT1VUX05PX01FU1NBR0UgPSAzMDAwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbG9jYWxlU2VydmljZTogTG9jYWxlU2VydmljZSwgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSkge1xuICAgIHRoaXMuc2V0UmVjb2duaXRpb24oKTtcbiAgfVxuXG4gIGxpc3RlbigpOiBTdWJqZWN0PFNwZWVjaFJlc3VsdD4ge1xuICAgIGlmICh0aGlzLmlzTGlzdGVuaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHNwZWVjaFN1YmplY3QgPSBuZXcgU3ViamVjdDxTcGVlY2hSZXN1bHQ+KCk7XG4gICAgdGhpcy5pc0xpc3RlbmluZyA9IHRydWU7XG4gICAgdGhpcy5yZWNvZ25pdGlvbi5jb250aW51b3VzID0gdHJ1ZTtcbiAgICB0aGlzLnJlY29nbml0aW9uLmludGVyaW1SZXN1bHRzID0gdHJ1ZTtcbiAgICB0aGlzLnJlY29nbml0aW9uLm1heEFsdGVybmF0aXZlcyA9IDE7XG4gICAgbGV0IHNpbGVuY2VUaW1lcjogYW55O1xuICAgIGNvbnN0IHJlc3RhcnRTaWxlbmNlVGltZXIgPSAoKSA9PiB7XG4gICAgICBpZiAoc2lsZW5jZVRpbWVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHNpbGVuY2VUaW1lcik7XG4gICAgICB9XG5cbiAgICAgIHNpbGVuY2VUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlY29nbml0aW9uLnN0b3AoKTtcbiAgICAgIH0sIHRoaXMuVElNRU9VVF9OT19NRVNTQUdFKTtcbiAgICB9O1xuICAgIGxldCBmdWxsVHJhbnNjcmlwdCA9ICcnO1xuICAgIGxldCBpbnRlcmltVHJhbnNjcmlwdCA9ICcnO1xuXG4gICAgdGhpcy5yZWNvZ25pdGlvbi5vbnJlc3VsdCA9IChldmVudDogU3BlZWNoUmVjb2duaXRpb25FdmVudCkgPT4ge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgcmVzdGFydFNpbGVuY2VUaW1lcigpO1xuICAgICAgICBsZXQgaW50ZXJpbVRyYW5zY3JpcHQgPSAnJztcbiAgICAgICAgZm9yIChsZXQgaSA9IGV2ZW50LnJlc3VsdEluZGV4OyBpIDwgZXZlbnQucmVzdWx0cy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgIGNvbnN0IHRyYW5zY3JpcHQgPSBldmVudC5yZXN1bHRzW2ldWzBdLnRyYW5zY3JpcHQ7XG4gICAgICAgICAgaWYgKGV2ZW50LnJlc3VsdHNbaV0uaXNGaW5hbCkge1xuICAgICAgICAgICAgZnVsbFRyYW5zY3JpcHQgKz0gdHJhbnNjcmlwdCArICdcXG4nO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbnRlcmltVHJhbnNjcmlwdCArPSB0cmFuc2NyaXB0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpbnRlcmltVHJhbnNjcmlwdCA9IGludGVyaW1UcmFuc2NyaXB0O1xuICAgICAgICBzcGVlY2hTdWJqZWN0Lm5leHQoeyB0ZXh0OiBmdWxsVHJhbnNjcmlwdCArIGludGVyaW1UcmFuc2NyaXB0LCBpc0ZpbmFsOiBmYWxzZSB9KTtcbiAgICAgIH0pXG4gICAgfTtcblxuXG4gICAgdGhpcy5yZWNvZ25pdGlvbi5vbmVycm9yID0gKCkgPT4ge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgaWYgKHNpbGVuY2VUaW1lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHNpbGVuY2VUaW1lcik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0xpc3RlbmluZyA9IGZhbHNlO1xuICAgICAgICBzcGVlY2hTdWJqZWN0Lm5leHQoe1xuICAgICAgICAgIGlzRmluYWw6IHRydWUsXG4gICAgICAgICAgdGV4dDogJydcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfTtcblxuICAgIHRoaXMucmVjb2duaXRpb24ub25lbmQgPSAoKSA9PiB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICBpZiAoc2lsZW5jZVRpbWVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQoc2lsZW5jZVRpbWVyKTtcbiAgICAgICAgfVxuICAgICAgICBzcGVlY2hTdWJqZWN0Lm5leHQoeyB0ZXh0OiBmdWxsVHJhbnNjcmlwdCArIGludGVyaW1UcmFuc2NyaXB0LCBpc0ZpbmFsOiB0cnVlIH0pO1xuICAgICAgICB0aGlzLmlzTGlzdGVuaW5nID0gZmFsc2U7XG4gICAgICAgIHNwZWVjaFN1YmplY3QuY29tcGxldGUoKTtcbiAgICAgIH0pXG4gICAgfTtcbiAgICB0aGlzLnJlY29nbml0aW9uLnN0YXJ0KCk7XG4gICAgcmV0dXJuIHNwZWVjaFN1YmplY3Q7XG4gIH1cblxuICBzdG9wKCkge1xuICAgIHRoaXMucmVjb2duaXRpb24uc3RvcCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRSZWNvZ25pdGlvbigpIHtcbiAgICBjb25zdCBTcGVlY2hSZWNvZ25pdGlvbkNvbnN0cnVjdG9yID1cbiAgICAgICh3aW5kb3cgYXMgYW55KS5TcGVlY2hSZWNvZ25pdGlvbiB8fCAod2luZG93IGFzIGFueSkud2Via2l0U3BlZWNoUmVjb2duaXRpb247XG5cbiAgICBpZiAoIVNwZWVjaFJlY29nbml0aW9uQ29uc3RydWN0b3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU3BlZWNoIHJlY29nbml0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyLicpO1xuICAgIH1cblxuICAgIHRoaXMucmVjb2duaXRpb24gPSBuZXcgU3BlZWNoUmVjb2duaXRpb25Db25zdHJ1Y3RvcigpO1xuICAgIHRoaXMucmVjb2duaXRpb24ubGFuZyA9IHRoaXMubG9jYWxlU2VydmljZS5nZXRMb2NhbGVPcHRpb25zKCkubG9jYWxlIHx8ICdwdC1CUic7XG4gICAgdGhpcy5yZWNvZ25pdGlvbi5pbnRlcmltUmVzdWx0cyA9IGZhbHNlO1xuICAgIHRoaXMucmVjb2duaXRpb24ubWF4QWx0ZXJuYXRpdmVzID0gMTtcbiAgfVxufVxuIl19
@@ -0,0 +1,83 @@
1
+ import { __decorate } from "tslib";
2
+ import { Injectable, NgZone } from '@angular/core';
3
+ import { LocaleService } from '../locale/locale.service';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../locale/locale.service";
6
+ var TextToSpeechService = /** @class */ (function () {
7
+ function TextToSpeechService(locale, ngZone) {
8
+ this.locale = locale;
9
+ this.ngZone = ngZone;
10
+ this.utterance = new SpeechSynthesisUtterance();
11
+ this.voices = [];
12
+ this.setVoices();
13
+ }
14
+ TextToSpeechService.prototype.setVoices = function () {
15
+ var _this = this;
16
+ var _voices = speechSynthesis.getVoices();
17
+ if (!_voices.length) {
18
+ speechSynthesis.onvoiceschanged = function () {
19
+ _this.ngZone.run(function () {
20
+ _voices = speechSynthesis.getVoices();
21
+ var currentLang = _this.locale.getLocaleOptions().locale || 'pt-BR';
22
+ _this.voices = _voices.filter(function (voice) { return voice.lang === currentLang; });
23
+ _this.activeVoice = _this.voices[0];
24
+ });
25
+ };
26
+ }
27
+ };
28
+ /**
29
+ * Updates the active voice
30
+ * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SpeechSynthesisVoice/voiceURI)
31
+ * @param voiceUri
32
+ */
33
+ TextToSpeechService.prototype.updateVoice = function (voiceUri) {
34
+ this.activeVoice = this.voices.find(function (voice) { return voice.voiceURI === voiceUri; });
35
+ };
36
+ TextToSpeechService.prototype.speak = function (text, speed) {
37
+ var _this = this;
38
+ if (speed === void 0) { speed = 1; }
39
+ if (!this.activeVoice) {
40
+ return;
41
+ }
42
+ return new Promise(function (resolve) {
43
+ _this.utterance.text = text;
44
+ _this.utterance.voice = _this.activeVoice;
45
+ _this.utterance.rate = speed;
46
+ speechSynthesis.speak(_this.utterance);
47
+ _this.utterance.onend = function () {
48
+ _this.ngZone.run(function () {
49
+ resolve(true);
50
+ });
51
+ };
52
+ });
53
+ };
54
+ TextToSpeechService.prototype.pause = function () {
55
+ speechSynthesis.pause();
56
+ };
57
+ TextToSpeechService.prototype.resume = function () {
58
+ speechSynthesis.resume();
59
+ };
60
+ TextToSpeechService.prototype.cancel = function () {
61
+ speechSynthesis.cancel();
62
+ };
63
+ Object.defineProperty(TextToSpeechService.prototype, "hasVoice", {
64
+ get: function () {
65
+ return !!this.activeVoice;
66
+ },
67
+ enumerable: true,
68
+ configurable: true
69
+ });
70
+ TextToSpeechService.ctorParameters = function () { return [
71
+ { type: LocaleService },
72
+ { type: NgZone }
73
+ ]; };
74
+ TextToSpeechService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TextToSpeechService_Factory() { return new TextToSpeechService(i0.ɵɵinject(i1.LocaleService), i0.ɵɵinject(i0.NgZone)); }, token: TextToSpeechService, providedIn: "root" });
75
+ TextToSpeechService = __decorate([
76
+ Injectable({
77
+ providedIn: 'root'
78
+ })
79
+ ], TextToSpeechService);
80
+ return TextToSpeechService;
81
+ }());
82
+ export { TextToSpeechService };
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC10by1zcGVlY2guc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3NwZWVjaC1yZWNvZ25pdGlvbi90ZXh0LXRvLXNwZWVjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7OztBQUt6RDtJQUtFLDZCQUE2QixNQUFxQixFQUFtQixNQUFjO1FBQXRELFdBQU0sR0FBTixNQUFNLENBQWU7UUFBbUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUpsRSxjQUFTLEdBQUcsSUFBSSx3QkFBd0IsRUFBRSxDQUFDO1FBRTVELFdBQU0sR0FBMkIsRUFBRSxDQUFDO1FBR2xDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRU8sdUNBQVMsR0FBakI7UUFBQSxpQkFhQztRQVpDLElBQUksT0FBTyxHQUFHLGVBQWUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUUxQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNuQixlQUFlLENBQUMsZUFBZSxHQUFHO2dCQUNoQyxLQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztvQkFDZCxPQUFPLEdBQUcsZUFBZSxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUN0QyxJQUFNLFdBQVcsR0FBRyxLQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQztvQkFDckUsS0FBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQUMsS0FBSyxJQUFLLE9BQUEsS0FBSyxDQUFDLElBQUksS0FBSyxXQUFXLEVBQTFCLENBQTBCLENBQUMsQ0FBQztvQkFDcEUsS0FBSSxDQUFDLFdBQVcsR0FBRyxLQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwQyxDQUFDLENBQUMsQ0FBQTtZQUNKLENBQUMsQ0FBQTtTQUNGO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCx5Q0FBVyxHQUFYLFVBQVksUUFBZ0I7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFDLEtBQUssSUFBSyxPQUFBLEtBQUssQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUEzQixDQUEyQixDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUdELG1DQUFLLEdBQUwsVUFBTSxJQUFZLEVBQUUsS0FBaUI7UUFBckMsaUJBZUM7UUFmbUIsc0JBQUEsRUFBQSxTQUFpQjtRQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNyQixPQUFPO1NBQ1I7UUFDRCxPQUFPLElBQUksT0FBTyxDQUFDLFVBQUMsT0FBTztZQUN6QixLQUFJLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDM0IsS0FBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsS0FBSSxDQUFDLFdBQVcsQ0FBQztZQUN4QyxLQUFJLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7WUFDNUIsZUFBZSxDQUFDLEtBQUssQ0FBQyxLQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdEMsS0FBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUc7Z0JBQ3JCLEtBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO29CQUNkLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDaEIsQ0FBQyxDQUFDLENBQUE7WUFDSixDQUFDLENBQUE7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxtQ0FBSyxHQUFMO1FBQ0UsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxvQ0FBTSxHQUFOO1FBQ0UsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxvQ0FBTSxHQUFOO1FBQ0UsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxzQkFBSSx5Q0FBUTthQUFaO1lBQ0UsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUM1QixDQUFDOzs7T0FBQTs7Z0JBNURvQyxhQUFhO2dCQUEyQixNQUFNOzs7SUFMeEUsbUJBQW1CO1FBSC9CLFVBQVUsQ0FBQztZQUNWLFVBQVUsRUFBRSxNQUFNO1NBQ25CLENBQUM7T0FDVyxtQkFBbUIsQ0FrRS9COzhCQXhFRDtDQXdFQyxBQWxFRCxJQWtFQztTQWxFWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvY2FsZVNlcnZpY2UgfSBmcm9tICcuLi9sb2NhbGUvbG9jYWxlLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUZXh0VG9TcGVlY2hTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSB1dHRlcmFuY2UgPSBuZXcgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKCk7XG4gIHByaXZhdGUgYWN0aXZlVm9pY2U6IFNwZWVjaFN5bnRoZXNpc1ZvaWNlO1xuICB2b2ljZXM6IFNwZWVjaFN5bnRoZXNpc1ZvaWNlW10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGxvY2FsZTogTG9jYWxlU2VydmljZSwgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSkge1xuICAgIHRoaXMuc2V0Vm9pY2VzKCk7XG4gIH1cblxuICBwcml2YXRlIHNldFZvaWNlcygpIHtcbiAgICBsZXQgX3ZvaWNlcyA9IHNwZWVjaFN5bnRoZXNpcy5nZXRWb2ljZXMoKTtcblxuICAgIGlmICghX3ZvaWNlcy5sZW5ndGgpIHtcbiAgICAgIHNwZWVjaFN5bnRoZXNpcy5vbnZvaWNlc2NoYW5nZWQgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgX3ZvaWNlcyA9IHNwZWVjaFN5bnRoZXNpcy5nZXRWb2ljZXMoKTtcbiAgICAgICAgICBjb25zdCBjdXJyZW50TGFuZyA9IHRoaXMubG9jYWxlLmdldExvY2FsZU9wdGlvbnMoKS5sb2NhbGUgfHwgJ3B0LUJSJztcbiAgICAgICAgICB0aGlzLnZvaWNlcyA9IF92b2ljZXMuZmlsdGVyKCh2b2ljZSkgPT4gdm9pY2UubGFuZyA9PT0gY3VycmVudExhbmcpO1xuICAgICAgICAgIHRoaXMuYWN0aXZlVm9pY2UgPSB0aGlzLnZvaWNlc1swXTtcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgYWN0aXZlIHZvaWNlXG4gICAqIFtNRE4gUmVmZXJlbmNlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9BUEkvU3BlZWNoU3ludGhlc2lzVm9pY2Uvdm9pY2VVUkkpXG4gICAqIEBwYXJhbSB2b2ljZVVyaVxuICAgKi9cbiAgdXBkYXRlVm9pY2Uodm9pY2VVcmk6IHN0cmluZykge1xuICAgIHRoaXMuYWN0aXZlVm9pY2UgPSB0aGlzLnZvaWNlcy5maW5kKCh2b2ljZSkgPT4gdm9pY2Uudm9pY2VVUkkgPT09IHZvaWNlVXJpKTtcbiAgfVxuXG5cbiAgc3BlYWsodGV4dDogc3RyaW5nLCBzcGVlZDogbnVtYmVyID0gMSkge1xuICAgIGlmICghdGhpcy5hY3RpdmVWb2ljZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIHRoaXMudXR0ZXJhbmNlLnRleHQgPSB0ZXh0O1xuICAgICAgdGhpcy51dHRlcmFuY2Uudm9pY2UgPSB0aGlzLmFjdGl2ZVZvaWNlO1xuICAgICAgdGhpcy51dHRlcmFuY2UucmF0ZSA9IHNwZWVkO1xuICAgICAgc3BlZWNoU3ludGhlc2lzLnNwZWFrKHRoaXMudXR0ZXJhbmNlKTtcbiAgICAgIHRoaXMudXR0ZXJhbmNlLm9uZW5kID0gKCkgPT4ge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHBhdXNlKCkge1xuICAgIHNwZWVjaFN5bnRoZXNpcy5wYXVzZSgpO1xuICB9XG5cbiAgcmVzdW1lKCkge1xuICAgIHNwZWVjaFN5bnRoZXNpcy5yZXN1bWUoKTtcbiAgfVxuXG4gIGNhbmNlbCgpIHtcbiAgICBzcGVlY2hTeW50aGVzaXMuY2FuY2VsKCk7XG4gIH1cblxuICBnZXQgaGFzVm9pY2UoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5hY3RpdmVWb2ljZTtcbiAgfVxufVxuIl19
@@ -0,0 +1,3 @@
1
+ export { TextAreaComponent } from "./text-area/text-area.component";
2
+ export { TextAreaModule } from "./text-area.module";
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy90ZXh0LWFyZWEvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgVGV4dEFyZWFDb21wb25lbnQgfSBmcm9tIFwiLi90ZXh0LWFyZWEvdGV4dC1hcmVhLmNvbXBvbmVudFwiO1xuZXhwb3J0IHsgVGV4dEFyZWFNb2R1bGUgfSBmcm9tIFwiLi90ZXh0LWFyZWEubW9kdWxlXCI7XG4iXX0=
@@ -0,0 +1,94 @@
1
+ import { __decorate } from "tslib";
2
+ import { Component, ElementRef, forwardRef, Input, ViewChild } from '@angular/core';
3
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
+ var TextAreaComponent = /** @class */ (function () {
5
+ function TextAreaComponent() {
6
+ this.onChange = function () { };
7
+ this.onTouched = function () { };
8
+ this.disabled = false;
9
+ this.value = '';
10
+ this.inputId = "textarea-" + Math.random();
11
+ this.rows = 5;
12
+ this.speechRecognition = false;
13
+ this.readOnly = false;
14
+ this.renderTextArea = false;
15
+ }
16
+ TextAreaComponent_1 = TextAreaComponent;
17
+ Object.defineProperty(TextAreaComponent.prototype, "textAreaElement", {
18
+ get: function () {
19
+ return this._textAreaElement;
20
+ },
21
+ set: function (value) {
22
+ var _this = this;
23
+ this._textAreaElement = value;
24
+ setTimeout(function () {
25
+ _this.renderTextArea = true;
26
+ });
27
+ },
28
+ enumerable: true,
29
+ configurable: true
30
+ });
31
+ TextAreaComponent.prototype.writeValue = function (obj) {
32
+ this.value = obj;
33
+ };
34
+ TextAreaComponent.prototype.registerOnChange = function (fn) {
35
+ this.onChange = fn;
36
+ };
37
+ TextAreaComponent.prototype.registerOnTouched = function (fn) {
38
+ this.onTouched = fn;
39
+ };
40
+ TextAreaComponent.prototype.setDisabledState = function (isDisabled) {
41
+ this.disabled = isDisabled;
42
+ };
43
+ TextAreaComponent.prototype.setValue = function (value) {
44
+ if (this.disabled) {
45
+ return;
46
+ }
47
+ this.value = value;
48
+ this.writeValue(this.value);
49
+ this.onChange(this.value);
50
+ this.onTouched(this.value);
51
+ };
52
+ TextAreaComponent.prototype.handleRecognizedText = function (recognizedText) {
53
+ this.setValue(recognizedText);
54
+ };
55
+ var TextAreaComponent_1;
56
+ __decorate([
57
+ ViewChild('textArea', { read: ElementRef })
58
+ ], TextAreaComponent.prototype, "textAreaElement", null);
59
+ __decorate([
60
+ Input()
61
+ ], TextAreaComponent.prototype, "inputId", void 0);
62
+ __decorate([
63
+ Input()
64
+ ], TextAreaComponent.prototype, "rows", void 0);
65
+ __decorate([
66
+ Input()
67
+ ], TextAreaComponent.prototype, "speechRecognition", void 0);
68
+ __decorate([
69
+ Input()
70
+ ], TextAreaComponent.prototype, "keyFilter", void 0);
71
+ __decorate([
72
+ Input()
73
+ ], TextAreaComponent.prototype, "inputStyle", void 0);
74
+ __decorate([
75
+ Input()
76
+ ], TextAreaComponent.prototype, "readOnly", void 0);
77
+ TextAreaComponent = TextAreaComponent_1 = __decorate([
78
+ Component({
79
+ selector: 's-textarea',
80
+ template: "<textarea\n *ngIf=\"keyFilter\"\n #textArea\n class=\"textarea\"\n [pKeyFilter]=\"keyFilter\"\n [id]=\"inputId\"\n [rows]=\"rows\"\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [ngStyle]=\"inputStyle\"\n [readOnly]=\"readOnly\"\n (ngModelChange)=\"setValue($event)\">\n</textarea>\n\n<textarea\n *ngIf=\"!keyFilter\"\n #textArea\n class=\"textarea\"\n [id]=\"inputId\"\n [rows]=\"rows\"\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [ngStyle]=\"inputStyle\"\n [readOnly]=\"readOnly\"\n (ngModelChange)=\"setValue($event)\">\n</textarea>\n\n<s-speech-recognition\n *ngIf=\"speechRecognition && renderTextArea\"\n [textAreaElement]=\"textAreaElement.nativeElement\"\n (recognizedText)=\"handleRecognizedText($event)\">\n</s-speech-recognition>\n",
81
+ providers: [
82
+ {
83
+ provide: NG_VALUE_ACCESSOR,
84
+ useExisting: forwardRef(function () { return TextAreaComponent_1; }),
85
+ multi: true,
86
+ },
87
+ ],
88
+ styles: [".textarea{border-radius:3px;border:1px solid #c1c1cc;background:#fff;width:100%;max-width:100%;min-height:4em;min-width:10em;outline:0;padding:8px;display:block}.textarea:disabled{opacity:.5}"]
89
+ })
90
+ ], TextAreaComponent);
91
+ return TextAreaComponent;
92
+ }());
93
+ export { TextAreaComponent };
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1hcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3RleHQtYXJlYS90ZXh0LWFyZWEvdGV4dC1hcmVhLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBY3pFO0lBQUE7UUFDRSxhQUFRLEdBQTRCLGNBQVEsQ0FBQyxDQUFDO1FBQzlDLGNBQVMsR0FBNEIsY0FBUSxDQUFDLENBQUM7UUFDL0MsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBZUYsWUFBTyxHQUFHLGNBQVksSUFBSSxDQUFDLE1BQU0sRUFBSSxDQUFDO1FBQ3RDLFNBQUksR0FBRyxDQUFDLENBQUM7UUFDVCxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFHMUIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUUxQixtQkFBYyxHQUFHLEtBQUssQ0FBQztJQStCekIsQ0FBQzswQkF6RFksaUJBQWlCO0lBUTVCLHNCQUFXLDhDQUFlO2FBQTFCO1lBQ0UsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDL0IsQ0FBQzthQUVELFVBQTJCLEtBQXNDO1lBQWpFLGlCQUtDO1lBSkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztZQUM5QixVQUFVLENBQUM7Z0JBQ1QsS0FBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7WUFDN0IsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDOzs7T0FQQTtJQWtCRCxzQ0FBVSxHQUFWLFVBQVcsR0FBVztRQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztJQUNuQixDQUFDO0lBRUQsNENBQWdCLEdBQWhCLFVBQWlCLEVBQTJCO1FBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCw2Q0FBaUIsR0FBakIsVUFBa0IsRUFBYztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsNENBQWdCLEdBQWhCLFVBQWlCLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFFRCxvQ0FBUSxHQUFSLFVBQVMsS0FBYTtRQUNwQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELGdEQUFvQixHQUFwQixVQUFxQixjQUFzQjtRQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7O0lBaEREO1FBREMsU0FBUyxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQzs0REFHM0M7SUFTUTtRQUFSLEtBQUssRUFBRTtzREFBdUM7SUFDdEM7UUFBUixLQUFLLEVBQUU7bURBQVU7SUFDVDtRQUFSLEtBQUssRUFBRTtnRUFBMkI7SUFDMUI7UUFBUixLQUFLLEVBQUU7d0RBQTRCO0lBQzNCO1FBQVIsS0FBSyxFQUFFO3lEQUFpQztJQUNoQztRQUFSLEtBQUssRUFBRTt1REFBa0I7SUF4QmYsaUJBQWlCO1FBWjdCLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxZQUFZO1lBQ3RCLG0xQkFBeUM7WUFFekMsU0FBUyxFQUFFO2dCQUNUO29CQUNFLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsY0FBTSxPQUFBLG1CQUFpQixFQUFqQixDQUFpQixDQUFDO29CQUNoRCxLQUFLLEVBQUUsSUFBSTtpQkFDWjthQUNGOztTQUNGLENBQUM7T0FDVyxpQkFBaUIsQ0F5RDdCO0lBQUQsd0JBQUM7Q0FBQSxBQXpERCxJQXlEQztTQXpEWSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncy10ZXh0YXJlYScsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWFyZWEuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90ZXh0LWFyZWEuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUZXh0QXJlYUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUZXh0QXJlYUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgb25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkID0gKCkgPT4geyB9O1xuICBvblRvdWNoZWQ6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkID0gKCkgPT4geyB9O1xuICBkaXNhYmxlZCA9IGZhbHNlO1xuICB2YWx1ZSA9ICcnO1xuICBwcml2YXRlIF90ZXh0QXJlYUVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTFRleHRBcmVhRWxlbWVudD47XG5cbiAgQFZpZXdDaGlsZCgndGV4dEFyZWEnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHVibGljIGdldCB0ZXh0QXJlYUVsZW1lbnQoKTogRWxlbWVudFJlZjxIVE1MVGV4dEFyZWFFbGVtZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuX3RleHRBcmVhRWxlbWVudDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgdGV4dEFyZWFFbGVtZW50KHZhbHVlOiBFbGVtZW50UmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KSB7XG4gICAgdGhpcy5fdGV4dEFyZWFFbGVtZW50ID0gdmFsdWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnJlbmRlclRleHRBcmVhID0gdHJ1ZTtcbiAgICB9KVxuICB9XG5cbiAgQElucHV0KCkgaW5wdXRJZCA9IGB0ZXh0YXJlYS0ke01hdGgucmFuZG9tKCl9YDtcbiAgQElucHV0KCkgcm93cyA9IDU7XG4gIEBJbnB1dCgpIHNwZWVjaFJlY29nbml0aW9uID0gZmFsc2U7XG4gIEBJbnB1dCgpIGtleUZpbHRlcjogc3RyaW5nIHwgUmVnRXhwO1xuICBASW5wdXQoKSBpbnB1dFN0eWxlOiBDU1NTdHlsZURlY2xhcmF0aW9uO1xuICBASW5wdXQoKSByZWFkT25seSA9IGZhbHNlO1xuXG4gIHJlbmRlclRleHRBcmVhID0gZmFsc2U7XG5cbiAgd3JpdGVWYWx1ZShvYmo6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSBvYmo7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgc2V0VmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLndyaXRlVmFsdWUodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLm9uVG91Y2hlZCh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIGhhbmRsZVJlY29nbml6ZWRUZXh0KHJlY29nbml6ZWRUZXh0OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNldFZhbHVlKHJlY29nbml6ZWRUZXh0KTtcbiAgfVxufVxuIl19