@magmonium/one 0.3.2 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -455,6 +455,8 @@
455
455
  "revenue": "Revenue",
456
456
  "review": "Review",
457
457
  "risk": "Risk",
458
+ "rotate-deploy-token": "Rotate deploy token?",
459
+ "rotate-deploy-token-body": "A new token will be generated and the current one stops working immediately. Update MAG_DEPLOY_TOKEN in your CI after rotating.",
458
460
  "round": "Round",
459
461
  "sat": "Sat",
460
462
  "saturday": "Saturday",
@@ -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-DcsNdIJx.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-CHOp1JC5.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-CW-I0TUU.mjs.map
290
+ //# sourceMappingURL=magmonium-one-image-editor-BKM7bzcT.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"magmonium-one-image-editor-CW-I0TUU.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-BKM7bzcT.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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"}
@@ -7464,7 +7464,7 @@ class SectionFormItemComponent extends ConfigComponent {
7464
7464
  break;
7465
7465
  }
7466
7466
  case InputType.TOGGLE: {
7467
- const { ToggleInputComponent } = await import('./magmonium-one-toggle-C5xiIieI.mjs');
7467
+ const { ToggleInputComponent } = await import('./magmonium-one-toggle-CW9-Verx.mjs');
7468
7468
  this.createDynamicComponent(seq, ToggleInputComponent, [], true);
7469
7469
  break;
7470
7470
  }
@@ -7476,12 +7476,12 @@ class SectionFormItemComponent extends ConfigComponent {
7476
7476
  break;
7477
7477
  }
7478
7478
  case InputType.PASSWORD: {
7479
- const { PasswordInputComponent } = await import('./magmonium-one-password-BdD7B7cS.mjs');
7479
+ const { PasswordInputComponent } = await import('./magmonium-one-password-7HZJ1aT5.mjs');
7480
7480
  this.createDynamicComponent(seq, PasswordInputComponent);
7481
7481
  break;
7482
7482
  }
7483
7483
  case InputType.OTP: {
7484
- const { OtpInputComponent } = await import('./magmonium-one-otp-x-dc-FYj.mjs');
7484
+ const { OtpInputComponent } = await import('./magmonium-one-otp-2KnorO69.mjs');
7485
7485
  this.createDynamicComponent(seq, OtpInputComponent);
7486
7486
  break;
7487
7487
  }
@@ -17120,7 +17120,7 @@ withMethods((store) => ({
17120
17120
  hasRole: (role) => !!role && (store.user()?.roles ?? []).some((held) => held === role),
17121
17121
  })), withMethods((store, api = inject(AuthApiService), storage = inject(StorageService), modalStore = inject(ModalStore)) => {
17122
17122
  let deployTokenPending = false;
17123
- const rotateDeployToken = () => {
17123
+ const mintDeployToken = () => {
17124
17124
  if (deployTokenPending)
17125
17125
  return;
17126
17126
  deployTokenPending = true;
@@ -17200,9 +17200,18 @@ withMethods((store) => ({
17200
17200
  // replace.
17201
17201
  ensureDeployToken() {
17202
17202
  if (!store.deployToken())
17203
- rotateDeployToken();
17203
+ mintDeployToken();
17204
+ },
17205
+ // Every caller confirms first: the old token dies the moment the new
17206
+ // one is minted.
17207
+ rotateDeployToken() {
17208
+ modalStore.confirm({
17209
+ header: 'rotate-deploy-token',
17210
+ body: 'rotate-deploy-token-body',
17211
+ kind: 'yes-no',
17212
+ type: 'warning',
17213
+ }, mintDeployToken);
17204
17214
  },
17205
- rotateDeployToken,
17206
17215
  logout() {
17207
17216
  patchState(store, initialState$2);
17208
17217
  storage.deleteLocal('tokens');
@@ -18622,6 +18631,12 @@ class SectionTableComponent extends ConfigComponent {
18622
18631
  * (m-one-ui ADR 0148).
18623
18632
  */
18624
18633
  sortChange = output();
18634
+ /**
18635
+ * Fires once, after the table's first render — the hook a Screen binds to
18636
+ * load the rows the table is about to show, the way a form's
18637
+ * `formInitialized` is bound.
18638
+ */
18639
+ tableInitialized = output();
18625
18640
  /** The sort in force, read by `sectionTableSort` around each Repeat's source. */
18626
18641
  sort = signal(null, ...(ngDevMode ? [{ debugName: "sort" }] : /* istanbul ignore next */ []));
18627
18642
  columns = computed(() => this.config()?.columns ?? [], ...(ngDevMode ? [{ debugName: "columns" }] : /* istanbul ignore next */ []));
@@ -18661,6 +18676,7 @@ class SectionTableComponent extends ConfigComponent {
18661
18676
  measure();
18662
18677
  });
18663
18678
  inject(DestroyRef).onDestroy(() => observer?.disconnect());
18679
+ afterNextRender(() => this.tableInitialized.emit());
18664
18680
  }
18665
18681
  isFolded(index) {
18666
18682
  const column = this.columns()[index];
@@ -18711,7 +18727,7 @@ class SectionTableComponent extends ConfigComponent {
18711
18727
  this.sortChange.emit(next);
18712
18728
  }
18713
18729
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SectionTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
18714
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: SectionTableComponent, isStandalone: true, selector: "m-section-table", inputs: { sticky: { classPropertyName: "sticky", publicName: "sticky", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { sortChange: "sortChange" }, host: { classAttribute: "m-section-table-host" }, providers: [
18730
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: SectionTableComponent, isStandalone: true, selector: "m-section-table", inputs: { sticky: { classPropertyName: "sticky", publicName: "sticky", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { sortChange: "sortChange", tableInitialized: "tableInitialized" }, host: { classAttribute: "m-section-table-host" }, providers: [
18715
18731
  {
18716
18732
  provide: SECTION_TABLE_CONTEXT,
18717
18733
  useFactory: () => {
@@ -18892,7 +18908,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
18892
18908
  },
18893
18909
  },
18894
18910
  ], styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.m-table{display:flex;flex-direction:column;border:1px solid var(--m-backdrop-border);border-radius:12px;overflow:clip;background:#ffffffe6;-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);position:relative;transition:background-color .3s ease}.m-table--flat{border:none;box-shadow:none;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:0}.m-table__toolbar{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;padding:1.5rem var(--m-table-toolbar-padding-x, 1.25rem);border-bottom:1px solid var(--m-backdrop-border);gap:1.5rem;background:color-mix(in srgb,var(--m-background) 45%,transparent)}.m-table--flat .m-table__toolbar{background:transparent;padding-left:0;padding-right:0}.m-table__title{margin:0;font-size:1.25rem;font-weight:800;color:var(--m-text);letter-spacing:-.02em;flex:1}.m-table__search{flex:0 1 auto;display:flex;align-items:center}.m-table__search .m-input-wrapper{width:100%}.m-table__mobile-view{display:flex;flex-direction:column;gap:1rem;padding:1.25rem;flex:1;overflow:auto}.m-table__empty-mobile{padding:3rem 1.5rem;text-align:center;color:var(--m-text-tertiary);font-size:.9375rem;font-weight:500;font-style:italic;opacity:.8;background:color-mix(in srgb,var(--m-background) 20%,transparent);border-radius:12px;border:1px dashed var(--m-backdrop-border)}.m-table__wrapper{overflow:auto;flex:1}.m-table__wrapper::-webkit-scrollbar{width:6px;height:6px}.m-table__wrapper::-webkit-scrollbar-track{background:transparent}.m-table__wrapper::-webkit-scrollbar-thumb{background:var(--m-backdrop-border);border-radius:10px}.m-table__wrapper::-webkit-scrollbar-thumb:hover{background:var(--m-text-tertiary)}.m-table__table{width:100%;min-width:100%;border-collapse:separate;border-spacing:0}mark.m-table__highlight{background:var(--m-highlight);color:#000;border-radius:2px;padding:0 2px;font-weight:700;box-shadow:0 1px 4px #0003}mark.m-table__highlight .m-one-pagination{margin-left:auto;--m-button-size: 2.25rem;--m-pagination-gap: .375rem}.m-table-pagination{display:flex;align-items:center;gap:1.5rem;padding:1.25rem var(--m-table-pagination-padding-x, 1.25rem);border-top:1px solid var(--m-backdrop-border);font-size:.8125rem;flex-wrap:wrap;background:color-mix(in srgb,var(--m-background) 40%,transparent)}.m-table--flat .m-table-pagination{background:transparent;padding-left:0;padding-right:0}.m-table-pagination__size{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;color:var(--m-text-secondary);font-weight:500}.m-table-pagination__select{border:1px solid var(--m-backdrop-border);border-radius:8px;background:var(--m-backdrop-surface);color:var(--m-text);padding:.375rem .625rem;font-size:.8125rem;font-weight:600;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);outline:none}.m-table-pagination__select:hover{background:var(--m-backdrop-glass);border-color:var(--m-mm);box-shadow:0 0 0 3px color-mix(in srgb,var(--m-mm) 10%,transparent)}.m-table-pagination__select:focus{border-color:var(--m-mm);box-shadow:0 0 0 3px color-mix(in srgb,var(--m-mm) 20%,transparent)}.m-table-filter{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:1rem 1.25rem;background:color-mix(in srgb,var(--m-background-lite) 60%,transparent);border-bottom:1px solid var(--m-backdrop-border);box-shadow:inset 0 2px 4px #00000005;overflow-x:auto;scrollbar-width:none}.m-table-filter::-webkit-scrollbar{display:none}.m-table--flat .m-table-filter{background:transparent;padding-left:0;padding-right:0;border-bottom:none}.m-table-filter__item{display:flex;align-items:center;gap:10px;padding:.4375rem 1rem;border-radius:12px;background:var(--m-background);border:1px solid var(--m-backdrop-border);color:var(--m-text-secondary);cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);white-space:nowrap;-webkit-user-select:none;user-select:none;outline:none;font-weight:500}.m-table-filter__item:hover{border-color:var(--m-mm);color:var(--m-mm);background:var(--m-background);transform:translateY(-1px);box-shadow:0 4px 12px #0000000d}.m-table-filter__item--active{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);font-weight:600;box-shadow:0 8px 16px color-mix(in srgb,var(--m-mm) 25%,transparent)}.m-table-filter__item--active:hover{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);transform:translateY(-1px)}.m-table-filter__item--active .m-table-filter__badge{background:#fff3;color:var(--m-inverse-text);border-color:#ffffff1a}.m-table-filter__item--primary{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);font-weight:600;box-shadow:0 8px 16px color-mix(in srgb,var(--m-mm) 25%,transparent)}.m-table-filter__item--primary:hover{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);transform:translateY(-1px);box-shadow:0 10px 20px color-mix(in srgb,var(--m-mm) 30%,transparent)}.m-table-filter__item--primary .m-table-filter__badge{background:#fff3;color:var(--m-inverse-text);border-color:#ffffff1a}.m-table-filter__item--danger{border-color:var(--m-error);color:var(--m-error)}.m-table-filter__item--danger:hover{border-color:var(--m-error);color:var(--m-error);background:var(--m-backdrop-error);transform:translateY(-1px);box-shadow:0 4px 12px color-mix(in srgb,var(--m-error) 12%,transparent)}.m-table-filter__item--danger .m-table-filter__badge{background:var(--m-backdrop-error);color:var(--m-error);border-color:color-mix(in srgb,var(--m-error) 20%,transparent)}.m-table-filter__label{font-size:.8125rem;font-weight:600;letter-spacing:.01em}.m-table-filter__badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding:0 .375rem;border-radius:100px;background:var(--m-backdrop-surface);color:var(--m-text-secondary);font-size:.6875rem;font-weight:700;border:1px solid var(--m-backdrop-border);transition:all .2s ease}.m-table-thead__th{position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--m-background) 95%,transparent);-webkit-backdrop-filter:blur(28px);backdrop-filter:blur(28px);padding:1.25rem;text-align:left;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--m-text-tertiary);border-bottom:2px solid var(--m-backdrop-border);white-space:nowrap;transition:all .2s ease}.m-table-thead__th:hover{color:var(--m-text);background:var(--m-background)}@media(min-width:769px){.m-table-thead__th--fixed{z-index:20;background:var(--m-background)}}@media(max-width:768px){.m-table-thead__th--fixed{position:static;z-index:auto}}.m-table-thead__th--fixed{border-right:none}@media(min-width:769px){.m-table-thead__th--fixed-last{border-right:1px solid var(--m-backdrop-border)}}@media(max-width:768px){.m-table-thead__th--fixed-last{border-right:none}}.m-table-thead__th--sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.m-table-thead__th--select{width:48px;min-width:48px;max-width:48px;padding:0 1rem;text-align:center}.m-table-thead__th--select input[type=checkbox]{width:1rem;height:1rem;cursor:pointer;accent-color:var(--m-mm);border-radius:3px;display:block;margin:0 auto}.m-table-thead__cell{display:flex;align-items:center;gap:.5rem}.m-table-thead__sort-icon{color:var(--m-mm);opacity:.6;transition:opacity .2s ease}.m-table-thead__th:hover .m-table-thead__sort-icon{opacity:1}.m-table-thead__menu-btn{display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;margin-left:auto;border:none;background:transparent;cursor:pointer;color:var(--m-text-tertiary);border-radius:6px;opacity:0;transition:all .15ms ease}.m-table-thead__menu-btn:hover{background:var(--m-backdrop-surface);color:var(--m-text)}.m-table-thead__th:hover .m-table-thead__menu-btn{opacity:1}.m-table-body__row{transition:background-color .3s cubic-bezier(.4,0,.2,1);position:relative}.m-table-body__row:hover{background:color-mix(in srgb,var(--m-mm) 5%,transparent)}.m-table-body__row:hover .m-table-body__cell{background:inherit}.m-table-body__cell{padding:1rem 1.25rem;font-size:.875rem;color:var(--m-text);border-bottom:1px solid var(--m-backdrop-border);white-space:nowrap;vertical-align:middle;background:transparent;transition:background-color .3s ease}.m-table-body__cell[class*=--number],.m-table-body__cell[class*=--currency],.m-table-body__cell[class*=--percent]{font-family:Inter,Roboto Mono,monospace;font-variant-numeric:tabular-nums;letter-spacing:-.01em}@media(min-width:769px){.m-table-body__cell--fixed{position:sticky;background:var(--m-background);z-index:5}}@media(max-width:768px){.m-table-body__cell--fixed{position:static;background:transparent;z-index:auto}}.m-table-body__cell--fixed{border-right:none;transition:background-color .3s ease}.m-table-body__row:hover .m-table-body__cell--fixed{background:color-mix(in srgb,var(--m-mm) 5%,var(--m-background));z-index:6}@media(min-width:769px){.m-table-body__cell--fixed-last{border-right:1px solid var(--m-backdrop-border)}}@media(max-width:768px){.m-table-body__cell--fixed-last{border-right:none}}.m-table-body__cell--context-menu{padding-top:.35rem;padding-bottom:.35rem}.m-table-body__cell--select{width:48px;min-width:48px;max-width:48px;padding:0 1rem;text-align:center}.m-table-body__cell--select input[type=checkbox],.m-table-body__cell--select input[type=radio]{width:1rem;height:1rem;cursor:pointer;accent-color:var(--m-mm);display:block;margin:0 auto}.m-table-body__input{border:none;border-bottom:2px solid var(--m-backdrop-border);background:transparent;font-size:.875rem;color:var(--m-text);padding:.25rem;outline:none;width:100%;transition:border-bottom-color .2s ease}.m-table-body__input:focus{border-bottom-color:var(--m-mm)}.m-table-body__action-btn{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:none;background:transparent;cursor:pointer;color:var(--m-text-tertiary);border-radius:8px;transition:all .2s ease}.m-table-body__action-btn:hover{background:var(--m-backdrop-surface);color:var(--m-text)}.m-table-body__empty{text-align:center;padding:4rem;color:var(--m-text-tertiary);font-size:1rem;font-weight:500;letter-spacing:.02em;font-style:italic;opacity:.7}.m-table-body__link{color:var(--m-mm);text-decoration:none;cursor:pointer;font-weight:600;transition:color .2s ease}.m-table-body__link:hover{text-decoration:underline;color:var(--m-mm-lite)}.m-table-body__value{padding:.25rem .5rem;border-radius:6px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.m-table-body__value--positive{color:var(--m-success);background:var(--m-backdrop-success)}.m-table-body__value--negative{color:var(--m-error);background:var(--m-backdrop-error)}.m-table-body__dash{color:var(--m-text-tertiary);font-weight:400;font-style:italic;opacity:.8}.m-section-table-host{display:block;width:100%}.m-section-table__th{position:static;vertical-align:middle}.m-section-table--sticky .m-section-table__th{position:sticky;top:0}.m-section-table__heading{justify-content:var(--m-section-table-justify, flex-start);min-height:2rem}.m-section-table--compact :where(.m-section-table__th){padding:.625rem .75rem}.m-section-table--compact :where(.m-section-table__cell){padding:.5rem .75rem}.m-section-table--spacious :where(.m-section-table__th){padding:1.5rem 1.75rem}.m-section-table--spacious :where(.m-section-table__cell){padding:1.5rem 1.75rem}.m-section-table--zebra .m-section-table__row:nth-child(2n):not(:hover){background:color-mix(in srgb,var(--m-mm) 3%,transparent)}.m-section-table--zebra .m-section-table__row:nth-child(2n):not(:hover) .m-section-table__cell--frozen{background:color-mix(in srgb,var(--m-mm) 3%,var(--m-background))}.m-section-table__th--squeeze{position:relative;padding-right:3rem}.m-section-table__th--folded{padding-left:0;padding-right:0}.m-section-table__squeeze{position:absolute;top:50%;right:.5rem;transform:translateY(-50%);display:flex;border:1px solid var(--m-backdrop-border);border-radius:8px;background:var(--m-backdrop-surface)}.m-section-table__th--folded .m-section-table__squeeze{right:50%;transform:translate(50%,-50%)}@media(min-width:769px){.m-section-table__cell--frozen{position:sticky;z-index:5;background:var(--m-background)}}@media(min-width:769px){.m-section-table th.m-section-table__cell--frozen{z-index:20}}@media(min-width:769px){.m-section-table--sticky .m-section-table th.m-section-table__cell--frozen{z-index:21}}@media(min-width:769px){.m-section-table__cell--frozen-last{border-right:1px solid var(--m-backdrop-border)}}.m-section-table__row:hover .m-section-table__cell--frozen{background:color-mix(in srgb,var(--m-mm) 5%,var(--m-background))}.m-section-table__cell--folded{text-align:center;padding-left:0;padding-right:0}.m-section-table__content[hidden]{display:none}.m-section-table__dot{display:inline-block;width:.375rem;height:.375rem;border-radius:50%;background:var(--m-text-tertiary)}.m-section-table__row{cursor:default}\n"] }]
18895
- }], ctorParameters: () => [], propDecorators: { sticky: [{ type: i0.Input, args: [{ isSignal: true, alias: "sticky", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], sortChange: [{ type: i0.Output, args: ["sortChange"] }], headings: [{ type: i0.ViewChildren, args: ['heading', { isSignal: true }] }] } });
18911
+ }], ctorParameters: () => [], propDecorators: { sticky: [{ type: i0.Input, args: [{ isSignal: true, alias: "sticky", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], sortChange: [{ type: i0.Output, args: ["sortChange"] }], tableInitialized: [{ type: i0.Output, args: ["tableInitialized"] }], headings: [{ type: i0.ViewChildren, args: ['heading', { isSignal: true }] }] } });
18896
18912
 
18897
18913
  /**
18898
18914
  * One `<tr>` of a SectionTable (CONTEXT.md SectionTableRow). An attribute on a
@@ -18995,6 +19011,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
18995
19011
  }]
18996
19012
  }], ctorParameters: () => [] });
18997
19013
 
19014
+ const SECTION_TABLE_VARIANTS = [
19015
+ 'default',
19016
+ 'zebra',
19017
+ 'compact',
19018
+ 'spacious',
19019
+ ];
19020
+
18998
19021
  function getTabsClassList(config) {
18999
19022
  if (!config) {
19000
19023
  return '';
@@ -22084,7 +22107,7 @@ class WrapperInputComponent extends ConfigComponent {
22084
22107
  break;
22085
22108
  }
22086
22109
  case InputType.TOGGLE: {
22087
- const { ToggleInputComponent } = await import('./magmonium-one-toggle-C5xiIieI.mjs');
22110
+ const { ToggleInputComponent } = await import('./magmonium-one-toggle-CW9-Verx.mjs');
22088
22111
  this.createDynamicComponent(seq, ToggleInputComponent, [], true);
22089
22112
  break;
22090
22113
  }
@@ -22096,12 +22119,12 @@ class WrapperInputComponent extends ConfigComponent {
22096
22119
  break;
22097
22120
  }
22098
22121
  case InputType.PASSWORD: {
22099
- const { PasswordInputComponent } = await import('./magmonium-one-password-BdD7B7cS.mjs');
22122
+ const { PasswordInputComponent } = await import('./magmonium-one-password-7HZJ1aT5.mjs');
22100
22123
  this.createDynamicComponent(seq, PasswordInputComponent);
22101
22124
  break;
22102
22125
  }
22103
22126
  case InputType.OTP: {
22104
- const { OtpInputComponent } = await import('./magmonium-one-otp-x-dc-FYj.mjs');
22127
+ const { OtpInputComponent } = await import('./magmonium-one-otp-2KnorO69.mjs');
22105
22128
  this.createDynamicComponent(seq, OtpInputComponent);
22106
22129
  break;
22107
22130
  }
@@ -23808,7 +23831,7 @@ class FileUploadInputComponent extends BaseInputComponent {
23808
23831
  const modalStore = this.modalStore;
23809
23832
  if (!modalStore)
23810
23833
  return undefined;
23811
- const { ImageEditorComponent } = await import('./magmonium-one-image-editor-CW-I0TUU.mjs');
23834
+ const { ImageEditorComponent } = await import('./magmonium-one-image-editor-BKM7bzcT.mjs');
23812
23835
  const ratio = String(this.config()?.ratio ?? '');
23813
23836
  return new Promise((resolve) => {
23814
23837
  const modalRef = new ModalRef();
@@ -38575,5 +38598,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
38575
38598
  * Generated bundle index. Do not edit.
38576
38599
  */
38577
38600
 
38578
- export { ClipboardService 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, ImgComponent as a$, ColComponent as a0, ColorPickerInputComponent as a1, CommentItemComponent as a2, CommentsApiService as a3, CommentsComponent as a4, CommentsStore as a5, CompactNumberPipe as a6, ComponentInputComponent as a7, ComponentStepperComponent as a8, ConfigComponent as a9, Domain as aA, DotGridComponent as aB, DragListDirective as aC, DragListItemDirective as aD, DraggableDirective as aE, DropdownInputComponent as aF, FILTER_GROUP_CONTEXT as aG, FILTER_RANGE_MODES as aH, FILTER_VARIANTS as aI, FLEX_VARIANTS as aJ, FOLDER_PICK_LISTENER as aK, FORM_ASSET_FOLDER as aL, FileService as aM, FileUploadDirective as aN, FileUploadInputComponent as aO, FlexComponent as aP, FlexItemComponent as aQ, FormGroupComponent as aR, FrameComponent as aS, FreezeService as aT, GRID_BREAKPOINTS as aU, GetNavService as aV, HighlightDirective as aW, HttpService as aX, ICON_SOURCE as aY, IS_SIDE_PANEL as aZ, IconComponent as a_, ConfirmComponent as aa, ContextMenuComponent as ab, CustomIconClass as ac, CustomIconEditComponent as ad, DEFAULT_DENIAL as ae, DEFAULT_DOC_DENSITY as af, DEFAULT_DOC_VARIANT as ag, DEFAULT_FILTER_RANGE_MODE as ah, DEFAULT_FILTER_VARIANT as ai, DEFAULT_NAV_PARAM as aj, DEFAULT_NAV_SEGMENT as ak, DEFAULT_SIZE as al, DOCK_MIN_PAGE_REMAINDER as am, DOCS_FOLDER as an, DOC_ACTION_ICONS as ao, DOC_DENSITIES as ap, DOC_EDIT_ACTIONS as aq, DOC_TOOLBAR_GROUPS as ar, DOC_VARIANTS as as, DashboardCardComponent as at, DateInputComponent as au, DatePickerComponent as av, DeviceService as aw, DocComponent as ax, DocEditorComponent as ay, DomService as az, MAX_ZOOM as b, PositionDirective as b$, InstrumentScoreComponent as b0, InterceptorObservables as b1, JumbotronComponent as b2, KeyValueComponent as b3, LAYOUT_ASSET_FOLDER as b4, LOGIN_COMPONENT as b5, LOGIN_STORE as b6, LanguageComponent as b7, ListComponent as b8, LogoComponent as b9, NavMenuComponent as bA, NavStore as bB, NavTrailComponent as bC, NothingComponent as bD, NotificationElementComponent as bE, NotificationGroupComponent as bF, NotificationPopupComponent as bG, NotificationService as bH, NotificationStore as bI, NotificationType as bJ, NotificationWidgetComponent as bK, ONE_ASSET_BASE_URL as bL, OPTIONS_SOURCE as bM, OVERLAY_WIDGETS as bN, OneApp as bO, OptionsSourceDirective as bP, OverlayBodyComponent as bQ, OverlayRef as bR, OverlayService as bS, PLATFORM_BUTTON_NAV_IDS as bT, PLATFORM_EXTENSIBLE_NAV_IDS as bU, PLATFORM_NAV_MAP as bV, PLATFORM_ROOT_CHILDREN as bW, PaginationComponent as bX, PanelComponent as bY, PercentagePipe as bZ, PlaygroundComponent as b_, MAG_SOCKET_EVENT as ba, MHeroColorDirective as bb, MHeroComponent as bc, MODAL_STORE_REF as bd, MRefDirective as be, MStepComponent as bf, MURL_PARAM as bg, MURL_SEP as bh, ManifestEnrichmentService as bi, MenuComponent as bj, ModalDirective as bk, ModalRef as bl, ModalStore as bm, MoneyPipe as bn, MultiRangeInputComponent as bo, MurlUrlSerializer as bp, NAV_DEFAULT_MURL as bq, NAV_ID_SEP as br, NAV_MAIN_BUTTONS as bs, NAV_SEGMENT_RE as bt, NAV_STORE_REF as bu, NAV_WC_COMPONENTS as bv, NAV_WIDGET_MAP as bw, NavComponent as bx, NavDetailsComponent as by, NavHeaderComponent as bz, cropRect as c, StepperComponent as c$, PwaInstallComponent as c0, ROOT_NAV$1 as c1, RadioGroupComponent as c2, RadioInputComponent as c3, RatingInputComponent as c4, ReactiveElementComponent as c5, RemoteComponent as c6, RemoteLoaderService as c7, ResizeElementComponent as c8, RouteContainer as c9, SectionFooterComponent as cA, SectionFormComponent as cB, SectionFormItemComponent as cC, SectionHeaderComponent as cD, SectionHeroComponent as cE, SectionPaginationComponent as cF, SectionSearchComponent as cG, SectionStepperComponent as cH, SectionTableCellComponent as cI, SectionTableComponent as cJ, SectionTableRowComponent as cK, SectionTableSortPipe as cL, SectionTabsComponent as cM, SectionToggleComponent as cN, SectionToggleItemDirective as cO, SelectableCardInputComponent as cP, SelectorDirective as cQ, SettingsSearchBarComponent as cR, SettingsSearchService as cS, ShapeComponent as cT, SharedStoreRegistry as cU, SidePanelDirective as cV, Size as cW, SocketStore as cX, SortComponent as cY, StatComponent as cZ, StepComponent as c_, RowComponent as ca, SEARCH_QUERY as cb, SEARCH_RESULTS_EVENT as cc, SECTION_ACCORDION_GROUP as cd, SECTION_FORM_CONTEXT as ce, SHARED_ICONS as cf, SIZE_CONTEXT as cg, ScoreComponent as ch, ScrollComponent as ci, ScrollService as cj, SearchPanelComponent as ck, SearchStore as cl, SearchUserPanelComponent as cm, SectionAccordionDirective as cn, SectionAccordionGroupDirective as co, SectionBackComponent as cp, SectionBadgesComponent as cq, SectionButtonGroupComponent as cr, SectionCardComponent as cs, SectionCarouselComponent as ct, SectionComponent as cu, SectionFilterComponent as cv, SectionFilterGroupComponent as cw, SectionFilterMenuComponent as cx, SectionFilterPanelComponent as cy, SectionFilterRangePanelComponent as cz, drawFramed as d, createMap as d$, StepsComponent as d0, StorageService as d1, StrokeLinecap as d2, StrokeLinejoin as d3, SummaryComponent as d4, SvgGeneratorComponent as d5, SvgGeneratorService as d6, SvgService as d7, TOTAL_COLUMNS as d8, TRANSLATION_SOURCE as d9, UserSettingsComponent as dA, UserStore as dB, WC_ROUTE_CHANGED_EVENT as dC, WC_SEARCH_GROUPS as dD, WIN_USER_TAB_HOOK as dE, WIN_USER_TAB_KEY as dF, WatermarkComponent as dG, WcRouterStore as dH, WrapperInputComponent as dI, anchorNavId as dJ, applyColorsToElement as dK, applyDocEdit as dL, assetOptions as dM, bootstrapMagApp as dN, bootstrapPwaInstall as dO, buildWcBaseUrl as dP, calculateLuminance as dQ, calculateRanks as dR, cellText as dS, checkDoc as dT, checkFilterCondition as dU, childNavId as dV, claimDenial as dW, classListSignal as dX, coerceSize as dY, cornerEdge as dZ, cornerSide as d_, TableComponent as da, TechnicalMeterComponent as db, TextInputComponent as dc, TextareaInputComponent as dd, ThemeComponent as de, ThemeDataService as df, ThemeService as dg, ThemeStore as dh, TimeAgoPipe as di, TimelineComponent as dj, ToggleButtonComponent as dk, ToggleInputComponent as dl, ToggleRadioInputComponent as dm, ToolTipDirective as dn, TooltipComponent as dp, TranslateService as dq, TreeGridComponent as dr, URL_SEP as ds, USER_STORE_REF as dt, USER_TAB_MAP as du, UniverseComponent as dv, UserApiService as dw, UserAvatarComponent as dx, UserComponent as dy, UserNavComponent as dz, encodeFramed as e, isPlatformNavId as e$, createPlatformNavMap as e0, deriveAvatarGradient as e1, deriveContrastColor as e2, deriveOppositeColor as e3, derivePropertyName as e4, docActionKey as e5, docAssetCandidates as e6, docProblemKey as e7, docRemotePath as e8, emailValidation as e9, getScrollParent as eA, getTierFromPreviewPath as eB, getTreeGridRow as eC, getUniqueId as eD, getValue as eE, hasErrorComputed as eF, hexToRgb as eG, hslToRgb$1 as eH, initMagmoniumApp as eI, initialNotificationState as eJ, initialState$2 as eK, initials as eL, injectAuthenticate as eM, injectDefaultDenial as eN, injectInstallApp as eO, injectParentSize as eP, injectScrollSticky as eQ, isButtonName as eR, isCancelledComputed as eS, isExtensiblePlatformNavId as eT, isJson as eU, isLoadingComputed as eV, isLocalhost as eW, isNavInstanceConfig as eX, isNavMenuConfig as eY, isNavRowsConfig as eZ, isNavVisibilityConfig as e_, evaluate as ea, evaluateBool as eb, fieldBoolean as ec, fieldNumber as ed, fieldString as ee, filterHoldsList as ef, filterHoldsOneBound as eg, filterHoldsOptions as eh, filterHoldsRange as ei, filterList as ej, filterNumber as ek, filterNumberList as el, filterOne as em, filterPanelOf as en, filterPanelWidth as eo, filterRange as ep, filterTreeGridRows as eq, filterValueList as er, filterValues as es, flattenTreeGridRows as et, formatBadgeCount as eu, fullName as ev, generateClipPath as ew, generateTransform as ex, getClassList as ey, getProperty as ez, clampFraming as f, resolvePatternRules as f$, isSize as f0, isTierPreview as f1, isUrlLocalhost as f2, isValidNavId as f3, isValidNavSegment as f4, isWebComponent as f5, linkToId as f6, linkToNav as f7, loadingActions as f8, mInterceptor as f9, parsePatternNames as fA, patternValidation as fB, patternsValidation as fC, permissionRefusal as fD, platformNavWidgets as fE, privateGuard as fF, processImageToSvg as fG, provideAppContext as fH, provideMagAppConfig as fI, provideMagWcConfig as fJ, provideMagWcRoutes as fK, provideModalComponents as fL, provideMurlUrlSerializer as fM, provideNavWidgets as fN, provideOverlayWidgets as fO, providePlatformNavWidgets as fP, provideSearch as fQ, provideSizeContext as fR, provideUserTabs as fS, publicGuard as fT, readFieldPatterns as fU, renderAddress as fV, renderDocument as fW, requiredValidation as fX, resolveConfigAsset as fY, resolveIconSize as fZ, resolvePallet as f_, manualValidation as fa, matchFieldValidation as fb, maxLengthValidation as fc, maxValidation as fd, mergePlatformNav as fe, mergeUnique as ff, mergeUniqueBy as fg, mergeUniqueWith as fh, minAgeValidation as fi, minLengthValidation as fj, minValidation as fk, miniMarkToHtml as fl, navIdChain as fm, navIdFor as fn, navIdSegment as fo, navIdToRoutePath as fp, navIdToSegments as fq, navParamOf as fr, navToId as fs, navVisibilityGuard as ft, nextSectionTableSort as fu, normalizeAssetOptions as fv, offsetOfLine as fw, parentNavId as fx, parseAddress as fy, parseColor as fz, BaseInputComponent as g, resolveSize as g0, rgbToHex as g1, rgbToHsl as g2, rowHasChildren as g3, samePatterns as g4, sectionTableColumnId as g5, sectionTableColumnWidths as g6, sectionTableFrozenCount as g7, segmentsToNavId as g8, setProperty as g9, setTreeGridChildren as ga, settingsWidgets as gb, shouldShowBadge as gc, sortSectionTableRows as gd, splitNavId as ge, splitOnMatch as gf, stringToColor as gg, toAttrBool as gh, toAttrNumber as gi, toCssLength as gj, toHostNavId as gk, toLength$1 as gl, toLocalNavId as gm, toggleTreeGridRow as gn, unfetchedPlatformNav as go, ungroupedDocActions as gp, urlValidation as gq, 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 };
38579
- //# sourceMappingURL=magmonium-one-magmonium-one-DcsNdIJx.mjs.map
38601
+ export { ClipboardService 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, ImgComponent as a$, ColComponent as a0, ColorPickerInputComponent as a1, CommentItemComponent as a2, CommentsApiService as a3, CommentsComponent as a4, CommentsStore as a5, CompactNumberPipe as a6, ComponentInputComponent as a7, ComponentStepperComponent as a8, ConfigComponent as a9, Domain as aA, DotGridComponent as aB, DragListDirective as aC, DragListItemDirective as aD, DraggableDirective as aE, DropdownInputComponent as aF, FILTER_GROUP_CONTEXT as aG, FILTER_RANGE_MODES as aH, FILTER_VARIANTS as aI, FLEX_VARIANTS as aJ, FOLDER_PICK_LISTENER as aK, FORM_ASSET_FOLDER as aL, FileService as aM, FileUploadDirective as aN, FileUploadInputComponent as aO, FlexComponent as aP, FlexItemComponent as aQ, FormGroupComponent as aR, FrameComponent as aS, FreezeService as aT, GRID_BREAKPOINTS as aU, GetNavService as aV, HighlightDirective as aW, HttpService as aX, ICON_SOURCE as aY, IS_SIDE_PANEL as aZ, IconComponent as a_, ConfirmComponent as aa, ContextMenuComponent as ab, CustomIconClass as ac, CustomIconEditComponent as ad, DEFAULT_DENIAL as ae, DEFAULT_DOC_DENSITY as af, DEFAULT_DOC_VARIANT as ag, DEFAULT_FILTER_RANGE_MODE as ah, DEFAULT_FILTER_VARIANT as ai, DEFAULT_NAV_PARAM as aj, DEFAULT_NAV_SEGMENT as ak, DEFAULT_SIZE as al, DOCK_MIN_PAGE_REMAINDER as am, DOCS_FOLDER as an, DOC_ACTION_ICONS as ao, DOC_DENSITIES as ap, DOC_EDIT_ACTIONS as aq, DOC_TOOLBAR_GROUPS as ar, DOC_VARIANTS as as, DashboardCardComponent as at, DateInputComponent as au, DatePickerComponent as av, DeviceService as aw, DocComponent as ax, DocEditorComponent as ay, DomService as az, MAX_ZOOM as b, PositionDirective as b$, InstrumentScoreComponent as b0, InterceptorObservables as b1, JumbotronComponent as b2, KeyValueComponent as b3, LAYOUT_ASSET_FOLDER as b4, LOGIN_COMPONENT as b5, LOGIN_STORE as b6, LanguageComponent as b7, ListComponent as b8, LogoComponent as b9, NavMenuComponent as bA, NavStore as bB, NavTrailComponent as bC, NothingComponent as bD, NotificationElementComponent as bE, NotificationGroupComponent as bF, NotificationPopupComponent as bG, NotificationService as bH, NotificationStore as bI, NotificationType as bJ, NotificationWidgetComponent as bK, ONE_ASSET_BASE_URL as bL, OPTIONS_SOURCE as bM, OVERLAY_WIDGETS as bN, OneApp as bO, OptionsSourceDirective as bP, OverlayBodyComponent as bQ, OverlayRef as bR, OverlayService as bS, PLATFORM_BUTTON_NAV_IDS as bT, PLATFORM_EXTENSIBLE_NAV_IDS as bU, PLATFORM_NAV_MAP as bV, PLATFORM_ROOT_CHILDREN as bW, PaginationComponent as bX, PanelComponent as bY, PercentagePipe as bZ, PlaygroundComponent as b_, MAG_SOCKET_EVENT as ba, MHeroColorDirective as bb, MHeroComponent as bc, MODAL_STORE_REF as bd, MRefDirective as be, MStepComponent as bf, MURL_PARAM as bg, MURL_SEP as bh, ManifestEnrichmentService as bi, MenuComponent as bj, ModalDirective as bk, ModalRef as bl, ModalStore as bm, MoneyPipe as bn, MultiRangeInputComponent as bo, MurlUrlSerializer as bp, NAV_DEFAULT_MURL as bq, NAV_ID_SEP as br, NAV_MAIN_BUTTONS as bs, NAV_SEGMENT_RE as bt, NAV_STORE_REF as bu, NAV_WC_COMPONENTS as bv, NAV_WIDGET_MAP as bw, NavComponent as bx, NavDetailsComponent as by, NavHeaderComponent as bz, cropRect as c, StepComponent as c$, PwaInstallComponent as c0, ROOT_NAV$1 as c1, RadioGroupComponent as c2, RadioInputComponent as c3, RatingInputComponent as c4, ReactiveElementComponent as c5, RemoteComponent as c6, RemoteLoaderService as c7, ResizeElementComponent as c8, RouteContainer as c9, SectionFilterRangePanelComponent as cA, SectionFooterComponent as cB, SectionFormComponent as cC, SectionFormItemComponent as cD, SectionHeaderComponent as cE, SectionHeroComponent as cF, SectionPaginationComponent as cG, SectionSearchComponent as cH, SectionStepperComponent as cI, SectionTableCellComponent as cJ, SectionTableComponent as cK, SectionTableRowComponent as cL, SectionTableSortPipe as cM, SectionTabsComponent as cN, SectionToggleComponent as cO, SectionToggleItemDirective as cP, SelectableCardInputComponent as cQ, SelectorDirective as cR, SettingsSearchBarComponent as cS, SettingsSearchService as cT, ShapeComponent as cU, SharedStoreRegistry as cV, SidePanelDirective as cW, Size as cX, SocketStore as cY, SortComponent as cZ, StatComponent as c_, RowComponent as ca, SEARCH_QUERY as cb, SEARCH_RESULTS_EVENT as cc, SECTION_ACCORDION_GROUP as cd, SECTION_FORM_CONTEXT as ce, SECTION_TABLE_VARIANTS as cf, SHARED_ICONS as cg, SIZE_CONTEXT as ch, ScoreComponent as ci, ScrollComponent as cj, ScrollService as ck, SearchPanelComponent as cl, SearchStore as cm, SearchUserPanelComponent as cn, SectionAccordionDirective as co, SectionAccordionGroupDirective as cp, SectionBackComponent as cq, SectionBadgesComponent as cr, SectionButtonGroupComponent as cs, SectionCardComponent as ct, SectionCarouselComponent as cu, SectionComponent as cv, SectionFilterComponent as cw, SectionFilterGroupComponent as cx, SectionFilterMenuComponent as cy, SectionFilterPanelComponent as cz, drawFramed as d, cornerSide as d$, StepperComponent as d0, StepsComponent as d1, StorageService as d2, StrokeLinecap as d3, StrokeLinejoin as d4, SummaryComponent as d5, SvgGeneratorComponent as d6, SvgGeneratorService as d7, SvgService as d8, TOTAL_COLUMNS as d9, UserNavComponent as dA, UserSettingsComponent as dB, UserStore as dC, WC_ROUTE_CHANGED_EVENT as dD, WC_SEARCH_GROUPS as dE, WIN_USER_TAB_HOOK as dF, WIN_USER_TAB_KEY as dG, WatermarkComponent as dH, WcRouterStore as dI, WrapperInputComponent as dJ, anchorNavId as dK, applyColorsToElement as dL, applyDocEdit as dM, assetOptions as dN, bootstrapMagApp as dO, bootstrapPwaInstall as dP, buildWcBaseUrl as dQ, calculateLuminance as dR, calculateRanks as dS, cellText as dT, checkDoc as dU, checkFilterCondition as dV, childNavId as dW, claimDenial as dX, classListSignal as dY, coerceSize as dZ, cornerEdge as d_, TRANSLATION_SOURCE as da, TableComponent as db, TechnicalMeterComponent as dc, TextInputComponent as dd, TextareaInputComponent as de, ThemeComponent as df, ThemeDataService as dg, ThemeService as dh, ThemeStore as di, TimeAgoPipe as dj, TimelineComponent as dk, ToggleButtonComponent as dl, ToggleInputComponent as dm, ToggleRadioInputComponent as dn, ToolTipDirective as dp, TooltipComponent as dq, TranslateService as dr, TreeGridComponent as ds, URL_SEP as dt, USER_STORE_REF as du, USER_TAB_MAP as dv, UniverseComponent as dw, UserApiService as dx, UserAvatarComponent as dy, UserComponent as dz, encodeFramed as e, isNavVisibilityConfig as e$, createMap as e0, createPlatformNavMap as e1, deriveAvatarGradient as e2, deriveContrastColor as e3, deriveOppositeColor as e4, derivePropertyName as e5, docActionKey as e6, docAssetCandidates as e7, docProblemKey as e8, docRemotePath as e9, getProperty as eA, getScrollParent as eB, getTierFromPreviewPath as eC, getTreeGridRow as eD, getUniqueId as eE, getValue as eF, hasErrorComputed as eG, hexToRgb as eH, hslToRgb$1 as eI, initMagmoniumApp as eJ, initialNotificationState as eK, initialState$2 as eL, initials as eM, injectAuthenticate as eN, injectDefaultDenial as eO, injectInstallApp as eP, injectParentSize as eQ, injectScrollSticky as eR, isButtonName as eS, isCancelledComputed as eT, isExtensiblePlatformNavId as eU, isJson as eV, isLoadingComputed as eW, isLocalhost as eX, isNavInstanceConfig as eY, isNavMenuConfig as eZ, isNavRowsConfig as e_, emailValidation as ea, evaluate as eb, evaluateBool as ec, fieldBoolean as ed, fieldNumber as ee, fieldString as ef, filterHoldsList as eg, filterHoldsOneBound as eh, filterHoldsOptions as ei, filterHoldsRange as ej, filterList as ek, filterNumber as el, filterNumberList as em, filterOne as en, filterPanelOf as eo, filterPanelWidth as ep, filterRange as eq, filterTreeGridRows as er, filterValueList as es, filterValues as et, flattenTreeGridRows as eu, formatBadgeCount as ev, fullName as ew, generateClipPath as ex, generateTransform as ey, getClassList as ez, clampFraming as f, resolvePallet as f$, isPlatformNavId as f0, isSize as f1, isTierPreview as f2, isUrlLocalhost as f3, isValidNavId as f4, isValidNavSegment as f5, isWebComponent as f6, linkToId as f7, linkToNav as f8, loadingActions as f9, parseColor as fA, parsePatternNames as fB, patternValidation as fC, patternsValidation as fD, permissionRefusal as fE, platformNavWidgets as fF, privateGuard as fG, processImageToSvg as fH, provideAppContext as fI, provideMagAppConfig as fJ, provideMagWcConfig as fK, provideMagWcRoutes as fL, provideModalComponents as fM, provideMurlUrlSerializer as fN, provideNavWidgets as fO, provideOverlayWidgets as fP, providePlatformNavWidgets as fQ, provideSearch as fR, provideSizeContext as fS, provideUserTabs as fT, publicGuard as fU, readFieldPatterns as fV, renderAddress as fW, renderDocument as fX, requiredValidation as fY, resolveConfigAsset as fZ, resolveIconSize as f_, mInterceptor as fa, manualValidation as fb, matchFieldValidation as fc, maxLengthValidation as fd, maxValidation as fe, mergePlatformNav as ff, mergeUnique as fg, mergeUniqueBy as fh, mergeUniqueWith as fi, minAgeValidation as fj, minLengthValidation as fk, minValidation as fl, miniMarkToHtml as fm, navIdChain as fn, navIdFor as fo, navIdSegment as fp, navIdToRoutePath as fq, navIdToSegments as fr, navParamOf as fs, navToId as ft, navVisibilityGuard as fu, nextSectionTableSort as fv, normalizeAssetOptions as fw, offsetOfLine as fx, parentNavId as fy, parseAddress as fz, BaseInputComponent as g, resolvePatternRules as g0, resolveSize as g1, rgbToHex as g2, rgbToHsl as g3, rowHasChildren as g4, samePatterns as g5, sectionTableColumnId as g6, sectionTableColumnWidths as g7, sectionTableFrozenCount as g8, segmentsToNavId as g9, setProperty as ga, setTreeGridChildren as gb, settingsWidgets as gc, shouldShowBadge as gd, sortSectionTableRows as ge, splitNavId as gf, splitOnMatch as gg, stringToColor as gh, toAttrBool as gi, toAttrNumber as gj, toCssLength as gk, toHostNavId as gl, toLength$1 as gm, toLocalNavId as gn, toggleTreeGridRow as go, unfetchedPlatformNav as gp, ungroupedDocActions as gq, urlValidation as gr, 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 };
38602
+ //# sourceMappingURL=magmonium-one-magmonium-one-CHOp1JC5.mjs.map