@magmonium/one 0.2.99 → 0.3.1

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.
Files changed (28) hide show
  1. package/assets/docs/en/app-release.md +55 -0
  2. package/assets/i18n/en.json +30 -0
  3. package/assets/icons/bold.svg +4 -0
  4. package/assets/icons/heading.svg +6 -0
  5. package/assets/icons/italic.svg +5 -0
  6. package/assets/icons/link.svg +4 -0
  7. package/assets/icons/list.svg +8 -0
  8. package/assets/icons/quote.svg +4 -0
  9. package/assets/icons/sparkles.svg +5 -0
  10. package/assets/icons/strikethrough.svg +5 -0
  11. package/assets/icons/svg.json +10 -0
  12. package/assets/icons/table.svg +6 -0
  13. package/assets/icons/wand.svg +6 -0
  14. package/assets/index.json +1 -1
  15. package/fesm2022/{magmonium-one-image-editor-BWrlxgdY.mjs → magmonium-one-image-editor-CPzYCC_n.mjs} +2 -2
  16. package/fesm2022/{magmonium-one-image-editor-BWrlxgdY.mjs.map → magmonium-one-image-editor-CPzYCC_n.mjs.map} +1 -1
  17. package/fesm2022/{magmonium-one-magmonium-one-C_-B9_Hl.mjs → magmonium-one-magmonium-one-BXlnho4e.mjs} +1034 -24
  18. package/fesm2022/magmonium-one-magmonium-one-BXlnho4e.mjs.map +1 -0
  19. package/fesm2022/{magmonium-one-otp-CEFYwChx.mjs → magmonium-one-otp-C6RUv8ws.mjs} +2 -2
  20. package/fesm2022/{magmonium-one-otp-CEFYwChx.mjs.map → magmonium-one-otp-C6RUv8ws.mjs.map} +1 -1
  21. package/fesm2022/{magmonium-one-password-BSd9P128.mjs → magmonium-one-password-Cz9Ig8UG.mjs} +2 -2
  22. package/fesm2022/{magmonium-one-password-BSd9P128.mjs.map → magmonium-one-password-Cz9Ig8UG.mjs.map} +1 -1
  23. package/fesm2022/{magmonium-one-toggle-DQuHT48L.mjs → magmonium-one-toggle-BNVDl--Z.mjs} +2 -2
  24. package/fesm2022/{magmonium-one-toggle-DQuHT48L.mjs.map → magmonium-one-toggle-BNVDl--Z.mjs.map} +1 -1
  25. package/fesm2022/magmonium-one.mjs +1 -1
  26. package/package.json +6 -5
  27. package/types/magmonium-one.d.ts +351 -4
  28. package/fesm2022/magmonium-one-magmonium-one-C_-B9_Hl.mjs.map +0 -1
@@ -12,6 +12,7 @@ import * as i1 from '@angular/common';
12
12
  import { APP_BASE_HREF, Location, NgOptimizedImage, IMAGE_LOADER, NgTemplateOutlet, CommonModule, NgComponentOutlet, DecimalPipe, NgClass, DatePipe, NgStyle } from '@angular/common';
13
13
  import { FormField, email, required, validate, minLength, maxLength, min, max, apply, form } from '@angular/forms/signals';
14
14
  import { createCustomElement } from '@angular/elements';
15
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
15
16
  import { bootstrapApplication, DomSanitizer } from '@angular/platform-browser';
16
17
  import { provideAnimations } from '@angular/platform-browser/animations';
17
18
 
@@ -35,6 +36,8 @@ var Assets;
35
36
  Assets["SVG"] = "svg";
36
37
  Assets["PNG"] = "png";
37
38
  Assets["CSS"] = "css";
39
+ /** A DocAsset — markdown, copied verbatim rather than compiled. */
40
+ Assets["MD"] = "md";
38
41
  })(Assets || (Assets = {}));
39
42
 
40
43
  // Single source for the layout primitives' asset subFolder — each
@@ -223,8 +226,11 @@ class HttpService {
223
226
  params: this.toParams(params),
224
227
  });
225
228
  }
226
- deleteWithBody(domain, path, body, version) {
227
- return this.http.delete(this.createUrl(domain, path, version), { body });
229
+ deleteWithBody(domain, path, body, version, params) {
230
+ return this.http.delete(this.createUrl(domain, path, version), {
231
+ body,
232
+ params: this.toParams(params),
233
+ });
228
234
  }
229
235
  setUrl(url) {
230
236
  this.url = url;
@@ -253,6 +259,10 @@ class HttpService {
253
259
  blob(url) {
254
260
  return this.http.get(url, { responseType: 'blob' });
255
261
  }
262
+ /** A whole url read as text — what a document fetched from a Remote needs. */
263
+ text(url) {
264
+ return this.http.get(url, { responseType: 'text' });
265
+ }
256
266
  wc(link, filePath) {
257
267
  if (isLocalhost) {
258
268
  return this.http.get(`/local-dist/m-${link}-wc/${filePath.join('/')}`);
@@ -357,6 +367,7 @@ class HttpService {
357
367
  switch (assets) {
358
368
  case Assets.SVG:
359
369
  case Assets.CSS:
370
+ case Assets.MD:
360
371
  responseType = 'text';
361
372
  break;
362
373
  case Assets.PNG:
@@ -5039,6 +5050,7 @@ const SHARED_ICONS = [
5039
5050
  'arrow-up',
5040
5051
  'arrow_back',
5041
5052
  'bell',
5053
+ 'bold',
5042
5054
  'books',
5043
5055
  'calendar',
5044
5056
  'calendar-open',
@@ -5079,6 +5091,7 @@ const SHARED_ICONS = [
5079
5091
  'folder',
5080
5092
  'games',
5081
5093
  'gear',
5094
+ 'heading',
5082
5095
  'heart',
5083
5096
  'heart_filled',
5084
5097
  'help',
@@ -5087,9 +5100,12 @@ const SHARED_ICONS = [
5087
5100
  'install',
5088
5101
  'instrument',
5089
5102
  'investments',
5103
+ 'italic',
5090
5104
  'language',
5091
5105
  'layers',
5092
5106
  'layouts',
5107
+ 'link',
5108
+ 'list',
5093
5109
  'loading',
5094
5110
  'loading-bars',
5095
5111
  'loading-dots',
@@ -5113,6 +5129,7 @@ const SHARED_ICONS = [
5113
5129
  'play',
5114
5130
  'plus',
5115
5131
  'posts',
5132
+ 'quote',
5116
5133
  'redo',
5117
5134
  'reload',
5118
5135
  'reset',
@@ -5126,11 +5143,14 @@ const SHARED_ICONS = [
5126
5143
  'smartphone',
5127
5144
  'sort-alpha-asc',
5128
5145
  'sort-alpha-desc',
5146
+ 'sparkles',
5129
5147
  'square',
5130
5148
  'star',
5131
5149
  'store',
5132
5150
  'strategies',
5151
+ 'strikethrough',
5133
5152
  'sun',
5153
+ 'table',
5134
5154
  'tablet',
5135
5155
  'target',
5136
5156
  'theme',
@@ -5144,6 +5164,7 @@ const SHARED_ICONS = [
5144
5164
  'wallet_manager',
5145
5165
  'wallet_owner',
5146
5166
  'wallet_shareholder',
5167
+ 'wand',
5147
5168
  'wifi',
5148
5169
  'x',
5149
5170
  'zap',
@@ -7347,7 +7368,7 @@ class SectionFormItemComponent extends ConfigComponent {
7347
7368
  break;
7348
7369
  }
7349
7370
  case InputType.TOGGLE: {
7350
- const { ToggleInputComponent } = await import('./magmonium-one-toggle-DQuHT48L.mjs');
7371
+ const { ToggleInputComponent } = await import('./magmonium-one-toggle-BNVDl--Z.mjs');
7351
7372
  this.createDynamicComponent(seq, ToggleInputComponent, [], true);
7352
7373
  break;
7353
7374
  }
@@ -7359,12 +7380,12 @@ class SectionFormItemComponent extends ConfigComponent {
7359
7380
  break;
7360
7381
  }
7361
7382
  case InputType.PASSWORD: {
7362
- const { PasswordInputComponent } = await import('./magmonium-one-password-BSd9P128.mjs');
7383
+ const { PasswordInputComponent } = await import('./magmonium-one-password-Cz9Ig8UG.mjs');
7363
7384
  this.createDynamicComponent(seq, PasswordInputComponent);
7364
7385
  break;
7365
7386
  }
7366
7387
  case InputType.OTP: {
7367
- const { OtpInputComponent } = await import('./magmonium-one-otp-CEFYwChx.mjs');
7388
+ const { OtpInputComponent } = await import('./magmonium-one-otp-C6RUv8ws.mjs');
7368
7389
  this.createDynamicComponent(seq, OtpInputComponent);
7369
7390
  break;
7370
7391
  }
@@ -10194,13 +10215,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
10194
10215
  class BaseTextInputComponent extends BaseInputComponent {
10195
10216
  value = model();
10196
10217
  inputElement = viewChild('inputElement', ...(ngDevMode ? [{ debugName: "inputElement" }] : /* istanbul ignore next */ []));
10218
+ document = inject(DOCUMENT);
10219
+ /** The element this field has already claimed the caret for, once. */
10220
+ autofocused;
10197
10221
  constructor() {
10198
10222
  super();
10199
10223
  afterRenderEffect(() => {
10200
10224
  const element = this.inputElement();
10201
- if (this.focused() && element) {
10202
- element.nativeElement.focus();
10203
- }
10225
+ if (!this.focused() || !element)
10226
+ return;
10227
+ const node = element.nativeElement;
10228
+ // Once per element. A form that re-renders — an inspector rebuilt on
10229
+ // every store change — mounts a fresh input each time, and a focus per
10230
+ // mount is a focus per keystroke somewhere else on the screen.
10231
+ if (this.autofocused === node)
10232
+ return;
10233
+ // And never out of a surface the User is already working in. Same rule
10234
+ // the form makes for its own first field: a caret that has been placed
10235
+ // is theirs, not the next form's to take.
10236
+ const active = this.document.activeElement;
10237
+ if (active && active !== this.document.body && active !== node)
10238
+ return;
10239
+ this.autofocused = node;
10240
+ node.focus();
10204
10241
  });
10205
10242
  }
10206
10243
  isFocused = signal(false, ...(ngDevMode ? [{ debugName: "isFocused" }] : /* istanbul ignore next */ []));
@@ -15957,7 +15994,7 @@ class SectionComponent extends ConfigComponent {
15957
15994
  }
15958
15995
  </div>
15959
15996
  </div>
15960
- `, 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%;min-height:var(--m-section-min-height, 5em);container-type:inline-size;container-name:mag-grid;--_section-px: 1rem;--_section-pt: 1.5rem;--_section-pb: 0rem;--_section-header-py: 1rem}:host(.has-max-height){height:var(--m-section-max-height);overflow:auto}:host(.is-with-border){border:var(--m-section-border, 1px solid var(--m-backdrop-border));box-sizing:border-box}:host(.is-sandwich-border){border-block:var(--m-section-border, 1px solid var(--m-backdrop-border));box-sizing:border-box}.m-section__collapsible{display:grid;grid-template-rows:1fr;transition:grid-template-rows .3s cubic-bezier(.4,0,.2,1),opacity .3s cubic-bezier(.4,0,.2,1);opacity:1}.m-section__collapsible.is-collapsed{grid-template-rows:0fr;opacity:0;pointer-events:none}.m-section__collapsible-content{min-height:0;overflow:hidden}.m-section__body{display:flex;flex-wrap:wrap;align-content:flex-start;align-items:stretch;max-width:var(--m-section-max-width);margin-inline:auto}:host(.align-left) .m-section__body{margin-inline-start:0;margin-inline-end:auto}:host(.align-right) .m-section__body{margin-inline-start:auto;margin-inline-end:0;justify-content:flex-end}:host(.align-center) .m-section__body{margin-inline:auto;justify-content:center}:host(.align-x-left) .m-section__body{justify-content:flex-start}:host(.align-x-center) .m-section__body{justify-content:center}:host(.align-x-right) .m-section__body{justify-content:flex-end}:host(.align-y-top) .m-section__body{align-items:flex-start;align-content:flex-start}:host(.align-y-center) .m-section__body{align-items:center;align-content:center}:host(.align-y-bottom) .m-section__body{align-items:flex-end;align-content:flex-end}:host(.is-full-height){height:100vh;min-height:100vh;overflow:auto}:host(.is-full-height) .m-section__body{flex:1;height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
15997
+ `, 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%;min-height:var(--m-section-min-height, 5em);container-type:inline-size;container-name:mag-grid;--_section-px: 1rem;--_section-pt: 1.5rem;--_section-pb: 0rem;--_section-header-py: 1rem}:host(.has-max-height){height:var(--m-section-max-height);overflow:auto}:host(.is-with-border){border:var(--m-section-border, 1px solid var(--m-backdrop-border));box-sizing:border-box}:host(.is-sandwich-border){border-block:var(--m-section-border, 1px solid var(--m-backdrop-border));box-sizing:border-box}.m-section__collapsible{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:1fr;transition:grid-template-rows .3s cubic-bezier(.4,0,.2,1),opacity .3s cubic-bezier(.4,0,.2,1);opacity:1}.m-section__collapsible.is-collapsed{grid-template-rows:0fr;opacity:0;pointer-events:none}.m-section__collapsible-content{min-height:0;min-width:0;overflow:clip}.m-section__body{display:flex;flex-wrap:wrap;align-content:flex-start;align-items:stretch;max-width:var(--m-section-max-width);margin-inline:auto}:host(.align-left) .m-section__body{margin-inline-start:0;margin-inline-end:auto}:host(.align-right) .m-section__body{margin-inline-start:auto;margin-inline-end:0;justify-content:flex-end}:host(.align-center) .m-section__body{margin-inline:auto;justify-content:center}:host(.align-x-left) .m-section__body{justify-content:flex-start}:host(.align-x-center) .m-section__body{justify-content:center}:host(.align-x-right) .m-section__body{justify-content:flex-end}:host(.align-y-top) .m-section__body{align-items:flex-start;align-content:flex-start}:host(.align-y-center) .m-section__body{align-items:center;align-content:center}:host(.align-y-bottom) .m-section__body{align-items:flex-end;align-content:flex-end}:host(.is-full-height){height:100vh;min-height:100vh;overflow:auto}:host(.is-full-height) .m-section__body{flex:1;height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
15961
15998
  }
15962
15999
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SectionComponent, decorators: [{
15963
16000
  type: Component,
@@ -16061,7 +16098,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
16061
16098
  };
16062
16099
  },
16063
16100
  },
16064
- ], 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%;min-height:var(--m-section-min-height, 5em);container-type:inline-size;container-name:mag-grid;--_section-px: 1rem;--_section-pt: 1.5rem;--_section-pb: 0rem;--_section-header-py: 1rem}:host(.has-max-height){height:var(--m-section-max-height);overflow:auto}:host(.is-with-border){border:var(--m-section-border, 1px solid var(--m-backdrop-border));box-sizing:border-box}:host(.is-sandwich-border){border-block:var(--m-section-border, 1px solid var(--m-backdrop-border));box-sizing:border-box}.m-section__collapsible{display:grid;grid-template-rows:1fr;transition:grid-template-rows .3s cubic-bezier(.4,0,.2,1),opacity .3s cubic-bezier(.4,0,.2,1);opacity:1}.m-section__collapsible.is-collapsed{grid-template-rows:0fr;opacity:0;pointer-events:none}.m-section__collapsible-content{min-height:0;overflow:hidden}.m-section__body{display:flex;flex-wrap:wrap;align-content:flex-start;align-items:stretch;max-width:var(--m-section-max-width);margin-inline:auto}:host(.align-left) .m-section__body{margin-inline-start:0;margin-inline-end:auto}:host(.align-right) .m-section__body{margin-inline-start:auto;margin-inline-end:0;justify-content:flex-end}:host(.align-center) .m-section__body{margin-inline:auto;justify-content:center}:host(.align-x-left) .m-section__body{justify-content:flex-start}:host(.align-x-center) .m-section__body{justify-content:center}:host(.align-x-right) .m-section__body{justify-content:flex-end}:host(.align-y-top) .m-section__body{align-items:flex-start;align-content:flex-start}:host(.align-y-center) .m-section__body{align-items:center;align-content:center}:host(.align-y-bottom) .m-section__body{align-items:flex-end;align-content:flex-end}:host(.is-full-height){height:100vh;min-height:100vh;overflow:auto}:host(.is-full-height) .m-section__body{flex:1;height:100%}\n"] }]
16101
+ ], 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%;min-height:var(--m-section-min-height, 5em);container-type:inline-size;container-name:mag-grid;--_section-px: 1rem;--_section-pt: 1.5rem;--_section-pb: 0rem;--_section-header-py: 1rem}:host(.has-max-height){height:var(--m-section-max-height);overflow:auto}:host(.is-with-border){border:var(--m-section-border, 1px solid var(--m-backdrop-border));box-sizing:border-box}:host(.is-sandwich-border){border-block:var(--m-section-border, 1px solid var(--m-backdrop-border));box-sizing:border-box}.m-section__collapsible{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:1fr;transition:grid-template-rows .3s cubic-bezier(.4,0,.2,1),opacity .3s cubic-bezier(.4,0,.2,1);opacity:1}.m-section__collapsible.is-collapsed{grid-template-rows:0fr;opacity:0;pointer-events:none}.m-section__collapsible-content{min-height:0;min-width:0;overflow:clip}.m-section__body{display:flex;flex-wrap:wrap;align-content:flex-start;align-items:stretch;max-width:var(--m-section-max-width);margin-inline:auto}:host(.align-left) .m-section__body{margin-inline-start:0;margin-inline-end:auto}:host(.align-right) .m-section__body{margin-inline-start:auto;margin-inline-end:0;justify-content:flex-end}:host(.align-center) .m-section__body{margin-inline:auto;justify-content:center}:host(.align-x-left) .m-section__body{justify-content:flex-start}:host(.align-x-center) .m-section__body{justify-content:center}:host(.align-x-right) .m-section__body{justify-content:flex-end}:host(.align-y-top) .m-section__body{align-items:flex-start;align-content:flex-start}:host(.align-y-center) .m-section__body{align-items:center;align-content:center}:host(.align-y-bottom) .m-section__body{align-items:flex-end;align-content:flex-end}:host(.is-full-height){height:100vh;min-height:100vh;overflow:auto}:host(.is-full-height) .m-section__body{flex:1;height:100%}\n"] }]
16065
16102
  }], ctorParameters: () => [], propDecorators: { header: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionHeaderComponent), { isSignal: true }] }], badges: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionBadgesComponent), { isSignal: true }] }], toggle: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionToggleComponent), { isSignal: true }] }], action: [{ type: i0.ContentChild, args: [i0.forwardRef(() => ActionComponent), { isSignal: true }] }], back: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionBackComponent), { isSignal: true }] }], search: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionSearchComponent), { isSignal: true }] }], filter: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionFilterComponent), { isSignal: true }] }], filterGroup: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionFilterGroupComponent), { isSignal: true }] }], stepper: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionStepperComponent), { isSignal: true }] }], hero: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionHeroComponent), { isSignal: true }] }], jumbotron: [{ type: i0.ContentChild, args: [i0.forwardRef(() => JumbotronComponent), { isSignal: true }] }], carousel: [{ type: i0.ContentChild, args: [i0.forwardRef(() => CarouselComponent), { isSignal: true }] }], footer: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionFooterComponent), { isSignal: true }] }], pagination: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionPaginationComponent), { isSignal: true }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], maxWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxWidth", required: false }] }], heightMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "heightMode", required: false }] }], maxHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxHeight", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], alignX: [{ type: i0.Input, args: [{ isSignal: true, alias: "alignX", required: false }] }], alignY: [{ type: i0.Input, args: [{ isSignal: true, alias: "alignY", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], inView: [{ type: i0.Output, args: ["inView"] }] } });
16066
16103
 
16067
16104
  class UserApiService {
@@ -18287,7 +18324,7 @@ class ColComponent extends ConfigComponent {
18287
18324
  sectionContext = inject(SECTION_CONTEXT, { optional: true });
18288
18325
  noBorder = computed(() => this.sectionContext?.variant() === 'noBorder', ...(ngDevMode ? [{ debugName: "noBorder" }] : /* istanbul ignore next */ []));
18289
18326
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ColComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
18290
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.9", type: ColComponent, isStandalone: true, selector: "m-col", inputs: { xs: { classPropertyName: "xs", publicName: "xs", isSignal: true, isRequired: false, transformFunction: null }, sm: { classPropertyName: "sm", publicName: "sm", isSignal: true, isRequired: false, transformFunction: null }, md: { classPropertyName: "md", publicName: "md", isSignal: true, isRequired: false, transformFunction: null }, lg: { classPropertyName: "lg", publicName: "lg", isSignal: true, isRequired: false, transformFunction: null }, xl: { classPropertyName: "xl", publicName: "xl", isSignal: true, isRequired: false, transformFunction: null }, xxl: { classPropertyName: "xxl", publicName: "xxl", isSignal: true, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: true, isRequired: false, transformFunction: null }, fullHeight: { classPropertyName: "fullHeight", publicName: "fullHeight", isSignal: true, isRequired: false, transformFunction: null }, padding: { classPropertyName: "padding", publicName: "padding", isSignal: true, isRequired: false, transformFunction: null }, paddingX: { classPropertyName: "paddingX", publicName: "paddingX", isSignal: true, isRequired: false, transformFunction: null }, paddingY: { classPropertyName: "paddingY", publicName: "paddingY", isSignal: true, isRequired: false, transformFunction: null }, alignX: { classPropertyName: "alignX", publicName: "alignX", isSignal: true, isRequired: false, transformFunction: null }, alignY: { classPropertyName: "alignY", publicName: "alignY", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "class.is-design-mode": "isDesignMode", "class.is-full-height": "resolvedFullHeight()" }, classAttribute: "m-col" }, usesInheritance: true, ngImport: i0, template: '<ng-content />', 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;grid-column:span 12;box-sizing:border-box;width:100%}:host(.is-full-height){height:100%}:host(.is-design-mode){min-height:4em}:host.has-padding-x{padding-inline:var(--col-px, var(--section-px, var(--_section-px, 1rem)))}:host.has-padding-y{padding-block:var(--col-py, var(--section-pt, var(--_section-pt, 1.5rem)))}:host(:not(:last-child)){border-right:1px solid var(--m-backdrop-border)}@container mag-grid (max-width: 575.98px){:host(:not(:last-child)){border-right:none;border-bottom:1px solid var(--m-backdrop-border)}}:host(.no-border){border-right:none}@container mag-grid (max-width: 575.98px){:host(.no-border){border-bottom:none}}:host.full-width{grid-column:span 12!important;width:calc(100% + 2 * var(--section-px, var(--_section-px, 1rem)));margin-inline:calc(-1 * var(--section-px, var(--_section-px, 1rem)))}:host.col-xs-1{grid-column:span 1;width:calc(100% * 1 / 12)}:host.col-xs-2{grid-column:span 2;width:calc(100% * 2 / 12)}:host.col-xs-3{grid-column:span 3;width:25%}:host.col-xs-4{grid-column:span 4;width:calc(100% * 4 / 12)}:host.col-xs-5{grid-column:span 5;width:calc(100% * 5 / 12)}:host.col-xs-6{grid-column:span 6;width:50%}:host.col-xs-7{grid-column:span 7;width:calc(100% * 7 / 12)}:host.col-xs-8{grid-column:span 8;width:calc(100% * 8 / 12)}:host.col-xs-9{grid-column:span 9;width:75%}:host.col-xs-10{grid-column:span 10;width:calc(100% * 10 / 12)}:host.col-xs-11{grid-column:span 11;width:calc(100% * 11 / 12)}:host.col-xs-12{grid-column:span 12;width:100%}@container mag-grid (min-width: 576px){:host.col-sm-1{grid-column:span 1;width:calc(100% * 1 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-2{grid-column:span 2;width:calc(100% * 2 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-3{grid-column:span 3;width:25%}}@container mag-grid (min-width: 576px){:host.col-sm-4{grid-column:span 4;width:calc(100% * 4 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-5{grid-column:span 5;width:calc(100% * 5 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-6{grid-column:span 6;width:50%}}@container mag-grid (min-width: 576px){:host.col-sm-7{grid-column:span 7;width:calc(100% * 7 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-8{grid-column:span 8;width:calc(100% * 8 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-9{grid-column:span 9;width:75%}}@container mag-grid (min-width: 576px){:host.col-sm-10{grid-column:span 10;width:calc(100% * 10 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-11{grid-column:span 11;width:calc(100% * 11 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-12{grid-column:span 12;width:100%}}@container mag-grid (min-width: 768px){:host.col-md-1{grid-column:span 1;width:calc(100% * 1 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-2{grid-column:span 2;width:calc(100% * 2 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-3{grid-column:span 3;width:25%}}@container mag-grid (min-width: 768px){:host.col-md-4{grid-column:span 4;width:calc(100% * 4 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-5{grid-column:span 5;width:calc(100% * 5 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-6{grid-column:span 6;width:50%}}@container mag-grid (min-width: 768px){:host.col-md-7{grid-column:span 7;width:calc(100% * 7 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-8{grid-column:span 8;width:calc(100% * 8 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-9{grid-column:span 9;width:75%}}@container mag-grid (min-width: 768px){:host.col-md-10{grid-column:span 10;width:calc(100% * 10 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-11{grid-column:span 11;width:calc(100% * 11 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-12{grid-column:span 12;width:100%}}@container mag-grid (min-width: 992px){:host.col-lg-1{grid-column:span 1;width:calc(100% * 1 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-2{grid-column:span 2;width:calc(100% * 2 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-3{grid-column:span 3;width:25%}}@container mag-grid (min-width: 992px){:host.col-lg-4{grid-column:span 4;width:calc(100% * 4 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-5{grid-column:span 5;width:calc(100% * 5 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-6{grid-column:span 6;width:50%}}@container mag-grid (min-width: 992px){:host.col-lg-7{grid-column:span 7;width:calc(100% * 7 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-8{grid-column:span 8;width:calc(100% * 8 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-9{grid-column:span 9;width:75%}}@container mag-grid (min-width: 992px){:host.col-lg-10{grid-column:span 10;width:calc(100% * 10 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-11{grid-column:span 11;width:calc(100% * 11 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-12{grid-column:span 12;width:100%}}@container mag-grid (min-width: 1200px){:host.col-xl-1{grid-column:span 1;width:calc(100% * 1 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-2{grid-column:span 2;width:calc(100% * 2 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-3{grid-column:span 3;width:25%}}@container mag-grid (min-width: 1200px){:host.col-xl-4{grid-column:span 4;width:calc(100% * 4 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-5{grid-column:span 5;width:calc(100% * 5 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-6{grid-column:span 6;width:50%}}@container mag-grid (min-width: 1200px){:host.col-xl-7{grid-column:span 7;width:calc(100% * 7 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-8{grid-column:span 8;width:calc(100% * 8 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-9{grid-column:span 9;width:75%}}@container mag-grid (min-width: 1200px){:host.col-xl-10{grid-column:span 10;width:calc(100% * 10 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-11{grid-column:span 11;width:calc(100% * 11 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-12{grid-column:span 12;width:100%}}@container mag-grid (min-width: 1400px){:host.col-xxl-1{grid-column:span 1;width:calc(100% * 1 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-2{grid-column:span 2;width:calc(100% * 2 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-3{grid-column:span 3;width:25%}}@container mag-grid (min-width: 1400px){:host.col-xxl-4{grid-column:span 4;width:calc(100% * 4 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-5{grid-column:span 5;width:calc(100% * 5 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-6{grid-column:span 6;width:50%}}@container mag-grid (min-width: 1400px){:host.col-xxl-7{grid-column:span 7;width:calc(100% * 7 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-8{grid-column:span 8;width:calc(100% * 8 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-9{grid-column:span 9;width:75%}}@container mag-grid (min-width: 1400px){:host.col-xxl-10{grid-column:span 10;width:calc(100% * 10 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-11{grid-column:span 11;width:calc(100% * 11 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-12{grid-column:span 12;width:100%}}:host.align-x-left,:host.align-x-center,:host.align-x-right,:host.align-y-top,:host.align-y-center,:host.align-y-bottom{display:flex;flex-direction:column}:host.align-x-left{align-items:flex-start}:host.align-x-center{align-items:center}:host.align-x-right{align-items:flex-end}:host.align-y-top{justify-content:flex-start}:host.align-y-center{justify-content:center}:host.align-y-bottom{justify-content:flex-end}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
18327
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.9", type: ColComponent, isStandalone: true, selector: "m-col", inputs: { xs: { classPropertyName: "xs", publicName: "xs", isSignal: true, isRequired: false, transformFunction: null }, sm: { classPropertyName: "sm", publicName: "sm", isSignal: true, isRequired: false, transformFunction: null }, md: { classPropertyName: "md", publicName: "md", isSignal: true, isRequired: false, transformFunction: null }, lg: { classPropertyName: "lg", publicName: "lg", isSignal: true, isRequired: false, transformFunction: null }, xl: { classPropertyName: "xl", publicName: "xl", isSignal: true, isRequired: false, transformFunction: null }, xxl: { classPropertyName: "xxl", publicName: "xxl", isSignal: true, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: true, isRequired: false, transformFunction: null }, fullHeight: { classPropertyName: "fullHeight", publicName: "fullHeight", isSignal: true, isRequired: false, transformFunction: null }, padding: { classPropertyName: "padding", publicName: "padding", isSignal: true, isRequired: false, transformFunction: null }, paddingX: { classPropertyName: "paddingX", publicName: "paddingX", isSignal: true, isRequired: false, transformFunction: null }, paddingY: { classPropertyName: "paddingY", publicName: "paddingY", isSignal: true, isRequired: false, transformFunction: null }, alignX: { classPropertyName: "alignX", publicName: "alignX", isSignal: true, isRequired: false, transformFunction: null }, alignY: { classPropertyName: "alignY", publicName: "alignY", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "class.is-design-mode": "isDesignMode", "class.is-full-height": "resolvedFullHeight()" }, classAttribute: "m-col" }, usesInheritance: true, ngImport: i0, template: '<ng-content />', 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;grid-column:span 12;box-sizing:border-box;width:100%;min-width:0}:host(.is-full-height){height:100%}:host(.is-design-mode){min-height:4em}:host.has-padding-x{padding-inline:var(--col-px, var(--section-px, var(--_section-px, 1rem)))}:host.has-padding-y{padding-block:var(--col-py, var(--section-pt, var(--_section-pt, 1.5rem)))}:host(:not(:last-child)){border-right:1px solid var(--m-backdrop-border)}@container mag-grid (max-width: 575.98px){:host(:not(:last-child)){border-right:none;border-bottom:1px solid var(--m-backdrop-border)}}:host(.no-border){border-right:none}@container mag-grid (max-width: 575.98px){:host(.no-border){border-bottom:none}}:host.full-width{grid-column:span 12!important;width:calc(100% + 2 * var(--section-px, var(--_section-px, 1rem)));margin-inline:calc(-1 * var(--section-px, var(--_section-px, 1rem)))}:host.col-xs-1{grid-column:span 1;width:calc(100% * 1 / 12)}:host.col-xs-2{grid-column:span 2;width:calc(100% * 2 / 12)}:host.col-xs-3{grid-column:span 3;width:25%}:host.col-xs-4{grid-column:span 4;width:calc(100% * 4 / 12)}:host.col-xs-5{grid-column:span 5;width:calc(100% * 5 / 12)}:host.col-xs-6{grid-column:span 6;width:50%}:host.col-xs-7{grid-column:span 7;width:calc(100% * 7 / 12)}:host.col-xs-8{grid-column:span 8;width:calc(100% * 8 / 12)}:host.col-xs-9{grid-column:span 9;width:75%}:host.col-xs-10{grid-column:span 10;width:calc(100% * 10 / 12)}:host.col-xs-11{grid-column:span 11;width:calc(100% * 11 / 12)}:host.col-xs-12{grid-column:span 12;width:100%}@container mag-grid (min-width: 576px){:host.col-sm-1{grid-column:span 1;width:calc(100% * 1 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-2{grid-column:span 2;width:calc(100% * 2 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-3{grid-column:span 3;width:25%}}@container mag-grid (min-width: 576px){:host.col-sm-4{grid-column:span 4;width:calc(100% * 4 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-5{grid-column:span 5;width:calc(100% * 5 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-6{grid-column:span 6;width:50%}}@container mag-grid (min-width: 576px){:host.col-sm-7{grid-column:span 7;width:calc(100% * 7 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-8{grid-column:span 8;width:calc(100% * 8 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-9{grid-column:span 9;width:75%}}@container mag-grid (min-width: 576px){:host.col-sm-10{grid-column:span 10;width:calc(100% * 10 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-11{grid-column:span 11;width:calc(100% * 11 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-12{grid-column:span 12;width:100%}}@container mag-grid (min-width: 768px){:host.col-md-1{grid-column:span 1;width:calc(100% * 1 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-2{grid-column:span 2;width:calc(100% * 2 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-3{grid-column:span 3;width:25%}}@container mag-grid (min-width: 768px){:host.col-md-4{grid-column:span 4;width:calc(100% * 4 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-5{grid-column:span 5;width:calc(100% * 5 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-6{grid-column:span 6;width:50%}}@container mag-grid (min-width: 768px){:host.col-md-7{grid-column:span 7;width:calc(100% * 7 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-8{grid-column:span 8;width:calc(100% * 8 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-9{grid-column:span 9;width:75%}}@container mag-grid (min-width: 768px){:host.col-md-10{grid-column:span 10;width:calc(100% * 10 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-11{grid-column:span 11;width:calc(100% * 11 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-12{grid-column:span 12;width:100%}}@container mag-grid (min-width: 992px){:host.col-lg-1{grid-column:span 1;width:calc(100% * 1 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-2{grid-column:span 2;width:calc(100% * 2 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-3{grid-column:span 3;width:25%}}@container mag-grid (min-width: 992px){:host.col-lg-4{grid-column:span 4;width:calc(100% * 4 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-5{grid-column:span 5;width:calc(100% * 5 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-6{grid-column:span 6;width:50%}}@container mag-grid (min-width: 992px){:host.col-lg-7{grid-column:span 7;width:calc(100% * 7 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-8{grid-column:span 8;width:calc(100% * 8 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-9{grid-column:span 9;width:75%}}@container mag-grid (min-width: 992px){:host.col-lg-10{grid-column:span 10;width:calc(100% * 10 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-11{grid-column:span 11;width:calc(100% * 11 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-12{grid-column:span 12;width:100%}}@container mag-grid (min-width: 1200px){:host.col-xl-1{grid-column:span 1;width:calc(100% * 1 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-2{grid-column:span 2;width:calc(100% * 2 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-3{grid-column:span 3;width:25%}}@container mag-grid (min-width: 1200px){:host.col-xl-4{grid-column:span 4;width:calc(100% * 4 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-5{grid-column:span 5;width:calc(100% * 5 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-6{grid-column:span 6;width:50%}}@container mag-grid (min-width: 1200px){:host.col-xl-7{grid-column:span 7;width:calc(100% * 7 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-8{grid-column:span 8;width:calc(100% * 8 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-9{grid-column:span 9;width:75%}}@container mag-grid (min-width: 1200px){:host.col-xl-10{grid-column:span 10;width:calc(100% * 10 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-11{grid-column:span 11;width:calc(100% * 11 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-12{grid-column:span 12;width:100%}}@container mag-grid (min-width: 1400px){:host.col-xxl-1{grid-column:span 1;width:calc(100% * 1 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-2{grid-column:span 2;width:calc(100% * 2 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-3{grid-column:span 3;width:25%}}@container mag-grid (min-width: 1400px){:host.col-xxl-4{grid-column:span 4;width:calc(100% * 4 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-5{grid-column:span 5;width:calc(100% * 5 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-6{grid-column:span 6;width:50%}}@container mag-grid (min-width: 1400px){:host.col-xxl-7{grid-column:span 7;width:calc(100% * 7 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-8{grid-column:span 8;width:calc(100% * 8 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-9{grid-column:span 9;width:75%}}@container mag-grid (min-width: 1400px){:host.col-xxl-10{grid-column:span 10;width:calc(100% * 10 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-11{grid-column:span 11;width:calc(100% * 11 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-12{grid-column:span 12;width:100%}}:host.align-x-left,:host.align-x-center,:host.align-x-right,:host.align-y-top,:host.align-y-center,:host.align-y-bottom{display:flex;flex-direction:column}:host.align-x-left{align-items:flex-start}:host.align-x-center{align-items:center}:host.align-x-right{align-items:flex-end}:host.align-y-top{justify-content:flex-start}:host.align-y-center{justify-content:center}:host.align-y-bottom{justify-content:flex-end}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
18291
18328
  }
18292
18329
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ColComponent, decorators: [{
18293
18330
  type: Component,
@@ -18296,7 +18333,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
18296
18333
  '[class]': 'classes()',
18297
18334
  '[class.is-design-mode]': 'isDesignMode',
18298
18335
  '[class.is-full-height]': 'resolvedFullHeight()',
18299
- }, 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;grid-column:span 12;box-sizing:border-box;width:100%}:host(.is-full-height){height:100%}:host(.is-design-mode){min-height:4em}:host.has-padding-x{padding-inline:var(--col-px, var(--section-px, var(--_section-px, 1rem)))}:host.has-padding-y{padding-block:var(--col-py, var(--section-pt, var(--_section-pt, 1.5rem)))}:host(:not(:last-child)){border-right:1px solid var(--m-backdrop-border)}@container mag-grid (max-width: 575.98px){:host(:not(:last-child)){border-right:none;border-bottom:1px solid var(--m-backdrop-border)}}:host(.no-border){border-right:none}@container mag-grid (max-width: 575.98px){:host(.no-border){border-bottom:none}}:host.full-width{grid-column:span 12!important;width:calc(100% + 2 * var(--section-px, var(--_section-px, 1rem)));margin-inline:calc(-1 * var(--section-px, var(--_section-px, 1rem)))}:host.col-xs-1{grid-column:span 1;width:calc(100% * 1 / 12)}:host.col-xs-2{grid-column:span 2;width:calc(100% * 2 / 12)}:host.col-xs-3{grid-column:span 3;width:25%}:host.col-xs-4{grid-column:span 4;width:calc(100% * 4 / 12)}:host.col-xs-5{grid-column:span 5;width:calc(100% * 5 / 12)}:host.col-xs-6{grid-column:span 6;width:50%}:host.col-xs-7{grid-column:span 7;width:calc(100% * 7 / 12)}:host.col-xs-8{grid-column:span 8;width:calc(100% * 8 / 12)}:host.col-xs-9{grid-column:span 9;width:75%}:host.col-xs-10{grid-column:span 10;width:calc(100% * 10 / 12)}:host.col-xs-11{grid-column:span 11;width:calc(100% * 11 / 12)}:host.col-xs-12{grid-column:span 12;width:100%}@container mag-grid (min-width: 576px){:host.col-sm-1{grid-column:span 1;width:calc(100% * 1 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-2{grid-column:span 2;width:calc(100% * 2 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-3{grid-column:span 3;width:25%}}@container mag-grid (min-width: 576px){:host.col-sm-4{grid-column:span 4;width:calc(100% * 4 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-5{grid-column:span 5;width:calc(100% * 5 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-6{grid-column:span 6;width:50%}}@container mag-grid (min-width: 576px){:host.col-sm-7{grid-column:span 7;width:calc(100% * 7 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-8{grid-column:span 8;width:calc(100% * 8 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-9{grid-column:span 9;width:75%}}@container mag-grid (min-width: 576px){:host.col-sm-10{grid-column:span 10;width:calc(100% * 10 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-11{grid-column:span 11;width:calc(100% * 11 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-12{grid-column:span 12;width:100%}}@container mag-grid (min-width: 768px){:host.col-md-1{grid-column:span 1;width:calc(100% * 1 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-2{grid-column:span 2;width:calc(100% * 2 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-3{grid-column:span 3;width:25%}}@container mag-grid (min-width: 768px){:host.col-md-4{grid-column:span 4;width:calc(100% * 4 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-5{grid-column:span 5;width:calc(100% * 5 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-6{grid-column:span 6;width:50%}}@container mag-grid (min-width: 768px){:host.col-md-7{grid-column:span 7;width:calc(100% * 7 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-8{grid-column:span 8;width:calc(100% * 8 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-9{grid-column:span 9;width:75%}}@container mag-grid (min-width: 768px){:host.col-md-10{grid-column:span 10;width:calc(100% * 10 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-11{grid-column:span 11;width:calc(100% * 11 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-12{grid-column:span 12;width:100%}}@container mag-grid (min-width: 992px){:host.col-lg-1{grid-column:span 1;width:calc(100% * 1 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-2{grid-column:span 2;width:calc(100% * 2 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-3{grid-column:span 3;width:25%}}@container mag-grid (min-width: 992px){:host.col-lg-4{grid-column:span 4;width:calc(100% * 4 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-5{grid-column:span 5;width:calc(100% * 5 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-6{grid-column:span 6;width:50%}}@container mag-grid (min-width: 992px){:host.col-lg-7{grid-column:span 7;width:calc(100% * 7 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-8{grid-column:span 8;width:calc(100% * 8 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-9{grid-column:span 9;width:75%}}@container mag-grid (min-width: 992px){:host.col-lg-10{grid-column:span 10;width:calc(100% * 10 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-11{grid-column:span 11;width:calc(100% * 11 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-12{grid-column:span 12;width:100%}}@container mag-grid (min-width: 1200px){:host.col-xl-1{grid-column:span 1;width:calc(100% * 1 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-2{grid-column:span 2;width:calc(100% * 2 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-3{grid-column:span 3;width:25%}}@container mag-grid (min-width: 1200px){:host.col-xl-4{grid-column:span 4;width:calc(100% * 4 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-5{grid-column:span 5;width:calc(100% * 5 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-6{grid-column:span 6;width:50%}}@container mag-grid (min-width: 1200px){:host.col-xl-7{grid-column:span 7;width:calc(100% * 7 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-8{grid-column:span 8;width:calc(100% * 8 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-9{grid-column:span 9;width:75%}}@container mag-grid (min-width: 1200px){:host.col-xl-10{grid-column:span 10;width:calc(100% * 10 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-11{grid-column:span 11;width:calc(100% * 11 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-12{grid-column:span 12;width:100%}}@container mag-grid (min-width: 1400px){:host.col-xxl-1{grid-column:span 1;width:calc(100% * 1 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-2{grid-column:span 2;width:calc(100% * 2 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-3{grid-column:span 3;width:25%}}@container mag-grid (min-width: 1400px){:host.col-xxl-4{grid-column:span 4;width:calc(100% * 4 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-5{grid-column:span 5;width:calc(100% * 5 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-6{grid-column:span 6;width:50%}}@container mag-grid (min-width: 1400px){:host.col-xxl-7{grid-column:span 7;width:calc(100% * 7 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-8{grid-column:span 8;width:calc(100% * 8 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-9{grid-column:span 9;width:75%}}@container mag-grid (min-width: 1400px){:host.col-xxl-10{grid-column:span 10;width:calc(100% * 10 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-11{grid-column:span 11;width:calc(100% * 11 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-12{grid-column:span 12;width:100%}}:host.align-x-left,:host.align-x-center,:host.align-x-right,:host.align-y-top,:host.align-y-center,:host.align-y-bottom{display:flex;flex-direction:column}:host.align-x-left{align-items:flex-start}:host.align-x-center{align-items:center}:host.align-x-right{align-items:flex-end}:host.align-y-top{justify-content:flex-start}:host.align-y-center{justify-content:center}:host.align-y-bottom{justify-content:flex-end}\n"] }]
18336
+ }, 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;grid-column:span 12;box-sizing:border-box;width:100%;min-width:0}:host(.is-full-height){height:100%}:host(.is-design-mode){min-height:4em}:host.has-padding-x{padding-inline:var(--col-px, var(--section-px, var(--_section-px, 1rem)))}:host.has-padding-y{padding-block:var(--col-py, var(--section-pt, var(--_section-pt, 1.5rem)))}:host(:not(:last-child)){border-right:1px solid var(--m-backdrop-border)}@container mag-grid (max-width: 575.98px){:host(:not(:last-child)){border-right:none;border-bottom:1px solid var(--m-backdrop-border)}}:host(.no-border){border-right:none}@container mag-grid (max-width: 575.98px){:host(.no-border){border-bottom:none}}:host.full-width{grid-column:span 12!important;width:calc(100% + 2 * var(--section-px, var(--_section-px, 1rem)));margin-inline:calc(-1 * var(--section-px, var(--_section-px, 1rem)))}:host.col-xs-1{grid-column:span 1;width:calc(100% * 1 / 12)}:host.col-xs-2{grid-column:span 2;width:calc(100% * 2 / 12)}:host.col-xs-3{grid-column:span 3;width:25%}:host.col-xs-4{grid-column:span 4;width:calc(100% * 4 / 12)}:host.col-xs-5{grid-column:span 5;width:calc(100% * 5 / 12)}:host.col-xs-6{grid-column:span 6;width:50%}:host.col-xs-7{grid-column:span 7;width:calc(100% * 7 / 12)}:host.col-xs-8{grid-column:span 8;width:calc(100% * 8 / 12)}:host.col-xs-9{grid-column:span 9;width:75%}:host.col-xs-10{grid-column:span 10;width:calc(100% * 10 / 12)}:host.col-xs-11{grid-column:span 11;width:calc(100% * 11 / 12)}:host.col-xs-12{grid-column:span 12;width:100%}@container mag-grid (min-width: 576px){:host.col-sm-1{grid-column:span 1;width:calc(100% * 1 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-2{grid-column:span 2;width:calc(100% * 2 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-3{grid-column:span 3;width:25%}}@container mag-grid (min-width: 576px){:host.col-sm-4{grid-column:span 4;width:calc(100% * 4 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-5{grid-column:span 5;width:calc(100% * 5 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-6{grid-column:span 6;width:50%}}@container mag-grid (min-width: 576px){:host.col-sm-7{grid-column:span 7;width:calc(100% * 7 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-8{grid-column:span 8;width:calc(100% * 8 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-9{grid-column:span 9;width:75%}}@container mag-grid (min-width: 576px){:host.col-sm-10{grid-column:span 10;width:calc(100% * 10 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-11{grid-column:span 11;width:calc(100% * 11 / 12)}}@container mag-grid (min-width: 576px){:host.col-sm-12{grid-column:span 12;width:100%}}@container mag-grid (min-width: 768px){:host.col-md-1{grid-column:span 1;width:calc(100% * 1 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-2{grid-column:span 2;width:calc(100% * 2 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-3{grid-column:span 3;width:25%}}@container mag-grid (min-width: 768px){:host.col-md-4{grid-column:span 4;width:calc(100% * 4 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-5{grid-column:span 5;width:calc(100% * 5 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-6{grid-column:span 6;width:50%}}@container mag-grid (min-width: 768px){:host.col-md-7{grid-column:span 7;width:calc(100% * 7 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-8{grid-column:span 8;width:calc(100% * 8 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-9{grid-column:span 9;width:75%}}@container mag-grid (min-width: 768px){:host.col-md-10{grid-column:span 10;width:calc(100% * 10 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-11{grid-column:span 11;width:calc(100% * 11 / 12)}}@container mag-grid (min-width: 768px){:host.col-md-12{grid-column:span 12;width:100%}}@container mag-grid (min-width: 992px){:host.col-lg-1{grid-column:span 1;width:calc(100% * 1 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-2{grid-column:span 2;width:calc(100% * 2 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-3{grid-column:span 3;width:25%}}@container mag-grid (min-width: 992px){:host.col-lg-4{grid-column:span 4;width:calc(100% * 4 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-5{grid-column:span 5;width:calc(100% * 5 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-6{grid-column:span 6;width:50%}}@container mag-grid (min-width: 992px){:host.col-lg-7{grid-column:span 7;width:calc(100% * 7 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-8{grid-column:span 8;width:calc(100% * 8 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-9{grid-column:span 9;width:75%}}@container mag-grid (min-width: 992px){:host.col-lg-10{grid-column:span 10;width:calc(100% * 10 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-11{grid-column:span 11;width:calc(100% * 11 / 12)}}@container mag-grid (min-width: 992px){:host.col-lg-12{grid-column:span 12;width:100%}}@container mag-grid (min-width: 1200px){:host.col-xl-1{grid-column:span 1;width:calc(100% * 1 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-2{grid-column:span 2;width:calc(100% * 2 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-3{grid-column:span 3;width:25%}}@container mag-grid (min-width: 1200px){:host.col-xl-4{grid-column:span 4;width:calc(100% * 4 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-5{grid-column:span 5;width:calc(100% * 5 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-6{grid-column:span 6;width:50%}}@container mag-grid (min-width: 1200px){:host.col-xl-7{grid-column:span 7;width:calc(100% * 7 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-8{grid-column:span 8;width:calc(100% * 8 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-9{grid-column:span 9;width:75%}}@container mag-grid (min-width: 1200px){:host.col-xl-10{grid-column:span 10;width:calc(100% * 10 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-11{grid-column:span 11;width:calc(100% * 11 / 12)}}@container mag-grid (min-width: 1200px){:host.col-xl-12{grid-column:span 12;width:100%}}@container mag-grid (min-width: 1400px){:host.col-xxl-1{grid-column:span 1;width:calc(100% * 1 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-2{grid-column:span 2;width:calc(100% * 2 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-3{grid-column:span 3;width:25%}}@container mag-grid (min-width: 1400px){:host.col-xxl-4{grid-column:span 4;width:calc(100% * 4 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-5{grid-column:span 5;width:calc(100% * 5 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-6{grid-column:span 6;width:50%}}@container mag-grid (min-width: 1400px){:host.col-xxl-7{grid-column:span 7;width:calc(100% * 7 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-8{grid-column:span 8;width:calc(100% * 8 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-9{grid-column:span 9;width:75%}}@container mag-grid (min-width: 1400px){:host.col-xxl-10{grid-column:span 10;width:calc(100% * 10 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-11{grid-column:span 11;width:calc(100% * 11 / 12)}}@container mag-grid (min-width: 1400px){:host.col-xxl-12{grid-column:span 12;width:100%}}:host.align-x-left,:host.align-x-center,:host.align-x-right,:host.align-y-top,:host.align-y-center,:host.align-y-bottom{display:flex;flex-direction:column}:host.align-x-left{align-items:flex-start}:host.align-x-center{align-items:center}:host.align-x-right{align-items:flex-end}:host.align-y-top{justify-content:flex-start}:host.align-y-center{justify-content:center}:host.align-y-bottom{justify-content:flex-end}\n"] }]
18300
18337
  }], propDecorators: { xs: [{ type: i0.Input, args: [{ isSignal: true, alias: "xs", required: false }] }], sm: [{ type: i0.Input, args: [{ isSignal: true, alias: "sm", required: false }] }], md: [{ type: i0.Input, args: [{ isSignal: true, alias: "md", required: false }] }], lg: [{ type: i0.Input, args: [{ isSignal: true, alias: "lg", required: false }] }], xl: [{ type: i0.Input, args: [{ isSignal: true, alias: "xl", required: false }] }], xxl: [{ type: i0.Input, args: [{ isSignal: true, alias: "xxl", required: false }] }], fullWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullWidth", required: false }] }], fullHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullHeight", required: false }] }], padding: [{ type: i0.Input, args: [{ isSignal: true, alias: "padding", required: false }] }], paddingX: [{ type: i0.Input, args: [{ isSignal: true, alias: "paddingX", required: false }] }], paddingY: [{ type: i0.Input, args: [{ isSignal: true, alias: "paddingY", required: false }] }], alignX: [{ type: i0.Input, args: [{ isSignal: true, alias: "alignX", required: false }] }], alignY: [{ type: i0.Input, args: [{ isSignal: true, alias: "alignY", required: false }] }] } });
18301
18338
 
18302
18339
  class SectionCardComponent extends ColComponent {
@@ -18730,6 +18767,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
18730
18767
  class TextareaInputComponent extends BaseTextInputComponent {
18731
18768
  iconSize = Size.SMALL;
18732
18769
  translateService = inject(TranslateService);
18770
+ /**
18771
+ * The element itself, for a host that edits the text around the caret — a
18772
+ * markdown toolbar wrapping a selection in `**` has to read what is selected
18773
+ * and hand the caret back afterwards, which no value binding can express.
18774
+ * The Field still owns the value; this is the selection, nothing else.
18775
+ */
18776
+ control = viewChild('inputElement', ...(ngDevMode ? [{ debugName: "control" }] : /* istanbul ignore next */ []));
18777
+ /** What is selected right now, or `undefined` before the field is drawn. */
18778
+ selection = () => {
18779
+ const element = this.control()?.nativeElement;
18780
+ if (!element)
18781
+ return undefined;
18782
+ return {
18783
+ value: element.value,
18784
+ start: element.selectionStart ?? 0,
18785
+ end: element.selectionEnd ?? 0,
18786
+ };
18787
+ };
18788
+ /**
18789
+ * Writes text and puts the caret where the caller says. The element is
18790
+ * written directly because the caret has to survive the write: a value that
18791
+ * arrives back through the binding lands with the caret at the end.
18792
+ */
18793
+ writeSelection = (value, start, end) => {
18794
+ const element = this.control()?.nativeElement;
18795
+ if (!element)
18796
+ return;
18797
+ element.value = value;
18798
+ element.focus();
18799
+ element.setSelectionRange(start, end);
18800
+ };
18733
18801
  placeholder(key) {
18734
18802
  return key ? this.translateService.translate(key) : '';
18735
18803
  }
@@ -18738,7 +18806,7 @@ class TextareaInputComponent extends BaseTextInputComponent {
18738
18806
  this.setValue(target?.value ?? '');
18739
18807
  }
18740
18808
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TextareaInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
18741
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: TextareaInputComponent, isStandalone: true, selector: "m-textarea-input", usesInheritance: true, ngImport: i0, template: `
18809
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: TextareaInputComponent, isStandalone: true, selector: "m-textarea-input", viewQueries: [{ propertyName: "control", first: true, predicate: ["inputElement"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
18742
18810
  @if (config(); as text) {
18743
18811
  @if (text.label) {
18744
18812
  <m-label
@@ -18749,7 +18817,7 @@ class TextareaInputComponent extends BaseTextInputComponent {
18749
18817
  [disabled]="disabled()"
18750
18818
  />
18751
18819
  }
18752
- <div class="input-wrapper">
18820
+ <div class="input-wrapper" [class.auto-grow]="!!text.autoGrow">
18753
18821
  @if (text.icon) {
18754
18822
  <m-icon
18755
18823
  [name]="text.icon"
@@ -18758,8 +18826,11 @@ class TextareaInputComponent extends BaseTextInputComponent {
18758
18826
  />
18759
18827
  }
18760
18828
  <textarea
18829
+ [class.auto-grow]="!!text.autoGrow"
18761
18830
  [id]="text.name ?? ''"
18762
18831
  [value]="value()"
18832
+ [attr.aria-label]="text.label ? null : placeholder(text.placeholder)"
18833
+ [attr.spellcheck]="text.spellcheck ?? null"
18763
18834
  #inputElement
18764
18835
  [class.error]="showErrors()"
18765
18836
  [class.has-icon]="!!text.icon"
@@ -18779,7 +18850,7 @@ class TextareaInputComponent extends BaseTextInputComponent {
18779
18850
  }
18780
18851
  }
18781
18852
  }
18782
- `, 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%;--m-textarea-background: var(--m-textarea-input-background, color-mix(in srgb, var(--m-focus) 2%, var(--m-background)));--m-textarea-padding: var(--m-textarea-input-padding, .375em calc(var(--input-size, 1em) * .5 * .7));--m-textarea-shadow: var(--m-textarea-input-shadow, none)}.input-wrapper{display:flex;align-items:center;background:var(--m-background);overflow:hidden;height:calc(var(--input-size, 1em) * 2);min-height:calc(var(--input-size, 1em) * 2);border-width:max(1px,var(--input-size, 1em) * .0625);border-radius:calc(var(--input-size, 1em) * .4);padding:calc(var(--input-size, 1em) * .5) calc(var(--input-size, 1em) * .5);gap:calc(var(--input-size, 1em) * .375);font-size:var(--input-size, 1em);border-width:var(--m-input-border-width, 1px);border-radius:var(--m-input-radius, calc(var(--input-size, 1em) * .5));height:calc(var(--input-size, 1em) * 2.25);min-height:calc(var(--input-size, 1em) * 2.25);padding-top:0;padding-bottom:0;border-color:var(--m-input-color, var(--m-mm));transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease,opacity .2s ease}.input-wrapper:hover:not(:disabled){background-color:color-mix(in srgb,var(--m-input-color, var(--m-mm)) 6%,transparent)}.input-wrapper:disabled{opacity:.6;cursor:not-allowed}.input-wrapper{border-style:solid;backdrop-filter:var(--m-text-input-backdrop-filter, none);-webkit-backdrop-filter:var(--m-text-input-backdrop-filter, none);box-shadow:var(--m-text-input-shadow, none)}.input-wrapper:has(>m-one-button,>m-button,>.input-indicator,>.input-suffix,>m-icon:last-child){padding-right:0}.input-wrapper:focus-visible:not(:disabled),.input-wrapper:focus-within:not(:disabled){border-color:var(--m-text-input-focus-border, var(--m-focus));box-shadow:none}.input-wrapper:has(.warning){border-color:var(--m-input-warning-border, var(--m-warning));background:var(--m-input-warning-background, color-mix(in srgb, var(--m-warning) 6%, var(--m-background)));box-shadow:none}.input-wrapper:has(.warning):focus-within{border-color:var(--m-input-warning-border, var(--m-warning));background:var(--m-input-warning-background, color-mix(in srgb, var(--m-warning) 6%, var(--m-background)))}.input-wrapper:has(.warning) input::placeholder,.input-wrapper:has(.warning) textarea::placeholder{color:var(--m-warning, var(--m-warning))}.input-wrapper:has(.error){border-color:var(--m-error);background:var(--m-input-error-background, color-mix(in srgb, var(--m-error) 5%, var(--m-background)));box-shadow:none}.input-wrapper:has(.error):focus-within{border-color:var(--m-error);background:var(--m-input-error-background, color-mix(in srgb, var(--m-error) 5%, var(--m-background)));box-shadow:none}.input-wrapper input::placeholder,.input-wrapper textarea::placeholder{color:var(--m-border, var(--m-border))}.input-wrapper:focus-within input::placeholder,.input-wrapper:focus-visible input::placeholder,.input-wrapper:focus-within textarea::placeholder,.input-wrapper:focus-visible textarea::placeholder{color:var(--m-focus, var(--m-focus))}.input-wrapper:has(.error) input::placeholder,.input-wrapper:has(.error) textarea::placeholder{color:var(--m-error, var(--m-error))}.input-wrapper input,.input-wrapper textarea{flex:1;border:none;outline:none;background:transparent;color:var(--m-text);font-family:inherit;font-size:inherit;padding:0}.input-wrapper input:focus,.input-wrapper textarea:focus{border-color:transparent;box-shadow:none}.input-wrapper{width:100%;align-items:flex-start;position:relative;min-height:2em;height:auto;padding:var(--m-textarea-padding);padding-left:var(--m-textarea-input-padding-left, var(--m-label-required-space, .75em));gap:.375em;background:var(--m-textarea-background);border:var(--m-textarea-input-border, var(--m-input-border-width, 1px) solid color-mix(in srgb, var(--m-text) 18%, var(--m-background)));box-shadow:var(--m-textarea-shadow)}.input-wrapper textarea{appearance:none;border:none;outline:none;flex:1;resize:none;display:block;box-sizing:border-box;height:var(--m-textarea-input-height, 4.5em);min-height:var(--m-textarea-input-height, 4.5em);overflow-y:auto;background:transparent;color:var(--m-text);font-family:inherit;font-size:1em;padding:0;line-height:1.5}.input-wrapper textarea:focus{box-shadow:none;background:transparent}.input-wrapper .m-icon{margin-top:.125rem;display:flex;align-items:center;justify-content:center;--m-icon-size: 1.1em !important}\n"], dependencies: [{ kind: "component", type: LabelComponent, selector: "m-label", inputs: ["for", "placeholder", "params", "required", "disabled", "color"] }, { kind: "component", type: TextOutputComponent, selector: "m-text-output", inputs: ["config", "align", "variant", "color", "fontWeight", "label", "noTranslate", "params"], outputs: ["configChange", "clicked"] }, { kind: "component", type: IconComponent, selector: "m-icon, m-one-icon", inputs: ["config", "name", "color", "size", "one", "baseUrl", "remote"], outputs: ["configChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
18853
+ `, 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%;--m-textarea-background: var(--m-textarea-input-background, color-mix(in srgb, var(--m-focus) 2%, var(--m-background)));--m-textarea-padding: var(--m-textarea-input-padding, .375em calc(var(--input-size, 1em) * .5 * .7));--m-textarea-shadow: var(--m-textarea-input-shadow, none)}.input-wrapper{display:flex;align-items:center;background:var(--m-background);overflow:hidden;height:calc(var(--input-size, 1em) * 2);min-height:calc(var(--input-size, 1em) * 2);border-width:max(1px,var(--input-size, 1em) * .0625);border-radius:calc(var(--input-size, 1em) * .4);padding:calc(var(--input-size, 1em) * .5) calc(var(--input-size, 1em) * .5);gap:calc(var(--input-size, 1em) * .375);font-size:var(--input-size, 1em);border-width:var(--m-input-border-width, 1px);border-radius:var(--m-input-radius, calc(var(--input-size, 1em) * .5));height:calc(var(--input-size, 1em) * 2.25);min-height:calc(var(--input-size, 1em) * 2.25);padding-top:0;padding-bottom:0;border-color:var(--m-input-color, var(--m-mm));transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease,opacity .2s ease}.input-wrapper:hover:not(:disabled){background-color:color-mix(in srgb,var(--m-input-color, var(--m-mm)) 6%,transparent)}.input-wrapper:disabled{opacity:.6;cursor:not-allowed}.input-wrapper{border-style:solid;backdrop-filter:var(--m-text-input-backdrop-filter, none);-webkit-backdrop-filter:var(--m-text-input-backdrop-filter, none);box-shadow:var(--m-text-input-shadow, none)}.input-wrapper:has(>m-one-button,>m-button,>.input-indicator,>.input-suffix,>m-icon:last-child){padding-right:0}.input-wrapper:focus-visible:not(:disabled),.input-wrapper:focus-within:not(:disabled){border-color:var(--m-text-input-focus-border, var(--m-focus));box-shadow:none}.input-wrapper:has(.warning){border-color:var(--m-input-warning-border, var(--m-warning));background:var(--m-input-warning-background, color-mix(in srgb, var(--m-warning) 6%, var(--m-background)));box-shadow:none}.input-wrapper:has(.warning):focus-within{border-color:var(--m-input-warning-border, var(--m-warning));background:var(--m-input-warning-background, color-mix(in srgb, var(--m-warning) 6%, var(--m-background)))}.input-wrapper:has(.warning) input::placeholder,.input-wrapper:has(.warning) textarea::placeholder{color:var(--m-warning, var(--m-warning))}.input-wrapper:has(.error){border-color:var(--m-error);background:var(--m-input-error-background, color-mix(in srgb, var(--m-error) 5%, var(--m-background)));box-shadow:none}.input-wrapper:has(.error):focus-within{border-color:var(--m-error);background:var(--m-input-error-background, color-mix(in srgb, var(--m-error) 5%, var(--m-background)));box-shadow:none}.input-wrapper input::placeholder,.input-wrapper textarea::placeholder{color:var(--m-border, var(--m-border))}.input-wrapper:focus-within input::placeholder,.input-wrapper:focus-visible input::placeholder,.input-wrapper:focus-within textarea::placeholder,.input-wrapper:focus-visible textarea::placeholder{color:var(--m-focus, var(--m-focus))}.input-wrapper:has(.error) input::placeholder,.input-wrapper:has(.error) textarea::placeholder{color:var(--m-error, var(--m-error))}.input-wrapper input,.input-wrapper textarea{flex:1;border:none;outline:none;background:transparent;color:var(--m-text);font-family:inherit;font-size:inherit;padding:0}.input-wrapper input:focus,.input-wrapper textarea:focus{border-color:transparent;box-shadow:none}.input-wrapper{width:100%;align-items:flex-start;position:relative;min-height:2em;height:var(--m-textarea-input-wrapper-height, auto)}.input-wrapper.auto-grow{height:auto}.input-wrapper{padding:var(--m-textarea-padding);padding-left:var(--m-textarea-input-padding-left, var(--m-label-required-space, .75em));gap:.375em;background:var(--m-textarea-background);border:var(--m-textarea-input-border, var(--m-input-border-width, 1px) solid color-mix(in srgb, var(--m-text) 18%, var(--m-background)));box-shadow:var(--m-textarea-shadow)}.input-wrapper textarea{appearance:none;border:none;outline:none;flex:1;resize:none;display:block;box-sizing:border-box;height:var(--m-textarea-input-height, 4.5em);min-height:var(--m-textarea-input-height, 4.5em);overflow-y:auto;background:transparent;color:var(--m-text);font-family:inherit;font-size:1em;padding:0;line-height:1.5}.input-wrapper textarea.auto-grow{field-sizing:content;height:auto;min-height:var(--m-textarea-input-height, 4.5em);max-height:var(--m-textarea-input-max-height, none)}.input-wrapper textarea:focus{box-shadow:none;background:transparent}.input-wrapper .m-icon{margin-top:.125rem;display:flex;align-items:center;justify-content:center;--m-icon-size: 1.1em !important}\n"], dependencies: [{ kind: "component", type: LabelComponent, selector: "m-label", inputs: ["for", "placeholder", "params", "required", "disabled", "color"] }, { kind: "component", type: TextOutputComponent, selector: "m-text-output", inputs: ["config", "align", "variant", "color", "fontWeight", "label", "noTranslate", "params"], outputs: ["configChange", "clicked"] }, { kind: "component", type: IconComponent, selector: "m-icon, m-one-icon", inputs: ["config", "name", "color", "size", "one", "baseUrl", "remote"], outputs: ["configChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
18783
18854
  }
18784
18855
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TextareaInputComponent, decorators: [{
18785
18856
  type: Component,
@@ -18794,7 +18865,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
18794
18865
  [disabled]="disabled()"
18795
18866
  />
18796
18867
  }
18797
- <div class="input-wrapper">
18868
+ <div class="input-wrapper" [class.auto-grow]="!!text.autoGrow">
18798
18869
  @if (text.icon) {
18799
18870
  <m-icon
18800
18871
  [name]="text.icon"
@@ -18803,8 +18874,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
18803
18874
  />
18804
18875
  }
18805
18876
  <textarea
18877
+ [class.auto-grow]="!!text.autoGrow"
18806
18878
  [id]="text.name ?? ''"
18807
18879
  [value]="value()"
18880
+ [attr.aria-label]="text.label ? null : placeholder(text.placeholder)"
18881
+ [attr.spellcheck]="text.spellcheck ?? null"
18808
18882
  #inputElement
18809
18883
  [class.error]="showErrors()"
18810
18884
  [class.has-icon]="!!text.icon"
@@ -18824,8 +18898,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
18824
18898
  }
18825
18899
  }
18826
18900
  }
18827
- `, imports: [LabelComponent, TextOutputComponent, IconComponent], 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-textarea-background: var(--m-textarea-input-background, color-mix(in srgb, var(--m-focus) 2%, var(--m-background)));--m-textarea-padding: var(--m-textarea-input-padding, .375em calc(var(--input-size, 1em) * .5 * .7));--m-textarea-shadow: var(--m-textarea-input-shadow, none)}.input-wrapper{display:flex;align-items:center;background:var(--m-background);overflow:hidden;height:calc(var(--input-size, 1em) * 2);min-height:calc(var(--input-size, 1em) * 2);border-width:max(1px,var(--input-size, 1em) * .0625);border-radius:calc(var(--input-size, 1em) * .4);padding:calc(var(--input-size, 1em) * .5) calc(var(--input-size, 1em) * .5);gap:calc(var(--input-size, 1em) * .375);font-size:var(--input-size, 1em);border-width:var(--m-input-border-width, 1px);border-radius:var(--m-input-radius, calc(var(--input-size, 1em) * .5));height:calc(var(--input-size, 1em) * 2.25);min-height:calc(var(--input-size, 1em) * 2.25);padding-top:0;padding-bottom:0;border-color:var(--m-input-color, var(--m-mm));transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease,opacity .2s ease}.input-wrapper:hover:not(:disabled){background-color:color-mix(in srgb,var(--m-input-color, var(--m-mm)) 6%,transparent)}.input-wrapper:disabled{opacity:.6;cursor:not-allowed}.input-wrapper{border-style:solid;backdrop-filter:var(--m-text-input-backdrop-filter, none);-webkit-backdrop-filter:var(--m-text-input-backdrop-filter, none);box-shadow:var(--m-text-input-shadow, none)}.input-wrapper:has(>m-one-button,>m-button,>.input-indicator,>.input-suffix,>m-icon:last-child){padding-right:0}.input-wrapper:focus-visible:not(:disabled),.input-wrapper:focus-within:not(:disabled){border-color:var(--m-text-input-focus-border, var(--m-focus));box-shadow:none}.input-wrapper:has(.warning){border-color:var(--m-input-warning-border, var(--m-warning));background:var(--m-input-warning-background, color-mix(in srgb, var(--m-warning) 6%, var(--m-background)));box-shadow:none}.input-wrapper:has(.warning):focus-within{border-color:var(--m-input-warning-border, var(--m-warning));background:var(--m-input-warning-background, color-mix(in srgb, var(--m-warning) 6%, var(--m-background)))}.input-wrapper:has(.warning) input::placeholder,.input-wrapper:has(.warning) textarea::placeholder{color:var(--m-warning, var(--m-warning))}.input-wrapper:has(.error){border-color:var(--m-error);background:var(--m-input-error-background, color-mix(in srgb, var(--m-error) 5%, var(--m-background)));box-shadow:none}.input-wrapper:has(.error):focus-within{border-color:var(--m-error);background:var(--m-input-error-background, color-mix(in srgb, var(--m-error) 5%, var(--m-background)));box-shadow:none}.input-wrapper input::placeholder,.input-wrapper textarea::placeholder{color:var(--m-border, var(--m-border))}.input-wrapper:focus-within input::placeholder,.input-wrapper:focus-visible input::placeholder,.input-wrapper:focus-within textarea::placeholder,.input-wrapper:focus-visible textarea::placeholder{color:var(--m-focus, var(--m-focus))}.input-wrapper:has(.error) input::placeholder,.input-wrapper:has(.error) textarea::placeholder{color:var(--m-error, var(--m-error))}.input-wrapper input,.input-wrapper textarea{flex:1;border:none;outline:none;background:transparent;color:var(--m-text);font-family:inherit;font-size:inherit;padding:0}.input-wrapper input:focus,.input-wrapper textarea:focus{border-color:transparent;box-shadow:none}.input-wrapper{width:100%;align-items:flex-start;position:relative;min-height:2em;height:auto;padding:var(--m-textarea-padding);padding-left:var(--m-textarea-input-padding-left, var(--m-label-required-space, .75em));gap:.375em;background:var(--m-textarea-background);border:var(--m-textarea-input-border, var(--m-input-border-width, 1px) solid color-mix(in srgb, var(--m-text) 18%, var(--m-background)));box-shadow:var(--m-textarea-shadow)}.input-wrapper textarea{appearance:none;border:none;outline:none;flex:1;resize:none;display:block;box-sizing:border-box;height:var(--m-textarea-input-height, 4.5em);min-height:var(--m-textarea-input-height, 4.5em);overflow-y:auto;background:transparent;color:var(--m-text);font-family:inherit;font-size:1em;padding:0;line-height:1.5}.input-wrapper textarea:focus{box-shadow:none;background:transparent}.input-wrapper .m-icon{margin-top:.125rem;display:flex;align-items:center;justify-content:center;--m-icon-size: 1.1em !important}\n"] }]
18828
- }] });
18901
+ `, imports: [LabelComponent, TextOutputComponent, IconComponent], 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-textarea-background: var(--m-textarea-input-background, color-mix(in srgb, var(--m-focus) 2%, var(--m-background)));--m-textarea-padding: var(--m-textarea-input-padding, .375em calc(var(--input-size, 1em) * .5 * .7));--m-textarea-shadow: var(--m-textarea-input-shadow, none)}.input-wrapper{display:flex;align-items:center;background:var(--m-background);overflow:hidden;height:calc(var(--input-size, 1em) * 2);min-height:calc(var(--input-size, 1em) * 2);border-width:max(1px,var(--input-size, 1em) * .0625);border-radius:calc(var(--input-size, 1em) * .4);padding:calc(var(--input-size, 1em) * .5) calc(var(--input-size, 1em) * .5);gap:calc(var(--input-size, 1em) * .375);font-size:var(--input-size, 1em);border-width:var(--m-input-border-width, 1px);border-radius:var(--m-input-radius, calc(var(--input-size, 1em) * .5));height:calc(var(--input-size, 1em) * 2.25);min-height:calc(var(--input-size, 1em) * 2.25);padding-top:0;padding-bottom:0;border-color:var(--m-input-color, var(--m-mm));transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease,opacity .2s ease}.input-wrapper:hover:not(:disabled){background-color:color-mix(in srgb,var(--m-input-color, var(--m-mm)) 6%,transparent)}.input-wrapper:disabled{opacity:.6;cursor:not-allowed}.input-wrapper{border-style:solid;backdrop-filter:var(--m-text-input-backdrop-filter, none);-webkit-backdrop-filter:var(--m-text-input-backdrop-filter, none);box-shadow:var(--m-text-input-shadow, none)}.input-wrapper:has(>m-one-button,>m-button,>.input-indicator,>.input-suffix,>m-icon:last-child){padding-right:0}.input-wrapper:focus-visible:not(:disabled),.input-wrapper:focus-within:not(:disabled){border-color:var(--m-text-input-focus-border, var(--m-focus));box-shadow:none}.input-wrapper:has(.warning){border-color:var(--m-input-warning-border, var(--m-warning));background:var(--m-input-warning-background, color-mix(in srgb, var(--m-warning) 6%, var(--m-background)));box-shadow:none}.input-wrapper:has(.warning):focus-within{border-color:var(--m-input-warning-border, var(--m-warning));background:var(--m-input-warning-background, color-mix(in srgb, var(--m-warning) 6%, var(--m-background)))}.input-wrapper:has(.warning) input::placeholder,.input-wrapper:has(.warning) textarea::placeholder{color:var(--m-warning, var(--m-warning))}.input-wrapper:has(.error){border-color:var(--m-error);background:var(--m-input-error-background, color-mix(in srgb, var(--m-error) 5%, var(--m-background)));box-shadow:none}.input-wrapper:has(.error):focus-within{border-color:var(--m-error);background:var(--m-input-error-background, color-mix(in srgb, var(--m-error) 5%, var(--m-background)));box-shadow:none}.input-wrapper input::placeholder,.input-wrapper textarea::placeholder{color:var(--m-border, var(--m-border))}.input-wrapper:focus-within input::placeholder,.input-wrapper:focus-visible input::placeholder,.input-wrapper:focus-within textarea::placeholder,.input-wrapper:focus-visible textarea::placeholder{color:var(--m-focus, var(--m-focus))}.input-wrapper:has(.error) input::placeholder,.input-wrapper:has(.error) textarea::placeholder{color:var(--m-error, var(--m-error))}.input-wrapper input,.input-wrapper textarea{flex:1;border:none;outline:none;background:transparent;color:var(--m-text);font-family:inherit;font-size:inherit;padding:0}.input-wrapper input:focus,.input-wrapper textarea:focus{border-color:transparent;box-shadow:none}.input-wrapper{width:100%;align-items:flex-start;position:relative;min-height:2em;height:var(--m-textarea-input-wrapper-height, auto)}.input-wrapper.auto-grow{height:auto}.input-wrapper{padding:var(--m-textarea-padding);padding-left:var(--m-textarea-input-padding-left, var(--m-label-required-space, .75em));gap:.375em;background:var(--m-textarea-background);border:var(--m-textarea-input-border, var(--m-input-border-width, 1px) solid color-mix(in srgb, var(--m-text) 18%, var(--m-background)));box-shadow:var(--m-textarea-shadow)}.input-wrapper textarea{appearance:none;border:none;outline:none;flex:1;resize:none;display:block;box-sizing:border-box;height:var(--m-textarea-input-height, 4.5em);min-height:var(--m-textarea-input-height, 4.5em);overflow-y:auto;background:transparent;color:var(--m-text);font-family:inherit;font-size:1em;padding:0;line-height:1.5}.input-wrapper textarea.auto-grow{field-sizing:content;height:auto;min-height:var(--m-textarea-input-height, 4.5em);max-height:var(--m-textarea-input-max-height, none)}.input-wrapper textarea:focus{box-shadow:none;background:transparent}.input-wrapper .m-icon{margin-top:.125rem;display:flex;align-items:center;justify-content:center;--m-icon-size: 1.1em !important}\n"] }]
18902
+ }], propDecorators: { control: [{ type: i0.ViewChild, args: ['inputElement', { isSignal: true }] }] } });
18829
18903
 
18830
18904
  var textarea = /*#__PURE__*/Object.freeze({
18831
18905
  __proto__: null,
@@ -21479,7 +21553,7 @@ class WrapperInputComponent extends ConfigComponent {
21479
21553
  break;
21480
21554
  }
21481
21555
  case InputType.TOGGLE: {
21482
- const { ToggleInputComponent } = await import('./magmonium-one-toggle-DQuHT48L.mjs');
21556
+ const { ToggleInputComponent } = await import('./magmonium-one-toggle-BNVDl--Z.mjs');
21483
21557
  this.createDynamicComponent(seq, ToggleInputComponent, [], true);
21484
21558
  break;
21485
21559
  }
@@ -21491,12 +21565,12 @@ class WrapperInputComponent extends ConfigComponent {
21491
21565
  break;
21492
21566
  }
21493
21567
  case InputType.PASSWORD: {
21494
- const { PasswordInputComponent } = await import('./magmonium-one-password-BSd9P128.mjs');
21568
+ const { PasswordInputComponent } = await import('./magmonium-one-password-Cz9Ig8UG.mjs');
21495
21569
  this.createDynamicComponent(seq, PasswordInputComponent);
21496
21570
  break;
21497
21571
  }
21498
21572
  case InputType.OTP: {
21499
- const { OtpInputComponent } = await import('./magmonium-one-otp-CEFYwChx.mjs');
21573
+ const { OtpInputComponent } = await import('./magmonium-one-otp-C6RUv8ws.mjs');
21500
21574
  this.createDynamicComponent(seq, OtpInputComponent);
21501
21575
  break;
21502
21576
  }
@@ -23203,7 +23277,7 @@ class FileUploadInputComponent extends BaseInputComponent {
23203
23277
  const modalStore = this.modalStore;
23204
23278
  if (!modalStore)
23205
23279
  return undefined;
23206
- const { ImageEditorComponent } = await import('./magmonium-one-image-editor-BWrlxgdY.mjs');
23280
+ const { ImageEditorComponent } = await import('./magmonium-one-image-editor-CPzYCC_n.mjs');
23207
23281
  const ratio = String(this.config()?.ratio ?? '');
23208
23282
  return new Promise((resolve) => {
23209
23283
  const modalRef = new ModalRef();
@@ -26447,6 +26521,942 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
26447
26521
  `, 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:inline-flex;align-items:flex-start;line-height:1}.score__prefix,.score__suffix{font-size:.8em;font-weight:500;margin:0 .2em}.score__int{font-size:1.2em;font-weight:600}.score__sep{font-size:.4em;font-weight:400;opacity:.45;margin-top:.15em}.score__dec{font-size:.6em;font-weight:400;opacity:.65;margin-top:.15em}\n"] }]
26448
26522
  }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], prefix: [{ type: i0.Input, args: [{ isSignal: true, alias: "prefix", required: false }] }], suffix: [{ type: i0.Input, args: [{ isSignal: true, alias: "suffix", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }] } });
26449
26523
 
26524
+ /** The one folder a DocAsset lives in, under `assets/` and under `assets/one/`. */
26525
+ const DOCS_FOLDER = 'docs';
26526
+ /** The library tier's own root, as `HttpService.asset` reads a tree's head. */
26527
+ const LIBRARY_TIER = 'one';
26528
+ /**
26529
+ * Where one document may be found, in the order it is asked for.
26530
+ *
26531
+ * App tier before library tier, so an app's own document wins the name; active
26532
+ * language before default, because a missing translation is a fallback and not
26533
+ * a failure. The `<lang>/` segment is never optional — one resolution shape.
26534
+ */
26535
+ function docAssetCandidates({ name, lang, defaultLang, }) {
26536
+ if (!name)
26537
+ return [];
26538
+ const langs = lang === defaultLang ? [lang] : [lang, defaultLang];
26539
+ return langs.flatMap((language) => [
26540
+ [DOCS_FOLDER, language, name],
26541
+ [LIBRARY_TIER, DOCS_FOLDER, language, name],
26542
+ ]);
26543
+ }
26544
+ /**
26545
+ * The path a document sits at inside another Remote's own assets, which the
26546
+ * `wc` route serves as `text/markdown` without any backend work.
26547
+ */
26548
+ function docRemotePath(name, lang) {
26549
+ return `${DOCS_FOLDER}/${lang}/${name}.md`;
26550
+ }
26551
+
26552
+ /**
26553
+ * Renders a **document** — CommonMark plus GFM tables, which MiniMark
26554
+ * deliberately does not carry (libs/one ADR 0002 and its amendment).
26555
+ *
26556
+ * The output vocabulary is closed the way MiniMark's is, just wider: raw HTML
26557
+ * is dropped rather than passed through, images are not served at all, and a
26558
+ * link's href is gated by scheme. Everything that survives sits on Angular's
26559
+ * own sanitizer allowlist, so binding the result with a plain `[innerHTML]`
26560
+ * keeps the same safety net the MiniMark path relies on — no
26561
+ * `bypassSecurityTrustHtml`, no second sanitizer to keep in sync.
26562
+ */
26563
+ /** `marked` is only ever loaded by an `m-doc` that actually renders something. */
26564
+ let parser = null;
26565
+ const EXTERNAL_SCHEME = /^(?:https?:|mailto:|tel:)/i;
26566
+ const ANY_SCHEME = /^[a-z][a-z0-9+.-]*:/i;
26567
+ /**
26568
+ * Anything that is not an allowed scheme stays literal text. A relative or
26569
+ * hash href is allowed and is *not* opened in a new tab — it points inside the
26570
+ * app that is rendering the document.
26571
+ */
26572
+ function isExternal(href) {
26573
+ return EXTERNAL_SCHEME.test(href) || href.startsWith('//');
26574
+ }
26575
+ function isAllowed(href) {
26576
+ if (isExternal(href))
26577
+ return true;
26578
+ // No scheme at all: relative, absolute-path or hash.
26579
+ return !ANY_SCHEME.test(href);
26580
+ }
26581
+ /** The href is the one attribute value this renderer emits, so it is fenced. */
26582
+ function hardenHref(href) {
26583
+ return href
26584
+ // eslint-disable-next-line no-control-regex
26585
+ .replace(/[\u0000-\u001f\u007f]/g, '')
26586
+ .replace(/"/g, '%22');
26587
+ }
26588
+ async function getParser() {
26589
+ if (!parser) {
26590
+ parser = import('marked').then(({ Marked }) => {
26591
+ const marked = new Marked({
26592
+ gfm: true,
26593
+ breaks: false,
26594
+ renderer: {
26595
+ // Raw HTML — block and inline alike — never reaches the DOM. The
26596
+ // text around it survives; the markup does not.
26597
+ html: () => '',
26598
+ // Off in v1: an image in a document fetched from the Store is a
26599
+ // remote request the reader did not ask for.
26600
+ image: () => '',
26601
+ link(token) {
26602
+ const text = this.parser.parseInline(token.tokens);
26603
+ if (!isAllowed(token.href))
26604
+ return text;
26605
+ const href = hardenHref(token.href);
26606
+ const title = token.title
26607
+ ? ` title="${hardenHref(token.title)}"`
26608
+ : '';
26609
+ const external = isExternal(token.href)
26610
+ ? ' target="_blank" rel="noopener noreferrer"'
26611
+ : '';
26612
+ return `<a href="${href}"${title}${external}>${text}</a>`;
26613
+ },
26614
+ },
26615
+ });
26616
+ return marked;
26617
+ });
26618
+ }
26619
+ return parser;
26620
+ }
26621
+ /** Markdown in, closed-vocabulary HTML out. */
26622
+ async function renderDocument(markdown) {
26623
+ if (!markdown)
26624
+ return '';
26625
+ const marked = await getParser();
26626
+ return marked.parse(markdown, { async: false });
26627
+ }
26628
+
26629
+ const DOC_VARIANTS = [
26630
+ 'plain',
26631
+ 'card',
26632
+ 'outline',
26633
+ 'article',
26634
+ 'muted',
26635
+ 'callout',
26636
+ 'accent',
26637
+ 'quiet',
26638
+ ];
26639
+ const DOC_DENSITIES = [
26640
+ 'compact',
26641
+ 'default',
26642
+ 'spaced',
26643
+ ];
26644
+ const DEFAULT_DOC_VARIANT = 'plain';
26645
+ const DEFAULT_DOC_DENSITY = 'default';
26646
+
26647
+ /** What a missing translation of a document falls back to before giving up. */
26648
+ const DEFAULT_DOC_LANG = 'en';
26649
+ /**
26650
+ * Renders one DocAsset — a markdown document, not a message.
26651
+ *
26652
+ * Folderless like `m-img` and `m-logo`: literal attributes, no
26653
+ * `config` bag and therefore no ControlAsset. It fetches its own content the
26654
+ * way an Img does, so nothing has to be wired to it: a name resolves app tier
26655
+ * then library tier and active language then default, a `remote` reads the
26656
+ * named Remote's own copy, and a `designSrc` short-circuits both because the
26657
+ * editor's Canvas has no backend to resolve either against.
26658
+ *
26659
+ * A document that is nowhere renders as nothing. Loading and error belong to
26660
+ * the interceptor (ADR 0026), and a missing translation is not an app failure.
26661
+ */
26662
+ class DocComponent {
26663
+ /** The DocAsset's name — never a path and never a url. */
26664
+ name = input('', ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
26665
+ /** Another Remote's AppLink, whose own copy of that name is read instead. */
26666
+ remote = input('', ...(ngDevMode ? [{ debugName: "remote" }] : /* istanbul ignore next */ []));
26667
+ /**
26668
+ * A whole url the document is fetched from at runtime, for a document this
26669
+ * app does not ship. It wins over `name` and `remote`: a url is the most
26670
+ * specific thing a caller can say about where the text lives.
26671
+ */
26672
+ url = input('', ...(ngDevMode ? [{ debugName: "url" }] : /* istanbul ignore next */ []));
26673
+ /** Design-time only: what the Canvas draws in place of a read it cannot make. */
26674
+ designSrc = input('', ...(ngDevMode ? [{ debugName: "designSrc" }] : /* istanbul ignore next */ []));
26675
+ /** The skin — surface, border, measure. Colours always come from the theme. */
26676
+ variant = input(DEFAULT_DOC_VARIANT, ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
26677
+ /** The rhythm — type size and the space between blocks. */
26678
+ density = input(DEFAULT_DOC_DENSITY, ...(ngDevMode ? [{ debugName: "density" }] : /* istanbul ignore next */ []));
26679
+ http = inject(HttpService);
26680
+ translate = inject(TranslateService);
26681
+ rootClass = computed(() => `m-doc m-doc--${this.variant()} m-doc--${this.density()}`, ...(ngDevMode ? [{ debugName: "rootClass" }] : /* istanbul ignore next */ []));
26682
+ html = signal('', ...(ngDevMode ? [{ debugName: "html" }] : /* istanbul ignore next */ []));
26683
+ pending = signal(false, ...(ngDevMode ? [{ debugName: "pending" }] : /* istanbul ignore next */ []));
26684
+ /** Only the newest read may write; an input changed mid-flight wins. */
26685
+ token = 0;
26686
+ constructor() {
26687
+ effect(() => {
26688
+ const name = this.name();
26689
+ const remote = this.remote();
26690
+ const url = this.url();
26691
+ const designSrc = this.designSrc();
26692
+ const lang = this.translate.lang();
26693
+ const request = ++this.token;
26694
+ if (designSrc) {
26695
+ this.pending.set(true);
26696
+ void this.show(designSrc, request);
26697
+ return;
26698
+ }
26699
+ if (!name && !url) {
26700
+ this.pending.set(false);
26701
+ this.html.set('');
26702
+ return;
26703
+ }
26704
+ this.pending.set(true);
26705
+ void this.load({ name, remote, url, lang, request });
26706
+ });
26707
+ }
26708
+ async load({ name, remote, url, lang, request, }) {
26709
+ const source = url
26710
+ ? await this.readUrl(url)
26711
+ : remote
26712
+ ? await this.readRemote(remote, name, lang)
26713
+ : await this.readAsset(name, lang);
26714
+ await this.show(source ?? '', request);
26715
+ }
26716
+ /** App tier then library tier, active language then default — first hit wins. */
26717
+ async readAsset(name, lang) {
26718
+ for (const tree of docAssetCandidates({
26719
+ name,
26720
+ lang,
26721
+ defaultLang: DEFAULT_DOC_LANG,
26722
+ })) {
26723
+ try {
26724
+ return await firstValueFrom(this.http.asset(tree, Assets.MD));
26725
+ }
26726
+ catch {
26727
+ continue;
26728
+ }
26729
+ }
26730
+ return null;
26731
+ }
26732
+ /** The named Remote's own copy, served by the `wc` route as `text/markdown`. */
26733
+ async readRemote(remote, name, lang) {
26734
+ const langs = lang === DEFAULT_DOC_LANG ? [lang] : [lang, DEFAULT_DOC_LANG];
26735
+ for (const language of langs) {
26736
+ try {
26737
+ return await firstValueFrom(this.http.text(this.http.buildWcAssetUrl(remote, docRemotePath(name, language))));
26738
+ }
26739
+ catch {
26740
+ continue;
26741
+ }
26742
+ }
26743
+ return null;
26744
+ }
26745
+ /** A whole url, read as text. Nothing is appended to it and no tier applies. */
26746
+ async readUrl(url) {
26747
+ try {
26748
+ return await firstValueFrom(this.http.text(url));
26749
+ }
26750
+ catch {
26751
+ return null;
26752
+ }
26753
+ }
26754
+ async show(markdown, request) {
26755
+ const rendered = await renderDocument(markdown);
26756
+ if (request !== this.token)
26757
+ return;
26758
+ this.html.set(rendered);
26759
+ this.pending.set(false);
26760
+ }
26761
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DocComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
26762
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: DocComponent, isStandalone: true, selector: "m-doc", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, remote: { classPropertyName: "remote", publicName: "remote", isSignal: true, isRequired: false, transformFunction: null }, url: { classPropertyName: "url", publicName: "url", isSignal: true, isRequired: false, transformFunction: null }, designSrc: { classPropertyName: "designSrc", publicName: "designSrc", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, density: { classPropertyName: "density", publicName: "density", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "doc-host" }, ngImport: i0, template: `
26763
+ <div [class]="rootClass()">
26764
+ @if (pending()) {
26765
+ <div class="m-doc__skeleton"></div>
26766
+ }
26767
+ <div class="m-doc__body" [innerHTML]="html()"></div>
26768
+ </div>
26769
+ `, 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)}}.doc-host{display:block;width:100%}.m-doc{--m-doc-font: 1rem;--m-doc-line: 1.65;--m-doc-gap: 1em;--m-doc-heading-gap: 1.5em;--m-doc-heading-scale: 1;--m-doc-heading-boost: 1;--m-doc-cell: .5em .75em;--m-doc-pad: 1.25rem;position:relative;width:100%;color:var(--m-text);font-size:var(--m-doc-font);line-height:var(--m-doc-line)}.m-doc--compact{--m-doc-font: .875rem;--m-doc-line: 1.45;--m-doc-gap: .5em;--m-doc-heading-gap: 1em;--m-doc-heading-scale: .8;--m-doc-cell: .25em .5em;--m-doc-pad: .75rem}.m-doc--spaced{--m-doc-font: 1.0625rem;--m-doc-line: 1.8;--m-doc-gap: 1.5em;--m-doc-heading-gap: 2em;--m-doc-heading-scale: 1.1;--m-doc-cell: .75em 1em;--m-doc-pad: 2rem}.m-doc--card{padding:var(--m-doc-pad);border:1px solid var(--m-border);border-radius:.5rem;background:var(--m-background-lite)}.m-doc--outline{padding:var(--m-doc-pad);border:1px solid var(--m-border);border-radius:.5rem}.m-doc--article{--m-doc-heading-boost: 1.15;max-width:70ch;margin-inline:auto}.m-doc--article .m-doc__body>p:first-child{font-size:1.15em;color:var(--m-text-secondary)}.m-doc--muted{color:var(--m-text-secondary)}.m-doc--muted .m-doc__body :is(h1,h2,h3,h4,h5,h6){color:var(--m-text-secondary)}.m-doc--callout{padding:var(--m-doc-pad);border-left:3px solid var(--m-mm);border-radius:0 .5rem .5rem 0;background:color-mix(in srgb,var(--m-mm) 8%,transparent)}.m-doc--accent .m-doc__body :is(h1,h2,h3,h4,h5,h6){color:var(--m-mm)}.m-doc--quiet .m-doc__body :is(h1,h2,h3,h4,h5,h6){color:var(--m-text-secondary)}.m-doc__skeleton{height:12rem;border-radius:.5rem;background:color-mix(in srgb,var(--m-text) 6%,transparent);animation:doc-pulse 1.4s ease-in-out infinite}.m-doc__body{display:block}.m-doc__body>:first-child{margin-top:0}.m-doc__body>:last-child{margin-bottom:0}.m-doc__body :is(h1,h2,h3,h4,h5,h6){margin:var(--m-doc-heading-gap) 0 .5em;line-height:1.25;color:var(--m-text)}.m-doc__body h1{font-size:calc(2em * var(--m-doc-heading-scale) * var(--m-doc-heading-boost))}.m-doc__body h2{font-size:calc(1.6em * var(--m-doc-heading-scale) * var(--m-doc-heading-boost))}.m-doc__body h3{font-size:calc(1.3em * var(--m-doc-heading-scale) * var(--m-doc-heading-boost))}.m-doc__body h4{font-size:calc(1.1em * var(--m-doc-heading-scale) * var(--m-doc-heading-boost))}.m-doc__body :is(h5,h6){font-size:1em}.m-doc__body :is(p,ul,ol,blockquote,pre,table){margin:0 0 var(--m-doc-gap)}.m-doc__body :is(ul,ol){padding-left:1.5em}.m-doc__body li+li{margin-top:calc(var(--m-doc-gap) * .25)}.m-doc__body a{color:var(--m-mm);text-decoration:underline}.m-doc__body hr{margin:calc(var(--m-doc-gap) * 1.5) 0;border:0;border-top:1px solid var(--m-border)}.m-doc__body code{padding:.15em .35em;border-radius:.25rem;background:color-mix(in srgb,var(--m-text) 8%,transparent);font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.9em}.m-doc__body pre{overflow-x:auto;padding:1em;border:1px solid var(--m-border);border-radius:.5rem;background:color-mix(in srgb,var(--m-text) 5%,transparent)}.m-doc__body pre code{padding:0;background:none}.m-doc__body blockquote{padding-left:1em;border-left:2px solid var(--m-border);color:var(--m-text-secondary)}.m-doc__body table{width:100%;border-collapse:collapse}.m-doc__body table :is(th,td){padding:var(--m-doc-cell);border-bottom:1px solid var(--m-border);text-align:left}.m-doc__body table th{font-weight:600}@keyframes doc-pulse{0%,to{opacity:.5}50%{opacity:.9}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
26770
+ }
26771
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DocComponent, decorators: [{
26772
+ type: Component,
26773
+ args: [{ selector: 'm-doc', changeDetection: ChangeDetectionStrategy.OnPush, template: `
26774
+ <div [class]="rootClass()">
26775
+ @if (pending()) {
26776
+ <div class="m-doc__skeleton"></div>
26777
+ }
26778
+ <div class="m-doc__body" [innerHTML]="html()"></div>
26779
+ </div>
26780
+ `, encapsulation: ViewEncapsulation.None, host: { class: 'doc-host' }, 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)}}.doc-host{display:block;width:100%}.m-doc{--m-doc-font: 1rem;--m-doc-line: 1.65;--m-doc-gap: 1em;--m-doc-heading-gap: 1.5em;--m-doc-heading-scale: 1;--m-doc-heading-boost: 1;--m-doc-cell: .5em .75em;--m-doc-pad: 1.25rem;position:relative;width:100%;color:var(--m-text);font-size:var(--m-doc-font);line-height:var(--m-doc-line)}.m-doc--compact{--m-doc-font: .875rem;--m-doc-line: 1.45;--m-doc-gap: .5em;--m-doc-heading-gap: 1em;--m-doc-heading-scale: .8;--m-doc-cell: .25em .5em;--m-doc-pad: .75rem}.m-doc--spaced{--m-doc-font: 1.0625rem;--m-doc-line: 1.8;--m-doc-gap: 1.5em;--m-doc-heading-gap: 2em;--m-doc-heading-scale: 1.1;--m-doc-cell: .75em 1em;--m-doc-pad: 2rem}.m-doc--card{padding:var(--m-doc-pad);border:1px solid var(--m-border);border-radius:.5rem;background:var(--m-background-lite)}.m-doc--outline{padding:var(--m-doc-pad);border:1px solid var(--m-border);border-radius:.5rem}.m-doc--article{--m-doc-heading-boost: 1.15;max-width:70ch;margin-inline:auto}.m-doc--article .m-doc__body>p:first-child{font-size:1.15em;color:var(--m-text-secondary)}.m-doc--muted{color:var(--m-text-secondary)}.m-doc--muted .m-doc__body :is(h1,h2,h3,h4,h5,h6){color:var(--m-text-secondary)}.m-doc--callout{padding:var(--m-doc-pad);border-left:3px solid var(--m-mm);border-radius:0 .5rem .5rem 0;background:color-mix(in srgb,var(--m-mm) 8%,transparent)}.m-doc--accent .m-doc__body :is(h1,h2,h3,h4,h5,h6){color:var(--m-mm)}.m-doc--quiet .m-doc__body :is(h1,h2,h3,h4,h5,h6){color:var(--m-text-secondary)}.m-doc__skeleton{height:12rem;border-radius:.5rem;background:color-mix(in srgb,var(--m-text) 6%,transparent);animation:doc-pulse 1.4s ease-in-out infinite}.m-doc__body{display:block}.m-doc__body>:first-child{margin-top:0}.m-doc__body>:last-child{margin-bottom:0}.m-doc__body :is(h1,h2,h3,h4,h5,h6){margin:var(--m-doc-heading-gap) 0 .5em;line-height:1.25;color:var(--m-text)}.m-doc__body h1{font-size:calc(2em * var(--m-doc-heading-scale) * var(--m-doc-heading-boost))}.m-doc__body h2{font-size:calc(1.6em * var(--m-doc-heading-scale) * var(--m-doc-heading-boost))}.m-doc__body h3{font-size:calc(1.3em * var(--m-doc-heading-scale) * var(--m-doc-heading-boost))}.m-doc__body h4{font-size:calc(1.1em * var(--m-doc-heading-scale) * var(--m-doc-heading-boost))}.m-doc__body :is(h5,h6){font-size:1em}.m-doc__body :is(p,ul,ol,blockquote,pre,table){margin:0 0 var(--m-doc-gap)}.m-doc__body :is(ul,ol){padding-left:1.5em}.m-doc__body li+li{margin-top:calc(var(--m-doc-gap) * .25)}.m-doc__body a{color:var(--m-mm);text-decoration:underline}.m-doc__body hr{margin:calc(var(--m-doc-gap) * 1.5) 0;border:0;border-top:1px solid var(--m-border)}.m-doc__body code{padding:.15em .35em;border-radius:.25rem;background:color-mix(in srgb,var(--m-text) 8%,transparent);font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.9em}.m-doc__body pre{overflow-x:auto;padding:1em;border:1px solid var(--m-border);border-radius:.5rem;background:color-mix(in srgb,var(--m-text) 5%,transparent)}.m-doc__body pre code{padding:0;background:none}.m-doc__body blockquote{padding-left:1em;border-left:2px solid var(--m-border);color:var(--m-text-secondary)}.m-doc__body table{width:100%;border-collapse:collapse}.m-doc__body table :is(th,td){padding:var(--m-doc-cell);border-bottom:1px solid var(--m-border);text-align:left}.m-doc__body table th{font-weight:600}@keyframes doc-pulse{0%,to{opacity:.5}50%{opacity:.9}}\n"] }]
26781
+ }], ctorParameters: () => [], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], remote: [{ type: i0.Input, args: [{ isSignal: true, alias: "remote", required: false }] }], url: [{ type: i0.Input, args: [{ isSignal: true, alias: "url", required: false }] }], designSrc: [{ type: i0.Input, args: [{ isSignal: true, alias: "designSrc", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], density: [{ type: i0.Input, args: [{ isSignal: true, alias: "density", required: false }] }] } });
26782
+
26783
+ /**
26784
+ * The markdown a toolbar press writes, as a pure transform over the textarea's
26785
+ * own state.
26786
+ *
26787
+ * Pure so the editor stays a view: the component reads `value/start/end` off
26788
+ * the element, hands them here, and writes the answer back. Nothing about a
26789
+ * document is decided in a DOM handler.
26790
+ *
26791
+ * There is deliberately no `image` action — the renderer does not serve images
26792
+ * in v1 (libs/one ADR 0034), and a toolbar that writes markup the renderer
26793
+ * drops is a toolbar that lies.
26794
+ */
26795
+ const DOC_EDIT_ACTIONS = [
26796
+ 'bold',
26797
+ 'italic',
26798
+ 'strike',
26799
+ 'heading',
26800
+ 'list',
26801
+ 'quote',
26802
+ 'link',
26803
+ 'code',
26804
+ 'table',
26805
+ ];
26806
+ const WRAPPERS = {
26807
+ bold: '**',
26808
+ italic: '*',
26809
+ strike: '~~',
26810
+ };
26811
+ const MAX_HEADING = 6;
26812
+ const TABLE_SKELETON = ['| Name | Value |', '| --- | --- |', '| a | b |'].join('\n');
26813
+ /** Where the line the caret sits in begins and ends. */
26814
+ function lineBounds(value, start, end) {
26815
+ const from = value.lastIndexOf('\n', start - 1) + 1;
26816
+ const lineEnd = value.indexOf('\n', end);
26817
+ return { from, to: lineEnd === -1 ? value.length : lineEnd };
26818
+ }
26819
+ function replace(state, from, to, text, select) {
26820
+ return {
26821
+ value: state.value.slice(0, from) + text + state.value.slice(to),
26822
+ ...select,
26823
+ };
26824
+ }
26825
+ function wrap(state, delimiter) {
26826
+ const { value, start, end } = state;
26827
+ const selected = value.slice(start, end);
26828
+ const before = value.slice(Math.max(0, start - delimiter.length), start);
26829
+ const after = value.slice(end, end + delimiter.length);
26830
+ // Already wrapped: the second press takes it off rather than nesting.
26831
+ if (before === delimiter && after === delimiter) {
26832
+ return replace(state, start - delimiter.length, end + delimiter.length, selected, { start: start - delimiter.length, end: end - delimiter.length });
26833
+ }
26834
+ return replace(state, start, end, `${delimiter}${selected}${delimiter}`, {
26835
+ start: start + delimiter.length,
26836
+ end: end + delimiter.length,
26837
+ });
26838
+ }
26839
+ /** `#` → `##` → … → `######` → none, so one button reaches every level. */
26840
+ function heading(state) {
26841
+ const { from, to } = lineBounds(state.value, state.start, state.end);
26842
+ const line = state.value.slice(from, to);
26843
+ const current = /^(#{1,6})\s/.exec(line);
26844
+ const level = current ? current[1].length : 0;
26845
+ const body = current ? line.slice(current[0].length) : line;
26846
+ const next = level >= MAX_HEADING ? '' : `${'#'.repeat(level + 1)} `;
26847
+ const text = `${next}${body}`;
26848
+ return replace(state, from, to, text, {
26849
+ start: from + text.length,
26850
+ end: from + text.length,
26851
+ });
26852
+ }
26853
+ function prefixLines(state, marker) {
26854
+ const { from, to } = lineBounds(state.value, state.start, state.end);
26855
+ const text = state.value
26856
+ .slice(from, to)
26857
+ .split('\n')
26858
+ .map((line) => (line.startsWith(marker) ? line.slice(marker.length) : `${marker}${line}`))
26859
+ .join('\n');
26860
+ return replace(state, from, to, text, {
26861
+ start: from,
26862
+ end: from + text.length,
26863
+ });
26864
+ }
26865
+ function link(state) {
26866
+ const selected = state.value.slice(state.start, state.end) || 'text';
26867
+ const text = `[${selected}](url)`;
26868
+ const urlStart = state.start + text.length - 'url)'.length;
26869
+ return replace(state, state.start, state.end, text, {
26870
+ start: urlStart,
26871
+ end: urlStart + 'url'.length,
26872
+ });
26873
+ }
26874
+ function code(state) {
26875
+ const selected = state.value.slice(state.start, state.end);
26876
+ const text = '```\n' + selected + '\n```';
26877
+ return replace(state, state.start, state.end, text, {
26878
+ start: state.start + 4,
26879
+ end: state.start + 4 + selected.length,
26880
+ });
26881
+ }
26882
+ function table(state) {
26883
+ const { value, start, end } = state;
26884
+ const needsBreak = start > 0 && value[start - 1] !== '\n';
26885
+ const text = `${needsBreak ? '\n' : ''}${TABLE_SKELETON}\n`;
26886
+ return replace(state, start, end, text, {
26887
+ start: start + text.length,
26888
+ end: start + text.length,
26889
+ });
26890
+ }
26891
+ function applyDocEdit(action, state) {
26892
+ const delimiter = WRAPPERS[action];
26893
+ if (delimiter)
26894
+ return wrap(state, delimiter);
26895
+ switch (action) {
26896
+ case 'heading':
26897
+ return heading(state);
26898
+ case 'list':
26899
+ return prefixLines(state, '- ');
26900
+ case 'quote':
26901
+ return prefixLines(state, '> ');
26902
+ case 'link':
26903
+ return link(state);
26904
+ case 'code':
26905
+ return code(state);
26906
+ case 'table':
26907
+ return table(state);
26908
+ default:
26909
+ return state;
26910
+ }
26911
+ }
26912
+
26913
+ const DOC_TOOLBAR_GROUPS = [
26914
+ ['bold', 'italic', 'strike'],
26915
+ ['heading', 'list', 'quote'],
26916
+ ['link', 'code', 'table'],
26917
+ ];
26918
+ /** The IconAsset each action shows. `strike` is the one name that differs. */
26919
+ const DOC_ACTION_ICONS = {
26920
+ bold: 'bold',
26921
+ italic: 'italic',
26922
+ strike: 'strikethrough',
26923
+ heading: 'heading',
26924
+ list: 'list',
26925
+ quote: 'quote',
26926
+ link: 'link',
26927
+ code: 'code',
26928
+ table: 'table',
26929
+ };
26930
+ /** The translation key behind an action's label, e.g. `doc-action-bold`. */
26931
+ function docActionKey(action) {
26932
+ return `doc-action-${action}`;
26933
+ }
26934
+ /**
26935
+ * Every action reaches a group exactly once — the toolbar is the whole action
26936
+ * list, drawn in a different order, never a subset of it.
26937
+ */
26938
+ function ungroupedDocActions() {
26939
+ const grouped = new Set(DOC_TOOLBAR_GROUPS.flat());
26940
+ return DOC_EDIT_ACTIONS.filter((action) => !grouped.has(action));
26941
+ }
26942
+
26943
+ /**
26944
+ * What is wrong with a document, as a pure transform over its markdown.
26945
+ *
26946
+ * Markdown never fails to parse — `~~~~` followed by a bare fence renders
26947
+ * happily as an emphasised run of tildes inside a heading — so "parse error"
26948
+ * cannot mean "the parser threw". It means a construct whose output cannot be
26949
+ * what the author meant, and that judgement is made here rather than by the
26950
+ * parser (libs/one ADR 0035).
26951
+ *
26952
+ * Deterministic on purpose: the editor must be able to say a document is
26953
+ * broken with no [AiProvider] configured, because an endpoint the User has not
26954
+ * pasted a token for may not take validation down with it (m-one-ui ADR 0048).
26955
+ *
26956
+ * The two `dropped` kinds answer for the renderer: `m-doc` drops raw HTML and
26957
+ * images without a word, and a silent drop is the surprise this list exists to
26958
+ * remove. They are found in the source rather than reported by the render so
26959
+ * that checking a document never costs a parse.
26960
+ */
26961
+ const FENCE = /^\s{0,3}(`{3,}|~{3,})/;
26962
+ const HEADING = /^\s{0,3}(#{1,6})\s*(.*)$/;
26963
+ const TABLE_ROW = /^\s{0,3}\|.*\|\s*$/;
26964
+ const RAW_HTML = /<\/?[a-z][a-z0-9-]*(\s[^<>]*)?\/?>/i;
26965
+ const IMAGE = /!\[[^\]]*\]\(/;
26966
+ /** Four or more of a wrapper's character: a wrap applied over its own output. */
26967
+ const STACKED = /(\*{4,}|_{4,}|~{4,})/;
26968
+ /** `[text](` with no closing paren on the same line. */
26969
+ const DANGLING_LINK = /\[[^\]]*\]\([^)]*$/;
26970
+ /** A table row's cell count, ignoring the leading and trailing pipes. */
26971
+ function cellCount(line) {
26972
+ const trimmed = line.trim().replace(/^\|/, '').replace(/\|$/, '');
26973
+ // An escaped pipe is content, not a cell boundary.
26974
+ return trimmed.split(/(?<!\\)\|/).length;
26975
+ }
26976
+ function problem(kind, line, text) {
26977
+ return { kind, line, text: text.trim().slice(0, 120) };
26978
+ }
26979
+ /**
26980
+ * Markdown in, everything the renderer will quietly do differently out.
26981
+ *
26982
+ * An empty document has no problems — a document nobody has written yet is not
26983
+ * a broken one.
26984
+ */
26985
+ function checkDoc(markdown) {
26986
+ if (!markdown.trim())
26987
+ return [];
26988
+ const lines = markdown.split('\n');
26989
+ const problems = [];
26990
+ let fenceMarker;
26991
+ let fenceLine = 0;
26992
+ let fenceBody = 0;
26993
+ let tableHeaderCells = 0;
26994
+ let inTable = false;
26995
+ lines.forEach((line, index) => {
26996
+ const number = index + 1;
26997
+ const fence = FENCE.exec(line);
26998
+ if (fence) {
26999
+ if (fenceMarker && line.trim().startsWith(fenceMarker)) {
27000
+ if (fenceBody === 0) {
27001
+ problems.push(problem('empty-fence', fenceLine, line));
27002
+ }
27003
+ fenceMarker = undefined;
27004
+ return;
27005
+ }
27006
+ if (!fenceMarker) {
27007
+ fenceMarker = fence[1][0].repeat(3);
27008
+ fenceLine = number;
27009
+ fenceBody = 0;
27010
+ return;
27011
+ }
27012
+ }
27013
+ if (fenceMarker) {
27014
+ if (line.trim())
27015
+ fenceBody += 1;
27016
+ return;
27017
+ }
27018
+ const heading = HEADING.exec(line);
27019
+ if (heading && !heading[2].trim()) {
27020
+ problems.push(problem('empty-heading', number, line || '#'));
27021
+ }
27022
+ if (TABLE_ROW.test(line)) {
27023
+ if (!inTable) {
27024
+ inTable = true;
27025
+ tableHeaderCells = cellCount(line);
27026
+ }
27027
+ else if (cellCount(line) !== tableHeaderCells) {
27028
+ // The divider counts too: a divider narrower than its header is the
27029
+ // one table mistake `marked` answers by rendering no table at all.
27030
+ problems.push(problem('table-width', number, line));
27031
+ }
27032
+ }
27033
+ else if (inTable && !line.trim()) {
27034
+ inTable = false;
27035
+ tableHeaderCells = 0;
27036
+ }
27037
+ if (STACKED.test(line)) {
27038
+ problems.push(problem('stacked-marker', number, line));
27039
+ }
27040
+ if (DANGLING_LINK.test(line)) {
27041
+ problems.push(problem('dangling-link', number, line));
27042
+ }
27043
+ if (IMAGE.test(line)) {
27044
+ problems.push(problem('dropped-image', number, line));
27045
+ }
27046
+ if (RAW_HTML.test(line)) {
27047
+ problems.push(problem('dropped-html', number, line));
27048
+ }
27049
+ });
27050
+ if (fenceMarker) {
27051
+ problems.push(problem('unclosed-fence', fenceLine, lines[fenceLine - 1]));
27052
+ }
27053
+ return problems.sort((a, b) => a.line - b.line);
27054
+ }
27055
+ /** The translation key behind a problem's message, e.g. `doc-problem-table-width`. */
27056
+ function docProblemKey(kind) {
27057
+ return `doc-problem-${kind}`;
27058
+ }
27059
+ /** Where a problem sits in the source, for a click that moves the caret. */
27060
+ function offsetOfLine(markdown, line) {
27061
+ const lines = markdown.split('\n');
27062
+ const upTo = Math.min(Math.max(line, 1), lines.length) - 1;
27063
+ return lines.slice(0, upTo).reduce((sum, text) => sum + text.length + 1, 0);
27064
+ }
27065
+
27066
+ /**
27067
+ * Authors one DocAsset: the markdown on the left, what `m-doc` makes of it on
27068
+ * the right.
27069
+ *
27070
+ * Source plus preview rather than WYSIWYG — a contenteditable surface needs an
27071
+ * inverse HTML→markdown transform that has to agree with the parser forever,
27072
+ * and the preview here *is* the parser, so the two cannot drift.
27073
+ *
27074
+ * A ControlValueAccessor from the first day: that is the whole of what lets a
27075
+ * FieldControl bind one later without this component changing. It holds no
27076
+ * assets, fetches nothing and knows no tiers — the markdown arrives through the
27077
+ * form and leaves the same way.
27078
+ *
27079
+ * Of an AI exchange it draws one thing: the proposal, in the preview pane,
27080
+ * with the two buttons that answer it. Asking for one is not an editor state
27081
+ * at all — the instruction, the clarifying question and the outline to confirm
27082
+ * are a request, and a request is drawn by the host in its own docked
27083
+ * SidePanel beside this one, where no pane here is spent on it (m-one-ui ADR
27084
+ * 0048, ADR 0147). A host that binds no proposal shows no AI at all.
27085
+ */
27086
+ class DocEditorComponent {
27087
+ groups = DOC_TOOLBAR_GROUPS;
27088
+ icons = DOC_ACTION_ICONS;
27089
+ docActionKey = docActionKey;
27090
+ translate = inject(TranslateService);
27091
+ value = signal('', ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
27092
+ disabled = signal(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
27093
+ /** Narrow screens show one pane at a time; wide ones show both. */
27094
+ previewOnly = signal(false, ...(ngDevMode ? [{ debugName: "previewOnly" }] : /* istanbul ignore next */ []));
27095
+ /**
27096
+ * Markdown awaiting a verdict. The one piece of an AI exchange the editor
27097
+ * draws, because it is the one piece that is an editor state: it renders in
27098
+ * the preview pane while the textarea keeps the document underneath, so
27099
+ * dropping it is structurally a no-op rather than an undo that has to work.
27100
+ *
27101
+ * Everything before it — the instruction, the one clarifying question, the
27102
+ * outline to confirm — is a request the host asks for in its own docked
27103
+ * SidePanel, where no pane of this editor is involved (m-one-ui ADR 0147).
27104
+ */
27105
+ proposal = input(undefined, ...(ngDevMode ? [{ debugName: "proposal" }] : /* istanbul ignore next */ []));
27106
+ proposalResolved = output();
27107
+ constructor() {
27108
+ // The panes show one surface at a time, and a proposal is something to
27109
+ // read: arriving while the source is up, it would otherwise be an offer
27110
+ // rendered in a pane the editor is hiding.
27111
+ effect(() => {
27112
+ if (this.proposal())
27113
+ this.previewOnly.set(true);
27114
+ });
27115
+ }
27116
+ source = viewChild('source', ...(ngDevMode ? [{ debugName: "source" }] : /* istanbul ignore next */ []));
27117
+ /**
27118
+ * The document's own field. A `ln` Field rather than a bare element so the
27119
+ * editor is painted by the theme like every other input, with no label and
27120
+ * no error list: the problems are drawn below the panes, by line.
27121
+ */
27122
+ sourceConfig = computed(() => ({
27123
+ name: 'doc_source',
27124
+ type: InputType.TEXTAREA,
27125
+ placeholder: 'document',
27126
+ spellcheck: false,
27127
+ // Grows with the document. The floor is the pane, so a short document
27128
+ // still fills the panel; a long one pushes the panes into their own
27129
+ // scroll rather than a scrollbar inside a field inside a panel.
27130
+ autoGrow: true,
27131
+ }), ...(ngDevMode ? [{ debugName: "sourceConfig" }] : /* istanbul ignore next */ []));
27132
+ /**
27133
+ * What the renderer will quietly do differently, recomputed as the document
27134
+ * is typed. Deterministic and local: no provider, no network (ADR 0035).
27135
+ */
27136
+ problems = computed(() => checkDoc(this.value()), ...(ngDevMode ? [{ debugName: "problems" }] : /* istanbul ignore next */ []));
27137
+ onChange = () => undefined;
27138
+ onTouched = () => undefined;
27139
+ writeValue(value) {
27140
+ this.value.set(value ?? '');
27141
+ }
27142
+ registerOnChange(fn) {
27143
+ this.onChange = fn;
27144
+ }
27145
+ registerOnTouched(fn) {
27146
+ this.onTouched = fn;
27147
+ }
27148
+ setDisabledState(isDisabled) {
27149
+ this.disabled.set(isDisabled);
27150
+ }
27151
+ onBlur = () => this.onTouched();
27152
+ togglePreview = () => this.previewOnly.update((only) => !only);
27153
+ /**
27154
+ * Accept is the only gesture that moves a proposal into the document. Until
27155
+ * then the textarea is authoritative, so dropping one is structurally a
27156
+ * no-op rather than an undo that has to work.
27157
+ */
27158
+ acceptProposal = () => {
27159
+ const offer = this.proposal();
27160
+ if (!offer)
27161
+ return;
27162
+ this.commit(offer.markdown);
27163
+ this.source()?.writeSelection(offer.markdown, offer.markdown.length, offer.markdown.length);
27164
+ this.proposalResolved.emit(true);
27165
+ };
27166
+ dropProposal = () => this.proposalResolved.emit(false);
27167
+ /** Line and message on one Button, the offending text beside it. */
27168
+ problemLabel = (problem) => `${problem.line} · ${this.translate.translate(docProblemKey(problem.kind))}`;
27169
+ /** A problem points at a line, and clicking it puts the caret there. */
27170
+ goTo = (problem) => {
27171
+ const field = this.source();
27172
+ if (!field)
27173
+ return;
27174
+ const offset = offsetOfLine(this.value(), problem.line);
27175
+ this.previewOnly.set(false);
27176
+ field.writeSelection(this.value(), offset, offset + problem.text.length);
27177
+ };
27178
+ /** The textarea owns the caret, so an edit reads it and hands it back. */
27179
+ edit = (action) => {
27180
+ const field = this.source();
27181
+ const selection = field?.selection();
27182
+ if (!field || !selection || this.disabled())
27183
+ return;
27184
+ const next = applyDocEdit(action, selection);
27185
+ this.commit(next.value);
27186
+ field.writeSelection(next.value, next.start, next.end);
27187
+ };
27188
+ commit(value) {
27189
+ this.value.set(value);
27190
+ this.onChange(value);
27191
+ }
27192
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DocEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
27193
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: DocEditorComponent, isStandalone: true, selector: "m-doc-editor", inputs: { proposal: { classPropertyName: "proposal", publicName: "proposal", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { proposalResolved: "proposalResolved" }, providers: [
27194
+ {
27195
+ provide: NG_VALUE_ACCESSOR,
27196
+ useExisting: forwardRef(() => DocEditorComponent),
27197
+ multi: true,
27198
+ },
27199
+ ], viewQueries: [{ propertyName: "source", first: true, predicate: ["source"], descendants: true, isSignal: true }], ngImport: i0, template: `
27200
+ <div class="m-doc-editor" [class.m-doc-editor--preview]="previewOnly()">
27201
+ <div class="m-doc-editor__toolbar">
27202
+ <!-- The edits belong to the source; reading is not a thing to edit. -->
27203
+ @if (!previewOnly()) {
27204
+ @for (group of groups; track $index) {
27205
+ @if (!$first) {
27206
+ <span class="m-doc-editor__divider"></span>
27207
+ }
27208
+ @for (action of group; track action) {
27209
+ <m-button
27210
+ [attr.data-doc-action]="action"
27211
+ variant="ghost"
27212
+ [icon]="icons[action]"
27213
+ [one]="true"
27214
+ iconOnly="true"
27215
+ [label]="docActionKey(action) | translate"
27216
+ noTranslate="true"
27217
+ [disabled]="disabled() || !!proposal()"
27218
+ (clicked)="edit(action)"
27219
+ />
27220
+ }
27221
+ }
27222
+
27223
+ <span class="m-doc-editor__divider"></span>
27224
+ }
27225
+ <m-button
27226
+ variant="ghost"
27227
+ [icon]="previewOnly() ? 'pencil' : 'eye'"
27228
+ [one]="true"
27229
+ iconOnly="true"
27230
+ [label]="(previewOnly() ? 'write' : 'preview') | translate"
27231
+ noTranslate="true"
27232
+ (clicked)="togglePreview()"
27233
+ />
27234
+
27235
+ <!--
27236
+ Whatever the host hangs on the document itself — the panel's own menu
27237
+ of languages, AI and delete. It rides the toolbar because it is one
27238
+ more icon over the same document, not a row of its own above it.
27239
+ -->
27240
+ <div class="m-doc-editor__host-actions">
27241
+ <ng-content select="[docActions]" />
27242
+ </div>
27243
+ </div>
27244
+
27245
+ <div class="m-doc-editor__panes">
27246
+ <m-textarea-input
27247
+ #source
27248
+ [config]="sourceConfig()"
27249
+ [value]="value()"
27250
+ [disabled]="disabled()"
27251
+ (valueChange)="commit($event)"
27252
+ (touchedChange)="onBlur()"
27253
+ />
27254
+
27255
+ <div class="m-doc-editor__preview">
27256
+ @if (proposal(); as offer) {
27257
+ <!--
27258
+ The verdict rides the pane the proposal is rendered in: the offer
27259
+ and the two buttons that answer it are one thing, and a verdict
27260
+ asked for from another surface is a verdict about something the
27261
+ User has to look somewhere else to read.
27262
+ -->
27263
+ <div class="m-doc-editor__proposal" data-doc-ai="proposal">
27264
+ <p class="m-doc-editor__preview-banner">
27265
+ {{
27266
+ (offer.origin === 'fix'
27267
+ ? 'doc-ai-proposal-fix'
27268
+ : 'doc-ai-proposal-write'
27269
+ ) | translate
27270
+ }}
27271
+ </p>
27272
+ <m-section-button-group>
27273
+ <m-button
27274
+ variant="primary"
27275
+ [label]="'doc-ai-accept' | translate"
27276
+ noTranslate="true"
27277
+ (clicked)="acceptProposal()"
27278
+ />
27279
+ <m-button
27280
+ variant="ghost"
27281
+ [label]="'doc-ai-drop' | translate"
27282
+ noTranslate="true"
27283
+ (clicked)="dropProposal()"
27284
+ />
27285
+ </m-section-button-group>
27286
+ </div>
27287
+ <m-doc [designSrc]="offer.markdown" />
27288
+ } @else {
27289
+ <m-doc [designSrc]="value()" />
27290
+ }
27291
+ </div>
27292
+ </div>
27293
+
27294
+ @if (problems().length) {
27295
+ <ul class="m-doc-editor__problems" data-doc-problems>
27296
+ @for (problem of problems(); track $index) {
27297
+ <li class="m-doc-editor__problem" [attr.data-doc-problem]="problem.kind">
27298
+ <m-button
27299
+ variant="ghost"
27300
+ icon="alert-circle"
27301
+ [one]="true"
27302
+ [label]="problemLabel(problem)"
27303
+ noTranslate="true"
27304
+ (clicked)="goTo(problem)"
27305
+ />
27306
+ <code>{{ problem.text }}</code>
27307
+ </li>
27308
+ }
27309
+ </ul>
27310
+ }
27311
+ </div>
27312
+ `, 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%;height:100%;min-height:0}.m-doc-editor{display:flex;flex-direction:column;gap:.5rem;width:100%;height:100%;min-height:0}.m-doc-editor__toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem;flex:0 0 auto}.m-doc-editor__host-actions{display:flex;align-items:center;margin-left:auto}.m-doc-editor__divider{width:1px;align-self:stretch;margin:.15rem .35rem;background:var(--m-backdrop-border)}.m-doc-editor__proposal{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.4rem;margin-bottom:.5rem;padding-bottom:.5rem;border-bottom:var(--m-input-border-width, 1px) solid color-mix(in srgb,var(--m-text) 18%,var(--m-background))}.m-doc-editor__preview-banner{margin:0;font-size:.75rem;opacity:.75}.m-doc-editor__panes{display:grid;grid-template-columns:1fr;grid-template-rows:minmax(0,1fr);gap:.75rem;flex:1 1 auto;min-height:0;overflow:auto}.m-doc-editor__preview{height:100%;min-height:0;padding:.75rem;border:var(--m-input-border-width, 1px) solid color-mix(in srgb,var(--m-text) 18%,var(--m-background));border-radius:.5rem;overflow:auto}.m-doc-editor__problems{flex:0 0 auto;max-height:9rem;margin:0;padding:0;overflow-y:auto;list-style:none}.m-doc-editor__problem{display:flex;align-items:center;gap:.4rem;width:100%;padding:.25rem .35rem;border:0;border-radius:.3rem;background:transparent;color:inherit;font-size:.75rem;text-align:left;cursor:pointer}.m-doc-editor__problem:hover{background:color-mix(in srgb,var(--m-focus) 6%,var(--m-background))}.m-doc-editor__problem code{opacity:.6;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.m-doc-editor__problem-line{min-width:1.5rem;opacity:.6}.m-doc-editor--preview .m-doc-editor__source{display:none}.m-doc-editor:not(.m-doc-editor--preview) .m-doc-editor__preview{display:none}m-textarea-input{min-height:100%;--m-textarea-input-height: 100%;--m-textarea-input-wrapper-height: 100%;font-family:monospace;font-size:.9rem}\n"], dependencies: [{ kind: "component", type: DocComponent, selector: "m-doc", inputs: ["name", "remote", "url", "designSrc", "variant", "density"] }, { kind: "component", type: ButtonComponent, selector: "m-button,m-one-button", inputs: ["config", "color", "labelClass", "fullWidth", "nav", "navParams", "href", "disabled", "variant", "name", "baseUrl", "one", "remote", "label", "noTranslate", "params", "noNative", "icon", "isRightIcon", "iconOnly", "stacked", "imgSrc", "nonClickable", "inverted", "isSubmit", "tabindex"], outputs: ["configChange", "clicked"] }, { kind: "component", type: SectionButtonGroupComponent, selector: "m-section-button-group", inputs: ["vertical", "align", "variant", "size", "fullWidth"] }, { kind: "component", type: TextareaInputComponent, selector: "m-textarea-input" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
27313
+ }
27314
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DocEditorComponent, decorators: [{
27315
+ type: Component,
27316
+ args: [{ selector: 'm-doc-editor', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
27317
+ DocComponent,
27318
+ ButtonComponent,
27319
+ SectionButtonGroupComponent,
27320
+ TextareaInputComponent,
27321
+ TranslatePipe,
27322
+ ], providers: [
27323
+ {
27324
+ provide: NG_VALUE_ACCESSOR,
27325
+ useExisting: forwardRef(() => DocEditorComponent),
27326
+ multi: true,
27327
+ },
27328
+ ], template: `
27329
+ <div class="m-doc-editor" [class.m-doc-editor--preview]="previewOnly()">
27330
+ <div class="m-doc-editor__toolbar">
27331
+ <!-- The edits belong to the source; reading is not a thing to edit. -->
27332
+ @if (!previewOnly()) {
27333
+ @for (group of groups; track $index) {
27334
+ @if (!$first) {
27335
+ <span class="m-doc-editor__divider"></span>
27336
+ }
27337
+ @for (action of group; track action) {
27338
+ <m-button
27339
+ [attr.data-doc-action]="action"
27340
+ variant="ghost"
27341
+ [icon]="icons[action]"
27342
+ [one]="true"
27343
+ iconOnly="true"
27344
+ [label]="docActionKey(action) | translate"
27345
+ noTranslate="true"
27346
+ [disabled]="disabled() || !!proposal()"
27347
+ (clicked)="edit(action)"
27348
+ />
27349
+ }
27350
+ }
27351
+
27352
+ <span class="m-doc-editor__divider"></span>
27353
+ }
27354
+ <m-button
27355
+ variant="ghost"
27356
+ [icon]="previewOnly() ? 'pencil' : 'eye'"
27357
+ [one]="true"
27358
+ iconOnly="true"
27359
+ [label]="(previewOnly() ? 'write' : 'preview') | translate"
27360
+ noTranslate="true"
27361
+ (clicked)="togglePreview()"
27362
+ />
27363
+
27364
+ <!--
27365
+ Whatever the host hangs on the document itself — the panel's own menu
27366
+ of languages, AI and delete. It rides the toolbar because it is one
27367
+ more icon over the same document, not a row of its own above it.
27368
+ -->
27369
+ <div class="m-doc-editor__host-actions">
27370
+ <ng-content select="[docActions]" />
27371
+ </div>
27372
+ </div>
27373
+
27374
+ <div class="m-doc-editor__panes">
27375
+ <m-textarea-input
27376
+ #source
27377
+ [config]="sourceConfig()"
27378
+ [value]="value()"
27379
+ [disabled]="disabled()"
27380
+ (valueChange)="commit($event)"
27381
+ (touchedChange)="onBlur()"
27382
+ />
27383
+
27384
+ <div class="m-doc-editor__preview">
27385
+ @if (proposal(); as offer) {
27386
+ <!--
27387
+ The verdict rides the pane the proposal is rendered in: the offer
27388
+ and the two buttons that answer it are one thing, and a verdict
27389
+ asked for from another surface is a verdict about something the
27390
+ User has to look somewhere else to read.
27391
+ -->
27392
+ <div class="m-doc-editor__proposal" data-doc-ai="proposal">
27393
+ <p class="m-doc-editor__preview-banner">
27394
+ {{
27395
+ (offer.origin === 'fix'
27396
+ ? 'doc-ai-proposal-fix'
27397
+ : 'doc-ai-proposal-write'
27398
+ ) | translate
27399
+ }}
27400
+ </p>
27401
+ <m-section-button-group>
27402
+ <m-button
27403
+ variant="primary"
27404
+ [label]="'doc-ai-accept' | translate"
27405
+ noTranslate="true"
27406
+ (clicked)="acceptProposal()"
27407
+ />
27408
+ <m-button
27409
+ variant="ghost"
27410
+ [label]="'doc-ai-drop' | translate"
27411
+ noTranslate="true"
27412
+ (clicked)="dropProposal()"
27413
+ />
27414
+ </m-section-button-group>
27415
+ </div>
27416
+ <m-doc [designSrc]="offer.markdown" />
27417
+ } @else {
27418
+ <m-doc [designSrc]="value()" />
27419
+ }
27420
+ </div>
27421
+ </div>
27422
+
27423
+ @if (problems().length) {
27424
+ <ul class="m-doc-editor__problems" data-doc-problems>
27425
+ @for (problem of problems(); track $index) {
27426
+ <li class="m-doc-editor__problem" [attr.data-doc-problem]="problem.kind">
27427
+ <m-button
27428
+ variant="ghost"
27429
+ icon="alert-circle"
27430
+ [one]="true"
27431
+ [label]="problemLabel(problem)"
27432
+ noTranslate="true"
27433
+ (clicked)="goTo(problem)"
27434
+ />
27435
+ <code>{{ problem.text }}</code>
27436
+ </li>
27437
+ }
27438
+ </ul>
27439
+ }
27440
+ </div>
27441
+ `, 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%;height:100%;min-height:0}.m-doc-editor{display:flex;flex-direction:column;gap:.5rem;width:100%;height:100%;min-height:0}.m-doc-editor__toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem;flex:0 0 auto}.m-doc-editor__host-actions{display:flex;align-items:center;margin-left:auto}.m-doc-editor__divider{width:1px;align-self:stretch;margin:.15rem .35rem;background:var(--m-backdrop-border)}.m-doc-editor__proposal{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.4rem;margin-bottom:.5rem;padding-bottom:.5rem;border-bottom:var(--m-input-border-width, 1px) solid color-mix(in srgb,var(--m-text) 18%,var(--m-background))}.m-doc-editor__preview-banner{margin:0;font-size:.75rem;opacity:.75}.m-doc-editor__panes{display:grid;grid-template-columns:1fr;grid-template-rows:minmax(0,1fr);gap:.75rem;flex:1 1 auto;min-height:0;overflow:auto}.m-doc-editor__preview{height:100%;min-height:0;padding:.75rem;border:var(--m-input-border-width, 1px) solid color-mix(in srgb,var(--m-text) 18%,var(--m-background));border-radius:.5rem;overflow:auto}.m-doc-editor__problems{flex:0 0 auto;max-height:9rem;margin:0;padding:0;overflow-y:auto;list-style:none}.m-doc-editor__problem{display:flex;align-items:center;gap:.4rem;width:100%;padding:.25rem .35rem;border:0;border-radius:.3rem;background:transparent;color:inherit;font-size:.75rem;text-align:left;cursor:pointer}.m-doc-editor__problem:hover{background:color-mix(in srgb,var(--m-focus) 6%,var(--m-background))}.m-doc-editor__problem code{opacity:.6;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.m-doc-editor__problem-line{min-width:1.5rem;opacity:.6}.m-doc-editor--preview .m-doc-editor__source{display:none}.m-doc-editor:not(.m-doc-editor--preview) .m-doc-editor__preview{display:none}m-textarea-input{min-height:100%;--m-textarea-input-height: 100%;--m-textarea-input-wrapper-height: 100%;font-family:monospace;font-size:.9rem}\n"] }]
27442
+ }], ctorParameters: () => [], propDecorators: { proposal: [{ type: i0.Input, args: [{ isSignal: true, alias: "proposal", required: false }] }], proposalResolved: [{ type: i0.Output, args: ["proposalResolved"] }], source: [{ type: i0.ViewChild, args: ['source', { isSignal: true }] }] } });
27443
+
27444
+ /**
27445
+ * The shapes an AI-assisted document write passes through, named here so the
27446
+ * editor can draw them without knowing who answers.
27447
+ *
27448
+ * `libs/one` holds no endpoint, no token and no prompt: those are workspace
27449
+ * state owned by the editor app (m-one-ui ADR 0048), and this library ships
27450
+ * inside every emitted app. What lives here is the vocabulary of the exchange
27451
+ * — an instruction goes out, an outline comes back for the User to confirm,
27452
+ * and a proposal arrives that the User accepts or drops (m-one-ui ADR 0147).
27453
+ *
27454
+ * Only `DocProposal` reaches `m-doc-editor`. The instruction, the question and
27455
+ * the outline are drawn by the host's own docked SidePanel, and these shapes
27456
+ * are named here because the two surfaces have to agree on them, not because
27457
+ * the editor draws them.
27458
+ */
27459
+
26450
27460
  var TableFilterCondition;
26451
27461
  (function (TableFilterCondition) {
26452
27462
  TableFilterCondition["Eq"] = "eq";
@@ -36994,5 +38004,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
36994
38004
  * Generated bundle index. Do not edit.
36995
38005
  */
36996
38006
 
36997
- export { ColComponent as $, ACCESS_DOMAINS as A, ButtonComponent as B, Assets as C, AuthActivityPageComponent as D, AuthApiService as E, AuthStore as F, AutosizeDirective as G, HeaderComponent$1 as H, InputType as I, BadgeComponent as J, BandingComponent as K, LabelComponent as L, MODAL_REF as M, BaseArrayInputComponent as N, BaseRootWebComponent as O, BaseWebComponent as P, ButtonGroupComponent as Q, RangeInputComponent as R, COMPONENT_INPUT_REGISTRY as S, TranslatePipe as T, CardComponent as U, CardWrapperComponent as V, CarouselComponent as W, ChartComponent as X, ChatBubbleComponent as Y, CheckboxInputComponent as Z, ClearableInputComponent as _, MIN_ZOOM as a, MHeroColorDirective as a$, ColorPickerInputComponent as a0, CommentItemComponent as a1, CommentsApiService as a2, CommentsComponent as a3, CommentsStore as a4, CompactNumberPipe as a5, ComponentInputComponent as a6, ComponentStepperComponent as a7, ConfigComponent as a8, ConfirmComponent as a9, FileService as aA, FileUploadDirective as aB, FileUploadInputComponent as aC, FlexComponent as aD, FlexItemComponent as aE, FormGroupComponent as aF, FrameComponent as aG, FreezeService as aH, GRID_BREAKPOINTS as aI, GetNavService as aJ, HighlightDirective as aK, HttpService as aL, ICON_SOURCE as aM, IS_SIDE_PANEL as aN, IconComponent as aO, ImgComponent as aP, InstrumentScoreComponent as aQ, InterceptorObservables as aR, JumbotronComponent as aS, KeyValueComponent as aT, LAYOUT_ASSET_FOLDER as aU, LOGIN_COMPONENT as aV, LOGIN_STORE as aW, LanguageComponent as aX, ListComponent as aY, LogoComponent as aZ, MAG_SOCKET_EVENT as a_, ContextMenuComponent as aa, CustomIconClass as ab, CustomIconEditComponent as ac, DEFAULT_DENIAL as ad, DEFAULT_FILTER_RANGE_MODE as ae, DEFAULT_FILTER_VARIANT as af, DEFAULT_NAV_PARAM as ag, DEFAULT_NAV_SEGMENT as ah, DEFAULT_SIZE as ai, DashboardCardComponent as aj, DateInputComponent as ak, DatePickerComponent as al, DeviceService as am, DomService as an, Domain as ao, DotGridComponent as ap, DragListDirective as aq, DragListItemDirective as ar, DraggableDirective as as, DropdownInputComponent as at, FILTER_GROUP_CONTEXT as au, FILTER_RANGE_MODES as av, FILTER_VARIANTS as aw, FLEX_VARIANTS as ax, FOLDER_PICK_LISTENER as ay, FORM_ASSET_FOLDER as az, MAX_ZOOM as b, SEARCH_QUERY as b$, MHeroComponent as b0, MODAL_STORE_REF as b1, MRefDirective as b2, MStepComponent as b3, MURL_PARAM as b4, MURL_SEP as b5, ManifestEnrichmentService as b6, MenuComponent as b7, ModalDirective as b8, ModalRef as b9, OPTIONS_SOURCE as bA, OVERLAY_WIDGETS as bB, OneApp as bC, OptionsSourceDirective as bD, OverlayBodyComponent as bE, OverlayRef as bF, OverlayService as bG, PLATFORM_BUTTON_NAV_IDS as bH, PLATFORM_EXTENSIBLE_NAV_IDS as bI, PLATFORM_NAV_MAP as bJ, PLATFORM_ROOT_CHILDREN as bK, PaginationComponent as bL, PanelComponent as bM, PercentagePipe as bN, PlaygroundComponent as bO, PositionDirective as bP, PwaInstallComponent as bQ, ROOT_NAV$1 as bR, RadioGroupComponent as bS, RadioInputComponent as bT, RatingInputComponent as bU, ReactiveElementComponent as bV, RemoteComponent as bW, RemoteLoaderService as bX, ResizeElementComponent as bY, RouteContainer as bZ, RowComponent as b_, ModalStore as ba, MoneyPipe as bb, MultiRangeInputComponent as bc, MurlUrlSerializer as bd, NAV_DEFAULT_MURL as be, NAV_ID_SEP as bf, NAV_MAIN_BUTTONS as bg, NAV_SEGMENT_RE as bh, NAV_STORE_REF as bi, NAV_WC_COMPONENTS as bj, NAV_WIDGET_MAP as bk, NavComponent as bl, NavDetailsComponent as bm, NavHeaderComponent as bn, NavMenuComponent as bo, NavStore as bp, NavTrailComponent as bq, NothingComponent as br, NotificationElementComponent as bs, NotificationGroupComponent as bt, NotificationPopupComponent as bu, NotificationService as bv, NotificationStore as bw, NotificationType as bx, NotificationWidgetComponent as by, ONE_ASSET_BASE_URL as bz, cropRect as c, ThemeDataService as c$, SEARCH_RESULTS_EVENT as c0, SECTION_ACCORDION_GROUP as c1, SECTION_FORM_CONTEXT as c2, SHARED_ICONS as c3, SIZE_CONTEXT as c4, ScoreComponent as c5, ScrollComponent as c6, ScrollService as c7, SearchPanelComponent as c8, SearchStore as c9, 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, ThemeComponent as c_, SearchUserPanelComponent as ca, SectionAccordionDirective as cb, SectionAccordionGroupDirective as cc, SectionBackComponent as cd, SectionBadgesComponent as ce, SectionButtonGroupComponent as cf, SectionCardComponent as cg, SectionCarouselComponent as ch, SectionComponent as ci, SectionFilterComponent as cj, SectionFilterGroupComponent as ck, SectionFilterMenuComponent as cl, SectionFilterPanelComponent as cm, SectionFilterRangePanelComponent as cn, SectionFooterComponent as co, SectionFormComponent as cp, SectionFormItemComponent as cq, SectionHeaderComponent as cr, SectionHeroComponent as cs, SectionPaginationComponent as ct, SectionSearchComponent as cu, SectionStepperComponent as cv, SectionTabsComponent as cw, SectionToggleComponent as cx, SectionToggleItemDirective as cy, SelectableCardInputComponent as cz, drawFramed as d, filterNumberList as d$, ThemeService as d0, ThemeStore as d1, TimeAgoPipe as d2, TimelineComponent as d3, ToggleButtonComponent as d4, ToggleInputComponent as d5, ToggleRadioInputComponent as d6, ToolTipDirective as d7, TooltipComponent as d8, TranslateService as d9, calculateRanks as dA, cellText as dB, checkFilterCondition as dC, childNavId as dD, claimDenial as dE, classListSignal as dF, coerceSize as dG, cornerEdge as dH, cornerSide as dI, createMap as dJ, createPlatformNavMap as dK, deriveAvatarGradient as dL, deriveContrastColor as dM, deriveOppositeColor as dN, derivePropertyName as dO, emailValidation as dP, evaluate as dQ, evaluateBool as dR, fieldBoolean as dS, fieldNumber as dT, fieldString as dU, filterHoldsList as dV, filterHoldsOneBound as dW, filterHoldsOptions as dX, filterHoldsRange as dY, filterList as dZ, filterNumber as d_, TreeGridComponent as da, URL_SEP as db, USER_STORE_REF as dc, USER_TAB_MAP as dd, UniverseComponent as de, UserApiService as df, UserAvatarComponent as dg, UserComponent as dh, UserNavComponent as di, UserSettingsComponent as dj, UserStore as dk, WC_ROUTE_CHANGED_EVENT as dl, WC_SEARCH_GROUPS as dm, WIN_USER_TAB_HOOK as dn, WIN_USER_TAB_KEY as dp, WatermarkComponent as dq, WcRouterStore as dr, WrapperInputComponent as ds, anchorNavId as dt, applyColorsToElement as du, assetOptions as dv, bootstrapMagApp as dw, bootstrapPwaInstall as dx, buildWcBaseUrl as dy, calculateLuminance as dz, encodeFramed as e, miniMarkToHtml as e$, filterOne as e0, filterPanelOf as e1, filterPanelWidth as e2, filterRange as e3, filterTreeGridRows as e4, filterValueList as e5, filterValues as e6, flattenTreeGridRows as e7, formatBadgeCount as e8, fullName as e9, isLocalhost as eA, isNavInstanceConfig as eB, isNavMenuConfig as eC, isNavRowsConfig as eD, isNavVisibilityConfig as eE, isPlatformNavId as eF, isSize as eG, isTierPreview as eH, isUrlLocalhost as eI, isValidNavId as eJ, isValidNavSegment as eK, isWebComponent as eL, linkToId as eM, linkToNav as eN, loadingActions as eO, mInterceptor as eP, manualValidation as eQ, matchFieldValidation as eR, maxLengthValidation as eS, maxValidation as eT, mergePlatformNav as eU, mergeUnique as eV, mergeUniqueBy as eW, mergeUniqueWith as eX, minAgeValidation as eY, minLengthValidation as eZ, minValidation as e_, generateClipPath as ea, generateTransform as eb, getClassList as ec, getProperty as ed, getScrollParent as ee, getTierFromPreviewPath as ef, getTreeGridRow as eg, getUniqueId as eh, getValue as ei, hasErrorComputed as ej, hexToRgb as ek, hslToRgb$1 as el, initMagmoniumApp as em, initialNotificationState as en, initialState$2 as eo, initials as ep, injectAuthenticate as eq, injectDefaultDenial as er, injectInstallApp as es, injectParentSize as et, injectScrollSticky as eu, isButtonName as ev, isCancelledComputed as ew, isExtensiblePlatformNavId as ex, isJson as ey, isLoadingComputed as ez, clampFraming as f, navIdChain as f0, navIdFor as f1, navIdSegment as f2, navIdToRoutePath as f3, navIdToSegments as f4, navParamOf as f5, navToId as f6, navVisibilityGuard as f7, normalizeAssetOptions as f8, parentNavId as f9, resolveIconSize as fA, resolvePallet as fB, resolvePatternRules as fC, resolveSize as fD, rgbToHex as fE, rgbToHsl as fF, rowHasChildren as fG, samePatterns as fH, segmentsToNavId as fI, setProperty as fJ, setTreeGridChildren as fK, settingsWidgets as fL, shouldShowBadge as fM, splitNavId as fN, splitOnMatch as fO, stringToColor as fP, toAttrBool as fQ, toAttrNumber as fR, toCssLength as fS, toHostNavId as fT, toLength$1 as fU, toLocalNavId as fV, toggleTreeGridRow as fW, unfetchedPlatformNav as fX, urlValidation as fY, parseAddress as fa, parseColor as fb, parsePatternNames as fc, patternValidation as fd, patternsValidation as fe, permissionRefusal as ff, platformNavWidgets as fg, privateGuard as fh, processImageToSvg as fi, provideAppContext as fj, provideMagAppConfig as fk, provideMagWcConfig as fl, provideMagWcRoutes as fm, provideModalComponents as fn, provideMurlUrlSerializer as fo, provideNavWidgets as fp, provideOverlayWidgets as fq, providePlatformNavWidgets as fr, provideSearch as fs, provideSizeContext as ft, provideUserTabs as fu, publicGuard as fv, readFieldPatterns as fw, renderAddress as fx, requiredValidation as fy, resolveConfigAsset as fz, BaseInputComponent as g, BaseTextInputComponent as h, initialFraming as i, TextOutputComponent as j, IS_DESIGN_MODE as k, APP_CONTEXT_REF as l, ASSET_BASE_URL as m, AccordionBodyDirective as n, outputSize as o, parseRatio as p, AccordionComponent as q, renameForType as r, AccordionGroupComponent as s, ActionComponent as t, AnimatedGraphsComponent as u, AppCardComponent as v, AppRelationType as w, AppTileComponent as x, AssetStore as y, AssetUrlPipe as z };
36998
- //# sourceMappingURL=magmonium-one-magmonium-one-C_-B9_Hl.mjs.map
38007
+ export { ColComponent as $, ACCESS_DOMAINS as A, ButtonComponent as B, Assets as C, AuthActivityPageComponent as D, AuthApiService as E, AuthStore as F, AutosizeDirective as G, HeaderComponent$1 as H, InputType as I, BadgeComponent as J, BandingComponent as K, LabelComponent as L, MODAL_REF as M, BaseArrayInputComponent as N, BaseRootWebComponent as O, BaseWebComponent as P, ButtonGroupComponent as Q, RangeInputComponent as R, COMPONENT_INPUT_REGISTRY as S, TranslatePipe as T, CardComponent as U, CardWrapperComponent as V, CarouselComponent as W, ChartComponent as X, ChatBubbleComponent as Y, CheckboxInputComponent as Z, ClearableInputComponent as _, MIN_ZOOM as a, InstrumentScoreComponent as a$, ColorPickerInputComponent as a0, CommentItemComponent as a1, CommentsApiService as a2, CommentsComponent as a3, CommentsStore as a4, CompactNumberPipe as a5, ComponentInputComponent as a6, ComponentStepperComponent as a7, ConfigComponent as a8, ConfirmComponent as a9, DotGridComponent as aA, DragListDirective as aB, DragListItemDirective as aC, DraggableDirective as aD, DropdownInputComponent as aE, FILTER_GROUP_CONTEXT as aF, FILTER_RANGE_MODES as aG, FILTER_VARIANTS as aH, FLEX_VARIANTS as aI, FOLDER_PICK_LISTENER as aJ, FORM_ASSET_FOLDER as aK, FileService as aL, FileUploadDirective as aM, FileUploadInputComponent as aN, FlexComponent as aO, FlexItemComponent as aP, FormGroupComponent as aQ, FrameComponent as aR, FreezeService as aS, GRID_BREAKPOINTS as aT, GetNavService as aU, HighlightDirective as aV, HttpService as aW, ICON_SOURCE as aX, IS_SIDE_PANEL as aY, IconComponent as aZ, ImgComponent as a_, ContextMenuComponent as aa, CustomIconClass as ab, CustomIconEditComponent as ac, DEFAULT_DENIAL as ad, DEFAULT_DOC_DENSITY as ae, DEFAULT_DOC_VARIANT as af, DEFAULT_FILTER_RANGE_MODE as ag, DEFAULT_FILTER_VARIANT as ah, DEFAULT_NAV_PARAM as ai, DEFAULT_NAV_SEGMENT as aj, DEFAULT_SIZE as ak, DOCK_MIN_PAGE_REMAINDER as al, DOCS_FOLDER as am, DOC_ACTION_ICONS as an, DOC_DENSITIES as ao, DOC_EDIT_ACTIONS as ap, DOC_TOOLBAR_GROUPS as aq, DOC_VARIANTS as ar, DashboardCardComponent as as, DateInputComponent as at, DatePickerComponent as au, DeviceService as av, DocComponent as aw, DocEditorComponent as ax, DomService as ay, Domain as az, MAX_ZOOM as b, PwaInstallComponent as b$, InterceptorObservables as b0, JumbotronComponent as b1, KeyValueComponent as b2, LAYOUT_ASSET_FOLDER as b3, LOGIN_COMPONENT as b4, LOGIN_STORE as b5, LanguageComponent as b6, ListComponent as b7, LogoComponent as b8, MAG_SOCKET_EVENT as b9, NavStore as bA, NavTrailComponent as bB, NothingComponent as bC, NotificationElementComponent as bD, NotificationGroupComponent as bE, NotificationPopupComponent as bF, NotificationService as bG, NotificationStore as bH, NotificationType as bI, NotificationWidgetComponent as bJ, ONE_ASSET_BASE_URL as bK, OPTIONS_SOURCE as bL, OVERLAY_WIDGETS as bM, OneApp as bN, OptionsSourceDirective as bO, OverlayBodyComponent as bP, OverlayRef as bQ, OverlayService as bR, PLATFORM_BUTTON_NAV_IDS as bS, PLATFORM_EXTENSIBLE_NAV_IDS as bT, PLATFORM_NAV_MAP as bU, PLATFORM_ROOT_CHILDREN as bV, PaginationComponent as bW, PanelComponent as bX, PercentagePipe as bY, PlaygroundComponent as bZ, PositionDirective as b_, MHeroColorDirective as ba, MHeroComponent as bb, MODAL_STORE_REF as bc, MRefDirective as bd, MStepComponent as be, MURL_PARAM as bf, MURL_SEP as bg, ManifestEnrichmentService as bh, MenuComponent as bi, ModalDirective as bj, ModalRef as bk, ModalStore as bl, MoneyPipe as bm, MultiRangeInputComponent as bn, MurlUrlSerializer as bo, NAV_DEFAULT_MURL as bp, NAV_ID_SEP as bq, NAV_MAIN_BUTTONS as br, NAV_SEGMENT_RE as bs, NAV_STORE_REF as bt, NAV_WC_COMPONENTS as bu, NAV_WIDGET_MAP as bv, NavComponent as bw, NavDetailsComponent as bx, NavHeaderComponent as by, NavMenuComponent as bz, cropRect as c, SummaryComponent as c$, ROOT_NAV$1 as c0, RadioGroupComponent as c1, RadioInputComponent as c2, RatingInputComponent as c3, ReactiveElementComponent as c4, RemoteComponent as c5, RemoteLoaderService as c6, ResizeElementComponent as c7, RouteContainer as c8, RowComponent as c9, SectionFormComponent as cA, SectionFormItemComponent as cB, SectionHeaderComponent as cC, SectionHeroComponent as cD, SectionPaginationComponent as cE, SectionSearchComponent as cF, SectionStepperComponent as cG, SectionTabsComponent as cH, SectionToggleComponent as cI, SectionToggleItemDirective as cJ, SelectableCardInputComponent as cK, SelectorDirective as cL, SettingsSearchBarComponent as cM, SettingsSearchService as cN, ShapeComponent as cO, SharedStoreRegistry as cP, SidePanelDirective as cQ, Size as cR, SocketStore as cS, SortComponent as cT, StatComponent as cU, StepComponent as cV, StepperComponent as cW, StepsComponent as cX, StorageService as cY, StrokeLinecap as cZ, StrokeLinejoin as c_, SEARCH_QUERY as ca, SEARCH_RESULTS_EVENT as cb, SECTION_ACCORDION_GROUP as cc, SECTION_FORM_CONTEXT as cd, SHARED_ICONS as ce, SIZE_CONTEXT as cf, ScoreComponent as cg, ScrollComponent as ch, ScrollService as ci, SearchPanelComponent as cj, SearchStore as ck, SearchUserPanelComponent as cl, SectionAccordionDirective as cm, SectionAccordionGroupDirective as cn, SectionBackComponent as co, SectionBadgesComponent as cp, SectionButtonGroupComponent as cq, SectionCardComponent as cr, SectionCarouselComponent as cs, SectionComponent as ct, SectionFilterComponent as cu, SectionFilterGroupComponent as cv, SectionFilterMenuComponent as cw, SectionFilterPanelComponent as cx, SectionFilterRangePanelComponent as cy, SectionFooterComponent as cz, drawFramed as d, derivePropertyName as d$, SvgGeneratorComponent as d0, SvgGeneratorService as d1, SvgService as d2, TOTAL_COLUMNS as d3, TRANSLATION_SOURCE as d4, TableComponent as d5, TechnicalMeterComponent as d6, TextInputComponent as d7, TextareaInputComponent as d8, ThemeComponent as d9, WIN_USER_TAB_KEY as dA, WatermarkComponent as dB, WcRouterStore as dC, WrapperInputComponent as dD, anchorNavId as dE, applyColorsToElement as dF, applyDocEdit as dG, assetOptions as dH, bootstrapMagApp as dI, bootstrapPwaInstall as dJ, buildWcBaseUrl as dK, calculateLuminance as dL, calculateRanks as dM, cellText as dN, checkDoc as dO, checkFilterCondition as dP, childNavId as dQ, claimDenial as dR, classListSignal as dS, coerceSize as dT, cornerEdge as dU, cornerSide as dV, createMap as dW, createPlatformNavMap as dX, deriveAvatarGradient as dY, deriveContrastColor as dZ, deriveOppositeColor as d_, ThemeDataService as da, ThemeService as db, ThemeStore as dc, TimeAgoPipe as dd, TimelineComponent as de, ToggleButtonComponent as df, ToggleInputComponent as dg, ToggleRadioInputComponent as dh, ToolTipDirective as di, TooltipComponent as dj, TranslateService as dk, TreeGridComponent as dl, URL_SEP as dm, USER_STORE_REF as dn, USER_TAB_MAP as dp, UniverseComponent as dq, UserApiService as dr, UserAvatarComponent as ds, UserComponent as dt, UserNavComponent as du, UserSettingsComponent as dv, UserStore as dw, WC_ROUTE_CHANGED_EVENT as dx, WC_SEARCH_GROUPS as dy, WIN_USER_TAB_HOOK as dz, encodeFramed as e, isValidNavSegment as e$, docActionKey as e0, docAssetCandidates as e1, docProblemKey as e2, docRemotePath as e3, emailValidation as e4, evaluate as e5, evaluateBool as e6, fieldBoolean as e7, fieldNumber as e8, fieldString as e9, hasErrorComputed as eA, hexToRgb as eB, hslToRgb$1 as eC, initMagmoniumApp as eD, initialNotificationState as eE, initialState$2 as eF, initials as eG, injectAuthenticate as eH, injectDefaultDenial as eI, injectInstallApp as eJ, injectParentSize as eK, injectScrollSticky as eL, isButtonName as eM, isCancelledComputed as eN, isExtensiblePlatformNavId as eO, isJson as eP, isLoadingComputed as eQ, isLocalhost as eR, isNavInstanceConfig as eS, isNavMenuConfig as eT, isNavRowsConfig as eU, isNavVisibilityConfig as eV, isPlatformNavId as eW, isSize as eX, isTierPreview as eY, isUrlLocalhost as eZ, isValidNavId as e_, filterHoldsList as ea, filterHoldsOneBound as eb, filterHoldsOptions as ec, filterHoldsRange as ed, filterList as ee, filterNumber as ef, filterNumberList as eg, filterOne as eh, filterPanelOf as ei, filterPanelWidth as ej, filterRange as ek, filterTreeGridRows as el, filterValueList as em, filterValues as en, flattenTreeGridRows as eo, formatBadgeCount as ep, fullName as eq, generateClipPath as er, generateTransform as es, getClassList as et, getProperty as eu, getScrollParent as ev, getTierFromPreviewPath as ew, getTreeGridRow as ex, getUniqueId as ey, getValue as ez, clampFraming as f, segmentsToNavId as f$, isWebComponent as f0, linkToId as f1, linkToNav as f2, loadingActions as f3, mInterceptor as f4, manualValidation as f5, matchFieldValidation as f6, maxLengthValidation as f7, maxValidation as f8, mergePlatformNav as f9, processImageToSvg as fA, provideAppContext as fB, provideMagAppConfig as fC, provideMagWcConfig as fD, provideMagWcRoutes as fE, provideModalComponents as fF, provideMurlUrlSerializer as fG, provideNavWidgets as fH, provideOverlayWidgets as fI, providePlatformNavWidgets as fJ, provideSearch as fK, provideSizeContext as fL, provideUserTabs as fM, publicGuard as fN, readFieldPatterns as fO, renderAddress as fP, renderDocument as fQ, requiredValidation as fR, resolveConfigAsset as fS, resolveIconSize as fT, resolvePallet as fU, resolvePatternRules as fV, resolveSize as fW, rgbToHex as fX, rgbToHsl as fY, rowHasChildren as fZ, samePatterns as f_, mergeUnique as fa, mergeUniqueBy as fb, mergeUniqueWith as fc, minAgeValidation as fd, minLengthValidation as fe, minValidation as ff, miniMarkToHtml as fg, navIdChain as fh, navIdFor as fi, navIdSegment as fj, navIdToRoutePath as fk, navIdToSegments as fl, navParamOf as fm, navToId as fn, navVisibilityGuard as fo, normalizeAssetOptions as fp, offsetOfLine as fq, parentNavId as fr, parseAddress as fs, parseColor as ft, parsePatternNames as fu, patternValidation as fv, patternsValidation as fw, permissionRefusal as fx, platformNavWidgets as fy, privateGuard as fz, BaseInputComponent as g, setProperty as g0, setTreeGridChildren as g1, settingsWidgets as g2, shouldShowBadge as g3, splitNavId as g4, splitOnMatch as g5, stringToColor as g6, toAttrBool as g7, toAttrNumber as g8, toCssLength as g9, toHostNavId as ga, toLength$1 as gb, toLocalNavId as gc, toggleTreeGridRow as gd, unfetchedPlatformNav as ge, ungroupedDocActions as gf, urlValidation as gg, BaseTextInputComponent as h, initialFraming as i, TextOutputComponent as j, IS_DESIGN_MODE as k, APP_CONTEXT_REF as l, ASSET_BASE_URL as m, AccordionBodyDirective as n, outputSize as o, parseRatio as p, AccordionComponent as q, renameForType as r, AccordionGroupComponent as s, ActionComponent as t, AnimatedGraphsComponent as u, AppCardComponent as v, AppRelationType as w, AppTileComponent as x, AssetStore as y, AssetUrlPipe as z };
38008
+ //# sourceMappingURL=magmonium-one-magmonium-one-BXlnho4e.mjs.map