ngx-form-designer 0.0.23
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/README.md +279 -0
- package/convert-legacy-rem-to-sass-function.mjs +198 -0
- package/fesm2022/ngx-form-designer.mjs +33548 -0
- package/fesm2022/ngx-form-designer.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/data/data-catalog.d.ts +46 -0
- package/lib/data/data-provider.d.ts +69 -0
- package/lib/data/data-source-client.d.ts +59 -0
- package/lib/data/data-source-parsers.d.ts +7 -0
- package/lib/data/external-data-source.d.ts +29 -0
- package/lib/data/file-upload-client.d.ts +19 -0
- package/lib/data/http-data-source-client.d.ts +31 -0
- package/lib/data/in-memory-data-catalog.service.d.ts +12 -0
- package/lib/data/runtime-field-data-access-registry.service.d.ts +29 -0
- package/lib/data/runtime-field-data-access.d.ts +32 -0
- package/lib/data/tree-utils.d.ts +28 -0
- package/lib/email-renderer/email-renderer.component.d.ts +21 -0
- package/lib/form-core/event-api-reference.d.ts +8 -0
- package/lib/form-core/form-engine.d.ts +55 -0
- package/lib/form-core/form-event-runner.d.ts +28 -0
- package/lib/form-core/models.d.ts +358 -0
- package/lib/form-core/plugin-metadata.d.ts +10 -0
- package/lib/form-core/rule-evaluation.service.d.ts +18 -0
- package/lib/form-core/schema-factory.d.ts +11 -0
- package/lib/form-core/schema-guard.d.ts +18 -0
- package/lib/form-core/schema-utils.d.ts +9 -0
- package/lib/form-designer/data-panel/data-panel.component.d.ts +101 -0
- package/lib/form-designer/designer-context.service.d.ts +29 -0
- package/lib/form-designer/designer-state.service.d.ts +167 -0
- package/lib/form-designer/dynamic-properties/dynamic-properties.component.d.ts +92 -0
- package/lib/form-designer/events-panel/events-panel.component.d.ts +21 -0
- package/lib/form-designer/events-workspace.component.d.ts +125 -0
- package/lib/form-designer/field-palette.component.d.ts +99 -0
- package/lib/form-designer/form-designer-shell.component.d.ts +81 -0
- package/lib/form-designer/form-preview.component.d.ts +36 -0
- package/lib/form-designer/form-settings-inspector.component.d.ts +15 -0
- package/lib/form-designer/global-data-manager.component.d.ts +32 -0
- package/lib/form-designer/inspector-sections/inspector-advanced-section.component.d.ts +17 -0
- package/lib/form-designer/inspector-sections/inspector-backgrounds-section.component.d.ts +14 -0
- package/lib/form-designer/inspector-sections/inspector-borders-section.component.d.ts +45 -0
- package/lib/form-designer/inspector-sections/inspector-effects-section.component.d.ts +22 -0
- package/lib/form-designer/inspector-sections/inspector-layout-section.component.d.ts +33 -0
- package/lib/form-designer/inspector-sections/inspector-position-section.component.d.ts +28 -0
- package/lib/form-designer/inspector-sections/inspector-size-section.component.d.ts +12 -0
- package/lib/form-designer/inspector-sections/inspector-spacing-section.component.d.ts +13 -0
- package/lib/form-designer/inspector-sections/inspector-typography-section.component.d.ts +31 -0
- package/lib/form-designer/json-form-designer.component.d.ts +17 -0
- package/lib/form-designer/layer-tree/layer-tree.component.d.ts +24 -0
- package/lib/form-designer/layout-canvas.component.d.ts +69 -0
- package/lib/form-designer/page-style.d.ts +2 -0
- package/lib/form-designer/properties-panel.component.d.ts +65 -0
- package/lib/form-designer/rules-editor/query-builder/query-builder.component.d.ts +23 -0
- package/lib/form-designer/rules-editor/rules-panel/rules-panel.component.d.ts +15 -0
- package/lib/form-designer/services/widget-definition-resolver.service.d.ts +38 -0
- package/lib/form-designer/template-library.d.ts +9 -0
- package/lib/form-designer/widget-inspector.component.d.ts +30 -0
- package/lib/form-renderer/form-viewer/form-viewer-readonly.component.d.ts +56 -0
- package/lib/form-renderer/form-viewer/form-viewer.component.d.ts +55 -0
- package/lib/form-renderer/json-form-renderer.component.d.ts +98 -0
- package/lib/form-renderer/layout-node.component.d.ts +94 -0
- package/lib/plugins/core-plugins.d.ts +5 -0
- package/lib/plugins/designer-plugin.d.ts +15 -0
- package/lib/plugins/plugin-context.d.ts +18 -0
- package/lib/plugins/plugin-providers.d.ts +3 -0
- package/lib/plugins/section-definition.d.ts +16 -0
- package/lib/theme/theme.service.d.ts +15 -0
- package/lib/ui/json-schema-editor.component.d.ts +27 -0
- package/lib/ui/monaco-editor.component.d.ts +24 -0
- package/lib/ui/ui-accordion.component.d.ts +11 -0
- package/lib/ui/ui-box-model.component.d.ts +55 -0
- package/lib/ui/ui-color-swatch.component.d.ts +12 -0
- package/lib/ui/ui-dimension.component.d.ts +21 -0
- package/lib/ui/ui-edge-box.component.d.ts +20 -0
- package/lib/ui/ui-field-wrapper.component.d.ts +8 -0
- package/lib/ui/ui-icon.module.d.ts +7 -0
- package/lib/ui/ui-input.component.d.ts +17 -0
- package/lib/ui/ui-range-number.component.d.ts +16 -0
- package/lib/ui/ui-select-icon.component.d.ts +18 -0
- package/lib/ui/ui-tabs.component.d.ts +25 -0
- package/lib/website/website-brick-studio.component.d.ts +67 -0
- package/lib/website/website-designer-shell.component.d.ts +53 -0
- package/lib/website/website-preview-shell.component.d.ts +25 -0
- package/lib/website/website-project.models.d.ts +78 -0
- package/lib/website/website-project.service.d.ts +50 -0
- package/lib/website/website-section-library.d.ts +6 -0
- package/lib/widgets/email-widgets/email-button-widget.component.d.ts +15 -0
- package/lib/widgets/email-widgets/email-heading-widget.component.d.ts +15 -0
- package/lib/widgets/email-widgets/email-text-widget.component.d.ts +13 -0
- package/lib/widgets/email-widgets.d.ts +2 -0
- package/lib/widgets/field-widgets/checkbox/checkbox-widget.component.d.ts +28 -0
- package/lib/widgets/field-widgets/checkbox-group/checkbox-group-widget.component.d.ts +40 -0
- package/lib/widgets/field-widgets/file-upload/file-upload-widget.component.d.ts +45 -0
- package/lib/widgets/field-widgets/radio/radio-widget.component.d.ts +39 -0
- package/lib/widgets/field-widgets/repeatable-group/repeatable-group-widget.component.d.ts +69 -0
- package/lib/widgets/field-widgets/rich-text/rich-text-widget.component.d.ts +17 -0
- package/lib/widgets/field-widgets/search/search-widget.component.d.ts +56 -0
- package/lib/widgets/field-widgets/select/select-widget.component.d.ts +53 -0
- package/lib/widgets/field-widgets/text-field/text-field.component.d.ts +39 -0
- package/lib/widgets/field-widgets/tree-select/tree-select-widget.component.d.ts +47 -0
- package/lib/widgets/page-link-context.d.ts +8 -0
- package/lib/widgets/page-widgets/brick-settings.component.d.ts +23 -0
- package/lib/widgets/page-widgets/brick-widget.component.d.ts +47 -0
- package/lib/widgets/page-widgets/button-link-settings.component.d.ts +23 -0
- package/lib/widgets/page-widgets/button-widget.component.d.ts +21 -0
- package/lib/widgets/page-widgets/heading-widget.component.d.ts +22 -0
- package/lib/widgets/page-widgets/inline-quill-editor.component.d.ts +35 -0
- package/lib/widgets/page-widgets/table-inspector.component.d.ts +17 -0
- package/lib/widgets/page-widgets/table-widget.component.d.ts +36 -0
- package/lib/widgets/page-widgets/text-block-widget.component.d.ts +22 -0
- package/lib/widgets/page-widgets.d.ts +2 -0
- package/lib/widgets/static-widgets/image/image-widget.component.d.ts +20 -0
- package/lib/widgets/style-helpers.d.ts +8 -0
- package/lib/widgets/style-properties.d.ts +28 -0
- package/lib/widgets/style-sections.d.ts +1 -0
- package/lib/widgets/table-widget.d.ts +2 -0
- package/lib/widgets/widget-definition.d.ts +81 -0
- package/lib/widgets/widget-editor-context.d.ts +8 -0
- package/lib/widgets/widget-packs.d.ts +4 -0
- package/lib/widgets/widgets.d.ts +2 -0
- package/package.json +47 -0
- package/public-api.d.ts +73 -0
- package/style-test-bug.scss +2562 -0
- package/tailwind.preset.js +62 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { OnInit, OnDestroy } from '@angular/core';
|
|
2
|
+
import { FormControl } from '@angular/forms';
|
|
3
|
+
import { FieldSchema, OptionSchema } from '../../../form-core/models';
|
|
4
|
+
import { FormEngine } from '../../../form-core/form-engine';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class SelectWidgetComponent implements OnInit, OnDestroy {
|
|
7
|
+
private _config;
|
|
8
|
+
private hasReceivedConfig;
|
|
9
|
+
private hasInitialized;
|
|
10
|
+
set config(value: FieldSchema);
|
|
11
|
+
get config(): FieldSchema;
|
|
12
|
+
engine?: FormEngine;
|
|
13
|
+
control: FormControl<any>;
|
|
14
|
+
searchControl: FormControl<string | null>;
|
|
15
|
+
loading: boolean;
|
|
16
|
+
loadError: string | null;
|
|
17
|
+
private requestId;
|
|
18
|
+
private readonly destroyRef;
|
|
19
|
+
private readonly cdr;
|
|
20
|
+
options: OptionSchema[];
|
|
21
|
+
private runtimeManagedField;
|
|
22
|
+
private runtimeOptionsLoaded;
|
|
23
|
+
private readonly dependencyValueSnapshot;
|
|
24
|
+
private readonly dataProvider;
|
|
25
|
+
private readonly runtimeFieldDataAccessRegistry;
|
|
26
|
+
get fieldId(): string;
|
|
27
|
+
get errorId(): string;
|
|
28
|
+
get helpTextId(): string;
|
|
29
|
+
getAriaDescribedBy(): string;
|
|
30
|
+
ngOnInit(): Promise<void>;
|
|
31
|
+
ngOnDestroy(): void;
|
|
32
|
+
private getDependencyFieldIds;
|
|
33
|
+
private loadOptions;
|
|
34
|
+
getWrapperStyles(): Record<string, any>;
|
|
35
|
+
get visible(): boolean;
|
|
36
|
+
get enabled(): boolean;
|
|
37
|
+
get required(): boolean;
|
|
38
|
+
get error(): string | null;
|
|
39
|
+
onFocus(): void;
|
|
40
|
+
onClick(): void;
|
|
41
|
+
onBlur(): void;
|
|
42
|
+
private syncEnabledState;
|
|
43
|
+
private ensureRuntimeOptionsLoaded;
|
|
44
|
+
private seedDependencySnapshotFromValues;
|
|
45
|
+
private haveDependencyValuesChanged;
|
|
46
|
+
private hasSelectedValue;
|
|
47
|
+
private handleConfigChange;
|
|
48
|
+
private getConfigSignature;
|
|
49
|
+
private getOptionsSignature;
|
|
50
|
+
private stringifyValue;
|
|
51
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SelectWidgetComponent, never>;
|
|
52
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SelectWidgetComponent, "app-select-widget", never, { "config": { "alias": "config"; "required": false; }; "engine": { "alias": "engine"; "required": false; }; "control": { "alias": "control"; "required": false; }; }, {}, never, never, true, never>;
|
|
53
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { OnInit, OnDestroy } from '@angular/core';
|
|
2
|
+
import { FormControl } from '@angular/forms';
|
|
3
|
+
import { FieldSchema } from '../../../form-core/models';
|
|
4
|
+
import { FormEngine } from '../../../form-core/form-engine';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class TextFieldWidgetComponent implements OnInit, OnDestroy {
|
|
7
|
+
private _config;
|
|
8
|
+
private hasReceivedConfig;
|
|
9
|
+
private readonly dependencyValueSnapshot;
|
|
10
|
+
set config(value: FieldSchema);
|
|
11
|
+
get config(): FieldSchema;
|
|
12
|
+
engine?: FormEngine;
|
|
13
|
+
control: FormControl<any>;
|
|
14
|
+
private readonly destroyRef;
|
|
15
|
+
private readonly dataProvider;
|
|
16
|
+
get fieldId(): string;
|
|
17
|
+
get errorId(): string;
|
|
18
|
+
get helpTextId(): string;
|
|
19
|
+
getAriaDescribedBy(): string;
|
|
20
|
+
ngOnInit(): void;
|
|
21
|
+
onFocus(): void;
|
|
22
|
+
onClick(): void;
|
|
23
|
+
onBlur(): void;
|
|
24
|
+
ngOnDestroy(): void;
|
|
25
|
+
getWrapperStyles(): Record<string, any>;
|
|
26
|
+
get visible(): boolean;
|
|
27
|
+
get enabled(): boolean;
|
|
28
|
+
get required(): boolean;
|
|
29
|
+
get error(): string | null;
|
|
30
|
+
private syncEnabledState;
|
|
31
|
+
private refreshValueFromDataSource;
|
|
32
|
+
private getDataConfigSignature;
|
|
33
|
+
private seedDependencySnapshotFromEngine;
|
|
34
|
+
private seedDependencySnapshot;
|
|
35
|
+
private haveDependencyValuesChanged;
|
|
36
|
+
private getDependencyFieldNames;
|
|
37
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TextFieldWidgetComponent, never>;
|
|
38
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TextFieldWidgetComponent, "app-text-field-widget", never, { "config": { "alias": "config"; "required": false; }; "engine": { "alias": "engine"; "required": false; }; "control": { "alias": "control"; "required": false; }; }, {}, never, never, true, never>;
|
|
39
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { OnInit, OnDestroy, ElementRef } from '@angular/core';
|
|
2
|
+
import { FormControl } from '@angular/forms';
|
|
3
|
+
import { FieldSchema } from '../../../form-core/models';
|
|
4
|
+
import { FormEngine } from '../../../form-core/form-engine';
|
|
5
|
+
import { TreeNode } from '../../../data/tree-utils';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export declare class TreeSelectWidgetComponent implements OnInit, OnDestroy {
|
|
8
|
+
private el;
|
|
9
|
+
config: FieldSchema;
|
|
10
|
+
engine?: FormEngine;
|
|
11
|
+
control: FormControl<any>;
|
|
12
|
+
searchInput?: ElementRef<HTMLInputElement>;
|
|
13
|
+
private dataProvider;
|
|
14
|
+
private cdr;
|
|
15
|
+
private readonly destroyRef;
|
|
16
|
+
private rawList;
|
|
17
|
+
tree: TreeNode[];
|
|
18
|
+
displayTree: TreeNode[];
|
|
19
|
+
isLoading: boolean;
|
|
20
|
+
isOpen: boolean;
|
|
21
|
+
selectedId: string | null;
|
|
22
|
+
selectedLabel: string | null;
|
|
23
|
+
expandedIds: Set<string>;
|
|
24
|
+
searchControl: FormControl<string | null>;
|
|
25
|
+
loadError: string | null;
|
|
26
|
+
private hasFocus;
|
|
27
|
+
constructor(el: ElementRef);
|
|
28
|
+
ngOnInit(): void;
|
|
29
|
+
ngOnDestroy(): void;
|
|
30
|
+
private onDocumentClick;
|
|
31
|
+
loadData(): Promise<void>;
|
|
32
|
+
private build;
|
|
33
|
+
private filter;
|
|
34
|
+
toggleDropdown(e: Event): void;
|
|
35
|
+
isExpanded(node: TreeNode): boolean;
|
|
36
|
+
toggleExpand(node: TreeNode, e: Event): void;
|
|
37
|
+
selectNode(node: TreeNode, e: Event): void;
|
|
38
|
+
private updateSelectionFromValue;
|
|
39
|
+
get isInvalid(): boolean;
|
|
40
|
+
get isRequired(): boolean | undefined;
|
|
41
|
+
get errorMessage(): string | null;
|
|
42
|
+
get searchEnabled(): boolean;
|
|
43
|
+
private openDropdown;
|
|
44
|
+
private closeDropdown;
|
|
45
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TreeSelectWidgetComponent, never>;
|
|
46
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TreeSelectWidgetComponent, "app-tree-select", never, { "config": { "alias": "config"; "required": false; }; "engine": { "alias": "engine"; "required": false; }; "control": { "alias": "control"; "required": false; }; }, {}, never, never, true, never>;
|
|
47
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
export type WidgetPageLink = {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
route: string;
|
|
6
|
+
};
|
|
7
|
+
export type WidgetPageLinkProvider = () => WidgetPageLink[];
|
|
8
|
+
export declare const WIDGET_PAGE_LINKS: InjectionToken<WidgetPageLinkProvider>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { OnChanges } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class BrickSettingsComponent implements OnChanges {
|
|
4
|
+
config: any;
|
|
5
|
+
getValue: (path: string) => unknown;
|
|
6
|
+
setValue: (path: string, value: unknown) => void;
|
|
7
|
+
onChange: () => void;
|
|
8
|
+
private readonly projectService;
|
|
9
|
+
protected readonly bricks: import("@angular/core").Signal<import("ngx-form-designer").WebsiteBrick[]>;
|
|
10
|
+
protected propsValue: Record<string, unknown>;
|
|
11
|
+
protected propsSchema: Record<string, unknown> | null;
|
|
12
|
+
private lastBrickId;
|
|
13
|
+
ngOnChanges(): void;
|
|
14
|
+
selectedBrickId(): string;
|
|
15
|
+
onBrickChange(id: string): void;
|
|
16
|
+
onPropsChange(nextProps: Record<string, unknown>): void;
|
|
17
|
+
private syncPropsState;
|
|
18
|
+
private applyDefaultsForBrick;
|
|
19
|
+
private normalizeSchema;
|
|
20
|
+
private cloneProps;
|
|
21
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BrickSettingsComponent, never>;
|
|
22
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BrickSettingsComponent, "app-brick-settings", never, { "config": { "alias": "config"; "required": false; }; "getValue": { "alias": "getValue"; "required": false; }; "setValue": { "alias": "setValue"; "required": false; }; "onChange": { "alias": "onChange"; "required": false; }; }, {}, never, never, true, never>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { AfterViewInit, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
|
|
2
|
+
import type { WebsiteBrick } from '../../website/website-project.models';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class BrickWidgetComponent implements AfterViewInit, OnChanges, OnDestroy {
|
|
5
|
+
config: any;
|
|
6
|
+
engine?: any;
|
|
7
|
+
control?: any;
|
|
8
|
+
brickOverride?: WebsiteBrick;
|
|
9
|
+
onPropsChange?: (nextProps: Record<string, unknown>) => void;
|
|
10
|
+
private readonly brickRoot;
|
|
11
|
+
private readonly projectService;
|
|
12
|
+
private readonly editor;
|
|
13
|
+
private runtimeInstance?;
|
|
14
|
+
private cleanupFns;
|
|
15
|
+
private reactUnmount?;
|
|
16
|
+
private viewReady;
|
|
17
|
+
private renderSequence;
|
|
18
|
+
private static reactGlobalsPromise;
|
|
19
|
+
private static babelGlobalsPromise;
|
|
20
|
+
constructor();
|
|
21
|
+
ngAfterViewInit(): void;
|
|
22
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
23
|
+
ngOnDestroy(): void;
|
|
24
|
+
showMissing(): boolean;
|
|
25
|
+
missingMessage(): string;
|
|
26
|
+
private renderBrick;
|
|
27
|
+
private resolveBrick;
|
|
28
|
+
private getProps;
|
|
29
|
+
private getRuntime;
|
|
30
|
+
private applyBindings;
|
|
31
|
+
private setupInlineEditing;
|
|
32
|
+
private initRuntime;
|
|
33
|
+
private renderReactBrick;
|
|
34
|
+
private resolveReactComponent;
|
|
35
|
+
private updateProps;
|
|
36
|
+
private ensureRootBinding;
|
|
37
|
+
private updateProp;
|
|
38
|
+
private readProp;
|
|
39
|
+
private setPropValue;
|
|
40
|
+
private isDesignMode;
|
|
41
|
+
private cleanupRuntime;
|
|
42
|
+
private static loadReactGlobals;
|
|
43
|
+
private static loadBabelGlobals;
|
|
44
|
+
private static compileReactComponent;
|
|
45
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BrickWidgetComponent, never>;
|
|
46
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BrickWidgetComponent, "app-brick-widget", never, { "config": { "alias": "config"; "required": false; }; "engine": { "alias": "engine"; "required": false; }; "control": { "alias": "control"; "required": false; }; "brickOverride": { "alias": "brickOverride"; "required": false; }; "onPropsChange": { "alias": "onPropsChange"; "required": false; }; }, {}, never, never, true, never>;
|
|
47
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { WidgetPageLink } from '../page-link-context';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
type LinkType = 'none' | 'page' | 'url';
|
|
4
|
+
export declare class ButtonLinkSettingsComponent {
|
|
5
|
+
config: any;
|
|
6
|
+
getValue?: (path: string) => any;
|
|
7
|
+
setValue?: (path: string, value: any) => void;
|
|
8
|
+
onChange?: () => void;
|
|
9
|
+
private readonly pageLinks;
|
|
10
|
+
linkType(): LinkType;
|
|
11
|
+
pages(): WidgetPageLink[];
|
|
12
|
+
selectedPageId(): string;
|
|
13
|
+
selectedPageRoute(): string;
|
|
14
|
+
linkHref(): string;
|
|
15
|
+
openInNewTab(): boolean;
|
|
16
|
+
setLinkType(type: LinkType): void;
|
|
17
|
+
setPageId(pageId: string): void;
|
|
18
|
+
setUrl(value: string): void;
|
|
19
|
+
setOpenInNewTab(value: boolean): void;
|
|
20
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ButtonLinkSettingsComponent, never>;
|
|
21
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ButtonLinkSettingsComponent, "app-button-link-settings", never, { "config": { "alias": "config"; "required": false; }; "getValue": { "alias": "getValue"; "required": false; }; "setValue": { "alias": "setValue"; "required": false; }; "onChange": { "alias": "onChange"; "required": false; }; }, {}, never, never, true, never>;
|
|
22
|
+
}
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class ButtonWidgetComponent {
|
|
3
|
+
private readonly router;
|
|
4
|
+
private readonly pageLinks;
|
|
5
|
+
config: any;
|
|
6
|
+
engine?: any;
|
|
7
|
+
control?: any;
|
|
8
|
+
getClasses(): "inline-flex items-center px-4 py-2 border text-sm font-medium rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-offset-2 transition-colors border-gray-300 text-gray-700 bg-white hover:bg-gray-50 focus:ring-blue-500" | "inline-flex items-center px-4 py-2 border text-sm font-medium rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-offset-2 transition-colors border-transparent text-white bg-blue-600 hover:bg-blue-700 focus:ring-blue-500";
|
|
9
|
+
getStyles(): Record<string, any>;
|
|
10
|
+
getButtonType(): 'button' | 'submit' | 'reset';
|
|
11
|
+
linkHref(): string;
|
|
12
|
+
linkTarget(): string | null;
|
|
13
|
+
linkRel(): string | null;
|
|
14
|
+
onLinkClick(event: MouseEvent): void;
|
|
15
|
+
onClick(): void;
|
|
16
|
+
private openInNewTab;
|
|
17
|
+
private getLinkType;
|
|
18
|
+
private isInternalLink;
|
|
19
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ButtonWidgetComponent, never>;
|
|
20
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ButtonWidgetComponent, "app-button-widget", never, { "config": { "alias": "config"; "required": false; }; "engine": { "alias": "engine"; "required": false; }; "control": { "alias": "control"; "required": false; }; }, {}, never, never, true, never>;
|
|
21
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class HeadingWidgetComponent {
|
|
3
|
+
private readonly editor;
|
|
4
|
+
private readonly router;
|
|
5
|
+
config: any;
|
|
6
|
+
engine?: any;
|
|
7
|
+
control?: any;
|
|
8
|
+
getStyles(): Record<string, any>;
|
|
9
|
+
isDesignMode(): boolean;
|
|
10
|
+
isEditing(): boolean;
|
|
11
|
+
headingEditorClass(): string;
|
|
12
|
+
headingContainerClass(): string;
|
|
13
|
+
labelHtml(): string;
|
|
14
|
+
quillHtml(): string;
|
|
15
|
+
onHtmlChange(html: string): void;
|
|
16
|
+
onLinkClick(event: MouseEvent): void;
|
|
17
|
+
private wrapHtmlForQuill;
|
|
18
|
+
private normalizeInlineHtml;
|
|
19
|
+
private normalizeInternalHref;
|
|
20
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<HeadingWidgetComponent, never>;
|
|
21
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<HeadingWidgetComponent, "app-heading-widget", never, { "config": { "alias": "config"; "required": false; }; "engine": { "alias": "engine"; "required": false; }; "control": { "alias": "control"; "required": false; }; }, {}, never, never, true, never>;
|
|
22
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { AfterViewInit, ElementRef, EventEmitter, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare const INLINE_QUILL_TOOLBAR_OPTIONS: unknown[];
|
|
4
|
+
export declare class InlineQuillEditorComponent implements AfterViewInit, OnChanges, OnDestroy {
|
|
5
|
+
html: string;
|
|
6
|
+
placeholder: string;
|
|
7
|
+
readOnly: boolean;
|
|
8
|
+
autoFocus: boolean;
|
|
9
|
+
containerClass: string;
|
|
10
|
+
editorClass: string;
|
|
11
|
+
editorStyle: Record<string, string | number> | null;
|
|
12
|
+
htmlChange: EventEmitter<string>;
|
|
13
|
+
editorBlur: EventEmitter<void>;
|
|
14
|
+
editorFocus: EventEmitter<void>;
|
|
15
|
+
editorRef: ElementRef<HTMLDivElement>;
|
|
16
|
+
private quill?;
|
|
17
|
+
private lastHtml;
|
|
18
|
+
private hasFocus;
|
|
19
|
+
private updating;
|
|
20
|
+
private appliedClasses;
|
|
21
|
+
ngAfterViewInit(): void;
|
|
22
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
23
|
+
ngOnDestroy(): void;
|
|
24
|
+
private initQuill;
|
|
25
|
+
private setHtml;
|
|
26
|
+
private applyEditorAppearance;
|
|
27
|
+
private focusToEnd;
|
|
28
|
+
onEditorMouseDown(event: MouseEvent): void;
|
|
29
|
+
onEditorPointerDown(event: PointerEvent): void;
|
|
30
|
+
onEditorTouchStart(event: TouchEvent): void;
|
|
31
|
+
onEditorDragStart(event: DragEvent): void;
|
|
32
|
+
private stopInteractionEvent;
|
|
33
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<InlineQuillEditorComponent, never>;
|
|
34
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<InlineQuillEditorComponent, "app-inline-quill-editor", never, { "html": { "alias": "html"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "readOnly": { "alias": "readOnly"; "required": false; }; "autoFocus": { "alias": "autoFocus"; "required": false; }; "containerClass": { "alias": "containerClass"; "required": false; }; "editorClass": { "alias": "editorClass"; "required": false; }; "editorStyle": { "alias": "editorStyle"; "required": false; }; }, { "htmlChange": "htmlChange"; "editorBlur": "editorBlur"; "editorFocus": "editorFocus"; }, never, never, true, never>;
|
|
35
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class TableInspectorComponent {
|
|
3
|
+
config: any;
|
|
4
|
+
getValue: (path: string) => any;
|
|
5
|
+
setValue: (path: string, value: any) => void;
|
|
6
|
+
onChange: () => void;
|
|
7
|
+
get columns(): any;
|
|
8
|
+
get rows(): any;
|
|
9
|
+
addColumn(): void;
|
|
10
|
+
removeColumn(index: number): void;
|
|
11
|
+
updateColumns(): void;
|
|
12
|
+
addRow(): void;
|
|
13
|
+
removeRow(index: number): void;
|
|
14
|
+
updateRows(): void;
|
|
15
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TableInspectorComponent, never>;
|
|
16
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TableInspectorComponent, "app-table-inspector", never, { "config": { "alias": "config"; "required": false; }; "getValue": { "alias": "getValue"; "required": false; }; "setValue": { "alias": "setValue"; "required": false; }; "onChange": { "alias": "onChange"; "required": false; }; }, {}, never, never, true, never>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { OnInit, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';
|
|
2
|
+
import { FormControl } from '@angular/forms';
|
|
3
|
+
import { FormEngine } from '../../form-core/form-engine';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class TableWidgetComponent implements OnInit, OnChanges, OnDestroy {
|
|
6
|
+
config: any;
|
|
7
|
+
engine?: FormEngine;
|
|
8
|
+
control?: FormControl;
|
|
9
|
+
private readonly dataProvider;
|
|
10
|
+
private readonly pluginCtx;
|
|
11
|
+
searchControl: FormControl<string | null>;
|
|
12
|
+
loading: boolean;
|
|
13
|
+
error: string | null;
|
|
14
|
+
pageSize: number;
|
|
15
|
+
pageIndex: number;
|
|
16
|
+
total: number;
|
|
17
|
+
displayRows: any[];
|
|
18
|
+
private readonly destroyRef;
|
|
19
|
+
private reqId;
|
|
20
|
+
ngOnInit(): void;
|
|
21
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
22
|
+
ngOnDestroy(): void;
|
|
23
|
+
getStyles(): Record<string, any>;
|
|
24
|
+
showToolbar(): boolean;
|
|
25
|
+
get pageStart(): number;
|
|
26
|
+
get pageEnd(): number;
|
|
27
|
+
prevPage(): void;
|
|
28
|
+
nextPage(): void;
|
|
29
|
+
hasNextPage(): boolean;
|
|
30
|
+
private updateRows;
|
|
31
|
+
private getRowsFromBinding;
|
|
32
|
+
private getDependencyFieldIds;
|
|
33
|
+
protected resolveCellValue(row: Record<string, unknown>, path: string): string;
|
|
34
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TableWidgetComponent, never>;
|
|
35
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TableWidgetComponent, "app-table-widget", never, { "config": { "alias": "config"; "required": true; }; "engine": { "alias": "engine"; "required": false; }; "control": { "alias": "control"; "required": false; }; }, {}, never, never, true, never>;
|
|
36
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class TextBlockWidgetComponent {
|
|
3
|
+
private readonly editor;
|
|
4
|
+
private readonly router;
|
|
5
|
+
config: any;
|
|
6
|
+
engine?: any;
|
|
7
|
+
control?: any;
|
|
8
|
+
getStyles(): Record<string, any>;
|
|
9
|
+
isDesignMode(): boolean;
|
|
10
|
+
isEditing(): boolean;
|
|
11
|
+
textEditorClass(): string;
|
|
12
|
+
textContainerClass(): string;
|
|
13
|
+
textHtml(): string;
|
|
14
|
+
quillHtml(): string;
|
|
15
|
+
onHtmlChange(html: string): void;
|
|
16
|
+
onLinkClick(event: MouseEvent): void;
|
|
17
|
+
private wrapHtmlForQuill;
|
|
18
|
+
private normalizeInlineHtml;
|
|
19
|
+
private normalizeInternalHref;
|
|
20
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TextBlockWidgetComponent, never>;
|
|
21
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TextBlockWidgetComponent, "app-text-block-widget", never, { "config": { "alias": "config"; "required": false; }; "engine": { "alias": "engine"; "required": false; }; "control": { "alias": "control"; "required": false; }; }, {}, never, never, true, never>;
|
|
22
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { OnInit, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
|
|
2
|
+
import { FormControl } from '@angular/forms';
|
|
3
|
+
import { FormEngine } from '../../../form-core/form-engine';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class ImageWidgetComponent implements OnInit, OnChanges, OnDestroy {
|
|
6
|
+
config: any;
|
|
7
|
+
engine?: FormEngine;
|
|
8
|
+
control?: FormControl;
|
|
9
|
+
displaySrc: string | null;
|
|
10
|
+
private readonly destroyRef;
|
|
11
|
+
private readonly dataProvider;
|
|
12
|
+
ngOnInit(): void;
|
|
13
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
14
|
+
ngOnDestroy(): void;
|
|
15
|
+
private updateSrc;
|
|
16
|
+
getContainerStyles(): Record<string, any>;
|
|
17
|
+
getSpacing(token: string): string;
|
|
18
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ImageWidgetComponent, never>;
|
|
19
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ImageWidgetComponent, "app-image-widget", never, { "config": { "alias": "config"; "required": false; }; "engine": { "alias": "engine"; "required": false; }; "control": { "alias": "control"; "required": false; }; }, {}, never, never, true, never>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared helpers for normalizing style objects coming from widget configs.
|
|
3
|
+
* - Converts number values to px strings.
|
|
4
|
+
* - Skips null/undefined/empty values.
|
|
5
|
+
*/
|
|
6
|
+
export type StyleRecord = Record<string, any>;
|
|
7
|
+
export declare function normalizeStyle(style?: StyleRecord): Record<string, any>;
|
|
8
|
+
export declare function mergeAndNormalize(base?: StyleRecord, override?: StyleRecord): Record<string, any>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { PropertyField, PropertySection } from './widget-definition';
|
|
2
|
+
export declare const LAYOUT_FIELDS: PropertyField[];
|
|
3
|
+
export declare const SPACING_MARGIN_FIELDS: PropertyField[];
|
|
4
|
+
export declare const SPACING_PADDING_FIELDS: PropertyField[];
|
|
5
|
+
export declare const SPACING_BOX_MODEL_FIELD: PropertyField;
|
|
6
|
+
export declare const APPEARANCE_FIELDS: PropertyField[];
|
|
7
|
+
export declare const TYPOGRAPHY_FIELDS: PropertyField[];
|
|
8
|
+
export declare const TRANSFORM_FIELDS: PropertyField[];
|
|
9
|
+
export declare const EFFECTS_FIELDS: PropertyField[];
|
|
10
|
+
export declare const STYLE_LAYOUT_SECTION: PropertySection;
|
|
11
|
+
export declare const STYLE_SPACING_SECTION: PropertySection;
|
|
12
|
+
export declare const STYLE_APPEARANCE_SECTION: PropertySection;
|
|
13
|
+
export declare const STYLE_TYPOGRAPHY_SECTION: PropertySection;
|
|
14
|
+
export declare const STYLE_TRANSFORM_SECTION: PropertySection;
|
|
15
|
+
export declare const STYLE_EFFECTS_SECTION: PropertySection;
|
|
16
|
+
export declare const STYLE_SECTIONS: PropertySection[];
|
|
17
|
+
/**
|
|
18
|
+
* Standard style sections for form widgets (no transforms)
|
|
19
|
+
*/
|
|
20
|
+
export declare const STANDARD_FORM_STYLE_SECTIONS: PropertySection[];
|
|
21
|
+
/**
|
|
22
|
+
* Full style sections for web widgets (includes transforms)
|
|
23
|
+
*/
|
|
24
|
+
export declare const FULL_WEB_STYLE_SECTIONS: PropertySection[];
|
|
25
|
+
/**
|
|
26
|
+
* Email-safe style sections (no transforms or advanced effects)
|
|
27
|
+
*/
|
|
28
|
+
export declare const EMAIL_SAFE_STYLE_SECTIONS: PropertySection[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { STYLE_LAYOUT_SECTION, STYLE_SPACING_SECTION, STYLE_APPEARANCE_SECTION, STYLE_TYPOGRAPHY_SECTION, STYLE_TRANSFORM_SECTION, STYLE_EFFECTS_SECTION, STYLE_SECTIONS } from './style-properties';
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Type, InjectionToken } from '@angular/core';
|
|
2
|
+
import { WidgetKind, DesignerFlavor } from '../form-core/models';
|
|
3
|
+
export interface WidgetConfig {
|
|
4
|
+
label?: string;
|
|
5
|
+
name?: string;
|
|
6
|
+
placeholder?: string;
|
|
7
|
+
required?: boolean;
|
|
8
|
+
[key: string]: any;
|
|
9
|
+
}
|
|
10
|
+
export type PropertyFieldType = 'text' | 'textarea' | 'number' | 'select' | 'checkbox' | 'slide-toggle' | 'color' | 'color-swatch' | 'icon-picker' | 'padding' | 'margin' | 'shadow' | 'border' | 'options-editor' | 'validators-editor' | 'conditional-editor' | 'custom' | 'field-reference' | 'dimension' | 'edge-box' | 'box-model' | 'range-number' | 'select-icon';
|
|
11
|
+
export interface PropertyField {
|
|
12
|
+
key: string;
|
|
13
|
+
type: PropertyFieldType;
|
|
14
|
+
label: string;
|
|
15
|
+
placeholder?: string;
|
|
16
|
+
helpText?: string;
|
|
17
|
+
hint?: string;
|
|
18
|
+
options?: {
|
|
19
|
+
label: string;
|
|
20
|
+
value: any;
|
|
21
|
+
icon?: string;
|
|
22
|
+
}[];
|
|
23
|
+
allowedFieldTypes?: string[];
|
|
24
|
+
includeSelf?: boolean;
|
|
25
|
+
min?: number;
|
|
26
|
+
max?: number;
|
|
27
|
+
step?: number;
|
|
28
|
+
icon?: string;
|
|
29
|
+
unit?: string;
|
|
30
|
+
linkedByDefault?: boolean;
|
|
31
|
+
allowedUnits?: string[];
|
|
32
|
+
customComponent?: Type<any>;
|
|
33
|
+
customInputs?: Record<string, any>;
|
|
34
|
+
hiddenIf?: (config: any) => boolean;
|
|
35
|
+
}
|
|
36
|
+
export interface PropertySection {
|
|
37
|
+
label: string;
|
|
38
|
+
expanded?: boolean;
|
|
39
|
+
fields: PropertyField[];
|
|
40
|
+
}
|
|
41
|
+
export declare const WIDGET_ID_SEPARATOR: ":";
|
|
42
|
+
/**
|
|
43
|
+
* Generates a stable widget ID from a plugin ID and widget name/type.
|
|
44
|
+
* @param pluginId Globally unique plugin ID (e.g. 'core.form', 'acme.analytics')
|
|
45
|
+
* @param widgetName Short widget identifier (e.g. 'text', 'line-chart')
|
|
46
|
+
*/
|
|
47
|
+
export declare function buildWidgetId(pluginId: string, widgetName: string): string;
|
|
48
|
+
/**
|
|
49
|
+
* Implementation helper for defining widgets with standard IDs.
|
|
50
|
+
* Plugin authors should use this to ensure ID consistency.
|
|
51
|
+
*/
|
|
52
|
+
export declare function defineWidget(pluginId: string, def: Omit<WidgetDefinition, 'id'>): WidgetDefinition;
|
|
53
|
+
export type DataShape = 'scalar' | 'list';
|
|
54
|
+
export interface DataBindingContract {
|
|
55
|
+
shape: DataShape;
|
|
56
|
+
targetPath?: string;
|
|
57
|
+
}
|
|
58
|
+
export interface WidgetPaletteConfig {
|
|
59
|
+
hidden?: boolean;
|
|
60
|
+
}
|
|
61
|
+
export interface WidgetDefinition {
|
|
62
|
+
id: string;
|
|
63
|
+
kind: WidgetKind;
|
|
64
|
+
flavor?: DesignerFlavor;
|
|
65
|
+
type: string;
|
|
66
|
+
icon: string;
|
|
67
|
+
label: string;
|
|
68
|
+
createConfig: () => any;
|
|
69
|
+
renderer: Type<any>;
|
|
70
|
+
properties?: PropertySection[];
|
|
71
|
+
dataBinding?: DataBindingContract;
|
|
72
|
+
palette?: WidgetPaletteConfig;
|
|
73
|
+
dataConsumer?: 'value' | 'list' | 'image' | 'none';
|
|
74
|
+
inspector?: Type<any>;
|
|
75
|
+
}
|
|
76
|
+
export interface WidgetPack {
|
|
77
|
+
flavor: DesignerFlavor;
|
|
78
|
+
widgets: WidgetDefinition[];
|
|
79
|
+
}
|
|
80
|
+
export declare const WIDGET_DEFINITIONS: InjectionToken<WidgetDefinition[]>;
|
|
81
|
+
export declare function isWidgetVisibleInPalette(widget: WidgetDefinition): boolean;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
import type { FieldSchema } from '../form-core/models';
|
|
3
|
+
export type WidgetEditorContext = {
|
|
4
|
+
isDesignMode: () => boolean;
|
|
5
|
+
isSelected: () => boolean;
|
|
6
|
+
updateField: (fieldId: string, updates: Partial<FieldSchema>) => void;
|
|
7
|
+
};
|
|
8
|
+
export declare const WIDGET_EDITOR_CONTEXT: InjectionToken<WidgetEditorContext>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { DesignerFlavor } from '../form-core/models';
|
|
2
|
+
import { WidgetDefinition, WidgetPack } from './widget-definition';
|
|
3
|
+
export declare const DEFAULT_WIDGET_PACKS: WidgetPack[];
|
|
4
|
+
export declare function getWidgetsForFlavor(flavor: DesignerFlavor, packs?: WidgetPack[]): WidgetDefinition[];
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ngx-form-designer",
|
|
3
|
+
"version": "0.0.23",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": "^19.0.0",
|
|
6
|
+
"@angular/core": "^19.0.0",
|
|
7
|
+
"@angular/forms": "^19.0.0",
|
|
8
|
+
"@angular/cdk": "^19.0.0",
|
|
9
|
+
"@monaco-editor/loader": "^1.4.0",
|
|
10
|
+
"lucide-angular": "^0.469.0",
|
|
11
|
+
"quill": "^2.0.3",
|
|
12
|
+
"react": "^18.2.0",
|
|
13
|
+
"react-dom": "^18.2.0",
|
|
14
|
+
"@babel/standalone": "^7.25.0",
|
|
15
|
+
"@json-editor/json-editor": "^2.15.2"
|
|
16
|
+
},
|
|
17
|
+
"peerDependenciesMeta": {
|
|
18
|
+
"react": {
|
|
19
|
+
"optional": true
|
|
20
|
+
},
|
|
21
|
+
"react-dom": {
|
|
22
|
+
"optional": true
|
|
23
|
+
},
|
|
24
|
+
"@babel/standalone": {
|
|
25
|
+
"optional": true
|
|
26
|
+
},
|
|
27
|
+
"@json-editor/json-editor": {
|
|
28
|
+
"optional": true
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"tslib": "^2.3.0",
|
|
33
|
+
"uuid": "^13.0.0"
|
|
34
|
+
},
|
|
35
|
+
"sideEffects": false,
|
|
36
|
+
"module": "fesm2022/ngx-form-designer.mjs",
|
|
37
|
+
"typings": "index.d.ts",
|
|
38
|
+
"exports": {
|
|
39
|
+
"./package.json": {
|
|
40
|
+
"default": "./package.json"
|
|
41
|
+
},
|
|
42
|
+
".": {
|
|
43
|
+
"types": "./index.d.ts",
|
|
44
|
+
"default": "./fesm2022/ngx-form-designer.mjs"
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|