@praxisui/core 3.0.0-beta.4 → 3.0.0-beta.6
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/praxisui-core.mjs +363 -58
- package/fesm2022/praxisui-core.mjs.map +1 -1
- package/index.d.ts +165 -76
- package/package.json +1 -1
|
@@ -10,20 +10,20 @@ import { Router, ActivatedRoute } from '@angular/router';
|
|
|
10
10
|
import * as i2$1 from '@angular/forms';
|
|
11
11
|
import { Validators, FormGroup, FormControl, FormsModule } from '@angular/forms';
|
|
12
12
|
import { MatSnackBar } from '@angular/material/snack-bar';
|
|
13
|
-
import * as
|
|
13
|
+
import * as i4 from '@angular/material/icon';
|
|
14
14
|
import { MatIconModule } from '@angular/material/icon';
|
|
15
15
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
16
16
|
import * as i2 from '@angular/material/button';
|
|
17
17
|
import { MatButtonModule } from '@angular/material/button';
|
|
18
|
-
import * as i4 from '@angular/material/menu';
|
|
18
|
+
import * as i4$1 from '@angular/material/menu';
|
|
19
19
|
import { MatMenuModule } from '@angular/material/menu';
|
|
20
20
|
import * as i5 from '@angular/material/tooltip';
|
|
21
21
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
22
|
-
import * as i3
|
|
22
|
+
import * as i3 from '@angular/material/card';
|
|
23
23
|
import { MatCardModule } from '@angular/material/card';
|
|
24
|
-
import * as i3$
|
|
24
|
+
import * as i3$1 from '@angular/material/form-field';
|
|
25
25
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
26
|
-
import * as i4$
|
|
26
|
+
import * as i4$2 from '@angular/material/input';
|
|
27
27
|
import { MatInputModule } from '@angular/material/input';
|
|
28
28
|
import * as i8 from '@angular/material/chips';
|
|
29
29
|
import { MatChipsModule } from '@angular/material/chips';
|
|
@@ -13954,7 +13954,7 @@ class PraxisRichTextBlockComponent {
|
|
|
13954
13954
|
|
|
13955
13955
|
<div class="prt-content" [innerHTML]="renderedContent"></div>
|
|
13956
13956
|
</section>
|
|
13957
|
-
`, isInline: true, styles: [":host{display:block;--prt-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 72%, transparent);--prt-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface) 96%, var(--md-sys-color-surface-container-lowest) 4%), color-mix(in srgb, var(--md-sys-color-surface-container-low) 92%, var(--md-sys-color-surface) 8%) );--prt-emphasis-border: color-mix(in srgb, var(--md-sys-color-primary) 32%, var(--md-sys-color-outline-variant));--prt-emphasis-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-primary-container) 36%, var(--md-sys-color-surface) 64%), color-mix(in srgb, var(--md-sys-color-surface) 96%, var(--md-sys-color-primary-container) 4%) );--prt-subtle-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 82%, transparent);--prt-icon-bg: color-mix(in srgb, var(--md-sys-color-primary-container) 64%, transparent);--prt-code-bg: color-mix(in srgb, var(--md-sys-color-surface-container-highest) 82%, transparent)}:host-context(.mdc-theme-dark),:host-context(.theme-dark){--prt-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 84%, transparent);--prt-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface-container-low) 92%, var(--md-sys-color-surface) 8%), color-mix(in srgb, var(--md-sys-color-surface-container) 90%, var(--md-sys-color-surface-container-high) 10%) );--prt-emphasis-border: color-mix(in srgb, var(--md-sys-color-primary) 42%, var(--md-sys-color-outline-variant));--prt-emphasis-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-primary-container) 28%, var(--md-sys-color-surface-container-low) 72%), color-mix(in srgb, var(--md-sys-color-surface-container) 92%, var(--md-sys-color-primary-container) 8%) );--prt-subtle-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 88%, transparent);--prt-icon-bg: color-mix(in srgb, var(--md-sys-color-primary-container) 42%, transparent);--prt-code-bg: color-mix(in srgb, var(--md-sys-color-surface-container-high) 88%, transparent)}.prt-block{display:grid;gap:12px;padding:16px 18px;border-radius:16px;border:1px solid var(--prt-border);background:var(--prt-bg);color:var(--md-sys-color-on-surface)}.prt-block-emphasis{border-color:var(--prt-emphasis-border);background:var(--prt-emphasis-bg)}.prt-block-subtle{background:var(--prt-subtle-bg);border-style:dashed}.prt-block-plain{padding:0;border:0;border-radius:0;background:transparent}.prt-head{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start}.prt-icon{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:12px;background:var(--prt-icon-bg);color:var(--md-sys-color-primary);font-size:20px;line-height:1}.prt-title-wrap{display:grid;gap:4px}.prt-title{margin:0;font-size:1rem;font-weight:700;line-height:1.3}.prt-subtitle{margin:0;color:var(--md-sys-color-on-surface-variant);font-size:.86rem;line-height:1.4}.prt-content{color:var(--md-sys-color-on-surface);font-size:.94rem;line-height:1.6}.prt-content :where(p,ul){margin:0}.prt-content :where(p+p,p+ul,ul+p,ul+ul){margin-top:10px}.prt-content ul{padding-left:18px}.prt-content a{color:var(--md-sys-color-primary);text-decoration:underline;text-underline-offset:2px}.prt-content strong{font-weight:700}.prt-content em{font-style:italic}.prt-content code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.88em;padding:.1em .35em;border-radius:6px;background:var(--prt-code-bg)}.prt-block-plain .prt-icon{width:32px;height:32px;border-radius:10px;background:color-mix(in srgb,var(--md-sys-color-surface-container-high) 80%,transparent)}.prt-block-plain .prt-content{font-size:.92rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type:
|
|
13957
|
+
`, isInline: true, styles: [":host{display:block;--prt-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 72%, transparent);--prt-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface) 96%, var(--md-sys-color-surface-container-lowest) 4%), color-mix(in srgb, var(--md-sys-color-surface-container-low) 92%, var(--md-sys-color-surface) 8%) );--prt-emphasis-border: color-mix(in srgb, var(--md-sys-color-primary) 32%, var(--md-sys-color-outline-variant));--prt-emphasis-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-primary-container) 36%, var(--md-sys-color-surface) 64%), color-mix(in srgb, var(--md-sys-color-surface) 96%, var(--md-sys-color-primary-container) 4%) );--prt-subtle-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 82%, transparent);--prt-icon-bg: color-mix(in srgb, var(--md-sys-color-primary-container) 64%, transparent);--prt-code-bg: color-mix(in srgb, var(--md-sys-color-surface-container-highest) 82%, transparent)}:host-context(.mdc-theme-dark),:host-context(.theme-dark){--prt-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 84%, transparent);--prt-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface-container-low) 92%, var(--md-sys-color-surface) 8%), color-mix(in srgb, var(--md-sys-color-surface-container) 90%, var(--md-sys-color-surface-container-high) 10%) );--prt-emphasis-border: color-mix(in srgb, var(--md-sys-color-primary) 42%, var(--md-sys-color-outline-variant));--prt-emphasis-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-primary-container) 28%, var(--md-sys-color-surface-container-low) 72%), color-mix(in srgb, var(--md-sys-color-surface-container) 92%, var(--md-sys-color-primary-container) 8%) );--prt-subtle-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 88%, transparent);--prt-icon-bg: color-mix(in srgb, var(--md-sys-color-primary-container) 42%, transparent);--prt-code-bg: color-mix(in srgb, var(--md-sys-color-surface-container-high) 88%, transparent)}.prt-block{display:grid;gap:12px;padding:16px 18px;border-radius:16px;border:1px solid var(--prt-border);background:var(--prt-bg);color:var(--md-sys-color-on-surface)}.prt-block-emphasis{border-color:var(--prt-emphasis-border);background:var(--prt-emphasis-bg)}.prt-block-subtle{background:var(--prt-subtle-bg);border-style:dashed}.prt-block-plain{padding:0;border:0;border-radius:0;background:transparent}.prt-head{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start}.prt-icon{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:12px;background:var(--prt-icon-bg);color:var(--md-sys-color-primary);font-size:20px;line-height:1}.prt-title-wrap{display:grid;gap:4px}.prt-title{margin:0;font-size:1rem;font-weight:700;line-height:1.3}.prt-subtitle{margin:0;color:var(--md-sys-color-on-surface-variant);font-size:.86rem;line-height:1.4}.prt-content{color:var(--md-sys-color-on-surface);font-size:.94rem;line-height:1.6}.prt-content :where(p,ul){margin:0}.prt-content :where(p+p,p+ul,ul+p,ul+ul){margin-top:10px}.prt-content ul{padding-left:18px}.prt-content a{color:var(--md-sys-color-primary);text-decoration:underline;text-underline-offset:2px}.prt-content strong{font-weight:700}.prt-content em{font-style:italic}.prt-content code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.88em;padding:.1em .35em;border-radius:6px;background:var(--prt-code-bg)}.prt-block-plain .prt-icon{width:32px;height:32px;border-radius:10px;background:color-mix(in srgb,var(--md-sys-color-surface-container-high) 80%,transparent)}.prt-block-plain .prt-content{font-size:.92rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
13958
13958
|
}
|
|
13959
13959
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisRichTextBlockComponent, decorators: [{
|
|
13960
13960
|
type: Component,
|
|
@@ -15102,7 +15102,7 @@ class WidgetShellComponent {
|
|
|
15102
15102
|
@if (expanded || fullscreen) {
|
|
15103
15103
|
<div class="pdx-shell-backdrop" (click)="closeOverlay()"></div>
|
|
15104
15104
|
}
|
|
15105
|
-
`, isInline: true, styles: [":host{display:block;height:100%}.pdx-shell{position:relative;height:100%;display:flex;flex-direction:column}.pdx-shell.no-shell{background:transparent;border:none;border-radius:0;box-shadow:none}.pdx-shell.dashboard{background:var(--pdx-shell-card-bg, var(--pdx-dashboard-card-bg, var(--md-sys-color-surface-container-low)));border:1px solid var(--pdx-shell-card-border, var(--pdx-dashboard-card-border, var(--md-sys-color-outline-variant)));border-radius:var(--pdx-shell-card-radius, 14px);box-shadow:var(--pdx-shell-card-shadow, var(--mat-elevation-level2));overflow:hidden}.pdx-shell-header{display:flex;align-items:center;gap:12px;padding:10px 12px 8px;border-bottom:1px solid var(--pdx-shell-header-border, var(--md-sys-color-outline-variant));background:var(--pdx-shell-header-bg, var(--md-sys-color-surface-container))}.pdx-shell-title{display:flex;align-items:center;gap:10px;min-width:0;flex:1;color:var(--pdx-shell-title-color, inherit)}.pdx-shell-title mat-icon{color:var(--pdx-shell-icon-color, currentColor)}.pdx-shell-text{min-width:0}.pdx-shell-title-text{font-weight:var(--pdx-shell-title-weight, 600);font-size:var(--pdx-shell-title-size, 14px);line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdx-shell-subtitle{font-size:var(--pdx-shell-subtitle-size, 12px);opacity:.75;color:var(--pdx-shell-subtitle-color, currentColor);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdx-shell-actions,.pdx-shell-window-actions{display:flex;align-items:center;gap:6px}.pdx-shell-window-actions{margin-left:auto}.pdx-action-outlined{border:1px solid var(--md-sys-color-outline-variant);border-radius:999px;padding:0 10px}.pdx-action-text{padding:0 8px}.pdx-action-label{font-size:12px;font-weight:500}.pdx-shell-body{flex:1;min-height:0;padding:var(--pdx-shell-body-padding, 10px 12px 12px 12px);background:var(--pdx-shell-body-bg, transparent);color:var(--pdx-shell-body-color, inherit)}.pdx-shell.no-shell .pdx-shell-body{padding:0}.pdx-shell-body.hidden{display:none}.pdx-shell.collapsed .pdx-shell-header{border-bottom-color:transparent}.pdx-shell.expanded .pdx-shell-body,.pdx-shell.fullscreen .pdx-shell-body{overflow:auto}.pdx-shell.expanded{position:fixed;top:10vh;left:50%;width:min(920px,92vw);height:min(640px,82vh);transform:translate(-50%);z-index:1200;box-shadow:var(--mat-elevation-level8)}.pdx-shell.fullscreen{position:fixed;top:50%;left:50%;width:95vw;height:95vh;transform:translate(-50%,-50%);z-index:1201;box-shadow:var(--mat-elevation-level8)}.pdx-shell-backdrop{position:fixed;inset:0;z-index:1199;background:#0000008c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type:
|
|
15105
|
+
`, isInline: true, styles: [":host{display:block;height:100%}.pdx-shell{position:relative;height:100%;display:flex;flex-direction:column}.pdx-shell.no-shell{background:transparent;border:none;border-radius:0;box-shadow:none}.pdx-shell.dashboard{background:var(--pdx-shell-card-bg, var(--pdx-dashboard-card-bg, var(--md-sys-color-surface-container-low)));border:1px solid var(--pdx-shell-card-border, var(--pdx-dashboard-card-border, var(--md-sys-color-outline-variant)));border-radius:var(--pdx-shell-card-radius, 14px);box-shadow:var(--pdx-shell-card-shadow, var(--mat-elevation-level2));overflow:hidden}.pdx-shell-header{display:flex;align-items:center;gap:12px;padding:10px 12px 8px;border-bottom:1px solid var(--pdx-shell-header-border, var(--md-sys-color-outline-variant));background:var(--pdx-shell-header-bg, var(--md-sys-color-surface-container))}.pdx-shell-title{display:flex;align-items:center;gap:10px;min-width:0;flex:1;color:var(--pdx-shell-title-color, inherit)}.pdx-shell-title mat-icon{color:var(--pdx-shell-icon-color, currentColor)}.pdx-shell-text{min-width:0}.pdx-shell-title-text{font-weight:var(--pdx-shell-title-weight, 600);font-size:var(--pdx-shell-title-size, 14px);line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdx-shell-subtitle{font-size:var(--pdx-shell-subtitle-size, 12px);opacity:.75;color:var(--pdx-shell-subtitle-color, currentColor);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdx-shell-actions,.pdx-shell-window-actions{display:flex;align-items:center;gap:6px}.pdx-shell-window-actions{margin-left:auto}.pdx-action-outlined{border:1px solid var(--md-sys-color-outline-variant);border-radius:999px;padding:0 10px}.pdx-action-text{padding:0 8px}.pdx-action-label{font-size:12px;font-weight:500}.pdx-shell-body{flex:1;min-height:0;padding:var(--pdx-shell-body-padding, 10px 12px 12px 12px);background:var(--pdx-shell-body-bg, transparent);color:var(--pdx-shell-body-color, inherit)}.pdx-shell.no-shell .pdx-shell-body{padding:0}.pdx-shell-body.hidden{display:none}.pdx-shell.collapsed .pdx-shell-header{border-bottom-color:transparent}.pdx-shell.expanded .pdx-shell-body,.pdx-shell.fullscreen .pdx-shell-body{overflow:auto;display:flex;flex-direction:column;min-height:0}.pdx-shell.expanded .pdx-shell-body>*,.pdx-shell.fullscreen .pdx-shell-body>*{flex:1 1 auto;min-height:0;width:100%}.pdx-shell.expanded{position:fixed;top:10vh;left:50%;width:min(920px,92vw);height:min(640px,82vh);transform:translate(-50%);z-index:1200;box-shadow:var(--mat-elevation-level8)}.pdx-shell.fullscreen{position:fixed;top:50%;left:50%;width:95vw;height:95vh;transform:translate(-50%,-50%);z-index:1201;box-shadow:var(--mat-elevation-level8)}.pdx-shell-backdrop{position:fixed;inset:0;z-index:1199;background:#0000008c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
15106
15106
|
}
|
|
15107
15107
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: WidgetShellComponent, decorators: [{
|
|
15108
15108
|
type: Component,
|
|
@@ -15231,7 +15231,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
15231
15231
|
@if (expanded || fullscreen) {
|
|
15232
15232
|
<div class="pdx-shell-backdrop" (click)="closeOverlay()"></div>
|
|
15233
15233
|
}
|
|
15234
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;height:100%}.pdx-shell{position:relative;height:100%;display:flex;flex-direction:column}.pdx-shell.no-shell{background:transparent;border:none;border-radius:0;box-shadow:none}.pdx-shell.dashboard{background:var(--pdx-shell-card-bg, var(--pdx-dashboard-card-bg, var(--md-sys-color-surface-container-low)));border:1px solid var(--pdx-shell-card-border, var(--pdx-dashboard-card-border, var(--md-sys-color-outline-variant)));border-radius:var(--pdx-shell-card-radius, 14px);box-shadow:var(--pdx-shell-card-shadow, var(--mat-elevation-level2));overflow:hidden}.pdx-shell-header{display:flex;align-items:center;gap:12px;padding:10px 12px 8px;border-bottom:1px solid var(--pdx-shell-header-border, var(--md-sys-color-outline-variant));background:var(--pdx-shell-header-bg, var(--md-sys-color-surface-container))}.pdx-shell-title{display:flex;align-items:center;gap:10px;min-width:0;flex:1;color:var(--pdx-shell-title-color, inherit)}.pdx-shell-title mat-icon{color:var(--pdx-shell-icon-color, currentColor)}.pdx-shell-text{min-width:0}.pdx-shell-title-text{font-weight:var(--pdx-shell-title-weight, 600);font-size:var(--pdx-shell-title-size, 14px);line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdx-shell-subtitle{font-size:var(--pdx-shell-subtitle-size, 12px);opacity:.75;color:var(--pdx-shell-subtitle-color, currentColor);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdx-shell-actions,.pdx-shell-window-actions{display:flex;align-items:center;gap:6px}.pdx-shell-window-actions{margin-left:auto}.pdx-action-outlined{border:1px solid var(--md-sys-color-outline-variant);border-radius:999px;padding:0 10px}.pdx-action-text{padding:0 8px}.pdx-action-label{font-size:12px;font-weight:500}.pdx-shell-body{flex:1;min-height:0;padding:var(--pdx-shell-body-padding, 10px 12px 12px 12px);background:var(--pdx-shell-body-bg, transparent);color:var(--pdx-shell-body-color, inherit)}.pdx-shell.no-shell .pdx-shell-body{padding:0}.pdx-shell-body.hidden{display:none}.pdx-shell.collapsed .pdx-shell-header{border-bottom-color:transparent}.pdx-shell.expanded .pdx-shell-body,.pdx-shell.fullscreen .pdx-shell-body{overflow:auto}.pdx-shell.expanded{position:fixed;top:10vh;left:50%;width:min(920px,92vw);height:min(640px,82vh);transform:translate(-50%);z-index:1200;box-shadow:var(--mat-elevation-level8)}.pdx-shell.fullscreen{position:fixed;top:50%;left:50%;width:95vw;height:95vh;transform:translate(-50%,-50%);z-index:1201;box-shadow:var(--mat-elevation-level8)}.pdx-shell-backdrop{position:fixed;inset:0;z-index:1199;background:#0000008c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}\n"] }]
|
|
15234
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;height:100%}.pdx-shell{position:relative;height:100%;display:flex;flex-direction:column}.pdx-shell.no-shell{background:transparent;border:none;border-radius:0;box-shadow:none}.pdx-shell.dashboard{background:var(--pdx-shell-card-bg, var(--pdx-dashboard-card-bg, var(--md-sys-color-surface-container-low)));border:1px solid var(--pdx-shell-card-border, var(--pdx-dashboard-card-border, var(--md-sys-color-outline-variant)));border-radius:var(--pdx-shell-card-radius, 14px);box-shadow:var(--pdx-shell-card-shadow, var(--mat-elevation-level2));overflow:hidden}.pdx-shell-header{display:flex;align-items:center;gap:12px;padding:10px 12px 8px;border-bottom:1px solid var(--pdx-shell-header-border, var(--md-sys-color-outline-variant));background:var(--pdx-shell-header-bg, var(--md-sys-color-surface-container))}.pdx-shell-title{display:flex;align-items:center;gap:10px;min-width:0;flex:1;color:var(--pdx-shell-title-color, inherit)}.pdx-shell-title mat-icon{color:var(--pdx-shell-icon-color, currentColor)}.pdx-shell-text{min-width:0}.pdx-shell-title-text{font-weight:var(--pdx-shell-title-weight, 600);font-size:var(--pdx-shell-title-size, 14px);line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdx-shell-subtitle{font-size:var(--pdx-shell-subtitle-size, 12px);opacity:.75;color:var(--pdx-shell-subtitle-color, currentColor);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdx-shell-actions,.pdx-shell-window-actions{display:flex;align-items:center;gap:6px}.pdx-shell-window-actions{margin-left:auto}.pdx-action-outlined{border:1px solid var(--md-sys-color-outline-variant);border-radius:999px;padding:0 10px}.pdx-action-text{padding:0 8px}.pdx-action-label{font-size:12px;font-weight:500}.pdx-shell-body{flex:1;min-height:0;padding:var(--pdx-shell-body-padding, 10px 12px 12px 12px);background:var(--pdx-shell-body-bg, transparent);color:var(--pdx-shell-body-color, inherit)}.pdx-shell.no-shell .pdx-shell-body{padding:0}.pdx-shell-body.hidden{display:none}.pdx-shell.collapsed .pdx-shell-header{border-bottom-color:transparent}.pdx-shell.expanded .pdx-shell-body,.pdx-shell.fullscreen .pdx-shell-body{overflow:auto;display:flex;flex-direction:column;min-height:0}.pdx-shell.expanded .pdx-shell-body>*,.pdx-shell.fullscreen .pdx-shell-body>*{flex:1 1 auto;min-height:0;width:100%}.pdx-shell.expanded{position:fixed;top:10vh;left:50%;width:min(920px,92vw);height:min(640px,82vh);transform:translate(-50%);z-index:1200;box-shadow:var(--mat-elevation-level8)}.pdx-shell.fullscreen{position:fixed;top:50%;left:50%;width:95vw;height:95vh;transform:translate(-50%,-50%);z-index:1201;box-shadow:var(--mat-elevation-level8)}.pdx-shell-backdrop{position:fixed;inset:0;z-index:1199;background:#0000008c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}\n"] }]
|
|
15235
15235
|
}], propDecorators: { shell: [{
|
|
15236
15236
|
type: Input
|
|
15237
15237
|
}], context: [{
|
|
@@ -15254,7 +15254,13 @@ class ConnectionManagerService {
|
|
|
15254
15254
|
findMatches(connections, fromKey, output) {
|
|
15255
15255
|
if (!connections || !output)
|
|
15256
15256
|
return [];
|
|
15257
|
-
return connections.filter((c) => c.from.widget === fromKey && c.from.output === output);
|
|
15257
|
+
return connections.filter((c) => 'widget' in c.from && c.from.widget === fromKey && c.from.output === output);
|
|
15258
|
+
}
|
|
15259
|
+
/** Find connections triggered by a state-path update. */
|
|
15260
|
+
findStateMatches(connections, statePath) {
|
|
15261
|
+
if (!connections || !statePath)
|
|
15262
|
+
return [];
|
|
15263
|
+
return connections.filter((c) => 'state' in c.from && c.from.state === statePath);
|
|
15258
15264
|
}
|
|
15259
15265
|
/** Apply a single match into widgets array, supporting dot-path in target input. Returns a new array. */
|
|
15260
15266
|
applyMatch(widgets, match, event) {
|
|
@@ -15262,11 +15268,11 @@ class ConnectionManagerService {
|
|
|
15262
15268
|
if (idx < 0)
|
|
15263
15269
|
return widgets;
|
|
15264
15270
|
const current = widgets[idx];
|
|
15265
|
-
const val =
|
|
15271
|
+
const val = this.resolveConnectionValue(match, event);
|
|
15266
15272
|
const nextDef = { ...(current.definition || {}) };
|
|
15267
15273
|
const path = match.to.input || '';
|
|
15268
15274
|
if (this.looksLikePath(path)) {
|
|
15269
|
-
const updated = this.
|
|
15275
|
+
const updated = this.setValueAtPath(nextDef, path, val);
|
|
15270
15276
|
widgets = widgets.slice();
|
|
15271
15277
|
widgets[idx] = { ...current, definition: updated };
|
|
15272
15278
|
return widgets;
|
|
@@ -15280,6 +15286,14 @@ class ConnectionManagerService {
|
|
|
15280
15286
|
widgets[idx] = { ...current, definition: updated };
|
|
15281
15287
|
return widgets;
|
|
15282
15288
|
}
|
|
15289
|
+
resolveConnectionValue(match, event) {
|
|
15290
|
+
return match.set !== undefined
|
|
15291
|
+
? match.set
|
|
15292
|
+
: this.resolveMappedValue(match.map, event);
|
|
15293
|
+
}
|
|
15294
|
+
setValueAtPath(obj, rawPath, value) {
|
|
15295
|
+
return this.setAtPath(obj, rawPath, value);
|
|
15296
|
+
}
|
|
15283
15297
|
/** Resolve mapped value: supports dot-path or JSON template with ${...} placeholders. */
|
|
15284
15298
|
resolveMappedValue(map, event) {
|
|
15285
15299
|
if (!map)
|
|
@@ -15409,8 +15423,225 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
15409
15423
|
args: [{ providedIn: 'root' }]
|
|
15410
15424
|
}] });
|
|
15411
15425
|
|
|
15426
|
+
class WidgetPageStateRuntimeService {
|
|
15427
|
+
connections;
|
|
15428
|
+
constructor(connections) {
|
|
15429
|
+
this.connections = connections;
|
|
15430
|
+
}
|
|
15431
|
+
normalizeState(state) {
|
|
15432
|
+
if (!state)
|
|
15433
|
+
return { values: {} };
|
|
15434
|
+
const isStructured = typeof state === 'object'
|
|
15435
|
+
&& !Array.isArray(state)
|
|
15436
|
+
&& ('values' in state || 'schema' in state || 'derived' in state);
|
|
15437
|
+
if (isStructured) {
|
|
15438
|
+
const structured = state;
|
|
15439
|
+
return {
|
|
15440
|
+
values: this.clone(structured.values) || {},
|
|
15441
|
+
schema: this.clone(structured.schema),
|
|
15442
|
+
derived: this.clone(structured.derived),
|
|
15443
|
+
};
|
|
15444
|
+
}
|
|
15445
|
+
return { values: this.clone(state) || {} };
|
|
15446
|
+
}
|
|
15447
|
+
buildRuntimeSnapshot(state, context) {
|
|
15448
|
+
const normalized = this.normalizeState(state);
|
|
15449
|
+
const primaryValues = this.materializePrimaryValues(normalized);
|
|
15450
|
+
const diagnostics = [];
|
|
15451
|
+
let derivedValues = {};
|
|
15452
|
+
let effectiveValues = this.clone(primaryValues);
|
|
15453
|
+
const order = this.sortDerivedState(normalized.derived, diagnostics);
|
|
15454
|
+
for (const key of order) {
|
|
15455
|
+
const node = normalized.derived?.[key];
|
|
15456
|
+
if (!node)
|
|
15457
|
+
continue;
|
|
15458
|
+
const value = this.computeDerivedNode(node, {
|
|
15459
|
+
state: effectiveValues,
|
|
15460
|
+
values: primaryValues,
|
|
15461
|
+
derived: derivedValues,
|
|
15462
|
+
context: this.clone(context) || {},
|
|
15463
|
+
}, diagnostics, key);
|
|
15464
|
+
if (value === undefined)
|
|
15465
|
+
continue;
|
|
15466
|
+
effectiveValues = this.connections.setValueAtPath(effectiveValues, key, this.clone(value));
|
|
15467
|
+
derivedValues = this.connections.setValueAtPath(derivedValues, key, this.clone(value));
|
|
15468
|
+
}
|
|
15469
|
+
return {
|
|
15470
|
+
state: normalized,
|
|
15471
|
+
primaryValues,
|
|
15472
|
+
derivedValues,
|
|
15473
|
+
effectiveValues,
|
|
15474
|
+
diagnostics,
|
|
15475
|
+
};
|
|
15476
|
+
}
|
|
15477
|
+
collectChangedPaths(previous, next, paths) {
|
|
15478
|
+
const uniquePaths = Array.from(new Set(paths.filter(Boolean)));
|
|
15479
|
+
return uniquePaths.filter((path) => !this.isEqual(this.readPath(previous || {}, path), this.readPath(next || {}, path)));
|
|
15480
|
+
}
|
|
15481
|
+
materializePrimaryValues(state) {
|
|
15482
|
+
let values = this.clone(state.values) || {};
|
|
15483
|
+
for (const [path, schema] of Object.entries(state.schema || {})) {
|
|
15484
|
+
if (schema?.initial === undefined)
|
|
15485
|
+
continue;
|
|
15486
|
+
if (this.readPath(values, path) !== undefined)
|
|
15487
|
+
continue;
|
|
15488
|
+
values = this.connections.setValueAtPath(values, path, this.clone(schema.initial));
|
|
15489
|
+
}
|
|
15490
|
+
return values;
|
|
15491
|
+
}
|
|
15492
|
+
sortDerivedState(derived, diagnostics) {
|
|
15493
|
+
if (!derived)
|
|
15494
|
+
return [];
|
|
15495
|
+
const keys = Object.keys(derived);
|
|
15496
|
+
const order = [];
|
|
15497
|
+
const visiting = new Set();
|
|
15498
|
+
const visited = new Set();
|
|
15499
|
+
const cyclic = new Set();
|
|
15500
|
+
const visit = (key, stack) => {
|
|
15501
|
+
if (visited.has(key))
|
|
15502
|
+
return;
|
|
15503
|
+
if (visiting.has(key)) {
|
|
15504
|
+
diagnostics.push(`Derived state cycle detected: ${[...stack, key].join(' -> ')}`);
|
|
15505
|
+
for (const item of [...stack, key])
|
|
15506
|
+
cyclic.add(item);
|
|
15507
|
+
return;
|
|
15508
|
+
}
|
|
15509
|
+
visiting.add(key);
|
|
15510
|
+
const deps = derived[key]?.dependsOn || [];
|
|
15511
|
+
for (const dep of deps) {
|
|
15512
|
+
const dependencyKey = keys.find((candidate) => dep === candidate || dep.startsWith(`${candidate}.`));
|
|
15513
|
+
if (!dependencyKey)
|
|
15514
|
+
continue;
|
|
15515
|
+
visit(dependencyKey, [...stack, key]);
|
|
15516
|
+
}
|
|
15517
|
+
visiting.delete(key);
|
|
15518
|
+
visited.add(key);
|
|
15519
|
+
order.push(key);
|
|
15520
|
+
};
|
|
15521
|
+
for (const key of keys)
|
|
15522
|
+
visit(key, []);
|
|
15523
|
+
return Array.from(new Set(order.filter((key) => !cyclic.has(key))));
|
|
15524
|
+
}
|
|
15525
|
+
computeDerivedNode(node, env, diagnostics, key) {
|
|
15526
|
+
const compute = node.compute;
|
|
15527
|
+
if (!compute)
|
|
15528
|
+
return undefined;
|
|
15529
|
+
if (compute.kind === 'template') {
|
|
15530
|
+
return this.resolveTemplate(compute.value, env);
|
|
15531
|
+
}
|
|
15532
|
+
if (compute.kind === 'expr') {
|
|
15533
|
+
return this.readPath(env, compute.expression.trim());
|
|
15534
|
+
}
|
|
15535
|
+
if (compute.kind === 'transformer') {
|
|
15536
|
+
diagnostics.push(`Derived state '${key}' references transformer '${compute.transformerId}', but transformer runtime is not implemented yet.`);
|
|
15537
|
+
return undefined;
|
|
15538
|
+
}
|
|
15539
|
+
if (compute.kind !== 'operator')
|
|
15540
|
+
return undefined;
|
|
15541
|
+
const operator = (compute.operator || '').trim();
|
|
15542
|
+
const options = compute.options || {};
|
|
15543
|
+
const sources = this.resolveSourceValues(node.dependsOn, env.state);
|
|
15544
|
+
switch (operator) {
|
|
15545
|
+
case 'merge-objects': {
|
|
15546
|
+
let merged = {};
|
|
15547
|
+
for (const source of sources) {
|
|
15548
|
+
if (!this.isPlainObject(source))
|
|
15549
|
+
continue;
|
|
15550
|
+
merged = deepMerge(merged, source);
|
|
15551
|
+
}
|
|
15552
|
+
return merged;
|
|
15553
|
+
}
|
|
15554
|
+
case 'pick': {
|
|
15555
|
+
const source = this.resolveNamedSource(options['source'], sources, env.state);
|
|
15556
|
+
const keys = Array.isArray(options['keys']) ? options['keys'] : [];
|
|
15557
|
+
if (!this.isPlainObject(source))
|
|
15558
|
+
return {};
|
|
15559
|
+
const picked = {};
|
|
15560
|
+
for (const field of keys) {
|
|
15561
|
+
if (typeof field !== 'string' || !(field in source))
|
|
15562
|
+
continue;
|
|
15563
|
+
picked[field] = this.clone(source[field]);
|
|
15564
|
+
}
|
|
15565
|
+
return picked;
|
|
15566
|
+
}
|
|
15567
|
+
case 'omit': {
|
|
15568
|
+
const source = this.resolveNamedSource(options['source'], sources, env.state);
|
|
15569
|
+
const keys = new Set(Array.isArray(options['keys']) ? options['keys'].filter((item) => typeof item === 'string') : []);
|
|
15570
|
+
if (!this.isPlainObject(source))
|
|
15571
|
+
return {};
|
|
15572
|
+
const omitted = {};
|
|
15573
|
+
for (const [field, value] of Object.entries(source)) {
|
|
15574
|
+
if (keys.has(field))
|
|
15575
|
+
continue;
|
|
15576
|
+
omitted[field] = this.clone(value);
|
|
15577
|
+
}
|
|
15578
|
+
return omitted;
|
|
15579
|
+
}
|
|
15580
|
+
case 'template':
|
|
15581
|
+
return this.resolveTemplate(options['value'], env);
|
|
15582
|
+
default:
|
|
15583
|
+
diagnostics.push(`Derived state '${key}' uses unsupported operator '${operator}'.`);
|
|
15584
|
+
return undefined;
|
|
15585
|
+
}
|
|
15586
|
+
}
|
|
15587
|
+
resolveNamedSource(sourcePath, sources, effectiveState) {
|
|
15588
|
+
if (typeof sourcePath === 'string' && sourcePath.trim()) {
|
|
15589
|
+
return this.readPath(effectiveState, sourcePath.trim());
|
|
15590
|
+
}
|
|
15591
|
+
return sources[0];
|
|
15592
|
+
}
|
|
15593
|
+
resolveSourceValues(paths, state) {
|
|
15594
|
+
return (paths || []).map((path) => this.readPath(state, path));
|
|
15595
|
+
}
|
|
15596
|
+
resolveTemplate(node, env) {
|
|
15597
|
+
if (node == null)
|
|
15598
|
+
return node;
|
|
15599
|
+
if (Array.isArray(node))
|
|
15600
|
+
return node.map((item) => this.resolveTemplate(item, env));
|
|
15601
|
+
if (typeof node === 'object') {
|
|
15602
|
+
const out = {};
|
|
15603
|
+
for (const [key, value] of Object.entries(node))
|
|
15604
|
+
out[key] = this.resolveTemplate(value, env);
|
|
15605
|
+
return out;
|
|
15606
|
+
}
|
|
15607
|
+
if (typeof node === 'string') {
|
|
15608
|
+
const exact = node.match(/^\s*\$\{([^}]+)\}\s*$/);
|
|
15609
|
+
if (exact)
|
|
15610
|
+
return this.readPath(env, exact[1].trim());
|
|
15611
|
+
return node.replace(/\$\{([^}]+)\}/g, (_match, path) => {
|
|
15612
|
+
const value = this.readPath(env, String(path).trim());
|
|
15613
|
+
return value != null ? String(value) : '';
|
|
15614
|
+
});
|
|
15615
|
+
}
|
|
15616
|
+
return node;
|
|
15617
|
+
}
|
|
15618
|
+
readPath(source, path) {
|
|
15619
|
+
if (!path)
|
|
15620
|
+
return source;
|
|
15621
|
+
return this.connections.extractByPath(source, path);
|
|
15622
|
+
}
|
|
15623
|
+
isPlainObject(value) {
|
|
15624
|
+
return value != null && typeof value === 'object' && !Array.isArray(value);
|
|
15625
|
+
}
|
|
15626
|
+
isEqual(left, right) {
|
|
15627
|
+
return JSON.stringify(left) === JSON.stringify(right);
|
|
15628
|
+
}
|
|
15629
|
+
clone(value) {
|
|
15630
|
+
if (value == null || typeof value !== 'object')
|
|
15631
|
+
return value;
|
|
15632
|
+
return JSON.parse(JSON.stringify(value));
|
|
15633
|
+
}
|
|
15634
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: WidgetPageStateRuntimeService, deps: [{ token: ConnectionManagerService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
15635
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: WidgetPageStateRuntimeService, providedIn: 'root' });
|
|
15636
|
+
}
|
|
15637
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: WidgetPageStateRuntimeService, decorators: [{
|
|
15638
|
+
type: Injectable,
|
|
15639
|
+
args: [{ providedIn: 'root' }]
|
|
15640
|
+
}], ctorParameters: () => [{ type: ConnectionManagerService }] });
|
|
15641
|
+
|
|
15412
15642
|
class DynamicWidgetPageComponent {
|
|
15413
15643
|
conn;
|
|
15644
|
+
stateRuntime;
|
|
15414
15645
|
settingsPanel;
|
|
15415
15646
|
defaultShellEditor;
|
|
15416
15647
|
defaultPageEditor;
|
|
@@ -15437,6 +15668,14 @@ class DynamicWidgetPageComponent {
|
|
|
15437
15668
|
pageGap = '16px';
|
|
15438
15669
|
gridTemplateColumns = 'minmax(0, 1fr)';
|
|
15439
15670
|
pageDefinition;
|
|
15671
|
+
pageState = { values: {} };
|
|
15672
|
+
pageRuntime = {
|
|
15673
|
+
state: { values: {} },
|
|
15674
|
+
primaryValues: {},
|
|
15675
|
+
derivedValues: {},
|
|
15676
|
+
effectiveValues: {},
|
|
15677
|
+
diagnostics: [],
|
|
15678
|
+
};
|
|
15440
15679
|
layout;
|
|
15441
15680
|
appliedPersisted = false;
|
|
15442
15681
|
isHydrating = false;
|
|
@@ -15451,8 +15690,9 @@ class DynamicWidgetPageComponent {
|
|
|
15451
15690
|
catch {
|
|
15452
15691
|
return undefined;
|
|
15453
15692
|
} })();
|
|
15454
|
-
constructor(conn, settingsPanel, defaultShellEditor, defaultPageEditor) {
|
|
15693
|
+
constructor(conn, stateRuntime, settingsPanel, defaultShellEditor, defaultPageEditor) {
|
|
15455
15694
|
this.conn = conn;
|
|
15695
|
+
this.stateRuntime = stateRuntime;
|
|
15456
15696
|
this.settingsPanel = settingsPanel;
|
|
15457
15697
|
this.defaultShellEditor = defaultShellEditor;
|
|
15458
15698
|
this.defaultPageEditor = defaultPageEditor;
|
|
@@ -15460,12 +15700,18 @@ class DynamicWidgetPageComponent {
|
|
|
15460
15700
|
ngOnChanges(changes) {
|
|
15461
15701
|
if (changes['page'] || changes['context'] || changes['enableCustomization']) {
|
|
15462
15702
|
const parsed = this.parsePage(this.page);
|
|
15463
|
-
this.pageDefinition = parsed;
|
|
15703
|
+
this.pageDefinition = parsed ? { ...parsed, state: this.stateRuntime.normalizeState(parsed.state) } : parsed;
|
|
15704
|
+
this.pageRuntime = this.buildStateRuntime(this.pageDefinition?.state, this.pageDefinition?.context);
|
|
15705
|
+
this.pageState = this.pageRuntime.state;
|
|
15464
15706
|
const rawWidgets = parsed?.widgets || [];
|
|
15465
|
-
|
|
15707
|
+
let widgets = this.applyEditShellActions(rawWidgets);
|
|
15708
|
+
widgets = this.applyStateConnections(parsed?.connections, this.pageRuntime.effectiveValues, this.collectConnectedStatePaths(parsed?.connections), widgets);
|
|
15709
|
+
this.pageDefinition = this.pageDefinition ? { ...this.pageDefinition, widgets } : this.pageDefinition;
|
|
15710
|
+
this.page = this.pageDefinition;
|
|
15466
15711
|
this.widgets.set(widgets);
|
|
15467
|
-
this.mergedContext = this.mergeContext(parsed?.context, this.context);
|
|
15712
|
+
this.mergedContext = this.mergeContext(parsed?.context, this.context, this.pageRuntime);
|
|
15468
15713
|
this.applyLayout(parsed?.layout);
|
|
15714
|
+
this.reportStateDiagnostics(this.pageRuntime.diagnostics);
|
|
15469
15715
|
}
|
|
15470
15716
|
if (this.autoPersist && (changes['pageIdentity'] || changes['componentInstanceId'])) {
|
|
15471
15717
|
this.appliedPersisted = false;
|
|
@@ -15485,32 +15731,32 @@ class DynamicWidgetPageComponent {
|
|
|
15485
15731
|
if (evt?.output && this.maybeExecuteMappedAction(fromKey, evt)) {
|
|
15486
15732
|
return;
|
|
15487
15733
|
}
|
|
15488
|
-
const page = this.
|
|
15734
|
+
const page = this.ensurePageDefinition();
|
|
15489
15735
|
const matches = this.conn.findMatches(page?.connections, fromKey, evt.output);
|
|
15490
15736
|
if (!matches.length)
|
|
15491
15737
|
return;
|
|
15492
|
-
|
|
15738
|
+
let widgets = page.widgets.map((w) => ({ ...w }));
|
|
15739
|
+
let state = this.stateRuntime.normalizeState(page.state);
|
|
15740
|
+
const updatedPrimaryStatePaths = new Set();
|
|
15741
|
+
const previousRuntime = this.pageRuntime;
|
|
15493
15742
|
for (const c of matches) {
|
|
15494
|
-
|
|
15495
|
-
|
|
15743
|
+
if ('state' in c.to) {
|
|
15744
|
+
const val = this.conn.resolveConnectionValue(c, evt);
|
|
15745
|
+
state = {
|
|
15746
|
+
...state,
|
|
15747
|
+
values: this.conn.setValueAtPath(state.values || {}, c.to.state, val),
|
|
15748
|
+
};
|
|
15749
|
+
updatedPrimaryStatePaths.add(c.to.state);
|
|
15496
15750
|
continue;
|
|
15497
|
-
|
|
15498
|
-
|
|
15499
|
-
const nextInputs = { ...(current.definition.inputs || {}), [c.to.input]: val };
|
|
15500
|
-
// Merge binding order: explicit target order > existing > ensure input last
|
|
15501
|
-
const existingOrder = current.definition.bindingOrder || [];
|
|
15502
|
-
const targetOrder = c.to.bindingOrder || [];
|
|
15503
|
-
const mergedOrder = this.mergeOrder([...targetOrder, ...existingOrder, c.to.input]);
|
|
15504
|
-
widgets[idx] = {
|
|
15505
|
-
...current,
|
|
15506
|
-
definition: {
|
|
15507
|
-
...current.definition,
|
|
15508
|
-
inputs: nextInputs,
|
|
15509
|
-
bindingOrder: mergedOrder,
|
|
15510
|
-
},
|
|
15511
|
-
};
|
|
15751
|
+
}
|
|
15752
|
+
widgets = this.conn.applyMatch(widgets, c, evt);
|
|
15512
15753
|
}
|
|
15513
|
-
this.
|
|
15754
|
+
const nextRuntime = this.buildStateRuntime(state, page.context);
|
|
15755
|
+
const changedStatePaths = this.stateRuntime.collectChangedPaths(previousRuntime.effectiveValues, nextRuntime.effectiveValues, this.collectConnectedStatePaths(page.connections));
|
|
15756
|
+
if (updatedPrimaryStatePaths.size || changedStatePaths.length) {
|
|
15757
|
+
widgets = this.applyStateConnections(page.connections, nextRuntime.effectiveValues, [...new Set([...updatedPrimaryStatePaths, ...changedStatePaths])], widgets);
|
|
15758
|
+
}
|
|
15759
|
+
this.applyPageUpdate({ ...page, widgets, state }, true, nextRuntime);
|
|
15514
15760
|
}
|
|
15515
15761
|
onShellAction(fromKey, evt) {
|
|
15516
15762
|
if (evt.id === 'widget-settings') {
|
|
@@ -15713,15 +15959,21 @@ class DynamicWidgetPageComponent {
|
|
|
15713
15959
|
context = { ...context, ui };
|
|
15714
15960
|
this.applyPageUpdate({ ...page, layout, context }, persist);
|
|
15715
15961
|
}
|
|
15716
|
-
applyPageUpdate(next, persist = true) {
|
|
15717
|
-
|
|
15718
|
-
this.
|
|
15719
|
-
|
|
15720
|
-
this.
|
|
15721
|
-
this.
|
|
15722
|
-
this.
|
|
15962
|
+
applyPageUpdate(next, persist = true, runtime = this.buildStateRuntime(next.state, next.context)) {
|
|
15963
|
+
const normalized = { ...next, state: runtime.state };
|
|
15964
|
+
const stateBoundWidgets = this.applyStateConnections(normalized.connections, runtime.effectiveValues, this.collectConnectedStatePaths(normalized.connections), normalized.widgets || []);
|
|
15965
|
+
const hydrated = { ...normalized, widgets: stateBoundWidgets };
|
|
15966
|
+
this.pageDefinition = hydrated;
|
|
15967
|
+
this.page = hydrated;
|
|
15968
|
+
this.pageState = runtime.state;
|
|
15969
|
+
this.pageRuntime = runtime;
|
|
15970
|
+
this.widgets.set(this.applyEditShellActions(stateBoundWidgets));
|
|
15971
|
+
this.mergedContext = this.mergeContext(hydrated.context, this.context, runtime);
|
|
15972
|
+
this.applyLayout(hydrated.layout);
|
|
15973
|
+
this.pageChange.emit(hydrated);
|
|
15974
|
+
this.reportStateDiagnostics(runtime.diagnostics);
|
|
15723
15975
|
if (persist && this.autoPersist && !this.isHydrating) {
|
|
15724
|
-
this.savePage(
|
|
15976
|
+
this.savePage(hydrated);
|
|
15725
15977
|
}
|
|
15726
15978
|
}
|
|
15727
15979
|
applyLayout(layout) {
|
|
@@ -15731,8 +15983,15 @@ class DynamicWidgetPageComponent {
|
|
|
15731
15983
|
this.gridTemplateColumns = `repeat(${columns}, minmax(0, 1fr))`;
|
|
15732
15984
|
this.pageGap = layout?.gap || '16px';
|
|
15733
15985
|
}
|
|
15734
|
-
mergeContext(pageContext, inputContext) {
|
|
15735
|
-
|
|
15986
|
+
mergeContext(pageContext, inputContext, runtime) {
|
|
15987
|
+
const baseContext = this.buildStateContext(pageContext);
|
|
15988
|
+
return {
|
|
15989
|
+
...baseContext,
|
|
15990
|
+
...(inputContext || {}),
|
|
15991
|
+
pageState: this.cloneStateValues(runtime.primaryValues),
|
|
15992
|
+
pageStateDerived: this.cloneStateValues(runtime.derivedValues),
|
|
15993
|
+
pageStateEffective: this.cloneStateValues(runtime.effectiveValues),
|
|
15994
|
+
};
|
|
15736
15995
|
}
|
|
15737
15996
|
onWindowResize() {
|
|
15738
15997
|
if (!this.layout || (this.layout.orientation || 'vertical') !== 'columns')
|
|
@@ -15772,7 +16031,7 @@ class DynamicWidgetPageComponent {
|
|
|
15772
16031
|
const parsed = this.parsePage(this.page);
|
|
15773
16032
|
if (parsed)
|
|
15774
16033
|
return parsed;
|
|
15775
|
-
return { widgets: this.widgets() };
|
|
16034
|
+
return { widgets: this.widgets(), state: this.stateRuntime.normalizeState(this.pageState) };
|
|
15776
16035
|
}
|
|
15777
16036
|
parsePage(input) {
|
|
15778
16037
|
if (!input)
|
|
@@ -15890,7 +16149,50 @@ class DynamicWidgetPageComponent {
|
|
|
15890
16149
|
return '';
|
|
15891
16150
|
return String(value).trim().replace(/[\r\n\t|:]/g, '-');
|
|
15892
16151
|
}
|
|
15893
|
-
|
|
16152
|
+
applyStateConnections(connections, state, paths, widgets) {
|
|
16153
|
+
let nextWidgets = widgets;
|
|
16154
|
+
const statePaths = Array.from(new Set(paths.filter(Boolean)));
|
|
16155
|
+
for (const statePath of statePaths) {
|
|
16156
|
+
const stateMatches = this.conn.findStateMatches(connections, statePath);
|
|
16157
|
+
if (!stateMatches.length)
|
|
16158
|
+
continue;
|
|
16159
|
+
const payload = this.conn.extractByPath({ payload: state }, `payload.${statePath}`);
|
|
16160
|
+
const stateEvent = {
|
|
16161
|
+
payload,
|
|
16162
|
+
statePath,
|
|
16163
|
+
pageState: state,
|
|
16164
|
+
};
|
|
16165
|
+
for (const match of stateMatches) {
|
|
16166
|
+
if (!('widget' in match.to))
|
|
16167
|
+
continue;
|
|
16168
|
+
nextWidgets = this.conn.applyMatch(nextWidgets, match, stateEvent);
|
|
16169
|
+
}
|
|
16170
|
+
}
|
|
16171
|
+
return nextWidgets;
|
|
16172
|
+
}
|
|
16173
|
+
cloneStateValues(state) {
|
|
16174
|
+
return state ? JSON.parse(JSON.stringify(state)) : {};
|
|
16175
|
+
}
|
|
16176
|
+
collectConnectedStatePaths(connections) {
|
|
16177
|
+
return Array.from(new Set((connections || [])
|
|
16178
|
+
.filter((connection) => 'state' in connection.from)
|
|
16179
|
+
.map((connection) => connection.from.state)));
|
|
16180
|
+
}
|
|
16181
|
+
buildStateRuntime(state, pageContext) {
|
|
16182
|
+
return this.stateRuntime.buildRuntimeSnapshot(state, this.buildStateContext(pageContext));
|
|
16183
|
+
}
|
|
16184
|
+
buildStateContext(pageContext) {
|
|
16185
|
+
return {
|
|
16186
|
+
...(pageContext || {}),
|
|
16187
|
+
...(this.context || {}),
|
|
16188
|
+
};
|
|
16189
|
+
}
|
|
16190
|
+
reportStateDiagnostics(diagnostics) {
|
|
16191
|
+
for (const diagnostic of diagnostics || []) {
|
|
16192
|
+
console.warn(`[DynamicWidgetPage] ${diagnostic}`);
|
|
16193
|
+
}
|
|
16194
|
+
}
|
|
16195
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DynamicWidgetPageComponent, deps: [{ token: ConnectionManagerService }, { token: WidgetPageStateRuntimeService }, { token: SETTINGS_PANEL_BRIDGE, optional: true }, { token: DYNAMIC_PAGE_SHELL_EDITOR, optional: true }, { token: DYNAMIC_PAGE_CONFIG_EDITOR, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
15894
16196
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: DynamicWidgetPageComponent, isStandalone: true, selector: "praxis-dynamic-page", inputs: { page: "page", context: "context", strictValidation: "strictValidation", enableCustomization: "enableCustomization", showPageSettingsButton: "showPageSettingsButton", shellEditorComponent: "shellEditorComponent", pageEditorComponent: "pageEditorComponent", autoPersist: "autoPersist", pageIdentity: "pageIdentity", componentInstanceId: "componentInstanceId" }, outputs: { pageChange: "pageChange" }, host: { listeners: { "window:resize": "onWindowResize()" } }, usesOnChanges: true, ngImport: i0, template: `
|
|
15895
16197
|
<div class="pdx-page-wrapper" [class.editing]="enableCustomization">
|
|
15896
16198
|
@if (enableCustomization && showPageSettingsButton) {
|
|
@@ -15929,7 +16231,7 @@ class DynamicWidgetPageComponent {
|
|
|
15929
16231
|
}
|
|
15930
16232
|
</div>
|
|
15931
16233
|
</div>
|
|
15932
|
-
`, isInline: true, styles: [".pdx-page-wrapper{position:relative;display:block}.pdx-page{display:grid;gap:16px;grid-template-columns:minmax(0,1fr)}.pdx-page-settings{position:sticky;top:8px;z-index:2;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container-low);color:inherit;border-radius:999px;margin-bottom:8px}.pdx-widget{position:relative;background:var(--pfx-surface, transparent);border-radius:8px}.pdx-page-wrapper.editing .pdx-widget-settings{opacity:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type:
|
|
16234
|
+
`, isInline: true, styles: [".pdx-page-wrapper{position:relative;display:block}.pdx-page{display:grid;gap:16px;grid-template-columns:minmax(0,1fr)}.pdx-page-settings{position:sticky;top:8px;z-index:2;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container-low);color:inherit;border-radius:999px;margin-bottom:8px}.pdx-widget{position:relative;background:var(--pfx-surface, transparent);border-radius:8px}.pdx-page-wrapper.editing .pdx-widget-settings{opacity:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: DynamicWidgetLoaderDirective, selector: "[dynamicWidgetLoader]", inputs: ["dynamicWidgetLoader", "context", "strictValidation", "autoWireOutputs"], outputs: ["widgetEvent"], exportAs: ["dynamicWidgetLoader"] }, { kind: "component", type: WidgetShellComponent, selector: "praxis-widget-shell", inputs: ["shell", "context"], outputs: ["action"] }] });
|
|
15933
16235
|
}
|
|
15934
16236
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DynamicWidgetPageComponent, decorators: [{
|
|
15935
16237
|
type: Component,
|
|
@@ -15972,7 +16274,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
15972
16274
|
</div>
|
|
15973
16275
|
</div>
|
|
15974
16276
|
`, styles: [".pdx-page-wrapper{position:relative;display:block}.pdx-page{display:grid;gap:16px;grid-template-columns:minmax(0,1fr)}.pdx-page-settings{position:sticky;top:8px;z-index:2;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container-low);color:inherit;border-radius:999px;margin-bottom:8px}.pdx-widget{position:relative;background:var(--pfx-surface, transparent);border-radius:8px}.pdx-page-wrapper.editing .pdx-widget-settings{opacity:1}\n"] }]
|
|
15975
|
-
}], ctorParameters: () => [{ type: ConnectionManagerService }, { type: undefined, decorators: [{
|
|
16277
|
+
}], ctorParameters: () => [{ type: ConnectionManagerService }, { type: WidgetPageStateRuntimeService }, { type: undefined, decorators: [{
|
|
15976
16278
|
type: Optional
|
|
15977
16279
|
}, {
|
|
15978
16280
|
type: Inject,
|
|
@@ -16119,15 +16421,18 @@ class DynamicGridPageComponent {
|
|
|
16119
16421
|
return;
|
|
16120
16422
|
const widgets = [...this.widgets()];
|
|
16121
16423
|
for (const c of matches) {
|
|
16122
|
-
|
|
16424
|
+
if (!('widget' in c.to))
|
|
16425
|
+
continue;
|
|
16426
|
+
const target = c.to;
|
|
16427
|
+
const idx = widgets.findIndex((w) => w.key === target.widget);
|
|
16123
16428
|
if (idx < 0)
|
|
16124
16429
|
continue;
|
|
16125
16430
|
const current = widgets[idx];
|
|
16126
16431
|
const val = c.set !== undefined ? c.set : this.conn.extractByPath(evt, c.map || 'payload');
|
|
16127
|
-
const nextInputs = { ...(current.definition.inputs || {}), [
|
|
16432
|
+
const nextInputs = { ...(current.definition.inputs || {}), [target.input]: val };
|
|
16128
16433
|
const existingOrder = current.definition.bindingOrder || [];
|
|
16129
|
-
const targetOrder =
|
|
16130
|
-
const mergedOrder = this.mergeOrder([...targetOrder, ...existingOrder,
|
|
16434
|
+
const targetOrder = target.bindingOrder || [];
|
|
16435
|
+
const mergedOrder = this.mergeOrder([...targetOrder, ...existingOrder, target.input]);
|
|
16131
16436
|
widgets[idx] = {
|
|
16132
16437
|
...current,
|
|
16133
16438
|
definition: {
|
|
@@ -16381,7 +16686,7 @@ class EmptyStateCardComponent {
|
|
|
16381
16686
|
</div>
|
|
16382
16687
|
</mat-card-content>
|
|
16383
16688
|
</mat-card>
|
|
16384
|
-
`, isInline: true, styles: [".empty-card{display:block;margin:12px;border-color:var(--md-sys-color-outline-variant);--empty-icon-color: var(--md-sys-color-on-surface-variant)}.empty-card.empty-inline{margin:8px 0}.content{display:flex;align-items:center;gap:12px}.icon{font-size:32px;width:32px;height:32px;color:var(--empty-icon-color)}.texts{display:grid;gap:4px}.title{margin:0;font-size:16px;font-weight:600;color:var(--md-sys-color-on-surface)}.desc{margin:0;color:var(--md-sys-color-on-surface-variant)}.actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.empty-card.tone-primary{--empty-icon-color: var(--md-sys-color-primary)}.empty-card.tone-secondary{--empty-icon-color: var(--md-sys-color-secondary)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i3
|
|
16689
|
+
`, isInline: true, styles: [".empty-card{display:block;margin:12px;border-color:var(--md-sys-color-outline-variant);--empty-icon-color: var(--md-sys-color-on-surface-variant)}.empty-card.empty-inline{margin:8px 0}.content{display:flex;align-items:center;gap:12px}.icon{font-size:32px;width:32px;height:32px;color:var(--empty-icon-color)}.texts{display:grid;gap:4px}.title{margin:0;font-size:16px;font-weight:600;color:var(--md-sys-color-on-surface)}.desc{margin:0;color:var(--md-sys-color-on-surface-variant)}.actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.empty-card.tone-primary{--empty-icon-color: var(--md-sys-color-primary)}.empty-card.tone-secondary{--empty-icon-color: var(--md-sys-color-secondary)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
16385
16690
|
}
|
|
16386
16691
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: EmptyStateCardComponent, decorators: [{
|
|
16387
16692
|
type: Component,
|
|
@@ -16486,7 +16791,7 @@ class ResourceQuickConnectComponent {
|
|
|
16486
16791
|
Rota normalizada: {{ normalizedPath() }}
|
|
16487
16792
|
</small>
|
|
16488
16793
|
</div>
|
|
16489
|
-
`, isInline: true, styles: [".pdx-quick-connect{display:grid;gap:12px;padding:12px;border-radius:12px;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface);color:var(--md-sys-color-on-surface)}.pdx-quick-connect__hint{color:var(--md-sys-color-on-surface-variant);font-size:.9rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3$
|
|
16794
|
+
`, isInline: true, styles: [".pdx-quick-connect{display:grid;gap:12px;padding:12px;border-radius:12px;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface);color:var(--md-sys-color-on-surface)}.pdx-quick-connect__hint{color:var(--md-sys-color-on-surface-variant);font-size:.9rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }] });
|
|
16490
16795
|
}
|
|
16491
16796
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ResourceQuickConnectComponent, decorators: [{
|
|
16492
16797
|
type: Component,
|
|
@@ -16714,7 +17019,7 @@ class PraxisIconPickerComponent {
|
|
|
16714
17019
|
<span class="pip-typed" *ngIf="query.trim()">{{ previewValue() }}</span>
|
|
16715
17020
|
</div>
|
|
16716
17021
|
</div>
|
|
16717
|
-
`, isInline: true, styles: [".pip-root{display:flex;flex-direction:column;min-width:340px;max-width:760px;max-height:80vh;overflow:hidden;padding:16px;color:var(--md-sys-color-on-surface)}.pip-head{display:flex;gap:12px;align-items:center;margin-bottom:12px;flex-wrap:wrap}.pip-search{flex:1;min-width:180px}.pip-spacer{flex:1}.pip-body{flex:1;overflow:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;padding:4px}.pip-item{display:flex;gap:10px;align-items:center;justify-content:flex-start;padding:10px;border:1px solid var(--md-sys-color-outline-variant);border-radius:10px;background:var(--md-sys-color-surface);color:inherit;cursor:pointer;transition:background-color .18s ease,border-color .18s ease,box-shadow .18s ease}.pip-item:hover{background:var(--md-sys-color-surface-container)}.pip-item:focus-visible{outline:2px solid var(--md-sys-color-primary);outline-offset:2px}.pip-item.selected{border-color:var(--md-sys-color-primary);box-shadow:0 0 0 2px var(--md-sys-color-primary)}.pip-name{font-size:12px;color:var(--md-sys-color-on-surface-variant);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.pip-hint{font-size:12px;color:var(--md-sys-color-on-surface-variant);margin:-6px 0 8px}.pip-stats{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:var(--md-sys-color-on-surface-variant);margin-bottom:8px}.pip-shortcut{opacity:.9}.pip-empty{padding:12px;border:1px dashed var(--md-sys-color-outline-variant);border-radius:10px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-container);margin-top:8px}.pip-footer{display:flex;gap:12px;align-items:center;margin-top:10px}.pip-typed{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:12px;color:var(--md-sys-color-on-surface)}.pip-family{display:flex;align-items:center}.pip-family .mat-mdc-chip-listbox{min-width:260px}.pip-root .mat-icon{font-family:Material Icons,Material Symbols Outlined,Material Symbols Rounded,Material Symbols Sharp!important;font-variation-settings:\"FILL\" 0,\"wght\" 400,\"GRAD\" 0,\"opsz\" 24;color:currentColor}.material-symbols-outlined{font-family:Material Symbols Outlined;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased;font-variation-settings:\"FILL\" 0,\"wght\" 400,\"GRAD\" 0,\"opsz\" 24}.material-symbols-rounded{font-family:Material Symbols Rounded;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased;font-variation-settings:\"FILL\" 0,\"wght\" 400,\"GRAD\" 0,\"opsz\" 24}.material-symbols-sharp{font-family:Material Symbols Sharp;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased;font-variation-settings:\"FILL\" 0,\"wght\" 400,\"GRAD\" 0,\"opsz\" 24}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3$
|
|
17022
|
+
`, isInline: true, styles: [".pip-root{display:flex;flex-direction:column;min-width:340px;max-width:760px;max-height:80vh;overflow:hidden;padding:16px;color:var(--md-sys-color-on-surface)}.pip-head{display:flex;gap:12px;align-items:center;margin-bottom:12px;flex-wrap:wrap}.pip-search{flex:1;min-width:180px}.pip-spacer{flex:1}.pip-body{flex:1;overflow:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;padding:4px}.pip-item{display:flex;gap:10px;align-items:center;justify-content:flex-start;padding:10px;border:1px solid var(--md-sys-color-outline-variant);border-radius:10px;background:var(--md-sys-color-surface);color:inherit;cursor:pointer;transition:background-color .18s ease,border-color .18s ease,box-shadow .18s ease}.pip-item:hover{background:var(--md-sys-color-surface-container)}.pip-item:focus-visible{outline:2px solid var(--md-sys-color-primary);outline-offset:2px}.pip-item.selected{border-color:var(--md-sys-color-primary);box-shadow:0 0 0 2px var(--md-sys-color-primary)}.pip-name{font-size:12px;color:var(--md-sys-color-on-surface-variant);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.pip-hint{font-size:12px;color:var(--md-sys-color-on-surface-variant);margin:-6px 0 8px}.pip-stats{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:var(--md-sys-color-on-surface-variant);margin-bottom:8px}.pip-shortcut{opacity:.9}.pip-empty{padding:12px;border:1px dashed var(--md-sys-color-outline-variant);border-radius:10px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-container);margin-top:8px}.pip-footer{display:flex;gap:12px;align-items:center;margin-top:10px}.pip-typed{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:12px;color:var(--md-sys-color-on-surface)}.pip-family{display:flex;align-items:center}.pip-family .mat-mdc-chip-listbox{min-width:260px}.pip-root .mat-icon{font-family:Material Icons,Material Symbols Outlined,Material Symbols Rounded,Material Symbols Sharp!important;font-variation-settings:\"FILL\" 0,\"wght\" 400,\"GRAD\" 0,\"opsz\" 24;color:currentColor}.material-symbols-outlined{font-family:Material Symbols Outlined;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased;font-variation-settings:\"FILL\" 0,\"wght\" 400,\"GRAD\" 0,\"opsz\" 24}.material-symbols-rounded{font-family:Material Symbols Rounded;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased;font-variation-settings:\"FILL\" 0,\"wght\" 400,\"GRAD\" 0,\"opsz\" 24}.material-symbols-sharp{font-family:Material Symbols Sharp;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased;font-variation-settings:\"FILL\" 0,\"wght\" 400,\"GRAD\" 0,\"opsz\" 24}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i8.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i8.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] });
|
|
16718
17023
|
}
|
|
16719
17024
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisIconPickerComponent, decorators: [{
|
|
16720
17025
|
type: Component,
|
|
@@ -17058,7 +17363,7 @@ class SchemaViewerComponent {
|
|
|
17058
17363
|
</mat-tab-group>
|
|
17059
17364
|
</mat-card-content>
|
|
17060
17365
|
</mat-card>
|
|
17061
|
-
`, isInline: true, styles: [".schema-viewer{display:block;border-color:var(--md-sys-color-outline-variant)}.header{display:flex;align-items:center;justify-content:space-between;gap:8px}.title{display:flex;align-items:center;gap:8px}.title h3{margin:0;font-weight:600;color:var(--md-sys-color-on-surface)}.notes{margin-top:6px;color:var(--md-sys-color-on-surface-variant);font-size:12px}.copy-status{margin-top:6px;font-size:12px;color:var(--md-sys-color-primary)}.section{padding:12px}.section-actions{display:flex;justify-content:flex-end;margin-bottom:8px}.sub{font-weight:600;margin:12px 0 4px;color:var(--md-sys-color-on-surface)}.pretty{background:var(--md-sys-color-surface-container);padding:10px;border-radius:8px;overflow:auto;border:1px solid var(--md-sys-color-outline-variant)}.kv{display:grid;grid-template-columns:140px 1fr;align-items:baseline;gap:8px;margin:2px 0}.kv>span{color:var(--md-sys-color-on-surface-variant)}.kv>code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.muted{color:var(--md-sys-color-on-surface-variant)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i2$2.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i2$2.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i3
|
|
17366
|
+
`, isInline: true, styles: [".schema-viewer{display:block;border-color:var(--md-sys-color-outline-variant)}.header{display:flex;align-items:center;justify-content:space-between;gap:8px}.title{display:flex;align-items:center;gap:8px}.title h3{margin:0;font-weight:600;color:var(--md-sys-color-on-surface)}.notes{margin-top:6px;color:var(--md-sys-color-on-surface-variant);font-size:12px}.copy-status{margin-top:6px;font-size:12px;color:var(--md-sys-color-primary)}.section{padding:12px}.section-actions{display:flex;justify-content:flex-end;margin-bottom:8px}.sub{font-weight:600;margin:12px 0 4px;color:var(--md-sys-color-on-surface)}.pretty{background:var(--md-sys-color-surface-container);padding:10px;border-radius:8px;overflow:auto;border:1px solid var(--md-sys-color-outline-variant)}.kv{display:grid;grid-template-columns:140px 1fr;align-items:baseline;gap:8px;margin:2px 0}.kv>span{color:var(--md-sys-color-on-surface-variant)}.kv>code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.muted{color:var(--md-sys-color-on-surface-variant)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i2$2.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i2$2.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3.MatCardHeader, selector: "mat-card-header" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$1.JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
17062
17367
|
}
|
|
17063
17368
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: SchemaViewerComponent, decorators: [{
|
|
17064
17369
|
type: Component,
|
|
@@ -17824,5 +18129,5 @@ function provideHookWhitelist(allowed) {
|
|
|
17824
18129
|
* Generated bundle index. Do not edit.
|
|
17825
18130
|
*/
|
|
17826
18131
|
|
|
17827
|
-
export { API_CONFIG_STORAGE_OPTIONS, API_URL, ASYNC_CONFIG_STORAGE, AllowedFileTypes, ApiConfigStorage, ApiEndpoint, BUILTIN_SHELL_PRESETS, CONFIG_STORAGE, CONNECTION_STORAGE, ComponentKeyService, ComponentMetadataRegistry, ConnectionManagerService, ConsoleLoggerSink, DEFAULT_FIELD_SELECTOR_CONTROL_TYPE_MAP, DEFAULT_TABLE_CONFIG, DYNAMIC_PAGE_AI_CAPABILITIES, DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK, DYNAMIC_PAGE_CONFIG_EDITOR, DYNAMIC_PAGE_SHELL_EDITOR, DefaultLoadingRenderer, DeferredAsyncConfigStorage, DynamicFormService, DynamicGridPageComponent, DynamicWidgetLoaderDirective, DynamicWidgetPageComponent, EDITORIAL_ALLOWED_CONTENT_FORMATS, EDITORIAL_COMPLIANCE_PRESETS, EDITORIAL_EXTERNAL_LINK_REL, EDITORIAL_FORM_TEMPLATE_CATALOG, EDITORIAL_HTML_ENABLED, EDITORIAL_MARKDOWN_IMAGES_ENABLED, EDITORIAL_SOLUTION_CATALOG, EDITORIAL_SOLUTION_PRESETS, EDITORIAL_THEME_PRESETS, EDITORIAL_WIDGET_CONVENTION_INPUTS, EDITORIAL_WIDGET_TAG, EMPLOYEE_ONBOARDING_EDITORIAL_SOLUTION, EMPLOYEE_ONBOARDING_EDITORIAL_TEMPLATE, EMPLOYEE_ONBOARDING_GUIDED_EDITORIAL_SOLUTION, EMPLOYEE_ONBOARDING_GUIDED_EDITORIAL_TEMPLATE, EVENT_REGISTRATION_EDITORIAL_SOLUTION, EVENT_REGISTRATION_EDITORIAL_TEMPLATE, EmptyStateCardComponent, ErrorMessageService, FIELD_METADATA_CAPABILITIES, FIELD_SELECTOR_REGISTRY_BASE, FIELD_SELECTOR_REGISTRY_DISABLE_DEFAULTS, FIELD_SELECTOR_REGISTRY_OVERRIDES, FORM_HOOKS, FORM_HOOKS_PRESETS, FORM_HOOKS_WHITELIST, FORM_HOOK_RESOLVERS, FieldControlType, FieldDataType, FieldSelectorRegistry, FormHooksRegistry, GLOBAL_ACTION_CATALOG$1 as GLOBAL_ACTION_CATALOG, GLOBAL_ACTION_HANDLERS, GLOBAL_ACTION_CATALOG as GLOBAL_ACTION_SPEC_CATALOG, GLOBAL_ACTION_UI_SCHEMAS, GLOBAL_ANALYTICS_SERVICE, GLOBAL_API_CLIENT, GLOBAL_CONFIG, GLOBAL_DIALOG_SERVICE, GLOBAL_ROUTE_GUARD_RESOLVER, GLOBAL_TOAST_SERVICE, GenericCrudService, GlobalActionService, GlobalConfigService, INLINE_FILTER_ALIAS_TOKENS, INLINE_FILTER_CONTROL_TYPES, INLINE_FILTER_CONTROL_TYPE_SET, INLINE_FILTER_CONTROL_TYPE_VALUES, INLINE_FILTER_TOKEN_TO_BASE_CONTROL_TYPE, INLINE_FILTER_TOKEN_TO_CONTROL_TYPE, IconPickerService, IconPosition, IconSize, LOGGER_LEVEL_BY_ENV, LOGGER_LEVEL_PRIORITY, LoadingOrchestrator, LocalConnectionStorage, LocalStorageAsyncAdapter, LocalStorageCacheAdapter, LocalStorageConfigService, LoggerService, LoggerThrottleTracker, LoggerWarnOnceTracker, MemoryCacheAdapter, NumericFormat, OVERLAY_DECIDER_DEBUG, OVERLAY_DECISION_MATRIX, ObservabilityDashboardService, OverlayDeciderService, PRAXIS_CORPORATE_SENSITIVE_KEYS, PRAXIS_DEFAULT_OBSERVABILITY_ALERT_RULES, PRAXIS_DYNAMIC_PAGE_COMPONENT_METADATA, PRAXIS_FOOTER_LINKS_METADATA, PRAXIS_GLOBAL_ACTION_CATALOG, PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_OPTIONS, PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_READY, PRAXIS_GLOBAL_CONFIG_TENANT_RESOLVER, PRAXIS_HERO_BANNER_METADATA, PRAXIS_I18N_CONFIG, PRAXIS_I18N_TRANSLATOR, PRAXIS_LEGAL_NOTICE_METADATA, PRAXIS_LOADING_CTX, PRAXIS_LOADING_RENDERER, PRAXIS_LOGGER_CONFIG, PRAXIS_LOGGER_SINKS, PRAXIS_OBSERVABILITY_DASHBOARD_OPTIONS, PRAXIS_RICH_TEXT_BLOCK_METADATA, PRAXIS_TELEMETRY_TRANSPORT, PRAXIS_USER_CONTEXT_SUMMARY_METADATA, PRIVACY_CONSENT_EDITORIAL_SOLUTION, PRIVACY_CONSENT_EDITORIAL_TEMPLATE, PraxisCore, PraxisFooterLinksComponent, PraxisGlobalErrorHandler, PraxisHeroBannerComponent, PraxisI18nService, PraxisIconDirective, PraxisIconPickerComponent, PraxisLegalNoticeComponent, PraxisLoadingInterceptor, PraxisRichTextBlockComponent, PraxisUserContextSummaryComponent, RULE_PROPERTY_SCHEMA, RemoteConfigStorage, ResourceQuickConnectComponent, SCHEMA_VIEWER_CONTEXT, SETTINGS_PANEL_BRIDGE, SETTINGS_PANEL_DATA, STEPPER_CONFIG_EDITOR, SchemaMetadataClient, SchemaNormalizerService, SchemaViewerComponent, TABLE_CONFIG_EDITOR, TableConfigService, TelemetryLoggerSink, TelemetryService, ValidationPattern, WidgetShellComponent, applyLocalCustomizations$2 as applyLocalCustomizations, applyLocalCustomizations$1 as applyLocalFormCustomizations, buildAngularValidators, buildApiUrl, buildBaseColumnFromDef, buildBaseFormField, buildFormConfigFromEditorialTemplate, buildHeaders, buildPageKey, buildSchemaId, buildValidatorsFromValidatorOptions, cancelIfCpfInvalidHook, clampRange, cloneTableConfig, cnpjAlphaValidator, collapseWhitespace, composeHeadersWithVersion, conditionalAsyncValidator, convertFormLayoutToConfig, createCorporateLoggerConfig, createCorporateObservabilityOptions, createCpfCnpjValidator, createDefaultFormConfig, createDefaultTableConfig, createEmptyFormConfig, createPersistedPage, customAsyncValidatorFn, customValidatorFn, debounceAsyncValidator, deepMerge, ensureIds, ensureNoConflictsHookFactory, ensurePageIds, extractNormalizedError, fetchWithETag, fileTypeValidator, fillUndefined, generateId, getDefaultFormHints, getEditorialCompliancePresetById, getEditorialFormTemplateById, getEditorialFormTemplateCatalog, getEditorialSolutionById, getEditorialSolutionCatalog, getEditorialSolutionPresetById, getEditorialThemePresetById, getEssentialConfig, getFieldMetadataCapabilities, getGlobalActionCatalog, getGlobalActionUiSchema, getReferencedFieldMetadata, getTextTransformer, interpolatePraxisTranslation, isAllowedEditorialContentFormat, isAllowedEditorialHref, isCssTextTransform, isEditorialComponentMeta, isInlineFilterControlType, isRangeValidForFilter, isTableConfigV2, isValidFormConfig, isValidTableConfig, legacyCnpjValidator, legacyCpfValidator, logOnErrorHook, mapFieldDefinitionToMetadata, mapFieldDefinitionsToMetadata, matchFieldValidator, maxFileSizeValidator, mergeFieldMetadata, mergePraxisI18nConfigs, mergeTableConfigs, migrateFormLayoutRule, minWordsValidator, normalizeControlTypeKey, normalizeControlTypeToken, normalizeEditorialLink, normalizeEnd, normalizeFieldConstraints, normalizeFormConfig, normalizeFormMetadata, normalizePath, normalizeStart, normalizeUnknownError, notifySuccessHook, parseJsonResponseOrEmpty, praxisLoadingInterceptorFn, prefillFromContextHook, provideDefaultFormHooks, provideFieldSelectorRegistryBase, provideFieldSelectorRegistryOverride, provideFieldSelectorRegistryRuntime, provideFormHookPresets, provideFormHooks, provideGlobalActionCatalog, provideGlobalActionHandler, provideGlobalConfig, provideGlobalConfigReady, provideGlobalConfigSeed, provideGlobalConfigTenant, provideHookResolvers, provideHookWhitelist, provideOverlayDecisionMatrix, providePraxisAnalyticsGlobalActions, providePraxisDynamicPageMetadata, providePraxisFooterLinksMetadata, providePraxisGlobalActionCatalog, providePraxisGlobalActions, providePraxisGlobalConfigBootstrap, providePraxisHeroBannerMetadata, providePraxisHttpLoading, providePraxisI18n, providePraxisI18nConfig, providePraxisI18nTranslator, providePraxisLegalNoticeMetadata, providePraxisLoadingDefaults, providePraxisLogging, providePraxisRichTextBlockMetadata, providePraxisToastGlobalActions, providePraxisUserContextSummaryMetadata, provideRemoteGlobalConfig, reconcileFilterConfig, reconcileFormConfig, reconcileTableConfig, removeDiacritics, reportTelemetryHookFactory, requiredCheckedValidator, resolveBuiltinPresets, resolveControlTypeAlias, resolveHidden, resolveInlineFilterControlType, resolveInlineFilterControlTypeToBaseControlType, resolveLoggerConfig, resolveObservabilityOptions, resolveOffset, resolveOrder, resolveSpan, slugify, stripMasksHook, syncWithServerMetadata, toCamel, toCapitalize, toKebab, toPascal, toSentenceCase, toSnake, toTitleCase, trim, uniqueAsyncValidator, urlValidator, withMessage, withPraxisHttpLoading };
|
|
18132
|
+
export { API_CONFIG_STORAGE_OPTIONS, API_URL, ASYNC_CONFIG_STORAGE, AllowedFileTypes, ApiConfigStorage, ApiEndpoint, BUILTIN_SHELL_PRESETS, CONFIG_STORAGE, CONNECTION_STORAGE, ComponentKeyService, ComponentMetadataRegistry, ConnectionManagerService, ConsoleLoggerSink, DEFAULT_FIELD_SELECTOR_CONTROL_TYPE_MAP, DEFAULT_TABLE_CONFIG, DYNAMIC_PAGE_AI_CAPABILITIES, DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK, DYNAMIC_PAGE_CONFIG_EDITOR, DYNAMIC_PAGE_SHELL_EDITOR, DefaultLoadingRenderer, DeferredAsyncConfigStorage, DynamicFormService, DynamicGridPageComponent, DynamicWidgetLoaderDirective, DynamicWidgetPageComponent, EDITORIAL_ALLOWED_CONTENT_FORMATS, EDITORIAL_COMPLIANCE_PRESETS, EDITORIAL_EXTERNAL_LINK_REL, EDITORIAL_FORM_TEMPLATE_CATALOG, EDITORIAL_HTML_ENABLED, EDITORIAL_MARKDOWN_IMAGES_ENABLED, EDITORIAL_SOLUTION_CATALOG, EDITORIAL_SOLUTION_PRESETS, EDITORIAL_THEME_PRESETS, EDITORIAL_WIDGET_CONVENTION_INPUTS, EDITORIAL_WIDGET_TAG, EMPLOYEE_ONBOARDING_EDITORIAL_SOLUTION, EMPLOYEE_ONBOARDING_EDITORIAL_TEMPLATE, EMPLOYEE_ONBOARDING_GUIDED_EDITORIAL_SOLUTION, EMPLOYEE_ONBOARDING_GUIDED_EDITORIAL_TEMPLATE, EVENT_REGISTRATION_EDITORIAL_SOLUTION, EVENT_REGISTRATION_EDITORIAL_TEMPLATE, EmptyStateCardComponent, ErrorMessageService, FIELD_METADATA_CAPABILITIES, FIELD_SELECTOR_REGISTRY_BASE, FIELD_SELECTOR_REGISTRY_DISABLE_DEFAULTS, FIELD_SELECTOR_REGISTRY_OVERRIDES, FORM_HOOKS, FORM_HOOKS_PRESETS, FORM_HOOKS_WHITELIST, FORM_HOOK_RESOLVERS, FieldControlType, FieldDataType, FieldSelectorRegistry, FormHooksRegistry, GLOBAL_ACTION_CATALOG$1 as GLOBAL_ACTION_CATALOG, GLOBAL_ACTION_HANDLERS, GLOBAL_ACTION_CATALOG as GLOBAL_ACTION_SPEC_CATALOG, GLOBAL_ACTION_UI_SCHEMAS, GLOBAL_ANALYTICS_SERVICE, GLOBAL_API_CLIENT, GLOBAL_CONFIG, GLOBAL_DIALOG_SERVICE, GLOBAL_ROUTE_GUARD_RESOLVER, GLOBAL_TOAST_SERVICE, GenericCrudService, GlobalActionService, GlobalConfigService, INLINE_FILTER_ALIAS_TOKENS, INLINE_FILTER_CONTROL_TYPES, INLINE_FILTER_CONTROL_TYPE_SET, INLINE_FILTER_CONTROL_TYPE_VALUES, INLINE_FILTER_TOKEN_TO_BASE_CONTROL_TYPE, INLINE_FILTER_TOKEN_TO_CONTROL_TYPE, IconPickerService, IconPosition, IconSize, LOGGER_LEVEL_BY_ENV, LOGGER_LEVEL_PRIORITY, LoadingOrchestrator, LocalConnectionStorage, LocalStorageAsyncAdapter, LocalStorageCacheAdapter, LocalStorageConfigService, LoggerService, LoggerThrottleTracker, LoggerWarnOnceTracker, MemoryCacheAdapter, NumericFormat, OVERLAY_DECIDER_DEBUG, OVERLAY_DECISION_MATRIX, ObservabilityDashboardService, OverlayDeciderService, PRAXIS_CORPORATE_SENSITIVE_KEYS, PRAXIS_DEFAULT_OBSERVABILITY_ALERT_RULES, PRAXIS_DYNAMIC_PAGE_COMPONENT_METADATA, PRAXIS_FOOTER_LINKS_METADATA, PRAXIS_GLOBAL_ACTION_CATALOG, PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_OPTIONS, PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_READY, PRAXIS_GLOBAL_CONFIG_TENANT_RESOLVER, PRAXIS_HERO_BANNER_METADATA, PRAXIS_I18N_CONFIG, PRAXIS_I18N_TRANSLATOR, PRAXIS_LEGAL_NOTICE_METADATA, PRAXIS_LOADING_CTX, PRAXIS_LOADING_RENDERER, PRAXIS_LOGGER_CONFIG, PRAXIS_LOGGER_SINKS, PRAXIS_OBSERVABILITY_DASHBOARD_OPTIONS, PRAXIS_RICH_TEXT_BLOCK_METADATA, PRAXIS_TELEMETRY_TRANSPORT, PRAXIS_USER_CONTEXT_SUMMARY_METADATA, PRIVACY_CONSENT_EDITORIAL_SOLUTION, PRIVACY_CONSENT_EDITORIAL_TEMPLATE, PraxisCore, PraxisFooterLinksComponent, PraxisGlobalErrorHandler, PraxisHeroBannerComponent, PraxisI18nService, PraxisIconDirective, PraxisIconPickerComponent, PraxisLegalNoticeComponent, PraxisLoadingInterceptor, PraxisRichTextBlockComponent, PraxisUserContextSummaryComponent, RULE_PROPERTY_SCHEMA, RemoteConfigStorage, ResourceQuickConnectComponent, SCHEMA_VIEWER_CONTEXT, SETTINGS_PANEL_BRIDGE, SETTINGS_PANEL_DATA, STEPPER_CONFIG_EDITOR, SchemaMetadataClient, SchemaNormalizerService, SchemaViewerComponent, TABLE_CONFIG_EDITOR, TableConfigService, TelemetryLoggerSink, TelemetryService, ValidationPattern, WidgetPageStateRuntimeService, WidgetShellComponent, applyLocalCustomizations$2 as applyLocalCustomizations, applyLocalCustomizations$1 as applyLocalFormCustomizations, buildAngularValidators, buildApiUrl, buildBaseColumnFromDef, buildBaseFormField, buildFormConfigFromEditorialTemplate, buildHeaders, buildPageKey, buildSchemaId, buildValidatorsFromValidatorOptions, cancelIfCpfInvalidHook, clampRange, cloneTableConfig, cnpjAlphaValidator, collapseWhitespace, composeHeadersWithVersion, conditionalAsyncValidator, convertFormLayoutToConfig, createCorporateLoggerConfig, createCorporateObservabilityOptions, createCpfCnpjValidator, createDefaultFormConfig, createDefaultTableConfig, createEmptyFormConfig, createPersistedPage, customAsyncValidatorFn, customValidatorFn, debounceAsyncValidator, deepMerge, ensureIds, ensureNoConflictsHookFactory, ensurePageIds, extractNormalizedError, fetchWithETag, fileTypeValidator, fillUndefined, generateId, getDefaultFormHints, getEditorialCompliancePresetById, getEditorialFormTemplateById, getEditorialFormTemplateCatalog, getEditorialSolutionById, getEditorialSolutionCatalog, getEditorialSolutionPresetById, getEditorialThemePresetById, getEssentialConfig, getFieldMetadataCapabilities, getGlobalActionCatalog, getGlobalActionUiSchema, getReferencedFieldMetadata, getTextTransformer, interpolatePraxisTranslation, isAllowedEditorialContentFormat, isAllowedEditorialHref, isCssTextTransform, isEditorialComponentMeta, isInlineFilterControlType, isRangeValidForFilter, isTableConfigV2, isValidFormConfig, isValidTableConfig, legacyCnpjValidator, legacyCpfValidator, logOnErrorHook, mapFieldDefinitionToMetadata, mapFieldDefinitionsToMetadata, matchFieldValidator, maxFileSizeValidator, mergeFieldMetadata, mergePraxisI18nConfigs, mergeTableConfigs, migrateFormLayoutRule, minWordsValidator, normalizeControlTypeKey, normalizeControlTypeToken, normalizeEditorialLink, normalizeEnd, normalizeFieldConstraints, normalizeFormConfig, normalizeFormMetadata, normalizePath, normalizeStart, normalizeUnknownError, notifySuccessHook, parseJsonResponseOrEmpty, praxisLoadingInterceptorFn, prefillFromContextHook, provideDefaultFormHooks, provideFieldSelectorRegistryBase, provideFieldSelectorRegistryOverride, provideFieldSelectorRegistryRuntime, provideFormHookPresets, provideFormHooks, provideGlobalActionCatalog, provideGlobalActionHandler, provideGlobalConfig, provideGlobalConfigReady, provideGlobalConfigSeed, provideGlobalConfigTenant, provideHookResolvers, provideHookWhitelist, provideOverlayDecisionMatrix, providePraxisAnalyticsGlobalActions, providePraxisDynamicPageMetadata, providePraxisFooterLinksMetadata, providePraxisGlobalActionCatalog, providePraxisGlobalActions, providePraxisGlobalConfigBootstrap, providePraxisHeroBannerMetadata, providePraxisHttpLoading, providePraxisI18n, providePraxisI18nConfig, providePraxisI18nTranslator, providePraxisLegalNoticeMetadata, providePraxisLoadingDefaults, providePraxisLogging, providePraxisRichTextBlockMetadata, providePraxisToastGlobalActions, providePraxisUserContextSummaryMetadata, provideRemoteGlobalConfig, reconcileFilterConfig, reconcileFormConfig, reconcileTableConfig, removeDiacritics, reportTelemetryHookFactory, requiredCheckedValidator, resolveBuiltinPresets, resolveControlTypeAlias, resolveHidden, resolveInlineFilterControlType, resolveInlineFilterControlTypeToBaseControlType, resolveLoggerConfig, resolveObservabilityOptions, resolveOffset, resolveOrder, resolveSpan, slugify, stripMasksHook, syncWithServerMetadata, toCamel, toCapitalize, toKebab, toPascal, toSentenceCase, toSnake, toTitleCase, trim, uniqueAsyncValidator, urlValidator, withMessage, withPraxisHttpLoading };
|
|
17828
18133
|
//# sourceMappingURL=praxisui-core.mjs.map
|