nath-angular-ui 0.0.3 → 0.1.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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ElementRef, model, input, output, contentChild, TemplateRef, viewChild, signal, computed, effect, ViewEncapsulation, ChangeDetectionStrategy, Component, Injectable, InjectionToken, Injector, EnvironmentInjector, ApplicationRef, createEnvironmentInjector, createComponent, Service, Renderer2, viewChildren, SecurityContext, untracked, HostListener, ViewChild, booleanAttribute, Directive, contentChildren } from '@angular/core';
2
+ import { inject, ElementRef, model, input, output, contentChild, TemplateRef, viewChild, signal, computed, effect, ViewEncapsulation, ChangeDetectionStrategy, Component, Injectable, InjectionToken, Injector, EnvironmentInjector, ApplicationRef, createEnvironmentInjector, createComponent, Service, Renderer2, viewChildren, SecurityContext, untracked, HostListener, ViewChild, booleanAttribute, Directive, contentChildren, ViewContainerRef } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule, NgTemplateOutlet, DOCUMENT, NgStyle, NgClass, KeyValuePipe } from '@angular/common';
5
5
  import * as i2 from '@angular/cdk/overlay';
@@ -5245,6 +5245,230 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
5245
5245
  args: [{ selector: 'nath-toc', imports: [], encapsulation: ViewEncapsulation.None, template: "<aside class=\"nath-toc-aside\">\n <nav class=\"nath-toc-nav\">\n <h3 class=\"nath-toc-title\">Table of Contents</h3>\n <ul class=\"nath-toc-list\">\n @for (section of tocSections(); track section.id) {\n <li>\n <button type=\"button\" (click)=\"scrollToSection(section.id)\" class=\"nath-toc-button\">\n {{ section.label }}\n </button>\n </li>\n }\n </ul>\n </nav>\n</aside>\n", styles: ["nath-toc{display:block}nath-toc,.nath-toc-theme{--nath-toc-width: 16rem;--nath-toc-sticky-top: 1rem;--nath-toc-nav-bg: var(--color-white, #ffffff);--nath-toc-nav-padding: 1rem;--nath-toc-nav-radius: .5rem;--nath-toc-nav-shadow: 0 1px 2px 0 rgba(0, 0, 0, .05);--nath-toc-title-font-weight: 700;--nath-toc-title-margin-bottom: .75rem;--nath-toc-title-font-size: 1.125rem;--nath-toc-title-color: var(--color-gray-900, oklch(21% .006 285.885));--nath-toc-list-gap: .5rem;--nath-toc-button-text-align: left;--nath-toc-button-width: 100%;--nath-toc-button-text: var(--color-gray-700, oklch(37.3% .045 262.531));--nath-toc-button-hover-text: var(--color-primary-500, #8e9ba5);--nath-toc-button-transition: color .2s}.dark nath-toc,.dark .nath-toc-theme{--nath-toc-nav-bg: var(--color-zinc-900, oklch(14.1% .005 285.823));--nath-toc-title-color: var(--color-zinc-100, oklch(96.7% .001 286.375));--nath-toc-button-text: var(--color-zinc-300, oklch(87.1% .006 286.286));--nath-toc-button-hover-text: var(--color-primary-400, oklch(68% .01 286.3))}.nath-toc-aside{width:var(--nath-toc-width);flex-shrink:0;position:sticky;top:var(--nath-toc-sticky-top);height:fit-content}.nath-toc-nav{background-color:var(--nath-toc-nav-bg);padding:var(--nath-toc-nav-padding);border-radius:var(--nath-toc-nav-radius);box-shadow:var(--nath-toc-nav-shadow)}.nath-toc-title{font-weight:var(--nath-toc-title-font-weight);margin-bottom:var(--nath-toc-title-margin-bottom);font-size:var(--nath-toc-title-font-size);color:var(--nath-toc-title-color)}.nath-toc-list{display:flex;flex-direction:column;gap:var(--nath-toc-list-gap);list-style:none;padding:0;margin:0}.nath-toc-button{text-align:var(--nath-toc-button-text-align);width:var(--nath-toc-button-width);color:var(--nath-toc-button-text);transition:var(--nath-toc-button-transition);cursor:pointer;border:none;background:transparent;padding:0;font-size:1rem}.nath-toc-button:hover{color:var(--nath-toc-button-hover-text)}\n"] }]
5246
5246
  }], ctorParameters: () => [], propDecorators: { level: [{ type: i0.Input, args: [{ isSignal: true, alias: "level", required: false }] }], container: [{ type: i0.Input, args: [{ isSignal: true, alias: "container", required: false }] }], containerSelector: [{ type: i0.Input, args: [{ isSignal: true, alias: "containerSelector", required: false }] }], scrollContainerSelector: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollContainerSelector", required: false }] }], offset: [{ type: i0.Input, args: [{ isSignal: true, alias: "offset", required: false }] }] } });
5247
5247
 
5248
+ class NathTooltipContainer {
5249
+ sanitizer = inject(DomSanitizer);
5250
+ hostRef = inject((ElementRef)); // Inject host reference directly
5251
+ content = input(null, /* @ts-ignore */
5252
+ ...(ngDevMode ? [{ debugName: "content" }] : /* istanbul ignore next */ []));
5253
+ positionStyles = signal({ opacity: '0' }, /* @ts-ignore */
5254
+ ...(ngDevMode ? [{ debugName: "positionStyles" }] : /* istanbul ignore next */ []));
5255
+ arrowClass = signal('arrow-top', /* @ts-ignore */
5256
+ ...(ngDevMode ? [{ debugName: "arrowClass" }] : /* istanbul ignore next */ []));
5257
+ sanitizedHtml() {
5258
+ const raw = this.content();
5259
+ if (typeof raw === 'string') {
5260
+ return this.sanitizer.sanitize(SecurityContext.HTML, raw) || '';
5261
+ }
5262
+ return '';
5263
+ }
5264
+ isTemplate(value) {
5265
+ return value && typeof value !== 'string';
5266
+ }
5267
+ updatePosition(hostRect, preferredPosition) {
5268
+ const tooltipContainer = this.hostRef.nativeElement.querySelector('.nath-tooltip-container');
5269
+ if (!tooltipContainer) {
5270
+ console.error('Tooltip container not found');
5271
+ return;
5272
+ }
5273
+ const tooltipWidth = tooltipContainer.offsetWidth;
5274
+ const tooltipHeight = tooltipContainer.offsetHeight;
5275
+ const spacing = 12;
5276
+ console.log(`hostRect`, hostRect);
5277
+ console.log(`preferredPosition`, preferredPosition);
5278
+ console.log(`tooltipWidth`, tooltipWidth);
5279
+ console.log(`tooltipHeight`, tooltipHeight);
5280
+ // Determine baseline coordinates and potential flip strategy
5281
+ const coords = this.calculateInitialPosition(hostRect, tooltipWidth, tooltipHeight, preferredPosition, spacing);
5282
+ // Prevent edge bleeding along the cross-axis bounds
5283
+ const cleanCoords = this.constrainToViewport(coords.left, coords.top, tooltipWidth, tooltipHeight, preferredPosition);
5284
+ this.arrowClass.set(`arrow-${coords.finalPosition}`);
5285
+ this.positionStyles.set({
5286
+ transform: `translate3d(${cleanCoords.left}px, ${cleanCoords.top}px, 0)`,
5287
+ opacity: '1',
5288
+ });
5289
+ }
5290
+ /**
5291
+ * Calculates structural baseline layout alignments and performs flipping checks.
5292
+ */
5293
+ calculateInitialPosition(hostRect, w, h, pos, space) {
5294
+ if (pos === 'top')
5295
+ return this.getTopCoords(hostRect, w, h, space);
5296
+ if (pos === 'bottom')
5297
+ return this.getBottomCoords(hostRect, w, h, space);
5298
+ if (pos === 'left')
5299
+ return this.getLeftCoords(hostRect, w, h, space);
5300
+ return this.getRightCoords(hostRect, w, h, space);
5301
+ }
5302
+ getTopCoords(hostRect, w, h, space) {
5303
+ const top = hostRect.top - h - space;
5304
+ const isOverflow = top < 0;
5305
+ return {
5306
+ top: isOverflow ? hostRect.bottom + space : top,
5307
+ left: hostRect.left + (hostRect.width - w) / 2,
5308
+ finalPosition: isOverflow ? 'bottom' : 'top',
5309
+ };
5310
+ }
5311
+ getBottomCoords(hostRect, w, h, space) {
5312
+ const top = hostRect.bottom + space;
5313
+ const isOverflow = top + h > window.innerHeight;
5314
+ return {
5315
+ top: isOverflow ? hostRect.top - h - space : top,
5316
+ left: hostRect.left + (hostRect.width - w) / 2,
5317
+ finalPosition: isOverflow ? 'top' : 'bottom',
5318
+ };
5319
+ }
5320
+ getLeftCoords(hostRect, w, h, space) {
5321
+ const left = hostRect.left - w - space;
5322
+ const isOverflow = left < 0;
5323
+ return {
5324
+ top: hostRect.top + (hostRect.height - h) / 2,
5325
+ left: isOverflow ? hostRect.right + space : left,
5326
+ finalPosition: isOverflow ? 'right' : 'left',
5327
+ };
5328
+ }
5329
+ getRightCoords(hostRect, w, h, space) {
5330
+ const left = hostRect.right + space;
5331
+ const isOverflow = left + w > window.innerWidth;
5332
+ return {
5333
+ top: hostRect.top + (hostRect.height - h) / 2,
5334
+ left: isOverflow ? hostRect.left - w - space : left,
5335
+ finalPosition: isOverflow ? 'left' : 'right',
5336
+ };
5337
+ }
5338
+ /**
5339
+ * Adjusts calculated coordinates to keep them confined within visible screen padding bounds.
5340
+ */
5341
+ constrainToViewport(left, top, w, h, pos) {
5342
+ let cleanLeft = left;
5343
+ let cleanTop = top;
5344
+ const boundaryPadding = 8;
5345
+ if (pos === 'top' || pos === 'bottom') {
5346
+ if (cleanLeft < 0)
5347
+ cleanLeft = boundaryPadding;
5348
+ if (cleanLeft + w > window.innerWidth) {
5349
+ cleanLeft = window.innerWidth - w - boundaryPadding;
5350
+ }
5351
+ }
5352
+ else {
5353
+ if (cleanTop < 0)
5354
+ cleanTop = boundaryPadding;
5355
+ if (cleanTop + h > window.innerHeight) {
5356
+ cleanTop = window.innerHeight - h - boundaryPadding;
5357
+ }
5358
+ }
5359
+ return { left: cleanLeft, top: cleanTop };
5360
+ }
5361
+ hide() {
5362
+ this.positionStyles.update((styles) => ({ ...styles, opacity: '0' }));
5363
+ }
5364
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: NathTooltipContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
5365
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: NathTooltipContainer, isStandalone: true, selector: "ng-component", inputs: { content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
5366
+ <div
5367
+ class="nath-tooltip-container nath-tooltip-container-theme"
5368
+ [class]="arrowClass()"
5369
+ [style]="positionStyles()"
5370
+ >
5371
+ <div class="nath-tooltip-content">
5372
+ @if (isTemplate(content())) {
5373
+ <ng-container [ngTemplateOutlet]="$any(content())"></ng-container>
5374
+ } @else {
5375
+ <div [innerHTML]="sanitizedHtml()"></div>
5376
+ }
5377
+ </div>
5378
+ </div>
5379
+ `, isInline: true, styles: ["nath-tooltip-container,.nath-tooltip-container-theme{--nath-tooltip-container-text-color: #fff;--nath-tooltip-container-bg-color: var(--color-slate-900, oklch(.208 .042 265.755));--nath-tooltip-container-border-color: var(--color-slate-900, oklch(.208 .042 265.755));--nath-tooltip-container-border-bottom-color: var(--color-slate-100, oklch(.967 .011 264.536))}.dark nath-tooltip-container,.dark .nath-tooltip-container-theme{--nath-tooltip-container-bg-color: var(--color-slate-900, oklch(.208 .042 265.755))}.nath-tooltip-container{position:fixed;left:0;top:0;display:block;z-index:50;transition-property:opacity;transition-duration:.2s;pointer-events:none;padding:.375rem .75rem;font-size:.875rem;line-height:1.25rem;border-radius:.375rem;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;max-width:20rem;background-color:var(--nath-tooltip-container-bg-color);color:var(--nath-tooltip-container-text-color);border-bottom:1px solid var(--nath-tooltip-container-border-bottom-color)}.nath-tooltip-container:after{content:\"\";position:absolute;width:0;height:0;border-style:solid;border-width:6px;border-color:transparent}.nath-tooltip-container.arrow-top:after{border-top-color:var(--nath-tooltip-container-border-color);top:100%;left:calc(50% - 6px)}.nath-tooltip-container.arrow-bottom:after{border-bottom-color:var(--nath-tooltip-container-border-color);bottom:100%;left:calc(50% - 6px)}.nath-tooltip-container.arrow-left:after{border-left-color:var(--nath-tooltip-container-border-color);left:100%;top:calc(50% - 6px)}.nath-tooltip-container.arrow-right:after{border-right-color:var(--nath-tooltip-container-border-color);right:100%;top:calc(50% - 6px)}.nath-tooltip-content{white-space:nowrap}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None });
5380
+ }
5381
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: NathTooltipContainer, decorators: [{
5382
+ type: Component,
5383
+ args: [{ imports: [NgTemplateOutlet], template: `
5384
+ <div
5385
+ class="nath-tooltip-container nath-tooltip-container-theme"
5386
+ [class]="arrowClass()"
5387
+ [style]="positionStyles()"
5388
+ >
5389
+ <div class="nath-tooltip-content">
5390
+ @if (isTemplate(content())) {
5391
+ <ng-container [ngTemplateOutlet]="$any(content())"></ng-container>
5392
+ } @else {
5393
+ <div [innerHTML]="sanitizedHtml()"></div>
5394
+ }
5395
+ </div>
5396
+ </div>
5397
+ `, encapsulation: ViewEncapsulation.None, styles: ["nath-tooltip-container,.nath-tooltip-container-theme{--nath-tooltip-container-text-color: #fff;--nath-tooltip-container-bg-color: var(--color-slate-900, oklch(.208 .042 265.755));--nath-tooltip-container-border-color: var(--color-slate-900, oklch(.208 .042 265.755));--nath-tooltip-container-border-bottom-color: var(--color-slate-100, oklch(.967 .011 264.536))}.dark nath-tooltip-container,.dark .nath-tooltip-container-theme{--nath-tooltip-container-bg-color: var(--color-slate-900, oklch(.208 .042 265.755))}.nath-tooltip-container{position:fixed;left:0;top:0;display:block;z-index:50;transition-property:opacity;transition-duration:.2s;pointer-events:none;padding:.375rem .75rem;font-size:.875rem;line-height:1.25rem;border-radius:.375rem;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;max-width:20rem;background-color:var(--nath-tooltip-container-bg-color);color:var(--nath-tooltip-container-text-color);border-bottom:1px solid var(--nath-tooltip-container-border-bottom-color)}.nath-tooltip-container:after{content:\"\";position:absolute;width:0;height:0;border-style:solid;border-width:6px;border-color:transparent}.nath-tooltip-container.arrow-top:after{border-top-color:var(--nath-tooltip-container-border-color);top:100%;left:calc(50% - 6px)}.nath-tooltip-container.arrow-bottom:after{border-bottom-color:var(--nath-tooltip-container-border-color);bottom:100%;left:calc(50% - 6px)}.nath-tooltip-container.arrow-left:after{border-left-color:var(--nath-tooltip-container-border-color);left:100%;top:calc(50% - 6px)}.nath-tooltip-container.arrow-right:after{border-right-color:var(--nath-tooltip-container-border-color);right:100%;top:calc(50% - 6px)}.nath-tooltip-content{white-space:nowrap}\n"] }]
5398
+ }], propDecorators: { content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: false }] }] } });
5399
+
5400
+ class NathTooltipDirective {
5401
+ tooltipContent = input(null, { ...(ngDevMode ? { debugName: "tooltipContent" } : /* istanbul ignore next */ {}), alias: 'nathTooltip' });
5402
+ tooltipPosition = input('top', /* @ts-ignore */
5403
+ ...(ngDevMode ? [{ debugName: "tooltipPosition" }] : /* istanbul ignore next */ []));
5404
+ showDelay = input(200, /* @ts-ignore */
5405
+ ...(ngDevMode ? [{ debugName: "showDelay" }] : /* istanbul ignore next */ []));
5406
+ hideDelay = input(100, /* @ts-ignore */
5407
+ ...(ngDevMode ? [{ debugName: "hideDelay" }] : /* istanbul ignore next */ []));
5408
+ elementRef = inject(ElementRef);
5409
+ viewContainerRef = inject(ViewContainerRef);
5410
+ document = inject(DOCUMENT);
5411
+ componentRef = null;
5412
+ showTimeout;
5413
+ hideTimeout;
5414
+ onMouseEnter() {
5415
+ clearTimeout(this.hideTimeout);
5416
+ if (!this.componentRef) {
5417
+ this.showTimeout = setTimeout(() => this.showTooltip(), this.showDelay());
5418
+ }
5419
+ }
5420
+ onMouseLeave() {
5421
+ clearTimeout(this.showTimeout);
5422
+ if (this.componentRef) {
5423
+ this.hideTimeout = setTimeout(() => this.destroyTooltip(), this.hideDelay());
5424
+ }
5425
+ }
5426
+ showTooltip() {
5427
+ if (this.componentRef || !this.tooltipContent())
5428
+ return;
5429
+ this.componentRef = this.viewContainerRef.createComponent(NathTooltipContainer);
5430
+ this.componentRef.setInput('content', this.tooltipContent());
5431
+ const domElem = this.componentRef.hostView.rootNodes[0];
5432
+ this.document.body.appendChild(domElem);
5433
+ this.componentRef.changeDetectorRef.detectChanges();
5434
+ const hostRect = this.elementRef.nativeElement.getBoundingClientRect();
5435
+ this.componentRef.instance.updatePosition(hostRect, this.tooltipPosition());
5436
+ this.componentRef.changeDetectorRef.detectChanges();
5437
+ }
5438
+ destroyTooltip() {
5439
+ if (this.componentRef) {
5440
+ this.componentRef.instance.hide();
5441
+ const refToDestroy = this.componentRef;
5442
+ this.componentRef = null;
5443
+ // Keep this at a fixed 200ms to allow the Tailwind opacity transition to complete
5444
+ setTimeout(() => {
5445
+ refToDestroy.destroy();
5446
+ }, 200);
5447
+ }
5448
+ }
5449
+ ngOnDestroy() {
5450
+ clearTimeout(this.showTimeout);
5451
+ clearTimeout(this.hideTimeout);
5452
+ if (this.componentRef) {
5453
+ this.componentRef.destroy();
5454
+ }
5455
+ }
5456
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: NathTooltipDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5457
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.5", type: NathTooltipDirective, isStandalone: true, selector: "[nathTooltip]", inputs: { tooltipContent: { classPropertyName: "tooltipContent", publicName: "nathTooltip", isSignal: true, isRequired: false, transformFunction: null }, tooltipPosition: { classPropertyName: "tooltipPosition", publicName: "tooltipPosition", isSignal: true, isRequired: false, transformFunction: null }, showDelay: { classPropertyName: "showDelay", publicName: "showDelay", isSignal: true, isRequired: false, transformFunction: null }, hideDelay: { classPropertyName: "hideDelay", publicName: "hideDelay", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mouseenter": "onMouseEnter()", "focusin": "onMouseEnter()", "mouseleave": "onMouseLeave()", "focusout": "onMouseLeave()" } }, ngImport: i0 });
5458
+ }
5459
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: NathTooltipDirective, decorators: [{
5460
+ type: Directive,
5461
+ args: [{
5462
+ selector: '[nathTooltip]',
5463
+ host: {
5464
+ '(mouseenter)': 'onMouseEnter()',
5465
+ '(focusin)': 'onMouseEnter()',
5466
+ '(mouseleave)': 'onMouseLeave()',
5467
+ '(focusout)': 'onMouseLeave()',
5468
+ },
5469
+ }]
5470
+ }], propDecorators: { tooltipContent: [{ type: i0.Input, args: [{ isSignal: true, alias: "nathTooltip", required: false }] }], tooltipPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltipPosition", required: false }] }], showDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "showDelay", required: false }] }], hideDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideDelay", required: false }] }] } });
5471
+
5248
5472
  function next(el, selector) {
5249
5473
  const nextEl = el.nextElementSibling;
5250
5474
  if (!selector || (nextEl && nextEl.matches(selector))) {
@@ -5278,5 +5502,5 @@ function isSortOrderValid(order) {
5278
5502
  * Generated bundle index. Do not edit.
5279
5503
  */
5280
5504
 
5281
- export { BreadcrumbService, ConfirmationService, DARK_THEME_CLASS, DIALOG_DATA, DialogRef, DialogService, NathAutocomplete, NathBooleanControl, NathBreadcrumbs, NathConfirmationDialog, NathDatepicker, NathDialogContainer, NathDrawer, NathFileUpload, NathFloatingLabel, NathFormField, NathImagePreview, NathMenu, NathMenuList, NathMultiselect, NathPaginatedView, NathPaginator, NathPanel, NathPickList, NathProgressBar, NathProgressCircle, NathRadioButtonGroup, NathRatingHeart, NathRatingInput, NathSelect, NathSkeleton, NathSlider, NathSortIcon, NathSplitButton, NathTabs, NathThemeSwitch, NathToastContainer, NathToc, ORDER, RATING_MAP, THEME_CONFIG, TabDirective, TabPanelDirective, ThemeService, ToastService, getRatingColor, hasRequiredValidator, isRequired, isSortOrderValid, isTruthy, next, provideThemeConfig, rangeMinMax, rangeNotMinMax, validateAllFormFields };
5505
+ export { BreadcrumbService, ConfirmationService, DARK_THEME_CLASS, DIALOG_DATA, DialogRef, DialogService, NathAutocomplete, NathBooleanControl, NathBreadcrumbs, NathConfirmationDialog, NathDatepicker, NathDialogContainer, NathDrawer, NathFileUpload, NathFloatingLabel, NathFormField, NathImagePreview, NathMenu, NathMenuList, NathMultiselect, NathPaginatedView, NathPaginator, NathPanel, NathPickList, NathProgressBar, NathProgressCircle, NathRadioButtonGroup, NathRatingHeart, NathRatingInput, NathSelect, NathSkeleton, NathSlider, NathSortIcon, NathSplitButton, NathTabs, NathThemeSwitch, NathToastContainer, NathToc, NathTooltipContainer, NathTooltipDirective, ORDER, RATING_MAP, THEME_CONFIG, TabDirective, TabPanelDirective, ThemeService, ToastService, getRatingColor, hasRequiredValidator, isRequired, isSortOrderValid, isTruthy, next, provideThemeConfig, rangeMinMax, rangeNotMinMax, validateAllFormFields };
5282
5506
  //# sourceMappingURL=nath-angular-ui.mjs.map