@magmonium/one 0.4.40 → 0.4.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/fields/app_color.json +5 -0
- package/assets/fields/logo_glyph_paste.json +7 -0
- package/assets/fields/logo_glyph_upload.json +12 -0
- package/assets/forms/logo_glyph_input.json +13 -0
- package/assets/i18n/ar.json +8 -0
- package/assets/i18n/de.json +8 -0
- package/assets/i18n/en.json +8 -0
- package/assets/i18n/es.json +8 -0
- package/assets/i18n/fr.json +8 -0
- package/assets/i18n/hi.json +8 -0
- package/assets/i18n/it.json +8 -0
- package/assets/i18n/ja.json +8 -0
- package/assets/i18n/ko.json +8 -0
- package/assets/i18n/nl.json +8 -0
- package/assets/i18n/pl.json +8 -0
- package/assets/i18n/pt.json +8 -0
- package/assets/i18n/ru.json +8 -0
- package/assets/i18n/tr.json +8 -0
- package/assets/i18n/zh.json +8 -0
- package/assets/index.json +1 -1
- package/fesm2022/{magmonium-one-base-dropdown-DU4B4w7c.mjs → magmonium-one-base-dropdown-CcZ0lBQv.mjs} +3 -3
- package/fesm2022/{magmonium-one-base-dropdown-DU4B4w7c.mjs.map → magmonium-one-base-dropdown-CcZ0lBQv.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-button-BWB3ZKIj.mjs → magmonium-one-button-BZQOf-Pm.mjs} +6 -4
- package/fesm2022/{magmonium-one-button-BWB3ZKIj.mjs.map → magmonium-one-button-BZQOf-Pm.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-group-m41SX_fL.mjs → magmonium-one-group-Dl2bp-y-.mjs} +4 -4
- package/fesm2022/{magmonium-one-group-m41SX_fL.mjs.map → magmonium-one-group-Dl2bp-y-.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-header-D8CB9CBJ.mjs → magmonium-one-header-DhK9NuZW.mjs} +5 -4
- package/fesm2022/{magmonium-one-header-D8CB9CBJ.mjs.map → magmonium-one-header-DhK9NuZW.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-icon-BTPHGpEN.mjs → magmonium-one-icon-BgbtOdMv.mjs} +229 -6
- package/fesm2022/magmonium-one-icon-BgbtOdMv.mjs.map +1 -0
- package/fesm2022/{magmonium-one-image-editor-Dn0ACfH0.mjs → magmonium-one-image-editor-oGxg59hV.mjs} +3 -3
- package/fesm2022/{magmonium-one-image-editor-Dn0ACfH0.mjs.map → magmonium-one-image-editor-oGxg59hV.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-menu-EIfPlZ4E.mjs → magmonium-one-menu-bI7lVUYI.mjs} +5 -4
- package/fesm2022/{magmonium-one-menu-EIfPlZ4E.mjs.map → magmonium-one-menu-bI7lVUYI.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-password-BjqYmT1s.mjs → magmonium-one-password-BIs_YxJ5.mjs} +2 -2
- package/fesm2022/{magmonium-one-password-BjqYmT1s.mjs.map → magmonium-one-password-BIs_YxJ5.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-text-BL-1lWST.mjs → magmonium-one-text-BvXdAX0i.mjs} +4 -3
- package/fesm2022/{magmonium-one-text-BL-1lWST.mjs.map → magmonium-one-text-BvXdAX0i.mjs.map} +1 -1
- package/fesm2022/magmonium-one.mjs +627 -144
- package/fesm2022/magmonium-one.mjs.map +1 -1
- package/package.json +1 -1
- package/types/magmonium-one.d.ts +283 -31
- package/fesm2022/magmonium-one-icon-BTPHGpEN.mjs.map +0 -1
package/package.json
CHANGED
package/types/magmonium-one.d.ts
CHANGED
|
@@ -747,15 +747,15 @@ export interface RemoteSelectorConfig {
|
|
|
747
747
|
prefix?: string;
|
|
748
748
|
separator?: string;
|
|
749
749
|
}
|
|
750
|
+
/**
|
|
751
|
+
* A WC app's runtime wiring. Never its name, description, AppLogo or App
|
|
752
|
+
* Color — those are the Store App's (nx ADR 0007, `AppIdentity`).
|
|
753
|
+
*/
|
|
750
754
|
export interface WebComponentConfig {
|
|
751
755
|
selector?: string;
|
|
752
756
|
app: string;
|
|
753
|
-
/** What the app is called, from Store's App — `app` is its link. */
|
|
754
|
-
name?: string;
|
|
755
757
|
version: string;
|
|
756
|
-
company?: string;
|
|
757
758
|
timestamp?: string;
|
|
758
|
-
logo?: string;
|
|
759
759
|
inputs?: string[];
|
|
760
760
|
outputs?: string[];
|
|
761
761
|
autoRegister?: boolean;
|
|
@@ -2575,6 +2575,104 @@ export declare abstract class ResizeElementComponent<T extends Config> extends C
|
|
|
2575
2575
|
static ɵfac: i0.ɵɵFactoryDeclaration<ResizeElementComponent<any>, never>;
|
|
2576
2576
|
static ɵcmp: i0.ɵɵComponentDeclaration<ResizeElementComponent<any>, "ng-component", never, {}, {}, never, never, true, never>;
|
|
2577
2577
|
}
|
|
2578
|
+
/**
|
|
2579
|
+
* LogoGlyph rules (nx ADR 0007) — the same allowlist rebuild api runs on
|
|
2580
|
+
* save, so the editor refuses what api would refuse before anything is sent.
|
|
2581
|
+
* api's rebuild is the rule; this one is the early answer.
|
|
2582
|
+
*/
|
|
2583
|
+
/** The size bound on a LogoGlyph's markup, in UTF-8 bytes. */
|
|
2584
|
+
export declare const LOGO_GLYPH_MAX_BYTES: number;
|
|
2585
|
+
/** Why a glyph was refused — the codes api answers with. */
|
|
2586
|
+
export type LogoGlyphError = '' | 'logo_invalid' | 'logo_too_large';
|
|
2587
|
+
/**
|
|
2588
|
+
* A rebuilt glyph. Flat rather than a union: the wc build does not narrow
|
|
2589
|
+
* discriminated unions. `error` is empty on success, `svg` empty on refusal.
|
|
2590
|
+
*/
|
|
2591
|
+
export type LogoGlyphResult = {
|
|
2592
|
+
svg: string;
|
|
2593
|
+
error: LogoGlyphError;
|
|
2594
|
+
};
|
|
2595
|
+
/**
|
|
2596
|
+
* The LogoGlyph as it will be stored: shape elements, their geometry and
|
|
2597
|
+
* on/off paint inside a fresh `<svg>` root. Refuses `logo_too_large` over
|
|
2598
|
+
* the size bound and `logo_invalid` for anything not a drawable SVG.
|
|
2599
|
+
*/
|
|
2600
|
+
export declare function rebuildLogoGlyph(markup: string): LogoGlyphResult;
|
|
2601
|
+
/** App Color as stored: `#rrggbb`, lowercased — or undefined when it is not one. */
|
|
2602
|
+
export declare const normalizeAppColor: (value: string) => string | undefined;
|
|
2603
|
+
/** The AppLogo's shadow: App Color mixed with 20% black. */
|
|
2604
|
+
export declare const appLogoShadowColor: (color: string) => string;
|
|
2605
|
+
/**
|
|
2606
|
+
* Whether a white glyph reads poorly over this App Color: contrast under 3:1,
|
|
2607
|
+
* the WCAG floor for graphical objects. A warning, never a refusal.
|
|
2608
|
+
*/
|
|
2609
|
+
export declare const isLightAppColor: (color: string) => boolean;
|
|
2610
|
+
/** A LogoGlyph as a CSS `url(...)`, for painting it through a mask. */
|
|
2611
|
+
export declare const logoGlyphMaskUrl: (svg: string) => string;
|
|
2612
|
+
/**
|
|
2613
|
+
* What a Store App says about itself (nx ADR 0007), as `GET
|
|
2614
|
+
* store/v1/identity/<link>` answers it. The one source of an app's name,
|
|
2615
|
+
* description, AppLogo and App Color — never a WebComponentConfig.
|
|
2616
|
+
*/
|
|
2617
|
+
export type AppIdentity = {
|
|
2618
|
+
id: string;
|
|
2619
|
+
link: string;
|
|
2620
|
+
name: string;
|
|
2621
|
+
description: string | null;
|
|
2622
|
+
/** The LogoGlyph, rebuilt from the shape allowlist; null until the Owner sets one. */
|
|
2623
|
+
logoGlyph: string | null;
|
|
2624
|
+
/** App Color, `#rrggbb`; null until the Owner sets one. */
|
|
2625
|
+
appColor: string | null;
|
|
2626
|
+
/** Availability `open` — AppLogo optional, never released as a PWA. */
|
|
2627
|
+
open: boolean;
|
|
2628
|
+
};
|
|
2629
|
+
/**
|
|
2630
|
+
* Reads App Identity from Store — the one read every surface shares (host
|
|
2631
|
+
* nav, a standalone app's chrome, store cards that hold only a link). One
|
|
2632
|
+
* request per link per session; a failed read is not cached, so the next
|
|
2633
|
+
* ask retries.
|
|
2634
|
+
*/
|
|
2635
|
+
export declare class AppIdentityService {
|
|
2636
|
+
#private;
|
|
2637
|
+
readonly identity: (link: string) => Observable<AppIdentity | undefined>;
|
|
2638
|
+
/** Drops a link's held read, after its Owner changed it. */
|
|
2639
|
+
readonly forget: (link: string) => void;
|
|
2640
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AppIdentityService, never>;
|
|
2641
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
2642
|
+
}
|
|
2643
|
+
/**
|
|
2644
|
+
* The reserved icon name that draws the running app's own AppLogo as a glyph
|
|
2645
|
+
* (GLOSSARY.md AppLogoIcon). Never an IconAsset or a file in `icons/`: `m-icon`
|
|
2646
|
+
* reads it from APP_LOGO_SOURCE instead of fetching anything. Its own file so
|
|
2647
|
+
* codegen can read it without Angular.
|
|
2648
|
+
*/
|
|
2649
|
+
export declare const APP_LOGO_ICON = "app_logo";
|
|
2650
|
+
/**
|
|
2651
|
+
* The running app's AppLogo as an icon draws it. `glyph` is a Store App's
|
|
2652
|
+
* LogoGlyph (already rebuilt from the allowlist); `src` is the host's
|
|
2653
|
+
* file-based AppLogo; neither is the first letter of `name`.
|
|
2654
|
+
*/
|
|
2655
|
+
export type AppLogoSource = {
|
|
2656
|
+
glyph?: string | null;
|
|
2657
|
+
src?: string;
|
|
2658
|
+
name?: string | null;
|
|
2659
|
+
};
|
|
2660
|
+
/**
|
|
2661
|
+
* Where NavStore publishes the running app's AppLogo. Shared rather than read
|
|
2662
|
+
* off NavStore because `m-icon` sits below features and cannot import it.
|
|
2663
|
+
*/
|
|
2664
|
+
export declare class AppLogoState {
|
|
2665
|
+
#private;
|
|
2666
|
+
readonly source: Signal<AppLogoSource | undefined>;
|
|
2667
|
+
readonly set: (source: AppLogoSource | undefined) => void;
|
|
2668
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AppLogoState, never>;
|
|
2669
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
2670
|
+
}
|
|
2671
|
+
/**
|
|
2672
|
+
* What `m-icon name="app_logo"` draws. Defaults to what NavStore published; a
|
|
2673
|
+
* visual editor provides its own so the Canvas shows the AppTarget's logo.
|
|
2674
|
+
*/
|
|
2675
|
+
export declare const APP_LOGO_SOURCE: InjectionToken<Signal<AppLogoSource | undefined>>;
|
|
2578
2676
|
type ButtonBadge = {
|
|
2579
2677
|
count?: number;
|
|
2580
2678
|
variant?: 'default' | 'primary' | 'danger';
|
|
@@ -2822,16 +2920,19 @@ type CustomIconEdit = {
|
|
|
2822
2920
|
linecap: 'butt' | 'round' | 'square';
|
|
2823
2921
|
linejoin: 'miter' | 'round' | 'bevel';
|
|
2824
2922
|
};
|
|
2825
|
-
type Icon = Partial<Config
|
|
2923
|
+
type Icon = Partial<Config> & {
|
|
2924
|
+
shadow?: boolean;
|
|
2925
|
+
};
|
|
2826
2926
|
export declare class IconComponent {
|
|
2827
|
-
config: import("@angular/core").ModelSignal<
|
|
2927
|
+
config: import("@angular/core").ModelSignal<Icon | undefined>;
|
|
2828
2928
|
readonly name: import("@angular/core").InputSignal<string | undefined>;
|
|
2829
2929
|
readonly color: import("@angular/core").InputSignal<string | undefined>;
|
|
2830
2930
|
readonly size: import("@angular/core").InputSignal<string | number | undefined>;
|
|
2831
2931
|
readonly one: import("@angular/core").InputSignal<boolean | undefined>;
|
|
2832
2932
|
readonly baseUrl: import("@angular/core").InputSignal<string | undefined>;
|
|
2833
2933
|
readonly remote: import("@angular/core").InputSignal<string | undefined>;
|
|
2834
|
-
|
|
2934
|
+
readonly shadow: import("@angular/core").InputSignalWithTransform<boolean | undefined, unknown>;
|
|
2935
|
+
protected readonly resolvedConfig: import("@angular/core").Signal<Icon | undefined>;
|
|
2835
2936
|
private readonly elementRef;
|
|
2836
2937
|
private readonly sizeContext;
|
|
2837
2938
|
private readonly assetStore;
|
|
@@ -2842,9 +2943,12 @@ export declare class IconComponent {
|
|
|
2842
2943
|
private readonly remoteBaseUrl;
|
|
2843
2944
|
private readonly iconSource;
|
|
2844
2945
|
private readonly inlineSvg;
|
|
2946
|
+
private readonly appLogoSource;
|
|
2947
|
+
private readonly appLogo;
|
|
2845
2948
|
private readonly text;
|
|
2846
2949
|
private readonly pallet;
|
|
2847
2950
|
constructor();
|
|
2951
|
+
private readonly applyShadow;
|
|
2848
2952
|
private readonly applySize;
|
|
2849
2953
|
private readonly updateElement;
|
|
2850
2954
|
static ɵfac: i0.ɵɵFactoryDeclaration<IconComponent, never>;
|
|
@@ -2884,6 +2988,11 @@ export declare class IconComponent {
|
|
|
2884
2988
|
"required": false;
|
|
2885
2989
|
"isSignal": true;
|
|
2886
2990
|
};
|
|
2991
|
+
"shadow": {
|
|
2992
|
+
"alias": "shadow";
|
|
2993
|
+
"required": false;
|
|
2994
|
+
"isSignal": true;
|
|
2995
|
+
};
|
|
2887
2996
|
}, {
|
|
2888
2997
|
"config": "configChange";
|
|
2889
2998
|
}, never, ["*"], true, never>;
|
|
@@ -10588,7 +10697,7 @@ export declare class SortComponent extends ConfigComponent<Sort> {
|
|
|
10588
10697
|
protected readonly currentSortLabel: import("@angular/core").Signal<string>;
|
|
10589
10698
|
protected readonly remainingOptions: import("@angular/core").Signal<import("@magmonium/one").SortOption[]>;
|
|
10590
10699
|
readonly toggleButtonConfig: import("@angular/core").Signal<Button>;
|
|
10591
|
-
readonly menuIconConfig: import("@angular/core").Signal<Partial<
|
|
10700
|
+
readonly menuIconConfig: import("@angular/core").Signal<Partial<Icon>>;
|
|
10592
10701
|
readonly menuItems: import("@angular/core").Signal<MenuItem[][]>;
|
|
10593
10702
|
readonly menuSelectorConfig: import("@angular/core").Signal<SelectorConfig<ContextMenuBoxComponent>>;
|
|
10594
10703
|
readonly selectOption: (value: string) => void;
|
|
@@ -11943,20 +12052,20 @@ export declare class ScrollComponent implements OnDestroy {
|
|
|
11943
12052
|
}
|
|
11944
12053
|
type AppCardVariant = 'small' | 'row' | 'card' | 'tile';
|
|
11945
12054
|
/**
|
|
11946
|
-
* Deployed app-wc.json manifest. Card consumes only
|
|
11947
|
-
*
|
|
11948
|
-
*
|
|
12055
|
+
* Deployed app-wc.json manifest. Card consumes only version and timestamp
|
|
12056
|
+
* (-> AppCardData.lastUpdated) — never identity, which is the Store App's
|
|
12057
|
+
* (nx ADR 0007).
|
|
11949
12058
|
*/
|
|
11950
|
-
|
|
11951
|
-
pwa?: {
|
|
11952
|
-
color?: string;
|
|
11953
|
-
};
|
|
11954
|
-
}
|
|
12059
|
+
type AppManifest = WebComponentConfig$1;
|
|
11955
12060
|
interface AppCardData {
|
|
11956
12061
|
id: string;
|
|
11957
12062
|
name: string;
|
|
11958
|
-
|
|
11959
|
-
|
|
12063
|
+
/** The app's AppLink. */
|
|
12064
|
+
link?: string;
|
|
12065
|
+
/** The Store App's LogoGlyph; the AppLogo draws a letter without one. */
|
|
12066
|
+
logoGlyph?: string | null;
|
|
12067
|
+
/** The Store App's App Color — the AppLogo's ground and the card's accent. */
|
|
12068
|
+
appColor?: string | null;
|
|
11960
12069
|
notificationsCount?: number;
|
|
11961
12070
|
lastUsed?: number;
|
|
11962
12071
|
latestNotification?: string;
|
|
@@ -11968,9 +12077,6 @@ interface AppCardData {
|
|
|
11968
12077
|
statusLabel?: string;
|
|
11969
12078
|
created?: string;
|
|
11970
12079
|
version?: string;
|
|
11971
|
-
company?: string;
|
|
11972
|
-
/** Accent tint sourced from deployed manifest pwa.color. */
|
|
11973
|
-
accentColor?: string;
|
|
11974
12080
|
/** Deployed build time sourced from manifest timestamp. */
|
|
11975
12081
|
lastUpdated?: string;
|
|
11976
12082
|
}
|
|
@@ -12029,6 +12135,109 @@ export declare class AppCardComponent {
|
|
|
12029
12135
|
"actionClick": "actionClick";
|
|
12030
12136
|
}, never, never, true, never>;
|
|
12031
12137
|
}
|
|
12138
|
+
/**
|
|
12139
|
+
* The one renderer of an AppLogo (nx ADR 0007): the LogoGlyph painted white
|
|
12140
|
+
* over App Color, with a shadow in App Color mixed with 20% black. The glyph
|
|
12141
|
+
* is a mask, never inserted markup — its own colours never show and nothing
|
|
12142
|
+
* in it can run. Without a glyph it draws the name's first letter instead.
|
|
12143
|
+
* Fills its box; the caller sizes the host.
|
|
12144
|
+
*/
|
|
12145
|
+
export declare class AppLogoComponent {
|
|
12146
|
+
/** The LogoGlyph as Store holds it — already rebuilt from the allowlist. */
|
|
12147
|
+
readonly glyph: import("@angular/core").InputSignal<string | null | undefined>;
|
|
12148
|
+
/** App Color, `#rrggbb`. A neutral ground when unset. */
|
|
12149
|
+
readonly appColor: import("@angular/core").InputSignal<string | null | undefined>;
|
|
12150
|
+
/** The app's name (or AppLink): the accessible label and the letter fallback. */
|
|
12151
|
+
readonly name: import("@angular/core").InputSignal<string | null | undefined>;
|
|
12152
|
+
protected readonly color: import("@angular/core").Signal<string | null>;
|
|
12153
|
+
protected readonly shadow: import("@angular/core").Signal<string | null>;
|
|
12154
|
+
protected readonly mask: import("@angular/core").Signal<string | undefined>;
|
|
12155
|
+
protected readonly letter: import("@angular/core").Signal<string>;
|
|
12156
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AppLogoComponent, never>;
|
|
12157
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AppLogoComponent, "m-app-logo", never, {
|
|
12158
|
+
"glyph": {
|
|
12159
|
+
"alias": "glyph";
|
|
12160
|
+
"required": false;
|
|
12161
|
+
"isSignal": true;
|
|
12162
|
+
};
|
|
12163
|
+
"appColor": {
|
|
12164
|
+
"alias": "appColor";
|
|
12165
|
+
"required": false;
|
|
12166
|
+
"isSignal": true;
|
|
12167
|
+
};
|
|
12168
|
+
"name": {
|
|
12169
|
+
"alias": "name";
|
|
12170
|
+
"required": false;
|
|
12171
|
+
"isSignal": true;
|
|
12172
|
+
};
|
|
12173
|
+
}, {}, never, never, true, never>;
|
|
12174
|
+
}
|
|
12175
|
+
/**
|
|
12176
|
+
* Where an Owner sets a LogoGlyph and App Color (libs/one GLOSSARY
|
|
12177
|
+
* LogoGlyphInput): an SVG uploaded or pasted, rebuilt from the shape
|
|
12178
|
+
* allowlist before it is kept, and a colour — picked, or one of the
|
|
12179
|
+
* suggestions a host offers. Previewed live as the AppLogo it becomes. A
|
|
12180
|
+
* host's AI panel rides the `[logoAi]` slot and writes through the same two
|
|
12181
|
+
* models. Nothing here saves: the host decides when.
|
|
12182
|
+
*/
|
|
12183
|
+
export declare class LogoGlyphInputComponent {
|
|
12184
|
+
/** The kept LogoGlyph — only ever a rebuilt one. */
|
|
12185
|
+
readonly glyph: import("@angular/core").ModelSignal<string | null>;
|
|
12186
|
+
/** The kept App Color, `#rrggbb`. */
|
|
12187
|
+
readonly appColor: import("@angular/core").ModelSignal<string | null>;
|
|
12188
|
+
/** The app's name: the preview's label and its letter fallback. */
|
|
12189
|
+
readonly name: import("@angular/core").InputSignal<string | null | undefined>;
|
|
12190
|
+
/** Colours a host suggests (an AI's ten); picking one sets App Color. */
|
|
12191
|
+
readonly suggestedColors: import("@angular/core").InputSignal<readonly string[]>;
|
|
12192
|
+
readonly disabled: import("@angular/core").InputSignal<boolean>;
|
|
12193
|
+
/** What was pasted or uploaded, as typed — kept even while it is refused. */
|
|
12194
|
+
protected readonly markup: import("@angular/core").WritableSignal<string>;
|
|
12195
|
+
protected readonly error: import("@angular/core").WritableSignal<LogoGlyphError>;
|
|
12196
|
+
protected readonly errorKey: import("@angular/core").Signal<string | undefined>;
|
|
12197
|
+
protected readonly lightColor: import("@angular/core").Signal<boolean>;
|
|
12198
|
+
protected readonly suggestions: import("@angular/core").Signal<string[]>;
|
|
12199
|
+
/** The form's fields: upload and paste both feed `take`, the colour picker App Color. */
|
|
12200
|
+
protected readonly formData: import("@angular/core").Signal<{
|
|
12201
|
+
logo_glyph_paste: string;
|
|
12202
|
+
app_color: string;
|
|
12203
|
+
}>;
|
|
12204
|
+
private lastUpload;
|
|
12205
|
+
/** Takes markup from any path: kept when it rebuilds, told why when not. */
|
|
12206
|
+
readonly take: (markup: string) => void;
|
|
12207
|
+
protected readonly onForm: (data: Record<string, unknown>) => void;
|
|
12208
|
+
protected readonly pickSuggestion: (color: string) => void;
|
|
12209
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LogoGlyphInputComponent, never>;
|
|
12210
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<LogoGlyphInputComponent, "m-logo-glyph-input", never, {
|
|
12211
|
+
"glyph": {
|
|
12212
|
+
"alias": "glyph";
|
|
12213
|
+
"required": false;
|
|
12214
|
+
"isSignal": true;
|
|
12215
|
+
};
|
|
12216
|
+
"appColor": {
|
|
12217
|
+
"alias": "appColor";
|
|
12218
|
+
"required": false;
|
|
12219
|
+
"isSignal": true;
|
|
12220
|
+
};
|
|
12221
|
+
"name": {
|
|
12222
|
+
"alias": "name";
|
|
12223
|
+
"required": false;
|
|
12224
|
+
"isSignal": true;
|
|
12225
|
+
};
|
|
12226
|
+
"suggestedColors": {
|
|
12227
|
+
"alias": "suggestedColors";
|
|
12228
|
+
"required": false;
|
|
12229
|
+
"isSignal": true;
|
|
12230
|
+
};
|
|
12231
|
+
"disabled": {
|
|
12232
|
+
"alias": "disabled";
|
|
12233
|
+
"required": false;
|
|
12234
|
+
"isSignal": true;
|
|
12235
|
+
};
|
|
12236
|
+
}, {
|
|
12237
|
+
"glyph": "glyphChange";
|
|
12238
|
+
"appColor": "appColorChange";
|
|
12239
|
+
}, never, ["[logoAi]"], true, never>;
|
|
12240
|
+
}
|
|
12032
12241
|
export declare class PlaygroundComponent {
|
|
12033
12242
|
config: import("@angular/core").InputSignal<unknown>;
|
|
12034
12243
|
copied: import("@angular/core").WritableSignal<boolean>;
|
|
@@ -13140,6 +13349,7 @@ export declare class FrameComponent {
|
|
|
13140
13349
|
remoteWidgets: import("@angular/core").Signal<Record<string, NavWidgetRegistryEntry>>;
|
|
13141
13350
|
navMap: import("@angular/core").Signal<import("@magmonium/one").NavMap>;
|
|
13142
13351
|
wcConfigMap: import("@angular/core").Signal<Record<string, import("dist/libs/cli/src").WebComponentConfig>>;
|
|
13352
|
+
identityMap: import("@angular/core").Signal<Record<string, import("@magmonium/one").AppIdentity>>;
|
|
13143
13353
|
navLoading: import("@angular/core").Signal<boolean>;
|
|
13144
13354
|
visibilityAnswers: import("@angular/core").Signal<Record<string, boolean>>;
|
|
13145
13355
|
navigationEnd: import("@angular/core").Signal<import("@angular/router").RouterStateSnapshot>;
|
|
@@ -13174,6 +13384,8 @@ export declare class FrameComponent {
|
|
|
13174
13384
|
navMenus: import("@angular/core").Signal<import("@magmonium/one").BreadcrumbTrail[]>;
|
|
13175
13385
|
navHasContent: import("@angular/core").Signal<boolean>;
|
|
13176
13386
|
currentWcConfig: import("@angular/core").Signal<import("dist/libs/cli/src").WebComponentConfig | undefined>;
|
|
13387
|
+
currentIdentity: import("@angular/core").Signal<import("@magmonium/one").AppIdentity | undefined>;
|
|
13388
|
+
appLogo: import("@angular/core").Signal<import("@magmonium/one").AppLogoSource | undefined>;
|
|
13177
13389
|
activeAppOpen: import("@angular/core").Signal<boolean>;
|
|
13178
13390
|
transparentNavIds: import("@angular/core").Signal<ReadonlySet<string>>;
|
|
13179
13391
|
resolvedNavMenuConfig: import("@angular/core").Signal<import("@magmonium/one").NavMenuConfig | null>;
|
|
@@ -13220,6 +13432,8 @@ export declare class FrameComponent {
|
|
|
13220
13432
|
mountOf: (navId: string) => import("@magmonium/one").RemoteMount | undefined;
|
|
13221
13433
|
setWcConfig: (appLink: string, config: import("dist/libs/cli/src").WebComponentConfig) => void;
|
|
13222
13434
|
loadWcConfig: import("@ngrx/signals/rxjs-interop").RxMethod<string | undefined>;
|
|
13435
|
+
setIdentity: (identity: import("@magmonium/one").AppIdentity) => void;
|
|
13436
|
+
loadIdentity: import("@ngrx/signals/rxjs-interop").RxMethod<string | undefined>;
|
|
13223
13437
|
loadNav: import("@ngrx/signals/rxjs-interop").RxMethod<{
|
|
13224
13438
|
navId: string;
|
|
13225
13439
|
appNavId: string | undefined;
|
|
@@ -13265,6 +13479,7 @@ export declare class FrameComponent {
|
|
|
13265
13479
|
remoteWidgets: Record<string, NavWidgetRegistryEntry>;
|
|
13266
13480
|
navMap: import("@magmonium/one").NavMap;
|
|
13267
13481
|
wcConfigMap: Record<string, import("dist/libs/cli/src").WebComponentConfig>;
|
|
13482
|
+
identityMap: Record<string, import("@magmonium/one").AppIdentity>;
|
|
13268
13483
|
navLoading: boolean;
|
|
13269
13484
|
visibilityAnswers: Record<string, boolean>;
|
|
13270
13485
|
}>;
|
|
@@ -13485,6 +13700,11 @@ interface NavState {
|
|
|
13485
13700
|
*/
|
|
13486
13701
|
navMap: NavMap;
|
|
13487
13702
|
wcConfigMap: Record<string, WebComponentConfig$1>;
|
|
13703
|
+
/**
|
|
13704
|
+
* Each app's name, AppLogo and App Color as Store holds them (nx ADR 0007),
|
|
13705
|
+
* keyed by AppLink — the chrome's only source of an app's identity.
|
|
13706
|
+
*/
|
|
13707
|
+
identityMap: Record<string, AppIdentity>;
|
|
13488
13708
|
navLoading: boolean;
|
|
13489
13709
|
/**
|
|
13490
13710
|
* What an **async** NavVisibilityConfig answered, keyed by NavId and the
|
|
@@ -13550,6 +13770,7 @@ export declare const NavStore: import("@angular/core").Type<{
|
|
|
13550
13770
|
remoteWidgets: Signal<Record<string, NavWidgetRegistryEntry>>;
|
|
13551
13771
|
navMap: Signal<NavMap>;
|
|
13552
13772
|
wcConfigMap: Signal<Record<string, WebComponentConfig$1>>;
|
|
13773
|
+
identityMap: Signal<Record<string, AppIdentity>>;
|
|
13553
13774
|
navLoading: Signal<boolean>;
|
|
13554
13775
|
visibilityAnswers: Signal<Record<string, boolean>>;
|
|
13555
13776
|
navigationEnd: Signal<RouterStateSnapshot>;
|
|
@@ -13584,6 +13805,8 @@ export declare const NavStore: import("@angular/core").Type<{
|
|
|
13584
13805
|
navMenus: Signal<import("@magmonium/one").BreadcrumbTrail[]>;
|
|
13585
13806
|
navHasContent: Signal<boolean>;
|
|
13586
13807
|
currentWcConfig: Signal<WebComponentConfig$1 | undefined>;
|
|
13808
|
+
currentIdentity: Signal<AppIdentity | undefined>;
|
|
13809
|
+
appLogo: Signal<AppLogoSource | undefined>;
|
|
13587
13810
|
activeAppOpen: Signal<boolean>;
|
|
13588
13811
|
transparentNavIds: Signal<ReadonlySet<string>>;
|
|
13589
13812
|
resolvedNavMenuConfig: Signal<NavMenuConfig | null>;
|
|
@@ -13630,6 +13853,8 @@ export declare const NavStore: import("@angular/core").Type<{
|
|
|
13630
13853
|
mountOf: (navId: string) => RemoteMount | undefined;
|
|
13631
13854
|
setWcConfig: (appLink: string, config: WebComponentConfig$1) => void;
|
|
13632
13855
|
loadWcConfig: import("@ngrx/signals/rxjs-interop").RxMethod<string | undefined>;
|
|
13856
|
+
setIdentity: (identity: AppIdentity) => void;
|
|
13857
|
+
loadIdentity: import("@ngrx/signals/rxjs-interop").RxMethod<string | undefined>;
|
|
13633
13858
|
loadNav: import("@ngrx/signals/rxjs-interop").RxMethod<{
|
|
13634
13859
|
navId: string;
|
|
13635
13860
|
appNavId: string | undefined;
|
|
@@ -13675,6 +13900,7 @@ export declare const NavStore: import("@angular/core").Type<{
|
|
|
13675
13900
|
remoteWidgets: Record<string, NavWidgetRegistryEntry>;
|
|
13676
13901
|
navMap: NavMap;
|
|
13677
13902
|
wcConfigMap: Record<string, WebComponentConfig$1>;
|
|
13903
|
+
identityMap: Record<string, AppIdentity>;
|
|
13678
13904
|
navLoading: boolean;
|
|
13679
13905
|
visibilityAnswers: Record<string, boolean>;
|
|
13680
13906
|
}>>;
|
|
@@ -13925,14 +14151,23 @@ export declare class NavComponent {
|
|
|
13925
14151
|
/** An Open App draws as part of the host: the host's logo, no apps button. */
|
|
13926
14152
|
protected activeAppOpen: import("@angular/core").Signal<boolean>;
|
|
13927
14153
|
protected logoPending: import("@angular/core").Signal<boolean>;
|
|
14154
|
+
/**
|
|
14155
|
+
* A WC app's AppLogo is drawn from its Store identity (nx ADR 0007) — its
|
|
14156
|
+
* first letter until the identity arrives or while it has no LogoGlyph. The
|
|
14157
|
+
* host, which is not a Store App, keeps its file-based AppLogo.
|
|
14158
|
+
*/
|
|
13928
14159
|
protected logo: import("@angular/core").Signal<{
|
|
13929
|
-
src: string;
|
|
13930
|
-
alt: string;
|
|
13931
14160
|
app: string;
|
|
13932
|
-
} | {
|
|
13933
|
-
src: string;
|
|
13934
14161
|
alt: string;
|
|
14162
|
+
glyph: string | null;
|
|
14163
|
+
color: string | null;
|
|
14164
|
+
src: undefined;
|
|
14165
|
+
} | {
|
|
13935
14166
|
app: undefined;
|
|
14167
|
+
alt: string;
|
|
14168
|
+
glyph: null;
|
|
14169
|
+
color: null;
|
|
14170
|
+
src: string;
|
|
13936
14171
|
} | undefined>;
|
|
13937
14172
|
/**
|
|
13938
14173
|
* The App Rail below the AppLogo (GLOSSARY.md App Rail): the Main Slot's App,
|
|
@@ -13943,8 +14178,8 @@ export declare class NavComponent {
|
|
|
13943
14178
|
key: string;
|
|
13944
14179
|
appNavId: string;
|
|
13945
14180
|
pending: boolean;
|
|
13946
|
-
|
|
13947
|
-
|
|
14181
|
+
glyph: string | null;
|
|
14182
|
+
color: string | null;
|
|
13948
14183
|
alt: string;
|
|
13949
14184
|
active: boolean;
|
|
13950
14185
|
}[]>;
|
|
@@ -14025,6 +14260,7 @@ export declare class NavDetailsComponent {
|
|
|
14025
14260
|
remoteWidgets: import("@angular/core").Signal<Record<string, NavWidgetRegistryEntry>>;
|
|
14026
14261
|
navMap: import("@angular/core").Signal<import("@magmonium/one").NavMap>;
|
|
14027
14262
|
wcConfigMap: import("@angular/core").Signal<Record<string, import("dist/libs/cli/src").WebComponentConfig>>;
|
|
14263
|
+
identityMap: import("@angular/core").Signal<Record<string, import("@magmonium/one").AppIdentity>>;
|
|
14028
14264
|
navLoading: import("@angular/core").Signal<boolean>;
|
|
14029
14265
|
visibilityAnswers: import("@angular/core").Signal<Record<string, boolean>>;
|
|
14030
14266
|
navigationEnd: import("@angular/core").Signal<import("@angular/router").RouterStateSnapshot>;
|
|
@@ -14059,6 +14295,8 @@ export declare class NavDetailsComponent {
|
|
|
14059
14295
|
navMenus: import("@angular/core").Signal<import("@magmonium/one").BreadcrumbTrail[]>;
|
|
14060
14296
|
navHasContent: import("@angular/core").Signal<boolean>;
|
|
14061
14297
|
currentWcConfig: import("@angular/core").Signal<import("dist/libs/cli/src").WebComponentConfig | undefined>;
|
|
14298
|
+
currentIdentity: import("@angular/core").Signal<import("@magmonium/one").AppIdentity | undefined>;
|
|
14299
|
+
appLogo: import("@angular/core").Signal<import("@magmonium/one").AppLogoSource | undefined>;
|
|
14062
14300
|
activeAppOpen: import("@angular/core").Signal<boolean>;
|
|
14063
14301
|
transparentNavIds: import("@angular/core").Signal<ReadonlySet<string>>;
|
|
14064
14302
|
resolvedNavMenuConfig: import("@angular/core").Signal<import("@magmonium/one").NavMenuConfig | null>;
|
|
@@ -14105,6 +14343,8 @@ export declare class NavDetailsComponent {
|
|
|
14105
14343
|
mountOf: (navId: string) => import("@magmonium/one").RemoteMount | undefined;
|
|
14106
14344
|
setWcConfig: (appLink: string, config: import("dist/libs/cli/src").WebComponentConfig) => void;
|
|
14107
14345
|
loadWcConfig: import("@ngrx/signals/rxjs-interop").RxMethod<string | undefined>;
|
|
14346
|
+
setIdentity: (identity: import("@magmonium/one").AppIdentity) => void;
|
|
14347
|
+
loadIdentity: import("@ngrx/signals/rxjs-interop").RxMethod<string | undefined>;
|
|
14108
14348
|
loadNav: import("@ngrx/signals/rxjs-interop").RxMethod<{
|
|
14109
14349
|
navId: string;
|
|
14110
14350
|
appNavId: string | undefined;
|
|
@@ -14150,6 +14390,7 @@ export declare class NavDetailsComponent {
|
|
|
14150
14390
|
remoteWidgets: Record<string, NavWidgetRegistryEntry>;
|
|
14151
14391
|
navMap: import("@magmonium/one").NavMap;
|
|
14152
14392
|
wcConfigMap: Record<string, import("dist/libs/cli/src").WebComponentConfig>;
|
|
14393
|
+
identityMap: Record<string, import("@magmonium/one").AppIdentity>;
|
|
14153
14394
|
navLoading: boolean;
|
|
14154
14395
|
visibilityAnswers: Record<string, boolean>;
|
|
14155
14396
|
}>;
|
|
@@ -14278,6 +14519,7 @@ export declare class NavHeaderComponent {
|
|
|
14278
14519
|
remoteWidgets: import("@angular/core").Signal<Record<string, NavWidgetRegistryEntry>>;
|
|
14279
14520
|
navMap: import("@angular/core").Signal<import("@magmonium/one").NavMap>;
|
|
14280
14521
|
wcConfigMap: import("@angular/core").Signal<Record<string, import("dist/libs/cli/src").WebComponentConfig>>;
|
|
14522
|
+
identityMap: import("@angular/core").Signal<Record<string, import("@magmonium/one").AppIdentity>>;
|
|
14281
14523
|
navLoading: import("@angular/core").Signal<boolean>;
|
|
14282
14524
|
visibilityAnswers: import("@angular/core").Signal<Record<string, boolean>>;
|
|
14283
14525
|
navigationEnd: import("@angular/core").Signal<import("@angular/router").RouterStateSnapshot>;
|
|
@@ -14312,6 +14554,8 @@ export declare class NavHeaderComponent {
|
|
|
14312
14554
|
navMenus: import("@angular/core").Signal<import("@magmonium/one").BreadcrumbTrail[]>;
|
|
14313
14555
|
navHasContent: import("@angular/core").Signal<boolean>;
|
|
14314
14556
|
currentWcConfig: import("@angular/core").Signal<import("dist/libs/cli/src").WebComponentConfig | undefined>;
|
|
14557
|
+
currentIdentity: import("@angular/core").Signal<import("@magmonium/one").AppIdentity | undefined>;
|
|
14558
|
+
appLogo: import("@angular/core").Signal<import("@magmonium/one").AppLogoSource | undefined>;
|
|
14315
14559
|
activeAppOpen: import("@angular/core").Signal<boolean>;
|
|
14316
14560
|
transparentNavIds: import("@angular/core").Signal<ReadonlySet<string>>;
|
|
14317
14561
|
resolvedNavMenuConfig: import("@angular/core").Signal<import("@magmonium/one").NavMenuConfig | null>;
|
|
@@ -14358,6 +14602,8 @@ export declare class NavHeaderComponent {
|
|
|
14358
14602
|
mountOf: (navId: string) => import("@magmonium/one").RemoteMount | undefined;
|
|
14359
14603
|
setWcConfig: (appLink: string, config: import("dist/libs/cli/src").WebComponentConfig) => void;
|
|
14360
14604
|
loadWcConfig: import("@ngrx/signals/rxjs-interop").RxMethod<string | undefined>;
|
|
14605
|
+
setIdentity: (identity: import("@magmonium/one").AppIdentity) => void;
|
|
14606
|
+
loadIdentity: import("@ngrx/signals/rxjs-interop").RxMethod<string | undefined>;
|
|
14361
14607
|
loadNav: import("@ngrx/signals/rxjs-interop").RxMethod<{
|
|
14362
14608
|
navId: string;
|
|
14363
14609
|
appNavId: string | undefined;
|
|
@@ -14403,6 +14649,7 @@ export declare class NavHeaderComponent {
|
|
|
14403
14649
|
remoteWidgets: Record<string, NavWidgetRegistryEntry>;
|
|
14404
14650
|
navMap: import("@magmonium/one").NavMap;
|
|
14405
14651
|
wcConfigMap: Record<string, import("dist/libs/cli/src").WebComponentConfig>;
|
|
14652
|
+
identityMap: Record<string, import("@magmonium/one").AppIdentity>;
|
|
14406
14653
|
navLoading: boolean;
|
|
14407
14654
|
visibilityAnswers: Record<string, boolean>;
|
|
14408
14655
|
}>;
|
|
@@ -14447,6 +14694,11 @@ export declare class NavHeaderComponent {
|
|
|
14447
14694
|
_searchLabel: import("@angular/core").Signal<string>;
|
|
14448
14695
|
_trail: import("@angular/core").Signal<import("@magmonium/one").BreadcrumbTrail[] | null>;
|
|
14449
14696
|
_user: import("@angular/core").Signal<import("@magmonium/one").AuthUser | null>;
|
|
14697
|
+
/**
|
|
14698
|
+
* The heading a panel draws in its body: null where the panel is the search
|
|
14699
|
+
* one (the bar is its heading) or the user one (the User is), so a panel that
|
|
14700
|
+
* has a header of its own never also draws the breadcrumb's.
|
|
14701
|
+
*/
|
|
14450
14702
|
_header: import("@angular/core").Signal<import("@magmonium/one").BreadcrumbTrail | null>;
|
|
14451
14703
|
constructor();
|
|
14452
14704
|
static ɵfac: i0.ɵɵFactoryDeclaration<NavHeaderComponent, never>;
|
|
@@ -15717,8 +15969,11 @@ export declare function settingsWidgets(): Record<string, NavWidgetEntry>;
|
|
|
15717
15969
|
interface AppTileData {
|
|
15718
15970
|
id: string;
|
|
15719
15971
|
name: string;
|
|
15972
|
+
/** An icon name, for a tile that is not an app; an app draws its AppLogo. */
|
|
15720
15973
|
icon?: string;
|
|
15721
|
-
|
|
15974
|
+
/** The Store App's LogoGlyph and App Color (nx ADR 0007). */
|
|
15975
|
+
logoGlyph?: string | null;
|
|
15976
|
+
appColor?: string | null;
|
|
15722
15977
|
link: string;
|
|
15723
15978
|
isDraft: boolean;
|
|
15724
15979
|
}
|
|
@@ -15729,10 +15984,7 @@ export declare class AppTileComponent {
|
|
|
15729
15984
|
readonly openApp: import("@angular/core").OutputEmitterRef<AppTileData>;
|
|
15730
15985
|
readonly clearAll: import("@angular/core").OutputEmitterRef<void>;
|
|
15731
15986
|
protected readonly expanded: import("@angular/core").WritableSignal<boolean>;
|
|
15732
|
-
protected readonly fallback = "apps";
|
|
15733
15987
|
protected readonly icon: import("@angular/core").Signal<string | undefined>;
|
|
15734
|
-
protected readonly remote: import("@angular/core").Signal<string | undefined>;
|
|
15735
|
-
protected readonly isUrl: import("@angular/core").Signal<boolean>;
|
|
15736
15988
|
protected readonly notificationCount: import("@angular/core").Signal<number>;
|
|
15737
15989
|
protected readonly expandOrNavigate: (_event: Event) => void;
|
|
15738
15990
|
protected readonly handleAction: (button: Button | undefined) => void;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"magmonium-one-icon-BTPHGpEN.mjs","names":["catchError"],"sources":["../../../../libs/one/src/lib/shared/ui/icon/type/magmonium.ts","../../../../libs/one/src/lib/shared/ui/icon/model/shared-icons.ts","../../../../libs/one/src/lib/shared/ui/icon/lib/lib-icon.ts","../../../../libs/one/src/lib/shared/config/size-context.token.ts","../../../../libs/one/src/lib/shared/ui/icon/ui/icon.ts","../../../../libs/one/src/lib/shared/ui/icon/lib/custom-icon.ts","../../../../libs/one/src/lib/shared/ui/icon/ui/custom-icon.ts","../../../../libs/one/src/lib/shared/ui/icon/ui/custom-icon-edit.ts"],"sourcesContent":["export const MAGMONIUM = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"-15 -15 120 165\">\n <g>\n <path fill=\"#color\" style=\"opacity: 0.7;\" d=\"M5 5 L5 65 L85 65 Z\" />\n <path fill=\"#color\" style=\"opacity: 0.3;\" d=\"M85 5 L5 65 L85 65 Z\" />\n </g>\n <g>\n <path fill=\"#color\" style=\"opacity: 0.3;\" d=\"M5 70 L85 70 L5 130 Z\" />\n <path fill=\"#color\" style=\"opacity: 0.7;\" d=\"M85 70 L5 70 L85 130 Z\" />\n </g>\n </svg>\n `;\n","// AUTO-GENERATED by assets:compile — do not edit manually\nexport const SHARED_ICONS = [\n 'accordion_chevron',\n 'account_balance_wallet',\n 'activity',\n 'add-image',\n 'adjust',\n 'alert-circle',\n 'analytics',\n 'apps',\n 'arrow-down',\n 'arrow-left',\n 'arrow-left-right',\n 'arrow-right',\n 'arrow-up',\n 'arrow_back',\n 'bell',\n 'bold',\n 'books',\n 'calendar',\n 'calendar-open',\n 'camera',\n 'chat',\n 'check',\n 'chevron-down',\n 'chevron-left',\n 'chevron-right',\n 'chevron-up',\n 'chevron_left',\n 'chevrons-down',\n 'chevrons-left',\n 'chevrons-right',\n 'chevrons-up',\n 'clipboard',\n 'code',\n 'coins',\n 'color-picker',\n 'copy',\n 'copyright',\n 'corner-left-up',\n 'currency_exchange',\n 'dot',\n 'download',\n 'ellipsis-vertical',\n 'exclamation-triangle',\n 'eye',\n 'eye_close',\n 'file-code',\n 'file-data',\n 'file-image',\n 'file-markup',\n 'file-style',\n 'file-text',\n 'fixed',\n 'flower',\n 'folder',\n 'games',\n 'gear',\n 'heading',\n 'heart',\n 'heart_filled',\n 'help',\n 'hero',\n 'info',\n 'install',\n 'instrument',\n 'investments',\n 'italic',\n 'language',\n 'layers',\n 'layouts',\n 'link',\n 'link-broken',\n 'list',\n 'loading',\n 'loading-bars',\n 'loading-dots',\n 'loading-logo',\n 'loading-pulse',\n 'location',\n 'lock',\n 'logo',\n 'magazines',\n 'mail',\n 'menu',\n 'mic',\n 'minus',\n 'monitor',\n 'more',\n 'notification',\n 'notification_off',\n 'open',\n 'pause',\n 'pencil',\n 'play',\n 'plus',\n 'posts',\n 'quote',\n 'redo',\n 'reload',\n 'reset',\n 'save',\n 'scissors',\n 'search',\n 'section',\n 'security',\n 'settings',\n 'shield',\n 'smartphone',\n 'sort-alpha-asc',\n 'sort-alpha-desc',\n 'sparkles',\n 'square',\n 'star',\n 'store',\n 'strategies',\n 'strikethrough',\n 'sun',\n 'table',\n 'tablet',\n 'target',\n 'theme',\n 'trash',\n 'trash-2',\n 'trending-down',\n 'trending-up',\n 'undo',\n 'user',\n 'users',\n 'wallet_manager',\n 'wallet_owner',\n 'wallet_shareholder',\n 'wand',\n 'wifi',\n 'x',\n 'zap',\n];\n","import { Icon, MAGMONIUM } from '../type/icon';\nimport { ElementRef } from '@angular/core';\nimport { SHARED_ICONS } from '../model/shared-icons';\nexport { SHARED_ICONS };\n\nexport function isOneIcon(element: ElementRef<HTMLElement>, config?: Icon) {\n if (typeof config?.one !== 'undefined') {\n return !!config.one;\n }\n\n // cast SHARED_ICONS to a generic string array for runtime includes check\n if (config?.name && (SHARED_ICONS as readonly string[]).includes(config.name)) {\n return true;\n }\n\n const tagName = element.nativeElement.tagName;\n return tagName === 'M-ONE-ICON';\n}\n\nfunction textToSvg(str = MAGMONIUM, color: string): string {\n if (typeof str !== 'string') return str as unknown as string;\n return str.replace(/#color/g, color).replace(/currentColor/g, color);\n}\n\nexport function svgElementFromString(str: string, color: string): SVGElement {\n const parser = new DOMParser();\n const doc = parser.parseFromString(textToSvg(str, color), 'image/svg+xml');\n const svg = doc.documentElement;\n\n if (svg && svg.nodeName === 'svg') {\n return svg as unknown as SVGElement;\n }\n\n const errorSvg = parser.parseFromString(textToSvg(MAGMONIUM, color), 'image/svg+xml');\n return errorSvg.documentElement as unknown as SVGElement;\n}\n","import { inject, InjectionToken, Provider, Signal, Type } from '@angular/core';\nimport { Size } from '../enum/scaling/size';\n\n/**\n * The Size in force for a subtree. Provided by the only components that may\n * declare one — Section, ButtonGroup, and the markup-composed SectionButtonGroup\n * (the last two are one seat, ADR 0008) — and injected `{ optional: true }` by\n * each of them (so a declarer falls back to the nearest one above it) and by\n * the few primitives whose size is a box dimension rather than a font size.\n *\n * Most components need nothing: a declarer also sets `font-size` on its own\n * host, so anything measured in `em` follows through ordinary CSS inheritance.\n * The token exists for what inheritance cannot do — a ButtonGroup or\n * SectionButtonGroup overriding its Section, and Icon sizing a square glyph.\n * See ADR 0008.\n */\nexport interface SizeContext {\n readonly size: Signal<Size>;\n}\n\nexport const SIZE_CONTEXT = new InjectionToken<SizeContext>('SIZE_CONTEXT');\n\nexport interface SizeDeclarer {\n readonly resolvedSize: Signal<Size>;\n}\n\n/**\n * Publishes a declarer's resolved Size to its subtree. Goes in `providers` and\n * never `viewProviders`: a Section's Cols and a ButtonGroup's Buttons are\n * projected content, which only `providers` reaches.\n */\nexport function provideSizeContext(\n declarer: Type<SizeDeclarer>\n): Provider {\n return {\n provide: SIZE_CONTEXT,\n useFactory: (): SizeContext => ({ size: inject(declarer).resolvedSize }),\n };\n}\n\n/**\n * The Size in force above a declarer. `skipSelf` because a declarer provides\n * SIZE_CONTEXT itself, and injecting its own provider would be circular — what\n * it wants is the nearest declarer *above* it, so that a Section with no Size\n * of its own takes its parent Section's and a ButtonGroup takes its Section's.\n */\nexport function injectParentSize(): SizeContext | null {\n return inject(SIZE_CONTEXT, { optional: true, skipSelf: true });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n model,\n untracked,\n} from '@angular/core';\nimport { Icon, MAGMONIUM } from '../type/icon';\nimport { isOneIcon, svgElementFromString } from '../lib/lib-icon';\nimport { SIZE_CONTEXT } from '../../../config/size-context.token';\nimport { resolveIconSize } from '../../../functions/size/size-converter';\nimport { AssetStore } from '../../../stores/asset.store';\nimport { HttpService } from '../../../services/http';\nimport { rxResource } from '@angular/core/rxjs-interop';\nimport { catchError } from 'rxjs/operators';\nimport { of } from 'rxjs';\nimport { applyColorsToElement, ThemeStore } from '../../../lib/theme';\nimport { ICON_SOURCE } from '../../../config/tokens';\n\n@Component({\n selector: 'm-icon, m-one-icon',\n template: `<ng-content></ng-content>`,\n styleUrls: ['./icon.sass'],\n host: {\n '[class.has-color]': 'resolvedConfig()?.color',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconComponent {\n // Kept for the callers that hand an Icon a whole object rather than write it\n // out — a Button naming its own glyph, a SectionFormItem passing a Field's.\n config = model<Icon | undefined>(undefined);\n\n // `name` is the SVG's filename in `mag_assets/icons/`, not a config asset:\n // an Icon resolves artwork, so it is the one primitive whose name points at\n // a picture rather than at a description of itself (ADR 0010). `size` is a\n // free length (number → em), not a Size — Size stays on Section / ButtonGroup\n // (ADR 0008); set here only to overwrite the box SIZE_CONTEXT would give.\n readonly name = input<string | undefined>();\n readonly color = input<string | undefined>();\n readonly size = input<number | string | undefined>();\n readonly one = input<boolean | undefined>();\n readonly baseUrl = input<string | undefined>();\n readonly remote = input<string | undefined>();\n\n // Attributes win over the bound object, and an omitted one leaves the\n // object's key standing rather than blanking it.\n protected readonly resolvedConfig = computed<Icon | undefined>(() => {\n const config = this.config();\n const overrides: Icon = {};\n const name = this.name();\n if (name !== undefined) overrides.name = name;\n const color = this.color();\n if (color !== undefined) overrides.color = color;\n const one = this.one();\n if (one !== undefined) overrides.one = one;\n const baseUrl = this.baseUrl();\n if (baseUrl !== undefined) overrides.baseUrl = baseUrl;\n const remote = this.remote();\n if (remote !== undefined) overrides.remote = remote;\n if (!config && !Object.keys(overrides).length) return undefined;\n return { ...config, ...overrides };\n });\n\n private readonly elementRef = inject(ElementRef);\n // Icon sizes a square glyph through width/height, which no amount of\n // inherited font-size can set — so it is one of the few primitives that\n // reads the Size in force directly (ADR 0008).\n private readonly sizeContext = inject(SIZE_CONTEXT, { optional: true });\n private readonly assetStore = inject(AssetStore);\n private readonly http = inject(HttpService);\n private currentSvgElement: SVGElement | null = null;\n private readonly themeStore = inject(ThemeStore);\n private readonly isOneIcon = computed(() =>\n isOneIcon(this.elementRef, this.resolvedConfig())\n );\n private readonly remoteBaseUrl = computed<string | undefined>(() => {\n const remoteId = this.resolvedConfig()?.remote;\n return remoteId ? this.http.buildWcAssetBaseUrl(remoteId) : undefined;\n });\n\n // Icons supplied by name from memory (e.g. a visual editor's unsaved glyphs).\n // Read as a signal rather than through the resource below so that changing the\n // markup under an unchanged name repaints every icon already using it.\n private readonly iconSource = inject(ICON_SOURCE, { optional: true });\n private readonly inlineSvg = computed(() => {\n const name = this.resolvedConfig()?.name;\n return name ? this.iconSource?.()?.[name] : undefined;\n });\n\n private readonly text = rxResource({\n params: computed(\n () => ({\n name: this.resolvedConfig()?.name,\n isOneIcon: untracked(() => this.isOneIcon()),\n remoteBaseUrl: this.remoteBaseUrl(),\n }),\n { equal: (a, b) => a?.name === b?.name && a?.remoteBaseUrl === b?.remoteBaseUrl }\n ),\n stream: ({ params: { name, isOneIcon, remoteBaseUrl } }) => {\n if (!name) return untracked(() =>\n this.assetStore.resolve<string>('icons', 'logo', true).pipe(catchError(() => of(MAGMONIUM)))\n );\n // Skips the request entirely for an in-memory glyph — there is no asset\n // behind it, so fetching only ever produces a 404 and the fallback logo.\n const inline = untracked(() => this.inlineSvg());\n if (inline) return of(inline);\n return untracked(() =>\n this.assetStore\n .resolve<string>('icons', name, isOneIcon, remoteBaseUrl)\n .pipe(catchError(() => of(MAGMONIUM)))\n );\n },\n });\n\n private readonly pallet = computed(() =>\n applyColorsToElement(\n this.resolvedConfig()?.color ?? this.themeStore.color()?.mm ?? '#fff',\n this.themeStore.color(),\n this.elementRef.nativeElement\n )\n );\n\n constructor() {\n effect(this.updateElement);\n effect(this.applySize);\n }\n\n private readonly applySize = (): void => {\n this.elementRef.nativeElement.style.setProperty(\n '--m-icon-size',\n resolveIconSize(this.size(), this.sizeContext?.size())\n );\n };\n\n private readonly updateElement = (): void => {\n const element = this.elementRef.nativeElement;\n if (this.currentSvgElement) {\n this.currentSvgElement.remove();\n this.currentSvgElement = null;\n }\n const svg = svgElementFromString(\n this.inlineSvg() ?? (this.text.value() as string),\n this.pallet()?.color ?? this.themeStore.color()?.mm ?? '#fff'\n );\n if (!svg) return;\n this.currentSvgElement = svg;\n svg.removeAttribute('width');\n svg.removeAttribute('height');\n svg.style.width = 'var(--m-icon-size, 1em)';\n svg.style.height = 'var(--m-icon-size, 1em)';\n svg.style.flexShrink = '0';\n svg.removeAttribute('stroke-width');\n svg.style.setProperty('stroke-width', '2px');\n svg.querySelectorAll('*').forEach((el) => {\n el.removeAttribute('stroke-width');\n if (el instanceof HTMLElement || el instanceof SVGElement) {\n el.style.removeProperty('stroke-width');\n }\n });\n element.prepend(svg);\n };\n}\n","import { CustomIcon } from '../type/icon';\nimport { ThemeColor } from '@magmonium/cli';\n\nfunction genColor(colors: ThemeColor, color: string) {\n return colors[color as keyof ThemeColor] ?? color;\n}\n\nexport function isLargeImage(svg: CustomIcon): boolean {\n const width = svg.width || 0;\n const height = svg.height || 0;\n const area = width * height;\n return area > 2000000 || width > 2000 || height > 2000;\n}\n\nexport function genViewPort(svg: CustomIcon | undefined) {\n if (!svg) return '0 0 0 0';\n const width = svg.width || 0;\n const height = svg.height || 0;\n return `0 0 ${width} ${height}`;\n}\n\nexport function computedFillColor(\n svg: CustomIcon,\n colors?: ThemeColor,\n fillColor?: string\n) {\n const { lineColor, backgroundColor, invertSvg } = svg.edit;\n if (!colors) {\n return fillColor ?? backgroundColor;\n }\n return genColor(\n colors,\n invertSvg ? lineColor : (fillColor ?? backgroundColor)\n );\n}\n\nexport function computeLineColor(\n svg: CustomIcon,\n colors?: ThemeColor,\n strokeColor?: string\n) {\n const { lineColor, backgroundColor, invertSvg } = svg.edit;\n if (!colors) {\n return strokeColor ?? lineColor;\n }\n return genColor(\n colors,\n invertSvg ? backgroundColor : (strokeColor ?? lineColor)\n );\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n} from '@angular/core';\nimport { CustomIcon } from '../type/icon';\nimport {\n computedFillColor,\n computeLineColor,\n genViewPort,\n isLargeImage,\n} from '../lib/custom-icon';\nimport { ThemeStore } from '../../../lib/theme';\n\n@Component({\n selector: 'm-custom-icon',\n template: `\n <!-- eslint-disable local/no-raw-svg -->\n @if (svg(); as svg) {\n <svg\n xmlns=\"http:/www.w3.org/2000/svg\"\n [attr.viewBox]=\"viewBox()\"\n [attr.width]=\"svg.width\"\n [attr.height]=\"svg.height\"\n preserveAspectRatio=\"xMidYMid meet\"\n >\n @if (_fillColor(); as fillColor) {\n <rect\n [attr.width]=\"svg.width\"\n [attr.height]=\"svg.height\"\n [attr.fill]=\"fillColor\"\n />\n }\n @if (_strokeColor(); as stroke) {\n @for (path of svg?.paths; track $index) {\n <path\n class=\"svg-path\"\n [attr.d]=\"path\"\n [attr.fill]=\"'none'\"\n [attr.stroke]=\"stroke\"\n [attr.stroke-linecap]=\"svg?.edit?.linecap\"\n [attr.stroke-linejoin]=\"svg?.edit?.linejoin\"\n [attr.stroke-width]=\"svg.edit.strokeWidth\"\n [attr.vector-effect]=\"vectorEffect()\"\n />\n }\n }\n </svg>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CustomIconClass {\n svg = input.required<CustomIcon>();\n strokeColor = input<string | undefined>(undefined);\n fillColor = input<string | undefined>(undefined);\n strokeWidth = input<number | undefined>(undefined);\n\n protected readonly viewBox = computed(() => genViewPort(this.svg()));\n protected readonly vectorEffect = computed(() => {\n return isLargeImage(this.svg()) ? 'non-scaling-stroke' : null;\n });\n private readonly themeStore = inject(ThemeStore);\n protected readonly _fillColor = computed(() =>\n computedFillColor(this.svg(), this.themeStore.color(), this.fillColor())\n );\n protected readonly _strokeColor = computed(() => {\n return computeLineColor(\n this.svg(),\n this.themeStore.color(),\n this.strokeColor()\n );\n });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostListener,\n computed,\n inject,\n input,\n model,\n} from '@angular/core';\nimport { CustomIcon } from '../type/icon';\nimport {\n computedFillColor,\n computeLineColor,\n genViewPort,\n isLargeImage,\n} from '../lib/custom-icon';\nimport { ThemeStore } from '../../../lib/theme';\n\n@Component({\n selector: 'm-custom-icon-edit',\n imports: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <!-- eslint-disable local/no-raw-svg -->\n @if (svg(); as svg) {\n <svg\n xmlns=\"http:/www.w3.org/2000/svg\"\n [attr.viewBox]=\"_viewBox()\"\n [attr.width]=\"svg.width\"\n [attr.height]=\"svg.height\"\n preserveAspectRatio=\"xMidYMid meet\"\n >\n @if (_fillColor(); as fillColor) {\n <rect\n [attr.width]=\"svg.width\"\n [attr.height]=\"svg.height\"\n [attr.fill]=\"fillColor\"\n />\n }\n @for (path of svg.paths; track $index) {\n <path\n class=\"svg-path\"\n (click)=\"_onPathClick($index)\"\n [class.interactive]=\"svg.edit.canInteract\"\n [class.selected]=\"_selectedIndex.includes($index)\"\n [attr.d]=\"path\"\n [attr.fill]=\"'none'\"\n [attr.stroke]=\"_strokeColor()\"\n [attr.stroke-linecap]=\"svg.edit.linecap\"\n [attr.stroke-linejoin]=\"svg.edit.linejoin\"\n [attr.stroke-width]=\"svg.edit.strokeWidth\"\n [attr.vector-effect]=\"_vectorEffect()\"\n />\n }\n </svg>\n }\n `,\n styleUrl: './custom-icon-edit.sass',\n})\nexport class CustomIconEditComponent {\n svg = model<CustomIcon | undefined>(undefined);\n strokeColor = input<string | undefined>(undefined);\n fillColor = input<string | undefined>(undefined);\n\n private readonly themeStore = inject(ThemeStore);\n\n @HostListener('window:keydown', ['$event'])\n onKeydown(event: KeyboardEvent) {\n if (!this.svg()?.edit?.canInteract || this._selectedIndex.length === 0) {\n return;\n }\n if (event.key === ' ') {\n event.preventDefault();\n this.deleteSelectedPaths();\n } else if (event.key === 'Escape') {\n event.preventDefault();\n this._selectedIndex = [];\n }\n }\n\n protected readonly _viewBox = computed(() => genViewPort(this.svg()));\n\n protected readonly _vectorEffect = computed(() => {\n const svg = this.svg();\n return svg && isLargeImage(svg) ? 'non-scaling-stroke' : null;\n });\n\n protected readonly _fillColor = computed(() => {\n const svg = this.svg();\n if (!svg) return undefined;\n return computedFillColor(svg, this.themeStore.color(), this.fillColor());\n });\n\n protected readonly _strokeColor = computed(() => {\n const svg = this.svg();\n if (!svg) return undefined;\n return computeLineColor(svg, this.themeStore.color(), this.strokeColor());\n });\n\n protected readonly _onPathClick = (index: number) => {\n if (!this.svg()?.edit?.canInteract) return;\n this._selectedIndex = Array.from(new Set([...this._selectedIndex, index]));\n };\n\n readonly deleteSelectedPaths = () => {\n this.svg.update((prev) => {\n if (!prev) return prev;\n return {\n ...prev,\n paths: prev.paths.filter((_, i) => !this._selectedIndex.includes(i)),\n };\n });\n this._selectedIndex = [];\n };\n\n protected _selectedIndex: number[] = [];\n}\n"],"mappings":";;;;;;;;AAAA,MAAa,YAAY;;;;;;;;;;;;ACCzB,MAAa,eAAe;CAC1B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;ACnID,SAAgB,UAAU,SAAkC,QAAa;CACvE,IAAI,OAAO,QAAQ,QAAQ,aACzB,OAAO,CAAC,CAAC,OAAO;CAIlB,IAAI,QAAQ,QAAS,aAAmC,SAAS,OAAO,IAAI,GAC1E,OAAO;CAIT,OADgB,QAAQ,cAAc,YACnB;AACrB;AAEA,SAAS,UAAU,MAAM,WAAW,OAAa;CAC/C,IAAI,OAAO,QAAQ,UAAU,OAAO;CACpC,OAAO,IAAI,QAAQ,WAAW,KAAK,CAAC,CAAC,QAAQ,iBAAiB,KAAK;AACrE;AAEA,SAAgB,qBAAqB,KAAa,OAAa;CAC7D,MAAM,SAAS,IAAI,UAAS;CAE5B,MAAM,MADM,OAAO,gBAAgB,UAAU,KAAK,KAAK,GAAG,eAC9C,CAAA,CAAI;CAEhB,IAAI,OAAO,IAAI,aAAa,OAC1B,OAAO;CAIT,OADiB,OAAO,gBAAgB,UAAU,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"}
|