@sinequa/atomic-angular 0.0.146 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +8021 -2672
  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 -334
  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-input.mjs +0 -97
  42. package/esm2022/lib/components/dropdown-list.mjs +0 -35
  43. package/esm2022/lib/components/dropdown.mjs +0 -127
  44. package/esm2022/lib/components/index.mjs +0 -7
  45. package/esm2022/lib/components/menu/index.mjs +0 -3
  46. package/esm2022/lib/components/menu/menu-item.mjs +0 -22
  47. package/esm2022/lib/components/menu/menu.mjs +0 -99
  48. package/esm2022/lib/components/metadata/index.mjs +0 -2
  49. package/esm2022/lib/components/metadata/metadata.component.mjs +0 -65
  50. package/esm2022/lib/components/theme/index.mjs +0 -3
  51. package/esm2022/lib/components/theme/theme-selector.component.mjs +0 -67
  52. package/esm2022/lib/components/theme/theme-toggle.component.mjs +0 -67
  53. package/esm2022/lib/directives/index.mjs +0 -5
  54. package/esm2022/lib/directives/infinite-scroll.directive.mjs +0 -47
  55. package/esm2022/lib/directives/select-article-on-click.directive.mjs +0 -39
  56. package/esm2022/lib/directives/show-bookmark.directive.mjs +0 -55
  57. package/esm2022/lib/directives/theme-provider.directive.mjs +0 -31
  58. package/esm2022/lib/guards/auth.guard.mjs +0 -27
  59. package/esm2022/lib/guards/index.mjs +0 -3
  60. package/esm2022/lib/guards/initialization.guard.mjs +0 -41
  61. package/esm2022/lib/interceptors/audit.interceptor.mjs +0 -23
  62. package/esm2022/lib/interceptors/auth.interceptor.mjs +0 -49
  63. package/esm2022/lib/interceptors/body.interceptor.mjs +0 -24
  64. package/esm2022/lib/interceptors/error.interceptor.mjs +0 -35
  65. package/esm2022/lib/interceptors/index.mjs +0 -7
  66. package/esm2022/lib/interceptors/toast.interceptor.mjs +0 -27
  67. package/esm2022/lib/models/aggregation.mjs +0 -2
  68. package/esm2022/lib/models/article-metadata.mjs +0 -2
  69. package/esm2022/lib/models/autocomplete.mjs +0 -2
  70. package/esm2022/lib/models/custom-json.mjs +0 -2
  71. package/esm2022/lib/models/filter-dropdown.mjs +0 -2
  72. package/esm2022/lib/models/index.mjs +0 -7
  73. package/esm2022/lib/models/user-settings.mjs +0 -2
  74. package/esm2022/lib/pipes/highlight-word.pipe.mjs +0 -33
  75. package/esm2022/lib/pipes/index.mjs +0 -3
  76. package/esm2022/lib/pipes/source-icon.pipe.mjs +0 -43
  77. package/esm2022/lib/public-api.mjs +0 -18
  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 -59
  95. package/esm2022/lib/stores/app.store.mjs +0 -270
  96. package/esm2022/lib/stores/application.store.mjs +0 -87
  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 -207
  100. package/esm2022/lib/stores/selection.store.mjs +0 -45
  101. package/esm2022/lib/stores/theme.store.mjs +0 -116
  102. package/esm2022/lib/stores/user-settings.store.mjs +0 -391
  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-input.d.ts +0 -18
  127. package/lib/components/dropdown-list.d.ts +0 -8
  128. package/lib/components/dropdown.d.ts +0 -50
  129. package/lib/components/index.d.ts +0 -6
  130. package/lib/components/menu/index.d.ts +0 -2
  131. package/lib/components/menu/menu-item.d.ts +0 -8
  132. package/lib/components/menu/menu.d.ts +0 -24
  133. package/lib/components/metadata/index.d.ts +0 -1
  134. package/lib/components/metadata/metadata.component.d.ts +0 -24
  135. package/lib/components/theme/index.d.ts +0 -2
  136. package/lib/components/theme/theme-selector.component.d.ts +0 -70
  137. package/lib/components/theme/theme-toggle.component.d.ts +0 -10
  138. package/lib/directives/index.d.ts +0 -4
  139. package/lib/directives/infinite-scroll.directive.d.ts +0 -30
  140. package/lib/directives/select-article-on-click.directive.d.ts +0 -14
  141. package/lib/directives/show-bookmark.directive.d.ts +0 -60
  142. package/lib/directives/theme-provider.directive.d.ts +0 -20
  143. package/lib/guards/auth.guard.d.ts +0 -7
  144. package/lib/guards/index.d.ts +0 -2
  145. package/lib/guards/initialization.guard.d.ts +0 -20
  146. package/lib/interceptors/audit.interceptor.d.ts +0 -13
  147. package/lib/interceptors/auth.interceptor.d.ts +0 -14
  148. package/lib/interceptors/body.interceptor.d.ts +0 -11
  149. package/lib/interceptors/error.interceptor.d.ts +0 -9
  150. package/lib/interceptors/index.d.ts +0 -5
  151. package/lib/interceptors/toast.interceptor.d.ts +0 -13
  152. package/lib/models/aggregation.d.ts +0 -12
  153. package/lib/models/article-metadata.d.ts +0 -5
  154. package/lib/models/autocomplete.d.ts +0 -5
  155. package/lib/models/custom-json.d.ts +0 -69
  156. package/lib/models/filter-dropdown.d.ts +0 -10
  157. package/lib/models/index.d.ts +0 -6
  158. package/lib/models/user-settings.d.ts +0 -38
  159. package/lib/pipes/highlight-word.pipe.d.ts +0 -22
  160. package/lib/pipes/index.d.ts +0 -2
  161. package/lib/pipes/source-icon.pipe.d.ts +0 -51
  162. package/lib/public-api.d.ts +0 -14
  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 -183
  168. package/lib/services/autocomplete.service.d.ts +0 -96
  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 -114
  174. package/lib/services/navigation.service.d.ts +0 -33
  175. package/lib/services/saved-searches.service.d.ts +0 -149
  176. package/lib/services/search.service.d.ts +0 -159
  177. package/lib/services/selection-history.service.d.ts +0 -50
  178. package/lib/services/selection.service.d.ts +0 -123
  179. package/lib/stores/aggregations.store.d.ts +0 -25
  180. package/lib/stores/app.store.d.ts +0 -110
  181. package/lib/stores/application.store.d.ts +0 -83
  182. package/lib/stores/index.d.ts +0 -8
  183. package/lib/stores/principal.store.d.ts +0 -47
  184. package/lib/stores/query-params.store.d.ts +0 -128
  185. package/lib/stores/selection.store.d.ts +0 -52
  186. package/lib/stores/theme.store.d.ts +0 -66
  187. package/lib/stores/user-settings.store.d.ts +0 -111
  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 -57
  199. package/lib/web-services/app.service.d.ts +0 -30
  200. package/lib/web-services/audit.service.d.ts +0 -72
  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 -283
  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,127 +0,0 @@
1
- import { Component, HostListener, afterNextRender, input, signal, viewChild } from '@angular/core';
2
- import { autoUpdate, computePosition, flip, offset, shift } from '@floating-ui/dom';
3
- import * as i0 from "@angular/core";
4
- export class DropdownComponent {
5
- mouseleave(event) {
6
- this.close();
7
- }
8
- /**
9
- * Initializes the dropdown component and sets up automatic updates for its position.
10
- *
11
- * The constructor uses `afterNextRender` to ensure that the DOM elements are available
12
- * before calling `autoUpdate`. The `autoUpdate` function monitors the trigger and dropdown
13
- * elements, and if the dropdown is open, it recalculates its position.
14
- *
15
- * @constructor
16
- */
17
- constructor() {
18
- this.isOpen = signal(false);
19
- this.position = input('bottom-start');
20
- this.autoClose = input(false);
21
- this.disabled = input();
22
- this.dropdown = viewChild('dropdownWrapper');
23
- this.trigger = viewChild('trigger');
24
- this.width = signal(0);
25
- afterNextRender(() => {
26
- autoUpdate(this.trigger()?.nativeElement, this.dropdown()?.nativeElement, () => {
27
- if (!this.isOpen())
28
- return;
29
- this.calculatePosition();
30
- });
31
- });
32
- }
33
- /**
34
- * Toggles the dropdown's open state.
35
- * If the dropdown is disabled, the method returns immediately without making any changes.
36
- * Otherwise, it updates the `isOpen` state to its opposite value and recalculates the dropdown's position.
37
- */
38
- toggle() {
39
- if (this.disabled())
40
- return;
41
- this.isOpen.update(() => !this.isOpen());
42
- this.calculatePosition();
43
- }
44
- /**
45
- * Closes the dropdown by setting the `isOpen` state to `false`.
46
- */
47
- close() {
48
- this.isOpen.set(false);
49
- }
50
- /**
51
- * Calculates and sets the position of the dropdown element relative to the trigger element.
52
- * Utilizes the `computePosition` function with specified middleware for offset, flip, and shift.
53
- * Updates the dropdown's `left` and `top` styles based on the computed position.
54
- * Also sets the width of the dropdown to match the trigger element's width.
55
- *
56
- * @returns {void}
57
- */
58
- calculatePosition() {
59
- computePosition(this.trigger()?.nativeElement, this.dropdown()?.nativeElement, {
60
- placement: this.position(),
61
- middleware: [offset(8), flip(), shift()],
62
- }).then(({ x, y }) => {
63
- this.dropdown().nativeElement.style.left = x + 'px';
64
- this.dropdown().nativeElement.style.top = y + 'px';
65
- this.width.set(this.trigger()?.nativeElement.offsetWidth);
66
- });
67
- }
68
- // Onclick outside the dropdown, close it
69
- clickout(event) {
70
- if (
71
- // Check if the click was outside the dropdown
72
- // and the dropdown is open
73
- // and the click was not on the button
74
- // then close the dropdown
75
- !this.dropdown()?.nativeElement.contains(event.target)
76
- && this.isOpen
77
- && !this.trigger()?.nativeElement.contains(event.target)) {
78
- this.isOpen.set(false);
79
- }
80
- }
81
- /**
82
- * Handles the click event on the dropdown content.
83
- * If the `autoClose` method returns true, it triggers the `close` method to close the dropdown.
84
- */
85
- contentClicked() {
86
- if (this.autoClose())
87
- this.close();
88
- }
89
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
90
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.5", type: DropdownComponent, isStandalone: true, selector: "sq-dropdown, Dropdown", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, autoClose: { classPropertyName: "autoClose", publicName: "autoClose", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "document:click": "clickout($event)" } }, viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdownWrapper"], descendants: true, isSignal: true }, { propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true, isSignal: true }], ngImport: i0, template: `
91
- <div #trigger class="select-none dropdown" (click)="toggle()">
92
- <ng-content></ng-content>
93
- </div>
94
-
95
- <div #dropdownWrapper
96
- class="dropdown-wrapper absolute text-sm min-w-fit"
97
- [style.display]="isOpen() ? 'block' : 'none'"
98
- [style.width]="width() + 'px'"
99
- (click)="contentClicked()"
100
- (mouseleave)="mouseleave($event)"
101
- >
102
- <ng-content select="[dropdown-content]"></ng-content>
103
- </div>
104
- `, isInline: true, styles: [".dropdown-wrapper{z-index:var(--z-dropdown, 100)}\n"] }); }
105
- }
106
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DropdownComponent, decorators: [{
107
- type: Component,
108
- args: [{ selector: 'sq-dropdown, Dropdown', standalone: true, template: `
109
- <div #trigger class="select-none dropdown" (click)="toggle()">
110
- <ng-content></ng-content>
111
- </div>
112
-
113
- <div #dropdownWrapper
114
- class="dropdown-wrapper absolute text-sm min-w-fit"
115
- [style.display]="isOpen() ? 'block' : 'none'"
116
- [style.width]="width() + 'px'"
117
- (click)="contentClicked()"
118
- (mouseleave)="mouseleave($event)"
119
- >
120
- <ng-content select="[dropdown-content]"></ng-content>
121
- </div>
122
- `, styles: [".dropdown-wrapper{z-index:var(--z-dropdown, 100)}\n"] }]
123
- }], ctorParameters: () => [], propDecorators: { clickout: [{
124
- type: HostListener,
125
- args: ['document:click', ['$event']]
126
- }] } });
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG9taWMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZHJvcGRvd24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBYSxVQUFVLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBMEIvRixNQUFNLE9BQU8saUJBQWlCO0lBVzVCLFVBQVUsQ0FBQyxLQUFZO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNIO1FBdkJBLFdBQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsYUFBUSxHQUFHLEtBQUssQ0FBWSxjQUFjLENBQUMsQ0FBQztRQUM1QyxjQUFTLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLGFBQVEsR0FBRyxLQUFLLEVBQVcsQ0FBQztRQUU1QixhQUFRLEdBQUcsU0FBUyxDQUFhLGlCQUFpQixDQUFDLENBQUM7UUFDcEQsWUFBTyxHQUFHLFNBQVMsQ0FBYSxTQUFTLENBQUMsQ0FBQztRQUUzQyxVQUFLLEdBQUcsTUFBTSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBZ0J4QixlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ25CLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFO2dCQUM3RSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtvQkFBRSxPQUFPO2dCQUMzQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdEOzs7O09BSUc7SUFDSCxNQUFNO1FBQ0osSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQUUsT0FBTztRQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUs7UUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILGlCQUFpQjtRQUNmLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxhQUFhLEVBQUU7WUFDN0UsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDMUIsVUFBVSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDO1NBQ3pDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQTRCLEVBQUUsRUFBRTtZQUM3QyxJQUFJLENBQUMsUUFBUSxFQUFHLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNyRCxJQUFJLENBQUMsUUFBUSxFQUFHLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNwRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHlDQUF5QztJQUV6QyxRQUFRLENBQUMsS0FBWTtRQUNuQjtRQUNFLDhDQUE4QztRQUM5QywyQkFBMkI7UUFDM0Isc0NBQXNDO1FBQ3RDLDBCQUEwQjtRQUMxQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7ZUFDbkQsSUFBSSxDQUFDLE1BQU07ZUFDWCxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFDeEQsQ0FBQztZQUNELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsY0FBYztRQUNaLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQyxDQUFDOzhHQTdGVSxpQkFBaUI7a0dBQWpCLGlCQUFpQixvd0JBckJsQjs7Ozs7Ozs7Ozs7Ozs7R0FjVDs7MkZBT1UsaUJBQWlCO2tCQXhCN0IsU0FBUzsrQkFDRSx1QkFBdUIsY0FDckIsSUFBSSxZQUNOOzs7Ozs7Ozs7Ozs7OztHQWNUO3dEQWdGRCxRQUFRO3NCQURQLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgYWZ0ZXJOZXh0UmVuZGVyLCBpbnB1dCwgc2lnbmFsLCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBsYWNlbWVudCwgYXV0b1VwZGF0ZSwgY29tcHV0ZVBvc2l0aW9uLCBmbGlwLCBvZmZzZXQsIHNoaWZ0IH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NxLWRyb3Bkb3duLCBEcm9wZG93bicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiAjdHJpZ2dlciBjbGFzcz1cInNlbGVjdC1ub25lIGRyb3Bkb3duXCIgKGNsaWNrKT1cInRvZ2dsZSgpXCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICNkcm9wZG93bldyYXBwZXJcbiAgICAgIGNsYXNzPVwiZHJvcGRvd24td3JhcHBlciBhYnNvbHV0ZSB0ZXh0LXNtIG1pbi13LWZpdFwiXG4gICAgICBbc3R5bGUuZGlzcGxheV09XCJpc09wZW4oKSA/ICdibG9jaycgOiAnbm9uZSdcIlxuICAgICAgW3N0eWxlLndpZHRoXT1cIndpZHRoKCkgKyAncHgnXCJcbiAgICAgIChjbGljayk9XCJjb250ZW50Q2xpY2tlZCgpXCJcbiAgICAgIChtb3VzZWxlYXZlKT1cIm1vdXNlbGVhdmUoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2Ryb3Bkb3duLWNvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IGBcbiAgICAuZHJvcGRvd24td3JhcHBlciB7XG4gICAgICB6LWluZGV4OiB2YXIoLS16LWRyb3Bkb3duLCAxMDApO1xuICAgIH1cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkNvbXBvbmVudCB7XG4gIGlzT3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gIHBvc2l0aW9uID0gaW5wdXQ8UGxhY2VtZW50PignYm90dG9tLXN0YXJ0Jyk7XG4gIGF1dG9DbG9zZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuPigpO1xuXG4gIGRyb3Bkb3duID0gdmlld0NoaWxkPEVsZW1lbnRSZWY+KCdkcm9wZG93bldyYXBwZXInKTtcbiAgdHJpZ2dlciA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPigndHJpZ2dlcicpO1xuXG4gIHdpZHRoID0gc2lnbmFsPG51bWJlcj4oMCk7XG5cbiAgbW91c2VsZWF2ZShldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGRyb3Bkb3duIGNvbXBvbmVudCBhbmQgc2V0cyB1cCBhdXRvbWF0aWMgdXBkYXRlcyBmb3IgaXRzIHBvc2l0aW9uLlxuICAgKlxuICAgKiBUaGUgY29uc3RydWN0b3IgdXNlcyBgYWZ0ZXJOZXh0UmVuZGVyYCB0byBlbnN1cmUgdGhhdCB0aGUgRE9NIGVsZW1lbnRzIGFyZSBhdmFpbGFibGVcbiAgICogYmVmb3JlIGNhbGxpbmcgYGF1dG9VcGRhdGVgLiBUaGUgYGF1dG9VcGRhdGVgIGZ1bmN0aW9uIG1vbml0b3JzIHRoZSB0cmlnZ2VyIGFuZCBkcm9wZG93blxuICAgKiBlbGVtZW50cywgYW5kIGlmIHRoZSBkcm9wZG93biBpcyBvcGVuLCBpdCByZWNhbGN1bGF0ZXMgaXRzIHBvc2l0aW9uLlxuICAgKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgICBhdXRvVXBkYXRlKHRoaXMudHJpZ2dlcigpPy5uYXRpdmVFbGVtZW50LCB0aGlzLmRyb3Bkb3duKCk/Lm5hdGl2ZUVsZW1lbnQsICgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmlzT3BlbigpKSByZXR1cm47XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlUG9zaXRpb24oKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgZHJvcGRvd24ncyBvcGVuIHN0YXRlLlxuICAgKiBJZiB0aGUgZHJvcGRvd24gaXMgZGlzYWJsZWQsIHRoZSBtZXRob2QgcmV0dXJucyBpbW1lZGlhdGVseSB3aXRob3V0IG1ha2luZyBhbnkgY2hhbmdlcy5cbiAgICogT3RoZXJ3aXNlLCBpdCB1cGRhdGVzIHRoZSBgaXNPcGVuYCBzdGF0ZSB0byBpdHMgb3Bwb3NpdGUgdmFsdWUgYW5kIHJlY2FsY3VsYXRlcyB0aGUgZHJvcGRvd24ncyBwb3NpdGlvbi5cbiAgICovXG4gIHRvZ2dsZSgpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCgpKSByZXR1cm47XG4gICAgdGhpcy5pc09wZW4udXBkYXRlKCgpID0+ICF0aGlzLmlzT3BlbigpKTtcbiAgICB0aGlzLmNhbGN1bGF0ZVBvc2l0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSBkcm9wZG93biBieSBzZXR0aW5nIHRoZSBgaXNPcGVuYCBzdGF0ZSB0byBgZmFsc2VgLlxuICAgKi9cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5pc09wZW4uc2V0KGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIGFuZCBzZXRzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZHJvcGRvd24gZWxlbWVudCByZWxhdGl2ZSB0byB0aGUgdHJpZ2dlciBlbGVtZW50LlxuICAgKiBVdGlsaXplcyB0aGUgYGNvbXB1dGVQb3NpdGlvbmAgZnVuY3Rpb24gd2l0aCBzcGVjaWZpZWQgbWlkZGxld2FyZSBmb3Igb2Zmc2V0LCBmbGlwLCBhbmQgc2hpZnQuXG4gICAqIFVwZGF0ZXMgdGhlIGRyb3Bkb3duJ3MgYGxlZnRgIGFuZCBgdG9wYCBzdHlsZXMgYmFzZWQgb24gdGhlIGNvbXB1dGVkIHBvc2l0aW9uLlxuICAgKiBBbHNvIHNldHMgdGhlIHdpZHRoIG9mIHRoZSBkcm9wZG93biB0byBtYXRjaCB0aGUgdHJpZ2dlciBlbGVtZW50J3Mgd2lkdGguXG4gICAqXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgY2FsY3VsYXRlUG9zaXRpb24oKSB7XG4gICAgY29tcHV0ZVBvc2l0aW9uKHRoaXMudHJpZ2dlcigpPy5uYXRpdmVFbGVtZW50LCB0aGlzLmRyb3Bkb3duKCk/Lm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgIHBsYWNlbWVudDogdGhpcy5wb3NpdGlvbigpLFxuICAgICAgbWlkZGxld2FyZTogW29mZnNldCg4KSwgZmxpcCgpLCBzaGlmdCgpXSxcbiAgICB9KS50aGVuKCh7IHgsIHkgfTogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9KSA9PiB7XG4gICAgICB0aGlzLmRyb3Bkb3duKCkhLm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9IHggKyAncHgnO1xuICAgICAgdGhpcy5kcm9wZG93bigpIS5uYXRpdmVFbGVtZW50LnN0eWxlLnRvcCA9IHkgKyAncHgnO1xuICAgICAgdGhpcy53aWR0aC5zZXQodGhpcy50cmlnZ2VyKCk/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gT25jbGljayBvdXRzaWRlIHRoZSBkcm9wZG93biwgY2xvc2UgaXRcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICBjbGlja291dChldmVudDogRXZlbnQpIHtcbiAgICBpZiAoXG4gICAgICAvLyBDaGVjayBpZiB0aGUgY2xpY2sgd2FzIG91dHNpZGUgdGhlIGRyb3Bkb3duXG4gICAgICAvLyBhbmQgdGhlIGRyb3Bkb3duIGlzIG9wZW5cbiAgICAgIC8vIGFuZCB0aGUgY2xpY2sgd2FzIG5vdCBvbiB0aGUgYnV0dG9uXG4gICAgICAvLyB0aGVuIGNsb3NlIHRoZSBkcm9wZG93blxuICAgICAgIXRoaXMuZHJvcGRvd24oKT8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXG4gICAgICAmJiB0aGlzLmlzT3BlblxuICAgICAgJiYgIXRoaXMudHJpZ2dlcigpPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcbiAgICApIHtcbiAgICAgIHRoaXMuaXNPcGVuLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGNsaWNrIGV2ZW50IG9uIHRoZSBkcm9wZG93biBjb250ZW50LlxuICAgKiBJZiB0aGUgYGF1dG9DbG9zZWAgbWV0aG9kIHJldHVybnMgdHJ1ZSwgaXQgdHJpZ2dlcnMgdGhlIGBjbG9zZWAgbWV0aG9kIHRvIGNsb3NlIHRoZSBkcm9wZG93bi5cbiAgICovXG4gIGNvbnRlbnRDbGlja2VkKCkge1xuICAgIGlmICh0aGlzLmF1dG9DbG9zZSgpKSB0aGlzLmNsb3NlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,7 +0,0 @@
1
- export * from "./dropdown";
2
- export * from "./dropdown-input";
3
- export * from "./dropdown-list";
4
- export * from "./menu";
5
- export * from "./metadata";
6
- export * from "./theme";
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG9taWMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vZHJvcGRvd25cIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vZHJvcGRvd24taW5wdXRcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vZHJvcGRvd24tbGlzdFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9tZW51XCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL21ldGFkYXRhXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL3RoZW1lXCI7XHJcblxyXG4iXX0=
@@ -1,3 +0,0 @@
1
- export * from './menu-item';
2
- export * from './menu';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG9taWMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvbWVudS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbWVudS1pdGVtJztcbmV4cG9ydCAqIGZyb20gJy4vbWVudSc7XG4iXX0=
@@ -1,22 +0,0 @@
1
- import { NgClass } from "@angular/common";
2
- import { Component } from "@angular/core";
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "./menu";
5
- export class MenuItemComponent {
6
- constructor(menu) {
7
- this.menu = menu;
8
- }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: MenuItemComponent, deps: [{ token: i1.MenuComponent }], target: i0.ɵɵFactoryTarget.Component }); }
10
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: MenuItemComponent, isStandalone: true, selector: "sq-menu-item, menu-item, MenuItem", host: { classAttribute: "data-list-item flex gap-2 items-center justify-start py-2 px-4 text-sm cursor-pointer" }, ngImport: i0, template: `
11
- <ng-content></ng-content>
12
- `, isInline: true, styles: [":host[disabled]{cursor:default}\n"] }); }
13
- }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: MenuItemComponent, decorators: [{
15
- type: Component,
16
- args: [{ selector: "sq-menu-item, menu-item, MenuItem", standalone: true, imports: [NgClass], template: `
17
- <ng-content></ng-content>
18
- `, host: {
19
- class: 'data-list-item flex gap-2 items-center justify-start py-2 px-4 text-sm cursor-pointer'
20
- }, styles: [":host[disabled]{cursor:default}\n"] }]
21
- }], ctorParameters: () => [{ type: i1.MenuComponent }] });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXRvbWljLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL21lbnUvbWVudS1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFnQyxNQUFNLGVBQWUsQ0FBQzs7O0FBbUJ4RSxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFlBQTRCLElBQW1CO1FBQW5CLFNBQUksR0FBSixJQUFJLENBQWU7SUFBRyxDQUFDOzhHQUR4QyxpQkFBaUI7a0dBQWpCLGlCQUFpQixnTkFabEI7O0NBRVg7OzJGQVVZLGlCQUFpQjtrQkFoQjdCLFNBQVM7K0JBQ0UsbUNBQW1DLGNBQ2pDLElBQUksV0FDUCxDQUFDLE9BQU8sQ0FBQyxZQUNSOztDQUVYLFFBQ087d0JBQ0osS0FBSyxFQUFFLHVGQUF1RjtxQkFDL0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBIb3N0QmluZGluZywgaW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBNZW51Q29tcG9uZW50IH0gZnJvbSBcIi4vbWVudVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwic3EtbWVudS1pdGVtLCBtZW51LWl0ZW0sIE1lbnVJdGVtXCIsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbTmdDbGFzc10sXHJcbiAgdGVtcGxhdGU6IGBcclxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbmAsXHJcbiAgaG9zdDoge1xyXG4gICAgY2xhc3M6ICdkYXRhLWxpc3QtaXRlbSBmbGV4IGdhcC0yIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LXN0YXJ0IHB5LTIgcHgtNCB0ZXh0LXNtIGN1cnNvci1wb2ludGVyJ1xyXG4gIH0sXHJcbiAgc3R5bGVzOiBbYFxyXG4gICAgOmhvc3RbZGlzYWJsZWRdIHtcclxuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xyXG4gICAgfVxyXG4gIGBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZW51SXRlbUNvbXBvbmVudCB7XHJcbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IG1lbnU6IE1lbnVDb21wb25lbnQpIHt9XHJcbn0iXX0=
@@ -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=