@magmonium/one 0.2.37 → 0.2.39
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/assets/buttons/confirm_cancel.json +5 -0
- package/assets/index.json +1 -1
- package/fesm2022/{magmonium-one-magmonium-one-Byxgogqv.mjs → magmonium-one-magmonium-one-1LRvvkZo.mjs} +309 -88
- package/fesm2022/magmonium-one-magmonium-one-1LRvvkZo.mjs.map +1 -0
- package/fesm2022/{magmonium-one-otp-ozxzDST4.mjs → magmonium-one-otp-Crc-7_tc.mjs} +2 -2
- package/fesm2022/{magmonium-one-otp-ozxzDST4.mjs.map → magmonium-one-otp-Crc-7_tc.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-password-CIGsSlR_.mjs → magmonium-one-password-GYSJXyp0.mjs} +2 -2
- package/fesm2022/{magmonium-one-password-CIGsSlR_.mjs.map → magmonium-one-password-GYSJXyp0.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-toggle-xObigfCF.mjs → magmonium-one-toggle-CzrlUm9C.mjs} +2 -2
- package/fesm2022/{magmonium-one-toggle-xObigfCF.mjs.map → magmonium-one-toggle-CzrlUm9C.mjs.map} +1 -1
- package/fesm2022/magmonium-one.mjs +1 -1
- package/package.json +1 -1
- package/types/magmonium-one.d.ts +132 -158
- package/fesm2022/magmonium-one-magmonium-one-Byxgogqv.mjs.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { InjectionToken, inject, Injectable, signal, computed, DestroyRef, DOCUMENT, ApplicationRef, RendererFactory2, createComponent, EnvironmentInjector, Pipe, ChangeDetectorRef, untracked, ElementRef, afterNextRender, input, ChangeDetectionStrategy, Component, effect, Injector, reflectComponentType, model, HostListener, Renderer2, Directive, output, viewChild, ViewEncapsulation, forwardRef, contentChild, TemplateRef, ViewContainerRef, inputBinding, outputBinding, linkedSignal, afterRenderEffect, runInInjectionContext, Input, booleanAttribute, HostAttributeToken, EventEmitter, Output, ViewChild, ContentChild, provideZonelessChangeDetection, makeEnvironmentProviders, HostBinding, provideAppInitializer, provideBrowserGlobalErrorListeners, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
|
3
3
|
import { HttpClient, HttpParams, provideHttpClient, withFetch, withInterceptors } from '@angular/common/http';
|
|
4
|
-
import { firstValueFrom, of, tap, catchError, throwError, shareReplay, finalize, map, forkJoin, Observable, pipe, interval, fromEvent, switchMap as switchMap$1, filter, EMPTY,
|
|
4
|
+
import { firstValueFrom, of, tap, catchError, throwError, shareReplay, finalize, map, forkJoin, Observable, pipe, interval, fromEvent, switchMap as switchMap$1, filter, EMPTY, Subject, combineLatest, race, take, from } from 'rxjs';
|
|
5
5
|
import { rxResource, toObservable, toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
6
6
|
import { signalStore, withState, withMethods, patchState, withHooks, withComputed, withProps } from '@ngrx/signals';
|
|
7
7
|
import { rxMethod } from '@ngrx/signals/rxjs-interop';
|
|
@@ -3172,6 +3172,14 @@ const NotificationStore = signalStore({ providedIn: 'root' }, withState(initialN
|
|
|
3172
3172
|
* Nav model — see libs/one/CONTEXT.md (NavId, NavKind, Address, Anchor, NavRef)
|
|
3173
3173
|
* and docs/adr/0014.
|
|
3174
3174
|
*/
|
|
3175
|
+
/**
|
|
3176
|
+
* The parameter name a `dynamic` Nav carries when it authored none. One
|
|
3177
|
+
* constant because the emitted route, the Address a NavRef renders and the row
|
|
3178
|
+
* that fills it are the same string.
|
|
3179
|
+
*/
|
|
3180
|
+
const DEFAULT_NAV_PARAM = 'id';
|
|
3181
|
+
/** The parameter a `dynamic` Nav contributes, authored or defaulted. */
|
|
3182
|
+
const navParamOf = (nav) => nav?.param ?? DEFAULT_NAV_PARAM;
|
|
3175
3183
|
const ROOT_NAV$1 = 'root';
|
|
3176
3184
|
/**
|
|
3177
3185
|
* The segment a Nav carries when it *is* its parent's own content — the route
|
|
@@ -3248,8 +3256,9 @@ const splitNavId = (navId, navMap) => {
|
|
|
3248
3256
|
const anchorNavId = (navId, navMap) => splitNavId(navId, navMap).url.join(NAV_ID_SEP) || ROOT_NAV$1;
|
|
3249
3257
|
/**
|
|
3250
3258
|
* Route path for the Url part of a NavId. `root` -> `/`. A `dynamic` Nav
|
|
3251
|
-
* contributes
|
|
3252
|
-
* rendered against a live location (see
|
|
3259
|
+
* contributes `:id` alone — its own segment is a name, not an address — which
|
|
3260
|
+
* is why a concrete path can only be rendered against a live location (see
|
|
3261
|
+
* `renderAddress`).
|
|
3253
3262
|
*/
|
|
3254
3263
|
const navIdToRoutePath = (navId, navMap) => {
|
|
3255
3264
|
const segments = navIdToSegments(navId).slice(1);
|
|
@@ -3263,12 +3272,11 @@ const navIdToRoutePath = (navId, navMap) => {
|
|
|
3263
3272
|
// no segment of its own — `app → default → trending` is `/app/trending`,
|
|
3264
3273
|
// the address the generated route table already answers at.
|
|
3265
3274
|
const path = segment === DEFAULT_NAV_SEGMENT ? '' : (nav?.path ?? segment);
|
|
3266
|
-
|
|
3267
|
-
|
|
3268
|
-
|
|
3275
|
+
// A dynamic Nav *is* the parameter: it contributes `:id` and no segment
|
|
3276
|
+
// of its own, so `comics → issue` (dynamic) is `/comics/:issueId`. The
|
|
3277
|
+
// Nav's own name stays a name — it never reaches the URL.
|
|
3278
|
+
return nav?.presentation === 'dynamic' ? `:${navParamOf(nav)}` : path;
|
|
3269
3279
|
})
|
|
3270
|
-
// A dynamic Nav mounted at its app's own root declares `path: ''` — it
|
|
3271
|
-
// contributes `:id` and no segment of its own.
|
|
3272
3280
|
.flatMap((part) => part.split(URL_SEP).filter(Boolean));
|
|
3273
3281
|
return parts.length ? URL_SEP + parts.join(URL_SEP) : URL_SEP;
|
|
3274
3282
|
};
|
|
@@ -3410,6 +3418,9 @@ const NAV_MAIN_BUTTONS = new InjectionToken('NAV_MAIN_BUTTONS');
|
|
|
3410
3418
|
function isNavMenuConfig(entry) {
|
|
3411
3419
|
return typeof entry === 'object' && 'navMenu' in entry;
|
|
3412
3420
|
}
|
|
3421
|
+
function isNavRowsConfig(entry) {
|
|
3422
|
+
return typeof entry === 'object' && 'navRows' in entry;
|
|
3423
|
+
}
|
|
3413
3424
|
/**
|
|
3414
3425
|
* Multi-provided, and resolved **last-wins**: the library provides its own
|
|
3415
3426
|
* Platform Nav panels first so an app registering at the same NavId replaces
|
|
@@ -3636,16 +3647,33 @@ const emptyResult = () => ({
|
|
|
3636
3647
|
* target decides whether following it routes or opens a panel, so nothing here
|
|
3637
3648
|
* chooses a link kind (ADR 0014).
|
|
3638
3649
|
*/
|
|
3639
|
-
const toTrailItem = (navId, navMap, anchor
|
|
3650
|
+
const toTrailItem = (navId, navMap, anchor,
|
|
3651
|
+
/** A dynamic node standing on an instance reads that row's own label. */
|
|
3652
|
+
label) => {
|
|
3640
3653
|
const nav = navMap[navId];
|
|
3641
3654
|
return {
|
|
3642
3655
|
id: navId,
|
|
3643
|
-
label: nav?.title ?? navIdSegment(navId),
|
|
3656
|
+
label: label ?? nav?.title ?? navIdSegment(navId),
|
|
3644
3657
|
icon: nav?.icon,
|
|
3645
3658
|
nav: navId,
|
|
3646
3659
|
address: renderAddress(navId, navMap, anchor),
|
|
3647
3660
|
};
|
|
3648
3661
|
};
|
|
3662
|
+
/**
|
|
3663
|
+
* One resolved NavRow as a menu row. `nav` is the dynamic **node**, never a
|
|
3664
|
+
* per-instance id nothing registers — a NavRef names a node and the instance
|
|
3665
|
+
* rides alongside as the param this Nav declared, which is what `renderAddress`
|
|
3666
|
+
* fills. `id` carries the value only so the list has stable keys.
|
|
3667
|
+
*/
|
|
3668
|
+
const navRowTrailItem = (navId, nav, row, navMap, anchor) => ({
|
|
3669
|
+
id: `${navId}${NAV_ID_SEP}${row.value}`,
|
|
3670
|
+
label: row.label,
|
|
3671
|
+
icon: row.icon ?? nav.icon,
|
|
3672
|
+
nav: navId,
|
|
3673
|
+
address: renderAddress(navId, navMap, anchor, {
|
|
3674
|
+
[navParamOf(nav)]: row.value,
|
|
3675
|
+
}),
|
|
3676
|
+
});
|
|
3649
3677
|
/** A Nav that *is* its parent's own content rather than a place beside it. */
|
|
3650
3678
|
const isDefaultNav = (navId) => navIdSegment(navId) === DEFAULT_NAV_SEGMENT;
|
|
3651
3679
|
/**
|
|
@@ -3722,7 +3750,27 @@ const navMenuOwnerId = (navId, navMap, hasOwnContent = false) => {
|
|
|
3722
3750
|
}
|
|
3723
3751
|
return visible;
|
|
3724
3752
|
};
|
|
3725
|
-
|
|
3753
|
+
/**
|
|
3754
|
+
* The rows one panel draws. A `dynamic` child with a NavRowSource behind it is
|
|
3755
|
+
* **transparent** the way a Default Nav is: its resolved rows are spliced where
|
|
3756
|
+
* its own row stood, so the User reads the categories rather than a row named
|
|
3757
|
+
* after the node that lists them.
|
|
3758
|
+
*
|
|
3759
|
+
* Three states and not two. Rows: splice them. No source registered at all:
|
|
3760
|
+
* the Nav is an ordinary row, which is what a `dynamic` Nav was before a source
|
|
3761
|
+
* could be authored. A source that resolved *nothing*: splice nothing — falling
|
|
3762
|
+
* back to the node's own row would draw a link into a list that is empty, and
|
|
3763
|
+
* falling through to the static siblings around it would show a panel that
|
|
3764
|
+
* looks correct and is not.
|
|
3765
|
+
*/
|
|
3766
|
+
const buildNavMenus = (navId, navMap, anchor, dynamicRows = {}) => menuChildIds(navId, navMap).flatMap((childId) => {
|
|
3767
|
+
const nav = navMap[childId];
|
|
3768
|
+
const resolved = nav && dynamicRows[childId];
|
|
3769
|
+
if (!nav || nav.presentation !== 'dynamic' || !resolved) {
|
|
3770
|
+
return [toTrailItem(childId, navMap, anchor)];
|
|
3771
|
+
}
|
|
3772
|
+
return resolved.rows.map((row) => navRowTrailItem(childId, nav, row, navMap, anchor));
|
|
3773
|
+
});
|
|
3726
3774
|
/**
|
|
3727
3775
|
* Merges a widget's emitted trail over the derived one, matching by depth.
|
|
3728
3776
|
* With a single keyspace there is nothing to translate — an emitted entry is
|
|
@@ -3737,9 +3785,25 @@ const mergeTrail = (derived, override, derivedHeader) => {
|
|
|
3737
3785
|
return { trail, header: override.header ?? derivedHeader };
|
|
3738
3786
|
};
|
|
3739
3787
|
function deriveBreadcrumb(params) {
|
|
3740
|
-
const { navId, navMap, anchor, breadcrumb, navMenu, hasOwnContent } = params;
|
|
3788
|
+
const { navId, navMap, anchor, breadcrumb, navMenu, hasOwnContent, dynamicRows, routeParams, } = params;
|
|
3741
3789
|
if (!navId)
|
|
3742
3790
|
return emptyResult();
|
|
3791
|
+
/**
|
|
3792
|
+
* The label a dynamic node wears while the User stands on one of its rows.
|
|
3793
|
+
* Falls back to the node's own title when nothing matches — a deep link that
|
|
3794
|
+
* arrived before the rows did, or a row that has since gone — because a raw
|
|
3795
|
+
* segment is a worse answer than the node's name but a better one than a
|
|
3796
|
+
* blank.
|
|
3797
|
+
*/
|
|
3798
|
+
const rowLabel = (id) => {
|
|
3799
|
+
const nav = navMap[id];
|
|
3800
|
+
if (nav?.presentation !== 'dynamic')
|
|
3801
|
+
return undefined;
|
|
3802
|
+
const value = routeParams?.[navParamOf(nav)];
|
|
3803
|
+
if (!value)
|
|
3804
|
+
return undefined;
|
|
3805
|
+
return dynamicRows?.[id]?.rows.find((row) => row.value === value)?.label;
|
|
3806
|
+
};
|
|
3743
3807
|
// The header and the trail belong to whichever Nav owns the menu below them:
|
|
3744
3808
|
// on a leaf that is the parent, so the User reads the list they are in with
|
|
3745
3809
|
// their own row marked, rather than a title over an empty panel.
|
|
@@ -3752,11 +3816,13 @@ function deriveBreadcrumb(params) {
|
|
|
3752
3816
|
const derivedTrail = chain
|
|
3753
3817
|
.slice(0, -1)
|
|
3754
3818
|
.filter((id) => !isDefaultNav(id))
|
|
3755
|
-
.map((id) => toTrailItem(id, navMap, anchor));
|
|
3819
|
+
.map((id) => toTrailItem(id, navMap, anchor, rowLabel(id)));
|
|
3756
3820
|
const nav = navMap[ownerId];
|
|
3757
3821
|
const derivedHeader = {
|
|
3758
3822
|
id: ownerId,
|
|
3759
|
-
label:
|
|
3823
|
+
label: rowLabel(ownerId) ??
|
|
3824
|
+
nav?.title ??
|
|
3825
|
+
(ownerId === ROOT_NAV$1 ? '' : navIdSegment(ownerId)),
|
|
3760
3826
|
icon: nav?.icon,
|
|
3761
3827
|
nav: ownerId,
|
|
3762
3828
|
address: renderAddress(ownerId, navMap, anchor),
|
|
@@ -3768,7 +3834,7 @@ function deriveBreadcrumb(params) {
|
|
|
3768
3834
|
breadcrumb: { trail, header },
|
|
3769
3835
|
navMenus: navMenu?.length && ownPanel
|
|
3770
3836
|
? navMenu
|
|
3771
|
-
: buildNavMenus(ownerId, navMap, anchor),
|
|
3837
|
+
: buildNavMenus(ownerId, navMap, anchor, dynamicRows),
|
|
3772
3838
|
};
|
|
3773
3839
|
}
|
|
3774
3840
|
|
|
@@ -3867,6 +3933,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
3867
3933
|
const initialState$3 = {
|
|
3868
3934
|
path: '/',
|
|
3869
3935
|
routeNavId: undefined,
|
|
3936
|
+
routeParams: {},
|
|
3870
3937
|
murl: [],
|
|
3871
3938
|
appLink: undefined,
|
|
3872
3939
|
appNavId: undefined,
|
|
@@ -3889,6 +3956,21 @@ const routeNavIdOf = (root) => {
|
|
|
3889
3956
|
}
|
|
3890
3957
|
return navId;
|
|
3891
3958
|
};
|
|
3959
|
+
/**
|
|
3960
|
+
* Every path parameter on the matched chain, deepest last. Merged rather than
|
|
3961
|
+
* read off the leaf: two dynamic Navs on one path each contribute their own
|
|
3962
|
+
* (`:id/:issueId`), and only the chain holds both.
|
|
3963
|
+
*/
|
|
3964
|
+
const routeParamsOf = (root) => {
|
|
3965
|
+
const params = {};
|
|
3966
|
+
for (let r = root; r; r = r.firstChild) {
|
|
3967
|
+
for (const [key, value] of Object.entries(r.params ?? {})) {
|
|
3968
|
+
if (typeof value === 'string')
|
|
3969
|
+
params[key] = value;
|
|
3970
|
+
}
|
|
3971
|
+
}
|
|
3972
|
+
return params;
|
|
3973
|
+
};
|
|
3892
3974
|
const murlOf = (root) => {
|
|
3893
3975
|
const raw = root.queryParams?.[MURL_PARAM];
|
|
3894
3976
|
return typeof raw === 'string' ? raw.split(MURL_SEP).filter(Boolean) : [];
|
|
@@ -3946,32 +4028,69 @@ const NavStore = signalStore({ providedIn: 'root' }, withState(initialState$3),
|
|
|
3946
4028
|
* selector from the Angular tag used to create an unregistered custom
|
|
3947
4029
|
* element and leave theme / language blank.
|
|
3948
4030
|
*/
|
|
3949
|
-
|
|
4031
|
+
/**
|
|
4032
|
+
* One NavId against every registered map, Remote first. Split out of
|
|
4033
|
+
* `widgetEntry` because a `dynamic` Nav's rows are looked up by *its own*
|
|
4034
|
+
* id while the User stands on its parent — the rows draw in the parent's
|
|
4035
|
+
* panel, so the candidate list the open panel walks would never reach them.
|
|
4036
|
+
*/
|
|
4037
|
+
const entryAt = (candidate) => {
|
|
3950
4038
|
const appNavId = store.appNavId();
|
|
3951
4039
|
const appLink = store.appLink();
|
|
3952
4040
|
const maps = navWidgetMaps ?? [];
|
|
3953
|
-
|
|
3954
|
-
|
|
3955
|
-
|
|
3956
|
-
|
|
3957
|
-
|
|
3958
|
-
|
|
3959
|
-
|
|
3960
|
-
|
|
3961
|
-
return { entry, remote: true, navId: candidate };
|
|
3962
|
-
}
|
|
3963
|
-
}
|
|
3964
|
-
for (let i = maps.length - 1; i >= 0; i--) {
|
|
3965
|
-
const entry = maps[i]()[navId];
|
|
3966
|
-
if (entry !== undefined)
|
|
3967
|
-
return { entry, remote: false, navId: candidate };
|
|
4041
|
+
const navId = candidate;
|
|
4042
|
+
if (appLink && appNavId) {
|
|
4043
|
+
const registered = store.remoteWidgets()[appLink];
|
|
4044
|
+
const localId = toLocalNavId(navId, appNavId);
|
|
4045
|
+
if (registered && localId) {
|
|
4046
|
+
const entry = registered.widgetMap()[localId];
|
|
4047
|
+
if (entry)
|
|
4048
|
+
return { entry, remote: true };
|
|
3968
4049
|
}
|
|
3969
4050
|
}
|
|
4051
|
+
for (let i = maps.length - 1; i >= 0; i--) {
|
|
4052
|
+
const entry = maps[i]()[navId];
|
|
4053
|
+
if (entry !== undefined)
|
|
4054
|
+
return { entry, remote: false };
|
|
4055
|
+
}
|
|
4056
|
+
return undefined;
|
|
4057
|
+
};
|
|
4058
|
+
const widgetEntry = computed(() => {
|
|
4059
|
+
for (const candidate of widgetNavIds()) {
|
|
4060
|
+
const hit = entryAt(candidate);
|
|
4061
|
+
if (hit)
|
|
4062
|
+
return { ...hit, navId: candidate };
|
|
4063
|
+
}
|
|
3970
4064
|
return undefined;
|
|
3971
4065
|
}, ...(ngDevMode ? [{ debugName: "widgetEntry" }] : /* istanbul ignore next */ []));
|
|
4066
|
+
/**
|
|
4067
|
+
* Every `dynamic` Nav with a NavRowSource behind it, resolved. Walks the
|
|
4068
|
+
* whole map rather than the open panel's own descent: the rows are drawn by
|
|
4069
|
+
* whichever ancestor owns the panel, and reading each source's signal here
|
|
4070
|
+
* is what makes the panel recompute when the store behind it fills.
|
|
4071
|
+
*/
|
|
4072
|
+
const dynamicRows = computed(() => {
|
|
4073
|
+
const out = {};
|
|
4074
|
+
for (const nav of Object.values(store.navMap())) {
|
|
4075
|
+
if (nav.presentation !== 'dynamic')
|
|
4076
|
+
continue;
|
|
4077
|
+
const hit = entryAt(nav.navId);
|
|
4078
|
+
if (!hit || !isNavRowsConfig(hit.entry))
|
|
4079
|
+
continue;
|
|
4080
|
+
out[nav.navId] = {
|
|
4081
|
+
rows: hit.entry.navRows() ?? [],
|
|
4082
|
+
loading: hit.entry.loading?.(),
|
|
4083
|
+
};
|
|
4084
|
+
}
|
|
4085
|
+
return out;
|
|
4086
|
+
}, ...(ngDevMode ? [{ debugName: "dynamicRows" }] : /* istanbul ignore next */ []));
|
|
3972
4087
|
const resolvedWidget = computed(() => {
|
|
3973
4088
|
const hit = widgetEntry();
|
|
3974
|
-
|
|
4089
|
+
// Neither of the two row-shaped entries fills a panel with a component:
|
|
4090
|
+
// one replaces a panel's rows, the other contributes rows to its
|
|
4091
|
+
// parent's, and `normalizeNavWidgetEntry` would read a `content` off
|
|
4092
|
+
// neither.
|
|
4093
|
+
if (!hit || isNavMenuConfig(hit.entry) || isNavRowsConfig(hit.entry))
|
|
3975
4094
|
return null;
|
|
3976
4095
|
const config = normalizeNavWidgetEntry(hit.entry);
|
|
3977
4096
|
if (!config.content)
|
|
@@ -4022,6 +4141,8 @@ const NavStore = signalStore({ providedIn: 'root' }, withState(initialState$3),
|
|
|
4022
4141
|
navId: panelNavId(),
|
|
4023
4142
|
navMap: store.navMap(),
|
|
4024
4143
|
anchor: { navId: store.routeNavId() ?? ROOT_NAV$1, path: store.path() },
|
|
4144
|
+
dynamicRows: dynamicRows(),
|
|
4145
|
+
routeParams: store.routeParams(),
|
|
4025
4146
|
breadcrumb: menuConfig?.breadcramb?.() ??
|
|
4026
4147
|
(typeof widgetConfig?.breadcramb === 'function'
|
|
4027
4148
|
? widgetConfig.breadcramb()
|
|
@@ -4125,6 +4246,7 @@ const NavStore = signalStore({ providedIn: 'root' }, withState(initialState$3),
|
|
|
4125
4246
|
*/
|
|
4126
4247
|
const syncFromRouter = rxMethod(pipe(filter((s) => !!s), tap((snapshot) => {
|
|
4127
4248
|
const routeNavId = routeNavIdOf(snapshot.root);
|
|
4249
|
+
const routeParams = routeParamsOf(snapshot.root);
|
|
4128
4250
|
const murl = murlOf(snapshot.root);
|
|
4129
4251
|
const path = router.url.split(MURL_SEP)[0].split('?')[0];
|
|
4130
4252
|
untracked(() => {
|
|
@@ -4133,6 +4255,7 @@ const NavStore = signalStore({ providedIn: 'root' }, withState(initialState$3),
|
|
|
4133
4255
|
patchState(store, {
|
|
4134
4256
|
path,
|
|
4135
4257
|
routeNavId,
|
|
4258
|
+
routeParams,
|
|
4136
4259
|
murl,
|
|
4137
4260
|
// Address changes clear the icon-opened flag (ADR 0013), except
|
|
4138
4261
|
// an explicit `keepPanel` goToNav (AppLogo while open).
|
|
@@ -6648,7 +6771,7 @@ class SectionFormItemComponent extends ConfigComponent {
|
|
|
6648
6771
|
break;
|
|
6649
6772
|
}
|
|
6650
6773
|
case InputType.TOGGLE: {
|
|
6651
|
-
const { ToggleInputComponent } = await import('./magmonium-one-toggle-
|
|
6774
|
+
const { ToggleInputComponent } = await import('./magmonium-one-toggle-CzrlUm9C.mjs');
|
|
6652
6775
|
this.createDynamicComponent(seq, ToggleInputComponent, [], true);
|
|
6653
6776
|
break;
|
|
6654
6777
|
}
|
|
@@ -6660,12 +6783,12 @@ class SectionFormItemComponent extends ConfigComponent {
|
|
|
6660
6783
|
break;
|
|
6661
6784
|
}
|
|
6662
6785
|
case InputType.PASSWORD: {
|
|
6663
|
-
const { PasswordInputComponent } = await import('./magmonium-one-password-
|
|
6786
|
+
const { PasswordInputComponent } = await import('./magmonium-one-password-GYSJXyp0.mjs');
|
|
6664
6787
|
this.createDynamicComponent(seq, PasswordInputComponent);
|
|
6665
6788
|
break;
|
|
6666
6789
|
}
|
|
6667
6790
|
case InputType.OTP: {
|
|
6668
|
-
const { OtpInputComponent } = await import('./magmonium-one-otp-
|
|
6791
|
+
const { OtpInputComponent } = await import('./magmonium-one-otp-Crc-7_tc.mjs');
|
|
6669
6792
|
this.createDynamicComponent(seq, OtpInputComponent);
|
|
6670
6793
|
break;
|
|
6671
6794
|
}
|
|
@@ -8110,28 +8233,31 @@ class MenuComponent {
|
|
|
8110
8233
|
const hide = this.hide();
|
|
8111
8234
|
const extra = this.extra();
|
|
8112
8235
|
const isAdmin = this.isAdmin();
|
|
8113
|
-
let result = [];
|
|
8114
|
-
if (back) {
|
|
8115
|
-
result = back.options ?? async ?? [];
|
|
8116
|
-
}
|
|
8117
|
-
else {
|
|
8118
|
-
result = async ?? config ?? [];
|
|
8119
|
-
}
|
|
8120
|
-
if (!isAdmin) {
|
|
8121
|
-
result = result.map((group) => group.filter((item) => !item.adminOnly));
|
|
8122
|
-
}
|
|
8123
|
-
if (hide?.length) {
|
|
8124
|
-
result = result.map((group) => group.filter((item) => !hide.includes(item.id)));
|
|
8125
|
-
}
|
|
8126
8236
|
const vRule = this.visibilityRule();
|
|
8127
8237
|
const data = this.extraData();
|
|
8128
|
-
|
|
8129
|
-
|
|
8130
|
-
|
|
8131
|
-
|
|
8132
|
-
|
|
8133
|
-
|
|
8134
|
-
|
|
8238
|
+
// Filtering recurses so a parent is judged by what survives under it: a row
|
|
8239
|
+
// whose every child was hidden would open an empty box, which reads as a
|
|
8240
|
+
// broken menu rather than an unavailable one. A `file` parent is exempt —
|
|
8241
|
+
// its options are fetched on drill and there is nothing here to count.
|
|
8242
|
+
const filterGroups = (groups) => groups
|
|
8243
|
+
.map((group) => group.filter((item) => {
|
|
8244
|
+
if (!isAdmin && item.adminOnly)
|
|
8245
|
+
return false;
|
|
8246
|
+
if (hide?.length && hide.includes(item.id))
|
|
8247
|
+
return false;
|
|
8248
|
+
if (vRule && !vRule(item.visibilityKey ?? item.id, data)) {
|
|
8249
|
+
return false;
|
|
8250
|
+
}
|
|
8251
|
+
if (item.options)
|
|
8252
|
+
return filterGroups(item.options).length > 0;
|
|
8253
|
+
return true;
|
|
8254
|
+
}))
|
|
8255
|
+
.filter((group) => group.length > 0);
|
|
8256
|
+
const source = back
|
|
8257
|
+
? back.options ?? async ?? []
|
|
8258
|
+
: async ?? config ?? [];
|
|
8259
|
+
const result = filterGroups(source);
|
|
8260
|
+
return extra?.length && !back ? [...result, extra] : result;
|
|
8135
8261
|
}, ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
|
|
8136
8262
|
isLoading = computed(() => this.#asyncOptions.isLoading(), ...(ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []));
|
|
8137
8263
|
// --- Handlers ---
|
|
@@ -8191,6 +8317,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
8191
8317
|
|
|
8192
8318
|
class ContextMenuBoxComponent {
|
|
8193
8319
|
options = input([], ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
|
|
8320
|
+
hide = input(...(ngDevMode ? [undefined, { debugName: "hide" }] : /* istanbul ignore next */ []));
|
|
8194
8321
|
file = input(...(ngDevMode ? [undefined, { debugName: "file" }] : /* istanbul ignore next */ []));
|
|
8195
8322
|
width = input('250px', ...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
|
|
8196
8323
|
height = input('auto', ...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
|
|
@@ -8203,12 +8330,12 @@ class ContextMenuBoxComponent {
|
|
|
8203
8330
|
this.action.emit(item);
|
|
8204
8331
|
};
|
|
8205
8332
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ContextMenuBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8206
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.9", type: ContextMenuBoxComponent, isStandalone: true, selector: "m-context-menu-box", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, file: { classPropertyName: "file", publicName: "file", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, isAdmin: { classPropertyName: "isAdmin", publicName: "isAdmin", isSignal: true, isRequired: false, transformFunction: null }, visibilityRule: { classPropertyName: "visibilityRule", publicName: "visibilityRule", isSignal: true, isRequired: false, transformFunction: null }, disableRule: { classPropertyName: "disableRule", publicName: "disableRule", isSignal: true, isRequired: false, transformFunction: null }, extraData: { classPropertyName: "extraData", publicName: "extraData", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { action: "action" }, ngImport: i0, template: "<div class=\"m-context-menu-box\" [style.width]=\"width()\" [style.max-height]=\"height()\">\n <m-menu\n [config]=\"options()\"\n [file]=\"file()\"\n [isAdmin]=\"isAdmin()\"\n [visibilityRule]=\"visibilityRule()\"\n [disableRule]=\"disableRule()\"\n [extraData]=\"extraData()\"\n (action)=\"emitAction($event)\"\n />\n</div>\n", 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-context-menu-box{overflow-y:auto;border-radius:0;border:1px solid var(--m-mm);background:var(--m-background);animation:context-menu-in .2s ease-out}@keyframes context-menu-in{0%{opacity:0;transform:scale(.95) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}:host-context(.align-bottom){display:block;width:100%!important;max-width:100%!important}:host-context(.align-bottom) .m-context-menu-box{width:100%!important;max-width:100%!important;max-height:70vh!important;border-left:none;border-right:none;border-bottom:none}\n"], dependencies: [{ kind: "component", type: MenuComponent, selector: "m-menu", inputs: ["config", "file", "root", "url", "extra", "hide", "hideLink", "isAdmin", "visibilityRule", "disableRule", "extraData"], outputs: ["action"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8333
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.9", type: ContextMenuBoxComponent, isStandalone: true, selector: "m-context-menu-box", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, hide: { classPropertyName: "hide", publicName: "hide", isSignal: true, isRequired: false, transformFunction: null }, file: { classPropertyName: "file", publicName: "file", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, isAdmin: { classPropertyName: "isAdmin", publicName: "isAdmin", isSignal: true, isRequired: false, transformFunction: null }, visibilityRule: { classPropertyName: "visibilityRule", publicName: "visibilityRule", isSignal: true, isRequired: false, transformFunction: null }, disableRule: { classPropertyName: "disableRule", publicName: "disableRule", isSignal: true, isRequired: false, transformFunction: null }, extraData: { classPropertyName: "extraData", publicName: "extraData", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { action: "action" }, ngImport: i0, template: "<div class=\"m-context-menu-box\" [style.width]=\"width()\" [style.max-height]=\"height()\">\n <m-menu\n [config]=\"options()\"\n [hide]=\"hide()\"\n [file]=\"file()\"\n [isAdmin]=\"isAdmin()\"\n [visibilityRule]=\"visibilityRule()\"\n [disableRule]=\"disableRule()\"\n [extraData]=\"extraData()\"\n (action)=\"emitAction($event)\"\n />\n</div>\n", 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-context-menu-box{overflow-y:auto;border-radius:0;border:1px solid var(--m-mm);background:var(--m-background);animation:context-menu-in .2s ease-out}@keyframes context-menu-in{0%{opacity:0;transform:scale(.95) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}:host-context(.align-bottom){display:block;width:100%!important;max-width:100%!important}:host-context(.align-bottom) .m-context-menu-box{width:100%!important;max-width:100%!important;max-height:70vh!important;border-left:none;border-right:none;border-bottom:none}\n"], dependencies: [{ kind: "component", type: MenuComponent, selector: "m-menu", inputs: ["config", "file", "root", "url", "extra", "hide", "hideLink", "isAdmin", "visibilityRule", "disableRule", "extraData"], outputs: ["action"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8207
8334
|
}
|
|
8208
8335
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ContextMenuBoxComponent, decorators: [{
|
|
8209
8336
|
type: Component,
|
|
8210
|
-
args: [{ selector: 'm-context-menu-box', imports: [MenuComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"m-context-menu-box\" [style.width]=\"width()\" [style.max-height]=\"height()\">\n <m-menu\n [config]=\"options()\"\n [file]=\"file()\"\n [isAdmin]=\"isAdmin()\"\n [visibilityRule]=\"visibilityRule()\"\n [disableRule]=\"disableRule()\"\n [extraData]=\"extraData()\"\n (action)=\"emitAction($event)\"\n />\n</div>\n", 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-context-menu-box{overflow-y:auto;border-radius:0;border:1px solid var(--m-mm);background:var(--m-background);animation:context-menu-in .2s ease-out}@keyframes context-menu-in{0%{opacity:0;transform:scale(.95) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}:host-context(.align-bottom){display:block;width:100%!important;max-width:100%!important}:host-context(.align-bottom) .m-context-menu-box{width:100%!important;max-width:100%!important;max-height:70vh!important;border-left:none;border-right:none;border-bottom:none}\n"] }]
|
|
8211
|
-
}], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], file: [{ type: i0.Input, args: [{ isSignal: true, alias: "file", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], isAdmin: [{ type: i0.Input, args: [{ isSignal: true, alias: "isAdmin", required: false }] }], action: [{ type: i0.Output, args: ["action"] }], visibilityRule: [{ type: i0.Input, args: [{ isSignal: true, alias: "visibilityRule", required: false }] }], disableRule: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableRule", required: false }] }], extraData: [{ type: i0.Input, args: [{ isSignal: true, alias: "extraData", required: false }] }] } });
|
|
8337
|
+
args: [{ selector: 'm-context-menu-box', imports: [MenuComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"m-context-menu-box\" [style.width]=\"width()\" [style.max-height]=\"height()\">\n <m-menu\n [config]=\"options()\"\n [hide]=\"hide()\"\n [file]=\"file()\"\n [isAdmin]=\"isAdmin()\"\n [visibilityRule]=\"visibilityRule()\"\n [disableRule]=\"disableRule()\"\n [extraData]=\"extraData()\"\n (action)=\"emitAction($event)\"\n />\n</div>\n", 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-context-menu-box{overflow-y:auto;border-radius:0;border:1px solid var(--m-mm);background:var(--m-background);animation:context-menu-in .2s ease-out}@keyframes context-menu-in{0%{opacity:0;transform:scale(.95) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}:host-context(.align-bottom){display:block;width:100%!important;max-width:100%!important}:host-context(.align-bottom) .m-context-menu-box{width:100%!important;max-width:100%!important;max-height:70vh!important;border-left:none;border-right:none;border-bottom:none}\n"] }]
|
|
8338
|
+
}], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], hide: [{ type: i0.Input, args: [{ isSignal: true, alias: "hide", required: false }] }], file: [{ type: i0.Input, args: [{ isSignal: true, alias: "file", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], isAdmin: [{ type: i0.Input, args: [{ isSignal: true, alias: "isAdmin", required: false }] }], action: [{ type: i0.Output, args: ["action"] }], visibilityRule: [{ type: i0.Input, args: [{ isSignal: true, alias: "visibilityRule", required: false }] }], disableRule: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableRule", required: false }] }], extraData: [{ type: i0.Input, args: [{ isSignal: true, alias: "extraData", required: false }] }] } });
|
|
8212
8339
|
|
|
8213
8340
|
class ContextMenuComponent extends ConfigComponent {
|
|
8214
8341
|
toggle = model(...(ngDevMode ? [undefined, { debugName: "toggle" }] : /* istanbul ignore next */ []));
|
|
@@ -8237,15 +8364,11 @@ class ContextMenuComponent extends ConfigComponent {
|
|
|
8237
8364
|
label: 'actions',
|
|
8238
8365
|
inverted: this.inverted() ?? this.contextMenuConfig().inverted,
|
|
8239
8366
|
}), ...(ngDevMode ? [{ debugName: "triggerButtonConfig" }] : /* istanbul ignore next */ []));
|
|
8240
|
-
|
|
8241
|
-
|
|
8242
|
-
|
|
8243
|
-
|
|
8244
|
-
|
|
8245
|
-
if (!exclude || !exclude.length)
|
|
8246
|
-
return options;
|
|
8247
|
-
return options.map((group) => group.filter((item) => !exclude.includes(item.id)));
|
|
8248
|
-
}, ...(ngDevMode ? [{ debugName: "contextMenuOptions" }] : /* istanbul ignore next */ []));
|
|
8367
|
+
// `exclude` is not applied here: a menu nests, and a filter run once over the
|
|
8368
|
+
// root groups cannot reach an item a layer down, nor one a `file` parent has
|
|
8369
|
+
// not fetched yet. It is handed to the menu as `hide` instead, which the menu
|
|
8370
|
+
// re-applies at whatever depth is on screen.
|
|
8371
|
+
contextMenuOptions = computed(() => this.contextMenuConfig().options ?? [], ...(ngDevMode ? [{ debugName: "contextMenuOptions" }] : /* istanbul ignore next */ []));
|
|
8249
8372
|
selectorConfig = computed(() => ({
|
|
8250
8373
|
component: ContextMenuBoxComponent,
|
|
8251
8374
|
base: 'm-context-menu',
|
|
@@ -8255,6 +8378,7 @@ class ContextMenuComponent extends ConfigComponent {
|
|
|
8255
8378
|
toggle: true,
|
|
8256
8379
|
bindings: [
|
|
8257
8380
|
inputBinding('options', this.contextMenuOptions),
|
|
8381
|
+
inputBinding('hide', this.exclude),
|
|
8258
8382
|
inputBinding('visibilityRule', this.visibilityRule),
|
|
8259
8383
|
inputBinding('disableRule', this.disableRule),
|
|
8260
8384
|
inputBinding('extraData', this.extraData),
|
|
@@ -15470,6 +15594,11 @@ const initialModalState = {
|
|
|
15470
15594
|
activePanel: undefined,
|
|
15471
15595
|
};
|
|
15472
15596
|
const ModalStore = signalStore({ providedIn: 'root' }, withState(initialModalState), withMethods((state, domService = inject(DomService), deviceService = inject(DeviceService)) => {
|
|
15597
|
+
// Every modal that has gone, by id. A modal is dismissed from two places —
|
|
15598
|
+
// its own close affordance and this store — and only one of those runs
|
|
15599
|
+
// through a ModalRef, so a caller waiting on an answer would otherwise wait
|
|
15600
|
+
// forever on the other.
|
|
15601
|
+
const closed = new Subject();
|
|
15473
15602
|
const modalComp = inject(MODAL_COMPONENT);
|
|
15474
15603
|
const panelComp = inject(PANEL_COMPONENT);
|
|
15475
15604
|
const confirmComp = inject(CONFIRM_COMPONENT);
|
|
@@ -15521,6 +15650,7 @@ const ModalStore = signalStore({ providedIn: 'root' }, withState(initialModalSta
|
|
|
15521
15650
|
? remaining[remaining.length - 1]
|
|
15522
15651
|
: undefined,
|
|
15523
15652
|
});
|
|
15653
|
+
closed.next(modalId);
|
|
15524
15654
|
};
|
|
15525
15655
|
/**
|
|
15526
15656
|
* The panel a dock request would displace: whatever currently holds the edge.
|
|
@@ -15657,26 +15787,69 @@ const ModalStore = signalStore({ providedIn: 'root' }, withState(initialModalSta
|
|
|
15657
15787
|
const cleanupPanelsOnClose = rxMethod(pipe(filter((panelMap) => !Object.keys(panelMap).length), tap(() => {
|
|
15658
15788
|
domService.cleanup(state.panelParentClassName());
|
|
15659
15789
|
})));
|
|
15660
|
-
|
|
15790
|
+
/**
|
|
15791
|
+
* The question as a value: subscribing asks it, and the single emission is
|
|
15792
|
+
* the answer — `true` for the commit, `false` for a refusal and for a
|
|
15793
|
+
* dismissal, which is a refusal by another route. Completes with that
|
|
15794
|
+
* emission, so a `switchMap` over it moves on rather than holding the
|
|
15795
|
+
* modal's answer open.
|
|
15796
|
+
*
|
|
15797
|
+
* Unsubscribing before it answers takes the modal away with it: the caller
|
|
15798
|
+
* that asked is gone, and a dialog nothing is waiting on is a dialog whose
|
|
15799
|
+
* answer lands nowhere.
|
|
15800
|
+
*/
|
|
15801
|
+
const ask = (opts) => new Observable((subscriber) => {
|
|
15661
15802
|
const modalRef = new ModalRef();
|
|
15662
|
-
|
|
15803
|
+
let settled = false;
|
|
15804
|
+
let id = '';
|
|
15805
|
+
const settle = (result, dismiss) => {
|
|
15806
|
+
if (settled)
|
|
15807
|
+
return;
|
|
15808
|
+
settled = true;
|
|
15809
|
+
watch.unsubscribe();
|
|
15810
|
+
if (dismiss)
|
|
15811
|
+
close(id);
|
|
15812
|
+
subscriber.next(result);
|
|
15813
|
+
subscriber.complete();
|
|
15814
|
+
};
|
|
15815
|
+
const watch = closed
|
|
15816
|
+
.pipe(filter((closedId) => closedId === id))
|
|
15817
|
+
.subscribe(() => settle(false, false));
|
|
15818
|
+
id = open({
|
|
15663
15819
|
component: confirmComp,
|
|
15664
15820
|
providers: [{ provide: MODAL_REF, useValue: modalRef }],
|
|
15665
15821
|
bindings: [
|
|
15666
15822
|
inputBinding('header', () => opts.header ?? ''),
|
|
15667
15823
|
inputBinding('body', () => opts.body ?? ''),
|
|
15824
|
+
inputBinding('params', () => opts.params ?? {}),
|
|
15668
15825
|
inputBinding('type', () => opts.type ?? 'info'),
|
|
15826
|
+
inputBinding('kind', () => opts.kind ?? 'yes'),
|
|
15827
|
+
inputBinding('confirmLabel', () => opts.confirmLabel ?? ''),
|
|
15828
|
+
inputBinding('cancelLabel', () => opts.cancelLabel ?? ''),
|
|
15669
15829
|
],
|
|
15670
15830
|
});
|
|
15671
|
-
modalRef.onClose((result) =>
|
|
15831
|
+
modalRef.onClose((result) => settle(!!result, true));
|
|
15832
|
+
return () => {
|
|
15833
|
+
if (settled)
|
|
15834
|
+
return;
|
|
15835
|
+
settled = true;
|
|
15836
|
+
watch.unsubscribe();
|
|
15837
|
+
close(id);
|
|
15838
|
+
};
|
|
15839
|
+
});
|
|
15840
|
+
// The callback form, kept for every caller drawn against it. One
|
|
15841
|
+
// implementation underneath: a refusal runs nothing, which is what an
|
|
15842
|
+
// `onConfirm` that never fires already meant.
|
|
15843
|
+
const confirm = (opts, onConfirm) => {
|
|
15844
|
+
ask(opts).subscribe((result) => {
|
|
15672
15845
|
if (result)
|
|
15673
15846
|
onConfirm();
|
|
15674
|
-
close(id);
|
|
15675
15847
|
});
|
|
15676
15848
|
};
|
|
15677
15849
|
return {
|
|
15678
15850
|
open,
|
|
15679
15851
|
close,
|
|
15852
|
+
ask,
|
|
15680
15853
|
confirm,
|
|
15681
15854
|
openPanel,
|
|
15682
15855
|
closePanel,
|
|
@@ -15700,10 +15873,12 @@ const computeIds = (id, ids) => {
|
|
|
15700
15873
|
};
|
|
15701
15874
|
const AuthStore = signalStore({ providedIn: 'root' }, withState(initialState$2), withProps(() => {
|
|
15702
15875
|
const userTabMap = inject(USER_TAB_MAP, { optional: true });
|
|
15703
|
-
|
|
15876
|
+
// No NavStore here. NavStore's own onInit fires `loadNav`, whose first
|
|
15877
|
+
// request runs mInterceptor -> injectAuthenticate -> inject(AuthStore),
|
|
15878
|
+
// so injecting NavStore from AuthStore closes a DI cycle (NG0200)
|
|
15879
|
+
// whichever of the two is constructed first. Nothing read the prop.
|
|
15704
15880
|
return {
|
|
15705
15881
|
hostUserTabs: (userTabMap ?? {}),
|
|
15706
|
-
navStore,
|
|
15707
15882
|
};
|
|
15708
15883
|
}), withComputed(({ identities, identity, otp, otpCounter, registerNewUser, resetPassword, showTerms, user, }) => ({
|
|
15709
15884
|
userId: computed(() => user()?.id),
|
|
@@ -16075,16 +16250,41 @@ function injectAuthenticate() {
|
|
|
16075
16250
|
class ConfirmComponent {
|
|
16076
16251
|
header = input('', ...(ngDevMode ? [{ debugName: "header" }] : /* istanbul ignore next */ []));
|
|
16077
16252
|
body = input('', ...(ngDevMode ? [{ debugName: "body" }] : /* istanbul ignore next */ []));
|
|
16253
|
+
/**
|
|
16254
|
+
* The MessageVariable values the two keys above name — a row's name or id the
|
|
16255
|
+
* asker knows and the message asks about. Values and never text: they reach
|
|
16256
|
+
* `TranslatePipe` as params rather than spliced into the key, so the message
|
|
16257
|
+
* still resolves per language. Empty is a message with no slots, which is
|
|
16258
|
+
* every confirmation drawn before this.
|
|
16259
|
+
*/
|
|
16260
|
+
params = input({}, ...(ngDevMode ? [{ debugName: "params" }] : /* istanbul ignore next */ []));
|
|
16078
16261
|
type = input('info', ...(ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []));
|
|
16262
|
+
/**
|
|
16263
|
+
* Whether the question can be refused. `yes` is an acknowledgement — the one
|
|
16264
|
+
* button commits and there is nothing else to press — and stays the default,
|
|
16265
|
+
* which is what every ConfirmComponent drawn before this was.
|
|
16266
|
+
*/
|
|
16267
|
+
kind = input('yes', ...(ngDevMode ? [{ debugName: "kind" }] : /* istanbul ignore next */ []));
|
|
16268
|
+
/**
|
|
16269
|
+
* The wording of each button, as a TranslationAsset key. Empty falls back to
|
|
16270
|
+
* the library's own — derived from `type` for the commit, `cancel` for the
|
|
16271
|
+
* refusal — so a caller that has nothing to say about the buttons says
|
|
16272
|
+
* nothing.
|
|
16273
|
+
*/
|
|
16274
|
+
confirmLabel = input('', ...(ngDevMode ? [{ debugName: "confirmLabel" }] : /* istanbul ignore next */ []));
|
|
16275
|
+
cancelLabel = input('', ...(ngDevMode ? [{ debugName: "cancelLabel" }] : /* istanbul ignore next */ []));
|
|
16079
16276
|
#modalRef = inject(MODAL_REF);
|
|
16080
|
-
|
|
16277
|
+
confirmText = computed(() => {
|
|
16278
|
+
if (this.confirmLabel())
|
|
16279
|
+
return this.confirmLabel();
|
|
16081
16280
|
switch (this.type()) {
|
|
16082
16281
|
case 'danger':
|
|
16083
16282
|
return 'delete';
|
|
16084
16283
|
default:
|
|
16085
16284
|
return 'okay';
|
|
16086
16285
|
}
|
|
16087
|
-
}, ...(ngDevMode ? [{ debugName: "
|
|
16286
|
+
}, ...(ngDevMode ? [{ debugName: "confirmText" }] : /* istanbul ignore next */ []));
|
|
16287
|
+
cancelText = computed(() => this.cancelLabel() || 'cancel', ...(ngDevMode ? [{ debugName: "cancelText" }] : /* istanbul ignore next */ []));
|
|
16088
16288
|
iconName = computed(() => {
|
|
16089
16289
|
switch (this.type()) {
|
|
16090
16290
|
case 'danger':
|
|
@@ -16100,26 +16300,39 @@ class ConfirmComponent {
|
|
|
16100
16300
|
accept() {
|
|
16101
16301
|
this.#modalRef.close(true);
|
|
16102
16302
|
}
|
|
16303
|
+
// The refusal is a result like any other, so it closes with `false` rather
|
|
16304
|
+
// than dismissing: a caller waiting on the answer gets one either way.
|
|
16305
|
+
decline() {
|
|
16306
|
+
this.#modalRef.close(false);
|
|
16307
|
+
}
|
|
16103
16308
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ConfirmComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16104
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: ConfirmComponent, isStandalone: true, selector: "m-confirm", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, body: { classPropertyName: "body", publicName: "body", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
16309
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: ConfirmComponent, isStandalone: true, selector: "m-confirm", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, body: { classPropertyName: "body", publicName: "body", isSignal: true, isRequired: false, transformFunction: null }, params: { classPropertyName: "params", publicName: "params", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, kind: { classPropertyName: "kind", publicName: "kind", isSignal: true, isRequired: false, transformFunction: null }, confirmLabel: { classPropertyName: "confirmLabel", publicName: "confirmLabel", isSignal: true, isRequired: false, transformFunction: null }, cancelLabel: { classPropertyName: "cancelLabel", publicName: "cancelLabel", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
16105
16310
|
<div class="confirm confirm--{{ type() }}">
|
|
16106
16311
|
<div class="confirm__header">
|
|
16107
16312
|
<div class="confirm__icon">
|
|
16108
16313
|
<m-icon [name]="iconName()" />
|
|
16109
16314
|
</div>
|
|
16110
16315
|
@if (header()) {
|
|
16111
|
-
|
|
16316
|
+
<!-- The heading takes the key and its values rather than projected
|
|
16317
|
+
text: m-header translates its own label, and a MessageVariable
|
|
16318
|
+
fills the same way it does everywhere else. -->
|
|
16319
|
+
<m-header [level]="3" [label]="header()" [params]="params()" />
|
|
16112
16320
|
}
|
|
16113
16321
|
</div>
|
|
16114
16322
|
|
|
16115
16323
|
<div class="confirm__content">
|
|
16116
16324
|
@if (body()) {
|
|
16117
|
-
<p class="confirm__body" [innerHTML]="body() | translate"></p>
|
|
16325
|
+
<p class="confirm__body" [innerHTML]="body() | translate: params()"></p>
|
|
16118
16326
|
}
|
|
16119
16327
|
</div>
|
|
16120
16328
|
|
|
16121
16329
|
<div class="confirm__actions">
|
|
16122
|
-
|
|
16330
|
+
@if (kind() === 'yes-no') {
|
|
16331
|
+
<!-- asset: buttons/confirm_cancel.yml -->
|
|
16332
|
+
<m-one-button name="confirm_cancel" [label]="cancelText()" (clicked)="decline()" />
|
|
16333
|
+
}
|
|
16334
|
+
<!-- asset: buttons/okay.yml -->
|
|
16335
|
+
<m-one-button name="okay" [label]="confirmText()" (clicked)="accept()" />
|
|
16123
16336
|
</div>
|
|
16124
16337
|
</div>
|
|
16125
16338
|
`, 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)}}.confirm{display:flex;flex-direction:column;min-width:320px;max-width:440px;padding:2.5rem;background:var(--m-backdrop-modal, rgba(255, 255, 255, .85));backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:0;position:relative;overflow:hidden}.confirm__header{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.9375rem;margin-bottom:1.5rem}.confirm__icon{width:64px;height:64px;border-radius:1.6rem;display:flex;align-items:center;justify-content:center;font-size:2rem;background:var(--m-backdrop-mm, rgba(65, 105, 225, .1));color:var(--m-mm, #4169e1)}.confirm__icon .m-icon{width:32px;height:32px}.confirm__title{margin:0;font-size:1.375rem;font-weight:700;color:var(--m-text-900);letter-spacing:-.02em}.confirm__content{text-align:center;margin-bottom:2rem}.confirm__body{margin:0;font-size:1rem;line-height:1.6;color:var(--m-text-600)}.confirm__actions{width:100%;margin-top:auto;display:flex;justify-content:center;gap:1rem}.confirm--danger .confirm__icon{background:var(--m-backdrop-error, rgba(235, 25, 26, .1));color:var(--m-error, #EB191A)}.confirm--warning .confirm__icon{background:var(--m-backdrop-warning, rgba(247, 122, 2, .1));color:var(--m-warning, #F77A02)}.confirm--success .confirm__icon{background:var(--m-backdrop-success, rgba(109, 168, 47, .1));color:var(--m-success, #6da82f)}.confirm--info .confirm__icon{background:var(--m-info-lite, rgba(3, 102, 214, .1));color:var(--m-info, #0366d6)}\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: IconComponent, selector: "m-icon, m-one-icon", inputs: ["config", "name", "color", "size", "one", "baseUrl", "remote"], outputs: ["configChange"] }, { kind: "component", type: HeaderComponent$1, selector: "m-header", inputs: ["level", "label", "actionButton", "actionLabel", "noTranslate", "params"], outputs: ["actionClick"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
@@ -16133,22 +16346,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
16133
16346
|
<m-icon [name]="iconName()" />
|
|
16134
16347
|
</div>
|
|
16135
16348
|
@if (header()) {
|
|
16136
|
-
|
|
16349
|
+
<!-- The heading takes the key and its values rather than projected
|
|
16350
|
+
text: m-header translates its own label, and a MessageVariable
|
|
16351
|
+
fills the same way it does everywhere else. -->
|
|
16352
|
+
<m-header [level]="3" [label]="header()" [params]="params()" />
|
|
16137
16353
|
}
|
|
16138
16354
|
</div>
|
|
16139
16355
|
|
|
16140
16356
|
<div class="confirm__content">
|
|
16141
16357
|
@if (body()) {
|
|
16142
|
-
<p class="confirm__body" [innerHTML]="body() | translate"></p>
|
|
16358
|
+
<p class="confirm__body" [innerHTML]="body() | translate: params()"></p>
|
|
16143
16359
|
}
|
|
16144
16360
|
</div>
|
|
16145
16361
|
|
|
16146
16362
|
<div class="confirm__actions">
|
|
16147
|
-
|
|
16363
|
+
@if (kind() === 'yes-no') {
|
|
16364
|
+
<!-- asset: buttons/confirm_cancel.yml -->
|
|
16365
|
+
<m-one-button name="confirm_cancel" [label]="cancelText()" (clicked)="decline()" />
|
|
16366
|
+
}
|
|
16367
|
+
<!-- asset: buttons/okay.yml -->
|
|
16368
|
+
<m-one-button name="okay" [label]="confirmText()" (clicked)="accept()" />
|
|
16148
16369
|
</div>
|
|
16149
16370
|
</div>
|
|
16150
16371
|
`, 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)}}.confirm{display:flex;flex-direction:column;min-width:320px;max-width:440px;padding:2.5rem;background:var(--m-backdrop-modal, rgba(255, 255, 255, .85));backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:0;position:relative;overflow:hidden}.confirm__header{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.9375rem;margin-bottom:1.5rem}.confirm__icon{width:64px;height:64px;border-radius:1.6rem;display:flex;align-items:center;justify-content:center;font-size:2rem;background:var(--m-backdrop-mm, rgba(65, 105, 225, .1));color:var(--m-mm, #4169e1)}.confirm__icon .m-icon{width:32px;height:32px}.confirm__title{margin:0;font-size:1.375rem;font-weight:700;color:var(--m-text-900);letter-spacing:-.02em}.confirm__content{text-align:center;margin-bottom:2rem}.confirm__body{margin:0;font-size:1rem;line-height:1.6;color:var(--m-text-600)}.confirm__actions{width:100%;margin-top:auto;display:flex;justify-content:center;gap:1rem}.confirm--danger .confirm__icon{background:var(--m-backdrop-error, rgba(235, 25, 26, .1));color:var(--m-error, #EB191A)}.confirm--warning .confirm__icon{background:var(--m-backdrop-warning, rgba(247, 122, 2, .1));color:var(--m-warning, #F77A02)}.confirm--success .confirm__icon{background:var(--m-backdrop-success, rgba(109, 168, 47, .1));color:var(--m-success, #6da82f)}.confirm--info .confirm__icon{background:var(--m-info-lite, rgba(3, 102, 214, .1));color:var(--m-info, #0366d6)}\n"] }]
|
|
16151
|
-
}], propDecorators: { header: [{ type: i0.Input, args: [{ isSignal: true, alias: "header", required: false }] }], body: [{ type: i0.Input, args: [{ isSignal: true, alias: "body", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }] } });
|
|
16372
|
+
}], propDecorators: { header: [{ type: i0.Input, args: [{ isSignal: true, alias: "header", required: false }] }], body: [{ type: i0.Input, args: [{ isSignal: true, alias: "body", required: false }] }], params: [{ type: i0.Input, args: [{ isSignal: true, alias: "params", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], kind: [{ type: i0.Input, args: [{ isSignal: true, alias: "kind", required: false }] }], confirmLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "confirmLabel", required: false }] }], cancelLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "cancelLabel", required: false }] }] } });
|
|
16152
16373
|
|
|
16153
16374
|
function injectInstallApp() {
|
|
16154
16375
|
const modalStore = inject(ModalStore);
|
|
@@ -20068,7 +20289,7 @@ class WrapperInputComponent extends ConfigComponent {
|
|
|
20068
20289
|
break;
|
|
20069
20290
|
}
|
|
20070
20291
|
case InputType.TOGGLE: {
|
|
20071
|
-
const { ToggleInputComponent } = await import('./magmonium-one-toggle-
|
|
20292
|
+
const { ToggleInputComponent } = await import('./magmonium-one-toggle-CzrlUm9C.mjs');
|
|
20072
20293
|
this.createDynamicComponent(seq, ToggleInputComponent, [], true);
|
|
20073
20294
|
break;
|
|
20074
20295
|
}
|
|
@@ -20080,12 +20301,12 @@ class WrapperInputComponent extends ConfigComponent {
|
|
|
20080
20301
|
break;
|
|
20081
20302
|
}
|
|
20082
20303
|
case InputType.PASSWORD: {
|
|
20083
|
-
const { PasswordInputComponent } = await import('./magmonium-one-password-
|
|
20304
|
+
const { PasswordInputComponent } = await import('./magmonium-one-password-GYSJXyp0.mjs');
|
|
20084
20305
|
this.createDynamicComponent(seq, PasswordInputComponent);
|
|
20085
20306
|
break;
|
|
20086
20307
|
}
|
|
20087
20308
|
case InputType.OTP: {
|
|
20088
|
-
const { OtpInputComponent } = await import('./magmonium-one-otp-
|
|
20309
|
+
const { OtpInputComponent } = await import('./magmonium-one-otp-Crc-7_tc.mjs');
|
|
20089
20310
|
this.createDynamicComponent(seq, OtpInputComponent);
|
|
20090
20311
|
break;
|
|
20091
20312
|
}
|
|
@@ -34304,5 +34525,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
34304
34525
|
* Generated bundle index. Do not edit.
|
|
34305
34526
|
*/
|
|
34306
34527
|
|
|
34307
|
-
export {
|
|
34308
|
-
//# sourceMappingURL=magmonium-one-magmonium-one-
|
|
34528
|
+
export { DEFAULT_NAV_PARAM as $, ACCESS_DOMAINS as A, BaseInputComponent as B, COMPONENT_INPUT_REGISTRY as C, CardComponent as D, CardWrapperComponent as E, CarouselComponent as F, ChartComponent as G, CheckboxInputComponent as H, IS_DESIGN_MODE as I, ClearableInputComponent as J, ColComponent as K, LabelComponent as L, ColorPickerInputComponent as M, CommentItemComponent as N, CommentsApiService as O, CommentsComponent as P, CommentsStore as Q, ComponentInputComponent as R, ComponentStepperComponent as S, TranslatePipe as T, ConfigComponent as U, ConfirmComponent as V, ContextMenuComponent as W, CustomIconClass as X, CustomIconEditComponent as Y, DEFAULT_FILTER_RANGE_MODE as Z, DEFAULT_FILTER_VARIANT as _, BaseTextInputComponent as a, NAV_DEFAULT_MURL as a$, DEFAULT_NAV_SEGMENT as a0, DEFAULT_SIZE as a1, DashboardCardComponent as a2, DateInputComponent as a3, DatePickerComponent as a4, DeviceService as a5, DomService as a6, Domain as a7, DotGridComponent as a8, DragListDirective as a9, InputType as aA, InstrumentScoreComponent as aB, InterceptorObservables as aC, JumbotronComponent as aD, KeyValueComponent as aE, LAYOUT_ASSET_FOLDER as aF, LOGIN_COMPONENT as aG, LOGIN_STORE as aH, LanguageComponent as aI, LogoComponent as aJ, MAG_SOCKET_EVENT as aK, MHeroColorDirective as aL, MHeroComponent as aM, MODAL_REF as aN, MODAL_STORE_REF as aO, MRefDirective as aP, MStepComponent as aQ, MURL_PARAM as aR, MURL_SEP as aS, ManifestEnrichmentService as aT, MenuComponent as aU, ModalDirective as aV, ModalRef as aW, ModalStore as aX, MoneyPipe as aY, MultiRangeInputComponent as aZ, MurlUrlSerializer as a_, DragListItemDirective as aa, DraggableDirective as ab, DropdownInputComponent as ac, FILTER_GROUP_CONTEXT as ad, FILTER_RANGE_MODES as ae, FILTER_VARIANTS as af, FLEX_VARIANTS as ag, FOLDER_PICK_LISTENER as ah, FORM_ASSET_FOLDER as ai, FileService as aj, FileUploadDirective as ak, FileUploadInputComponent as al, FlexComponent as am, FlexItemComponent as an, FormGroupComponent as ao, FrameComponent as ap, FreezeService as aq, GRID_BREAKPOINTS as ar, GetNavService as as, HeaderComponent$1 as at, HighlightDirective as au, HttpService as av, ICON_SOURCE as aw, IS_SIDE_PANEL as ax, IconComponent as ay, ImgComponent as az, TextOutputComponent as b, SectionBackComponent as b$, NAV_ID_SEP as b0, NAV_MAIN_BUTTONS as b1, NAV_SEGMENT_RE as b2, NAV_STORE_REF as b3, NAV_WC_COMPONENTS as b4, NAV_WIDGET_MAP as b5, NavComponent as b6, NavDetailsComponent as b7, NavHeaderComponent as b8, NavMenuComponent as b9, PositionDirective as bA, PwaInstallComponent as bB, ROOT_NAV$1 as bC, RadioGroupComponent as bD, RadioInputComponent as bE, RangeInputComponent as bF, RatingInputComponent as bG, ReactiveElementComponent as bH, RemoteComponent as bI, RemoteLoaderService as bJ, ResizeElementComponent as bK, RouteContainer as bL, RowComponent as bM, SEARCH_QUERY as bN, SEARCH_RESULTS_EVENT as bO, SECTION_ACCORDION_GROUP as bP, SECTION_FORM_CONTEXT as bQ, SHARED_ICONS as bR, SIZE_CONTEXT as bS, ScoreComponent as bT, ScrollComponent as bU, ScrollService as bV, SearchPanelComponent as bW, SearchStore as bX, SearchUserPanelComponent as bY, SectionAccordionDirective as bZ, SectionAccordionGroupDirective as b_, NavStore as ba, NavTrailComponent as bb, NothingComponent as bc, NotificationElementComponent as bd, NotificationGroupComponent as be, NotificationPopupComponent as bf, NotificationService as bg, NotificationStore as bh, NotificationType as bi, NotificationWidgetComponent as bj, ONE_ASSET_BASE_URL as bk, OPTIONS_SOURCE as bl, OVERLAY_WIDGETS as bm, OneApp as bn, OptionsSourceDirective as bo, OverlayBodyComponent as bp, OverlayRef as bq, OverlayService as br, PLATFORM_BUTTON_NAV_IDS as bs, PLATFORM_EXTENSIBLE_NAV_IDS as bt, PLATFORM_NAV_MAP as bu, PLATFORM_ROOT_CHILDREN as bv, PaginationComponent as bw, PanelComponent as bx, PercentagePipe as by, PlaygroundComponent as bz, ButtonComponent as c, USER_TAB_MAP as c$, SectionBadgesComponent as c0, SectionButtonGroupComponent as c1, SectionCardComponent as c2, SectionCarouselComponent as c3, SectionComponent as c4, SectionFilterComponent as c5, SectionFilterGroupComponent as c6, SectionFilterMenuComponent as c7, SectionFilterPanelComponent as c8, SectionFilterRangePanelComponent as c9, StrokeLinecap as cA, StrokeLinejoin as cB, SummaryComponent as cC, SvgGeneratorComponent as cD, SvgGeneratorService as cE, SvgService as cF, TOTAL_COLUMNS as cG, TRANSLATION_SOURCE as cH, TableComponent as cI, TechnicalMeterComponent as cJ, TextInputComponent as cK, TextareaInputComponent as cL, ThemeComponent as cM, ThemeDataService as cN, ThemeService as cO, ThemeStore as cP, TimeAgoPipe as cQ, TimelineComponent as cR, ToggleButtonComponent as cS, ToggleInputComponent as cT, ToggleRadioInputComponent as cU, ToolTipDirective as cV, TooltipComponent as cW, TranslateService as cX, TreeGridComponent as cY, URL_SEP as cZ, USER_STORE_REF as c_, SectionFooterComponent as ca, SectionFormComponent as cb, SectionFormItemComponent as cc, SectionHeaderComponent as cd, SectionHeroComponent as ce, SectionPaginationComponent as cf, SectionSearchComponent as cg, SectionStepperComponent as ch, SectionTabsComponent as ci, SectionToggleComponent as cj, SectionToggleItemDirective as ck, SelectableCardInputComponent as cl, SelectorDirective as cm, SettingsSearchBarComponent as cn, SettingsSearchService as co, ShapeComponent as cp, SharedStoreRegistry as cq, SidePanelDirective as cr, Size as cs, SocketStore as ct, SortComponent as cu, StatComponent as cv, StepComponent as cw, StepperComponent as cx, StepsComponent as cy, StorageService as cz, APP_CONTEXT_REF as d, hasErrorComputed as d$, UlComponent as d0, UniverseComponent as d1, UserApiService as d2, UserAvatarComponent as d3, UserComponent as d4, UserNavComponent as d5, UserSettingsComponent as d6, UserStore as d7, WC_ROUTE_CHANGED_EVENT as d8, WC_SEARCH_GROUPS as d9, emailValidation as dA, evaluate as dB, evaluateBool as dC, filterHoldsList as dD, filterHoldsOneBound as dE, filterHoldsOptions as dF, filterHoldsRange as dG, filterList as dH, filterOne as dI, filterPanelOf as dJ, filterPanelWidth as dK, filterRange as dL, filterTreeGridRows as dM, filterValueList as dN, filterValues as dO, flattenTreeGridRows as dP, formatBadgeCount as dQ, fullName as dR, generateClipPath as dS, generateTransform as dT, getClassList as dU, getProperty as dV, getScrollParent as dW, getTierFromPreviewPath as dX, getTreeGridRow as dY, getUniqueId as dZ, getValue as d_, WIN_USER_TAB_HOOK as da, WIN_USER_TAB_KEY as db, WatermarkComponent as dc, WcRouterStore as dd, WrapperInputComponent as de, anchorNavId as df, applyColorsToElement as dg, bootstrapMagApp as dh, bootstrapPwaInstall as di, buildWcBaseUrl as dj, calculateLuminance as dk, calculateRanks as dl, cellText as dm, checkFilterCondition as dn, childNavId as dp, classListSignal as dq, coerceSize as dr, cornerEdge as ds, cornerSide as dt, createMap as du, createPlatformNavMap as dv, deriveAvatarGradient as dw, deriveContrastColor as dx, deriveOppositeColor as dy, derivePropertyName as dz, ASSET_BASE_URL as e, provideNavWidgets as e$, hexToRgb as e0, hslToRgb$1 as e1, initMagmoniumApp as e2, initialNotificationState as e3, initialState$2 as e4, initials as e5, injectAuthenticate as e6, injectInstallApp as e7, injectParentSize as e8, injectScrollSticky as e9, mergeUniqueWith as eA, minAgeValidation as eB, minLengthValidation as eC, minValidation as eD, miniMarkToHtml as eE, navIdChain as eF, navIdFor as eG, navIdSegment as eH, navIdToRoutePath as eI, navIdToSegments as eJ, navParamOf as eK, navToId as eL, parentNavId as eM, parseAddress as eN, parseColor as eO, parsePatternNames as eP, patternValidation as eQ, patternsValidation as eR, platformNavWidgets as eS, privateGuard as eT, processImageToSvg as eU, provideAppContext as eV, provideMagAppConfig as eW, provideMagWcConfig as eX, provideMagWcRoutes as eY, provideModalComponents as eZ, provideMurlUrlSerializer as e_, isButtonName as ea, isCancelledComputed as eb, isExtensiblePlatformNavId as ec, isJson as ed, isLoadingComputed as ee, isLocalhost as ef, isNavMenuConfig as eg, isNavRowsConfig as eh, isPlatformNavId as ei, isSize as ej, isTierPreview as ek, isUrlLocalhost as el, isValidNavId as em, isValidNavSegment as en, isWebComponent as eo, linkToId as ep, linkToNav as eq, loadingActions as er, mInterceptor as es, manualValidation as et, matchFieldValidation as eu, maxLengthValidation as ev, maxValidation as ew, mergePlatformNav as ex, mergeUnique as ey, mergeUniqueBy as ez, AccordionBodyDirective as f, provideOverlayWidgets as f0, providePlatformNavWidgets as f1, provideSearch as f2, provideSizeContext as f3, provideUserTabs as f4, publicGuard as f5, readFieldPatterns as f6, renderAddress as f7, requiredValidation as f8, resolveConfigAsset as f9, resolveIconSize as fa, resolvePallet as fb, resolvePatternRules as fc, resolveSize as fd, rgbToHex as fe, rgbToHsl as ff, rowHasChildren as fg, samePatterns as fh, segmentsToNavId as fi, setProperty as fj, setTreeGridChildren as fk, settingsWidgets as fl, shouldShowBadge as fm, splitNavId as fn, splitOnMatch as fo, stringToColor as fp, toAttrBool as fq, toAttrNumber as fr, toCssLength as fs, toHostNavId as ft, toLength$1 as fu, toLocalNavId as fv, toggleTreeGridRow as fw, unfetchedPlatformNav as fx, urlValidation as fy, AccordionComponent as g, AccordionGroupComponent as h, ActionComponent as i, AnimatedGraphsComponent as j, AppCardComponent as k, AppRelationType as l, AppTileComponent as m, AssetStore as n, AssetUrlPipe as o, Assets as p, AuthActivityPageComponent as q, AuthApiService as r, AuthStore as s, AutosizeDirective as t, BadgeComponent as u, BandingComponent as v, BaseArrayInputComponent as w, BaseRootWebComponent as x, BaseWebComponent as y, ButtonGroupComponent as z };
|
|
34529
|
+
//# sourceMappingURL=magmonium-one-magmonium-one-1LRvvkZo.mjs.map
|