@kaskad/angular 0.0.6 → 0.0.7
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/kaskad-angular-boolean-input-group.component-OTuIH22A.mjs.map +1 -1
- package/fesm2022/kaskad-angular-box.component-DT8snyrR.mjs.map +1 -1
- package/fesm2022/kaskad-angular-custom-input.component-BAFEfDxO.mjs.map +1 -1
- package/fesm2022/{kaskad-angular-dialog.component-B_024_A6.mjs → kaskad-angular-dialog.component-DWkOjeop.mjs} +16 -10
- package/fesm2022/kaskad-angular-dialog.component-DWkOjeop.mjs.map +1 -0
- package/fesm2022/kaskad-angular-element.component-3CvZ-N6y.mjs.map +1 -1
- package/fesm2022/kaskad-angular-facade.component-BAkH4L3V.mjs.map +1 -1
- package/fesm2022/kaskad-angular-group.component-Bh65Yk30.mjs.map +1 -1
- package/fesm2022/kaskad-angular-image.component-BmJZNGL9.mjs +25 -0
- package/fesm2022/kaskad-angular-image.component-BmJZNGL9.mjs.map +1 -0
- package/fesm2022/kaskad-angular-input-array.component-DWcLPned.mjs.map +1 -1
- package/fesm2022/kaskad-angular-input-group.component-DZPGF3Dg.mjs.map +1 -1
- package/fesm2022/kaskad-angular-link.component-0HImxTfB.mjs +40 -0
- package/fesm2022/kaskad-angular-link.component-0HImxTfB.mjs.map +1 -0
- package/fesm2022/kaskad-angular-popover.component-B_5AEt8L.mjs +64 -0
- package/fesm2022/kaskad-angular-popover.component-B_5AEt8L.mjs.map +1 -0
- package/fesm2022/kaskad-angular-ref-space.component-DzwKtvwe.mjs.map +1 -1
- package/fesm2022/kaskad-angular.mjs +203 -15
- package/fesm2022/kaskad-angular.mjs.map +1 -1
- package/package.json +5 -5
- package/types/kaskad-angular.d.ts +15 -5
- package/fesm2022/kaskad-angular-dialog.component-B_024_A6.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kaskad-angular-boolean-input-group.component-OTuIH22A.mjs","sources":["../../../../libs/angular/src/lib/
|
|
1
|
+
{"version":3,"file":"kaskad-angular-boolean-input-group.component-OTuIH22A.mjs","sources":["../../../../libs/angular/src/lib/plugins/forms/boolean-input-group.component.ts"],"sourcesContent":["import { ComponentId } from '@kaskad/core';\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { ComponentOutletDirective } from '../../component-outlet.directive';\n\n@Component({\n selector: 'kk-boolean-input-group',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.display]': '\"contents\"',\n },\n template: ` <ng-container [kkComponentOutlet]=\"content()\" /> `,\n imports: [ComponentOutletDirective],\n})\nexport class BooleanInputGroupComponent {\n content = input<ComponentId | null>(null);\n}\n"],"names":[],"mappings":";;;;MAca,0BAA0B,CAAA;AACrC,IAAA,OAAO,GAAG,KAAK,CAAqB,IAAI,mDAAC;uGAD9B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAH3B,CAAA,kDAAA,CAAoD,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpD,wBAAwB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEvB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBATtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;oBAClC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,iBAAiB,EAAE,YAAY;AAChC,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,kDAAA,CAAoD;oBAC9D,OAAO,EAAE,CAAC,wBAAwB,CAAC;AACpC,iBAAA;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kaskad-angular-box.component-DT8snyrR.mjs","sources":["../../../../libs/angular/src/lib/
|
|
1
|
+
{"version":3,"file":"kaskad-angular-box.component-DT8snyrR.mjs","sources":["../../../../libs/angular/src/lib/plugins/sys/box.component.ts"],"sourcesContent":["import { ComponentId } from '@kaskad/core';\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { ComponentOutletDirective } from '../../component-outlet.directive';\n\n@Component({\n selector: 'kk-sys-box',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.display]': '\"contents\"',\n },\n template: ` <ng-container [kkComponentOutlet]=\"content()\" /> `,\n imports: [ComponentOutletDirective],\n})\nexport class BoxComponent {\n content = input<ComponentId | null>(null);\n}\n"],"names":[],"mappings":";;;;MAca,YAAY,CAAA;AACvB,IAAA,OAAO,GAAG,KAAK,CAAqB,IAAI,mDAAC;uGAD9B,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAHb,CAAA,kDAAA,CAAoD,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpD,wBAAwB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEvB,YAAY,EAAA,UAAA,EAAA,CAAA;kBATxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;oBACtB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,iBAAiB,EAAE,YAAY;AAChC,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,kDAAA,CAAoD;oBAC9D,OAAO,EAAE,CAAC,wBAAwB,CAAC;AACpC,iBAAA;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kaskad-angular-custom-input.component-BAFEfDxO.mjs","sources":["../../../../libs/angular/src/lib/
|
|
1
|
+
{"version":3,"file":"kaskad-angular-custom-input.component-BAFEfDxO.mjs","sources":["../../../../libs/angular/src/lib/plugins/forms/custom-input.component.ts"],"sourcesContent":["import { ComponentId } from '@kaskad/core';\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { ComponentOutletDirective } from '../../component-outlet.directive';\n\n@Component({\n selector: 'kk-custom-input',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.display]': '\"contents\"',\n },\n template: ` <ng-container [kkComponentOutlet]=\"content()\" /> `,\n imports: [ComponentOutletDirective],\n})\nexport class CustomInputComponent {\n content = input<ComponentId | null>(null);\n}\n"],"names":[],"mappings":";;;;MAca,oBAAoB,CAAA;AAC/B,IAAA,OAAO,GAAG,KAAK,CAAqB,IAAI,mDAAC;uGAD9B,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAHrB,CAAA,kDAAA,CAAoD,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpD,wBAAwB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEvB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAThC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;oBAC3B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,iBAAiB,EAAE,YAAY;AAChC,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,kDAAA,CAAoD;oBAC9D,OAAO,EAAE,CAAC,wBAAwB,CAAC;AACpC,iBAAA;;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, viewChild,
|
|
2
|
+
import { input, viewChild, signal, effect, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
3
|
import { ComponentOutletDirective } from './kaskad-angular.mjs';
|
|
4
4
|
|
|
5
5
|
class DialogComponent {
|
|
@@ -8,19 +8,27 @@ class DialogComponent {
|
|
|
8
8
|
close = input(...(ngDevMode ? [undefined, { debugName: "close" }] : []));
|
|
9
9
|
dialog = viewChild('dialog', ...(ngDevMode ? [{ debugName: "dialog" }] : []));
|
|
10
10
|
constructor() {
|
|
11
|
+
const opened = signal(false, ...(ngDevMode ? [{ debugName: "opened" }] : []));
|
|
11
12
|
effect(() => {
|
|
12
|
-
this.dialog()
|
|
13
|
+
const dialog = this.dialog();
|
|
14
|
+
if (dialog && !opened()) {
|
|
15
|
+
opened.set(true);
|
|
16
|
+
dialog.nativeElement.showModal();
|
|
17
|
+
}
|
|
13
18
|
});
|
|
14
19
|
}
|
|
20
|
+
onClose() {
|
|
21
|
+
this.close()?.execute();
|
|
22
|
+
}
|
|
15
23
|
onClick(event) {
|
|
16
24
|
// close dialog when clicking on the backdrop
|
|
17
25
|
if (event.target.tagName === 'DIALOG') {
|
|
18
|
-
this.close()?.execute(
|
|
26
|
+
this.close()?.execute();
|
|
19
27
|
}
|
|
20
28
|
}
|
|
21
29
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: DialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
22
30
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.1.3", type: DialogComponent, isStandalone: true, selector: "kk-dialog", inputs: { styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null }, close: { classPropertyName: "close", publicName: "close", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onClick($event)" }, properties: { "style.display": "\"contents\"" } }, viewQueries: [{ propertyName: "dialog", first: true, predicate: ["dialog"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
23
|
-
<dialog #dialog [class]="styleClass()" (close)="
|
|
31
|
+
<dialog #dialog [class]="styleClass()" (close)="onClose()">
|
|
24
32
|
<ng-container [kkComponentOutlet]="content()" />
|
|
25
33
|
</dialog>
|
|
26
34
|
`, isInline: true, dependencies: [{ kind: "directive", type: ComponentOutletDirective, selector: "[kkComponentOutlet]", inputs: ["kkComponentOutlet", "elementInjector"], outputs: ["kkComponentOutletChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
@@ -32,18 +40,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
32
40
|
imports: [ComponentOutletDirective],
|
|
33
41
|
host: {
|
|
34
42
|
'[style.display]': '"contents"',
|
|
43
|
+
'(click)': 'onClick($event)',
|
|
35
44
|
},
|
|
36
45
|
template: `
|
|
37
|
-
<dialog #dialog [class]="styleClass()" (close)="
|
|
46
|
+
<dialog #dialog [class]="styleClass()" (close)="onClose()">
|
|
38
47
|
<ng-container [kkComponentOutlet]="content()" />
|
|
39
48
|
</dialog>
|
|
40
49
|
`,
|
|
41
50
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
42
51
|
}]
|
|
43
|
-
}], ctorParameters: () => [], propDecorators: { styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: false }] }], close: [{ type: i0.Input, args: [{ isSignal: true, alias: "close", required: false }] }], dialog: [{ type: i0.ViewChild, args: ['dialog', { isSignal: true }] }]
|
|
44
|
-
type: HostListener,
|
|
45
|
-
args: ['click', ['$event']]
|
|
46
|
-
}] } });
|
|
52
|
+
}], ctorParameters: () => [], propDecorators: { styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: false }] }], close: [{ type: i0.Input, args: [{ isSignal: true, alias: "close", required: false }] }], dialog: [{ type: i0.ViewChild, args: ['dialog', { isSignal: true }] }] } });
|
|
47
53
|
|
|
48
54
|
export { DialogComponent };
|
|
49
|
-
//# sourceMappingURL=kaskad-angular-dialog.component-
|
|
55
|
+
//# sourceMappingURL=kaskad-angular-dialog.component-DWkOjeop.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kaskad-angular-dialog.component-DWkOjeop.mjs","sources":["../../../../libs/angular/src/lib/plugins/browser/dialog.component.ts"],"sourcesContent":["import { CommandNodeViewModel } from '@kaskad/component-tree';\nimport { ComponentId } from '@kaskad/core';\nimport { ChangeDetectionStrategy, Component, effect, ElementRef, input, signal, viewChild } from '@angular/core';\n\nimport { ComponentOutletDirective } from '../../component-outlet.directive';\n\n@Component({\n selector: 'kk-dialog',\n imports: [ComponentOutletDirective],\n host: {\n '[style.display]': '\"contents\"',\n '(click)': 'onClick($event)',\n },\n template: `\n <dialog #dialog [class]=\"styleClass()\" (close)=\"onClose()\">\n <ng-container [kkComponentOutlet]=\"content()\" />\n </dialog>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DialogComponent {\n styleClass = input<string>();\n content = input<ComponentId | null>(null);\n close = input<CommandNodeViewModel>();\n\n dialog = viewChild<ElementRef<HTMLDialogElement>>('dialog');\n\n constructor() {\n const opened = signal(false);\n effect(() => {\n const dialog = this.dialog();\n if (dialog && !opened()) {\n opened.set(true);\n dialog.nativeElement.showModal();\n }\n });\n }\n\n onClose(): void {\n this.close()?.execute();\n }\n\n onClick(event: MouseEvent): void {\n // close dialog when clicking on the backdrop\n if ((event.target as HTMLElement).tagName === 'DIALOG') {\n this.close()?.execute();\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kaskad-angular-element.component-3CvZ-N6y.mjs","sources":["../../../../libs/angular/src/lib/directives/tag-wrap.directive.ts","../../../../libs/angular/src/lib/
|
|
1
|
+
{"version":3,"file":"kaskad-angular-element.component-3CvZ-N6y.mjs","sources":["../../../../libs/angular/src/lib/directives/tag-wrap.directive.ts","../../../../libs/angular/src/lib/plugins/browser/element.component.ts"],"sourcesContent":["import {\n DestroyRef,\n Directive,\n effect,\n inject,\n input,\n Renderer2,\n SecurityContext,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Directive({ selector: '[kkTagWrap]' })\nexport class TagWrapDirective {\n kkTagWrap = input.required<string>();\n kkTagWrapClass = input<string>();\n kkTagWrapInnerHTML = input<string>();\n\n private templateRef = inject(TemplateRef);\n private vcr = inject(ViewContainerRef);\n private renderer = inject(Renderer2);\n private sanitizer = inject(DomSanitizer);\n\n private wrapperEl: HTMLElement | null = null;\n\n constructor() {\n effect(() => {\n const tag = this.kkTagWrap();\n if (!this.wrapperEl) {\n this.createWrapper(tag);\n }\n });\n\n effect(() => {\n if (!this.wrapperEl) return;\n this.wrapperEl.className = this.kkTagWrapClass() ?? '';\n });\n\n effect(() => {\n if (!this.wrapperEl) return;\n const html = this.kkTagWrapInnerHTML();\n if (html) {\n const sanitized = this.sanitizer.sanitize(SecurityContext.HTML, html) ?? '';\n this.renderer.setProperty(this.wrapperEl, 'innerHTML', sanitized);\n }\n });\n\n inject(DestroyRef).onDestroy(() => this.wrapperEl?.remove());\n }\n\n private createWrapper(tag: string): void {\n const anchor = this.vcr.element.nativeElement as Comment;\n this.wrapperEl = document.createElement(tag);\n anchor.parentNode?.insertBefore(this.wrapperEl, anchor);\n this.wrapperEl.appendChild(anchor);\n this.vcr.createEmbeddedView(this.templateRef);\n }\n}\n","import { ComponentId } from '@kaskad/core';\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { ComponentOutletDirective } from '../../component-outlet.directive';\nimport { TagWrapDirective } from '../../directives/tag-wrap.directive';\n\n@Component({\n selector: 'kk-browser-element',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ComponentOutletDirective, TagWrapDirective],\n host: {\n '[style.display]': '\"contents\"',\n },\n template: `\n <ng-container *kkTagWrap=\"tag() ?? 'div'; class: styleClass(); innerHTML: innerHTML()\">\n @for (child of children(); track child) {\n <ng-container [kkComponentOutlet]=\"child\" />\n }\n </ng-container>\n `,\n})\nexport class ElementComponent {\n tag = input<string>();\n styleClass = input<string>();\n innerHTML = input<string>();\n children = input<ComponentId[]>();\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kaskad-angular-facade.component-BAkH4L3V.mjs","sources":["../../../../libs/angular/src/lib/
|
|
1
|
+
{"version":3,"file":"kaskad-angular-facade.component-BAkH4L3V.mjs","sources":["../../../../libs/angular/src/lib/plugins/sys/facade.component.ts"],"sourcesContent":["import { ComponentId } from '@kaskad/core';\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { ComponentOutletDirective } from '../../component-outlet.directive';\n\n@Component({\n selector: 'kk-sys-template-facade',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.display]': '\"contents\"',\n },\n template: ` <ng-container [kkComponentOutlet]=\"content()\" /> `,\n imports: [ComponentOutletDirective],\n})\nexport class FacadeComponent {\n content = input<ComponentId | null>(null);\n}\n"],"names":[],"mappings":";;;;MAca,eAAe,CAAA;AAC1B,IAAA,OAAO,GAAG,KAAK,CAAqB,IAAI,mDAAC;uGAD9B,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAHhB,CAAA,kDAAA,CAAoD,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpD,wBAAwB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEvB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAT3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;oBAClC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,iBAAiB,EAAE,YAAY;AAChC,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,kDAAA,CAAoD;oBAC9D,OAAO,EAAE,CAAC,wBAAwB,CAAC;AACpC,iBAAA;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kaskad-angular-group.component-Bh65Yk30.mjs","sources":["../../../../libs/angular/src/lib/
|
|
1
|
+
{"version":3,"file":"kaskad-angular-group.component-Bh65Yk30.mjs","sources":["../../../../libs/angular/src/lib/plugins/sys/group.component.ts"],"sourcesContent":["import { ComponentId } from '@kaskad/core';\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { ComponentOutletDirective } from '../../component-outlet.directive';\n\n@Component({\n selector: 'kk-sys-group',\n imports: [ComponentOutletDirective],\n host: {\n '[style.display]': '\"contents\"',\n },\n template: `\n @for (child of children(); track child) {\n <ng-container [kkComponentOutlet]=\"child\" />\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GroupComponent {\n children = input<ComponentId[]>([]);\n}\n"],"names":[],"mappings":";;;;MAkBa,cAAc,CAAA;AACzB,IAAA,QAAQ,GAAG,KAAK,CAAgB,EAAE,oDAAC;uGADxB,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAPf;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EARS,wBAAwB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAWvB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAb1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;oBACxB,OAAO,EAAE,CAAC,wBAAwB,CAAC;AACnC,oBAAA,IAAI,EAAE;AACJ,wBAAA,iBAAiB,EAAE,YAAY;AAChC,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;AAIT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;;;"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { input, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
+
|
|
4
|
+
class ImageComponent {
|
|
5
|
+
src = input(...(ngDevMode ? [undefined, { debugName: "src" }] : []));
|
|
6
|
+
alt = input(...(ngDevMode ? [undefined, { debugName: "alt" }] : []));
|
|
7
|
+
loading = input(...(ngDevMode ? [undefined, { debugName: "loading" }] : []));
|
|
8
|
+
styleClass = input(...(ngDevMode ? [undefined, { debugName: "styleClass" }] : []));
|
|
9
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ImageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.3", type: ImageComponent, isStandalone: true, selector: "kk-browser-image", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null }, alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.display": "\"contents\"" } }, ngImport: i0, template: `<img [src]="src()" [alt]="alt()" [loading]="loading()" [class]="styleClass()" />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
11
|
+
}
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ImageComponent, decorators: [{
|
|
13
|
+
type: Component,
|
|
14
|
+
args: [{
|
|
15
|
+
selector: 'kk-browser-image',
|
|
16
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
17
|
+
host: {
|
|
18
|
+
'[style.display]': '"contents"',
|
|
19
|
+
},
|
|
20
|
+
template: `<img [src]="src()" [alt]="alt()" [loading]="loading()" [class]="styleClass()" />`,
|
|
21
|
+
}]
|
|
22
|
+
}], propDecorators: { src: [{ type: i0.Input, args: [{ isSignal: true, alias: "src", required: false }] }], alt: [{ type: i0.Input, args: [{ isSignal: true, alias: "alt", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }] } });
|
|
23
|
+
|
|
24
|
+
export { ImageComponent };
|
|
25
|
+
//# sourceMappingURL=kaskad-angular-image.component-BmJZNGL9.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kaskad-angular-image.component-BmJZNGL9.mjs","sources":["../../../../libs/angular/src/lib/plugins/browser/image.component.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'kk-browser-image',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.display]': '\"contents\"',\n },\n template: `<img [src]=\"src()\" [alt]=\"alt()\" [loading]=\"loading()\" [class]=\"styleClass()\" />`,\n})\nexport class ImageComponent {\n src = input<string>();\n alt = input<string>();\n loading = input<string>();\n styleClass = input<string>();\n}\n"],"names":[],"mappings":";;;MAUa,cAAc,CAAA;IACzB,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IACrB,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IACrB,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IACzB,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;uGAJjB,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,4nBAFf,CAAA,gFAAA,CAAkF,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEjF,cAAc,EAAA,UAAA,EAAA,CAAA;kBAR1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;oBAC5B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,iBAAiB,EAAE,YAAY;AAChC,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,gFAAA,CAAkF;AAC7F,iBAAA;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kaskad-angular-input-array.component-DWcLPned.mjs","sources":["../../../../libs/angular/src/lib/
|
|
1
|
+
{"version":3,"file":"kaskad-angular-input-array.component-DWcLPned.mjs","sources":["../../../../libs/angular/src/lib/plugins/forms/input-array.component.ts"],"sourcesContent":["import { ComponentId } from '@kaskad/core';\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { ComponentOutletDirective } from '../../component-outlet.directive';\n\n@Component({\n selector: 'kk-input-array',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.display]': '\"contents\"',\n },\n template: ` <ng-container [kkComponentOutlet]=\"content()\" /> `,\n imports: [ComponentOutletDirective],\n})\nexport class InputArrayComponent {\n content = input<ComponentId | null>(null);\n}\n"],"names":[],"mappings":";;;;MAca,mBAAmB,CAAA;AAC9B,IAAA,OAAO,GAAG,KAAK,CAAqB,IAAI,mDAAC;uGAD9B,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAHpB,CAAA,kDAAA,CAAoD,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpD,wBAAwB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEvB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAT/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;oBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,iBAAiB,EAAE,YAAY;AAChC,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,kDAAA,CAAoD;oBAC9D,OAAO,EAAE,CAAC,wBAAwB,CAAC;AACpC,iBAAA;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kaskad-angular-input-group.component-DZPGF3Dg.mjs","sources":["../../../../libs/angular/src/lib/
|
|
1
|
+
{"version":3,"file":"kaskad-angular-input-group.component-DZPGF3Dg.mjs","sources":["../../../../libs/angular/src/lib/plugins/forms/input-group.component.ts"],"sourcesContent":["import { ComponentId } from '@kaskad/core';\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { ComponentOutletDirective } from '../../component-outlet.directive';\n\n@Component({\n selector: 'kk-input-group',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.display]': '\"contents\"',\n },\n template: ` <ng-container [kkComponentOutlet]=\"content()\" /> `,\n imports: [ComponentOutletDirective],\n})\nexport class InputGroupComponent {\n content = input<ComponentId | null>(null);\n}\n"],"names":[],"mappings":";;;;MAca,mBAAmB,CAAA;AAC9B,IAAA,OAAO,GAAG,KAAK,CAAqB,IAAI,mDAAC;uGAD9B,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAHpB,CAAA,kDAAA,CAAoD,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpD,wBAAwB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEvB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAT/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;oBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,iBAAiB,EAAE,YAAY;AAChC,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,kDAAA,CAAoD;oBAC9D,OAAO,EAAE,CAAC,wBAAwB,CAAC;AACpC,iBAAA;;;;;"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { input, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
+
import { ComponentOutletDirective } from './kaskad-angular.mjs';
|
|
4
|
+
|
|
5
|
+
class LinkComponent {
|
|
6
|
+
href = input(...(ngDevMode ? [undefined, { debugName: "href" }] : []));
|
|
7
|
+
target = input(...(ngDevMode ? [undefined, { debugName: "target" }] : []));
|
|
8
|
+
rel = input(...(ngDevMode ? [undefined, { debugName: "rel" }] : []));
|
|
9
|
+
styleClass = input(...(ngDevMode ? [undefined, { debugName: "styleClass" }] : []));
|
|
10
|
+
children = input(...(ngDevMode ? [undefined, { debugName: "children" }] : []));
|
|
11
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: LinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: LinkComponent, isStandalone: true, selector: "kk-browser-link", inputs: { href: { classPropertyName: "href", publicName: "href", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null }, rel: { classPropertyName: "rel", publicName: "rel", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, children: { classPropertyName: "children", publicName: "children", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.display": "\"contents\"" } }, ngImport: i0, template: `
|
|
13
|
+
<a [href]="href()" [target]="target()" [rel]="rel()" [class]="styleClass()">
|
|
14
|
+
@for (child of children(); track child) {
|
|
15
|
+
<ng-container [kkComponentOutlet]="child" />
|
|
16
|
+
}
|
|
17
|
+
</a>
|
|
18
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: ComponentOutletDirective, selector: "[kkComponentOutlet]", inputs: ["kkComponentOutlet", "elementInjector"], outputs: ["kkComponentOutletChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
19
|
+
}
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: LinkComponent, decorators: [{
|
|
21
|
+
type: Component,
|
|
22
|
+
args: [{
|
|
23
|
+
selector: 'kk-browser-link',
|
|
24
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
25
|
+
imports: [ComponentOutletDirective],
|
|
26
|
+
host: {
|
|
27
|
+
'[style.display]': '"contents"',
|
|
28
|
+
},
|
|
29
|
+
template: `
|
|
30
|
+
<a [href]="href()" [target]="target()" [rel]="rel()" [class]="styleClass()">
|
|
31
|
+
@for (child of children(); track child) {
|
|
32
|
+
<ng-container [kkComponentOutlet]="child" />
|
|
33
|
+
}
|
|
34
|
+
</a>
|
|
35
|
+
`,
|
|
36
|
+
}]
|
|
37
|
+
}], propDecorators: { href: [{ type: i0.Input, args: [{ isSignal: true, alias: "href", required: false }] }], target: [{ type: i0.Input, args: [{ isSignal: true, alias: "target", required: false }] }], rel: [{ type: i0.Input, args: [{ isSignal: true, alias: "rel", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], children: [{ type: i0.Input, args: [{ isSignal: true, alias: "children", required: false }] }] } });
|
|
38
|
+
|
|
39
|
+
export { LinkComponent };
|
|
40
|
+
//# sourceMappingURL=kaskad-angular-link.component-0HImxTfB.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kaskad-angular-link.component-0HImxTfB.mjs","sources":["../../../../libs/angular/src/lib/plugins/browser/link.component.ts"],"sourcesContent":["import { ComponentId } from '@kaskad/core';\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { ComponentOutletDirective } from '../../component-outlet.directive';\n\n@Component({\n selector: 'kk-browser-link',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ComponentOutletDirective],\n host: {\n '[style.display]': '\"contents\"',\n },\n template: `\n <a [href]=\"href()\" [target]=\"target()\" [rel]=\"rel()\" [class]=\"styleClass()\">\n @for (child of children(); track child) {\n <ng-container [kkComponentOutlet]=\"child\" />\n }\n </a>\n `,\n})\nexport class LinkComponent {\n href = input<string>();\n target = input<string>();\n rel = input<string>();\n styleClass = input<string>();\n children = input<ComponentId[]>();\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { input, viewChild, afterNextRender, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
+
import { ComponentOutletDirective } from './kaskad-angular.mjs';
|
|
4
|
+
|
|
5
|
+
class PopoverComponent {
|
|
6
|
+
styleClass = input(...(ngDevMode ? [undefined, { debugName: "styleClass" }] : []));
|
|
7
|
+
content = input(null, ...(ngDevMode ? [{ debugName: "content" }] : []));
|
|
8
|
+
close = input(...(ngDevMode ? [undefined, { debugName: "close" }] : []));
|
|
9
|
+
mode = input('auto', ...(ngDevMode ? [{ debugName: "mode" }] : []));
|
|
10
|
+
anchor = input(null, ...(ngDevMode ? [{ debugName: "anchor" }] : []));
|
|
11
|
+
positionArea = input(null, ...(ngDevMode ? [{ debugName: "positionArea" }] : []));
|
|
12
|
+
popover = viewChild('popover', ...(ngDevMode ? [{ debugName: "popover" }] : []));
|
|
13
|
+
constructor() {
|
|
14
|
+
afterNextRender(() => {
|
|
15
|
+
this.popover()?.nativeElement.showPopover();
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
onToggle(event) {
|
|
19
|
+
if (event.newState === 'closed') {
|
|
20
|
+
this.close()?.execute();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: PopoverComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
24
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.1.3", type: PopoverComponent, isStandalone: true, selector: "kk-popover", inputs: { styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null }, close: { classPropertyName: "close", publicName: "close", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, anchor: { classPropertyName: "anchor", publicName: "anchor", isSignal: true, isRequired: false, transformFunction: null }, positionArea: { classPropertyName: "positionArea", publicName: "positionArea", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.display": "\"contents\"" } }, viewQueries: [{ propertyName: "popover", first: true, predicate: ["popover"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
25
|
+
<div
|
|
26
|
+
#popover
|
|
27
|
+
[attr.popover]="mode()"
|
|
28
|
+
[class]="styleClass()"
|
|
29
|
+
[style.position-anchor]="anchor()"
|
|
30
|
+
[style.position-area]="positionArea()"
|
|
31
|
+
[style.margin]="anchor() ? '0' : null"
|
|
32
|
+
(toggle)="onToggle($event)"
|
|
33
|
+
>
|
|
34
|
+
<ng-container [kkComponentOutlet]="content()" />
|
|
35
|
+
</div>
|
|
36
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: ComponentOutletDirective, selector: "[kkComponentOutlet]", inputs: ["kkComponentOutlet", "elementInjector"], outputs: ["kkComponentOutletChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
37
|
+
}
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: PopoverComponent, decorators: [{
|
|
39
|
+
type: Component,
|
|
40
|
+
args: [{
|
|
41
|
+
selector: 'kk-popover',
|
|
42
|
+
imports: [ComponentOutletDirective],
|
|
43
|
+
host: {
|
|
44
|
+
'[style.display]': '"contents"',
|
|
45
|
+
},
|
|
46
|
+
template: `
|
|
47
|
+
<div
|
|
48
|
+
#popover
|
|
49
|
+
[attr.popover]="mode()"
|
|
50
|
+
[class]="styleClass()"
|
|
51
|
+
[style.position-anchor]="anchor()"
|
|
52
|
+
[style.position-area]="positionArea()"
|
|
53
|
+
[style.margin]="anchor() ? '0' : null"
|
|
54
|
+
(toggle)="onToggle($event)"
|
|
55
|
+
>
|
|
56
|
+
<ng-container [kkComponentOutlet]="content()" />
|
|
57
|
+
</div>
|
|
58
|
+
`,
|
|
59
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
60
|
+
}]
|
|
61
|
+
}], ctorParameters: () => [], propDecorators: { styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: false }] }], close: [{ type: i0.Input, args: [{ isSignal: true, alias: "close", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], anchor: [{ type: i0.Input, args: [{ isSignal: true, alias: "anchor", required: false }] }], positionArea: [{ type: i0.Input, args: [{ isSignal: true, alias: "positionArea", required: false }] }], popover: [{ type: i0.ViewChild, args: ['popover', { isSignal: true }] }] } });
|
|
62
|
+
|
|
63
|
+
export { PopoverComponent };
|
|
64
|
+
//# sourceMappingURL=kaskad-angular-popover.component-B_5AEt8L.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kaskad-angular-popover.component-B_5AEt8L.mjs","sources":["../../../../libs/angular/src/lib/plugins/browser/popover.component.ts"],"sourcesContent":["import { CommandNodeViewModel } from '@kaskad/component-tree';\nimport { ComponentId } from '@kaskad/core';\nimport { afterNextRender, ChangeDetectionStrategy, Component, ElementRef, input, viewChild } from '@angular/core';\n\nimport { ComponentOutletDirective } from '../../component-outlet.directive';\n\n@Component({\n selector: 'kk-popover',\n imports: [ComponentOutletDirective],\n host: {\n '[style.display]': '\"contents\"',\n },\n template: `\n <div\n #popover\n [attr.popover]=\"mode()\"\n [class]=\"styleClass()\"\n [style.position-anchor]=\"anchor()\"\n [style.position-area]=\"positionArea()\"\n [style.margin]=\"anchor() ? '0' : null\"\n (toggle)=\"onToggle($event)\"\n >\n <ng-container [kkComponentOutlet]=\"content()\" />\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PopoverComponent {\n styleClass = input<string>();\n content = input<ComponentId | null>(null);\n close = input<CommandNodeViewModel>();\n mode = input<string>('auto');\n anchor = input<string | null>(null);\n positionArea = input<string | null>(null);\n\n popover = viewChild<ElementRef<HTMLElement>>('popover');\n\n constructor() {\n afterNextRender(() => {\n this.popover()?.nativeElement.showPopover();\n });\n }\n\n onToggle(event: ToggleEvent): void {\n if (event.newState === 'closed') {\n this.close()?.execute();\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kaskad-angular-ref-space.component-DzwKtvwe.mjs","sources":["../../../../libs/angular/src/lib/
|
|
1
|
+
{"version":3,"file":"kaskad-angular-ref-space.component-DzwKtvwe.mjs","sources":["../../../../libs/angular/src/lib/plugins/sys/ref-space.component.ts"],"sourcesContent":["import { ComponentId } from '@kaskad/core';\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { ComponentOutletDirective } from '../../component-outlet.directive';\n\n@Component({\n selector: 'kk-sys-ref-space',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.display]': '\"contents\"',\n },\n template: ` <ng-container [kkComponentOutlet]=\"content()\" /> `,\n imports: [ComponentOutletDirective],\n})\nexport class RefSpaceComponent {\n content = input<ComponentId | null>(null);\n}\n"],"names":[],"mappings":";;;;MAca,iBAAiB,CAAA;AAC5B,IAAA,OAAO,GAAG,KAAK,CAAqB,IAAI,mDAAC;uGAD9B,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAHlB,CAAA,kDAAA,CAAoD,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpD,wBAAwB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEvB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAT7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;oBAC5B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,iBAAiB,EAAE,YAAY;AAChC,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,kDAAA,CAAoD;oBAC9D,OAAO,EAAE,CAAC,wBAAwB,CAAC;AACpC,iBAAA;;;;;"}
|
|
@@ -1,27 +1,53 @@
|
|
|
1
|
-
import { ComponentStore, componentInstanceMap, unfoldNodeSchema as unfoldNodeSchema$1, createRootNode, activateNode, DefinitionStore } from '@kaskad/core';
|
|
1
|
+
import { ComponentStore, componentInstanceMap, unfoldNodeSchema as unfoldNodeSchema$1, createRootNode, activateNode, sys, common, browser, forms, DefinitionStore, registerPlugin, initRuntime } from '@kaskad/core';
|
|
2
2
|
import { reaction, comparer } from 'mobx';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { input, Directive,
|
|
5
|
-
import { log } from '@kaskad/config';
|
|
4
|
+
import { input, Directive, inject, ElementRef, NgZone, DestroyRef, Injectable, model, ViewContainerRef, EnvironmentInjector, effect, Injector, createComponent, signal, inputBinding, isSignal, runInInjectionContext, computed, untracked, makeEnvironmentProviders, provideEnvironmentInitializer } from '@angular/core';
|
|
6
5
|
import { templateRegistry, unfoldNodeSchema, loadTemplates } from '@kaskad/schema';
|
|
7
6
|
import { ComponentTreeApi } from '@kaskad/component-tree';
|
|
7
|
+
import { log } from '@kaskad/config';
|
|
8
|
+
|
|
9
|
+
class AnimatedDirective {
|
|
10
|
+
animationEnd = input(...(ngDevMode ? [undefined, { debugName: "animationEnd" }] : []));
|
|
11
|
+
transitionEnd = input(...(ngDevMode ? [undefined, { debugName: "transitionEnd" }] : []));
|
|
12
|
+
onAnimationEnd() {
|
|
13
|
+
this.animationEnd()?.execute();
|
|
14
|
+
}
|
|
15
|
+
onTransitionEnd() {
|
|
16
|
+
this.transitionEnd()?.execute();
|
|
17
|
+
}
|
|
18
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AnimatedDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
19
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.3", type: AnimatedDirective, isStandalone: true, selector: "[kkAnimated]", inputs: { animationEnd: { classPropertyName: "animationEnd", publicName: "animationEnd", isSignal: true, isRequired: false, transformFunction: null }, transitionEnd: { classPropertyName: "transitionEnd", publicName: "transitionEnd", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "animationend": "onAnimationEnd()", "transitionend": "onTransitionEnd()" } }, ngImport: i0 });
|
|
20
|
+
}
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AnimatedDirective, decorators: [{
|
|
22
|
+
type: Directive,
|
|
23
|
+
args: [{
|
|
24
|
+
selector: '[kkAnimated]',
|
|
25
|
+
host: {
|
|
26
|
+
'(animationend)': 'onAnimationEnd()',
|
|
27
|
+
'(transitionend)': 'onTransitionEnd()',
|
|
28
|
+
},
|
|
29
|
+
}]
|
|
30
|
+
}], propDecorators: { animationEnd: [{ type: i0.Input, args: [{ isSignal: true, alias: "animationEnd", required: false }] }], transitionEnd: [{ type: i0.Input, args: [{ isSignal: true, alias: "transitionEnd", required: false }] }] } });
|
|
8
31
|
|
|
9
32
|
class ClickableDirective {
|
|
10
33
|
click = input.required(...(ngDevMode ? [{ debugName: "click" }] : []));
|
|
11
34
|
stopPropagation = input(false, ...(ngDevMode ? [{ debugName: "stopPropagation" }] : []));
|
|
35
|
+
contextMenu = input(...(ngDevMode ? [undefined, { debugName: "contextMenu" }] : []));
|
|
12
36
|
handleClick(event) {
|
|
13
37
|
if (this.stopPropagation()) {
|
|
14
38
|
event.stopPropagation();
|
|
15
39
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
40
|
+
this.click().execute();
|
|
41
|
+
}
|
|
42
|
+
handleContextMenu(event) {
|
|
43
|
+
const cmd = this.contextMenu();
|
|
44
|
+
if (!cmd)
|
|
45
|
+
return;
|
|
46
|
+
event.preventDefault();
|
|
47
|
+
cmd.execute();
|
|
22
48
|
}
|
|
23
49
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClickableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
24
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.3", type: ClickableDirective, isStandalone: true, selector: "[kkClickable]", inputs: { click: { classPropertyName: "click", publicName: "click", isSignal: true, isRequired: true, transformFunction: null }, stopPropagation: { classPropertyName: "stopPropagation", publicName: "stopPropagation", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "handleClick($event)" }, styleAttribute: "cursor: pointer" }, ngImport: i0 });
|
|
50
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.3", type: ClickableDirective, isStandalone: true, selector: "[kkClickable]", inputs: { click: { classPropertyName: "click", publicName: "click", isSignal: true, isRequired: true, transformFunction: null }, stopPropagation: { classPropertyName: "stopPropagation", publicName: "stopPropagation", isSignal: true, isRequired: false, transformFunction: null }, contextMenu: { classPropertyName: "contextMenu", publicName: "contextMenu", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "handleClick($event)", "contextmenu": "handleContextMenu($event)" }, styleAttribute: "cursor: pointer" }, ngImport: i0 });
|
|
25
51
|
}
|
|
26
52
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClickableDirective, decorators: [{
|
|
27
53
|
type: Directive,
|
|
@@ -29,10 +55,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
29
55
|
selector: '[kkClickable]',
|
|
30
56
|
host: {
|
|
31
57
|
'(click)': 'handleClick($event)',
|
|
58
|
+
'(contextmenu)': 'handleContextMenu($event)',
|
|
32
59
|
style: 'cursor: pointer',
|
|
33
60
|
},
|
|
34
61
|
}]
|
|
35
|
-
}], propDecorators: { click: [{ type: i0.Input, args: [{ isSignal: true, alias: "click", required: true }] }], stopPropagation: [{ type: i0.Input, args: [{ isSignal: true, alias: "stopPropagation", required: false }] }] } });
|
|
62
|
+
}], propDecorators: { click: [{ type: i0.Input, args: [{ isSignal: true, alias: "click", required: true }] }], stopPropagation: [{ type: i0.Input, args: [{ isSignal: true, alias: "stopPropagation", required: false }] }], contextMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "contextMenu", required: false }] }] } });
|
|
36
63
|
|
|
37
64
|
class FocusableDirective {
|
|
38
65
|
tabIndex = input(0, ...(ngDevMode ? [{ debugName: "tabIndex" }] : []));
|
|
@@ -54,6 +81,122 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
54
81
|
}]
|
|
55
82
|
}], propDecorators: { tabIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabIndex", required: false }] }], blur: [{ type: i0.Input, args: [{ isSignal: true, alias: "blur", required: false }] }] } });
|
|
56
83
|
|
|
84
|
+
class HoverableDirective {
|
|
85
|
+
mouseEnter = input(...(ngDevMode ? [undefined, { debugName: "mouseEnter" }] : []));
|
|
86
|
+
mouseLeave = input(...(ngDevMode ? [undefined, { debugName: "mouseLeave" }] : []));
|
|
87
|
+
onMouseEnter() {
|
|
88
|
+
this.mouseEnter()?.execute();
|
|
89
|
+
}
|
|
90
|
+
onMouseLeave() {
|
|
91
|
+
this.mouseLeave()?.execute();
|
|
92
|
+
}
|
|
93
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: HoverableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
94
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.3", type: HoverableDirective, isStandalone: true, selector: "[kkHoverable]", inputs: { mouseEnter: { classPropertyName: "mouseEnter", publicName: "mouseEnter", isSignal: true, isRequired: false, transformFunction: null }, mouseLeave: { classPropertyName: "mouseLeave", publicName: "mouseLeave", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()" } }, ngImport: i0 });
|
|
95
|
+
}
|
|
96
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: HoverableDirective, decorators: [{
|
|
97
|
+
type: Directive,
|
|
98
|
+
args: [{
|
|
99
|
+
selector: '[kkHoverable]',
|
|
100
|
+
host: {
|
|
101
|
+
'(mouseenter)': 'onMouseEnter()',
|
|
102
|
+
'(mouseleave)': 'onMouseLeave()',
|
|
103
|
+
},
|
|
104
|
+
}]
|
|
105
|
+
}], propDecorators: { mouseEnter: [{ type: i0.Input, args: [{ isSignal: true, alias: "mouseEnter", required: false }] }], mouseLeave: [{ type: i0.Input, args: [{ isSignal: true, alias: "mouseLeave", required: false }] }] } });
|
|
106
|
+
|
|
107
|
+
class KeyListenerDirective {
|
|
108
|
+
keyDown = input(...(ngDevMode ? [undefined, { debugName: "keyDown" }] : []));
|
|
109
|
+
keyUp = input(...(ngDevMode ? [undefined, { debugName: "keyUp" }] : []));
|
|
110
|
+
onKeyDown(event) {
|
|
111
|
+
this.keyDown()?.execute(event.key);
|
|
112
|
+
}
|
|
113
|
+
onKeyUp(event) {
|
|
114
|
+
this.keyUp()?.execute(event.key);
|
|
115
|
+
}
|
|
116
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: KeyListenerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
117
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.3", type: KeyListenerDirective, isStandalone: true, selector: "[kkKeyListener]", inputs: { keyDown: { classPropertyName: "keyDown", publicName: "keyDown", isSignal: true, isRequired: false, transformFunction: null }, keyUp: { classPropertyName: "keyUp", publicName: "keyUp", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "keydown": "onKeyDown($event)", "keyup": "onKeyUp($event)" } }, ngImport: i0 });
|
|
118
|
+
}
|
|
119
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: KeyListenerDirective, decorators: [{
|
|
120
|
+
type: Directive,
|
|
121
|
+
args: [{
|
|
122
|
+
selector: '[kkKeyListener]',
|
|
123
|
+
host: {
|
|
124
|
+
'(keydown)': 'onKeyDown($event)',
|
|
125
|
+
'(keyup)': 'onKeyUp($event)',
|
|
126
|
+
},
|
|
127
|
+
}]
|
|
128
|
+
}], propDecorators: { keyDown: [{ type: i0.Input, args: [{ isSignal: true, alias: "keyDown", required: false }] }], keyUp: [{ type: i0.Input, args: [{ isSignal: true, alias: "keyUp", required: false }] }] } });
|
|
129
|
+
|
|
130
|
+
class ResizableDirective {
|
|
131
|
+
resize = input(...(ngDevMode ? [undefined, { debugName: "resize" }] : []));
|
|
132
|
+
constructor() {
|
|
133
|
+
const el = inject(ElementRef);
|
|
134
|
+
const zone = inject(NgZone);
|
|
135
|
+
const destroyRef = inject(DestroyRef);
|
|
136
|
+
const observer = zone.runOutsideAngular(() => new ResizeObserver(() => {
|
|
137
|
+
this.resize()?.execute();
|
|
138
|
+
}));
|
|
139
|
+
observer.observe(el.nativeElement);
|
|
140
|
+
destroyRef.onDestroy(() => observer.disconnect());
|
|
141
|
+
}
|
|
142
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ResizableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
143
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.3", type: ResizableDirective, isStandalone: true, selector: "[kkResizable]", inputs: { resize: { classPropertyName: "resize", publicName: "resize", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
|
|
144
|
+
}
|
|
145
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ResizableDirective, decorators: [{
|
|
146
|
+
type: Directive,
|
|
147
|
+
args: [{
|
|
148
|
+
selector: '[kkResizable]',
|
|
149
|
+
}]
|
|
150
|
+
}], ctorParameters: () => [], propDecorators: { resize: [{ type: i0.Input, args: [{ isSignal: true, alias: "resize", required: false }] }] } });
|
|
151
|
+
|
|
152
|
+
class ScrollableDirective {
|
|
153
|
+
scroll = input(...(ngDevMode ? [undefined, { debugName: "scroll" }] : []));
|
|
154
|
+
onScroll() {
|
|
155
|
+
this.scroll()?.execute();
|
|
156
|
+
}
|
|
157
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ScrollableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
158
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.3", type: ScrollableDirective, isStandalone: true, selector: "[kkScrollable]", inputs: { scroll: { classPropertyName: "scroll", publicName: "scroll", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "scroll": "onScroll()" } }, ngImport: i0 });
|
|
159
|
+
}
|
|
160
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ScrollableDirective, decorators: [{
|
|
161
|
+
type: Directive,
|
|
162
|
+
args: [{
|
|
163
|
+
selector: '[kkScrollable]',
|
|
164
|
+
host: {
|
|
165
|
+
'(scroll)': 'onScroll()',
|
|
166
|
+
},
|
|
167
|
+
}]
|
|
168
|
+
}], propDecorators: { scroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "scroll", required: false }] }] } });
|
|
169
|
+
|
|
170
|
+
class VisibleDirective {
|
|
171
|
+
visible = input(...(ngDevMode ? [undefined, { debugName: "visible" }] : []));
|
|
172
|
+
invisible = input(...(ngDevMode ? [undefined, { debugName: "invisible" }] : []));
|
|
173
|
+
constructor() {
|
|
174
|
+
const el = inject(ElementRef);
|
|
175
|
+
const zone = inject(NgZone);
|
|
176
|
+
const destroyRef = inject(DestroyRef);
|
|
177
|
+
const observer = zone.runOutsideAngular(() => new IntersectionObserver((entries) => {
|
|
178
|
+
for (const entry of entries) {
|
|
179
|
+
if (entry.isIntersecting) {
|
|
180
|
+
this.visible()?.execute();
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
this.invisible()?.execute();
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}));
|
|
187
|
+
observer.observe(el.nativeElement);
|
|
188
|
+
destroyRef.onDestroy(() => observer.disconnect());
|
|
189
|
+
}
|
|
190
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: VisibleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
191
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.3", type: VisibleDirective, isStandalone: true, selector: "[kkVisible]", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, invisible: { classPropertyName: "invisible", publicName: "invisible", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
|
|
192
|
+
}
|
|
193
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: VisibleDirective, decorators: [{
|
|
194
|
+
type: Directive,
|
|
195
|
+
args: [{
|
|
196
|
+
selector: '[kkVisible]',
|
|
197
|
+
}]
|
|
198
|
+
}], ctorParameters: () => [], propDecorators: { visible: [{ type: i0.Input, args: [{ isSignal: true, alias: "visible", required: false }] }], invisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "invisible", required: false }] }] } });
|
|
199
|
+
|
|
57
200
|
class ComponentRegistry {
|
|
58
201
|
components = {
|
|
59
202
|
default: () => import('./kaskad-angular-default.component-C-67t747.mjs').then((m) => m.DefaultComponent),
|
|
@@ -67,8 +210,17 @@ class ComponentRegistry {
|
|
|
67
210
|
'forms.CustomInput': () => import('./kaskad-angular-custom-input.component-BAFEfDxO.mjs').then((m) => m.CustomInputComponent),
|
|
68
211
|
'browser.Clickable': { directive: ClickableDirective },
|
|
69
212
|
'browser.Focusable': { directive: FocusableDirective },
|
|
213
|
+
'browser.Hoverable': { directive: HoverableDirective },
|
|
214
|
+
'browser.KeyListener': { directive: KeyListenerDirective },
|
|
215
|
+
'browser.Scrollable': { directive: ScrollableDirective },
|
|
216
|
+
'browser.Animated': { directive: AnimatedDirective },
|
|
217
|
+
'browser.Visible': { directive: VisibleDirective },
|
|
218
|
+
'browser.Resizable': { directive: ResizableDirective },
|
|
70
219
|
'browser.Element': () => import('./kaskad-angular-element.component-3CvZ-N6y.mjs').then((m) => m.ElementComponent),
|
|
71
|
-
'browser.Dialog': () => import('./kaskad-angular-dialog.component-
|
|
220
|
+
'browser.Dialog': () => import('./kaskad-angular-dialog.component-DWkOjeop.mjs').then((m) => m.DialogComponent),
|
|
221
|
+
'browser.Popover': () => import('./kaskad-angular-popover.component-B_5AEt8L.mjs').then((m) => m.PopoverComponent),
|
|
222
|
+
'browser.Link': () => import('./kaskad-angular-link.component-0HImxTfB.mjs').then((m) => m.LinkComponent),
|
|
223
|
+
'browser.Image': () => import('./kaskad-angular-image.component-BmJZNGL9.mjs').then((m) => m.ImageComponent),
|
|
72
224
|
};
|
|
73
225
|
setAll(entries) {
|
|
74
226
|
for (const [componentType, component] of Object.entries(entries)) {
|
|
@@ -191,7 +343,7 @@ class ComponentOutletDirective {
|
|
|
191
343
|
compRef.onDestroy(() => componentInstanceMap.delete(model.id));
|
|
192
344
|
// Input & metadata wiring
|
|
193
345
|
compRef.location.nativeElement.setAttribute('data-component-id', model.id);
|
|
194
|
-
compRef.location.nativeElement.setAttribute('data-
|
|
346
|
+
compRef.location.nativeElement.setAttribute('data-ref-space-id', model.refSpaceId);
|
|
195
347
|
return compRef;
|
|
196
348
|
}
|
|
197
349
|
createPropsBindings(model) {
|
|
@@ -419,6 +571,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
419
571
|
}]
|
|
420
572
|
}], ctorParameters: () => [], propDecorators: { src: [{ type: i0.Input, args: [{ isSignal: true, alias: "kkViewOutlet", required: true }] }], props: [{ type: i0.Input, args: [{ isSignal: true, alias: "props", required: false }] }] } });
|
|
421
573
|
|
|
574
|
+
function injectCommand(command) {
|
|
575
|
+
const injector = inject(EnvironmentInjector);
|
|
576
|
+
return {
|
|
577
|
+
execute: (...args) => runInInjectionContext(injector, () => command.execute(...args)),
|
|
578
|
+
};
|
|
579
|
+
}
|
|
580
|
+
function injectFunction(definition) {
|
|
581
|
+
const injector = inject(EnvironmentInjector);
|
|
582
|
+
return {
|
|
583
|
+
...definition,
|
|
584
|
+
execute: (...args) => runInInjectionContext(injector, () => definition.execute(...args)),
|
|
585
|
+
};
|
|
586
|
+
}
|
|
587
|
+
function injectFunctions(record) {
|
|
588
|
+
return Object.fromEntries(Object.entries(record).map(([name, fn]) => [name, fn.kind === 'imperative' ? injectFunction(fn) : fn]));
|
|
589
|
+
}
|
|
590
|
+
function injectCommands(record) {
|
|
591
|
+
return Object.fromEntries(Object.entries(record).map(([name, cmd]) => [name, injectCommand(cmd)]));
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
const builtinPlugins = [sys, common, browser, forms];
|
|
422
595
|
function provideKaskad(config) {
|
|
423
596
|
return makeEnvironmentProviders([
|
|
424
597
|
{ provide: ComponentStore, useValue: ComponentStore.getInstance() },
|
|
@@ -427,9 +600,24 @@ function provideKaskad(config) {
|
|
|
427
600
|
if (config?.logLevel) {
|
|
428
601
|
log.level = config.logLevel;
|
|
429
602
|
}
|
|
603
|
+
for (const plugin of config?.plugins ?? builtinPlugins) {
|
|
604
|
+
// Wrap commands and imperative functions with Angular DI context
|
|
605
|
+
const wrappedPlugin = { ...plugin };
|
|
606
|
+
if (plugin.commands) {
|
|
607
|
+
wrappedPlugin.commands = injectCommands(plugin.commands);
|
|
608
|
+
}
|
|
609
|
+
if (plugin.functions) {
|
|
610
|
+
wrappedPlugin.functions = injectFunctions(plugin.functions);
|
|
611
|
+
}
|
|
612
|
+
registerPlugin(wrappedPlugin);
|
|
613
|
+
if (plugin.components) {
|
|
614
|
+
inject(ComponentRegistry).setAll(plugin.components);
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
initRuntime();
|
|
618
|
+
// Expose stores globally for debugging
|
|
430
619
|
const store = inject(ComponentStore);
|
|
431
620
|
const defStore = inject(DefinitionStore);
|
|
432
|
-
// Expose stores globally for debugging
|
|
433
621
|
if (typeof window !== 'undefined') {
|
|
434
622
|
const global = window;
|
|
435
623
|
global.store = store;
|
|
@@ -443,5 +631,5 @@ function provideKaskad(config) {
|
|
|
443
631
|
* Generated bundle index. Do not edit.
|
|
444
632
|
*/
|
|
445
633
|
|
|
446
|
-
export { ComponentOutletDirective, ComponentRegistry, ViewOutletDirective, isLazyComponent, provideKaskad };
|
|
634
|
+
export { ComponentOutletDirective, ComponentRegistry, ViewOutletDirective, injectCommand, injectCommands, injectFunction, injectFunctions, isLazyComponent, provideKaskad };
|
|
447
635
|
//# sourceMappingURL=kaskad-angular.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kaskad-angular.mjs","sources":["../../../../libs/angular/src/lib/directives/clickable.directive.ts","../../../../libs/angular/src/lib/directives/focusable.directive.ts","../../../../libs/angular/src/lib/component-registry.ts","../../../../libs/angular/src/lib/util.ts","../../../../libs/angular/src/lib/component-outlet.directive.ts","../../../../libs/angular/src/lib/signal-kaskad-sync.ts","../../../../libs/angular/src/lib/view-outlet.directive.ts","../../../../libs/angular/src/lib/provider.ts","../../../../libs/angular/src/kaskad-angular.ts"],"sourcesContent":["import { CommandNodeViewModel } from '@kaskad/component-tree';\nimport { log } from '@kaskad/config';\nimport { Directive, input } from '@angular/core';\n\n@Directive({\n selector: '[kkClickable]',\n host: {\n '(click)': 'handleClick($event)',\n style: 'cursor: pointer',\n },\n})\nexport class ClickableDirective {\n click = input.required<CommandNodeViewModel>();\n stopPropagation = input<boolean>(false);\n\n handleClick(event: Event) {\n if (this.stopPropagation()) {\n event.stopPropagation();\n }\n log.trace('Click handler executing');\n this.click()\n .execute()\n .catch((error: unknown) => {\n log.error('Click handler failed:', error);\n });\n }\n}\n","import { CommandNodeViewModel } from '@kaskad/component-tree';\nimport { Directive, input } from '@angular/core';\n\n@Directive({\n selector: '[kkFocusable]',\n host: {\n '[tabIndex]': 'tabIndex()',\n '(blur)': 'onBlur()',\n },\n})\nexport class FocusableDirective {\n tabIndex = input<number>(0);\n blur = input<CommandNodeViewModel>();\n\n onBlur() {\n this.blur()?.execute();\n }\n}\n","import { Injectable, Type } from '@angular/core';\n\nimport { ClickableDirective } from './directives/clickable.directive';\nimport { FocusableDirective } from './directives/focusable.directive';\n\ntype LazyComponent = () => Promise<Type<unknown>>;\n\nexport type ComponentEntry =\n | Type<unknown> // eager Angular component\n | LazyComponent // lazy Angular component\n | { directive: Type<unknown> }; // Angular directive\n\n@Injectable({ providedIn: 'root' })\nexport class ComponentRegistry {\n private components: Record<string, ComponentEntry> = {\n default: () => import('./components/default.component').then((m) => m.DefaultComponent),\n\n 'sys.Box': () => import('./components/sys/box.component').then((m) => m.BoxComponent),\n 'sys.Group': () => import('./components/sys/group.component').then((m) => m.GroupComponent),\n 'sys.RefSpace': () => import('./components/sys/ref-space.component').then((m) => m.RefSpaceComponent),\n 'sys.Facade': () => import('./components/sys/facade.component').then((m) => m.FacadeComponent),\n\n 'forms.InputGroup': () => import('./components/forms/input-group.component').then((m) => m.InputGroupComponent),\n 'forms.InputArray': () => import('./components/forms/input-array.component').then((m) => m.InputArrayComponent),\n 'forms.BooleanInputGroup': () =>\n import('./components/forms/boolean-input-group.component').then((m) => m.BooleanInputGroupComponent),\n 'forms.CustomInput': () => import('./components/forms/custom-input.component').then((m) => m.CustomInputComponent),\n\n 'browser.Clickable': { directive: ClickableDirective },\n 'browser.Focusable': { directive: FocusableDirective },\n 'browser.Element': () => import('./components/browser/element.component').then((m) => m.ElementComponent),\n 'browser.Dialog': () => import('./components/browser/dialog.component').then((m) => m.DialogComponent),\n };\n\n setAll(entries: Record<string, ComponentEntry>): void {\n for (const [componentType, component] of Object.entries(entries)) {\n this.set(componentType, component);\n }\n }\n\n set(type: string, component: ComponentEntry): void {\n this.components[type] = component;\n }\n\n get(type: string): ComponentEntry {\n return this.components[type] || this.components['default'];\n }\n\n getAll(): Record<string, ComponentEntry> {\n return this.components;\n }\n}\n\nexport function isLazyComponent(entry: ComponentEntry): entry is LazyComponent {\n return typeof entry === 'function' && !/^class\\s/.test(Function.prototype.toString.call(entry));\n}\n","import { AbstractNode } from '@kaskad/component-tree';\nimport { ComponentId, ValueType } from '@kaskad/core';\nimport { Type } from '@angular/core';\n\nimport type { ComponentEntry } from './component-registry';\n\nexport function isDirective(entry: ComponentEntry): entry is { directive: Type<unknown> } {\n return typeof entry === 'object' && entry !== null && 'directive' in entry;\n}\n\nexport function prepareValueToRender(node: AbstractNode<ValueType>) {\n // Filter out empty component IDs\n if (node.valueType.type === 'array' && node.valueType.item.type === 'component') {\n return (node.viewModel as ComponentId[]).filter(Boolean);\n }\n\n return node.viewModel;\n}\n","import { ComponentId, componentInstanceMap, ComponentStore, TComponent } from '@kaskad/core';\nimport { IReactionOptions, IReactionPublic, reaction } from 'mobx';\nimport {\n Binding,\n ComponentRef,\n createComponent,\n DestroyRef,\n Directive,\n effect,\n EnvironmentInjector,\n inject,\n Injector,\n input,\n inputBinding,\n model,\n NgZone,\n signal,\n Type,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ComponentRegistry, isLazyComponent } from './component-registry';\nimport { KComponent } from './types';\nimport { isDirective, prepareValueToRender } from './util';\n\n@Directive({ selector: '[kkComponentOutlet]' })\nexport class ComponentOutletDirective {\n componentId = model<ComponentId | null>(null, { alias: 'kkComponentOutlet' });\n elementInjector = input<Injector>();\n\n private readonly store = inject(ComponentStore);\n private readonly componentRegistry = inject(ComponentRegistry);\n private readonly vcr = inject(ViewContainerRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly ngZone = inject(NgZone);\n private readonly environmentInjector = inject(EnvironmentInjector);\n\n private disposers: Array<() => void> = [];\n private componentRef: ComponentRef<unknown> | null = null;\n\n constructor() {\n effect(() => {\n const id = this.componentId();\n if (!id) {\n this.clear();\n return;\n }\n\n this.ngZone.runOutsideAngular(() => {\n const rootComponent = this.store.getComponent(id);\n if (rootComponent) {\n this.renderComponent(rootComponent);\n }\n });\n });\n\n this.destroyRef.onDestroy(() => this.clear());\n }\n\n private renderComponent(component: TComponent): void {\n const { finalComponent, directives } = this.collectDirectives(component);\n\n // Clear any existing component\n if (this.componentRef) {\n this.vcr.clear();\n this.componentRef = null;\n }\n\n // Create new component\n this.componentRef = this.createComponent(finalComponent, directives);\n }\n\n private collectDirectives(component: TComponent): { finalComponent: TComponent; directives: TComponent[] } {\n const directives: TComponent[] = [];\n let current = component;\n\n while (isDirective(this.componentRegistry.get(current.componentType))) {\n directives.push(current);\n const contentId = current.getNodeValue<ComponentId>('content');\n if (!contentId) break;\n\n const contentComponent = this.store.getComponent(contentId);\n if (!contentComponent) break;\n\n current = contentComponent;\n }\n\n return { finalComponent: current, directives };\n }\n\n private createComponent(model: TComponent, directives: TComponent[] = []): ComponentRef<unknown> | null {\n const entry = this.componentRegistry.get(model.componentType);\n\n // All components should be preloaded at this point\n if (isLazyComponent(entry)) {\n throw new Error(`Component \"${model.componentType}\" is not preloaded. This is a bug in the preloading logic.`);\n }\n\n return this.mapComponentToAngular(entry as Type<KComponent>, model, directives);\n }\n\n private mapComponentToAngular(\n componentType: Type<KComponent>,\n model: TComponent,\n directives: TComponent[] = [],\n ): ComponentRef<unknown> {\n const directivesWithBindings = directives.map((d) => {\n const entry = this.componentRegistry.get(d.componentType) as { directive: Type<unknown> };\n const bindings = this.createDirectiveBindings(d);\n return { type: entry.directive, bindings };\n });\n\n // Build reactive inputs\n const bindings = this.createPropsBindings(model);\n\n const elementInjector =\n this.elementInjector() ??\n Injector.create({\n providers: [{ provide: ComponentOutletDirective, useValue: this }],\n parent: this.vcr.injector,\n });\n\n const compRef = createComponent(componentType, {\n environmentInjector: this.environmentInjector,\n elementInjector,\n directives: directivesWithBindings,\n bindings,\n });\n\n this.vcr.insert(compRef.hostView);\n\n // Bookkeeping\n componentInstanceMap.set(model.id, compRef.instance);\n compRef.onDestroy(() => componentInstanceMap.delete(model.id));\n\n // Input & metadata wiring\n compRef.location.nativeElement.setAttribute('data-component-id', model.id);\n compRef.location.nativeElement.setAttribute('data-component-scope-id', model.refSpaceId);\n\n return compRef;\n }\n\n private createPropsBindings(model: TComponent): Binding[] {\n const bindings: Binding[] = [];\n\n for (const [key, node] of model.props.entries()) {\n const s = signal(prepareValueToRender(node));\n bindings.push(inputBinding(key, s));\n\n this.addReaction(\n () => node.extractedValue,\n () => s.set(prepareValueToRender(node)),\n );\n }\n\n return bindings;\n }\n\n private createDirectiveBindings(model: TComponent): Binding[] {\n const bindings: Binding[] = [];\n\n for (const [propName, node] of model.props.entries()) {\n if (propName === 'content') continue;\n\n const directiveSignal = signal(prepareValueToRender(node));\n\n this.addReaction(\n () => node.extractedValue,\n () => directiveSignal.set(prepareValueToRender(node)),\n );\n\n bindings.push(inputBinding(propName, directiveSignal));\n }\n return bindings;\n }\n\n private clear(): void {\n this.vcr.clear();\n this.componentRef = null;\n this.disposeReactions();\n }\n\n private addReaction<T>(\n trackFn: (r: IReactionPublic) => T,\n effectFn: (value: T, prevValue?: T) => void,\n options?: IReactionOptions<T, true>,\n ): void {\n const disposer = reaction(trackFn, effectFn, options);\n this.disposers.push(disposer);\n }\n\n private disposeReactions(): void {\n this.disposers.forEach((dispose) => dispose());\n this.disposers = [];\n }\n}\n","import { ComponentTreeApi } from '@kaskad/component-tree';\nimport { log } from '@kaskad/config';\nimport { ComponentId, NodeSchema } from '@kaskad/core';\nimport { templateRegistry, unfoldNodeSchema } from '@kaskad/schema';\nimport { comparer, IReactionDisposer, IReactionOptions, IReactionPublic, reaction } from 'mobx';\nimport {\n DestroyRef,\n effect,\n inject,\n Injectable,\n Injector,\n isSignal,\n runInInjectionContext,\n Signal,\n WritableSignal,\n} from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class SignalKaskadSync {\n private injector = inject(Injector);\n private destroyRef = inject(DestroyRef);\n\n public run(rootId: ComponentId, templateUrl: string, props: Signal<Record<string, unknown>>) {\n const writableSignals = Object.entries(props()).filter(([, v]) => isSignal(v)) as [\n string,\n WritableSignal<unknown>,\n ][];\n if (!writableSignals.length) {\n return; // nothing to bind\n }\n\n const template = templateRegistry.get(templateUrl);\n if (!template) {\n log.error('failed to setup two-way binding, unable to find template in registry', templateUrl);\n return;\n }\n\n const component = ComponentTreeApi.findComponent(rootId, ':' + template.recipe.componentType);\n if (!component) {\n log.error(\n 'failed to setup two-way binding, unable to find root schema component:',\n template.recipe.componentType,\n );\n return;\n }\n\n const disposers: IReactionDisposer[] = [];\n for (const [key, signal] of writableSignals) {\n const contract = template.recipe['contract'] as Record<string, string> | undefined;\n const entry = contract?.[key];\n if (!entry) {\n log.warn(`unable to find contract entry for signal \"${key}\" in template ${templateUrl}`);\n continue;\n }\n\n const node = component.getNode(entry);\n const schema = unfoldNodeSchema(signal(), node.valueType, node.position.path);\n if (this.hasComponentOrComputation(schema)) {\n log.warn(`skipping signal/kaskad sync for \"${key}\" as it contains component or computation schema`);\n continue;\n }\n\n // mobx to signal\n const disposer = this.addReaction(\n () => component.getNode(entry).extractedValue,\n (v) => signal.set(v),\n { equals: comparer.structural },\n );\n\n disposers.push(disposer);\n\n // signal to mobx\n runInInjectionContext(this.injector, () => {\n let firstRun = true;\n effect(() => {\n const signalValue = signal();\n\n // skip first run as it's already handled by mobx\n if (firstRun) {\n firstRun = false;\n return;\n }\n\n ComponentTreeApi.setNodeRawSchema(component.id, entry, signalValue);\n });\n });\n }\n\n this.destroyRef.onDestroy(() => {\n disposers.forEach((dispose) => dispose());\n });\n }\n\n private addReaction<T>(\n trackFn: (r: IReactionPublic) => T,\n effectFn: (value: T, prevValue?: T) => void,\n options?: IReactionOptions<T, boolean>,\n ): IReactionDisposer {\n return reaction(trackFn, effectFn, options);\n }\n\n private hasComponentOrComputation(schema: NodeSchema): boolean {\n if (schema.valueType.type === 'component' || schema.computation !== null) {\n return true;\n }\n\n if (!schema.value) {\n return false;\n }\n\n if (schema.valueType.type === 'object') {\n const objectValue = schema.value as Record<string, NodeSchema>;\n for (const childSchema of Object.values(objectValue || {})) {\n if (this.hasComponentOrComputation(childSchema)) {\n return true;\n }\n }\n }\n if (schema.valueType.type === 'array') {\n const arrayValue = schema.value as NodeSchema[];\n for (const childSchema of arrayValue || []) {\n if (this.hasComponentOrComputation(childSchema)) {\n return true;\n }\n }\n }\n if (schema.valueType.type === 'map') {\n const mapValue = schema.value as Record<string, NodeSchema>;\n for (const childSchema of Object.values(mapValue || {})) {\n if (this.hasComponentOrComputation(childSchema)) {\n return true;\n }\n }\n }\n\n return false;\n }\n}\n","import {\n activateNode,\n ComponentId,\n ComponentRecipe,\n ComponentStore,\n createRootNode,\n unfoldNodeSchema,\n} from '@kaskad/core';\nimport { loadTemplates, templateRegistry } from '@kaskad/schema';\nimport { computed, DestroyRef, Directive, effect, inject, input, isSignal, untracked } from '@angular/core';\n\nimport { ComponentOutletDirective } from './component-outlet.directive';\nimport { ComponentRegistry, isLazyComponent } from './component-registry';\nimport { SignalKaskadSync } from './signal-kaskad-sync';\nimport { isDirective } from './util';\n\n@Directive({\n selector: '[kkViewOutlet]',\n exportAs: 'outlet',\n hostDirectives: [\n {\n directive: ComponentOutletDirective,\n inputs: ['elementInjector'],\n },\n ],\n})\nexport class ViewOutletDirective {\n static counter = 0;\n src = input.required<string>({ alias: 'kkViewOutlet' });\n props = input<Record<string, unknown>>({});\n refSpaceId = computed(() => this.src() + '-' + ViewOutletDirective.counter++);\n rawSchema = computed<ComponentRecipe>(() => {\n const content: Record<string, unknown> = {\n templateUrl: this.src(),\n };\n\n untracked(() => {\n for (const [key, value] of Object.entries(this.props())) {\n content[key] = isSignal(value) ? untracked(() => value()) : value;\n }\n });\n\n return {\n componentType: 'sys.Facade',\n content,\n };\n });\n private destroyRef = inject(DestroyRef);\n private store = inject(ComponentStore);\n private componentOutlet = inject(ComponentOutletDirective);\n private componentRegistry = inject(ComponentRegistry);\n private signalKaskadSync = inject(SignalKaskadSync);\n private currentComponentId: ComponentId | null = null;\n\n constructor() {\n effect(() => this.processRawSchema(this.rawSchema()));\n\n this.destroyRef.onDestroy(() => {\n if (this.currentComponentId) {\n this.store.removeComponent(this.currentComponentId);\n }\n });\n }\n\n private async processRawSchema(rawSchema: ComponentRecipe) {\n await this.preloadComponentTypes(new Set<string>(['sys.Box', 'sys.Group', 'sys.RefSpace', 'sys.Facade']));\n\n await loadTemplates(rawSchema);\n\n const componentTypes = templateRegistry.getAggregatedComponentTypes(this.src());\n await this.preloadComponentTypes(componentTypes);\n\n const schema = unfoldNodeSchema(rawSchema, { type: 'component' });\n const root = createRootNode(this.refSpaceId(), schema, null, null, this.src());\n\n activateNode(root);\n\n const rootId = root.extractedValue as ComponentId;\n\n // Clean up previous component if schema changes\n if (this.currentComponentId && this.currentComponentId !== rootId) {\n this.store.removeComponent(this.currentComponentId);\n }\n\n this.currentComponentId = rootId;\n\n this.signalKaskadSync.run(rootId, this.src(), this.props);\n this.componentOutlet.componentId.set(rootId);\n }\n\n private async preloadComponentTypes(componentTypes: Set<string>): Promise<void> {\n const promises: Promise<void>[] = [];\n\n for (const componentType of componentTypes) {\n const entry = this.componentRegistry.get(componentType);\n\n // Skip directive (?)\n if (isDirective(entry)) {\n continue;\n }\n\n // Only preload if it's still lazy\n if (isLazyComponent(entry)) {\n promises.push(\n entry().then((component) => {\n // Replace lazy entry with loaded component in registry\n this.componentRegistry.set(componentType, component);\n }),\n );\n }\n }\n\n if (promises.length > 0) {\n await Promise.all(promises);\n }\n }\n}\n","import { log, LogLevel } from '@kaskad/config';\nimport { ComponentStore, DefinitionStore } from '@kaskad/core';\nimport { EnvironmentProviders, inject, makeEnvironmentProviders, provideEnvironmentInitializer } from '@angular/core';\n\nexport function provideKaskad(config?: { logLevel?: LogLevel }): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: ComponentStore, useValue: ComponentStore.getInstance() },\n { provide: DefinitionStore, useValue: DefinitionStore.getInstance() },\n\n provideEnvironmentInitializer(() => {\n if (config?.logLevel) {\n log.level = config.logLevel;\n }\n\n const store = inject(ComponentStore);\n const defStore = inject(DefinitionStore);\n\n // Expose stores globally for debugging\n if (typeof window !== 'undefined') {\n const global = window as Window & { store?: ComponentStore; defStore?: DefinitionStore };\n global.store = store;\n global.defStore = defStore;\n }\n }),\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["unfoldNodeSchema","i1.ComponentOutletDirective"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kaskad-angular.mjs","sources":["../../../../libs/angular/src/lib/plugins/browser/animated.directive.ts","../../../../libs/angular/src/lib/plugins/browser/clickable.directive.ts","../../../../libs/angular/src/lib/plugins/browser/focusable.directive.ts","../../../../libs/angular/src/lib/plugins/browser/hoverable.directive.ts","../../../../libs/angular/src/lib/plugins/browser/key-listener.directive.ts","../../../../libs/angular/src/lib/plugins/browser/resizable.directive.ts","../../../../libs/angular/src/lib/plugins/browser/scrollable.directive.ts","../../../../libs/angular/src/lib/plugins/browser/visible.directive.ts","../../../../libs/angular/src/lib/component-registry.ts","../../../../libs/angular/src/lib/util.ts","../../../../libs/angular/src/lib/component-outlet.directive.ts","../../../../libs/angular/src/lib/signal-kaskad-sync.ts","../../../../libs/angular/src/lib/view-outlet.directive.ts","../../../../libs/angular/src/lib/inject.ts","../../../../libs/angular/src/lib/provider.ts","../../../../libs/angular/src/kaskad-angular.ts"],"sourcesContent":["import { CommandNodeViewModel } from '@kaskad/component-tree';\nimport { Directive, input } from '@angular/core';\n\n@Directive({\n selector: '[kkAnimated]',\n host: {\n '(animationend)': 'onAnimationEnd()',\n '(transitionend)': 'onTransitionEnd()',\n },\n})\nexport class AnimatedDirective {\n animationEnd = input<CommandNodeViewModel>();\n transitionEnd = input<CommandNodeViewModel>();\n\n onAnimationEnd() {\n this.animationEnd()?.execute();\n }\n\n onTransitionEnd() {\n this.transitionEnd()?.execute();\n }\n}\n","import { CommandNodeViewModel } from '@kaskad/component-tree';\nimport { Directive, input } from '@angular/core';\n\n@Directive({\n selector: '[kkClickable]',\n host: {\n '(click)': 'handleClick($event)',\n '(contextmenu)': 'handleContextMenu($event)',\n style: 'cursor: pointer',\n },\n})\nexport class ClickableDirective {\n click = input.required<CommandNodeViewModel>();\n stopPropagation = input<boolean>(false);\n contextMenu = input<CommandNodeViewModel>();\n\n handleClick(event: Event) {\n if (this.stopPropagation()) {\n event.stopPropagation();\n }\n this.click().execute();\n }\n\n handleContextMenu(event: Event) {\n const cmd = this.contextMenu();\n if (!cmd) return;\n event.preventDefault();\n cmd.execute();\n }\n}\n","import { CommandNodeViewModel } from '@kaskad/component-tree';\nimport { Directive, input } from '@angular/core';\n\n@Directive({\n selector: '[kkFocusable]',\n host: {\n '[tabIndex]': 'tabIndex()',\n '(blur)': 'onBlur()',\n },\n})\nexport class FocusableDirective {\n tabIndex = input<number>(0);\n blur = input<CommandNodeViewModel>();\n\n onBlur() {\n this.blur()?.execute();\n }\n}\n","import { CommandNodeViewModel } from '@kaskad/component-tree';\nimport { Directive, input } from '@angular/core';\n\n@Directive({\n selector: '[kkHoverable]',\n host: {\n '(mouseenter)': 'onMouseEnter()',\n '(mouseleave)': 'onMouseLeave()',\n },\n})\nexport class HoverableDirective {\n mouseEnter = input<CommandNodeViewModel>();\n mouseLeave = input<CommandNodeViewModel>();\n\n onMouseEnter() {\n this.mouseEnter()?.execute();\n }\n\n onMouseLeave() {\n this.mouseLeave()?.execute();\n }\n}\n","import { CommandNodeViewModel } from '@kaskad/component-tree';\nimport { Directive, input } from '@angular/core';\n\n@Directive({\n selector: '[kkKeyListener]',\n host: {\n '(keydown)': 'onKeyDown($event)',\n '(keyup)': 'onKeyUp($event)',\n },\n})\nexport class KeyListenerDirective {\n keyDown = input<CommandNodeViewModel>();\n keyUp = input<CommandNodeViewModel>();\n\n onKeyDown(event: KeyboardEvent) {\n this.keyDown()?.execute(event.key);\n }\n\n onKeyUp(event: KeyboardEvent) {\n this.keyUp()?.execute(event.key);\n }\n}\n","import { CommandNodeViewModel } from '@kaskad/component-tree';\nimport { DestroyRef, Directive, ElementRef, inject, input, NgZone } from '@angular/core';\n\n@Directive({\n selector: '[kkResizable]',\n})\nexport class ResizableDirective {\n resize = input<CommandNodeViewModel>();\n\n constructor() {\n const el = inject(ElementRef);\n const zone = inject(NgZone);\n const destroyRef = inject(DestroyRef);\n\n const observer = zone.runOutsideAngular(\n () =>\n new ResizeObserver(() => {\n this.resize()?.execute();\n }),\n );\n\n observer.observe(el.nativeElement);\n destroyRef.onDestroy(() => observer.disconnect());\n }\n}\n","import { CommandNodeViewModel } from '@kaskad/component-tree';\nimport { Directive, input } from '@angular/core';\n\n@Directive({\n selector: '[kkScrollable]',\n host: {\n '(scroll)': 'onScroll()',\n },\n})\nexport class ScrollableDirective {\n scroll = input<CommandNodeViewModel>();\n\n onScroll() {\n this.scroll()?.execute();\n }\n}\n","import { CommandNodeViewModel } from '@kaskad/component-tree';\nimport { DestroyRef, Directive, ElementRef, inject, input, NgZone } from '@angular/core';\n\n@Directive({\n selector: '[kkVisible]',\n})\nexport class VisibleDirective {\n visible = input<CommandNodeViewModel>();\n invisible = input<CommandNodeViewModel>();\n\n constructor() {\n const el = inject(ElementRef);\n const zone = inject(NgZone);\n const destroyRef = inject(DestroyRef);\n\n const observer = zone.runOutsideAngular(\n () =>\n new IntersectionObserver((entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n this.visible()?.execute();\n } else {\n this.invisible()?.execute();\n }\n }\n }),\n );\n\n observer.observe(el.nativeElement);\n destroyRef.onDestroy(() => observer.disconnect());\n }\n}\n","import { Injectable, Type } from '@angular/core';\n\nimport { AnimatedDirective } from './plugins/browser/animated.directive';\nimport { ClickableDirective } from './plugins/browser/clickable.directive';\nimport { FocusableDirective } from './plugins/browser/focusable.directive';\nimport { HoverableDirective } from './plugins/browser/hoverable.directive';\nimport { KeyListenerDirective } from './plugins/browser/key-listener.directive';\nimport { ResizableDirective } from './plugins/browser/resizable.directive';\nimport { ScrollableDirective } from './plugins/browser/scrollable.directive';\nimport { VisibleDirective } from './plugins/browser/visible.directive';\n\ntype LazyComponent = () => Promise<Type<unknown>>;\n\nexport type ComponentEntry =\n | Type<unknown> // eager Angular component\n | LazyComponent // lazy Angular component\n | { directive: Type<unknown> }; // Angular directive\n\n@Injectable({ providedIn: 'root' })\nexport class ComponentRegistry {\n private components: Record<string, ComponentEntry> = {\n default: () => import('./components/default.component').then((m) => m.DefaultComponent),\n\n 'sys.Box': () => import('./plugins/sys/box.component').then((m) => m.BoxComponent),\n 'sys.Group': () => import('./plugins/sys/group.component').then((m) => m.GroupComponent),\n 'sys.RefSpace': () => import('./plugins/sys/ref-space.component').then((m) => m.RefSpaceComponent),\n 'sys.Facade': () => import('./plugins/sys/facade.component').then((m) => m.FacadeComponent),\n\n 'forms.InputGroup': () => import('./plugins/forms/input-group.component').then((m) => m.InputGroupComponent),\n 'forms.InputArray': () => import('./plugins/forms/input-array.component').then((m) => m.InputArrayComponent),\n 'forms.BooleanInputGroup': () =>\n import('./plugins/forms/boolean-input-group.component').then((m) => m.BooleanInputGroupComponent),\n 'forms.CustomInput': () => import('./plugins/forms/custom-input.component').then((m) => m.CustomInputComponent),\n\n 'browser.Clickable': { directive: ClickableDirective },\n 'browser.Focusable': { directive: FocusableDirective },\n 'browser.Hoverable': { directive: HoverableDirective },\n 'browser.KeyListener': { directive: KeyListenerDirective },\n 'browser.Scrollable': { directive: ScrollableDirective },\n 'browser.Animated': { directive: AnimatedDirective },\n 'browser.Visible': { directive: VisibleDirective },\n 'browser.Resizable': { directive: ResizableDirective },\n 'browser.Element': () => import('./plugins/browser/element.component').then((m) => m.ElementComponent),\n 'browser.Dialog': () => import('./plugins/browser/dialog.component').then((m) => m.DialogComponent),\n 'browser.Popover': () => import('./plugins/browser/popover.component').then((m) => m.PopoverComponent),\n 'browser.Link': () => import('./plugins/browser/link.component').then((m) => m.LinkComponent),\n 'browser.Image': () => import('./plugins/browser/image.component').then((m) => m.ImageComponent),\n };\n\n setAll(entries: Record<string, ComponentEntry>): void {\n for (const [componentType, component] of Object.entries(entries)) {\n this.set(componentType, component);\n }\n }\n\n set(type: string, component: ComponentEntry): void {\n this.components[type] = component;\n }\n\n get(type: string): ComponentEntry {\n return this.components[type] || this.components['default'];\n }\n\n getAll(): Record<string, ComponentEntry> {\n return this.components;\n }\n}\n\nexport function isLazyComponent(entry: ComponentEntry): entry is LazyComponent {\n return typeof entry === 'function' && !/^class\\s/.test(Function.prototype.toString.call(entry));\n}\n","import { AbstractNode } from '@kaskad/component-tree';\nimport { ComponentId, ValueType } from '@kaskad/core';\nimport { Type } from '@angular/core';\n\nimport type { ComponentEntry } from './component-registry';\n\nexport function isDirective(entry: ComponentEntry): entry is { directive: Type<unknown> } {\n return typeof entry === 'object' && entry !== null && 'directive' in entry;\n}\n\nexport function prepareValueToRender(node: AbstractNode<ValueType>) {\n // Filter out empty component IDs\n if (node.valueType.type === 'array' && node.valueType.item.type === 'component') {\n return (node.viewModel as ComponentId[]).filter(Boolean);\n }\n\n return node.viewModel;\n}\n","import { ComponentId, componentInstanceMap, ComponentStore, TComponent } from '@kaskad/core';\nimport { IReactionOptions, IReactionPublic, reaction } from 'mobx';\nimport {\n Binding,\n ComponentRef,\n createComponent,\n DestroyRef,\n Directive,\n effect,\n EnvironmentInjector,\n inject,\n Injector,\n input,\n inputBinding,\n model,\n NgZone,\n signal,\n Type,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ComponentRegistry, isLazyComponent } from './component-registry';\nimport { KComponent } from './types';\nimport { isDirective, prepareValueToRender } from './util';\n\n@Directive({ selector: '[kkComponentOutlet]' })\nexport class ComponentOutletDirective {\n componentId = model<ComponentId | null>(null, { alias: 'kkComponentOutlet' });\n elementInjector = input<Injector>();\n\n private readonly store = inject(ComponentStore);\n private readonly componentRegistry = inject(ComponentRegistry);\n private readonly vcr = inject(ViewContainerRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly ngZone = inject(NgZone);\n private readonly environmentInjector = inject(EnvironmentInjector);\n\n private disposers: Array<() => void> = [];\n private componentRef: ComponentRef<unknown> | null = null;\n\n constructor() {\n effect(() => {\n const id = this.componentId();\n if (!id) {\n this.clear();\n return;\n }\n\n this.ngZone.runOutsideAngular(() => {\n const rootComponent = this.store.getComponent(id);\n if (rootComponent) {\n this.renderComponent(rootComponent);\n }\n });\n });\n\n this.destroyRef.onDestroy(() => this.clear());\n }\n\n private renderComponent(component: TComponent): void {\n const { finalComponent, directives } = this.collectDirectives(component);\n\n // Clear any existing component\n if (this.componentRef) {\n this.vcr.clear();\n this.componentRef = null;\n }\n\n // Create new component\n this.componentRef = this.createComponent(finalComponent, directives);\n }\n\n private collectDirectives(component: TComponent): { finalComponent: TComponent; directives: TComponent[] } {\n const directives: TComponent[] = [];\n let current = component;\n\n while (isDirective(this.componentRegistry.get(current.componentType))) {\n directives.push(current);\n const contentId = current.getNodeValue<ComponentId>('content');\n if (!contentId) break;\n\n const contentComponent = this.store.getComponent(contentId);\n if (!contentComponent) break;\n\n current = contentComponent;\n }\n\n return { finalComponent: current, directives };\n }\n\n private createComponent(model: TComponent, directives: TComponent[] = []): ComponentRef<unknown> | null {\n const entry = this.componentRegistry.get(model.componentType);\n\n // All components should be preloaded at this point\n if (isLazyComponent(entry)) {\n throw new Error(`Component \"${model.componentType}\" is not preloaded. This is a bug in the preloading logic.`);\n }\n\n return this.mapComponentToAngular(entry as Type<KComponent>, model, directives);\n }\n\n private mapComponentToAngular(\n componentType: Type<KComponent>,\n model: TComponent,\n directives: TComponent[] = [],\n ): ComponentRef<unknown> {\n const directivesWithBindings = directives.map((d) => {\n const entry = this.componentRegistry.get(d.componentType) as { directive: Type<unknown> };\n const bindings = this.createDirectiveBindings(d);\n return { type: entry.directive, bindings };\n });\n\n // Build reactive inputs\n const bindings = this.createPropsBindings(model);\n\n const elementInjector =\n this.elementInjector() ??\n Injector.create({\n providers: [{ provide: ComponentOutletDirective, useValue: this }],\n parent: this.vcr.injector,\n });\n\n const compRef = createComponent(componentType, {\n environmentInjector: this.environmentInjector,\n elementInjector,\n directives: directivesWithBindings,\n bindings,\n });\n\n this.vcr.insert(compRef.hostView);\n\n // Bookkeeping\n componentInstanceMap.set(model.id, compRef.instance);\n compRef.onDestroy(() => componentInstanceMap.delete(model.id));\n\n // Input & metadata wiring\n compRef.location.nativeElement.setAttribute('data-component-id', model.id);\n compRef.location.nativeElement.setAttribute('data-ref-space-id', model.refSpaceId);\n\n return compRef;\n }\n\n private createPropsBindings(model: TComponent): Binding[] {\n const bindings: Binding[] = [];\n\n for (const [key, node] of model.props.entries()) {\n const s = signal(prepareValueToRender(node));\n bindings.push(inputBinding(key, s));\n\n this.addReaction(\n () => node.extractedValue,\n () => s.set(prepareValueToRender(node)),\n );\n }\n\n return bindings;\n }\n\n private createDirectiveBindings(model: TComponent): Binding[] {\n const bindings: Binding[] = [];\n\n for (const [propName, node] of model.props.entries()) {\n if (propName === 'content') continue;\n\n const directiveSignal = signal(prepareValueToRender(node));\n\n this.addReaction(\n () => node.extractedValue,\n () => directiveSignal.set(prepareValueToRender(node)),\n );\n\n bindings.push(inputBinding(propName, directiveSignal));\n }\n return bindings;\n }\n\n private clear(): void {\n this.vcr.clear();\n this.componentRef = null;\n this.disposeReactions();\n }\n\n private addReaction<T>(\n trackFn: (r: IReactionPublic) => T,\n effectFn: (value: T, prevValue?: T) => void,\n options?: IReactionOptions<T, true>,\n ): void {\n const disposer = reaction(trackFn, effectFn, options);\n this.disposers.push(disposer);\n }\n\n private disposeReactions(): void {\n this.disposers.forEach((dispose) => dispose());\n this.disposers = [];\n }\n}\n","import { ComponentTreeApi } from '@kaskad/component-tree';\nimport { log } from '@kaskad/config';\nimport { ComponentId, NodeSchema } from '@kaskad/core';\nimport { templateRegistry, unfoldNodeSchema } from '@kaskad/schema';\nimport { comparer, IReactionDisposer, IReactionOptions, IReactionPublic, reaction } from 'mobx';\nimport {\n DestroyRef,\n effect,\n inject,\n Injectable,\n Injector,\n isSignal,\n runInInjectionContext,\n Signal,\n WritableSignal,\n} from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class SignalKaskadSync {\n private injector = inject(Injector);\n private destroyRef = inject(DestroyRef);\n\n public run(rootId: ComponentId, templateUrl: string, props: Signal<Record<string, unknown>>) {\n const writableSignals = Object.entries(props()).filter(([, v]) => isSignal(v)) as [\n string,\n WritableSignal<unknown>,\n ][];\n if (!writableSignals.length) {\n return; // nothing to bind\n }\n\n const template = templateRegistry.get(templateUrl);\n if (!template) {\n log.error('failed to setup two-way binding, unable to find template in registry', templateUrl);\n return;\n }\n\n const component = ComponentTreeApi.findComponent(rootId, ':' + template.recipe.componentType);\n if (!component) {\n log.error(\n 'failed to setup two-way binding, unable to find root schema component:',\n template.recipe.componentType,\n );\n return;\n }\n\n const disposers: IReactionDisposer[] = [];\n for (const [key, signal] of writableSignals) {\n const contract = template.recipe['contract'] as Record<string, string> | undefined;\n const entry = contract?.[key];\n if (!entry) {\n log.warn(`unable to find contract entry for signal \"${key}\" in template ${templateUrl}`);\n continue;\n }\n\n const node = component.getNode(entry);\n const schema = unfoldNodeSchema(signal(), node.valueType, node.position.path);\n if (this.hasComponentOrComputation(schema)) {\n log.warn(`skipping signal/kaskad sync for \"${key}\" as it contains component or computation schema`);\n continue;\n }\n\n // mobx to signal\n const disposer = this.addReaction(\n () => component.getNode(entry).extractedValue,\n (v) => signal.set(v),\n { equals: comparer.structural },\n );\n\n disposers.push(disposer);\n\n // signal to mobx\n runInInjectionContext(this.injector, () => {\n let firstRun = true;\n effect(() => {\n const signalValue = signal();\n\n // skip first run as it's already handled by mobx\n if (firstRun) {\n firstRun = false;\n return;\n }\n\n ComponentTreeApi.setNodeRawSchema(component.id, entry, signalValue);\n });\n });\n }\n\n this.destroyRef.onDestroy(() => {\n disposers.forEach((dispose) => dispose());\n });\n }\n\n private addReaction<T>(\n trackFn: (r: IReactionPublic) => T,\n effectFn: (value: T, prevValue?: T) => void,\n options?: IReactionOptions<T, boolean>,\n ): IReactionDisposer {\n return reaction(trackFn, effectFn, options);\n }\n\n private hasComponentOrComputation(schema: NodeSchema): boolean {\n if (schema.valueType.type === 'component' || schema.computation !== null) {\n return true;\n }\n\n if (!schema.value) {\n return false;\n }\n\n if (schema.valueType.type === 'object') {\n const objectValue = schema.value as Record<string, NodeSchema>;\n for (const childSchema of Object.values(objectValue || {})) {\n if (this.hasComponentOrComputation(childSchema)) {\n return true;\n }\n }\n }\n if (schema.valueType.type === 'array') {\n const arrayValue = schema.value as NodeSchema[];\n for (const childSchema of arrayValue || []) {\n if (this.hasComponentOrComputation(childSchema)) {\n return true;\n }\n }\n }\n if (schema.valueType.type === 'map') {\n const mapValue = schema.value as Record<string, NodeSchema>;\n for (const childSchema of Object.values(mapValue || {})) {\n if (this.hasComponentOrComputation(childSchema)) {\n return true;\n }\n }\n }\n\n return false;\n }\n}\n","import {\n activateNode,\n ComponentId,\n ComponentRecipe,\n ComponentStore,\n createRootNode,\n unfoldNodeSchema,\n} from '@kaskad/core';\nimport { loadTemplates, templateRegistry } from '@kaskad/schema';\nimport { computed, DestroyRef, Directive, effect, inject, input, isSignal, untracked } from '@angular/core';\n\nimport { ComponentOutletDirective } from './component-outlet.directive';\nimport { ComponentRegistry, isLazyComponent } from './component-registry';\nimport { SignalKaskadSync } from './signal-kaskad-sync';\nimport { isDirective } from './util';\n\n@Directive({\n selector: '[kkViewOutlet]',\n exportAs: 'outlet',\n hostDirectives: [\n {\n directive: ComponentOutletDirective,\n inputs: ['elementInjector'],\n },\n ],\n})\nexport class ViewOutletDirective {\n static counter = 0;\n src = input.required<string>({ alias: 'kkViewOutlet' });\n props = input<Record<string, unknown>>({});\n refSpaceId = computed(() => this.src() + '-' + ViewOutletDirective.counter++);\n rawSchema = computed<ComponentRecipe>(() => {\n const content: Record<string, unknown> = {\n templateUrl: this.src(),\n };\n\n untracked(() => {\n for (const [key, value] of Object.entries(this.props())) {\n content[key] = isSignal(value) ? untracked(() => value()) : value;\n }\n });\n\n return {\n componentType: 'sys.Facade',\n content,\n };\n });\n private destroyRef = inject(DestroyRef);\n private store = inject(ComponentStore);\n private componentOutlet = inject(ComponentOutletDirective);\n private componentRegistry = inject(ComponentRegistry);\n private signalKaskadSync = inject(SignalKaskadSync);\n private currentComponentId: ComponentId | null = null;\n\n constructor() {\n effect(() => this.processRawSchema(this.rawSchema()));\n\n this.destroyRef.onDestroy(() => {\n if (this.currentComponentId) {\n this.store.removeComponent(this.currentComponentId);\n }\n });\n }\n\n private async processRawSchema(rawSchema: ComponentRecipe) {\n await this.preloadComponentTypes(new Set<string>(['sys.Box', 'sys.Group', 'sys.RefSpace', 'sys.Facade']));\n\n await loadTemplates(rawSchema);\n\n const componentTypes = templateRegistry.getAggregatedComponentTypes(this.src());\n await this.preloadComponentTypes(componentTypes);\n\n const schema = unfoldNodeSchema(rawSchema, { type: 'component' });\n const root = createRootNode(this.refSpaceId(), schema, null, null, this.src());\n\n activateNode(root);\n\n const rootId = root.extractedValue as ComponentId;\n\n // Clean up previous component if schema changes\n if (this.currentComponentId && this.currentComponentId !== rootId) {\n this.store.removeComponent(this.currentComponentId);\n }\n\n this.currentComponentId = rootId;\n\n this.signalKaskadSync.run(rootId, this.src(), this.props);\n this.componentOutlet.componentId.set(rootId);\n }\n\n private async preloadComponentTypes(componentTypes: Set<string>): Promise<void> {\n const promises: Promise<void>[] = [];\n\n for (const componentType of componentTypes) {\n const entry = this.componentRegistry.get(componentType);\n\n // Skip directive (?)\n if (isDirective(entry)) {\n continue;\n }\n\n // Only preload if it's still lazy\n if (isLazyComponent(entry)) {\n promises.push(\n entry().then((component) => {\n // Replace lazy entry with loaded component in registry\n this.componentRegistry.set(componentType, component);\n }),\n );\n }\n }\n\n if (promises.length > 0) {\n await Promise.all(promises);\n }\n }\n}\n","import { type CommandDefinition, type FunctionDefinition, type ImperativeFunctionDefinition } from '@kaskad/core';\nimport { EnvironmentInjector, inject, runInInjectionContext } from '@angular/core';\n\nexport function injectCommand(command: CommandDefinition): CommandDefinition {\n const injector = inject(EnvironmentInjector);\n return {\n execute: (...args) => runInInjectionContext(injector, () => command.execute(...args)),\n };\n}\n\nexport function injectFunction(definition: ImperativeFunctionDefinition): ImperativeFunctionDefinition {\n const injector = inject(EnvironmentInjector);\n return {\n ...definition,\n execute: (...args: unknown[]) =>\n runInInjectionContext(injector, () => (definition.execute as (...args: unknown[]) => unknown)(...args)),\n };\n}\n\nexport function injectFunctions(record: Record<string, FunctionDefinition>): Record<string, FunctionDefinition> {\n return Object.fromEntries(\n Object.entries(record).map(([name, fn]) => [name, fn.kind === 'imperative' ? injectFunction(fn) : fn]),\n );\n}\n\nexport function injectCommands(record: Record<string, CommandDefinition>): Record<string, CommandDefinition> {\n return Object.fromEntries(Object.entries(record).map(([name, cmd]) => [name, injectCommand(cmd)]));\n}\n","import { log, LogLevel } from '@kaskad/config';\nimport {\n browser,\n common,\n ComponentStore,\n DefinitionStore,\n forms,\n initRuntime,\n registerPlugin,\n sys,\n type KaskadPlugin,\n} from '@kaskad/core';\nimport { EnvironmentProviders, inject, makeEnvironmentProviders, provideEnvironmentInitializer } from '@angular/core';\n\nimport { ComponentEntry, ComponentRegistry } from './component-registry';\nimport { injectCommands, injectFunctions } from './inject';\n\nexport interface NgKaskadPlugin extends KaskadPlugin {\n components?: Record<string, ComponentEntry>;\n}\n\nexport interface KaskadConfig {\n logLevel?: LogLevel;\n plugins?: NgKaskadPlugin[];\n}\n\nconst builtinPlugins: NgKaskadPlugin[] = [sys, common, browser, forms];\n\nexport function provideKaskad(config?: KaskadConfig): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: ComponentStore, useValue: ComponentStore.getInstance() },\n { provide: DefinitionStore, useValue: DefinitionStore.getInstance() },\n\n provideEnvironmentInitializer(() => {\n if (config?.logLevel) {\n log.level = config.logLevel;\n }\n\n for (const plugin of config?.plugins ?? builtinPlugins) {\n // Wrap commands and imperative functions with Angular DI context\n const wrappedPlugin = { ...plugin };\n\n if (plugin.commands) {\n wrappedPlugin.commands = injectCommands(plugin.commands);\n }\n\n if (plugin.functions) {\n wrappedPlugin.functions = injectFunctions(plugin.functions);\n }\n\n registerPlugin(wrappedPlugin);\n\n if (plugin.components) {\n inject(ComponentRegistry).setAll(plugin.components);\n }\n }\n\n initRuntime();\n\n // Expose stores globally for debugging\n const store = inject(ComponentStore);\n const defStore = inject(DefinitionStore);\n if (typeof window !== 'undefined') {\n const global = window as Window & { store?: ComponentStore; defStore?: DefinitionStore };\n global.store = store;\n global.defStore = defStore;\n }\n }),\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["unfoldNodeSchema","i1.ComponentOutletDirective"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kaskad/angular",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.7",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/core": "^21.0.0",
|
|
6
6
|
"@angular/platform-browser": "^21.0.0",
|
|
7
|
-
"@kaskad/config": "0.0.
|
|
8
|
-
"@kaskad/core": "0.0.
|
|
7
|
+
"@kaskad/config": "0.0.7",
|
|
8
|
+
"@kaskad/core": "0.0.7",
|
|
9
9
|
"mobx": "^6.13.7",
|
|
10
|
-
"@kaskad/component-tree": "0.0.
|
|
11
|
-
"@kaskad/schema": "0.0.
|
|
10
|
+
"@kaskad/component-tree": "0.0.7",
|
|
11
|
+
"@kaskad/schema": "0.0.7"
|
|
12
12
|
},
|
|
13
13
|
"sideEffects": false,
|
|
14
14
|
"module": "fesm2022/kaskad-angular.mjs",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { Injector, Type, Signal, EnvironmentProviders } from '@angular/core';
|
|
3
|
-
import { ComponentRecipe } from '@kaskad/core';
|
|
3
|
+
import { ComponentRecipe, KaskadPlugin, CommandDefinition, ImperativeFunctionDefinition, FunctionDefinition } from '@kaskad/core';
|
|
4
4
|
import { LogLevel } from '@kaskad/config';
|
|
5
5
|
|
|
6
6
|
declare class ComponentOutletDirective {
|
|
@@ -66,9 +66,19 @@ interface KComponent {
|
|
|
66
66
|
[x: string]: Signal<unknown>;
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
interface NgKaskadPlugin extends KaskadPlugin {
|
|
70
|
+
components?: Record<string, ComponentEntry>;
|
|
71
|
+
}
|
|
72
|
+
interface KaskadConfig {
|
|
70
73
|
logLevel?: LogLevel;
|
|
71
|
-
|
|
74
|
+
plugins?: NgKaskadPlugin[];
|
|
75
|
+
}
|
|
76
|
+
declare function provideKaskad(config?: KaskadConfig): EnvironmentProviders;
|
|
77
|
+
|
|
78
|
+
declare function injectCommand(command: CommandDefinition): CommandDefinition;
|
|
79
|
+
declare function injectFunction(definition: ImperativeFunctionDefinition): ImperativeFunctionDefinition;
|
|
80
|
+
declare function injectFunctions(record: Record<string, FunctionDefinition>): Record<string, FunctionDefinition>;
|
|
81
|
+
declare function injectCommands(record: Record<string, CommandDefinition>): Record<string, CommandDefinition>;
|
|
72
82
|
|
|
73
|
-
export { ComponentOutletDirective, ComponentRegistry, ViewOutletDirective, isLazyComponent, provideKaskad };
|
|
74
|
-
export type { ComponentEntry, KComponent };
|
|
83
|
+
export { ComponentOutletDirective, ComponentRegistry, ViewOutletDirective, injectCommand, injectCommands, injectFunction, injectFunctions, isLazyComponent, provideKaskad };
|
|
84
|
+
export type { ComponentEntry, KComponent, KaskadConfig, NgKaskadPlugin };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kaskad-angular-dialog.component-B_024_A6.mjs","sources":["../../../../libs/angular/src/lib/components/browser/dialog.component.ts"],"sourcesContent":["import { CommandRef, ComponentId } from '@kaskad/core';\nimport { ChangeDetectionStrategy, Component, effect, ElementRef, HostListener, input, viewChild } from '@angular/core';\n\nimport { ComponentOutletDirective } from '../../component-outlet.directive';\n\n@Component({\n selector: 'kk-dialog',\n imports: [ComponentOutletDirective],\n host: {\n '[style.display]': '\"contents\"',\n },\n template: `\n <dialog #dialog [class]=\"styleClass()\" (close)=\"close()?.execute(false)\">\n <ng-container [kkComponentOutlet]=\"content()\" />\n </dialog>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DialogComponent {\n styleClass = input<string>();\n content = input<ComponentId | null>(null);\n close = input<CommandRef<{ returnValue: unknown }, void>>();\n\n dialog = viewChild<ElementRef<HTMLDialogElement>>('dialog');\n\n constructor() {\n effect(() => {\n this.dialog()?.nativeElement.showModal();\n });\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n // close dialog when clicking on the backdrop\n if ((event.target as HTMLElement).tagName === 'DIALOG') {\n this.close()?.execute(false);\n }\n }\n}\n"],"names":[],"mappings":"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"}
|