@ethlete/core 4.12.1 → 4.14.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/CHANGELOG.md +20 -0
- package/esm2022/lib/utils/scrollable.utils.mjs +7 -5
- package/esm2022/lib/utils/signal.utils.mjs +159 -61
- package/fesm2022/ethlete-core.mjs +164 -66
- package/fesm2022/ethlete-core.mjs.map +1 -1
- package/lib/directives/animated-lifecycle/animated-lifecycle.directive.d.ts +3 -3
- package/lib/props/create-prop-handlers.d.ts +9 -9
- package/lib/props/props.directive.d.ts +9 -9
- package/lib/utils/signal.utils.d.ts +48 -34
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, HostBinding, InjectionToken, assertInInjectionContext, DestroyRef, ElementRef, TemplateRef, Injectable, isSignal, signal, QueryList, Injector,
|
|
2
|
+
import { inject, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, HostBinding, InjectionToken, assertInInjectionContext, DestroyRef, ElementRef, TemplateRef, Injectable, isSignal, signal, QueryList, Injector, effect, untracked, runInInjectionContext, afterNextRender, NgZone, isDevMode, computed, Directive, model, EventEmitter, booleanAttribute, numberAttribute, Output, ViewContainerRef, Pipe, AfterRenderPhase, input } from '@angular/core';
|
|
3
3
|
import { DomSanitizer, Meta, Title } from '@angular/platform-browser';
|
|
4
4
|
import { Subject, BehaviorSubject, takeUntil, switchMap, of, tap, map, startWith, Observable, combineLatest, timer, distinctUntilChanged, shareReplay, filter, take, fromEvent, pairwise, debounceTime, finalize, merge, skip, takeWhile } from 'rxjs';
|
|
5
5
|
import { END, HOME, PAGE_DOWN, PAGE_UP, UP_ARROW, DOWN_ARROW } from '@angular/cdk/keycodes';
|
|
@@ -1011,16 +1011,18 @@ const isElementVisible = (options) => {
|
|
|
1011
1011
|
const elementBlockStart = elementRect.top;
|
|
1012
1012
|
const containerInlineStart = containerRect.left;
|
|
1013
1013
|
const containerBlockStart = containerRect.top;
|
|
1014
|
-
const
|
|
1015
|
-
const
|
|
1014
|
+
const elWith = elementRect.width || 1;
|
|
1015
|
+
const elHeight = elementRect.height || 1;
|
|
1016
|
+
const elementInlineEnd = elementInlineStart + elWith;
|
|
1017
|
+
const elementBlockEnd = elementBlockStart + elHeight;
|
|
1016
1018
|
const containerInlineEnd = containerInlineStart + containerRect.width;
|
|
1017
1019
|
const containerBlockEnd = containerBlockStart + containerRect.height;
|
|
1018
1020
|
const isElementInlineVisible = elementInlineStart >= containerInlineStart && elementInlineEnd <= containerInlineEnd;
|
|
1019
1021
|
const isElementBlockVisible = elementBlockStart >= containerBlockStart && elementBlockEnd <= containerBlockEnd;
|
|
1020
1022
|
const inlineIntersection = Math.min(elementInlineEnd, containerInlineEnd) - Math.max(elementInlineStart, containerInlineStart);
|
|
1021
1023
|
const blockIntersection = Math.min(elementBlockEnd, containerBlockEnd) - Math.max(elementBlockStart, containerBlockStart);
|
|
1022
|
-
const inlineIntersectionPercentage = clamp((inlineIntersection /
|
|
1023
|
-
const blockIntersectionPercentage = clamp((blockIntersection /
|
|
1024
|
+
const inlineIntersectionPercentage = clamp((inlineIntersection / elWith) * 100);
|
|
1025
|
+
const blockIntersectionPercentage = clamp((blockIntersection / elHeight) * 100);
|
|
1024
1026
|
return {
|
|
1025
1027
|
inline: isElementInlineVisible,
|
|
1026
1028
|
block: isElementBlockVisible,
|
|
@@ -2301,35 +2303,64 @@ const buildElementSignal = (el) => {
|
|
|
2301
2303
|
previousElement: previousElements?.[0] ?? null,
|
|
2302
2304
|
}))), { initialValue: { currentElement: null, previousElement: null, previousElements: [], currentElements: [] } });
|
|
2303
2305
|
};
|
|
2304
|
-
const buildSignalEffects = (config) => {
|
|
2306
|
+
const buildSignalEffects = (el, config) => {
|
|
2307
|
+
const elements = buildElementSignal(el);
|
|
2305
2308
|
const injector = inject(Injector);
|
|
2306
|
-
|
|
2307
|
-
|
|
2308
|
-
|
|
2309
|
-
|
|
2310
|
-
|
|
2311
|
-
|
|
2312
|
-
|
|
2313
|
-
|
|
2314
|
-
|
|
2315
|
-
|
|
2316
|
-
|
|
2317
|
-
|
|
2309
|
+
effect(() => {
|
|
2310
|
+
const { currentElements, previousElements } = elements();
|
|
2311
|
+
for (const previousEl of previousElements) {
|
|
2312
|
+
if (currentElements.includes(previousEl))
|
|
2313
|
+
continue;
|
|
2314
|
+
const tokens = Object.keys(config.tokenMap)
|
|
2315
|
+
.map((key) => key.split(' '))
|
|
2316
|
+
.flat();
|
|
2317
|
+
if (!tokens.length)
|
|
2318
|
+
continue;
|
|
2319
|
+
config.cleanupFn(previousEl, tokens);
|
|
2320
|
+
}
|
|
2321
|
+
for (const currentEl of currentElements) {
|
|
2322
|
+
if (previousElements.includes(currentEl))
|
|
2323
|
+
continue;
|
|
2324
|
+
for (const [tokens, condition] of Object.entries(config.tokenMap)) {
|
|
2325
|
+
untracked(() => {
|
|
2326
|
+
const tokenArray = tokens.split(' ');
|
|
2327
|
+
if (!tokenArray.length)
|
|
2328
|
+
return;
|
|
2329
|
+
config.updateFn(currentEl, tokenArray, condition());
|
|
2318
2330
|
});
|
|
2319
|
-
|
|
2320
|
-
});
|
|
2331
|
+
}
|
|
2321
2332
|
}
|
|
2333
|
+
});
|
|
2334
|
+
const effects = {};
|
|
2335
|
+
const has = (tokens) => tokens in effects;
|
|
2336
|
+
const push = (tokens, signal) => {
|
|
2337
|
+
if (has(tokens))
|
|
2338
|
+
return;
|
|
2339
|
+
runInInjectionContext(injector, () => {
|
|
2340
|
+
effects[tokens] = effect(() => {
|
|
2341
|
+
const { currentElements } = untracked(() => elements());
|
|
2342
|
+
for (const el of currentElements) {
|
|
2343
|
+
const tokenArray = tokens.split(' ');
|
|
2344
|
+
if (!tokenArray.length)
|
|
2345
|
+
continue;
|
|
2346
|
+
config.updateFn(el, tokenArray, signal());
|
|
2347
|
+
}
|
|
2348
|
+
});
|
|
2349
|
+
});
|
|
2322
2350
|
};
|
|
2323
2351
|
const pushMany = (map) => {
|
|
2324
|
-
for (const [
|
|
2325
|
-
push(
|
|
2352
|
+
for (const [tokens, signal] of Object.entries(map)) {
|
|
2353
|
+
push(tokens, signal);
|
|
2326
2354
|
}
|
|
2327
2355
|
};
|
|
2328
|
-
const remove = (
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2356
|
+
const remove = (tokens) => {
|
|
2357
|
+
effects[tokens]?.destroy();
|
|
2358
|
+
delete effects[tokens];
|
|
2359
|
+
for (const el of elements().currentElements) {
|
|
2360
|
+
const tokenArray = tokens.split(' ');
|
|
2361
|
+
if (!tokenArray.length)
|
|
2362
|
+
continue;
|
|
2363
|
+
config.cleanupFn(el, tokenArray);
|
|
2333
2364
|
}
|
|
2334
2365
|
};
|
|
2335
2366
|
const removeMany = (tokens) => {
|
|
@@ -2337,7 +2368,7 @@ const buildSignalEffects = (config) => {
|
|
|
2337
2368
|
remove(token);
|
|
2338
2369
|
}
|
|
2339
2370
|
};
|
|
2340
|
-
pushMany(
|
|
2371
|
+
pushMany(config.tokenMap);
|
|
2341
2372
|
return { remove, removeMany, has, push, pushMany };
|
|
2342
2373
|
};
|
|
2343
2374
|
const signalIsRendered = () => {
|
|
@@ -2346,63 +2377,61 @@ const signalIsRendered = () => {
|
|
|
2346
2377
|
return isRendered.asReadonly();
|
|
2347
2378
|
};
|
|
2348
2379
|
const signalClasses = (el, classMap) => {
|
|
2349
|
-
|
|
2350
|
-
|
|
2351
|
-
|
|
2352
|
-
|
|
2353
|
-
if (
|
|
2354
|
-
|
|
2380
|
+
return buildSignalEffects(el, {
|
|
2381
|
+
tokenMap: classMap,
|
|
2382
|
+
cleanupFn: (el, tokens) => el.classList.remove(...tokens),
|
|
2383
|
+
updateFn: (el, tokens, condition) => {
|
|
2384
|
+
if (!condition) {
|
|
2385
|
+
el.classList.remove(...tokens);
|
|
2355
2386
|
}
|
|
2356
2387
|
else {
|
|
2357
|
-
|
|
2388
|
+
el.classList.add(...tokens);
|
|
2358
2389
|
}
|
|
2359
2390
|
},
|
|
2360
|
-
cleanupFn: ({ key }) => elements().currentElement?.classList.remove(key),
|
|
2361
2391
|
});
|
|
2362
2392
|
};
|
|
2363
2393
|
const signalHostClasses = (classMap) => signalClasses(inject(ElementRef), classMap);
|
|
2364
2394
|
const ALWAYS_TRUE_ATTRIBUTE_KEYS = ['disabled', 'readonly', 'required', 'checked', 'selected', 'hidden', 'inert'];
|
|
2365
2395
|
const signalAttributes = (el, attributeMap) => {
|
|
2366
|
-
|
|
2367
|
-
|
|
2368
|
-
|
|
2369
|
-
|
|
2370
|
-
const
|
|
2371
|
-
|
|
2372
|
-
|
|
2373
|
-
|
|
2374
|
-
|
|
2375
|
-
|
|
2376
|
-
|
|
2396
|
+
return buildSignalEffects(el, {
|
|
2397
|
+
tokenMap: attributeMap,
|
|
2398
|
+
cleanupFn: (el, tokens) => tokens.forEach((token) => el.removeAttribute(token)),
|
|
2399
|
+
updateFn: (el, tokens, condition) => {
|
|
2400
|
+
for (const token of tokens) {
|
|
2401
|
+
if (ALWAYS_TRUE_ATTRIBUTE_KEYS.includes(token)) {
|
|
2402
|
+
if (condition) {
|
|
2403
|
+
el.setAttribute(token, '');
|
|
2404
|
+
}
|
|
2405
|
+
else {
|
|
2406
|
+
el.removeAttribute(token);
|
|
2407
|
+
}
|
|
2408
|
+
continue;
|
|
2377
2409
|
}
|
|
2378
|
-
|
|
2379
|
-
|
|
2380
|
-
if (value === null || value === undefined) {
|
|
2381
|
-
elements().currentElement?.removeAttribute(key);
|
|
2410
|
+
if (condition === null || condition === undefined) {
|
|
2411
|
+
el.removeAttribute(token);
|
|
2382
2412
|
}
|
|
2383
2413
|
else {
|
|
2384
|
-
|
|
2414
|
+
el.setAttribute(token, `${condition}`);
|
|
2385
2415
|
}
|
|
2386
2416
|
}
|
|
2387
2417
|
},
|
|
2388
|
-
cleanupFn: ({ key }) => elements().currentElement?.removeAttribute(key),
|
|
2389
2418
|
});
|
|
2390
2419
|
};
|
|
2391
2420
|
const signalHostAttributes = (attributeMap) => signalAttributes(inject(ElementRef), attributeMap);
|
|
2392
2421
|
const signalStyles = (el, styleMap) => {
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
|
|
2399
|
-
|
|
2400
|
-
|
|
2401
|
-
|
|
2402
|
-
|
|
2422
|
+
return buildSignalEffects(el, {
|
|
2423
|
+
tokenMap: styleMap,
|
|
2424
|
+
cleanupFn: (el, tokens) => tokens.forEach((token) => el.style.removeProperty(token)),
|
|
2425
|
+
updateFn: (el, tokens, condition) => {
|
|
2426
|
+
for (const token of tokens) {
|
|
2427
|
+
if (condition === null || condition === undefined) {
|
|
2428
|
+
el.style.removeProperty(token);
|
|
2429
|
+
}
|
|
2430
|
+
else {
|
|
2431
|
+
el.style.setProperty(token, `${condition}`);
|
|
2432
|
+
}
|
|
2403
2433
|
}
|
|
2404
2434
|
},
|
|
2405
|
-
cleanupFn: ({ key }) => elements().currentElement?.style.removeProperty(key),
|
|
2406
2435
|
});
|
|
2407
2436
|
};
|
|
2408
2437
|
const signalHostStyles = (styleMap) => signalStyles(inject(ElementRef), styleMap);
|
|
@@ -2487,11 +2516,25 @@ const signalElementMutations = (el, options) => {
|
|
|
2487
2516
|
return elementMutationsSignal.asReadonly();
|
|
2488
2517
|
};
|
|
2489
2518
|
const signalHostElementMutations = (options) => signalElementMutations(inject(ElementRef), options);
|
|
2490
|
-
const signalElementScrollState = (el) => {
|
|
2519
|
+
const signalElementScrollState = (el, options) => {
|
|
2491
2520
|
const elements = buildElementSignal(el);
|
|
2492
2521
|
const elementDimensions = signalElementDimensions(elements);
|
|
2493
2522
|
const elementMutations = signalElementMutations(elements, { childList: true, subtree: true });
|
|
2494
2523
|
const isRendered = signalIsRendered();
|
|
2524
|
+
const initialScrollPosition = options?.initialScrollPosition;
|
|
2525
|
+
if (initialScrollPosition) {
|
|
2526
|
+
const ref = effect(() => {
|
|
2527
|
+
if (!isRendered())
|
|
2528
|
+
return;
|
|
2529
|
+
const scrollPosition = initialScrollPosition();
|
|
2530
|
+
const element = elements().currentElement;
|
|
2531
|
+
if (scrollPosition && element) {
|
|
2532
|
+
element.scrollLeft = scrollPosition.x;
|
|
2533
|
+
element.scrollTop = scrollPosition.y;
|
|
2534
|
+
ref.destroy();
|
|
2535
|
+
}
|
|
2536
|
+
});
|
|
2537
|
+
}
|
|
2495
2538
|
return computed(() => {
|
|
2496
2539
|
const element = elements().currentElement;
|
|
2497
2540
|
const dimensions = elementDimensions();
|
|
@@ -2565,6 +2608,40 @@ const signalElementIntersection = (el, options) => {
|
|
|
2565
2608
|
obs?.disconnect();
|
|
2566
2609
|
}
|
|
2567
2610
|
if (els.currentElements.length && !!enabled) {
|
|
2611
|
+
const rootEl = untracked(() => root().currentElement);
|
|
2612
|
+
const rootBounds = rootEl?.getBoundingClientRect();
|
|
2613
|
+
// check sync for intersections since the intersection observer async and we probably want to know the initial state
|
|
2614
|
+
const entries = els.currentElements
|
|
2615
|
+
.map((el) => {
|
|
2616
|
+
const visibility = isElementVisible({
|
|
2617
|
+
container: rootEl,
|
|
2618
|
+
element: el,
|
|
2619
|
+
});
|
|
2620
|
+
if (!visibility) {
|
|
2621
|
+
console.error('No visibility data found for element.', {
|
|
2622
|
+
element: el,
|
|
2623
|
+
container: rootEl,
|
|
2624
|
+
});
|
|
2625
|
+
return null;
|
|
2626
|
+
}
|
|
2627
|
+
const inlineIntersectionRatio = visibility.inlineIntersection / 100;
|
|
2628
|
+
const blockIntersectionRatio = visibility.blockIntersection / 100;
|
|
2629
|
+
const isIntersecting = inlineIntersectionRatio > 0 && blockIntersectionRatio > 0;
|
|
2630
|
+
const intersectionRatio = Math.min(inlineIntersectionRatio, blockIntersectionRatio);
|
|
2631
|
+
const elBounds = el.getBoundingClientRect();
|
|
2632
|
+
const intersectionEntry = {
|
|
2633
|
+
boundingClientRect: elBounds,
|
|
2634
|
+
intersectionRatio,
|
|
2635
|
+
intersectionRect: elBounds,
|
|
2636
|
+
isIntersecting,
|
|
2637
|
+
rootBounds: rootBounds ?? null,
|
|
2638
|
+
target: el,
|
|
2639
|
+
time: performance.now(),
|
|
2640
|
+
};
|
|
2641
|
+
return intersectionEntry;
|
|
2642
|
+
})
|
|
2643
|
+
.filter((e) => e !== null);
|
|
2644
|
+
elementIntersectionSignal.set(entries);
|
|
2568
2645
|
for (const el of els.currentElements) {
|
|
2569
2646
|
obs?.observe(el);
|
|
2570
2647
|
}
|
|
@@ -2699,6 +2776,27 @@ const injectPathParam = (key, config) => {
|
|
|
2699
2776
|
const src = computed(() => pathParams()[key] ?? null);
|
|
2700
2777
|
return transformOrReturn(src, config);
|
|
2701
2778
|
};
|
|
2779
|
+
const createIsRenderedSignal = () => {
|
|
2780
|
+
const value = signal(false);
|
|
2781
|
+
nextFrame(() => {
|
|
2782
|
+
if (!value()) {
|
|
2783
|
+
console.error('Render signal was not set to true. This can cause unexpected behavior. Make sure to .bind() the render signal at the end of the constructor.');
|
|
2784
|
+
}
|
|
2785
|
+
});
|
|
2786
|
+
return {
|
|
2787
|
+
state: value,
|
|
2788
|
+
bind: () => effect(() => value.set(true), { allowSignalWrites: true }),
|
|
2789
|
+
};
|
|
2790
|
+
};
|
|
2791
|
+
const createCanAnimateSignal = () => {
|
|
2792
|
+
const value = signal(false);
|
|
2793
|
+
nextFrame(() => {
|
|
2794
|
+
value.set(true);
|
|
2795
|
+
});
|
|
2796
|
+
return {
|
|
2797
|
+
state: value,
|
|
2798
|
+
};
|
|
2799
|
+
};
|
|
2702
2800
|
|
|
2703
2801
|
const scrollBehaviorSupported = supportsScrollBehavior();
|
|
2704
2802
|
let _uniqueIdCounter = 0;
|
|
@@ -5364,5 +5462,5 @@ const Validators = {
|
|
|
5364
5462
|
* Generated bundle index. Do not edit.
|
|
5365
5463
|
*/
|
|
5366
5464
|
|
|
5367
|
-
export { ANIMATABLE_TOKEN, ANIMATED_IF_TOKEN, ANIMATED_LIFECYCLE_TOKEN, AT_LEAST_ONE_REQUIRED, ActiveSelectionModel, AnimatableDirective, AnimatedIfDirective, AnimatedLifecycleDirective, AnimatedOverlayDirective, CURSOR_DRAG_SCROLLING_CLASS, CURSOR_DRAG_SCROLLING_PREPARED_CLASS, ClickObserverFactory, ClickObserverService, ClickOutsideDirective, ContentObserverService, CursorDragScrollDirective, DEBUG_TOKEN, DEFAULT_VIEWPORT_CONFIG, DELAYABLE_TOKEN, DebugDirective, DelayableDirective, ET_PROPERTY_REMOVED, FocusVisibleService, IS_ACTIVE_ELEMENT, IS_ARRAY_NOT_EMPTY, IS_ELEMENT, IS_EMAIL, InferMimeTypePipe, IntersectionObserverFactory, IntersectionObserverService, IsActiveElementDirective, IsArrayNotEmpty, IsElementDirective, IsEmail, KeyPressManager, LetContext, LetDirective, MUST_MATCH, Memo, MustMatch, MutationObserverFactory, NormalizeGameResultTypePipe, NormalizeMatchParticipantsPipe, NormalizeMatchScorePipe, NormalizeMatchStatePipe, NormalizeMatchTypePipe, OBSERVE_SCROLL_STATE, OBSERVE_VISIBILITY_TOKEN, ObserveContentDirective, ObserveResizeDirective, ObserveScrollStateDirective, ObserveVisibilityDirective, PropsDirective, ROOT_BOUNDARY_TOKEN, RUNTIME_ERROR_NO_DATA, RepeatDirective, ResizeObserverFactory, ResizeObserverService, RootBoundaryDirective, RouterStateService, RuntimeError, SCROLL_OBSERVER_FIRST_ELEMENT_CLASS, SCROLL_OBSERVER_IGNORE_TARGET_CLASS, SCROLL_OBSERVER_LAST_ELEMENT_CLASS, SCROLL_OBSERVER_OBSERVING_FIRST_ELEMENT_CLASS, SCROLL_OBSERVER_OBSERVING_LAST_ELEMENT_CLASS, SEO_DIRECTIVE_TOKEN, ScrollObserverFirstElementDirective, ScrollObserverIgnoreTargetDirective, ScrollObserverLastElementDirective, SelectionModel, SeoDirective, SmartBlockScrollStrategy, StructuredDataComponent, ToArrayPipe, TypedQueryList, VIEWPORT_CONFIG, ValidateAtLeastOneRequired, Validators, ViewportService, bindProps, buildSignalEffects, clamp, clone, cloneFormGroup, controlValueSignal, controlValueSignalWithPrevious, createComponentId, createDependencyStash, createDestroy, createElementDictionary, createFlipAnimation, createFlipAnimationGroup, createHostProps, createMediaQueryObservable, createMutationObservable, createPropHandlers, createProps, createReactiveBindings, createResizeObservable, createSetup, debouncedControlValueSignal, deleteCookie, elementCanScroll, equal, forceReflow, formatRuntimeError, fromNextFrame, getCookie, getDomain, getElementVisibleStates, getFormGroupValue, getGroupMatchPoints, getGroupMatchScore, getIntersectionInfo, getKnockoutMatchScore, getMatchScoreSubLine, getObjectProperty, hasCookie, inferMimeType, injectFragment, injectHostElement, injectOrRunInContext, injectPathParam, injectPathParams, injectQueryParam, injectQueryParams, injectRouteData, injectRouteDataItem, injectRouteTitle, injectTemplateRef, isArray, isElementVisible, isEmptyArray, isGroupMatch, isKnockoutMatch, isObject, isObjectArray, isPrimitiveArray, mergeSeoConfig, nextFrame, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, previousSignalValue, provideViewportConfig, round, routerDisableScrollTop, scrollToElement, setCookie, signalAttributes, signalClasses, signalElementChildren, signalElementDimensions, signalElementIntersection, signalElementMutations, signalElementScrollState, signalHostAttributes, signalHostClasses, signalHostElementDimensions, signalHostElementIntersection, signalHostElementMutations, signalHostElementScrollState, signalHostStyles, signalIsRendered, signalStyles, signalVisibilityChangeClasses, switchQueryListChanges, syncSignal, templateComputed, toArray, toArrayTrackByFn, transformOrReturn, unbindProps };
|
|
5465
|
+
export { ANIMATABLE_TOKEN, ANIMATED_IF_TOKEN, ANIMATED_LIFECYCLE_TOKEN, AT_LEAST_ONE_REQUIRED, ActiveSelectionModel, AnimatableDirective, AnimatedIfDirective, AnimatedLifecycleDirective, AnimatedOverlayDirective, CURSOR_DRAG_SCROLLING_CLASS, CURSOR_DRAG_SCROLLING_PREPARED_CLASS, ClickObserverFactory, ClickObserverService, ClickOutsideDirective, ContentObserverService, CursorDragScrollDirective, DEBUG_TOKEN, DEFAULT_VIEWPORT_CONFIG, DELAYABLE_TOKEN, DebugDirective, DelayableDirective, ET_PROPERTY_REMOVED, FocusVisibleService, IS_ACTIVE_ELEMENT, IS_ARRAY_NOT_EMPTY, IS_ELEMENT, IS_EMAIL, InferMimeTypePipe, IntersectionObserverFactory, IntersectionObserverService, IsActiveElementDirective, IsArrayNotEmpty, IsElementDirective, IsEmail, KeyPressManager, LetContext, LetDirective, MUST_MATCH, Memo, MustMatch, MutationObserverFactory, NormalizeGameResultTypePipe, NormalizeMatchParticipantsPipe, NormalizeMatchScorePipe, NormalizeMatchStatePipe, NormalizeMatchTypePipe, OBSERVE_SCROLL_STATE, OBSERVE_VISIBILITY_TOKEN, ObserveContentDirective, ObserveResizeDirective, ObserveScrollStateDirective, ObserveVisibilityDirective, PropsDirective, ROOT_BOUNDARY_TOKEN, RUNTIME_ERROR_NO_DATA, RepeatDirective, ResizeObserverFactory, ResizeObserverService, RootBoundaryDirective, RouterStateService, RuntimeError, SCROLL_OBSERVER_FIRST_ELEMENT_CLASS, SCROLL_OBSERVER_IGNORE_TARGET_CLASS, SCROLL_OBSERVER_LAST_ELEMENT_CLASS, SCROLL_OBSERVER_OBSERVING_FIRST_ELEMENT_CLASS, SCROLL_OBSERVER_OBSERVING_LAST_ELEMENT_CLASS, SEO_DIRECTIVE_TOKEN, ScrollObserverFirstElementDirective, ScrollObserverIgnoreTargetDirective, ScrollObserverLastElementDirective, SelectionModel, SeoDirective, SmartBlockScrollStrategy, StructuredDataComponent, ToArrayPipe, TypedQueryList, VIEWPORT_CONFIG, ValidateAtLeastOneRequired, Validators, ViewportService, bindProps, buildSignalEffects, clamp, clone, cloneFormGroup, controlValueSignal, controlValueSignalWithPrevious, createCanAnimateSignal, createComponentId, createDependencyStash, createDestroy, createElementDictionary, createFlipAnimation, createFlipAnimationGroup, createHostProps, createIsRenderedSignal, createMediaQueryObservable, createMutationObservable, createPropHandlers, createProps, createReactiveBindings, createResizeObservable, createSetup, debouncedControlValueSignal, deleteCookie, elementCanScroll, equal, forceReflow, formatRuntimeError, fromNextFrame, getCookie, getDomain, getElementVisibleStates, getFormGroupValue, getGroupMatchPoints, getGroupMatchScore, getIntersectionInfo, getKnockoutMatchScore, getMatchScoreSubLine, getObjectProperty, hasCookie, inferMimeType, injectFragment, injectHostElement, injectOrRunInContext, injectPathParam, injectPathParams, injectQueryParam, injectQueryParams, injectRouteData, injectRouteDataItem, injectRouteTitle, injectTemplateRef, isArray, isElementVisible, isEmptyArray, isGroupMatch, isKnockoutMatch, isObject, isObjectArray, isPrimitiveArray, mergeSeoConfig, nextFrame, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, previousSignalValue, provideViewportConfig, round, routerDisableScrollTop, scrollToElement, setCookie, signalAttributes, signalClasses, signalElementChildren, signalElementDimensions, signalElementIntersection, signalElementMutations, signalElementScrollState, signalHostAttributes, signalHostClasses, signalHostElementDimensions, signalHostElementIntersection, signalHostElementMutations, signalHostElementScrollState, signalHostStyles, signalIsRendered, signalStyles, signalVisibilityChangeClasses, switchQueryListChanges, syncSignal, templateComputed, toArray, toArrayTrackByFn, transformOrReturn, unbindProps };
|
|
5368
5466
|
//# sourceMappingURL=ethlete-core.mjs.map
|