@hivegpt/hiveai-angular 0.0.593 → 0.0.596

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 (97) hide show
  1. package/environments/environment.d.ts.map +1 -1
  2. package/esm2020/environments/environment.mjs +15 -0
  3. package/esm2020/hivegpt-hiveai-angular.mjs +5 -0
  4. package/esm2020/lib/components/NotificationSocket.mjs +45 -0
  5. package/esm2020/lib/components/bot-html-editor/bot-html-editor.component.mjs +113 -0
  6. package/esm2020/lib/components/bot.service.mjs +45 -0
  7. package/esm2020/lib/components/chat-drawer/chat-drawer.component.mjs +3904 -0
  8. package/esm2020/lib/components/chatbot/chatbot.component.mjs +95 -0
  9. package/esm2020/lib/components/conversation.service.mjs +58 -0
  10. package/esm2020/lib/components/socket-service.service.mjs +65 -0
  11. package/esm2020/lib/components/translations/translation.service.mjs +244 -0
  12. package/esm2020/lib/components/video-player/video-player.component.mjs +131 -0
  13. package/esm2020/lib/components/voice-agent/components/voice-agent-modal/voice-agent-modal.component.mjs +187 -0
  14. package/esm2020/lib/components/voice-agent/services/audio-analyzer.service.mjs +127 -0
  15. package/esm2020/lib/components/voice-agent/services/voice-agent.service.mjs +352 -0
  16. package/esm2020/lib/components/voice-agent/voice-agent.module.mjs +37 -0
  17. package/esm2020/lib/components/voice-agent/voice-modal-tokens.mjs +4 -0
  18. package/esm2020/lib/hivegpt.module.mjs +28 -0
  19. package/esm2020/lib/models/video.mjs +2 -0
  20. package/esm2020/lib/pipes/safe-html.pipe.mjs +20 -0
  21. package/esm2020/lib/services/platform-token-refresh.service.mjs +177 -0
  22. package/esm2020/lib/utils/utils.mjs +36 -0
  23. package/esm2020/public-api.mjs +15 -0
  24. package/fesm2015/hivegpt-hiveai-angular.mjs +5605 -0
  25. package/fesm2015/hivegpt-hiveai-angular.mjs.map +1 -0
  26. package/fesm2020/hivegpt-hiveai-angular.mjs +5606 -0
  27. package/fesm2020/hivegpt-hiveai-angular.mjs.map +1 -0
  28. package/hivegpt-hiveai-angular.d.ts.map +1 -1
  29. package/index.d.ts +6 -0
  30. package/lib/components/NotificationSocket.d.ts +6 -1
  31. package/lib/components/NotificationSocket.d.ts.map +1 -1
  32. package/lib/components/bot-html-editor/bot-html-editor.component.d.ts +3 -0
  33. package/lib/components/bot-html-editor/bot-html-editor.component.d.ts.map +1 -1
  34. package/lib/components/bot.service.d.ts +5 -1
  35. package/lib/components/bot.service.d.ts.map +1 -1
  36. package/lib/components/chat-drawer/chat-drawer.component.d.ts +7 -3
  37. package/lib/components/chat-drawer/chat-drawer.component.d.ts.map +1 -1
  38. package/lib/components/chatbot/chatbot.component.d.ts +3 -0
  39. package/lib/components/chatbot/chatbot.component.d.ts.map +1 -1
  40. package/lib/components/conversation.service.d.ts +3 -0
  41. package/lib/components/conversation.service.d.ts.map +1 -1
  42. package/lib/components/socket-service.service.d.ts +7 -3
  43. package/lib/components/socket-service.service.d.ts.map +1 -1
  44. package/lib/components/translations/translation.service.d.ts +3 -0
  45. package/lib/components/translations/translation.service.d.ts.map +1 -1
  46. package/lib/components/video-player/video-player.component.d.ts +3 -0
  47. package/lib/components/video-player/video-player.component.d.ts.map +1 -1
  48. package/lib/components/voice-agent/components/voice-agent-modal/voice-agent-modal.component.d.ts +3 -0
  49. package/lib/components/voice-agent/components/voice-agent-modal/voice-agent-modal.component.d.ts.map +1 -1
  50. package/lib/components/voice-agent/services/audio-analyzer.service.d.ts +3 -0
  51. package/lib/components/voice-agent/services/audio-analyzer.service.d.ts.map +1 -1
  52. package/lib/components/voice-agent/services/voice-agent.service.d.ts +4 -1
  53. package/lib/components/voice-agent/services/voice-agent.service.d.ts.map +1 -1
  54. package/lib/components/voice-agent/voice-agent.module.d.ts +6 -0
  55. package/lib/components/voice-agent/voice-agent.module.d.ts.map +1 -1
  56. package/lib/components/voice-agent/voice-modal-tokens.d.ts.map +1 -1
  57. package/lib/hivegpt.module.d.ts +16 -0
  58. package/lib/hivegpt.module.d.ts.map +1 -1
  59. package/lib/models/video.d.ts.map +1 -1
  60. package/lib/pipes/safe-html.pipe.d.ts +3 -0
  61. package/lib/pipes/safe-html.pipe.d.ts.map +1 -1
  62. package/lib/services/platform-token-refresh.service.d.ts +3 -0
  63. package/lib/services/platform-token-refresh.service.d.ts.map +1 -1
  64. package/lib/utils/utils.d.ts.map +1 -1
  65. package/package.json +24 -12
  66. package/public-api.d.ts +2 -0
  67. package/public-api.d.ts.map +1 -1
  68. package/bundles/hivegpt-hiveai-angular.umd.js +0 -6285
  69. package/bundles/hivegpt-hiveai-angular.umd.js.map +0 -1
  70. package/bundles/hivegpt-hiveai-angular.umd.min.js +0 -2
  71. package/bundles/hivegpt-hiveai-angular.umd.min.js.map +0 -1
  72. package/esm2015/environments/environment.js +0 -15
  73. package/esm2015/hivegpt-hiveai-angular.js +0 -13
  74. package/esm2015/lib/components/NotificationSocket.js +0 -39
  75. package/esm2015/lib/components/bot-html-editor/bot-html-editor.component.js +0 -112
  76. package/esm2015/lib/components/bot.service.js +0 -50
  77. package/esm2015/lib/components/chat-drawer/chat-drawer.component.js +0 -3809
  78. package/esm2015/lib/components/chatbot/chatbot.component.js +0 -57
  79. package/esm2015/lib/components/conversation.service.js +0 -57
  80. package/esm2015/lib/components/socket-service.service.js +0 -79
  81. package/esm2015/lib/components/translations/translation.service.js +0 -244
  82. package/esm2015/lib/components/video-player/video-player.component.js +0 -123
  83. package/esm2015/lib/components/voice-agent/components/voice-agent-modal/voice-agent-modal.component.js +0 -192
  84. package/esm2015/lib/components/voice-agent/services/audio-analyzer.service.js +0 -125
  85. package/esm2015/lib/components/voice-agent/services/voice-agent.service.js +0 -364
  86. package/esm2015/lib/components/voice-agent/voice-agent.module.js +0 -29
  87. package/esm2015/lib/components/voice-agent/voice-modal-tokens.js +0 -4
  88. package/esm2015/lib/hivegpt.module.js +0 -23
  89. package/esm2015/lib/models/video.js +0 -2
  90. package/esm2015/lib/pipes/safe-html.pipe.js +0 -19
  91. package/esm2015/lib/services/platform-token-refresh.service.js +0 -173
  92. package/esm2015/lib/utils/utils.js +0 -38
  93. package/esm2015/public-api.js +0 -13
  94. package/fesm2015/hivegpt-hiveai-angular.js +0 -5484
  95. package/fesm2015/hivegpt-hiveai-angular.js.map +0 -1
  96. package/hivegpt-hiveai-angular.d.ts +0 -13
  97. package/hivegpt-hiveai-angular.metadata.json +0 -1
@@ -1,173 +0,0 @@
1
- import { isPlatformBrowser } from '@angular/common';
2
- import { HttpClient } from '@angular/common/http';
3
- import { Inject, Injectable, InjectionToken, Optional, PLATFORM_ID, } from '@angular/core';
4
- import { BehaviorSubject, of, throwError } from 'rxjs';
5
- import { catchError, filter, switchMap, take } from 'rxjs/operators';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/common/http";
8
- /**
9
- * Default matches Pro-Events `AppConstants.authTokenKey` — same localStorage shape
10
- * `{ accessToken, refreshToken, ... }` as JSON.
11
- * Named factory (no arrow fn) so ngc metadata collection accepts it.
12
- */
13
- export function hiveGptAuthStorageKeyFactory() {
14
- return 'authcc-aae1';
15
- }
16
- export const HIVEGPT_AUTH_STORAGE_KEY = new InjectionToken('HIVEGPT_AUTH_STORAGE_KEY', {
17
- providedIn: 'root',
18
- factory: hiveGptAuthStorageKeyFactory,
19
- });
20
- /**
21
- * Proactive access-token refresh (JWT `exp`) + single-flight queue, aligned with
22
- * Pro-Events `EventInterceptor` + `AuthService.refreshToken`.
23
- */
24
- export class PlatformTokenRefreshService {
25
- constructor(http,
26
- /** Use `Object` (not `object`) so ngc metadata collection accepts the parameter type. */
27
- platformId,
28
- /**
29
- * Avoid `string | null` on the parameter — `|` is treated as unsupported expression in ngc metadata.
30
- */
31
- authStorageKey) {
32
- this.http = http;
33
- this.platformId = platformId;
34
- this.refreshTokenInProgress = false;
35
- this.refreshTokenSubject = new BehaviorSubject(null);
36
- this.storageKey =
37
- authStorageKey != null && authStorageKey !== ''
38
- ? authStorageKey
39
- : 'authcc-aae1';
40
- }
41
- /** Read parsed auth blob from localStorage (same as host app). */
42
- readStoredAuth() {
43
- if (!isPlatformBrowser(this.platformId)) {
44
- return null;
45
- }
46
- try {
47
- const raw = localStorage.getItem(this.storageKey);
48
- if (!raw) {
49
- return null;
50
- }
51
- return JSON.parse(raw);
52
- }
53
- catch (_a) {
54
- return null;
55
- }
56
- }
57
- persistAuth(res) {
58
- if (!isPlatformBrowser(this.platformId) || !res) {
59
- return;
60
- }
61
- try {
62
- localStorage.setItem(this.storageKey, JSON.stringify(res));
63
- }
64
- catch (e) {
65
- console.warn('[HiveGpt] Failed to persist auth tokens', e);
66
- }
67
- }
68
- /**
69
- * JWT `exp` check without @auth0/angular-jwt (keeps package lean).
70
- * @param skewSeconds refresh slightly before actual expiry (clock skew).
71
- */
72
- isAccessTokenExpired(token, skewSeconds = 60) {
73
- if (!token || typeof token !== 'string') {
74
- return true;
75
- }
76
- const expMs = this.getJwtExpirationMs(token);
77
- if (expMs == null) {
78
- return false;
79
- }
80
- return expMs - skewSeconds * 1000 < Date.now();
81
- }
82
- getJwtExpirationMs(token) {
83
- try {
84
- const parts = token.split('.');
85
- if (parts.length < 2) {
86
- return null;
87
- }
88
- const payload = parts[1]
89
- .replace(/-/g, '+')
90
- .replace(/_/g, '/');
91
- const padded = payload + '='.repeat((4 - (payload.length % 4)) % 4);
92
- if (typeof atob === 'undefined') {
93
- return null;
94
- }
95
- const json = JSON.parse(atob(padded));
96
- if ((json === null || json === void 0 ? void 0 : json.exp) == null || typeof json.exp !== 'number') {
97
- return null;
98
- }
99
- return json.exp * 1000;
100
- }
101
- catch (_a) {
102
- return null;
103
- }
104
- }
105
- /**
106
- * Returns a valid access token: refreshes via `POST {usersApiBaseUrl}/user/tokenRefresh`
107
- * when JWT is expired and a refresh token exists in storage.
108
- */
109
- ensureValidAccessToken(currentAccessToken, usersApiBaseUrl) {
110
- if (!isPlatformBrowser(this.platformId)) {
111
- return of({
112
- accessToken: currentAccessToken !== null && currentAccessToken !== void 0 ? currentAccessToken : '',
113
- refreshed: false,
114
- });
115
- }
116
- const stored = this.readStoredAuth();
117
- const access = (currentAccessToken && String(currentAccessToken).trim()) ||
118
- (stored === null || stored === void 0 ? void 0 : stored.accessToken) ||
119
- '';
120
- const refresh = stored === null || stored === void 0 ? void 0 : stored.refreshToken;
121
- if (access && !this.isAccessTokenExpired(access)) {
122
- return of({ accessToken: access, refreshed: false });
123
- }
124
- if (!refresh || typeof refresh !== 'string') {
125
- return of({ accessToken: access, refreshed: false });
126
- }
127
- const base = (usersApiBaseUrl || '').replace(/\/+$/, '');
128
- if (!base) {
129
- return of({ accessToken: access, refreshed: false });
130
- }
131
- const url = `${base}/user/tokenRefresh`;
132
- if (!this.refreshTokenInProgress) {
133
- this.refreshTokenInProgress = true;
134
- this.refreshTokenSubject.next(null);
135
- return this.http
136
- .post(url, { refreshToken: refresh })
137
- .pipe(switchMap((authResponse) => {
138
- this.refreshTokenInProgress = false;
139
- if (authResponse === null || authResponse === void 0 ? void 0 : authResponse.accessToken) {
140
- this.persistAuth(authResponse);
141
- this.refreshTokenSubject.next(authResponse.accessToken);
142
- return of({
143
- accessToken: authResponse.accessToken,
144
- refreshed: true,
145
- authResponse,
146
- });
147
- }
148
- this.refreshTokenSubject.next(null);
149
- return throwError(() => new Error('Token refresh returned no accessToken'));
150
- }), catchError((err) => {
151
- this.refreshTokenInProgress = false;
152
- this.refreshTokenSubject.next(null);
153
- return throwError(() => err);
154
- }));
155
- }
156
- return this.refreshTokenSubject.pipe(filter((t) => t != null && t !== ''), take(1), switchMap((token) => of({
157
- accessToken: token,
158
- refreshed: true,
159
- })));
160
- }
161
- }
162
- PlatformTokenRefreshService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PlatformTokenRefreshService_Factory() { return new PlatformTokenRefreshService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i0.PLATFORM_ID), i0.ɵɵinject(HIVEGPT_AUTH_STORAGE_KEY, 8)); }, token: PlatformTokenRefreshService, providedIn: "root" });
163
- PlatformTokenRefreshService.decorators = [
164
- { type: Injectable, args: [{
165
- providedIn: 'root',
166
- },] }
167
- ];
168
- PlatformTokenRefreshService.ctorParameters = () => [
169
- { type: HttpClient },
170
- { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },
171
- { type: String, decorators: [{ type: Optional }, { type: Inject, args: [HIVEGPT_AUTH_STORAGE_KEY,] }] }
172
- ];
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0tdG9rZW4tcmVmcmVzaC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9yb2hpdHRoYWt1ci9oaXZlLWdwdC9IaXZlQUktUGFja2FnZXMvQW5ndWxhci9wcm9qZWN0cy9oaXZlZ3B0L2V2ZW50c2dwdC1hbmd1bGFyL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9wbGF0Zm9ybS10b2tlbi1yZWZyZXNoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFDTCxNQUFNLEVBQ04sVUFBVSxFQUNWLGNBQWMsRUFDZCxRQUFRLEVBQ1IsV0FBVyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUVyRTs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLDRCQUE0QjtJQUMxQyxPQUFPLGFBQWEsQ0FBQztBQUN2QixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQ3hELDBCQUEwQixFQUMxQjtJQUNFLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSw0QkFBNEI7Q0FDdEMsQ0FDRixDQUFDO0FBbUJGOzs7R0FHRztBQUlILE1BQU0sT0FBTywyQkFBMkI7SUFNdEMsWUFDVSxJQUFnQjtJQUN4Qix5RkFBeUY7SUFDNUQsVUFBa0I7SUFDL0M7O09BRUc7SUFDMkMsY0FBc0I7UUFONUQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUVLLGVBQVUsR0FBVixVQUFVLENBQVE7UUFSekMsMkJB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LEdBQUcsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO2dCQUNwQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwQyxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvQixDQUFDLENBQUMsQ0FDSCxDQUFDO1NBQ0w7UUFFRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQ2xDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBZSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQ2pELElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNsQixFQUFFLENBQUM7WUFDRCxXQUFXLEVBQUUsS0FBSztZQUNsQixTQUFTLEVBQUUsSUFBSTtTQUNLLENBQUMsQ0FDeEIsQ0FDRixDQUFDO0lBQ0osQ0FBQzs7OztZQXhLRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQW5EUSxVQUFVO1lBNkQwQixNQUFNLHVCQUE5QyxNQUFNLFNBQUMsV0FBVzt5Q0FJbEIsUUFBUSxZQUFJLE1BQU0sU0FBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtcbiAgSW5qZWN0LFxuICBJbmplY3RhYmxlLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgT3B0aW9uYWwsXG4gIFBMQVRGT1JNX0lELFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIERlZmF1bHQgbWF0Y2hlcyBQcm8tRXZlbnRzIGBBcHBDb25zdGFudHMuYXV0aFRva2VuS2V5YCDigJQgc2FtZSBsb2NhbFN0b3JhZ2Ugc2hhcGVcbiAqIGB7IGFjY2Vzc1Rva2VuLCByZWZyZXNoVG9rZW4sIC4uLiB9YCBhcyBKU09OLlxuICogTmFtZWQgZmFjdG9yeSAobm8gYXJyb3cgZm4pIHNvIG5nYyBtZXRhZGF0YSBjb2xsZWN0aW9uIGFjY2VwdHMgaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoaXZlR3B0QXV0aFN0b3JhZ2VLZXlGYWN0b3J5KCk6IHN0cmluZyB7XG4gIHJldHVybiAnYXV0aGNjLWFhZTEnO1xufVxuXG5leHBvcnQgY29uc3QgSElWRUdQVF9BVVRIX1NUT1JBR0VfS0VZID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oXG4gICdISVZFR1BUX0FVVEhfU1RPUkFHRV9LRVknLFxuICB7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgIGZhY3Rvcnk6IGhpdmVHcHRBdXRoU3RvcmFnZUtleUZhY3RvcnksXG4gIH0sXG4pO1xuXG4vKiogU3Vic2V0IG9mIHBsYXRmb3JtIHRva2VuIHJlZnJlc2ggcmVzcG9uc2UgKHVzZXIvdG9rZW5SZWZyZXNoKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGl2ZUdwdFBsYXRmb3JtVG9rZW5SZXNwb25zZSB7XG4gIGFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuICByZWZyZXNoVG9rZW4/OiBzdHJpbmc7XG4gIGVtYWlsPzogc3RyaW5nO1xuICBleHBpcmVzSW4/OiBudW1iZXIgfCBzdHJpbmc7XG4gIFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW5zdXJlVG9rZW5SZXN1bHQge1xuICBhY2Nlc3NUb2tlbjogc3RyaW5nO1xuICAvKiogVHJ1ZSB3aGVuIGEgbmV0d29yayByZWZyZXNoIHdhcyBwZXJmb3JtZWQgc3VjY2Vzc2Z1bGx5LiAqL1xuICByZWZyZXNoZWQ6IGJvb2xlYW47XG4gIC8qKiBGdWxsIEFQSSBwYXlsb2FkIHdoZW4gcmVmcmVzaGVkIChmb3IgaG9zdCBgc2F2ZVRva2VuQW5kTG9naW5Vc2VyYCkuICovXG4gIGF1dGhSZXNwb25zZT86IEhpdmVHcHRQbGF0Zm9ybVRva2VuUmVzcG9uc2U7XG59XG5cbi8qKlxuICogUHJvYWN0aXZlIGFjY2Vzcy10b2tlbiByZWZyZXNoIChKV1QgYGV4cGApICsgc2luZ2xlLWZsaWdodCBxdWV1ZSwgYWxpZ25lZCB3aXRoXG4gKiBQcm8tRXZlbnRzIGBFdmVudEludGVyY2VwdG9yYCArIGBBdXRoU2VydmljZS5yZWZyZXNoVG9rZW5gLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUGxhdGZvcm1Ub2tlblJlZnJlc2hTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWZyZXNoVG9rZW5JblByb2dyZXNzID0gZmFsc2U7XG4gIHByaXZhdGUgcmVmcmVzaFRva2VuU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlS2V5OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIC8qKiBVc2UgYE9iamVjdGAgKG5vdCBgb2JqZWN0YCkgc28gbmdjIG1ldGFkYXRhIGNvbGxlY3Rpb24gYWNjZXB0cyB0aGUgcGFyYW1ldGVyIHR5cGUuICovXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBPYmplY3QsXG4gICAgLyoqXG4gICAgICogQXZvaWQgYHN0cmluZyB8IG51bGxgIG9uIHRoZSBwYXJhbWV0ZXIg4oCUIGB8YCBpcyB0cmVhdGVkIGFzIHVuc3VwcG9ydGVkIGV4cHJlc3Npb24gaW4gbmdjIG1ldGFkYXRhLlxuICAgICAqL1xuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoSElWRUdQVF9BVVRIX1NUT1JBR0VfS0VZKSBhdXRoU3RvcmFnZUtleTogc3RyaW5nLFxuICApIHtcbiAgICB0aGlzLnN0b3JhZ2VLZXkgPVxuICAgICAgYXV0aFN0b3JhZ2VLZXkgIT0gbnVsbCAmJiBhdXRoU3RvcmFnZUtleSAhPT0gJydcbiAgICAgICAgPyBhdXRoU3RvcmFnZUtleVxuICAgICAgICA6ICdhdXRoY2MtYWFlMSc7XG4gIH1cblxuICAvKiogUmVhZCBwYXJzZWQgYXV0aCBibG9iIGZyb20gbG9jYWxTdG9yYWdlIChzYW1lIGFzIGhvc3QgYXBwKS4gKi9cbiAgcmVhZFN0b3JlZEF1dGgoKTogSGl2ZUdwdFBsYXRmb3JtVG9rZW5SZXNwb25zZSB8IG51bGwge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCByYXcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXkpO1xuICAgICAgaWYgKCFyYXcpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShyYXcpIGFzIEhpdmVHcHRQbGF0Zm9ybVRva2VuUmVzcG9uc2U7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwZXJzaXN0QXV0aChyZXM6IEhpdmVHcHRQbGF0Zm9ybVRva2VuUmVzcG9uc2UpOiB2b2lkIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgfHwgIXJlcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdG9yYWdlS2V5LCBKU09OLnN0cmluZ2lmeShyZXMpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tIaXZlR3B0XSBGYWlsZWQgdG8gcGVyc2lzdCBhdXRoIHRva2VucycsIGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBKV1QgYGV4cGAgY2hlY2sgd2l0aG91dCBAYXV0aDAvYW5ndWxhci1qd3QgKGtlZXBzIHBhY2thZ2UgbGVhbikuXG4gICAqIEBwYXJhbSBza2V3U2Vjb25kcyByZWZyZXNoIHNsaWdodGx5IGJlZm9yZSBhY3R1YWwgZXhwaXJ5IChjbG9jayBza2V3KS5cbiAgICovXG4gIGlzQWNjZXNzVG9rZW5FeHBpcmVkKFxuICAgIHRva2VuOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgIHNrZXdTZWNvbmRzID0gNjAsXG4gICk6IGJvb2xlYW4ge1xuICAgIGlmICghdG9rZW4gfHwgdHlwZW9mIHRva2VuICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGV4cE1zID0gdGhpcy5nZXRKd3RFeHBpcmF0aW9uTXModG9rZW4pO1xuICAgIGlmIChleHBNcyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBleHBNcyAtIHNrZXdTZWNvbmRzICogMTAwMCA8IERhdGUubm93KCk7XG4gIH1cblxuICBwcml2YXRlIGdldEp3dEV4cGlyYXRpb25Ncyh0b2tlbjogc3RyaW5nKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcnRzID0gdG9rZW4uc3BsaXQoJy4nKTtcbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgY29uc3QgcGF5bG9hZCA9IHBhcnRzWzFdXG4gICAgICAgIC5yZXBsYWNlKC8tL2csICcrJylcbiAgICAgICAgLnJlcGxhY2UoL18vZywgJy8nKTtcbiAgICAgIGNvbnN0IHBhZGRlZCA9IHBheWxvYWQgKyAnPScucmVwZWF0KCg0IC0gKHBheWxvYWQubGVuZ3RoICUgNCkpICUgNCk7XG4gICAgICBpZiAodHlwZW9mIGF0b2IgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgY29uc3QganNvbiA9IEpTT04ucGFyc2UoYXRvYihwYWRkZWQpKSBhcyB7IGV4cD86IG51bWJlciB9O1xuICAgICAgaWYgKGpzb24/LmV4cCA9PSBudWxsIHx8IHR5cGVvZiBqc29uLmV4cCAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4ganNvbi5leHAgKiAxMDAwO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSB2YWxpZCBhY2Nlc3MgdG9rZW46IHJlZnJlc2hlcyB2aWEgYFBPU1Qge3VzZXJzQXBpQmFzZVVybH0vdXNlci90b2tlblJlZnJlc2hgXG4gICAqIHdoZW4gSldUIGlzIGV4cGlyZWQgYW5kIGEgcmVmcmVzaCB0b2tlbiBleGlzdHMgaW4gc3RvcmFnZS5cbiAgICovXG4gIGVuc3VyZVZhbGlkQWNjZXNzVG9rZW4oXG4gICAgY3VycmVudEFjY2Vzc1Rva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsLFxuICAgIHVzZXJzQXBpQmFzZVVybDogc3RyaW5nLFxuICApOiBPYnNlcnZhYmxlPEVuc3VyZVRva2VuUmVzdWx0PiB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm4gb2Yoe1xuICAgICAgICBhY2Nlc3NUb2tlbjogY3VycmVudEFjY2Vzc1Rva2VuID8/ICcnLFxuICAgICAgICByZWZyZXNoZWQ6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RvcmVkID0gdGhpcy5yZWFkU3RvcmVkQXV0aCgpO1xuICAgIGNvbnN0IGFjY2VzcyA9XG4gICAgICAoY3VycmVudEFjY2Vzc1Rva2VuICYmIFN0cmluZyhjdXJyZW50QWNjZXNzVG9rZW4pLnRyaW0oKSkgfHxcbiAgICAgIHN0b3JlZD8uYWNjZXNzVG9rZW4gfHxcbiAgICAgICcnO1xuICAgIGNvbnN0IHJlZnJlc2ggPSBzdG9yZWQ/LnJlZnJlc2hUb2tlbjtcblxuICAgIGlmIChhY2Nlc3MgJiYgIXRoaXMuaXNBY2Nlc3NUb2tlbkV4cGlyZWQoYWNjZXNzKSkge1xuICAgICAgcmV0dXJuIG9mKHsgYWNjZXNzVG9rZW46IGFjY2VzcywgcmVmcmVzaGVkOiBmYWxzZSB9KTtcbiAgICB9XG5cbiAgICBpZiAoIXJlZnJlc2ggfHwgdHlwZW9mIHJlZnJlc2ggIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gb2YoeyBhY2Nlc3NUb2tlbjogYWNjZXNzLCByZWZyZXNoZWQ6IGZhbHNlIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGJhc2UgPSAodXNlcnNBcGlCYXNlVXJsIHx8ICcnKS5yZXBsYWNlKC9cXC8rJC8sICcnKTtcbiAgICBpZiAoIWJhc2UpIHtcbiAgICAgIHJldHVybiBvZih7IGFjY2Vzc1Rva2VuOiBhY2Nlc3MsIHJlZnJlc2hlZDogZmFsc2UgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gYCR7YmFzZX0vdXNlci90b2tlblJlZnJlc2hgO1xuXG4gICAgaWYgKCF0aGlzLnJlZnJlc2hUb2tlbkluUHJvZ3Jlc3MpIHtcbiAgICAgIHRoaXMucmVmcmVzaFRva2VuSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICB0aGlzLnJlZnJlc2hUb2tlblN1YmplY3QubmV4dChudWxsKTtcblxuICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAucG9zdDxIaXZlR3B0UGxhdGZvcm1Ub2tlblJlc3BvbnNlPih1cmwsIHsgcmVmcmVzaFRva2VuOiByZWZyZXNoIH0pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcCgoYXV0aFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlbkluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChhdXRoUmVzcG9uc2U/LmFjY2Vzc1Rva2VuKSB7XG4gICAgICAgICAgICAgIHRoaXMucGVyc2lzdEF1dGgoYXV0aFJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW5TdWJqZWN0Lm5leHQoYXV0aFJlc3BvbnNlLmFjY2Vzc1Rva2VuKTtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKHtcbiAgICAgICAgICAgICAgICBhY2Nlc3NUb2tlbjogYXV0aFJlc3BvbnNlLmFjY2Vzc1Rva2VuLFxuICAgICAgICAgICAgICAgIHJlZnJlc2hlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBhdXRoUmVzcG9uc2UsXG4gICAgICAgICAgICAgIH0gYXMgRW5zdXJlVG9rZW5SZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW5TdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ1Rva2VuIHJlZnJlc2ggcmV0dXJuZWQgbm8gYWNjZXNzVG9rZW4nKSk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlbkluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFRva2VuU3ViamVjdC5uZXh0KG51bGwpO1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yZWZyZXNoVG9rZW5TdWJqZWN0LnBpcGUoXG4gICAgICBmaWx0ZXIoKHQpOiB0IGlzIHN0cmluZyA9PiB0ICE9IG51bGwgJiYgdCAhPT0gJycpLFxuICAgICAgdGFrZSgxKSxcbiAgICAgIHN3aXRjaE1hcCgodG9rZW4pID0+XG4gICAgICAgIG9mKHtcbiAgICAgICAgICBhY2Nlc3NUb2tlbjogdG9rZW4sXG4gICAgICAgICAgcmVmcmVzaGVkOiB0cnVlLFxuICAgICAgICB9IGFzIEVuc3VyZVRva2VuUmVzdWx0KSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -1,38 +0,0 @@
1
- const formatHoursAndMinutes = (date) => {
2
- let hours = date.getHours() % 12;
3
- const minutes = date.getMinutes();
4
- const amPm = date.getHours() < 12 ? 'AM' : 'PM';
5
- if (hours === 0)
6
- hours = 12;
7
- const formattedHours = hours < 10 ? `0${hours}` : hours;
8
- const formattedMinutes = minutes < 10 ? `0${minutes}` : minutes;
9
- return `${formattedHours}:${formattedMinutes} ${amPm}`;
10
- };
11
- const ɵ0 = formatHoursAndMinutes;
12
- export const formatNow = (timezone) => {
13
- const now = new Date();
14
- if (timezone) {
15
- const options = {
16
- hour12: true,
17
- hour: 'numeric',
18
- minute: 'numeric',
19
- timeZone: timezone,
20
- };
21
- return now.toLocaleString('en-US', options);
22
- }
23
- return formatHoursAndMinutes(now);
24
- };
25
- export const formatTimeStamps = (timezone, timestamps) => {
26
- const date = new Date(timestamps + 'Z');
27
- const options = {
28
- hour12: true,
29
- hour: 'numeric',
30
- minute: 'numeric',
31
- };
32
- if (timezone && timezone.trim()) {
33
- options.timeZone = timezone.trim();
34
- }
35
- return date.toLocaleString('en-US', options);
36
- };
37
- export { ɵ0 };
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL3JvaGl0dGhha3VyL2hpdmUtZ3B0L0hpdmVBSS1QYWNrYWdlcy9Bbmd1bGFyL3Byb2plY3RzL2hpdmVncHQvZXZlbnRzZ3B0LWFuZ3VsYXIvc3JjLyIsInNvdXJjZXMiOlsibGliL3V0aWxzL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxJQUFVLEVBQUUsRUFBRTtJQUMzQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ2pDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNsQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNoRCxJQUFHLEtBQUssS0FBSyxDQUFDO1FBQUUsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUUzQixNQUFNLGNBQWMsR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDeEQsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFFaEUsT0FBTyxHQUFHLGNBQWMsSUFBSSxnQkFBZ0IsSUFBSSxJQUFJLEVBQUUsQ0FBQztBQUN6RCxDQUFDLENBQUM7O0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsUUFBaUIsRUFBRSxFQUFFO0lBQzdDLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFDdkIsSUFBSSxRQUFRLEVBQUU7UUFDWixNQUFNLE9BQU8sR0FBUTtZQUNuQixNQUFNLEVBQUUsSUFBSTtZQUNaLElBQUksRUFBRSxTQUFTO1lBQ2YsTUFBTSxFQUFFLFNBQVM7WUFDakIsUUFBUSxFQUFFLFFBQVE7U0FDbkIsQ0FBQztRQUNGLE9BQU8sR0FBRyxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDN0M7SUFDRCxPQUFPLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsUUFBNEIsRUFBRSxVQUFlLEVBQUUsRUFBRTtJQUNoRixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDeEMsTUFBTSxPQUFPLEdBQVE7UUFDbkIsTUFBTSxFQUFFLElBQUk7UUFDWixJQUFJLEVBQUUsU0FBUztRQUNmLE1BQU0sRUFBRSxTQUFTO0tBQ2xCLENBQUM7SUFDRixJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDL0IsT0FBTyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7S0FDcEM7SUFDRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9DLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGZvcm1hdEhvdXJzQW5kTWludXRlcyA9IChkYXRlOiBEYXRlKSA9PiB7XG4gIGxldCBob3VycyA9IGRhdGUuZ2V0SG91cnMoKSAlIDEyO1xuICBjb25zdCBtaW51dGVzID0gZGF0ZS5nZXRNaW51dGVzKCk7XG4gIGNvbnN0IGFtUG0gPSBkYXRlLmdldEhvdXJzKCkgPCAxMiA/ICdBTScgOiAnUE0nO1xuICBpZihob3VycyA9PT0gMCkgaG91cnMgPSAxMjtcblxuICBjb25zdCBmb3JtYXR0ZWRIb3VycyA9IGhvdXJzIDwgMTAgPyBgMCR7aG91cnN9YCA6IGhvdXJzO1xuICBjb25zdCBmb3JtYXR0ZWRNaW51dGVzID0gbWludXRlcyA8IDEwID8gYDAke21pbnV0ZXN9YCA6IG1pbnV0ZXM7XG5cbiAgcmV0dXJuIGAke2Zvcm1hdHRlZEhvdXJzfToke2Zvcm1hdHRlZE1pbnV0ZXN9ICR7YW1QbX1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdE5vdyA9ICh0aW1lem9uZT86IHN0cmluZykgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBpZiAodGltZXpvbmUpIHtcbiAgICBjb25zdCBvcHRpb25zOiBhbnkgPSB7XG4gICAgICBob3VyMTI6IHRydWUsXG4gICAgICBob3VyOiAnbnVtZXJpYycsXG4gICAgICBtaW51dGU6ICdudW1lcmljJyxcbiAgICAgIHRpbWVab25lOiB0aW1lem9uZSxcbiAgICB9O1xuICAgIHJldHVybiBub3cudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJywgb3B0aW9ucyk7XG4gIH1cbiAgcmV0dXJuIGZvcm1hdEhvdXJzQW5kTWludXRlcyhub3cpO1xufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdFRpbWVTdGFtcHMgPSAodGltZXpvbmU6IHN0cmluZyB8IHVuZGVmaW5lZCwgdGltZXN0YW1wczogYW55KSA9PiB7XG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXBzICsgJ1onKTtcbiAgY29uc3Qgb3B0aW9uczogYW55ID0ge1xuICAgIGhvdXIxMjogdHJ1ZSxcbiAgICBob3VyOiAnbnVtZXJpYycsXG4gICAgbWludXRlOiAnbnVtZXJpYycsXG4gIH07XG4gIGlmICh0aW1lem9uZSAmJiB0aW1lem9uZS50cmltKCkpIHtcbiAgICBvcHRpb25zLnRpbWVab25lID0gdGltZXpvbmUudHJpbSgpO1xuICB9XG4gIHJldHVybiBkYXRlLnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIG9wdGlvbnMpO1xufTtcbiJdfQ==
@@ -1,13 +0,0 @@
1
- /*
2
- * Public API Surface of hive-gpt
3
- */
4
- export * from './lib/components/chat-drawer/chat-drawer.component';
5
- export * from './lib/components/chatbot/chatbot.component';
6
- export * from './lib/components/voice-agent/components/voice-agent-modal/voice-agent-modal.component';
7
- export * from './lib/components/voice-agent/services/voice-agent.service';
8
- export * from './lib/components/voice-agent/services/audio-analyzer.service';
9
- export * from './lib/components/voice-agent/voice-agent.module';
10
- export * from './lib/components/voice-agent/voice-modal-tokens';
11
- export * from './lib/hivegpt.module';
12
- export * from './lib/services/platform-token-refresh.service';
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvcm9oaXR0aGFrdXIvaGl2ZS1ncHQvSGl2ZUFJLVBhY2thZ2VzL0FuZ3VsYXIvcHJvamVjdHMvaGl2ZWdwdC9ldmVudHNncHQtYW5ndWxhci9zcmMvIiwic291cmNlcyI6WyJwdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsdUZBQXVGLENBQUM7QUFDdEcsY0FBYywyREFBMkQsQ0FBQztBQUMxRSxjQUFjLDhEQUE4RCxDQUFDO0FBQzdFLGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsK0NBQStDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGhpdmUtZ3B0XG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jaGF0LWRyYXdlci9jaGF0LWRyYXdlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jaGF0Ym90L2NoYXRib3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdm9pY2UtYWdlbnQvY29tcG9uZW50cy92b2ljZS1hZ2VudC1tb2RhbC92b2ljZS1hZ2VudC1tb2RhbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy92b2ljZS1hZ2VudC9zZXJ2aWNlcy92b2ljZS1hZ2VudC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdm9pY2UtYWdlbnQvc2VydmljZXMvYXVkaW8tYW5hbHl6ZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3ZvaWNlLWFnZW50L3ZvaWNlLWFnZW50Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3ZvaWNlLWFnZW50L3ZvaWNlLW1vZGFsLXRva2Vucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9oaXZlZ3B0Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9wbGF0Zm9ybS10b2tlbi1yZWZyZXNoLnNlcnZpY2UnO1xuIl19