@sinequa/atomic-angular 0.0.146 → 0.1.3
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.
- package/README.md +145 -0
- package/components/no-result/i18n/en.json +5 -0
- package/components/no-result/i18n/fr.json +5 -0
- package/components/sort-selector/i18n/en.json +3 -0
- package/components/sort-selector/i18n/fr.json +3 -0
- package/components/source/i18n/en.json +3 -0
- package/components/source/i18n/fr.json +3 -0
- package/features/alerts/i18n/en.json +33 -0
- package/features/alerts/i18n/fr.json +33 -0
- package/features/bookmarks/i18n/en.json +11 -0
- package/features/bookmarks/i18n/fr.json +11 -0
- package/features/collections/i18n/en.json +17 -0
- package/features/collections/i18n/fr.json +16 -0
- package/features/dialogs/i18n/en.json +15 -0
- package/features/dialogs/i18n/fr.json +15 -0
- package/features/did-you-mean/i18n/en.json +5 -0
- package/features/did-you-mean/i18n/fr.json +5 -0
- package/features/drawer/i18n/en.json +22 -0
- package/features/drawer/i18n/fr.json +22 -0
- package/features/export/i18n/en.json +7 -0
- package/features/export/i18n/fr.json +7 -0
- package/features/feedback/i18n/en.json +26 -0
- package/features/feedback/i18n/fr.json +26 -0
- package/features/filters/i18n/en.json +14 -0
- package/features/filters/i18n/fr.json +14 -0
- package/features/labels/i18n/en.json +8 -0
- package/features/labels/i18n/fr.json +8 -0
- package/features/recent-searches/i18n/en.json +6 -0
- package/features/recent-searches/i18n/fr.json +6 -0
- package/features/saved-searches/i18n/en.json +8 -0
- package/features/saved-searches/i18n/fr.json +8 -0
- package/features/sign-in/i18n/en.json +12 -0
- package/features/sign-in/i18n/fr.json +14 -0
- package/fesm2022/sinequa-atomic-angular.mjs +8021 -2672
- package/fesm2022/sinequa-atomic-angular.mjs.map +1 -1
- package/index.d.ts +6036 -3
- package/package.json +68 -10
- package/assets/tailwind.css +0 -334
- package/esm2022/lib/assistant/index.mjs +0 -2
- package/esm2022/lib/assistant/signalR.web.service.mjs +0 -81
- package/esm2022/lib/components/dropdown-input.mjs +0 -97
- package/esm2022/lib/components/dropdown-list.mjs +0 -35
- package/esm2022/lib/components/dropdown.mjs +0 -127
- package/esm2022/lib/components/index.mjs +0 -7
- package/esm2022/lib/components/menu/index.mjs +0 -3
- package/esm2022/lib/components/menu/menu-item.mjs +0 -22
- package/esm2022/lib/components/menu/menu.mjs +0 -99
- package/esm2022/lib/components/metadata/index.mjs +0 -2
- package/esm2022/lib/components/metadata/metadata.component.mjs +0 -65
- package/esm2022/lib/components/theme/index.mjs +0 -3
- package/esm2022/lib/components/theme/theme-selector.component.mjs +0 -67
- package/esm2022/lib/components/theme/theme-toggle.component.mjs +0 -67
- package/esm2022/lib/directives/index.mjs +0 -5
- package/esm2022/lib/directives/infinite-scroll.directive.mjs +0 -47
- package/esm2022/lib/directives/select-article-on-click.directive.mjs +0 -39
- package/esm2022/lib/directives/show-bookmark.directive.mjs +0 -55
- package/esm2022/lib/directives/theme-provider.directive.mjs +0 -31
- package/esm2022/lib/guards/auth.guard.mjs +0 -27
- package/esm2022/lib/guards/index.mjs +0 -3
- package/esm2022/lib/guards/initialization.guard.mjs +0 -41
- package/esm2022/lib/interceptors/audit.interceptor.mjs +0 -23
- package/esm2022/lib/interceptors/auth.interceptor.mjs +0 -49
- package/esm2022/lib/interceptors/body.interceptor.mjs +0 -24
- package/esm2022/lib/interceptors/error.interceptor.mjs +0 -35
- package/esm2022/lib/interceptors/index.mjs +0 -7
- package/esm2022/lib/interceptors/toast.interceptor.mjs +0 -27
- package/esm2022/lib/models/aggregation.mjs +0 -2
- package/esm2022/lib/models/article-metadata.mjs +0 -2
- package/esm2022/lib/models/autocomplete.mjs +0 -2
- package/esm2022/lib/models/custom-json.mjs +0 -2
- package/esm2022/lib/models/filter-dropdown.mjs +0 -2
- package/esm2022/lib/models/index.mjs +0 -7
- package/esm2022/lib/models/user-settings.mjs +0 -2
- package/esm2022/lib/pipes/highlight-word.pipe.mjs +0 -33
- package/esm2022/lib/pipes/index.mjs +0 -3
- package/esm2022/lib/pipes/source-icon.pipe.mjs +0 -43
- package/esm2022/lib/public-api.mjs +0 -18
- package/esm2022/lib/resolvers/index.mjs +0 -2
- package/esm2022/lib/resolvers/query-name-resolver.mjs +0 -14
- package/esm2022/lib/resources/index.mjs +0 -2
- package/esm2022/lib/resources/themes.mjs +0 -53
- package/esm2022/lib/services/application.service.mjs +0 -245
- package/esm2022/lib/services/autocomplete.service.mjs +0 -85
- package/esm2022/lib/services/drawer/backdrop.service.mjs +0 -23
- package/esm2022/lib/services/drawer/drawer-stack.service.mjs +0 -152
- package/esm2022/lib/services/drawer/drawer.service.mjs +0 -38
- package/esm2022/lib/services/index.mjs +0 -12
- package/esm2022/lib/services/label.service.mjs +0 -161
- package/esm2022/lib/services/navigation.service.mjs +0 -59
- package/esm2022/lib/services/saved-searches.service.mjs +0 -75
- package/esm2022/lib/services/search.service.mjs +0 -89
- package/esm2022/lib/services/selection-history.service.mjs +0 -92
- package/esm2022/lib/services/selection.service.mjs +0 -87
- package/esm2022/lib/stores/aggregations.store.mjs +0 -59
- package/esm2022/lib/stores/app.store.mjs +0 -270
- package/esm2022/lib/stores/application.store.mjs +0 -87
- package/esm2022/lib/stores/index.mjs +0 -9
- package/esm2022/lib/stores/principal.store.mjs +0 -47
- package/esm2022/lib/stores/query-params.store.mjs +0 -207
- package/esm2022/lib/stores/selection.store.mjs +0 -45
- package/esm2022/lib/stores/theme.store.mjs +0 -116
- package/esm2022/lib/stores/user-settings.store.mjs +0 -391
- package/esm2022/lib/tokens/highlights.mjs +0 -32
- package/esm2022/lib/tokens/index.mjs +0 -2
- package/esm2022/lib/utils/debounced-signal.mjs +0 -38
- package/esm2022/lib/utils/index.mjs +0 -8
- package/esm2022/lib/utils/inline-worker.mjs +0 -40
- package/esm2022/lib/utils/query.mjs +0 -58
- package/esm2022/lib/utils/routes.mjs +0 -28
- package/esm2022/lib/utils/tailwind-utils.mjs +0 -6
- package/esm2022/lib/utils/theme-body-hook.mjs +0 -18
- package/esm2022/lib/utils/theme-registry.mjs +0 -6
- package/esm2022/lib/web-services/aggregations.service.mjs +0 -104
- package/esm2022/lib/web-services/app.service.mjs +0 -48
- package/esm2022/lib/web-services/audit.service.mjs +0 -122
- package/esm2022/lib/web-services/index.mjs +0 -10
- package/esm2022/lib/web-services/json-method-plugin.service.mjs +0 -54
- package/esm2022/lib/web-services/preview.service.mjs +0 -327
- package/esm2022/lib/web-services/principal.service.mjs +0 -46
- package/esm2022/lib/web-services/query.service.mjs +0 -123
- package/esm2022/lib/web-services/text-chunck.service.mjs +0 -46
- package/esm2022/public-api.mjs +0 -5
- package/esm2022/sinequa-atomic-angular.mjs +0 -5
- package/lib/assistant/index.d.ts +0 -1
- package/lib/assistant/signalR.web.service.d.ts +0 -46
- package/lib/components/dropdown-input.d.ts +0 -18
- package/lib/components/dropdown-list.d.ts +0 -8
- package/lib/components/dropdown.d.ts +0 -50
- package/lib/components/index.d.ts +0 -6
- package/lib/components/menu/index.d.ts +0 -2
- package/lib/components/menu/menu-item.d.ts +0 -8
- package/lib/components/menu/menu.d.ts +0 -24
- package/lib/components/metadata/index.d.ts +0 -1
- package/lib/components/metadata/metadata.component.d.ts +0 -24
- package/lib/components/theme/index.d.ts +0 -2
- package/lib/components/theme/theme-selector.component.d.ts +0 -70
- package/lib/components/theme/theme-toggle.component.d.ts +0 -10
- package/lib/directives/index.d.ts +0 -4
- package/lib/directives/infinite-scroll.directive.d.ts +0 -30
- package/lib/directives/select-article-on-click.directive.d.ts +0 -14
- package/lib/directives/show-bookmark.directive.d.ts +0 -60
- package/lib/directives/theme-provider.directive.d.ts +0 -20
- package/lib/guards/auth.guard.d.ts +0 -7
- package/lib/guards/index.d.ts +0 -2
- package/lib/guards/initialization.guard.d.ts +0 -20
- package/lib/interceptors/audit.interceptor.d.ts +0 -13
- package/lib/interceptors/auth.interceptor.d.ts +0 -14
- package/lib/interceptors/body.interceptor.d.ts +0 -11
- package/lib/interceptors/error.interceptor.d.ts +0 -9
- package/lib/interceptors/index.d.ts +0 -5
- package/lib/interceptors/toast.interceptor.d.ts +0 -13
- package/lib/models/aggregation.d.ts +0 -12
- package/lib/models/article-metadata.d.ts +0 -5
- package/lib/models/autocomplete.d.ts +0 -5
- package/lib/models/custom-json.d.ts +0 -69
- package/lib/models/filter-dropdown.d.ts +0 -10
- package/lib/models/index.d.ts +0 -6
- package/lib/models/user-settings.d.ts +0 -38
- package/lib/pipes/highlight-word.pipe.d.ts +0 -22
- package/lib/pipes/index.d.ts +0 -2
- package/lib/pipes/source-icon.pipe.d.ts +0 -51
- package/lib/public-api.d.ts +0 -14
- package/lib/resolvers/index.d.ts +0 -1
- package/lib/resolvers/query-name-resolver.d.ts +0 -9
- package/lib/resources/index.d.ts +0 -1
- package/lib/resources/themes.d.ts +0 -51
- package/lib/services/application.service.d.ts +0 -183
- package/lib/services/autocomplete.service.d.ts +0 -96
- package/lib/services/drawer/backdrop.service.d.ts +0 -9
- package/lib/services/drawer/drawer-stack.service.d.ts +0 -70
- package/lib/services/drawer/drawer.service.d.ts +0 -15
- package/lib/services/index.d.ts +0 -11
- package/lib/services/label.service.d.ts +0 -114
- package/lib/services/navigation.service.d.ts +0 -33
- package/lib/services/saved-searches.service.d.ts +0 -149
- package/lib/services/search.service.d.ts +0 -159
- package/lib/services/selection-history.service.d.ts +0 -50
- package/lib/services/selection.service.d.ts +0 -123
- package/lib/stores/aggregations.store.d.ts +0 -25
- package/lib/stores/app.store.d.ts +0 -110
- package/lib/stores/application.store.d.ts +0 -83
- package/lib/stores/index.d.ts +0 -8
- package/lib/stores/principal.store.d.ts +0 -47
- package/lib/stores/query-params.store.d.ts +0 -128
- package/lib/stores/selection.store.d.ts +0 -52
- package/lib/stores/theme.store.d.ts +0 -66
- package/lib/stores/user-settings.store.d.ts +0 -111
- package/lib/tokens/highlights.d.ts +0 -8
- package/lib/tokens/index.d.ts +0 -1
- package/lib/utils/debounced-signal.d.ts +0 -25
- package/lib/utils/index.d.ts +0 -7
- package/lib/utils/inline-worker.d.ts +0 -11
- package/lib/utils/query.d.ts +0 -26
- package/lib/utils/routes.d.ts +0 -16
- package/lib/utils/tailwind-utils.d.ts +0 -2
- package/lib/utils/theme-body-hook.d.ts +0 -6
- package/lib/utils/theme-registry.d.ts +0 -3
- package/lib/web-services/aggregations.service.d.ts +0 -57
- package/lib/web-services/app.service.d.ts +0 -30
- package/lib/web-services/audit.service.d.ts +0 -72
- package/lib/web-services/index.d.ts +0 -9
- package/lib/web-services/json-method-plugin.service.d.ts +0 -41
- package/lib/web-services/preview.service.d.ts +0 -283
- package/lib/web-services/principal.service.d.ts +0 -28
- package/lib/web-services/query.service.d.ts +0 -29
- package/lib/web-services/text-chunck.service.d.ts +0 -22
- package/public-api.d.ts +0 -1
|
@@ -1,391 +0,0 @@
|
|
|
1
|
-
import { withDevtools } from '@angular-architects/ngrx-toolkit';
|
|
2
|
-
import { patchState, signalStore, signalStoreFeature, withMethods, withState } from '@ngrx/signals';
|
|
3
|
-
import { deleteUserSettings, fetchUserSettings, patchUserSettings } from '@sinequa/atomic';
|
|
4
|
-
export const UserSettingsStore = signalStore({ providedIn: 'root' }, withDevtools('UserSettings'), withBookmarkFeatures(), withRecentSearchFeatures(), withSavedSearchFeatures(), withBasketsFeatures(), withAssistantFeatures(), withUserSettingsFeatures());
|
|
5
|
-
export function withUserSettingsFeatures() {
|
|
6
|
-
return signalStoreFeature(withState({ language: undefined }), withMethods((store) => ({
|
|
7
|
-
/**
|
|
8
|
-
* Initializes the user settings store by fetching the user settings from the backend API
|
|
9
|
-
* and patching the store with the retrieved settings.
|
|
10
|
-
*
|
|
11
|
-
* @returns {Promise<void>} A promise that resolves when the initialization is complete.
|
|
12
|
-
*/
|
|
13
|
-
async initialize() {
|
|
14
|
-
// Fetch the user settings from the backend API and patch the store with the result
|
|
15
|
-
const settings = await fetchUserSettings();
|
|
16
|
-
patchState(store, settings);
|
|
17
|
-
},
|
|
18
|
-
/**
|
|
19
|
-
* Resets the user settings to the initial state.
|
|
20
|
-
*
|
|
21
|
-
* This method performs the following actions:
|
|
22
|
-
* 1. Deletes the current user settings.
|
|
23
|
-
* 2. Patches the state with the initial state.
|
|
24
|
-
*
|
|
25
|
-
* @returns {Promise<void>} A promise that resolves when the reset operation is complete.
|
|
26
|
-
*/
|
|
27
|
-
async reset() {
|
|
28
|
-
// Reset the user settings to the initial state
|
|
29
|
-
await deleteUserSettings();
|
|
30
|
-
patchState(store, {
|
|
31
|
-
bookmarks: [],
|
|
32
|
-
recentSearches: [],
|
|
33
|
-
savedSearches: [],
|
|
34
|
-
baskets: [],
|
|
35
|
-
assistants: {},
|
|
36
|
-
language: undefined,
|
|
37
|
-
});
|
|
38
|
-
},
|
|
39
|
-
})));
|
|
40
|
-
}
|
|
41
|
-
export function withBookmarkFeatures() {
|
|
42
|
-
return signalStoreFeature(withState({ bookmarks: [] }), withMethods((store) => ({
|
|
43
|
-
/**
|
|
44
|
-
* Updates the user's bookmarks in the store and optionally logs audit events.
|
|
45
|
-
*
|
|
46
|
-
* @param bookmarks - An array of bookmarks to update in the user settings.
|
|
47
|
-
* @param auditEvents - Optional audit events to log during the update.
|
|
48
|
-
* @returns A promise that resolves when the update is complete.
|
|
49
|
-
*/
|
|
50
|
-
async updateBookmarks(bookmarks, auditEvents) {
|
|
51
|
-
await patchUserSettings({ bookmarks }, auditEvents);
|
|
52
|
-
patchState(store, (state) => {
|
|
53
|
-
return { ...state, bookmarks: [...bookmarks] };
|
|
54
|
-
});
|
|
55
|
-
},
|
|
56
|
-
/**
|
|
57
|
-
* Adds an article to the bookmarks if it is not already bookmarked.
|
|
58
|
-
*
|
|
59
|
-
* @param article - The article to be bookmarked.
|
|
60
|
-
* @param queryName - Optional name of the query associated with the bookmark.
|
|
61
|
-
* @returns A promise that resolves when the bookmark has been added.
|
|
62
|
-
*/
|
|
63
|
-
async bookmark(article, queryName) {
|
|
64
|
-
if (!article.id)
|
|
65
|
-
return;
|
|
66
|
-
if (this.isBookmarked(article))
|
|
67
|
-
return;
|
|
68
|
-
const bookmark = {
|
|
69
|
-
id: article.id,
|
|
70
|
-
label: article.title,
|
|
71
|
-
source: article.collection[0],
|
|
72
|
-
author: article.authors?.[0],
|
|
73
|
-
queryName,
|
|
74
|
-
};
|
|
75
|
-
await this.updateBookmarks([...store.bookmarks(), bookmark], {
|
|
76
|
-
type: "Basket_AddDoc",
|
|
77
|
-
detail: {
|
|
78
|
-
docid: article.id
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
},
|
|
82
|
-
/**
|
|
83
|
-
* Removes a bookmark by its ID.
|
|
84
|
-
*
|
|
85
|
-
* @param id - The ID of the bookmark to remove.
|
|
86
|
-
* @returns A promise that resolves when the bookmark has been removed and the bookmarks have been updated.
|
|
87
|
-
*
|
|
88
|
-
* @remarks
|
|
89
|
-
* - If the provided ID is falsy, the function will return immediately.
|
|
90
|
-
* - If the bookmark with the given ID is not found, the function will return immediately.
|
|
91
|
-
* - The function updates the bookmarks and logs the removal action with a type of "Basket_RemoveDoc".
|
|
92
|
-
*/
|
|
93
|
-
async unbookmark(id) {
|
|
94
|
-
if (!id)
|
|
95
|
-
return;
|
|
96
|
-
const bookmarks = store.bookmarks();
|
|
97
|
-
const index = bookmarks?.findIndex((bookmark) => bookmark.id === id);
|
|
98
|
-
if (index === -1)
|
|
99
|
-
return;
|
|
100
|
-
bookmarks.splice(index, 1);
|
|
101
|
-
await this.updateBookmarks([...bookmarks], {
|
|
102
|
-
type: "Basket_RemoveDoc",
|
|
103
|
-
detail: {
|
|
104
|
-
docid: id
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
},
|
|
108
|
-
/**
|
|
109
|
-
* Checks if the given article is bookmarked.
|
|
110
|
-
*
|
|
111
|
-
* @param article - An optional partial article object to check.
|
|
112
|
-
* @returns `true` if the article is bookmarked, `false` otherwise.
|
|
113
|
-
*/
|
|
114
|
-
isBookmarked(article) {
|
|
115
|
-
if (!article || !article.id)
|
|
116
|
-
return false;
|
|
117
|
-
const bookmarks = store.bookmarks();
|
|
118
|
-
return !!bookmarks?.find((bookmark) => bookmark.id === article.id);
|
|
119
|
-
},
|
|
120
|
-
/**
|
|
121
|
-
* Toggles the bookmark status of a given article.
|
|
122
|
-
*
|
|
123
|
-
* This method checks if the article is currently bookmarked. If it is,
|
|
124
|
-
* it removes the bookmark. If it is not, it adds a bookmark.
|
|
125
|
-
*
|
|
126
|
-
* @param article - The article to toggle the bookmark status for.
|
|
127
|
-
* @returns A promise that resolves when the bookmark status has been toggled.
|
|
128
|
-
*/
|
|
129
|
-
async toggleBookmark(article) {
|
|
130
|
-
const isBookmarked = await this.isBookmarked(article);
|
|
131
|
-
if (isBookmarked)
|
|
132
|
-
this.unbookmark(article.id);
|
|
133
|
-
else
|
|
134
|
-
this.bookmark(article);
|
|
135
|
-
},
|
|
136
|
-
})));
|
|
137
|
-
}
|
|
138
|
-
export function withRecentSearchFeatures() {
|
|
139
|
-
return signalStoreFeature(withState({ recentSearches: [] }), withMethods((store) => ({
|
|
140
|
-
/**
|
|
141
|
-
* Deletes a recent search entry from the user's recent searches list.
|
|
142
|
-
*
|
|
143
|
-
* @param {number} index - The index of the recent search to delete.
|
|
144
|
-
* @returns {Promise<void>} A promise that resolves when the recent search has been deleted and the state has been updated.
|
|
145
|
-
*/
|
|
146
|
-
async deleteRecentSearch(index) {
|
|
147
|
-
const recentSearches = store.recentSearches();
|
|
148
|
-
if (recentSearches) {
|
|
149
|
-
const recentSearchToDelete = recentSearches.splice(index, 1)[0];
|
|
150
|
-
await patchUserSettings({ recentSearches }, {
|
|
151
|
-
type: "RecentQuery_Delete",
|
|
152
|
-
detail: {
|
|
153
|
-
recentQuery: recentSearchToDelete.queryParams?.text
|
|
154
|
-
}
|
|
155
|
-
});
|
|
156
|
-
patchState(store, (state) => {
|
|
157
|
-
return { ...state, recentSearches: [...recentSearches] };
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
},
|
|
161
|
-
/**
|
|
162
|
-
* Updates the recent searches in the user settings.
|
|
163
|
-
*
|
|
164
|
-
* @param recentSearches - An array of recent searches to be updated in the user settings.
|
|
165
|
-
* @param auditEvents - Optional audit events to be logged during the update.
|
|
166
|
-
* @returns A promise that resolves when the recent searches have been updated.
|
|
167
|
-
*/
|
|
168
|
-
async updateRecentSearches(recentSearches, auditEvents) {
|
|
169
|
-
await patchUserSettings({ recentSearches }, auditEvents);
|
|
170
|
-
patchState(store, (state) => {
|
|
171
|
-
return { ...state, recentSearches: [...recentSearches] };
|
|
172
|
-
});
|
|
173
|
-
},
|
|
174
|
-
/**
|
|
175
|
-
* Adds the current search to the recent searches list.
|
|
176
|
-
*
|
|
177
|
-
* This method checks if a search with the same label already exists in the recent searches.
|
|
178
|
-
* If it does, it updates the existing search with the new query parameters and date.
|
|
179
|
-
* If it does not, it adds a new search to the recent searches list.
|
|
180
|
-
*
|
|
181
|
-
* @param queryParams - The parameters of the current search.
|
|
182
|
-
* @returns A promise that resolves when the recent searches have been updated.
|
|
183
|
-
*/
|
|
184
|
-
async addCurrentSearch(queryParams) {
|
|
185
|
-
// fist search if the search is already in the recent searches with the same label
|
|
186
|
-
const recentSearches = store.recentSearches();
|
|
187
|
-
const existingSearch = recentSearches.find((search) => search.label === queryParams.text);
|
|
188
|
-
const url = window.location.hash.substring(1);
|
|
189
|
-
const path = url.split('?')[0];
|
|
190
|
-
if (existingSearch) {
|
|
191
|
-
await this.updateRecentSearches([
|
|
192
|
-
{
|
|
193
|
-
...existingSearch,
|
|
194
|
-
date: new Date().toISOString(),
|
|
195
|
-
url,
|
|
196
|
-
path,
|
|
197
|
-
queryParams,
|
|
198
|
-
filterCount: queryParams.filters?.length
|
|
199
|
-
},
|
|
200
|
-
...recentSearches.filter((search) => search.label !== queryParams.text),
|
|
201
|
-
], {
|
|
202
|
-
type: "RecentQuery_Update",
|
|
203
|
-
detail: {
|
|
204
|
-
recentQuery: queryParams.text
|
|
205
|
-
}
|
|
206
|
-
});
|
|
207
|
-
}
|
|
208
|
-
else {
|
|
209
|
-
const recentSearch = {
|
|
210
|
-
url,
|
|
211
|
-
path,
|
|
212
|
-
display: queryParams.text,
|
|
213
|
-
label: queryParams.text,
|
|
214
|
-
filterCount: queryParams.filters?.length,
|
|
215
|
-
date: new Date().toISOString(),
|
|
216
|
-
queryParams
|
|
217
|
-
};
|
|
218
|
-
await this.updateRecentSearches([recentSearch, ...store.recentSearches()], {
|
|
219
|
-
type: "RecentQuery_Add",
|
|
220
|
-
detail: {
|
|
221
|
-
recentQuery: queryParams.text
|
|
222
|
-
}
|
|
223
|
-
});
|
|
224
|
-
}
|
|
225
|
-
},
|
|
226
|
-
})));
|
|
227
|
-
}
|
|
228
|
-
export function withSavedSearchFeatures() {
|
|
229
|
-
return signalStoreFeature(withState({ savedSearches: [] }), withMethods((store) => ({
|
|
230
|
-
async deleteSavedSearch(index) {
|
|
231
|
-
const savedSearches = store.savedSearches();
|
|
232
|
-
if (savedSearches) {
|
|
233
|
-
const savedSearchToDelete = savedSearches.splice(index, 1)[0];
|
|
234
|
-
await patchUserSettings({ savedSearches }, {
|
|
235
|
-
type: "SavedQuery_Delete",
|
|
236
|
-
detail: {
|
|
237
|
-
savedQuery: savedSearchToDelete.display
|
|
238
|
-
}
|
|
239
|
-
});
|
|
240
|
-
patchState(store, (state) => {
|
|
241
|
-
return { ...state, savedSearches: [...savedSearches] };
|
|
242
|
-
});
|
|
243
|
-
}
|
|
244
|
-
},
|
|
245
|
-
async updateSavedSearches(savedSearches) {
|
|
246
|
-
await patchUserSettings({ savedSearches }, {
|
|
247
|
-
type: "SavedQuery_Add",
|
|
248
|
-
detail: {
|
|
249
|
-
savedQuery: savedSearches[0].display
|
|
250
|
-
}
|
|
251
|
-
});
|
|
252
|
-
patchState(store, (state) => {
|
|
253
|
-
return { ...state, savedSearches: [...savedSearches] };
|
|
254
|
-
});
|
|
255
|
-
},
|
|
256
|
-
})));
|
|
257
|
-
}
|
|
258
|
-
function basketIndex(name, baskets) {
|
|
259
|
-
if (baskets?.length) {
|
|
260
|
-
for (let i = 0, ic = baskets.length; i < ic; i++) {
|
|
261
|
-
const basket = baskets[i];
|
|
262
|
-
if (basket && basket.name === name) {
|
|
263
|
-
return i;
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
return -1;
|
|
268
|
-
}
|
|
269
|
-
export function withBasketsFeatures() {
|
|
270
|
-
return signalStoreFeature(withState({ baskets: [] }), withMethods((store) => ({
|
|
271
|
-
async deleteBasket(index) {
|
|
272
|
-
const baskets = store.baskets();
|
|
273
|
-
if (baskets) {
|
|
274
|
-
const basketToDelete = baskets.splice(index, 1)[0];
|
|
275
|
-
await patchUserSettings({ baskets }, {
|
|
276
|
-
type: "Basket_Delete",
|
|
277
|
-
detail: {
|
|
278
|
-
savedQuery: basketToDelete.name
|
|
279
|
-
}
|
|
280
|
-
});
|
|
281
|
-
patchState(store, (state) => {
|
|
282
|
-
return { ...state, baskets: [...baskets] };
|
|
283
|
-
});
|
|
284
|
-
}
|
|
285
|
-
},
|
|
286
|
-
async createBasket(basket) {
|
|
287
|
-
const baskets = store.baskets();
|
|
288
|
-
if (basketIndex(basket.name) >= 0)
|
|
289
|
-
return;
|
|
290
|
-
baskets.unshift(basket);
|
|
291
|
-
await patchUserSettings({ baskets }, {
|
|
292
|
-
type: "Basket_Add",
|
|
293
|
-
detail: {
|
|
294
|
-
basket: basket.name
|
|
295
|
-
}
|
|
296
|
-
});
|
|
297
|
-
patchState(store, (state) => {
|
|
298
|
-
return { ...state, baskets: [...baskets] };
|
|
299
|
-
});
|
|
300
|
-
},
|
|
301
|
-
async updateBaskets(baskets) {
|
|
302
|
-
await patchUserSettings({ baskets }, {
|
|
303
|
-
type: "Basket_Update"
|
|
304
|
-
});
|
|
305
|
-
patchState(store, (state) => {
|
|
306
|
-
return { ...state, baskets: [...baskets] };
|
|
307
|
-
});
|
|
308
|
-
},
|
|
309
|
-
async updateBasket(basket, index) {
|
|
310
|
-
const baskets = store.baskets();
|
|
311
|
-
const prevIndex = basketIndex(basket.name, baskets);
|
|
312
|
-
if ((prevIndex !== -1 && index !== prevIndex) // A basket with the same name exists at a different index
|
|
313
|
-
|| index < 0 || index >= baskets.length) // index out of bounds
|
|
314
|
-
return;
|
|
315
|
-
baskets.splice(index, 1, basket);
|
|
316
|
-
await patchUserSettings({ baskets }, {
|
|
317
|
-
type: "Basket_Update",
|
|
318
|
-
detail: {
|
|
319
|
-
basket: basket.name
|
|
320
|
-
}
|
|
321
|
-
});
|
|
322
|
-
patchState(store, (state) => {
|
|
323
|
-
return { ...state, baskets: [...baskets] };
|
|
324
|
-
});
|
|
325
|
-
},
|
|
326
|
-
async addToBasket(name, ids) {
|
|
327
|
-
const baskets = store.baskets();
|
|
328
|
-
const basket = baskets.find(b => b.name === name);
|
|
329
|
-
if (!ids || !basket)
|
|
330
|
-
return;
|
|
331
|
-
if (!basket.ids)
|
|
332
|
-
basket.ids = [];
|
|
333
|
-
ids = Array.isArray(ids) ? ids : [ids];
|
|
334
|
-
for (let id of ids) {
|
|
335
|
-
if (!basket.ids.some(i => i === id)) {
|
|
336
|
-
basket.ids.push(id);
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
await patchUserSettings({ baskets }, {
|
|
340
|
-
type: "Basket_AddDoc",
|
|
341
|
-
detail: {
|
|
342
|
-
basket: basket.name,
|
|
343
|
-
docid: ids[0]
|
|
344
|
-
}
|
|
345
|
-
});
|
|
346
|
-
patchState(store, (state) => {
|
|
347
|
-
return { ...state, baskets: [...baskets] };
|
|
348
|
-
});
|
|
349
|
-
},
|
|
350
|
-
async removeFromBasket(name, ids) {
|
|
351
|
-
const baskets = store.baskets();
|
|
352
|
-
const basket = baskets.find(b => b.name === name);
|
|
353
|
-
if (!ids || !basket)
|
|
354
|
-
return;
|
|
355
|
-
if (!basket.ids)
|
|
356
|
-
basket.ids = [];
|
|
357
|
-
ids = Array.isArray(ids) ? ids : [ids];
|
|
358
|
-
for (let id of ids) {
|
|
359
|
-
if (!basket.ids.some(i => i === id)) {
|
|
360
|
-
basket.ids.push(id);
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
await patchUserSettings({ baskets }, {
|
|
364
|
-
type: "Basket_AddDoc",
|
|
365
|
-
detail: {
|
|
366
|
-
basket: basket.name,
|
|
367
|
-
docid: ids[0]
|
|
368
|
-
}
|
|
369
|
-
});
|
|
370
|
-
patchState(store, (state) => {
|
|
371
|
-
return { ...state, baskets: [...baskets] };
|
|
372
|
-
});
|
|
373
|
-
},
|
|
374
|
-
})));
|
|
375
|
-
}
|
|
376
|
-
export function withAssistantFeatures() {
|
|
377
|
-
return signalStoreFeature(withState({ assistants: {} }), withMethods((store) => ({
|
|
378
|
-
async updateAssistantSettings(assistantSettings) {
|
|
379
|
-
patchState(store, (state) => {
|
|
380
|
-
return { ...state, assistants: assistantSettings };
|
|
381
|
-
});
|
|
382
|
-
},
|
|
383
|
-
async updateLanguage(language, auditEvents) {
|
|
384
|
-
await patchUserSettings({ language }, auditEvents);
|
|
385
|
-
patchState(store, (state) => {
|
|
386
|
-
return { ...state, language };
|
|
387
|
-
});
|
|
388
|
-
},
|
|
389
|
-
})));
|
|
390
|
-
}
|
|
391
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXR0aW5ncy5zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F0b21pYy1hbmd1bGFyL3NyYy9saWIvc3RvcmVzL3VzZXItc2V0dGluZ3Muc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEcsT0FBTyxFQUF3QixrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBZSxNQUFNLGlCQUFpQixDQUFDO0FBTTlILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLFdBQVcsQ0FDMUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEVBQ3RCLFlBQVksQ0FBQyxjQUFjLENBQUMsRUFFNUIsb0JBQW9CLEVBQUUsRUFDdEIsd0JBQXdCLEVBQUUsRUFDMUIsdUJBQXVCLEVBQUUsRUFDekIsbUJBQW1CLEVBQUUsRUFDckIscUJBQXFCLEVBQUUsRUFDdkIsd0JBQXdCLEVBQUUsQ0FDM0IsQ0FBQTtBQUVELE1BQU0sVUFBVSx3QkFBd0I7SUFDdEMsT0FBTyxrQkFBa0IsQ0FDdkIsU0FBUyxDQUFDLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBa0IsQ0FBQyxFQUVsRCxXQUFXLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEI7Ozs7O1dBS0c7UUFDSCxLQUFLLENBQUMsVUFBVTtZQUNkLG1GQUFtRjtZQUNuRixNQUFNLFFBQVEsR0FBRyxNQUFNLGlCQUFpQixFQUFnQixDQUFDO1lBQ3pELFVBQVUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUNEOzs7Ozs7OztXQVFHO1FBQ0gsS0FBSyxDQUFDLEtBQUs7WUFD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QUVELEtBQUssQ0FBQyxjQUFjLENBQUMsUUFBa0MsRUFBRSxXQUF5QjtZQUNoRixNQUFNLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDbkQsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUMxQixPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDaEMsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDO0tBQ0YsQ0FBQyxDQUFDLENBQ0osQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB3aXRoRGV2dG9vbHMgfSBmcm9tICdAYW5ndWxhci1hcmNoaXRlY3RzL25ncngtdG9vbGtpdCc7XG5pbXBvcnQgeyBwYXRjaFN0YXRlLCBzaWduYWxTdG9yZSwgc2lnbmFsU3RvcmVGZWF0dXJlLCB3aXRoTWV0aG9kcywgd2l0aFN0YXRlIH0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5cbmltcG9ydCB7IEFydGljbGUsIEF1ZGl0RXZlbnRzLCBkZWxldGVVc2VyU2V0dGluZ3MsIGZldGNoVXNlclNldHRpbmdzLCBwYXRjaFVzZXJTZXR0aW5ncywgUXVlcnlQYXJhbXMgfSBmcm9tICdAc2luZXF1YS9hdG9taWMnO1xuXG5pbXBvcnQgeyBCYXNrZXQsIFJlY2VudFNlYXJjaCwgVXNlclNldHRpbmdzIH0gZnJvbSAnLi4vbW9kZWxzL3VzZXItc2V0dGluZ3MnO1xuXG5leHBvcnQgdHlwZSBVc2VyU2V0dGluZ3NTdGF0ZSA9IFVzZXJTZXR0aW5ncztcblxuZXhwb3J0IGNvbnN0IFVzZXJTZXR0aW5nc1N0b3JlID0gc2lnbmFsU3RvcmUoXG4gIHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0sXG4gIHdpdGhEZXZ0b29scygnVXNlclNldHRpbmdzJyksXG5cbiAgd2l0aEJvb2ttYXJrRmVhdHVyZXMoKSxcbiAgd2l0aFJlY2VudFNlYXJjaEZlYXR1cmVzKCksXG4gIHdpdGhTYXZlZFNlYXJjaEZlYXR1cmVzKCksXG4gIHdpdGhCYXNrZXRzRmVhdHVyZXMoKSxcbiAgd2l0aEFzc2lzdGFudEZlYXR1cmVzKCksXG4gIHdpdGhVc2VyU2V0dGluZ3NGZWF0dXJlcygpLFxuKVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFVzZXJTZXR0aW5nc0ZlYXR1cmVzKCkge1xuICByZXR1cm4gc2lnbmFsU3RvcmVGZWF0dXJlKFxuICAgIHdpdGhTdGF0ZSh7IGxhbmd1YWdlOiB1bmRlZmluZWQgfSBhcyBVc2VyU2V0dGluZ3MpLFxuXG4gICAgd2l0aE1ldGhvZHMoKHN0b3JlKSA9PiAoe1xuICAgICAgLyoqXG4gICAgICAgKiBJbml0aWFsaXplcyB0aGUgdXNlciBzZXR0aW5ncyBzdG9yZSBieSBmZXRjaGluZyB0aGUgdXNlciBzZXR0aW5ncyBmcm9tIHRoZSBiYWNrZW5kIEFQSVxuICAgICAgICogYW5kIHBhdGNoaW5nIHRoZSBzdG9yZSB3aXRoIHRoZSByZXRyaWV2ZWQgc2V0dGluZ3MuXG4gICAgICAgKlxuICAgICAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGluaXRpYWxpemF0aW9uIGlzIGNvbXBsZXRlLlxuICAgICAgICovXG4gICAgICBhc3luYyBpbml0aWFsaXplKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAvLyBGZXRjaCB0aGUgdXNlciBzZXR0aW5ncyBmcm9tIHRoZSBiYWNrZW5kIEFQSSBhbmQgcGF0Y2ggdGhlIHN0b3JlIHdpdGggdGhlIHJlc3VsdFxuICAgICAgICBjb25zdCBzZXR0aW5ncyA9IGF3YWl0IGZldGNoVXNlclNldHRpbmdzPFVzZXJTZXR0aW5ncz4oKTtcbiAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgc2V0dGluZ3MpO1xuICAgICAgfSxcbiAgICAgIC8qKlxuICAgICAgICogUmVzZXRzIHRoZSB1c2VyIHNldHRpbmdzIHRvIHRoZSBpbml0aWFsIHN0YXRlLlxuICAgICAgICpcbiAgICAgICAqIFRoaXMgbWV0aG9kIHBlcmZvcm1zIHRoZSBmb2xsb3dpbmcgYWN0aW9uczpcbiAgICAgICAqIDEuIERlbGV0ZXMgdGhlIGN1cnJlbnQgdXNlciBzZXR0aW5ncy5cbiAgICAgICAqIDIuIFBhdGNoZXMgdGhlIHN0YXRlIHdpdGggdGhlIGluaXRpYWwgc3RhdGUuXG4gICAgICAgKlxuICAgICAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHJlc2V0IG9wZXJhdGlvbiBpcyBjb21wbGV0ZS5cbiAgICAgICAqL1xuICAgICAgYXN5bmMgcmVzZXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIC8vIFJlc2V0IHRoZSB1c2VyIHNldHRpbmdzIHRvIHRoZSBpbml0aWFsIHN0YXRlXG4gICAgICAgIGF3YWl0IGRlbGV0ZVVzZXJTZXR0aW5ncygpO1xuICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgYm9va21hcmtzOiBbXSxcbiAgICAgICAgICByZWNlbnRTZWFyY2hlczogW10sXG4gICAgICAgICAgc2F2ZWRTZWFyY2hlczogW10sXG4gICAgICAgICAgYmFza2V0czogW10sXG4gICAgICAgICAgYXNzaXN0YW50czoge30sXG4gICAgICAgICAgbGFuZ3VhZ2U6IHVuZGVmaW5lZCxcbiAgICAgICAgfSBhcyBVc2VyU2V0dGluZ3MpO1xuICAgICAgfSxcbiAgICB9KSksXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhCb29rbWFya0ZlYXR1cmVzKCkge1xuICByZXR1cm4gc2lnbmFsU3RvcmVGZWF0dXJlKFxuICAgIHdpdGhTdGF0ZSh7IGJvb2ttYXJrczogW10gYXMgVXNlclNldHRpbmdzWydib29rbWFya3MnXSB9KSxcblxuICAgIHdpdGhNZXRob2RzKChzdG9yZSkgPT4gKHtcbiAgICAgIC8qKlxuICAgICAgICogVXBkYXRlcyB0aGUgdXNlcidzIGJvb2ttYXJrcyBpbiB0aGUgc3RvcmUgYW5kIG9wdGlvbmFsbHkgbG9ncyBhdWRpdCBldmVudHMuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIGJvb2ttYXJrcyAtIEFuIGFycmF5IG9mIGJvb2ttYXJrcyB0byB1cGRhdGUgaW4gdGhlIHVzZXIgc2V0dGluZ3MuXG4gICAgICAgKiBAcGFyYW0gYXVkaXRFdmVudHMgLSBPcHRpb25hbCBhdWRpdCBldmVudHMgdG8gbG9nIGR1cmluZyB0aGUgdXBkYXRlLlxuICAgICAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdXBkYXRlIGlzIGNvbXBsZXRlLlxuICAgICAgICovXG4gICAgICBhc3luYyB1cGRhdGVCb29rbWFya3MoYm9va21hcmtzOiBVc2VyU2V0dGluZ3NbJ2Jvb2ttYXJrcyddLCBhdWRpdEV2ZW50cz86IEF1ZGl0RXZlbnRzKSB7XG4gICAgICAgIGF3YWl0IHBhdGNoVXNlclNldHRpbmdzKHsgYm9va21hcmtzIH0sIGF1ZGl0RXZlbnRzKTtcbiAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgKHN0YXRlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGJvb2ttYXJrczogWy4uLmJvb2ttYXJrc10gfTtcbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgICAvKipcbiAgICAgICAqIEFkZHMgYW4gYXJ0aWNsZSB0byB0aGUgYm9va21hcmtzIGlmIGl0IGlzIG5vdCBhbHJlYWR5IGJvb2ttYXJrZWQuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIGFydGljbGUgLSBUaGUgYXJ0aWNsZSB0byBiZSBib29rbWFya2VkLlxuICAgICAgICogQHBhcmFtIHF1ZXJ5TmFtZSAtIE9wdGlvbmFsIG5hbWUgb2YgdGhlIHF1ZXJ5IGFzc29jaWF0ZWQgd2l0aCB0aGUgYm9va21hcmsuXG4gICAgICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBib29rbWFyayBoYXMgYmVlbiBhZGRlZC5cbiAgICAgICAqL1xuICAgICAgYXN5bmMgYm9va21hcmsoYXJ0aWNsZTogQXJ0aWNsZSwgcXVlcnlOYW1lPzogc3RyaW5nKSB7XG4gICAgICAgIGlmICghYXJ0aWNsZS5pZCkgcmV0dXJuO1xuXG4gICAgICAgIGlmICh0aGlzLmlzQm9va21hcmtlZChhcnRpY2xlKSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGJvb2ttYXJrID0ge1xuICAgICAgICAgIGlkOiBhcnRpY2xlLmlkLFxuICAgICAgICAgIGxhYmVsOiBhcnRpY2xlLnRpdGxlLFxuICAgICAgICAgIHNvdXJjZTogYXJ0aWNsZS5jb2xsZWN0aW9uWzBdLFxuICAgICAgICAgIGF1dGhvcjogYXJ0aWNsZS5hdXRob3JzPy5bMF0sXG4gICAgICAgICAgcXVlcnlOYW1lLFxuICAgICAgICB9O1xuICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZUJvb2ttYXJrcyhbLi4uc3RvcmUuYm9va21hcmtzKCksIGJvb2ttYXJrXSwge1xuICAgICAgICAgIHR5cGU6IFwiQmFza2V0X0FkZERvY1wiLFxuICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgZG9jaWQ6IGFydGljbGUuaWRcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIC8qKlxuICAgICAgICogUmVtb3ZlcyBhIGJvb2ttYXJrIGJ5IGl0cyBJRC5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0gaWQgLSBUaGUgSUQgb2YgdGhlIGJvb2ttYXJrIHRvIHJlbW92ZS5cbiAgICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGJvb2ttYXJrIGhhcyBiZWVuIHJlbW92ZWQgYW5kIHRoZSBib29rbWFya3MgaGF2ZSBiZWVuIHVwZGF0ZWQuXG4gICAgICAgKlxuICAgICAgICogQHJlbWFya3NcbiAgICAgICAqIC0gSWYgdGhlIHByb3ZpZGVkIElEIGlzIGZhbHN5LCB0aGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkuXG4gICAgICAgKiAtIElmIHRoZSBib29rbWFyayB3aXRoIHRoZSBnaXZlbiBJRCBpcyBub3QgZm91bmQsIHRoZSBmdW5jdGlvbiB3aWxsIHJldHVybiBpbW1lZGlhdGVseS5cbiAgICAgICAqIC0gVGhlIGZ1bmN0aW9uIHVwZGF0ZXMgdGhlIGJvb2ttYXJrcyBhbmQgbG9ncyB0aGUgcmVtb3ZhbCBhY3Rpb24gd2l0aCBhIHR5cGUgb2YgXCJCYXNrZXRfUmVtb3ZlRG9jXCIuXG4gICAgICAgKi9cbiAgICAgIGFzeW5jIHVuYm9va21hcmsoaWQ6IHN0cmluZykge1xuICAgICAgICBpZiAoIWlkKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgYm9va21hcmtzID0gc3RvcmUuYm9va21hcmtzKCk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gYm9va21hcmtzPy5maW5kSW5kZXgoKGJvb2ttYXJrKSA9PiBib29rbWFyay5pZCA9PT0gaWQpO1xuXG4gICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHJldHVybjtcblxuICAgICAgICBib29rbWFya3Muc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVCb29rbWFya3MoWy4uLmJvb2ttYXJrc10sIHtcbiAgICAgICAgICB0eXBlOiBcIkJhc2tldF9SZW1vdmVEb2NcIixcbiAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgIGRvY2lkOiBpZFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgLyoqXG4gICAgICAgKiBDaGVja3MgaWYgdGhlIGdpdmVuIGFydGljbGUgaXMgYm9va21hcmtlZC5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0gYXJ0aWNsZSAtIEFuIG9wdGlvbmFsIHBhcnRpYWwgYXJ0aWNsZSBvYmplY3QgdG8gY2hlY2suXG4gICAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFydGljbGUgaXMgYm9va21hcmtlZCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAgICAgKi9cbiAgICAgIGlzQm9va21hcmtlZChhcnRpY2xlOiBQYXJ0aWFsPEFydGljbGU+KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghYXJ0aWNsZSB8fCAhYXJ0aWNsZS5pZCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCBib29rbWFya3MgPSBzdG9yZS5ib29rbWFya3MoKTtcblxuICAgICAgICByZXR1cm4gISFib29rbWFya3M/LmZpbmQoKGJvb2ttYXJrKSA9PiBib29rbWFyay5pZCA9PT0gYXJ0aWNsZS5pZCk7XG4gICAgICB9LFxuICAgICAgLyoqXG4gICAgICAgKiBUb2dnbGVzIHRoZSBib29rbWFyayBzdGF0dXMgb2YgYSBnaXZlbiBhcnRpY2xlLlxuICAgICAgICpcbiAgICAgICAqIFRoaXMgbWV0aG9kIGNoZWNrcyBpZiB0aGUgYXJ0aWNsZSBpcyBjdXJyZW50bHkgYm9va21hcmtlZC4gSWYgaXQgaXMsXG4gICAgICAgKiBpdCByZW1vdmVzIHRoZSBib29rbWFyay4gSWYgaXQgaXMgbm90LCBpdCBhZGRzIGEgYm9va21hcmsuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIGFydGljbGUgLSBUaGUgYXJ0aWNsZSB0byB0b2dnbGUgdGhlIGJvb2ttYXJrIHN0YXR1cyBmb3IuXG4gICAgICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBib29rbWFyayBzdGF0dXMgaGFzIGJlZW4gdG9nZ2xlZC5cbiAgICAgICAqL1xuICAgICAgYXN5bmMgdG9nZ2xlQm9va21hcmsoYXJ0aWNsZTogQXJ0aWNsZSkge1xuICAgICAgICBjb25zdCBpc0Jvb2ttYXJrZWQgPSBhd2FpdCB0aGlzLmlzQm9va21hcmtlZChhcnRpY2xlKTtcblxuICAgICAgICBpZiAoaXNCb29rbWFya2VkKVxuICAgICAgICAgIHRoaXMudW5ib29rbWFyayhhcnRpY2xlLmlkKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRoaXMuYm9va21hcmsoYXJ0aWNsZSk7XG4gICAgICB9LFxuICAgIH0pKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoUmVjZW50U2VhcmNoRmVhdHVyZXMoKSB7XG4gIHJldHVybiBzaWduYWxTdG9yZUZlYXR1cmUoXG4gICAgd2l0aFN0YXRlKHsgcmVjZW50U2VhcmNoZXM6IFtdIGFzIFVzZXJTZXR0aW5nc1sncmVjZW50U2VhcmNoZXMnXSB9KSxcblxuICAgIHdpdGhNZXRob2RzKChzdG9yZSkgPT4gKHtcbiAgICAgIC8qKlxuICAgICAgICogRGVsZXRlcyBhIHJlY2VudCBzZWFyY2ggZW50cnkgZnJvbSB0aGUgdXNlcidzIHJlY2VudCBzZWFyY2hlcyBsaXN0LlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCAtIFRoZSBpbmRleCBvZiB0aGUgcmVjZW50IHNlYXJjaCB0byBkZWxldGUuXG4gICAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcmVjZW50IHNlYXJjaCBoYXMgYmVlbiBkZWxldGVkIGFuZCB0aGUgc3RhdGUgaGFzIGJlZW4gdXBkYXRlZC5cbiAgICAgICAqL1xuICAgICAgYXN5bmMgZGVsZXRlUmVjZW50U2VhcmNoKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgcmVjZW50U2VhcmNoZXMgPSBzdG9yZS5yZWNlbnRTZWFyY2hlcygpO1xuICAgICAgICBpZiAocmVjZW50U2VhcmNoZXMpIHtcbiAgICAgICAgICBjb25zdCByZWNlbnRTZWFyY2hUb0RlbGV0ZSA9IHJlY2VudFNlYXJjaGVzLnNwbGljZShpbmRleCwgMSlbMF07XG4gICAgICAgICAgYXdhaXQgcGF0Y2hVc2VyU2V0dGluZ3MoeyByZWNlbnRTZWFyY2hlcyB9LCB7XG4gICAgICAgICAgICB0eXBlOiBcIlJlY2VudFF1ZXJ5X0RlbGV0ZVwiLFxuICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgIHJlY2VudFF1ZXJ5OiByZWNlbnRTZWFyY2hUb0RlbGV0ZS5xdWVyeVBhcmFtcz8udGV4dFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgcmVjZW50U2VhcmNoZXM6IFsuLi5yZWNlbnRTZWFyY2hlc10gfTtcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLyoqXG4gICAgICAgKiBVcGRhdGVzIHRoZSByZWNlbnQgc2VhcmNoZXMgaW4gdGhlIHVzZXIgc2V0dGluZ3MuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHJlY2VudFNlYXJjaGVzIC0gQW4gYXJyYXkgb2YgcmVjZW50IHNlYXJjaGVzIHRvIGJlIHVwZGF0ZWQgaW4gdGhlIHVzZXIgc2V0dGluZ3MuXG4gICAgICAgKiBAcGFyYW0gYXVkaXRFdmVudHMgLSBPcHRpb25hbCBhdWRpdCBldmVudHMgdG8gYmUgbG9nZ2VkIGR1cmluZyB0aGUgdXBkYXRlLlxuICAgICAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcmVjZW50IHNlYXJjaGVzIGhhdmUgYmVlbiB1cGRhdGVkLlxuICAgICAgICovXG4gICAgICBhc3luYyB1cGRhdGVSZWNlbnRTZWFyY2hlcyhyZWNlbnRTZWFyY2hlczogVXNlclNldHRpbmdzWydyZWNlbnRTZWFyY2hlcyddLCBhdWRpdEV2ZW50cz86IEF1ZGl0RXZlbnRzKSB7XG4gICAgICAgIGF3YWl0IHBhdGNoVXNlclNldHRpbmdzKHsgcmVjZW50U2VhcmNoZXMgfSwgYXVkaXRFdmVudHMpO1xuICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCAoc3RhdGUpID0+IHtcbiAgICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgcmVjZW50U2VhcmNoZXM6IFsuLi5yZWNlbnRTZWFyY2hlc10gfTtcbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgICAvKipcbiAgICAgICAqIEFkZHMgdGhlIGN1cnJlbnQgc2VhcmNoIHRvIHRoZSByZWNlbnQgc2VhcmNoZXMgbGlzdC5cbiAgICAgICAqXG4gICAgICAgKiBUaGlzIG1ldGhvZCBjaGVja3MgaWYgYSBzZWFyY2ggd2l0aCB0aGUgc2FtZSBsYWJlbCBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgcmVjZW50IHNlYXJjaGVzLlxuICAgICAgICogSWYgaXQgZG9lcywgaXQgdXBkYXRlcyB0aGUgZXhpc3Rpbmcgc2VhcmNoIHdpdGggdGhlIG5ldyBxdWVyeSBwYXJhbWV0ZXJzIGFuZCBkYXRlLlxuICAgICAgICogSWYgaXQgZG9lcyBub3QsIGl0IGFkZHMgYSBuZXcgc2VhcmNoIHRvIHRoZSByZWNlbnQgc2VhcmNoZXMgbGlzdC5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0gcXVlcnlQYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBvZiB0aGUgY3VycmVudCBzZWFyY2guXG4gICAgICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSByZWNlbnQgc2VhcmNoZXMgaGF2ZSBiZWVuIHVwZGF0ZWQuXG4gICAgICAgKi9cbiAgICAgIGFzeW5jIGFkZEN1cnJlbnRTZWFyY2gocXVlcnlQYXJhbXM6IFF1ZXJ5UGFyYW1zKSB7XG4gICAgICAgIC8vIGZpc3Qgc2VhcmNoIGlmIHRoZSBzZWFyY2ggaXMgYWxyZWFkeSBpbiB0aGUgcmVjZW50IHNlYXJjaGVzIHdpdGggdGhlIHNhbWUgbGFiZWxcbiAgICAgICAgY29uc3QgcmVjZW50U2VhcmNoZXMgPSBzdG9yZS5yZWNlbnRTZWFyY2hlcygpO1xuICAgICAgICBjb25zdCBleGlzdGluZ1NlYXJjaCA9IHJlY2VudFNlYXJjaGVzLmZpbmQoKHNlYXJjaCkgPT4gc2VhcmNoLmxhYmVsID09PSBxdWVyeVBhcmFtcy50ZXh0KTtcblxuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cubG9jYXRpb24uaGFzaC5zdWJzdHJpbmcoMSk7XG4gICAgICAgIGNvbnN0IHBhdGggPSB1cmwuc3BsaXQoJz8nKVswXTtcbiAgICAgICAgaWYgKGV4aXN0aW5nU2VhcmNoKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVSZWNlbnRTZWFyY2hlcyhbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIC4uLmV4aXN0aW5nU2VhcmNoLFxuICAgICAgICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgcXVlcnlQYXJhbXMsXG4gICAgICAgICAgICAgIGZpbHRlckNvdW50OiBxdWVyeVBhcmFtcy5maWx0ZXJzPy5sZW5ndGhcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAuLi5yZWNlbnRTZWFyY2hlcy5maWx0ZXIoKHNlYXJjaCkgPT4gc2VhcmNoLmxhYmVsICE9PSBxdWVyeVBhcmFtcy50ZXh0KSxcbiAgICAgICAgICBdLCB7XG4gICAgICAgICAgICB0eXBlOiBcIlJlY2VudFF1ZXJ5X1VwZGF0ZVwiLFxuICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgIHJlY2VudFF1ZXJ5OiBxdWVyeVBhcmFtcy50ZXh0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgY29uc3QgcmVjZW50U2VhcmNoID0ge1xuICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgIGRpc3BsYXk6IHF1ZXJ5UGFyYW1zLnRleHQsXG4gICAgICAgICAgICBsYWJlbDogcXVlcnlQYXJhbXMudGV4dCxcbiAgICAgICAgICAgIGZpbHRlckNvdW50OiBxdWVyeVBhcmFtcy5maWx0ZXJzPy5sZW5ndGgsXG4gICAgICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgICBxdWVyeVBhcmFtc1xuICAgICAgICAgIH0gYXMgUmVjZW50U2VhcmNoO1xuXG4gICAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVSZWNlbnRTZWFyY2hlcyhbcmVjZW50U2VhcmNoLCAuLi5zdG9yZS5yZWNlbnRTZWFyY2hlcygpXSwge1xuICAgICAgICAgICAgdHlwZTogXCJSZWNlbnRRdWVyeV9BZGRcIixcbiAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICByZWNlbnRRdWVyeTogcXVlcnlQYXJhbXMudGV4dFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoU2F2ZWRTZWFyY2hGZWF0dXJlcygpIHtcbiAgcmV0dXJuIHNpZ25hbFN0b3JlRmVhdHVyZShcbiAgICB3aXRoU3RhdGUoeyBzYXZlZFNlYXJjaGVzOiBbXSBhcyBVc2VyU2V0dGluZ3NbJ3NhdmVkU2VhcmNoZXMnXSB9KSxcblxuICAgIHdpdGhNZXRob2RzKChzdG9yZSkgPT4gKHtcbiAgICAgIGFzeW5jIGRlbGV0ZVNhdmVkU2VhcmNoKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3Qgc2F2ZWRTZWFyY2hlcyA9IHN0b3JlLnNhdmVkU2VhcmNoZXMoKTtcbiAgICAgICAgaWYgKHNhdmVkU2VhcmNoZXMpIHtcbiAgICAgICAgICBjb25zdCBzYXZlZFNlYXJjaFRvRGVsZXRlID0gc2F2ZWRTZWFyY2hlcy5zcGxpY2UoaW5kZXgsIDEpWzBdO1xuICAgICAgICAgIGF3YWl0IHBhdGNoVXNlclNldHRpbmdzKHsgc2F2ZWRTZWFyY2hlcyB9LCB7XG4gICAgICAgICAgICB0eXBlOiBcIlNhdmVkUXVlcnlfRGVsZXRlXCIsXG4gICAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgICAgc2F2ZWRRdWVyeTogc2F2ZWRTZWFyY2hUb0RlbGV0ZS5kaXNwbGF5XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzYXZlZFNlYXJjaGVzOiBbLi4uc2F2ZWRTZWFyY2hlc10gfTtcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgYXN5bmMgdXBkYXRlU2F2ZWRTZWFyY2hlcyhzYXZlZFNlYXJjaGVzOiBVc2VyU2V0dGluZ3NbJ3NhdmVkU2VhcmNoZXMnXSkge1xuICAgICAgICBhd2FpdCBwYXRjaFVzZXJTZXR0aW5ncyh7IHNhdmVkU2VhcmNoZXMgfSwge1xuICAgICAgICAgIHR5cGU6IFwiU2F2ZWRRdWVyeV9BZGRcIixcbiAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgIHNhdmVkUXVlcnk6IHNhdmVkU2VhcmNoZXNbMF0uZGlzcGxheVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIChzdGF0ZSkgPT4ge1xuICAgICAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzYXZlZFNlYXJjaGVzOiBbLi4uc2F2ZWRTZWFyY2hlc10gfTtcbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgfSkpXG4gIClcbn1cblxuZnVuY3Rpb24gYmFza2V0SW5kZXgobmFtZTogc3RyaW5nLCBiYXNrZXRzPzogQmFza2V0W10pOiBudW1iZXIge1xuICBpZiAoYmFza2V0cz8ubGVuZ3RoKSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGljID0gYmFza2V0cy5sZW5ndGg7IGkgPCBpYzsgaSsrKSB7XG4gICAgICBjb25zdCBiYXNrZXQgPSBiYXNrZXRzW2ldO1xuICAgICAgaWYgKGJhc2tldCAmJiBiYXNrZXQubmFtZSA9PT0gbmFtZSkge1xuICAgICAgICByZXR1cm4gaTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aEJhc2tldHNGZWF0dXJlcygpIHtcbiAgcmV0dXJuIHNpZ25hbFN0b3JlRmVhdHVyZShcbiAgICB3aXRoU3RhdGUoeyBiYXNrZXRzOiBbXSBhcyBVc2VyU2V0dGluZ3NbJ2Jhc2tldHMnXSB9KSxcbiAgICB3aXRoTWV0aG9kcygoc3RvcmUpID0+ICh7XG4gICAgICBhc3luYyBkZWxldGVCYXNrZXQoaW5kZXg6IG51bWJlcikge1xuICAgICAgICBjb25zdCBiYXNrZXRzID0gc3RvcmUuYmFza2V0cygpO1xuICAgICAgICBpZiAoYmFza2V0cykge1xuICAgICAgICAgIGNvbnN0IGJhc2tldFRvRGVsZXRlID0gYmFza2V0cy5zcGxpY2UoaW5kZXgsIDEpWzBdO1xuICAgICAgICAgIGF3YWl0IHBhdGNoVXNlclNldHRpbmdzKHsgYmFza2V0cyB9LCB7XG4gICAgICAgICAgICB0eXBlOiBcIkJhc2tldF9EZWxldGVcIixcbiAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICBzYXZlZFF1ZXJ5OiBiYXNrZXRUb0RlbGV0ZS5uYW1lXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYmFza2V0czogWy4uLmJhc2tldHNdIH07XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGFzeW5jIGNyZWF0ZUJhc2tldChiYXNrZXQ6IEJhc2tldCkge1xuICAgICAgICBjb25zdCBiYXNrZXRzID0gc3RvcmUuYmFza2V0cygpO1xuICAgICAgICBpZiAoYmFza2V0SW5kZXgoYmFza2V0Lm5hbWUpID49IDApIHJldHVybjtcbiAgICAgICAgYmFza2V0cy51bnNoaWZ0KGJhc2tldCk7XG4gICAgICAgIGF3YWl0IHBhdGNoVXNlclNldHRpbmdzKHsgYmFza2V0cyB9LCB7XG4gICAgICAgICAgdHlwZTogXCJCYXNrZXRfQWRkXCIsXG4gICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICBiYXNrZXQ6IGJhc2tldC5uYW1lXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgKHN0YXRlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGJhc2tldHM6IFsuLi5iYXNrZXRzXSB9O1xuICAgICAgICB9KVxuICAgICAgfSxcbiAgICAgIGFzeW5jIHVwZGF0ZUJhc2tldHMoYmFza2V0czogVXNlclNldHRpbmdzWydiYXNrZXRzJ10pIHtcbiAgICAgICAgYXdhaXQgcGF0Y2hVc2VyU2V0dGluZ3MoeyBiYXNrZXRzIH0sIHtcbiAgICAgICAgICB0eXBlOiBcIkJhc2tldF9VcGRhdGVcIlxuICAgICAgICB9KTtcbiAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgKHN0YXRlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGJhc2tldHM6IFsuLi5iYXNrZXRzXSB9O1xuICAgICAgICB9KVxuICAgICAgfSxcbiAgICAgIGFzeW5jIHVwZGF0ZUJhc2tldChiYXNrZXQ6IEJhc2tldCwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICBjb25zdCBiYXNrZXRzID0gc3RvcmUuYmFza2V0cygpO1xuICAgICAgICBjb25zdCBwcmV2SW5kZXggPSBiYXNrZXRJbmRleChiYXNrZXQubmFtZSwgYmFza2V0cyk7XG4gICAgICAgIGlmICgocHJldkluZGV4ICE9PSAtMSAmJiBpbmRleCAhPT0gcHJldkluZGV4KSAgLy8gQSBiYXNrZXQgd2l0aCB0aGUgc2FtZSBuYW1lIGV4aXN0cyBhdCBhIGRpZmZlcmVudCBpbmRleFxuICAgICAgICAgIHx8IGluZGV4IDwgMCB8fCBpbmRleCA+PSBiYXNrZXRzLmxlbmd0aCkgLy8gaW5kZXggb3V0IG9mIGJvdW5kc1xuICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBiYXNrZXRzLnNwbGljZShpbmRleCwgMSwgYmFza2V0KTtcblxuICAgICAgICBhd2FpdCBwYXRjaFVzZXJTZXR0aW5ncyh7IGJhc2tldHMgfSwge1xuICAgICAgICAgIHR5cGU6IFwiQmFza2V0X1VwZGF0ZVwiLFxuICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgYmFza2V0OiBiYXNrZXQubmFtZVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIChzdGF0ZSkgPT4ge1xuICAgICAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBiYXNrZXRzOiBbLi4uYmFza2V0c10gfTtcbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgICBhc3luYyBhZGRUb0Jhc2tldChuYW1lOiBzdHJpbmcsIGlkczogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICAgICAgY29uc3QgYmFza2V0cyA9IHN0b3JlLmJhc2tldHMoKTtcbiAgICAgICAgY29uc3QgYmFza2V0ID0gYmFza2V0cy5maW5kKGIgPT4gYi5uYW1lID09PSBuYW1lKTtcbiAgICAgICAgaWYgKCFpZHMgfHwgIWJhc2tldCkgcmV0dXJuO1xuXG4gICAgICAgIGlmICghYmFza2V0LmlkcykgYmFza2V0LmlkcyA9IFtdO1xuXG4gICAgICAgIGlkcyA9IEFycmF5LmlzQXJyYXkoaWRzKT8gaWRzIDogW2lkc107XG4gICAgICAgIGZvciAobGV0IGlkIG9mIGlkcykge1xuICAgICAgICAgIGlmICghYmFza2V0Lmlkcy5zb21lKGkgPT4gaSA9PT0gaWQpKSB7XG4gICAgICAgICAgICBiYXNrZXQuaWRzLnB1c2goaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHBhdGNoVXNlclNldHRpbmdzKHsgYmFza2V0cyB9LCB7XG4gICAgICAgICAgdHlwZTogXCJCYXNrZXRfQWRkRG9jXCIsXG4gICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgIGJhc2tldDogYmFza2V0Lm5hbWUsXG4gICAgICAgICAgICAgIGRvY2lkOiBpZHNbMF1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCAoc3RhdGUpID0+IHtcbiAgICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYmFza2V0czogWy4uLmJhc2tldHNdIH07XG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgICAgYXN5bmMgcmVtb3ZlRnJvbUJhc2tldChuYW1lOiBzdHJpbmcsIGlkczogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICAgICAgY29uc3QgYmFza2V0cyA9IHN0b3JlLmJhc2tldHMoKTtcbiAgICAgICAgY29uc3QgYmFza2V0ID0gYmFza2V0cy5maW5kKGIgPT4gYi5uYW1lID09PSBuYW1lKTtcbiAgICAgICAgaWYgKCFpZHMgfHwgIWJhc2tldCkgcmV0dXJuO1xuXG4gICAgICAgIGlmICghYmFza2V0LmlkcykgYmFza2V0LmlkcyA9IFtdO1xuXG4gICAgICAgIGlkcyA9IEFycmF5LmlzQXJyYXkoaWRzKT8gaWRzIDogW2lkc107XG4gICAgICAgIGZvciAobGV0IGlkIG9mIGlkcykge1xuICAgICAgICAgIGlmICghYmFza2V0Lmlkcy5zb21lKGkgPT4gaSA9PT0gaWQpKSB7XG4gICAgICAgICAgICBiYXNrZXQuaWRzLnB1c2goaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHBhdGNoVXNlclNldHRpbmdzKHsgYmFza2V0cyB9LCB7XG4gICAgICAgICAgdHlwZTogXCJCYXNrZXRfQWRkRG9jXCIsXG4gICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgIGJhc2tldDogYmFza2V0Lm5hbWUsXG4gICAgICAgICAgICAgIGRvY2lkOiBpZHNbMF1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCAoc3RhdGUpID0+IHtcbiAgICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYmFza2V0czogWy4uLmJhc2tldHNdIH07XG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgIH0pKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoQXNzaXN0YW50RmVhdHVyZXMoKSB7XG4gIHJldHVybiBzaWduYWxTdG9yZUZlYXR1cmUoXG4gICAgd2l0aFN0YXRlKHsgYXNzaXN0YW50czoge30gYXMgVXNlclNldHRpbmdzWydhc3Npc3RhbnRzJ10gfSksXG4gICAgd2l0aE1ldGhvZHMoKHN0b3JlKSA9PiAoe1xuICAgICAgYXN5bmMgdXBkYXRlQXNzaXN0YW50U2V0dGluZ3MoYXNzaXN0YW50U2V0dGluZ3M6IFVzZXJTZXR0aW5nc1snYXNzaXN0YW50cyddKSB7XG4gICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIChzdGF0ZSkgPT4ge1xuICAgICAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBhc3Npc3RhbnRzOiBhc3Npc3RhbnRTZXR0aW5ncyB9O1xuICAgICAgICB9KVxuICAgICAgfSxcblxuICAgICAgYXN5bmMgdXBkYXRlTGFuZ3VhZ2UobGFuZ3VhZ2U6IFVzZXJTZXR0aW5nc1snbGFuZ3VhZ2UnXSwgYXVkaXRFdmVudHM/OiBBdWRpdEV2ZW50cykge1xuICAgICAgICBhd2FpdCBwYXRjaFVzZXJTZXR0aW5ncyh7IGxhbmd1YWdlIH0sIGF1ZGl0RXZlbnRzKTtcbiAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgKHN0YXRlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGxhbmd1YWdlIH07XG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgIH0pKVxuICApXG59Il19
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from "@angular/core";
|
|
2
|
-
// pre-configured highlights's colors
|
|
3
|
-
export const HIGHLIGHTS = new InjectionToken('highlights', {
|
|
4
|
-
factory: () => [
|
|
5
|
-
{
|
|
6
|
-
name: 'company',
|
|
7
|
-
color: 'white',
|
|
8
|
-
bgColor: '#FF7675'
|
|
9
|
-
},
|
|
10
|
-
{
|
|
11
|
-
name: 'geo',
|
|
12
|
-
color: 'white',
|
|
13
|
-
bgColor: '#74B9FF'
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
name: 'person',
|
|
17
|
-
color: 'white',
|
|
18
|
-
bgColor: '#00ABB5'
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
name: 'extractslocations',
|
|
22
|
-
color: 'black',
|
|
23
|
-
bgColor: '#fffacd'
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
name: 'matchlocations',
|
|
27
|
-
color: 'black',
|
|
28
|
-
bgColor: '#ff0'
|
|
29
|
-
}
|
|
30
|
-
],
|
|
31
|
-
});
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlnaGxpZ2h0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F0b21pYy1hbmd1bGFyL3NyYy9saWIvdG9rZW5zL2hpZ2hsaWdodHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVMvQyxxQ0FBcUM7QUFDckMsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLElBQUksY0FBYyxDQUFxQixZQUFZLEVBQUU7SUFDN0UsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2I7WUFDRSxJQUFJLEVBQUUsU0FBUztZQUNmLEtBQUssRUFBRSxPQUFPO1lBQ2QsT0FBTyxFQUFFLFNBQVM7U0FDbkI7UUFDRDtZQUNFLElBQUksRUFBRSxLQUFLO1lBQ1gsS0FBSyxFQUFFLE9BQU87WUFDZCxPQUFPLEVBQUUsU0FBUztTQUNuQjtRQUNEO1lBQ0UsSUFBSSxFQUFFLFFBQVE7WUFDZCxLQUFLLEVBQUUsT0FBTztZQUNkLE9BQU8sRUFBRSxTQUFTO1NBQ25CO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsbUJBQW1CO1lBQ3pCLEtBQUssRUFBRSxPQUFPO1lBQ2QsT0FBTyxFQUFFLFNBQVM7U0FDbkI7UUFDRDtZQUNFLElBQUksRUFBRSxnQkFBZ0I7WUFDdEIsS0FBSyxFQUFFLE9BQU87WUFDZCxPQUFPLEVBQUUsTUFBTTtTQUNoQjtLQUNGO0NBQ0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5leHBvcnQgdHlwZSBQcmV2aWV3SGlnaGxpZ2h0TmFtZSA9ICdjb21wYW55JyB8ICdnZW8nIHwgJ3BlcnNvbicgfCAnZXh0cmFjdHNsb2NhdGlvbnMnIHwgJ21hdGNobG9jYXRpb25zJztcbmV4cG9ydCB0eXBlIFByZXZpZXdIaWdobGlnaHQgPSB7XG4gIG5hbWU6IFByZXZpZXdIaWdobGlnaHROYW1lLFxuICBjb2xvcjogc3RyaW5nLFxuICBiZ0NvbG9yOiBzdHJpbmdcbn07XG5cbi8vIHByZS1jb25maWd1cmVkIGhpZ2hsaWdodHMncyBjb2xvcnNcbmV4cG9ydCBjb25zdCBISUdITElHSFRTID0gbmV3IEluamVjdGlvblRva2VuPFByZXZpZXdIaWdobGlnaHRbXT4oJ2hpZ2hsaWdodHMnLCB7XG4gIGZhY3Rvcnk6ICgpID0+IFtcbiAgICB7XG4gICAgICBuYW1lOiAnY29tcGFueScsXG4gICAgICBjb2xvcjogJ3doaXRlJyxcbiAgICAgIGJnQ29sb3I6ICcjRkY3Njc1J1xuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2dlbycsXG4gICAgICBjb2xvcjogJ3doaXRlJyxcbiAgICAgIGJnQ29sb3I6ICcjNzRCOUZGJ1xuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3BlcnNvbicsXG4gICAgICBjb2xvcjogJ3doaXRlJyxcbiAgICAgIGJnQ29sb3I6ICcjMDBBQkI1J1xuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2V4dHJhY3RzbG9jYXRpb25zJyxcbiAgICAgIGNvbG9yOiAnYmxhY2snLFxuICAgICAgYmdDb2xvcjogJyNmZmZhY2QnXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnbWF0Y2hsb2NhdGlvbnMnLFxuICAgICAgY29sb3I6ICdibGFjaycsXG4gICAgICBiZ0NvbG9yOiAnI2ZmMCdcbiAgICB9XG4gIF0sXG59KTtcbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from "./highlights";
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG9taWMtYW5ndWxhci9zcmMvbGliL3Rva2Vucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2hpZ2hsaWdodHNcIjtcclxuIl19
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { effect, signal } from "@angular/core";
|
|
2
|
-
/**
|
|
3
|
-
* Creates a debounced signal that updates its value after a specified timeout.
|
|
4
|
-
*
|
|
5
|
-
* @template T - The type of the signal value.
|
|
6
|
-
* @param Signal<T> input - The input signal whose value will be debounced.
|
|
7
|
-
* @param number [timeOutMs=0] - The debounce timeout in milliseconds. Defaults to 0.
|
|
8
|
-
* @returns Signal<T> - A new signal that updates its value after the specified debounce timeout.
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* ```ts
|
|
12
|
-
* const input = signal('');
|
|
13
|
-
* const debounced = debouncedSignal(input, 1000);
|
|
14
|
-
*
|
|
15
|
-
* contructor() {
|
|
16
|
-
* effect(() => {
|
|
17
|
-
* console.log(debounced());
|
|
18
|
-
* // will log the input value after 1 second of inactivity.
|
|
19
|
-
* });
|
|
20
|
-
* }
|
|
21
|
-
* ...
|
|
22
|
-
* <input [ngModel]="input()" (ngModelChange)="input.set($event)">
|
|
23
|
-
* ```
|
|
24
|
-
*/
|
|
25
|
-
export function debouncedSignal(input, timeOutMs = 0) {
|
|
26
|
-
const debounceSignal = signal(input());
|
|
27
|
-
let timeout;
|
|
28
|
-
effect((onCleanUp) => {
|
|
29
|
-
const value = input();
|
|
30
|
-
clearTimeout(timeout);
|
|
31
|
-
timeout = setTimeout(() => {
|
|
32
|
-
debounceSignal.set(value);
|
|
33
|
-
}, timeOutMs);
|
|
34
|
-
onCleanUp(() => clearTimeout(timeout));
|
|
35
|
-
});
|
|
36
|
-
return debounceSignal;
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVib3VuY2VkLXNpZ25hbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F0b21pYy1hbmd1bGFyL3NyYy9saWIvdXRpbHMvZGVib3VuY2VkLXNpZ25hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV2RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUksS0FBZ0IsRUFBRSxTQUFTLEdBQUcsQ0FBQztJQUNoRSxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN2QyxJQUFJLE9BQVksQ0FBQztJQUNqQixNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtRQUNuQixNQUFNLEtBQUssR0FBRyxLQUFLLEVBQUUsQ0FBQztRQUN0QixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEIsT0FBTyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDeEIsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDZCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7SUFDeEMsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZWZmZWN0LCBzaWduYWwsIFNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhIGRlYm91bmNlZCBzaWduYWwgdGhhdCB1cGRhdGVzIGl0cyB2YWx1ZSBhZnRlciBhIHNwZWNpZmllZCB0aW1lb3V0LlxyXG4gKlxyXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIHRoZSBzaWduYWwgdmFsdWUuXHJcbiAqIEBwYXJhbSBTaWduYWw8VD4gaW5wdXQgLSBUaGUgaW5wdXQgc2lnbmFsIHdob3NlIHZhbHVlIHdpbGwgYmUgZGVib3VuY2VkLlxyXG4gKiBAcGFyYW0gbnVtYmVyIFt0aW1lT3V0TXM9MF0gLSBUaGUgZGVib3VuY2UgdGltZW91dCBpbiBtaWxsaXNlY29uZHMuIERlZmF1bHRzIHRvIDAuXHJcbiAqIEByZXR1cm5zIFNpZ25hbDxUPiAtIEEgbmV3IHNpZ25hbCB0aGF0IHVwZGF0ZXMgaXRzIHZhbHVlIGFmdGVyIHRoZSBzcGVjaWZpZWQgZGVib3VuY2UgdGltZW91dC5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogYGBgdHNcclxuICogY29uc3QgaW5wdXQgPSBzaWduYWwoJycpO1xyXG4gKiBjb25zdCBkZWJvdW5jZWQgPSBkZWJvdW5jZWRTaWduYWwoaW5wdXQsIDEwMDApO1xyXG4gKlxyXG4gKiBjb250cnVjdG9yKCkge1xyXG4gKiAgZWZmZWN0KCgpID0+IHtcclxuICogICBjb25zb2xlLmxvZyhkZWJvdW5jZWQoKSk7XHJcbiAqICAgLy8gd2lsbCBsb2cgdGhlIGlucHV0IHZhbHVlIGFmdGVyIDEgc2Vjb25kIG9mIGluYWN0aXZpdHkuXHJcbiAqICB9KTtcclxuICogfVxyXG4gKiAuLi5cclxuICogPGlucHV0IFtuZ01vZGVsXT1cImlucHV0KClcIiAobmdNb2RlbENoYW5nZSk9XCJpbnB1dC5zZXQoJGV2ZW50KVwiPlxyXG4gKiBgYGBcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBkZWJvdW5jZWRTaWduYWw8VD4oaW5wdXQ6IFNpZ25hbDxUPiwgdGltZU91dE1zID0gMCk6IFNpZ25hbDxUPiB7XHJcbiAgY29uc3QgZGVib3VuY2VTaWduYWwgPSBzaWduYWwoaW5wdXQoKSk7XHJcbiAgbGV0IHRpbWVvdXQ6IGFueTtcclxuICBlZmZlY3QoKG9uQ2xlYW5VcCkgPT4ge1xyXG4gICAgY29uc3QgdmFsdWUgPSBpbnB1dCgpO1xyXG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBkZWJvdW5jZVNpZ25hbC5zZXQodmFsdWUpO1xyXG4gICAgfSwgdGltZU91dE1zKTtcclxuICAgIG9uQ2xlYW5VcCgoKSA9PiBjbGVhclRpbWVvdXQodGltZW91dCkpXHJcbiAgfSk7XHJcbiAgcmV0dXJuIGRlYm91bmNlU2lnbmFsO1xyXG59Il19
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export * from './inline-worker';
|
|
2
|
-
export * from './query';
|
|
3
|
-
export * from './routes';
|
|
4
|
-
export * from './tailwind-utils';
|
|
5
|
-
export * from './theme-body-hook';
|
|
6
|
-
export * from './theme-registry';
|
|
7
|
-
export * from './debounced-signal';
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG9taWMtYW5ndWxhci9zcmMvbGliL3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaW5saW5lLXdvcmtlcic7XG5leHBvcnQgKiBmcm9tICcuL3F1ZXJ5JztcbmV4cG9ydCAqIGZyb20gJy4vcm91dGVzJztcbmV4cG9ydCAqIGZyb20gJy4vdGFpbHdpbmQtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi90aGVtZS1ib2R5LWhvb2snO1xuZXhwb3J0ICogZnJvbSAnLi90aGVtZS1yZWdpc3RyeSc7XG5leHBvcnQgKiBmcm9tICcuL2RlYm91bmNlZC1zaWduYWwnOyJdfQ==
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { Subject } from 'rxjs';
|
|
2
|
-
export class InlineWorker {
|
|
3
|
-
constructor(func) {
|
|
4
|
-
this.onMessage = new Subject();
|
|
5
|
-
this.onError = new Subject();
|
|
6
|
-
const WORKER_ENABLED = !!(Worker);
|
|
7
|
-
if (WORKER_ENABLED) {
|
|
8
|
-
const functionBody = func.toString().replace(/^[^{]*{\s*/, '').replace(/\s*}[^}]*$/, '');
|
|
9
|
-
try {
|
|
10
|
-
this.worker = new Worker(URL.createObjectURL(new Blob([functionBody], { type: 'text/javascript' })));
|
|
11
|
-
this.worker.onmessage = (data) => {
|
|
12
|
-
this.onMessage.next(data);
|
|
13
|
-
};
|
|
14
|
-
this.worker.onerror = (data) => {
|
|
15
|
-
this.onError.next(data);
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
catch (e) {
|
|
19
|
-
throw new Error('WebWorker is not enabled');
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
throw new Error('WebWorker is not enabled');
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
postMessage(data) {
|
|
27
|
-
this.worker.postMessage(data);
|
|
28
|
-
}
|
|
29
|
-
onmessage() {
|
|
30
|
-
return this.onMessage.asObservable();
|
|
31
|
-
}
|
|
32
|
-
onerror() {
|
|
33
|
-
return this.onError.asObservable();
|
|
34
|
-
}
|
|
35
|
-
terminate() {
|
|
36
|
-
if (this.worker)
|
|
37
|
-
this.worker.terminate();
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLXdvcmtlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F0b21pYy1hbmd1bGFyL3NyYy9saWIvdXRpbHMvaW5saW5lLXdvcmtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNDLE1BQU0sT0FBTyxZQUFZO0lBTXZCLFlBQVksSUFBZ0I7UUFIcEIsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFnQixDQUFDO1FBQ3hDLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBYyxDQUFDO1FBRzFDLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWxDLElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUV6RixJQUFJLENBQUM7Z0JBRUgsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUMxQyxJQUFJLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FDdEQsQ0FBQyxDQUFDO2dCQUVILElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM1QixDQUFDLENBQUM7Z0JBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzFCLENBQUMsQ0FBQztZQUNKLENBQUM7WUFBQyxPQUFNLENBQUMsRUFBQyxDQUFDO2dCQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztZQUM5QyxDQUFDO1FBRUgsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDOUMsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsSUFBYTtRQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksSUFBSSxDQUFDLE1BQU07WUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzNDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNsYXNzIElubGluZVdvcmtlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgd29ya2VyOiBXb3JrZXI7XG5cbiAgcHJpdmF0ZSBvbk1lc3NhZ2UgPSBuZXcgU3ViamVjdDxNZXNzYWdlRXZlbnQ+KCk7XG4gIHByaXZhdGUgb25FcnJvciA9IG5ldyBTdWJqZWN0PEVycm9yRXZlbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IoZnVuYzogKCkgPT4gdm9pZCkge1xuICAgIGNvbnN0IFdPUktFUl9FTkFCTEVEID0gISEoV29ya2VyKTtcblxuICAgIGlmIChXT1JLRVJfRU5BQkxFRCkge1xuICAgICAgY29uc3QgZnVuY3Rpb25Cb2R5ID0gZnVuYy50b1N0cmluZygpLnJlcGxhY2UoL15bXntdKntcXHMqLywgJycpLnJlcGxhY2UoL1xccyp9W159XSokLywgJycpO1xuXG4gICAgICB0cnkge1xuXG4gICAgICAgIHRoaXMud29ya2VyID0gbmV3IFdvcmtlcihVUkwuY3JlYXRlT2JqZWN0VVJMKFxuICAgICAgICAgIG5ldyBCbG9iKFtmdW5jdGlvbkJvZHldLCB7IHR5cGU6ICd0ZXh0L2phdmFzY3JpcHQnIH0pXG4gICAgICAgICkpO1xuXG4gICAgICAgIHRoaXMud29ya2VyLm9ubWVzc2FnZSA9IChkYXRhKSA9PiB7XG4gICAgICAgICAgdGhpcy5vbk1lc3NhZ2UubmV4dChkYXRhKTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLndvcmtlci5vbmVycm9yID0gKGRhdGEpID0+IHtcbiAgICAgICAgICB0aGlzLm9uRXJyb3IubmV4dChkYXRhKTtcbiAgICAgICAgfTtcbiAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignV2ViV29ya2VyIGlzIG5vdCBlbmFibGVkJyk7XG4gICAgICB9XG5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdXZWJXb3JrZXIgaXMgbm90IGVuYWJsZWQnKTtcbiAgICB9XG4gIH1cblxuICBwb3N0TWVzc2FnZShkYXRhOiB1bmtub3duKSB7XG4gICAgdGhpcy53b3JrZXIucG9zdE1lc3NhZ2UoZGF0YSk7XG4gIH1cblxuICBvbm1lc3NhZ2UoKTogT2JzZXJ2YWJsZTxNZXNzYWdlRXZlbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5vbk1lc3NhZ2UuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBvbmVycm9yKCk6IE9ic2VydmFibGU8RXJyb3JFdmVudD4ge1xuICAgIHJldHVybiB0aGlzLm9uRXJyb3IuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICB0ZXJtaW5hdGUoKSB7XG4gICAgaWYgKHRoaXMud29ya2VyKSB0aGlzLndvcmtlci50ZXJtaW5hdGUoKTtcbiAgfVxufSJdfQ==
|