@sinequa/atomic-angular 0.0.140 → 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.
Files changed (207) hide show
  1. package/README.md +145 -0
  2. package/components/no-result/i18n/en.json +5 -0
  3. package/components/no-result/i18n/fr.json +5 -0
  4. package/components/sort-selector/i18n/en.json +3 -0
  5. package/components/sort-selector/i18n/fr.json +3 -0
  6. package/components/source/i18n/en.json +3 -0
  7. package/components/source/i18n/fr.json +3 -0
  8. package/features/alerts/i18n/en.json +33 -0
  9. package/features/alerts/i18n/fr.json +33 -0
  10. package/features/bookmarks/i18n/en.json +11 -0
  11. package/features/bookmarks/i18n/fr.json +11 -0
  12. package/features/collections/i18n/en.json +17 -0
  13. package/features/collections/i18n/fr.json +16 -0
  14. package/features/dialogs/i18n/en.json +15 -0
  15. package/features/dialogs/i18n/fr.json +15 -0
  16. package/features/did-you-mean/i18n/en.json +5 -0
  17. package/features/did-you-mean/i18n/fr.json +5 -0
  18. package/features/drawer/i18n/en.json +22 -0
  19. package/features/drawer/i18n/fr.json +22 -0
  20. package/features/export/i18n/en.json +7 -0
  21. package/features/export/i18n/fr.json +7 -0
  22. package/features/feedback/i18n/en.json +26 -0
  23. package/features/feedback/i18n/fr.json +26 -0
  24. package/features/filters/i18n/en.json +14 -0
  25. package/features/filters/i18n/fr.json +14 -0
  26. package/features/labels/i18n/en.json +8 -0
  27. package/features/labels/i18n/fr.json +8 -0
  28. package/features/recent-searches/i18n/en.json +6 -0
  29. package/features/recent-searches/i18n/fr.json +6 -0
  30. package/features/saved-searches/i18n/en.json +8 -0
  31. package/features/saved-searches/i18n/fr.json +8 -0
  32. package/features/sign-in/i18n/en.json +12 -0
  33. package/features/sign-in/i18n/fr.json +14 -0
  34. package/fesm2022/sinequa-atomic-angular.mjs +7948 -2383
  35. package/fesm2022/sinequa-atomic-angular.mjs.map +1 -1
  36. package/index.d.ts +6036 -3
  37. package/package.json +68 -10
  38. package/assets/tailwind.css +0 -248
  39. package/esm2022/lib/assistant/index.mjs +0 -2
  40. package/esm2022/lib/assistant/signalR.web.service.mjs +0 -81
  41. package/esm2022/lib/components/dropdown.mjs +0 -127
  42. package/esm2022/lib/components/index.mjs +0 -5
  43. package/esm2022/lib/components/menu/index.mjs +0 -3
  44. package/esm2022/lib/components/menu/menu-item.mjs +0 -22
  45. package/esm2022/lib/components/menu/menu.mjs +0 -99
  46. package/esm2022/lib/components/metadata/index.mjs +0 -2
  47. package/esm2022/lib/components/metadata/metadata.component.mjs +0 -65
  48. package/esm2022/lib/components/theme/index.mjs +0 -3
  49. package/esm2022/lib/components/theme/theme-selector.component.mjs +0 -67
  50. package/esm2022/lib/components/theme/theme-toggle.component.mjs +0 -67
  51. package/esm2022/lib/directives/index.mjs +0 -5
  52. package/esm2022/lib/directives/infinite-scroll.directive.mjs +0 -47
  53. package/esm2022/lib/directives/select-article-on-click.directive.mjs +0 -39
  54. package/esm2022/lib/directives/show-bookmark.directive.mjs +0 -55
  55. package/esm2022/lib/directives/theme-provider.directive.mjs +0 -31
  56. package/esm2022/lib/guards/auth.guard.mjs +0 -27
  57. package/esm2022/lib/guards/index.mjs +0 -3
  58. package/esm2022/lib/guards/initialization.guard.mjs +0 -41
  59. package/esm2022/lib/interceptors/audit.interceptor.mjs +0 -23
  60. package/esm2022/lib/interceptors/auth.interceptor.mjs +0 -49
  61. package/esm2022/lib/interceptors/body.interceptor.mjs +0 -24
  62. package/esm2022/lib/interceptors/error.interceptor.mjs +0 -35
  63. package/esm2022/lib/interceptors/index.mjs +0 -7
  64. package/esm2022/lib/interceptors/toast.interceptor.mjs +0 -27
  65. package/esm2022/lib/models/aggregation.mjs +0 -2
  66. package/esm2022/lib/models/article-metadata.mjs +0 -2
  67. package/esm2022/lib/models/autocomplete.mjs +0 -2
  68. package/esm2022/lib/models/custom-json.mjs +0 -2
  69. package/esm2022/lib/models/filter-dropdown.mjs +0 -2
  70. package/esm2022/lib/models/index.mjs +0 -7
  71. package/esm2022/lib/models/user-settings.mjs +0 -2
  72. package/esm2022/lib/pipes/highlight-word.pipe.mjs +0 -33
  73. package/esm2022/lib/pipes/index.mjs +0 -3
  74. package/esm2022/lib/pipes/source-icon.pipe.mjs +0 -43
  75. package/esm2022/lib/providers/eager-provider.mjs +0 -24
  76. package/esm2022/lib/providers/index.mjs +0 -2
  77. package/esm2022/lib/public-api.mjs +0 -19
  78. package/esm2022/lib/resolvers/index.mjs +0 -2
  79. package/esm2022/lib/resolvers/query-name-resolver.mjs +0 -14
  80. package/esm2022/lib/resources/index.mjs +0 -2
  81. package/esm2022/lib/resources/themes.mjs +0 -53
  82. package/esm2022/lib/services/application.service.mjs +0 -245
  83. package/esm2022/lib/services/autocomplete.service.mjs +0 -85
  84. package/esm2022/lib/services/drawer/backdrop.service.mjs +0 -23
  85. package/esm2022/lib/services/drawer/drawer-stack.service.mjs +0 -152
  86. package/esm2022/lib/services/drawer/drawer.service.mjs +0 -38
  87. package/esm2022/lib/services/index.mjs +0 -12
  88. package/esm2022/lib/services/label.service.mjs +0 -161
  89. package/esm2022/lib/services/navigation.service.mjs +0 -59
  90. package/esm2022/lib/services/saved-searches.service.mjs +0 -75
  91. package/esm2022/lib/services/search.service.mjs +0 -89
  92. package/esm2022/lib/services/selection-history.service.mjs +0 -92
  93. package/esm2022/lib/services/selection.service.mjs +0 -87
  94. package/esm2022/lib/stores/aggregations.store.mjs +0 -62
  95. package/esm2022/lib/stores/app.store.mjs +0 -265
  96. package/esm2022/lib/stores/application.store.mjs +0 -93
  97. package/esm2022/lib/stores/index.mjs +0 -9
  98. package/esm2022/lib/stores/principal.store.mjs +0 -47
  99. package/esm2022/lib/stores/query-params.store.mjs +0 -208
  100. package/esm2022/lib/stores/selection.store.mjs +0 -46
  101. package/esm2022/lib/stores/theme.store.mjs +0 -116
  102. package/esm2022/lib/stores/user-settings.store.mjs +0 -272
  103. package/esm2022/lib/tokens/highlights.mjs +0 -32
  104. package/esm2022/lib/tokens/index.mjs +0 -2
  105. package/esm2022/lib/utils/debounced-signal.mjs +0 -38
  106. package/esm2022/lib/utils/index.mjs +0 -8
  107. package/esm2022/lib/utils/inline-worker.mjs +0 -40
  108. package/esm2022/lib/utils/query.mjs +0 -58
  109. package/esm2022/lib/utils/routes.mjs +0 -28
  110. package/esm2022/lib/utils/tailwind-utils.mjs +0 -6
  111. package/esm2022/lib/utils/theme-body-hook.mjs +0 -18
  112. package/esm2022/lib/utils/theme-registry.mjs +0 -6
  113. package/esm2022/lib/web-services/aggregations.service.mjs +0 -104
  114. package/esm2022/lib/web-services/app.service.mjs +0 -48
  115. package/esm2022/lib/web-services/audit.service.mjs +0 -122
  116. package/esm2022/lib/web-services/index.mjs +0 -10
  117. package/esm2022/lib/web-services/json-method-plugin.service.mjs +0 -54
  118. package/esm2022/lib/web-services/preview.service.mjs +0 -327
  119. package/esm2022/lib/web-services/principal.service.mjs +0 -46
  120. package/esm2022/lib/web-services/query.service.mjs +0 -123
  121. package/esm2022/lib/web-services/text-chunck.service.mjs +0 -46
  122. package/esm2022/public-api.mjs +0 -5
  123. package/esm2022/sinequa-atomic-angular.mjs +0 -5
  124. package/lib/assistant/index.d.ts +0 -1
  125. package/lib/assistant/signalR.web.service.d.ts +0 -46
  126. package/lib/components/dropdown.d.ts +0 -50
  127. package/lib/components/index.d.ts +0 -4
  128. package/lib/components/menu/index.d.ts +0 -2
  129. package/lib/components/menu/menu-item.d.ts +0 -8
  130. package/lib/components/menu/menu.d.ts +0 -24
  131. package/lib/components/metadata/index.d.ts +0 -1
  132. package/lib/components/metadata/metadata.component.d.ts +0 -24
  133. package/lib/components/theme/index.d.ts +0 -2
  134. package/lib/components/theme/theme-selector.component.d.ts +0 -70
  135. package/lib/components/theme/theme-toggle.component.d.ts +0 -10
  136. package/lib/directives/index.d.ts +0 -4
  137. package/lib/directives/infinite-scroll.directive.d.ts +0 -30
  138. package/lib/directives/select-article-on-click.directive.d.ts +0 -14
  139. package/lib/directives/show-bookmark.directive.d.ts +0 -52
  140. package/lib/directives/theme-provider.directive.d.ts +0 -20
  141. package/lib/guards/auth.guard.d.ts +0 -7
  142. package/lib/guards/index.d.ts +0 -2
  143. package/lib/guards/initialization.guard.d.ts +0 -20
  144. package/lib/interceptors/audit.interceptor.d.ts +0 -13
  145. package/lib/interceptors/auth.interceptor.d.ts +0 -14
  146. package/lib/interceptors/body.interceptor.d.ts +0 -11
  147. package/lib/interceptors/error.interceptor.d.ts +0 -9
  148. package/lib/interceptors/index.d.ts +0 -5
  149. package/lib/interceptors/toast.interceptor.d.ts +0 -13
  150. package/lib/models/aggregation.d.ts +0 -12
  151. package/lib/models/article-metadata.d.ts +0 -5
  152. package/lib/models/autocomplete.d.ts +0 -5
  153. package/lib/models/custom-json.d.ts +0 -58
  154. package/lib/models/filter-dropdown.d.ts +0 -10
  155. package/lib/models/index.d.ts +0 -6
  156. package/lib/models/user-settings.d.ts +0 -32
  157. package/lib/pipes/highlight-word.pipe.d.ts +0 -22
  158. package/lib/pipes/index.d.ts +0 -2
  159. package/lib/pipes/source-icon.pipe.d.ts +0 -54
  160. package/lib/providers/eager-provider.d.ts +0 -11
  161. package/lib/providers/index.d.ts +0 -1
  162. package/lib/public-api.d.ts +0 -15
  163. package/lib/resolvers/index.d.ts +0 -1
  164. package/lib/resolvers/query-name-resolver.d.ts +0 -9
  165. package/lib/resources/index.d.ts +0 -1
  166. package/lib/resources/themes.d.ts +0 -51
  167. package/lib/services/application.service.d.ts +0 -178
  168. package/lib/services/autocomplete.service.d.ts +0 -91
  169. package/lib/services/drawer/backdrop.service.d.ts +0 -9
  170. package/lib/services/drawer/drawer-stack.service.d.ts +0 -70
  171. package/lib/services/drawer/drawer.service.d.ts +0 -15
  172. package/lib/services/index.d.ts +0 -11
  173. package/lib/services/label.service.d.ts +0 -117
  174. package/lib/services/navigation.service.d.ts +0 -33
  175. package/lib/services/saved-searches.service.d.ts +0 -145
  176. package/lib/services/search.service.d.ts +0 -155
  177. package/lib/services/selection-history.service.d.ts +0 -50
  178. package/lib/services/selection.service.d.ts +0 -127
  179. package/lib/stores/aggregations.store.d.ts +0 -50
  180. package/lib/stores/app.store.d.ts +0 -208
  181. package/lib/stores/application.store.d.ts +0 -106
  182. package/lib/stores/index.d.ts +0 -8
  183. package/lib/stores/principal.store.d.ts +0 -53
  184. package/lib/stores/query-params.store.d.ts +0 -187
  185. package/lib/stores/selection.store.d.ts +0 -62
  186. package/lib/stores/theme.store.d.ts +0 -55
  187. package/lib/stores/user-settings.store.d.ts +0 -161
  188. package/lib/tokens/highlights.d.ts +0 -8
  189. package/lib/tokens/index.d.ts +0 -1
  190. package/lib/utils/debounced-signal.d.ts +0 -25
  191. package/lib/utils/index.d.ts +0 -7
  192. package/lib/utils/inline-worker.d.ts +0 -11
  193. package/lib/utils/query.d.ts +0 -26
  194. package/lib/utils/routes.d.ts +0 -16
  195. package/lib/utils/tailwind-utils.d.ts +0 -2
  196. package/lib/utils/theme-body-hook.d.ts +0 -6
  197. package/lib/utils/theme-registry.d.ts +0 -3
  198. package/lib/web-services/aggregations.service.d.ts +0 -60
  199. package/lib/web-services/app.service.d.ts +0 -30
  200. package/lib/web-services/audit.service.d.ts +0 -75
  201. package/lib/web-services/index.d.ts +0 -9
  202. package/lib/web-services/json-method-plugin.service.d.ts +0 -41
  203. package/lib/web-services/preview.service.d.ts +0 -295
  204. package/lib/web-services/principal.service.d.ts +0 -28
  205. package/lib/web-services/query.service.d.ts +0 -29
  206. package/lib/web-services/text-chunck.service.d.ts +0 -22
  207. package/public-api.d.ts +0 -1
@@ -1,99 +0,0 @@
1
- import { NgClass } from '@angular/common';
2
- import { Component, HostListener, ViewEncapsulation, input, signal, viewChild } from '@angular/core';
3
- import { autoUpdate, computePosition, flip, offset, shift } from '@floating-ui/dom';
4
- import { cn } from '../../utils/tailwind-utils';
5
- import * as i0 from "@angular/core";
6
- export class MenuComponent {
7
- constructor() {
8
- this.cn = cn;
9
- this.default = "z-10 bg-white rounded-md border border-gray-300 shadow absolute text-sm";
10
- this.isOpen = signal(false);
11
- this.position = input('bottom-start');
12
- this.className = input();
13
- this.disabled = input();
14
- this.autoClose = input(false);
15
- this.dropdown = viewChild('dropdown');
16
- this.trigger = viewChild('trigger');
17
- this.width = signal(0);
18
- }
19
- ngAfterViewInit() {
20
- autoUpdate(this.trigger()?.nativeElement, this.dropdown()?.nativeElement, () => {
21
- if (!this.isOpen())
22
- return;
23
- this.calculatePosition();
24
- });
25
- }
26
- toggle(e) {
27
- e.stopPropagation();
28
- if (this.disabled())
29
- return;
30
- this.isOpen.update(() => !this.isOpen());
31
- this.calculatePosition();
32
- }
33
- close() {
34
- this.isOpen.set(false);
35
- }
36
- calculatePosition() {
37
- computePosition(this.trigger()?.nativeElement, this.dropdown()?.nativeElement, {
38
- placement: this.position(),
39
- middleware: [offset(8), flip(), shift()],
40
- }).then(({ x, y }) => {
41
- this.dropdown().nativeElement.style.left = x + 'px';
42
- this.dropdown().nativeElement.style.top = y + 'px';
43
- this.width.set(this.trigger()?.nativeElement.offsetWidth);
44
- });
45
- }
46
- contentClicked(e) {
47
- e.stopPropagation();
48
- if (this.autoClose())
49
- this.close();
50
- }
51
- // Onclick outside the dropdown, close it
52
- clickout(event) {
53
- if (!this.dropdown()?.nativeElement.contains(event.target) &&
54
- this.isOpen &&
55
- !this.trigger()?.nativeElement.contains(event.target)) {
56
- this.isOpen.set(false);
57
- }
58
- }
59
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: MenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
60
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.5", type: MenuComponent, isStandalone: true, selector: "sq-menu, Menu", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, autoClose: { classPropertyName: "autoClose", publicName: "autoClose", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "document:click": "clickout($event)" } }, viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true, isSignal: true }, { propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true, isSignal: true }], ngImport: i0, template: `
61
- <div #trigger class="select-none" (click)="toggle($event)">
62
- <ng-content></ng-content>
63
- </div>
64
- <div #dropdown
65
- [ngClass]= "cn(default, className(), disabled() && 'disabled cursor-default opacity-50 hover:bg-transparent')"
66
- [style.display]="isOpen() ? 'block' : 'none'"
67
- [style.width]="width() + 'px'"
68
- (click)="contentClicked($event)"
69
- >
70
- <ng-content select="[menu-content]"></ng-content>
71
- </div>
72
- `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], encapsulation: i0.ViewEncapsulation.None }); }
73
- }
74
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: MenuComponent, decorators: [{
75
- type: Component,
76
- args: [{
77
- selector: 'sq-menu, Menu',
78
- standalone: true,
79
- imports: [NgClass],
80
- encapsulation: ViewEncapsulation.None,
81
- template: `
82
- <div #trigger class="select-none" (click)="toggle($event)">
83
- <ng-content></ng-content>
84
- </div>
85
- <div #dropdown
86
- [ngClass]= "cn(default, className(), disabled() && 'disabled cursor-default opacity-50 hover:bg-transparent')"
87
- [style.display]="isOpen() ? 'block' : 'none'"
88
- [style.width]="width() + 'px'"
89
- (click)="contentClicked($event)"
90
- >
91
- <ng-content select="[menu-content]"></ng-content>
92
- </div>
93
- `
94
- }]
95
- }], propDecorators: { clickout: [{
96
- type: HostListener,
97
- args: ['document:click', ['$event']]
98
- }] } });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F0b21pYy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9tZW51L21lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBaUIsU0FBUyxFQUFjLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSSxPQUFPLEVBQWEsVUFBVSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9GLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFxQmhELE1BQU0sT0FBTyxhQUFhO0lBbkIxQjtRQW9CRSxPQUFFLEdBQUcsRUFBRSxDQUFDO1FBRVIsWUFBTyxHQUFHLHlFQUF5RSxDQUFBO1FBRW5GLFdBQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsYUFBUSxHQUFHLEtBQUssQ0FBWSxjQUFjLENBQUMsQ0FBQztRQUM1QyxjQUFTLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDNUIsYUFBUSxHQUFHLEtBQUssRUFBVyxDQUFDO1FBQzVCLGNBQVMsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFbEMsYUFBUSxHQUFHLFNBQVMsQ0FBYSxVQUFVLENBQUMsQ0FBQztRQUM3QyxZQUFPLEdBQUcsU0FBUyxDQUFhLFNBQVMsQ0FBQyxDQUFDO1FBRTNDLFVBQUssR0FBRyxNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7S0ErQzNCO0lBN0NDLGVBQWU7UUFDYixVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRTtZQUM3RSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFBRSxPQUFPO1lBQzNCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxDQUFRO1FBQ2IsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3BCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUFFLE9BQU87UUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxpQkFBaUI7UUFDZixlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsYUFBYSxFQUFFO1lBQzdFLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzFCLFVBQVUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQztTQUN6QyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUE0QixFQUFFLEVBQUU7WUFDN0MsSUFBSSxDQUFDLFFBQVEsRUFBRyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDckQsSUFBSSxDQUFDLFFBQVEsRUFBRyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDcEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjLENBQUMsQ0FBUTtRQUNyQixDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDcEIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCx5Q0FBeUM7SUFFekMsUUFBUSxDQUFDLEtBQVk7UUFDbkIsSUFDRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDdEQsSUFBSSxDQUFDLE1BQU07WUFDWCxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFDckQsQ0FBQztZQUNELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDOzhHQTVEVSxhQUFhO2tHQUFiLGFBQWEseTNCQWRkOzs7Ozs7Ozs7Ozs7R0FZVCw0REFkUyxPQUFPOzsyRkFnQk4sYUFBYTtrQkFuQnpCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ2xCLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7OztHQVlUO2lCQUNGOzhCQXFEQyxRQUFRO3NCQURQLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBWaWV3RW5jYXBzdWxhdGlvbiwgaW5wdXQsIHNpZ25hbCwgdmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQbGFjZW1lbnQsIGF1dG9VcGRhdGUsIGNvbXB1dGVQb3NpdGlvbiwgZmxpcCwgb2Zmc2V0LCBzaGlmdCB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gJy4uLy4uL3V0aWxzL3RhaWx3aW5kLXV0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3EtbWVudSwgTWVudScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ0NsYXNzXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2ICN0cmlnZ2VyIGNsYXNzPVwic2VsZWN0LW5vbmVcIiAoY2xpY2spPVwidG9nZ2xlKCRldmVudClcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgI2Ryb3Bkb3duXG4gICAgICBbbmdDbGFzc109IFwiY24oZGVmYXVsdCwgY2xhc3NOYW1lKCksIGRpc2FibGVkKCkgJiYgJ2Rpc2FibGVkIGN1cnNvci1kZWZhdWx0IG9wYWNpdHktNTAgaG92ZXI6YmctdHJhbnNwYXJlbnQnKVwiXG4gICAgICBbc3R5bGUuZGlzcGxheV09XCJpc09wZW4oKSA/ICdibG9jaycgOiAnbm9uZSdcIlxuICAgICAgW3N0eWxlLndpZHRoXT1cIndpZHRoKCkgKyAncHgnXCJcbiAgICAgIChjbGljayk9XCJjb250ZW50Q2xpY2tlZCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWVudS1jb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBNZW51Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIGNuID0gY247XG5cbiAgZGVmYXVsdCA9IFwiei0xMCBiZy13aGl0ZSByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItZ3JheS0zMDAgc2hhZG93IGFic29sdXRlIHRleHQtc21cIlxuXG4gIGlzT3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gIHBvc2l0aW9uID0gaW5wdXQ8UGxhY2VtZW50PignYm90dG9tLXN0YXJ0Jyk7XG4gIGNsYXNzTmFtZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuPigpO1xuICBhdXRvQ2xvc2UgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgZHJvcGRvd24gPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ2Ryb3Bkb3duJyk7XG4gIHRyaWdnZXIgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ3RyaWdnZXInKTtcblxuICB3aWR0aCA9IHNpZ25hbDxudW1iZXI+KDApO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBhdXRvVXBkYXRlKHRoaXMudHJpZ2dlcigpPy5uYXRpdmVFbGVtZW50LCB0aGlzLmRyb3Bkb3duKCk/Lm5hdGl2ZUVsZW1lbnQsICgpID0+IHtcbiAgICAgIGlmICghdGhpcy5pc09wZW4oKSkgcmV0dXJuO1xuICAgICAgdGhpcy5jYWxjdWxhdGVQb3NpdGlvbigpO1xuICAgIH0pO1xuICB9XG5cbiAgdG9nZ2xlKGU6IEV2ZW50KSB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCgpKSByZXR1cm47XG4gICAgdGhpcy5pc09wZW4udXBkYXRlKCgpID0+ICF0aGlzLmlzT3BlbigpKTtcbiAgICB0aGlzLmNhbGN1bGF0ZVBvc2l0aW9uKCk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmlzT3Blbi5zZXQoZmFsc2UpO1xuICB9XG5cbiAgY2FsY3VsYXRlUG9zaXRpb24oKSB7XG4gICAgY29tcHV0ZVBvc2l0aW9uKHRoaXMudHJpZ2dlcigpPy5uYXRpdmVFbGVtZW50LCB0aGlzLmRyb3Bkb3duKCk/Lm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgIHBsYWNlbWVudDogdGhpcy5wb3NpdGlvbigpLFxuICAgICAgbWlkZGxld2FyZTogW29mZnNldCg4KSwgZmxpcCgpLCBzaGlmdCgpXSxcbiAgICB9KS50aGVuKCh7IHgsIHkgfTogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9KSA9PiB7XG4gICAgICB0aGlzLmRyb3Bkb3duKCkhLm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9IHggKyAncHgnO1xuICAgICAgdGhpcy5kcm9wZG93bigpIS5uYXRpdmVFbGVtZW50LnN0eWxlLnRvcCA9IHkgKyAncHgnO1xuICAgICAgdGhpcy53aWR0aC5zZXQodGhpcy50cmlnZ2VyKCk/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpO1xuICAgIH0pO1xuICB9XG5cbiAgY29udGVudENsaWNrZWQoZTogRXZlbnQpIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICh0aGlzLmF1dG9DbG9zZSgpKSB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICAvLyBPbmNsaWNrIG91dHNpZGUgdGhlIGRyb3Bkb3duLCBjbG9zZSBpdFxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gIGNsaWNrb3V0KGV2ZW50OiBFdmVudCkge1xuICAgIGlmIChcbiAgICAgICF0aGlzLmRyb3Bkb3duKCk/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuICAgICAgdGhpcy5pc09wZW4gJiZcbiAgICAgICF0aGlzLnRyaWdnZXIoKT8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXG4gICAgKSB7XG4gICAgICB0aGlzLmlzT3Blbi5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,2 +0,0 @@
1
- export * from './metadata.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG9taWMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvbWV0YWRhdGEvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbWV0YWRhdGEuY29tcG9uZW50JztcbiJdfQ==
@@ -1,65 +0,0 @@
1
- import { NgClass } from "@angular/common";
2
- import { Component, computed, input, output } from "@angular/core";
3
- import { getMetadata } from "@sinequa/atomic";
4
- import { cn } from "../../utils/tailwind-utils";
5
- import * as i0 from "@angular/core";
6
- export class MetadataComponent {
7
- constructor() {
8
- this.cn = cn;
9
- this.default = "text-ellipsis";
10
- this.override = input(false);
11
- this.className = input();
12
- this.article = input.required();
13
- this.metadata = input.required();
14
- this.onMetadataClick = output();
15
- this.items = computed(() => getMetadata(this.article(), this.metadata()));
16
- }
17
- onClick(event, item) {
18
- event.stopPropagation();
19
- this.onMetadataClick.emit(item);
20
- }
21
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: MetadataComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
22
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.5", type: MetadataComponent, isStandalone: true, selector: "sq-metadata, Metadata", inputs: { override: { classPropertyName: "override", publicName: "override", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null }, metadata: { classPropertyName: "metadata", publicName: "metadata", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onMetadataClick: "onMetadataClick" }, host: { properties: { "class.hidden": "items().length === 0" } }, exportAs: ["metadata"], ngImport: i0, template: `
23
-
24
- @if(override()) {
25
- <ng-content></ng-content>
26
- }
27
- @else {
28
- <ng-content select="[before]"></ng-content>
29
- @for(item of items(); track $index) {
30
- @if(item.display) {
31
- <span [ngClass]="cn(default, className())" (click)="onClick($event, {field: this.metadata() ,value: item.display })">{{ item.display }}</span>
32
- }
33
- }
34
- <ng-content select="[after]"></ng-content>
35
- }
36
- `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
37
- }
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: MetadataComponent, decorators: [{
39
- type: Component,
40
- args: [{
41
- selector: 'sq-metadata, Metadata',
42
- exportAs: 'metadata',
43
- standalone: true,
44
- imports: [NgClass],
45
- template: `
46
-
47
- @if(override()) {
48
- <ng-content></ng-content>
49
- }
50
- @else {
51
- <ng-content select="[before]"></ng-content>
52
- @for(item of items(); track $index) {
53
- @if(item.display) {
54
- <span [ngClass]="cn(default, className())" (click)="onClick($event, {field: this.metadata() ,value: item.display })">{{ item.display }}</span>
55
- }
56
- }
57
- <ng-content select="[after]"></ng-content>
58
- }
59
- `,
60
- host: {
61
- '[class.hidden]': 'items().length === 0'
62
- }
63
- }]
64
- }] });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXRvbWljLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL21ldGFkYXRhL21ldGFkYXRhLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUEwQmhELE1BQU0sT0FBTyxpQkFBaUI7SUF4QjlCO1FBeUJFLE9BQUUsR0FBRyxFQUFFLENBQUM7UUFDUixZQUFPLEdBQUcsZUFBZSxDQUFDO1FBRTFCLGFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsY0FBUyxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQzVCLFlBQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFzRCxDQUFDO1FBQy9FLGFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFvRCxDQUFDO1FBRTlFLG9CQUFlLEdBQUcsTUFBTSxFQUFvQyxDQUFDO1FBRTdELFVBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBTXRFO0lBSkMsT0FBTyxDQUFDLEtBQWlCLEVBQUUsSUFBc0M7UUFDL0QsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7OEdBaEJVLGlCQUFpQjtrR0FBakIsaUJBQWlCLDB1QkFuQmxCOzs7Ozs7Ozs7Ozs7OztHQWNULDREQWZTLE9BQU87OzJGQW9CTixpQkFBaUI7a0JBeEI3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFFBQVEsRUFBRSxVQUFVO29CQUNwQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO29CQUNsQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7O0dBY1Q7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLGdCQUFnQixFQUFFLHNCQUFzQjtxQkFDekM7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBpbnB1dCwgb3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQXJ0aWNsZSwgS2V5T2YsIGdldE1ldGFkYXRhIH0gZnJvbSBcIkBzaW5lcXVhL2F0b21pY1wiO1xyXG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi8uLi91dGlscy90YWlsd2luZC11dGlsc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzcS1tZXRhZGF0YSwgTWV0YWRhdGEnLFxyXG4gIGV4cG9ydEFzOiAnbWV0YWRhdGEnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW05nQ2xhc3NdLFxyXG4gIHRlbXBsYXRlOiBgXHJcblxyXG4gIEBpZihvdmVycmlkZSgpKSB7XHJcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgfVxyXG4gIEBlbHNlIHtcclxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltiZWZvcmVdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgQGZvcihpdGVtIG9mIGl0ZW1zKCk7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICBAaWYoaXRlbS5kaXNwbGF5KSB7XHJcbiAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwiY24oZGVmYXVsdCwgY2xhc3NOYW1lKCkpXCIgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50LCB7ZmllbGQ6IHRoaXMubWV0YWRhdGEoKSAsdmFsdWU6IGl0ZW0uZGlzcGxheSB9KVwiPnt7IGl0ZW0uZGlzcGxheSB9fTwvc3Bhbj5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2FmdGVyXVwiPjwvbmctY29udGVudD5cclxuICB9XHJcbiAgYCxcclxuICBob3N0OiB7XHJcbiAgICAnW2NsYXNzLmhpZGRlbl0nOiAnaXRlbXMoKS5sZW5ndGggPT09IDAnXHJcbiAgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWV0YWRhdGFDb21wb25lbnQge1xyXG4gIGNuID0gY247XHJcbiAgZGVmYXVsdCA9IFwidGV4dC1lbGxpcHNpc1wiO1xyXG5cclxuICBvdmVycmlkZSA9IGlucHV0KGZhbHNlKTtcclxuICBjbGFzc05hbWUgPSBpbnB1dDxzdHJpbmc+KCk7XHJcbiAgYXJ0aWNsZSA9IGlucHV0LnJlcXVpcmVkPFBhcnRpYWw8QXJ0aWNsZT4gfCAoc3RyaW5nICYgUmVjb3JkPG5ldmVyLCBuZXZlcj4pPigpO1xyXG4gIG1ldGFkYXRhID0gaW5wdXQucmVxdWlyZWQ8S2V5T2Y8QXJ0aWNsZT4gfCAoc3RyaW5nICYgUmVjb3JkPG5ldmVyLCBuZXZlcj4pPigpO1xyXG5cclxuICBvbk1ldGFkYXRhQ2xpY2sgPSBvdXRwdXQ8eyBmaWVsZDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH0+KCk7XHJcblxyXG4gIGl0ZW1zID0gY29tcHV0ZWQoKCkgPT4gZ2V0TWV0YWRhdGEodGhpcy5hcnRpY2xlKCksIHRoaXMubWV0YWRhdGEoKSkpO1xyXG5cclxuICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtOiB7IGZpZWxkOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfSkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLm9uTWV0YWRhdGFDbGljay5lbWl0KGl0ZW0pO1xyXG4gIH1cclxufSJdfQ==
@@ -1,3 +0,0 @@
1
- export * from './theme-selector.component';
2
- export * from './theme-toggle.component';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG9taWMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvdGhlbWUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90aGVtZS1zZWxlY3Rvci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90aGVtZS10b2dnbGUuY29tcG9uZW50JztcblxuIl19
@@ -1,67 +0,0 @@
1
- import { Component, computed, effect, inject, input, model } from '@angular/core';
2
- import { NgStyle } from '@angular/common';
3
- import { THEMES } from '../../resources';
4
- import { ThemeStore } from '../../stores';
5
- import { MenuComponent } from '../menu';
6
- import * as i0 from "@angular/core";
7
- export class ThemeSelectorComponent {
8
- constructor() {
9
- this.scope = input.required();
10
- this.showPrivate = input(false);
11
- this.themes = computed(() => THEMES.filter(theme => this.showPrivate() ? true : !theme.private));
12
- this.selectedTheme = model();
13
- this.themeStore = inject(ThemeStore);
14
- effect(() => {
15
- const currentTheme = this.themeStore.scopes()[this.scope()];
16
- if (!currentTheme)
17
- return;
18
- this.selectedTheme.set(this.themeStore.scopes()[this.scope()].themeName);
19
- }, { allowSignalWrites: true });
20
- }
21
- selectTheme(theme) {
22
- if (typeof theme !== 'string')
23
- theme = theme.name;
24
- this.themeStore.setCurrentTheme(this.scope(), theme);
25
- }
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ThemeSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.5", type: ThemeSelectorComponent, isStandalone: true, selector: "theme-selector", inputs: { scope: { classPropertyName: "scope", publicName: "scope", isSignal: true, isRequired: true, transformFunction: null }, showPrivate: { classPropertyName: "showPrivate", publicName: "showPrivate", isSignal: true, isRequired: false, transformFunction: null }, selectedTheme: { classPropertyName: "selectedTheme", publicName: "selectedTheme", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedTheme: "selectedThemeChange" }, ngImport: i0, template: `
28
- <sq-menu>
29
- <ng-content></ng-content>
30
-
31
- <div menu-content>
32
- <ul class="p-2 flex flex-col gap-1 divide-y">
33
- @for (theme of themes(); track $index) {
34
- <li class="p-2" (click)="selectTheme(theme)">
35
- <div class="flex gap-2 items-baseline">
36
- <span class="size-3 rounded-full" [ngStyle]="{ 'background-color': 'hsl(' + theme.colors.primary + ')' }" aria-hidden="true"></span>
37
- <span>{{ theme.name }}</span>
38
- </div>
39
- </li>
40
- }
41
- </ul>
42
- </div>
43
- </sq-menu>
44
- `, isInline: true, styles: [""], dependencies: [{ kind: "component", type: MenuComponent, selector: "sq-menu, Menu", inputs: ["position", "className", "disabled", "autoClose"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
45
- }
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ThemeSelectorComponent, decorators: [{
47
- type: Component,
48
- args: [{ selector: 'theme-selector', standalone: true, imports: [MenuComponent, NgStyle], template: `
49
- <sq-menu>
50
- <ng-content></ng-content>
51
-
52
- <div menu-content>
53
- <ul class="p-2 flex flex-col gap-1 divide-y">
54
- @for (theme of themes(); track $index) {
55
- <li class="p-2" (click)="selectTheme(theme)">
56
- <div class="flex gap-2 items-baseline">
57
- <span class="size-3 rounded-full" [ngStyle]="{ 'background-color': 'hsl(' + theme.colors.primary + ')' }" aria-hidden="true"></span>
58
- <span>{{ theme.name }}</span>
59
- </div>
60
- </li>
61
- }
62
- </ul>
63
- </div>
64
- </sq-menu>
65
- ` }]
66
- }], ctorParameters: () => [] });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXRvbWljLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3RoZW1lL3RoZW1lLXNlbGVjdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBUyxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBMEJ4QyxNQUFNLE9BQU8sc0JBQXNCO0lBUWpDO1FBUFMsVUFBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUNqQyxnQkFBVyxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUVwQyxXQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUM1RixrQkFBYSxHQUFHLEtBQUssRUFBc0IsQ0FBQztRQUM1QyxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBR3ZDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBRTVELElBQUksQ0FBQyxZQUFZO2dCQUFFLE9BQU87WUFFMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzRSxDQUFDLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFJTSxXQUFXLENBQUMsS0FBcUI7UUFDdEMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1lBQzNCLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBRXJCLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2RCxDQUFDOzhHQXpCVSxzQkFBc0I7a0dBQXRCLHNCQUFzQiwwaEJBcEJ2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQlQsMEVBbEJTLGFBQWEsc0hBQUUsT0FBTzs7MkZBcUJyQixzQkFBc0I7a0JBeEJsQyxTQUFTOytCQUNFLGdCQUFnQixjQUNkLElBQUksV0FDUCxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsWUFDdkI7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBtb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRoZW1lLCBUSEVNRVMgfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMnO1xuaW1wb3J0IHsgVGhlbWVTdG9yZSB9IGZyb20gJy4uLy4uL3N0b3Jlcyc7XG5pbXBvcnQgeyBNZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vbWVudSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RoZW1lLXNlbGVjdG9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW01lbnVDb21wb25lbnQsIE5nU3R5bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxzcS1tZW51PlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgXG4gICAgICA8ZGl2IG1lbnUtY29udGVudD5cbiAgICAgICAgPHVsIGNsYXNzPVwicC0yIGZsZXggZmxleC1jb2wgZ2FwLTEgZGl2aWRlLXlcIj5cbiAgICAgICAgICBAZm9yICh0aGVtZSBvZiB0aGVtZXMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJwLTJcIiAoY2xpY2spPVwic2VsZWN0VGhlbWUodGhlbWUpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yIGl0ZW1zLWJhc2VsaW5lXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzaXplLTMgcm91bmRlZC1mdWxsXCIgW25nU3R5bGVdPVwieyAnYmFja2dyb3VuZC1jb2xvcic6ICdoc2woJyArIHRoZW1lLmNvbG9ycy5wcmltYXJ5ICsgJyknIH1cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdGhlbWUubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIH1cbiAgICAgICAgPC91bD5cbiAgICAgIDwvZGl2PlxuICAgIDwvc3EtbWVudT5cbiAgYCxcbiAgc3R5bGVzOiBgYFxufSlcbmV4cG9ydCBjbGFzcyBUaGVtZVNlbGVjdG9yQ29tcG9uZW50IHtcbiAgcmVhZG9ubHkgc2NvcGUgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IHNob3dQcml2YXRlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHJlYWRvbmx5IHRoZW1lcyA9IGNvbXB1dGVkKCgpID0+IFRIRU1FUy5maWx0ZXIodGhlbWUgPT4gdGhpcy5zaG93UHJpdmF0ZSgpID8gdHJ1ZSA6ICF0aGVtZS5wcml2YXRlKSk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkVGhlbWUgPSBtb2RlbDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IHRoZW1lU3RvcmUgPSBpbmplY3QoVGhlbWVTdG9yZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRUaGVtZSA9IHRoaXMudGhlbWVTdG9yZS5zY29wZXMoKVt0aGlzLnNjb3BlKCldO1xuXG4gICAgICBpZiAoIWN1cnJlbnRUaGVtZSkgcmV0dXJuO1xuXG4gICAgICB0aGlzLnNlbGVjdGVkVGhlbWUuc2V0KHRoaXMudGhlbWVTdG9yZS5zY29wZXMoKVt0aGlzLnNjb3BlKCldLnRoZW1lTmFtZSk7XG4gICAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RUaGVtZSh0aGVtZTogc3RyaW5nKTogdm9pZDtcbiAgcHVibGljIHNlbGVjdFRoZW1lKHRoZW1lOiBUaGVtZSk6IHZvaWQ7XG4gIHB1YmxpYyBzZWxlY3RUaGVtZSh0aGVtZTogVGhlbWUgfCBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIHRoZW1lICE9PSAnc3RyaW5nJylcbiAgICAgIHRoZW1lID0gdGhlbWUubmFtZTtcblxuICAgIHRoaXMudGhlbWVTdG9yZS5zZXRDdXJyZW50VGhlbWUodGhpcy5zY29wZSgpLCB0aGVtZSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,67 +0,0 @@
1
- import { Component, effect, inject, input, model } from '@angular/core';
2
- import { FormsModule } from '@angular/forms';
3
- import { ThemeStore } from '../../stores';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/forms";
6
- export class ThemeToggleComponent {
7
- constructor() {
8
- this.scope = input.required();
9
- this.darkMode = model();
10
- this.themeStore = inject(ThemeStore);
11
- effect(() => {
12
- const currentTheme = this.themeStore.scopes()[this.scope()];
13
- if (!currentTheme)
14
- return;
15
- this.darkMode.set(currentTheme.darkMode ?? false);
16
- }, { allowSignalWrites: true });
17
- }
18
- toggleDarkMode(status) {
19
- const scope = this.themeStore.scopes()?.[this.scope()];
20
- if (!scope || !scope.cssVars)
21
- return;
22
- this.themeStore.setDarkMode(this.scope(), status);
23
- }
24
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ThemeToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
25
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.5", type: ThemeToggleComponent, isStandalone: true, selector: "theme-toggle", inputs: { scope: { classPropertyName: "scope", publicName: "scope", isSignal: true, isRequired: true, transformFunction: null }, darkMode: { classPropertyName: "darkMode", publicName: "darkMode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { darkMode: "darkModeChange" }, ngImport: i0, template: `
26
- <label class="flex gap-2 items-center select-none cursor-pointer">
27
- @if (darkMode()) {
28
- <i class="fa-fw far fa-toggle-large-on text-primary"></i>
29
- }
30
- @else {
31
- <i class="fa-fw far fa-toggle-large-on fa-flip-horizontal"></i>
32
- }
33
-
34
- <span>Dark mode</span>
35
-
36
- <input
37
- type="checkbox"
38
- class="hidden"
39
- [(ngModel)]="darkMode"
40
- (ngModelChange)="toggleDarkMode($event)"
41
- />
42
- </label>
43
- `, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
44
- }
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ThemeToggleComponent, decorators: [{
46
- type: Component,
47
- args: [{ selector: 'theme-toggle', standalone: true, imports: [FormsModule], template: `
48
- <label class="flex gap-2 items-center select-none cursor-pointer">
49
- @if (darkMode()) {
50
- <i class="fa-fw far fa-toggle-large-on text-primary"></i>
51
- }
52
- @else {
53
- <i class="fa-fw far fa-toggle-large-on fa-flip-horizontal"></i>
54
- }
55
-
56
- <span>Dark mode</span>
57
-
58
- <input
59
- type="checkbox"
60
- class="hidden"
61
- [(ngModel)]="darkMode"
62
- (ngModelChange)="toggleDarkMode($event)"
63
- />
64
- </label>
65
- ` }]
66
- }], ctorParameters: () => [] });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtdG9nZ2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F0b21pYy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy90aGVtZS90aGVtZS10b2dnbGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7QUEyQjFDLE1BQU0sT0FBTyxvQkFBb0I7SUFPL0I7UUFOUyxVQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBRWpDLGFBQVEsR0FBRyxLQUFLLEVBQVcsQ0FBQztRQUVwQixlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRy9DLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBRTVELElBQUksQ0FBQyxZQUFZO2dCQUFFLE9BQU87WUFFMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsQ0FBQztRQUNwRCxDQUFDLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxjQUFjLENBQUMsTUFBZTtRQUNuQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFdkQsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUVyQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEQsQ0FBQzs4R0F2QlUsb0JBQW9CO2tHQUFwQixvQkFBb0IscVhBckJyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JULHlFQW5CUyxXQUFXOzsyRkFzQlYsb0JBQW9CO2tCQXpCaEMsU0FBUzsrQkFDRSxjQUFjLGNBQ1osSUFBSSxXQUNQLENBQUMsV0FBVyxDQUFDLFlBQ1o7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBtb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFRoZW1lU3RvcmUgfSBmcm9tICcuLi8uLi9zdG9yZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0aGVtZS10b2dnbGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbRm9ybXNNb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxsYWJlbCBjbGFzcz1cImZsZXggZ2FwLTIgaXRlbXMtY2VudGVyIHNlbGVjdC1ub25lIGN1cnNvci1wb2ludGVyXCI+XG4gICAgICBAaWYgKGRhcmtNb2RlKCkpIHtcbiAgICAgICAgPGkgY2xhc3M9XCJmYS1mdyBmYXIgZmEtdG9nZ2xlLWxhcmdlLW9uIHRleHQtcHJpbWFyeVwiPjwvaT5cbiAgICAgIH0gXG4gICAgICBAZWxzZSB7XG4gICAgICAgIDxpIGNsYXNzPVwiZmEtZncgZmFyIGZhLXRvZ2dsZS1sYXJnZS1vbiBmYS1mbGlwLWhvcml6b250YWxcIj48L2k+XG4gICAgICB9XG4gICAgXG4gICAgICA8c3Bhbj5EYXJrIG1vZGU8L3NwYW4+XG5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICBjbGFzcz1cImhpZGRlblwiXG4gICAgICAgIFsobmdNb2RlbCldPVwiZGFya01vZGVcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0b2dnbGVEYXJrTW9kZSgkZXZlbnQpXCJcbiAgICAgIC8+XG4gICAgPC9sYWJlbD5cbiAgYCxcbiAgc3R5bGVzOiBgYFxufSlcbmV4cG9ydCBjbGFzcyBUaGVtZVRvZ2dsZUNvbXBvbmVudCB7XG4gIHJlYWRvbmx5IHNjb3BlID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuXG4gIHJlYWRvbmx5IGRhcmtNb2RlID0gbW9kZWw8Ym9vbGVhbj4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHRoZW1lU3RvcmUgPSBpbmplY3QoVGhlbWVTdG9yZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRUaGVtZSA9IHRoaXMudGhlbWVTdG9yZS5zY29wZXMoKVt0aGlzLnNjb3BlKCldO1xuXG4gICAgICBpZiAoIWN1cnJlbnRUaGVtZSkgcmV0dXJuO1xuXG4gICAgICB0aGlzLmRhcmtNb2RlLnNldChjdXJyZW50VGhlbWUuZGFya01vZGUgPz8gZmFsc2UpO1xuICAgIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlRGFya01vZGUoc3RhdHVzOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3Qgc2NvcGUgPSB0aGlzLnRoZW1lU3RvcmUuc2NvcGVzKCk/Llt0aGlzLnNjb3BlKCldO1xuXG4gICAgaWYgKCFzY29wZSB8fCAhc2NvcGUuY3NzVmFycykgcmV0dXJuO1xuXG4gICAgdGhpcy50aGVtZVN0b3JlLnNldERhcmtNb2RlKHRoaXMuc2NvcGUoKSwgc3RhdHVzKTtcbiAgfVxufVxuIl19
@@ -1,5 +0,0 @@
1
- export * from './infinite-scroll.directive';
2
- export * from './select-article-on-click.directive';
3
- export * from './show-bookmark.directive';
4
- export * from './theme-provider.directive';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG9taWMtYW5ndWxhci9zcmMvbGliL2RpcmVjdGl2ZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaW5maW5pdGUtc2Nyb2xsLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdC1hcnRpY2xlLW9uLWNsaWNrLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3Nob3ctYm9va21hcmsuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vdGhlbWUtcHJvdmlkZXIuZGlyZWN0aXZlJztcblxuIl19
@@ -1,47 +0,0 @@
1
- import { afterNextRender, Directive, input, output } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * Represents a directive that enables infinite scrolling behavior.
5
- * This directive listens for the intersection of the element with the viewport
6
- * and emits a `loadMore` event when the element becomes visible.
7
- *
8
- * @remarks
9
- * This directive requires the `IntersectionObserver` API to be available in the browser.
10
- *
11
- * @example
12
- * ```html
13
- * <div infinityScroll (onScroll)="loadMore()">
14
- * <!-- Content to be scrolled -->
15
- * </div>
16
- * ```
17
- *
18
- */
19
- export class InfinityScrollDirective {
20
- constructor(el) {
21
- this.el = el;
22
- this.options = input({ root: null });
23
- this.onScroll = output();
24
- this.observer = new IntersectionObserver(([entry]) => {
25
- if (entry.isIntersecting) {
26
- this.onScroll.emit();
27
- }
28
- }, this.options());
29
- afterNextRender(() => {
30
- this.observer.observe(this.el.nativeElement);
31
- });
32
- }
33
- ngOnDestroy() {
34
- this.observer.disconnect();
35
- }
36
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: InfinityScrollDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
37
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.5", type: InfinityScrollDirective, isStandalone: true, selector: "[infinity-scroll]", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onScroll: "onScroll" }, ngImport: i0 }); }
38
- }
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: InfinityScrollDirective, decorators: [{
40
- type: Directive,
41
- args: [{
42
- // eslint-disable-next-line @angular-eslint/directive-selector
43
- selector: '[infinity-scroll]',
44
- standalone: true
45
- }]
46
- }], ctorParameters: () => [{ type: i0.ElementRef }] });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdGUtc2Nyb2xsLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F0b21pYy1hbmd1bGFyL3NyYy9saWIvZGlyZWN0aXZlcy9pbmZpbml0ZS1zY3JvbGwuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRWpHOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQU1ILE1BQU0sT0FBTyx1QkFBdUI7SUFVbEMsWUFBb0IsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7UUFUbEMsWUFBTyxHQUFHLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLGFBQVEsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUVaLGFBQVEsR0FBRSxJQUFJLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQ3JELElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3ZCLENBQUM7UUFDSCxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFHakIsZUFBZSxDQUFDLEdBQUcsRUFBRTtZQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzdCLENBQUM7OEdBbEJVLHVCQUF1QjtrR0FBdkIsdUJBQXVCOzsyRkFBdkIsdUJBQXVCO2tCQUxuQyxTQUFTO21CQUFDO29CQUNULDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWZ0ZXJOZXh0UmVuZGVyLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGlucHV0LCBPbkRlc3Ryb3ksIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLyoqXHJcbiAqIFJlcHJlc2VudHMgYSBkaXJlY3RpdmUgdGhhdCBlbmFibGVzIGluZmluaXRlIHNjcm9sbGluZyBiZWhhdmlvci5cclxuICogVGhpcyBkaXJlY3RpdmUgbGlzdGVucyBmb3IgdGhlIGludGVyc2VjdGlvbiBvZiB0aGUgZWxlbWVudCB3aXRoIHRoZSB2aWV3cG9ydFxyXG4gKiBhbmQgZW1pdHMgYSBgbG9hZE1vcmVgIGV2ZW50IHdoZW4gdGhlIGVsZW1lbnQgYmVjb21lcyB2aXNpYmxlLlxyXG4gKlxyXG4gKiBAcmVtYXJrc1xyXG4gKiBUaGlzIGRpcmVjdGl2ZSByZXF1aXJlcyB0aGUgYEludGVyc2VjdGlvbk9ic2VydmVyYCBBUEkgdG8gYmUgYXZhaWxhYmxlIGluIHRoZSBicm93c2VyLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGBodG1sXHJcbiAqIDxkaXYgaW5maW5pdHlTY3JvbGwgKG9uU2Nyb2xsKT1cImxvYWRNb3JlKClcIj5cclxuICogICA8IS0tIENvbnRlbnQgdG8gYmUgc2Nyb2xsZWQgLS0+XHJcbiAqIDwvZGl2PlxyXG4gKiBgYGBcclxuICpcclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICdbaW5maW5pdHktc2Nyb2xsXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5maW5pdHlTY3JvbGxEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIG9wdGlvbnMgPSBpbnB1dCh7IHJvb3Q6IG51bGwgfSk7XHJcbiAgb25TY3JvbGwgPSBvdXRwdXQoKTtcclxuXHJcbiAgcHJpdmF0ZSBvYnNlcnZlcj0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChbZW50cnldKSA9PiB7XHJcbiAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcclxuICAgICAgdGhpcy5vblNjcm9sbC5lbWl0KCk7XHJcbiAgICB9XHJcbiAgfSwgdGhpcy5vcHRpb25zKCkpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7XHJcbiAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xyXG4gICAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xyXG4gIH1cclxuXHJcbn0iXX0=
@@ -1,39 +0,0 @@
1
- import { Directive, HostListener, inject, input } from '@angular/core';
2
- import { DrawerStackService } from '../services/drawer/drawer-stack.service';
3
- import * as i0 from "@angular/core";
4
- /**
5
- * Directive that selects an article on click.
6
- */
7
- export class SelectArticleOnClickDirective {
8
- constructor() {
9
- this.drawerStack = inject(DrawerStackService);
10
- this.article = input.required();
11
- this.strategy = input('stack');
12
- }
13
- onClick() {
14
- if (!this.article())
15
- return;
16
- switch (this.strategy()) {
17
- case 'replace':
18
- this.drawerStack.replace(this.article());
19
- break;
20
- case 'stack':
21
- default:
22
- this.drawerStack.stack(this.article());
23
- break;
24
- }
25
- }
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: SelectArticleOnClickDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
27
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.5", type: SelectArticleOnClickDirective, isStandalone: true, selector: "[appSelectArticleOnClick],[selectArticleOnClick]", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null }, strategy: { classPropertyName: "strategy", publicName: "strategy", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onClick()" } }, ngImport: i0 }); }
28
- }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: SelectArticleOnClickDirective, decorators: [{
30
- type: Directive,
31
- args: [{
32
- selector: '[appSelectArticleOnClick],[selectArticleOnClick]',
33
- standalone: true,
34
- }]
35
- }], propDecorators: { onClick: [{
36
- type: HostListener,
37
- args: ['click']
38
- }] } });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWFydGljbGUtb24tY2xpY2suZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXRvbWljLWFuZ3VsYXIvc3JjL2xpYi9kaXJlY3RpdmVzL3NlbGVjdC1hcnRpY2xlLW9uLWNsaWNrLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOztBQUs3RTs7R0FFRztBQUtILE1BQU0sT0FBTyw2QkFBNkI7SUFKMUM7UUFLbUIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUUxQyxZQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBZ0MsQ0FBQztRQUN6RCxhQUFRLEdBQUcsS0FBSyxDQUFvQixPQUFPLENBQUMsQ0FBQztLQWdCOUQ7SUFiUSxPQUFPO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFBRSxPQUFPO1FBRTVCLFFBQVEsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDeEIsS0FBSyxTQUFTO2dCQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQWEsQ0FBQyxDQUFDO2dCQUNwRCxNQUFNO1lBQ1IsS0FBSyxPQUFPLENBQUM7WUFDYjtnQkFDRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFhLENBQUMsQ0FBQztnQkFDbEQsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDOzhHQW5CVSw2QkFBNkI7a0dBQTdCLDZCQUE2Qjs7MkZBQTdCLDZCQUE2QjtrQkFKekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0RBQWtEO29CQUM1RCxVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBUVEsT0FBTztzQkFEYixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBcnRpY2xlIH0gZnJvbSAnQHNpbmVxdWEvYXRvbWljJztcbmltcG9ydCB7IERyYXdlclN0YWNrU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RyYXdlci9kcmF3ZXItc3RhY2suc2VydmljZSc7XG5cblxuZXhwb3J0IHR5cGUgU2VsZWN0aW9uU3RyYXRlZ3kgPSAncmVwbGFjZScgfCAnc3RhY2snO1xuXG4vKipcbiAqIERpcmVjdGl2ZSB0aGF0IHNlbGVjdHMgYW4gYXJ0aWNsZSBvbiBjbGljay5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FwcFNlbGVjdEFydGljbGVPbkNsaWNrXSxbc2VsZWN0QXJ0aWNsZU9uQ2xpY2tdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0QXJ0aWNsZU9uQ2xpY2tEaXJlY3RpdmUge1xuICBwcml2YXRlIHJlYWRvbmx5IGRyYXdlclN0YWNrID0gaW5qZWN0KERyYXdlclN0YWNrU2VydmljZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFydGljbGUgPSBpbnB1dC5yZXF1aXJlZDxQYXJ0aWFsPEFydGljbGU+IHwgdW5kZWZpbmVkPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgc3RyYXRlZ3kgPSBpbnB1dDxTZWxlY3Rpb25TdHJhdGVneT4oJ3N0YWNrJyk7XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICBwdWJsaWMgb25DbGljaygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYXJ0aWNsZSgpKSByZXR1cm47XG5cbiAgICBzd2l0Y2ggKHRoaXMuc3RyYXRlZ3koKSkge1xuICAgICAgY2FzZSAncmVwbGFjZSc6XG4gICAgICAgIHRoaXMuZHJhd2VyU3RhY2sucmVwbGFjZSh0aGlzLmFydGljbGUoKSBhcyBBcnRpY2xlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzdGFjayc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmRyYXdlclN0YWNrLnN0YWNrKHRoaXMuYXJ0aWNsZSgpIGFzIEFydGljbGUpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,55 +0,0 @@
1
- import { Directive, HostListener, computed, effect, inject, input, output, signal } from '@angular/core';
2
- import { UserSettingsStore } from '../stores/user-settings.store';
3
- import * as i0 from "@angular/core";
4
- /**
5
- * Directive that handles the behavior of showing a bookmark for an article.
6
- *
7
- * @remarks
8
- * This directive listens to mouse enter and mouse leave events to determine when to show the bookmark.
9
- * It also checks the user's settings to determine if the article is bookmarked.
10
- *
11
- * @example
12
- * ```html
13
- * <div showBookmark [article]="currentArticle" (showBookmark)="onShowBookmark($event)"></div>
14
- * ```
15
- */
16
- export class ShowBookmarkDirective {
17
- mouseEnter() {
18
- this.bookmarkHovered.set(true);
19
- }
20
- mouseLeave() {
21
- this.bookmarkHovered.set(false);
22
- }
23
- constructor() {
24
- this.bookmarkHovered = signal(false);
25
- this.userSettingsStore = inject(UserSettingsStore);
26
- this.isBookmarked = computed(() => {
27
- if (!this.article())
28
- return false;
29
- return this.userSettingsStore.isBookmarked(this.article());
30
- });
31
- this.article = input.required();
32
- this.showBookmark = output();
33
- effect(() => {
34
- const bookmarkHovered = this.bookmarkHovered();
35
- const isBookmarked = this.isBookmarked();
36
- this.showBookmark.emit(bookmarkHovered || isBookmarked);
37
- });
38
- }
39
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ShowBookmarkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
40
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.5", type: ShowBookmarkDirective, isStandalone: true, selector: "[appShowBookmark],[showBookmark]", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { showBookmark: "showBookmark" }, host: { listeners: { "mouseenter": "mouseEnter()", "mouseleave": "mouseLeave()" } }, ngImport: i0 }); }
41
- }
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ShowBookmarkDirective, decorators: [{
43
- type: Directive,
44
- args: [{
45
- selector: '[appShowBookmark],[showBookmark]',
46
- standalone: true
47
- }]
48
- }], ctorParameters: () => [], propDecorators: { mouseEnter: [{
49
- type: HostListener,
50
- args: ['mouseenter']
51
- }], mouseLeave: [{
52
- type: HostListener,
53
- args: ['mouseleave']
54
- }] } });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvdy1ib29rbWFyay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG9taWMtYW5ndWxhci9zcmMvbGliL2RpcmVjdGl2ZXMvc2hvdy1ib29rbWFyay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHekcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBR2xFOzs7Ozs7Ozs7OztHQVdHO0FBS0gsTUFBTSxPQUFPLHFCQUFxQjtJQUV6QixVQUFVO1FBQ2YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUdNLFVBQVU7UUFDZixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBYUQ7UUFYVSxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyxzQkFBaUIsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUVwQyxpQkFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDckMsSUFBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFDakMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUcsQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO1FBRWEsWUFBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQTBDLENBQUM7UUFDbkUsaUJBQVksR0FBRyxNQUFNLEVBQVcsQ0FBQztRQUcvQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQy9DLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksWUFBWSxDQUFDLENBQUM7UUFDMUQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQTVCVSxxQkFBcUI7a0dBQXJCLHFCQUFxQjs7MkZBQXJCLHFCQUFxQjtrQkFKakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0NBQWtDO29CQUM1QyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7d0RBR1EsVUFBVTtzQkFEaEIsWUFBWTt1QkFBQyxZQUFZO2dCQU1uQixVQUFVO3NCQURoQixZQUFZO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFydGljbGUgfSBmcm9tICdAc2luZXF1YS9hdG9taWMnO1xuXG5pbXBvcnQgeyBVc2VyU2V0dGluZ3NTdG9yZSB9IGZyb20gJy4uL3N0b3Jlcy91c2VyLXNldHRpbmdzLnN0b3JlJztcblxuXG4vKipcbiAqIERpcmVjdGl2ZSB0aGF0IGhhbmRsZXMgdGhlIGJlaGF2aW9yIG9mIHNob3dpbmcgYSBib29rbWFyayBmb3IgYW4gYXJ0aWNsZS5cbiAqXG4gKiBAcmVtYXJrc1xuICogVGhpcyBkaXJlY3RpdmUgbGlzdGVucyB0byBtb3VzZSBlbnRlciBhbmQgbW91c2UgbGVhdmUgZXZlbnRzIHRvIGRldGVybWluZSB3aGVuIHRvIHNob3cgdGhlIGJvb2ttYXJrLlxuICogSXQgYWxzbyBjaGVja3MgdGhlIHVzZXIncyBzZXR0aW5ncyB0byBkZXRlcm1pbmUgaWYgdGhlIGFydGljbGUgaXMgYm9va21hcmtlZC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPGRpdiBzaG93Qm9va21hcmsgW2FydGljbGVdPVwiY3VycmVudEFydGljbGVcIiAoc2hvd0Jvb2ttYXJrKT1cIm9uU2hvd0Jvb2ttYXJrKCRldmVudClcIj48L2Rpdj5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYXBwU2hvd0Jvb2ttYXJrXSxbc2hvd0Jvb2ttYXJrXScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgU2hvd0Jvb2ttYXJrRGlyZWN0aXZlIHtcbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXG4gIHB1YmxpYyBtb3VzZUVudGVyKCk6IHZvaWQge1xuICAgIHRoaXMuYm9va21hcmtIb3ZlcmVkLnNldCh0cnVlKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxuICBwdWJsaWMgbW91c2VMZWF2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmJvb2ttYXJrSG92ZXJlZC5zZXQoZmFsc2UpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJvb2ttYXJrSG92ZXJlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHVzZXJTZXR0aW5nc1N0b3JlID0gaW5qZWN0KFVzZXJTZXR0aW5nc1N0b3JlKTtcblxuICBwcm90ZWN0ZWQgaXNCb29rbWFya2VkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmKCF0aGlzLmFydGljbGUoKSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLnVzZXJTZXR0aW5nc1N0b3JlLmlzQm9va21hcmtlZCh0aGlzLmFydGljbGUoKSEpO1xuICB9KTtcblxuICBwdWJsaWMgcmVhZG9ubHkgYXJ0aWNsZSA9IGlucHV0LnJlcXVpcmVkPEFydGljbGUgfCBQYXJ0aWFsPEFydGljbGU+IHwgdW5kZWZpbmVkPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd0Jvb2ttYXJrID0gb3V0cHV0PGJvb2xlYW4+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGJvb2ttYXJrSG92ZXJlZCA9IHRoaXMuYm9va21hcmtIb3ZlcmVkKCk7XG4gICAgICBjb25zdCBpc0Jvb2ttYXJrZWQgPSB0aGlzLmlzQm9va21hcmtlZCgpO1xuICAgICAgdGhpcy5zaG93Qm9va21hcmsuZW1pdChib29rbWFya0hvdmVyZWQgfHwgaXNCb29rbWFya2VkKTtcbiAgICB9KTtcbiAgfVxuXG59XG4iXX0=
@@ -1,31 +0,0 @@
1
- import { Directive, effect, ElementRef, inject, input } from '@angular/core';
2
- import { applyThemeToNativeElement, ThemeStore } from '../stores';
3
- import * as i0 from "@angular/core";
4
- /**
5
- * This directive is used to apply a theme to a native element based on the theme scope.
6
- */
7
- export class ThemeProviderDirective {
8
- constructor() {
9
- this.themeProvider = input.required();
10
- this.host = inject(ElementRef);
11
- this.themeStore = inject(ThemeStore);
12
- effect(() => {
13
- const scope = this.themeStore.scopes()?.[this.themeProvider()];
14
- if (!scope)
15
- return;
16
- const vars = scope.darkMode ? scope.cssVars.dark : scope.cssVars.light;
17
- if (vars)
18
- applyThemeToNativeElement(this.host.nativeElement, vars);
19
- });
20
- }
21
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ThemeProviderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
22
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.5", type: ThemeProviderDirective, isStandalone: true, selector: "[themeProvider]", inputs: { themeProvider: { classPropertyName: "themeProvider", publicName: "themeProvider", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
23
- }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ThemeProviderDirective, decorators: [{
25
- type: Directive,
26
- args: [{
27
- selector: '[themeProvider]',
28
- standalone: true
29
- }]
30
- }], ctorParameters: () => [] });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtcHJvdmlkZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXRvbWljLWFuZ3VsYXIvc3JjL2xpYi9kaXJlY3RpdmVzL3RoZW1lLXByb3ZpZGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQUVsRTs7R0FFRztBQUtILE1BQU0sT0FBTyxzQkFBc0I7SUFNakM7UUFMUyxrQkFBYSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUV6QyxTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFHdkMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztZQUUvRCxJQUFJLENBQUMsS0FBSztnQkFBRSxPQUFPO1lBRW5CLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUV2RSxJQUFJLElBQUk7Z0JBQUUseUJBQXlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDckUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQWhCVSxzQkFBc0I7a0dBQXRCLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkFKbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGVmZmVjdCwgRWxlbWVudFJlZiwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBhcHBseVRoZW1lVG9OYXRpdmVFbGVtZW50LCBUaGVtZVN0b3JlIH0gZnJvbSAnLi4vc3RvcmVzJztcblxuLyoqXG4gKiBUaGlzIGRpcmVjdGl2ZSBpcyB1c2VkIHRvIGFwcGx5IGEgdGhlbWUgdG8gYSBuYXRpdmUgZWxlbWVudCBiYXNlZCBvbiB0aGUgdGhlbWUgc2NvcGUuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0aGVtZVByb3ZpZGVyXScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgVGhlbWVQcm92aWRlckRpcmVjdGl2ZSB7XG4gIHJlYWRvbmx5IHRoZW1lUHJvdmlkZXIgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG5cbiAgcmVhZG9ubHkgaG9zdCA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcmVhZG9ubHkgdGhlbWVTdG9yZSA9IGluamVjdChUaGVtZVN0b3JlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3Qgc2NvcGUgPSB0aGlzLnRoZW1lU3RvcmUuc2NvcGVzKCk/Llt0aGlzLnRoZW1lUHJvdmlkZXIoKV07XG5cbiAgICAgIGlmICghc2NvcGUpIHJldHVybjtcblxuICAgICAgY29uc3QgdmFycyA9IHNjb3BlLmRhcmtNb2RlID8gc2NvcGUuY3NzVmFycy5kYXJrIDogc2NvcGUuY3NzVmFycy5saWdodDtcblxuICAgICAgaWYgKHZhcnMpIGFwcGx5VGhlbWVUb05hdGl2ZUVsZW1lbnQodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsIHZhcnMpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,27 +0,0 @@
1
- import { inject } from '@angular/core';
2
- import { Router } from '@angular/router';
3
- import { globalConfig, isAuthenticated } from '@sinequa/atomic';
4
- /**
5
- * Returns a guard function that checks if the user is authenticated.
6
- * If the user is not authenticated, it navigates to the login page.
7
- * @returns The guard function.
8
- */
9
- export function AuthGuard() {
10
- return (_, state) => {
11
- const router = inject(Router);
12
- const { loginPath, useCredentials, useSSO } = globalConfig;
13
- if (isAuthenticated())
14
- return true;
15
- // when using SSO authentication, the application is already authenticated
16
- if (useSSO)
17
- return true;
18
- if (useCredentials) {
19
- router.navigate([loginPath], { queryParams: { returnUrl: state.url } });
20
- }
21
- else {
22
- router.navigate(['loading'], { queryParams: { returnUrl: state.url } });
23
- }
24
- return false;
25
- };
26
- }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F0b21pYy1hbmd1bGFyL3NyYy9saWIvZ3VhcmRzL2F1dGguZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQWlCLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFaEU7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxTQUFTO0lBQ3ZCLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDbEIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTlCLE1BQU0sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxHQUFHLFlBQVksQ0FBQztRQUMzRCxJQUFJLGVBQWUsRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ25DLDBFQUEwRTtRQUMxRSxJQUFHLE1BQU07WUFBRSxPQUFPLElBQUksQ0FBQztRQUV2QixJQUFHLGNBQWMsRUFBRSxDQUFDO1lBQ2xCLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ3pFLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDekUsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDYW5BY3RpdmF0ZUZuLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBnbG9iYWxDb25maWcsIGlzQXV0aGVudGljYXRlZCB9IGZyb20gJ0BzaW5lcXVhL2F0b21pYyc7XHJcblxyXG4vKipcclxuICogUmV0dXJucyBhIGd1YXJkIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIGlmIHRoZSB1c2VyIGlzIGF1dGhlbnRpY2F0ZWQuXHJcbiAqIElmIHRoZSB1c2VyIGlzIG5vdCBhdXRoZW50aWNhdGVkLCBpdCBuYXZpZ2F0ZXMgdG8gdGhlIGxvZ2luIHBhZ2UuXHJcbiAqIEByZXR1cm5zIFRoZSBndWFyZCBmdW5jdGlvbi5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBBdXRoR3VhcmQoKTogQ2FuQWN0aXZhdGVGbiB7XHJcbiAgcmV0dXJuIChfLCBzdGF0ZSkgPT4ge1xyXG4gICAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcblxyXG4gICAgY29uc3QgeyBsb2dpblBhdGgsIHVzZUNyZWRlbnRpYWxzLCB1c2VTU08gfSA9IGdsb2JhbENvbmZpZztcclxuICAgIGlmIChpc0F1dGhlbnRpY2F0ZWQoKSkgcmV0dXJuIHRydWU7XHJcbiAgICAvLyB3aGVuIHVzaW5nIFNTTyBhdXRoZW50aWNhdGlvbiwgdGhlIGFwcGxpY2F0aW9uIGlzIGFscmVhZHkgYXV0aGVudGljYXRlZFxyXG4gICAgaWYodXNlU1NPKSByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICBpZih1c2VDcmVkZW50aWFscykge1xyXG4gICAgICByb3V0ZXIubmF2aWdhdGUoW2xvZ2luUGF0aF0sIHsgcXVlcnlQYXJhbXM6IHsgcmV0dXJuVXJsOiBzdGF0ZS51cmwgfSB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcm91dGVyLm5hdmlnYXRlKFsnbG9hZGluZyddLCB7IHF1ZXJ5UGFyYW1zOiB7IHJldHVyblVybDogc3RhdGUudXJsIH0gfSlcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9O1xyXG59XHJcbiJdfQ==
@@ -1,3 +0,0 @@
1
- export * from "./auth.guard";
2
- export * from "./initialization.guard";
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG9taWMtYW5ndWxhci9zcmMvbGliL2d1YXJkcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vYXV0aC5ndWFyZFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pbml0aWFsaXphdGlvbi5ndWFyZFwiO1xyXG4iXX0=