@magmonium/one 0.4.14 → 0.4.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { input, inject, viewChild, signal, computed, effect, DestroyRef, ChangeDetectionStrategy, Component } from '@angular/core';
3
- import { M as MODAL_REF, a as MIN_ZOOM, I as InputType, b as MAX_ZOOM, p as parseRatio, o as outputSize, c as cropRect, i as initialFraming, e as encodeFramed, d as drawFramed, r as renameForType, f as clampFraming, B as ButtonComponent, H as HeaderComponent, R as RangeInputComponent } from './magmonium-one-magmonium-one-DWeZSPCv.mjs';
3
+ import { M as MODAL_REF, a as MIN_ZOOM, I as InputType, b as MAX_ZOOM, p as parseRatio, o as outputSize, c as cropRect, i as initialFraming, e as encodeFramed, d as drawFramed, r as renameForType, f as clampFraming, B as ButtonComponent, H as HeaderComponent, R as RangeInputComponent } from './magmonium-one-magmonium-one-DdYdOA7f.mjs';
4
4
 
5
5
  const WHEEL_ZOOM_RATE = 0.0015;
6
6
  const distance = (a, b) => Math.hypot(a.x - b.x, a.y - b.y);
@@ -287,4 +287,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
287
287
  }], propDecorators: { file: [{ type: i0.Input, args: [{ isSignal: true, alias: "file", required: true }] }], ratio: [{ type: i0.Input, args: [{ isSignal: true, alias: "ratio", required: true }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: true }] }], stage: [{ type: i0.ViewChild, args: ['stage', { isSignal: true }] }] } });
288
288
 
289
289
  export { ImageEditorComponent };
290
- //# sourceMappingURL=magmonium-one-image-editor-DN8v0YOv.mjs.map
290
+ //# sourceMappingURL=magmonium-one-image-editor-mHRn2N35.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"magmonium-one-image-editor-DN8v0YOv.mjs","sources":["../../../../libs/one/src/lib/shared/ui/input/ui/file-upload-input/image-editor.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ButtonComponent } from '../../../button/ui/button';\nimport { HeaderComponent } from '../../../header';\nimport { RangeInputComponent } from '../range/range';\nimport { InputType, RangeInput } from '../../model/input';\nimport { MODAL_REF, ModalRef } from '../../../../config/modal-ref';\nimport {\n clampFraming,\n cropRect,\n drawFramed,\n encodeFramed,\n Framing,\n FrameSize,\n initialFraming,\n MAX_ZOOM,\n MIN_ZOOM,\n outputSize,\n parseRatio,\n renameForType,\n} from './image-frame';\n\n/**\n * What an ImageEditor closes with. The framed file on an apply, `unreadable`\n * when the picture never decoded, and neither for a dismissal — a flat object\n * rather than a union, so the web-component build (no `strict`) reads it too.\n */\nexport type ImageEditorResult = { file?: File; unreadable?: boolean };\n\ntype Point = { x: number; y: number };\n\nconst WHEEL_ZOOM_RATE = 0.0015;\n\nconst distance = (a: Point, b: Point): number =>\n Math.hypot(a.x - b.x, a.y - b.y);\n\n@Component({\n selector: 'm-image-editor',\n template: `\n <div class=\"image-editor\">\n <m-header\n [level]=\"3\"\n label=\"edit-image-size\"\n [params]=\"sizeParams()\"\n />\n <div\n #stage\n class=\"image-editor__stage\"\n [style.aspect-ratio]=\"aspect()\"\n [style.--m-image-editor-aspect]=\"aspect()\"\n [class.image-editor__stage--panning]=\"isPanning()\"\n (pointerdown)=\"onPointerDown($event)\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerup)=\"onPointerUp($event)\"\n (pointercancel)=\"onPointerUp($event)\"\n (wheel)=\"onWheel($event)\"\n >\n @if (sourceUrl(); as url) {\n <img\n class=\"image-editor__image\"\n [src]=\"url\"\n alt=\"\"\n draggable=\"false\"\n [style.width.px]=\"imageBox().width\"\n [style.height.px]=\"imageBox().height\"\n [style.transform]=\"imageBox().transform\"\n />\n }\n </div>\n <m-range\n [config]=\"zoomConfig()\"\n [value]=\"zoomPercent()\"\n (valueChange)=\"onZoom($event)\"\n />\n <!-- asset: buttons/okay.yml. No cancel beside it: the Modal's own close\n is the cancel, and it drops the image the same way. -->\n <m-one-button\n name=\"okay\"\n label=\"apply\"\n [disabled]=\"!source() || isApplying()\"\n (clicked)=\"apply()\"\n />\n </div>\n `,\n imports: [ButtonComponent, HeaderComponent, RangeInputComponent],\n styleUrl: './image-editor.sass',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ImageEditorComponent {\n readonly file = input.required<File>();\n readonly ratio = input.required<string>();\n readonly width = input.required<number>();\n\n readonly #modalRef = inject<ModalRef<ImageEditorResult | undefined>>(MODAL_REF);\n private readonly stage = viewChild<ElementRef<HTMLDivElement>>('stage');\n\n protected readonly source = signal<ImageBitmap | undefined>(undefined);\n protected readonly sourceUrl = signal<string | undefined>(undefined);\n protected readonly isApplying = signal(false);\n private readonly framing = signal<Framing>({ cx: 0, cy: 0, zoom: MIN_ZOOM });\n private readonly stageWidth = signal(0);\n private readonly pointers = new Map<number, Point>();\n protected readonly isPanning = signal(false);\n #settled = false;\n\n protected readonly zoomConfig = computed<RangeInput>(() => ({\n name: 'zoom',\n label: 'zoom',\n type: InputType.RANGE,\n min: MIN_ZOOM * 100,\n max: MAX_ZOOM * 100,\n }));\n\n protected readonly aspect = computed(() => parseRatio(this.ratio()) ?? 1);\n\n private readonly output = computed<FrameSize | undefined>(() =>\n outputSize(this.ratio(), this.width())\n );\n\n protected readonly sizeParams = computed(() => {\n const size = this.output();\n return {\n width: String(size?.width ?? ''),\n height: String(size?.height ?? ''),\n };\n });\n\n private readonly imageSize = computed<FrameSize | undefined>(() => {\n const bitmap = this.source();\n return bitmap ? { width: bitmap.width, height: bitmap.height } : undefined;\n });\n\n protected readonly zoomPercent = computed(() =>\n String(Math.round(this.framing().zoom * 100))\n );\n\n /** The whole picture laid out so the box shows exactly the crop. */\n protected readonly imageBox = computed(() => {\n const image = this.imageSize();\n const stage = this.stageWidth();\n if (!image || !stage) return { width: 0, height: 0, transform: 'none' };\n const rect = cropRect(image, this.aspect(), this.framing());\n const scale = stage / rect.width;\n return {\n width: image.width * scale,\n height: image.height * scale,\n transform: `translate(${-rect.x * scale}px, ${-rect.y * scale}px)`,\n };\n });\n\n private readonly load = effect((onCleanup) => {\n const file = this.file();\n let cancelled = false;\n const url = URL.createObjectURL(file);\n this.sourceUrl.set(url);\n // EXIF orientation applied here, so the geometry below and the <img> the\n // stage draws agree on which way is up.\n createImageBitmap(file, { imageOrientation: 'from-image' })\n .then((bitmap) => {\n if (cancelled) {\n bitmap.close();\n return;\n }\n this.framing.set(\n initialFraming({ width: bitmap.width, height: bitmap.height })\n );\n this.source.set(bitmap);\n })\n .catch(() => {\n if (!cancelled) this.settle({ unreadable: true });\n });\n onCleanup(() => {\n cancelled = true;\n URL.revokeObjectURL(url);\n this.source()?.close();\n });\n });\n\n private readonly measure = effect((onCleanup) => {\n const stage = this.stage()?.nativeElement;\n if (!stage) return;\n this.stageWidth.set(stage.clientWidth);\n if (typeof ResizeObserver === 'undefined') return;\n const observer = new ResizeObserver(([entry]) =>\n this.stageWidth.set(entry.contentRect.width)\n );\n observer.observe(stage);\n onCleanup(() => observer.disconnect());\n });\n\n // The Modal's own close affordance destroys the body without a word, and a\n // dismissal is a cancel: whoever opened the editor is still waiting.\n private readonly reportDismissal = inject(DestroyRef).onDestroy(() =>\n this.settle(undefined)\n );\n\n protected onPointerDown = (event: PointerEvent): void => {\n if (!this.source()) return;\n (event.currentTarget as HTMLElement).setPointerCapture?.(event.pointerId);\n this.pointers.set(event.pointerId, { x: event.clientX, y: event.clientY });\n this.isPanning.set(true);\n };\n\n protected onPointerMove = (event: PointerEvent): void => {\n const previous = this.pointers.get(event.pointerId);\n if (!previous) return;\n const next = { x: event.clientX, y: event.clientY };\n const others = [...this.pointers.entries()].filter(\n ([id]) => id !== event.pointerId\n );\n if (others.length === 1) {\n // Pinch: the gap between two fingers is the zoom.\n const anchor = others[0][1];\n const before = distance(previous, anchor);\n if (before > 0) this.zoomBy(distance(next, anchor) / before);\n } else if (others.length === 0) {\n this.panBy(next.x - previous.x, next.y - previous.y);\n }\n this.pointers.set(event.pointerId, next);\n };\n\n protected onPointerUp = (event: PointerEvent): void => {\n this.pointers.delete(event.pointerId);\n this.isPanning.set(this.pointers.size > 0);\n };\n\n protected onWheel = (event: WheelEvent): void => {\n if (!this.source()) return;\n event.preventDefault();\n this.zoomBy(Math.exp(-event.deltaY * WHEEL_ZOOM_RATE));\n };\n\n protected onZoom = (percent: string): void => {\n const zoom = Number(percent) / 100;\n if (!Number.isFinite(zoom)) return;\n this.updateFraming((framing) => ({ ...framing, zoom }));\n };\n\n protected apply = async (): Promise<void> => {\n const bitmap = this.source();\n const image = this.imageSize();\n const output = this.output();\n if (!bitmap || !image || !output || this.isApplying()) return;\n this.isApplying.set(true);\n try {\n const rect = cropRect(image, this.aspect(), this.framing());\n const blob = await encodeFramed(drawFramed(bitmap, rect, output));\n const original = this.file();\n this.settle({\n file: new File([blob], renameForType(original.name, blob.type), {\n type: blob.type,\n lastModified: Date.now(),\n }),\n });\n } catch {\n this.settle({ unreadable: true });\n }\n };\n\n /** Screen pixels dragged, moved into source pixels at the current scale. */\n private panBy = (dx: number, dy: number): void => {\n const image = this.imageSize();\n const stage = this.stageWidth();\n if (!image || !stage) return;\n const rect = cropRect(image, this.aspect(), this.framing());\n const perPixel = rect.width / stage;\n this.updateFraming((framing) => ({\n ...framing,\n cx: framing.cx - dx * perPixel,\n cy: framing.cy - dy * perPixel,\n }));\n };\n\n private zoomBy = (factor: number): void => {\n this.updateFraming((framing) => ({\n ...framing,\n zoom: framing.zoom * factor,\n }));\n };\n\n private updateFraming = (change: (framing: Framing) => Framing): void => {\n const image = this.imageSize();\n if (!image) return;\n this.framing.update((framing) =>\n clampFraming(image, this.aspect(), change(framing))\n );\n };\n\n private settle = (result: ImageEditorResult | undefined): void => {\n if (this.#settled) return;\n this.#settled = true;\n this.#modalRef.close(result);\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"magmonium-one-image-editor-mHRn2N35.mjs","sources":["../../../../libs/one/src/lib/shared/ui/input/ui/file-upload-input/image-editor.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ButtonComponent } from '../../../button/ui/button';\nimport { HeaderComponent } from '../../../header';\nimport { RangeInputComponent } from '../range/range';\nimport { InputType, RangeInput } from '../../model/input';\nimport { MODAL_REF, ModalRef } from '../../../../config/modal-ref';\nimport {\n clampFraming,\n cropRect,\n drawFramed,\n encodeFramed,\n Framing,\n FrameSize,\n initialFraming,\n MAX_ZOOM,\n MIN_ZOOM,\n outputSize,\n parseRatio,\n renameForType,\n} from './image-frame';\n\n/**\n * What an ImageEditor closes with. The framed file on an apply, `unreadable`\n * when the picture never decoded, and neither for a dismissal — a flat object\n * rather than a union, so the web-component build (no `strict`) reads it too.\n */\nexport type ImageEditorResult = { file?: File; unreadable?: boolean };\n\ntype Point = { x: number; y: number };\n\nconst WHEEL_ZOOM_RATE = 0.0015;\n\nconst distance = (a: Point, b: Point): number =>\n Math.hypot(a.x - b.x, a.y - b.y);\n\n@Component({\n selector: 'm-image-editor',\n template: `\n <div class=\"image-editor\">\n <m-header\n [level]=\"3\"\n label=\"edit-image-size\"\n [params]=\"sizeParams()\"\n />\n <div\n #stage\n class=\"image-editor__stage\"\n [style.aspect-ratio]=\"aspect()\"\n [style.--m-image-editor-aspect]=\"aspect()\"\n [class.image-editor__stage--panning]=\"isPanning()\"\n (pointerdown)=\"onPointerDown($event)\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerup)=\"onPointerUp($event)\"\n (pointercancel)=\"onPointerUp($event)\"\n (wheel)=\"onWheel($event)\"\n >\n @if (sourceUrl(); as url) {\n <img\n class=\"image-editor__image\"\n [src]=\"url\"\n alt=\"\"\n draggable=\"false\"\n [style.width.px]=\"imageBox().width\"\n [style.height.px]=\"imageBox().height\"\n [style.transform]=\"imageBox().transform\"\n />\n }\n </div>\n <m-range\n [config]=\"zoomConfig()\"\n [value]=\"zoomPercent()\"\n (valueChange)=\"onZoom($event)\"\n />\n <!-- asset: buttons/okay.yml. No cancel beside it: the Modal's own close\n is the cancel, and it drops the image the same way. -->\n <m-one-button\n name=\"okay\"\n label=\"apply\"\n [disabled]=\"!source() || isApplying()\"\n (clicked)=\"apply()\"\n />\n </div>\n `,\n imports: [ButtonComponent, HeaderComponent, RangeInputComponent],\n styleUrl: './image-editor.sass',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ImageEditorComponent {\n readonly file = input.required<File>();\n readonly ratio = input.required<string>();\n readonly width = input.required<number>();\n\n readonly #modalRef = inject<ModalRef<ImageEditorResult | undefined>>(MODAL_REF);\n private readonly stage = viewChild<ElementRef<HTMLDivElement>>('stage');\n\n protected readonly source = signal<ImageBitmap | undefined>(undefined);\n protected readonly sourceUrl = signal<string | undefined>(undefined);\n protected readonly isApplying = signal(false);\n private readonly framing = signal<Framing>({ cx: 0, cy: 0, zoom: MIN_ZOOM });\n private readonly stageWidth = signal(0);\n private readonly pointers = new Map<number, Point>();\n protected readonly isPanning = signal(false);\n #settled = false;\n\n protected readonly zoomConfig = computed<RangeInput>(() => ({\n name: 'zoom',\n label: 'zoom',\n type: InputType.RANGE,\n min: MIN_ZOOM * 100,\n max: MAX_ZOOM * 100,\n }));\n\n protected readonly aspect = computed(() => parseRatio(this.ratio()) ?? 1);\n\n private readonly output = computed<FrameSize | undefined>(() =>\n outputSize(this.ratio(), this.width())\n );\n\n protected readonly sizeParams = computed(() => {\n const size = this.output();\n return {\n width: String(size?.width ?? ''),\n height: String(size?.height ?? ''),\n };\n });\n\n private readonly imageSize = computed<FrameSize | undefined>(() => {\n const bitmap = this.source();\n return bitmap ? { width: bitmap.width, height: bitmap.height } : undefined;\n });\n\n protected readonly zoomPercent = computed(() =>\n String(Math.round(this.framing().zoom * 100))\n );\n\n /** The whole picture laid out so the box shows exactly the crop. */\n protected readonly imageBox = computed(() => {\n const image = this.imageSize();\n const stage = this.stageWidth();\n if (!image || !stage) return { width: 0, height: 0, transform: 'none' };\n const rect = cropRect(image, this.aspect(), this.framing());\n const scale = stage / rect.width;\n return {\n width: image.width * scale,\n height: image.height * scale,\n transform: `translate(${-rect.x * scale}px, ${-rect.y * scale}px)`,\n };\n });\n\n private readonly load = effect((onCleanup) => {\n const file = this.file();\n let cancelled = false;\n const url = URL.createObjectURL(file);\n this.sourceUrl.set(url);\n // EXIF orientation applied here, so the geometry below and the <img> the\n // stage draws agree on which way is up.\n createImageBitmap(file, { imageOrientation: 'from-image' })\n .then((bitmap) => {\n if (cancelled) {\n bitmap.close();\n return;\n }\n this.framing.set(\n initialFraming({ width: bitmap.width, height: bitmap.height })\n );\n this.source.set(bitmap);\n })\n .catch(() => {\n if (!cancelled) this.settle({ unreadable: true });\n });\n onCleanup(() => {\n cancelled = true;\n URL.revokeObjectURL(url);\n this.source()?.close();\n });\n });\n\n private readonly measure = effect((onCleanup) => {\n const stage = this.stage()?.nativeElement;\n if (!stage) return;\n this.stageWidth.set(stage.clientWidth);\n if (typeof ResizeObserver === 'undefined') return;\n const observer = new ResizeObserver(([entry]) =>\n this.stageWidth.set(entry.contentRect.width)\n );\n observer.observe(stage);\n onCleanup(() => observer.disconnect());\n });\n\n // The Modal's own close affordance destroys the body without a word, and a\n // dismissal is a cancel: whoever opened the editor is still waiting.\n private readonly reportDismissal = inject(DestroyRef).onDestroy(() =>\n this.settle(undefined)\n );\n\n protected onPointerDown = (event: PointerEvent): void => {\n if (!this.source()) return;\n (event.currentTarget as HTMLElement).setPointerCapture?.(event.pointerId);\n this.pointers.set(event.pointerId, { x: event.clientX, y: event.clientY });\n this.isPanning.set(true);\n };\n\n protected onPointerMove = (event: PointerEvent): void => {\n const previous = this.pointers.get(event.pointerId);\n if (!previous) return;\n const next = { x: event.clientX, y: event.clientY };\n const others = [...this.pointers.entries()].filter(\n ([id]) => id !== event.pointerId\n );\n if (others.length === 1) {\n // Pinch: the gap between two fingers is the zoom.\n const anchor = others[0][1];\n const before = distance(previous, anchor);\n if (before > 0) this.zoomBy(distance(next, anchor) / before);\n } else if (others.length === 0) {\n this.panBy(next.x - previous.x, next.y - previous.y);\n }\n this.pointers.set(event.pointerId, next);\n };\n\n protected onPointerUp = (event: PointerEvent): void => {\n this.pointers.delete(event.pointerId);\n this.isPanning.set(this.pointers.size > 0);\n };\n\n protected onWheel = (event: WheelEvent): void => {\n if (!this.source()) return;\n event.preventDefault();\n this.zoomBy(Math.exp(-event.deltaY * WHEEL_ZOOM_RATE));\n };\n\n protected onZoom = (percent: string): void => {\n const zoom = Number(percent) / 100;\n if (!Number.isFinite(zoom)) return;\n this.updateFraming((framing) => ({ ...framing, zoom }));\n };\n\n protected apply = async (): Promise<void> => {\n const bitmap = this.source();\n const image = this.imageSize();\n const output = this.output();\n if (!bitmap || !image || !output || this.isApplying()) return;\n this.isApplying.set(true);\n try {\n const rect = cropRect(image, this.aspect(), this.framing());\n const blob = await encodeFramed(drawFramed(bitmap, rect, output));\n const original = this.file();\n this.settle({\n file: new File([blob], renameForType(original.name, blob.type), {\n type: blob.type,\n lastModified: Date.now(),\n }),\n });\n } catch {\n this.settle({ unreadable: true });\n }\n };\n\n /** Screen pixels dragged, moved into source pixels at the current scale. */\n private panBy = (dx: number, dy: number): void => {\n const image = this.imageSize();\n const stage = this.stageWidth();\n if (!image || !stage) return;\n const rect = cropRect(image, this.aspect(), this.framing());\n const perPixel = rect.width / stage;\n this.updateFraming((framing) => ({\n ...framing,\n cx: framing.cx - dx * perPixel,\n cy: framing.cy - dy * perPixel,\n }));\n };\n\n private zoomBy = (factor: number): void => {\n this.updateFraming((framing) => ({\n ...framing,\n zoom: framing.zoom * factor,\n }));\n };\n\n private updateFraming = (change: (framing: Framing) => Framing): void => {\n const image = this.imageSize();\n if (!image) return;\n this.framing.update((framing) =>\n clampFraming(image, this.aspect(), change(framing))\n );\n };\n\n private settle = (result: ImageEditorResult | undefined): void => {\n if (this.#settled) return;\n this.#settled = true;\n this.#modalRef.close(result);\n };\n}\n"],"names":[],"mappings":"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"}
@@ -8992,7 +8992,7 @@ class SectionFormItemComponent extends ConfigComponent {
8992
8992
  break;
8993
8993
  }
8994
8994
  case InputType.TOGGLE: {
8995
- const { ToggleInputComponent } = await import('./magmonium-one-toggle-zniJyl09.mjs');
8995
+ const { ToggleInputComponent } = await import('./magmonium-one-toggle-AXRopys5.mjs');
8996
8996
  this.createDynamicComponent(seq, ToggleInputComponent, [], true);
8997
8997
  break;
8998
8998
  }
@@ -9004,12 +9004,12 @@ class SectionFormItemComponent extends ConfigComponent {
9004
9004
  break;
9005
9005
  }
9006
9006
  case InputType.PASSWORD: {
9007
- const { PasswordInputComponent } = await import('./magmonium-one-password-CX1OjX5P.mjs');
9007
+ const { PasswordInputComponent } = await import('./magmonium-one-password-idcVo1X1.mjs');
9008
9008
  this.createDynamicComponent(seq, PasswordInputComponent);
9009
9009
  break;
9010
9010
  }
9011
9011
  case InputType.OTP: {
9012
- const { OtpInputComponent } = await import('./magmonium-one-otp-CpjpaJdi.mjs');
9012
+ const { OtpInputComponent } = await import('./magmonium-one-otp-BKjTa-rP.mjs');
9013
9013
  this.createDynamicComponent(seq, OtpInputComponent);
9014
9014
  break;
9015
9015
  }
@@ -13061,6 +13061,7 @@ function normalizeAssetOptions(data) {
13061
13061
  label: option.label,
13062
13062
  icon: option.icon,
13063
13063
  disabled: option.disabled,
13064
+ ...(option.default === true ? { default: true } : {}),
13064
13065
  }));
13065
13066
  }
13066
13067
  /**
@@ -13106,6 +13107,34 @@ function assetOptions(name) {
13106
13107
  });
13107
13108
  return computed(() => normalizeAssetOptions(suppliedRows() ?? resource.value()));
13108
13109
  }
13110
+ /** Whether a Field holds nothing yet — no scalar, an empty string or list. */
13111
+ const isEmptyValue = (value) => value === undefined ||
13112
+ value === null ||
13113
+ value === '' ||
13114
+ (Array.isArray(value) && value.length === 0);
13115
+ /**
13116
+ * Starts a Field on its list's `default` row when it holds no value of its own
13117
+ * (m-one-ui CONTEXT.md OptionSet). The Field's own value — its config, its form
13118
+ * data — outranks the row, so a value already held is kept.
13119
+ *
13120
+ * Each marked row is consulted once: a User who clears the pick is not handed
13121
+ * it back, and only a list that moves its mark offers the new row. A disabled
13122
+ * row is never preset — the User could not have picked it either. Must be
13123
+ * called from an injection context.
13124
+ */
13125
+ function presetDefaultOption(options, current, apply) {
13126
+ let consulted;
13127
+ effect(() => {
13128
+ const row = options().find((option) => option.default && !option.disabled);
13129
+ if (!row || row.value === consulted)
13130
+ return;
13131
+ consulted = row.value;
13132
+ untracked(() => {
13133
+ if (isEmptyValue(current()))
13134
+ apply(row.value);
13135
+ });
13136
+ });
13137
+ }
13109
13138
 
13110
13139
  const FILTER_VARIANTS = [
13111
13140
  'single',
@@ -22034,13 +22063,17 @@ class DropdownInputComponent extends BaseDropdownComponent {
22034
22063
  this.setValue(option.value);
22035
22064
  this.closePanel();
22036
22065
  }
22037
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DropdownInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
22066
+ constructor() {
22067
+ super();
22068
+ presetDefaultOption(this.dropdownOptions, this.value, (value) => this.value.set(value));
22069
+ }
22070
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DropdownInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22038
22071
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: DropdownInputComponent, isStandalone: true, selector: "m-dropdown-input", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, usesInheritance: true, ngImport: i0, template: "\n @if (config(); as dropdown) {\n @if (dropdown.label) {\n <m-label\n [for]=\"dropdown.name ?? ''\"\n [placeholder]=\"dropdown.label\"\n [params]=\"dropdown.params\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n }\n <div\n class=\"trigger-wrap\"\n #wrapper\n [mSelector]=\"selectorConfig()\"\n [disabled]=\"disabled() || readonly() || !!config()?.readonly\"\n (opened)=\"onOpened()\"\n (closed)=\"onClosed()\"\n (focusin)=\"isFocused.set(true)\"\n (focusout)=\"isFocused.set(false)\"\n >\n <m-text-input\n [config]=\"triggerInputConfig()\"\n [value]=\"displayValue()\"\n [disabled]=\"disabled()\"\n [invalid]=\"invalid()\"\n [hideErrors]=\"true\"\n [(touched)]=\"touched\"\n [focused]=\"focused()\"\n (valueChange)=\"onInput($event)\"\n (click)=\"preventToggleWhenOpen($event)\"\n (keydown.space)=\"$event.stopPropagation()\"\n (keydown.enter)=\"onEnter($event)\"\n (keydown.arrowdown)=\"onArrow($event, 1)\"\n (keydown.arrowup)=\"onArrow($event, -1)\"\n (keydown.tab)=\"$event.stopPropagation()\"\n />\n <m-button [disabled]=\"disabled()\" [config]=\"chevron()\" />\n </div>\n @if (showErrors()) {\n @for (error of errors(); track $index) {\n <m-text-output\n variant=\"footer\"\n color=\"error\"\n [label]=\"error.message\"\n />\n }\n }\n }\n", 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:contents}.trigger-wrap{position:relative;--m-text-input-padding-right: 2.25em }.trigger-wrap m-button{position:absolute;right:0;top:0;bottom:0;--m-button-size: 1em !important;height:100%;border-radius:0 var(--m-input-radius, calc(var(--input-size, 1em) * .5)) var(--m-input-radius, calc(var(--input-size, 1em) * .5)) 0;--m-button-radius: 0 var(--m-input-radius, calc(var(--input-size, 1em) * .5)) var(--m-input-radius, calc(var(--input-size, 1em) * .5)) 0}\n"], dependencies: [{ kind: "component", type: LabelComponent, selector: "m-label", inputs: ["for", "placeholder", "params", "required", "disabled", "color", "noTranslate"] }, { kind: "component", type: TextOutputComponent, selector: "m-text-output", inputs: ["config", "align", "variant", "color", "fontWeight", "label", "noTranslate", "params"], outputs: ["configChange", "clicked"] }, { kind: "component", type: TextInputComponent, selector: "m-text-input", inputs: ["value", "config", "required", "disabled", "invalid", "touched", "focused", "errors", "hideErrors"], outputs: ["valueChange", "touchedChange"] }, { 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: "directive", type: SelectorDirective, selector: "[mSelector]", inputs: ["mSelector", "disabled"], outputs: ["opened", "closed"], exportAs: ["mSelector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
22039
22072
  }
22040
22073
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DropdownInputComponent, decorators: [{
22041
22074
  type: Component,
22042
22075
  args: [{ selector: 'm-dropdown-input', template: DROPDOWN_TEMPLATE, imports: DROPDOWN_IMPORTS, 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:contents}.trigger-wrap{position:relative;--m-text-input-padding-right: 2.25em }.trigger-wrap m-button{position:absolute;right:0;top:0;bottom:0;--m-button-size: 1em !important;height:100%;border-radius:0 var(--m-input-radius, calc(var(--input-size, 1em) * .5)) var(--m-input-radius, calc(var(--input-size, 1em) * .5)) 0;--m-button-radius: 0 var(--m-input-radius, calc(var(--input-size, 1em) * .5)) var(--m-input-radius, calc(var(--input-size, 1em) * .5)) 0}\n"] }]
22043
- }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }] } });
22076
+ }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }] } });
22044
22077
 
22045
22078
  var dropdown = /*#__PURE__*/Object.freeze({
22046
22079
  __proto__: null,
@@ -22066,6 +22099,10 @@ class MultiselectInputComponent extends BaseDropdownComponent {
22066
22099
  this.value.set(value);
22067
22100
  this.touched.set(true);
22068
22101
  };
22102
+ constructor() {
22103
+ super();
22104
+ presetDefaultOption(this.dropdownOptions, this.selectedValues, (value) => this.value.set([value]));
22105
+ }
22069
22106
  // The panel stays open across picks; each one ticks or unticks its row.
22070
22107
  selectOption(option) {
22071
22108
  const current = this.selectedValues();
@@ -22073,13 +22110,13 @@ class MultiselectInputComponent extends BaseDropdownComponent {
22073
22110
  ? current.filter((v) => v !== option.value)
22074
22111
  : [...current, option.value]);
22075
22112
  }
22076
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MultiselectInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
22113
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MultiselectInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22077
22114
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: MultiselectInputComponent, isStandalone: true, selector: "m-multiselect-input", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, usesInheritance: true, ngImport: i0, template: "\n @if (config(); as dropdown) {\n @if (dropdown.label) {\n <m-label\n [for]=\"dropdown.name ?? ''\"\n [placeholder]=\"dropdown.label\"\n [params]=\"dropdown.params\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n }\n <div\n class=\"trigger-wrap\"\n #wrapper\n [mSelector]=\"selectorConfig()\"\n [disabled]=\"disabled() || readonly() || !!config()?.readonly\"\n (opened)=\"onOpened()\"\n (closed)=\"onClosed()\"\n (focusin)=\"isFocused.set(true)\"\n (focusout)=\"isFocused.set(false)\"\n >\n <m-text-input\n [config]=\"triggerInputConfig()\"\n [value]=\"displayValue()\"\n [disabled]=\"disabled()\"\n [invalid]=\"invalid()\"\n [hideErrors]=\"true\"\n [(touched)]=\"touched\"\n [focused]=\"focused()\"\n (valueChange)=\"onInput($event)\"\n (click)=\"preventToggleWhenOpen($event)\"\n (keydown.space)=\"$event.stopPropagation()\"\n (keydown.enter)=\"onEnter($event)\"\n (keydown.arrowdown)=\"onArrow($event, 1)\"\n (keydown.arrowup)=\"onArrow($event, -1)\"\n (keydown.tab)=\"$event.stopPropagation()\"\n />\n <m-button [disabled]=\"disabled()\" [config]=\"chevron()\" />\n </div>\n @if (showErrors()) {\n @for (error of errors(); track $index) {\n <m-text-output\n variant=\"footer\"\n color=\"error\"\n [label]=\"error.message\"\n />\n }\n }\n }\n", 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:contents}.trigger-wrap{position:relative;--m-text-input-padding-right: 2.25em }.trigger-wrap m-button{position:absolute;right:0;top:0;bottom:0;--m-button-size: 1em !important;height:100%;border-radius:0 var(--m-input-radius, calc(var(--input-size, 1em) * .5)) var(--m-input-radius, calc(var(--input-size, 1em) * .5)) 0;--m-button-radius: 0 var(--m-input-radius, calc(var(--input-size, 1em) * .5)) var(--m-input-radius, calc(var(--input-size, 1em) * .5)) 0}\n"], dependencies: [{ kind: "component", type: LabelComponent, selector: "m-label", inputs: ["for", "placeholder", "params", "required", "disabled", "color", "noTranslate"] }, { kind: "component", type: TextOutputComponent, selector: "m-text-output", inputs: ["config", "align", "variant", "color", "fontWeight", "label", "noTranslate", "params"], outputs: ["configChange", "clicked"] }, { kind: "component", type: TextInputComponent, selector: "m-text-input", inputs: ["value", "config", "required", "disabled", "invalid", "touched", "focused", "errors", "hideErrors"], outputs: ["valueChange", "touchedChange"] }, { 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: "directive", type: SelectorDirective, selector: "[mSelector]", inputs: ["mSelector", "disabled"], outputs: ["opened", "closed"], exportAs: ["mSelector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
22078
22115
  }
22079
22116
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MultiselectInputComponent, decorators: [{
22080
22117
  type: Component,
22081
22118
  args: [{ selector: 'm-multiselect-input', template: DROPDOWN_TEMPLATE, imports: DROPDOWN_IMPORTS, 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:contents}.trigger-wrap{position:relative;--m-text-input-padding-right: 2.25em }.trigger-wrap m-button{position:absolute;right:0;top:0;bottom:0;--m-button-size: 1em !important;height:100%;border-radius:0 var(--m-input-radius, calc(var(--input-size, 1em) * .5)) var(--m-input-radius, calc(var(--input-size, 1em) * .5)) 0;--m-button-radius: 0 var(--m-input-radius, calc(var(--input-size, 1em) * .5)) var(--m-input-radius, calc(var(--input-size, 1em) * .5)) 0}\n"] }]
22082
- }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }] } });
22119
+ }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }] } });
22083
22120
 
22084
22121
  var multiselect = /*#__PURE__*/Object.freeze({
22085
22122
  __proto__: null,
@@ -23321,7 +23358,7 @@ class WrapperInputComponent extends ConfigComponent {
23321
23358
  break;
23322
23359
  }
23323
23360
  case InputType.TOGGLE: {
23324
- const { ToggleInputComponent } = await import('./magmonium-one-toggle-zniJyl09.mjs');
23361
+ const { ToggleInputComponent } = await import('./magmonium-one-toggle-AXRopys5.mjs');
23325
23362
  this.createDynamicComponent(seq, ToggleInputComponent, [], true);
23326
23363
  break;
23327
23364
  }
@@ -23333,12 +23370,12 @@ class WrapperInputComponent extends ConfigComponent {
23333
23370
  break;
23334
23371
  }
23335
23372
  case InputType.PASSWORD: {
23336
- const { PasswordInputComponent } = await import('./magmonium-one-password-CX1OjX5P.mjs');
23373
+ const { PasswordInputComponent } = await import('./magmonium-one-password-idcVo1X1.mjs');
23337
23374
  this.createDynamicComponent(seq, PasswordInputComponent);
23338
23375
  break;
23339
23376
  }
23340
23377
  case InputType.OTP: {
23341
- const { OtpInputComponent } = await import('./magmonium-one-otp-CpjpaJdi.mjs');
23378
+ const { OtpInputComponent } = await import('./magmonium-one-otp-BKjTa-rP.mjs');
23342
23379
  this.createDynamicComponent(seq, OtpInputComponent);
23343
23380
  break;
23344
23381
  }
@@ -23712,6 +23749,7 @@ class ToggleRadioInputComponent extends BaseTextInputComponent {
23712
23749
  observer;
23713
23750
  constructor() {
23714
23751
  super();
23752
+ presetDefaultOption(this.sourceOptions, this.value, (value) => this.value.set(String(value)));
23715
23753
  effect(this.updateOptions);
23716
23754
  effect(this.resetVisibleCount);
23717
23755
  effect(() => {
@@ -24030,6 +24068,13 @@ class SelectableCardInputComponent extends BaseInputComponent {
24030
24068
  return source;
24031
24069
  return this.assetOptions();
24032
24070
  }, ...(ngDevMode ? [{ debugName: "cardOptions" }] : /* istanbul ignore next */ []));
24071
+ // Bound `data` draws its own cards, so only an options list can mark the
24072
+ // row a Field starts on.
24073
+ presetOptions = computed(() => this.data()?.length ? [] : this.cardOptions(), ...(ngDevMode ? [{ debugName: "presetOptions" }] : /* istanbul ignore next */ []));
24074
+ constructor() {
24075
+ super();
24076
+ presetDefaultOption(this.presetOptions, this.value, (value) => this.value.set(this.config()?.multiSelect ? [String(value)] : String(value)));
24077
+ }
24033
24078
  // A SelectableCard is its cards and nothing else — no label of its own, no
24034
24079
  // box around them — so with no options it draws nothing at all. Shipped that
24035
24080
  // is right; on a Canvas it leaves a Control the User cannot see, select or
@@ -24105,7 +24150,7 @@ class SelectableCardInputComponent extends BaseInputComponent {
24105
24150
  event.stopPropagation();
24106
24151
  this.onCardClick(id);
24107
24152
  };
24108
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SelectableCardInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
24153
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SelectableCardInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
24109
24154
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: SelectableCardInputComponent, isStandalone: true, selector: "m-selectable-card", inputs: { element: { classPropertyName: "element", publicName: "element", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, template: { classPropertyName: "template", publicName: "template", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, queries: [{ propertyName: "projectedTemplate", first: true, predicate: (TemplateRef), descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
24110
24155
  @if (config(); as cfg) {
24111
24156
  @if (cfg.label) {
@@ -24251,7 +24296,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
24251
24296
  IconComponent,
24252
24297
  LabelComponent,
24253
24298
  ], 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%;max-width:100%;min-width:0}.selectable-card{display:flex;flex-direction:row;flex-wrap:wrap;gap:.75rem;width:100%;max-width:100%;min-width:0;box-sizing:border-box}.selectable-card--vertical{flex-direction:column;flex-wrap:nowrap}.selectable-card--vertical .selectable-card__item{width:100%;max-width:100%;min-width:0;align-items:flex-start}.selectable-card--vertical .selectable-card__indicator{padding-top:.125rem}.selectable-card--vertical .selectable-card__content{align-items:flex-start}.selectable-card__item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.75rem 1rem;border:1px solid var(--m-selectable-card-border, color-mix(in srgb, var(--m-text) 18%, var(--m-background)));border-radius:var(--m-input-radius, .5rem);cursor:pointer;-webkit-user-select:none;user-select:none;background:var(--m-selectable-card-background, color-mix(in srgb, var(--m-focus) 2%, var(--m-background)));transition:border-color .2s ease,box-shadow .2s ease,background .15s ease;box-sizing:border-box;max-width:100%;min-width:0}.selectable-card__item.selectable-card__item--line{border:1px solid var(--border, var(--m-border));border-radius:16px}.selectable-card__item.selectable-card__item--line:hover:not(.selectable-card__item.selectable-card__item--line--disabled){border-color:var(--border, var(--m-border));box-shadow:none}.selectable-card__item.selectable-card__item--line--selected{border-color:var(--border, var(--m-border));box-shadow:none;background:var(--background, var(--m-background))}.selectable-card__item.selectable-card__item--line--selected:hover:not(.selectable-card__item--disabled){box-shadow:none}.selectable-card__item.selectable-card__item--line:focus-visible{outline-color:var(--border, var(--m-border))}.selectable-card__item.selectable-card__item--line .selectable-card__indicator{display:none}.selectable-card__item:hover:not(.selectable-card__item--disabled){border-color:var(--m-selectable-card-hover-border, color-mix(in srgb, var(--m-focus) 55%, var(--m-background)));box-shadow:none}.selectable-card__item--selected{border-color:var(--m-selectable-card-selected-border, var(--m-focus));box-shadow:none;background:color-mix(in srgb,var(--m-focus) 5%,var(--m-background))}.selectable-card__item:focus-visible{outline:2px solid var(--m-focus);outline-offset:3px}.selectable-card__item--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.selectable-card__content{flex:1;min-width:0;max-width:100%;display:flex;align-items:center;gap:.5rem}.selectable-card__content>*{flex:1;min-width:0;max-width:100%}.selectable-card__icon{flex-shrink:0;display:flex}.selectable-card__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.selectable-card__indicator{flex-shrink:0;display:flex;align-items:center}.selectable-card__indicator input[type=checkbox],.selectable-card__indicator input[type=radio]{appearance:none;-webkit-appearance:none;width:1.25rem;height:1.25rem;border:var(--m-input-border-width, 1px) solid color-mix(in srgb,var(--m-text) 18%,var(--m-background));border-radius:var(--m-checkbox-radius, .35rem);background:var(--m-text-input-background, color-mix(in srgb, var(--m-focus) 2%, var(--m-background)));cursor:pointer;box-sizing:border-box;transition:background-color .2s ease,border-color .2s ease,box-shadow .2s ease;position:relative;flex-shrink:0;outline:none}.selectable-card__indicator input[type=checkbox][type=radio],.selectable-card__indicator input[type=radio][type=radio]{border-radius:50%}.selectable-card__indicator input[type=checkbox]:hover:not(:disabled),.selectable-card__indicator input[type=radio]:hover:not(:disabled){border-color:color-mix(in srgb,var(--m-focus) 55%,var(--m-background))}.selectable-card__indicator input[type=checkbox]:focus-visible,.selectable-card__indicator input[type=radio]:focus-visible{border-color:var(--m-focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--m-focus) 14%,transparent)}.selectable-card__indicator input[type=checkbox]:checked,.selectable-card__indicator input[type=radio]:checked{background:var(--m-focus);border-color:var(--m-focus)}.selectable-card__indicator input[type=checkbox]:checked:hover:not(:disabled),.selectable-card__indicator input[type=radio]:checked:hover:not(:disabled){box-shadow:0 0 0 3px color-mix(in srgb,var(--m-focus) 18%,transparent)}.selectable-card__indicator input[type=checkbox]:checked:after,.selectable-card__indicator input[type=radio]:checked:after{content:\"\";position:absolute;top:50%;left:50%}.selectable-card__indicator input[type=checkbox][type=checkbox]:checked:after,.selectable-card__indicator input[type=radio][type=checkbox]:checked:after{width:.45rem;height:.25rem;border-left:2px solid white;border-bottom:2px solid white;transform:translate(-50%,-60%) rotate(-45deg)}.selectable-card__indicator input[type=checkbox][type=radio]:checked:after,.selectable-card__indicator input[type=radio][type=radio]:checked:after{width:.5rem;height:.5rem;border-radius:50%;background:#fff;transform:translate(-50%,-50%)}.selectable-card__indicator input[type=checkbox]:disabled,.selectable-card__indicator input[type=radio]:disabled{opacity:.5;cursor:not-allowed}\n"] }]
24254
- }], propDecorators: { element: [{ type: i0.Input, args: [{ isSignal: true, alias: "element", required: false }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], template: [{ type: i0.Input, args: [{ isSignal: true, alias: "template", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], projectedTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }] } });
24299
+ }], ctorParameters: () => [], propDecorators: { element: [{ type: i0.Input, args: [{ isSignal: true, alias: "element", required: false }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], template: [{ type: i0.Input, args: [{ isSignal: true, alias: "template", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], projectedTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }] } });
24255
24300
 
24256
24301
  var selectableCard = /*#__PURE__*/Object.freeze({
24257
24302
  __proto__: null,
@@ -25059,7 +25104,7 @@ class FileUploadInputComponent extends BaseInputComponent {
25059
25104
  const modalStore = this.modalStore;
25060
25105
  if (!modalStore)
25061
25106
  return undefined;
25062
- const { ImageEditorComponent } = await import('./magmonium-one-image-editor-DN8v0YOv.mjs');
25107
+ const { ImageEditorComponent } = await import('./magmonium-one-image-editor-mHRn2N35.mjs');
25063
25108
  const ratio = String(this.config()?.ratio ?? '');
25064
25109
  return new Promise((resolve) => {
25065
25110
  const modalRef = new ModalRef();
@@ -40683,5 +40728,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
40683
40728
  * Generated bundle index. Do not edit.
40684
40729
  */
40685
40730
 
40686
- export { CheckboxGroupComponent as $, ACCESS_DOMAINS as A, ButtonComponent as B, AssetUrlPipe as C, Assets as D, AuthActivityPageComponent as E, AuthApiService as F, AuthStore as G, HeaderComponent$1 as H, InputType as I, AutosizeDirective as J, BadgeComponent as K, LabelComponent as L, MODAL_REF as M, BandingComponent as N, BaseArrayInputComponent as O, BaseRootWebComponent as P, BaseWebComponent as Q, RangeInputComponent as R, ButtonGroupComponent as S, TranslatePipe as T, CALLING_APP_HEADER as U, COMPONENT_INPUT_REGISTRY as V, CardComponent as W, CardWrapperComponent as X, CarouselComponent as Y, ChartComponent as Z, ChatBubbleComponent as _, MIN_ZOOM as a, ICON_SOURCE as a$, CheckboxInputComponent as a0, ClearableInputComponent as a1, ClipboardService as a2, ColComponent as a3, ColorPickerInputComponent as a4, CommentItemComponent as a5, CommentsApiService as a6, CommentsComponent as a7, CommentsStore as a8, CompactNumberPipe as a9, DocComponent as aA, DocEditorComponent as aB, DomService as aC, Domain as aD, DotGridComponent as aE, DragListDirective as aF, DragListItemDirective as aG, DraggableDirective as aH, DropdownInputComponent as aI, FILTER_GROUP_CONTEXT as aJ, FILTER_RANGE_MODES as aK, FILTER_VARIANTS as aL, FLEX_VARIANTS as aM, FOLDER_PICK_LISTENER as aN, FORM_ASSET_FOLDER as aO, FileService as aP, FileUploadDirective as aQ, FileUploadInputComponent as aR, FlexComponent as aS, FlexItemComponent as aT, FormGroupComponent as aU, FrameComponent as aV, FreezeService as aW, GRID_BREAKPOINTS as aX, GetNavService as aY, HighlightDirective as aZ, HttpService as a_, ComponentInputComponent as aa, ComponentStepperComponent as ab, ConfigComponent as ac, ConfirmComponent as ad, ContextMenuComponent as ae, CustomIconClass as af, CustomIconEditComponent as ag, DEFAULT_DENIAL as ah, DEFAULT_DOC_DENSITY as ai, DEFAULT_DOC_VARIANT as aj, DEFAULT_FILTER_RANGE_MODE as ak, DEFAULT_FILTER_VARIANT as al, DEFAULT_NAV_PARAM as am, DEFAULT_NAV_SEGMENT as an, DEFAULT_SIZE as ao, DOCK_MIN_PAGE_REMAINDER as ap, DOCS_FOLDER as aq, DOC_ACTION_ICONS as ar, DOC_DENSITIES as as, DOC_EDIT_ACTIONS as at, DOC_TOOLBAR_GROUPS as au, DOC_VARIANTS as av, DashboardCardComponent as aw, DateInputComponent as ax, DatePickerComponent as ay, DeviceService as az, MAX_ZOOM as b, PLATFORM_EXTENSIBLE_NAV_IDS as b$, IS_SIDE_PANEL as b0, IconComponent as b1, ImgComponent as b2, InstrumentScoreComponent as b3, InterceptorObservables as b4, JumbotronComponent as b5, KeyValueComponent as b6, LAYOUT_ASSET_FOLDER as b7, LOGIN_COMPONENT as b8, LOGIN_STORE as b9, NAV_SEGMENT_RE as bA, NAV_STORE_REF as bB, NAV_WC_COMPONENTS as bC, NAV_WIDGET_MAP as bD, NavComponent as bE, NavDetailsComponent as bF, NavHeaderComponent as bG, NavMenuComponent as bH, NavStore as bI, NavTrailComponent as bJ, NothingComponent as bK, NotificationElementComponent as bL, NotificationGroupComponent as bM, NotificationPopupComponent as bN, NotificationService as bO, NotificationStore as bP, NotificationType as bQ, NotificationWidgetComponent as bR, ONE_ASSET_BASE_URL as bS, OPTIONS_SOURCE as bT, OVERLAY_WIDGETS as bU, OneApp as bV, OptionsSourceDirective as bW, OverlayBodyComponent as bX, OverlayRef as bY, OverlayService as bZ, PLATFORM_BUTTON_NAV_IDS as b_, LanguageComponent as ba, ListComponent as bb, LogoComponent as bc, MAG_SOCKET_EVENT as bd, MHeroColorDirective as be, MHeroComponent as bf, MODAL_STORE_REF as bg, MOUNT_STATIC_SEGMENT as bh, MOUNT_TOKEN as bi, MRefDirective as bj, MStepComponent as bk, MURL_PARAM as bl, MURL_SEP as bm, ManifestEnrichmentService as bn, MarginDirective as bo, MenuComponent as bp, ModalDirective as bq, ModalRef as br, ModalStore as bs, MoneyPipe as bt, MultiRangeInputComponent as bu, MultiselectInputComponent as bv, MurlUrlSerializer as bw, NAV_DEFAULT_MURL as bx, NAV_ID_SEP as by, NAV_MAIN_BUTTONS as bz, cropRect as c, SelectableCardInputComponent as c$, PLATFORM_NAV_MAP as c0, PLATFORM_ROOT_CHILDREN as c1, PaddingDirective as c2, PaginationComponent as c3, PanelComponent as c4, PercentagePipe as c5, PlaygroundComponent as c6, PositionDirective as c7, PwaInstallComponent as c8, RECENT_SEARCH_LIMIT as c9, SectionAccordionGroupDirective as cA, SectionBackComponent as cB, SectionBadgesComponent as cC, SectionButtonGroupComponent as cD, SectionCardComponent as cE, SectionCarouselComponent as cF, SectionComponent as cG, SectionFilterComponent as cH, SectionFilterGroupComponent as cI, SectionFilterMenuComponent as cJ, SectionFilterPanelComponent as cK, SectionFilterRangePanelComponent as cL, SectionFooterComponent as cM, SectionFormComponent as cN, SectionFormItemComponent as cO, SectionHeaderComponent as cP, SectionHeroComponent as cQ, SectionPaginationComponent as cR, SectionSearchComponent as cS, SectionStepperComponent as cT, SectionTableCellComponent as cU, SectionTableComponent as cV, SectionTableRowComponent as cW, SectionTableSortPipe as cX, SectionTabsComponent as cY, SectionToggleComponent as cZ, SectionToggleItemDirective as c_, REMOTE_PAGE_RELOAD as ca, ROOT_NAV$1 as cb, RadioGroupComponent as cc, RadioInputComponent as cd, RatingInputComponent as ce, ReactiveElementComponent as cf, RemoteComponent as cg, RemoteLoaderService as ch, ResizeElementComponent as ci, RouteContainer as cj, RowComponent as ck, SEARCH_QUERY as cl, SEARCH_RESULTS_EVENT as cm, SECTION_ACCORDION_GROUP as cn, SECTION_FORM_CONTEXT as co, SECTION_TABLE_VARIANTS as cp, SHARED_ICONS as cq, SIZE_CONTEXT as cr, SPACING_INWARD as cs, ScoreComponent as ct, ScrollComponent as cu, ScrollService as cv, SearchPanelComponent as cw, SearchStore as cx, SearchUserPanelComponent as cy, SectionAccordionDirective as cz, drawFramed as d, bootstrapMagApp as d$, SelectorDirective as d0, SettingsSearchBarComponent as d1, SettingsSearchService as d2, ShapeComponent as d3, SharedStoreRegistry as d4, SidePanelDirective as d5, Size as d6, SocketStore as d7, SortComponent as d8, StatComponent as d9, ToolTipDirective as dA, TooltipComponent as dB, TranslateService as dC, TreeGridComponent as dD, URL_SEP as dE, USER_STORE_REF as dF, USER_TAB_MAP as dG, UniverseComponent as dH, UserApiService as dI, UserAvatarComponent as dJ, UserComponent as dK, UserNavComponent as dL, UserSettingsComponent as dM, UserStore as dN, WC_BUNDLE as dO, WC_NAVIGATE_EVENT as dP, WC_ROUTE_CHANGED_EVENT as dQ, WC_SEARCH_GROUPS as dR, WIN_USER_TAB_HOOK as dS, WIN_USER_TAB_KEY as dT, WatermarkComponent as dU, WcRouterStore as dV, WrapperInputComponent as dW, anchorNavId as dX, applyColorsToElement as dY, applyDocEdit as dZ, assetOptions as d_, StepComponent as da, StepperComponent as db, StepsComponent as dc, StorageService as dd, StrokeLinecap as de, StrokeLinejoin as df, SummaryComponent as dg, SvgGeneratorComponent as dh, SvgGeneratorService as di, SvgService as dj, TOTAL_COLUMNS as dk, TRANSLATION_SOURCE as dl, TableComponent as dm, TechnicalMeterComponent as dn, TextInputComponent as dp, TextareaInputComponent as dq, ThemeComponent as dr, ThemeDataService as ds, ThemeService as dt, ThemeStore as du, TimeAgoPipe as dv, TimelineComponent as dw, ToggleButtonComponent as dx, ToggleInputComponent as dy, ToggleRadioInputComponent as dz, encodeFramed as e, injectAuthenticate as e$, bootstrapPwaInstall as e0, buildWcBaseUrl as e1, calculateLuminance as e2, calculateRanks as e3, cellText as e4, checkDoc as e5, checkFilterCondition as e6, childNavId as e7, claimDenial as e8, classListSignal as e9, filterNumberList as eA, filterOne as eB, filterPanelOf as eC, filterPanelWidth as eD, filterRange as eE, filterTreeGridRows as eF, filterValueList as eG, filterValues as eH, flattenTreeGridRows as eI, formatBadgeCount as eJ, fullName as eK, generateClipPath as eL, generateTransform as eM, getClassList as eN, getProperty as eO, getScrollParent as eP, getTierFromPreviewPath as eQ, getTreeGridRow as eR, getUniqueId as eS, getValue as eT, hasErrorComputed as eU, hexToRgb as eV, hslToRgb$1 as eW, initMagmoniumApp as eX, initialNotificationState as eY, initialState$2 as eZ, initials as e_, coerceSize as ea, cornerEdge as eb, cornerSide as ec, createMap as ed, createPlatformNavMap as ee, definedWcTierOf as ef, deriveAvatarGradient as eg, deriveContrastColor as eh, deriveOppositeColor as ei, derivePropertyName as ej, docActionKey as ek, docAssetCandidates as el, docProblemKey as em, docRemotePath as en, emailValidation as eo, evaluate as ep, evaluateBool as eq, fieldBoolean as er, fieldNumber as es, fieldString as et, filterHoldsList as eu, filterHoldsOneBound as ev, filterHoldsOptions as ew, filterHoldsRange as ex, filterList as ey, filterNumber as ez, clampFraming as f, permissionRefusal as f$, injectDefaultDenial as f0, injectInstallApp as f1, injectParentSize as f2, injectScrollSticky as f3, isBootRedirect as f4, isButtonName as f5, isCancelledComputed as f6, isExtensiblePlatformNavId as f7, isJson as f8, isLoadingComputed as f9, minLengthValidation as fA, minValidation as fB, miniMarkToHtml as fC, mountFor as fD, mountPatternProblem as fE, mountPatternText as fF, mountSegmentOf as fG, mountTokenOf as fH, navIdChain as fI, navIdFor as fJ, navIdSegment as fK, navIdToRoutePath as fL, navIdToSegments as fM, navParamOf as fN, navTailMatcher as fO, navToId as fP, navVisibilityGuard as fQ, nextSectionTableSort as fR, normalizeAssetOptions as fS, offsetOfLine as fT, parentNavId as fU, parseAddress as fV, parseColor as fW, parseMountPattern as fX, parsePatternNames as fY, patternValidation as fZ, patternsValidation as f_, isLocalhost as fa, isNavInstanceConfig as fb, isNavMenuConfig as fc, isNavRowsConfig as fd, isNavVisibilityConfig as fe, isPlatformNavId as ff, isSize as fg, isTierPreview as fh, isUrlLocalhost as fi, isValidNavId as fj, isValidNavSegment as fk, isWebComponent as fl, linkToId as fm, linkToNav as fn, loadingActions as fo, mInterceptor as fp, manualValidation as fq, matchFieldValidation as fr, matchMount as fs, maxLengthValidation as ft, maxValidation as fu, mergePlatformNav as fv, mergeUnique as fw, mergeUniqueBy as fx, mergeUniqueWith as fy, minAgeValidation as fz, BaseInputComponent as g, platformNavWidgets as g0, privateGuard as g1, processImageToSvg as g2, provideAppContext as g3, provideMagAppConfig as g4, provideMagWcConfig as g5, provideMagWcRoutes as g6, provideModalComponents as g7, provideMurlUrlSerializer as g8, provideNavWidgets as g9, setProperty as gA, setTreeGridChildren as gB, setWcTier as gC, settingsWidgets as gD, shouldShowBadge as gE, sortSectionTableRows as gF, splitNavId as gG, splitOnMatch as gH, stringToColor as gI, tailRouteOf as gJ, toAttrBool as gK, toAttrNumber as gL, toCssLength as gM, toHostNavId as gN, toLength$1 as gO, toLocalNavId as gP, toggleTreeGridRow as gQ, unfetchedPlatformNav as gR, ungroupedDocActions as gS, urlValidation as gT, wcTierOf as gU, provideOverlayWidgets as ga, providePlatformNavWidgets as gb, provideSearch as gc, provideSizeContext as gd, provideUserTabs as ge, publicGuard as gf, readFieldPatterns as gg, recordDefinedWcTier as gh, remoteOutletRoute as gi, renderAddress as gj, renderDocument as gk, requiredValidation as gl, resolveConfigAsset as gm, resolveIconSize as gn, resolvePallet as go, resolvePatternRules as gp, resolveSize as gq, resolveSpacing as gr, rgbToHex as gs, rgbToHsl as gt, rowHasChildren as gu, samePatterns as gv, sectionTableColumnId as gw, sectionTableColumnWidths as gx, sectionTableFrozenCount as gy, segmentsToNavId as gz, BaseTextInputComponent as h, initialFraming as i, TextOutputComponent as j, IS_DESIGN_MODE as k, APP_CONTEXT_REF as l, APP_LINK as m, ASSET_BASE_URL as n, outputSize as o, parseRatio as p, AccordionBodyDirective as q, renameForType as r, AccordionComponent as s, AccordionGroupComponent as t, ActionComponent as u, AnimatedGraphsComponent as v, AppCardComponent as w, AppRelationType as x, AppTileComponent as y, AssetStore as z };
40687
- //# sourceMappingURL=magmonium-one-magmonium-one-DWeZSPCv.mjs.map
40731
+ export { CheckboxGroupComponent as $, ACCESS_DOMAINS as A, ButtonComponent as B, AssetUrlPipe as C, Assets as D, AuthActivityPageComponent as E, AuthApiService as F, AuthStore as G, HeaderComponent$1 as H, InputType as I, AutosizeDirective as J, BadgeComponent as K, LabelComponent as L, MODAL_REF as M, BandingComponent as N, BaseArrayInputComponent as O, BaseRootWebComponent as P, BaseWebComponent as Q, RangeInputComponent as R, ButtonGroupComponent as S, TranslatePipe as T, CALLING_APP_HEADER as U, COMPONENT_INPUT_REGISTRY as V, CardComponent as W, CardWrapperComponent as X, CarouselComponent as Y, ChartComponent as Z, ChatBubbleComponent as _, MIN_ZOOM as a, ICON_SOURCE as a$, CheckboxInputComponent as a0, ClearableInputComponent as a1, ClipboardService as a2, ColComponent as a3, ColorPickerInputComponent as a4, CommentItemComponent as a5, CommentsApiService as a6, CommentsComponent as a7, CommentsStore as a8, CompactNumberPipe as a9, DocComponent as aA, DocEditorComponent as aB, DomService as aC, Domain as aD, DotGridComponent as aE, DragListDirective as aF, DragListItemDirective as aG, DraggableDirective as aH, DropdownInputComponent as aI, FILTER_GROUP_CONTEXT as aJ, FILTER_RANGE_MODES as aK, FILTER_VARIANTS as aL, FLEX_VARIANTS as aM, FOLDER_PICK_LISTENER as aN, FORM_ASSET_FOLDER as aO, FileService as aP, FileUploadDirective as aQ, FileUploadInputComponent as aR, FlexComponent as aS, FlexItemComponent as aT, FormGroupComponent as aU, FrameComponent as aV, FreezeService as aW, GRID_BREAKPOINTS as aX, GetNavService as aY, HighlightDirective as aZ, HttpService as a_, ComponentInputComponent as aa, ComponentStepperComponent as ab, ConfigComponent as ac, ConfirmComponent as ad, ContextMenuComponent as ae, CustomIconClass as af, CustomIconEditComponent as ag, DEFAULT_DENIAL as ah, DEFAULT_DOC_DENSITY as ai, DEFAULT_DOC_VARIANT as aj, DEFAULT_FILTER_RANGE_MODE as ak, DEFAULT_FILTER_VARIANT as al, DEFAULT_NAV_PARAM as am, DEFAULT_NAV_SEGMENT as an, DEFAULT_SIZE as ao, DOCK_MIN_PAGE_REMAINDER as ap, DOCS_FOLDER as aq, DOC_ACTION_ICONS as ar, DOC_DENSITIES as as, DOC_EDIT_ACTIONS as at, DOC_TOOLBAR_GROUPS as au, DOC_VARIANTS as av, DashboardCardComponent as aw, DateInputComponent as ax, DatePickerComponent as ay, DeviceService as az, MAX_ZOOM as b, PLATFORM_EXTENSIBLE_NAV_IDS as b$, IS_SIDE_PANEL as b0, IconComponent as b1, ImgComponent as b2, InstrumentScoreComponent as b3, InterceptorObservables as b4, JumbotronComponent as b5, KeyValueComponent as b6, LAYOUT_ASSET_FOLDER as b7, LOGIN_COMPONENT as b8, LOGIN_STORE as b9, NAV_SEGMENT_RE as bA, NAV_STORE_REF as bB, NAV_WC_COMPONENTS as bC, NAV_WIDGET_MAP as bD, NavComponent as bE, NavDetailsComponent as bF, NavHeaderComponent as bG, NavMenuComponent as bH, NavStore as bI, NavTrailComponent as bJ, NothingComponent as bK, NotificationElementComponent as bL, NotificationGroupComponent as bM, NotificationPopupComponent as bN, NotificationService as bO, NotificationStore as bP, NotificationType as bQ, NotificationWidgetComponent as bR, ONE_ASSET_BASE_URL as bS, OPTIONS_SOURCE as bT, OVERLAY_WIDGETS as bU, OneApp as bV, OptionsSourceDirective as bW, OverlayBodyComponent as bX, OverlayRef as bY, OverlayService as bZ, PLATFORM_BUTTON_NAV_IDS as b_, LanguageComponent as ba, ListComponent as bb, LogoComponent as bc, MAG_SOCKET_EVENT as bd, MHeroColorDirective as be, MHeroComponent as bf, MODAL_STORE_REF as bg, MOUNT_STATIC_SEGMENT as bh, MOUNT_TOKEN as bi, MRefDirective as bj, MStepComponent as bk, MURL_PARAM as bl, MURL_SEP as bm, ManifestEnrichmentService as bn, MarginDirective as bo, MenuComponent as bp, ModalDirective as bq, ModalRef as br, ModalStore as bs, MoneyPipe as bt, MultiRangeInputComponent as bu, MultiselectInputComponent as bv, MurlUrlSerializer as bw, NAV_DEFAULT_MURL as bx, NAV_ID_SEP as by, NAV_MAIN_BUTTONS as bz, cropRect as c, SelectableCardInputComponent as c$, PLATFORM_NAV_MAP as c0, PLATFORM_ROOT_CHILDREN as c1, PaddingDirective as c2, PaginationComponent as c3, PanelComponent as c4, PercentagePipe as c5, PlaygroundComponent as c6, PositionDirective as c7, PwaInstallComponent as c8, RECENT_SEARCH_LIMIT as c9, SectionAccordionGroupDirective as cA, SectionBackComponent as cB, SectionBadgesComponent as cC, SectionButtonGroupComponent as cD, SectionCardComponent as cE, SectionCarouselComponent as cF, SectionComponent as cG, SectionFilterComponent as cH, SectionFilterGroupComponent as cI, SectionFilterMenuComponent as cJ, SectionFilterPanelComponent as cK, SectionFilterRangePanelComponent as cL, SectionFooterComponent as cM, SectionFormComponent as cN, SectionFormItemComponent as cO, SectionHeaderComponent as cP, SectionHeroComponent as cQ, SectionPaginationComponent as cR, SectionSearchComponent as cS, SectionStepperComponent as cT, SectionTableCellComponent as cU, SectionTableComponent as cV, SectionTableRowComponent as cW, SectionTableSortPipe as cX, SectionTabsComponent as cY, SectionToggleComponent as cZ, SectionToggleItemDirective as c_, REMOTE_PAGE_RELOAD as ca, ROOT_NAV$1 as cb, RadioGroupComponent as cc, RadioInputComponent as cd, RatingInputComponent as ce, ReactiveElementComponent as cf, RemoteComponent as cg, RemoteLoaderService as ch, ResizeElementComponent as ci, RouteContainer as cj, RowComponent as ck, SEARCH_QUERY as cl, SEARCH_RESULTS_EVENT as cm, SECTION_ACCORDION_GROUP as cn, SECTION_FORM_CONTEXT as co, SECTION_TABLE_VARIANTS as cp, SHARED_ICONS as cq, SIZE_CONTEXT as cr, SPACING_INWARD as cs, ScoreComponent as ct, ScrollComponent as cu, ScrollService as cv, SearchPanelComponent as cw, SearchStore as cx, SearchUserPanelComponent as cy, SectionAccordionDirective as cz, drawFramed as d, bootstrapMagApp as d$, SelectorDirective as d0, SettingsSearchBarComponent as d1, SettingsSearchService as d2, ShapeComponent as d3, SharedStoreRegistry as d4, SidePanelDirective as d5, Size as d6, SocketStore as d7, SortComponent as d8, StatComponent as d9, ToolTipDirective as dA, TooltipComponent as dB, TranslateService as dC, TreeGridComponent as dD, URL_SEP as dE, USER_STORE_REF as dF, USER_TAB_MAP as dG, UniverseComponent as dH, UserApiService as dI, UserAvatarComponent as dJ, UserComponent as dK, UserNavComponent as dL, UserSettingsComponent as dM, UserStore as dN, WC_BUNDLE as dO, WC_NAVIGATE_EVENT as dP, WC_ROUTE_CHANGED_EVENT as dQ, WC_SEARCH_GROUPS as dR, WIN_USER_TAB_HOOK as dS, WIN_USER_TAB_KEY as dT, WatermarkComponent as dU, WcRouterStore as dV, WrapperInputComponent as dW, anchorNavId as dX, applyColorsToElement as dY, applyDocEdit as dZ, assetOptions as d_, StepComponent as da, StepperComponent as db, StepsComponent as dc, StorageService as dd, StrokeLinecap as de, StrokeLinejoin as df, SummaryComponent as dg, SvgGeneratorComponent as dh, SvgGeneratorService as di, SvgService as dj, TOTAL_COLUMNS as dk, TRANSLATION_SOURCE as dl, TableComponent as dm, TechnicalMeterComponent as dn, TextInputComponent as dp, TextareaInputComponent as dq, ThemeComponent as dr, ThemeDataService as ds, ThemeService as dt, ThemeStore as du, TimeAgoPipe as dv, TimelineComponent as dw, ToggleButtonComponent as dx, ToggleInputComponent as dy, ToggleRadioInputComponent as dz, encodeFramed as e, injectAuthenticate as e$, bootstrapPwaInstall as e0, buildWcBaseUrl as e1, calculateLuminance as e2, calculateRanks as e3, cellText as e4, checkDoc as e5, checkFilterCondition as e6, childNavId as e7, claimDenial as e8, classListSignal as e9, filterNumberList as eA, filterOne as eB, filterPanelOf as eC, filterPanelWidth as eD, filterRange as eE, filterTreeGridRows as eF, filterValueList as eG, filterValues as eH, flattenTreeGridRows as eI, formatBadgeCount as eJ, fullName as eK, generateClipPath as eL, generateTransform as eM, getClassList as eN, getProperty as eO, getScrollParent as eP, getTierFromPreviewPath as eQ, getTreeGridRow as eR, getUniqueId as eS, getValue as eT, hasErrorComputed as eU, hexToRgb as eV, hslToRgb$1 as eW, initMagmoniumApp as eX, initialNotificationState as eY, initialState$2 as eZ, initials as e_, coerceSize as ea, cornerEdge as eb, cornerSide as ec, createMap as ed, createPlatformNavMap as ee, definedWcTierOf as ef, deriveAvatarGradient as eg, deriveContrastColor as eh, deriveOppositeColor as ei, derivePropertyName as ej, docActionKey as ek, docAssetCandidates as el, docProblemKey as em, docRemotePath as en, emailValidation as eo, evaluate as ep, evaluateBool as eq, fieldBoolean as er, fieldNumber as es, fieldString as et, filterHoldsList as eu, filterHoldsOneBound as ev, filterHoldsOptions as ew, filterHoldsRange as ex, filterList as ey, filterNumber as ez, clampFraming as f, permissionRefusal as f$, injectDefaultDenial as f0, injectInstallApp as f1, injectParentSize as f2, injectScrollSticky as f3, isBootRedirect as f4, isButtonName as f5, isCancelledComputed as f6, isExtensiblePlatformNavId as f7, isJson as f8, isLoadingComputed as f9, minLengthValidation as fA, minValidation as fB, miniMarkToHtml as fC, mountFor as fD, mountPatternProblem as fE, mountPatternText as fF, mountSegmentOf as fG, mountTokenOf as fH, navIdChain as fI, navIdFor as fJ, navIdSegment as fK, navIdToRoutePath as fL, navIdToSegments as fM, navParamOf as fN, navTailMatcher as fO, navToId as fP, navVisibilityGuard as fQ, nextSectionTableSort as fR, normalizeAssetOptions as fS, offsetOfLine as fT, parentNavId as fU, parseAddress as fV, parseColor as fW, parseMountPattern as fX, parsePatternNames as fY, patternValidation as fZ, patternsValidation as f_, isLocalhost as fa, isNavInstanceConfig as fb, isNavMenuConfig as fc, isNavRowsConfig as fd, isNavVisibilityConfig as fe, isPlatformNavId as ff, isSize as fg, isTierPreview as fh, isUrlLocalhost as fi, isValidNavId as fj, isValidNavSegment as fk, isWebComponent as fl, linkToId as fm, linkToNav as fn, loadingActions as fo, mInterceptor as fp, manualValidation as fq, matchFieldValidation as fr, matchMount as fs, maxLengthValidation as ft, maxValidation as fu, mergePlatformNav as fv, mergeUnique as fw, mergeUniqueBy as fx, mergeUniqueWith as fy, minAgeValidation as fz, BaseInputComponent as g, platformNavWidgets as g0, presetDefaultOption as g1, privateGuard as g2, processImageToSvg as g3, provideAppContext as g4, provideMagAppConfig as g5, provideMagWcConfig as g6, provideMagWcRoutes as g7, provideModalComponents as g8, provideMurlUrlSerializer as g9, segmentsToNavId as gA, setProperty as gB, setTreeGridChildren as gC, setWcTier as gD, settingsWidgets as gE, shouldShowBadge as gF, sortSectionTableRows as gG, splitNavId as gH, splitOnMatch as gI, stringToColor as gJ, tailRouteOf as gK, toAttrBool as gL, toAttrNumber as gM, toCssLength as gN, toHostNavId as gO, toLength$1 as gP, toLocalNavId as gQ, toggleTreeGridRow as gR, unfetchedPlatformNav as gS, ungroupedDocActions as gT, urlValidation as gU, wcTierOf as gV, provideNavWidgets as ga, provideOverlayWidgets as gb, providePlatformNavWidgets as gc, provideSearch as gd, provideSizeContext as ge, provideUserTabs as gf, publicGuard as gg, readFieldPatterns as gh, recordDefinedWcTier as gi, remoteOutletRoute as gj, renderAddress as gk, renderDocument as gl, requiredValidation as gm, resolveConfigAsset as gn, resolveIconSize as go, resolvePallet as gp, resolvePatternRules as gq, resolveSize as gr, resolveSpacing as gs, rgbToHex as gt, rgbToHsl as gu, rowHasChildren as gv, samePatterns as gw, sectionTableColumnId as gx, sectionTableColumnWidths as gy, sectionTableFrozenCount as gz, BaseTextInputComponent as h, initialFraming as i, TextOutputComponent as j, IS_DESIGN_MODE as k, APP_CONTEXT_REF as l, APP_LINK as m, ASSET_BASE_URL as n, outputSize as o, parseRatio as p, AccordionBodyDirective as q, renameForType as r, AccordionComponent as s, AccordionGroupComponent as t, ActionComponent as u, AnimatedGraphsComponent as v, AppCardComponent as w, AppRelationType as x, AppTileComponent as y, AssetStore as z };
40732
+ //# sourceMappingURL=magmonium-one-magmonium-one-DdYdOA7f.mjs.map