@magmonium/one 0.4.42 → 0.4.44
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-attribute-value-DCTXt4Sr.mjs → magmonium-one-attribute-value-C1lqou2L.mjs} +3 -3
- package/fesm2022/{magmonium-one-attribute-value-DCTXt4Sr.mjs.map → magmonium-one-attribute-value-C1lqou2L.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-base-checkbox-BNQAkyYU.mjs → magmonium-one-base-checkbox-CIxAiA4Q.mjs} +2 -2
- package/fesm2022/{magmonium-one-base-checkbox-BNQAkyYU.mjs.map → magmonium-one-base-checkbox-CIxAiA4Q.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-base-dropdown-CcZ0lBQv.mjs → magmonium-one-base-dropdown-XpTWe4Ii.mjs} +10 -10
- package/fesm2022/{magmonium-one-base-dropdown-CcZ0lBQv.mjs.map → magmonium-one-base-dropdown-XpTWe4Ii.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-base-input-BTxhUtYO.mjs → magmonium-one-base-input-C1Ek0Ezm.mjs} +2 -2
- package/fesm2022/{magmonium-one-base-input-BTxhUtYO.mjs.map → magmonium-one-base-input-C1Ek0Ezm.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-base-text-BCSqKmVs.mjs → magmonium-one-base-text-Di2V2ojp.mjs} +2 -2
- package/fesm2022/{magmonium-one-base-text-BCSqKmVs.mjs.map → magmonium-one-base-text-Di2V2ojp.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-button-BZQOf-Pm.mjs → magmonium-one-button-DZ4wCJgb.mjs} +7 -7
- package/fesm2022/{magmonium-one-button-BZQOf-Pm.mjs.map → magmonium-one-button-DZ4wCJgb.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-checkbox-D5-5WhJ-.mjs → magmonium-one-checkbox-R-hPZrCa.mjs} +5 -5
- package/fesm2022/{magmonium-one-checkbox-D5-5WhJ-.mjs.map → magmonium-one-checkbox-R-hPZrCa.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-color-utl-D86GGpz5.mjs → magmonium-one-color-utl-DI5p24iQ.mjs} +209 -6
- package/fesm2022/magmonium-one-color-utl-DI5p24iQ.mjs.map +1 -0
- package/fesm2022/{magmonium-one-directives-DePukAj8.mjs → magmonium-one-directives-B93p5bAL.mjs} +4 -4
- package/fesm2022/{magmonium-one-directives-DePukAj8.mjs.map → magmonium-one-directives-B93p5bAL.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-group-Dl2bp-y-.mjs → magmonium-one-group-B7YeUd1u.mjs} +7 -7
- package/fesm2022/{magmonium-one-group-Dl2bp-y-.mjs.map → magmonium-one-group-B7YeUd1u.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-header-DhK9NuZW.mjs → magmonium-one-header-DUiBhPUP.mjs} +4 -4
- package/fesm2022/{magmonium-one-header-DhK9NuZW.mjs.map → magmonium-one-header-DUiBhPUP.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-icon-BgbtOdMv.mjs → magmonium-one-icon-C3jwzbb2.mjs} +13 -165
- package/fesm2022/magmonium-one-icon-C3jwzbb2.mjs.map +1 -0
- package/fesm2022/{magmonium-one-image-editor-oGxg59hV.mjs → magmonium-one-image-editor-BRTk8i4O.mjs} +4 -4
- package/fesm2022/{magmonium-one-image-editor-oGxg59hV.mjs.map → magmonium-one-image-editor-BRTk8i4O.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-label-DjvJthAB.mjs → magmonium-one-label-D_rU82nD.mjs} +2 -2
- package/fesm2022/{magmonium-one-label-DjvJthAB.mjs.map → magmonium-one-label-D_rU82nD.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-m-ref-C8c4Vf1G.mjs → magmonium-one-m-ref-CEms7B6-.mjs} +2 -2
- package/fesm2022/{magmonium-one-m-ref-C8c4Vf1G.mjs.map → magmonium-one-m-ref-CEms7B6-.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-menu-bI7lVUYI.mjs → magmonium-one-menu-cO34OcJc.mjs} +6 -6
- package/fesm2022/{magmonium-one-menu-bI7lVUYI.mjs.map → magmonium-one-menu-cO34OcJc.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-multi-range-o57TiVJU.mjs → magmonium-one-multi-range-Bq3_3NHg.mjs} +3 -3
- package/fesm2022/{magmonium-one-multi-range-o57TiVJU.mjs.map → magmonium-one-multi-range-Bq3_3NHg.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-options-asset-EVsv0DL7.mjs → magmonium-one-options-asset-BMd7W0Mk.mjs} +2 -2
- package/fesm2022/{magmonium-one-options-asset-EVsv0DL7.mjs.map → magmonium-one-options-asset-BMd7W0Mk.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-otp-CE4L1RcG.mjs → magmonium-one-otp-V2tFztLx.mjs} +5 -5
- package/fesm2022/{magmonium-one-otp-CE4L1RcG.mjs.map → magmonium-one-otp-V2tFztLx.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-password-BIs_YxJ5.mjs → magmonium-one-password-IdllPMUw.mjs} +6 -6
- package/fesm2022/{magmonium-one-password-BIs_YxJ5.mjs.map → magmonium-one-password-IdllPMUw.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-radio-C2wOB_Nb.mjs → magmonium-one-radio-BAL3-3j5.mjs} +3 -3
- package/fesm2022/{magmonium-one-radio-C2wOB_Nb.mjs.map → magmonium-one-radio-BAL3-3j5.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-range-rgDe4O8u.mjs → magmonium-one-range-Cf7yUnhN.mjs} +4 -4
- package/fesm2022/{magmonium-one-range-rgDe4O8u.mjs.map → magmonium-one-range-Cf7yUnhN.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-selector-DeRIUUBA.mjs → magmonium-one-selector-DAEI_0JX.mjs} +4 -4
- package/fesm2022/{magmonium-one-selector-DeRIUUBA.mjs.map → magmonium-one-selector-DAEI_0JX.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-size-converter-C5fG_dgw.mjs → magmonium-one-size-converter-BOBD8nHy.mjs} +8 -1
- package/fesm2022/magmonium-one-size-converter-BOBD8nHy.mjs.map +1 -0
- package/fesm2022/{magmonium-one-text-BvXdAX0i.mjs → magmonium-one-text-BnTkYLJe.mjs} +6 -6
- package/fesm2022/{magmonium-one-text-BvXdAX0i.mjs.map → magmonium-one-text-BnTkYLJe.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-text-output-Ci93Hi9Y.mjs → magmonium-one-text-output-BZU61QIF.mjs} +4 -4
- package/fesm2022/{magmonium-one-text-output-Ci93Hi9Y.mjs.map → magmonium-one-text-output-BZU61QIF.mjs.map} +1 -1
- package/fesm2022/magmonium-one-theme-DYvNIWmo.mjs +1 -0
- package/fesm2022/{magmonium-one-toggle-BTK2lzqA.mjs → magmonium-one-toggle-V_YnZXx5.mjs} +3 -3
- package/fesm2022/{magmonium-one-toggle-BTK2lzqA.mjs.map → magmonium-one-toggle-V_YnZXx5.mjs.map} +1 -1
- package/fesm2022/magmonium-one.mjs +669 -234
- package/fesm2022/magmonium-one.mjs.map +1 -1
- package/package.json +1 -1
- package/types/magmonium-one.d.ts +171 -8
- package/fesm2022/magmonium-one-color-utl-D86GGpz5.mjs.map +0 -1
- package/fesm2022/magmonium-one-icon-BgbtOdMv.mjs.map +0 -1
- package/fesm2022/magmonium-one-size-converter-C5fG_dgw.mjs.map +0 -1
- package/fesm2022/magmonium-one-theme-CT4cWpe7.mjs +0 -1
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
import { t as __exportAll } from "./magmonium-one-rolldown-runtime-DpJrqANO.mjs";
|
|
2
|
-
import { $ as WC_BUNDLE, A as isUrlLocalhost, B as IS_DESIGN_MODE, C as setWcLocalPort, D as getTierFromPreviewPath, E as wcTierOf, F as AppAvailability, G as MODAL_STORE_REF, H as LOADING_ACTIONS_REF, I as AppRelationType, J as OPTIONS_SOURCE, K as NAV_STORE_REF, L as COMPONENT_INPUT_REGISTRY, M as APP_CONTEXT_REF, N as APP_LINK, O as isLocalhost, P as ASSET_BASE_URL, Q as USER_STORE_REF, R as FOLDER_PICK_LISTENER, S as recordDefinedWcTier, T as wcLocalBaseOf, U as LOGIN_COMPONENT, V as IS_SIDE_PANEL, W as LOGIN_STORE, X as SEARCH_RESULTS_EVENT, Y as SEARCH_QUERY, Z as TRANSLATION_SOURCE, _ as ACCESS_DOMAINS, a as resolveSpacing, at as Size, b as definedWcBundleOf, c as TranslatePipe, d as browserLocale, et as WC_SEARCH_GROUPS, f as miniMarkToHtml, g as isJson, h as StorageService, i as resolveSize, it as DEFAULT_SIZE, j as isWebComponent, k as isTierPreview, l as TranslateService, m as SharedStoreRegistry, n as isSize, nt as LAYOUT_ASSET_FOLDER, o as toCssLength, p as AssetStore, q as ONE_ASSET_BASE_URL, r as resolveIconSize, rt as Assets, s as toLength, t as coerceSize, tt as FORM_ASSET_FOLDER, u as BrowserLocaleService, v as HttpService, w as setWcTier, x as definedWcTierOf, y as buildWcBaseUrl, z as ICON_SOURCE } from "./magmonium-one-size-converter-
|
|
3
|
-
import { a as OverlayService, c as DeviceService, i as OverlayRef, n as Direction, o as ScrollService, r as ThemeService, s as DomService, t as SelectorDirective } from "./magmonium-one-selector-
|
|
2
|
+
import { $ as WC_BUNDLE, A as isUrlLocalhost, B as IS_DESIGN_MODE, C as setWcLocalPort, D as getTierFromPreviewPath, E as wcTierOf, F as AppAvailability, G as MODAL_STORE_REF, H as LOADING_ACTIONS_REF, I as AppRelationType, J as OPTIONS_SOURCE, K as NAV_STORE_REF, L as COMPONENT_INPUT_REGISTRY, M as APP_CONTEXT_REF, N as APP_LINK, O as isLocalhost, P as ASSET_BASE_URL, Q as USER_STORE_REF, R as FOLDER_PICK_LISTENER, S as recordDefinedWcTier, T as wcLocalBaseOf, U as LOGIN_COMPONENT, V as IS_SIDE_PANEL, W as LOGIN_STORE, X as SEARCH_RESULTS_EVENT, Y as SEARCH_QUERY, Z as TRANSLATION_SOURCE, _ as ACCESS_DOMAINS, a as resolveSpacing, at as Size, b as definedWcBundleOf, c as TranslatePipe, d as browserLocale, et as WC_SEARCH_GROUPS, f as miniMarkToHtml, g as isJson, h as StorageService, i as resolveSize, it as DEFAULT_SIZE, j as isWebComponent, k as isTierPreview, l as TranslateService, m as SharedStoreRegistry, n as isSize, nt as LAYOUT_ASSET_FOLDER, o as toCssLength, p as AssetStore, q as ONE_ASSET_BASE_URL, r as resolveIconSize, rt as Assets, s as toLength, t as coerceSize, tt as FORM_ASSET_FOLDER, u as BrowserLocaleService, v as HttpService, w as setWcTier, x as definedWcTierOf, y as buildWcBaseUrl, z as ICON_SOURCE } from "./magmonium-one-size-converter-BOBD8nHy.mjs";
|
|
3
|
+
import { a as OverlayService, c as DeviceService, i as OverlayRef, n as Direction, o as ScrollService, r as ThemeService, s as DomService, t as SelectorDirective } from "./magmonium-one-selector-DAEI_0JX.mjs";
|
|
4
4
|
import { t as FileService } from "./magmonium-one-file.service-Bo06pU3_.mjs";
|
|
5
|
-
import { a as calculateLuminance, c as hexToRgb, d as derivePropertyName, f as getProperty, h as
|
|
6
|
-
import "./magmonium-one-theme-
|
|
7
|
-
import { a as sectionTableColumnWidths, c as AssetUrlPipe, d as MoneyPipe, f as TimeAgoPipe, i as sectionTableColumnId, l as CompactNumberPipe, n as SectionTableSortPipe, o as sectionTableFrozenCount, r as nextSectionTableSort, s as sortSectionTableRows, t as LabelComponent, u as PercentagePipe } from "./magmonium-one-label-
|
|
8
|
-
import { i as getScrollParent, n as activeElementWithin, r as classListSignal, t as BaseTextInputComponent } from "./magmonium-one-base-text-
|
|
9
|
-
import { a as
|
|
10
|
-
import { i as resolveConfigAsset, n as toAttrNumber, r as ConfigComponent, t as toAttrBool } from "./magmonium-one-attribute-value-
|
|
11
|
-
import { a as isButtonName, c as formatBadgeCount, l as shouldShowBadge, n as SECTION_FORM_CONTEXT, o as ReactiveElementComponent, r as ImgComponent, s as BadgeComponent, t as ButtonComponent } from "./magmonium-one-button-
|
|
12
|
-
import { t as MRefDirective } from "./magmonium-one-m-ref-
|
|
13
|
-
import { t as HeaderComponent } from "./magmonium-one-header-
|
|
14
|
-
import { t as TextOutputComponent } from "./magmonium-one-text-output-
|
|
15
|
-
import { t as BaseInputComponent } from "./magmonium-one-base-input-
|
|
16
|
-
import { a as stringToColor, c as ToolTipDirective, d as DragListItemDirective, f as DragListDirective, i as MHeroColorDirective, l as FileUploadDirective, n as PaddingDirective, o as HighlightDirective, p as DraggableDirective, r as SPACING_INWARD, s as PositionDirective, t as MarginDirective, u as AutosizeDirective } from "./magmonium-one-directives-
|
|
17
|
-
import { n as DROPDOWN_IMPORTS, r as DROPDOWN_TEMPLATE, t as BaseDropdownComponent } from "./magmonium-one-base-dropdown-
|
|
5
|
+
import { C as isLightAppColor, D as ThemeDataService, E as rebuildLogoGlyph, S as appLogoShadowColor, T as normalizeAppColor, _ as AppLogoState, a as calculateLuminance, b as LOGO_GLYPH_MAX_BYTES, c as hexToRgb, d as derivePropertyName, f as getProperty, g as APP_THEME_COLOR, h as APP_LOGO_SOURCE, i as deriveOppositeColor, l as hslToRgb, m as ThemeStore, n as resolvePallet, o as rgbToHex, p as setProperty, r as deriveContrastColor, s as rgbToHsl, t as applyColorsToElement, u as parseColor, v as appThemeColorFactory, w as logoGlyphMaskUrl, x as appColorBrand, y as paintAppColor } from "./magmonium-one-color-utl-DI5p24iQ.mjs";
|
|
6
|
+
import "./magmonium-one-theme-DYvNIWmo.mjs";
|
|
7
|
+
import { a as sectionTableColumnWidths, c as AssetUrlPipe, d as MoneyPipe, f as TimeAgoPipe, i as sectionTableColumnId, l as CompactNumberPipe, n as SectionTableSortPipe, o as sectionTableFrozenCount, r as nextSectionTableSort, s as sortSectionTableRows, t as LabelComponent, u as PercentagePipe } from "./magmonium-one-label-D_rU82nD.mjs";
|
|
8
|
+
import { i as getScrollParent, n as activeElementWithin, r as classListSignal, t as BaseTextInputComponent } from "./magmonium-one-base-text-Di2V2ojp.mjs";
|
|
9
|
+
import { a as SIZE_CONTEXT, c as SHARED_ICONS, i as APP_LOGO_ICON, n as CustomIconClass, o as injectParentSize, r as IconComponent, s as provideSizeContext, t as CustomIconEditComponent } from "./magmonium-one-icon-C3jwzbb2.mjs";
|
|
10
|
+
import { i as resolveConfigAsset, n as toAttrNumber, r as ConfigComponent, t as toAttrBool } from "./magmonium-one-attribute-value-C1lqou2L.mjs";
|
|
11
|
+
import { a as isButtonName, c as formatBadgeCount, l as shouldShowBadge, n as SECTION_FORM_CONTEXT, o as ReactiveElementComponent, r as ImgComponent, s as BadgeComponent, t as ButtonComponent } from "./magmonium-one-button-DZ4wCJgb.mjs";
|
|
12
|
+
import { t as MRefDirective } from "./magmonium-one-m-ref-CEms7B6-.mjs";
|
|
13
|
+
import { t as HeaderComponent } from "./magmonium-one-header-DUiBhPUP.mjs";
|
|
14
|
+
import { t as TextOutputComponent } from "./magmonium-one-text-output-BZU61QIF.mjs";
|
|
15
|
+
import { t as BaseInputComponent } from "./magmonium-one-base-input-C1Ek0Ezm.mjs";
|
|
16
|
+
import { a as stringToColor, c as ToolTipDirective, d as DragListItemDirective, f as DragListDirective, i as MHeroColorDirective, l as FileUploadDirective, n as PaddingDirective, o as HighlightDirective, p as DraggableDirective, r as SPACING_INWARD, s as PositionDirective, t as MarginDirective, u as AutosizeDirective } from "./magmonium-one-directives-B93p5bAL.mjs";
|
|
17
|
+
import { n as DROPDOWN_IMPORTS, r as DROPDOWN_TEMPLATE, t as BaseDropdownComponent } from "./magmonium-one-base-dropdown-XpTWe4Ii.mjs";
|
|
18
18
|
import { t as InputType } from "./magmonium-one-input-DqHPorA1.mjs";
|
|
19
|
-
import { t as TextInputComponent } from "./magmonium-one-text-
|
|
20
|
-
import { i as OptionsSourceDirective, n as normalizeAssetOptions, r as presetDefaultOption, t as assetOptions } from "./magmonium-one-options-asset-
|
|
21
|
-
import { r as PLACED_CHECKBOX, t as CheckboxInputComponent } from "./magmonium-one-checkbox-
|
|
22
|
-
import { i as mergeUniqueWith, n as mergeUnique, r as mergeUniqueBy, t as ButtonGroupComponent } from "./magmonium-one-group-
|
|
23
|
-
import { n as ContextMenuBoxComponent, r as MenuComponent, t as ContextMenuComponent } from "./magmonium-one-menu-
|
|
24
|
-
import { t as BaseCheckboxInputComponent } from "./magmonium-one-base-checkbox-
|
|
25
|
-
import { t as RadioInputComponent } from "./magmonium-one-radio-
|
|
26
|
-
import { r as BaseArrayInputComponent, t as MultiRangeInputComponent } from "./magmonium-one-multi-range-
|
|
27
|
-
import { t as RangeInputComponent } from "./magmonium-one-range-
|
|
19
|
+
import { t as TextInputComponent } from "./magmonium-one-text-BnTkYLJe.mjs";
|
|
20
|
+
import { i as OptionsSourceDirective, n as normalizeAssetOptions, r as presetDefaultOption, t as assetOptions } from "./magmonium-one-options-asset-BMd7W0Mk.mjs";
|
|
21
|
+
import { r as PLACED_CHECKBOX, t as CheckboxInputComponent } from "./magmonium-one-checkbox-R-hPZrCa.mjs";
|
|
22
|
+
import { i as mergeUniqueWith, n as mergeUnique, r as mergeUniqueBy, t as ButtonGroupComponent } from "./magmonium-one-group-B7YeUd1u.mjs";
|
|
23
|
+
import { n as ContextMenuBoxComponent, r as MenuComponent, t as ContextMenuComponent } from "./magmonium-one-menu-cO34OcJc.mjs";
|
|
24
|
+
import { t as BaseCheckboxInputComponent } from "./magmonium-one-base-checkbox-CIxAiA4Q.mjs";
|
|
25
|
+
import { t as RadioInputComponent } from "./magmonium-one-radio-BAL3-3j5.mjs";
|
|
26
|
+
import { r as BaseArrayInputComponent, t as MultiRangeInputComponent } from "./magmonium-one-multi-range-Bq3_3NHg.mjs";
|
|
27
|
+
import { t as RangeInputComponent } from "./magmonium-one-range-Cf7yUnhN.mjs";
|
|
28
28
|
import { o as isEditableImage, s as outputSize } from "./magmonium-one-image-frame-BTSaUSAi.mjs";
|
|
29
29
|
import * as i0 from "@angular/core";
|
|
30
30
|
import { ApplicationRef, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, DOCUMENT, DestroyRef, Directive, ElementRef, EventEmitter, HostAttributeToken, HostBinding, HostListener, Injectable, InjectionToken, Injector, Input, Output, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation, afterEveryRender, afterNextRender, afterRenderEffect, computed, contentChild, contentChildren, createComponent, effect, forwardRef, inject, input, inputBinding, linkedSignal, makeEnvironmentProviders, model, numberAttribute, output, outputBinding, provideAppInitializer, provideBrowserGlobalErrorListeners, provideZonelessChangeDetection, reflectComponentType, runInInjectionContext, signal, twoWayBinding, untracked, viewChild, viewChildren } from "@angular/core";
|
|
@@ -1274,6 +1274,7 @@ const NavStore = signalStore({ providedIn: "root" }, withState(initialState$3),
|
|
|
1274
1274
|
router
|
|
1275
1275
|
};
|
|
1276
1276
|
}), withComputed((store) => {
|
|
1277
|
+
const assetStore = inject(AssetStore);
|
|
1277
1278
|
const navWidgetMaps = inject(NAV_WIDGET_MAP, { optional: true });
|
|
1278
1279
|
const anchorRouteNavId = computed(() => visibleNavId(store.routeNavId() ?? "root"), ...ngDevMode ? [{ debugName: "anchorRouteNavId" }] : /* istanbul ignore next */ []);
|
|
1279
1280
|
const id = computed(() => store.menuNavId() ?? navIdFor(anchorRouteNavId(), store.murl()), ...ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []);
|
|
@@ -1544,21 +1545,46 @@ const NavStore = signalStore({ providedIn: "root" }, withState(initialState$3),
|
|
|
1544
1545
|
const appLink = store.appLink();
|
|
1545
1546
|
return appLink && !activeAppOpen() ? store.identityMap()[appLink] : void 0;
|
|
1546
1547
|
}, ...ngDevMode ? [{ debugName: "currentIdentity" }] : /* istanbul ignore next */ []);
|
|
1548
|
+
const appLogoLink = computed(() => store.appLink() ?? assetStore.appLink(), ...ngDevMode ? [{ debugName: "appLogoLink" }] : /* istanbul ignore next */ []);
|
|
1547
1549
|
const appLogo = computed(() => {
|
|
1548
|
-
const appLink =
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1550
|
+
const appLink = appLogoLink();
|
|
1551
|
+
const identity = appLink ? store.identityMap()[appLink] : void 0;
|
|
1552
|
+
if (identity?.logoGlyph) return {
|
|
1553
|
+
glyph: identity.logoGlyph,
|
|
1554
|
+
name: identity.name
|
|
1555
|
+
};
|
|
1556
|
+
if (appLink && !activeAppOpen()) return {
|
|
1557
|
+
glyph: null,
|
|
1558
|
+
name: identity?.name ?? appLink
|
|
1559
|
+
};
|
|
1556
1560
|
const root = store.navMap()[ROOT_NAV];
|
|
1557
|
-
|
|
1561
|
+
if (root?.logo) return {
|
|
1558
1562
|
src: root.logo,
|
|
1559
1563
|
name: root.title
|
|
1560
|
-
}
|
|
1564
|
+
};
|
|
1565
|
+
return { name: identity?.name ?? appLink ?? root?.title };
|
|
1561
1566
|
}, ...ngDevMode ? [{ debugName: "appLogo" }] : /* istanbul ignore next */ []);
|
|
1567
|
+
const appLogos = computed(() => {
|
|
1568
|
+
const logos = {};
|
|
1569
|
+
for (const [link, identity] of Object.entries(store.identityMap())) {
|
|
1570
|
+
const color = identity.appColor;
|
|
1571
|
+
if (identity.logoGlyph) logos[link] = {
|
|
1572
|
+
glyph: identity.logoGlyph,
|
|
1573
|
+
name: identity.name,
|
|
1574
|
+
color
|
|
1575
|
+
};
|
|
1576
|
+
else if (!identity.open) logos[link] = {
|
|
1577
|
+
glyph: null,
|
|
1578
|
+
name: identity.name || link,
|
|
1579
|
+
color
|
|
1580
|
+
};
|
|
1581
|
+
else if (color) logos[link] = {
|
|
1582
|
+
name: identity.name || link,
|
|
1583
|
+
color
|
|
1584
|
+
};
|
|
1585
|
+
}
|
|
1586
|
+
return logos;
|
|
1587
|
+
}, ...ngDevMode ? [{ debugName: "appLogos" }] : /* istanbul ignore next */ []);
|
|
1562
1588
|
const answeringNavId = (candidates, hit) => {
|
|
1563
1589
|
if (hit) return hit.navId;
|
|
1564
1590
|
const map = store.navMap();
|
|
@@ -1597,8 +1623,32 @@ const NavStore = signalStore({ providedIn: "root" }, withState(initialState$3),
|
|
|
1597
1623
|
hasOwnContent: !!widgetConfig || !!emittedMenu?.length
|
|
1598
1624
|
});
|
|
1599
1625
|
}, ...ngDevMode ? [{ debugName: "breadcrumbResult" }] : /* istanbul ignore next */ []);
|
|
1600
|
-
const
|
|
1601
|
-
const
|
|
1626
|
+
const appLinkByNavId = computed(() => Object.fromEntries([...allMounts(), ...menuMounts()].flatMap(({ appNavId, link }) => link ? [[appNavId, link]] : [])), ...ngDevMode ? [{ debugName: "appLinkByNavId" }] : /* istanbul ignore next */ []);
|
|
1627
|
+
const withAppLogo = computed(() => {
|
|
1628
|
+
const links = appLinkByNavId();
|
|
1629
|
+
const identities = store.identityMap();
|
|
1630
|
+
return (entry) => {
|
|
1631
|
+
const link = links[entry.nav ?? entry.id];
|
|
1632
|
+
const identity = link ? identities[link] : void 0;
|
|
1633
|
+
if (!link || !identity || identity.open && !identity.logoGlyph) return entry;
|
|
1634
|
+
return {
|
|
1635
|
+
...entry,
|
|
1636
|
+
appLogo: {
|
|
1637
|
+
glyph: identity.logoGlyph,
|
|
1638
|
+
color: identity.appColor,
|
|
1639
|
+
name: identity.name || link
|
|
1640
|
+
}
|
|
1641
|
+
};
|
|
1642
|
+
};
|
|
1643
|
+
}, ...ngDevMode ? [{ debugName: "withAppLogo" }] : /* istanbul ignore next */ []);
|
|
1644
|
+
const breadcrumb = computed(() => {
|
|
1645
|
+
const crumb = breadcrumbResult().breadcrumb;
|
|
1646
|
+
return {
|
|
1647
|
+
...crumb,
|
|
1648
|
+
header: withAppLogo()(crumb.header)
|
|
1649
|
+
};
|
|
1650
|
+
}, ...ngDevMode ? [{ debugName: "breadcrumb" }] : /* istanbul ignore next */ []);
|
|
1651
|
+
const navMenus = computed(() => breadcrumbResult().navMenus.map(withAppLogo()), ...ngDevMode ? [{ debugName: "navMenus" }] : /* istanbul ignore next */ []);
|
|
1602
1652
|
return {
|
|
1603
1653
|
id,
|
|
1604
1654
|
allMounts,
|
|
@@ -1624,7 +1674,9 @@ const NavStore = signalStore({ providedIn: "root" }, withState(initialState$3),
|
|
|
1624
1674
|
}, ...ngDevMode ? [{ debugName: "navHasContent" }] : /* istanbul ignore next */ []),
|
|
1625
1675
|
currentWcConfig,
|
|
1626
1676
|
currentIdentity,
|
|
1677
|
+
appLogoLink,
|
|
1627
1678
|
appLogo,
|
|
1679
|
+
appLogos,
|
|
1628
1680
|
activeAppOpen,
|
|
1629
1681
|
transparentNavIds,
|
|
1630
1682
|
resolvedNavMenuConfig,
|
|
@@ -1971,7 +2023,9 @@ const NavStore = signalStore({ providedIn: "root" }, withState(initialState$3),
|
|
|
1971
2023
|
const appLogoState = inject(AppLogoState);
|
|
1972
2024
|
return { onInit() {
|
|
1973
2025
|
store.syncFromRouter(store.navigationEnd);
|
|
2026
|
+
store.loadIdentity(store.appLogoLink);
|
|
1974
2027
|
effect(() => appLogoState.set(store.appLogo()));
|
|
2028
|
+
effect(() => appLogoState.setLogos(store.appLogos()));
|
|
1975
2029
|
const loadedFor = /* @__PURE__ */ new Set();
|
|
1976
2030
|
effect(() => {
|
|
1977
2031
|
const loaders = store.visibilityLoaders();
|
|
@@ -3420,6 +3474,7 @@ function initMagmoniumApp({ backend, authUrl, socketUrl }) {
|
|
|
3420
3474
|
SharedStoreRegistry.setTranslateService(translateService);
|
|
3421
3475
|
SharedStoreRegistry.setLoadingActions(loadingActions);
|
|
3422
3476
|
SharedStoreRegistry.setNotificationStore(inject(NotificationStore));
|
|
3477
|
+
SharedStoreRegistry.setAppLogoState(inject(AppLogoState));
|
|
3423
3478
|
if (navStore) SharedStoreRegistry.setNavStore(navStore);
|
|
3424
3479
|
if (loginStore) SharedStoreRegistry.setLoginStore(loginStore);
|
|
3425
3480
|
const effectiveBackend = backend || "http://localhost:8000";
|
|
@@ -4156,12 +4211,12 @@ var SectionFormItemComponent = class SectionFormItemComponent extends ConfigComp
|
|
|
4156
4211
|
try {
|
|
4157
4212
|
switch (type) {
|
|
4158
4213
|
case InputType.RADIO: {
|
|
4159
|
-
const { RadioInputComponent } = await import("./magmonium-one-radio-
|
|
4214
|
+
const { RadioInputComponent } = await import("./magmonium-one-radio-BAL3-3j5.mjs").then((n) => n.n);
|
|
4160
4215
|
this.createDynamicComponent(seq, RadioInputComponent);
|
|
4161
4216
|
break;
|
|
4162
4217
|
}
|
|
4163
4218
|
case InputType.TOGGLE: {
|
|
4164
|
-
const { ToggleInputComponent } = await import("./magmonium-one-toggle-
|
|
4219
|
+
const { ToggleInputComponent } = await import("./magmonium-one-toggle-V_YnZXx5.mjs");
|
|
4165
4220
|
this.createDynamicComponent(seq, ToggleInputComponent, [], true);
|
|
4166
4221
|
break;
|
|
4167
4222
|
}
|
|
@@ -4171,12 +4226,12 @@ var SectionFormItemComponent = class SectionFormItemComponent extends ConfigComp
|
|
|
4171
4226
|
break;
|
|
4172
4227
|
}
|
|
4173
4228
|
case InputType.PASSWORD: {
|
|
4174
|
-
const { PasswordInputComponent } = await import("./magmonium-one-password-
|
|
4229
|
+
const { PasswordInputComponent } = await import("./magmonium-one-password-IdllPMUw.mjs");
|
|
4175
4230
|
this.createDynamicComponent(seq, PasswordInputComponent);
|
|
4176
4231
|
break;
|
|
4177
4232
|
}
|
|
4178
4233
|
case InputType.OTP: {
|
|
4179
|
-
const { OtpInputComponent } = await import("./magmonium-one-otp-
|
|
4234
|
+
const { OtpInputComponent } = await import("./magmonium-one-otp-V2tFztLx.mjs");
|
|
4180
4235
|
this.createDynamicComponent(seq, OtpInputComponent);
|
|
4181
4236
|
break;
|
|
4182
4237
|
}
|
|
@@ -4186,7 +4241,7 @@ var SectionFormItemComponent = class SectionFormItemComponent extends ConfigComp
|
|
|
4186
4241
|
break;
|
|
4187
4242
|
}
|
|
4188
4243
|
case InputType.CHECKBOX: {
|
|
4189
|
-
const { CheckboxInputComponent } = await import("./magmonium-one-checkbox-
|
|
4244
|
+
const { CheckboxInputComponent } = await import("./magmonium-one-checkbox-R-hPZrCa.mjs").then((n) => n.n);
|
|
4190
4245
|
this.createDynamicComponent(seq, CheckboxInputComponent, [], true);
|
|
4191
4246
|
break;
|
|
4192
4247
|
}
|
|
@@ -4201,12 +4256,12 @@ var SectionFormItemComponent = class SectionFormItemComponent extends ConfigComp
|
|
|
4201
4256
|
break;
|
|
4202
4257
|
}
|
|
4203
4258
|
case InputType.RANGE: {
|
|
4204
|
-
const { RangeInputComponent } = await import("./magmonium-one-range-
|
|
4259
|
+
const { RangeInputComponent } = await import("./magmonium-one-range-Cf7yUnhN.mjs").then((n) => n.n);
|
|
4205
4260
|
this.createDynamicComponent(seq, RangeInputComponent);
|
|
4206
4261
|
break;
|
|
4207
4262
|
}
|
|
4208
4263
|
case InputType.MULTI_RANGE: {
|
|
4209
|
-
const { MultiRangeInputComponent } = await import("./magmonium-one-multi-range-
|
|
4264
|
+
const { MultiRangeInputComponent } = await import("./magmonium-one-multi-range-Bq3_3NHg.mjs").then((n) => n.n);
|
|
4210
4265
|
this.createDynamicComponent(seq, MultiRangeInputComponent);
|
|
4211
4266
|
break;
|
|
4212
4267
|
}
|
|
@@ -4257,7 +4312,7 @@ var SectionFormItemComponent = class SectionFormItemComponent extends ConfigComp
|
|
|
4257
4312
|
break;
|
|
4258
4313
|
}
|
|
4259
4314
|
default: {
|
|
4260
|
-
const { TextInputComponent } = await import("./magmonium-one-text-
|
|
4315
|
+
const { TextInputComponent } = await import("./magmonium-one-text-BnTkYLJe.mjs").then((n) => n.n);
|
|
4261
4316
|
this.createDynamicComponent(seq, TextInputComponent);
|
|
4262
4317
|
break;
|
|
4263
4318
|
}
|
|
@@ -16808,8 +16863,8 @@ var SectionHeaderComponent = class SectionHeaderComponent {
|
|
|
16808
16863
|
classAttribute: "m-section-header"
|
|
16809
16864
|
},
|
|
16810
16865
|
ngImport: i0,
|
|
16811
|
-
template: "<!-- One declaration of the row, rendered by whichever branch `spacing` picks.\n Hoisted into a template rather than written twice: an `<ng-content>` may\n appear once per selector in a component, so the duplicated copy caught\n nothing and a header projecting a title rendered it in the `spacing`\n branch alone. -->\n<ng-template #body>\n @if (accordion(); as accordionRef) {\n <div\n class=\"section-header__toggle\"\n [class.section-header__toggle--rotate]=\"toggleRotates()\"\n [class.section-header__toggle--open]=\"accordionRef.isOpen()\"\n [id]=\"accordionRef.headerId\"\n [attr.aria-expanded]=\"accordionRef.isOpen()\"\n [attr.aria-controls]=\"accordionRef.bodyId\"\n >\n <m-button\n [config]=\"{ icon: toggleIconName(), iconOnly: true, variant: 'ghost' }\"\n (clicked)=\"onToggleClick()\" />\n </div>\n }\n @if (showBack()) {\n <div class=\"section-header__back\">\n <m-button\n [config]=\"{ icon: 'chevron-left', iconOnly: true }\"\n (clicked)=\"back.emit()\" />\n </div>\n } @else if (!label() && icon(); as iconName) {\n <!-- Only where no label is written. A header with one hands the icon to\n `m-header`, which draws it inside the heading's line box and so on the\n heading's own centre line. Beside a projected title there is no such\n box to borrow, so the glyph is boxed to the level's line box here and\n centred in it — otherwise it centres against the whole title column,\n which on the Canvas is the label slot's drop rect stacked above the\n heading. -->\n <div class=\"section-header__icon\">\n <m-icon [name]=\"iconName\" />\n </div>\n }\n <div\n class=\"section-header__title\"\n [class.section-header__title--reverse]=\"reverse()\"\n >\n <!-- The title slot is the catch-all rather than a `[label]` one: every\n header already projecting a heading writes it unselected, and a\n selector here would drop that content on the floor. What the design\n page emits — `<span label>` — is caught by it too, nothing else\n claiming the node. -->\n <ng-content />\n <!-- The written label, drawn beside the slot rather than as its\n `ng-content` fallback. A fallback renders only while *nothing* is\n projected, and the design Canvas always projects the slot span —\n empty until a Control is dropped in it — so a fallback there would\n blank the label a header is still configured with. `label` answers\n instead, which no header projecting a title sets. -->\n @if (label()) {\n <m-header\n [level]=\"level()\"\n [label]=\"label()\"\n [icon]=\"icon()\"\n [params]=\"params()\"\n [noTranslate]=\"noTranslate()\" />\n }\n @if (subText(); as sub) {\n <span class=\"section-header__sub\">{{ sub }}</span>\n }\n </div>\n <!-- A FilterGroup projected into the header row, selected by tag rather than\n by an attribute — the same shape a Section catches its `m-action` with.\n A header has room for one icon and not for a row, so a group landing\n here is squeezed by placement (ADR 0025); nothing here enforces that,\n the caller binding `[squeeze]` on the tag it projects. -->\n <div class=\"section-header__filters\">\n <ng-content select=\"m-section-filter-group\" />\n </div>\n @if (actionConfig(); as action) {\n <div class=\"section-header__action\">\n <m-button [config]=\"action\" (clicked)=\"actionClick.emit()\" />\n </div>\n }\n @if (hasMenu()) {\n <div class=\"section-header__menu\">\n <m-context-menu\n [config]=\"menu()\"\n [name]=\"menuName()\"\n [visibilityRule]=\"visibilityRule()\"\n [disableRule]=\"disableRule()\"\n [extraData]=\"extraData()\"\n (action)=\"action.emit($event)\"\n />\n </div>\n }\n</ng-template>\n\n<!-- Always the same two boxes, whether or not a `maxWidth` is in force. The\n border and the sticky backdrop live on the host and keep spanning the\n Section's full width; only this container narrows and is placed by the\n Section's `align`, so the heading lines up with the body under it. -->\n<div class=\"section-header__container\">\n <div class=\"section-header__inner\">\n <ng-container [ngTemplateOutlet]=\"body\" />\n </div>\n</div>\n",
|
|
16812
|
-
styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:flex;align-items:center;gap:.5rem;min-height:var(--section-header-min-height, calc(var(--section-header-py, .5rem) * 2 + 1.25rem));border-bottom:1px solid var(--m-backdrop-border);padding:var(--section-header-py, .85rem) var(--section-px, 1rem);width:100%;grid-column:1/-1}:host(.no-border){border-bottom:none}:host(.spacing){padding:0;width:100%}.section-header__container{width:100%;min-width:0;max-width:var(--m-section-header-max-width, none);margin-inline:0 auto}:host(.box-center) .section-header__container{margin-inline:auto}:host(.box-right) .section-header__container{margin-inline:auto 0}.section-header__inner{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0}.section-header__inner .section-header__title{flex:1;min-width:0;gap:.5rem}:host(.spacing) .section-header__inner{padding:1rem 1.5rem}:host(.has-sidepanel){padding-right:50px}:host(.has-sidepanel.has-menu){padding-right:50px}:host(.spacing.has-sidepanel) .section-header__inner{padding-right:calc(1.5rem + 50px)}:host(.is-sticky-enabled){position:sticky;top:var(--m-section-header-sticky-top, 0);z-index:var(--m-section-header-sticky-z, 10)}:host(.is-sticky){background:color-mix(in srgb,var(--m-background) 80%,transparent);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%)}:host(.is-accordion){cursor:pointer}.section-header__toggle{display:flex;flex-shrink:0}.section-header__toggle.section-header__toggle--rotate m-button{display:flex;transition:transform .3s cubic-bezier(.4,0,.2,1)}.section-header__toggle.section-header__toggle--rotate.section-header__toggle--open m-button{transform:rotate(180deg)}.section-header__title{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}m-header{min-width:0}.section-header__title--reverse{flex-direction:column-reverse}.section-header__sub{font-size:.8rem;color:var(--m-text-secondary);line-height:1.2}:host(.align-center){--m-header-justify: center}:host(.align-right){--m-header-justify: flex-end}:host(.has-menu){padding-right:0}:host(.spacing.has-menu) .section-header__inner{padding-right:0}.section-header__filters{display:contents}.section-
|
|
16866
|
+
template: "<!-- One declaration of the row, rendered by whichever branch `spacing` picks.\n Hoisted into a template rather than written twice: an `<ng-content>` may\n appear once per selector in a component, so the duplicated copy caught\n nothing and a header projecting a title rendered it in the `spacing`\n branch alone. -->\n<ng-template #body>\n @if (accordion(); as accordionRef) {\n <div\n class=\"section-header__toggle\"\n [class.section-header__toggle--rotate]=\"toggleRotates()\"\n [class.section-header__toggle--open]=\"accordionRef.isOpen()\"\n [id]=\"accordionRef.headerId\"\n [attr.aria-expanded]=\"accordionRef.isOpen()\"\n [attr.aria-controls]=\"accordionRef.bodyId\"\n >\n <m-button\n [config]=\"{ icon: toggleIconName(), iconOnly: true, variant: 'ghost' }\"\n (clicked)=\"onToggleClick()\" />\n </div>\n }\n @if (showBack()) {\n <div class=\"section-header__back\">\n <m-button\n [config]=\"{ icon: 'chevron-left', iconOnly: true }\"\n (clicked)=\"back.emit()\" />\n </div>\n } @else if (!label() && icon(); as iconName) {\n <!-- Only where no label is written. A header with one hands the icon to\n `m-header`, which draws it inside the heading's line box and so on the\n heading's own centre line. Beside a projected title there is no such\n box to borrow, so the glyph is boxed to the level's line box here and\n centred in it — otherwise it centres against the whole title column,\n which on the Canvas is the label slot's drop rect stacked above the\n heading. -->\n <div class=\"section-header__icon\">\n <m-icon [name]=\"iconName\" />\n </div>\n }\n <!-- An AppLogo projected in the icon's place, selected by tag like the\n FilterGroup below — boxed to the heading's line box the same way. -->\n <div class=\"section-header__logo\">\n <ng-content select=\"m-app-logo\" />\n </div>\n <div\n class=\"section-header__title\"\n [class.section-header__title--reverse]=\"reverse()\"\n >\n <!-- The title slot is the catch-all rather than a `[label]` one: every\n header already projecting a heading writes it unselected, and a\n selector here would drop that content on the floor. What the design\n page emits — `<span label>` — is caught by it too, nothing else\n claiming the node. -->\n <ng-content />\n <!-- The written label, drawn beside the slot rather than as its\n `ng-content` fallback. A fallback renders only while *nothing* is\n projected, and the design Canvas always projects the slot span —\n empty until a Control is dropped in it — so a fallback there would\n blank the label a header is still configured with. `label` answers\n instead, which no header projecting a title sets. -->\n @if (label()) {\n <m-header\n [level]=\"level()\"\n [label]=\"label()\"\n [icon]=\"icon()\"\n [params]=\"params()\"\n [noTranslate]=\"noTranslate()\" />\n }\n @if (subText(); as sub) {\n <span class=\"section-header__sub\">{{ sub }}</span>\n }\n </div>\n <!-- A FilterGroup projected into the header row, selected by tag rather than\n by an attribute — the same shape a Section catches its `m-action` with.\n A header has room for one icon and not for a row, so a group landing\n here is squeezed by placement (ADR 0025); nothing here enforces that,\n the caller binding `[squeeze]` on the tag it projects. -->\n <div class=\"section-header__filters\">\n <ng-content select=\"m-section-filter-group\" />\n </div>\n @if (actionConfig(); as action) {\n <div class=\"section-header__action\">\n <m-button [config]=\"action\" (clicked)=\"actionClick.emit()\" />\n </div>\n }\n @if (hasMenu()) {\n <div class=\"section-header__menu\">\n <m-context-menu\n [config]=\"menu()\"\n [name]=\"menuName()\"\n [visibilityRule]=\"visibilityRule()\"\n [disableRule]=\"disableRule()\"\n [extraData]=\"extraData()\"\n (action)=\"action.emit($event)\"\n />\n </div>\n }\n</ng-template>\n\n<!-- Always the same two boxes, whether or not a `maxWidth` is in force. The\n border and the sticky backdrop live on the host and keep spanning the\n Section's full width; only this container narrows and is placed by the\n Section's `align`, so the heading lines up with the body under it. -->\n<div class=\"section-header__container\">\n <div class=\"section-header__inner\">\n <ng-container [ngTemplateOutlet]=\"body\" />\n </div>\n</div>\n",
|
|
16867
|
+
styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:flex;align-items:center;gap:.5rem;min-height:var(--section-header-min-height, calc(var(--section-header-py, .5rem) * 2 + 1.25rem));border-bottom:1px solid var(--m-backdrop-border);padding:var(--section-header-py, .85rem) var(--section-px, 1rem);width:100%;grid-column:1/-1}:host(.no-border){border-bottom:none}:host(.spacing){padding:0;width:100%}.section-header__container{width:100%;min-width:0;max-width:var(--m-section-header-max-width, none);margin-inline:0 auto}:host(.box-center) .section-header__container{margin-inline:auto}:host(.box-right) .section-header__container{margin-inline:auto 0}.section-header__inner{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0}.section-header__inner .section-header__title{flex:1;min-width:0;gap:.5rem}:host(.spacing) .section-header__inner{padding:1rem 1.5rem}:host(.has-sidepanel){padding-right:50px}:host(.has-sidepanel.has-menu){padding-right:50px}:host(.spacing.has-sidepanel) .section-header__inner{padding-right:calc(1.5rem + 50px)}:host(.is-sticky-enabled){position:sticky;top:var(--m-section-header-sticky-top, 0);z-index:var(--m-section-header-sticky-z, 10)}:host(.is-sticky){background:color-mix(in srgb,var(--m-background) 80%,transparent);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%)}:host(.is-accordion){cursor:pointer}.section-header__toggle{display:flex;flex-shrink:0}.section-header__toggle.section-header__toggle--rotate m-button{display:flex;transition:transform .3s cubic-bezier(.4,0,.2,1)}.section-header__toggle.section-header__toggle--rotate.section-header__toggle--open m-button{transform:rotate(180deg)}.section-header__title{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}m-header{min-width:0}.section-header__title--reverse{flex-direction:column-reverse}.section-header__sub{font-size:.8rem;color:var(--m-text-secondary);line-height:1.2}:host(.align-center){--m-header-justify: center}:host(.align-right){--m-header-justify: flex-end}:host(.has-menu){padding-right:0}:host(.spacing.has-menu) .section-header__inner{padding-right:0}.section-header__filters,.section-header__logo{display:contents}.section-header__logo m-section-filter-group{width:auto;flex-shrink:0;border-bottom:none}.section-header__back{display:flex;align-items:center;flex-shrink:0}.section-header__icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;align-self:flex-start;height:var(--m-section-header-icon-box, 1.5125rem)}.section-header__menu,.section-header__action{margin-left:auto;flex-shrink:0;display:flex;align-items:center}.section-header__action+.section-header__menu{margin-left:0}\n"],
|
|
16813
16868
|
dependencies: [
|
|
16814
16869
|
{
|
|
16815
16870
|
kind: "directive",
|
|
@@ -16941,8 +16996,8 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
16941
16996
|
"[class.is-accordion]": "!!accordion()",
|
|
16942
16997
|
"(click)": "onHeaderClick($event)"
|
|
16943
16998
|
},
|
|
16944
|
-
template: "<!-- One declaration of the row, rendered by whichever branch `spacing` picks.\n Hoisted into a template rather than written twice: an `<ng-content>` may\n appear once per selector in a component, so the duplicated copy caught\n nothing and a header projecting a title rendered it in the `spacing`\n branch alone. -->\n<ng-template #body>\n @if (accordion(); as accordionRef) {\n <div\n class=\"section-header__toggle\"\n [class.section-header__toggle--rotate]=\"toggleRotates()\"\n [class.section-header__toggle--open]=\"accordionRef.isOpen()\"\n [id]=\"accordionRef.headerId\"\n [attr.aria-expanded]=\"accordionRef.isOpen()\"\n [attr.aria-controls]=\"accordionRef.bodyId\"\n >\n <m-button\n [config]=\"{ icon: toggleIconName(), iconOnly: true, variant: 'ghost' }\"\n (clicked)=\"onToggleClick()\" />\n </div>\n }\n @if (showBack()) {\n <div class=\"section-header__back\">\n <m-button\n [config]=\"{ icon: 'chevron-left', iconOnly: true }\"\n (clicked)=\"back.emit()\" />\n </div>\n } @else if (!label() && icon(); as iconName) {\n <!-- Only where no label is written. A header with one hands the icon to\n `m-header`, which draws it inside the heading's line box and so on the\n heading's own centre line. Beside a projected title there is no such\n box to borrow, so the glyph is boxed to the level's line box here and\n centred in it — otherwise it centres against the whole title column,\n which on the Canvas is the label slot's drop rect stacked above the\n heading. -->\n <div class=\"section-header__icon\">\n <m-icon [name]=\"iconName\" />\n </div>\n }\n <div\n class=\"section-header__title\"\n [class.section-header__title--reverse]=\"reverse()\"\n >\n <!-- The title slot is the catch-all rather than a `[label]` one: every\n header already projecting a heading writes it unselected, and a\n selector here would drop that content on the floor. What the design\n page emits — `<span label>` — is caught by it too, nothing else\n claiming the node. -->\n <ng-content />\n <!-- The written label, drawn beside the slot rather than as its\n `ng-content` fallback. A fallback renders only while *nothing* is\n projected, and the design Canvas always projects the slot span —\n empty until a Control is dropped in it — so a fallback there would\n blank the label a header is still configured with. `label` answers\n instead, which no header projecting a title sets. -->\n @if (label()) {\n <m-header\n [level]=\"level()\"\n [label]=\"label()\"\n [icon]=\"icon()\"\n [params]=\"params()\"\n [noTranslate]=\"noTranslate()\" />\n }\n @if (subText(); as sub) {\n <span class=\"section-header__sub\">{{ sub }}</span>\n }\n </div>\n <!-- A FilterGroup projected into the header row, selected by tag rather than\n by an attribute — the same shape a Section catches its `m-action` with.\n A header has room for one icon and not for a row, so a group landing\n here is squeezed by placement (ADR 0025); nothing here enforces that,\n the caller binding `[squeeze]` on the tag it projects. -->\n <div class=\"section-header__filters\">\n <ng-content select=\"m-section-filter-group\" />\n </div>\n @if (actionConfig(); as action) {\n <div class=\"section-header__action\">\n <m-button [config]=\"action\" (clicked)=\"actionClick.emit()\" />\n </div>\n }\n @if (hasMenu()) {\n <div class=\"section-header__menu\">\n <m-context-menu\n [config]=\"menu()\"\n [name]=\"menuName()\"\n [visibilityRule]=\"visibilityRule()\"\n [disableRule]=\"disableRule()\"\n [extraData]=\"extraData()\"\n (action)=\"action.emit($event)\"\n />\n </div>\n }\n</ng-template>\n\n<!-- Always the same two boxes, whether or not a `maxWidth` is in force. The\n border and the sticky backdrop live on the host and keep spanning the\n Section's full width; only this container narrows and is placed by the\n Section's `align`, so the heading lines up with the body under it. -->\n<div class=\"section-header__container\">\n <div class=\"section-header__inner\">\n <ng-container [ngTemplateOutlet]=\"body\" />\n </div>\n</div>\n",
|
|
16945
|
-
styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:flex;align-items:center;gap:.5rem;min-height:var(--section-header-min-height, calc(var(--section-header-py, .5rem) * 2 + 1.25rem));border-bottom:1px solid var(--m-backdrop-border);padding:var(--section-header-py, .85rem) var(--section-px, 1rem);width:100%;grid-column:1/-1}:host(.no-border){border-bottom:none}:host(.spacing){padding:0;width:100%}.section-header__container{width:100%;min-width:0;max-width:var(--m-section-header-max-width, none);margin-inline:0 auto}:host(.box-center) .section-header__container{margin-inline:auto}:host(.box-right) .section-header__container{margin-inline:auto 0}.section-header__inner{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0}.section-header__inner .section-header__title{flex:1;min-width:0;gap:.5rem}:host(.spacing) .section-header__inner{padding:1rem 1.5rem}:host(.has-sidepanel){padding-right:50px}:host(.has-sidepanel.has-menu){padding-right:50px}:host(.spacing.has-sidepanel) .section-header__inner{padding-right:calc(1.5rem + 50px)}:host(.is-sticky-enabled){position:sticky;top:var(--m-section-header-sticky-top, 0);z-index:var(--m-section-header-sticky-z, 10)}:host(.is-sticky){background:color-mix(in srgb,var(--m-background) 80%,transparent);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%)}:host(.is-accordion){cursor:pointer}.section-header__toggle{display:flex;flex-shrink:0}.section-header__toggle.section-header__toggle--rotate m-button{display:flex;transition:transform .3s cubic-bezier(.4,0,.2,1)}.section-header__toggle.section-header__toggle--rotate.section-header__toggle--open m-button{transform:rotate(180deg)}.section-header__title{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}m-header{min-width:0}.section-header__title--reverse{flex-direction:column-reverse}.section-header__sub{font-size:.8rem;color:var(--m-text-secondary);line-height:1.2}:host(.align-center){--m-header-justify: center}:host(.align-right){--m-header-justify: flex-end}:host(.has-menu){padding-right:0}:host(.spacing.has-menu) .section-header__inner{padding-right:0}.section-header__filters{display:contents}.section-
|
|
16999
|
+
template: "<!-- One declaration of the row, rendered by whichever branch `spacing` picks.\n Hoisted into a template rather than written twice: an `<ng-content>` may\n appear once per selector in a component, so the duplicated copy caught\n nothing and a header projecting a title rendered it in the `spacing`\n branch alone. -->\n<ng-template #body>\n @if (accordion(); as accordionRef) {\n <div\n class=\"section-header__toggle\"\n [class.section-header__toggle--rotate]=\"toggleRotates()\"\n [class.section-header__toggle--open]=\"accordionRef.isOpen()\"\n [id]=\"accordionRef.headerId\"\n [attr.aria-expanded]=\"accordionRef.isOpen()\"\n [attr.aria-controls]=\"accordionRef.bodyId\"\n >\n <m-button\n [config]=\"{ icon: toggleIconName(), iconOnly: true, variant: 'ghost' }\"\n (clicked)=\"onToggleClick()\" />\n </div>\n }\n @if (showBack()) {\n <div class=\"section-header__back\">\n <m-button\n [config]=\"{ icon: 'chevron-left', iconOnly: true }\"\n (clicked)=\"back.emit()\" />\n </div>\n } @else if (!label() && icon(); as iconName) {\n <!-- Only where no label is written. A header with one hands the icon to\n `m-header`, which draws it inside the heading's line box and so on the\n heading's own centre line. Beside a projected title there is no such\n box to borrow, so the glyph is boxed to the level's line box here and\n centred in it — otherwise it centres against the whole title column,\n which on the Canvas is the label slot's drop rect stacked above the\n heading. -->\n <div class=\"section-header__icon\">\n <m-icon [name]=\"iconName\" />\n </div>\n }\n <!-- An AppLogo projected in the icon's place, selected by tag like the\n FilterGroup below — boxed to the heading's line box the same way. -->\n <div class=\"section-header__logo\">\n <ng-content select=\"m-app-logo\" />\n </div>\n <div\n class=\"section-header__title\"\n [class.section-header__title--reverse]=\"reverse()\"\n >\n <!-- The title slot is the catch-all rather than a `[label]` one: every\n header already projecting a heading writes it unselected, and a\n selector here would drop that content on the floor. What the design\n page emits — `<span label>` — is caught by it too, nothing else\n claiming the node. -->\n <ng-content />\n <!-- The written label, drawn beside the slot rather than as its\n `ng-content` fallback. A fallback renders only while *nothing* is\n projected, and the design Canvas always projects the slot span —\n empty until a Control is dropped in it — so a fallback there would\n blank the label a header is still configured with. `label` answers\n instead, which no header projecting a title sets. -->\n @if (label()) {\n <m-header\n [level]=\"level()\"\n [label]=\"label()\"\n [icon]=\"icon()\"\n [params]=\"params()\"\n [noTranslate]=\"noTranslate()\" />\n }\n @if (subText(); as sub) {\n <span class=\"section-header__sub\">{{ sub }}</span>\n }\n </div>\n <!-- A FilterGroup projected into the header row, selected by tag rather than\n by an attribute — the same shape a Section catches its `m-action` with.\n A header has room for one icon and not for a row, so a group landing\n here is squeezed by placement (ADR 0025); nothing here enforces that,\n the caller binding `[squeeze]` on the tag it projects. -->\n <div class=\"section-header__filters\">\n <ng-content select=\"m-section-filter-group\" />\n </div>\n @if (actionConfig(); as action) {\n <div class=\"section-header__action\">\n <m-button [config]=\"action\" (clicked)=\"actionClick.emit()\" />\n </div>\n }\n @if (hasMenu()) {\n <div class=\"section-header__menu\">\n <m-context-menu\n [config]=\"menu()\"\n [name]=\"menuName()\"\n [visibilityRule]=\"visibilityRule()\"\n [disableRule]=\"disableRule()\"\n [extraData]=\"extraData()\"\n (action)=\"action.emit($event)\"\n />\n </div>\n }\n</ng-template>\n\n<!-- Always the same two boxes, whether or not a `maxWidth` is in force. The\n border and the sticky backdrop live on the host and keep spanning the\n Section's full width; only this container narrows and is placed by the\n Section's `align`, so the heading lines up with the body under it. -->\n<div class=\"section-header__container\">\n <div class=\"section-header__inner\">\n <ng-container [ngTemplateOutlet]=\"body\" />\n </div>\n</div>\n",
|
|
17000
|
+
styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:flex;align-items:center;gap:.5rem;min-height:var(--section-header-min-height, calc(var(--section-header-py, .5rem) * 2 + 1.25rem));border-bottom:1px solid var(--m-backdrop-border);padding:var(--section-header-py, .85rem) var(--section-px, 1rem);width:100%;grid-column:1/-1}:host(.no-border){border-bottom:none}:host(.spacing){padding:0;width:100%}.section-header__container{width:100%;min-width:0;max-width:var(--m-section-header-max-width, none);margin-inline:0 auto}:host(.box-center) .section-header__container{margin-inline:auto}:host(.box-right) .section-header__container{margin-inline:auto 0}.section-header__inner{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0}.section-header__inner .section-header__title{flex:1;min-width:0;gap:.5rem}:host(.spacing) .section-header__inner{padding:1rem 1.5rem}:host(.has-sidepanel){padding-right:50px}:host(.has-sidepanel.has-menu){padding-right:50px}:host(.spacing.has-sidepanel) .section-header__inner{padding-right:calc(1.5rem + 50px)}:host(.is-sticky-enabled){position:sticky;top:var(--m-section-header-sticky-top, 0);z-index:var(--m-section-header-sticky-z, 10)}:host(.is-sticky){background:color-mix(in srgb,var(--m-background) 80%,transparent);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%)}:host(.is-accordion){cursor:pointer}.section-header__toggle{display:flex;flex-shrink:0}.section-header__toggle.section-header__toggle--rotate m-button{display:flex;transition:transform .3s cubic-bezier(.4,0,.2,1)}.section-header__toggle.section-header__toggle--rotate.section-header__toggle--open m-button{transform:rotate(180deg)}.section-header__title{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}m-header{min-width:0}.section-header__title--reverse{flex-direction:column-reverse}.section-header__sub{font-size:.8rem;color:var(--m-text-secondary);line-height:1.2}:host(.align-center){--m-header-justify: center}:host(.align-right){--m-header-justify: flex-end}:host(.has-menu){padding-right:0}:host(.spacing.has-menu) .section-header__inner{padding-right:0}.section-header__filters,.section-header__logo{display:contents}.section-header__logo m-section-filter-group{width:auto;flex-shrink:0;border-bottom:none}.section-header__back{display:flex;align-items:center;flex-shrink:0}.section-header__icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;align-self:flex-start;height:var(--m-section-header-icon-box, 1.5125rem)}.section-header__menu,.section-header__action{margin-left:auto;flex-shrink:0;display:flex;align-items:center}.section-header__action+.section-header__menu{margin-left:0}\n"]
|
|
16946
17001
|
}]
|
|
16947
17002
|
}],
|
|
16948
17003
|
propDecorators: {
|
|
@@ -21726,12 +21781,12 @@ var WrapperInputComponent = class WrapperInputComponent extends ConfigComponent
|
|
|
21726
21781
|
const seq = ++this.dynamicSeq;
|
|
21727
21782
|
switch (this.config()?.type) {
|
|
21728
21783
|
case InputType.RADIO: {
|
|
21729
|
-
const { RadioInputComponent } = await import("./magmonium-one-radio-
|
|
21784
|
+
const { RadioInputComponent } = await import("./magmonium-one-radio-BAL3-3j5.mjs").then((n) => n.n);
|
|
21730
21785
|
this.createDynamicComponent(seq, RadioInputComponent);
|
|
21731
21786
|
break;
|
|
21732
21787
|
}
|
|
21733
21788
|
case InputType.TOGGLE: {
|
|
21734
|
-
const { ToggleInputComponent } = await import("./magmonium-one-toggle-
|
|
21789
|
+
const { ToggleInputComponent } = await import("./magmonium-one-toggle-V_YnZXx5.mjs");
|
|
21735
21790
|
this.createDynamicComponent(seq, ToggleInputComponent, [], true);
|
|
21736
21791
|
break;
|
|
21737
21792
|
}
|
|
@@ -21741,12 +21796,12 @@ var WrapperInputComponent = class WrapperInputComponent extends ConfigComponent
|
|
|
21741
21796
|
break;
|
|
21742
21797
|
}
|
|
21743
21798
|
case InputType.PASSWORD: {
|
|
21744
|
-
const { PasswordInputComponent } = await import("./magmonium-one-password-
|
|
21799
|
+
const { PasswordInputComponent } = await import("./magmonium-one-password-IdllPMUw.mjs");
|
|
21745
21800
|
this.createDynamicComponent(seq, PasswordInputComponent);
|
|
21746
21801
|
break;
|
|
21747
21802
|
}
|
|
21748
21803
|
case InputType.OTP: {
|
|
21749
|
-
const { OtpInputComponent } = await import("./magmonium-one-otp-
|
|
21804
|
+
const { OtpInputComponent } = await import("./magmonium-one-otp-V2tFztLx.mjs");
|
|
21750
21805
|
this.createDynamicComponent(seq, OtpInputComponent);
|
|
21751
21806
|
break;
|
|
21752
21807
|
}
|
|
@@ -21756,7 +21811,7 @@ var WrapperInputComponent = class WrapperInputComponent extends ConfigComponent
|
|
|
21756
21811
|
break;
|
|
21757
21812
|
}
|
|
21758
21813
|
case InputType.CHECKBOX: {
|
|
21759
|
-
const { CheckboxInputComponent } = await import("./magmonium-one-checkbox-
|
|
21814
|
+
const { CheckboxInputComponent } = await import("./magmonium-one-checkbox-R-hPZrCa.mjs").then((n) => n.n);
|
|
21760
21815
|
this.createDynamicComponent(seq, CheckboxInputComponent, [], true);
|
|
21761
21816
|
break;
|
|
21762
21817
|
}
|
|
@@ -21771,12 +21826,12 @@ var WrapperInputComponent = class WrapperInputComponent extends ConfigComponent
|
|
|
21771
21826
|
break;
|
|
21772
21827
|
}
|
|
21773
21828
|
case InputType.RANGE: {
|
|
21774
|
-
const { RangeInputComponent } = await import("./magmonium-one-range-
|
|
21829
|
+
const { RangeInputComponent } = await import("./magmonium-one-range-Cf7yUnhN.mjs").then((n) => n.n);
|
|
21775
21830
|
this.createDynamicComponent(seq, RangeInputComponent);
|
|
21776
21831
|
break;
|
|
21777
21832
|
}
|
|
21778
21833
|
case InputType.MULTI_RANGE: {
|
|
21779
|
-
const { MultiRangeInputComponent } = await import("./magmonium-one-multi-range-
|
|
21834
|
+
const { MultiRangeInputComponent } = await import("./magmonium-one-multi-range-Bq3_3NHg.mjs").then((n) => n.n);
|
|
21780
21835
|
this.createDynamicComponent(seq, MultiRangeInputComponent);
|
|
21781
21836
|
break;
|
|
21782
21837
|
}
|
|
@@ -21827,7 +21882,7 @@ var WrapperInputComponent = class WrapperInputComponent extends ConfigComponent
|
|
|
21827
21882
|
break;
|
|
21828
21883
|
}
|
|
21829
21884
|
default: {
|
|
21830
|
-
const { TextInputComponent } = await import("./magmonium-one-text-
|
|
21885
|
+
const { TextInputComponent } = await import("./magmonium-one-text-BnTkYLJe.mjs").then((n) => n.n);
|
|
21831
21886
|
this.createDynamicComponent(seq, TextInputComponent);
|
|
21832
21887
|
break;
|
|
21833
21888
|
}
|
|
@@ -24145,7 +24200,7 @@ var FileUploadInputComponent = class FileUploadInputComponent extends BaseInputC
|
|
|
24145
24200
|
openEditor = async (file, size) => {
|
|
24146
24201
|
const modalStore = this.modalStore;
|
|
24147
24202
|
if (!modalStore) return void 0;
|
|
24148
|
-
const { ImageEditorComponent } = await import("./magmonium-one-image-editor-
|
|
24203
|
+
const { ImageEditorComponent } = await import("./magmonium-one-image-editor-BRTk8i4O.mjs");
|
|
24149
24204
|
const ratio = String(this.config()?.ratio ?? "");
|
|
24150
24205
|
return new Promise((resolve) => {
|
|
24151
24206
|
const modalRef = new ModalRef();
|
|
@@ -29166,12 +29221,232 @@ const remoteOutletRoute = (name) => ({
|
|
|
29166
29221
|
children: [],
|
|
29167
29222
|
data: { remoteOutlet: true }
|
|
29168
29223
|
});
|
|
29224
|
+
var AppLogoComponent = class AppLogoComponent {
|
|
29225
|
+
glyph = input(...ngDevMode ? [void 0, { debugName: "glyph" }] : /* istanbul ignore next */ []);
|
|
29226
|
+
appColor = input(...ngDevMode ? [void 0, { debugName: "appColor" }] : /* istanbul ignore next */ []);
|
|
29227
|
+
name = input(...ngDevMode ? [void 0, { debugName: "name" }] : /* istanbul ignore next */ []);
|
|
29228
|
+
link = input(...ngDevMode ? [void 0, { debugName: "link" }] : /* istanbul ignore next */ []);
|
|
29229
|
+
variant = input("tile", ...ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []);
|
|
29230
|
+
tone = input("app", ...ngDevMode ? [{ debugName: "tone" }] : /* istanbul ignore next */ []);
|
|
29231
|
+
size = input(...ngDevMode ? [void 0, { debugName: "size" }] : /* istanbul ignore next */ []);
|
|
29232
|
+
#state = inject(AppLogoState);
|
|
29233
|
+
#own = inject(APP_LOGO_SOURCE);
|
|
29234
|
+
lookup = computed(() => {
|
|
29235
|
+
const link = this.link()?.trim();
|
|
29236
|
+
if (link) return this.#state.logos()[link];
|
|
29237
|
+
return this.glyph() !== void 0 || this.appColor() !== void 0 || this.name() !== void 0 ? void 0 : this.#own();
|
|
29238
|
+
}, ...ngDevMode ? [{ debugName: "lookup" }] : /* istanbul ignore next */ []);
|
|
29239
|
+
color = computed(() => {
|
|
29240
|
+
const value = this.appColor() !== void 0 ? this.appColor() : this.lookup()?.color;
|
|
29241
|
+
return value ? normalizeAppColor(value) ?? null : null;
|
|
29242
|
+
}, ...ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []);
|
|
29243
|
+
label = computed(() => (this.name() !== void 0 ? this.name() : this.lookup()?.name) || this.link()?.trim() || "", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
|
|
29244
|
+
shadow = computed(() => {
|
|
29245
|
+
const color = this.color();
|
|
29246
|
+
return color ? appLogoShadowColor(color) : null;
|
|
29247
|
+
}, ...ngDevMode ? [{ debugName: "shadow" }] : /* istanbul ignore next */ []);
|
|
29248
|
+
mask = computed(() => {
|
|
29249
|
+
if (this.glyph() !== void 0) {
|
|
29250
|
+
const glyph = this.glyph();
|
|
29251
|
+
return glyph ? logoGlyphMaskUrl(glyph) : void 0;
|
|
29252
|
+
}
|
|
29253
|
+
const found = this.lookup();
|
|
29254
|
+
if (found?.glyph) return logoGlyphMaskUrl(found.glyph);
|
|
29255
|
+
return found?.src ? `url("${encodeURI(found.src)}")` : void 0;
|
|
29256
|
+
}, ...ngDevMode ? [{ debugName: "mask" }] : /* istanbul ignore next */ []);
|
|
29257
|
+
letter = computed(() => this.label().trim().charAt(0).toUpperCase(), ...ngDevMode ? [{ debugName: "letter" }] : /* istanbul ignore next */ []);
|
|
29258
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
29259
|
+
minVersion: "12.0.0",
|
|
29260
|
+
version: "22.2.1",
|
|
29261
|
+
ngImport: i0,
|
|
29262
|
+
type: AppLogoComponent,
|
|
29263
|
+
deps: [],
|
|
29264
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
29265
|
+
});
|
|
29266
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
29267
|
+
minVersion: "17.0.0",
|
|
29268
|
+
version: "22.2.1",
|
|
29269
|
+
type: AppLogoComponent,
|
|
29270
|
+
isStandalone: true,
|
|
29271
|
+
selector: "m-app-logo",
|
|
29272
|
+
inputs: {
|
|
29273
|
+
glyph: {
|
|
29274
|
+
classPropertyName: "glyph",
|
|
29275
|
+
publicName: "glyph",
|
|
29276
|
+
isSignal: true,
|
|
29277
|
+
isRequired: false,
|
|
29278
|
+
transformFunction: null
|
|
29279
|
+
},
|
|
29280
|
+
appColor: {
|
|
29281
|
+
classPropertyName: "appColor",
|
|
29282
|
+
publicName: "appColor",
|
|
29283
|
+
isSignal: true,
|
|
29284
|
+
isRequired: false,
|
|
29285
|
+
transformFunction: null
|
|
29286
|
+
},
|
|
29287
|
+
name: {
|
|
29288
|
+
classPropertyName: "name",
|
|
29289
|
+
publicName: "name",
|
|
29290
|
+
isSignal: true,
|
|
29291
|
+
isRequired: false,
|
|
29292
|
+
transformFunction: null
|
|
29293
|
+
},
|
|
29294
|
+
link: {
|
|
29295
|
+
classPropertyName: "link",
|
|
29296
|
+
publicName: "link",
|
|
29297
|
+
isSignal: true,
|
|
29298
|
+
isRequired: false,
|
|
29299
|
+
transformFunction: null
|
|
29300
|
+
},
|
|
29301
|
+
variant: {
|
|
29302
|
+
classPropertyName: "variant",
|
|
29303
|
+
publicName: "variant",
|
|
29304
|
+
isSignal: true,
|
|
29305
|
+
isRequired: false,
|
|
29306
|
+
transformFunction: null
|
|
29307
|
+
},
|
|
29308
|
+
tone: {
|
|
29309
|
+
classPropertyName: "tone",
|
|
29310
|
+
publicName: "tone",
|
|
29311
|
+
isSignal: true,
|
|
29312
|
+
isRequired: false,
|
|
29313
|
+
transformFunction: null
|
|
29314
|
+
},
|
|
29315
|
+
size: {
|
|
29316
|
+
classPropertyName: "size",
|
|
29317
|
+
publicName: "size",
|
|
29318
|
+
isSignal: true,
|
|
29319
|
+
isRequired: false,
|
|
29320
|
+
transformFunction: null
|
|
29321
|
+
}
|
|
29322
|
+
},
|
|
29323
|
+
host: {
|
|
29324
|
+
attributes: { "role": "img" },
|
|
29325
|
+
properties: {
|
|
29326
|
+
"class.m-app-logo--glow": "variant() === 'glow'",
|
|
29327
|
+
"class.m-app-logo--light": "tone() === 'light'",
|
|
29328
|
+
"attr.aria-label": "label() || null",
|
|
29329
|
+
"style.width": "size() || null",
|
|
29330
|
+
"style.height": "size() || null",
|
|
29331
|
+
"style.--m-app-logo-color": "color()",
|
|
29332
|
+
"style.--m-app-logo-shadow": "shadow()"
|
|
29333
|
+
},
|
|
29334
|
+
classAttribute: "m-app-logo"
|
|
29335
|
+
},
|
|
29336
|
+
ngImport: i0,
|
|
29337
|
+
template: `
|
|
29338
|
+
<span class="m-app-logo__mark">
|
|
29339
|
+
@if (mask(); as url) {
|
|
29340
|
+
<span class="m-app-logo__glyph" [style.mask-image]="url"></span>
|
|
29341
|
+
} @else {
|
|
29342
|
+
<span class="m-app-logo__letter">{{ letter() }}</span>
|
|
29343
|
+
}
|
|
29344
|
+
</span>
|
|
29345
|
+
`,
|
|
29346
|
+
isInline: true,
|
|
29347
|
+
styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;aspect-ratio:1;container-type:size;border-radius:22%;overflow:hidden;background:var(--m-app-logo-color, var(--m-text-quaternary))}.m-app-logo__mark{display:flex;align-items:center;justify-content:center;width:100%;height:100%;filter:drop-shadow(0 4cqmin 3cqmin var(--m-app-logo-shadow, rgba(0, 0, 0, .25)))}.m-app-logo__glyph{width:60%;height:60%;background:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.m-app-logo__letter{color:#fff;font-size:50cqmin;font-weight:700;line-height:1}:host(.m-app-logo--glow){border-radius:0;overflow:visible;background:none}:host(.m-app-logo--glow) .m-app-logo__mark{filter:drop-shadow(0 0 8cqmin color-mix(in srgb,var(--m-app-logo-color, var(--m-mm)) 55%,transparent)) drop-shadow(0 6cqmin 18cqmin color-mix(in srgb,var(--m-app-logo-color, var(--m-mm)) 35%,transparent))}:host(.m-app-logo--glow) .m-app-logo__glyph{width:100%;height:100%;background:var(--m-app-logo-color, var(--m-mm))}:host(.m-app-logo--glow) .m-app-logo__letter{color:var(--m-app-logo-color, var(--m-mm));font-size:80cqmin}:host(.m-app-logo--glow.m-app-logo--light) .m-app-logo__glyph{background:#fff}:host(.m-app-logo--glow.m-app-logo--light) .m-app-logo__letter{color:#fff}\n"],
|
|
29348
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
29349
|
+
});
|
|
29350
|
+
};
|
|
29351
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
29352
|
+
minVersion: "12.0.0",
|
|
29353
|
+
version: "22.2.1",
|
|
29354
|
+
ngImport: i0,
|
|
29355
|
+
type: AppLogoComponent,
|
|
29356
|
+
decorators: [{
|
|
29357
|
+
type: Component,
|
|
29358
|
+
args: [{
|
|
29359
|
+
selector: "m-app-logo",
|
|
29360
|
+
template: `
|
|
29361
|
+
<span class="m-app-logo__mark">
|
|
29362
|
+
@if (mask(); as url) {
|
|
29363
|
+
<span class="m-app-logo__glyph" [style.mask-image]="url"></span>
|
|
29364
|
+
} @else {
|
|
29365
|
+
<span class="m-app-logo__letter">{{ letter() }}</span>
|
|
29366
|
+
}
|
|
29367
|
+
</span>
|
|
29368
|
+
`,
|
|
29369
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
29370
|
+
host: {
|
|
29371
|
+
class: "m-app-logo",
|
|
29372
|
+
"[class.m-app-logo--glow]": "variant() === 'glow'",
|
|
29373
|
+
"[class.m-app-logo--light]": "tone() === 'light'",
|
|
29374
|
+
role: "img",
|
|
29375
|
+
"[attr.aria-label]": "label() || null",
|
|
29376
|
+
"[style.width]": "size() || null",
|
|
29377
|
+
"[style.height]": "size() || null",
|
|
29378
|
+
"[style.--m-app-logo-color]": "color()",
|
|
29379
|
+
"[style.--m-app-logo-shadow]": "shadow()"
|
|
29380
|
+
},
|
|
29381
|
+
styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;aspect-ratio:1;container-type:size;border-radius:22%;overflow:hidden;background:var(--m-app-logo-color, var(--m-text-quaternary))}.m-app-logo__mark{display:flex;align-items:center;justify-content:center;width:100%;height:100%;filter:drop-shadow(0 4cqmin 3cqmin var(--m-app-logo-shadow, rgba(0, 0, 0, .25)))}.m-app-logo__glyph{width:60%;height:60%;background:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.m-app-logo__letter{color:#fff;font-size:50cqmin;font-weight:700;line-height:1}:host(.m-app-logo--glow){border-radius:0;overflow:visible;background:none}:host(.m-app-logo--glow) .m-app-logo__mark{filter:drop-shadow(0 0 8cqmin color-mix(in srgb,var(--m-app-logo-color, var(--m-mm)) 55%,transparent)) drop-shadow(0 6cqmin 18cqmin color-mix(in srgb,var(--m-app-logo-color, var(--m-mm)) 35%,transparent))}:host(.m-app-logo--glow) .m-app-logo__glyph{width:100%;height:100%;background:var(--m-app-logo-color, var(--m-mm))}:host(.m-app-logo--glow) .m-app-logo__letter{color:var(--m-app-logo-color, var(--m-mm));font-size:80cqmin}:host(.m-app-logo--glow.m-app-logo--light) .m-app-logo__glyph{background:#fff}:host(.m-app-logo--glow.m-app-logo--light) .m-app-logo__letter{color:#fff}\n"]
|
|
29382
|
+
}]
|
|
29383
|
+
}],
|
|
29384
|
+
propDecorators: {
|
|
29385
|
+
glyph: [{
|
|
29386
|
+
type: i0.Input,
|
|
29387
|
+
args: [{
|
|
29388
|
+
isSignal: true,
|
|
29389
|
+
alias: "glyph",
|
|
29390
|
+
required: false
|
|
29391
|
+
}]
|
|
29392
|
+
}],
|
|
29393
|
+
appColor: [{
|
|
29394
|
+
type: i0.Input,
|
|
29395
|
+
args: [{
|
|
29396
|
+
isSignal: true,
|
|
29397
|
+
alias: "appColor",
|
|
29398
|
+
required: false
|
|
29399
|
+
}]
|
|
29400
|
+
}],
|
|
29401
|
+
name: [{
|
|
29402
|
+
type: i0.Input,
|
|
29403
|
+
args: [{
|
|
29404
|
+
isSignal: true,
|
|
29405
|
+
alias: "name",
|
|
29406
|
+
required: false
|
|
29407
|
+
}]
|
|
29408
|
+
}],
|
|
29409
|
+
link: [{
|
|
29410
|
+
type: i0.Input,
|
|
29411
|
+
args: [{
|
|
29412
|
+
isSignal: true,
|
|
29413
|
+
alias: "link",
|
|
29414
|
+
required: false
|
|
29415
|
+
}]
|
|
29416
|
+
}],
|
|
29417
|
+
variant: [{
|
|
29418
|
+
type: i0.Input,
|
|
29419
|
+
args: [{
|
|
29420
|
+
isSignal: true,
|
|
29421
|
+
alias: "variant",
|
|
29422
|
+
required: false
|
|
29423
|
+
}]
|
|
29424
|
+
}],
|
|
29425
|
+
tone: [{
|
|
29426
|
+
type: i0.Input,
|
|
29427
|
+
args: [{
|
|
29428
|
+
isSignal: true,
|
|
29429
|
+
alias: "tone",
|
|
29430
|
+
required: false
|
|
29431
|
+
}]
|
|
29432
|
+
}],
|
|
29433
|
+
size: [{
|
|
29434
|
+
type: i0.Input,
|
|
29435
|
+
args: [{
|
|
29436
|
+
isSignal: true,
|
|
29437
|
+
alias: "size",
|
|
29438
|
+
required: false
|
|
29439
|
+
}]
|
|
29440
|
+
}]
|
|
29441
|
+
}
|
|
29442
|
+
});
|
|
29169
29443
|
const REMOTE_PAGE_RELOAD = new InjectionToken("REMOTE_PAGE_RELOAD", {
|
|
29170
29444
|
providedIn: "root",
|
|
29171
29445
|
factory: () => () => window.location.reload()
|
|
29172
29446
|
});
|
|
29173
29447
|
const tierReloadKey = (link) => `m-remote-tier-reload:${window.location.pathname}|${link ?? ""}|${link && wcTierOf(link) || "status"}`;
|
|
29174
29448
|
const isBootRedirect = (pending, sent, path) => pending && (sent === void 0 || !samePath(path, sent));
|
|
29449
|
+
const REMOTE_BOOT_TIMEOUT_MS = 1e4;
|
|
29175
29450
|
var RemoteComponent = class RemoteComponent {
|
|
29176
29451
|
config = input(...ngDevMode ? [void 0, { debugName: "config" }] : /* istanbul ignore next */ []);
|
|
29177
29452
|
link = input(...ngDevMode ? [void 0, { debugName: "link" }] : /* istanbul ignore next */ []);
|
|
@@ -29192,6 +29467,8 @@ var RemoteComponent = class RemoteComponent {
|
|
|
29192
29467
|
return typeof mount === "string" ? parseMountPattern(mount) : mount;
|
|
29193
29468
|
}, ...ngDevMode ? [{ debugName: "pattern" }] : /* istanbul ignore next */ []);
|
|
29194
29469
|
beta = input(false, ...ngDevMode ? [{ debugName: "beta" }] : /* istanbul ignore next */ []);
|
|
29470
|
+
glyph = input(...ngDevMode ? [void 0, { debugName: "glyph" }] : /* istanbul ignore next */ []);
|
|
29471
|
+
appColor = input(...ngDevMode ? [void 0, { debugName: "appColor" }] : /* istanbul ignore next */ []);
|
|
29195
29472
|
loaded = output();
|
|
29196
29473
|
failed = output();
|
|
29197
29474
|
loader = inject(RemoteLoaderService);
|
|
@@ -29203,6 +29480,7 @@ var RemoteComponent = class RemoteComponent {
|
|
|
29203
29480
|
navRef = inject(NAV_STORE_REF, { optional: true });
|
|
29204
29481
|
reloadPage = inject(REMOTE_PAGE_RELOAD);
|
|
29205
29482
|
assetStore = inject(AssetStore);
|
|
29483
|
+
appLogoState = inject(AppLogoState);
|
|
29206
29484
|
loadedElement;
|
|
29207
29485
|
loadId = 0;
|
|
29208
29486
|
mountedLink;
|
|
@@ -29216,6 +29494,13 @@ var RemoteComponent = class RemoteComponent {
|
|
|
29216
29494
|
pinnedLink;
|
|
29217
29495
|
state = signal("idle", ...ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []);
|
|
29218
29496
|
failure = signal({}, ...ngDevMode ? [{ debugName: "failure" }] : /* istanbul ignore next */ []);
|
|
29497
|
+
booting = signal(false, ...ngDevMode ? [{ debugName: "booting" }] : /* istanbul ignore next */ []);
|
|
29498
|
+
bootTimer;
|
|
29499
|
+
endBoot = () => {
|
|
29500
|
+
clearTimeout(this.bootTimer);
|
|
29501
|
+
this.bootTimer = void 0;
|
|
29502
|
+
this.booting.set(false);
|
|
29503
|
+
};
|
|
29219
29504
|
hostQuery = this.router ? toSignal(this.router.events.pipe(filter((e) => e instanceof NavigationEnd), map(() => this.currentQuery())), { initialValue: this.currentQuery() }) : signal("");
|
|
29220
29505
|
hostSegments = this.router ? toSignal(this.router.events.pipe(filter((e) => e instanceof NavigationEnd), map(() => this.primarySegments())), { initialValue: this.primarySegments() }) : signal([]);
|
|
29221
29506
|
mountMatch = linkedSignal({
|
|
@@ -29237,7 +29522,29 @@ var RemoteComponent = class RemoteComponent {
|
|
|
29237
29522
|
return navUrl === void 0 ? void 0 : `${navUrl}${this.hostQuery()}`;
|
|
29238
29523
|
}, ...ngDevMode ? [{ debugName: "remotePath" }] : /* istanbul ignore next */ []);
|
|
29239
29524
|
ownTail = computed(() => this.mountMatch()?.navUrl ?? this.tail(), ...ngDevMode ? [{ debugName: "ownTail" }] : /* istanbul ignore next */ []);
|
|
29525
|
+
mountColor = computed(() => {
|
|
29526
|
+
const chosen = normalizeAppColor(this.appColor() ?? "");
|
|
29527
|
+
if (chosen) return chosen;
|
|
29528
|
+
const link = this.appLink();
|
|
29529
|
+
const color = link ? this.appLogoState.logos()[link]?.color : void 0;
|
|
29530
|
+
return color ? normalizeAppColor(color) : void 0;
|
|
29531
|
+
}, ...ngDevMode ? [{ debugName: "mountColor" }] : /* istanbul ignore next */ []);
|
|
29532
|
+
chosenGlyph = computed(() => {
|
|
29533
|
+
const glyph = this.glyph()?.trim();
|
|
29534
|
+
return glyph ? rebuildLogoGlyph(glyph).svg || void 0 : void 0;
|
|
29535
|
+
}, ...ngDevMode ? [{ debugName: "chosenGlyph" }] : /* istanbul ignore next */ []);
|
|
29536
|
+
splash = computed(() => {
|
|
29537
|
+
const link = this.appLink() ?? "";
|
|
29538
|
+
const own = link ? this.appLogoState.logos()[link] : void 0;
|
|
29539
|
+
const logo = own && own.glyph !== void 0 ? own : this.appLogoState.source();
|
|
29540
|
+
return {
|
|
29541
|
+
glyph: this.chosenGlyph() ?? logo?.glyph ?? null,
|
|
29542
|
+
color: this.mountColor() ?? null,
|
|
29543
|
+
name: own?.name?.trim() || link
|
|
29544
|
+
};
|
|
29545
|
+
}, ...ngDevMode ? [{ debugName: "splash" }] : /* istanbul ignore next */ []);
|
|
29240
29546
|
constructor() {
|
|
29547
|
+
effect(() => paintAppColor(this.elementRef.nativeElement, this.mountColor()));
|
|
29241
29548
|
effect(() => {
|
|
29242
29549
|
this.loginStore?.isLoggedIn();
|
|
29243
29550
|
const config = this.config();
|
|
@@ -29303,6 +29610,7 @@ var RemoteComponent = class RemoteComponent {
|
|
|
29303
29610
|
});
|
|
29304
29611
|
}
|
|
29305
29612
|
ngOnDestroy() {
|
|
29613
|
+
clearTimeout(this.bootTimer);
|
|
29306
29614
|
if (this.pinnedLink) setWcTier(this.pinnedLink, void 0);
|
|
29307
29615
|
this.dismountElement();
|
|
29308
29616
|
this.url()?.clear(this.queryKeys);
|
|
@@ -29349,6 +29657,7 @@ var RemoteComponent = class RemoteComponent {
|
|
|
29349
29657
|
};
|
|
29350
29658
|
onReport = (event) => {
|
|
29351
29659
|
const detail = event.detail;
|
|
29660
|
+
this.endBoot();
|
|
29352
29661
|
const raw = detail?.path;
|
|
29353
29662
|
if (raw === void 0) return;
|
|
29354
29663
|
const path = raw.replace(/^\//, "");
|
|
@@ -29423,6 +29732,8 @@ var RemoteComponent = class RemoteComponent {
|
|
|
29423
29732
|
} catch {}
|
|
29424
29733
|
result.element.addEventListener(WC_ROUTE_CHANGED_EVENT, this.onReport);
|
|
29425
29734
|
host.appendChild(result.element);
|
|
29735
|
+
this.booting.set(true);
|
|
29736
|
+
this.bootTimer = setTimeout(this.endBoot, REMOTE_BOOT_TIMEOUT_MS);
|
|
29426
29737
|
this.state.set("loaded");
|
|
29427
29738
|
const loadedConfig = result.config ?? config;
|
|
29428
29739
|
if (loadedConfig) this.loaded.emit(loadedConfig);
|
|
@@ -29440,6 +29751,7 @@ var RemoteComponent = class RemoteComponent {
|
|
|
29440
29751
|
};
|
|
29441
29752
|
dismountElement = () => {
|
|
29442
29753
|
const host = this.elementRef.nativeElement;
|
|
29754
|
+
this.endBoot();
|
|
29443
29755
|
this.loadedElement?.removeEventListener(WC_ROUTE_CHANGED_EVENT, this.onReport);
|
|
29444
29756
|
if (this.loadedElement?.parentNode === host) host.removeChild(this.loadedElement);
|
|
29445
29757
|
this.loadedElement = void 0;
|
|
@@ -29563,33 +29875,79 @@ var RemoteComponent = class RemoteComponent {
|
|
|
29563
29875
|
isSignal: true,
|
|
29564
29876
|
isRequired: false,
|
|
29565
29877
|
transformFunction: null
|
|
29878
|
+
},
|
|
29879
|
+
glyph: {
|
|
29880
|
+
classPropertyName: "glyph",
|
|
29881
|
+
publicName: "glyph",
|
|
29882
|
+
isSignal: true,
|
|
29883
|
+
isRequired: false,
|
|
29884
|
+
transformFunction: null
|
|
29885
|
+
},
|
|
29886
|
+
appColor: {
|
|
29887
|
+
classPropertyName: "appColor",
|
|
29888
|
+
publicName: "appColor",
|
|
29889
|
+
isSignal: true,
|
|
29890
|
+
isRequired: false,
|
|
29891
|
+
transformFunction: null
|
|
29566
29892
|
}
|
|
29567
29893
|
},
|
|
29568
29894
|
outputs: {
|
|
29569
29895
|
loaded: "loaded",
|
|
29570
29896
|
failed: "failed"
|
|
29571
29897
|
},
|
|
29572
|
-
host: {
|
|
29898
|
+
host: {
|
|
29899
|
+
properties: { "class.m-remote--booting": "booting()" },
|
|
29900
|
+
classAttribute: "m-remote"
|
|
29901
|
+
},
|
|
29573
29902
|
ngImport: i0,
|
|
29574
29903
|
template: `
|
|
29575
|
-
@if (state() === 'loading') {
|
|
29576
|
-
<div class="m-
|
|
29904
|
+
@if (state() === 'loading' || booting()) {
|
|
29905
|
+
<div class="m-remote__splash">
|
|
29906
|
+
<span class="m-remote__splash-mark">
|
|
29907
|
+
<m-app-logo
|
|
29908
|
+
variant="glow"
|
|
29909
|
+
tone="light"
|
|
29910
|
+
[glyph]="splash().glyph"
|
|
29911
|
+
[appColor]="splash().color"
|
|
29912
|
+
[name]="splash().name"
|
|
29913
|
+
/>
|
|
29914
|
+
</span>
|
|
29915
|
+
</div>
|
|
29577
29916
|
} @else if (state() === 'self-beta') {
|
|
29578
29917
|
<div class="m-remote__self-beta">
|
|
29579
|
-
<span class="m-remote__reason">{{
|
|
29580
|
-
|
|
29918
|
+
<span class="m-remote__reason">{{
|
|
29919
|
+
'remote-self-beta' | translate
|
|
29920
|
+
}}</span>
|
|
29921
|
+
<m-button
|
|
29922
|
+
label="open-beta"
|
|
29923
|
+
icon="chevrons-right"
|
|
29924
|
+
variant="primary"
|
|
29925
|
+
(clicked)="openBeta()"
|
|
29926
|
+
/>
|
|
29581
29927
|
</div>
|
|
29582
29928
|
} @else if (state() === 'failed') {
|
|
29583
29929
|
<div class="m-remote__broken">
|
|
29584
29930
|
<m-icon name="link-broken" color="currentColor" />
|
|
29585
29931
|
<span class="m-remote__reason">
|
|
29586
29932
|
@switch (failure().reason) {
|
|
29587
|
-
@case ('invalid-link') {
|
|
29588
|
-
|
|
29589
|
-
|
|
29590
|
-
@case ('
|
|
29591
|
-
|
|
29592
|
-
|
|
29933
|
+
@case ('invalid-link') {
|
|
29934
|
+
{{ 'remote-invalid-link' | translate }}
|
|
29935
|
+
}
|
|
29936
|
+
@case ('config-not-found') {
|
|
29937
|
+
{{ 'remote-config-not-found' | translate }}
|
|
29938
|
+
}
|
|
29939
|
+
@case ('script-failed') {
|
|
29940
|
+
{{ 'remote-script-failed' | translate }}
|
|
29941
|
+
}
|
|
29942
|
+
@case ('element-timeout') {
|
|
29943
|
+
{{ 'remote-element-timeout' | translate }}
|
|
29944
|
+
}
|
|
29945
|
+
@case ('offline') {
|
|
29946
|
+
{{ 'remote-offline' | translate }}
|
|
29947
|
+
}
|
|
29948
|
+
@case ('tier-conflict') {
|
|
29949
|
+
{{ 'remote-tier-conflict' | translate }}
|
|
29950
|
+
}
|
|
29593
29951
|
}
|
|
29594
29952
|
</span>
|
|
29595
29953
|
<span class="m-remote__detail">{{ appLink() }}</span>
|
|
@@ -29600,7 +29958,7 @@ var RemoteComponent = class RemoteComponent {
|
|
|
29600
29958
|
}
|
|
29601
29959
|
`,
|
|
29602
29960
|
isInline: true,
|
|
29603
|
-
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-remote{display:block;width:100%;min-height:100%;flex:1;isolation:isolate}.m-
|
|
29961
|
+
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-remote{display:block;width:100%;min-height:100%;flex:1;isolation:isolate}.m-remote__broken,.m-remote__self-beta{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:24px}.m-remote__broken,.m-remote__self-beta{color:var(--m-text-secondary)}.m-remote--booting{position:relative;min-height:100vh}.m-remote--booting>.m-remote__splash{position:absolute;inset:0;z-index:1}.m-remote--booting>:not(.m-remote__splash){visibility:hidden}.m-remote__splash{display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-height:100vh;background:var(--m-background)}.m-remote__splash-mark{display:flex;width:96px;height:96px;animation:m-remote-breathe 1.6s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.m-remote__splash-mark{animation:none}}.m-remote__detail{font-size:.85em}@keyframes m-remote-breathe{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.93)}}\n"],
|
|
29604
29962
|
dependencies: [
|
|
29605
29963
|
{
|
|
29606
29964
|
kind: "component",
|
|
@@ -29652,6 +30010,20 @@ var RemoteComponent = class RemoteComponent {
|
|
|
29652
30010
|
],
|
|
29653
30011
|
outputs: ["configChange", "clicked"]
|
|
29654
30012
|
},
|
|
30013
|
+
{
|
|
30014
|
+
kind: "component",
|
|
30015
|
+
type: AppLogoComponent,
|
|
30016
|
+
selector: "m-app-logo",
|
|
30017
|
+
inputs: [
|
|
30018
|
+
"glyph",
|
|
30019
|
+
"appColor",
|
|
30020
|
+
"name",
|
|
30021
|
+
"link",
|
|
30022
|
+
"variant",
|
|
30023
|
+
"tone",
|
|
30024
|
+
"size"
|
|
30025
|
+
]
|
|
30026
|
+
},
|
|
29655
30027
|
{
|
|
29656
30028
|
kind: "pipe",
|
|
29657
30029
|
type: TranslatePipe,
|
|
@@ -29674,28 +30046,61 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
29674
30046
|
imports: [
|
|
29675
30047
|
TranslatePipe,
|
|
29676
30048
|
IconComponent,
|
|
29677
|
-
ButtonComponent
|
|
30049
|
+
ButtonComponent,
|
|
30050
|
+
AppLogoComponent
|
|
29678
30051
|
],
|
|
29679
|
-
host: {
|
|
30052
|
+
host: {
|
|
30053
|
+
class: "m-remote",
|
|
30054
|
+
"[class.m-remote--booting]": "booting()"
|
|
30055
|
+
},
|
|
29680
30056
|
template: `
|
|
29681
|
-
@if (state() === 'loading') {
|
|
29682
|
-
<div class="m-
|
|
30057
|
+
@if (state() === 'loading' || booting()) {
|
|
30058
|
+
<div class="m-remote__splash">
|
|
30059
|
+
<span class="m-remote__splash-mark">
|
|
30060
|
+
<m-app-logo
|
|
30061
|
+
variant="glow"
|
|
30062
|
+
tone="light"
|
|
30063
|
+
[glyph]="splash().glyph"
|
|
30064
|
+
[appColor]="splash().color"
|
|
30065
|
+
[name]="splash().name"
|
|
30066
|
+
/>
|
|
30067
|
+
</span>
|
|
30068
|
+
</div>
|
|
29683
30069
|
} @else if (state() === 'self-beta') {
|
|
29684
30070
|
<div class="m-remote__self-beta">
|
|
29685
|
-
<span class="m-remote__reason">{{
|
|
29686
|
-
|
|
30071
|
+
<span class="m-remote__reason">{{
|
|
30072
|
+
'remote-self-beta' | translate
|
|
30073
|
+
}}</span>
|
|
30074
|
+
<m-button
|
|
30075
|
+
label="open-beta"
|
|
30076
|
+
icon="chevrons-right"
|
|
30077
|
+
variant="primary"
|
|
30078
|
+
(clicked)="openBeta()"
|
|
30079
|
+
/>
|
|
29687
30080
|
</div>
|
|
29688
30081
|
} @else if (state() === 'failed') {
|
|
29689
30082
|
<div class="m-remote__broken">
|
|
29690
30083
|
<m-icon name="link-broken" color="currentColor" />
|
|
29691
30084
|
<span class="m-remote__reason">
|
|
29692
30085
|
@switch (failure().reason) {
|
|
29693
|
-
@case ('invalid-link') {
|
|
29694
|
-
|
|
29695
|
-
|
|
29696
|
-
@case ('
|
|
29697
|
-
|
|
29698
|
-
|
|
30086
|
+
@case ('invalid-link') {
|
|
30087
|
+
{{ 'remote-invalid-link' | translate }}
|
|
30088
|
+
}
|
|
30089
|
+
@case ('config-not-found') {
|
|
30090
|
+
{{ 'remote-config-not-found' | translate }}
|
|
30091
|
+
}
|
|
30092
|
+
@case ('script-failed') {
|
|
30093
|
+
{{ 'remote-script-failed' | translate }}
|
|
30094
|
+
}
|
|
30095
|
+
@case ('element-timeout') {
|
|
30096
|
+
{{ 'remote-element-timeout' | translate }}
|
|
30097
|
+
}
|
|
30098
|
+
@case ('offline') {
|
|
30099
|
+
{{ 'remote-offline' | translate }}
|
|
30100
|
+
}
|
|
30101
|
+
@case ('tier-conflict') {
|
|
30102
|
+
{{ 'remote-tier-conflict' | translate }}
|
|
30103
|
+
}
|
|
29699
30104
|
}
|
|
29700
30105
|
</span>
|
|
29701
30106
|
<span class="m-remote__detail">{{ appLink() }}</span>
|
|
@@ -29707,7 +30112,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
29707
30112
|
`,
|
|
29708
30113
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
29709
30114
|
encapsulation: ViewEncapsulation.None,
|
|
29710
|
-
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-remote{display:block;width:100%;min-height:100%;flex:1;isolation:isolate}.m-
|
|
30115
|
+
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-remote{display:block;width:100%;min-height:100%;flex:1;isolation:isolate}.m-remote__broken,.m-remote__self-beta{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:24px}.m-remote__broken,.m-remote__self-beta{color:var(--m-text-secondary)}.m-remote--booting{position:relative;min-height:100vh}.m-remote--booting>.m-remote__splash{position:absolute;inset:0;z-index:1}.m-remote--booting>:not(.m-remote__splash){visibility:hidden}.m-remote__splash{display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-height:100vh;background:var(--m-background)}.m-remote__splash-mark{display:flex;width:96px;height:96px;animation:m-remote-breathe 1.6s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.m-remote__splash-mark{animation:none}}.m-remote__detail{font-size:.85em}@keyframes m-remote-breathe{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.93)}}\n"]
|
|
29711
30116
|
}]
|
|
29712
30117
|
}],
|
|
29713
30118
|
ctorParameters: () => [],
|
|
@@ -29832,6 +30237,22 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
29832
30237
|
required: false
|
|
29833
30238
|
}]
|
|
29834
30239
|
}],
|
|
30240
|
+
glyph: [{
|
|
30241
|
+
type: i0.Input,
|
|
30242
|
+
args: [{
|
|
30243
|
+
isSignal: true,
|
|
30244
|
+
alias: "glyph",
|
|
30245
|
+
required: false
|
|
30246
|
+
}]
|
|
30247
|
+
}],
|
|
30248
|
+
appColor: [{
|
|
30249
|
+
type: i0.Input,
|
|
30250
|
+
args: [{
|
|
30251
|
+
isSignal: true,
|
|
30252
|
+
alias: "appColor",
|
|
30253
|
+
required: false
|
|
30254
|
+
}]
|
|
30255
|
+
}],
|
|
29835
30256
|
loaded: [{
|
|
29836
30257
|
type: i0.Output,
|
|
29837
30258
|
args: ["loaded"]
|
|
@@ -37915,140 +38336,6 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
37915
38336
|
args: ["inner", { isSignal: true }]
|
|
37916
38337
|
}] }
|
|
37917
38338
|
});
|
|
37918
|
-
var AppLogoComponent = class AppLogoComponent {
|
|
37919
|
-
glyph = input(...ngDevMode ? [void 0, { debugName: "glyph" }] : /* istanbul ignore next */ []);
|
|
37920
|
-
appColor = input(...ngDevMode ? [void 0, { debugName: "appColor" }] : /* istanbul ignore next */ []);
|
|
37921
|
-
name = input(...ngDevMode ? [void 0, { debugName: "name" }] : /* istanbul ignore next */ []);
|
|
37922
|
-
color = computed(() => {
|
|
37923
|
-
const value = this.appColor();
|
|
37924
|
-
return value ? normalizeAppColor(value) ?? null : null;
|
|
37925
|
-
}, ...ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []);
|
|
37926
|
-
shadow = computed(() => {
|
|
37927
|
-
const color = this.color();
|
|
37928
|
-
return color ? appLogoShadowColor(color) : null;
|
|
37929
|
-
}, ...ngDevMode ? [{ debugName: "shadow" }] : /* istanbul ignore next */ []);
|
|
37930
|
-
mask = computed(() => {
|
|
37931
|
-
const glyph = this.glyph();
|
|
37932
|
-
return glyph ? logoGlyphMaskUrl(glyph) : void 0;
|
|
37933
|
-
}, ...ngDevMode ? [{ debugName: "mask" }] : /* istanbul ignore next */ []);
|
|
37934
|
-
letter = computed(() => (this.name()?.trim().charAt(0) ?? "").toUpperCase(), ...ngDevMode ? [{ debugName: "letter" }] : /* istanbul ignore next */ []);
|
|
37935
|
-
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
37936
|
-
minVersion: "12.0.0",
|
|
37937
|
-
version: "22.2.1",
|
|
37938
|
-
ngImport: i0,
|
|
37939
|
-
type: AppLogoComponent,
|
|
37940
|
-
deps: [],
|
|
37941
|
-
target: i0.ɵɵFactoryTarget.Component
|
|
37942
|
-
});
|
|
37943
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
37944
|
-
minVersion: "17.0.0",
|
|
37945
|
-
version: "22.2.1",
|
|
37946
|
-
type: AppLogoComponent,
|
|
37947
|
-
isStandalone: true,
|
|
37948
|
-
selector: "m-app-logo",
|
|
37949
|
-
inputs: {
|
|
37950
|
-
glyph: {
|
|
37951
|
-
classPropertyName: "glyph",
|
|
37952
|
-
publicName: "glyph",
|
|
37953
|
-
isSignal: true,
|
|
37954
|
-
isRequired: false,
|
|
37955
|
-
transformFunction: null
|
|
37956
|
-
},
|
|
37957
|
-
appColor: {
|
|
37958
|
-
classPropertyName: "appColor",
|
|
37959
|
-
publicName: "appColor",
|
|
37960
|
-
isSignal: true,
|
|
37961
|
-
isRequired: false,
|
|
37962
|
-
transformFunction: null
|
|
37963
|
-
},
|
|
37964
|
-
name: {
|
|
37965
|
-
classPropertyName: "name",
|
|
37966
|
-
publicName: "name",
|
|
37967
|
-
isSignal: true,
|
|
37968
|
-
isRequired: false,
|
|
37969
|
-
transformFunction: null
|
|
37970
|
-
}
|
|
37971
|
-
},
|
|
37972
|
-
host: {
|
|
37973
|
-
attributes: { "role": "img" },
|
|
37974
|
-
properties: {
|
|
37975
|
-
"attr.aria-label": "name() || null",
|
|
37976
|
-
"style.--m-app-logo-color": "color()",
|
|
37977
|
-
"style.--m-app-logo-shadow": "shadow()"
|
|
37978
|
-
},
|
|
37979
|
-
classAttribute: "m-app-logo"
|
|
37980
|
-
},
|
|
37981
|
-
ngImport: i0,
|
|
37982
|
-
template: `
|
|
37983
|
-
<span class="m-app-logo__mark">
|
|
37984
|
-
@if (mask(); as url) {
|
|
37985
|
-
<span class="m-app-logo__glyph" [style.mask-image]="url"></span>
|
|
37986
|
-
} @else {
|
|
37987
|
-
<span class="m-app-logo__letter">{{ letter() }}</span>
|
|
37988
|
-
}
|
|
37989
|
-
</span>
|
|
37990
|
-
`,
|
|
37991
|
-
isInline: true,
|
|
37992
|
-
styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;aspect-ratio:1;container-type:size;border-radius:22%;overflow:hidden;background:var(--m-app-logo-color, var(--m-text-quaternary))}.m-app-logo__mark{display:flex;align-items:center;justify-content:center;width:100%;height:100%;filter:drop-shadow(0 4cqmin 3cqmin var(--m-app-logo-shadow, rgba(0, 0, 0, .25)))}.m-app-logo__glyph{width:60%;height:60%;background:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.m-app-logo__letter{color:#fff;font-size:50cqmin;font-weight:700;line-height:1}\n"],
|
|
37993
|
-
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
37994
|
-
});
|
|
37995
|
-
};
|
|
37996
|
-
i0.ɵɵngDeclareClassMetadata({
|
|
37997
|
-
minVersion: "12.0.0",
|
|
37998
|
-
version: "22.2.1",
|
|
37999
|
-
ngImport: i0,
|
|
38000
|
-
type: AppLogoComponent,
|
|
38001
|
-
decorators: [{
|
|
38002
|
-
type: Component,
|
|
38003
|
-
args: [{
|
|
38004
|
-
selector: "m-app-logo",
|
|
38005
|
-
template: `
|
|
38006
|
-
<span class="m-app-logo__mark">
|
|
38007
|
-
@if (mask(); as url) {
|
|
38008
|
-
<span class="m-app-logo__glyph" [style.mask-image]="url"></span>
|
|
38009
|
-
} @else {
|
|
38010
|
-
<span class="m-app-logo__letter">{{ letter() }}</span>
|
|
38011
|
-
}
|
|
38012
|
-
</span>
|
|
38013
|
-
`,
|
|
38014
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
38015
|
-
host: {
|
|
38016
|
-
class: "m-app-logo",
|
|
38017
|
-
role: "img",
|
|
38018
|
-
"[attr.aria-label]": "name() || null",
|
|
38019
|
-
"[style.--m-app-logo-color]": "color()",
|
|
38020
|
-
"[style.--m-app-logo-shadow]": "shadow()"
|
|
38021
|
-
},
|
|
38022
|
-
styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;aspect-ratio:1;container-type:size;border-radius:22%;overflow:hidden;background:var(--m-app-logo-color, var(--m-text-quaternary))}.m-app-logo__mark{display:flex;align-items:center;justify-content:center;width:100%;height:100%;filter:drop-shadow(0 4cqmin 3cqmin var(--m-app-logo-shadow, rgba(0, 0, 0, .25)))}.m-app-logo__glyph{width:60%;height:60%;background:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.m-app-logo__letter{color:#fff;font-size:50cqmin;font-weight:700;line-height:1}\n"]
|
|
38023
|
-
}]
|
|
38024
|
-
}],
|
|
38025
|
-
propDecorators: {
|
|
38026
|
-
glyph: [{
|
|
38027
|
-
type: i0.Input,
|
|
38028
|
-
args: [{
|
|
38029
|
-
isSignal: true,
|
|
38030
|
-
alias: "glyph",
|
|
38031
|
-
required: false
|
|
38032
|
-
}]
|
|
38033
|
-
}],
|
|
38034
|
-
appColor: [{
|
|
38035
|
-
type: i0.Input,
|
|
38036
|
-
args: [{
|
|
38037
|
-
isSignal: true,
|
|
38038
|
-
alias: "appColor",
|
|
38039
|
-
required: false
|
|
38040
|
-
}]
|
|
38041
|
-
}],
|
|
38042
|
-
name: [{
|
|
38043
|
-
type: i0.Input,
|
|
38044
|
-
args: [{
|
|
38045
|
-
isSignal: true,
|
|
38046
|
-
alias: "name",
|
|
38047
|
-
required: false
|
|
38048
|
-
}]
|
|
38049
|
-
}]
|
|
38050
|
-
}
|
|
38051
|
-
});
|
|
38052
38339
|
var AppCardComponent = class AppCardComponent {
|
|
38053
38340
|
app = input.required(...ngDevMode ? [{ debugName: "app" }] : /* istanbul ignore next */ []);
|
|
38054
38341
|
variant = input("card", ...ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []);
|
|
@@ -38168,7 +38455,11 @@ var AppCardComponent = class AppCardComponent {
|
|
|
38168
38455
|
inputs: [
|
|
38169
38456
|
"glyph",
|
|
38170
38457
|
"appColor",
|
|
38171
|
-
"name"
|
|
38458
|
+
"name",
|
|
38459
|
+
"link",
|
|
38460
|
+
"variant",
|
|
38461
|
+
"tone",
|
|
38462
|
+
"size"
|
|
38172
38463
|
]
|
|
38173
38464
|
},
|
|
38174
38465
|
{
|
|
@@ -38462,7 +38753,11 @@ var LogoGlyphInputComponent = class LogoGlyphInputComponent {
|
|
|
38462
38753
|
inputs: [
|
|
38463
38754
|
"glyph",
|
|
38464
38755
|
"appColor",
|
|
38465
|
-
"name"
|
|
38756
|
+
"name",
|
|
38757
|
+
"link",
|
|
38758
|
+
"variant",
|
|
38759
|
+
"tone",
|
|
38760
|
+
"size"
|
|
38466
38761
|
]
|
|
38467
38762
|
},
|
|
38468
38763
|
{
|
|
@@ -41109,8 +41404,8 @@ var NavHeaderComponent = class NavHeaderComponent {
|
|
|
41109
41404
|
classAttribute: "m-nav-header"
|
|
41110
41405
|
},
|
|
41111
41406
|
ngImport: i0,
|
|
41112
|
-
template: "<m-section>\n @if (_isSearch() && _searchOpen()) {\n <!-- Searching: the field takes the row the trail was on, so the nav is\n hidden while there is something to type into. -->\n <m-section-search\n class=\"nav-header__search\"\n [(isOpen)]=\"_searchOpen\"\n [value]=\"_searchStore.query()\"\n [searchLabel]=\"_searchLabel()\"\n (searchChange)=\"_searchStore.updateQuery($event)\"\n />\n } @else if (_trail() || _isSearch()) {\n <!-- The nav's row, and the bar's toggle stands in it rather than in a row\n stacked on top of it. Both slots are written a single `@if` deep: a\n Section matches its projected slots by tag, and a node nested deeper\n falls through to the body instead. -->\n <m-section-back [back]=\"_hasParent()\" (navigate)=\"_navStore.back()\">\n @if (_trail(); as trail) {\n <m-nav-trail [config]=\"trail\" />\n }\n @if (_isSearch()) {\n <m-button\n class=\"nav-header__search-toggle\"\n [config]=\"_searchToggle\"\n (clicked)=\"_openSearch()\"\n />\n }\n </m-section-back>\n }\n\n @if (_user(); as user) {\n <m-user class=\"nav-header__user\" [id]=\"user.id\" [user]=\"user\" mRef=\"root_user\">\n <span class=\"nav-header__username\">@{{ user.username }}</span>\n </m-user>\n } @else if (_header(); as h) {\n @if (h.label) {\n <m-section-header class=\"nav-header__title\" [icon]=\"h.icon\" [label]=\"h.label\" />\n }\n }\n</m-section>\n",
|
|
41113
|
-
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)}}.nav-header__user{display:block;padding:1rem}.nav-header__username{font-size:.6875rem;font-weight:600;color:var(--m-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}m-section-search.nav-header__search{--_nav-row-height: var(--section-header-min-height, calc(var(--section-header-py, .5rem) * 2 + 1.25rem));min-height:var(--_nav-row-height);padding-block:0;--m-input-clear-height: calc(var(--_nav-row-height) - .5rem);--m-input-clear-min-height: calc(var(--_nav-row-height) - .5rem)}\n"],
|
|
41407
|
+
template: "<m-section>\n @if (_isSearch() && _searchOpen()) {\n <!-- Searching: the field takes the row the trail was on, so the nav is\n hidden while there is something to type into. -->\n <m-section-search\n class=\"nav-header__search\"\n [(isOpen)]=\"_searchOpen\"\n [value]=\"_searchStore.query()\"\n [searchLabel]=\"_searchLabel()\"\n (searchChange)=\"_searchStore.updateQuery($event)\"\n />\n } @else if (_trail() || _isSearch()) {\n <!-- The nav's row, and the bar's toggle stands in it rather than in a row\n stacked on top of it. Both slots are written a single `@if` deep: a\n Section matches its projected slots by tag, and a node nested deeper\n falls through to the body instead. -->\n <m-section-back [back]=\"_hasParent()\" (navigate)=\"_navStore.back()\">\n @if (_trail(); as trail) {\n <m-nav-trail [config]=\"trail\" />\n }\n @if (_isSearch()) {\n <m-button\n class=\"nav-header__search-toggle\"\n [config]=\"_searchToggle\"\n (clicked)=\"_openSearch()\"\n />\n }\n </m-section-back>\n }\n\n @if (_user(); as user) {\n <m-user class=\"nav-header__user\" [id]=\"user.id\" [user]=\"user\" mRef=\"root_user\">\n <span class=\"nav-header__username\">@{{ user.username }}</span>\n </m-user>\n } @else if (_header(); as h) {\n @if (h.label) {\n @if (h.appLogo; as logo) {\n <!-- A mounted app's header draws its AppLogo in the icon's place. -->\n <m-section-header class=\"nav-header__title\" [label]=\"h.label\">\n <m-app-logo class=\"nav-header__app-logo\" [glyph]=\"logo.glyph\" [appColor]=\"logo.color\" [name]=\"logo.name\" />\n </m-section-header>\n } @else {\n <m-section-header class=\"nav-header__title\" [icon]=\"h.icon\" [label]=\"h.label\" />\n }\n }\n }\n</m-section>\n",
|
|
41408
|
+
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)}}.nav-header__user{display:block;padding:1rem}.nav-header__username{font-size:.6875rem;font-weight:600;color:var(--m-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}m-section-search.nav-header__search{--_nav-row-height: var(--section-header-min-height, calc(var(--section-header-py, .5rem) * 2 + 1.25rem));min-height:var(--_nav-row-height);padding-block:0;--m-input-clear-height: calc(var(--_nav-row-height) - .5rem);--m-input-clear-min-height: calc(var(--_nav-row-height) - .5rem)}.nav-header__title .nav-header__app-logo{flex-shrink:0;align-self:flex-start;width:var(--m-section-header-icon-box, 1.5125rem);height:var(--m-section-header-icon-box, 1.5125rem)}\n"],
|
|
41114
41409
|
dependencies: [
|
|
41115
41410
|
{
|
|
41116
41411
|
kind: "component",
|
|
@@ -41267,6 +41562,20 @@ var NavHeaderComponent = class NavHeaderComponent {
|
|
|
41267
41562
|
"mRefToggle",
|
|
41268
41563
|
"mRefParams"
|
|
41269
41564
|
]
|
|
41565
|
+
},
|
|
41566
|
+
{
|
|
41567
|
+
kind: "component",
|
|
41568
|
+
type: AppLogoComponent,
|
|
41569
|
+
selector: "m-app-logo",
|
|
41570
|
+
inputs: [
|
|
41571
|
+
"glyph",
|
|
41572
|
+
"appColor",
|
|
41573
|
+
"name",
|
|
41574
|
+
"link",
|
|
41575
|
+
"variant",
|
|
41576
|
+
"tone",
|
|
41577
|
+
"size"
|
|
41578
|
+
]
|
|
41270
41579
|
}
|
|
41271
41580
|
],
|
|
41272
41581
|
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
|
@@ -41290,7 +41599,8 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
41290
41599
|
SectionSearchComponent,
|
|
41291
41600
|
ButtonComponent,
|
|
41292
41601
|
UserComponent,
|
|
41293
|
-
MRefDirective
|
|
41602
|
+
MRefDirective,
|
|
41603
|
+
AppLogoComponent
|
|
41294
41604
|
],
|
|
41295
41605
|
encapsulation: ViewEncapsulation.None,
|
|
41296
41606
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
@@ -41299,8 +41609,8 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
41299
41609
|
"[style.display]": "\"block\"",
|
|
41300
41610
|
"[style.--m-section-min-height]": "\"0\""
|
|
41301
41611
|
},
|
|
41302
|
-
template: "<m-section>\n @if (_isSearch() && _searchOpen()) {\n <!-- Searching: the field takes the row the trail was on, so the nav is\n hidden while there is something to type into. -->\n <m-section-search\n class=\"nav-header__search\"\n [(isOpen)]=\"_searchOpen\"\n [value]=\"_searchStore.query()\"\n [searchLabel]=\"_searchLabel()\"\n (searchChange)=\"_searchStore.updateQuery($event)\"\n />\n } @else if (_trail() || _isSearch()) {\n <!-- The nav's row, and the bar's toggle stands in it rather than in a row\n stacked on top of it. Both slots are written a single `@if` deep: a\n Section matches its projected slots by tag, and a node nested deeper\n falls through to the body instead. -->\n <m-section-back [back]=\"_hasParent()\" (navigate)=\"_navStore.back()\">\n @if (_trail(); as trail) {\n <m-nav-trail [config]=\"trail\" />\n }\n @if (_isSearch()) {\n <m-button\n class=\"nav-header__search-toggle\"\n [config]=\"_searchToggle\"\n (clicked)=\"_openSearch()\"\n />\n }\n </m-section-back>\n }\n\n @if (_user(); as user) {\n <m-user class=\"nav-header__user\" [id]=\"user.id\" [user]=\"user\" mRef=\"root_user\">\n <span class=\"nav-header__username\">@{{ user.username }}</span>\n </m-user>\n } @else if (_header(); as h) {\n @if (h.label) {\n <m-section-header class=\"nav-header__title\" [icon]=\"h.icon\" [label]=\"h.label\" />\n }\n }\n</m-section>\n",
|
|
41303
|
-
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)}}.nav-header__user{display:block;padding:1rem}.nav-header__username{font-size:.6875rem;font-weight:600;color:var(--m-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}m-section-search.nav-header__search{--_nav-row-height: var(--section-header-min-height, calc(var(--section-header-py, .5rem) * 2 + 1.25rem));min-height:var(--_nav-row-height);padding-block:0;--m-input-clear-height: calc(var(--_nav-row-height) - .5rem);--m-input-clear-min-height: calc(var(--_nav-row-height) - .5rem)}\n"]
|
|
41612
|
+
template: "<m-section>\n @if (_isSearch() && _searchOpen()) {\n <!-- Searching: the field takes the row the trail was on, so the nav is\n hidden while there is something to type into. -->\n <m-section-search\n class=\"nav-header__search\"\n [(isOpen)]=\"_searchOpen\"\n [value]=\"_searchStore.query()\"\n [searchLabel]=\"_searchLabel()\"\n (searchChange)=\"_searchStore.updateQuery($event)\"\n />\n } @else if (_trail() || _isSearch()) {\n <!-- The nav's row, and the bar's toggle stands in it rather than in a row\n stacked on top of it. Both slots are written a single `@if` deep: a\n Section matches its projected slots by tag, and a node nested deeper\n falls through to the body instead. -->\n <m-section-back [back]=\"_hasParent()\" (navigate)=\"_navStore.back()\">\n @if (_trail(); as trail) {\n <m-nav-trail [config]=\"trail\" />\n }\n @if (_isSearch()) {\n <m-button\n class=\"nav-header__search-toggle\"\n [config]=\"_searchToggle\"\n (clicked)=\"_openSearch()\"\n />\n }\n </m-section-back>\n }\n\n @if (_user(); as user) {\n <m-user class=\"nav-header__user\" [id]=\"user.id\" [user]=\"user\" mRef=\"root_user\">\n <span class=\"nav-header__username\">@{{ user.username }}</span>\n </m-user>\n } @else if (_header(); as h) {\n @if (h.label) {\n @if (h.appLogo; as logo) {\n <!-- A mounted app's header draws its AppLogo in the icon's place. -->\n <m-section-header class=\"nav-header__title\" [label]=\"h.label\">\n <m-app-logo class=\"nav-header__app-logo\" [glyph]=\"logo.glyph\" [appColor]=\"logo.color\" [name]=\"logo.name\" />\n </m-section-header>\n } @else {\n <m-section-header class=\"nav-header__title\" [icon]=\"h.icon\" [label]=\"h.label\" />\n }\n }\n }\n</m-section>\n",
|
|
41613
|
+
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)}}.nav-header__user{display:block;padding:1rem}.nav-header__username{font-size:.6875rem;font-weight:600;color:var(--m-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}m-section-search.nav-header__search{--_nav-row-height: var(--section-header-min-height, calc(var(--section-header-py, .5rem) * 2 + 1.25rem));min-height:var(--_nav-row-height);padding-block:0;--m-input-clear-height: calc(var(--_nav-row-height) - .5rem);--m-input-clear-min-height: calc(var(--_nav-row-height) - .5rem)}.nav-header__title .nav-header__app-logo{flex-shrink:0;align-self:flex-start;width:var(--m-section-header-icon-box, 1.5125rem);height:var(--m-section-header-icon-box, 1.5125rem)}\n"]
|
|
41304
41614
|
}]
|
|
41305
41615
|
}],
|
|
41306
41616
|
ctorParameters: () => []
|
|
@@ -41406,6 +41716,14 @@ var NavMenuComponent = class NavMenuComponent {
|
|
|
41406
41716
|
},
|
|
41407
41717
|
ngImport: i0,
|
|
41408
41718
|
template: `
|
|
41719
|
+
<!-- A row standing for a mounted app draws its AppLogo, else its icon. -->
|
|
41720
|
+
<ng-template #iconTemplate let-item>
|
|
41721
|
+
@if (item.appLogo; as logo) {
|
|
41722
|
+
<m-app-logo class="nav-menu__app-logo" [glyph]="logo.glyph" [appColor]="logo.color" [name]="logo.name" />
|
|
41723
|
+
} @else {
|
|
41724
|
+
<m-icon [name]="item.icon || 'menu'" [baseUrl]="baseUrl()" />
|
|
41725
|
+
}
|
|
41726
|
+
</ng-template>
|
|
41409
41727
|
<ng-template #menuTemplate let-item="row">
|
|
41410
41728
|
<div class="nav-menu__item">
|
|
41411
41729
|
@if (item.nav; as nav) {
|
|
@@ -41419,7 +41737,7 @@ var NavMenuComponent = class NavMenuComponent {
|
|
|
41419
41737
|
class="nav-menu__link"
|
|
41420
41738
|
>
|
|
41421
41739
|
<span class="nav-menu__icon">
|
|
41422
|
-
<
|
|
41740
|
+
<ng-container *ngTemplateOutlet="iconTemplate; context: { $implicit: item }" />
|
|
41423
41741
|
</span>
|
|
41424
41742
|
<span class="nav-menu__label">{{ item.label | translate }}</span>
|
|
41425
41743
|
</a>
|
|
@@ -41437,13 +41755,13 @@ var NavMenuComponent = class NavMenuComponent {
|
|
|
41437
41755
|
} @else if (item.href; as href) {
|
|
41438
41756
|
<a [href]="href" class="nav-menu__link">
|
|
41439
41757
|
<span class="nav-menu__icon">
|
|
41440
|
-
<
|
|
41758
|
+
<ng-container *ngTemplateOutlet="iconTemplate; context: { $implicit: item }" />
|
|
41441
41759
|
</span>
|
|
41442
41760
|
<span class="nav-menu__label">{{ item.label | translate }}</span>
|
|
41443
41761
|
</a>
|
|
41444
41762
|
} @else {
|
|
41445
41763
|
<span class="nav-menu__icon">
|
|
41446
|
-
<
|
|
41764
|
+
<ng-container *ngTemplateOutlet="iconTemplate; context: { $implicit: item }" />
|
|
41447
41765
|
</span>
|
|
41448
41766
|
<span class="nav-menu__label">
|
|
41449
41767
|
<span class="nav-menu__text">{{ item.label | translate }}</span>
|
|
@@ -41456,8 +41774,18 @@ var NavMenuComponent = class NavMenuComponent {
|
|
|
41456
41774
|
</div>
|
|
41457
41775
|
`,
|
|
41458
41776
|
isInline: true,
|
|
41459
|
-
styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%}.nav-menu{padding:0;margin:0}.nav-menu ul{display:flex;flex-direction:column;gap:0;padding:0;margin:0}.nav-menu li{padding:0;list-style:none;width:100%;border-bottom:1px solid rgba(0,0,0,.02)}.nav-menu li:last-child{border-bottom:none}.nav-menu__item{display:flex;align-items:center;gap:.75rem;width:100%;position:relative;color:var(--m-text-secondary);background:transparent}.nav-menu__item:not(:has(.nav-menu__link)){padding:.625rem 1rem}.nav-menu__link{display:flex;align-items:center;gap:.75rem;padding:.625rem 1rem;border-radius:0;transition:all .15s cubic-bezier(.4,0,.2,1);cursor:pointer;width:100%;color:inherit;text-decoration:none}.nav-menu__link:hover{background:#00000008;color:var(--m-text)}.nav-menu__link:hover .nav-menu__icon{color:var(--m-text)}.nav-menu__link:hover .nav-menu__label{color:var(--m-text);font-weight:600}.nav-menu__browse{flex:none;margin-inline-end:.5rem;color:var(--m-text-tertiary)}.nav-menu__icon{display:flex;align-items:center;justify-content:center;color:var(--m-text-tertiary);transition:color .15s ease;width:1.15rem;height:1.15rem}.nav-menu__icon .m-icon{display:flex;align-items:center}.nav-menu__label{flex:1;display:block;width:100%;font-size:.8125rem;font-weight:500;letter-spacing:.01em;color:inherit;text-decoration:none}.nav-menu__item:has(.active){background:linear-gradient(90deg,color-mix(in srgb,var(--m-mm) 6%,transparent) 0%,color-mix(in srgb,var(--m-mm) 2%,transparent) 60%,transparent 100%);color:var(--m-mm);border-radius:0}.nav-menu__item:has(.active):after{content:\"\";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,rgba(255,255,255,.3) 0%,rgba(255,255,255,.05) 50%,transparent 100%);z-index:3}.nav-menu__item:has(.active) .nav-menu__icon{color:var(--m-mm);filter:drop-shadow(0 0 3px color-mix(in srgb,var(--m-mm) 20%,transparent))}.nav-menu__item:has(.active) .nav-menu__label{color:var(--m-mm);font-weight:700;letter-spacing:.015em}\n"],
|
|
41777
|
+
styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%}.nav-menu{padding:0;margin:0}.nav-menu ul{display:flex;flex-direction:column;gap:0;padding:0;margin:0}.nav-menu li{padding:0;list-style:none;width:100%;border-bottom:1px solid rgba(0,0,0,.02)}.nav-menu li:last-child{border-bottom:none}.nav-menu__item{display:flex;align-items:center;gap:.75rem;width:100%;position:relative;color:var(--m-text-secondary);background:transparent}.nav-menu__item:not(:has(.nav-menu__link)){padding:.625rem 1rem}.nav-menu__link{display:flex;align-items:center;gap:.75rem;padding:.625rem 1rem;border-radius:0;transition:all .15s cubic-bezier(.4,0,.2,1);cursor:pointer;width:100%;color:inherit;text-decoration:none}.nav-menu__link:hover{background:#00000008;color:var(--m-text)}.nav-menu__link:hover .nav-menu__icon{color:var(--m-text)}.nav-menu__link:hover .nav-menu__label{color:var(--m-text);font-weight:600}.nav-menu__browse{flex:none;margin-inline-end:.5rem;color:var(--m-text-tertiary)}.nav-menu__icon{display:flex;align-items:center;justify-content:center;color:var(--m-text-tertiary);transition:color .15s ease;width:1.15rem;height:1.15rem}.nav-menu__app-logo{display:block;width:100%;height:100%}.nav-menu__icon .m-icon{display:flex;align-items:center}.nav-menu__label{flex:1;display:block;width:100%;font-size:.8125rem;font-weight:500;letter-spacing:.01em;color:inherit;text-decoration:none}.nav-menu__item:has(.active){background:linear-gradient(90deg,color-mix(in srgb,var(--m-mm) 6%,transparent) 0%,color-mix(in srgb,var(--m-mm) 2%,transparent) 60%,transparent 100%);color:var(--m-mm);border-radius:0}.nav-menu__item:has(.active):after{content:\"\";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,rgba(255,255,255,.3) 0%,rgba(255,255,255,.05) 50%,transparent 100%);z-index:3}.nav-menu__item:has(.active) .nav-menu__icon{color:var(--m-mm);filter:drop-shadow(0 0 3px color-mix(in srgb,var(--m-mm) 20%,transparent))}.nav-menu__item:has(.active) .nav-menu__label{color:var(--m-mm);font-weight:700;letter-spacing:.015em}\n"],
|
|
41460
41778
|
dependencies: [
|
|
41779
|
+
{
|
|
41780
|
+
kind: "directive",
|
|
41781
|
+
type: NgTemplateOutlet,
|
|
41782
|
+
selector: "[ngTemplateOutlet]",
|
|
41783
|
+
inputs: [
|
|
41784
|
+
"ngTemplateOutletContext",
|
|
41785
|
+
"ngTemplateOutlet",
|
|
41786
|
+
"ngTemplateOutletInjector"
|
|
41787
|
+
]
|
|
41788
|
+
},
|
|
41461
41789
|
{
|
|
41462
41790
|
kind: "component",
|
|
41463
41791
|
type: IconComponent,
|
|
@@ -41474,6 +41802,20 @@ var NavMenuComponent = class NavMenuComponent {
|
|
|
41474
41802
|
],
|
|
41475
41803
|
outputs: ["configChange"]
|
|
41476
41804
|
},
|
|
41805
|
+
{
|
|
41806
|
+
kind: "component",
|
|
41807
|
+
type: AppLogoComponent,
|
|
41808
|
+
selector: "m-app-logo",
|
|
41809
|
+
inputs: [
|
|
41810
|
+
"glyph",
|
|
41811
|
+
"appColor",
|
|
41812
|
+
"name",
|
|
41813
|
+
"link",
|
|
41814
|
+
"variant",
|
|
41815
|
+
"tone",
|
|
41816
|
+
"size"
|
|
41817
|
+
]
|
|
41818
|
+
},
|
|
41477
41819
|
{
|
|
41478
41820
|
kind: "directive",
|
|
41479
41821
|
type: MRefDirective,
|
|
@@ -41555,6 +41897,14 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
41555
41897
|
args: [{
|
|
41556
41898
|
selector: "m-nav-menu",
|
|
41557
41899
|
template: `
|
|
41900
|
+
<!-- A row standing for a mounted app draws its AppLogo, else its icon. -->
|
|
41901
|
+
<ng-template #iconTemplate let-item>
|
|
41902
|
+
@if (item.appLogo; as logo) {
|
|
41903
|
+
<m-app-logo class="nav-menu__app-logo" [glyph]="logo.glyph" [appColor]="logo.color" [name]="logo.name" />
|
|
41904
|
+
} @else {
|
|
41905
|
+
<m-icon [name]="item.icon || 'menu'" [baseUrl]="baseUrl()" />
|
|
41906
|
+
}
|
|
41907
|
+
</ng-template>
|
|
41558
41908
|
<ng-template #menuTemplate let-item="row">
|
|
41559
41909
|
<div class="nav-menu__item">
|
|
41560
41910
|
@if (item.nav; as nav) {
|
|
@@ -41568,7 +41918,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
41568
41918
|
class="nav-menu__link"
|
|
41569
41919
|
>
|
|
41570
41920
|
<span class="nav-menu__icon">
|
|
41571
|
-
<
|
|
41921
|
+
<ng-container *ngTemplateOutlet="iconTemplate; context: { $implicit: item }" />
|
|
41572
41922
|
</span>
|
|
41573
41923
|
<span class="nav-menu__label">{{ item.label | translate }}</span>
|
|
41574
41924
|
</a>
|
|
@@ -41586,13 +41936,13 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
41586
41936
|
} @else if (item.href; as href) {
|
|
41587
41937
|
<a [href]="href" class="nav-menu__link">
|
|
41588
41938
|
<span class="nav-menu__icon">
|
|
41589
|
-
<
|
|
41939
|
+
<ng-container *ngTemplateOutlet="iconTemplate; context: { $implicit: item }" />
|
|
41590
41940
|
</span>
|
|
41591
41941
|
<span class="nav-menu__label">{{ item.label | translate }}</span>
|
|
41592
41942
|
</a>
|
|
41593
41943
|
} @else {
|
|
41594
41944
|
<span class="nav-menu__icon">
|
|
41595
|
-
<
|
|
41945
|
+
<ng-container *ngTemplateOutlet="iconTemplate; context: { $implicit: item }" />
|
|
41596
41946
|
</span>
|
|
41597
41947
|
<span class="nav-menu__label">
|
|
41598
41948
|
<span class="nav-menu__text">{{ item.label | translate }}</span>
|
|
@@ -41606,13 +41956,15 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
41606
41956
|
`,
|
|
41607
41957
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
41608
41958
|
imports: [
|
|
41959
|
+
NgTemplateOutlet,
|
|
41609
41960
|
IconComponent,
|
|
41961
|
+
AppLogoComponent,
|
|
41610
41962
|
MRefDirective,
|
|
41611
41963
|
TranslatePipe,
|
|
41612
41964
|
ListComponent,
|
|
41613
41965
|
ButtonComponent
|
|
41614
41966
|
],
|
|
41615
|
-
styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%}.nav-menu{padding:0;margin:0}.nav-menu ul{display:flex;flex-direction:column;gap:0;padding:0;margin:0}.nav-menu li{padding:0;list-style:none;width:100%;border-bottom:1px solid rgba(0,0,0,.02)}.nav-menu li:last-child{border-bottom:none}.nav-menu__item{display:flex;align-items:center;gap:.75rem;width:100%;position:relative;color:var(--m-text-secondary);background:transparent}.nav-menu__item:not(:has(.nav-menu__link)){padding:.625rem 1rem}.nav-menu__link{display:flex;align-items:center;gap:.75rem;padding:.625rem 1rem;border-radius:0;transition:all .15s cubic-bezier(.4,0,.2,1);cursor:pointer;width:100%;color:inherit;text-decoration:none}.nav-menu__link:hover{background:#00000008;color:var(--m-text)}.nav-menu__link:hover .nav-menu__icon{color:var(--m-text)}.nav-menu__link:hover .nav-menu__label{color:var(--m-text);font-weight:600}.nav-menu__browse{flex:none;margin-inline-end:.5rem;color:var(--m-text-tertiary)}.nav-menu__icon{display:flex;align-items:center;justify-content:center;color:var(--m-text-tertiary);transition:color .15s ease;width:1.15rem;height:1.15rem}.nav-menu__icon .m-icon{display:flex;align-items:center}.nav-menu__label{flex:1;display:block;width:100%;font-size:.8125rem;font-weight:500;letter-spacing:.01em;color:inherit;text-decoration:none}.nav-menu__item:has(.active){background:linear-gradient(90deg,color-mix(in srgb,var(--m-mm) 6%,transparent) 0%,color-mix(in srgb,var(--m-mm) 2%,transparent) 60%,transparent 100%);color:var(--m-mm);border-radius:0}.nav-menu__item:has(.active):after{content:\"\";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,rgba(255,255,255,.3) 0%,rgba(255,255,255,.05) 50%,transparent 100%);z-index:3}.nav-menu__item:has(.active) .nav-menu__icon{color:var(--m-mm);filter:drop-shadow(0 0 3px color-mix(in srgb,var(--m-mm) 20%,transparent))}.nav-menu__item:has(.active) .nav-menu__label{color:var(--m-mm);font-weight:700;letter-spacing:.015em}\n"]
|
|
41967
|
+
styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%}.nav-menu{padding:0;margin:0}.nav-menu ul{display:flex;flex-direction:column;gap:0;padding:0;margin:0}.nav-menu li{padding:0;list-style:none;width:100%;border-bottom:1px solid rgba(0,0,0,.02)}.nav-menu li:last-child{border-bottom:none}.nav-menu__item{display:flex;align-items:center;gap:.75rem;width:100%;position:relative;color:var(--m-text-secondary);background:transparent}.nav-menu__item:not(:has(.nav-menu__link)){padding:.625rem 1rem}.nav-menu__link{display:flex;align-items:center;gap:.75rem;padding:.625rem 1rem;border-radius:0;transition:all .15s cubic-bezier(.4,0,.2,1);cursor:pointer;width:100%;color:inherit;text-decoration:none}.nav-menu__link:hover{background:#00000008;color:var(--m-text)}.nav-menu__link:hover .nav-menu__icon{color:var(--m-text)}.nav-menu__link:hover .nav-menu__label{color:var(--m-text);font-weight:600}.nav-menu__browse{flex:none;margin-inline-end:.5rem;color:var(--m-text-tertiary)}.nav-menu__icon{display:flex;align-items:center;justify-content:center;color:var(--m-text-tertiary);transition:color .15s ease;width:1.15rem;height:1.15rem}.nav-menu__app-logo{display:block;width:100%;height:100%}.nav-menu__icon .m-icon{display:flex;align-items:center}.nav-menu__label{flex:1;display:block;width:100%;font-size:.8125rem;font-weight:500;letter-spacing:.01em;color:inherit;text-decoration:none}.nav-menu__item:has(.active){background:linear-gradient(90deg,color-mix(in srgb,var(--m-mm) 6%,transparent) 0%,color-mix(in srgb,var(--m-mm) 2%,transparent) 60%,transparent 100%);color:var(--m-mm);border-radius:0}.nav-menu__item:has(.active):after{content:\"\";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,rgba(255,255,255,.3) 0%,rgba(255,255,255,.05) 50%,transparent 100%);z-index:3}.nav-menu__item:has(.active) .nav-menu__icon{color:var(--m-mm);filter:drop-shadow(0 0 3px color-mix(in srgb,var(--m-mm) 20%,transparent))}.nav-menu__item:has(.active) .nav-menu__label{color:var(--m-mm);font-weight:700;letter-spacing:.015em}\n"]
|
|
41616
41968
|
}]
|
|
41617
41969
|
}],
|
|
41618
41970
|
propDecorators: {
|
|
@@ -42398,7 +42750,11 @@ var NavComponent = class NavComponent {
|
|
|
42398
42750
|
inputs: [
|
|
42399
42751
|
"glyph",
|
|
42400
42752
|
"appColor",
|
|
42401
|
-
"name"
|
|
42753
|
+
"name",
|
|
42754
|
+
"link",
|
|
42755
|
+
"variant",
|
|
42756
|
+
"tone",
|
|
42757
|
+
"size"
|
|
42402
42758
|
]
|
|
42403
42759
|
}
|
|
42404
42760
|
],
|
|
@@ -46182,6 +46538,14 @@ function provideMagWcConfig(options) {
|
|
|
46182
46538
|
provide: NavStore,
|
|
46183
46539
|
useFactory: () => SharedStoreRegistry.getNavStore() || SharedStoreRegistry.getHostInjector()?.get(NavStore, null) || null
|
|
46184
46540
|
},
|
|
46541
|
+
{
|
|
46542
|
+
provide: AppLogoState,
|
|
46543
|
+
useFactory: () => SharedStoreRegistry.getAppLogoState() ?? new AppLogoState()
|
|
46544
|
+
},
|
|
46545
|
+
{
|
|
46546
|
+
provide: APP_THEME_COLOR,
|
|
46547
|
+
useFactory: appThemeColorFactory
|
|
46548
|
+
},
|
|
46185
46549
|
{
|
|
46186
46550
|
provide: MODAL_STORE_REF,
|
|
46187
46551
|
useFactory: () => {
|
|
@@ -46382,6 +46746,14 @@ function provideMagAppConfig(options) {
|
|
|
46382
46746
|
provide: NavStore,
|
|
46383
46747
|
useFactory: () => SharedStoreRegistry.getNavStore() || SharedStoreRegistry.getHostInjector()?.get(NavStore, null) || new NavStore()
|
|
46384
46748
|
},
|
|
46749
|
+
{
|
|
46750
|
+
provide: AppLogoState,
|
|
46751
|
+
useFactory: () => SharedStoreRegistry.getAppLogoState() ?? new AppLogoState()
|
|
46752
|
+
},
|
|
46753
|
+
{
|
|
46754
|
+
provide: APP_THEME_COLOR,
|
|
46755
|
+
useFactory: appThemeColorFactory
|
|
46756
|
+
},
|
|
46385
46757
|
{
|
|
46386
46758
|
provide: NAV_STORE_REF,
|
|
46387
46759
|
useFactory: (localStore) => SharedStoreRegistry.getNavStore() || SharedStoreRegistry.getHostInjector()?.get(NAV_STORE_REF, null) || localStore,
|
|
@@ -46401,6 +46773,11 @@ function provideMagAppConfig(options) {
|
|
|
46401
46773
|
provide: APP_CONTEXT_REF,
|
|
46402
46774
|
useFactory: provideAppContext
|
|
46403
46775
|
},
|
|
46776
|
+
provideAppInitializer(() => {
|
|
46777
|
+
const color = inject(APP_THEME_COLOR);
|
|
46778
|
+
const body = inject(DOCUMENT).body;
|
|
46779
|
+
effect(() => paintAppColor(body, color()));
|
|
46780
|
+
}),
|
|
46404
46781
|
provideAppInitializer(() => {
|
|
46405
46782
|
inject(APP_CONTEXT_REF);
|
|
46406
46783
|
}),
|
|
@@ -46459,6 +46836,60 @@ function bootstrapMagApp(routesOrOptions, maybeOptions) {
|
|
|
46459
46836
|
`;
|
|
46460
46837
|
});
|
|
46461
46838
|
}
|
|
46839
|
+
const SPLASH_ID = "m-splash";
|
|
46840
|
+
const escapeHtml = (value) => value.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
46841
|
+
const splashHtml = ({ appColor, glyph, link }) => {
|
|
46842
|
+
const color = normalizeAppColor(appColor) ?? "#0f172a";
|
|
46843
|
+
const mark = glyph?.trim() ? `<div class="${SPLASH_ID}__glyph"></div>` : `<div class="${SPLASH_ID}__letter">${escapeHtml(link.trim().charAt(0).toUpperCase())}</div>`;
|
|
46844
|
+
const mask = glyph?.trim() ? `
|
|
46845
|
+
#${SPLASH_ID} .${SPLASH_ID}__glyph {
|
|
46846
|
+
width: 100%;
|
|
46847
|
+
height: 100%;
|
|
46848
|
+
background: #fff;
|
|
46849
|
+
-webkit-mask: ${logoGlyphMaskUrl(glyph.trim())} center / contain no-repeat;
|
|
46850
|
+
mask: ${logoGlyphMaskUrl(glyph.trim())} center / contain no-repeat;
|
|
46851
|
+
}` : "";
|
|
46852
|
+
return ` <div id="${SPLASH_ID}">
|
|
46853
|
+
<div class="${SPLASH_ID}__mark" aria-hidden="true">${mark}</div>
|
|
46854
|
+
<style>
|
|
46855
|
+
#${SPLASH_ID} {
|
|
46856
|
+
position: fixed;
|
|
46857
|
+
inset: 0;
|
|
46858
|
+
display: flex;
|
|
46859
|
+
align-items: center;
|
|
46860
|
+
justify-content: center;
|
|
46861
|
+
background: ${color};
|
|
46862
|
+
z-index: 99999;
|
|
46863
|
+
transition: opacity 0.35s ease, visibility 0.35s ease;
|
|
46864
|
+
}
|
|
46865
|
+
#${SPLASH_ID}.hidden {
|
|
46866
|
+
opacity: 0;
|
|
46867
|
+
visibility: hidden;
|
|
46868
|
+
pointer-events: none;
|
|
46869
|
+
}
|
|
46870
|
+
#${SPLASH_ID} .${SPLASH_ID}__mark {
|
|
46871
|
+
display: flex;
|
|
46872
|
+
align-items: center;
|
|
46873
|
+
justify-content: center;
|
|
46874
|
+
width: 72px;
|
|
46875
|
+
height: 72px;
|
|
46876
|
+
animation: m-splash-breathe 1.6s ease-in-out infinite;
|
|
46877
|
+
}${mask}
|
|
46878
|
+
#${SPLASH_ID} .${SPLASH_ID}__letter {
|
|
46879
|
+
color: #fff;
|
|
46880
|
+
font: 700 56px/1 system-ui, sans-serif;
|
|
46881
|
+
}
|
|
46882
|
+
@keyframes m-splash-breathe {
|
|
46883
|
+
0%, 100% { opacity: 1; transform: scale(1); }
|
|
46884
|
+
50% { opacity: 0.55; transform: scale(0.93); }
|
|
46885
|
+
}
|
|
46886
|
+
@media (prefers-reduced-motion: reduce) {
|
|
46887
|
+
#${SPLASH_ID} .${SPLASH_ID}__mark { animation: none; }
|
|
46888
|
+
}
|
|
46889
|
+
</style>
|
|
46890
|
+
</div>
|
|
46891
|
+
`;
|
|
46892
|
+
};
|
|
46462
46893
|
var Domain;
|
|
46463
46894
|
(function(Domain) {
|
|
46464
46895
|
Domain["AUTH"] = "auth";
|
|
@@ -49831,7 +50262,11 @@ var AppTileComponent = class AppTileComponent {
|
|
|
49831
50262
|
inputs: [
|
|
49832
50263
|
"glyph",
|
|
49833
50264
|
"appColor",
|
|
49834
|
-
"name"
|
|
50265
|
+
"name",
|
|
50266
|
+
"link",
|
|
50267
|
+
"variant",
|
|
50268
|
+
"tone",
|
|
50269
|
+
"size"
|
|
49835
50270
|
]
|
|
49836
50271
|
},
|
|
49837
50272
|
{
|
|
@@ -50586,6 +51021,6 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
50586
51021
|
}]
|
|
50587
51022
|
}
|
|
50588
51023
|
});
|
|
50589
|
-
export { ACCESS_DOMAINS, APP_CONTEXT_REF, APP_LINK, APP_LOGO_ICON, APP_LOGO_SOURCE, ASSET_BASE_URL, AUDIENCE_ICONS, AUDIENCE_LEVELS, AccordionBodyDirective, AccordionComponent, AccordionGroupComponent, ActionComponent, AnimatedGraphsComponent, AppAvailability, AppCardComponent, AppIdentityService, AppLogoComponent, AppLogoState, AppRelationType, AppTileComponent, AssetStore, AssetUrlPipe, Assets, AudiencePickerBoxComponent, AudiencePickerComponent, AuthActivityPageComponent, AuthApiService, AuthStore, AutosizeDirective, BadgeComponent, BandingComponent, BaseArrayInputComponent, BaseRootWebComponent, BaseWebComponent, BrowserLocaleService, ButtonComponent, ButtonGroupComponent, CALLING_APP_HEADER, COMPONENT_INPUT_REGISTRY, CardComponent, CardWrapperComponent, CarouselComponent, ChartComponent, ChatBubbleComponent, CheckboxGroupComponent, CheckboxInputComponent, ClearableInputComponent, ClipboardService, ColComponent, ColorPickerInputComponent, CommentItemComponent, CommentsApiService, CommentsComponent, CommentsStore, CompactNumberPipe, ComponentInputComponent, ComponentStepperComponent, ConfigComponent, ConfirmComponent, ContextMenuComponent, CustomIconClass, CustomIconEditComponent, DEFAULT_AUDIENCE, DEFAULT_DENIAL, DEFAULT_DOC_ALIGN, DEFAULT_DOC_DENSITY, DEFAULT_DOC_VARIANT, DEFAULT_FILTER_RANGE_MODE, DEFAULT_FILTER_VARIANT, DEFAULT_NAV_PARAM, DEFAULT_NAV_SEGMENT, DEFAULT_SIZE, DOCK_MIN_PAGE_REMAINDER, DOCS_FOLDER, DOC_ACTION_ICONS, DOC_ALIGNS, DOC_DENSITIES, DOC_EDIT_ACTIONS, DOC_TOOLBAR_GROUPS, DOC_VARIANTS, DashboardCardComponent, DateInputComponent, DatePickerComponent, DeviceService, DocComponent, DocEditorComponent, DomService, Domain, DotGridComponent, DragListDirective, DragListItemDirective, DraggableDirective, DropdownInputComponent, FILTER_GROUP_CONTEXT, FILTER_RANGE_MODES, FILTER_VARIANTS, FLEX_VARIANTS, FOLDER_PICK_LISTENER, FORM_ASSET_FOLDER, FileService, FileUploadDirective, FileUploadInputComponent, FlexComponent, FlexItemComponent, FormGroupComponent, FrameComponent, FreezeService, GRID_BREAKPOINTS, GetNavService, HeaderComponent, HighlightDirective, HttpService, HttpSharingClient, ICON_SOURCE, IS_DESIGN_MODE, IS_SIDE_PANEL, IconComponent, ImgComponent, InputType, InstrumentScoreComponent, InterceptorObservables, JumbotronComponent, KeyValueComponent, LAYOUT_ASSET_FOLDER, LOADING_ACTIONS_REF, LOGIN_COMPONENT, LOGIN_STORE, LOGO_GLYPH_MAX_BYTES, LanguageComponent, ListComponent, LogoComponent, LogoGlyphInputComponent, MAG_SOCKET_EVENT, MHeroColorDirective, MHeroComponent, MODAL_REF, MODAL_STORE_REF, MOUNT_STATIC_SEGMENT, MOUNT_TOKEN, MRefDirective, MStepComponent, MURL_PARAM, MURL_SEP, ManifestEnrichmentService, MarginDirective, MenuComponent, ModalDirective, ModalRef, ModalStore, MoneyPipe, MultiRangeInputComponent, MultiselectInputComponent, MurlUrlSerializer, NAV_DEFAULT_MURL, NAV_ID_SEP, NAV_MAIN_BUTTONS, NAV_SEGMENT_RE, NAV_STORE_REF, NAV_WC_COMPONENTS, NAV_WIDGET_MAP, NavComponent, NavDetailsComponent, NavHeaderComponent, NavMenuComponent, NavStore, NavTrailComponent, NothingComponent, NotificationElementComponent, NotificationGroupComponent, NotificationPopupComponent, NotificationService, NotificationStore, NotificationType, NotificationWidgetComponent, ONE_ASSET_BASE_URL, OPTIONS_SOURCE, OVERLAY_WIDGETS, OneApp, OptionsSourceDirective, OverlayBodyComponent, OverlayRef, OverlayService, PLATFORM_BUTTON_NAV_IDS, PLATFORM_EXTENSIBLE_NAV_IDS, PLATFORM_NAV_MAP, PLATFORM_ROOT_CHILDREN, PLUGIN_FALLBACK_LANG, PLUGIN_OUTPUT_EVENT, PLUGIN_SCREENS, PaddingDirective, PaginationComponent, PanelComponent, PercentagePipe, PlaygroundComponent, PluginComponent, PluginInputComponent, PluginOutputComponent, PositionDirective, PwaInstallComponent, RECENT_SEARCH_LIMIT, REMOTE_PAGE_RELOAD, ROOT_NAV, RadioGroupComponent, RadioInputComponent, RangeInputComponent, RatingInputComponent, ReactiveElementComponent, RemoteComponent, RemoteLoaderService, ResizeElementComponent, RouteContainer, RowComponent, SEARCH_ANSWER_KEY, SEARCH_LABEL_KEY, SEARCH_QUERY, SEARCH_RESULTS_EVENT, SECTION_ACCORDION_GROUP, SECTION_FORM_CONTEXT, SECTION_TABLE_VARIANTS, SHARED_ICONS, SHARING_CLIENT, SIZE_CONTEXT, SPACING_INWARD, ScoreComponent, ScrollComponent, ScrollService, SearchPanelComponent, SearchStore, SearchUserPanelComponent, SectionAccordionDirective, SectionAccordionGroupDirective, SectionBackComponent, SectionBadgesComponent, SectionButtonGroupComponent, SectionCardComponent, SectionCarouselComponent, SectionComponent, SectionFilterComponent, SectionFilterGroupComponent, SectionFilterMenuComponent, SectionFilterPanelComponent, SectionFilterRangePanelComponent, SectionFooterComponent, SectionFormComponent, SectionFormItemComponent, SectionHeaderComponent, SectionHeroComponent, SectionPaginationComponent, SectionSearchComponent, SectionStepperComponent, SectionTableCellComponent, SectionTableComponent, SectionTableRowComponent, SectionTableSortPipe, SectionTabsComponent, SectionToggleComponent, SectionToggleItemDirective, SelectableCardInputComponent, SelectorDirective, SettingsSearchBarComponent, SettingsSearchService, ShapeComponent, SharedStoreRegistry, SidePanelDirective, Size, SocketStore, SortComponent, StatComponent, StepComponent, StepperComponent, StepsComponent, StorageService, StrokeLinecap, StrokeLinejoin, SummaryComponent, SvgGeneratorComponent, SvgGeneratorService, SvgService, TOTAL_COLUMNS, TRANSLATION_SOURCE, TableComponent, TechnicalMeterComponent, TextInputComponent, TextOutputComponent, TextareaInputComponent, ThemeComponent, ThemeDataService, ThemeService, ThemeStore, TimeAgoPipe, TimelineComponent, ToggleButtonComponent, ToggleInputComponent, ToggleRadioInputComponent, ToolTipDirective, TooltipComponent, TranslatePipe, TranslateService, TreeGridComponent, URL_SEP, USER_STORE_REF, USER_TAB_MAP, UniverseComponent, UserApiService, UserAvatarComponent, UserComponent, UserNavComponent, UserSettingsComponent, UserStore, WC_BUNDLE, WC_NAVIGATE_EVENT, WC_ROUTE_CHANGED_EVENT, WC_SEARCH_GROUPS, WIN_USER_TAB_HOOK, WIN_USER_TAB_KEY, WatermarkComponent, WcRouterStore, WrapperInputComponent, activeElementWithin, allowedCodes, anchorNavId, appLogoShadowColor, applyColorsToElement, applyDocEdit, assetOptions, baseUnderHost, bootstrapMagApp, bootstrapPwaInstall, browserLocale, buildWcBaseUrl, calculateLuminance, calculateRanks, cellText, checkDoc, checkFilterCondition, childNavId, claimDenial, classListSignal, coerceSize, cornerEdge, cornerSide, createLoadingState, createMap, createPlatformNavMap, createPluginElement, definePluginScreens, definedWcBundleOf, definedWcTierOf, deriveAvatarGradient, deriveContrastColor, deriveOppositeColor, derivePropertyName, docActionKey, docAssetCandidates, docProblemKey, docRemotePath, emailValidation, evaluate, evaluateBool, exposeScreens, exposedScreensOf, fieldBoolean, fieldNumber, fieldString, filterHoldsList, filterHoldsOneBound, filterHoldsOptions, filterHoldsRange, filterList, filterNumber, filterNumberList, filterOne, filterPanelOf, filterPanelWidth, filterRange, filterTreeGridRows, filterValueList, filterValues, flattenTreeGridRows, formatBadgeCount, fullName, generateClipPath, generateTransform, getClassList, getProperty, getScrollParent, getTierFromPreviewPath, getTreeGridRow, getUniqueId, getValue, hasErrorComputed, hexToRgb, hslToRgb, initMagmoniumApp, initialNotificationState, initialState, initials, injectAuthenticate, injectDefaultDenial, injectInstallApp, injectParentSize, injectScrollSticky, isBootRedirect, isButtonName, isCancelledComputed, isExtensiblePlatformNavId, isJson, isLightAppColor, isLoadingComputed, isLocalhost, isNavInstanceConfig, isNavMenuConfig, isNavRowsConfig, isNavVisibilityConfig, isPlatformNavId, isPlatformPanelNavId, isSize, isTierPreview, isUrlLocalhost, isValidNavId, isValidNavSegment, isWebComponent, linkToId, linkToNav, loadingActions, logoGlyphMaskUrl, mInterceptor, manualValidation, matchFieldValidation, matchMount, maxLengthValidation, maxValidation, mergePlatformNav, mergeUnique, mergeUniqueBy, mergeUniqueWith, minAgeValidation, minLengthValidation, minValidation, miniMarkToHtml, mountFor, mountPatternProblem, mountPatternText, mountSegmentOf, mountTokenOf, navIdChain, navIdFor, navIdSegment, navIdToRoutePath, navIdToSegments, navParamOf, navTailMatcher, navToId, navVisibilityGuard, nextSectionTableSort, normalizeAppColor, normalizeAssetOptions, offsetOfLine, outletPathOf, outletSegmentsOf, parentNavId, parseAddress, parseColor, parseMountPattern, parsePatternNames, patternValidation, patternsValidation, permissionRefusal, pickCount, pickSupportedLanguage, picksMembers, platformNavWidgets, pluginTag, presetDefaultOption, privateGuard, processImageToSvg, provideAppContext, provideMagAppConfig, provideMagWcConfig, provideMagWcRoutes, provideModalComponents, provideMurlUrlSerializer, provideNavWidgets, provideOverlayWidgets, providePlatformNavWidgets, providePluginRuntime, provideSearch, provideSizeContext, provideUserTabs, publicGuard, readFieldPatterns, rebuildLogoGlyph, recordDefinedWcTier, remoteOutletRoute, renderAddress, renderDocument, requiredValidation, resolveConfigAsset, resolveIconSize, resolvePallet, resolvePatternRules, resolveSize, resolveSpacing, rgbToHex, rgbToHsl, rowHasChildren, samePatterns, sectionTableColumnId, sectionTableColumnWidths, sectionTableFrozenCount, segmentsToNavId, setProperty, setTreeGridChildren, setWcLocalPort, setWcTier, settingsWidgets, shouldShowBadge, sortSectionTableRows, splitNavId, splitOnMatch, splitPath, stringToColor, tailRouteOf, toAttrBool, toAttrNumber, toCssLength, toHostNavId, toLength, toLocalNavId, toggleGroup, toggleTreeGridRow, toggleUid, unfetchedPlatformNav, ungroupedDocActions, urlValidation, wcLocalBaseOf, wcTierOf, withLevel };
|
|
51024
|
+
export { ACCESS_DOMAINS, APP_CONTEXT_REF, APP_LINK, APP_LOGO_ICON, APP_LOGO_SOURCE, APP_THEME_COLOR, ASSET_BASE_URL, AUDIENCE_ICONS, AUDIENCE_LEVELS, AccordionBodyDirective, AccordionComponent, AccordionGroupComponent, ActionComponent, AnimatedGraphsComponent, AppAvailability, AppCardComponent, AppIdentityService, AppLogoComponent, AppLogoState, AppRelationType, AppTileComponent, AssetStore, AssetUrlPipe, Assets, AudiencePickerBoxComponent, AudiencePickerComponent, AuthActivityPageComponent, AuthApiService, AuthStore, AutosizeDirective, BadgeComponent, BandingComponent, BaseArrayInputComponent, BaseRootWebComponent, BaseWebComponent, BrowserLocaleService, ButtonComponent, ButtonGroupComponent, CALLING_APP_HEADER, COMPONENT_INPUT_REGISTRY, CardComponent, CardWrapperComponent, CarouselComponent, ChartComponent, ChatBubbleComponent, CheckboxGroupComponent, CheckboxInputComponent, ClearableInputComponent, ClipboardService, ColComponent, ColorPickerInputComponent, CommentItemComponent, CommentsApiService, CommentsComponent, CommentsStore, CompactNumberPipe, ComponentInputComponent, ComponentStepperComponent, ConfigComponent, ConfirmComponent, ContextMenuComponent, CustomIconClass, CustomIconEditComponent, DEFAULT_AUDIENCE, DEFAULT_DENIAL, DEFAULT_DOC_ALIGN, DEFAULT_DOC_DENSITY, DEFAULT_DOC_VARIANT, DEFAULT_FILTER_RANGE_MODE, DEFAULT_FILTER_VARIANT, DEFAULT_NAV_PARAM, DEFAULT_NAV_SEGMENT, DEFAULT_SIZE, DOCK_MIN_PAGE_REMAINDER, DOCS_FOLDER, DOC_ACTION_ICONS, DOC_ALIGNS, DOC_DENSITIES, DOC_EDIT_ACTIONS, DOC_TOOLBAR_GROUPS, DOC_VARIANTS, DashboardCardComponent, DateInputComponent, DatePickerComponent, DeviceService, DocComponent, DocEditorComponent, DomService, Domain, DotGridComponent, DragListDirective, DragListItemDirective, DraggableDirective, DropdownInputComponent, FILTER_GROUP_CONTEXT, FILTER_RANGE_MODES, FILTER_VARIANTS, FLEX_VARIANTS, FOLDER_PICK_LISTENER, FORM_ASSET_FOLDER, FileService, FileUploadDirective, FileUploadInputComponent, FlexComponent, FlexItemComponent, FormGroupComponent, FrameComponent, FreezeService, GRID_BREAKPOINTS, GetNavService, HeaderComponent, HighlightDirective, HttpService, HttpSharingClient, ICON_SOURCE, IS_DESIGN_MODE, IS_SIDE_PANEL, IconComponent, ImgComponent, InputType, InstrumentScoreComponent, InterceptorObservables, JumbotronComponent, KeyValueComponent, LAYOUT_ASSET_FOLDER, LOADING_ACTIONS_REF, LOGIN_COMPONENT, LOGIN_STORE, LOGO_GLYPH_MAX_BYTES, LanguageComponent, ListComponent, LogoComponent, LogoGlyphInputComponent, MAG_SOCKET_EVENT, MHeroColorDirective, MHeroComponent, MODAL_REF, MODAL_STORE_REF, MOUNT_STATIC_SEGMENT, MOUNT_TOKEN, MRefDirective, MStepComponent, MURL_PARAM, MURL_SEP, ManifestEnrichmentService, MarginDirective, MenuComponent, ModalDirective, ModalRef, ModalStore, MoneyPipe, MultiRangeInputComponent, MultiselectInputComponent, MurlUrlSerializer, NAV_DEFAULT_MURL, NAV_ID_SEP, NAV_MAIN_BUTTONS, NAV_SEGMENT_RE, NAV_STORE_REF, NAV_WC_COMPONENTS, NAV_WIDGET_MAP, NavComponent, NavDetailsComponent, NavHeaderComponent, NavMenuComponent, NavStore, NavTrailComponent, NothingComponent, NotificationElementComponent, NotificationGroupComponent, NotificationPopupComponent, NotificationService, NotificationStore, NotificationType, NotificationWidgetComponent, ONE_ASSET_BASE_URL, OPTIONS_SOURCE, OVERLAY_WIDGETS, OneApp, OptionsSourceDirective, OverlayBodyComponent, OverlayRef, OverlayService, PLATFORM_BUTTON_NAV_IDS, PLATFORM_EXTENSIBLE_NAV_IDS, PLATFORM_NAV_MAP, PLATFORM_ROOT_CHILDREN, PLUGIN_FALLBACK_LANG, PLUGIN_OUTPUT_EVENT, PLUGIN_SCREENS, PaddingDirective, PaginationComponent, PanelComponent, PercentagePipe, PlaygroundComponent, PluginComponent, PluginInputComponent, PluginOutputComponent, PositionDirective, PwaInstallComponent, RECENT_SEARCH_LIMIT, REMOTE_BOOT_TIMEOUT_MS, REMOTE_PAGE_RELOAD, ROOT_NAV, RadioGroupComponent, RadioInputComponent, RangeInputComponent, RatingInputComponent, ReactiveElementComponent, RemoteComponent, RemoteLoaderService, ResizeElementComponent, RouteContainer, RowComponent, SEARCH_ANSWER_KEY, SEARCH_LABEL_KEY, SEARCH_QUERY, SEARCH_RESULTS_EVENT, SECTION_ACCORDION_GROUP, SECTION_FORM_CONTEXT, SECTION_TABLE_VARIANTS, SHARED_ICONS, SHARING_CLIENT, SIZE_CONTEXT, SPACING_INWARD, SPLASH_ID, ScoreComponent, ScrollComponent, ScrollService, SearchPanelComponent, SearchStore, SearchUserPanelComponent, SectionAccordionDirective, SectionAccordionGroupDirective, SectionBackComponent, SectionBadgesComponent, SectionButtonGroupComponent, SectionCardComponent, SectionCarouselComponent, SectionComponent, SectionFilterComponent, SectionFilterGroupComponent, SectionFilterMenuComponent, SectionFilterPanelComponent, SectionFilterRangePanelComponent, SectionFooterComponent, SectionFormComponent, SectionFormItemComponent, SectionHeaderComponent, SectionHeroComponent, SectionPaginationComponent, SectionSearchComponent, SectionStepperComponent, SectionTableCellComponent, SectionTableComponent, SectionTableRowComponent, SectionTableSortPipe, SectionTabsComponent, SectionToggleComponent, SectionToggleItemDirective, SelectableCardInputComponent, SelectorDirective, SettingsSearchBarComponent, SettingsSearchService, ShapeComponent, SharedStoreRegistry, SidePanelDirective, Size, SocketStore, SortComponent, StatComponent, StepComponent, StepperComponent, StepsComponent, StorageService, StrokeLinecap, StrokeLinejoin, SummaryComponent, SvgGeneratorComponent, SvgGeneratorService, SvgService, TOTAL_COLUMNS, TRANSLATION_SOURCE, TableComponent, TechnicalMeterComponent, TextInputComponent, TextOutputComponent, TextareaInputComponent, ThemeComponent, ThemeDataService, ThemeService, ThemeStore, TimeAgoPipe, TimelineComponent, ToggleButtonComponent, ToggleInputComponent, ToggleRadioInputComponent, ToolTipDirective, TooltipComponent, TranslatePipe, TranslateService, TreeGridComponent, URL_SEP, USER_STORE_REF, USER_TAB_MAP, UniverseComponent, UserApiService, UserAvatarComponent, UserComponent, UserNavComponent, UserSettingsComponent, UserStore, WC_BUNDLE, WC_NAVIGATE_EVENT, WC_ROUTE_CHANGED_EVENT, WC_SEARCH_GROUPS, WIN_USER_TAB_HOOK, WIN_USER_TAB_KEY, WatermarkComponent, WcRouterStore, WrapperInputComponent, activeElementWithin, allowedCodes, anchorNavId, appColorBrand, appLogoShadowColor, appThemeColorFactory, applyColorsToElement, applyDocEdit, assetOptions, baseUnderHost, bootstrapMagApp, bootstrapPwaInstall, browserLocale, buildWcBaseUrl, calculateLuminance, calculateRanks, cellText, checkDoc, checkFilterCondition, childNavId, claimDenial, classListSignal, coerceSize, cornerEdge, cornerSide, createLoadingState, createMap, createPlatformNavMap, createPluginElement, definePluginScreens, definedWcBundleOf, definedWcTierOf, deriveAvatarGradient, deriveContrastColor, deriveOppositeColor, derivePropertyName, docActionKey, docAssetCandidates, docProblemKey, docRemotePath, emailValidation, evaluate, evaluateBool, exposeScreens, exposedScreensOf, fieldBoolean, fieldNumber, fieldString, filterHoldsList, filterHoldsOneBound, filterHoldsOptions, filterHoldsRange, filterList, filterNumber, filterNumberList, filterOne, filterPanelOf, filterPanelWidth, filterRange, filterTreeGridRows, filterValueList, filterValues, flattenTreeGridRows, formatBadgeCount, fullName, generateClipPath, generateTransform, getClassList, getProperty, getScrollParent, getTierFromPreviewPath, getTreeGridRow, getUniqueId, getValue, hasErrorComputed, hexToRgb, hslToRgb, initMagmoniumApp, initialNotificationState, initialState, initials, injectAuthenticate, injectDefaultDenial, injectInstallApp, injectParentSize, injectScrollSticky, isBootRedirect, isButtonName, isCancelledComputed, isExtensiblePlatformNavId, isJson, isLightAppColor, isLoadingComputed, isLocalhost, isNavInstanceConfig, isNavMenuConfig, isNavRowsConfig, isNavVisibilityConfig, isPlatformNavId, isPlatformPanelNavId, isSize, isTierPreview, isUrlLocalhost, isValidNavId, isValidNavSegment, isWebComponent, linkToId, linkToNav, loadingActions, logoGlyphMaskUrl, mInterceptor, manualValidation, matchFieldValidation, matchMount, maxLengthValidation, maxValidation, mergePlatformNav, mergeUnique, mergeUniqueBy, mergeUniqueWith, minAgeValidation, minLengthValidation, minValidation, miniMarkToHtml, mountFor, mountPatternProblem, mountPatternText, mountSegmentOf, mountTokenOf, navIdChain, navIdFor, navIdSegment, navIdToRoutePath, navIdToSegments, navParamOf, navTailMatcher, navToId, navVisibilityGuard, nextSectionTableSort, normalizeAppColor, normalizeAssetOptions, offsetOfLine, outletPathOf, outletSegmentsOf, paintAppColor, parentNavId, parseAddress, parseColor, parseMountPattern, parsePatternNames, patternValidation, patternsValidation, permissionRefusal, pickCount, pickSupportedLanguage, picksMembers, platformNavWidgets, pluginTag, presetDefaultOption, privateGuard, processImageToSvg, provideAppContext, provideMagAppConfig, provideMagWcConfig, provideMagWcRoutes, provideModalComponents, provideMurlUrlSerializer, provideNavWidgets, provideOverlayWidgets, providePlatformNavWidgets, providePluginRuntime, provideSearch, provideSizeContext, provideUserTabs, publicGuard, readFieldPatterns, rebuildLogoGlyph, recordDefinedWcTier, remoteOutletRoute, renderAddress, renderDocument, requiredValidation, resolveConfigAsset, resolveIconSize, resolvePallet, resolvePatternRules, resolveSize, resolveSpacing, rgbToHex, rgbToHsl, rowHasChildren, samePatterns, sectionTableColumnId, sectionTableColumnWidths, sectionTableFrozenCount, segmentsToNavId, setProperty, setTreeGridChildren, setWcLocalPort, setWcTier, settingsWidgets, shouldShowBadge, sortSectionTableRows, splashHtml, splitNavId, splitOnMatch, splitPath, stringToColor, tailRouteOf, toAttrBool, toAttrNumber, toCssLength, toHostNavId, toLength, toLocalNavId, toggleGroup, toggleTreeGridRow, toggleUid, unfetchedPlatformNav, ungroupedDocActions, urlValidation, wcLocalBaseOf, wcTierOf, withLevel };
|
|
50590
51025
|
|
|
50591
51026
|
//# sourceMappingURL=magmonium-one.mjs.map
|