@ethlete/core 5.0.0-next.12 → 5.0.0-next.14

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 CHANGED
@@ -1,5 +1,17 @@
1
1
  # @ethlete/core
2
2
 
3
+ ## 5.0.0-next.14
4
+
5
+ ### Minor Changes
6
+
7
+ - [`7dcbb8e`](https://github.com/ethlete-io/ethdk/commit/7dcbb8e3f3823728bc370fb89d1a89ee831e779b) Thanks [@TomTomB](https://github.com/TomTomB)! - Add utils for converting between markdown and html
8
+
9
+ ## 5.0.0-next.13
10
+
11
+ ### Patch Changes
12
+
13
+ - [`8f77e78`](https://github.com/ethlete-io/ethdk/commit/8f77e78d39a8fa91b9ccb8e038e9b3f62a9f1b94) Thanks [@TomTomB](https://github.com/TomTomB)! - Fix theme class name generation for legacy tailwind 3 themes
14
+
3
15
  ## 5.0.0-next.12
4
16
 
5
17
  ### Patch Changes
@@ -2563,6 +2563,201 @@ const createLogger = (config) => {
2563
2563
  };
2564
2564
  };
2565
2565
 
2566
+ const escapeHtml = (str) => str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
2567
+ const unescapeHtml = (str) => str
2568
+ .replace(/&amp;/g, '&')
2569
+ .replace(/&lt;/g, '<')
2570
+ .replace(/&gt;/g, '>')
2571
+ .replace(/&quot;/g, '"')
2572
+ .replace(/&#39;/g, "'")
2573
+ .replace(/&nbsp;/g, ' ');
2574
+ const stripTags = (str) => str.replace(/<[^>]+>/g, '');
2575
+ const parseTableRow = (line) => line
2576
+ .split('|')
2577
+ .slice(1, -1)
2578
+ .map((cell) => cell.trim());
2579
+ const isTableSeparatorLine = (line) => /^\|?(\s*:?-+:?\s*\|)+\s*$/.test(line);
2580
+ const makePlaceholder = (kind, idx) => `\u{E000}${kind}${idx}\u{E001}`;
2581
+ const placeholderRe = (kind) => new RegExp(`\u{E000}${kind}(\\d+)\u{E001}`, 'gu');
2582
+ const isPlaceholder = (kind, str) => new RegExp(`^\u{E000}${kind}\\d+\u{E001}$`, 'u').test(str);
2583
+ const processInline = (text) => {
2584
+ const inlineCodes = [];
2585
+ text = text.replace(/`([^`]+)`/g, (_, code) => {
2586
+ const idx = inlineCodes.push(`<code>${escapeHtml(code)}</code>`) - 1;
2587
+ return makePlaceholder('IC', idx);
2588
+ });
2589
+ // Bold + italic — *** before ** before *
2590
+ text = text.replace(/\*\*\*(.+?)\*\*\*/g, '<strong><em>$1</em></strong>');
2591
+ text = text.replace(/\*\*(.+?)\*\*/g, '<strong>$1</strong>');
2592
+ text = text.replace(/__(.+?)__/g, '<strong>$1</strong>');
2593
+ text = text.replace(/\*(.+?)\*/g, '<em>$1</em>');
2594
+ text = text.replace(/~~(.+?)~~/g, '<del>$1</del>');
2595
+ // Images before links (order matters)
2596
+ text = text.replace(/!\[([^\]]*)\]\(([^)]+)\)/g, '<img src="$2" alt="$1">');
2597
+ text = text.replace(/\[([^\]]+)\]\(([^)]+)\)/g, '<a href="$2">$1</a>');
2598
+ return text.replace(placeholderRe('IC'), (_, i) => inlineCodes[+i] ?? '');
2599
+ };
2600
+ /**
2601
+ * Converts a markdown string to HTML.
2602
+ * Covers headings, bold, italic, strikethrough, inline code, fenced code blocks,
2603
+ * links, images, block quotes, unordered/ordered lists, tables, horizontal rules, and paragraphs.
2604
+ */
2605
+ const markdownToHtml = (markdown) => {
2606
+ if (!markdown)
2607
+ return '';
2608
+ let text = markdown.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
2609
+ // Extract fenced code blocks before any other processing
2610
+ const codeBlocks = [];
2611
+ text = text.replace(/```(\w*)\n([\s\S]*?)```/g, (_, lang, code) => {
2612
+ const langAttr = lang ? ` class="language-${lang}"` : '';
2613
+ const idx = codeBlocks.push(`<pre><code${langAttr}>${escapeHtml(code.trim())}</code></pre>`) - 1;
2614
+ return makePlaceholder('CODE', idx);
2615
+ });
2616
+ const html = text
2617
+ .split(/\n\n+/)
2618
+ .map((block) => {
2619
+ const trimmed = block.trim();
2620
+ if (!trimmed)
2621
+ return '';
2622
+ if (isPlaceholder('CODE', trimmed))
2623
+ return trimmed;
2624
+ // Heading
2625
+ const headingMatch = trimmed.match(/^(#{1,6})\s+(.+)$/);
2626
+ if (headingMatch?.[1] && headingMatch?.[2]) {
2627
+ const level = headingMatch[1].length;
2628
+ return `<h${level}>${processInline(headingMatch[2].trim())}</h${level}>`;
2629
+ }
2630
+ // Horizontal rule
2631
+ if (/^(---|\*\*\*|___)\s*$/.test(trimmed))
2632
+ return '<hr>';
2633
+ // Table (GFM)
2634
+ const tableLines = trimmed.split('\n');
2635
+ if (tableLines.length >= 2 && /\|/.test(tableLines[0] ?? '') && isTableSeparatorLine(tableLines[1] ?? '')) {
2636
+ const headers = parseTableRow(tableLines[0] ?? '');
2637
+ const thead = `<thead><tr>${headers.map((h) => `<th>${processInline(h)}</th>`).join('')}</tr></thead>`;
2638
+ const bodyRows = tableLines.slice(2);
2639
+ const tbody = bodyRows.length > 0
2640
+ ? `<tbody>${bodyRows
2641
+ .map((row) => `<tr>${parseTableRow(row)
2642
+ .map((cell) => `<td>${processInline(cell)}</td>`)
2643
+ .join('')}</tr>`)
2644
+ .join('')}</tbody>`
2645
+ : '';
2646
+ return `<table>${thead}${tbody}</table>`;
2647
+ }
2648
+ // Blockquote
2649
+ if (/^> /.test(trimmed)) {
2650
+ const content = trimmed
2651
+ .split('\n')
2652
+ .map((l) => l.replace(/^>\s?/, ''))
2653
+ .join('<br>');
2654
+ return `<blockquote>${processInline(content)}</blockquote>`;
2655
+ }
2656
+ // Unordered list
2657
+ if (/^[-*+]\s/.test(trimmed)) {
2658
+ const items = trimmed
2659
+ .split('\n')
2660
+ .filter((l) => /^[-*+]\s/.test(l))
2661
+ .map((l) => `<li>${processInline(l.replace(/^[-*+]\s+/, '').trim())}</li>`)
2662
+ .join('');
2663
+ return `<ul>${items}</ul>`;
2664
+ }
2665
+ // Ordered list
2666
+ if (/^\d+\.\s/.test(trimmed)) {
2667
+ const items = trimmed
2668
+ .split('\n')
2669
+ .filter((l) => /^\d+\.\s/.test(l))
2670
+ .map((l) => `<li>${processInline(l.replace(/^\d+\.\s+/, '').trim())}</li>`)
2671
+ .join('');
2672
+ return `<ol>${items}</ol>`;
2673
+ }
2674
+ // Paragraph — single newlines within a block become <br>
2675
+ return `<p>${trimmed
2676
+ .split('\n')
2677
+ .map((l) => processInline(l))
2678
+ .join('<br>')}</p>`;
2679
+ })
2680
+ .filter(Boolean)
2681
+ .join('\n');
2682
+ return html.replace(placeholderRe('CODE'), (_, i) => codeBlocks[+i] ?? '');
2683
+ };
2684
+ /**
2685
+ * Converts an HTML string to markdown.
2686
+ * Covers headings, bold, italic, strikethrough, inline code, fenced code blocks,
2687
+ * links, images, block quotes, unordered/ordered lists, tables, horizontal rules, and paragraphs.
2688
+ */
2689
+ const htmlToMarkdown = (html) => {
2690
+ if (!html)
2691
+ return '';
2692
+ let md = html;
2693
+ // Code blocks — process before inline code
2694
+ md = md.replace(/<pre[^>]*><code[^>]*class="language-([^"]+)"[^>]*>([\s\S]*?)<\/code><\/pre>/gi, (_, lang, code) => `\n\`\`\`${lang}\n${unescapeHtml(code.trim())}\n\`\`\`\n`);
2695
+ md = md.replace(/<pre[^>]*><code[^>]*>([\s\S]*?)<\/code><\/pre>/gi, (_, code) => `\n\`\`\`\n${unescapeHtml(code.trim())}\n\`\`\`\n`);
2696
+ md = md.replace(/<pre[^>]*>([\s\S]*?)<\/pre>/gi, (_, code) => `\n\`\`\`\n${unescapeHtml(code.trim())}\n\`\`\`\n`);
2697
+ // Headings
2698
+ for (let i = 6; i >= 1; i--) {
2699
+ md = md.replace(new RegExp(`<h${i}[^>]*>([\\s\\S]*?)<\\/h${i}>`, 'gi'), (_, content) => `\n${'#'.repeat(i)} ${stripTags(content).trim()}\n`);
2700
+ }
2701
+ // Bold + italic (combined before individual)
2702
+ md = md.replace(/<strong[^>]*><em[^>]*>([\s\S]*?)<\/em><\/strong>/gi, '***$1***');
2703
+ md = md.replace(/<em[^>]*><strong[^>]*>([\s\S]*?)<\/strong><\/em>/gi, '***$1***');
2704
+ md = md.replace(/<(strong|b)[^>]*>([\s\S]*?)<\/\1>/gi, '**$2**');
2705
+ md = md.replace(/<(em|i)[^>]*>([\s\S]*?)<\/\1>/gi, '*$2*');
2706
+ md = md.replace(/<(del|s|strike)[^>]*>([\s\S]*?)<\/\1>/gi, '~~$2~~');
2707
+ // Inline code
2708
+ md = md.replace(/<code[^>]*>([\s\S]*?)<\/code>/gi, (_, code) => `\`${unescapeHtml(code)}\``);
2709
+ // Links and images
2710
+ md = md.replace(/<a[^>]+href="([^"]*)"[^>]*>([\s\S]*?)<\/a>/gi, '[$2]($1)');
2711
+ md = md.replace(/<img[^>]+src="([^"]*)"[^>]*alt="([^"]*)"[^>]*\/?>/gi, '![$2]($1)');
2712
+ md = md.replace(/<img[^>]+alt="([^"]*)"[^>]*src="([^"]*)"[^>]*\/?>/gi, '![$1]($2)');
2713
+ md = md.replace(/<img[^>]+src="([^"]*)"[^>]*\/?>/gi, '![]($1)');
2714
+ // Block quotes
2715
+ md = md.replace(/<blockquote[^>]*>([\s\S]*?)<\/blockquote>/gi, (_, content) => {
2716
+ return (stripTags(content)
2717
+ .trim()
2718
+ .split('\n')
2719
+ .map((line) => `> ${line.trim()}`)
2720
+ .join('\n') + '\n');
2721
+ });
2722
+ // Lists
2723
+ md = md.replace(/<ul[^>]*>([\s\S]*?)<\/ul>/gi, (_, content) => {
2724
+ return ('\n' +
2725
+ content.replace(/<li[^>]*>([\s\S]*?)<\/li>/gi, (_m, item) => `- ${stripTags(item).trim()}\n`));
2726
+ });
2727
+ md = md.replace(/<ol[^>]*>([\s\S]*?)<\/ol>/gi, (_, content) => {
2728
+ let n = 1;
2729
+ return ('\n' +
2730
+ content.replace(/<li[^>]*>([\s\S]*?)<\/li>/gi, (_m, item) => `${n++}. ${stripTags(item).trim()}\n`));
2731
+ });
2732
+ // Tables
2733
+ md = md.replace(/<table[^>]*>([\s\S]*?)<\/table>/gi, (_, tableContent) => {
2734
+ const extractCells = (row) => [...row.matchAll(/<t[hd][^>]*>([\s\S]*?)<\/t[hd]>/gi)].map((m) => stripTags(m[1] ?? '').trim());
2735
+ const theadMatch = tableContent.match(/<thead[^>]*>([\s\S]*?)<\/thead>/i);
2736
+ const firstTrMatch = tableContent.match(/<tr[^>]*>([\s\S]*?)<\/tr>/i);
2737
+ const headerCells = theadMatch
2738
+ ? extractCells(theadMatch[1] ?? '')
2739
+ : firstTrMatch
2740
+ ? extractCells(firstTrMatch[1] ?? '')
2741
+ : [];
2742
+ if (headerCells.length === 0)
2743
+ return '';
2744
+ const separator = headerCells.map(() => '---').join(' | ');
2745
+ const bodySource = theadMatch
2746
+ ? tableContent.replace(theadMatch[0], '')
2747
+ : tableContent.replace(firstTrMatch?.[0] ?? '', '');
2748
+ const bodyRows = [...bodySource.matchAll(/<tr[^>]*>([\s\S]*?)<\/tr>/gi)].map((m) => extractCells(m[1] ?? '').join(' | '));
2749
+ const lines = [`| ${headerCells.join(' | ')} |`, `| ${separator} |`, ...bodyRows.map((r) => `| ${r} |`)];
2750
+ return `\n${lines.join('\n')}\n`;
2751
+ });
2752
+ // Block elements
2753
+ md = md.replace(/<p[^>]*>([\s\S]*?)<\/p>/gi, (_, content) => `\n${stripTags(content).trim()}\n`);
2754
+ md = md.replace(/<br\s*\/?>/gi, '\n');
2755
+ md = md.replace(/<hr\s*\/?>/gi, '\n---\n');
2756
+ return unescapeHtml(stripTags(md))
2757
+ .replace(/\n{3,}/g, '\n\n')
2758
+ .trim();
2759
+ };
2760
+
2566
2761
  const clamp = (value, min = 0, max = 100) => {
2567
2762
  return Math.max(min, Math.min(max, value));
2568
2763
  };
@@ -4750,6 +4945,18 @@ const normalizeMatchType = (matchType) => {
4750
4945
  }
4751
4946
  };
4752
4947
 
4948
+ class HtmlToMarkdownPipe {
4949
+ constructor() {
4950
+ this.transform = htmlToMarkdown;
4951
+ }
4952
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: HtmlToMarkdownPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
4953
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.13", ngImport: i0, type: HtmlToMarkdownPipe, isStandalone: true, name: "htmlToMarkdown" }); }
4954
+ }
4955
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: HtmlToMarkdownPipe, decorators: [{
4956
+ type: Pipe,
4957
+ args: [{ name: 'htmlToMarkdown' }]
4958
+ }] });
4959
+
4753
4960
  class InferMimeTypePipe {
4754
4961
  constructor() {
4755
4962
  this.transform = inferMimeType;
@@ -4963,6 +5170,18 @@ const inferMimeType = (srcset) => {
4963
5170
  return null;
4964
5171
  };
4965
5172
 
5173
+ class MarkdownToHtmlPipe {
5174
+ constructor() {
5175
+ this.transform = markdownToHtml;
5176
+ }
5177
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: MarkdownToHtmlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
5178
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.13", ngImport: i0, type: MarkdownToHtmlPipe, isStandalone: true, name: "markdownToHtml" }); }
5179
+ }
5180
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: MarkdownToHtmlPipe, decorators: [{
5181
+ type: Pipe,
5182
+ args: [{ name: 'markdownToHtml' }]
5183
+ }] });
5184
+
4966
5185
  class ToArrayPipe {
4967
5186
  constructor() {
4968
5187
  this.transform = toArray;
@@ -6398,12 +6617,12 @@ const createRootThemeCss = (themes) => {
6398
6617
  */
6399
6618
  const createThemeStyle = (theme, isAlt) => {
6400
6619
  const cssThemeName = createCssColorThemeName(theme.name);
6401
- const stringSuffix = isAlt ? '-alt' : '';
6620
+ const classPrefix = isAlt ? 'et-color-alt' : 'et-color';
6402
6621
  const selectors = [
6403
6622
  ...((theme.isDefault && !isAlt) || (theme.isDefaultAlt && isAlt)
6404
- ? [':root', `.et-theme${stringSuffix}--default`]
6623
+ ? [':root', `.${classPrefix}--default`]
6405
6624
  : []),
6406
- `.et-theme${stringSuffix}--${cssThemeName}`,
6625
+ `.${classPrefix}--${cssThemeName}`,
6407
6626
  ];
6408
6627
  const css = `
6409
6628
  ${selectors.join(', ')} {
@@ -6413,7 +6632,7 @@ const createThemeStyle = (theme, isAlt) => {
6413
6632
  }
6414
6633
  `;
6415
6634
  const style = document.createElement('style');
6416
- style.id = `et-theme${stringSuffix}--${cssThemeName}`;
6635
+ style.id = `${classPrefix}--${cssThemeName}`;
6417
6636
  style.appendChild(document.createTextNode(css));
6418
6637
  document.head.appendChild(style);
6419
6638
  };
@@ -6736,5 +6955,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImpo
6736
6955
  * Generated bundle index. Do not edit.
6737
6956
  */
6738
6957
 
6739
- export { ANIMATABLE_TOKEN, ANIMATED_IF_TOKEN, ANIMATED_LIFECYCLE_TOKEN, AT_LEAST_ONE_REQUIRED, AnimatableDirective, AnimatedIfDirective, AnimatedLifecycleDirective, AnimatedOverlayDirective, 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, IS_ARRAY_NOT_EMPTY, IS_EMAIL, InferMimeTypePipe, IsArrayNotEmpty, IsEmail, jsonLd as JsonLD, KeyPressManager, MUST_MATCH, MustMatch, NormalizeGameResultTypePipe, NormalizeMatchParticipantsPipe, NormalizeMatchScorePipe, NormalizeMatchStatePipe, NormalizeMatchTypePipe, PropsDirective, ProvideColorDirective, ProvideSurfaceDirective, RUNTIME_ERROR_NO_DATA, RepeatDirective, ResizeHandlesComponent, RuntimeError, SEO_DIRECTIVE_TOKEN, SURFACE_PROVIDER, SURFACE_TYPE, ScrollObserverDirective, ScrollObserverEndDirective, ScrollObserverStartDirective, SeoDirective, StructuredDataComponent, SurfaceInteractiveDirective, ToArrayPipe, TypedQueryList, ValidateAtLeastOneRequired, Validators, applyAlternateBinding, applyAlternateLanguagesBindings, applyArticleBindings, applyAuthorBinding, applyCanonicalBinding, applyCenteredPosition, applyDescriptionBinding, applyHeadBinding, applyHeadTitleBinding, 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, createAnchoredPositionCleanup, createArrayPropertyBinding, createAutoSessionMemoryKey, createBulkPropertyBinding, createCanAnimateSignal, createComponentId, createCssColorThemeName, createCssSurfaceName, createDependencyStash, createDestroy, createDocumentElementSignal, createElementDictionary, createElementDimensions, createEmptyElementSignal, createFlipAnimation, createFlipAnimationGroup, createHostProps, createIsRenderedSignal, createLogger, createOverlayRuntimeRef, createPropHandlers, createPropertyBinding, createProps, createProvider, createRootProvider, createRootThemeCss, createRxHostListener, createSessionMemory, createSetup, createStaticProvider, createStaticRootProvider, createSwatchCss, createTailwindColorThemes, createTailwindCssVar, createTailwindRgbVar, createThemeStyle, createUserConsentProvider, deferredSignal, deleteCookie, easeElastic, easeIn, easeInOut, easeLinear, easeOut, easeOutBack, easeOutBackStrong, elementCanScroll, equal, firstElementSignal, focusElement, forceReflow, formatRuntimeError, fromNextFrame, getCookie, getDomain, getElementScrollCoordinates, getFocusableElements, getFormGroupValue, getGroupMatchPoints, getGroupMatchScore, getHeadingElement, getKnockoutMatchScore, getMatchScoreSubLine, getObjectProperty, getScrollContainerTarget, getScrollItemTarget, getScrollSnapTarget, hasCookie, inferMimeType, injectAngularRootElement, injectBoundaryElement, injectBreakpointInput, injectBreakpointIsMatched, injectBreakpointObserver, injectCanHover, injectColorThemes, injectColorThemesPrefix, injectCurrentBreakpoint, injectDeviceInputType, injectDisplayOrientation, injectErrorTheme, injectFocusVisibleTracker, injectFragment, injectHasPrecisionInput, injectHasTouchInput, injectHostElement, injectIs2Xl, injectIsLandscape, injectIsLg, injectIsMd, injectIsPortrait, injectIsRouterInitialized, injectIsSm, injectIsXl, injectIsXs, injectLinkStore, injectLinkStoreConfig, injectLocale, injectMediaQueryIsMatched, injectMetaConfig, injectMetaStore, injectObserveBreakpoint, injectObserveMediaQuery, injectOverlayRuntime, injectPathParam, injectPathParamChanges, injectPathParams, injectQueryParam, injectQueryParamChanges, injectQueryParams, injectRenderer, injectRoute, injectRouteData, injectRouteDataItem, injectRouteTitle, injectRouterEvent, injectRouterState, injectScrollbarDimensions, injectStructuredDataConfig, injectStructuredDataStore, injectStyleManager, injectSuccessTheme, injectSurfaceContextTracker, injectSurfaceThemes, injectSurfaceThemesPrefix, injectTemplateRef, injectTitleConfig, injectTitleStore, injectUrl, injectViewportConfig, injectViewportDimensions, injectViewportSize, injectWarningTheme, isArray, isElementSignal, isElementVisible, isFocusable, isGroupMatch, isHTMLElement, isKnockoutMatch, isObject, maybeSignalValue, memoizeSignal, nextFrame, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, numberBreakpointAttribute, numberBreakpointTransform, previousSignalValue, provideBoundaryElement, provideBreakpointInstance, provideBreakpointObserver, provideColorThemes, provideColorThemesWithTailwind4, provideFocusVisibleTracker, provideLinkStore, provideLinkStoreConfig, provideLocale, provideMetaConfig, provideMetaStore, provideOverlayRuntime, provideRenderer, provideStructuredDataConfig, provideStructuredDataStore, provideStyleManager, provideSurfaceContextTracker, provideSurfaceThemesWithTailwind4, provideTitleConfig, provideTitleStore, provideViewportConfig, 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, switchQueryListChanges, syncSignal, templateComputed, toArray, toArrayTrackByFn, toStringBinding, transformOrReturn, typedBreakpointTransform, unbindProps, useCursorDragScroll, writeScrollbarSizeToCssVariables, writeViewportSizeToCssVariables, ɵProvideColorThemes, ɵProvideColorThemesPrefix, ɵProvideSurfaceThemes, ɵProvideSurfaceThemesPrefix };
6958
+ export { ANIMATABLE_TOKEN, ANIMATED_IF_TOKEN, ANIMATED_LIFECYCLE_TOKEN, AT_LEAST_ONE_REQUIRED, AnimatableDirective, AnimatedIfDirective, AnimatedLifecycleDirective, AnimatedOverlayDirective, 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, 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, ScrollObserverDirective, ScrollObserverEndDirective, ScrollObserverStartDirective, SeoDirective, StructuredDataComponent, SurfaceInteractiveDirective, ToArrayPipe, TypedQueryList, ValidateAtLeastOneRequired, Validators, applyAlternateBinding, applyAlternateLanguagesBindings, applyArticleBindings, applyAuthorBinding, applyCanonicalBinding, applyCenteredPosition, applyDescriptionBinding, applyHeadBinding, applyHeadTitleBinding, 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, createAnchoredPositionCleanup, createArrayPropertyBinding, createAutoSessionMemoryKey, createBulkPropertyBinding, createCanAnimateSignal, createComponentId, createCssColorThemeName, createCssSurfaceName, createDependencyStash, createDestroy, createDocumentElementSignal, createElementDictionary, createElementDimensions, createEmptyElementSignal, createFlipAnimation, createFlipAnimationGroup, createHostProps, createIsRenderedSignal, createLogger, createOverlayRuntimeRef, createPropHandlers, createPropertyBinding, createProps, createProvider, createRootProvider, createRootThemeCss, createRxHostListener, createSessionMemory, createSetup, createStaticProvider, createStaticRootProvider, createSwatchCss, createTailwindColorThemes, createTailwindCssVar, createTailwindRgbVar, createThemeStyle, createUserConsentProvider, deferredSignal, deleteCookie, easeElastic, easeIn, easeInOut, easeLinear, easeOut, easeOutBack, easeOutBackStrong, elementCanScroll, equal, firstElementSignal, focusElement, forceReflow, formatRuntimeError, fromNextFrame, getCookie, getDomain, getElementScrollCoordinates, getFocusableElements, getFormGroupValue, getGroupMatchPoints, getGroupMatchScore, getHeadingElement, getKnockoutMatchScore, getMatchScoreSubLine, getObjectProperty, getScrollContainerTarget, getScrollItemTarget, getScrollSnapTarget, hasCookie, htmlToMarkdown, inferMimeType, injectAngularRootElement, injectBoundaryElement, injectBreakpointInput, injectBreakpointIsMatched, injectBreakpointObserver, injectCanHover, injectColorThemes, injectColorThemesPrefix, injectCurrentBreakpoint, injectDeviceInputType, injectDisplayOrientation, injectErrorTheme, injectFocusVisibleTracker, injectFragment, injectHasPrecisionInput, injectHasTouchInput, injectHostElement, injectIs2Xl, injectIsLandscape, injectIsLg, injectIsMd, injectIsPortrait, injectIsRouterInitialized, injectIsSm, injectIsXl, injectIsXs, injectLinkStore, injectLinkStoreConfig, injectLocale, injectMediaQueryIsMatched, injectMetaConfig, injectMetaStore, injectObserveBreakpoint, injectObserveMediaQuery, injectOverlayRuntime, injectPathParam, injectPathParamChanges, injectPathParams, injectQueryParam, injectQueryParamChanges, injectQueryParams, injectRenderer, injectRoute, injectRouteData, injectRouteDataItem, injectRouteTitle, injectRouterEvent, injectRouterState, injectScrollbarDimensions, injectStructuredDataConfig, injectStructuredDataStore, injectStyleManager, injectSuccessTheme, injectSurfaceContextTracker, injectSurfaceThemes, injectSurfaceThemesPrefix, injectTemplateRef, injectTitleConfig, injectTitleStore, injectUrl, injectViewportConfig, injectViewportDimensions, injectViewportSize, injectWarningTheme, isArray, isElementSignal, isElementVisible, isFocusable, isGroupMatch, isHTMLElement, isKnockoutMatch, isObject, markdownToHtml, maybeSignalValue, memoizeSignal, nextFrame, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, numberBreakpointAttribute, numberBreakpointTransform, previousSignalValue, provideBoundaryElement, provideBreakpointInstance, provideBreakpointObserver, provideColorThemes, provideColorThemesWithTailwind4, provideFocusVisibleTracker, provideLinkStore, provideLinkStoreConfig, provideLocale, provideMetaConfig, provideMetaStore, provideOverlayRuntime, provideRenderer, provideStructuredDataConfig, provideStructuredDataStore, provideStyleManager, provideSurfaceContextTracker, provideSurfaceThemesWithTailwind4, provideTitleConfig, provideTitleStore, provideViewportConfig, 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, switchQueryListChanges, syncSignal, templateComputed, toArray, toArrayTrackByFn, toStringBinding, transformOrReturn, typedBreakpointTransform, unbindProps, useCursorDragScroll, writeScrollbarSizeToCssVariables, writeViewportSizeToCssVariables, ɵProvideColorThemes, ɵProvideColorThemesPrefix, ɵProvideSurfaceThemes, ɵProvideSurfaceThemesPrefix };
6740
6959
  //# sourceMappingURL=ethlete-core.mjs.map