@magmonium/one 0.2.3 → 0.2.4

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.
@@ -5379,11 +5379,25 @@ class ImgComponent {
5379
5379
  alt = input.required(...(ngDevMode ? [{ debugName: "alt" }] : /* istanbul ignore next */ []));
5380
5380
  priority = input(false, ...(ngDevMode ? [{ debugName: "priority" }] : /* istanbul ignore next */ []));
5381
5381
  fill = input(true, ...(ngDevMode ? [{ debugName: "fill" }] : /* istanbul ignore next */ []));
5382
- width = input(1200, ...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
5383
- height = input(1800, ...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
5382
+ // Unset rather than defaulted: `1200 × 1800` is the reservation
5383
+ // NgOptimizedImage needs, and a picture drawn 1200px wide because nobody
5384
+ // named a width is not the same thing. `attrWidth`/`attrHeight` carry that
5385
+ // default onto the tag; these two say whether anyone actually asked.
5386
+ width = input(undefined, ...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
5387
+ height = input(undefined, ...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
5384
5388
  remote = input(...(ngDevMode ? [undefined, { debugName: "remote" }] : /* istanbul ignore next */ []));
5385
5389
  ngSrcset = input(...(ngDevMode ? [undefined, { debugName: "ngSrcset" }] : /* istanbul ignore next */ []));
5386
5390
  sizes = input(...(ngDevMode ? [undefined, { debugName: "sizes" }] : /* istanbul ignore next */ []));
5391
+ attrWidth = computed(() => this.width() ?? 1200, ...(ngDevMode ? [{ debugName: "attrWidth" }] : /* istanbul ignore next */ []));
5392
+ attrHeight = computed(() => this.height() ?? 1800, ...(ngDevMode ? [{ debugName: "attrHeight" }] : /* istanbul ignore next */ []));
5393
+ // Null unless the picture is drawn at a size it was told: a filling picture
5394
+ // takes its size from the box around it, and an unnamed figure leaves the
5395
+ // stylesheet's `width: 100%` in charge.
5396
+ boxWidth = computed(() => this.fill() ? null : (this.width() ?? null), ...(ngDevMode ? [{ debugName: "boxWidth" }] : /* istanbul ignore next */ []));
5397
+ boxHeight = computed(() => this.fill() ? null : (this.height() ?? null), ...(ngDevMode ? [{ debugName: "boxHeight" }] : /* istanbul ignore next */ []));
5398
+ // Both figures named means a box of exactly that shape, which the picture
5399
+ // has to cover rather than letter-box inside.
5400
+ isSized = computed(() => this.boxWidth() !== null && this.boxHeight() !== null, ...(ngDevMode ? [{ debugName: "isSized" }] : /* istanbul ignore next */ []));
5387
5401
  autoNgSrcset = computed(() => {
5388
5402
  const custom = this.ngSrcset();
5389
5403
  if (custom !== undefined)
@@ -5432,7 +5446,7 @@ class ImgComponent {
5432
5446
  this.isLoaded.set(false);
5433
5447
  }
5434
5448
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ImgComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5435
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: ImgComponent, isStandalone: true, selector: "m-img", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, dataType: { classPropertyName: "dataType", publicName: "dataType", isSignal: true, isRequired: false, transformFunction: null }, alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: true, transformFunction: null }, priority: { classPropertyName: "priority", publicName: "priority", isSignal: true, isRequired: false, transformFunction: null }, fill: { classPropertyName: "fill", publicName: "fill", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, remote: { classPropertyName: "remote", publicName: "remote", isSignal: true, isRequired: false, transformFunction: null }, ngSrcset: { classPropertyName: "ngSrcset", publicName: "ngSrcset", isSignal: true, isRequired: false, transformFunction: null }, sizes: { classPropertyName: "sizes", publicName: "sizes", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.m-img-host--fill": "fill()" } }, providers: [
5449
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: ImgComponent, isStandalone: true, selector: "m-img", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, dataType: { classPropertyName: "dataType", publicName: "dataType", isSignal: true, isRequired: false, transformFunction: null }, alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: true, transformFunction: null }, priority: { classPropertyName: "priority", publicName: "priority", isSignal: true, isRequired: false, transformFunction: null }, fill: { classPropertyName: "fill", publicName: "fill", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, remote: { classPropertyName: "remote", publicName: "remote", isSignal: true, isRequired: false, transformFunction: null }, ngSrcset: { classPropertyName: "ngSrcset", publicName: "ngSrcset", isSignal: true, isRequired: false, transformFunction: null }, sizes: { classPropertyName: "sizes", publicName: "sizes", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.m-img-host--fill": "fill()", "style.width.px": "boxWidth()", "style.height.px": "boxHeight()" } }, providers: [
5436
5450
  {
5437
5451
  provide: IMAGE_LOADER,
5438
5452
  useValue: (config) => {
@@ -5453,6 +5467,7 @@ class ImgComponent {
5453
5467
  [class.m-img--error]="hasError()"
5454
5468
  [class.m-img--fill]="fill()"
5455
5469
  [class.m-img--priority]="priority()"
5470
+ [class.m-img--sized]="isSized()"
5456
5471
  >
5457
5472
  @if (hasError()) {
5458
5473
  <div class="m-img__fallback" [attr.aria-label]="alt()">
@@ -5509,8 +5524,8 @@ class ImgComponent {
5509
5524
  [alt]="alt()"
5510
5525
  (load)="onLoad()"
5511
5526
  (error)="onError()"
5512
- [width]="!fill() ? width() : undefined"
5513
- [height]="!fill() ? height() : undefined"
5527
+ [width]="!fill() ? attrWidth() : undefined"
5528
+ [height]="!fill() ? attrHeight() : undefined"
5514
5529
  referrerpolicy="no-referrer"
5515
5530
  />
5516
5531
  } @else {
@@ -5523,8 +5538,8 @@ class ImgComponent {
5523
5538
  (load)="onLoad()"
5524
5539
  (error)="onError()"
5525
5540
  [fill]="fill()"
5526
- [width]="!fill() ? width() : undefined"
5527
- [height]="!fill() ? height() : undefined"
5541
+ [width]="!fill() ? attrWidth() : undefined"
5542
+ [height]="!fill() ? attrHeight() : undefined"
5528
5543
  [ngSrcset]="autoNgSrcset()!"
5529
5544
  [sizes]="sizes() || undefined"
5530
5545
  decoding="async"
@@ -5539,8 +5554,8 @@ class ImgComponent {
5539
5554
  (load)="onLoad()"
5540
5555
  (error)="onError()"
5541
5556
  [fill]="fill()"
5542
- [width]="!fill() ? width() : undefined"
5543
- [height]="!fill() ? height() : undefined"
5557
+ [width]="!fill() ? attrWidth() : undefined"
5558
+ [height]="!fill() ? attrHeight() : undefined"
5544
5559
  [sizes]="sizes() || undefined"
5545
5560
  decoding="async"
5546
5561
  referrerpolicy="no-referrer"
@@ -5553,12 +5568,18 @@ class ImgComponent {
5553
5568
  </div>
5554
5569
  }
5555
5570
  </div>
5556
- `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%;overflow:hidden;border-radius:inherit;contain:paint}:host.m-img-host--fill{height:100%}.m-img{position:relative;width:100%;background:#ffffff05;border-radius:inherit;transition:transform .6s cubic-bezier(.2,0,.2,1);display:flex;flex-direction:column}.m-img--fill{height:100%}.m-img--error{height:auto;min-height:12rem;background:#0003}.m-img__wrapper{position:relative;width:100%;overflow:hidden;border-radius:inherit}.m-img--fill .m-img__wrapper{height:100%}.m-img__img{display:block;width:100%;opacity:0;transform:scale(1.05) translateZ(0);filter:blur(10px) brightness(.8);transition:opacity 1.2s cubic-bezier(.4,0,.2,1),transform 1.2s cubic-bezier(.2,0,.2,1),filter 1s ease-out}.m-img--fill .m-img__img{height:100%;object-fit:cover}.m-img__img:not(.m-img--fill *){height:auto}.m-img--loaded .m-img__img,.m-img--priority .m-img__img{opacity:1;transform:scale(1) translateZ(0);filter:blur(0) brightness(1)}.m-img__skeleton{position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(90deg,#fff0,#ffffff0d,#fff0);background-size:200% 100%;animation:shimmer 2s infinite linear,pulse 2.5s infinite ease-in-out;border-radius:inherit}.m-img__fallback{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;min-height:12rem;background:#14141499;backdrop-filter:blur(12px) brightness(1.1);-webkit-backdrop-filter:blur(12px) brightness(1.1);background-color:var(--m-backdrop-frosted);border:1px solid rgba(255,255,255,.1);color:#fff9;gap:1.25rem;padding:2.5rem;border-radius:inherit;text-align:center;position:relative;z-index:1}.m-img__fallback svg{width:56px;height:56px;stroke:currentColor;stroke-width:1.5;opacity:.8;filter:drop-shadow(0 0 15px rgba(255,255,255,.2));animation:icon-float 4s infinite ease-in-out}.m-img__fallback .m-img__crack{stroke-dasharray:100;stroke-dashoffset:100;animation:crack-draw 1.5s cubic-bezier(.4,0,.2,1) forwards,crack-glitch 6s infinite 3s}.m-img__error-text{font-size:.7rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;opacity:.5;margin-top:-.5rem}@media(hover:hover){.m-img:hover .m-img__img{transform:scale(1.04) translateZ(0);transition-duration:2s}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes icon-float{0%,to{transform:translateY(0) rotate(0)}50%{transform:translateY(-8px) rotate(-2deg)}}@keyframes crack-draw{to{stroke-dashoffset:0}}@keyframes crack-glitch{0%,80%,to{opacity:1;transform:translate(0)}82%{opacity:.4;transform:translate(-2px,1px)}84%{opacity:.8;transform:translate(2px,-1px)}86%{opacity:.2;transform:translate(-3px,2px)}88%{opacity:.6;transform:translate(1px,-2px)}}\n"], dependencies: [{ kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "decoding", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5571
+ `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%;max-width:100%;overflow:hidden;border-radius:inherit;contain:paint}:host.m-img-host--fill{height:100%}.m-img{position:relative;width:100%;background:#ffffff05;border-radius:inherit;transition:transform .6s cubic-bezier(.2,0,.2,1);display:flex;flex-direction:column}.m-img--fill,.m-img--sized{height:100%}.m-img--error{height:auto;min-height:12rem;background:#0003}.m-img__wrapper{position:relative;width:100%;overflow:hidden;border-radius:inherit}.m-img--fill .m-img__wrapper,.m-img--sized .m-img__wrapper{height:100%}.m-img__img{display:block;width:100%;opacity:0;transform:scale(1.05) translateZ(0);filter:blur(10px) brightness(.8);transition:opacity 1.2s cubic-bezier(.4,0,.2,1),transform 1.2s cubic-bezier(.2,0,.2,1),filter 1s ease-out}.m-img--fill .m-img__img,.m-img--sized .m-img__img{height:100%;object-fit:cover}.m-img__img:not(.m-img--fill *):not(.m-img--sized *){height:auto}.m-img--loaded .m-img__img,.m-img--priority .m-img__img{opacity:1;transform:scale(1) translateZ(0);filter:blur(0) brightness(1)}.m-img__skeleton{position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(90deg,#fff0,#ffffff0d,#fff0);background-size:200% 100%;animation:shimmer 2s infinite linear,pulse 2.5s infinite ease-in-out;border-radius:inherit}.m-img__fallback{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;min-height:12rem;background:#14141499;backdrop-filter:blur(12px) brightness(1.1);-webkit-backdrop-filter:blur(12px) brightness(1.1);background-color:var(--m-backdrop-frosted);border:1px solid rgba(255,255,255,.1);color:#fff9;gap:1.25rem;padding:2.5rem;border-radius:inherit;text-align:center;position:relative;z-index:1}.m-img__fallback svg{width:56px;height:56px;stroke:currentColor;stroke-width:1.5;opacity:.8;filter:drop-shadow(0 0 15px rgba(255,255,255,.2));animation:icon-float 4s infinite ease-in-out}.m-img__fallback .m-img__crack{stroke-dasharray:100;stroke-dashoffset:100;animation:crack-draw 1.5s cubic-bezier(.4,0,.2,1) forwards,crack-glitch 6s infinite 3s}.m-img__error-text{font-size:.7rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;opacity:.5;margin-top:-.5rem}@media(hover:hover){.m-img:hover .m-img__img{transform:scale(1.04) translateZ(0);transition-duration:2s}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes icon-float{0%,to{transform:translateY(0) rotate(0)}50%{transform:translateY(-8px) rotate(-2deg)}}@keyframes crack-draw{to{stroke-dashoffset:0}}@keyframes crack-glitch{0%,80%,to{opacity:1;transform:translate(0)}82%{opacity:.4;transform:translate(-2px,1px)}84%{opacity:.8;transform:translate(2px,-1px)}86%{opacity:.2;transform:translate(-3px,2px)}88%{opacity:.6;transform:translate(1px,-2px)}}\n"], dependencies: [{ kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "decoding", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5557
5572
  }
5558
5573
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ImgComponent, decorators: [{
5559
5574
  type: Component,
5560
5575
  args: [{ selector: 'm-img', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgOptimizedImage, TranslatePipe], host: {
5561
5576
  '[class.m-img-host--fill]': 'fill()',
5577
+ // The figures decide the box, not just the ratio NgOptimizedImage reserves
5578
+ // it with — a caller that names them means that size. Only a caller that
5579
+ // names them: unset, they keep serving the reservation alone, which is
5580
+ // what every picture that takes its size from its column relies on.
5581
+ '[style.width.px]': 'boxWidth()',
5582
+ '[style.height.px]': 'boxHeight()',
5562
5583
  }, providers: [
5563
5584
  {
5564
5585
  provide: IMAGE_LOADER,
@@ -5580,6 +5601,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
5580
5601
  [class.m-img--error]="hasError()"
5581
5602
  [class.m-img--fill]="fill()"
5582
5603
  [class.m-img--priority]="priority()"
5604
+ [class.m-img--sized]="isSized()"
5583
5605
  >
5584
5606
  @if (hasError()) {
5585
5607
  <div class="m-img__fallback" [attr.aria-label]="alt()">
@@ -5636,8 +5658,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
5636
5658
  [alt]="alt()"
5637
5659
  (load)="onLoad()"
5638
5660
  (error)="onError()"
5639
- [width]="!fill() ? width() : undefined"
5640
- [height]="!fill() ? height() : undefined"
5661
+ [width]="!fill() ? attrWidth() : undefined"
5662
+ [height]="!fill() ? attrHeight() : undefined"
5641
5663
  referrerpolicy="no-referrer"
5642
5664
  />
5643
5665
  } @else {
@@ -5650,8 +5672,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
5650
5672
  (load)="onLoad()"
5651
5673
  (error)="onError()"
5652
5674
  [fill]="fill()"
5653
- [width]="!fill() ? width() : undefined"
5654
- [height]="!fill() ? height() : undefined"
5675
+ [width]="!fill() ? attrWidth() : undefined"
5676
+ [height]="!fill() ? attrHeight() : undefined"
5655
5677
  [ngSrcset]="autoNgSrcset()!"
5656
5678
  [sizes]="sizes() || undefined"
5657
5679
  decoding="async"
@@ -5666,8 +5688,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
5666
5688
  (load)="onLoad()"
5667
5689
  (error)="onError()"
5668
5690
  [fill]="fill()"
5669
- [width]="!fill() ? width() : undefined"
5670
- [height]="!fill() ? height() : undefined"
5691
+ [width]="!fill() ? attrWidth() : undefined"
5692
+ [height]="!fill() ? attrHeight() : undefined"
5671
5693
  [sizes]="sizes() || undefined"
5672
5694
  decoding="async"
5673
5695
  referrerpolicy="no-referrer"
@@ -5680,7 +5702,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
5680
5702
  </div>
5681
5703
  }
5682
5704
  </div>
5683
- `, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%;overflow:hidden;border-radius:inherit;contain:paint}:host.m-img-host--fill{height:100%}.m-img{position:relative;width:100%;background:#ffffff05;border-radius:inherit;transition:transform .6s cubic-bezier(.2,0,.2,1);display:flex;flex-direction:column}.m-img--fill{height:100%}.m-img--error{height:auto;min-height:12rem;background:#0003}.m-img__wrapper{position:relative;width:100%;overflow:hidden;border-radius:inherit}.m-img--fill .m-img__wrapper{height:100%}.m-img__img{display:block;width:100%;opacity:0;transform:scale(1.05) translateZ(0);filter:blur(10px) brightness(.8);transition:opacity 1.2s cubic-bezier(.4,0,.2,1),transform 1.2s cubic-bezier(.2,0,.2,1),filter 1s ease-out}.m-img--fill .m-img__img{height:100%;object-fit:cover}.m-img__img:not(.m-img--fill *){height:auto}.m-img--loaded .m-img__img,.m-img--priority .m-img__img{opacity:1;transform:scale(1) translateZ(0);filter:blur(0) brightness(1)}.m-img__skeleton{position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(90deg,#fff0,#ffffff0d,#fff0);background-size:200% 100%;animation:shimmer 2s infinite linear,pulse 2.5s infinite ease-in-out;border-radius:inherit}.m-img__fallback{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;min-height:12rem;background:#14141499;backdrop-filter:blur(12px) brightness(1.1);-webkit-backdrop-filter:blur(12px) brightness(1.1);background-color:var(--m-backdrop-frosted);border:1px solid rgba(255,255,255,.1);color:#fff9;gap:1.25rem;padding:2.5rem;border-radius:inherit;text-align:center;position:relative;z-index:1}.m-img__fallback svg{width:56px;height:56px;stroke:currentColor;stroke-width:1.5;opacity:.8;filter:drop-shadow(0 0 15px rgba(255,255,255,.2));animation:icon-float 4s infinite ease-in-out}.m-img__fallback .m-img__crack{stroke-dasharray:100;stroke-dashoffset:100;animation:crack-draw 1.5s cubic-bezier(.4,0,.2,1) forwards,crack-glitch 6s infinite 3s}.m-img__error-text{font-size:.7rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;opacity:.5;margin-top:-.5rem}@media(hover:hover){.m-img:hover .m-img__img{transform:scale(1.04) translateZ(0);transition-duration:2s}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes icon-float{0%,to{transform:translateY(0) rotate(0)}50%{transform:translateY(-8px) rotate(-2deg)}}@keyframes crack-draw{to{stroke-dashoffset:0}}@keyframes crack-glitch{0%,80%,to{opacity:1;transform:translate(0)}82%{opacity:.4;transform:translate(-2px,1px)}84%{opacity:.8;transform:translate(2px,-1px)}86%{opacity:.2;transform:translate(-3px,2px)}88%{opacity:.6;transform:translate(1px,-2px)}}\n"] }]
5705
+ `, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%;max-width:100%;overflow:hidden;border-radius:inherit;contain:paint}:host.m-img-host--fill{height:100%}.m-img{position:relative;width:100%;background:#ffffff05;border-radius:inherit;transition:transform .6s cubic-bezier(.2,0,.2,1);display:flex;flex-direction:column}.m-img--fill,.m-img--sized{height:100%}.m-img--error{height:auto;min-height:12rem;background:#0003}.m-img__wrapper{position:relative;width:100%;overflow:hidden;border-radius:inherit}.m-img--fill .m-img__wrapper,.m-img--sized .m-img__wrapper{height:100%}.m-img__img{display:block;width:100%;opacity:0;transform:scale(1.05) translateZ(0);filter:blur(10px) brightness(.8);transition:opacity 1.2s cubic-bezier(.4,0,.2,1),transform 1.2s cubic-bezier(.2,0,.2,1),filter 1s ease-out}.m-img--fill .m-img__img,.m-img--sized .m-img__img{height:100%;object-fit:cover}.m-img__img:not(.m-img--fill *):not(.m-img--sized *){height:auto}.m-img--loaded .m-img__img,.m-img--priority .m-img__img{opacity:1;transform:scale(1) translateZ(0);filter:blur(0) brightness(1)}.m-img__skeleton{position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(90deg,#fff0,#ffffff0d,#fff0);background-size:200% 100%;animation:shimmer 2s infinite linear,pulse 2.5s infinite ease-in-out;border-radius:inherit}.m-img__fallback{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;min-height:12rem;background:#14141499;backdrop-filter:blur(12px) brightness(1.1);-webkit-backdrop-filter:blur(12px) brightness(1.1);background-color:var(--m-backdrop-frosted);border:1px solid rgba(255,255,255,.1);color:#fff9;gap:1.25rem;padding:2.5rem;border-radius:inherit;text-align:center;position:relative;z-index:1}.m-img__fallback svg{width:56px;height:56px;stroke:currentColor;stroke-width:1.5;opacity:.8;filter:drop-shadow(0 0 15px rgba(255,255,255,.2));animation:icon-float 4s infinite ease-in-out}.m-img__fallback .m-img__crack{stroke-dasharray:100;stroke-dashoffset:100;animation:crack-draw 1.5s cubic-bezier(.4,0,.2,1) forwards,crack-glitch 6s infinite 3s}.m-img__error-text{font-size:.7rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;opacity:.5;margin-top:-.5rem}@media(hover:hover){.m-img:hover .m-img__img{transform:scale(1.04) translateZ(0);transition-duration:2s}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes icon-float{0%,to{transform:translateY(0) rotate(0)}50%{transform:translateY(-8px) rotate(-2deg)}}@keyframes crack-draw{to{stroke-dashoffset:0}}@keyframes crack-glitch{0%,80%,to{opacity:1;transform:translate(0)}82%{opacity:.4;transform:translate(-2px,1px)}84%{opacity:.8;transform:translate(2px,-1px)}86%{opacity:.2;transform:translate(-3px,2px)}88%{opacity:.6;transform:translate(1px,-2px)}}\n"] }]
5684
5706
  }], ctorParameters: () => [], propDecorators: { src: [{ type: i0.Input, args: [{ isSignal: true, alias: "src", required: false }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], dataType: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataType", required: false }] }], alt: [{ type: i0.Input, args: [{ isSignal: true, alias: "alt", required: true }] }], priority: [{ type: i0.Input, args: [{ isSignal: true, alias: "priority", required: false }] }], fill: [{ type: i0.Input, args: [{ isSignal: true, alias: "fill", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], remote: [{ type: i0.Input, args: [{ isSignal: true, alias: "remote", required: false }] }], ngSrcset: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngSrcset", required: false }] }], sizes: [{ type: i0.Input, args: [{ isSignal: true, alias: "sizes", required: false }] }] } });
5685
5707
 
5686
5708
  const SECTION_FORM_CONTEXT = new InjectionToken('SECTION_FORM_CONTEXT');
@@ -6511,7 +6533,7 @@ class SectionFormItemComponent extends ConfigComponent {
6511
6533
  break;
6512
6534
  }
6513
6535
  case InputType.TOGGLE: {
6514
- const { ToggleInputComponent } = await import('./magmonium-one-toggle-HPEzHZnE.mjs');
6536
+ const { ToggleInputComponent } = await import('./magmonium-one-toggle-C3Tqp74n.mjs');
6515
6537
  this.createDynamicComponent(seq, ToggleInputComponent, [], true);
6516
6538
  break;
6517
6539
  }
@@ -6523,12 +6545,12 @@ class SectionFormItemComponent extends ConfigComponent {
6523
6545
  break;
6524
6546
  }
6525
6547
  case InputType.PASSWORD: {
6526
- const { PasswordInputComponent } = await import('./magmonium-one-password-D3BakJ2Q.mjs');
6548
+ const { PasswordInputComponent } = await import('./magmonium-one-password-mfZqBRB1.mjs');
6527
6549
  this.createDynamicComponent(seq, PasswordInputComponent);
6528
6550
  break;
6529
6551
  }
6530
6552
  case InputType.OTP: {
6531
- const { OtpInputComponent } = await import('./magmonium-one-otp-CsI76aAN.mjs');
6553
+ const { OtpInputComponent } = await import('./magmonium-one-otp-BHZrffIw.mjs');
6532
6554
  this.createDynamicComponent(seq, OtpInputComponent);
6533
6555
  break;
6534
6556
  }
@@ -14869,6 +14891,15 @@ class TextInputComponent extends BaseTextInputComponent {
14869
14891
  errors = input([], ...(ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []));
14870
14892
  showErrors = computed(() => this.touched() && this.invalid(), ...(ngDevMode ? [{ debugName: "showErrors" }] : /* istanbul ignore next */ []));
14871
14893
  hideErrors = input(false, ...(ngDevMode ? [{ debugName: "hideErrors" }] : /* istanbul ignore next */ []));
14894
+ // A `number` Field draws this same component (WrapperInputComponent has no
14895
+ // case of its own for it), so the type it declares decides the element it
14896
+ // draws. What *leaves* the field is coerced a level up, in the wrapper: an
14897
+ // `<input>` reads its value as text whatever its type, and every other
14898
+ // component on this base is a string field.
14899
+ isNumber = computed(() => {
14900
+ const config = this.config();
14901
+ return !!config && config.type === InputType.NUMBER;
14902
+ }, ...(ngDevMode ? [{ debugName: "isNumber" }] : /* istanbul ignore next */ []));
14872
14903
  onInput(event) {
14873
14904
  const target = event.target;
14874
14905
  this.setValue(target?.value ?? '');
@@ -14909,7 +14940,10 @@ class TextInputComponent extends BaseTextInputComponent {
14909
14940
  (input)="onInput($event)"
14910
14941
  (focus)="isFocused.set(true)"
14911
14942
  (blur)="isFocused.set(false); touched.set(true)"
14912
- type="text"
14943
+ [type]="isNumber() ? 'number' : 'text'"
14944
+ [attr.min]="isNumber() ? text.min ?? null : null"
14945
+ [attr.max]="isNumber() ? text.max ?? null : null"
14946
+ [attr.step]="isNumber() ? text.step ?? null : null"
14913
14947
  />
14914
14948
  @if (config()?.status; as status) {
14915
14949
  <div class="input-indicator" [class]="'input-indicator--' + status">
@@ -14973,7 +15007,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
14973
15007
  (input)="onInput($event)"
14974
15008
  (focus)="isFocused.set(true)"
14975
15009
  (blur)="isFocused.set(false); touched.set(true)"
14976
- type="text"
15010
+ [type]="isNumber() ? 'number' : 'text'"
15011
+ [attr.min]="isNumber() ? text.min ?? null : null"
15012
+ [attr.max]="isNumber() ? text.max ?? null : null"
15013
+ [attr.step]="isNumber() ? text.step ?? null : null"
14977
15014
  />
14978
15015
  @if (config()?.status; as status) {
14979
15016
  <div class="input-indicator" [class]="'input-indicator--' + status">
@@ -17688,6 +17725,10 @@ class WrapperInputComponent extends ConfigComponent {
17688
17725
  // it can key its model by that instead of by the filename. Only the asset
17689
17726
  // knows it, and only after it has loaded.
17690
17727
  fieldKey = output();
17728
+ // The type that asset declares, announced for the same reason the key is:
17729
+ // the FormGroup renders this wrapper before the asset it names has loaded,
17730
+ // so it cannot read what kind of value the field is about to write.
17731
+ fieldType = output();
17691
17732
  dynamicInput = viewChild('dynamicInput', { ...(ngDevMode ? { debugName: "dynamicInput" } : /* istanbul ignore next */ {}), read: ViewContainerRef });
17692
17733
  // The declared name wins over the filename: two assets pointing at one key
17693
17734
  // (fields/label.yml and fields/label_key.yml both declare `label`) is the
@@ -17777,6 +17818,11 @@ class WrapperInputComponent extends ConfigComponent {
17777
17818
  if (key)
17778
17819
  this.fieldKey.emit(key);
17779
17820
  });
17821
+ effect(() => {
17822
+ const type = this.config()?.type;
17823
+ if (type)
17824
+ this.fieldType.emit(type);
17825
+ });
17780
17826
  }
17781
17827
  ngOnDestroy() {
17782
17828
  // Deliberately no componentRef.destroy(): Angular tears down anything
@@ -17789,6 +17835,22 @@ class WrapperInputComponent extends ConfigComponent {
17789
17835
  this.isDestroyed = true;
17790
17836
  this.dynamicSeq++;
17791
17837
  }
17838
+ // A `number` Field draws the plain text input (there is no case of its own
17839
+ // below), and an `<input>` hands back its value as text whatever its type —
17840
+ // so the figure is read here rather than in the component, every other field
17841
+ // on that component being a string field. `320` rather than `'320'`: a
17842
+ // numeric config is read back as a number by codegen and by every consumer
17843
+ // that compares or arithmetics on it.
17844
+ coerceValue = (value) => {
17845
+ if (this.config()?.type !== InputType.NUMBER)
17846
+ return value;
17847
+ if (typeof value === 'number')
17848
+ return value;
17849
+ if (typeof value !== 'string' || !value.trim())
17850
+ return undefined;
17851
+ const parsed = Number(value);
17852
+ return Number.isFinite(parsed) ? parsed : undefined;
17853
+ };
17792
17854
  onButtonClick() {
17793
17855
  const config = this.config();
17794
17856
  if (!config)
@@ -17838,7 +17900,7 @@ class WrapperInputComponent extends ConfigComponent {
17838
17900
  ]
17839
17901
  : [
17840
17902
  inputBinding('value', this.value),
17841
- outputBinding('valueChange', (v) => this.value.set(v)),
17903
+ outputBinding('valueChange', (v) => this.value.set(this.coerceValue(v))),
17842
17904
  ];
17843
17905
  viewContainerRef.createComponent(component, {
17844
17906
  bindings: [
@@ -17878,7 +17940,7 @@ class WrapperInputComponent extends ConfigComponent {
17878
17940
  break;
17879
17941
  }
17880
17942
  case InputType.TOGGLE: {
17881
- const { ToggleInputComponent } = await import('./magmonium-one-toggle-HPEzHZnE.mjs');
17943
+ const { ToggleInputComponent } = await import('./magmonium-one-toggle-C3Tqp74n.mjs');
17882
17944
  this.createDynamicComponent(seq, ToggleInputComponent, [], true);
17883
17945
  break;
17884
17946
  }
@@ -17890,12 +17952,12 @@ class WrapperInputComponent extends ConfigComponent {
17890
17952
  break;
17891
17953
  }
17892
17954
  case InputType.PASSWORD: {
17893
- const { PasswordInputComponent } = await import('./magmonium-one-password-D3BakJ2Q.mjs');
17955
+ const { PasswordInputComponent } = await import('./magmonium-one-password-mfZqBRB1.mjs');
17894
17956
  this.createDynamicComponent(seq, PasswordInputComponent);
17895
17957
  break;
17896
17958
  }
17897
17959
  case InputType.OTP: {
17898
- const { OtpInputComponent } = await import('./magmonium-one-otp-CsI76aAN.mjs');
17960
+ const { OtpInputComponent } = await import('./magmonium-one-otp-BHZrffIw.mjs');
17899
17961
  this.createDynamicComponent(seq, OtpInputComponent);
17900
17962
  break;
17901
17963
  }
@@ -17981,7 +18043,7 @@ class WrapperInputComponent extends ConfigComponent {
17981
18043
  }
17982
18044
  };
17983
18045
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: WrapperInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17984
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: WrapperInputComponent, isStandalone: true, selector: "m-input-wrapper", inputs: { remote: { classPropertyName: "remote", publicName: "remote", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, focused: { classPropertyName: "focused", publicName: "focused", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, dir: { classPropertyName: "dir", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, element: { classPropertyName: "element", publicName: "element", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, template: { classPropertyName: "template", publicName: "template", isSignal: true, isRequired: false, transformFunction: null }, aclResolver: { classPropertyName: "aclResolver", publicName: "aclResolver", isSignal: true, isRequired: false, transformFunction: null }, formValues: { classPropertyName: "formValues", publicName: "formValues", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", state: "stateChange", act: "act", fieldKey: "fieldKey" }, host: { properties: { "style.display": "isVisible() ? null : \"none\"" } }, queries: [{ propertyName: "projectedTemplate", first: true, predicate: (TemplateRef), descendants: true, isSignal: true }], viewQueries: [{ propertyName: "dynamicInput", first: true, predicate: ["dynamicInput"], descendants: true, read: ViewContainerRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
18046
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: WrapperInputComponent, isStandalone: true, selector: "m-input-wrapper", inputs: { remote: { classPropertyName: "remote", publicName: "remote", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, focused: { classPropertyName: "focused", publicName: "focused", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, dir: { classPropertyName: "dir", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, element: { classPropertyName: "element", publicName: "element", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, template: { classPropertyName: "template", publicName: "template", isSignal: true, isRequired: false, transformFunction: null }, aclResolver: { classPropertyName: "aclResolver", publicName: "aclResolver", isSignal: true, isRequired: false, transformFunction: null }, formValues: { classPropertyName: "formValues", publicName: "formValues", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", state: "stateChange", act: "act", fieldKey: "fieldKey", fieldType: "fieldType" }, host: { properties: { "style.display": "isVisible() ? null : \"none\"" } }, queries: [{ propertyName: "projectedTemplate", first: true, predicate: (TemplateRef), descendants: true, isSignal: true }], viewQueries: [{ propertyName: "dynamicInput", first: true, predicate: ["dynamicInput"], descendants: true, read: ViewContainerRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
17985
18047
  @if (isVisible()) {
17986
18048
  <div
17987
18049
  class="m-input-wrapper"
@@ -18044,7 +18106,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
18044
18106
  </div>
18045
18107
  }
18046
18108
  `, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%}.m-input-wrapper{display:flex;align-items:flex-end;gap:calc(var(--input-size, 1em) * .375);width:100%}.m-input-wrapper--has-label{padding-top:var(--m-input-wrapper-label-padding-top, .5em )}.m-input-wrapper--inline{align-items:center;padding-top:0;min-height:0}.m-input-wrapper--readonly .m-dynamic-input{opacity:.6;filter:grayscale(.5);pointer-events:none;cursor:not-allowed}.m-input-wrapper--readonly .m-dynamic-input,.m-input-wrapper--readonly .m-dynamic-input *{animation:none!important;transition:none!important;box-shadow:none!important}.m-input-wrapper .m-button{flex-shrink:0;--m-button-size: var(--input-size, 1em);--m-icon-size: calc(var(--input-size, 1em) * 1.1)}.m-dynamic-input{flex:1;min-width:0}\n"] }]
18047
- }], ctorParameters: () => [], propDecorators: { remote: [{ type: i0.Input, args: [{ isSignal: true, alias: "remote", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], state: [{ type: i0.Input, args: [{ isSignal: true, alias: "state", required: false }] }, { type: i0.Output, args: ["stateChange"] }], focused: [{ type: i0.Input, args: [{ isSignal: true, alias: "focused", required: false }] }], form: [{ type: i0.Input, args: [{ isSignal: true, alias: "form", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], dir: [{ type: i0.Input, args: [{ isSignal: true, alias: "dir", required: false }] }], element: [{ type: i0.Input, args: [{ isSignal: true, alias: "element", required: false }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], template: [{ type: i0.Input, args: [{ isSignal: true, alias: "template", required: false }] }], projectedTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }], aclResolver: [{ type: i0.Input, args: [{ isSignal: true, alias: "aclResolver", required: false }] }], formValues: [{ type: i0.Input, args: [{ isSignal: true, alias: "formValues", required: false }] }], act: [{ type: i0.Output, args: ["act"] }], fieldKey: [{ type: i0.Output, args: ["fieldKey"] }], dynamicInput: [{ type: i0.ViewChild, args: ['dynamicInput', { ...{ read: ViewContainerRef }, isSignal: true }] }] } });
18109
+ }], ctorParameters: () => [], propDecorators: { remote: [{ type: i0.Input, args: [{ isSignal: true, alias: "remote", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], state: [{ type: i0.Input, args: [{ isSignal: true, alias: "state", required: false }] }, { type: i0.Output, args: ["stateChange"] }], focused: [{ type: i0.Input, args: [{ isSignal: true, alias: "focused", required: false }] }], form: [{ type: i0.Input, args: [{ isSignal: true, alias: "form", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], dir: [{ type: i0.Input, args: [{ isSignal: true, alias: "dir", required: false }] }], element: [{ type: i0.Input, args: [{ isSignal: true, alias: "element", required: false }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], template: [{ type: i0.Input, args: [{ isSignal: true, alias: "template", required: false }] }], projectedTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }], aclResolver: [{ type: i0.Input, args: [{ isSignal: true, alias: "aclResolver", required: false }] }], formValues: [{ type: i0.Input, args: [{ isSignal: true, alias: "formValues", required: false }] }], act: [{ type: i0.Output, args: ["act"] }], fieldKey: [{ type: i0.Output, args: ["fieldKey"] }], fieldType: [{ type: i0.Output, args: ["fieldType"] }], dynamicInput: [{ type: i0.ViewChild, args: ['dynamicInput', { ...{ read: ViewContainerRef }, isSignal: true }] }] } });
18048
18110
 
18049
18111
  class RangeInputComponent extends BaseTextInputComponent {
18050
18112
  _track = viewChild('track', ...(ngDevMode ? [{ debugName: "_track" }] : /* istanbul ignore next */ []));
@@ -19764,6 +19826,29 @@ class FormGroupComponent extends ConfigComponent {
19764
19826
  return;
19765
19827
  this.fieldKeys.set({ ...this.fieldKeys(), [input]: key });
19766
19828
  };
19829
+ // What each field asset declares itself to be. Only `number` is acted on so
19830
+ // far (mergeData reads it), and only a loaded asset can say so — which is
19831
+ // why this arrives as an output rather than being read off `fieldConfigs`.
19832
+ fieldTypes = signal({}, ...(ngDevMode ? [{ debugName: "fieldTypes" }] : /* istanbul ignore next */ []));
19833
+ onFieldType = (input, type) => {
19834
+ if (this.fieldTypes()[input] === type)
19835
+ return;
19836
+ this.fieldTypes.set({ ...this.fieldTypes(), [input]: type });
19837
+ };
19838
+ // A `number` field's value as a figure. The `<input>` behind it reads back
19839
+ // as text whatever its `type` is, so a Field declaring `number` would
19840
+ // otherwise hand its reader `'320'` — and every consumer of a numeric
19841
+ // config (an ImgControl's width, a price, a limit) tests for a number and
19842
+ // silently falls back when it finds a string.
19843
+ asNumber = (value) => {
19844
+ if (typeof value === 'number' || value === undefined || value === null) {
19845
+ return value;
19846
+ }
19847
+ if (typeof value !== 'string' || !value.trim())
19848
+ return undefined;
19849
+ const parsed = Number(value);
19850
+ return Number.isFinite(parsed) ? parsed : undefined;
19851
+ };
19767
19852
  modelKeys = computed(() => {
19768
19853
  const keys = this.fieldKeys();
19769
19854
  // Deduped: two inputs resolving to one key (label_key + label, only one of
@@ -19789,6 +19874,14 @@ class FormGroupComponent extends ConfigComponent {
19789
19874
  if (!(key in value))
19790
19875
  merged[key] = undefined;
19791
19876
  });
19877
+ const keys = this.fieldKeys();
19878
+ Object.entries(this.fieldTypes()).forEach(([input, type]) => {
19879
+ if (type !== InputType.NUMBER)
19880
+ return;
19881
+ const key = keys[input] ?? input;
19882
+ if (key in merged)
19883
+ merged[key] = this.asNumber(merged[key]);
19884
+ });
19792
19885
  return merged;
19793
19886
  };
19794
19887
  model = linkedSignal({ ...(ngDevMode ? { debugName: "model" } : /* istanbul ignore next */ {}), source: () => ({
@@ -19945,13 +20038,14 @@ class FormGroupComponent extends ConfigComponent {
19945
20038
  [focused]="shouldFocus() && !$index"
19946
20039
  (act)="act.emit($event)"
19947
20040
  (fieldKey)="onFieldKey(input.name, $event)"
20041
+ (fieldType)="onFieldType(input.name, $event)"
19948
20042
  />
19949
20043
  }
19950
20044
  </form>
19951
20045
  }
19952
20046
  }
19953
20047
  </div>
19954
- `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%}.form-group{display:flex;flex-direction:column;gap:var(--m-form-group-gap, 1.5rem)}.form-group__header{display:flex;flex-direction:column;gap:4px;margin-bottom:.5rem}.form-group__subtitle{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;opacity:.5;color:var(--mm-color, #ffd700)}.form-group__title{font-size:1.25rem;font-weight:700;letter-spacing:-.01em;opacity:.9}.form-group__content{display:flex;flex-wrap:wrap;gap:var(--m-form-group-content-gap, 1rem 1.25rem)}.form-group__content>*{flex:1 1 100%;min-width:0}.form-group__content>.col-1{flex:1 1 calc(1 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-2{flex:2 1 calc(2 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-3{flex:3 1 calc(.25*(100% + 1.25rem) - 1.25rem)}.form-group__content>.col-4{flex:4 1 calc(4 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-5{flex:5 1 calc(5 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-6{flex:6 1 calc(.5*(100% + 1.25rem) - 1.25rem)}.form-group__content>.col-7{flex:7 1 calc(7 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-8{flex:8 1 calc(8 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-9{flex:9 1 calc(.75*(100% + 1.25rem) - 1.25rem)}.form-group__content>.col-10{flex:10 1 calc(10 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-11{flex:11 1 calc(11 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-12{flex:12 1 calc(1*(100% + 1.25rem) - 1.25rem)}@media(max-width:480px){.form-group__content>*{flex-basis:100%}}:host(.m-form--compact) .form-group{gap:.5rem}:host(.m-form--compact) .form-group__content{display:block;gap:0}\n"], dependencies: [{ kind: "component", type: WrapperInputComponent, selector: "m-input-wrapper", inputs: ["remote", "value", "readonly", "state", "focused", "form", "options", "dir", "element", "data", "template", "aclResolver", "formValues"], outputs: ["valueChange", "stateChange", "act", "fieldKey"] }, { kind: "component", type: HeaderComponent$1, selector: "m-header", inputs: ["level", "label", "actionButton", "actionLabel", "noTranslate"], outputs: ["actionClick"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
20048
+ `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%}.form-group{display:flex;flex-direction:column;gap:var(--m-form-group-gap, 1.5rem)}.form-group__header{display:flex;flex-direction:column;gap:4px;margin-bottom:.5rem}.form-group__subtitle{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;opacity:.5;color:var(--mm-color, #ffd700)}.form-group__title{font-size:1.25rem;font-weight:700;letter-spacing:-.01em;opacity:.9}.form-group__content{display:flex;flex-wrap:wrap;gap:var(--m-form-group-content-gap, 1rem 1.25rem)}.form-group__content>*{flex:1 1 100%;min-width:0}.form-group__content>.col-1{flex:1 1 calc(1 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-2{flex:2 1 calc(2 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-3{flex:3 1 calc(.25*(100% + 1.25rem) - 1.25rem)}.form-group__content>.col-4{flex:4 1 calc(4 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-5{flex:5 1 calc(5 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-6{flex:6 1 calc(.5*(100% + 1.25rem) - 1.25rem)}.form-group__content>.col-7{flex:7 1 calc(7 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-8{flex:8 1 calc(8 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-9{flex:9 1 calc(.75*(100% + 1.25rem) - 1.25rem)}.form-group__content>.col-10{flex:10 1 calc(10 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-11{flex:11 1 calc(11 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-12{flex:12 1 calc(1*(100% + 1.25rem) - 1.25rem)}@media(max-width:480px){.form-group__content>*{flex-basis:100%}}:host(.m-form--compact) .form-group{gap:.5rem}:host(.m-form--compact) .form-group__content{display:block;gap:0}\n"], dependencies: [{ kind: "component", type: WrapperInputComponent, selector: "m-input-wrapper", inputs: ["remote", "value", "readonly", "state", "focused", "form", "options", "dir", "element", "data", "template", "aclResolver", "formValues"], outputs: ["valueChange", "stateChange", "act", "fieldKey", "fieldType"] }, { kind: "component", type: HeaderComponent$1, selector: "m-header", inputs: ["level", "label", "actionButton", "actionLabel", "noTranslate"], outputs: ["actionClick"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
19955
20049
  }
19956
20050
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: FormGroupComponent, decorators: [{
19957
20051
  type: Component,
@@ -19999,6 +20093,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
19999
20093
  [focused]="shouldFocus() && !$index"
20000
20094
  (act)="act.emit($event)"
20001
20095
  (fieldKey)="onFieldKey(input.name, $event)"
20096
+ (fieldType)="onFieldType(input.name, $event)"
20002
20097
  />
20003
20098
  }
20004
20099
  </form>
@@ -23801,7 +23896,7 @@ class TableComponent extends ConfigComponent {
23801
23896
  </div>
23802
23897
  }
23803
23898
  </div>
23804
- `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.m-table{display:flex;flex-direction:column;border:1px solid var(--m-backdrop-border);border-radius:12px;overflow:clip;background:#ffffffe6;-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);position:relative;transition:background-color .3s ease}.m-table--flat{border:none;box-shadow:none;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:0}.m-table__toolbar{display:flex;align-items:center;justify-content:space-between;padding:1.5rem var(--m-table-toolbar-padding-x, 1.25rem);border-bottom:1px solid var(--m-backdrop-border);gap:1.5rem;background:color-mix(in srgb,var(--m-background) 45%,transparent)}.m-table--flat .m-table__toolbar{background:transparent;padding-left:0;padding-right:0}.m-table__title{margin:0;font-size:1.25rem;font-weight:800;color:var(--m-text);letter-spacing:-.02em;flex:1}.m-table__search{flex:0 1 auto;display:flex;align-items:center}.m-table__search .m-input-wrapper{width:100%}.m-table__mobile-view{display:flex;flex-direction:column;gap:1rem;padding:1.25rem;flex:1;overflow:auto}.m-table__empty-mobile{padding:3rem 1.5rem;text-align:center;color:var(--m-text-tertiary);font-size:.9375rem;font-weight:500;font-style:italic;opacity:.8;background:color-mix(in srgb,var(--m-background) 20%,transparent);border-radius:12px;border:1px dashed var(--m-backdrop-border)}.m-table__wrapper{overflow:auto;flex:1}.m-table__wrapper::-webkit-scrollbar{width:6px;height:6px}.m-table__wrapper::-webkit-scrollbar-track{background:transparent}.m-table__wrapper::-webkit-scrollbar-thumb{background:var(--m-backdrop-border);border-radius:10px}.m-table__wrapper::-webkit-scrollbar-thumb:hover{background:var(--m-text-tertiary)}.m-table__table{width:100%;min-width:100%;border-collapse:separate;border-spacing:0}mark.m-table__highlight{background:var(--m-highlight);color:#000;border-radius:2px;padding:0 2px;font-weight:700;box-shadow:0 1px 4px #0003}mark.m-table__highlight .m-one-pagination{margin-left:auto;--m-button-size: 2.25rem;--m-pagination-gap: .375rem}.m-table-pagination{display:flex;align-items:center;gap:1.5rem;padding:1.25rem var(--m-table-pagination-padding-x, 1.25rem);border-top:1px solid var(--m-backdrop-border);font-size:.8125rem;flex-wrap:wrap;background:color-mix(in srgb,var(--m-background) 40%,transparent)}.m-table--flat .m-table-pagination{background:transparent;padding-left:0;padding-right:0}.m-table-pagination__size{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;color:var(--m-text-secondary);font-weight:500}.m-table-pagination__select{border:1px solid var(--m-backdrop-border);border-radius:8px;background:var(--m-backdrop-surface);color:var(--m-text);padding:.375rem .625rem;font-size:.8125rem;font-weight:600;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);outline:none}.m-table-pagination__select:hover{background:var(--m-backdrop-glass);border-color:var(--m-mm);box-shadow:0 0 0 3px color-mix(in srgb,var(--m-mm) 10%,transparent)}.m-table-pagination__select:focus{border-color:var(--m-mm);box-shadow:0 0 0 3px color-mix(in srgb,var(--m-mm) 20%,transparent)}.m-table-filter{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:1rem 1.25rem;background:color-mix(in srgb,var(--m-background-lite) 60%,transparent);border-bottom:1px solid var(--m-backdrop-border);box-shadow:inset 0 2px 4px #00000005;overflow-x:auto;scrollbar-width:none}.m-table-filter::-webkit-scrollbar{display:none}.m-table--flat .m-table-filter{background:transparent;padding-left:0;padding-right:0;border-bottom:none}.m-table-filter__item{display:flex;align-items:center;gap:10px;padding:.4375rem 1rem;border-radius:12px;background:var(--m-background);border:1px solid var(--m-backdrop-border);color:var(--m-text-secondary);cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);white-space:nowrap;-webkit-user-select:none;user-select:none;outline:none;font-weight:500}.m-table-filter__item:hover{border-color:var(--m-mm);color:var(--m-mm);background:var(--m-background);transform:translateY(-1px);box-shadow:0 4px 12px #0000000d}.m-table-filter__item--active{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);font-weight:600;box-shadow:0 8px 16px color-mix(in srgb,var(--m-mm) 25%,transparent)}.m-table-filter__item--active:hover{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);transform:translateY(-1px)}.m-table-filter__item--active .m-table-filter__badge{background:#fff3;color:var(--m-inverse-text);border-color:#ffffff1a}.m-table-filter__item--primary{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);font-weight:600;box-shadow:0 8px 16px color-mix(in srgb,var(--m-mm) 25%,transparent)}.m-table-filter__item--primary:hover{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);transform:translateY(-1px);box-shadow:0 10px 20px color-mix(in srgb,var(--m-mm) 30%,transparent)}.m-table-filter__item--primary .m-table-filter__badge{background:#fff3;color:var(--m-inverse-text);border-color:#ffffff1a}.m-table-filter__item--danger{border-color:var(--m-error);color:var(--m-error)}.m-table-filter__item--danger:hover{border-color:var(--m-error);color:var(--m-error);background:var(--m-backdrop-error);transform:translateY(-1px);box-shadow:0 4px 12px color-mix(in srgb,var(--m-error) 12%,transparent)}.m-table-filter__item--danger .m-table-filter__badge{background:var(--m-backdrop-error);color:var(--m-error);border-color:color-mix(in srgb,var(--m-error) 20%,transparent)}.m-table-filter__label{font-size:.8125rem;font-weight:600;letter-spacing:.01em}.m-table-filter__badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding:0 .375rem;border-radius:100px;background:var(--m-backdrop-surface);color:var(--m-text-secondary);font-size:.6875rem;font-weight:700;border:1px solid var(--m-backdrop-border);transition:all .2s ease}\n"], dependencies: [{ kind: "component", type: TableHeaderComponent, selector: "m-table-header", inputs: ["visibleColumns", "fixedCount", "fixedOffset", "sortState", "selectable", "allSelected", "someSelected"], outputs: ["sortClick", "selectAll"] }, { kind: "component", type: TableBodyComponent, selector: "m-table-body", inputs: ["rows", "visibleColumns", "fixedCount", "fixedOffset", "searchQuery", "currency", "rowClass", "emptyMessage", "rowTestId", "actionVisibilityRule", "actionDisableRule", "selectable", "selectedRows", "selectDisableExpression", "expressionContext"], outputs: ["rowSelect", "cellChanged", "rowMenuClick", "cellClick"] }, { kind: "component", type: PaginationComponent, selector: "m-pagination, m-one-pagination", inputs: ["config", "totalPages", "totalItems", "pageSize", "page"], outputs: ["configChange", "pageChange"] }, { kind: "component", type: FreezeComponent, selector: "m-freeze", inputs: ["config"] }, { kind: "component", type: WrapperInputComponent, selector: "m-input-wrapper", inputs: ["remote", "value", "readonly", "state", "focused", "form", "options", "dir", "element", "data", "template", "aclResolver", "formValues"], outputs: ["valueChange", "stateChange", "act", "fieldKey"] }, { kind: "component", type: TableFilterComponent, selector: "m-table-filter", inputs: ["filters", "data", "activeFilterIndices", "expressionContext"], outputs: ["filterClick"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
23899
+ `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.m-table{display:flex;flex-direction:column;border:1px solid var(--m-backdrop-border);border-radius:12px;overflow:clip;background:#ffffffe6;-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);position:relative;transition:background-color .3s ease}.m-table--flat{border:none;box-shadow:none;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:0}.m-table__toolbar{display:flex;align-items:center;justify-content:space-between;padding:1.5rem var(--m-table-toolbar-padding-x, 1.25rem);border-bottom:1px solid var(--m-backdrop-border);gap:1.5rem;background:color-mix(in srgb,var(--m-background) 45%,transparent)}.m-table--flat .m-table__toolbar{background:transparent;padding-left:0;padding-right:0}.m-table__title{margin:0;font-size:1.25rem;font-weight:800;color:var(--m-text);letter-spacing:-.02em;flex:1}.m-table__search{flex:0 1 auto;display:flex;align-items:center}.m-table__search .m-input-wrapper{width:100%}.m-table__mobile-view{display:flex;flex-direction:column;gap:1rem;padding:1.25rem;flex:1;overflow:auto}.m-table__empty-mobile{padding:3rem 1.5rem;text-align:center;color:var(--m-text-tertiary);font-size:.9375rem;font-weight:500;font-style:italic;opacity:.8;background:color-mix(in srgb,var(--m-background) 20%,transparent);border-radius:12px;border:1px dashed var(--m-backdrop-border)}.m-table__wrapper{overflow:auto;flex:1}.m-table__wrapper::-webkit-scrollbar{width:6px;height:6px}.m-table__wrapper::-webkit-scrollbar-track{background:transparent}.m-table__wrapper::-webkit-scrollbar-thumb{background:var(--m-backdrop-border);border-radius:10px}.m-table__wrapper::-webkit-scrollbar-thumb:hover{background:var(--m-text-tertiary)}.m-table__table{width:100%;min-width:100%;border-collapse:separate;border-spacing:0}mark.m-table__highlight{background:var(--m-highlight);color:#000;border-radius:2px;padding:0 2px;font-weight:700;box-shadow:0 1px 4px #0003}mark.m-table__highlight .m-one-pagination{margin-left:auto;--m-button-size: 2.25rem;--m-pagination-gap: .375rem}.m-table-pagination{display:flex;align-items:center;gap:1.5rem;padding:1.25rem var(--m-table-pagination-padding-x, 1.25rem);border-top:1px solid var(--m-backdrop-border);font-size:.8125rem;flex-wrap:wrap;background:color-mix(in srgb,var(--m-background) 40%,transparent)}.m-table--flat .m-table-pagination{background:transparent;padding-left:0;padding-right:0}.m-table-pagination__size{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;color:var(--m-text-secondary);font-weight:500}.m-table-pagination__select{border:1px solid var(--m-backdrop-border);border-radius:8px;background:var(--m-backdrop-surface);color:var(--m-text);padding:.375rem .625rem;font-size:.8125rem;font-weight:600;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);outline:none}.m-table-pagination__select:hover{background:var(--m-backdrop-glass);border-color:var(--m-mm);box-shadow:0 0 0 3px color-mix(in srgb,var(--m-mm) 10%,transparent)}.m-table-pagination__select:focus{border-color:var(--m-mm);box-shadow:0 0 0 3px color-mix(in srgb,var(--m-mm) 20%,transparent)}.m-table-filter{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:1rem 1.25rem;background:color-mix(in srgb,var(--m-background-lite) 60%,transparent);border-bottom:1px solid var(--m-backdrop-border);box-shadow:inset 0 2px 4px #00000005;overflow-x:auto;scrollbar-width:none}.m-table-filter::-webkit-scrollbar{display:none}.m-table--flat .m-table-filter{background:transparent;padding-left:0;padding-right:0;border-bottom:none}.m-table-filter__item{display:flex;align-items:center;gap:10px;padding:.4375rem 1rem;border-radius:12px;background:var(--m-background);border:1px solid var(--m-backdrop-border);color:var(--m-text-secondary);cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);white-space:nowrap;-webkit-user-select:none;user-select:none;outline:none;font-weight:500}.m-table-filter__item:hover{border-color:var(--m-mm);color:var(--m-mm);background:var(--m-background);transform:translateY(-1px);box-shadow:0 4px 12px #0000000d}.m-table-filter__item--active{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);font-weight:600;box-shadow:0 8px 16px color-mix(in srgb,var(--m-mm) 25%,transparent)}.m-table-filter__item--active:hover{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);transform:translateY(-1px)}.m-table-filter__item--active .m-table-filter__badge{background:#fff3;color:var(--m-inverse-text);border-color:#ffffff1a}.m-table-filter__item--primary{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);font-weight:600;box-shadow:0 8px 16px color-mix(in srgb,var(--m-mm) 25%,transparent)}.m-table-filter__item--primary:hover{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);transform:translateY(-1px);box-shadow:0 10px 20px color-mix(in srgb,var(--m-mm) 30%,transparent)}.m-table-filter__item--primary .m-table-filter__badge{background:#fff3;color:var(--m-inverse-text);border-color:#ffffff1a}.m-table-filter__item--danger{border-color:var(--m-error);color:var(--m-error)}.m-table-filter__item--danger:hover{border-color:var(--m-error);color:var(--m-error);background:var(--m-backdrop-error);transform:translateY(-1px);box-shadow:0 4px 12px color-mix(in srgb,var(--m-error) 12%,transparent)}.m-table-filter__item--danger .m-table-filter__badge{background:var(--m-backdrop-error);color:var(--m-error);border-color:color-mix(in srgb,var(--m-error) 20%,transparent)}.m-table-filter__label{font-size:.8125rem;font-weight:600;letter-spacing:.01em}.m-table-filter__badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding:0 .375rem;border-radius:100px;background:var(--m-backdrop-surface);color:var(--m-text-secondary);font-size:.6875rem;font-weight:700;border:1px solid var(--m-backdrop-border);transition:all .2s ease}\n"], dependencies: [{ kind: "component", type: TableHeaderComponent, selector: "m-table-header", inputs: ["visibleColumns", "fixedCount", "fixedOffset", "sortState", "selectable", "allSelected", "someSelected"], outputs: ["sortClick", "selectAll"] }, { kind: "component", type: TableBodyComponent, selector: "m-table-body", inputs: ["rows", "visibleColumns", "fixedCount", "fixedOffset", "searchQuery", "currency", "rowClass", "emptyMessage", "rowTestId", "actionVisibilityRule", "actionDisableRule", "selectable", "selectedRows", "selectDisableExpression", "expressionContext"], outputs: ["rowSelect", "cellChanged", "rowMenuClick", "cellClick"] }, { kind: "component", type: PaginationComponent, selector: "m-pagination, m-one-pagination", inputs: ["config", "totalPages", "totalItems", "pageSize", "page"], outputs: ["configChange", "pageChange"] }, { kind: "component", type: FreezeComponent, selector: "m-freeze", inputs: ["config"] }, { kind: "component", type: WrapperInputComponent, selector: "m-input-wrapper", inputs: ["remote", "value", "readonly", "state", "focused", "form", "options", "dir", "element", "data", "template", "aclResolver", "formValues"], outputs: ["valueChange", "stateChange", "act", "fieldKey", "fieldType"] }, { kind: "component", type: TableFilterComponent, selector: "m-table-filter", inputs: ["filters", "data", "activeFilterIndices", "expressionContext"], outputs: ["filterClick"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
23805
23900
  }
23806
23901
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TableComponent, decorators: [{
23807
23902
  type: Component,
@@ -32186,4 +32281,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
32186
32281
  */
32187
32282
 
32188
32283
  export { DateInputComponent as $, ACCESS_DOMAINS as A, BaseInputComponent as B, COMPONENT_INPUT_REGISTRY as C, CardComponent as D, CardWrapperComponent as E, CarouselComponent as F, ChartComponent as G, CheckboxInputComponent as H, IS_DESIGN_MODE as I, ClearableInputComponent as J, ColComponent as K, LabelComponent as L, ColorPickerInputComponent as M, CommentItemComponent as N, CommentsApiService as O, CommentsComponent as P, CommentsStore as Q, ComponentInputComponent as R, ComponentStepperComponent as S, TranslatePipe as T, ConfigComponent as U, ConfirmComponent as V, ContextMenuComponent as W, CustomIconClass as X, CustomIconEditComponent as Y, DEFAULT_SIZE as Z, DashboardCardComponent as _, BaseTextInputComponent as a, NavComponent as a$, DatePickerComponent as a0, DeviceService as a1, DomService as a2, Domain as a3, DotGridComponent as a4, DragListDirective as a5, DragListItemDirective as a6, DraggableDirective as a7, DropdownInputComponent as a8, FLEX_VARIANTS as a9, LOGIN_STORE as aA, LanguageComponent as aB, LogoComponent as aC, MAG_SOCKET_EVENT as aD, MHeroColorDirective as aE, MHeroComponent as aF, MODAL_REF as aG, MODAL_STORE_REF as aH, MRefDirective as aI, MStepComponent as aJ, MURL_PARAM as aK, MURL_SEP as aL, ManifestEnrichmentService as aM, MenuComponent as aN, ModalDirective as aO, ModalRef as aP, ModalStore as aQ, MoneyPipe as aR, MultiRangeInputComponent as aS, MurlUrlSerializer as aT, NAV_DEFAULT_MURL as aU, NAV_ID_SEP as aV, NAV_MAIN_BUTTONS as aW, NAV_SEGMENT_RE as aX, NAV_STORE_REF as aY, NAV_WC_COMPONENTS as aZ, NAV_WIDGET_MAP as a_, FOLDER_PICK_LISTENER as aa, FORM_ASSET_FOLDER as ab, FileService as ac, FileUploadDirective as ad, FileUploadInputComponent as ae, FlexComponent as af, FlexItemComponent as ag, FormGroupComponent as ah, FrameComponent as ai, FreezeService as aj, GRID_BREAKPOINTS as ak, GetNavService as al, HeaderComponent$1 as am, HighlightDirective as an, HttpService as ao, ICON_SOURCE as ap, IS_SIDE_PANEL as aq, IconComponent as ar, ImgComponent as as, InputType as at, InstrumentScoreComponent as au, InterceptorObservables as av, JumbotronComponent as aw, KeyValueComponent as ax, LAYOUT_ASSET_FOLDER as ay, LOGIN_COMPONENT as az, TextOutputComponent as b, SectionFooterComponent as b$, NavDetailsComponent as b0, NavHeaderComponent as b1, NavMenuComponent as b2, NavStore as b3, NavTrailComponent as b4, NothingComponent as b5, NotificationElementComponent as b6, NotificationGroupComponent as b7, NotificationPopupComponent as b8, NotificationService as b9, ReactiveElementComponent as bA, RemoteComponent as bB, RemoteLoaderService as bC, ResizeElementComponent as bD, RouteContainer as bE, RowComponent as bF, SEARCH_QUERY as bG, SEARCH_RESULTS_EVENT as bH, SECTION_ACCORDION_GROUP as bI, SECTION_FORM_CONTEXT as bJ, SHARED_ICONS as bK, SIZE_CONTEXT as bL, ScoreComponent as bM, ScrollComponent as bN, ScrollService as bO, SearchPanelComponent as bP, SearchStore as bQ, SearchUserPanelComponent as bR, SectionAccordionDirective as bS, SectionAccordionGroupDirective as bT, SectionBackComponent as bU, SectionBadgesComponent as bV, SectionButtonGroupComponent as bW, SectionCardComponent as bX, SectionCarouselComponent as bY, SectionComponent as bZ, SectionFilterComponent as b_, NotificationStore as ba, NotificationType as bb, NotificationWidgetComponent as bc, ONE_ASSET_BASE_URL as bd, OPTIONS_SOURCE as be, OVERLAY_WIDGETS as bf, OneApp as bg, OptionsSourceDirective as bh, OverlayBodyComponent as bi, OverlayRef as bj, OverlayService as bk, PLATFORM_BUTTON_NAV_IDS as bl, PLATFORM_EXTENSIBLE_NAV_IDS as bm, PLATFORM_NAV_MAP as bn, PLATFORM_ROOT_CHILDREN as bo, PaginationComponent as bp, PanelComponent as bq, PercentagePipe as br, PlaygroundComponent as bs, PositionDirective as bt, PwaInstallComponent as bu, ROOT_NAV$1 as bv, RadioGroupComponent as bw, RadioInputComponent as bx, RangeInputComponent as by, RatingInputComponent as bz, ButtonComponent as c, WIN_USER_TAB_KEY as c$, SectionFormComponent as c0, SectionFormItemComponent as c1, SectionHeaderComponent as c2, SectionHeroComponent as c3, SectionSearchComponent as c4, SectionStepperComponent as c5, SectionTabsComponent as c6, SectionToggleComponent as c7, SectionToggleItemDirective as c8, SelectableCardInputComponent as c9, ThemeComponent as cA, ThemeDataService as cB, ThemeService as cC, ThemeStore as cD, TimeAgoPipe as cE, TimelineComponent as cF, ToggleButtonComponent as cG, ToggleInputComponent as cH, ToggleRadioInputComponent as cI, ToolTipDirective as cJ, TooltipComponent as cK, TranslateService as cL, TreeGridComponent as cM, URL_SEP as cN, USER_STORE_REF as cO, USER_TAB_MAP as cP, UlComponent as cQ, UniverseComponent as cR, UserApiService as cS, UserAvatarComponent as cT, UserComponent as cU, UserNavComponent as cV, UserSettingsComponent as cW, UserStore as cX, WC_ROUTE_CHANGED_EVENT as cY, WC_SEARCH_GROUPS as cZ, WIN_USER_TAB_HOOK as c_, SelectorDirective as ca, SettingsSearchBarComponent as cb, SettingsSearchService as cc, ShapeComponent as cd, SharedStoreRegistry as ce, SidePanelDirective as cf, Size as cg, SocketStore as ch, SortComponent as ci, StatComponent as cj, StepComponent as ck, StepperComponent as cl, StepsComponent as cm, StorageService as cn, StrokeLinecap as co, StrokeLinejoin as cp, SummaryComponent as cq, SvgGeneratorComponent as cr, SvgGeneratorService as cs, SvgService as ct, TOTAL_COLUMNS as cu, TRANSLATION_SOURCE as cv, TableComponent as cw, TechnicalMeterComponent as cx, TextInputComponent as cy, TextareaInputComponent as cz, APP_CONTEXT_REF as d, linkToId as d$, WatermarkComponent as d0, WcRouterStore as d1, WrapperInputComponent as d2, anchorNavId as d3, applyColorsToElement as d4, bootstrapMagApp as d5, bootstrapPwaInstall as d6, buildWcBaseUrl as d7, calculateLuminance as d8, calculateRanks as d9, getTreeGridRow as dA, getUniqueId as dB, getValue as dC, hasErrorComputed as dD, hexToRgb as dE, hslToRgb$1 as dF, initMagmoniumApp as dG, initialNotificationState as dH, initialState$2 as dI, initials as dJ, injectAuthenticate as dK, injectInstallApp as dL, injectParentSize as dM, injectScrollSticky as dN, isButtonName as dO, isCancelledComputed as dP, isExtensiblePlatformNavId as dQ, isJson as dR, isLoadingComputed as dS, isLocalhost as dT, isPlatformNavId as dU, isSize as dV, isTierPreview as dW, isUrlLocalhost as dX, isValidNavId as dY, isValidNavSegment as dZ, isWebComponent as d_, cellText as da, checkFilterCondition as db, childNavId as dc, classListSignal as dd, coerceSize as de, cornerEdge as df, cornerSide as dg, createMap as dh, createPlatformNavMap as di, deriveAvatarGradient as dj, deriveContrastColor as dk, deriveOppositeColor as dl, derivePropertyName as dm, emailValidation as dn, evaluate as dp, evaluateBool as dq, flattenTreeGridRows as dr, formatBadgeCount as ds, fullName as dt, generateClipPath as du, generateTransform as dv, getClassList as dw, getProperty as dx, getScrollParent as dy, getTierFromPreviewPath as dz, ASSET_BASE_URL as e, toAttrNumber as e$, linkToNav as e0, loadingActions as e1, mInterceptor as e2, manualValidation as e3, matchFieldValidation as e4, maxLengthValidation as e5, maxValidation as e6, mergePlatformNav as e7, mergeUnique as e8, mergeUniqueBy as e9, provideNavWidgets as eA, provideOverlayWidgets as eB, providePlatformNavWidgets as eC, provideSearch as eD, provideSizeContext as eE, provideUserTabs as eF, publicGuard as eG, readFieldPatterns as eH, renderAddress as eI, requiredValidation as eJ, resolveConfigAsset as eK, resolveIconSize as eL, resolvePallet as eM, resolvePatternRules as eN, resolveSize as eO, rgbToHex as eP, rgbToHsl as eQ, rowHasChildren as eR, samePatterns as eS, segmentsToNavId as eT, setProperty as eU, setTreeGridChildren as eV, settingsWidgets as eW, shouldShowBadge as eX, splitNavId as eY, stringToColor as eZ, toAttrBool as e_, mergeUniqueWith as ea, minAgeValidation as eb, minLengthValidation as ec, minValidation as ed, miniMarkToHtml as ee, navIdChain as ef, navIdFor as eg, navIdSegment as eh, navIdToRoutePath as ei, navIdToSegments as ej, navToId as ek, parentNavId as el, parseAddress as em, parseColor as en, parsePatternNames as eo, patternValidation as ep, patternsValidation as eq, platformNavWidgets as er, privateGuard as es, processImageToSvg as et, provideAppContext as eu, provideMagAppConfig as ev, provideMagWcConfig as ew, provideMagWcRoutes as ex, provideModalComponents as ey, provideMurlUrlSerializer as ez, AccordionBodyDirective as f, toCssLength as f0, toHostNavId as f1, toLength$1 as f2, toLocalNavId as f3, toggleTreeGridRow as f4, unfetchedPlatformNav as f5, urlValidation as f6, AccordionComponent as g, AccordionGroupComponent as h, ActionComponent as i, AnimatedGraphsComponent as j, AppCardComponent as k, AppRelationType as l, AppTileComponent as m, AssetStore as n, AssetUrlPipe as o, Assets as p, AuthActivityPageComponent as q, AuthApiService as r, AuthStore as s, AutosizeDirective as t, BadgeComponent as u, BandingComponent as v, BaseArrayInputComponent as w, BaseRootWebComponent as x, BaseWebComponent as y, ButtonGroupComponent as z };
32189
- //# sourceMappingURL=magmonium-one-magmonium-one-2Ftz8M59.mjs.map
32284
+ //# sourceMappingURL=magmonium-one-magmonium-one-t9NNhs-J.mjs.map