@ethlete/core 5.0.0-next.37 → 5.0.0-next.39
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/CHANGELOG.md +14 -0
- package/fesm2022/ethlete-core.mjs +241 -4
- package/fesm2022/ethlete-core.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ethlete-core.d.ts +233 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @ethlete/core
|
|
2
2
|
|
|
3
|
+
## 5.0.0-next.39
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`74850e3`](https://github.com/ethlete-io/ethdk/commit/74850e3a62339565c13bdeb89c4334993eefd2b3) Thanks [@TomTomB](https://github.com/TomTomB)! - The provider-definition doc comments no longer spell the pure annotation out verbatim, so Rollup stops warning about (and stripping) an annotation it cannot attach to a call while bundling `@ethlete/core`.
|
|
8
|
+
|
|
9
|
+
## 5.0.0-next.38
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- [#3043](https://github.com/ethlete-io/ethdk/pull/3043) [`eeb8db3`](https://github.com/ethlete-io/ethdk/commit/eeb8db366907058d9f8357ab84582580dc5ab7d9) Thanks [@github-actions](https://github.com/apps/github-actions)! - Add a browser notification API: `injectNotifications()` exposes a reactive `permission` signal,
|
|
14
|
+
`request()`, `show(config)` returning a `NotificationRef`, and `closeAll()` - over both the
|
|
15
|
+
`Notification` constructor and the service-worker path, SSR-safe.
|
|
16
|
+
|
|
3
17
|
## 5.0.0-next.37
|
|
4
18
|
|
|
5
19
|
### Major Changes
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { InjectionToken, inject, ElementRef, Directive, assertInInjectionContext, DestroyRef, TemplateRef, QueryList, RendererFactory2, RendererStyleFlags2, isSignal, DOCUMENT, signal, linkedSignal, isDevMode, computed, afterNextRender, effect, NgZone, untracked, EnvironmentInjector, runInInjectionContext, Injector, booleanAttribute, numberAttribute, PLATFORM_ID, ApplicationRef, createComponent, model, ViewContainerRef, input, output, Pipe, ViewEncapsulation, Component, afterEveryRender } from '@angular/core';
|
|
3
3
|
import { takeUntilDestroyed, toSignal, toObservable, outputFromObservable } from '@angular/core/rxjs-interop';
|
|
4
|
-
import { Subject, BehaviorSubject, debounceTime, combineLatest, map, merge, fromEvent, filter, tap, switchMap, startWith, of, defer, from, catchError, timer, takeUntil, pairwise, distinctUntilChanged, take, Observable, concatMap, EMPTY, concat, exhaustMap, share, isObservable, firstValueFrom, defaultIfEmpty } from 'rxjs';
|
|
4
|
+
import { Subject, BehaviorSubject, debounceTime, combineLatest, map, merge, fromEvent, filter, tap, switchMap, startWith, of, defer, from, catchError, timer, takeUntil, pairwise, distinctUntilChanged, take, Observable, concatMap, EMPTY, concat, exhaustMap, share, shareReplay, isObservable, firstValueFrom, defaultIfEmpty } from 'rxjs';
|
|
5
5
|
import { FormGroup, FormArray, FormControl } from '@angular/forms';
|
|
6
6
|
import { SIGNAL, signalSetFn } from '@angular/core/primitives/signals';
|
|
7
7
|
import { DOCUMENT as DOCUMENT$1, isPlatformBrowser } from '@angular/common';
|
|
@@ -175,7 +175,15 @@ const createProviders = (token, factory, extraToken) => [
|
|
|
175
175
|
{ provide: token, useFactory: factory },
|
|
176
176
|
...(extraToken ? [{ provide: extraToken, useExisting: token }] : []),
|
|
177
177
|
];
|
|
178
|
-
|
|
178
|
+
/**
|
|
179
|
+
* Defines a provider that a subtree opts into - `provideX()` in some component's `providers`, then
|
|
180
|
+
* `injectX()` below it. Nothing is created until the subtree provides it.
|
|
181
|
+
*
|
|
182
|
+
* Assign the result to one `const`, name the halves with {@link toProvideFn} / {@link toInjectFn} /
|
|
183
|
+
* {@link toToken}, and put a `__PURE__` annotation comment on each of those declarations. Never destructure
|
|
184
|
+
* the definition: that declaration cannot be tree-shaken, so it ships the factory's whole closure to
|
|
185
|
+
* every consumer. Enforced by `ethlete/no-impure-top-level-provider`.
|
|
186
|
+
*/
|
|
179
187
|
const defineProvider = (factory, options) => {
|
|
180
188
|
const token = new InjectionToken(options?.name ?? createComponentId('provider'));
|
|
181
189
|
return {
|
|
@@ -226,7 +234,7 @@ const defineStaticRootProvider = (defaultValue, options) => {
|
|
|
226
234
|
token,
|
|
227
235
|
};
|
|
228
236
|
};
|
|
229
|
-
|
|
237
|
+
/** The `provideX` half of a provider definition. A call, so a `__PURE__` annotation makes it droppable. */
|
|
230
238
|
const toProvideFn = (definition) => definition.provide;
|
|
231
239
|
/** The `injectX` half of a provider definition. */
|
|
232
240
|
const toInjectFn = (definition) => definition.inject;
|
|
@@ -4977,6 +4985,235 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
4977
4985
|
}]
|
|
4978
4986
|
}], ctorParameters: () => [], propDecorators: { commitThreshold: [{ type: i0.Input, args: [{ isSignal: true, alias: "commitThreshold", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], dragTapped: [{ type: i0.Output, args: ["dragTapped"] }], dragStarted: [{ type: i0.Output, args: ["dragStarted"] }], dragMoved: [{ type: i0.Output, args: ["dragMoved"] }], dragEnded: [{ type: i0.Output, args: ["dragEnded"] }] } });
|
|
4979
4987
|
|
|
4988
|
+
/**
|
|
4989
|
+
* The `message` type a service worker must post for `onClick` to fire on the service-worker path,
|
|
4990
|
+
* where the click event is dispatched to the worker and never reaches the page.
|
|
4991
|
+
*
|
|
4992
|
+
* Nothing in the SDK can install this handler - a service worker's code is the app's. Add it to yours
|
|
4993
|
+
* to make `onClick` work on Android Chrome and installed iOS web apps:
|
|
4994
|
+
*
|
|
4995
|
+
* ```js
|
|
4996
|
+
* self.addEventListener('notificationclick', (event) => {
|
|
4997
|
+
* event.notification.close();
|
|
4998
|
+
*
|
|
4999
|
+
* event.waitUntil(
|
|
5000
|
+
* self.clients.matchAll({ type: 'window', includeUncontrolled: true }).then((clients) => {
|
|
5001
|
+
* for (const client of clients) {
|
|
5002
|
+
* client.postMessage({
|
|
5003
|
+
* type: 'et:notification-click',
|
|
5004
|
+
* tag: event.notification.tag,
|
|
5005
|
+
* data: event.notification.data,
|
|
5006
|
+
* action: event.action || undefined,
|
|
5007
|
+
* });
|
|
5008
|
+
* }
|
|
5009
|
+
* }),
|
|
5010
|
+
* );
|
|
5011
|
+
* });
|
|
5012
|
+
* ```
|
|
5013
|
+
*/
|
|
5014
|
+
const NOTIFICATION_CLICK_MESSAGE_TYPE = 'et:notification-click';
|
|
5015
|
+
|
|
5016
|
+
const toNotificationOptions = (config, tag) => ({
|
|
5017
|
+
body: config.body,
|
|
5018
|
+
icon: config.icon,
|
|
5019
|
+
badge: config.badge,
|
|
5020
|
+
image: config.image,
|
|
5021
|
+
tag,
|
|
5022
|
+
data: config.data,
|
|
5023
|
+
lang: config.lang,
|
|
5024
|
+
dir: config.dir,
|
|
5025
|
+
silent: config.silent,
|
|
5026
|
+
requireInteraction: config.requireInteraction,
|
|
5027
|
+
renotify: config.renotify,
|
|
5028
|
+
vibrate: config.vibrate,
|
|
5029
|
+
timestamp: config.timestamp,
|
|
5030
|
+
actions: config.actions,
|
|
5031
|
+
});
|
|
5032
|
+
// The constructor rejects `actions` with a TypeError rather than ignoring them, so the page path gets
|
|
5033
|
+
// a copy without the options only a persistent notification understands.
|
|
5034
|
+
const toPageNotificationOptions = (options) => {
|
|
5035
|
+
const { actions, image, renotify, timestamp, vibrate, ...pageOptions } = options;
|
|
5036
|
+
return pageOptions;
|
|
5037
|
+
};
|
|
5038
|
+
const NOTIFICATIONS_DEF = /* @__PURE__ */ defineRootProvider(() => {
|
|
5039
|
+
const destroyRef = inject(DestroyRef);
|
|
5040
|
+
const isBrowser = isPlatformBrowser(inject(PLATFORM_ID));
|
|
5041
|
+
const isSupported = isBrowser && typeof Notification !== 'undefined';
|
|
5042
|
+
// Streams here outlive the call that created them, and `close()` can be called after teardown -
|
|
5043
|
+
// where `takeUntilDestroyed()` would throw rather than unsubscribe.
|
|
5044
|
+
const destroyed$ = new Subject();
|
|
5045
|
+
destroyRef.onDestroy(() => {
|
|
5046
|
+
destroyed$.next();
|
|
5047
|
+
destroyed$.complete();
|
|
5048
|
+
});
|
|
5049
|
+
const permission = signal(isSupported ? Notification.permission : 'unsupported', /* @ts-ignore */
|
|
5050
|
+
...(ngDevMode ? [{ debugName: "permission" }] : /* istanbul ignore next */ []));
|
|
5051
|
+
if (isSupported) {
|
|
5052
|
+
// Chromium and Firefox report permission changes here, including a revoke made in site settings
|
|
5053
|
+
// while the tab is open. WebKit has no `notifications` descriptor and rejects the query.
|
|
5054
|
+
const permissionStatus$ = navigator.permissions
|
|
5055
|
+
? from(navigator.permissions.query({ name: 'notifications' })).pipe(catchError(() => EMPTY))
|
|
5056
|
+
: EMPTY;
|
|
5057
|
+
permissionStatus$
|
|
5058
|
+
.pipe(switchMap((status) => fromEvent(status, 'change').pipe(map(() => status.state), startWith(status.state))), map((state) => (state === 'prompt' ? 'default' : state)), tap((state) => permission.set(state)), takeUntil(destroyed$))
|
|
5059
|
+
.subscribe();
|
|
5060
|
+
const isDocumentVisible = injectIsDocumentVisible();
|
|
5061
|
+
// The fallback for engines without that descriptor: a permission changed in browser settings is
|
|
5062
|
+
// only observable by reading it again, and coming back to the tab is when that matters.
|
|
5063
|
+
effect(() => {
|
|
5064
|
+
if (!isDocumentVisible()) {
|
|
5065
|
+
return;
|
|
5066
|
+
}
|
|
5067
|
+
untracked(() => permission.set(Notification.permission));
|
|
5068
|
+
});
|
|
5069
|
+
}
|
|
5070
|
+
const request = () => defer(() => {
|
|
5071
|
+
if (!isSupported) {
|
|
5072
|
+
return of('unsupported');
|
|
5073
|
+
}
|
|
5074
|
+
// The prompt can only be shown once - after that only the user can change it in site settings.
|
|
5075
|
+
if (Notification.permission !== 'default') {
|
|
5076
|
+
return of(Notification.permission);
|
|
5077
|
+
}
|
|
5078
|
+
return from(new Promise((resolve) => {
|
|
5079
|
+
// WebKit only gained the promise-returning form in Safari 16 and hands the result to the
|
|
5080
|
+
// deprecated callback before that. Passing both is spec-legal; the later resolve is a no-op.
|
|
5081
|
+
const requested = Notification.requestPermission(resolve);
|
|
5082
|
+
requested?.then(resolve, () => resolve(Notification.permission));
|
|
5083
|
+
}));
|
|
5084
|
+
}).pipe(tap((state) => permission.set(state)));
|
|
5085
|
+
let nextTagId = 0;
|
|
5086
|
+
const clickHandlers = new Map();
|
|
5087
|
+
const openCloseFns = new Set();
|
|
5088
|
+
let isClickRelayAttached = false;
|
|
5089
|
+
const attachClickRelay = () => {
|
|
5090
|
+
const serviceWorker = navigator.serviceWorker;
|
|
5091
|
+
if (isClickRelayAttached || !serviceWorker) {
|
|
5092
|
+
return;
|
|
5093
|
+
}
|
|
5094
|
+
isClickRelayAttached = true;
|
|
5095
|
+
fromEvent(serviceWorker, 'message')
|
|
5096
|
+
.pipe(map((event) => event.data), filter((message) => message?.type === NOTIFICATION_CLICK_MESSAGE_TYPE), tap((message) => clickHandlers.get(message.tag)?.({ tag: message.tag, data: message.data, action: message.action })), takeUntil(destroyed$))
|
|
5097
|
+
.subscribe();
|
|
5098
|
+
};
|
|
5099
|
+
// `getRegistration()` rather than `ready`: `ready` never settles in an app without a service
|
|
5100
|
+
// worker, which would leave every `shown$` hanging instead of reporting 'unavailable'.
|
|
5101
|
+
const serviceWorkerRegistration = () => defer(() => navigator.serviceWorker
|
|
5102
|
+
? from(navigator.serviceWorker.getRegistration()).pipe(catchError(() => of(undefined)))
|
|
5103
|
+
: of(undefined));
|
|
5104
|
+
const closePersistentNotifications = (tag) => serviceWorkerRegistration().pipe(switchMap((registration) => registration
|
|
5105
|
+
? // Firefox rejects getNotifications() when the worker is not the one that showed them.
|
|
5106
|
+
from(registration.getNotifications(tag ? { tag } : undefined)).pipe(catchError(() => of([])))
|
|
5107
|
+
: of([])), tap((notifications) => notifications.forEach((notification) => notification.close())));
|
|
5108
|
+
const show = (config) => {
|
|
5109
|
+
const tag = config.tag ?? `et-notification-${++nextTagId}`;
|
|
5110
|
+
const options = toNotificationOptions(config, tag);
|
|
5111
|
+
const path = config.path ?? 'auto';
|
|
5112
|
+
// Actions only redirect a notification that has not been pinned to a path - `path: 'page'` is a
|
|
5113
|
+
// caller saying they would rather have it without the buttons than not at all.
|
|
5114
|
+
const needsPersistent = path === 'auto' && !!config.actions?.length;
|
|
5115
|
+
const closed$ = new Subject();
|
|
5116
|
+
let isClosed = false;
|
|
5117
|
+
let pageNotification = null;
|
|
5118
|
+
const close = () => {
|
|
5119
|
+
if (isClosed) {
|
|
5120
|
+
return;
|
|
5121
|
+
}
|
|
5122
|
+
isClosed = true;
|
|
5123
|
+
closed$.next();
|
|
5124
|
+
closed$.complete();
|
|
5125
|
+
clickHandlers.delete(tag);
|
|
5126
|
+
openCloseFns.delete(close);
|
|
5127
|
+
pageNotification?.close();
|
|
5128
|
+
// A no-op unless this notification took the persistent path.
|
|
5129
|
+
closePersistentNotifications(tag).pipe(takeUntil(destroyed$)).subscribe();
|
|
5130
|
+
};
|
|
5131
|
+
const showViaPage = () => {
|
|
5132
|
+
let notification;
|
|
5133
|
+
try {
|
|
5134
|
+
notification = new Notification(config.title, toPageNotificationOptions(options));
|
|
5135
|
+
}
|
|
5136
|
+
catch {
|
|
5137
|
+
// How Android Chrome says "persistent notifications only" - there is no feature flag to test.
|
|
5138
|
+
return 'unavailable';
|
|
5139
|
+
}
|
|
5140
|
+
pageNotification = notification;
|
|
5141
|
+
notification.onclick = (event) => config.onClick?.({ tag, data: config.data, event });
|
|
5142
|
+
notification.onclose = () => {
|
|
5143
|
+
// The user dismissed it - forget the ref so `closeAll()` has nothing stale to walk.
|
|
5144
|
+
openCloseFns.delete(close);
|
|
5145
|
+
config.onClose?.();
|
|
5146
|
+
};
|
|
5147
|
+
notification.onshow = () => config.onShow?.();
|
|
5148
|
+
notification.onerror = () => config.onError?.();
|
|
5149
|
+
if (isClosed) {
|
|
5150
|
+
notification.close();
|
|
5151
|
+
return 'unavailable';
|
|
5152
|
+
}
|
|
5153
|
+
return 'page';
|
|
5154
|
+
};
|
|
5155
|
+
const showViaServiceWorker = () => serviceWorkerRegistration().pipe(switchMap((registration) => {
|
|
5156
|
+
if (!registration || isClosed) {
|
|
5157
|
+
return of('unavailable');
|
|
5158
|
+
}
|
|
5159
|
+
if (config.onClick) {
|
|
5160
|
+
clickHandlers.set(tag, config.onClick);
|
|
5161
|
+
attachClickRelay();
|
|
5162
|
+
}
|
|
5163
|
+
return from(registration.showNotification(config.title, options)).pipe(switchMap(() => isClosed
|
|
5164
|
+
? // Closed while the worker was still putting it up - take back what just appeared.
|
|
5165
|
+
closePersistentNotifications(tag).pipe(map(() => 'unavailable'))
|
|
5166
|
+
: of('service-worker')), catchError(() => {
|
|
5167
|
+
clickHandlers.delete(tag);
|
|
5168
|
+
return of('unavailable');
|
|
5169
|
+
}));
|
|
5170
|
+
}));
|
|
5171
|
+
const shown$ = defer(() => {
|
|
5172
|
+
// Permission is never requested here - an app that wants the prompt calls `request()`.
|
|
5173
|
+
if (!isSupported || Notification.permission !== 'granted' || isClosed) {
|
|
5174
|
+
return of('unavailable');
|
|
5175
|
+
}
|
|
5176
|
+
if (path === 'service-worker' || needsPersistent) {
|
|
5177
|
+
return showViaServiceWorker();
|
|
5178
|
+
}
|
|
5179
|
+
const pagePath = showViaPage();
|
|
5180
|
+
if (pagePath !== 'unavailable' || path === 'page') {
|
|
5181
|
+
return of(pagePath);
|
|
5182
|
+
}
|
|
5183
|
+
return showViaServiceWorker();
|
|
5184
|
+
}).pipe(tap((deliveryPath) => {
|
|
5185
|
+
if (deliveryPath === 'unavailable') {
|
|
5186
|
+
openCloseFns.delete(close);
|
|
5187
|
+
}
|
|
5188
|
+
}),
|
|
5189
|
+
// Shown once, replayed to every later subscriber - `refCount: false` keeps the result after
|
|
5190
|
+
// the eager subscription below has completed.
|
|
5191
|
+
shareReplay({ bufferSize: 1, refCount: false }));
|
|
5192
|
+
openCloseFns.add(close);
|
|
5193
|
+
// `show()` is imperative: the notification appears whether or not anyone subscribes.
|
|
5194
|
+
shown$.pipe(takeUntil(destroyed$)).subscribe();
|
|
5195
|
+
if (config.autoClose) {
|
|
5196
|
+
shown$
|
|
5197
|
+
.pipe(filter((deliveryPath) => deliveryPath !== 'unavailable'), switchMap(() => timer(config.autoClose ?? 0)), tap(() => close()), takeUntil(closed$), takeUntil(destroyed$))
|
|
5198
|
+
.subscribe();
|
|
5199
|
+
}
|
|
5200
|
+
return { tag, shown$, close };
|
|
5201
|
+
};
|
|
5202
|
+
const closeAll = () => {
|
|
5203
|
+
for (const close of Array.from(openCloseFns)) {
|
|
5204
|
+
close();
|
|
5205
|
+
}
|
|
5206
|
+
closePersistentNotifications().pipe(takeUntil(destroyed$)).subscribe();
|
|
5207
|
+
};
|
|
5208
|
+
destroyRef.onDestroy(() => {
|
|
5209
|
+
clickHandlers.clear();
|
|
5210
|
+
openCloseFns.clear();
|
|
5211
|
+
});
|
|
5212
|
+
return { isSupported, permission: permission.asReadonly(), request, show, closeAll };
|
|
5213
|
+
}, { name: 'Notifications' });
|
|
5214
|
+
const provideNotifications = /* @__PURE__ */ toProvideFn(NOTIFICATIONS_DEF);
|
|
5215
|
+
const injectNotifications = /* @__PURE__ */ toInjectFn(NOTIFICATIONS_DEF);
|
|
5216
|
+
|
|
4980
5217
|
const FOCUSABLE_SELECTOR = /* @__PURE__ */ [
|
|
4981
5218
|
'a[href]',
|
|
4982
5219
|
'area[href]',
|
|
@@ -9019,5 +9256,5 @@ const createUnsavedChangesGuard = (config) => {
|
|
|
9019
9256
|
* Generated bundle index. Do not edit.
|
|
9020
9257
|
*/
|
|
9021
9258
|
|
|
9022
|
-
export { ANIMATABLE_TOKEN, ANIMATED_IF_TOKEN, ANIMATED_LIFECYCLE_TOKEN, ANIMATION_DEBUG_STORAGE_KEY, AT_LEAST_ONE_REQUIRED, AnimatableDirective, AnimatedIfDirective, AnimatedLifecycleDirective, AutoSurfaceDirective, BOUNDARY_ELEMENT_TOKEN, BREAKPOINT_INSTANCE_TOKEN, BREAKPOINT_ORDER, COLOR_PROVIDER, ClickOutsideDirective, ColorInteractiveContainerDirective, ColorInteractiveDirective, ColorInteractiveExcludeDirective, ColorInteractiveHasFocusDirective, DEFAULT_MULTI_INSTANCE_RELS, DEFAULT_MULTI_INSTANCE_TAGS, DEFAULT_VIEWPORT_CONFIG, DISABLE_LOGGER_PARAM, DragHandleDirective, ET_DISABLE_SCROLL_TOP, ET_DISABLE_SCROLL_TOP_AS_RETURN_ROUTE, ET_DISABLE_SCROLL_TOP_ON_PATH_PARAM_CHANGE, ET_PROPERTY_REMOVED, FOCUSABLE_SELECTOR, FOCUS_VISIBLE_TRACKER_TOKEN, HtmlToMarkdownPipe, IS_ARRAY_NOT_EMPTY, IS_EMAIL, InferMimeTypePipe, InitialsPipe, IsArrayNotEmpty, IsEmail, jsonLd as JsonLD, KeyPressManager, MUST_MATCH, MarkdownToHtmlPipe, MustMatch, NormalizeGameResultTypePipe, NormalizeMatchParticipantsPipe, NormalizeMatchScorePipe, NormalizeMatchStatePipe, NormalizeMatchTypePipe, PropsDirective, ProvideColorDirective, ProvideSurfaceDirective, RUNTIME_ERROR_NO_DATA, RepeatDirective, ResizeHandlesComponent, RuntimeError, SEO_DIRECTIVE_TOKEN, SURFACE_PROVIDER, SURFACE_TYPE, SWIPE_VELOCITY_WINDOW_MS, ScrollObserverDirective, ScrollObserverEndDirective, ScrollObserverStartDirective, SeoDirective, SlugifyPipe, StructuredDataComponent, SurfaceInteractiveDirective, ToArrayPipe, TypedQueryList, UNSAVED_CHANGES_TITLE_MARKER, ValidateAtLeastOneRequired, Validators, anchoredOverlayPosition, animationDebugLog, applyAlternateBinding, applyAlternateLanguagesBindings, applyArticleBindings, applyAuthorBinding, applyCanonicalBinding, applyCenteredPosition, applyDescriptionBinding, applyFaviconOverlay, applyGlobalPosition, applyHeadBinding, applyHeadTitleBinding, applyHeadTitleMarker, applyHostListener, applyHostListeners, applyInitialFocus, applyKeywordsBinding, applyLinkBinding, applyMetaBinding, applyNextBinding, applyOgBinding, applyOpenGraphBindings, applyPrevBinding, applyResourceHintsBindings, applyRobotsBinding, applySocialMediaBindings, applyStructuredDataBinding, applyTwitterCardBindings, areScrollStatesEqual, bindProps, boolBreakpointTransform, booleanBreakpointAttribute, boundingClientRectToElementRect, breakpointTransformBase, buildElementSignal, buildSignalEffects, canUseSessionMemory, clamp, clone, cloneFormGroup, computedTillFalsy, computedTillTruthy, controlValueSignal, controlValueSignalWithPrevious, copyToClipboard, createAnchoredPositionCleanup, createArrayPropertyBinding, createAutoSessionMemoryKey, createBulkPropertyBinding, createCanAnimateSignal, createComponentId, createCssColorThemeName, createCssSurfaceName, createDependencyStash, createDestroy, createDocumentElementSignal, createElementDictionary, createElementDimensions, createEmptyElementSignal, createFlipAnimation, createFlipAnimationGroup, createHostProps, createIsRenderedSignal, createLogger, createOverlayRuntimeRef, createPropHandlers, createPropertyBinding, createProps, createRootThemeCss, createRoute, createRouterState, createRxHostListener, createSessionMemory, createSetup, createSwatchCss, createSwipeTracker, createTailwindColorThemes, createTailwindCssVar, createTailwindRgbVar, createThemeStyle, createUnsavedChangesGuard, createUnsavedChangesTabLock, createUnsavedChangesTracker, createUserConsentProvider, deferredSignal, defineLabels, defineProvider, defineRootProvider, defineStaticProvider, defineStaticRootProvider, deleteCookie, dragGestureFrom, easeElastic, easeIn, easeInOut, easeLinear, easeOut, easeOutBack, easeOutBackStrong, elementCanScroll, enableAnchoredOverlayPositionExtras, equal, firstElementSignal, focusElement, forceReflow, formatRuntimeError, fromNextFrame, getCookie, getDomain, getElementScrollCoordinates, getFocusableElements, getFormGroupValue, getGroupMatchPoints, getGroupMatchScore, getHeadingElement, getKnockoutMatchScore, getMatchScoreSubLine, getObjectProperty, getScrollContainerTarget, getScrollItemTarget, getScrollSnapTarget, hasCookie, holdScrollRestoration, htmlToMarkdown, inferMimeType, initials, injectAngularRootElement, injectAnimatedBlockSize, injectBoundaryElement, injectBreakpointInput, injectBreakpointIsMatched, injectBreakpointObserver, injectCanHover, injectColorThemes, injectColorThemesPrefix, injectCurrentBreakpoint, injectDeviceInputType, injectDisplayOrientation, injectErrorTheme, injectFaviconStore, injectFocusVisibleTracker, injectFragment, injectHasPrecisionInput, injectHasTouchInput, injectHostElement, injectIs2Xl, injectIsDocumentVisible, injectIsLandscape, injectIsLg, injectIsMd, injectIsPortrait, injectIsRouterInitialized, injectIsSm, injectIsXl, injectIsXs, injectLinkStore, injectLinkStoreConfig, injectLocale, injectMediaQueryIsMatched, injectMetaConfig, injectMetaStore, injectObserveBreakpoint, injectObserveMediaQuery, injectOverlayRuntime, injectPathParam, injectPathParamChanges, injectPathParams, injectPrefersReducedMotion, injectQueryParam, injectQueryParamChanges, injectQueryParams, injectRenderer, injectRoute, injectRouteData, injectRouteDataItem, injectRouteTitle, injectRouterEvent, injectRouterNavigationState, injectRouterState, injectScrollbarDimensions, injectStructuredDataConfig, injectStructuredDataStore, injectStyleManager, injectSuccessTheme, injectSurfaceContextTracker, injectSurfaceThemes, injectSurfaceThemesPrefix, injectTemplateRef, injectTitleConfig, injectTitleStore, injectUnsavedChangesCoordinator, injectUrl, injectViewportConfig, injectViewportDimensions, injectViewportSize, injectWarningTheme, isAnimationDebugEnabled, isArray, isElementSignal, isElementVisible, isFocusable, isGroupMatch, isHTMLElement, isKnockoutMatch, isObject, markdownToHtml, matchesReducedMotion, maybeSignalValue, memoizeSignal, nextFrame, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, normalizeUnsavedChangesSource, numberBreakpointAttribute, numberBreakpointTransform, previousSignalValue, provideBoundaryElement, provideBreakpointInstance, provideBreakpointObserver, provideColorThemes, provideColorThemesWithTailwind4, provideFaviconStore, provideFocusVisibleTracker, provideLinkStore, provideLinkStoreConfig, provideLocale, provideMetaConfig, provideMetaStore, provideOverlayRuntime, provideRenderer, provideStructuredDataConfig, provideStructuredDataStore, provideStyleManager, provideSurfaceContextTracker, provideSurfaceThemesWithTailwind4, provideTitleConfig, provideTitleStore, provideUnsavedChangesCoordinator, provideViewportConfig, randomId, readFromClipboard, registerAnchoredPositionMiddlewareExtras, registerAnchoredPositionSetup, resetPositioningStyles, resolveAppRootColorProvider, resolveSurfaceByElevation, round, routerDisableScrollTop, scrollToElement, setBackdropStyles, setBaseElementStyles, setCookie, setInputSignal, setupFocusTrap, setupPositioning, setupScrollRestoration, signalAnimatedNumber, signalAttributes, signalClasses, signalElementChildren, signalElementDimensions, signalElementIntersection, signalElementLastScrollDirection, signalElementMutations, signalElementScrollState, signalHostAttributes, signalHostClasses, signalHostElementDimensions, signalHostElementIntersection, signalHostElementLastScrollDirection, signalHostElementMutations, signalHostElementScrollState, signalHostStyles, signalIsRendered, signalStyles, slugify, switchQueryListChanges, syncSignal, templateComputed, toArray, toArrayTrackByFn, toInjectFn, toProvideFn, toStringBinding, toToken, transformOrReturn, typedBreakpointTransform, unbindProps, useCursorDragScroll, writeScrollbarSizeToCssVariables, writeViewportSizeToCssVariables, ɵProvideColorThemes, ɵProvideColorThemesPrefix, ɵProvideSurfaceThemes, ɵProvideSurfaceThemesPrefix };
|
|
9259
|
+
export { ANIMATABLE_TOKEN, ANIMATED_IF_TOKEN, ANIMATED_LIFECYCLE_TOKEN, ANIMATION_DEBUG_STORAGE_KEY, AT_LEAST_ONE_REQUIRED, AnimatableDirective, AnimatedIfDirective, AnimatedLifecycleDirective, AutoSurfaceDirective, BOUNDARY_ELEMENT_TOKEN, BREAKPOINT_INSTANCE_TOKEN, BREAKPOINT_ORDER, COLOR_PROVIDER, ClickOutsideDirective, ColorInteractiveContainerDirective, ColorInteractiveDirective, ColorInteractiveExcludeDirective, ColorInteractiveHasFocusDirective, DEFAULT_MULTI_INSTANCE_RELS, DEFAULT_MULTI_INSTANCE_TAGS, DEFAULT_VIEWPORT_CONFIG, DISABLE_LOGGER_PARAM, DragHandleDirective, ET_DISABLE_SCROLL_TOP, ET_DISABLE_SCROLL_TOP_AS_RETURN_ROUTE, ET_DISABLE_SCROLL_TOP_ON_PATH_PARAM_CHANGE, ET_PROPERTY_REMOVED, FOCUSABLE_SELECTOR, FOCUS_VISIBLE_TRACKER_TOKEN, HtmlToMarkdownPipe, IS_ARRAY_NOT_EMPTY, IS_EMAIL, InferMimeTypePipe, InitialsPipe, IsArrayNotEmpty, IsEmail, jsonLd as JsonLD, KeyPressManager, MUST_MATCH, MarkdownToHtmlPipe, MustMatch, NOTIFICATION_CLICK_MESSAGE_TYPE, NormalizeGameResultTypePipe, NormalizeMatchParticipantsPipe, NormalizeMatchScorePipe, NormalizeMatchStatePipe, NormalizeMatchTypePipe, PropsDirective, ProvideColorDirective, ProvideSurfaceDirective, RUNTIME_ERROR_NO_DATA, RepeatDirective, ResizeHandlesComponent, RuntimeError, SEO_DIRECTIVE_TOKEN, SURFACE_PROVIDER, SURFACE_TYPE, SWIPE_VELOCITY_WINDOW_MS, ScrollObserverDirective, ScrollObserverEndDirective, ScrollObserverStartDirective, SeoDirective, SlugifyPipe, StructuredDataComponent, SurfaceInteractiveDirective, ToArrayPipe, TypedQueryList, UNSAVED_CHANGES_TITLE_MARKER, ValidateAtLeastOneRequired, Validators, anchoredOverlayPosition, animationDebugLog, applyAlternateBinding, applyAlternateLanguagesBindings, applyArticleBindings, applyAuthorBinding, applyCanonicalBinding, applyCenteredPosition, applyDescriptionBinding, applyFaviconOverlay, applyGlobalPosition, applyHeadBinding, applyHeadTitleBinding, applyHeadTitleMarker, applyHostListener, applyHostListeners, applyInitialFocus, applyKeywordsBinding, applyLinkBinding, applyMetaBinding, applyNextBinding, applyOgBinding, applyOpenGraphBindings, applyPrevBinding, applyResourceHintsBindings, applyRobotsBinding, applySocialMediaBindings, applyStructuredDataBinding, applyTwitterCardBindings, areScrollStatesEqual, bindProps, boolBreakpointTransform, booleanBreakpointAttribute, boundingClientRectToElementRect, breakpointTransformBase, buildElementSignal, buildSignalEffects, canUseSessionMemory, clamp, clone, cloneFormGroup, computedTillFalsy, computedTillTruthy, controlValueSignal, controlValueSignalWithPrevious, copyToClipboard, createAnchoredPositionCleanup, createArrayPropertyBinding, createAutoSessionMemoryKey, createBulkPropertyBinding, createCanAnimateSignal, createComponentId, createCssColorThemeName, createCssSurfaceName, createDependencyStash, createDestroy, createDocumentElementSignal, createElementDictionary, createElementDimensions, createEmptyElementSignal, createFlipAnimation, createFlipAnimationGroup, createHostProps, createIsRenderedSignal, createLogger, createOverlayRuntimeRef, createPropHandlers, createPropertyBinding, createProps, createRootThemeCss, createRoute, createRouterState, createRxHostListener, createSessionMemory, createSetup, createSwatchCss, createSwipeTracker, createTailwindColorThemes, createTailwindCssVar, createTailwindRgbVar, createThemeStyle, createUnsavedChangesGuard, createUnsavedChangesTabLock, createUnsavedChangesTracker, createUserConsentProvider, deferredSignal, defineLabels, defineProvider, defineRootProvider, defineStaticProvider, defineStaticRootProvider, deleteCookie, dragGestureFrom, easeElastic, easeIn, easeInOut, easeLinear, easeOut, easeOutBack, easeOutBackStrong, elementCanScroll, enableAnchoredOverlayPositionExtras, equal, firstElementSignal, focusElement, forceReflow, formatRuntimeError, fromNextFrame, getCookie, getDomain, getElementScrollCoordinates, getFocusableElements, getFormGroupValue, getGroupMatchPoints, getGroupMatchScore, getHeadingElement, getKnockoutMatchScore, getMatchScoreSubLine, getObjectProperty, getScrollContainerTarget, getScrollItemTarget, getScrollSnapTarget, hasCookie, holdScrollRestoration, htmlToMarkdown, inferMimeType, initials, injectAngularRootElement, injectAnimatedBlockSize, injectBoundaryElement, injectBreakpointInput, injectBreakpointIsMatched, injectBreakpointObserver, injectCanHover, injectColorThemes, injectColorThemesPrefix, injectCurrentBreakpoint, injectDeviceInputType, injectDisplayOrientation, injectErrorTheme, injectFaviconStore, injectFocusVisibleTracker, injectFragment, injectHasPrecisionInput, injectHasTouchInput, injectHostElement, injectIs2Xl, injectIsDocumentVisible, injectIsLandscape, injectIsLg, injectIsMd, injectIsPortrait, injectIsRouterInitialized, injectIsSm, injectIsXl, injectIsXs, injectLinkStore, injectLinkStoreConfig, injectLocale, injectMediaQueryIsMatched, injectMetaConfig, injectMetaStore, injectNotifications, injectObserveBreakpoint, injectObserveMediaQuery, injectOverlayRuntime, injectPathParam, injectPathParamChanges, injectPathParams, injectPrefersReducedMotion, injectQueryParam, injectQueryParamChanges, injectQueryParams, injectRenderer, injectRoute, injectRouteData, injectRouteDataItem, injectRouteTitle, injectRouterEvent, injectRouterNavigationState, injectRouterState, injectScrollbarDimensions, injectStructuredDataConfig, injectStructuredDataStore, injectStyleManager, injectSuccessTheme, injectSurfaceContextTracker, injectSurfaceThemes, injectSurfaceThemesPrefix, injectTemplateRef, injectTitleConfig, injectTitleStore, injectUnsavedChangesCoordinator, injectUrl, injectViewportConfig, injectViewportDimensions, injectViewportSize, injectWarningTheme, isAnimationDebugEnabled, isArray, isElementSignal, isElementVisible, isFocusable, isGroupMatch, isHTMLElement, isKnockoutMatch, isObject, markdownToHtml, matchesReducedMotion, maybeSignalValue, memoizeSignal, nextFrame, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, normalizeUnsavedChangesSource, numberBreakpointAttribute, numberBreakpointTransform, previousSignalValue, provideBoundaryElement, provideBreakpointInstance, provideBreakpointObserver, provideColorThemes, provideColorThemesWithTailwind4, provideFaviconStore, provideFocusVisibleTracker, provideLinkStore, provideLinkStoreConfig, provideLocale, provideMetaConfig, provideMetaStore, provideNotifications, provideOverlayRuntime, provideRenderer, provideStructuredDataConfig, provideStructuredDataStore, provideStyleManager, provideSurfaceContextTracker, provideSurfaceThemesWithTailwind4, provideTitleConfig, provideTitleStore, provideUnsavedChangesCoordinator, provideViewportConfig, randomId, readFromClipboard, registerAnchoredPositionMiddlewareExtras, registerAnchoredPositionSetup, resetPositioningStyles, resolveAppRootColorProvider, resolveSurfaceByElevation, round, routerDisableScrollTop, scrollToElement, setBackdropStyles, setBaseElementStyles, setCookie, setInputSignal, setupFocusTrap, setupPositioning, setupScrollRestoration, signalAnimatedNumber, signalAttributes, signalClasses, signalElementChildren, signalElementDimensions, signalElementIntersection, signalElementLastScrollDirection, signalElementMutations, signalElementScrollState, signalHostAttributes, signalHostClasses, signalHostElementDimensions, signalHostElementIntersection, signalHostElementLastScrollDirection, signalHostElementMutations, signalHostElementScrollState, signalHostStyles, signalIsRendered, signalStyles, slugify, switchQueryListChanges, syncSignal, templateComputed, toArray, toArrayTrackByFn, toInjectFn, toProvideFn, toStringBinding, toToken, transformOrReturn, typedBreakpointTransform, unbindProps, useCursorDragScroll, writeScrollbarSizeToCssVariables, writeViewportSizeToCssVariables, ɵProvideColorThemes, ɵProvideColorThemesPrefix, ɵProvideSurfaceThemes, ɵProvideSurfaceThemesPrefix };
|
|
9023
9260
|
//# sourceMappingURL=ethlete-core.mjs.map
|