@magmonium/one 0.4.0 → 0.4.2
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.
- package/fesm2022/{magmonium-one-image-editor-BjCvZ9rH.mjs → magmonium-one-image-editor-CqTVP7Li.mjs} +2 -2
- package/fesm2022/{magmonium-one-image-editor-BjCvZ9rH.mjs.map → magmonium-one-image-editor-CqTVP7Li.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-magmonium-one-B5qzsrNB.mjs → magmonium-one-magmonium-one-DCRM0N5X.mjs} +114 -33
- package/fesm2022/magmonium-one-magmonium-one-DCRM0N5X.mjs.map +1 -0
- package/fesm2022/{magmonium-one-otp-BwXKEaEg.mjs → magmonium-one-otp-Cq5Hfnh_.mjs} +2 -2
- package/fesm2022/{magmonium-one-otp-BwXKEaEg.mjs.map → magmonium-one-otp-Cq5Hfnh_.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-password-CyHOns1l.mjs → magmonium-one-password-B4R18v54.mjs} +2 -2
- package/fesm2022/{magmonium-one-password-CyHOns1l.mjs.map → magmonium-one-password-B4R18v54.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-toggle-CpMURu38.mjs → magmonium-one-toggle-DXiBGDPh.mjs} +2 -2
- package/fesm2022/{magmonium-one-toggle-CpMURu38.mjs.map → magmonium-one-toggle-DXiBGDPh.mjs.map} +1 -1
- package/fesm2022/magmonium-one.mjs +1 -1
- package/package.json +1 -1
- package/types/magmonium-one.d.ts +89 -3
- package/fesm2022/magmonium-one-magmonium-one-B5qzsrNB.mjs.map +0 -1
package/fesm2022/{magmonium-one-image-editor-BjCvZ9rH.mjs → magmonium-one-image-editor-CqTVP7Li.mjs}
RENAMED
|
@@ -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-
|
|
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-DCRM0N5X.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-
|
|
290
|
+
//# sourceMappingURL=magmonium-one-image-editor-CqTVP7Li.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"magmonium-one-image-editor-BjCvZ9rH.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-CqTVP7Li.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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"}
|
|
@@ -4233,6 +4233,28 @@ function deriveBreadcrumb(params) {
|
|
|
4233
4233
|
const mountFor = (navId, mounts) => mounts
|
|
4234
4234
|
.filter((mount) => toLocalNavId(navId, mount.appNavId) !== undefined)
|
|
4235
4235
|
.sort((a, b) => b.appNavId.length - a.appNavId.length)[0];
|
|
4236
|
+
/**
|
|
4237
|
+
* The route the page stands on where a `tail` Remote fills it. The host routes
|
|
4238
|
+
* only down to the mount — `root_app` for `/app/<link>/<navUrl>` — and the
|
|
4239
|
+
* navUrl below is the Remote's own route, so the Nav is the one the Remote
|
|
4240
|
+
* reported, rewritten into the host's keyspace (ADR 0015). Until it reports,
|
|
4241
|
+
* the app's root stands in: a cold deep link opens the app's menu, not the
|
|
4242
|
+
* host's.
|
|
4243
|
+
*
|
|
4244
|
+
* Only a mount hung on the Nav the host routed counts. The page's own slot
|
|
4245
|
+
* carries no `urlMode` and is a tail app by being the page.
|
|
4246
|
+
*/
|
|
4247
|
+
const tailRouteOf = (hostNavId, mounts, reported) => {
|
|
4248
|
+
if (!hostNavId)
|
|
4249
|
+
return undefined;
|
|
4250
|
+
const mount = mounts.find(({ appNavId, urlMode }) => (urlMode ?? 'tail') === 'tail' && parentNavId(appNavId) === hostNavId);
|
|
4251
|
+
if (!mount)
|
|
4252
|
+
return undefined;
|
|
4253
|
+
const route = reported[mount.name];
|
|
4254
|
+
return route
|
|
4255
|
+
? { navId: toHostNavId(route.navId, mount.appNavId), params: route.params }
|
|
4256
|
+
: { navId: mount.appNavId, params: {} };
|
|
4257
|
+
};
|
|
4236
4258
|
|
|
4237
4259
|
/** One chain can cross the host and several Remotes, so the mount is per NavId. */
|
|
4238
4260
|
const mountIn = (navId, ctx) => mountFor(navId, ctx.mounts ??
|
|
@@ -4336,6 +4358,8 @@ const initialState$3 = {
|
|
|
4336
4358
|
path: '/',
|
|
4337
4359
|
routeNavId: undefined,
|
|
4338
4360
|
routeParams: {},
|
|
4361
|
+
hostRoute: { navId: undefined, params: {} },
|
|
4362
|
+
mountRoutes: {},
|
|
4339
4363
|
routeChain: [],
|
|
4340
4364
|
murl: [],
|
|
4341
4365
|
appLink: undefined,
|
|
@@ -5089,6 +5113,22 @@ const NavStore = signalStore({ providedIn: 'root' }, withState(initialState$3),
|
|
|
5089
5113
|
}
|
|
5090
5114
|
router.navigateByUrl(untracked(() => store.path()), { replaceUrl: true });
|
|
5091
5115
|
};
|
|
5116
|
+
/**
|
|
5117
|
+
* The host's route with a `tail` mount's own laid over it, when one fills
|
|
5118
|
+
* the page. Both halves change on their own — the host on NavigationEnd,
|
|
5119
|
+
* the mount on its report — so each writer recomputes the whole.
|
|
5120
|
+
*/
|
|
5121
|
+
const standingRoute = (hostRoute) => {
|
|
5122
|
+
const tail = tailRouteOf(hostRoute.navId, untracked(() => store.allMounts()), untracked(() => store.mountRoutes()));
|
|
5123
|
+
return {
|
|
5124
|
+
hostRoute,
|
|
5125
|
+
routeNavId: tail?.navId ?? hostRoute.navId,
|
|
5126
|
+
routeParams: tail
|
|
5127
|
+
? { ...hostRoute.params, ...tail.params }
|
|
5128
|
+
: hostRoute.params,
|
|
5129
|
+
};
|
|
5130
|
+
};
|
|
5131
|
+
const settleRoute = () => patchState(store, standingRoute(untracked(() => store.hostRoute())));
|
|
5092
5132
|
/**
|
|
5093
5133
|
* Reads the Address the Router just settled on.
|
|
5094
5134
|
*
|
|
@@ -5115,8 +5155,7 @@ const NavStore = signalStore({ providedIn: 'root' }, withState(initialState$3),
|
|
|
5115
5155
|
patchState(store, {
|
|
5116
5156
|
path,
|
|
5117
5157
|
outlets,
|
|
5118
|
-
routeNavId,
|
|
5119
|
-
routeParams,
|
|
5158
|
+
...standingRoute({ navId: routeNavId, params: routeParams }),
|
|
5120
5159
|
routeChain,
|
|
5121
5160
|
murl,
|
|
5122
5161
|
menuNavId: undefined,
|
|
@@ -5190,6 +5229,7 @@ const NavStore = signalStore({ providedIn: 'root' }, withState(initialState$3),
|
|
|
5190
5229
|
// after that went to the WC bundle rather than to its own assets.
|
|
5191
5230
|
appNavId: appLink ? appNavId : undefined,
|
|
5192
5231
|
});
|
|
5232
|
+
settleRoute();
|
|
5193
5233
|
loadWcConfig(appLink);
|
|
5194
5234
|
};
|
|
5195
5235
|
const registerMount = (mount) => {
|
|
@@ -5199,6 +5239,7 @@ const NavStore = signalStore({ providedIn: 'root' }, withState(initialState$3),
|
|
|
5199
5239
|
patchState(store, (state) => ({
|
|
5200
5240
|
mounts: { ...state.mounts, [mount.name]: mount },
|
|
5201
5241
|
}));
|
|
5242
|
+
settleRoute();
|
|
5202
5243
|
translateService.mountRemoteApp(mount.link);
|
|
5203
5244
|
loadWcConfig(mount.link);
|
|
5204
5245
|
if (mount.createMenu)
|
|
@@ -5224,7 +5265,21 @@ const NavStore = signalStore({ providedIn: 'root' }, withState(initialState$3),
|
|
|
5224
5265
|
translateService.unmountRemoteApp(mount.link);
|
|
5225
5266
|
patchState(store, (state) => ({
|
|
5226
5267
|
mounts: Object.fromEntries(Object.entries(state.mounts).filter(([key]) => key !== name)),
|
|
5268
|
+
mountRoutes: Object.fromEntries(Object.entries(state.mountRoutes).filter(([key]) => key !== name)),
|
|
5269
|
+
}));
|
|
5270
|
+
settleRoute();
|
|
5271
|
+
};
|
|
5272
|
+
/**
|
|
5273
|
+
* A mount's own Router moved. Only a `tail` mount filling the page changes
|
|
5274
|
+
* where the page stands; the others are remembered for when one does.
|
|
5275
|
+
*/
|
|
5276
|
+
const setMountRoute = (name, route) => {
|
|
5277
|
+
patchState(store, (state) => ({
|
|
5278
|
+
mountRoutes: route
|
|
5279
|
+
? { ...state.mountRoutes, [name]: route }
|
|
5280
|
+
: Object.fromEntries(Object.entries(state.mountRoutes).filter(([key]) => key !== name)),
|
|
5227
5281
|
}));
|
|
5282
|
+
settleRoute();
|
|
5228
5283
|
};
|
|
5229
5284
|
const registerWidgets = (appLink, entry) => {
|
|
5230
5285
|
patchState(store, (state) => ({
|
|
@@ -5295,6 +5350,7 @@ const NavStore = signalStore({ providedIn: 'root' }, withState(initialState$3),
|
|
|
5295
5350
|
setAppLink,
|
|
5296
5351
|
registerMount,
|
|
5297
5352
|
unregisterMount,
|
|
5353
|
+
setMountRoute,
|
|
5298
5354
|
mountOf,
|
|
5299
5355
|
setWcConfig,
|
|
5300
5356
|
loadWcConfig,
|
|
@@ -8934,7 +8990,7 @@ class SectionFormItemComponent extends ConfigComponent {
|
|
|
8934
8990
|
break;
|
|
8935
8991
|
}
|
|
8936
8992
|
case InputType.TOGGLE: {
|
|
8937
|
-
const { ToggleInputComponent } = await import('./magmonium-one-toggle-
|
|
8993
|
+
const { ToggleInputComponent } = await import('./magmonium-one-toggle-DXiBGDPh.mjs');
|
|
8938
8994
|
this.createDynamicComponent(seq, ToggleInputComponent, [], true);
|
|
8939
8995
|
break;
|
|
8940
8996
|
}
|
|
@@ -8946,12 +9002,12 @@ class SectionFormItemComponent extends ConfigComponent {
|
|
|
8946
9002
|
break;
|
|
8947
9003
|
}
|
|
8948
9004
|
case InputType.PASSWORD: {
|
|
8949
|
-
const { PasswordInputComponent } = await import('./magmonium-one-password-
|
|
9005
|
+
const { PasswordInputComponent } = await import('./magmonium-one-password-B4R18v54.mjs');
|
|
8950
9006
|
this.createDynamicComponent(seq, PasswordInputComponent);
|
|
8951
9007
|
break;
|
|
8952
9008
|
}
|
|
8953
9009
|
case InputType.OTP: {
|
|
8954
|
-
const { OtpInputComponent } = await import('./magmonium-one-otp-
|
|
9010
|
+
const { OtpInputComponent } = await import('./magmonium-one-otp-Cq5Hfnh_.mjs');
|
|
8955
9011
|
this.createDynamicComponent(seq, OtpInputComponent);
|
|
8956
9012
|
break;
|
|
8957
9013
|
}
|
|
@@ -18914,15 +18970,23 @@ class BaseRootWebComponent extends BaseWebComponent {
|
|
|
18914
18970
|
});
|
|
18915
18971
|
}
|
|
18916
18972
|
// Report every settled route on this element, bubbling: the m-remote that
|
|
18917
|
-
// mounted it listens there (ADR 0038), anything above still hears it.
|
|
18973
|
+
// mounted it listens there (ADR 0038), anything above still hears it. The
|
|
18974
|
+
// Nav rides along — the host routes only down to the mount, and its menu
|
|
18975
|
+
// stands on this app's Nav only if the app says which.
|
|
18918
18976
|
const destroyRef = inject(DestroyRef);
|
|
18919
18977
|
const sub = this.router.events
|
|
18920
18978
|
.pipe(filter((e) => e instanceof NavigationEnd))
|
|
18921
18979
|
.subscribe(({ urlAfterRedirects }) => {
|
|
18980
|
+
const root = this.router.routerState.snapshot.root;
|
|
18922
18981
|
this.host.dispatchEvent(new CustomEvent(WC_ROUTE_CHANGED_EVENT, {
|
|
18923
18982
|
bubbles: true,
|
|
18924
18983
|
composed: true,
|
|
18925
|
-
detail: {
|
|
18984
|
+
detail: {
|
|
18985
|
+
appId,
|
|
18986
|
+
path: urlAfterRedirects,
|
|
18987
|
+
navId: routeNavIdOf(root),
|
|
18988
|
+
params: routeParamsOf(root),
|
|
18989
|
+
},
|
|
18926
18990
|
}));
|
|
18927
18991
|
});
|
|
18928
18992
|
// The host moving this remote — a path binding or a menu click.
|
|
@@ -22926,7 +22990,7 @@ class WrapperInputComponent extends ConfigComponent {
|
|
|
22926
22990
|
break;
|
|
22927
22991
|
}
|
|
22928
22992
|
case InputType.TOGGLE: {
|
|
22929
|
-
const { ToggleInputComponent } = await import('./magmonium-one-toggle-
|
|
22993
|
+
const { ToggleInputComponent } = await import('./magmonium-one-toggle-DXiBGDPh.mjs');
|
|
22930
22994
|
this.createDynamicComponent(seq, ToggleInputComponent, [], true);
|
|
22931
22995
|
break;
|
|
22932
22996
|
}
|
|
@@ -22938,12 +23002,12 @@ class WrapperInputComponent extends ConfigComponent {
|
|
|
22938
23002
|
break;
|
|
22939
23003
|
}
|
|
22940
23004
|
case InputType.PASSWORD: {
|
|
22941
|
-
const { PasswordInputComponent } = await import('./magmonium-one-password-
|
|
23005
|
+
const { PasswordInputComponent } = await import('./magmonium-one-password-B4R18v54.mjs');
|
|
22942
23006
|
this.createDynamicComponent(seq, PasswordInputComponent);
|
|
22943
23007
|
break;
|
|
22944
23008
|
}
|
|
22945
23009
|
case InputType.OTP: {
|
|
22946
|
-
const { OtpInputComponent } = await import('./magmonium-one-otp-
|
|
23010
|
+
const { OtpInputComponent } = await import('./magmonium-one-otp-Cq5Hfnh_.mjs');
|
|
22947
23011
|
this.createDynamicComponent(seq, OtpInputComponent);
|
|
22948
23012
|
break;
|
|
22949
23013
|
}
|
|
@@ -24650,7 +24714,7 @@ class FileUploadInputComponent extends BaseInputComponent {
|
|
|
24650
24714
|
const modalStore = this.modalStore;
|
|
24651
24715
|
if (!modalStore)
|
|
24652
24716
|
return undefined;
|
|
24653
|
-
const { ImageEditorComponent } = await import('./magmonium-one-image-editor-
|
|
24717
|
+
const { ImageEditorComponent } = await import('./magmonium-one-image-editor-CqTVP7Li.mjs');
|
|
24654
24718
|
const ratio = String(this.config()?.ratio ?? '');
|
|
24655
24719
|
return new Promise((resolve) => {
|
|
24656
24720
|
const modalRef = new ModalRef();
|
|
@@ -27699,7 +27763,8 @@ class RemoteComponent {
|
|
|
27699
27763
|
this.loadedElement?.dispatchEvent(new CustomEvent(WC_NAVIGATE_EVENT, { detail: { path } }));
|
|
27700
27764
|
};
|
|
27701
27765
|
onReport = (event) => {
|
|
27702
|
-
const
|
|
27766
|
+
const detail = event.detail;
|
|
27767
|
+
const raw = detail?.path;
|
|
27703
27768
|
if (raw === undefined)
|
|
27704
27769
|
return;
|
|
27705
27770
|
const path = raw.replace(/^\//, '');
|
|
@@ -27713,6 +27778,13 @@ class RemoteComponent {
|
|
|
27713
27778
|
if (isBootRedirect(this.bootPending, sent, path))
|
|
27714
27779
|
return;
|
|
27715
27780
|
this.bootPending = false;
|
|
27781
|
+
// Where the remote stands as a Nav, echo or not: the host routes only down
|
|
27782
|
+
// to the mount, and a Back the host drove still moved the remote's Nav. A
|
|
27783
|
+
// remote built before it reported one leaves the mount standing on its root.
|
|
27784
|
+
if (this.registeredName)
|
|
27785
|
+
this.navRef?.setMountRoute?.(this.registeredName, detail.navId
|
|
27786
|
+
? { navId: detail.navId, params: detail.params ?? {} }
|
|
27787
|
+
: undefined);
|
|
27716
27788
|
this.lastReported = path;
|
|
27717
27789
|
this.lastSent = undefined;
|
|
27718
27790
|
if (echo && this.reported)
|
|
@@ -35165,13 +35237,19 @@ class NotificationElementComponent {
|
|
|
35165
35237
|
// --- Handlers ---
|
|
35166
35238
|
/** The whole row is the affordance: reading it marks it read, and one
|
|
35167
35239
|
* carrying an `onClick` runs it — which is how a notification becomes the
|
|
35168
|
-
* way to what it is about (`Notification.onClick`).
|
|
35240
|
+
* way to what it is about (`Notification.onClick`). A highlight has done
|
|
35241
|
+
* its job once the User acts on the row it marked. */
|
|
35169
35242
|
onActivate() {
|
|
35170
35243
|
const notification = this.notification();
|
|
35171
35244
|
if (!notification)
|
|
35172
35245
|
return;
|
|
35173
35246
|
if (!notification.read)
|
|
35174
35247
|
this.markAsRead();
|
|
35248
|
+
if (notification.highlighted) {
|
|
35249
|
+
this.#notificationStore.updateNotification(notification.id, {
|
|
35250
|
+
highlighted: false,
|
|
35251
|
+
});
|
|
35252
|
+
}
|
|
35175
35253
|
notification.onClick?.();
|
|
35176
35254
|
}
|
|
35177
35255
|
markAsRead() {
|
|
@@ -35218,6 +35296,7 @@ class NotificationElementComponent {
|
|
|
35218
35296
|
class="notification-item"
|
|
35219
35297
|
[class.notification-item--unread]="!notification()?.read"
|
|
35220
35298
|
[class.notification-item--popup]="autoClose()"
|
|
35299
|
+
[class.notification-item--highlighted]="notification()?.highlighted"
|
|
35221
35300
|
role="button"
|
|
35222
35301
|
tabindex="0"
|
|
35223
35302
|
(click)="onActivate()"
|
|
@@ -35278,9 +35357,10 @@ class NotificationElementComponent {
|
|
|
35278
35357
|
|
|
35279
35358
|
@if (notification()?.type === NotificationType.PROGRESS) {
|
|
35280
35359
|
<div class="notification-item__body">
|
|
35281
|
-
|
|
35282
|
-
|
|
35283
|
-
|
|
35360
|
+
<!-- Through label, not projected: m-header projects default
|
|
35361
|
+
content into its last level's slot only, so a level-4 title
|
|
35362
|
+
drew blank. -->
|
|
35363
|
+
<m-header [level]="4" [label]="notification()?.title" />
|
|
35284
35364
|
<div class="notification-item__progress-bar">
|
|
35285
35365
|
<div
|
|
35286
35366
|
class="notification-item__progress-fill"
|
|
@@ -35291,9 +35371,7 @@ class NotificationElementComponent {
|
|
|
35291
35371
|
</div>
|
|
35292
35372
|
} @else {
|
|
35293
35373
|
<div class="notification-item__body">
|
|
35294
|
-
<m-header [level]="4"
|
|
35295
|
-
{{ notification()?.title | translate }}
|
|
35296
|
-
</m-header>
|
|
35374
|
+
<m-header [level]="4" [label]="notification()?.title" />
|
|
35297
35375
|
@if (notification()?.body?.text) {
|
|
35298
35376
|
<p class="notification-item__description">
|
|
35299
35377
|
{{ notification()?.body?.text | translate }}
|
|
@@ -35325,7 +35403,7 @@ class NotificationElementComponent {
|
|
|
35325
35403
|
}
|
|
35326
35404
|
</div>
|
|
35327
35405
|
</div>
|
|
35328
|
-
`, 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)}}.notification-item{position:relative;display:flex;gap:1rem;padding:1.25rem 1.5rem;transition:background .2s ease;cursor:pointer;border-bottom:1px solid #f0f0f0}.notification-item:last-child{border-bottom:none}.notification-item:hover{background:#00000005}.notification-item--unread .notification-item__user{font-weight:800;color:#1a1a1a}.notification-item--popup{background:#fff;border-radius:1rem;box-shadow:0 10px 30px #00000014,0 4px 12px #0000000a;border:1px solid rgba(0,0,0,.05);margin-bottom:.75rem;width:24rem;max-width:90vw;pointer-events:auto;padding:1rem 1.25rem;gap:.75rem}.notification-item--popup:has(.notification-item__status-icon.success){background:linear-gradient(135deg,#f8fff9,#fff)}.notification-item--popup:has(.notification-item__status-icon.error){background:linear-gradient(135deg,snow,#fff)}.notification-item--popup:has(.notification-item__status-icon.warning){background:linear-gradient(135deg,#fffcf5,#fff)}.notification-item--popup:has(.notification-item__status-icon.info){background:linear-gradient(135deg,#f5faff,#fff)}.notification-item--popup .notification-item__avatar{width:2.25rem;height:2.25rem}.notification-item--popup .notification-item__status-icon{width:1rem;height:1rem;font-size:.5rem}.notification-item--popup .notification-item__title{font-size:.8125rem}.notification-item--popup .notification-item__description{font-size:.75rem}.notification-item__avatar-container{position:relative;flex-shrink:0}.notification-item__avatar{width:2.75rem;height:2.75rem;border-radius:50%;overflow:hidden;background:#f0f0f0;display:flex;align-items:center;justify-content:center}.notification-item__avatar img{width:100%;height:100%;object-fit:cover}.notification-item__avatar-fallback{font-size:1rem;font-weight:700;color:#666}.notification-item__status-icon{position:absolute;bottom:-2px;right:-2px;width:1.25rem;height:1.25rem;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;font-size:.625rem;font-weight:800;color:#fff;box-shadow:0 2px 4px #0000001a;border:2px solid white}.notification-item__status-icon.success{background:#4caf50}.notification-item__status-icon.error{background:#f44336}.notification-item__status-icon.warning{background:#ff9800}.notification-item__status-icon.info{background:#2196f3}.notification-item__status-icon:not([class*=\" \"]){background:#9c27b0}.notification-item__content{flex:1;display:flex;flex-direction:column;gap:.125rem;min-width:0}.notification-item__header{display:flex;justify-content:space-between;align-items:center}.notification-item__meta{display:flex;align-items:center;gap:.5rem;font-size:.8125rem;color:#666}.notification-item__user{font-weight:700;color:#1a1a1a}.notification-item__time{color:#999;font-weight:500}.notification-item__dot{width:.5rem;height:.5rem;border-radius:50%;background:#4caf50;flex-shrink:0}.notification-item__body{display:flex;flex-direction:column;gap:.125rem}.notification-item__title{font-size:.875rem;font-weight:600;color:#1a1a1a;margin:0;line-height:1.4}.notification-item__description{font-size:.8125rem;line-height:1.5;color:#666;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.notification-item__header-actions{display:flex;align-items:center;gap:1rem;margin-right:-.5rem}.notification-item__header-actions .m-button{--m-button-size: .75rem;--m-button-color: #999;opacity:.6}.notification-item__header-actions .m-button:hover{opacity:1}.notification-item__actions{display:flex;gap:.75rem;margin-top:.75rem}.notification-item--popup .notification-item__actions{margin-top:1rem;gap:1.5rem;--m-button-background: transparent;--m-button-padding: 0;--m-button-size: .875rem}.notification-item--popup .notification-item__actions .m-button{color:#3f51b5;font-weight:700}.notification-item--popup .notification-item__actions .m-button:hover{text-decoration:underline;opacity:.8}.notification-item--popup .notification-item__actions .m-button:last-child{color:#666}.notification-item__action{padding:.625rem 1.5rem;border-radius:.625rem;font-size:.8125rem;font-weight:700;border:none;cursor:pointer;transition:all .2s ease}.notification-item__action--reject{background:#f0f0f0;color:#1a1a1a}.notification-item__action--reject:hover{background:#e5e5e5}.notification-item__action--approve{background:#1a1a1a;color:#fff}.notification-item__action--approve:hover{background:#333}.notification-item__action{padding:.375rem .75rem;border-radius:.5rem;font-size:.75rem;font-weight:700;border:1px solid transparent;cursor:pointer;transition:all .2s ease}.notification-item__action--reject{background:var(--m-frame);color:var(--m-text-secondary)}.notification-item__action--reject:hover{background:var(--m-border)}.notification-item__action--approve{background:var(--m-mm);color:#fff}.notification-item__action--approve:hover{background:var(--m-mm-dark)}.notification-item__progress-bar{width:100%;height:6px;background:#00000014;border-radius:100px;overflow:hidden;position:relative;margin-top:.5rem}.notification-item__progress-fill{height:100%;border-radius:100px;background-image:linear-gradient(90deg,var(--saffron, var(--m-mm)) 0%,rgba(255,255,255,.6) 50%,var(--saffron, var(--m-mm)) 100%);background-size:200% 100%;animation:notification-shimmer 1.5s infinite linear;transition:width .3s ease-out}.notification-item__percentage{font-size:.75rem;color:#666;align-self:flex-end;font-weight:600;margin-top:.25rem}@keyframes notification-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "m-button,m-one-button", inputs: ["config", "color", "labelClass", "fullWidth", "nav", "navParams", "href", "disabled", "variant", "name", "baseUrl", "one", "remote", "label", "noTranslate", "params", "noNative", "icon", "isRightIcon", "iconOnly", "stacked", "imgSrc", "nonClickable", "inverted", "isSubmit", "tabindex"], outputs: ["configChange", "clicked"] }, { kind: "component", type: ButtonGroupComponent, selector: "m-button-group, m-one-button-group", inputs: ["buttons", "names", "exclude", "vertical", "size"], outputs: ["clicked"] }, { kind: "component", type: HeaderComponent$1, selector: "m-header", inputs: ["level", "label", "icon", "actionButton", "actionLabel", "noTranslate", "params"], outputs: ["actionClick"] }, { kind: "component", type: ImgComponent, selector: "m-img", inputs: ["src", "data", "dataType", "alt", "priority", "fill", "width", "height", "remote", "ngSrcset", "sizes"] }, { kind: "pipe", type: TimeAgoPipe, name: "timeAgo" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
35406
|
+
`, 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)}}.notification-item{position:relative;display:flex;gap:1rem;padding:1.25rem 1.5rem;transition:background .2s ease;cursor:pointer;border-bottom:1px solid #f0f0f0}.notification-item:last-child{border-bottom:none}.notification-item:hover{background:#00000005}.notification-item--unread .notification-item__user{font-weight:800;color:#1a1a1a}.notification-item--highlighted{background:var(--m-warning-lite);box-shadow:inset 0 0 0 2px var(--m-warning)}.notification-item--highlighted:has(.notification-item__status-icon.error){background:var(--m-error-light);box-shadow:inset 0 0 0 2px var(--m-error)}.notification-item--highlighted:hover{background:var(--m-warning-lite)}.notification-item--highlighted:has(.notification-item__status-icon.error):hover{background:var(--m-error-light)}.notification-item--popup{background:#fff;border-radius:1rem;box-shadow:0 10px 30px #00000014,0 4px 12px #0000000a;border:1px solid rgba(0,0,0,.05);margin-bottom:.75rem;width:24rem;max-width:90vw;pointer-events:auto;padding:1rem 1.25rem;gap:.75rem}.notification-item--popup:has(.notification-item__status-icon.success){background:linear-gradient(135deg,#f8fff9,#fff)}.notification-item--popup:has(.notification-item__status-icon.error){background:linear-gradient(135deg,snow,#fff)}.notification-item--popup:has(.notification-item__status-icon.warning){background:linear-gradient(135deg,#fffcf5,#fff)}.notification-item--popup:has(.notification-item__status-icon.info){background:linear-gradient(135deg,#f5faff,#fff)}.notification-item--popup .notification-item__avatar{width:2.25rem;height:2.25rem}.notification-item--popup .notification-item__status-icon{width:1rem;height:1rem;font-size:.5rem}.notification-item--popup .notification-item__title{font-size:.8125rem}.notification-item--popup .notification-item__description{font-size:.75rem}.notification-item__avatar-container{position:relative;flex-shrink:0}.notification-item__avatar{width:2.75rem;height:2.75rem;border-radius:50%;overflow:hidden;background:#f0f0f0;display:flex;align-items:center;justify-content:center}.notification-item__avatar img{width:100%;height:100%;object-fit:cover}.notification-item__avatar-fallback{font-size:1rem;font-weight:700;color:#666}.notification-item__status-icon{position:absolute;bottom:-2px;right:-2px;width:1.25rem;height:1.25rem;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;font-size:.625rem;font-weight:800;color:#fff;box-shadow:0 2px 4px #0000001a;border:2px solid white}.notification-item__status-icon.success{background:#4caf50}.notification-item__status-icon.error{background:#f44336}.notification-item__status-icon.warning{background:#ff9800}.notification-item__status-icon.info{background:#2196f3}.notification-item__status-icon:not([class*=\" \"]){background:#9c27b0}.notification-item__content{flex:1;display:flex;flex-direction:column;gap:.125rem;min-width:0}.notification-item__header{display:flex;justify-content:space-between;align-items:center}.notification-item__meta{display:flex;align-items:center;gap:.5rem;font-size:.8125rem;color:#666}.notification-item__user{font-weight:700;color:#1a1a1a}.notification-item__time{color:#999;font-weight:500}.notification-item__dot{width:.5rem;height:.5rem;border-radius:50%;background:#4caf50;flex-shrink:0}.notification-item__body{display:flex;flex-direction:column;gap:.125rem}.notification-item__title{font-size:.875rem;font-weight:600;color:#1a1a1a;margin:0;line-height:1.4}.notification-item__description{font-size:.8125rem;line-height:1.5;color:#666;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.notification-item__header-actions{display:flex;align-items:center;gap:1rem;margin-right:-.5rem}.notification-item__header-actions .m-button{--m-button-size: .75rem;--m-button-color: #999;opacity:.6}.notification-item__header-actions .m-button:hover{opacity:1}.notification-item__actions{display:flex;gap:.75rem;margin-top:.75rem}.notification-item--popup .notification-item__actions{margin-top:1rem;gap:1.5rem;--m-button-background: transparent;--m-button-padding: 0;--m-button-size: .875rem}.notification-item--popup .notification-item__actions .m-button{color:#3f51b5;font-weight:700}.notification-item--popup .notification-item__actions .m-button:hover{text-decoration:underline;opacity:.8}.notification-item--popup .notification-item__actions .m-button:last-child{color:#666}.notification-item__action{padding:.625rem 1.5rem;border-radius:.625rem;font-size:.8125rem;font-weight:700;border:none;cursor:pointer;transition:all .2s ease}.notification-item__action--reject{background:#f0f0f0;color:#1a1a1a}.notification-item__action--reject:hover{background:#e5e5e5}.notification-item__action--approve{background:#1a1a1a;color:#fff}.notification-item__action--approve:hover{background:#333}.notification-item__action{padding:.375rem .75rem;border-radius:.5rem;font-size:.75rem;font-weight:700;border:1px solid transparent;cursor:pointer;transition:all .2s ease}.notification-item__action--reject{background:var(--m-frame);color:var(--m-text-secondary)}.notification-item__action--reject:hover{background:var(--m-border)}.notification-item__action--approve{background:var(--m-mm);color:#fff}.notification-item__action--approve:hover{background:var(--m-mm-dark)}.notification-item__progress-bar{width:100%;height:6px;background:#00000014;border-radius:100px;overflow:hidden;position:relative;margin-top:.5rem}.notification-item__progress-fill{height:100%;border-radius:100px;background-image:linear-gradient(90deg,var(--saffron, var(--m-mm)) 0%,rgba(255,255,255,.6) 50%,var(--saffron, var(--m-mm)) 100%);background-size:200% 100%;animation:notification-shimmer 1.5s infinite linear;transition:width .3s ease-out}.notification-item__percentage{font-size:.75rem;color:#666;align-self:flex-end;font-weight:600;margin-top:.25rem}@keyframes notification-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "m-button,m-one-button", inputs: ["config", "color", "labelClass", "fullWidth", "nav", "navParams", "href", "disabled", "variant", "name", "baseUrl", "one", "remote", "label", "noTranslate", "params", "noNative", "icon", "isRightIcon", "iconOnly", "stacked", "imgSrc", "nonClickable", "inverted", "isSubmit", "tabindex"], outputs: ["configChange", "clicked"] }, { kind: "component", type: ButtonGroupComponent, selector: "m-button-group, m-one-button-group", inputs: ["buttons", "names", "exclude", "vertical", "size"], outputs: ["clicked"] }, { kind: "component", type: HeaderComponent$1, selector: "m-header", inputs: ["level", "label", "icon", "actionButton", "actionLabel", "noTranslate", "params"], outputs: ["actionClick"] }, { kind: "component", type: ImgComponent, selector: "m-img", inputs: ["src", "data", "dataType", "alt", "priority", "fill", "width", "height", "remote", "ngSrcset", "sizes"] }, { kind: "pipe", type: TimeAgoPipe, name: "timeAgo" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
35329
35407
|
}
|
|
35330
35408
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NotificationElementComponent, decorators: [{
|
|
35331
35409
|
type: Component,
|
|
@@ -35334,6 +35412,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
35334
35412
|
class="notification-item"
|
|
35335
35413
|
[class.notification-item--unread]="!notification()?.read"
|
|
35336
35414
|
[class.notification-item--popup]="autoClose()"
|
|
35415
|
+
[class.notification-item--highlighted]="notification()?.highlighted"
|
|
35337
35416
|
role="button"
|
|
35338
35417
|
tabindex="0"
|
|
35339
35418
|
(click)="onActivate()"
|
|
@@ -35394,9 +35473,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
35394
35473
|
|
|
35395
35474
|
@if (notification()?.type === NotificationType.PROGRESS) {
|
|
35396
35475
|
<div class="notification-item__body">
|
|
35397
|
-
|
|
35398
|
-
|
|
35399
|
-
|
|
35476
|
+
<!-- Through label, not projected: m-header projects default
|
|
35477
|
+
content into its last level's slot only, so a level-4 title
|
|
35478
|
+
drew blank. -->
|
|
35479
|
+
<m-header [level]="4" [label]="notification()?.title" />
|
|
35400
35480
|
<div class="notification-item__progress-bar">
|
|
35401
35481
|
<div
|
|
35402
35482
|
class="notification-item__progress-fill"
|
|
@@ -35407,9 +35487,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
35407
35487
|
</div>
|
|
35408
35488
|
} @else {
|
|
35409
35489
|
<div class="notification-item__body">
|
|
35410
|
-
<m-header [level]="4"
|
|
35411
|
-
{{ notification()?.title | translate }}
|
|
35412
|
-
</m-header>
|
|
35490
|
+
<m-header [level]="4" [label]="notification()?.title" />
|
|
35413
35491
|
@if (notification()?.body?.text) {
|
|
35414
35492
|
<p class="notification-item__description">
|
|
35415
35493
|
{{ notification()?.body?.text | translate }}
|
|
@@ -35441,7 +35519,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
35441
35519
|
}
|
|
35442
35520
|
</div>
|
|
35443
35521
|
</div>
|
|
35444
|
-
`, 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)}}.notification-item{position:relative;display:flex;gap:1rem;padding:1.25rem 1.5rem;transition:background .2s ease;cursor:pointer;border-bottom:1px solid #f0f0f0}.notification-item:last-child{border-bottom:none}.notification-item:hover{background:#00000005}.notification-item--unread .notification-item__user{font-weight:800;color:#1a1a1a}.notification-item--popup{background:#fff;border-radius:1rem;box-shadow:0 10px 30px #00000014,0 4px 12px #0000000a;border:1px solid rgba(0,0,0,.05);margin-bottom:.75rem;width:24rem;max-width:90vw;pointer-events:auto;padding:1rem 1.25rem;gap:.75rem}.notification-item--popup:has(.notification-item__status-icon.success){background:linear-gradient(135deg,#f8fff9,#fff)}.notification-item--popup:has(.notification-item__status-icon.error){background:linear-gradient(135deg,snow,#fff)}.notification-item--popup:has(.notification-item__status-icon.warning){background:linear-gradient(135deg,#fffcf5,#fff)}.notification-item--popup:has(.notification-item__status-icon.info){background:linear-gradient(135deg,#f5faff,#fff)}.notification-item--popup .notification-item__avatar{width:2.25rem;height:2.25rem}.notification-item--popup .notification-item__status-icon{width:1rem;height:1rem;font-size:.5rem}.notification-item--popup .notification-item__title{font-size:.8125rem}.notification-item--popup .notification-item__description{font-size:.75rem}.notification-item__avatar-container{position:relative;flex-shrink:0}.notification-item__avatar{width:2.75rem;height:2.75rem;border-radius:50%;overflow:hidden;background:#f0f0f0;display:flex;align-items:center;justify-content:center}.notification-item__avatar img{width:100%;height:100%;object-fit:cover}.notification-item__avatar-fallback{font-size:1rem;font-weight:700;color:#666}.notification-item__status-icon{position:absolute;bottom:-2px;right:-2px;width:1.25rem;height:1.25rem;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;font-size:.625rem;font-weight:800;color:#fff;box-shadow:0 2px 4px #0000001a;border:2px solid white}.notification-item__status-icon.success{background:#4caf50}.notification-item__status-icon.error{background:#f44336}.notification-item__status-icon.warning{background:#ff9800}.notification-item__status-icon.info{background:#2196f3}.notification-item__status-icon:not([class*=\" \"]){background:#9c27b0}.notification-item__content{flex:1;display:flex;flex-direction:column;gap:.125rem;min-width:0}.notification-item__header{display:flex;justify-content:space-between;align-items:center}.notification-item__meta{display:flex;align-items:center;gap:.5rem;font-size:.8125rem;color:#666}.notification-item__user{font-weight:700;color:#1a1a1a}.notification-item__time{color:#999;font-weight:500}.notification-item__dot{width:.5rem;height:.5rem;border-radius:50%;background:#4caf50;flex-shrink:0}.notification-item__body{display:flex;flex-direction:column;gap:.125rem}.notification-item__title{font-size:.875rem;font-weight:600;color:#1a1a1a;margin:0;line-height:1.4}.notification-item__description{font-size:.8125rem;line-height:1.5;color:#666;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.notification-item__header-actions{display:flex;align-items:center;gap:1rem;margin-right:-.5rem}.notification-item__header-actions .m-button{--m-button-size: .75rem;--m-button-color: #999;opacity:.6}.notification-item__header-actions .m-button:hover{opacity:1}.notification-item__actions{display:flex;gap:.75rem;margin-top:.75rem}.notification-item--popup .notification-item__actions{margin-top:1rem;gap:1.5rem;--m-button-background: transparent;--m-button-padding: 0;--m-button-size: .875rem}.notification-item--popup .notification-item__actions .m-button{color:#3f51b5;font-weight:700}.notification-item--popup .notification-item__actions .m-button:hover{text-decoration:underline;opacity:.8}.notification-item--popup .notification-item__actions .m-button:last-child{color:#666}.notification-item__action{padding:.625rem 1.5rem;border-radius:.625rem;font-size:.8125rem;font-weight:700;border:none;cursor:pointer;transition:all .2s ease}.notification-item__action--reject{background:#f0f0f0;color:#1a1a1a}.notification-item__action--reject:hover{background:#e5e5e5}.notification-item__action--approve{background:#1a1a1a;color:#fff}.notification-item__action--approve:hover{background:#333}.notification-item__action{padding:.375rem .75rem;border-radius:.5rem;font-size:.75rem;font-weight:700;border:1px solid transparent;cursor:pointer;transition:all .2s ease}.notification-item__action--reject{background:var(--m-frame);color:var(--m-text-secondary)}.notification-item__action--reject:hover{background:var(--m-border)}.notification-item__action--approve{background:var(--m-mm);color:#fff}.notification-item__action--approve:hover{background:var(--m-mm-dark)}.notification-item__progress-bar{width:100%;height:6px;background:#00000014;border-radius:100px;overflow:hidden;position:relative;margin-top:.5rem}.notification-item__progress-fill{height:100%;border-radius:100px;background-image:linear-gradient(90deg,var(--saffron, var(--m-mm)) 0%,rgba(255,255,255,.6) 50%,var(--saffron, var(--m-mm)) 100%);background-size:200% 100%;animation:notification-shimmer 1.5s infinite linear;transition:width .3s ease-out}.notification-item__percentage{font-size:.75rem;color:#666;align-self:flex-end;font-weight:600;margin-top:.25rem}@keyframes notification-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}\n"] }]
|
|
35522
|
+
`, 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)}}.notification-item{position:relative;display:flex;gap:1rem;padding:1.25rem 1.5rem;transition:background .2s ease;cursor:pointer;border-bottom:1px solid #f0f0f0}.notification-item:last-child{border-bottom:none}.notification-item:hover{background:#00000005}.notification-item--unread .notification-item__user{font-weight:800;color:#1a1a1a}.notification-item--highlighted{background:var(--m-warning-lite);box-shadow:inset 0 0 0 2px var(--m-warning)}.notification-item--highlighted:has(.notification-item__status-icon.error){background:var(--m-error-light);box-shadow:inset 0 0 0 2px var(--m-error)}.notification-item--highlighted:hover{background:var(--m-warning-lite)}.notification-item--highlighted:has(.notification-item__status-icon.error):hover{background:var(--m-error-light)}.notification-item--popup{background:#fff;border-radius:1rem;box-shadow:0 10px 30px #00000014,0 4px 12px #0000000a;border:1px solid rgba(0,0,0,.05);margin-bottom:.75rem;width:24rem;max-width:90vw;pointer-events:auto;padding:1rem 1.25rem;gap:.75rem}.notification-item--popup:has(.notification-item__status-icon.success){background:linear-gradient(135deg,#f8fff9,#fff)}.notification-item--popup:has(.notification-item__status-icon.error){background:linear-gradient(135deg,snow,#fff)}.notification-item--popup:has(.notification-item__status-icon.warning){background:linear-gradient(135deg,#fffcf5,#fff)}.notification-item--popup:has(.notification-item__status-icon.info){background:linear-gradient(135deg,#f5faff,#fff)}.notification-item--popup .notification-item__avatar{width:2.25rem;height:2.25rem}.notification-item--popup .notification-item__status-icon{width:1rem;height:1rem;font-size:.5rem}.notification-item--popup .notification-item__title{font-size:.8125rem}.notification-item--popup .notification-item__description{font-size:.75rem}.notification-item__avatar-container{position:relative;flex-shrink:0}.notification-item__avatar{width:2.75rem;height:2.75rem;border-radius:50%;overflow:hidden;background:#f0f0f0;display:flex;align-items:center;justify-content:center}.notification-item__avatar img{width:100%;height:100%;object-fit:cover}.notification-item__avatar-fallback{font-size:1rem;font-weight:700;color:#666}.notification-item__status-icon{position:absolute;bottom:-2px;right:-2px;width:1.25rem;height:1.25rem;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;font-size:.625rem;font-weight:800;color:#fff;box-shadow:0 2px 4px #0000001a;border:2px solid white}.notification-item__status-icon.success{background:#4caf50}.notification-item__status-icon.error{background:#f44336}.notification-item__status-icon.warning{background:#ff9800}.notification-item__status-icon.info{background:#2196f3}.notification-item__status-icon:not([class*=\" \"]){background:#9c27b0}.notification-item__content{flex:1;display:flex;flex-direction:column;gap:.125rem;min-width:0}.notification-item__header{display:flex;justify-content:space-between;align-items:center}.notification-item__meta{display:flex;align-items:center;gap:.5rem;font-size:.8125rem;color:#666}.notification-item__user{font-weight:700;color:#1a1a1a}.notification-item__time{color:#999;font-weight:500}.notification-item__dot{width:.5rem;height:.5rem;border-radius:50%;background:#4caf50;flex-shrink:0}.notification-item__body{display:flex;flex-direction:column;gap:.125rem}.notification-item__title{font-size:.875rem;font-weight:600;color:#1a1a1a;margin:0;line-height:1.4}.notification-item__description{font-size:.8125rem;line-height:1.5;color:#666;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.notification-item__header-actions{display:flex;align-items:center;gap:1rem;margin-right:-.5rem}.notification-item__header-actions .m-button{--m-button-size: .75rem;--m-button-color: #999;opacity:.6}.notification-item__header-actions .m-button:hover{opacity:1}.notification-item__actions{display:flex;gap:.75rem;margin-top:.75rem}.notification-item--popup .notification-item__actions{margin-top:1rem;gap:1.5rem;--m-button-background: transparent;--m-button-padding: 0;--m-button-size: .875rem}.notification-item--popup .notification-item__actions .m-button{color:#3f51b5;font-weight:700}.notification-item--popup .notification-item__actions .m-button:hover{text-decoration:underline;opacity:.8}.notification-item--popup .notification-item__actions .m-button:last-child{color:#666}.notification-item__action{padding:.625rem 1.5rem;border-radius:.625rem;font-size:.8125rem;font-weight:700;border:none;cursor:pointer;transition:all .2s ease}.notification-item__action--reject{background:#f0f0f0;color:#1a1a1a}.notification-item__action--reject:hover{background:#e5e5e5}.notification-item__action--approve{background:#1a1a1a;color:#fff}.notification-item__action--approve:hover{background:#333}.notification-item__action{padding:.375rem .75rem;border-radius:.5rem;font-size:.75rem;font-weight:700;border:1px solid transparent;cursor:pointer;transition:all .2s ease}.notification-item__action--reject{background:var(--m-frame);color:var(--m-text-secondary)}.notification-item__action--reject:hover{background:var(--m-border)}.notification-item__action--approve{background:var(--m-mm);color:#fff}.notification-item__action--approve:hover{background:var(--m-mm-dark)}.notification-item__progress-bar{width:100%;height:6px;background:#00000014;border-radius:100px;overflow:hidden;position:relative;margin-top:.5rem}.notification-item__progress-fill{height:100%;border-radius:100px;background-image:linear-gradient(90deg,var(--saffron, var(--m-mm)) 0%,rgba(255,255,255,.6) 50%,var(--saffron, var(--m-mm)) 100%);background-size:200% 100%;animation:notification-shimmer 1.5s infinite linear;transition:width .3s ease-out}.notification-item__percentage{font-size:.75rem;color:#666;align-self:flex-end;font-weight:600;margin-top:.25rem}@keyframes notification-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}\n"] }]
|
|
35445
35523
|
}], propDecorators: { notification: [{ type: i0.Input, args: [{ isSignal: true, alias: "notification", required: false }] }], autoClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoClose", required: false }] }], actionClicked: [{ type: i0.Output, args: ["actionClicked"] }] } });
|
|
35446
35524
|
|
|
35447
35525
|
class NotificationPopupComponent {
|
|
@@ -36282,10 +36360,13 @@ class NotificationWidgetComponent {
|
|
|
36282
36360
|
displayNotifications = computed(() => {
|
|
36283
36361
|
const tab = this.activeTab();
|
|
36284
36362
|
const all = this.#notificationStore.allNotifications();
|
|
36285
|
-
|
|
36286
|
-
|
|
36287
|
-
|
|
36288
|
-
return
|
|
36363
|
+
const shown = tab === 'unread' ? all.filter((n) => !n.read) : all;
|
|
36364
|
+
// Highlighted rows are why the tray was just opened — first, whatever
|
|
36365
|
+
// their age, each group keeping the store's order.
|
|
36366
|
+
return [
|
|
36367
|
+
...shown.filter((n) => n.highlighted),
|
|
36368
|
+
...shown.filter((n) => !n.highlighted),
|
|
36369
|
+
];
|
|
36289
36370
|
}, ...(ngDevMode ? [{ debugName: "displayNotifications" }] : /* istanbul ignore next */ []));
|
|
36290
36371
|
unreadCount = computed(() => this.#notificationStore.unreadCount(), ...(ngDevMode ? [{ debugName: "unreadCount" }] : /* istanbul ignore next */ []));
|
|
36291
36372
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NotificationWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -40257,5 +40338,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
40257
40338
|
* Generated bundle index. Do not edit.
|
|
40258
40339
|
*/
|
|
40259
40340
|
|
|
40260
|
-
export { CheckboxInputComponent 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, IS_SIDE_PANEL as a$, ClearableInputComponent as a0, ClipboardService as a1, ColComponent as a2, ColorPickerInputComponent as a3, CommentItemComponent as a4, CommentsApiService as a5, CommentsComponent as a6, CommentsStore as a7, CompactNumberPipe as a8, ComponentInputComponent as a9, DocEditorComponent as aA, DomService as aB, Domain as aC, DotGridComponent as aD, DragListDirective as aE, DragListItemDirective as aF, DraggableDirective as aG, DropdownInputComponent as aH, FILTER_GROUP_CONTEXT as aI, FILTER_RANGE_MODES as aJ, FILTER_VARIANTS as aK, FLEX_VARIANTS as aL, FOLDER_PICK_LISTENER as aM, FORM_ASSET_FOLDER as aN, FileService as aO, FileUploadDirective as aP, FileUploadInputComponent as aQ, FlexComponent as aR, FlexItemComponent as aS, FormGroupComponent as aT, FrameComponent as aU, FreezeService as aV, GRID_BREAKPOINTS as aW, GetNavService as aX, HighlightDirective as aY, HttpService as aZ, ICON_SOURCE as a_, ComponentStepperComponent as aa, ConfigComponent as ab, ConfirmComponent as ac, ContextMenuComponent as ad, CustomIconClass as ae, CustomIconEditComponent as af, DEFAULT_DENIAL as ag, DEFAULT_DOC_DENSITY as ah, DEFAULT_DOC_VARIANT as ai, DEFAULT_FILTER_RANGE_MODE as aj, DEFAULT_FILTER_VARIANT as ak, DEFAULT_NAV_PARAM as al, DEFAULT_NAV_SEGMENT as am, DEFAULT_SIZE as an, DOCK_MIN_PAGE_REMAINDER as ao, DOCS_FOLDER as ap, DOC_ACTION_ICONS as aq, DOC_DENSITIES as ar, DOC_EDIT_ACTIONS as as, DOC_TOOLBAR_GROUPS as at, DOC_VARIANTS as au, DashboardCardComponent as av, DateInputComponent as aw, DatePickerComponent as ax, DeviceService as ay, DocComponent as az, MAX_ZOOM as b, PaginationComponent as b$, IconComponent as b0, ImgComponent as b1, InstrumentScoreComponent as b2, InterceptorObservables as b3, JumbotronComponent as b4, KeyValueComponent as b5, LAYOUT_ASSET_FOLDER as b6, LOGIN_COMPONENT as b7, LOGIN_STORE as b8, LanguageComponent as b9, NAV_WIDGET_MAP as bA, NavComponent as bB, NavDetailsComponent as bC, NavHeaderComponent as bD, NavMenuComponent as bE, NavStore as bF, NavTrailComponent as bG, NothingComponent as bH, NotificationElementComponent as bI, NotificationGroupComponent as bJ, NotificationPopupComponent as bK, NotificationService as bL, NotificationStore as bM, NotificationType as bN, NotificationWidgetComponent as bO, ONE_ASSET_BASE_URL as bP, OPTIONS_SOURCE as bQ, OVERLAY_WIDGETS as bR, OneApp as bS, OptionsSourceDirective as bT, OverlayBodyComponent as bU, OverlayRef as bV, OverlayService as bW, PLATFORM_BUTTON_NAV_IDS as bX, PLATFORM_EXTENSIBLE_NAV_IDS as bY, PLATFORM_NAV_MAP as bZ, PLATFORM_ROOT_CHILDREN as b_, ListComponent as ba, LogoComponent as bb, MAG_SOCKET_EVENT as bc, MHeroColorDirective as bd, MHeroComponent as be, MODAL_STORE_REF as bf, MOUNT_STATIC_SEGMENT as bg, MOUNT_TOKEN as bh, MRefDirective as bi, MStepComponent as bj, MURL_PARAM as bk, MURL_SEP as bl, ManifestEnrichmentService as bm, MenuComponent as bn, ModalDirective as bo, ModalRef as bp, ModalStore as bq, MoneyPipe as br, MultiRangeInputComponent as bs, MurlUrlSerializer as bt, NAV_DEFAULT_MURL as bu, NAV_ID_SEP as bv, NAV_MAIN_BUTTONS as bw, NAV_SEGMENT_RE as bx, NAV_STORE_REF as by, NAV_WC_COMPONENTS as bz, cropRect as c, SharedStoreRegistry as c$, PanelComponent as c0, PercentagePipe as c1, PlaygroundComponent as c2, PositionDirective as c3, PwaInstallComponent as c4, RECENT_SEARCH_LIMIT as c5, REMOTE_PAGE_RELOAD as c6, ROOT_NAV$1 as c7, RadioGroupComponent as c8, RadioInputComponent as c9, SectionCarouselComponent as cA, SectionComponent as cB, SectionFilterComponent as cC, SectionFilterGroupComponent as cD, SectionFilterMenuComponent as cE, SectionFilterPanelComponent as cF, SectionFilterRangePanelComponent as cG, SectionFooterComponent as cH, SectionFormComponent as cI, SectionFormItemComponent as cJ, SectionHeaderComponent as cK, SectionHeroComponent as cL, SectionPaginationComponent as cM, SectionSearchComponent as cN, SectionStepperComponent as cO, SectionTableCellComponent as cP, SectionTableComponent as cQ, SectionTableRowComponent as cR, SectionTableSortPipe as cS, SectionTabsComponent as cT, SectionToggleComponent as cU, SectionToggleItemDirective as cV, SelectableCardInputComponent as cW, SelectorDirective as cX, SettingsSearchBarComponent as cY, SettingsSearchService as cZ, ShapeComponent as c_, RatingInputComponent as ca, ReactiveElementComponent as cb, RemoteComponent as cc, RemoteLoaderService as cd, ResizeElementComponent as ce, RouteContainer as cf, RowComponent as cg, SEARCH_QUERY as ch, SEARCH_RESULTS_EVENT as ci, SECTION_ACCORDION_GROUP as cj, SECTION_FORM_CONTEXT as ck, SECTION_TABLE_VARIANTS as cl, SHARED_ICONS as cm, SIZE_CONTEXT as cn, ScoreComponent as co, ScrollComponent as cp, ScrollService as cq, SearchPanelComponent as cr, SearchStore as cs, SearchUserPanelComponent as ct, SectionAccordionDirective as cu, SectionAccordionGroupDirective as cv, SectionBackComponent as cw, SectionBadgesComponent as cx, SectionButtonGroupComponent as cy, SectionCardComponent as cz, drawFramed as d, cellText as d$, SidePanelDirective as d0, Size as d1, SocketStore as d2, SortComponent as d3, StatComponent as d4, StepComponent as d5, StepperComponent as d6, StepsComponent as d7, StorageService as d8, StrokeLinecap as d9, USER_STORE_REF as dA, USER_TAB_MAP as dB, UniverseComponent as dC, UserApiService as dD, UserAvatarComponent as dE, UserComponent as dF, UserNavComponent as dG, UserSettingsComponent as dH, UserStore as dI, WC_BUNDLE as dJ, WC_NAVIGATE_EVENT as dK, WC_ROUTE_CHANGED_EVENT as dL, WC_SEARCH_GROUPS as dM, WIN_USER_TAB_HOOK as dN, WIN_USER_TAB_KEY as dO, WatermarkComponent as dP, WcRouterStore as dQ, WrapperInputComponent as dR, anchorNavId as dS, applyColorsToElement as dT, applyDocEdit as dU, assetOptions as dV, bootstrapMagApp as dW, bootstrapPwaInstall as dX, buildWcBaseUrl as dY, calculateLuminance as dZ, calculateRanks as d_, StrokeLinejoin as da, SummaryComponent as db, SvgGeneratorComponent as dc, SvgGeneratorService as dd, SvgService as de, TOTAL_COLUMNS as df, TRANSLATION_SOURCE as dg, TableComponent as dh, TechnicalMeterComponent as di, TextInputComponent as dj, TextareaInputComponent as dk, ThemeComponent as dl, ThemeDataService as dm, ThemeService as dn, ThemeStore as dp, TimeAgoPipe as dq, TimelineComponent as dr, ToggleButtonComponent as ds, ToggleInputComponent as dt, ToggleRadioInputComponent as du, ToolTipDirective as dv, TooltipComponent as dw, TranslateService as dx, TreeGridComponent as dy, URL_SEP as dz, encodeFramed as e, isBootRedirect as e$, checkDoc as e0, checkFilterCondition as e1, childNavId as e2, claimDenial as e3, classListSignal as e4, coerceSize as e5, cornerEdge as e6, cornerSide as e7, createMap as e8, createPlatformNavMap as e9, filterTreeGridRows as eA, filterValueList as eB, filterValues as eC, flattenTreeGridRows as eD, formatBadgeCount as eE, fullName as eF, generateClipPath as eG, generateTransform as eH, getClassList as eI, getProperty as eJ, getScrollParent as eK, getTierFromPreviewPath as eL, getTreeGridRow as eM, getUniqueId as eN, getValue as eO, hasErrorComputed as eP, hexToRgb as eQ, hslToRgb$1 as eR, initMagmoniumApp as eS, initialNotificationState as eT, initialState$2 as eU, initials as eV, injectAuthenticate as eW, injectDefaultDenial as eX, injectInstallApp as eY, injectParentSize as eZ, injectScrollSticky as e_, definedWcTierOf as ea, deriveAvatarGradient as eb, deriveContrastColor as ec, deriveOppositeColor as ed, derivePropertyName as ee, docActionKey as ef, docAssetCandidates as eg, docProblemKey as eh, docRemotePath as ei, emailValidation as ej, evaluate as ek, evaluateBool as el, fieldBoolean as em, fieldNumber as en, fieldString as eo, filterHoldsList as ep, filterHoldsOneBound as eq, filterHoldsOptions as er, filterHoldsRange as es, filterList as et, filterNumber as eu, filterNumberList as ev, filterOne as ew, filterPanelOf as ex, filterPanelWidth as ey, filterRange as ez, clampFraming as f, provideMagAppConfig as f$, isButtonName as f0, isCancelledComputed as f1, isExtensiblePlatformNavId as f2, isJson as f3, isLoadingComputed as f4, isLocalhost as f5, isNavInstanceConfig as f6, isNavMenuConfig as f7, isNavRowsConfig as f8, isNavVisibilityConfig as f9, mountPatternText as fA, mountSegmentOf as fB, mountTokenOf as fC, navIdChain as fD, navIdFor as fE, navIdSegment as fF, navIdToRoutePath as fG, navIdToSegments as fH, navParamOf as fI, navTailMatcher as fJ, navToId as fK, navVisibilityGuard as fL, nextSectionTableSort as fM, normalizeAssetOptions as fN, offsetOfLine as fO, parentNavId as fP, parseAddress as fQ, parseColor as fR, parseMountPattern as fS, parsePatternNames as fT, patternValidation as fU, patternsValidation as fV, permissionRefusal as fW, platformNavWidgets as fX, privateGuard as fY, processImageToSvg as fZ, provideAppContext as f_, isPlatformNavId as fa, isSize as fb, isTierPreview as fc, isUrlLocalhost as fd, isValidNavId as fe, isValidNavSegment as ff, isWebComponent as fg, linkToId as fh, linkToNav as fi, loadingActions as fj, mInterceptor as fk, manualValidation as fl, matchFieldValidation as fm, matchMount as fn, maxLengthValidation as fo, maxValidation as fp, mergePlatformNav as fq, mergeUnique as fr, mergeUniqueBy as fs, mergeUniqueWith as ft, minAgeValidation as fu, minLengthValidation as fv, minValidation as fw, miniMarkToHtml as fx, mountFor as fy, mountPatternProblem as fz, BaseInputComponent as g, provideMagWcConfig as g0, provideMagWcRoutes as g1, provideModalComponents as g2, provideMurlUrlSerializer as g3, provideNavWidgets as g4, provideOverlayWidgets as g5, providePlatformNavWidgets as g6, provideSearch as g7, provideSizeContext as g8, provideUserTabs as g9, splitNavId as gA, splitOnMatch as gB, stringToColor as gC, toAttrBool as gD, toAttrNumber as gE, toCssLength as gF, toHostNavId as gG, toLength$1 as gH, toLocalNavId as gI, toggleTreeGridRow as gJ, unfetchedPlatformNav as gK, ungroupedDocActions as gL, urlValidation as gM, wcTierOf as gN, publicGuard as ga, readFieldPatterns as gb, recordDefinedWcTier as gc, remoteOutletRoute as gd, renderAddress as ge, renderDocument as gf, requiredValidation as gg, resolveConfigAsset as gh, resolveIconSize as gi, resolvePallet as gj, resolvePatternRules as gk, resolveSize as gl, rgbToHex as gm, rgbToHsl as gn, rowHasChildren as go, samePatterns as gp, sectionTableColumnId as gq, sectionTableColumnWidths as gr, sectionTableFrozenCount as gs, segmentsToNavId as gt, setProperty as gu, setTreeGridChildren as gv, setWcTier as gw, settingsWidgets as gx, shouldShowBadge as gy, sortSectionTableRows 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 };
|
|
40261
|
-
//# sourceMappingURL=magmonium-one-magmonium-one-
|
|
40341
|
+
export { CheckboxInputComponent 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, IS_SIDE_PANEL as a$, ClearableInputComponent as a0, ClipboardService as a1, ColComponent as a2, ColorPickerInputComponent as a3, CommentItemComponent as a4, CommentsApiService as a5, CommentsComponent as a6, CommentsStore as a7, CompactNumberPipe as a8, ComponentInputComponent as a9, DocEditorComponent as aA, DomService as aB, Domain as aC, DotGridComponent as aD, DragListDirective as aE, DragListItemDirective as aF, DraggableDirective as aG, DropdownInputComponent as aH, FILTER_GROUP_CONTEXT as aI, FILTER_RANGE_MODES as aJ, FILTER_VARIANTS as aK, FLEX_VARIANTS as aL, FOLDER_PICK_LISTENER as aM, FORM_ASSET_FOLDER as aN, FileService as aO, FileUploadDirective as aP, FileUploadInputComponent as aQ, FlexComponent as aR, FlexItemComponent as aS, FormGroupComponent as aT, FrameComponent as aU, FreezeService as aV, GRID_BREAKPOINTS as aW, GetNavService as aX, HighlightDirective as aY, HttpService as aZ, ICON_SOURCE as a_, ComponentStepperComponent as aa, ConfigComponent as ab, ConfirmComponent as ac, ContextMenuComponent as ad, CustomIconClass as ae, CustomIconEditComponent as af, DEFAULT_DENIAL as ag, DEFAULT_DOC_DENSITY as ah, DEFAULT_DOC_VARIANT as ai, DEFAULT_FILTER_RANGE_MODE as aj, DEFAULT_FILTER_VARIANT as ak, DEFAULT_NAV_PARAM as al, DEFAULT_NAV_SEGMENT as am, DEFAULT_SIZE as an, DOCK_MIN_PAGE_REMAINDER as ao, DOCS_FOLDER as ap, DOC_ACTION_ICONS as aq, DOC_DENSITIES as ar, DOC_EDIT_ACTIONS as as, DOC_TOOLBAR_GROUPS as at, DOC_VARIANTS as au, DashboardCardComponent as av, DateInputComponent as aw, DatePickerComponent as ax, DeviceService as ay, DocComponent as az, MAX_ZOOM as b, PaginationComponent as b$, IconComponent as b0, ImgComponent as b1, InstrumentScoreComponent as b2, InterceptorObservables as b3, JumbotronComponent as b4, KeyValueComponent as b5, LAYOUT_ASSET_FOLDER as b6, LOGIN_COMPONENT as b7, LOGIN_STORE as b8, LanguageComponent as b9, NAV_WIDGET_MAP as bA, NavComponent as bB, NavDetailsComponent as bC, NavHeaderComponent as bD, NavMenuComponent as bE, NavStore as bF, NavTrailComponent as bG, NothingComponent as bH, NotificationElementComponent as bI, NotificationGroupComponent as bJ, NotificationPopupComponent as bK, NotificationService as bL, NotificationStore as bM, NotificationType as bN, NotificationWidgetComponent as bO, ONE_ASSET_BASE_URL as bP, OPTIONS_SOURCE as bQ, OVERLAY_WIDGETS as bR, OneApp as bS, OptionsSourceDirective as bT, OverlayBodyComponent as bU, OverlayRef as bV, OverlayService as bW, PLATFORM_BUTTON_NAV_IDS as bX, PLATFORM_EXTENSIBLE_NAV_IDS as bY, PLATFORM_NAV_MAP as bZ, PLATFORM_ROOT_CHILDREN as b_, ListComponent as ba, LogoComponent as bb, MAG_SOCKET_EVENT as bc, MHeroColorDirective as bd, MHeroComponent as be, MODAL_STORE_REF as bf, MOUNT_STATIC_SEGMENT as bg, MOUNT_TOKEN as bh, MRefDirective as bi, MStepComponent as bj, MURL_PARAM as bk, MURL_SEP as bl, ManifestEnrichmentService as bm, MenuComponent as bn, ModalDirective as bo, ModalRef as bp, ModalStore as bq, MoneyPipe as br, MultiRangeInputComponent as bs, MurlUrlSerializer as bt, NAV_DEFAULT_MURL as bu, NAV_ID_SEP as bv, NAV_MAIN_BUTTONS as bw, NAV_SEGMENT_RE as bx, NAV_STORE_REF as by, NAV_WC_COMPONENTS as bz, cropRect as c, SharedStoreRegistry as c$, PanelComponent as c0, PercentagePipe as c1, PlaygroundComponent as c2, PositionDirective as c3, PwaInstallComponent as c4, RECENT_SEARCH_LIMIT as c5, REMOTE_PAGE_RELOAD as c6, ROOT_NAV$1 as c7, RadioGroupComponent as c8, RadioInputComponent as c9, SectionCarouselComponent as cA, SectionComponent as cB, SectionFilterComponent as cC, SectionFilterGroupComponent as cD, SectionFilterMenuComponent as cE, SectionFilterPanelComponent as cF, SectionFilterRangePanelComponent as cG, SectionFooterComponent as cH, SectionFormComponent as cI, SectionFormItemComponent as cJ, SectionHeaderComponent as cK, SectionHeroComponent as cL, SectionPaginationComponent as cM, SectionSearchComponent as cN, SectionStepperComponent as cO, SectionTableCellComponent as cP, SectionTableComponent as cQ, SectionTableRowComponent as cR, SectionTableSortPipe as cS, SectionTabsComponent as cT, SectionToggleComponent as cU, SectionToggleItemDirective as cV, SelectableCardInputComponent as cW, SelectorDirective as cX, SettingsSearchBarComponent as cY, SettingsSearchService as cZ, ShapeComponent as c_, RatingInputComponent as ca, ReactiveElementComponent as cb, RemoteComponent as cc, RemoteLoaderService as cd, ResizeElementComponent as ce, RouteContainer as cf, RowComponent as cg, SEARCH_QUERY as ch, SEARCH_RESULTS_EVENT as ci, SECTION_ACCORDION_GROUP as cj, SECTION_FORM_CONTEXT as ck, SECTION_TABLE_VARIANTS as cl, SHARED_ICONS as cm, SIZE_CONTEXT as cn, ScoreComponent as co, ScrollComponent as cp, ScrollService as cq, SearchPanelComponent as cr, SearchStore as cs, SearchUserPanelComponent as ct, SectionAccordionDirective as cu, SectionAccordionGroupDirective as cv, SectionBackComponent as cw, SectionBadgesComponent as cx, SectionButtonGroupComponent as cy, SectionCardComponent as cz, drawFramed as d, cellText as d$, SidePanelDirective as d0, Size as d1, SocketStore as d2, SortComponent as d3, StatComponent as d4, StepComponent as d5, StepperComponent as d6, StepsComponent as d7, StorageService as d8, StrokeLinecap as d9, USER_STORE_REF as dA, USER_TAB_MAP as dB, UniverseComponent as dC, UserApiService as dD, UserAvatarComponent as dE, UserComponent as dF, UserNavComponent as dG, UserSettingsComponent as dH, UserStore as dI, WC_BUNDLE as dJ, WC_NAVIGATE_EVENT as dK, WC_ROUTE_CHANGED_EVENT as dL, WC_SEARCH_GROUPS as dM, WIN_USER_TAB_HOOK as dN, WIN_USER_TAB_KEY as dO, WatermarkComponent as dP, WcRouterStore as dQ, WrapperInputComponent as dR, anchorNavId as dS, applyColorsToElement as dT, applyDocEdit as dU, assetOptions as dV, bootstrapMagApp as dW, bootstrapPwaInstall as dX, buildWcBaseUrl as dY, calculateLuminance as dZ, calculateRanks as d_, StrokeLinejoin as da, SummaryComponent as db, SvgGeneratorComponent as dc, SvgGeneratorService as dd, SvgService as de, TOTAL_COLUMNS as df, TRANSLATION_SOURCE as dg, TableComponent as dh, TechnicalMeterComponent as di, TextInputComponent as dj, TextareaInputComponent as dk, ThemeComponent as dl, ThemeDataService as dm, ThemeService as dn, ThemeStore as dp, TimeAgoPipe as dq, TimelineComponent as dr, ToggleButtonComponent as ds, ToggleInputComponent as dt, ToggleRadioInputComponent as du, ToolTipDirective as dv, TooltipComponent as dw, TranslateService as dx, TreeGridComponent as dy, URL_SEP as dz, encodeFramed as e, isBootRedirect as e$, checkDoc as e0, checkFilterCondition as e1, childNavId as e2, claimDenial as e3, classListSignal as e4, coerceSize as e5, cornerEdge as e6, cornerSide as e7, createMap as e8, createPlatformNavMap as e9, filterTreeGridRows as eA, filterValueList as eB, filterValues as eC, flattenTreeGridRows as eD, formatBadgeCount as eE, fullName as eF, generateClipPath as eG, generateTransform as eH, getClassList as eI, getProperty as eJ, getScrollParent as eK, getTierFromPreviewPath as eL, getTreeGridRow as eM, getUniqueId as eN, getValue as eO, hasErrorComputed as eP, hexToRgb as eQ, hslToRgb$1 as eR, initMagmoniumApp as eS, initialNotificationState as eT, initialState$2 as eU, initials as eV, injectAuthenticate as eW, injectDefaultDenial as eX, injectInstallApp as eY, injectParentSize as eZ, injectScrollSticky as e_, definedWcTierOf as ea, deriveAvatarGradient as eb, deriveContrastColor as ec, deriveOppositeColor as ed, derivePropertyName as ee, docActionKey as ef, docAssetCandidates as eg, docProblemKey as eh, docRemotePath as ei, emailValidation as ej, evaluate as ek, evaluateBool as el, fieldBoolean as em, fieldNumber as en, fieldString as eo, filterHoldsList as ep, filterHoldsOneBound as eq, filterHoldsOptions as er, filterHoldsRange as es, filterList as et, filterNumber as eu, filterNumberList as ev, filterOne as ew, filterPanelOf as ex, filterPanelWidth as ey, filterRange as ez, clampFraming as f, provideMagAppConfig as f$, isButtonName as f0, isCancelledComputed as f1, isExtensiblePlatformNavId as f2, isJson as f3, isLoadingComputed as f4, isLocalhost as f5, isNavInstanceConfig as f6, isNavMenuConfig as f7, isNavRowsConfig as f8, isNavVisibilityConfig as f9, mountPatternText as fA, mountSegmentOf as fB, mountTokenOf as fC, navIdChain as fD, navIdFor as fE, navIdSegment as fF, navIdToRoutePath as fG, navIdToSegments as fH, navParamOf as fI, navTailMatcher as fJ, navToId as fK, navVisibilityGuard as fL, nextSectionTableSort as fM, normalizeAssetOptions as fN, offsetOfLine as fO, parentNavId as fP, parseAddress as fQ, parseColor as fR, parseMountPattern as fS, parsePatternNames as fT, patternValidation as fU, patternsValidation as fV, permissionRefusal as fW, platformNavWidgets as fX, privateGuard as fY, processImageToSvg as fZ, provideAppContext as f_, isPlatformNavId as fa, isSize as fb, isTierPreview as fc, isUrlLocalhost as fd, isValidNavId as fe, isValidNavSegment as ff, isWebComponent as fg, linkToId as fh, linkToNav as fi, loadingActions as fj, mInterceptor as fk, manualValidation as fl, matchFieldValidation as fm, matchMount as fn, maxLengthValidation as fo, maxValidation as fp, mergePlatformNav as fq, mergeUnique as fr, mergeUniqueBy as fs, mergeUniqueWith as ft, minAgeValidation as fu, minLengthValidation as fv, minValidation as fw, miniMarkToHtml as fx, mountFor as fy, mountPatternProblem as fz, BaseInputComponent as g, provideMagWcConfig as g0, provideMagWcRoutes as g1, provideModalComponents as g2, provideMurlUrlSerializer as g3, provideNavWidgets as g4, provideOverlayWidgets as g5, providePlatformNavWidgets as g6, provideSearch as g7, provideSizeContext as g8, provideUserTabs as g9, splitNavId as gA, splitOnMatch as gB, stringToColor as gC, tailRouteOf as gD, toAttrBool as gE, toAttrNumber as gF, toCssLength as gG, toHostNavId as gH, toLength$1 as gI, toLocalNavId as gJ, toggleTreeGridRow as gK, unfetchedPlatformNav as gL, ungroupedDocActions as gM, urlValidation as gN, wcTierOf as gO, publicGuard as ga, readFieldPatterns as gb, recordDefinedWcTier as gc, remoteOutletRoute as gd, renderAddress as ge, renderDocument as gf, requiredValidation as gg, resolveConfigAsset as gh, resolveIconSize as gi, resolvePallet as gj, resolvePatternRules as gk, resolveSize as gl, rgbToHex as gm, rgbToHsl as gn, rowHasChildren as go, samePatterns as gp, sectionTableColumnId as gq, sectionTableColumnWidths as gr, sectionTableFrozenCount as gs, segmentsToNavId as gt, setProperty as gu, setTreeGridChildren as gv, setWcTier as gw, settingsWidgets as gx, shouldShowBadge as gy, sortSectionTableRows 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 };
|
|
40342
|
+
//# sourceMappingURL=magmonium-one-magmonium-one-DCRM0N5X.mjs.map
|