@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.
- 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 +7948 -2383
- 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 -248
- package/esm2022/lib/assistant/index.mjs +0 -2
- package/esm2022/lib/assistant/signalR.web.service.mjs +0 -81
- package/esm2022/lib/components/dropdown.mjs +0 -127
- package/esm2022/lib/components/index.mjs +0 -5
- 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/providers/eager-provider.mjs +0 -24
- package/esm2022/lib/providers/index.mjs +0 -2
- package/esm2022/lib/public-api.mjs +0 -19
- 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 -62
- package/esm2022/lib/stores/app.store.mjs +0 -265
- package/esm2022/lib/stores/application.store.mjs +0 -93
- 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 -208
- package/esm2022/lib/stores/selection.store.mjs +0 -46
- package/esm2022/lib/stores/theme.store.mjs +0 -116
- package/esm2022/lib/stores/user-settings.store.mjs +0 -272
- 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.d.ts +0 -50
- package/lib/components/index.d.ts +0 -4
- 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 -52
- 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 -58
- 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 -32
- 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 -54
- package/lib/providers/eager-provider.d.ts +0 -11
- package/lib/providers/index.d.ts +0 -1
- package/lib/public-api.d.ts +0 -15
- 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 -178
- package/lib/services/autocomplete.service.d.ts +0 -91
- 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 -117
- package/lib/services/navigation.service.d.ts +0 -33
- package/lib/services/saved-searches.service.d.ts +0 -145
- package/lib/services/search.service.d.ts +0 -155
- package/lib/services/selection-history.service.d.ts +0 -50
- package/lib/services/selection.service.d.ts +0 -127
- package/lib/stores/aggregations.store.d.ts +0 -50
- package/lib/stores/app.store.d.ts +0 -208
- package/lib/stores/application.store.d.ts +0 -106
- package/lib/stores/index.d.ts +0 -8
- package/lib/stores/principal.store.d.ts +0 -53
- package/lib/stores/query-params.store.d.ts +0 -187
- package/lib/stores/selection.store.d.ts +0 -62
- package/lib/stores/theme.store.d.ts +0 -55
- package/lib/stores/user-settings.store.d.ts +0 -161
- 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 -60
- package/lib/web-services/app.service.d.ts +0 -30
- package/lib/web-services/audit.service.d.ts +0 -75
- 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 -295
- 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,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=
|