@sinequa/assistant 3.8.0 → 3.9.0

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 (151) hide show
  1. package/chat/charts/chart/chart.component.d.ts +13 -13
  2. package/chat/chat-message/chat-message.component.d.ts +85 -81
  3. package/chat/chat-message/i18n/en.json +11 -0
  4. package/chat/chat-message/i18n/fr.json +11 -0
  5. package/chat/chat-reference/chat-reference.component.d.ts +14 -14
  6. package/chat/chat-reference/i18n/en.json +4 -0
  7. package/chat/chat-reference/i18n/fr.json +4 -0
  8. package/chat/chat-settings-v3/chat-settings-v3.component.d.ts +48 -50
  9. package/chat/chat-settings-v3/i18n/en.json +14 -0
  10. package/chat/chat-settings-v3/i18n/fr.json +14 -0
  11. package/chat/chat.component.d.ts +388 -1405
  12. package/chat/chat.service.d.ts +247 -228
  13. package/chat/debug-message/debug-message.component.d.ts +17 -17
  14. package/chat/debug-message/i18n/en.json +3 -0
  15. package/chat/debug-message/i18n/fr.json +3 -0
  16. package/chat/dialogs/delete-saved-chat.component.d.ts +22 -0
  17. package/chat/dialogs/i18n/en.json +19 -0
  18. package/chat/dialogs/i18n/fr.json +19 -0
  19. package/chat/dialogs/rename-saved-chat.component.d.ts +21 -0
  20. package/chat/dialogs/updates.component.d.ts +15 -0
  21. package/chat/documents-upload/document-list/document-list.component.d.ts +68 -77
  22. package/chat/documents-upload/document-overview/document-overview.component.d.ts +31 -41
  23. package/chat/documents-upload/document-upload/document-upload.component.d.ts +96 -98
  24. package/chat/documents-upload/documents-upload.model.d.ts +66 -66
  25. package/chat/documents-upload/documents-upload.service.d.ts +170 -174
  26. package/chat/documents-upload/i18n/en.json +24 -0
  27. package/chat/documents-upload/i18n/fr.json +24 -0
  28. package/chat/format-icon/format-icon.component.d.ts +10 -10
  29. package/chat/format-icon/icons.d.ts +5 -5
  30. package/chat/i18n/en.json +42 -0
  31. package/chat/i18n/fr.json +42 -0
  32. package/chat/index.d.ts +5 -5
  33. package/chat/initials-avatar/initials-avatar.component.d.ts +35 -35
  34. package/chat/instance-manager.service.d.ts +28 -28
  35. package/chat/pipes/message-content.pipe.d.ts +16 -0
  36. package/chat/prompt.component.d.ts +25 -21
  37. package/chat/public-api.d.ts +17 -17
  38. package/chat/references/i18n/en.json +6 -0
  39. package/chat/references/i18n/fr.json +6 -0
  40. package/chat/references/inline-image-reference.d.ts +21 -0
  41. package/chat/references/inline-page-reference.d.ts +21 -0
  42. package/chat/rest-chat.service.d.ts +31 -33
  43. package/chat/saved-chats/i18n/en.json +4 -0
  44. package/chat/saved-chats/i18n/fr.json +4 -0
  45. package/chat/saved-chats/saved-chats.component.d.ts +30 -36
  46. package/chat/services/app.service.d.ts +8 -0
  47. package/chat/services/dialog.service.d.ts +12 -0
  48. package/chat/services/notification.service.d.ts +10 -0
  49. package/chat/services/principal.service.d.ts +7 -0
  50. package/chat/services/search.service.d.ts +7 -0
  51. package/chat/services/signalR.web.service.d.ts +45 -0
  52. package/chat/services/ui.service.d.ts +13 -0
  53. package/chat/services/user-settings.service.d.ts +7 -0
  54. package/chat/token-progress-bar/i18n/en.json +4 -0
  55. package/chat/token-progress-bar/i18n/fr.json +4 -0
  56. package/chat/token-progress-bar/token-progress-bar.component.d.ts +24 -27
  57. package/chat/tooltip/tooltip.component.d.ts +12 -0
  58. package/chat/tooltip/tooltip.directive.d.ts +81 -0
  59. package/chat/types/message-content.types.d.ts +54 -0
  60. package/chat/types/message-reference.types.d.ts +11 -0
  61. package/chat/types.d.ts +913 -873
  62. package/chat/unified-plugins/embedded-image-reference.plugin.d.ts +3 -0
  63. package/chat/unified-plugins/embedded-page-reference.plugin.d.ts +3 -0
  64. package/chat/utils/assistant-json.d.ts +2 -0
  65. package/chat/websocket-chat.service.d.ts +102 -103
  66. package/esm2022/chat/charts/chart/chart.component.mjs +40 -0
  67. package/esm2022/chat/chat-message/chat-message.component.mjs +351 -0
  68. package/esm2022/chat/chat-reference/chat-reference.component.mjs +40 -0
  69. package/esm2022/chat/chat-settings-v3/chat-settings-v3.component.mjs +118 -0
  70. package/esm2022/chat/chat.component.mjs +1090 -0
  71. package/esm2022/chat/chat.service.mjs +417 -0
  72. package/esm2022/chat/debug-message/debug-message.component.mjs +43 -0
  73. package/esm2022/chat/dialogs/delete-saved-chat.component.mjs +81 -0
  74. package/esm2022/chat/dialogs/rename-saved-chat.component.mjs +84 -0
  75. package/esm2022/chat/dialogs/updates.component.mjs +61 -0
  76. package/esm2022/chat/documents-upload/document-list/document-list.component.mjs +140 -0
  77. package/esm2022/chat/documents-upload/document-overview/document-overview.component.mjs +65 -0
  78. package/esm2022/chat/documents-upload/document-upload/document-upload.component.mjs +256 -0
  79. package/{esm2020 → esm2022}/chat/documents-upload/documents-upload.model.mjs +1 -1
  80. package/esm2022/chat/documents-upload/documents-upload.service.mjs +291 -0
  81. package/{esm2020 → esm2022}/chat/format-icon/format-icon.component.mjs +23 -23
  82. package/{esm2020 → esm2022}/chat/format-icon/icons.mjs +137 -137
  83. package/{esm2020 → esm2022}/chat/initials-avatar/initials-avatar.component.mjs +60 -60
  84. package/esm2022/chat/instance-manager.service.mjs +46 -0
  85. package/esm2022/chat/pipes/message-content.pipe.mjs +34 -0
  86. package/esm2022/chat/prompt.component.mjs +88 -0
  87. package/{esm2020 → esm2022}/chat/public-api.mjs +18 -18
  88. package/esm2022/chat/references/inline-image-reference.mjs +110 -0
  89. package/esm2022/chat/references/inline-page-reference.mjs +110 -0
  90. package/esm2022/chat/rest-chat.service.mjs +296 -0
  91. package/esm2022/chat/saved-chats/saved-chats.component.mjs +82 -0
  92. package/esm2022/chat/services/app.service.mjs +19 -0
  93. package/esm2022/chat/services/dialog.service.mjs +40 -0
  94. package/esm2022/chat/services/notification.service.mjs +25 -0
  95. package/esm2022/chat/services/principal.service.mjs +16 -0
  96. package/esm2022/chat/services/search.service.mjs +13 -0
  97. package/esm2022/chat/services/signalR.web.service.mjs +79 -0
  98. package/esm2022/chat/services/ui.service.mjs +61 -0
  99. package/esm2022/chat/services/user-settings.service.mjs +22 -0
  100. package/{esm2020 → esm2022}/chat/sinequa-assistant-chat.mjs +4 -4
  101. package/esm2022/chat/token-progress-bar/token-progress-bar.component.mjs +52 -0
  102. package/esm2022/chat/tooltip/tooltip.component.mjs +44 -0
  103. package/esm2022/chat/tooltip/tooltip.directive.mjs +203 -0
  104. package/esm2022/chat/types/message-content.types.mjs +2 -0
  105. package/esm2022/chat/types/message-reference.types.mjs +2 -0
  106. package/esm2022/chat/types.mjs +130 -0
  107. package/esm2022/chat/unified-plugins/embedded-image-reference.plugin.mjs +57 -0
  108. package/esm2022/chat/unified-plugins/embedded-page-reference.plugin.mjs +57 -0
  109. package/esm2022/chat/utils/assistant-json.mjs +12 -0
  110. package/esm2022/chat/websocket-chat.service.mjs +654 -0
  111. package/{esm2020 → esm2022}/public-api.mjs +2 -2
  112. package/{esm2020 → esm2022}/sinequa-assistant.mjs +4 -4
  113. package/fesm2022/sinequa-assistant-chat.mjs +5340 -0
  114. package/fesm2022/sinequa-assistant-chat.mjs.map +1 -0
  115. package/{fesm2015 → fesm2022}/sinequa-assistant.mjs +3 -3
  116. package/index.d.ts +5 -5
  117. package/package.json +52 -25
  118. package/public-api.d.ts +1 -1
  119. package/chat/messages/de.d.ts +0 -4
  120. package/chat/messages/en.d.ts +0 -4
  121. package/chat/messages/fr.d.ts +0 -4
  122. package/chat/messages/index.d.ts +0 -4
  123. package/esm2020/chat/charts/chart/chart.component.mjs +0 -40
  124. package/esm2020/chat/chat-message/chat-message.component.mjs +0 -263
  125. package/esm2020/chat/chat-reference/chat-reference.component.mjs +0 -40
  126. package/esm2020/chat/chat-settings-v3/chat-settings-v3.component.mjs +0 -117
  127. package/esm2020/chat/chat.component.mjs +0 -1069
  128. package/esm2020/chat/chat.service.mjs +0 -333
  129. package/esm2020/chat/debug-message/debug-message.component.mjs +0 -43
  130. package/esm2020/chat/documents-upload/document-list/document-list.component.mjs +0 -191
  131. package/esm2020/chat/documents-upload/document-overview/document-overview.component.mjs +0 -80
  132. package/esm2020/chat/documents-upload/document-upload/document-upload.component.mjs +0 -258
  133. package/esm2020/chat/documents-upload/documents-upload.service.mjs +0 -289
  134. package/esm2020/chat/instance-manager.service.mjs +0 -46
  135. package/esm2020/chat/messages/de.mjs +0 -4
  136. package/esm2020/chat/messages/en.mjs +0 -4
  137. package/esm2020/chat/messages/fr.mjs +0 -4
  138. package/esm2020/chat/messages/index.mjs +0 -9
  139. package/esm2020/chat/prompt.component.mjs +0 -88
  140. package/esm2020/chat/rest-chat.service.mjs +0 -241
  141. package/esm2020/chat/saved-chats/saved-chats.component.mjs +0 -175
  142. package/esm2020/chat/token-progress-bar/token-progress-bar.component.mjs +0 -54
  143. package/esm2020/chat/types.mjs +0 -112
  144. package/esm2020/chat/websocket-chat.service.mjs +0 -641
  145. package/fesm2015/sinequa-assistant-chat.mjs +0 -4200
  146. package/fesm2015/sinequa-assistant-chat.mjs.map +0 -1
  147. package/fesm2020/sinequa-assistant-chat.mjs +0 -4171
  148. package/fesm2020/sinequa-assistant-chat.mjs.map +0 -1
  149. package/fesm2020/sinequa-assistant.mjs +0 -9
  150. package/fesm2020/sinequa-assistant.mjs.map +0 -1
  151. /package/{fesm2015 → fesm2022}/sinequa-assistant.mjs.map +0 -0
@@ -0,0 +1,13 @@
1
+ import { Injectable } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export class SearchService {
4
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchService, providedIn: 'root' }); }
6
+ }
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchService, decorators: [{
8
+ type: Injectable,
9
+ args: [{
10
+ providedIn: 'root'
11
+ }]
12
+ }] });
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC9zZXJ2aWNlcy9zZWFyY2guc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU0zQyxNQUFNLE9BQU8sYUFBYTsrR0FBYixhQUFhO21IQUFiLGFBQWEsY0FGWixNQUFNOzs0RkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBRdWVyeSB9IGZyb20gXCJAc2luZXF1YS9hdG9taWNcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNlYXJjaFNlcnZpY2Uge1xyXG4gIHF1ZXJ5OiBRdWVyeVxyXG59Il19
@@ -0,0 +1,79 @@
1
+ import { Injectable, InjectionToken } from "@angular/core";
2
+ import { HubConnectionBuilder, LogLevel } from '@microsoft/signalr';
3
+ import { globalConfig } from "@sinequa/atomic";
4
+ import * as i0 from "@angular/core";
5
+ /** A token that is used to inject the transports allowed to use by hub connection.
6
+ *
7
+ * Expects a {@link HttpTransportType} value.
8
+ */
9
+ export const SIGNAL_R_TRANSPORTS = new InjectionToken('SIGNAL_R_TRANSPORTS');
10
+ /** A token that is used to inject the log level for the hub connection.
11
+ *
12
+ * Expects a {@link LogLevel} value.
13
+ */
14
+ export const SIGNAL_R_LOG_LEVEL = new InjectionToken('SIGNAL_R_LOG_LEVEL');
15
+ /**
16
+ * A service to connect the Sinequa server to the client via SignalR
17
+ */
18
+ export class SignalRWebService {
19
+ /**
20
+ * Builds a SignalR connection to the given endpoint
21
+ * @param endpointName Name of the endpoint to connect to
22
+ * @param options Options for the connection. It must overrides the default options
23
+ * @param logLevel The log level for the connection
24
+ * @param automaticReconnect Whether the connection should automatically attempt to reconnect
25
+ * @returns A SignalR connection
26
+ */
27
+ buildConnection(endpointName, options, logLevel = LogLevel.Information, automaticReconnect = false) {
28
+ const { backendUrl } = globalConfig;
29
+ const url = `${backendUrl}/endpoints/v1/${endpointName}`;
30
+ const connectionBuilder = new HubConnectionBuilder()
31
+ .withUrl(url, options)
32
+ .configureLogging(logLevel);
33
+ if (automaticReconnect) {
34
+ connectionBuilder.withAutomaticReconnect();
35
+ }
36
+ return connectionBuilder.build();
37
+ }
38
+ /**
39
+ * Starts a SignalR connection.
40
+ * @param connection A SignalR connection
41
+ */
42
+ async startConnection(connection) {
43
+ if (!connection) {
44
+ throw new Error("Please provide a valid connection to start");
45
+ }
46
+ try {
47
+ await connection.start();
48
+ console.log(`The SignalR connection has been successfully established! \n url: ${connection.baseUrl} \n connectionId: ${connection.connectionId}`);
49
+ }
50
+ catch (error) {
51
+ throw error;
52
+ }
53
+ }
54
+ /**
55
+ * Stops a SignalR connection.
56
+ * @param connection A SignalR connection
57
+ */
58
+ async stopConnection(connection) {
59
+ if (!connection) {
60
+ throw new Error("Please provide a valid connection to stop");
61
+ }
62
+ try {
63
+ await connection.stop();
64
+ console.log(`The SignalR connection has been successfully stopped! \n url: ${connection.baseUrl} \n connectionId: ${connection.connectionId}`);
65
+ }
66
+ catch (error) {
67
+ throw error;
68
+ }
69
+ }
70
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SignalRWebService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
71
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SignalRWebService, providedIn: "root" }); }
72
+ }
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SignalRWebService, decorators: [{
74
+ type: Injectable,
75
+ args: [{
76
+ providedIn: "root"
77
+ }]
78
+ }] });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsUi53ZWIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fzc2lzdGFudC9jaGF0L3NlcnZpY2VzL3NpZ25hbFIud2ViLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBZ0UsTUFBTSxvQkFBb0IsQ0FBQztBQUNsSSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBUy9DOzs7RUFHRTtBQUNGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUFvQixxQkFBcUIsQ0FBQyxDQUFDO0FBRWhHOzs7RUFHRTtBQUNGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUFXLG9CQUFvQixDQUFDLENBQUM7QUFFckY7O0dBRUc7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBRTVCOzs7Ozs7O09BT0c7SUFDSCxlQUFlLENBQUMsWUFBb0IsRUFBRSxPQUEwQixFQUFFLFFBQVEsR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLGtCQUFrQixHQUFHLEtBQUs7UUFDM0gsTUFBTSxFQUFFLFVBQVUsRUFBQyxHQUFHLFlBQVksQ0FBQztRQUNuQyxNQUFNLEdBQUcsR0FBRyxHQUFHLFVBQVUsaUJBQWlCLFlBQVksRUFBRSxDQUFDO1FBRXpELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxvQkFBb0IsRUFBRTthQUNqRCxPQUFPLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQzthQUNyQixnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU5QixJQUFJLGtCQUFrQixFQUFFLENBQUM7WUFDdkIsaUJBQWlCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM3QyxDQUFDO1FBRUQsT0FBTyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLGVBQWUsQ0FBQyxVQUFxQztRQUN6RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFDRCxJQUFJLENBQUM7WUFDSCxNQUFNLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDLHFFQUFxRSxVQUFVLENBQUMsT0FBTyxxQkFBcUIsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDckosQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLEtBQUssQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FBQyxVQUFxQztRQUN4RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFDRCxJQUFJLENBQUM7WUFDSCxNQUFNLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLGlFQUFpRSxVQUFVLENBQUMsT0FBTyxxQkFBcUIsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDakosQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLEtBQUssQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDOytHQXZEVSxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQUZoQixNQUFNOzs0RkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSHViQ29ubmVjdGlvbkJ1aWxkZXIsIExvZ0xldmVsLCBIdWJDb25uZWN0aW9uLCBNZXNzYWdlSGVhZGVycywgSHR0cFRyYW5zcG9ydFR5cGUsIElUcmFuc3BvcnQgfSBmcm9tICdAbWljcm9zb2Z0L3NpZ25hbHInO1xuaW1wb3J0IHsgZ2xvYmFsQ29uZmlnIH0gZnJvbSBcIkBzaW5lcXVhL2F0b21pY1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbm5lY3Rpb25PcHRpb25zIHtcbiAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjsgLy8gaWYgdHJ1ZSwgdGhlIGJyb3dzZXIgYXV0b21hdGljYWxseSBpbmNsdWRlcyB0aGUgYXV0aGVudGljYXRpb24gY29va2llIGluIHRoZSByZXF1ZXN0IGhlYWRlcnMgd2hlbiBlc3RhYmxpc2hpbmcgdGhlIFNpZ25hbFIgY29ubmVjdGlvblxuICBoZWFkZXJzPzogTWVzc2FnZUhlYWRlcnM7XG4gIHRyYW5zcG9ydD86IEh0dHBUcmFuc3BvcnRUeXBlIHwgSVRyYW5zcG9ydDsgLy8gSWYgdHJhbnNwb3J0cyBhcmUgcHJvdmlkZWQsIHVzZSB0aGVtOyBvdGhlcndpc2UsIGxldCBTaWduYWxSIG5lZ290aWF0ZVxuICBhY2Nlc3NUb2tlbkZhY3Rvcnk/OiAoKSA9PiBzdHJpbmcgfCBQcm9taXNlPHN0cmluZz47XG59XG5cbi8qKiBBIHRva2VuIHRoYXQgaXMgdXNlZCB0byBpbmplY3QgdGhlIHRyYW5zcG9ydHMgYWxsb3dlZCB0byB1c2UgYnkgaHViIGNvbm5lY3Rpb24uXG4gKlxuICogRXhwZWN0cyBhIHtAbGluayBIdHRwVHJhbnNwb3J0VHlwZX0gdmFsdWUuXG4qL1xuZXhwb3J0IGNvbnN0IFNJR05BTF9SX1RSQU5TUE9SVFMgPSBuZXcgSW5qZWN0aW9uVG9rZW48SHR0cFRyYW5zcG9ydFR5cGU+KCdTSUdOQUxfUl9UUkFOU1BPUlRTJyk7XG5cbi8qKiBBIHRva2VuIHRoYXQgaXMgdXNlZCB0byBpbmplY3QgdGhlIGxvZyBsZXZlbCBmb3IgdGhlIGh1YiBjb25uZWN0aW9uLlxuICpcbiAqIEV4cGVjdHMgYSB7QGxpbmsgTG9nTGV2ZWx9IHZhbHVlLlxuKi9cbmV4cG9ydCBjb25zdCBTSUdOQUxfUl9MT0dfTEVWRUwgPSBuZXcgSW5qZWN0aW9uVG9rZW48TG9nTGV2ZWw+KCdTSUdOQUxfUl9MT0dfTEVWRUwnKTtcblxuLyoqXG4gKiBBIHNlcnZpY2UgdG8gY29ubmVjdCB0aGUgU2luZXF1YSBzZXJ2ZXIgdG8gdGhlIGNsaWVudCB2aWEgU2lnbmFsUlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXG59KVxuZXhwb3J0IGNsYXNzIFNpZ25hbFJXZWJTZXJ2aWNlIHtcblxuICAvKipcbiAgICogQnVpbGRzIGEgU2lnbmFsUiBjb25uZWN0aW9uIHRvIHRoZSBnaXZlbiBlbmRwb2ludFxuICAgKiBAcGFyYW0gZW5kcG9pbnROYW1lIE5hbWUgb2YgdGhlIGVuZHBvaW50IHRvIGNvbm5lY3QgdG9cbiAgICogQHBhcmFtIG9wdGlvbnMgIE9wdGlvbnMgZm9yIHRoZSBjb25uZWN0aW9uLiBJdCBtdXN0IG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBvcHRpb25zXG4gICAqIEBwYXJhbSBsb2dMZXZlbCAgVGhlIGxvZyBsZXZlbCBmb3IgdGhlIGNvbm5lY3Rpb25cbiAgICogQHBhcmFtIGF1dG9tYXRpY1JlY29ubmVjdCAgV2hldGhlciB0aGUgY29ubmVjdGlvbiBzaG91bGQgYXV0b21hdGljYWxseSBhdHRlbXB0IHRvIHJlY29ubmVjdFxuICAgKiBAcmV0dXJucyAgQSBTaWduYWxSIGNvbm5lY3Rpb25cbiAgICovXG4gIGJ1aWxkQ29ubmVjdGlvbihlbmRwb2ludE5hbWU6IHN0cmluZywgb3B0aW9uczogQ29ubmVjdGlvbk9wdGlvbnMsIGxvZ0xldmVsID0gTG9nTGV2ZWwuSW5mb3JtYXRpb24sIGF1dG9tYXRpY1JlY29ubmVjdCA9IGZhbHNlKTogSHViQ29ubmVjdGlvbiB7XG4gICAgY29uc3QgeyBiYWNrZW5kVXJsfSA9IGdsb2JhbENvbmZpZztcbiAgICBjb25zdCB1cmwgPSBgJHtiYWNrZW5kVXJsfS9lbmRwb2ludHMvdjEvJHtlbmRwb2ludE5hbWV9YDtcblxuICAgIGNvbnN0IGNvbm5lY3Rpb25CdWlsZGVyID0gbmV3IEh1YkNvbm5lY3Rpb25CdWlsZGVyKClcbiAgICAgIC53aXRoVXJsKHVybCwgb3B0aW9ucylcbiAgICAgIC5jb25maWd1cmVMb2dnaW5nKGxvZ0xldmVsKTtcblxuICAgIGlmIChhdXRvbWF0aWNSZWNvbm5lY3QpIHtcbiAgICAgIGNvbm5lY3Rpb25CdWlsZGVyLndpdGhBdXRvbWF0aWNSZWNvbm5lY3QoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29ubmVjdGlvbkJ1aWxkZXIuYnVpbGQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydHMgYSBTaWduYWxSIGNvbm5lY3Rpb24uXG4gICAqIEBwYXJhbSBjb25uZWN0aW9uICBBIFNpZ25hbFIgY29ubmVjdGlvblxuICAgKi9cbiAgYXN5bmMgc3RhcnRDb25uZWN0aW9uKGNvbm5lY3Rpb246IEh1YkNvbm5lY3Rpb24gfCB1bmRlZmluZWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIWNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlBsZWFzZSBwcm92aWRlIGEgdmFsaWQgY29ubmVjdGlvbiB0byBzdGFydFwiKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNvbm5lY3Rpb24uc3RhcnQoKTtcbiAgICAgIGNvbnNvbGUubG9nKGBUaGUgU2lnbmFsUiBjb25uZWN0aW9uIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBlc3RhYmxpc2hlZCEgXFxuIHVybDogJHtjb25uZWN0aW9uLmJhc2VVcmx9IFxcbiBjb25uZWN0aW9uSWQ6ICR7Y29ubmVjdGlvbi5jb25uZWN0aW9uSWR9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wcyBhIFNpZ25hbFIgY29ubmVjdGlvbi5cbiAgICogQHBhcmFtIGNvbm5lY3Rpb24gQSBTaWduYWxSIGNvbm5lY3Rpb25cbiAgICovXG4gIGFzeW5jIHN0b3BDb25uZWN0aW9uKGNvbm5lY3Rpb246IEh1YkNvbm5lY3Rpb24gfCB1bmRlZmluZWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIWNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlBsZWFzZSBwcm92aWRlIGEgdmFsaWQgY29ubmVjdGlvbiB0byBzdG9wXCIpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgY29ubmVjdGlvbi5zdG9wKCk7XG4gICAgICBjb25zb2xlLmxvZyhgVGhlIFNpZ25hbFIgY29ubmVjdGlvbiBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgc3RvcHBlZCEgXFxuIHVybDogJHtjb25uZWN0aW9uLmJhc2VVcmx9IFxcbiBjb25uZWN0aW9uSWQ6ICR7Y29ubmVjdGlvbi5jb25uZWN0aW9uSWR9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,61 @@
1
+ import { Clipboard } from "@angular/cdk/clipboard";
2
+ import { inject, Injectable } from "@angular/core";
3
+ import { TranslocoService } from "@jsverse/transloco";
4
+ import { NotificationsService } from "./notification.service";
5
+ import * as i0 from "@angular/core";
6
+ export class UIService {
7
+ constructor() {
8
+ this.notificationsService = inject(NotificationsService);
9
+ this.clipboard = inject(Clipboard);
10
+ this.transloco = inject(TranslocoService);
11
+ }
12
+ copyToClipboard(data, maxLength = 30) {
13
+ if (!navigator?.clipboard) {
14
+ // Note: CDK seems to struggle with large chunks of text
15
+ this.copyToClipboardCdk(data, maxLength);
16
+ }
17
+ else {
18
+ // Navigator built-in clipboard management
19
+ navigator.clipboard.writeText(data).then(() => {
20
+ this.notifySuccess(data, maxLength);
21
+ }, (err) => {
22
+ this.notificationsService.warning(this.transloco.translate("chat.clipboard.fail"));
23
+ });
24
+ }
25
+ }
26
+ copyToClipboardCdk(data, maxLength = 30) {
27
+ const pending = this.clipboard.beginCopy(data);
28
+ let remainingAttempts = 3;
29
+ const attempt = () => {
30
+ const result = pending.copy();
31
+ if (!result && --remainingAttempts) {
32
+ setTimeout(attempt);
33
+ }
34
+ else {
35
+ // Remember to destroy when you're done!
36
+ pending.destroy();
37
+ if (result)
38
+ this.notifySuccess(data, maxLength);
39
+ else
40
+ this.notificationsService.warning(this.transloco.translate("chat.clipboard.fail"));
41
+ }
42
+ };
43
+ attempt();
44
+ }
45
+ notifySuccess(message, maxLength = 30) {
46
+ const value = message.length > maxLength
47
+ ? message.slice(0, maxLength) + "..."
48
+ : message;
49
+ const translated = this.transloco.translate("chat.clipboard.success", { value });
50
+ this.notificationsService.success(translated);
51
+ }
52
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UIService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
53
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UIService, providedIn: "root" }); }
54
+ }
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UIService, decorators: [{
56
+ type: Injectable,
57
+ args: [{
58
+ providedIn: "root",
59
+ }]
60
+ }] });
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fzc2lzdGFudC9jaGF0L3NlcnZpY2VzL3VpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXRELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUs5RCxNQUFNLE9BQU8sU0FBUztJQUh0QjtRQUlFLHlCQUFvQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3BELGNBQVMsR0FBYyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0tBa0R2RDtJQWhEQyxlQUFlLENBQUMsSUFBWSxFQUFFLFNBQVMsR0FBRyxFQUFFO1FBQzFDLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDMUIsd0RBQXdEO1lBQ3hELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDM0MsQ0FBQzthQUFNLENBQUM7WUFDTiwwQ0FBMEM7WUFDMUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUN0QyxHQUFHLEVBQUU7Z0JBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDdEMsQ0FBQyxFQUNELENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ04sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsQ0FDaEQsQ0FBQztZQUNKLENBQUMsQ0FDRixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxJQUFZLEVBQUUsU0FBUyxHQUFHLEVBQUU7UUFDN0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsSUFBSSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7UUFDMUIsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFO1lBQ25CLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztnQkFDbkMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RCLENBQUM7aUJBQU0sQ0FBQztnQkFDTix3Q0FBd0M7Z0JBQ3hDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxNQUFNO29CQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDOztvQkFFOUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsQ0FDaEQsQ0FBQztZQUNOLENBQUM7UUFDSCxDQUFDLENBQUM7UUFDRixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBZSxFQUFFLFNBQVMsR0FBRyxFQUFFO1FBQzNDLE1BQU0sS0FBSyxHQUNULE9BQU8sQ0FBQyxNQUFNLEdBQUcsU0FBUztZQUN4QixDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEdBQUcsS0FBSztZQUNyQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ2QsTUFBTSxVQUFVLEdBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEQsQ0FBQzsrR0FwRFUsU0FBUzttSEFBVCxTQUFTLGNBRlIsTUFBTTs7NEZBRVAsU0FBUztrQkFIckIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbGlwYm9hcmQgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NsaXBib2FyZFwiO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tIFwiQGpzdmVyc2UvdHJhbnNsb2NvXCI7XG5cbmltcG9ydCB7IE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSBcIi4vbm90aWZpY2F0aW9uLnNlcnZpY2VcIjtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiBcInJvb3RcIixcbn0pXG5leHBvcnQgY2xhc3MgVUlTZXJ2aWNlIHtcbiAgbm90aWZpY2F0aW9uc1NlcnZpY2UgPSBpbmplY3QoTm90aWZpY2F0aW9uc1NlcnZpY2UpO1xuICBjbGlwYm9hcmQ6IENsaXBib2FyZCA9IGluamVjdChDbGlwYm9hcmQpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbG9jbyA9IGluamVjdChUcmFuc2xvY29TZXJ2aWNlKTtcblxuICBjb3B5VG9DbGlwYm9hcmQoZGF0YTogc3RyaW5nLCBtYXhMZW5ndGggPSAzMCkge1xuICAgIGlmICghbmF2aWdhdG9yPy5jbGlwYm9hcmQpIHtcbiAgICAgIC8vIE5vdGU6IENESyBzZWVtcyB0byBzdHJ1Z2dsZSB3aXRoIGxhcmdlIGNodW5rcyBvZiB0ZXh0XG4gICAgICB0aGlzLmNvcHlUb0NsaXBib2FyZENkayhkYXRhLCBtYXhMZW5ndGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBOYXZpZ2F0b3IgYnVpbHQtaW4gY2xpcGJvYXJkIG1hbmFnZW1lbnRcbiAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGRhdGEpLnRoZW4oXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aGlzLm5vdGlmeVN1Y2Nlc3MoZGF0YSwgbWF4TGVuZ3RoKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2Uud2FybmluZyhcbiAgICAgICAgICAgIHRoaXMudHJhbnNsb2NvLnRyYW5zbGF0ZShcImNoYXQuY2xpcGJvYXJkLmZhaWxcIilcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGNvcHlUb0NsaXBib2FyZENkayhkYXRhOiBzdHJpbmcsIG1heExlbmd0aCA9IDMwKSB7XG4gICAgY29uc3QgcGVuZGluZyA9IHRoaXMuY2xpcGJvYXJkLmJlZ2luQ29weShkYXRhKTtcbiAgICBsZXQgcmVtYWluaW5nQXR0ZW1wdHMgPSAzO1xuICAgIGNvbnN0IGF0dGVtcHQgPSAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBwZW5kaW5nLmNvcHkoKTtcbiAgICAgIGlmICghcmVzdWx0ICYmIC0tcmVtYWluaW5nQXR0ZW1wdHMpIHtcbiAgICAgICAgc2V0VGltZW91dChhdHRlbXB0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFJlbWVtYmVyIHRvIGRlc3Ryb3kgd2hlbiB5b3UncmUgZG9uZSFcbiAgICAgICAgcGVuZGluZy5kZXN0cm95KCk7XG4gICAgICAgIGlmIChyZXN1bHQpIHRoaXMubm90aWZ5U3VjY2VzcyhkYXRhLCBtYXhMZW5ndGgpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS53YXJuaW5nKFxuICAgICAgICAgICAgdGhpcy50cmFuc2xvY28udHJhbnNsYXRlKFwiY2hhdC5jbGlwYm9hcmQuZmFpbFwiKVxuICAgICAgICAgICk7XG4gICAgICB9XG4gICAgfTtcbiAgICBhdHRlbXB0KCk7XG4gIH1cblxuICBub3RpZnlTdWNjZXNzKG1lc3NhZ2U6IHN0cmluZywgbWF4TGVuZ3RoID0gMzApIHtcbiAgICBjb25zdCB2YWx1ZSA9XG4gICAgICBtZXNzYWdlLmxlbmd0aCA+IG1heExlbmd0aFxuICAgICAgICA/IG1lc3NhZ2Uuc2xpY2UoMCwgbWF4TGVuZ3RoKSArIFwiLi4uXCJcbiAgICAgICAgOiBtZXNzYWdlO1xuICAgIGNvbnN0IHRyYW5zbGF0ZWQgPVxuICAgICAgdGhpcy50cmFuc2xvY28udHJhbnNsYXRlKFwiY2hhdC5jbGlwYm9hcmQuc3VjY2Vzc1wiLCB7IHZhbHVlIH0pO1xuICAgIHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2Uuc3VjY2Vzcyh0cmFuc2xhdGVkKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,22 @@
1
+ import { Injectable } from "@angular/core";
2
+ import { from } from "rxjs";
3
+ import { patchUserSettings } from "@sinequa/atomic";
4
+ import * as i0 from "@angular/core";
5
+ export class UserSettingsWebService {
6
+ constructor() {
7
+ this.userSettings = {};
8
+ }
9
+ patch(data) {
10
+ this.userSettings = { ...this.userSettings, ...data };
11
+ return from(patchUserSettings(data));
12
+ }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserSettingsWebService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
14
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserSettingsWebService, providedIn: "root" }); }
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserSettingsWebService, decorators: [{
17
+ type: Injectable,
18
+ args: [{
19
+ providedIn: "root"
20
+ }]
21
+ }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXR0aW5ncy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvc2VydmljZXMvdXNlci1zZXR0aW5ncy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFLcEQsTUFBTSxPQUFPLHNCQUFzQjtJQUhuQztRQUlFLGlCQUFZLEdBQUcsRUFBRSxDQUFDO0tBTW5CO0lBSkMsS0FBSyxDQUFDLElBQVM7UUFDYixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDdEQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDOytHQU5VLHNCQUFzQjttSEFBdEIsc0JBQXNCLGNBRnJCLE1BQU07OzRGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgZnJvbSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IHBhdGNoVXNlclNldHRpbmdzIH0gZnJvbSBcIkBzaW5lcXVhL2F0b21pY1wiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVc2VyU2V0dGluZ3NXZWJTZXJ2aWNlIHtcclxuICB1c2VyU2V0dGluZ3MgPSB7fTtcclxuXHJcbiAgcGF0Y2goZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLnVzZXJTZXR0aW5ncyA9IHsgLi4udGhpcy51c2VyU2V0dGluZ3MsIC4uLmRhdGEgfTtcclxuICAgIHJldHVybiBmcm9tKHBhdGNoVXNlclNldHRpbmdzKGRhdGEpKTtcclxuICB9XHJcbn0iXX0=
@@ -1,5 +1,5 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
5
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZXF1YS1hc3Npc3RhbnQtY2hhdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Fzc2lzdGFudC9jaGF0L3NpbmVxdWEtYXNzaXN0YW50LWNoYXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,52 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, Input, inject } from '@angular/core';
3
+ import { Subscription, filter, of, switchMap, tap } from 'rxjs';
4
+ import { provideTranslocoScope, TranslocoPipe } from '@jsverse/transloco';
5
+ import { isAuthenticated } from '@sinequa/atomic';
6
+ import { InstanceManagerService } from '../instance-manager.service';
7
+ import { TooltipDirective } from '../tooltip/tooltip.directive';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/common";
10
+ export class TokenProgressBarComponent {
11
+ constructor() {
12
+ this.subscription = new Subscription();
13
+ this.instanceManagerService = inject(InstanceManagerService);
14
+ }
15
+ ngOnInit() {
16
+ this.subscription.add(of(isAuthenticated()).pipe(tap(_ => this.instantiateChatService()), switchMap(_ => this.chatService.initProcess$), filter(success => !!success), tap(_ => {
17
+ this.config = this.chatService.assistantConfig$.value;
18
+ this.onUserTokensConsumption();
19
+ this.onChatTokensConsumption();
20
+ })).subscribe());
21
+ }
22
+ ngOnDestroy() {
23
+ this.subscription.unsubscribe();
24
+ }
25
+ instantiateChatService() {
26
+ this.chatService = this.instanceManagerService.getInstance(this.instanceId);
27
+ }
28
+ onUserTokensConsumption() {
29
+ this.subscription.add(this.chatService.userTokenConsumption$.subscribe((data) => {
30
+ if (data) {
31
+ this.userPercentage = data.percentage;
32
+ this.userTokensResetDate = data.nextResetDate;
33
+ }
34
+ }));
35
+ }
36
+ onChatTokensConsumption() {
37
+ this.subscription.add(this.chatService.chatTokenConsumption$.subscribe((data) => {
38
+ if (data) {
39
+ this.chatPercentage = data.percentage;
40
+ }
41
+ }));
42
+ }
43
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TokenProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
44
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TokenProgressBarComponent, isStandalone: true, selector: "sq-token-progress-bar", inputs: { instanceId: "instanceId" }, providers: [provideTranslocoScope('token-consumption')], ngImport: i0, template: "<div class=\"bars-container d-flex flex-row gap-2 p-2 me-4\" *ngIf=\"(config?.globalSettings?.displayUserQuotaConsumption && userPercentage !== undefined) || (config?.globalSettings?.displayChatTokensConsumption && chatPercentage !== undefined)\">\n <div *ngIf=\"(config?.globalSettings?.displayUserQuotaConsumption && userPercentage !== undefined)\" class=\"token-progress-bar\" [sqTooltip]=\"'tokenConsumption.userConsumptionTitle' | transloco : { percentage: userPercentage, time: userTokensResetDate }\"\n [style.background]=\"'radial-gradient(closest-side, var(--ast-primary-bg, #F8F8F8) 70%, transparent 75% 100%), conic-gradient(#FF854A ' + userPercentage + '%, #0040BF 0)'\">\n </div>\n <div *ngIf=\"(config?.globalSettings?.displayChatTokensConsumption && chatPercentage !== undefined)\" class=\"token-progress-bar\" [sqTooltip]=\"'tokenConsumption.chatConsumptionTitle' | transloco : { percentage: chatPercentage }\"\n [style.background]=\"'radial-gradient(closest-side, var(--ast-primary-bg, #F8F8F8) 70%, transparent 75% 100%), conic-gradient(#FF854A ' + chatPercentage + '%, #0040BF 0)'\">\n </div>\n</div>\n", styles: [".ast-primary{color:var(--ast-primary-color, #005DA7);background-color:var(--ast-primary-bg, #f2f8fe)}.ast-primary-hover{background-color:var(--ast-primary-bg, #f2f8fe)}.ast-primary-hover:hover{color:var(--ast-primary-color, #005DA7)}.ast-secondary{color:var(--ast-secondary-color, #FF732E);background-color:var(--ast-secondary-bg, #FFF8F1)}.ast-error{background-color:var(--ast-error-bg, rgba(249, 58, 55, .2));color:var(--ast-action-buttons-color, inherit)}.ast-error:hover{color:var(--ast-error-color, rgba(249, 58, 55, .7))}.ast-btn{border:0;text-align:left;padding-top:.5rem;padding-bottom:.5rem;display:flex;align-items:center}.dark{--ast-primary-bg: #0d0701;--ast-primary-color: #008cd1;--ast-secondary-bg: #00070e;--ast-secondary-color: #ffa258;--ast-input-bg: #070707;--ast-input-color: rgba(222, 218, 218, .75);--ast-muted-color: rgba(222, 218, 218, .75);--ast-saved-chat-hover-background: #262421;--ast-uploaded-doc-hover-background: #262421;--ast-message-table-border-color: #333333;--ast-message-table-tr-bg: #070707;--ast-message-table-tr-border-color: #222222;--ast-reference-icon-color: white;--ast-reference-icon-active-color: black;--ast-reference-passages-color: white;--ast-reference-expanded-hover-bg: #262421;--ast-message-reference-color: black;--ast-action-buttons-color: white;--ast-action-buttons-hover-color: #6dbee6;--ast-report-bg: #070707}.bars-container{background-color:var(--ast-primary-bg, #f2f8fe);border-bottom-left-radius:1rem;border-bottom-right-radius:1rem}.token-progress-bar{width:1.5rem;height:1.5rem;border-radius:50%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TooltipDirective, selector: "[sqTooltip]", inputs: ["sqTooltip", "sqTooltipData", "sqTooltipTemplate", "placement", "fallbackPlacements", "delay", "hoverableTooltip", "tooltipClass"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] }); }
45
+ }
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TokenProgressBarComponent, decorators: [{
47
+ type: Component,
48
+ args: [{ selector: 'sq-token-progress-bar', standalone: true, providers: [provideTranslocoScope('token-consumption')], imports: [CommonModule, TooltipDirective, TranslocoPipe], template: "<div class=\"bars-container d-flex flex-row gap-2 p-2 me-4\" *ngIf=\"(config?.globalSettings?.displayUserQuotaConsumption && userPercentage !== undefined) || (config?.globalSettings?.displayChatTokensConsumption && chatPercentage !== undefined)\">\n <div *ngIf=\"(config?.globalSettings?.displayUserQuotaConsumption && userPercentage !== undefined)\" class=\"token-progress-bar\" [sqTooltip]=\"'tokenConsumption.userConsumptionTitle' | transloco : { percentage: userPercentage, time: userTokensResetDate }\"\n [style.background]=\"'radial-gradient(closest-side, var(--ast-primary-bg, #F8F8F8) 70%, transparent 75% 100%), conic-gradient(#FF854A ' + userPercentage + '%, #0040BF 0)'\">\n </div>\n <div *ngIf=\"(config?.globalSettings?.displayChatTokensConsumption && chatPercentage !== undefined)\" class=\"token-progress-bar\" [sqTooltip]=\"'tokenConsumption.chatConsumptionTitle' | transloco : { percentage: chatPercentage }\"\n [style.background]=\"'radial-gradient(closest-side, var(--ast-primary-bg, #F8F8F8) 70%, transparent 75% 100%), conic-gradient(#FF854A ' + chatPercentage + '%, #0040BF 0)'\">\n </div>\n</div>\n", styles: [".ast-primary{color:var(--ast-primary-color, #005DA7);background-color:var(--ast-primary-bg, #f2f8fe)}.ast-primary-hover{background-color:var(--ast-primary-bg, #f2f8fe)}.ast-primary-hover:hover{color:var(--ast-primary-color, #005DA7)}.ast-secondary{color:var(--ast-secondary-color, #FF732E);background-color:var(--ast-secondary-bg, #FFF8F1)}.ast-error{background-color:var(--ast-error-bg, rgba(249, 58, 55, .2));color:var(--ast-action-buttons-color, inherit)}.ast-error:hover{color:var(--ast-error-color, rgba(249, 58, 55, .7))}.ast-btn{border:0;text-align:left;padding-top:.5rem;padding-bottom:.5rem;display:flex;align-items:center}.dark{--ast-primary-bg: #0d0701;--ast-primary-color: #008cd1;--ast-secondary-bg: #00070e;--ast-secondary-color: #ffa258;--ast-input-bg: #070707;--ast-input-color: rgba(222, 218, 218, .75);--ast-muted-color: rgba(222, 218, 218, .75);--ast-saved-chat-hover-background: #262421;--ast-uploaded-doc-hover-background: #262421;--ast-message-table-border-color: #333333;--ast-message-table-tr-bg: #070707;--ast-message-table-tr-border-color: #222222;--ast-reference-icon-color: white;--ast-reference-icon-active-color: black;--ast-reference-passages-color: white;--ast-reference-expanded-hover-bg: #262421;--ast-message-reference-color: black;--ast-action-buttons-color: white;--ast-action-buttons-hover-color: #6dbee6;--ast-report-bg: #070707}.bars-container{background-color:var(--ast-primary-bg, #f2f8fe);border-bottom-left-radius:1rem;border-bottom-right-radius:1rem}.token-progress-bar{width:1.5rem;height:1.5rem;border-radius:50%}\n"] }]
49
+ }], propDecorators: { instanceId: [{
50
+ type: Input
51
+ }] } });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fzc2lzdGFudC9jaGF0L3Rva2VuLXByb2dyZXNzLWJhci90b2tlbi1wcm9ncmVzcy1iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvdG9rZW4tcHJvZ3Jlc3MtYmFyL3Rva2VuLXByb2dyZXNzLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsYUFBYSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR2xELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXJFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7QUFVaEUsTUFBTSxPQUFPLHlCQUF5QjtJQVJ0QztRQWNFLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVMzQiwyQkFBc0IsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztLQWtEaEU7SUFoREMsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUNuQixFQUFFLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3hCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLEVBQ3ZDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLEVBQzdDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFDNUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ04sSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLEtBQU0sQ0FBQztZQUN2RCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsRUFBRSxDQUNkLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELHNCQUFzQjtRQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUM5QyxDQUFDLElBQXNDLEVBQUUsRUFBRTtZQUN6QyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNULElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDaEQsQ0FBQztRQUNILENBQUMsQ0FDRixDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FDOUMsQ0FBQyxJQUFrQyxFQUFFLEVBQUU7WUFDckMsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDVCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDeEMsQ0FBQztRQUNILENBQUMsQ0FDRixDQUNGLENBQUM7SUFDSixDQUFDOytHQS9EVSx5QkFBeUI7bUdBQXpCLHlCQUF5QiwwR0FIekIsQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLDBCQ2pCekQsNm5DQVFBLG1sRERVWSxZQUFZLG1JQUFFLGdCQUFnQixnTUFBRSxhQUFhOzs0RkFFNUMseUJBQXlCO2tCQVJyQyxTQUFTOytCQUNFLHVCQUF1QixjQUdyQixJQUFJLGFBQ0wsQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFdBQzlDLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGFBQWEsQ0FBQzs4QkFJL0MsVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZpbHRlciwgb2YsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBwcm92aWRlVHJhbnNsb2NvU2NvcGUsIFRyYW5zbG9jb1BpcGV9IGZyb20gJ0Bqc3ZlcnNlL3RyYW5zbG9jbyc7XG5cbmltcG9ydCB7IGlzQXV0aGVudGljYXRlZCB9IGZyb20gJ0BzaW5lcXVhL2F0b21pYyc7XG5cbmltcG9ydCB7IENoYXRTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhdC5zZXJ2aWNlJztcbmltcG9ydCB7IEluc3RhbmNlTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi9pbnN0YW5jZS1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhdENvbmZpZywgVG9rZW5Db25zdW1wdGlvbiwgVXNlclRva2VuQ29uc3VtcHRpb24gfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnLi4vdG9vbHRpcC90b29sdGlwLmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NxLXRva2VuLXByb2dyZXNzLWJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi90b2tlbi1wcm9ncmVzcy1iYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90b2tlbi1wcm9ncmVzcy1iYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBbcHJvdmlkZVRyYW5zbG9jb1Njb3BlKCd0b2tlbi1jb25zdW1wdGlvbicpXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVG9vbHRpcERpcmVjdGl2ZSwgVHJhbnNsb2NvUGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgVG9rZW5Qcm9ncmVzc0JhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqIERlZmluZSB0aGUga2V5IGJhc2VkIG9uIGl0LCB0aGUgYXBwcm9wcmlhdGUgY2hhdFNlcnZpY2UgaW5zdGFuY2Ugd2lsbCBiZSByZXR1cm5lZCBmcm9tIGluc3RhbmNlTWFuYWdlclNlcnZpY2UgKi9cbiAgQElucHV0KCkgaW5zdGFuY2VJZDogc3RyaW5nO1xuXG4gIGNoYXRTZXJ2aWNlOiBDaGF0U2VydmljZTtcbiAgY29uZmlnOiBDaGF0Q29uZmlnO1xuICBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgLy8gVXNlciB0b2tlbiBjb25zdW1wdGlvbiBwcm9ncmVzcyBiYXJcbiAgdXNlclBlcmNlbnRhZ2U/OiBudW1iZXI7XG4gIHVzZXJUb2tlbnNSZXNldERhdGU/OiBzdHJpbmc7XG5cbiAgLy8gQ3VycmVudCBjaGF0IHRva2VuIGNvbnN1bXB0aW9uIHByb2dyZXNzIGJhclxuICBjaGF0UGVyY2VudGFnZT86IG51bWJlcjtcblxuICBwdWJsaWMgaW5zdGFuY2VNYW5hZ2VyU2VydmljZSA9IGluamVjdChJbnN0YW5jZU1hbmFnZXJTZXJ2aWNlKTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICBvZihpc0F1dGhlbnRpY2F0ZWQoKSkucGlwZShcbiAgICAgICAgdGFwKF8gPT4gdGhpcy5pbnN0YW50aWF0ZUNoYXRTZXJ2aWNlKCkpLFxuICAgICAgICBzd2l0Y2hNYXAoXyA9PiB0aGlzLmNoYXRTZXJ2aWNlLmluaXRQcm9jZXNzJCksXG4gICAgICAgIGZpbHRlcihzdWNjZXNzID0+ICEhc3VjY2VzcyksXG4gICAgICAgIHRhcChfID0+IHtcbiAgICAgICAgICB0aGlzLmNvbmZpZyA9IHRoaXMuY2hhdFNlcnZpY2UuYXNzaXN0YW50Q29uZmlnJC52YWx1ZSE7XG4gICAgICAgICAgdGhpcy5vblVzZXJUb2tlbnNDb25zdW1wdGlvbigpO1xuICAgICAgICAgIHRoaXMub25DaGF0VG9rZW5zQ29uc3VtcHRpb24oKTtcbiAgICAgICAgfSlcbiAgICAgICkuc3Vic2NyaWJlKClcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGluc3RhbnRpYXRlQ2hhdFNlcnZpY2UoKTogdm9pZCB7XG4gICAgdGhpcy5jaGF0U2VydmljZSA9IHRoaXMuaW5zdGFuY2VNYW5hZ2VyU2VydmljZS5nZXRJbnN0YW5jZSh0aGlzLmluc3RhbmNlSWQpO1xuICB9XG5cbiAgb25Vc2VyVG9rZW5zQ29uc3VtcHRpb24oKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5jaGF0U2VydmljZS51c2VyVG9rZW5Db25zdW1wdGlvbiQuc3Vic2NyaWJlKFxuICAgICAgICAoZGF0YTogVXNlclRva2VuQ29uc3VtcHRpb24gfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgdGhpcy51c2VyUGVyY2VudGFnZSA9IGRhdGEucGVyY2VudGFnZTtcbiAgICAgICAgICAgIHRoaXMudXNlclRva2Vuc1Jlc2V0RGF0ZSA9IGRhdGEubmV4dFJlc2V0RGF0ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgb25DaGF0VG9rZW5zQ29uc3VtcHRpb24oKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5jaGF0U2VydmljZS5jaGF0VG9rZW5Db25zdW1wdGlvbiQuc3Vic2NyaWJlKFxuICAgICAgICAoZGF0YTogVG9rZW5Db25zdW1wdGlvbiB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICB0aGlzLmNoYXRQZXJjZW50YWdlID0gZGF0YS5wZXJjZW50YWdlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKVxuICAgICk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImJhcnMtY29udGFpbmVyIGQtZmxleCBmbGV4LXJvdyBnYXAtMiBwLTIgbWUtNFwiICpuZ0lmPVwiKGNvbmZpZz8uZ2xvYmFsU2V0dGluZ3M/LmRpc3BsYXlVc2VyUXVvdGFDb25zdW1wdGlvbiAmJiB1c2VyUGVyY2VudGFnZSAhPT0gdW5kZWZpbmVkKSB8fCAoY29uZmlnPy5nbG9iYWxTZXR0aW5ncz8uZGlzcGxheUNoYXRUb2tlbnNDb25zdW1wdGlvbiAmJiBjaGF0UGVyY2VudGFnZSAhPT0gdW5kZWZpbmVkKVwiPlxuICAgIDxkaXYgKm5nSWY9XCIoY29uZmlnPy5nbG9iYWxTZXR0aW5ncz8uZGlzcGxheVVzZXJRdW90YUNvbnN1bXB0aW9uICYmIHVzZXJQZXJjZW50YWdlICE9PSB1bmRlZmluZWQpXCIgY2xhc3M9XCJ0b2tlbi1wcm9ncmVzcy1iYXJcIiBbc3FUb29sdGlwXT1cIid0b2tlbkNvbnN1bXB0aW9uLnVzZXJDb25zdW1wdGlvblRpdGxlJyB8IHRyYW5zbG9jbyA6IHsgcGVyY2VudGFnZTogdXNlclBlcmNlbnRhZ2UsIHRpbWU6IHVzZXJUb2tlbnNSZXNldERhdGUgfVwiXG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cIidyYWRpYWwtZ3JhZGllbnQoY2xvc2VzdC1zaWRlLCB2YXIoLS1hc3QtcHJpbWFyeS1iZywgI0Y4RjhGOCkgNzAlLCB0cmFuc3BhcmVudCA3NSUgMTAwJSksIGNvbmljLWdyYWRpZW50KCNGRjg1NEEgJyArIHVzZXJQZXJjZW50YWdlICsgJyUsICMwMDQwQkYgMCknXCI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIihjb25maWc/Lmdsb2JhbFNldHRpbmdzPy5kaXNwbGF5Q2hhdFRva2Vuc0NvbnN1bXB0aW9uICYmIGNoYXRQZXJjZW50YWdlICE9PSB1bmRlZmluZWQpXCIgY2xhc3M9XCJ0b2tlbi1wcm9ncmVzcy1iYXJcIiBbc3FUb29sdGlwXT1cIid0b2tlbkNvbnN1bXB0aW9uLmNoYXRDb25zdW1wdGlvblRpdGxlJyB8IHRyYW5zbG9jbyA6IHsgcGVyY2VudGFnZTogY2hhdFBlcmNlbnRhZ2UgfVwiXG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cIidyYWRpYWwtZ3JhZGllbnQoY2xvc2VzdC1zaWRlLCB2YXIoLS1hc3QtcHJpbWFyeS1iZywgI0Y4RjhGOCkgNzAlLCB0cmFuc3BhcmVudCA3NSUgMTAwJSksIGNvbmljLWdyYWRpZW50KCNGRjg1NEEgJyArIGNoYXRQZXJjZW50YWdlICsgJyUsICMwMDQwQkYgMCknXCI+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,44 @@
1
+ import { Component, ChangeDetectionStrategy } from '@angular/core';
2
+ import { animate, style, transition, trigger } from '@angular/animations';
3
+ import { NgTemplateOutlet } from '@angular/common';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Internal component that wraps the tooltip's content
7
+ */
8
+ export class TooltipComponent {
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TooltipComponent, isStandalone: true, selector: "sqx-tooltip", ngImport: i0, template: `
11
+ <ng-container *ngTemplateOutlet="template || defaultTpl; context: {$implicit: data}"></ng-container>
12
+ <ng-template #defaultTpl let-data>
13
+ <div class="sq-tooltip {{tooltipClass}}" @tooltip [innerHTML]="data"></div>
14
+ </ng-template>`, isInline: true, styles: [":host{display:block}:host ::ng-deep .sq-tooltip{background-color:#494949;color:#fff;padding:.5rem 1rem;border-radius:4px;font-size:14px;max-width:280px}:host-context(.dark) :host ::ng-deep .sq-tooltip{background-color:#f0f0f0;color:#606060}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [
15
+ trigger('tooltip', [
16
+ transition(':enter', [
17
+ style({ opacity: 0 }),
18
+ animate(300, style({ opacity: 1 })),
19
+ ]),
20
+ transition(':leave', [
21
+ animate(300, style({ opacity: 0 })),
22
+ ]),
23
+ ]),
24
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25
+ }
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TooltipComponent, decorators: [{
27
+ type: Component,
28
+ args: [{ selector: 'sqx-tooltip', standalone: true, imports: [NgTemplateOutlet], template: `
29
+ <ng-container *ngTemplateOutlet="template || defaultTpl; context: {$implicit: data}"></ng-container>
30
+ <ng-template #defaultTpl let-data>
31
+ <div class="sq-tooltip {{tooltipClass}}" @tooltip [innerHTML]="data"></div>
32
+ </ng-template>`, changeDetection: ChangeDetectionStrategy.OnPush, animations: [
33
+ trigger('tooltip', [
34
+ transition(':enter', [
35
+ style({ opacity: 0 }),
36
+ animate(300, style({ opacity: 1 })),
37
+ ]),
38
+ transition(':leave', [
39
+ animate(300, style({ opacity: 0 })),
40
+ ]),
41
+ ]),
42
+ ], styles: [":host{display:block}:host ::ng-deep .sq-tooltip{background-color:#494949;color:#fff;padding:.5rem 1rem;border-radius:4px;font-size:14px;max-width:280px}:host-context(.dark) :host ::ng-deep .sq-tooltip{background-color:#f0f0f0;color:#606060}\n"] }]
43
+ }] });
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUVuRDs7R0FFRztBQXdCSCxNQUFNLE9BQU8sZ0JBQWdCOytHQUFoQixnQkFBZ0I7bUdBQWhCLGdCQUFnQix1RUFsQmpCOzs7O2lCQUlLLDRUQUxMLGdCQUFnQixzSUFPZDtZQUNWLE9BQU8sQ0FBQyxTQUFTLEVBQUU7Z0JBQ2pCLFVBQVUsQ0FBQyxRQUFRLEVBQUU7b0JBQ25CLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDckIsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDcEMsQ0FBQztnQkFDRixVQUFVLENBQUMsUUFBUSxFQUFFO29CQUNuQixPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUNwQyxDQUFDO2FBQ0gsQ0FBQztTQUNIOzs0RkFFVSxnQkFBZ0I7a0JBdkI1QixTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLFdBRVAsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUNqQjs7OztpQkFJSyxtQkFDRSx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DO3dCQUNWLE9BQU8sQ0FBQyxTQUFTLEVBQUU7NEJBQ2pCLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0NBQ25CLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztnQ0FDckIsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzs2QkFDcEMsQ0FBQzs0QkFDRixVQUFVLENBQUMsUUFBUSxFQUFFO2dDQUNuQixPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzZCQUNwQyxDQUFDO3lCQUNILENBQUM7cUJBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbi8qKlxyXG4gKiBJbnRlcm5hbCBjb21wb25lbnQgdGhhdCB3cmFwcyB0aGUgdG9vbHRpcCdzIGNvbnRlbnRcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc3F4LXRvb2x0aXAnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdG9vbHRpcC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGltcG9ydHM6IFtOZ1RlbXBsYXRlT3V0bGV0XSxcclxuICB0ZW1wbGF0ZTogYFxyXG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZSB8fCBkZWZhdWx0VHBsOyBjb250ZXh0OiB7JGltcGxpY2l0OiBkYXRhfVwiPjwvbmctY29udGFpbmVyPlxyXG4gIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRwbCBsZXQtZGF0YT5cclxuICAgIDxkaXYgY2xhc3M9XCJzcS10b29sdGlwIHt7dG9vbHRpcENsYXNzfX1cIiBAdG9vbHRpcCBbaW5uZXJIVE1MXT1cImRhdGFcIj48L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPmAsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcigndG9vbHRpcCcsIFtcclxuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xyXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCB9KSxcclxuICAgICAgICBhbmltYXRlKDMwMCwgc3R5bGUoeyBvcGFjaXR5OiAxIH0pKSxcclxuICAgICAgXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcclxuICAgICAgICBhbmltYXRlKDMwMCwgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKSxcclxuICAgICAgXSksXHJcbiAgICBdKSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9vbHRpcENvbXBvbmVudDxUPXN0cmluZz4ge1xyXG4gIGRhdGE/OiBUO1xyXG4gIHRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcclxuICB0b29sdGlwQ2xhc3M/OiBzdHJpbmc7XHJcbn1cclxuIl19
@@ -0,0 +1,203 @@
1
+ import { Directive, HostBinding, HostListener, Input } from "@angular/core";
2
+ import { ComponentPortal } from "@angular/cdk/portal";
3
+ import { TooltipComponent } from "./tooltip.component";
4
+ import { of, delay } from "rxjs";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/cdk/overlay";
7
+ /**
8
+ * Directive that attaches a tooltip to the host element
9
+ *
10
+ * @example
11
+ * <div sqTooltip="This is a tooltip's text"></div>
12
+ *
13
+ * @example
14
+ * // A template can be passed to the directive instead of a string. Here 'tooltip' is a template reference
15
+ * <div sqTooltip="tooltip"></div>
16
+ *
17
+ * <ng-template #tooltip>
18
+ * <h2>Title</h2>
19
+ * <p>{{ "this is a comment" | uppercase }}</p>
20
+ * <h3>Other text</h3>
21
+ * </ng-template>
22
+ *
23
+ * @example
24
+ * //HTML can be used directly (not recommanded)
25
+ * <div sqTooltip="<h1>Title</h1><br><p>This is a comment</p>"></div>
26
+ */
27
+ export class TooltipDirective {
28
+ constructor(overlay, overlayPositionBuilder, elementRef) {
29
+ this.overlay = overlay;
30
+ this.overlayPositionBuilder = overlayPositionBuilder;
31
+ this.elementRef = elementRef;
32
+ /**
33
+ * Setting the default value of the placement property to `bottom`
34
+ */
35
+ this.placement = "bottom";
36
+ /**
37
+ * List of fallback placement if *Placement* defined can't be applyied
38
+ */
39
+ this.fallbackPlacements = [];
40
+ /**
41
+ * Delay in millisecond before showing/hiding the tooltip.
42
+ *
43
+ * Default value is 300ms
44
+ */
45
+ this.delay = 300;
46
+ /**
47
+ * If the tooltip should stay opened on hover
48
+ */
49
+ this.hoverableTooltip = false;
50
+ /**
51
+ * Applies the "has-tooltip" class to its host when displayed
52
+ */
53
+ this.hasTooltip = false;
54
+ }
55
+ ngOnDestroy() {
56
+ // do not forget to clear timeout function
57
+ this.clear();
58
+ }
59
+ show() {
60
+ // The tooltip is already showing: just cancel the hiding
61
+ if (this.clearTimeout) {
62
+ this.cancelHide();
63
+ return;
64
+ }
65
+ this.clear();
66
+ if (!this.value)
67
+ return;
68
+ const obs = typeof this.value === 'function'
69
+ ? this.value(this.data)
70
+ : of(this.value).pipe(delay(this.delay));
71
+ this.subscription = obs?.subscribe(data => {
72
+ // return when value is empty
73
+ if (!data || (typeof data === 'string' && !data.trim()))
74
+ return;
75
+ this.clear();
76
+ TooltipDirective.activeTooltip?.clear();
77
+ TooltipDirective.activeTooltip = this;
78
+ // set the tooltip's position strategy
79
+ const positionStrategy = this.overlayPositionBuilder
80
+ .flexibleConnectedTo(this.elementRef)
81
+ .withPositions([this.position(), ...this.fallbackPositions()]);
82
+ const scrollStrategy = this.overlay.scrollStrategies.close();
83
+ this.overlayRef = this.overlay.create({ positionStrategy, scrollStrategy });
84
+ // instance of the tooltip's component
85
+ const tooltipRef = this.overlayRef.attach(new ComponentPortal((TooltipComponent)));
86
+ tooltipRef.instance.data = data;
87
+ if (this.template) {
88
+ tooltipRef.instance.template = this.template;
89
+ }
90
+ if (this.tooltipClass) {
91
+ tooltipRef.instance.tooltipClass = this.tooltipClass;
92
+ }
93
+ if (this.hoverableTooltip) {
94
+ this.overlayRef.overlayElement.addEventListener("mouseenter", () => this.cancelHide());
95
+ this.overlayRef.overlayElement.addEventListener('mouseleave', () => this.hide());
96
+ }
97
+ this.hasTooltip = true;
98
+ });
99
+ }
100
+ mouseClick() {
101
+ this.clear();
102
+ }
103
+ hide() {
104
+ if (!this.clearTimeout) {
105
+ this.clearTimeout = setTimeout(() => this.clear(), this.hoverableTooltip ? this.delay : 10);
106
+ }
107
+ }
108
+ cancelHide() {
109
+ if (this.clearTimeout) {
110
+ clearTimeout(this.clearTimeout);
111
+ this.clearTimeout = undefined;
112
+ }
113
+ }
114
+ /**
115
+ * Clear timeout function and detach overlayRef
116
+ */
117
+ clear() {
118
+ this.subscription?.unsubscribe();
119
+ this.cancelHide();
120
+ this.overlayRef?.detach();
121
+ this.hasTooltip = false;
122
+ }
123
+ position(placement = this.placement) {
124
+ switch (placement) {
125
+ case "bottom":
126
+ return {
127
+ originX: "center",
128
+ originY: "bottom",
129
+ overlayX: "center",
130
+ overlayY: "top",
131
+ offsetY: 2
132
+ };
133
+ case "right":
134
+ return {
135
+ originX: "end",
136
+ originY: "center",
137
+ overlayX: "start",
138
+ overlayY: "center",
139
+ offsetX: 2
140
+ };
141
+ case "left":
142
+ return {
143
+ originX: "start",
144
+ originY: "center",
145
+ overlayX: "end",
146
+ overlayY: "center",
147
+ offsetX: -2
148
+ };
149
+ default:
150
+ return {
151
+ originX: "center",
152
+ originY: "top",
153
+ overlayX: "center",
154
+ overlayY: "bottom",
155
+ offsetY: -2
156
+ };
157
+ }
158
+ }
159
+ fallbackPositions() {
160
+ return Array.from(this.fallbackPlacements).map(p => this.position(p));
161
+ }
162
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TooltipDirective, deps: [{ token: i1.Overlay }, { token: i1.OverlayPositionBuilder }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
163
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: TooltipDirective, isStandalone: true, selector: "[sqTooltip]", inputs: { value: ["sqTooltip", "value"], data: ["sqTooltipData", "data"], template: ["sqTooltipTemplate", "template"], placement: "placement", fallbackPlacements: "fallbackPlacements", delay: "delay", hoverableTooltip: "hoverableTooltip", tooltipClass: "tooltipClass" }, host: { listeners: { "mouseenter": "show()", "mousedown": "mouseClick()", "mouseleave": "hide()" }, properties: { "class.has-tooltip": "this.hasTooltip" } }, ngImport: i0 }); }
164
+ }
165
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TooltipDirective, decorators: [{
166
+ type: Directive,
167
+ args: [{
168
+ selector: "[sqTooltip]",
169
+ standalone: true
170
+ }]
171
+ }], ctorParameters: () => [{ type: i1.Overlay }, { type: i1.OverlayPositionBuilder }, { type: i0.ElementRef }], propDecorators: { value: [{
172
+ type: Input,
173
+ args: ["sqTooltip"]
174
+ }], data: [{
175
+ type: Input,
176
+ args: ["sqTooltipData"]
177
+ }], template: [{
178
+ type: Input,
179
+ args: ["sqTooltipTemplate"]
180
+ }], placement: [{
181
+ type: Input
182
+ }], fallbackPlacements: [{
183
+ type: Input
184
+ }], delay: [{
185
+ type: Input
186
+ }], hoverableTooltip: [{
187
+ type: Input
188
+ }], tooltipClass: [{
189
+ type: Input
190
+ }], hasTooltip: [{
191
+ type: HostBinding,
192
+ args: ['class.has-tooltip']
193
+ }], show: [{
194
+ type: HostListener,
195
+ args: ["mouseenter"]
196
+ }], mouseClick: [{
197
+ type: HostListener,
198
+ args: ["mousedown"]
199
+ }], hide: [{
200
+ type: HostListener,
201
+ args: ["mouseleave"]
202
+ }] } });
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBR04sTUFBTSxlQUFlLENBQUM7QUFPdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXZELE9BQU8sRUFBYyxFQUFFLEVBQWdCLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBRzNEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBS0gsTUFBTSxPQUFPLGdCQUFnQjtJQTJDM0IsWUFDVSxPQUFnQixFQUNoQixzQkFBOEMsRUFDOUMsVUFBc0I7UUFGdEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFyQ2hDOztXQUVHO1FBQ00sY0FBUyxHQUFjLFFBQVEsQ0FBQztRQUN6Qzs7V0FFRztRQUNNLHVCQUFrQixHQUFnQixFQUFFLENBQUM7UUFFOUM7Ozs7V0FJRztRQUNNLFVBQUssR0FBRyxHQUFHLENBQUM7UUFDckI7O1dBRUc7UUFDTSxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFNbEM7O1dBRUc7UUFDK0IsZUFBVSxHQUFHLEtBQUssQ0FBQztJQVdqRCxDQUFDO0lBRUwsV0FBVztRQUNULDBDQUEwQztRQUMxQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZixDQUFDO0lBR0QsSUFBSTtRQUNGLHlEQUF5RDtRQUN6RCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsVUFB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RUFBRSxDQUFDLENBQUM7aUJBQ1osQ0FBQztZQUNKO2dCQUNFLE9BQU87b0JBQ0wsT0FBTyxFQUFFLFFBQVE7b0JBQ2pCLE9BQU8sRUFBRSxLQUFLO29CQUNkLFFBQVEsRUFBRSxRQUFRO29CQUNsQixRQUFRLEVBQUUsUUFBUTtvQkFDbEIsT0FBTyxFQUFFLENBQUMsQ0FBQztpQkFDWixDQUFDO1FBQ04sQ0FBQztJQUNILENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7K0dBakxVLGdCQUFnQjttR0FBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUo1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7MElBTXFCLEtBQUs7c0JBQXhCLEtBQUs7dUJBQUMsV0FBVztnQkFDTSxJQUFJO3NCQUEzQixLQUFLO3VCQUFDLGVBQWU7Z0JBQ00sUUFBUTtzQkFBbkMsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBS2pCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBSUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQU9HLEtBQUs7c0JBQWIsS0FBSztnQkFJRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBSUcsWUFBWTtzQkFBcEIsS0FBSztnQkFLNEIsVUFBVTtzQkFBM0MsV0FBVzt1QkFBQyxtQkFBbUI7Z0JBbUJoQyxJQUFJO3NCQURILFlBQVk7dUJBQUMsWUFBWTtnQkF3RDFCLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxXQUFXO2dCQU16QixJQUFJO3NCQURILFlBQVk7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBUZW1wbGF0ZVJlZlxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7XHJcbiAgQ29ubmVjdGVkUG9zaXRpb24sXHJcbiAgT3ZlcmxheSxcclxuICBPdmVybGF5UG9zaXRpb25CdWlsZGVyLFxyXG4gIE92ZXJsYXlSZWZcclxufSBmcm9tIFwiQGFuZ3VsYXIvY2RrL292ZXJsYXlcIjtcclxuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9wb3J0YWxcIjtcclxuaW1wb3J0IHsgVG9vbHRpcENvbXBvbmVudCB9IGZyb20gXCIuL3Rvb2x0aXAuY29tcG9uZW50XCI7XHJcblxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uLCBkZWxheSB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5leHBvcnQgdHlwZSBQbGFjZW1lbnQgPSBcInRvcFwiIHwgXCJib3R0b21cIiB8IFwicmlnaHRcIiB8IFwibGVmdFwiO1xyXG4vKipcclxuICogRGlyZWN0aXZlIHRoYXQgYXR0YWNoZXMgYSB0b29sdGlwIHRvIHRoZSBob3N0IGVsZW1lbnRcclxuICpcclxuICogQGV4YW1wbGVcclxuICogPGRpdiBzcVRvb2x0aXA9XCJUaGlzIGlzIGEgdG9vbHRpcCdzIHRleHRcIj48L2Rpdj5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogLy8gQSB0ZW1wbGF0ZSBjYW4gYmUgcGFzc2VkIHRvIHRoZSBkaXJlY3RpdmUgaW5zdGVhZCBvZiBhIHN0cmluZy4gSGVyZSAndG9vbHRpcCcgaXMgYSB0ZW1wbGF0ZSByZWZlcmVuY2VcclxuICogPGRpdiBzcVRvb2x0aXA9XCJ0b29sdGlwXCI+PC9kaXY+XHJcbiAqXHJcbiAqIDxuZy10ZW1wbGF0ZSAjdG9vbHRpcD5cclxuICogIDxoMj5UaXRsZTwvaDI+XHJcbiAqICA8cD57eyBcInRoaXMgaXMgYSBjb21tZW50XCIgfCB1cHBlcmNhc2UgfX08L3A+XHJcbiAqICA8aDM+T3RoZXIgdGV4dDwvaDM+XHJcbiAqIDwvbmctdGVtcGxhdGU+XHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIC8vSFRNTCBjYW4gYmUgdXNlZCBkaXJlY3RseSAobm90IHJlY29tbWFuZGVkKVxyXG4gKiA8ZGl2IHNxVG9vbHRpcD1cIjxoMT5UaXRsZTwvaDE+PGJyPjxwPlRoaXMgaXMgYSBjb21tZW50PC9wPlwiPjwvZGl2PlxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6IFwiW3NxVG9vbHRpcF1cIixcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUb29sdGlwRGlyZWN0aXZlPFRvb2x0aXBEYXRhPXVuZGVmaW5lZCwgVG9vbHRpcERpc3BsYXk9c3RyaW5nPiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgLyoqXHJcbiAgICogRGVmaW5pbmcgYSBwcm9wZXJ0eSBjYWxsZWQgdGV4dE9yVGVtcGxhdGUgdGhhdCBjYW4gYmUgYSBzdHJpbmcsIGEgZnVuY3Rpb24gdGhhdFxyXG4gICAqIHJldHVybnMgYW4gT2JzZXJ2YWJsZSBvZiBhIHN0cmluZyBvciB1bmRlZmluZWQsIG9yIGEgVGVtcGxhdGVSZWYuXHJcbiAgICovXHJcbiAgQElucHV0KFwic3FUb29sdGlwXCIpIHZhbHVlPzogVG9vbHRpcERpc3BsYXkgfCAoKGRhdGE/OiBUb29sdGlwRGF0YSkgPT4gT2JzZXJ2YWJsZTxUb29sdGlwRGlzcGxheSB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQpO1xyXG4gIEBJbnB1dChcInNxVG9vbHRpcERhdGFcIikgZGF0YT86IFRvb2x0aXBEYXRhO1xyXG4gIEBJbnB1dChcInNxVG9vbHRpcFRlbXBsYXRlXCIpIHRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0dGluZyB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgcGxhY2VtZW50IHByb3BlcnR5IHRvIGBib3R0b21gXHJcbiAgICovXHJcbiAgQElucHV0KCkgcGxhY2VtZW50OiBQbGFjZW1lbnQgPSBcImJvdHRvbVwiO1xyXG4gIC8qKlxyXG4gICAqIExpc3Qgb2YgZmFsbGJhY2sgcGxhY2VtZW50IGlmICpQbGFjZW1lbnQqIGRlZmluZWQgY2FuJ3QgYmUgYXBwbHlpZWRcclxuICAgKi9cclxuICBASW5wdXQoKSBmYWxsYmFja1BsYWNlbWVudHM6IFBsYWNlbWVudFtdID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGF5IGluIG1pbGxpc2Vjb25kIGJlZm9yZSBzaG93aW5nL2hpZGluZyB0aGUgdG9vbHRpcC5cclxuICAgKlxyXG4gICAqIERlZmF1bHQgdmFsdWUgaXMgMzAwbXNcclxuICAgKi9cclxuICBASW5wdXQoKSBkZWxheSA9IDMwMDtcclxuICAvKipcclxuICAgKiBJZiB0aGUgdG9vbHRpcCBzaG91bGQgc3RheSBvcGVuZWQgb24gaG92ZXJcclxuICAgKi9cclxuICBASW5wdXQoKSBob3ZlcmFibGVUb29sdGlwID0gZmFsc2U7XHJcbiAgLyoqXHJcbiAgICogQ3VzdG9tIGNsYXNzIGZvciB0aGUgdG9vbHRpcFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHRvb2x0aXBDbGFzcz86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogQXBwbGllcyB0aGUgXCJoYXMtdG9vbHRpcFwiIGNsYXNzIHRvIGl0cyBob3N0IHdoZW4gZGlzcGxheWVkXHJcbiAgICovXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oYXMtdG9vbHRpcCcpIGhhc1Rvb2x0aXAgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBvdmVybGF5UmVmOiBPdmVybGF5UmVmO1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgY2xlYXJUaW1lb3V0PzogYW55O1xyXG4gIHN0YXRpYyBhY3RpdmVUb29sdGlwPzogVG9vbHRpcERpcmVjdGl2ZTxhbnksIGFueT47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxyXG4gICAgcHJpdmF0ZSBvdmVybGF5UG9zaXRpb25CdWlsZGVyOiBPdmVybGF5UG9zaXRpb25CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyBkbyBub3QgZm9yZ2V0IHRvIGNsZWFyIHRpbWVvdXQgZnVuY3Rpb25cclxuICAgIHRoaXMuY2xlYXIoKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIpXHJcbiAgc2hvdygpIHtcclxuICAgIC8vIFRoZSB0b29sdGlwIGlzIGFscmVhZHkgc2hvd2luZzoganVzdCBjYW5jZWwgdGhlIGhpZGluZ1xyXG4gICAgaWYgKHRoaXMuY2xlYXJUaW1lb3V0KSB7XHJcbiAgICAgIHRoaXMuY2FuY2VsSGlkZSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jbGVhcigpO1xyXG5cclxuICAgIGlmICghdGhpcy52YWx1ZSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IG9icyA9IHR5cGVvZiB0aGlzLnZhbHVlID09PSAnZnVuY3Rpb24nXHJcbiAgICAgID8gKHRoaXMudmFsdWUgYXMgKGRhdGE/OiBUb29sdGlwRGF0YSkgPT4gT2JzZXJ2YWJsZTxUb29sdGlwRGlzcGxheSB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQpKHRoaXMuZGF0YSlcclxuICAgICAgOiBvZih0aGlzLnZhbHVlKS5waXBlKGRlbGF5KHRoaXMuZGVsYXkpKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IG9icz8uc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG5cclxuICAgICAgLy8gcmV0dXJuIHdoZW4gdmFsdWUgaXMgZW1wdHlcclxuICAgICAgaWYgKCFkYXRhIHx8ICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycgJiYgIWRhdGEudHJpbSgpKSkgcmV0dXJuO1xyXG5cclxuICAgICAgdGhpcy5jbGVhcigpO1xyXG5cclxuICAgICAgVG9vbHRpcERpcmVjdGl2ZS5hY3RpdmVUb29sdGlwPy5jbGVhcigpO1xyXG4gICAgICBUb29sdGlwRGlyZWN0aXZlLmFjdGl2ZVRvb2x0aXAgPSB0aGlzO1xyXG5cclxuICAgICAgLy8gc2V0IHRoZSB0b29sdGlwJ3MgcG9zaXRpb24gc3RyYXRlZ3lcclxuICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVBvc2l0aW9uQnVpbGRlclxyXG4gICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudFJlZilcclxuICAgICAgICAud2l0aFBvc2l0aW9ucyhbdGhpcy5wb3NpdGlvbigpLCAuLi50aGlzLmZhbGxiYWNrUG9zaXRpb25zKCldKTtcclxuXHJcbiAgICAgIGNvbnN0IHNjcm9sbFN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuY2xvc2UoKTtcclxuICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7IHBvc2l0aW9uU3RyYXRlZ3ksIHNjcm9sbFN0cmF0ZWd5IH0pO1xyXG5cclxuICAgICAgLy8gaW5zdGFuY2Ugb2YgdGhlIHRvb2x0aXAncyBjb21wb25lbnRcclxuICAgICAgY29uc3QgdG9vbHRpcFJlZiA9IHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IENvbXBvbmVudFBvcnRhbChUb29sdGlwQ29tcG9uZW50PFRvb2x0aXBEaXNwbGF5PikpO1xyXG5cclxuICAgICAgdG9vbHRpcFJlZi5pbnN0YW5jZS5kYXRhID0gZGF0YTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnRlbXBsYXRlKSB7XHJcbiAgICAgICAgdG9vbHRpcFJlZi5pbnN0YW5jZS50ZW1wbGF0ZSA9IHRoaXMudGVtcGxhdGU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMudG9vbHRpcENsYXNzKSB7XHJcbiAgICAgICAgdG9vbHRpcFJlZi5pbnN0YW5jZS50b29sdGlwQ2xhc3MgPSB0aGlzLnRvb2x0aXBDbGFzcztcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuaG92ZXJhYmxlVG9vbHRpcCkge1xyXG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLCAoKSA9PiB0aGlzLmNhbmNlbEhpZGUoKSk7XHJcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCAoKSA9PiB0aGlzLmhpZGUoKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuaGFzVG9vbHRpcCA9IHRydWU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoXCJtb3VzZWRvd25cIilcclxuICBtb3VzZUNsaWNrKCkge1xyXG4gICAgdGhpcy5jbGVhcigpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIilcclxuICBoaWRlKCkge1xyXG4gICAgaWYgKCF0aGlzLmNsZWFyVGltZW91dCkge1xyXG4gICAgICB0aGlzLmNsZWFyVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jbGVhcigpLCB0aGlzLmhvdmVyYWJsZVRvb2x0aXAgPyB0aGlzLmRlbGF5IDogMTApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FuY2VsSGlkZSgpIHtcclxuICAgIGlmICh0aGlzLmNsZWFyVGltZW91dCkge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5jbGVhclRpbWVvdXQpO1xyXG4gICAgICB0aGlzLmNsZWFyVGltZW91dCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFyIHRpbWVvdXQgZnVuY3Rpb24gYW5kIGRldGFjaCBvdmVybGF5UmVmXHJcbiAgICovXHJcbiAgY2xlYXIoKSB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuY2FuY2VsSGlkZSgpO1xyXG4gICAgdGhpcy5vdmVybGF5UmVmPy5kZXRhY2goKTtcclxuICAgIHRoaXMuaGFzVG9vbHRpcCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcG9zaXRpb24ocGxhY2VtZW50ID0gdGhpcy5wbGFjZW1lbnQpOiBDb25uZWN0ZWRQb3NpdGlvbiB7XHJcbiAgICBzd2l0Y2ggKHBsYWNlbWVudCkge1xyXG4gICAgICBjYXNlIFwiYm90dG9tXCI6XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIG9yaWdpblg6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICBvcmlnaW5ZOiBcImJvdHRvbVwiLFxyXG4gICAgICAgICAgb3ZlcmxheVg6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICBvdmVybGF5WTogXCJ0b3BcIixcclxuICAgICAgICAgIG9mZnNldFk6IDJcclxuICAgICAgICB9O1xyXG4gICAgICBjYXNlIFwicmlnaHRcIjpcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgb3JpZ2luWDogXCJlbmRcIixcclxuICAgICAgICAgIG9yaWdpblk6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICBvdmVybGF5WDogXCJzdGFydFwiLFxyXG4gICAgICAgICAgb3ZlcmxheVk6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICBvZmZzZXRYOiAyXHJcbiAgICAgICAgfTtcclxuICAgICAgY2FzZSBcImxlZnRcIjpcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgb3JpZ2luWDogXCJzdGFydFwiLFxyXG4gICAgICAgICAgb3JpZ2luWTogXCJjZW50ZXJcIixcclxuICAgICAgICAgIG92ZXJsYXlYOiBcImVuZFwiLFxyXG4gICAgICAgICAgb3ZlcmxheVk6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICBvZmZzZXRYOiAtMlxyXG4gICAgICAgIH07XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIG9yaWdpblg6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICBvcmlnaW5ZOiBcInRvcFwiLFxyXG4gICAgICAgICAgb3ZlcmxheVg6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICBvdmVybGF5WTogXCJib3R0b21cIixcclxuICAgICAgICAgIG9mZnNldFk6IC0yXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZhbGxiYWNrUG9zaXRpb25zKCk6IENvbm5lY3RlZFBvc2l0aW9uW10ge1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5mYWxsYmFja1BsYWNlbWVudHMpLm1hcChwID0+IHRoaXMucG9zaXRpb24ocCkpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1jb250ZW50LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvdHlwZXMvbWVzc2FnZS1jb250ZW50LnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogU3VwcG9ydGVkIG1lc3NhZ2UgdHlwZSAqL1xuZXhwb3J0IHR5cGUgTWVzc2FnZVR5cGUgPSBcInRleHRcIiB8IFwiaW1hZ2VcIiB8IFwidmlkZW9cIjtcblxuLyoqIEdlbmVyaWMgbWVzc2FnZSBjb250ZW50IHNjaGVtYSAqL1xuZXhwb3J0IHR5cGUgTWVzc2FnZUNvbnRlbnQgPSB7XG4gIHR5cGU6IE1lc3NhZ2VUeXBlO1xufTtcblxuLyoqIFRleHQgc3BlY2lmaWMgbWVzc2FnZSBjb250ZW50ICovXG5leHBvcnQgdHlwZSBUZXh0TWVzc2FnZUNvbnRlbnQgPSBNZXNzYWdlQ29udGVudCAmIHtcbiAgdHlwZTogXCJ0ZXh0XCI7XG4gIHRleHQ6IHN0cmluZztcbn07XG5cbi8qKlxuICogSW1hZ2Ugc3BlY2lmaWMgbWVzc2FnZSBjb250ZW50XG4gKiBJbWFnZXMgY2FuIGJlOlxuICogLSBQYWdlc2hvdDogSW1hZ2UgZnJvbSBhIHBhZ2UgKG9mZnNldCwgbGVuZ3RoLCBwYWdlTnVtYmVyLCByZW1hcHBlZE9mZnNldCwgcmVtYXBwZWRMZW5ndGgpXG4gKiAtIEJhc2U2NDogSW1hZ2UgZW5jb2RlZCBpbiBiYXNlNjQgKGJhc2U2NClcbiAqIC0gRXh0ZXJuYWwgVVJMOiBJbWFnZSBmcm9tIGFuIFVSTCAoaXNGcm9tREMgPSBmYWxzZSlcbiAqIC0gRG9jdW1lbnQgY2FjaGU6IEltYWdlIGZyb20gYW4gaW5kZXhlZCBkb2N1bWVudCAoaXNGcm9tREMgPSB0cnVlKVxuICovXG5leHBvcnQgdHlwZSBJbWFnZU1lc3NhZ2VDb250ZW50ID0gTWVzc2FnZUNvbnRlbnQgJiB7XG4gIHR5cGU6IFwiaW1hZ2VcIjtcbiAgaW1hZ2VEYXRhOiB7XG4gICAgJHR5cGU6IFwiYmFzZTY0XCIgfCBcInVybFwiO1xuICAgIG1pbWVUeXBlOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGJhc2U2ND86IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBpc0Zyb21EQz86IHRydWU7XG4gICAgbGVuZ3RoPzogbnVtYmVyO1xuICAgIG9mZlNldD86IG51bWJlcjtcbiAgICBwYWdlTnVtYmVyPzogbnVtYmVyO1xuICAgIHJlbWFwcGVkTGVuZ3RoPzogbnVtYmVyO1xuICAgIHJlbWFwcGVkT2Zmc2V0PzogbnVtYmVyO1xuICAgIHVybD86IHN0cmluZztcbiAgfTtcbn07XG5cbi8qKlxuICogVmlkZW8gc3BlY2lmaWMgbWVzc2FnZSBjb250ZW50XG4gKiBJbWFnZSBjb3JyZXNwb25kIHRvIHRoZSBzZW5kIGltYWdlIHRvIHRoZSBMTE0gYW5kIGNhbiBiZSB1c2VkIGFzIHRodW1ibmFpbFxuICovXG5leHBvcnQgdHlwZSBWaWRlb01lc3NhZ2VDb250ZW50ID0gTWVzc2FnZUNvbnRlbnQgJiB7XG4gIHR5cGU6IFwidmlkZW9cIjtcbiAgdmlkZW9EYXRhOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgZmlsZU5hbWU6IHN0cmluZztcbiAgICBpbWFnZU1pbWVUeXBlOiBzdHJpbmc7XG4gICAgaW1hZ2VVcmw6IHN0cmluZztcbiAgICB2aWRlb01pbWVUeXBlOiBzdHJpbmc7XG4gICAgdmlkZW9Vcmw6IHN0cmluZztcbiAgICB0aW1lQ29kZTogbnVtYmVyO1xuICB9O1xufTtcblxuLy8gTGVnYWN5IG1lc3NhZ2UgdHlwZSwgb25seSBzdHJpbmdcbmV4cG9ydCB0eXBlIFJhd01lc3NhZ2VDb250ZW50ID0gc3RyaW5nIHwgTWVzc2FnZUNvbnRlbnRbXTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1yZWZlcmVuY2UudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC90eXBlcy9tZXNzYWdlLXJlZmVyZW5jZS50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJ0aWNsZSB9IGZyb20gXCJAc2luZXF1YS9hdG9taWNcIjtcblxuLyoqIFR5cGUgb2YgYSBjb250ZXh0IGltYWdlIHJlZmVyZW5jZSAqL1xuZXhwb3J0IHR5cGUgTWVzc2FnZUltYWdlUmVmZXJlbmNlID0ge1xuICBuYW1lPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgdXJsPzogc3RyaW5nO1xuICB0eXBlPzogc3RyaW5nO1xuICBtaW1lVHlwZT86IHN0cmluZztcbiAgLy8gdXNlZCBmb3IgdGhlIHByZXZpZXcgYXJndW1lbnRzXG4gIGFydGljbGU/OiBBcnRpY2xlO1xuICBhcnRpY2xlSWQ/OiBzdHJpbmc7XG59O1xuIl19