ngx-mq 1.3.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -13
- package/esm2022/lib/api.mjs +28 -21
- package/esm2022/lib/core.mjs +7 -4
- package/esm2022/lib/models.mjs +1 -1
- package/esm2022/lib/mql-registry/mql-registry.extensions.mjs +3 -3
- package/esm2022/lib/mql-registry/mql-registry.mjs +4 -4
- package/esm2022/lib/providers.mjs +5 -2
- package/esm2022/lib/tokens.mjs +5 -1
- package/fesm2022/ngx-mq.mjs +44 -28
- package/fesm2022/ngx-mq.mjs.map +1 -1
- package/lib/api.d.ts +9 -8
- package/lib/core.d.ts +2 -1
- package/lib/models.d.ts +6 -0
- package/lib/mql-registry/mql-registry.d.ts +1 -1
- package/lib/mql-registry/mql-registry.extensions.d.ts +1 -1
- package/lib/providers.d.ts +1 -0
- package/lib/tokens.d.ts +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -104,11 +104,11 @@ bootstrapApplication(AppComponent, {
|
|
|
104
104
|
|
|
105
105
|
### BP-related utilities
|
|
106
106
|
|
|
107
|
-
| Function | Parameters
|
|
108
|
-
| --------- |
|
|
109
|
-
| `up` | `bp: string` | `Signal<boolean>` | `true` when viewport width ≥ breakpoint |
|
|
110
|
-
| `down` | `bp: string` | `Signal<boolean>` | `true` when viewport width < breakpoint |
|
|
111
|
-
| `between` | `minBp: string, maxBp: string` | `Signal<boolean>` | `true` when viewport width is in range [a, b] |
|
|
107
|
+
| Function | Parameters | Returns | Description |
|
|
108
|
+
| --------- | ----------------------------------------------------------------- | ----------------- | --------------------------------------------- |
|
|
109
|
+
| `up` | `bp: string, options?: CreateMediaQueryOptions` | `Signal<boolean>` | `true` when viewport width ≥ breakpoint |
|
|
110
|
+
| `down` | `bp: string, options?: CreateMediaQueryOptions` | `Signal<boolean>` | `true` when viewport width < breakpoint |
|
|
111
|
+
| `between` | `minBp: string, maxBp: string, options?: CreateMediaQueryOptions` | `Signal<boolean>` | `true` when viewport width is in range [a, b] |
|
|
112
112
|
|
|
113
113
|
> **Tip:** Wrap these APIs into reusable helpers:
|
|
114
114
|
|
|
@@ -126,11 +126,12 @@ export const isDesktop = (): Signal<boolean> => up('lg');
|
|
|
126
126
|
|
|
127
127
|
Utils exposing common CSS media features.
|
|
128
128
|
|
|
129
|
-
| Function
|
|
130
|
-
|
|
|
131
|
-
| `orientation`
|
|
132
|
-
| `colorScheme`
|
|
133
|
-
| `displayMode`
|
|
129
|
+
| Function | Parameters | Returns | Description |
|
|
130
|
+
| --------------- | --------------------------------------------------------------------- | ----------------- | ----------------------------------------------------------------------- |
|
|
131
|
+
| `orientation` | `value: 'portrait' \| 'landscape', options?: CreateMediaQueryOptions` | `Signal<boolean>` | `true` when the current screen orientation matches the specified value. |
|
|
132
|
+
| `colorScheme` | `value: 'light' \| 'dark', options?: CreateMediaQueryOptions` | `Signal<boolean>` | `true` when the system color scheme matches the specified value. |
|
|
133
|
+
| `displayMode` | `value: DisplayModeOption, options?: CreateMediaQueryOptions` | `Signal<boolean>` | `true` when the current display mode matches the specified value. |
|
|
134
|
+
| `reducedMotion` | `options?: CreateMediaQueryOptions` | `Signal<boolean>` | `true` when the user has enabled reduced motion. |
|
|
134
135
|
|
|
135
136
|
---
|
|
136
137
|
|
|
@@ -138,9 +139,9 @@ Utils exposing common CSS media features.
|
|
|
138
139
|
|
|
139
140
|
Works with any valid [CSS media query](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_media_queries) and returns a `Signal<boolean>` which automatically updates when the query result changes.
|
|
140
141
|
|
|
141
|
-
| Function | Parameters
|
|
142
|
-
| ------------------ |
|
|
143
|
-
| `matchMediaSignal` | `query: string` | `Signal<boolean>` | Provides a signal representing the state of a media query |
|
|
142
|
+
| Function | Parameters | Returns | Description |
|
|
143
|
+
| ------------------ | -------------------------------------------------- | ----------------- | --------------------------------------------------------- |
|
|
144
|
+
| `matchMediaSignal` | `query: string, options?: CreateMediaQueryOptions` | `Signal<boolean>` | Provides a signal representing the state of a media query |
|
|
144
145
|
|
|
145
146
|
> **Tip:** Use this API for media queries that are not part of your breakpoint map.
|
|
146
147
|
|
|
@@ -152,9 +153,29 @@ import { matchMediaSignal } from 'ngx-mq';
|
|
|
152
153
|
export const isLandscape = (): Signal<boolean> => matchMediaSignal('(orientation: landscape)');
|
|
153
154
|
```
|
|
154
155
|
|
|
156
|
+
## Providers
|
|
157
|
+
|
|
158
|
+
| Provider | Parameters | Description |
|
|
159
|
+
| ------------------------------- | -------------------- | -------------------------------------------------------------------------------------------------------------------------- |
|
|
160
|
+
| `provideBreakpoints()` | `bps: MqBreakpoints` | Registers a custom set of breakpoints. |
|
|
161
|
+
| `provideTailwindBreakpoints()` | none | Registers the default Tailwind CSS breakpoints. |
|
|
162
|
+
| `provideBootstrapBreakpoints()` | none | Registers the default Bootstrap breakpoints. |
|
|
163
|
+
| `provideMaterialBreakpoints()` | none | Registers the default Angular Material breakpoints. |
|
|
164
|
+
| `provideBreakpointEpsilon()` | `epsilon: number` | Sets the epsilon threshold used when comparing breakpoint values. |
|
|
165
|
+
| `provideSsrValue()` | `value: boolean` | Defines the static signal value used during SSR, since media queries are not available on the server. Defaults to `false`. |
|
|
166
|
+
|
|
155
167
|
## Types
|
|
156
168
|
|
|
157
169
|
```ts
|
|
170
|
+
export type MqBreakpoints = Record<string, number>;
|
|
171
|
+
|
|
172
|
+
export interface CreateMediaQueryOptions {
|
|
173
|
+
/**
|
|
174
|
+
* Static signal value used during SSR.
|
|
175
|
+
*/
|
|
176
|
+
ssrValue?: boolean;
|
|
177
|
+
}
|
|
178
|
+
|
|
158
179
|
export type DisplayModeOption =
|
|
159
180
|
| 'browser'
|
|
160
181
|
| 'fullscreen'
|
package/esm2022/lib/api.mjs
CHANGED
|
@@ -2,55 +2,62 @@ import { assertInInjectionContext, isDevMode } from '@angular/core';
|
|
|
2
2
|
import { applyMaxEpsilon, resolveBreakpoint } from './utils/breakpoints.utils';
|
|
3
3
|
import { createConsumer, createConsumerLabel } from './core';
|
|
4
4
|
import { normalizeQuery } from './utils/common.utils';
|
|
5
|
-
export function up(bp) {
|
|
5
|
+
export function up(bp, options) {
|
|
6
6
|
isDevMode() && assertInInjectionContext(up);
|
|
7
7
|
const query = normalizeQuery(`(min-width: ${resolveBreakpoint(bp)}px)`);
|
|
8
|
-
const consumer = createConsumer(query);
|
|
8
|
+
const consumer = createConsumer(query, options);
|
|
9
9
|
consumer.toString = () => createConsumerLabel(`up(${bp})`);
|
|
10
10
|
return consumer;
|
|
11
11
|
}
|
|
12
|
-
export function down(bp) {
|
|
12
|
+
export function down(bp, options) {
|
|
13
13
|
isDevMode() && assertInInjectionContext(down);
|
|
14
14
|
const query = normalizeQuery(`(max-width: ${applyMaxEpsilon(resolveBreakpoint(bp))}px)`);
|
|
15
|
-
const consumer = createConsumer(query);
|
|
15
|
+
const consumer = createConsumer(query, options);
|
|
16
16
|
consumer.toString = () => createConsumerLabel(`down(${bp})`);
|
|
17
17
|
return consumer;
|
|
18
18
|
}
|
|
19
|
-
export function between(minBp, maxBp) {
|
|
19
|
+
export function between(minBp, maxBp, options) {
|
|
20
20
|
isDevMode() && assertInInjectionContext(between);
|
|
21
21
|
const minPx = resolveBreakpoint(minBp);
|
|
22
22
|
const maxPx = resolveBreakpoint(maxBp);
|
|
23
23
|
const query = normalizeQuery(`(min-width: ${minPx}px) and (max-width: ${applyMaxEpsilon(maxPx)}px)`);
|
|
24
|
-
const consumer = createConsumer(query);
|
|
24
|
+
const consumer = createConsumer(query, options);
|
|
25
25
|
consumer.toString = () => createConsumerLabel(`between(${minBp}, ${maxBp})`);
|
|
26
26
|
return consumer;
|
|
27
27
|
}
|
|
28
|
-
export function orientation(
|
|
28
|
+
export function orientation(value, options) {
|
|
29
29
|
isDevMode() && assertInInjectionContext(orientation);
|
|
30
|
-
const query = normalizeQuery(`(orientation: ${
|
|
31
|
-
const consumer = createConsumer(query);
|
|
32
|
-
consumer.toString = () => createConsumerLabel(`orientation(${
|
|
30
|
+
const query = normalizeQuery(`(orientation: ${value})`);
|
|
31
|
+
const consumer = createConsumer(query, options);
|
|
32
|
+
consumer.toString = () => createConsumerLabel(`orientation(${value})`);
|
|
33
33
|
return consumer;
|
|
34
34
|
}
|
|
35
|
-
export function colorScheme(
|
|
35
|
+
export function colorScheme(value, options) {
|
|
36
36
|
isDevMode() && assertInInjectionContext(colorScheme);
|
|
37
|
-
const query = normalizeQuery(`(prefers-color-scheme: ${
|
|
38
|
-
const consumer = createConsumer(query);
|
|
39
|
-
consumer.toString = () => createConsumerLabel(`colorScheme(${
|
|
37
|
+
const query = normalizeQuery(`(prefers-color-scheme: ${value})`);
|
|
38
|
+
const consumer = createConsumer(query, options);
|
|
39
|
+
consumer.toString = () => createConsumerLabel(`colorScheme(${value})`);
|
|
40
40
|
return consumer;
|
|
41
41
|
}
|
|
42
|
-
export function displayMode(
|
|
42
|
+
export function displayMode(value, options) {
|
|
43
43
|
isDevMode() && assertInInjectionContext(displayMode);
|
|
44
|
-
const query = normalizeQuery(`(display-mode: ${
|
|
45
|
-
const consumer = createConsumer(query);
|
|
46
|
-
consumer.toString = () => createConsumerLabel(`displayMode(${
|
|
44
|
+
const query = normalizeQuery(`(display-mode: ${value})`);
|
|
45
|
+
const consumer = createConsumer(query, options);
|
|
46
|
+
consumer.toString = () => createConsumerLabel(`displayMode(${value})`);
|
|
47
47
|
return consumer;
|
|
48
48
|
}
|
|
49
|
-
export function
|
|
49
|
+
export function reducedMotion(options) {
|
|
50
|
+
isDevMode() && assertInInjectionContext(reducedMotion);
|
|
51
|
+
const query = normalizeQuery('(prefers-reduced-motion: reduce)');
|
|
52
|
+
const consumer = createConsumer(query, options);
|
|
53
|
+
consumer.toString = () => createConsumerLabel('reducedMotion');
|
|
54
|
+
return consumer;
|
|
55
|
+
}
|
|
56
|
+
export function matchMediaSignal(query, options) {
|
|
50
57
|
isDevMode() && assertInInjectionContext(matchMediaSignal);
|
|
51
58
|
const media = normalizeQuery(query);
|
|
52
|
-
const consumer = createConsumer(media);
|
|
59
|
+
const consumer = createConsumer(media, options);
|
|
53
60
|
consumer.toString = () => createConsumerLabel(`matchMediaSignal(${query})`);
|
|
54
61
|
return consumer;
|
|
55
62
|
}
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFL0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFdEQsTUFBTSxVQUFVLEVBQUUsQ0FBQyxFQUFVLEVBQUUsT0FBaUM7SUFDOUQsU0FBUyxFQUFFLElBQUksd0JBQXdCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFNUMsTUFBTSxLQUFLLEdBQVcsY0FBYyxDQUFDLGVBQWUsaUJBQWlCLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hGLE1BQU0sUUFBUSxHQUFvQixjQUFjLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRWpFLFFBQVEsQ0FBQyxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBRTNELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRCxNQUFNLFVBQVUsSUFBSSxDQUFDLEVBQVUsRUFBRSxPQUFpQztJQUNoRSxTQUFTLEVBQUUsSUFBSSx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUU5QyxNQUFNLEtBQUssR0FBVyxjQUFjLENBQUMsZUFBZSxlQUFlLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakcsTUFBTSxRQUFRLEdBQW9CLGNBQWMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFakUsUUFBUSxDQUFDLFFBQVEsR0FBRyxH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QUFFLE9BQWlDO0lBQy9FLFNBQVMsRUFBRSxJQUFJLHdCQUF3QixDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFMUQsTUFBTSxLQUFLLEdBQVcsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLE1BQU0sUUFBUSxHQUFvQixjQUFjLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRWpFLFFBQVEsQ0FBQyxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUMsb0JBQW9CLEtBQUssR0FBRyxDQUFDLENBQUM7SUFFNUUsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydEluSW5qZWN0aW9uQ29udGV4dCwgaXNEZXZNb2RlLCBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGFwcGx5TWF4RXBzaWxvbiwgcmVzb2x2ZUJyZWFrcG9pbnQgfSBmcm9tICcuL3V0aWxzL2JyZWFrcG9pbnRzLnV0aWxzJztcbmltcG9ydCB7IERpc3BsYXlNb2RlT3B0aW9uLCBDcmVhdGVNZWRpYVF1ZXJ5T3B0aW9ucyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IGNyZWF0ZUNvbnN1bWVyLCBjcmVhdGVDb25zdW1lckxhYmVsIH0gZnJvbSAnLi9jb3JlJztcbmltcG9ydCB7IG5vcm1hbGl6ZVF1ZXJ5IH0gZnJvbSAnLi91dGlscy9jb21tb24udXRpbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gdXAoYnA6IHN0cmluZywgb3B0aW9ucz86IENyZWF0ZU1lZGlhUXVlcnlPcHRpb25zKTogU2lnbmFsPGJvb2xlYW4+IHtcbiAgaXNEZXZNb2RlKCkgJiYgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0KHVwKTtcblxuICBjb25zdCBxdWVyeTogc3RyaW5nID0gbm9ybWFsaXplUXVlcnkoYChtaW4td2lkdGg6ICR7cmVzb2x2ZUJyZWFrcG9pbnQoYnApfXB4KWApO1xuICBjb25zdCBjb25zdW1lcjogU2lnbmFsPGJvb2xlYW4+ID0gY3JlYXRlQ29uc3VtZXIocXVlcnksIG9wdGlvbnMpO1xuXG4gIGNvbnN1bWVyLnRvU3RyaW5nID0gKCkgPT4gY3JlYXRlQ29uc3VtZXJMYWJlbChgdXAoJHticH0pYCk7XG5cbiAgcmV0dXJuIGNvbnN1bWVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZG93bihicDogc3RyaW5nLCBvcHRpb25zPzogQ3JlYXRlTWVkaWFRdWVyeU9wdGlvbnMpOiBTaWduYWw8Ym9vbGVhbj4ge1xuICBpc0Rldk1vZGUoKSAmJiBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQoZG93bik7XG5cbiAgY29uc3QgcXVlcnk6IHN0cmluZyA9IG5vcm1hbGl6ZVF1ZXJ5KGAobWF4LXdpZHRoOiAke2FwcGx5TWF4RXBzaWxvbihyZXNvbHZlQnJlYWtwb2ludChicCkpfXB4KWApO1xuICBjb25zdCBjb25zdW1lcjogU2lnbmFsPGJvb2xlYW4+ID0gY3JlYXRlQ29uc3VtZXIocXVlcnksIG9wdGlvbnMpO1xuXG4gIGNvbnN1bWVyLnRvU3RyaW5nID0gKCkgPT4gY3JlYXRlQ29uc3VtZXJMYWJlbChgZG93bigke2JwfSlgKTtcblxuICByZXR1cm4gY29uc3VtZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiZXR3ZWVuKG1pbkJwOiBzdHJpbmcsIG1heEJwOiBzdHJpbmcsIG9wdGlvbnM/OiBDcmVhdGVNZWRpYVF1ZXJ5T3B0aW9ucyk6IFNpZ25hbDxib29sZWFuPiB7XG4gIGlzRGV2TW9kZSgpICYmIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dChiZXR3ZWVuKTtcblxuICBjb25zdCBtaW5QeDogbnVtYmVyID0gcmVzb2x2ZUJyZWFrcG9pbnQobWluQnApO1xuICBjb25zdCBtYXhQeDogbnVtYmVyID0gcmVzb2x2ZUJyZWFrcG9pbnQobWF4QnApO1xuICBjb25zdCBxdWVyeTogc3RyaW5nID0gbm9ybWFsaXplUXVlcnkoYChtaW4td2lkdGg6ICR7bWluUHh9cHgpIGFuZCAobWF4LXdpZHRoOiAke2FwcGx5TWF4RXBzaWxvbihtYXhQeCl9cHgpYCk7XG4gIGNvbnN0IGNvbnN1bWVyOiBTaWduYWw8Ym9vbGVhbj4gPSBjcmVhdGVDb25zdW1lcihxdWVyeSwgb3B0aW9ucyk7XG5cbiAgY29uc3VtZXIudG9TdHJpbmcgPSAoKSA9PiBjcmVhdGVDb25zdW1lckxhYmVsKGBiZXR3ZWVuKCR7bWluQnB9LCAke21heEJwfSlgKTtcblxuICByZXR1cm4gY29uc3VtZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcmllbnRhdGlvbih2YWx1ZTogJ3BvcnRyYWl0JyB8ICdsYW5kc2NhcGUnLCBvcHRpb25zPzogQ3JlYXRlTWVkaWFRdWVyeU9wdGlvbnMpOiBTaWduYWw8Ym9vbGVhbj4ge1xuICBpc0Rldk1vZGUoKSAmJiBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQob3JpZW50YXRpb24pO1xuXG4gIGNvbnN0IHF1ZXJ5OiBzdHJpbmcgPSBub3JtYWxpemVRdWVyeShgKG9yaWVudGF0aW9uOiAke3ZhbHVlfSlgKTtcbiAgY29uc3QgY29uc3VtZXI6IFNpZ25hbDxib29sZWFuPiA9IGNyZWF0ZUNvbnN1bWVyKHF1ZXJ5LCBvcHRpb25zKTtcblxuICBjb25zdW1lci50b1N0cmluZyA9ICgpID0+IGNyZWF0ZUNvbnN1bWVyTGFiZWwoYG9yaWVudGF0aW9uKCR7dmFsdWV9KWApO1xuXG4gIHJldHVybiBjb25zdW1lcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbG9yU2NoZW1lKHZhbHVlOiAnbGlnaHQnIHwgJ2RhcmsnLCBvcHRpb25zPzogQ3JlYXRlTWVkaWFRdWVyeU9wdGlvbnMpOiBTaWduYWw8Ym9vbGVhbj4ge1xuICBpc0Rldk1vZGUoKSAmJiBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQoY29sb3JTY2hlbWUpO1xuXG4gIGNvbnN0IHF1ZXJ5OiBzdHJpbmcgPSBub3JtYWxpemVRdWVyeShgKHByZWZlcnMtY29sb3Itc2NoZW1lOiAke3ZhbHVlfSlgKTtcbiAgY29uc3QgY29uc3VtZXI6IFNpZ25hbDxib29sZWFuPiA9IGNyZWF0ZUNvbnN1bWVyKHF1ZXJ5LCBvcHRpb25zKTtcblxuICBjb25zdW1lci50b1N0cmluZyA9ICgpID0+IGNyZWF0ZUNvbnN1bWVyTGFiZWwoYGNvbG9yU2NoZW1lKCR7dmFsdWV9KWApO1xuXG4gIHJldHVybiBjb25zdW1lcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BsYXlNb2RlKHZhbHVlOiBEaXNwbGF5TW9kZU9wdGlvbiwgb3B0aW9ucz86IENyZWF0ZU1lZGlhUXVlcnlPcHRpb25zKTogU2lnbmFsPGJvb2xlYW4+IHtcbiAgaXNEZXZNb2RlKCkgJiYgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0KGRpc3BsYXlNb2RlKTtcblxuICBjb25zdCBxdWVyeSA9IG5vcm1hbGl6ZVF1ZXJ5KGAoZGlzcGxheS1tb2RlOiAke3ZhbHVlfSlgKTtcbiAgY29uc3QgY29uc3VtZXI6IFNpZ25hbDxib29sZWFuPiA9IGNyZWF0ZUNvbnN1bWVyKHF1ZXJ5LCBvcHRpb25zKTtcblxuICBjb25zdW1lci50b1N0cmluZyA9ICgpID0+IGNyZWF0ZUNvbnN1bWVyTGFiZWwoYGRpc3BsYXlNb2RlKCR7dmFsdWV9KWApO1xuXG4gIHJldHVybiBjb25zdW1lcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZHVjZWRNb3Rpb24ob3B0aW9ucz86IENyZWF0ZU1lZGlhUXVlcnlPcHRpb25zKTogU2lnbmFsPGJvb2xlYW4+IHtcbiAgaXNEZXZNb2RlKCkgJiYgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0KHJlZHVjZWRNb3Rpb24pO1xuXG4gIGNvbnN0IHF1ZXJ5OiBzdHJpbmcgPSBub3JtYWxpemVRdWVyeSgnKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSknKTtcbiAgY29uc3QgY29uc3VtZXI6IFNpZ25hbDxib29sZWFuPiA9IGNyZWF0ZUNvbnN1bWVyKHF1ZXJ5LCBvcHRpb25zKTtcblxuICBjb25zdW1lci50b1N0cmluZyA9ICgpID0+IGNyZWF0ZUNvbnN1bWVyTGFiZWwoJ3JlZHVjZWRNb3Rpb24nKTtcblxuICByZXR1cm4gY29uc3VtZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaE1lZGlhU2lnbmFsKHF1ZXJ5OiBzdHJpbmcsIG9wdGlvbnM/OiBDcmVhdGVNZWRpYVF1ZXJ5T3B0aW9ucyk6IFNpZ25hbDxib29sZWFuPiB7XG4gIGlzRGV2TW9kZSgpICYmIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dChtYXRjaE1lZGlhU2lnbmFsKTtcblxuICBjb25zdCBtZWRpYTogc3RyaW5nID0gbm9ybWFsaXplUXVlcnkocXVlcnkpO1xuICBjb25zdCBjb25zdW1lcjogU2lnbmFsPGJvb2xlYW4+ID0gY3JlYXRlQ29uc3VtZXIobWVkaWEsIG9wdGlvbnMpO1xuXG4gIGNvbnN1bWVyLnRvU3RyaW5nID0gKCkgPT4gY3JlYXRlQ29uc3VtZXJMYWJlbChgbWF0Y2hNZWRpYVNpZ25hbCgke3F1ZXJ5fSlgKTtcblxuICByZXR1cm4gY29uc3VtZXI7XG59XG4iXX0=
|
package/esm2022/lib/core.mjs
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import { computed } from '@angular/core';
|
|
1
|
+
import { computed, inject } from '@angular/core';
|
|
2
2
|
import { retainUntilDestroy } from './mql-registry';
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
import { NGX_MQ_SSR_VALUE } from './tokens';
|
|
4
|
+
export function createConsumer(query, options) {
|
|
5
|
+
const defaultSsrValue = inject(NGX_MQ_SSR_VALUE);
|
|
6
|
+
const effectiveSsrValue = options?.ssrValue ?? defaultSsrValue;
|
|
7
|
+
const querySignal = retainUntilDestroy(query, effectiveSsrValue);
|
|
5
8
|
return computed(() => querySignal());
|
|
6
9
|
}
|
|
7
10
|
export function createConsumerLabel(descriptor) {
|
|
8
11
|
return `[NgxMq Signal: ${descriptor}]`;
|
|
9
12
|
}
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvY29yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFNUMsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUFhLEVBQUUsT0FBaUM7SUFDN0UsTUFBTSxlQUFlLEdBQVksTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDMUQsTUFBTSxpQkFBaUIsR0FBWSxPQUFPLEVBQUUsUUFBUSxJQUFJLGVBQWUsQ0FBQztJQUV4RSxNQUFNLFdBQVcsR0FBb0Isa0JBQWtCLENBQUMsS0FBSyxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFFbEYsT0FBTyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztBQUN2QyxDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFVBQWtCO0lBQ3BELE9BQU8sa0JBQWtCLFVBQVUsR0FBRyxDQUFDO0FBQ3pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgaW5qZWN0LCBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHJldGFpblVudGlsRGVzdHJveSB9IGZyb20gJy4vbXFsLXJlZ2lzdHJ5JztcbmltcG9ydCB7IENyZWF0ZU1lZGlhUXVlcnlPcHRpb25zIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgTkdYX01RX1NTUl9WQUxVRSB9IGZyb20gJy4vdG9rZW5zJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbnN1bWVyKHF1ZXJ5OiBzdHJpbmcsIG9wdGlvbnM/OiBDcmVhdGVNZWRpYVF1ZXJ5T3B0aW9ucyk6IFNpZ25hbDxib29sZWFuPiB7XG4gIGNvbnN0IGRlZmF1bHRTc3JWYWx1ZTogYm9vbGVhbiA9IGluamVjdChOR1hfTVFfU1NSX1ZBTFVFKTtcbiAgY29uc3QgZWZmZWN0aXZlU3NyVmFsdWU6IGJvb2xlYW4gPSBvcHRpb25zPy5zc3JWYWx1ZSA/PyBkZWZhdWx0U3NyVmFsdWU7XG5cbiAgY29uc3QgcXVlcnlTaWduYWw6IFNpZ25hbDxib29sZWFuPiA9IHJldGFpblVudGlsRGVzdHJveShxdWVyeSwgZWZmZWN0aXZlU3NyVmFsdWUpO1xuXG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiBxdWVyeVNpZ25hbCgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbnN1bWVyTGFiZWwoZGVzY3JpcHRvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBbTmd4TXEgU2lnbmFsOiAke2Rlc2NyaXB0b3J9XWA7XG59XG4iXX0=
|
package/esm2022/lib/models.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIE1xQnJlYWtwb2ludHMgPSBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIE1xQnJlYWtwb2ludHMgPSBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZU1lZGlhUXVlcnlPcHRpb25zIHtcbiAgLyoqXG4gICAqIFN0YXRpYyBzaWduYWwgdmFsdWUgdXNlZCBkdXJpbmcgU1NSLlxuICAgKi9cbiAgc3NyVmFsdWU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBEaXNwbGF5TW9kZU9wdGlvbiA9XG4gIHwgJ2Jyb3dzZXInXG4gIHwgJ2Z1bGxzY3JlZW4nXG4gIHwgJ3N0YW5kYWxvbmUnXG4gIHwgJ21pbmltYWwtdWknXG4gIHwgJ3dpbmRvdy1jb250cm9scy1vdmVybGF5J1xuICB8ICdwaWN0dXJlLWluLXBpY3R1cmUnO1xuIl19
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { DestroyRef, inject } from '@angular/core';
|
|
2
2
|
import { retain, release } from './mql-registry';
|
|
3
|
-
export function retainUntilDestroy(query) {
|
|
3
|
+
export function retainUntilDestroy(query, ssrValue) {
|
|
4
4
|
const destroyRef = inject(DestroyRef);
|
|
5
|
-
const querySignal = retain(query, destroyRef);
|
|
5
|
+
const querySignal = retain(query, destroyRef, ssrValue);
|
|
6
6
|
destroyRef.onDestroy(() => release(query, destroyRef));
|
|
7
7
|
return querySignal;
|
|
8
8
|
}
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXFsLXJlZ2lzdHJ5LmV4dGVuc2lvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL21xbC1yZWdpc3RyeS9tcWwtcmVnaXN0cnkuZXh0ZW5zaW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxLQUFhLEVBQUUsUUFBaUI7SUFDakUsTUFBTSxVQUFVLEdBQWUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRWxELE1BQU0sV0FBVyxHQUFvQixNQUFNLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUV6RSxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUV2RCxPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgaW5qZWN0LCBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHJldGFpbiwgcmVsZWFzZSB9IGZyb20gJy4vbXFsLXJlZ2lzdHJ5JztcblxuZXhwb3J0IGZ1bmN0aW9uIHJldGFpblVudGlsRGVzdHJveShxdWVyeTogc3RyaW5nLCBzc3JWYWx1ZTogYm9vbGVhbik6IFNpZ25hbDxib29sZWFuPiB7XG4gIGNvbnN0IGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgY29uc3QgcXVlcnlTaWduYWw6IFNpZ25hbDxib29sZWFuPiA9IHJldGFpbihxdWVyeSwgZGVzdHJveVJlZiwgc3NyVmFsdWUpO1xuXG4gIGRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHJlbGVhc2UocXVlcnksIGRlc3Ryb3lSZWYpKTtcblxuICByZXR1cm4gcXVlcnlTaWduYWw7XG59XG4iXX0=
|
|
@@ -12,10 +12,10 @@ const createMqHandle = (query) => {
|
|
|
12
12
|
addChangeListenerToMql(mql, onChange);
|
|
13
13
|
return { mql, signal, onChange, retainers: new Set() };
|
|
14
14
|
};
|
|
15
|
-
export function retain(query, token) {
|
|
16
|
-
// SSR
|
|
15
|
+
export function retain(query, token, ssrValue) {
|
|
16
|
+
// SSR mode
|
|
17
17
|
if (typeof globalThis.matchMedia !== 'function') {
|
|
18
|
-
return createSignal(
|
|
18
|
+
return createSignal(ssrValue).asReadonly();
|
|
19
19
|
}
|
|
20
20
|
const registry = getRegistry();
|
|
21
21
|
let handle = registry.get(query);
|
|
@@ -54,4 +54,4 @@ export function _resetRegistry() {
|
|
|
54
54
|
});
|
|
55
55
|
registry.clear();
|
|
56
56
|
}
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXFsLXJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9tcWwtcmVnaXN0cnkvbXFsLXJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLElBQUksWUFBWSxFQUEwQixNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUcvRixNQUFNLFlBQVksR0FBVyxNQUFNLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFFL0QsTUFBTSxXQUFXLEdBQUcsR0FBZ0IsRUFBRTtJQUNwQyxNQUFNLFdBQVcsR0FBaUMsVUFBVSxDQUFDO0lBRTdELE9BQU8sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxHQUFHLEVBQUUsQ0FBZ0IsQ0FBQztBQUNsRSxDQUFDLENBQUM7QUFFRixNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQWEsRUFBWSxFQUFFO0lBQ2pELE1BQU0sR0FBRyxHQUFtQixVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsTUFBTSxNQUFNLEdBQTRCLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFbEUsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUEyQixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTVGLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUV0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUN6RCxDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsTUFBTSxDQUFDLEtBQWEsRUFBRSxLQUFvQixFQUFFLFFBQWlCO0lBQzNFLFdBQVc7SUFDWCxJQUFJLE9BQU8sVUFBVSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUNoRCxPQUFPLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsTUFBTSxRQUFRLEdBQWdCLFdBQVcsRUFBRSxDQUFDO0lBRTVDLElBQUksTUFBTSxHQUF5QixRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXZELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNaLE1BQU0sR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTVCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUNwQyxDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxLQUFhLEVBQUUsS0FBb0I7SUFDekQsTUFBTSxRQUFRLEdBQWdCLFdBQVcsRUFBRSxDQUFDO0lBRTVDLElBQUksTUFBTSxHQUF5QixRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXZELElBQUksQ0FBQyxNQUFNO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFFMUIsTUFBTSxPQUFPLEdBQVksTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFeEQsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNoQywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6RCxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsWUFBWTtJQUMxQixPQUFPLFdBQVcsRUFBRSxDQUFDO0FBQ3ZCLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxjQUFjO0lBQzVCLE1BQU0sUUFBUSxHQUFnQixXQUFXLEVBQUUsQ0FBQztJQUU1QyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBZ0IsRUFBRSxFQUFFO1FBQ3BDLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNELENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaWduYWwgYXMgY3JlYXRlU2lnbmFsLCBTaWduYWwsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBhZGRDaGFuZ2VMaXN0ZW5lclRvTXFsLCByZW1vdmVDaGFuZ2VMaXN0ZW5lckZyb21NcWwgfSBmcm9tICcuL21xbC1yZWdpc3RyeS5saXN0ZW5lcnMnO1xuaW1wb3J0IHsgTXFsUmVnaXN0cnksIE1xUmV0YWluVG9rZW4sIE1xSGFuZGxlIH0gZnJvbSAnLi9tcWwtcmVnaXN0cnkubW9kZWxzJztcblxuY29uc3QgUkVHSVNUUllfS0VZOiBzeW1ib2wgPSBTeW1ib2wuZm9yKCduZ3gtbXE6bXFsLXJlZ2lzdHJ5Jyk7XG5cbmNvbnN0IGdldFJlZ2lzdHJ5ID0gKCk6IE1xbFJlZ2lzdHJ5ID0+IHtcbiAgY29uc3QgcmVhbG1HbG9iYWw6IFJlY29yZDxQcm9wZXJ0eUtleSwgdW5rbm93bj4gPSBnbG9iYWxUaGlzO1xuXG4gIHJldHVybiAocmVhbG1HbG9iYWxbUkVHSVNUUllfS0VZXSA/Pz0gbmV3IE1hcCgpKSBhcyBNcWxSZWdpc3RyeTtcbn07XG5cbmNvbnN0IGNyZWF0ZU1xSGFuZGxlID0gKHF1ZXJ5OiBzdHJpbmcpOiBNcUhhbmRsZSA9PiB7XG4gIGNvbnN0IG1xbDogTWVkaWFRdWVyeUxpc3QgPSBtYXRjaE1lZGlhKHF1ZXJ5KTtcbiAgY29uc3Qgc2lnbmFsOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IGNyZWF0ZVNpZ25hbChtcWwubWF0Y2hlcyk7XG5cbiAgY29uc3Qgb25DaGFuZ2UgPSAoZXZlbnQ/OiBNZWRpYVF1ZXJ5TGlzdEV2ZW50KSA9PiBzaWduYWwuc2V0KGV2ZW50Py5tYXRjaGVzID8/IG1xbC5tYXRjaGVzKTtcblxuICBhZGRDaGFuZ2VMaXN0ZW5lclRvTXFsKG1xbCwgb25DaGFuZ2UpO1xuXG4gIHJldHVybiB7IG1xbCwgc2lnbmFsLCBvbkNoYW5nZSwgcmV0YWluZXJzOiBuZXcgU2V0KCkgfTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZXRhaW4ocXVlcnk6IHN0cmluZywgdG9rZW46IE1xUmV0YWluVG9rZW4sIHNzclZhbHVlOiBib29sZWFuKTogU2lnbmFsPGJvb2xlYW4+IHtcbiAgLy8gU1NSIG1vZGVcbiAgaWYgKHR5cGVvZiBnbG9iYWxUaGlzLm1hdGNoTWVkaWEgIT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gY3JlYXRlU2lnbmFsKHNzclZhbHVlKS5hc1JlYWRvbmx5KCk7XG4gIH1cblxuICBjb25zdCByZWdpc3RyeTogTXFsUmVnaXN0cnkgPSBnZXRSZWdpc3RyeSgpO1xuXG4gIGxldCBoYW5kbGU6IE1xSGFuZGxlIHwgdW5kZWZpbmVkID0gcmVnaXN0cnkuZ2V0KHF1ZXJ5KTtcblxuICBpZiAoIWhhbmRsZSkge1xuICAgIGhhbmRsZSA9IGNyZWF0ZU1xSGFuZGxlKHF1ZXJ5KTtcbiAgICByZWdpc3RyeS5zZXQocXVlcnksIGhhbmRsZSk7XG4gIH1cblxuICBoYW5kbGUucmV0YWluZXJzLmFkZCh0b2tlbik7XG5cbiAgcmV0dXJuIGhhbmRsZS5zaWduYWwuYXNSZWFkb25seSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVsZWFzZShxdWVyeTogc3RyaW5nLCB0b2tlbjogTXFSZXRhaW5Ub2tlbik6IGJvb2xlYW4ge1xuICBjb25zdCByZWdpc3RyeTogTXFsUmVnaXN0cnkgPSBnZXRSZWdpc3RyeSgpO1xuXG4gIGxldCBoYW5kbGU6IE1xSGFuZGxlIHwgdW5kZWZpbmVkID0gcmVnaXN0cnkuZ2V0KHF1ZXJ5KTtcblxuICBpZiAoIWhhbmRsZSkgcmV0dXJuIGZhbHNlO1xuXG4gIGNvbnN0IHJlbW92ZWQ6IGJvb2xlYW4gPSBoYW5kbGUucmV0YWluZXJzLmRlbGV0ZSh0b2tlbik7XG5cbiAgaWYgKGhhbmRsZS5yZXRhaW5lcnMuc2l6ZSA9PT0gMCkge1xuICAgIHJlbW92ZUNoYW5nZUxpc3RlbmVyRnJvbU1xbChoYW5kbGUubXFsLCBoYW5kbGUub25DaGFuZ2UpO1xuICAgIHJlZ2lzdHJ5LmRlbGV0ZShxdWVyeSk7XG4gIH1cblxuICByZXR1cm4gcmVtb3ZlZDtcbn1cblxuLyogQGludGVybmFsXG4gKiBSZXR1cm5zIHRoZSBjdXJyZW50IHJlZ2lzdHJ5ICh1c2VkIG9ubHkgaW4gdGVzdHMpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gX2dldFJlZ2lzdHJ5KCk6IE1xbFJlZ2lzdHJ5IHtcbiAgcmV0dXJuIGdldFJlZ2lzdHJ5KCk7XG59XG5cbi8qIEBpbnRlcm5hbFxuICogQ2xlYXJzIGFsbCByZWdpc3RyeSBlbnRyaWVzIGFuZCByZW1vdmVzIG1lZGlhLXF1ZXJ5IGxpc3RlbmVycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9yZXNldFJlZ2lzdHJ5KCk6IHZvaWQge1xuICBjb25zdCByZWdpc3RyeTogTXFsUmVnaXN0cnkgPSBnZXRSZWdpc3RyeSgpO1xuXG4gIHJlZ2lzdHJ5LmZvckVhY2goKGhhbmRsZTogTXFIYW5kbGUpID0+IHtcbiAgICByZW1vdmVDaGFuZ2VMaXN0ZW5lckZyb21NcWwoaGFuZGxlLm1xbCwgaGFuZGxlLm9uQ2hhbmdlKTtcbiAgfSk7XG5cbiAgcmVnaXN0cnkuY2xlYXIoKTtcbn1cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isDevMode } from '@angular/core';
|
|
2
|
-
import { MQ_BREAKPOINT_EPSILON, MQ_BREAKPOINTS } from './tokens';
|
|
2
|
+
import { MQ_BREAKPOINT_EPSILON, MQ_BREAKPOINTS, NGX_MQ_SSR_VALUE } from './tokens';
|
|
3
3
|
import { normalizeBreakpoints, validateEpsilon } from './utils/breakpoints.utils';
|
|
4
4
|
import { BOOTSTRAP_BREAKPOINTS, DEFAULT_BREAKPOINT_EPSILON, MATERIAL_BREAKPOINTS, TAILWIND_BREAKPOINTS, } from './constants';
|
|
5
5
|
export function provideBreakpoints(bps) {
|
|
@@ -19,4 +19,7 @@ export function provideBreakpointEpsilon(epsilon = DEFAULT_BREAKPOINT_EPSILON) {
|
|
|
19
19
|
validateEpsilon(epsilon);
|
|
20
20
|
return { provide: MQ_BREAKPOINT_EPSILON, useValue: epsilon };
|
|
21
21
|
}
|
|
22
|
-
|
|
22
|
+
export function provideSsrValue(value) {
|
|
23
|
+
return { provide: NGX_MQ_SSR_VALUE, useValue: value };
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9wcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVsRixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLDBCQUEwQixFQUMxQixvQkFBb0IsRUFDcEIsb0JBQW9CLEdBQ3JCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxHQUFrQjtJQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztBQUMxRSxDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQjtJQUN4QyxPQUFPLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFDbEQsQ0FBQztBQUVELE1BQU0sVUFBVSwyQkFBMkI7SUFDekMsT0FBTyxrQkFBa0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFFRCxNQUFNLFVBQVUsMEJBQTBCO0lBQ3hDLE9BQU8sa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUFDLFVBQWtCLDBCQUEwQjtJQUNuRixJQUFJLFNBQVMsRUFBRTtRQUFFLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUUxQyxPQUFPLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUMvRCxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxLQUFjO0lBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ3hELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0Rldk1vZGUsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNUV9CUkVBS1BPSU5UX0VQU0lMT04sIE1RX0JSRUFLUE9JTlRTLCBOR1hfTVFfU1NSX1ZBTFVFIH0gZnJvbSAnLi90b2tlbnMnO1xuaW1wb3J0IHsgbm9ybWFsaXplQnJlYWtwb2ludHMsIHZhbGlkYXRlRXBzaWxvbiB9IGZyb20gJy4vdXRpbHMvYnJlYWtwb2ludHMudXRpbHMnO1xuaW1wb3J0IHsgTXFCcmVha3BvaW50cyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7XG4gIEJPT1RTVFJBUF9CUkVBS1BPSU5UUyxcbiAgREVGQVVMVF9CUkVBS1BPSU5UX0VQU0lMT04sXG4gIE1BVEVSSUFMX0JSRUFLUE9JTlRTLFxuICBUQUlMV0lORF9CUkVBS1BPSU5UUyxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUJyZWFrcG9pbnRzKGJwczogTXFCcmVha3BvaW50cyk6IFByb3ZpZGVyIHtcbiAgcmV0dXJuIHsgcHJvdmlkZTogTVFfQlJFQUtQT0lOVFMsIHVzZVZhbHVlOiBub3JtYWxpemVCcmVha3BvaW50cyhicHMpIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlVGFpbHdpbmRCcmVha3BvaW50cygpOiBQcm92aWRlciB7XG4gIHJldHVybiBwcm92aWRlQnJlYWtwb2ludHMoVEFJTFdJTkRfQlJFQUtQT0lOVFMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUJvb3RzdHJhcEJyZWFrcG9pbnRzKCk6IFByb3ZpZGVyIHtcbiAgcmV0dXJuIHByb3ZpZGVCcmVha3BvaW50cyhCT09UU1RSQVBfQlJFQUtQT0lOVFMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZU1hdGVyaWFsQnJlYWtwb2ludHMoKTogUHJvdmlkZXIge1xuICByZXR1cm4gcHJvdmlkZUJyZWFrcG9pbnRzKE1BVEVSSUFMX0JSRUFLUE9JTlRTKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVCcmVha3BvaW50RXBzaWxvbihlcHNpbG9uOiBudW1iZXIgPSBERUZBVUxUX0JSRUFLUE9JTlRfRVBTSUxPTik6IFByb3ZpZGVyIHtcbiAgaWYgKGlzRGV2TW9kZSgpKSB2YWxpZGF0ZUVwc2lsb24oZXBzaWxvbik7XG5cbiAgcmV0dXJuIHsgcHJvdmlkZTogTVFfQlJFQUtQT0lOVF9FUFNJTE9OLCB1c2VWYWx1ZTogZXBzaWxvbiB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVNzclZhbHVlKHZhbHVlOiBib29sZWFuKTogUHJvdmlkZXIge1xuICByZXR1cm4geyBwcm92aWRlOiBOR1hfTVFfU1NSX1ZBTFVFLCB1c2VWYWx1ZTogdmFsdWUgfTtcbn1cbiJdfQ==
|
package/esm2022/lib/tokens.mjs
CHANGED
|
@@ -5,4 +5,8 @@ export const MQ_BREAKPOINT_EPSILON = new InjectionToken('MQ_BREAKPOINT_EPSILON',
|
|
|
5
5
|
providedIn: 'root',
|
|
6
6
|
factory: () => DEFAULT_BREAKPOINT_EPSILON,
|
|
7
7
|
});
|
|
8
|
-
|
|
8
|
+
export const NGX_MQ_SSR_VALUE = new InjectionToken('NGX_MQ_SSR_VALUE', {
|
|
9
|
+
providedIn: 'root',
|
|
10
|
+
factory: () => false,
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHekQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFrQyxJQUFJLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBRWxHLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUEyQixJQUFJLGNBQWMsQ0FBQyx1QkFBdUIsRUFBRTtJQUN2RyxVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsMEJBQTBCO0NBQzFDLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUE0QixJQUFJLGNBQWMsQ0FBQyxrQkFBa0IsRUFBRTtJQUM5RixVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSztDQUNyQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgREVGQVVMVF9CUkVBS1BPSU5UX0VQU0lMT04gfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBNcUJyZWFrcG9pbnRzIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5leHBvcnQgY29uc3QgTVFfQlJFQUtQT0lOVFM6IEluamVjdGlvblRva2VuPE1xQnJlYWtwb2ludHM+ID0gbmV3IEluamVjdGlvblRva2VuKCdNUV9CUkVBS1BPSU5UUycpO1xuXG5leHBvcnQgY29uc3QgTVFfQlJFQUtQT0lOVF9FUFNJTE9OOiBJbmplY3Rpb25Ub2tlbjxudW1iZXI+ID0gbmV3IEluamVjdGlvblRva2VuKCdNUV9CUkVBS1BPSU5UX0VQU0lMT04nLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4gREVGQVVMVF9CUkVBS1BPSU5UX0VQU0lMT04sXG59KTtcblxuZXhwb3J0IGNvbnN0IE5HWF9NUV9TU1JfVkFMVUU6IEluamVjdGlvblRva2VuPGJvb2xlYW4+ID0gbmV3IEluamVjdGlvblRva2VuKCdOR1hfTVFfU1NSX1ZBTFVFJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IGZhbHNlLFxufSk7XG4iXX0=
|
package/fesm2022/ngx-mq.mjs
CHANGED
|
@@ -27,6 +27,10 @@ const MQ_BREAKPOINT_EPSILON = new InjectionToken('MQ_BREAKPOINT_EPSILON', {
|
|
|
27
27
|
providedIn: 'root',
|
|
28
28
|
factory: () => DEFAULT_BREAKPOINT_EPSILON,
|
|
29
29
|
});
|
|
30
|
+
const NGX_MQ_SSR_VALUE = new InjectionToken('NGX_MQ_SSR_VALUE', {
|
|
31
|
+
providedIn: 'root',
|
|
32
|
+
factory: () => false,
|
|
33
|
+
});
|
|
30
34
|
|
|
31
35
|
function assertBreakpointsProvided() {
|
|
32
36
|
const breakpoints = inject(MQ_BREAKPOINTS, { optional: true });
|
|
@@ -108,10 +112,10 @@ const createMqHandle = (query) => {
|
|
|
108
112
|
addChangeListenerToMql(mql, onChange);
|
|
109
113
|
return { mql, signal: signal$1, onChange, retainers: new Set() };
|
|
110
114
|
};
|
|
111
|
-
function retain(query, token) {
|
|
112
|
-
// SSR
|
|
115
|
+
function retain(query, token, ssrValue) {
|
|
116
|
+
// SSR mode
|
|
113
117
|
if (typeof globalThis.matchMedia !== 'function') {
|
|
114
|
-
return signal(
|
|
118
|
+
return signal(ssrValue).asReadonly();
|
|
115
119
|
}
|
|
116
120
|
const registry = getRegistry();
|
|
117
121
|
let handle = registry.get(query);
|
|
@@ -151,15 +155,17 @@ function _resetRegistry() {
|
|
|
151
155
|
registry.clear();
|
|
152
156
|
}
|
|
153
157
|
|
|
154
|
-
function retainUntilDestroy(query) {
|
|
158
|
+
function retainUntilDestroy(query, ssrValue) {
|
|
155
159
|
const destroyRef = inject(DestroyRef);
|
|
156
|
-
const querySignal = retain(query, destroyRef);
|
|
160
|
+
const querySignal = retain(query, destroyRef, ssrValue);
|
|
157
161
|
destroyRef.onDestroy(() => release(query, destroyRef));
|
|
158
162
|
return querySignal;
|
|
159
163
|
}
|
|
160
164
|
|
|
161
|
-
function createConsumer(query) {
|
|
162
|
-
const
|
|
165
|
+
function createConsumer(query, options) {
|
|
166
|
+
const defaultSsrValue = inject(NGX_MQ_SSR_VALUE);
|
|
167
|
+
const effectiveSsrValue = options?.ssrValue ?? defaultSsrValue;
|
|
168
|
+
const querySignal = retainUntilDestroy(query, effectiveSsrValue);
|
|
163
169
|
return computed(() => querySignal());
|
|
164
170
|
}
|
|
165
171
|
function createConsumerLabel(descriptor) {
|
|
@@ -170,54 +176,61 @@ function normalizeQuery(value) {
|
|
|
170
176
|
return value.trim().replace(/\s+/g, ' ').toLowerCase();
|
|
171
177
|
}
|
|
172
178
|
|
|
173
|
-
function up(bp) {
|
|
179
|
+
function up(bp, options) {
|
|
174
180
|
isDevMode() && assertInInjectionContext(up);
|
|
175
181
|
const query = normalizeQuery(`(min-width: ${resolveBreakpoint(bp)}px)`);
|
|
176
|
-
const consumer = createConsumer(query);
|
|
182
|
+
const consumer = createConsumer(query, options);
|
|
177
183
|
consumer.toString = () => createConsumerLabel(`up(${bp})`);
|
|
178
184
|
return consumer;
|
|
179
185
|
}
|
|
180
|
-
function down(bp) {
|
|
186
|
+
function down(bp, options) {
|
|
181
187
|
isDevMode() && assertInInjectionContext(down);
|
|
182
188
|
const query = normalizeQuery(`(max-width: ${applyMaxEpsilon(resolveBreakpoint(bp))}px)`);
|
|
183
|
-
const consumer = createConsumer(query);
|
|
189
|
+
const consumer = createConsumer(query, options);
|
|
184
190
|
consumer.toString = () => createConsumerLabel(`down(${bp})`);
|
|
185
191
|
return consumer;
|
|
186
192
|
}
|
|
187
|
-
function between(minBp, maxBp) {
|
|
193
|
+
function between(minBp, maxBp, options) {
|
|
188
194
|
isDevMode() && assertInInjectionContext(between);
|
|
189
195
|
const minPx = resolveBreakpoint(minBp);
|
|
190
196
|
const maxPx = resolveBreakpoint(maxBp);
|
|
191
197
|
const query = normalizeQuery(`(min-width: ${minPx}px) and (max-width: ${applyMaxEpsilon(maxPx)}px)`);
|
|
192
|
-
const consumer = createConsumer(query);
|
|
198
|
+
const consumer = createConsumer(query, options);
|
|
193
199
|
consumer.toString = () => createConsumerLabel(`between(${minBp}, ${maxBp})`);
|
|
194
200
|
return consumer;
|
|
195
201
|
}
|
|
196
|
-
function orientation(
|
|
202
|
+
function orientation(value, options) {
|
|
197
203
|
isDevMode() && assertInInjectionContext(orientation);
|
|
198
|
-
const query = normalizeQuery(`(orientation: ${
|
|
199
|
-
const consumer = createConsumer(query);
|
|
200
|
-
consumer.toString = () => createConsumerLabel(`orientation(${
|
|
204
|
+
const query = normalizeQuery(`(orientation: ${value})`);
|
|
205
|
+
const consumer = createConsumer(query, options);
|
|
206
|
+
consumer.toString = () => createConsumerLabel(`orientation(${value})`);
|
|
201
207
|
return consumer;
|
|
202
208
|
}
|
|
203
|
-
function colorScheme(
|
|
209
|
+
function colorScheme(value, options) {
|
|
204
210
|
isDevMode() && assertInInjectionContext(colorScheme);
|
|
205
|
-
const query = normalizeQuery(`(prefers-color-scheme: ${
|
|
206
|
-
const consumer = createConsumer(query);
|
|
207
|
-
consumer.toString = () => createConsumerLabel(`colorScheme(${
|
|
211
|
+
const query = normalizeQuery(`(prefers-color-scheme: ${value})`);
|
|
212
|
+
const consumer = createConsumer(query, options);
|
|
213
|
+
consumer.toString = () => createConsumerLabel(`colorScheme(${value})`);
|
|
208
214
|
return consumer;
|
|
209
215
|
}
|
|
210
|
-
function displayMode(
|
|
216
|
+
function displayMode(value, options) {
|
|
211
217
|
isDevMode() && assertInInjectionContext(displayMode);
|
|
212
|
-
const query = normalizeQuery(`(display-mode: ${
|
|
213
|
-
const consumer = createConsumer(query);
|
|
214
|
-
consumer.toString = () => createConsumerLabel(`displayMode(${
|
|
218
|
+
const query = normalizeQuery(`(display-mode: ${value})`);
|
|
219
|
+
const consumer = createConsumer(query, options);
|
|
220
|
+
consumer.toString = () => createConsumerLabel(`displayMode(${value})`);
|
|
215
221
|
return consumer;
|
|
216
222
|
}
|
|
217
|
-
function
|
|
223
|
+
function reducedMotion(options) {
|
|
224
|
+
isDevMode() && assertInInjectionContext(reducedMotion);
|
|
225
|
+
const query = normalizeQuery('(prefers-reduced-motion: reduce)');
|
|
226
|
+
const consumer = createConsumer(query, options);
|
|
227
|
+
consumer.toString = () => createConsumerLabel('reducedMotion');
|
|
228
|
+
return consumer;
|
|
229
|
+
}
|
|
230
|
+
function matchMediaSignal(query, options) {
|
|
218
231
|
isDevMode() && assertInInjectionContext(matchMediaSignal);
|
|
219
232
|
const media = normalizeQuery(query);
|
|
220
|
-
const consumer = createConsumer(media);
|
|
233
|
+
const consumer = createConsumer(media, options);
|
|
221
234
|
consumer.toString = () => createConsumerLabel(`matchMediaSignal(${query})`);
|
|
222
235
|
return consumer;
|
|
223
236
|
}
|
|
@@ -239,10 +252,13 @@ function provideBreakpointEpsilon(epsilon = DEFAULT_BREAKPOINT_EPSILON) {
|
|
|
239
252
|
validateEpsilon(epsilon);
|
|
240
253
|
return { provide: MQ_BREAKPOINT_EPSILON, useValue: epsilon };
|
|
241
254
|
}
|
|
255
|
+
function provideSsrValue(value) {
|
|
256
|
+
return { provide: NGX_MQ_SSR_VALUE, useValue: value };
|
|
257
|
+
}
|
|
242
258
|
|
|
243
259
|
/**
|
|
244
260
|
* Generated bundle index. Do not edit.
|
|
245
261
|
*/
|
|
246
262
|
|
|
247
|
-
export { MQ_BREAKPOINTS, MQ_BREAKPOINT_EPSILON, between, colorScheme, displayMode, down, matchMediaSignal, orientation, provideBootstrapBreakpoints, provideBreakpointEpsilon, provideBreakpoints, provideMaterialBreakpoints, provideTailwindBreakpoints, up };
|
|
263
|
+
export { MQ_BREAKPOINTS, MQ_BREAKPOINT_EPSILON, NGX_MQ_SSR_VALUE, between, colorScheme, displayMode, down, matchMediaSignal, orientation, provideBootstrapBreakpoints, provideBreakpointEpsilon, provideBreakpoints, provideMaterialBreakpoints, provideSsrValue, provideTailwindBreakpoints, reducedMotion, up };
|
|
248
264
|
//# sourceMappingURL=ngx-mq.mjs.map
|
package/fesm2022/ngx-mq.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-mq.mjs","sources":["../../src/lib/constants.ts","../../src/lib/tokens.ts","../../src/lib/utils/breakpoints.utils.ts","../../src/lib/mql-registry/mql-registry.listeners.ts","../../src/lib/mql-registry/mql-registry.ts","../../src/lib/mql-registry/mql-registry.extensions.ts","../../src/lib/core.ts","../../src/lib/utils/common.utils.ts","../../src/lib/api.ts","../../src/lib/providers.ts","../../src/ngx-mq.ts"],"sourcesContent":["import { MqBreakpoints } from './models';\n\nexport const TAILWIND_BREAKPOINTS: MqBreakpoints = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n '2xl': 1536,\n};\n\nexport const BOOTSTRAP_BREAKPOINTS: MqBreakpoints = {\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1400,\n};\n\nexport const MATERIAL_BREAKPOINTS: MqBreakpoints = {\n sm: 600,\n md: 905,\n lg: 1240,\n xl: 1440,\n};\n\nexport const DEFAULT_BREAKPOINT_EPSILON: number = 0.02;\n","import { InjectionToken } from '@angular/core';\nimport { DEFAULT_BREAKPOINT_EPSILON } from './constants';\nimport { MqBreakpoints } from './models';\n\nexport const MQ_BREAKPOINTS: InjectionToken<MqBreakpoints> = new InjectionToken('MQ_BREAKPOINTS');\n\nexport const MQ_BREAKPOINT_EPSILON: InjectionToken<number> = new InjectionToken('MQ_BREAKPOINT_EPSILON', {\n providedIn: 'root',\n factory: () => DEFAULT_BREAKPOINT_EPSILON,\n});\n","import { inject, isDevMode } from '@angular/core';\nimport { MQ_BREAKPOINT_EPSILON, MQ_BREAKPOINTS } from '../tokens';\nimport { MqBreakpoints } from '../models';\n\nfunction assertBreakpointsProvided(): MqBreakpoints {\n const breakpoints: MqBreakpoints | null = inject(MQ_BREAKPOINTS, { optional: true });\n\n if (isDevMode() && !breakpoints) {\n throw new Error(\n '[ngx-mq]: No breakpoints provided.\\n' +\n 'Please configure your app with provideBreakpoints(), ' +\n 'or use one of the built-in presets: ' +\n 'provideTailwindBreakpoints(), provideBootstrapBreakpoints(), provideMaterialBreakpoints().'\n );\n }\n\n return breakpoints!;\n}\n\nfunction assertBreakpointExists(bp: string, breakpoints: MqBreakpoints): number {\n if (isDevMode() && !(bp in breakpoints)) {\n throw new Error(\n `[ngx-mq]: Breakpoint \"${bp}\" not found in provided configuration.\\n` +\n `Available breakpoints: ${Object.keys(breakpoints).join(', ')}.`\n );\n }\n\n return breakpoints[bp];\n}\n\nexport function resolveBreakpoint(bp: string): number {\n const breakpoints: MqBreakpoints = assertBreakpointsProvided();\n\n return assertBreakpointExists(bp, breakpoints);\n}\n\nexport function normalizeBreakpoints(bps: MqBreakpoints): Readonly<MqBreakpoints> {\n const out: Record<string, number> = {};\n\n for (const [rawKey, value] of Object.entries(bps)) {\n const key = rawKey.trim();\n\n if (isDevMode()) {\n if (!Number.isFinite(value)) {\n throw new Error(`[ngx-mq] Breakpoint \"${key}\" must be a finite number, got ${value}.`);\n }\n\n if (value <= 0) {\n throw new Error(`[ngx-mq] Breakpoint \"${key}\" must be > 0, got ${value}.`);\n }\n }\n\n out[key] = value;\n }\n\n return Object.freeze(out);\n}\n\nexport function validateEpsilon(epsilon: number): void {\n if (!Number.isFinite(epsilon) || epsilon <= 0 || epsilon > 1) {\n throw new Error(`[ngx-mq] Epsilon must be in (0, 1]. Got: ${epsilon}`);\n }\n}\n\nexport function applyMaxEpsilon(value: number): number {\n const epsilon: number = inject(MQ_BREAKPOINT_EPSILON, { optional: true }) ?? 0.02;\n\n return value - epsilon;\n}\n","export function addChangeListenerToMql(mql: MediaQueryList, onChange: (event?: MediaQueryListEvent) => void): void {\n if (typeof mql.addEventListener === 'function') {\n // Modern browsers\n mql.addEventListener('change', onChange);\n } else {\n // Legacy fallback (Safari < 14)\n (mql as any).addListener(onChange);\n }\n}\n\nexport function removeChangeListenerFromMql(\n mql: MediaQueryList,\n onChange: (event?: MediaQueryListEvent) => void\n): void {\n if (typeof mql.removeEventListener === 'function') {\n // Modern browsers\n mql.removeEventListener('change', onChange);\n } else {\n // Legacy fallback (Safari < 14)\n (mql as any).removeListener(onChange);\n }\n}\n","import { signal as createSignal, Signal, WritableSignal } from '@angular/core';\nimport { addChangeListenerToMql, removeChangeListenerFromMql } from './mql-registry.listeners';\nimport { MqlRegistry, MqRetainToken, MqHandle } from './mql-registry.models';\n\nconst REGISTRY_KEY: symbol = Symbol.for('ngx-mq:mql-registry');\n\nconst getRegistry = (): MqlRegistry => {\n const realmGlobal: Record<PropertyKey, unknown> = globalThis;\n\n return (realmGlobal[REGISTRY_KEY] ??= new Map()) as MqlRegistry;\n};\n\nconst createMqHandle = (query: string): MqHandle => {\n const mql: MediaQueryList = matchMedia(query);\n const signal: WritableSignal<boolean> = createSignal(mql.matches);\n\n const onChange = (event?: MediaQueryListEvent) => signal.set(event?.matches ?? mql.matches);\n\n addChangeListenerToMql(mql, onChange);\n\n return { mql, signal, onChange, retainers: new Set() };\n};\n\nexport function retain(query: string, token: MqRetainToken): Signal<boolean> {\n // SSR-safe fallback\n if (typeof globalThis.matchMedia !== 'function') {\n return createSignal(false).asReadonly();\n }\n\n const registry: MqlRegistry = getRegistry();\n\n let handle: MqHandle | undefined = registry.get(query);\n\n if (!handle) {\n handle = createMqHandle(query);\n registry.set(query, handle);\n }\n\n handle.retainers.add(token);\n\n return handle.signal.asReadonly();\n}\n\nexport function release(query: string, token: MqRetainToken): boolean {\n const registry: MqlRegistry = getRegistry();\n\n let handle: MqHandle | undefined = registry.get(query);\n\n if (!handle) return false;\n\n const removed: boolean = handle.retainers.delete(token);\n\n if (handle.retainers.size === 0) {\n removeChangeListenerFromMql(handle.mql, handle.onChange);\n registry.delete(query);\n }\n\n return removed;\n}\n\n/* @internal\n * Returns the current registry (used only in tests).\n */\nexport function _getRegistry(): MqlRegistry {\n return getRegistry();\n}\n\n/* @internal\n * Clears all registry entries and removes media-query listeners.\n */\nexport function _resetRegistry(): void {\n const registry: MqlRegistry = getRegistry();\n\n registry.forEach((handle: MqHandle) => {\n removeChangeListenerFromMql(handle.mql, handle.onChange);\n });\n\n registry.clear();\n}\n","import { DestroyRef, inject, Signal } from '@angular/core';\nimport { retain, release } from './mql-registry';\n\nexport function retainUntilDestroy(query: string): Signal<boolean> {\n const destroyRef: DestroyRef = inject(DestroyRef);\n\n const querySignal: Signal<boolean> = retain(query, destroyRef);\n\n destroyRef.onDestroy(() => release(query, destroyRef));\n\n return querySignal;\n}\n","import { computed, Signal } from '@angular/core';\nimport { retainUntilDestroy } from './mql-registry';\n\nexport function createConsumer(query: string): Signal<boolean> {\n const querySignal: Signal<boolean> = retainUntilDestroy(query);\n\n return computed(() => querySignal());\n}\n\nexport function createConsumerLabel(descriptor: string): string {\n return `[NgxMq Signal: ${descriptor}]`;\n}\n","export function normalizeQuery(value: string): string {\n return value.trim().replace(/\\s+/g, ' ').toLowerCase();\n}\n","import { assertInInjectionContext, isDevMode, Signal } from '@angular/core';\nimport { applyMaxEpsilon, resolveBreakpoint } from './utils/breakpoints.utils';\nimport { createConsumer, createConsumerLabel } from './core';\nimport { normalizeQuery } from './utils/common.utils';\nimport { DisplayModeOption } from './models';\n\nexport function up(bp: string): Signal<boolean> {\n isDevMode() && assertInInjectionContext(up);\n\n const query: string = normalizeQuery(`(min-width: ${resolveBreakpoint(bp)}px)`);\n const consumer: Signal<boolean> = createConsumer(query);\n\n consumer.toString = () => createConsumerLabel(`up(${bp})`);\n\n return consumer;\n}\n\nexport function down(bp: string): Signal<boolean> {\n isDevMode() && assertInInjectionContext(down);\n\n const query: string = normalizeQuery(`(max-width: ${applyMaxEpsilon(resolveBreakpoint(bp))}px)`);\n const consumer: Signal<boolean> = createConsumer(query);\n\n consumer.toString = () => createConsumerLabel(`down(${bp})`);\n\n return consumer;\n}\n\nexport function between(minBp: string, maxBp: string): Signal<boolean> {\n isDevMode() && assertInInjectionContext(between);\n\n const minPx: number = resolveBreakpoint(minBp);\n const maxPx: number = resolveBreakpoint(maxBp);\n const query: string = normalizeQuery(`(min-width: ${minPx}px) and (max-width: ${applyMaxEpsilon(maxPx)}px)`);\n const consumer: Signal<boolean> = createConsumer(query);\n\n consumer.toString = () => createConsumerLabel(`between(${minBp}, ${maxBp})`);\n\n return consumer;\n}\n\nexport function orientation(option: 'portrait' | 'landscape'): Signal<boolean> {\n isDevMode() && assertInInjectionContext(orientation);\n\n const query: string = normalizeQuery(`(orientation: ${option})`);\n const consumer: Signal<boolean> = createConsumer(query);\n\n consumer.toString = () => createConsumerLabel(`orientation(${option})`);\n\n return consumer;\n}\n\nexport function colorScheme(option: 'light' | 'dark'): Signal<boolean> {\n isDevMode() && assertInInjectionContext(colorScheme);\n\n const query: string = normalizeQuery(`(prefers-color-scheme: ${option})`);\n const consumer: Signal<boolean> = createConsumer(query);\n\n consumer.toString = () => createConsumerLabel(`colorScheme(${option})`);\n\n return consumer;\n}\n\nexport function displayMode(option: DisplayModeOption): Signal<boolean> {\n isDevMode() && assertInInjectionContext(displayMode);\n\n const query = normalizeQuery(`(display-mode: ${option})`);\n const consumer: Signal<boolean> = createConsumer(query);\n\n consumer.toString = () => createConsumerLabel(`displayMode(${option})`);\n\n return consumer;\n}\n\nexport function matchMediaSignal(query: string): Signal<boolean> {\n isDevMode() && assertInInjectionContext(matchMediaSignal);\n\n const media: string = normalizeQuery(query);\n const consumer: Signal<boolean> = createConsumer(media);\n\n consumer.toString = () => createConsumerLabel(`matchMediaSignal(${query})`);\n\n return consumer;\n}\n","import { isDevMode, Provider } from '@angular/core';\nimport { MQ_BREAKPOINT_EPSILON, MQ_BREAKPOINTS } from './tokens';\nimport { normalizeBreakpoints, validateEpsilon } from './utils/breakpoints.utils';\nimport { MqBreakpoints } from './models';\nimport {\n BOOTSTRAP_BREAKPOINTS,\n DEFAULT_BREAKPOINT_EPSILON,\n MATERIAL_BREAKPOINTS,\n TAILWIND_BREAKPOINTS,\n} from './constants';\n\nexport function provideBreakpoints(bps: MqBreakpoints): Provider {\n return { provide: MQ_BREAKPOINTS, useValue: normalizeBreakpoints(bps) };\n}\n\nexport function provideTailwindBreakpoints(): Provider {\n return provideBreakpoints(TAILWIND_BREAKPOINTS);\n}\n\nexport function provideBootstrapBreakpoints(): Provider {\n return provideBreakpoints(BOOTSTRAP_BREAKPOINTS);\n}\n\nexport function provideMaterialBreakpoints(): Provider {\n return provideBreakpoints(MATERIAL_BREAKPOINTS);\n}\n\nexport function provideBreakpointEpsilon(epsilon: number = DEFAULT_BREAKPOINT_EPSILON): Provider {\n if (isDevMode()) validateEpsilon(epsilon);\n\n return { provide: MQ_BREAKPOINT_EPSILON, useValue: epsilon };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["signal","createSignal"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-mq.mjs","sources":["../../src/lib/constants.ts","../../src/lib/tokens.ts","../../src/lib/utils/breakpoints.utils.ts","../../src/lib/mql-registry/mql-registry.listeners.ts","../../src/lib/mql-registry/mql-registry.ts","../../src/lib/mql-registry/mql-registry.extensions.ts","../../src/lib/core.ts","../../src/lib/utils/common.utils.ts","../../src/lib/api.ts","../../src/lib/providers.ts","../../src/ngx-mq.ts"],"sourcesContent":["import { MqBreakpoints } from './models';\n\nexport const TAILWIND_BREAKPOINTS: MqBreakpoints = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n '2xl': 1536,\n};\n\nexport const BOOTSTRAP_BREAKPOINTS: MqBreakpoints = {\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1400,\n};\n\nexport const MATERIAL_BREAKPOINTS: MqBreakpoints = {\n sm: 600,\n md: 905,\n lg: 1240,\n xl: 1440,\n};\n\nexport const DEFAULT_BREAKPOINT_EPSILON: number = 0.02;\n","import { InjectionToken } from '@angular/core';\nimport { DEFAULT_BREAKPOINT_EPSILON } from './constants';\nimport { MqBreakpoints } from './models';\n\nexport const MQ_BREAKPOINTS: InjectionToken<MqBreakpoints> = new InjectionToken('MQ_BREAKPOINTS');\n\nexport const MQ_BREAKPOINT_EPSILON: InjectionToken<number> = new InjectionToken('MQ_BREAKPOINT_EPSILON', {\n providedIn: 'root',\n factory: () => DEFAULT_BREAKPOINT_EPSILON,\n});\n\nexport const NGX_MQ_SSR_VALUE: InjectionToken<boolean> = new InjectionToken('NGX_MQ_SSR_VALUE', {\n providedIn: 'root',\n factory: () => false,\n});\n","import { inject, isDevMode } from '@angular/core';\nimport { MQ_BREAKPOINT_EPSILON, MQ_BREAKPOINTS } from '../tokens';\nimport { MqBreakpoints } from '../models';\n\nfunction assertBreakpointsProvided(): MqBreakpoints {\n const breakpoints: MqBreakpoints | null = inject(MQ_BREAKPOINTS, { optional: true });\n\n if (isDevMode() && !breakpoints) {\n throw new Error(\n '[ngx-mq]: No breakpoints provided.\\n' +\n 'Please configure your app with provideBreakpoints(), ' +\n 'or use one of the built-in presets: ' +\n 'provideTailwindBreakpoints(), provideBootstrapBreakpoints(), provideMaterialBreakpoints().'\n );\n }\n\n return breakpoints!;\n}\n\nfunction assertBreakpointExists(bp: string, breakpoints: MqBreakpoints): number {\n if (isDevMode() && !(bp in breakpoints)) {\n throw new Error(\n `[ngx-mq]: Breakpoint \"${bp}\" not found in provided configuration.\\n` +\n `Available breakpoints: ${Object.keys(breakpoints).join(', ')}.`\n );\n }\n\n return breakpoints[bp];\n}\n\nexport function resolveBreakpoint(bp: string): number {\n const breakpoints: MqBreakpoints = assertBreakpointsProvided();\n\n return assertBreakpointExists(bp, breakpoints);\n}\n\nexport function normalizeBreakpoints(bps: MqBreakpoints): Readonly<MqBreakpoints> {\n const out: Record<string, number> = {};\n\n for (const [rawKey, value] of Object.entries(bps)) {\n const key = rawKey.trim();\n\n if (isDevMode()) {\n if (!Number.isFinite(value)) {\n throw new Error(`[ngx-mq] Breakpoint \"${key}\" must be a finite number, got ${value}.`);\n }\n\n if (value <= 0) {\n throw new Error(`[ngx-mq] Breakpoint \"${key}\" must be > 0, got ${value}.`);\n }\n }\n\n out[key] = value;\n }\n\n return Object.freeze(out);\n}\n\nexport function validateEpsilon(epsilon: number): void {\n if (!Number.isFinite(epsilon) || epsilon <= 0 || epsilon > 1) {\n throw new Error(`[ngx-mq] Epsilon must be in (0, 1]. Got: ${epsilon}`);\n }\n}\n\nexport function applyMaxEpsilon(value: number): number {\n const epsilon: number = inject(MQ_BREAKPOINT_EPSILON, { optional: true }) ?? 0.02;\n\n return value - epsilon;\n}\n","export function addChangeListenerToMql(mql: MediaQueryList, onChange: (event?: MediaQueryListEvent) => void): void {\n if (typeof mql.addEventListener === 'function') {\n // Modern browsers\n mql.addEventListener('change', onChange);\n } else {\n // Legacy fallback (Safari < 14)\n (mql as any).addListener(onChange);\n }\n}\n\nexport function removeChangeListenerFromMql(\n mql: MediaQueryList,\n onChange: (event?: MediaQueryListEvent) => void\n): void {\n if (typeof mql.removeEventListener === 'function') {\n // Modern browsers\n mql.removeEventListener('change', onChange);\n } else {\n // Legacy fallback (Safari < 14)\n (mql as any).removeListener(onChange);\n }\n}\n","import { signal as createSignal, Signal, WritableSignal } from '@angular/core';\nimport { addChangeListenerToMql, removeChangeListenerFromMql } from './mql-registry.listeners';\nimport { MqlRegistry, MqRetainToken, MqHandle } from './mql-registry.models';\n\nconst REGISTRY_KEY: symbol = Symbol.for('ngx-mq:mql-registry');\n\nconst getRegistry = (): MqlRegistry => {\n const realmGlobal: Record<PropertyKey, unknown> = globalThis;\n\n return (realmGlobal[REGISTRY_KEY] ??= new Map()) as MqlRegistry;\n};\n\nconst createMqHandle = (query: string): MqHandle => {\n const mql: MediaQueryList = matchMedia(query);\n const signal: WritableSignal<boolean> = createSignal(mql.matches);\n\n const onChange = (event?: MediaQueryListEvent) => signal.set(event?.matches ?? mql.matches);\n\n addChangeListenerToMql(mql, onChange);\n\n return { mql, signal, onChange, retainers: new Set() };\n};\n\nexport function retain(query: string, token: MqRetainToken, ssrValue: boolean): Signal<boolean> {\n // SSR mode\n if (typeof globalThis.matchMedia !== 'function') {\n return createSignal(ssrValue).asReadonly();\n }\n\n const registry: MqlRegistry = getRegistry();\n\n let handle: MqHandle | undefined = registry.get(query);\n\n if (!handle) {\n handle = createMqHandle(query);\n registry.set(query, handle);\n }\n\n handle.retainers.add(token);\n\n return handle.signal.asReadonly();\n}\n\nexport function release(query: string, token: MqRetainToken): boolean {\n const registry: MqlRegistry = getRegistry();\n\n let handle: MqHandle | undefined = registry.get(query);\n\n if (!handle) return false;\n\n const removed: boolean = handle.retainers.delete(token);\n\n if (handle.retainers.size === 0) {\n removeChangeListenerFromMql(handle.mql, handle.onChange);\n registry.delete(query);\n }\n\n return removed;\n}\n\n/* @internal\n * Returns the current registry (used only in tests).\n */\nexport function _getRegistry(): MqlRegistry {\n return getRegistry();\n}\n\n/* @internal\n * Clears all registry entries and removes media-query listeners.\n */\nexport function _resetRegistry(): void {\n const registry: MqlRegistry = getRegistry();\n\n registry.forEach((handle: MqHandle) => {\n removeChangeListenerFromMql(handle.mql, handle.onChange);\n });\n\n registry.clear();\n}\n","import { DestroyRef, inject, Signal } from '@angular/core';\nimport { retain, release } from './mql-registry';\n\nexport function retainUntilDestroy(query: string, ssrValue: boolean): Signal<boolean> {\n const destroyRef: DestroyRef = inject(DestroyRef);\n\n const querySignal: Signal<boolean> = retain(query, destroyRef, ssrValue);\n\n destroyRef.onDestroy(() => release(query, destroyRef));\n\n return querySignal;\n}\n","import { computed, inject, Signal } from '@angular/core';\nimport { retainUntilDestroy } from './mql-registry';\nimport { CreateMediaQueryOptions } from './models';\nimport { NGX_MQ_SSR_VALUE } from './tokens';\n\nexport function createConsumer(query: string, options?: CreateMediaQueryOptions): Signal<boolean> {\n const defaultSsrValue: boolean = inject(NGX_MQ_SSR_VALUE);\n const effectiveSsrValue: boolean = options?.ssrValue ?? defaultSsrValue;\n\n const querySignal: Signal<boolean> = retainUntilDestroy(query, effectiveSsrValue);\n\n return computed(() => querySignal());\n}\n\nexport function createConsumerLabel(descriptor: string): string {\n return `[NgxMq Signal: ${descriptor}]`;\n}\n","export function normalizeQuery(value: string): string {\n return value.trim().replace(/\\s+/g, ' ').toLowerCase();\n}\n","import { assertInInjectionContext, isDevMode, Signal } from '@angular/core';\nimport { applyMaxEpsilon, resolveBreakpoint } from './utils/breakpoints.utils';\nimport { DisplayModeOption, CreateMediaQueryOptions } from './models';\nimport { createConsumer, createConsumerLabel } from './core';\nimport { normalizeQuery } from './utils/common.utils';\n\nexport function up(bp: string, options?: CreateMediaQueryOptions): Signal<boolean> {\n isDevMode() && assertInInjectionContext(up);\n\n const query: string = normalizeQuery(`(min-width: ${resolveBreakpoint(bp)}px)`);\n const consumer: Signal<boolean> = createConsumer(query, options);\n\n consumer.toString = () => createConsumerLabel(`up(${bp})`);\n\n return consumer;\n}\n\nexport function down(bp: string, options?: CreateMediaQueryOptions): Signal<boolean> {\n isDevMode() && assertInInjectionContext(down);\n\n const query: string = normalizeQuery(`(max-width: ${applyMaxEpsilon(resolveBreakpoint(bp))}px)`);\n const consumer: Signal<boolean> = createConsumer(query, options);\n\n consumer.toString = () => createConsumerLabel(`down(${bp})`);\n\n return consumer;\n}\n\nexport function between(minBp: string, maxBp: string, options?: CreateMediaQueryOptions): Signal<boolean> {\n isDevMode() && assertInInjectionContext(between);\n\n const minPx: number = resolveBreakpoint(minBp);\n const maxPx: number = resolveBreakpoint(maxBp);\n const query: string = normalizeQuery(`(min-width: ${minPx}px) and (max-width: ${applyMaxEpsilon(maxPx)}px)`);\n const consumer: Signal<boolean> = createConsumer(query, options);\n\n consumer.toString = () => createConsumerLabel(`between(${minBp}, ${maxBp})`);\n\n return consumer;\n}\n\nexport function orientation(value: 'portrait' | 'landscape', options?: CreateMediaQueryOptions): Signal<boolean> {\n isDevMode() && assertInInjectionContext(orientation);\n\n const query: string = normalizeQuery(`(orientation: ${value})`);\n const consumer: Signal<boolean> = createConsumer(query, options);\n\n consumer.toString = () => createConsumerLabel(`orientation(${value})`);\n\n return consumer;\n}\n\nexport function colorScheme(value: 'light' | 'dark', options?: CreateMediaQueryOptions): Signal<boolean> {\n isDevMode() && assertInInjectionContext(colorScheme);\n\n const query: string = normalizeQuery(`(prefers-color-scheme: ${value})`);\n const consumer: Signal<boolean> = createConsumer(query, options);\n\n consumer.toString = () => createConsumerLabel(`colorScheme(${value})`);\n\n return consumer;\n}\n\nexport function displayMode(value: DisplayModeOption, options?: CreateMediaQueryOptions): Signal<boolean> {\n isDevMode() && assertInInjectionContext(displayMode);\n\n const query = normalizeQuery(`(display-mode: ${value})`);\n const consumer: Signal<boolean> = createConsumer(query, options);\n\n consumer.toString = () => createConsumerLabel(`displayMode(${value})`);\n\n return consumer;\n}\n\nexport function reducedMotion(options?: CreateMediaQueryOptions): Signal<boolean> {\n isDevMode() && assertInInjectionContext(reducedMotion);\n\n const query: string = normalizeQuery('(prefers-reduced-motion: reduce)');\n const consumer: Signal<boolean> = createConsumer(query, options);\n\n consumer.toString = () => createConsumerLabel('reducedMotion');\n\n return consumer;\n}\n\nexport function matchMediaSignal(query: string, options?: CreateMediaQueryOptions): Signal<boolean> {\n isDevMode() && assertInInjectionContext(matchMediaSignal);\n\n const media: string = normalizeQuery(query);\n const consumer: Signal<boolean> = createConsumer(media, options);\n\n consumer.toString = () => createConsumerLabel(`matchMediaSignal(${query})`);\n\n return consumer;\n}\n","import { isDevMode, Provider } from '@angular/core';\nimport { MQ_BREAKPOINT_EPSILON, MQ_BREAKPOINTS, NGX_MQ_SSR_VALUE } from './tokens';\nimport { normalizeBreakpoints, validateEpsilon } from './utils/breakpoints.utils';\nimport { MqBreakpoints } from './models';\nimport {\n BOOTSTRAP_BREAKPOINTS,\n DEFAULT_BREAKPOINT_EPSILON,\n MATERIAL_BREAKPOINTS,\n TAILWIND_BREAKPOINTS,\n} from './constants';\n\nexport function provideBreakpoints(bps: MqBreakpoints): Provider {\n return { provide: MQ_BREAKPOINTS, useValue: normalizeBreakpoints(bps) };\n}\n\nexport function provideTailwindBreakpoints(): Provider {\n return provideBreakpoints(TAILWIND_BREAKPOINTS);\n}\n\nexport function provideBootstrapBreakpoints(): Provider {\n return provideBreakpoints(BOOTSTRAP_BREAKPOINTS);\n}\n\nexport function provideMaterialBreakpoints(): Provider {\n return provideBreakpoints(MATERIAL_BREAKPOINTS);\n}\n\nexport function provideBreakpointEpsilon(epsilon: number = DEFAULT_BREAKPOINT_EPSILON): Provider {\n if (isDevMode()) validateEpsilon(epsilon);\n\n return { provide: MQ_BREAKPOINT_EPSILON, useValue: epsilon };\n}\n\nexport function provideSsrValue(value: boolean): Provider {\n return { provide: NGX_MQ_SSR_VALUE, useValue: value };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["signal","createSignal"],"mappings":"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"}
|
package/lib/api.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { Signal } from '@angular/core';
|
|
2
|
-
import { DisplayModeOption } from './models';
|
|
3
|
-
export declare function up(bp: string): Signal<boolean>;
|
|
4
|
-
export declare function down(bp: string): Signal<boolean>;
|
|
5
|
-
export declare function between(minBp: string, maxBp: string): Signal<boolean>;
|
|
6
|
-
export declare function orientation(
|
|
7
|
-
export declare function colorScheme(
|
|
8
|
-
export declare function displayMode(
|
|
9
|
-
export declare function
|
|
2
|
+
import { DisplayModeOption, CreateMediaQueryOptions } from './models';
|
|
3
|
+
export declare function up(bp: string, options?: CreateMediaQueryOptions): Signal<boolean>;
|
|
4
|
+
export declare function down(bp: string, options?: CreateMediaQueryOptions): Signal<boolean>;
|
|
5
|
+
export declare function between(minBp: string, maxBp: string, options?: CreateMediaQueryOptions): Signal<boolean>;
|
|
6
|
+
export declare function orientation(value: 'portrait' | 'landscape', options?: CreateMediaQueryOptions): Signal<boolean>;
|
|
7
|
+
export declare function colorScheme(value: 'light' | 'dark', options?: CreateMediaQueryOptions): Signal<boolean>;
|
|
8
|
+
export declare function displayMode(value: DisplayModeOption, options?: CreateMediaQueryOptions): Signal<boolean>;
|
|
9
|
+
export declare function reducedMotion(options?: CreateMediaQueryOptions): Signal<boolean>;
|
|
10
|
+
export declare function matchMediaSignal(query: string, options?: CreateMediaQueryOptions): Signal<boolean>;
|
package/lib/core.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { Signal } from '@angular/core';
|
|
2
|
-
|
|
2
|
+
import { CreateMediaQueryOptions } from './models';
|
|
3
|
+
export declare function createConsumer(query: string, options?: CreateMediaQueryOptions): Signal<boolean>;
|
|
3
4
|
export declare function createConsumerLabel(descriptor: string): string;
|
package/lib/models.d.ts
CHANGED
|
@@ -1,2 +1,8 @@
|
|
|
1
1
|
export type MqBreakpoints = Record<string, number>;
|
|
2
|
+
export interface CreateMediaQueryOptions {
|
|
3
|
+
/**
|
|
4
|
+
* Static signal value used during SSR.
|
|
5
|
+
*/
|
|
6
|
+
ssrValue?: boolean;
|
|
7
|
+
}
|
|
2
8
|
export type DisplayModeOption = 'browser' | 'fullscreen' | 'standalone' | 'minimal-ui' | 'window-controls-overlay' | 'picture-in-picture';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Signal } from '@angular/core';
|
|
2
2
|
import { MqlRegistry, MqRetainToken } from './mql-registry.models';
|
|
3
|
-
export declare function retain(query: string, token: MqRetainToken): Signal<boolean>;
|
|
3
|
+
export declare function retain(query: string, token: MqRetainToken, ssrValue: boolean): Signal<boolean>;
|
|
4
4
|
export declare function release(query: string, token: MqRetainToken): boolean;
|
|
5
5
|
export declare function _getRegistry(): MqlRegistry;
|
|
6
6
|
export declare function _resetRegistry(): void;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { Signal } from '@angular/core';
|
|
2
|
-
export declare function retainUntilDestroy(query: string): Signal<boolean>;
|
|
2
|
+
export declare function retainUntilDestroy(query: string, ssrValue: boolean): Signal<boolean>;
|
package/lib/providers.d.ts
CHANGED
|
@@ -5,3 +5,4 @@ export declare function provideTailwindBreakpoints(): Provider;
|
|
|
5
5
|
export declare function provideBootstrapBreakpoints(): Provider;
|
|
6
6
|
export declare function provideMaterialBreakpoints(): Provider;
|
|
7
7
|
export declare function provideBreakpointEpsilon(epsilon?: number): Provider;
|
|
8
|
+
export declare function provideSsrValue(value: boolean): Provider;
|
package/lib/tokens.d.ts
CHANGED
|
@@ -2,3 +2,4 @@ import { InjectionToken } from '@angular/core';
|
|
|
2
2
|
import { MqBreakpoints } from './models';
|
|
3
3
|
export declare const MQ_BREAKPOINTS: InjectionToken<MqBreakpoints>;
|
|
4
4
|
export declare const MQ_BREAKPOINT_EPSILON: InjectionToken<number>;
|
|
5
|
+
export declare const NGX_MQ_SSR_VALUE: InjectionToken<boolean>;
|