@improba/page-builder 0.1.3 → 0.2.1
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 +2 -1
- package/dist/core.cjs +2 -0
- package/dist/core.cjs.map +1 -0
- package/dist/core.js +29 -0
- package/dist/core.js.map +1 -0
- package/dist/index-D79WbFRY.cjs +2 -0
- package/dist/index-D79WbFRY.cjs.map +1 -0
- package/dist/index-c6HOrx9r.js +523 -0
- package/dist/index-c6HOrx9r.js.map +1 -0
- package/dist/index.cjs +8490 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +27958 -2680
- package/dist/index.js.map +1 -1
- package/dist/style.css +1 -0
- package/dist/types/built-in/PbColumn.vue.d.ts +41 -0
- package/dist/types/built-in/PbContainer.vue.d.ts +32 -0
- package/dist/types/built-in/PbImage.vue.d.ts +42 -0
- package/dist/types/built-in/PbRow.vue.d.ts +41 -0
- package/dist/types/built-in/PbSection.vue.d.ts +50 -0
- package/dist/types/built-in/PbText.vue.d.ts +25 -0
- package/dist/types/built-in/PbVideo.vue.d.ts +27 -0
- package/dist/types/built-in/index.d.ts +10 -0
- package/dist/types/components/PageBuilder.vue.d.ts +50 -0
- package/dist/types/components/editor/EditorCanvas.vue.d.ts +67 -0
- package/dist/types/components/editor/EditorToolbar.vue.d.ts +97 -0
- package/dist/types/components/editor/IframeCanvas.vue.d.ts +102 -0
- package/dist/types/components/editor/LeftDrawer.vue.d.ts +46 -0
- package/dist/types/components/editor/NodeContextMenu.vue.d.ts +66 -0
- package/dist/types/components/editor/PageEditor.vue.d.ts +20 -0
- package/dist/types/components/editor/PbIcon.vue.d.ts +25 -0
- package/dist/types/components/editor/RightDrawer.vue.d.ts +43 -0
- package/dist/types/components/editor/TreePanel.vue.d.ts +28 -0
- package/dist/types/components/editor/prop-editors/MediaPicker.vue.d.ts +20 -0
- package/dist/types/components/editor/prop-editors/PropBooleanEditor.vue.d.ts +18 -0
- package/dist/types/components/editor/prop-editors/PropColorEditor.vue.d.ts +18 -0
- package/dist/types/components/editor/prop-editors/PropNumberEditor.vue.d.ts +36 -0
- package/dist/types/components/editor/prop-editors/PropSelectEditor.vue.d.ts +31 -0
- package/dist/types/components/editor/prop-editors/PropTextEditor.vue.d.ts +27 -0
- package/dist/types/components/editor/prop-editors/RichTextEditor.vue.d.ts +27 -0
- package/dist/types/components/editor/prop-editors/index.d.ts +29 -0
- package/dist/types/components/reader/NodeRenderer.vue.d.ts +33 -0
- package/dist/types/components/reader/PageReader.vue.d.ts +14 -0
- package/dist/types/components/shared/ErrorBoundary.vue.d.ts +21 -0
- package/dist/types/composables/use-drag-drop.d.ts +23 -0
- package/dist/types/composables/use-editor.d.ts +40 -0
- package/dist/types/composables/use-node-tree.d.ts +23 -0
- package/dist/types/composables/use-page-builder.d.ts +28 -0
- package/dist/types/core/drop-slot.d.ts +12 -0
- package/dist/types/core/errors.d.ts +14 -0
- package/dist/types/core/iframe-bridge.d.ts +85 -0
- package/dist/types/core/index.d.ts +18 -0
- package/dist/types/core/registry.d.ts +43 -0
- package/dist/types/core/sanitize.d.ts +3 -0
- package/dist/types/core/tree.d.ts +56 -0
- package/dist/types/core/validation.d.ts +10 -0
- package/dist/types/core/virtual-tree.d.ts +44 -0
- package/dist/types/i18n/context.d.ts +13 -0
- package/dist/types/i18n/index.d.ts +3 -0
- package/dist/types/i18n/messages.d.ts +3 -0
- package/dist/types/i18n/translator.d.ts +14 -0
- package/dist/types/index.d.ts +27 -0
- package/dist/types/plugin.d.ts +18 -0
- package/dist/types/types/component.d.ts +68 -0
- package/dist/types/types/editor.d.ts +54 -0
- package/dist/types/types/index.d.ts +6 -0
- package/dist/types/types/keys.d.ts +13 -0
- package/dist/types/types/node.d.ts +54 -0
- package/package.json +10 -2
- package/dist/index.css +0 -1
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
export type NodeContextMenuAction = 'duplicate' | 'delete' | 'move-up' | 'move-down';
|
|
2
|
+
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
3
|
+
open: {
|
|
4
|
+
type: BooleanConstructor;
|
|
5
|
+
default: boolean;
|
|
6
|
+
};
|
|
7
|
+
x: {
|
|
8
|
+
type: NumberConstructor;
|
|
9
|
+
default: number;
|
|
10
|
+
};
|
|
11
|
+
y: {
|
|
12
|
+
type: NumberConstructor;
|
|
13
|
+
default: number;
|
|
14
|
+
};
|
|
15
|
+
canDelete: {
|
|
16
|
+
type: BooleanConstructor;
|
|
17
|
+
default: boolean;
|
|
18
|
+
};
|
|
19
|
+
canMoveUp: {
|
|
20
|
+
type: BooleanConstructor;
|
|
21
|
+
default: boolean;
|
|
22
|
+
};
|
|
23
|
+
canMoveDown: {
|
|
24
|
+
type: BooleanConstructor;
|
|
25
|
+
default: boolean;
|
|
26
|
+
};
|
|
27
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
28
|
+
close: () => any;
|
|
29
|
+
action: (action: NodeContextMenuAction) => any;
|
|
30
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
31
|
+
open: {
|
|
32
|
+
type: BooleanConstructor;
|
|
33
|
+
default: boolean;
|
|
34
|
+
};
|
|
35
|
+
x: {
|
|
36
|
+
type: NumberConstructor;
|
|
37
|
+
default: number;
|
|
38
|
+
};
|
|
39
|
+
y: {
|
|
40
|
+
type: NumberConstructor;
|
|
41
|
+
default: number;
|
|
42
|
+
};
|
|
43
|
+
canDelete: {
|
|
44
|
+
type: BooleanConstructor;
|
|
45
|
+
default: boolean;
|
|
46
|
+
};
|
|
47
|
+
canMoveUp: {
|
|
48
|
+
type: BooleanConstructor;
|
|
49
|
+
default: boolean;
|
|
50
|
+
};
|
|
51
|
+
canMoveDown: {
|
|
52
|
+
type: BooleanConstructor;
|
|
53
|
+
default: boolean;
|
|
54
|
+
};
|
|
55
|
+
}>> & Readonly<{
|
|
56
|
+
onClose?: (() => any) | undefined;
|
|
57
|
+
onAction?: ((action: NodeContextMenuAction) => any) | undefined;
|
|
58
|
+
}>, {
|
|
59
|
+
open: boolean;
|
|
60
|
+
y: number;
|
|
61
|
+
x: number;
|
|
62
|
+
canDelete: boolean;
|
|
63
|
+
canMoveUp: boolean;
|
|
64
|
+
canMoveDown: boolean;
|
|
65
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
66
|
+
export default _default;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type PropType } from 'vue';
|
|
2
|
+
import type { IPageData, INode, IPageSavePayload } from '@/types/node';
|
|
3
|
+
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
4
|
+
pageData: {
|
|
5
|
+
type: PropType<IPageData>;
|
|
6
|
+
required: true;
|
|
7
|
+
};
|
|
8
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
9
|
+
save: (payload: IPageSavePayload) => any;
|
|
10
|
+
change: (tree: INode) => any;
|
|
11
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
12
|
+
pageData: {
|
|
13
|
+
type: PropType<IPageData>;
|
|
14
|
+
required: true;
|
|
15
|
+
};
|
|
16
|
+
}>> & Readonly<{
|
|
17
|
+
onSave?: ((payload: IPageSavePayload) => any) | undefined;
|
|
18
|
+
onChange?: ((tree: INode) => any) | undefined;
|
|
19
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
20
|
+
export default _default;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
2
|
+
icon: {
|
|
3
|
+
type: StringConstructor;
|
|
4
|
+
default: undefined;
|
|
5
|
+
};
|
|
6
|
+
size: {
|
|
7
|
+
type: NumberConstructor;
|
|
8
|
+
default: number;
|
|
9
|
+
};
|
|
10
|
+
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
11
|
+
[key: string]: any;
|
|
12
|
+
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
13
|
+
icon: {
|
|
14
|
+
type: StringConstructor;
|
|
15
|
+
default: undefined;
|
|
16
|
+
};
|
|
17
|
+
size: {
|
|
18
|
+
type: NumberConstructor;
|
|
19
|
+
default: number;
|
|
20
|
+
};
|
|
21
|
+
}>> & Readonly<{}>, {
|
|
22
|
+
size: number;
|
|
23
|
+
icon: string;
|
|
24
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
25
|
+
export default _default;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type PropType } from 'vue';
|
|
2
|
+
import type { INode } from '@/types/node';
|
|
3
|
+
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
4
|
+
open: {
|
|
5
|
+
type: BooleanConstructor;
|
|
6
|
+
default: boolean;
|
|
7
|
+
};
|
|
8
|
+
selectedNodeId: {
|
|
9
|
+
type: PropType<number | null>;
|
|
10
|
+
default: null;
|
|
11
|
+
};
|
|
12
|
+
content: {
|
|
13
|
+
type: PropType<INode>;
|
|
14
|
+
required: true;
|
|
15
|
+
};
|
|
16
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
17
|
+
delete: (nodeId: number) => any;
|
|
18
|
+
toggle: () => any;
|
|
19
|
+
"update-props": (nodeId: number, props: Record<string, unknown>) => any;
|
|
20
|
+
duplicate: (nodeId: number) => any;
|
|
21
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
22
|
+
open: {
|
|
23
|
+
type: BooleanConstructor;
|
|
24
|
+
default: boolean;
|
|
25
|
+
};
|
|
26
|
+
selectedNodeId: {
|
|
27
|
+
type: PropType<number | null>;
|
|
28
|
+
default: null;
|
|
29
|
+
};
|
|
30
|
+
content: {
|
|
31
|
+
type: PropType<INode>;
|
|
32
|
+
required: true;
|
|
33
|
+
};
|
|
34
|
+
}>> & Readonly<{
|
|
35
|
+
onDelete?: ((nodeId: number) => any) | undefined;
|
|
36
|
+
onToggle?: (() => any) | undefined;
|
|
37
|
+
"onUpdate-props"?: ((nodeId: number, props: Record<string, unknown>) => any) | undefined;
|
|
38
|
+
onDuplicate?: ((nodeId: number) => any) | undefined;
|
|
39
|
+
}>, {
|
|
40
|
+
selectedNodeId: number | null;
|
|
41
|
+
open: boolean;
|
|
42
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
43
|
+
export default _default;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type PropType } from 'vue';
|
|
2
|
+
import type { INode } from '@/types/node';
|
|
3
|
+
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
4
|
+
content: {
|
|
5
|
+
type: PropType<INode>;
|
|
6
|
+
required: true;
|
|
7
|
+
};
|
|
8
|
+
selectedNodeId: {
|
|
9
|
+
type: PropType<number | null>;
|
|
10
|
+
default: null;
|
|
11
|
+
};
|
|
12
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
13
|
+
select: (nodeId: number) => any;
|
|
14
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
15
|
+
content: {
|
|
16
|
+
type: PropType<INode>;
|
|
17
|
+
required: true;
|
|
18
|
+
};
|
|
19
|
+
selectedNodeId: {
|
|
20
|
+
type: PropType<number | null>;
|
|
21
|
+
default: null;
|
|
22
|
+
};
|
|
23
|
+
}>> & Readonly<{
|
|
24
|
+
onSelect?: ((nodeId: number) => any) | undefined;
|
|
25
|
+
}>, {
|
|
26
|
+
selectedNodeId: number | null;
|
|
27
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
28
|
+
export default _default;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
2
|
+
modelValue: {
|
|
3
|
+
type: StringConstructor;
|
|
4
|
+
default: string;
|
|
5
|
+
};
|
|
6
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
7
|
+
"update:modelValue": (value: string) => any;
|
|
8
|
+
upload: () => any;
|
|
9
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
10
|
+
modelValue: {
|
|
11
|
+
type: StringConstructor;
|
|
12
|
+
default: string;
|
|
13
|
+
};
|
|
14
|
+
}>> & Readonly<{
|
|
15
|
+
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
|
|
16
|
+
onUpload?: (() => any) | undefined;
|
|
17
|
+
}>, {
|
|
18
|
+
modelValue: string;
|
|
19
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
20
|
+
export default _default;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
2
|
+
modelValue: {
|
|
3
|
+
type: BooleanConstructor;
|
|
4
|
+
default: boolean;
|
|
5
|
+
};
|
|
6
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
7
|
+
"update:modelValue": (value: boolean) => any;
|
|
8
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
9
|
+
modelValue: {
|
|
10
|
+
type: BooleanConstructor;
|
|
11
|
+
default: boolean;
|
|
12
|
+
};
|
|
13
|
+
}>> & Readonly<{
|
|
14
|
+
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
|
|
15
|
+
}>, {
|
|
16
|
+
modelValue: boolean;
|
|
17
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
18
|
+
export default _default;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
2
|
+
modelValue: {
|
|
3
|
+
type: StringConstructor;
|
|
4
|
+
default: string;
|
|
5
|
+
};
|
|
6
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
7
|
+
"update:modelValue": (value: string) => any;
|
|
8
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
9
|
+
modelValue: {
|
|
10
|
+
type: StringConstructor;
|
|
11
|
+
default: string;
|
|
12
|
+
};
|
|
13
|
+
}>> & Readonly<{
|
|
14
|
+
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
|
|
15
|
+
}>, {
|
|
16
|
+
modelValue: string;
|
|
17
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
18
|
+
export default _default;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
2
|
+
modelValue: {
|
|
3
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
4
|
+
default: undefined;
|
|
5
|
+
};
|
|
6
|
+
min: {
|
|
7
|
+
type: NumberConstructor;
|
|
8
|
+
default: undefined;
|
|
9
|
+
};
|
|
10
|
+
max: {
|
|
11
|
+
type: NumberConstructor;
|
|
12
|
+
default: undefined;
|
|
13
|
+
};
|
|
14
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
15
|
+
"update:modelValue": (value: number | undefined) => any;
|
|
16
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
17
|
+
modelValue: {
|
|
18
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
19
|
+
default: undefined;
|
|
20
|
+
};
|
|
21
|
+
min: {
|
|
22
|
+
type: NumberConstructor;
|
|
23
|
+
default: undefined;
|
|
24
|
+
};
|
|
25
|
+
max: {
|
|
26
|
+
type: NumberConstructor;
|
|
27
|
+
default: undefined;
|
|
28
|
+
};
|
|
29
|
+
}>> & Readonly<{
|
|
30
|
+
"onUpdate:modelValue"?: ((value: number | undefined) => any) | undefined;
|
|
31
|
+
}>, {
|
|
32
|
+
min: number;
|
|
33
|
+
max: number;
|
|
34
|
+
modelValue: string | number;
|
|
35
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
36
|
+
export default _default;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { IPropDefinition } from '@/types/component';
|
|
2
|
+
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
3
|
+
modelValue: {
|
|
4
|
+
type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
|
|
5
|
+
default: undefined;
|
|
6
|
+
};
|
|
7
|
+
options: {
|
|
8
|
+
type: () => IPropDefinition["options"];
|
|
9
|
+
default: () => never[];
|
|
10
|
+
};
|
|
11
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
12
|
+
"update:modelValue": (value: string | number | boolean | undefined) => any;
|
|
13
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
14
|
+
modelValue: {
|
|
15
|
+
type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
|
|
16
|
+
default: undefined;
|
|
17
|
+
};
|
|
18
|
+
options: {
|
|
19
|
+
type: () => IPropDefinition["options"];
|
|
20
|
+
default: () => never[];
|
|
21
|
+
};
|
|
22
|
+
}>> & Readonly<{
|
|
23
|
+
"onUpdate:modelValue"?: ((value: string | number | boolean | undefined) => any) | undefined;
|
|
24
|
+
}>, {
|
|
25
|
+
modelValue: string | number | boolean;
|
|
26
|
+
options: {
|
|
27
|
+
label: string;
|
|
28
|
+
value: string | number | boolean;
|
|
29
|
+
}[] | undefined;
|
|
30
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
31
|
+
export default _default;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
2
|
+
modelValue: {
|
|
3
|
+
type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
|
|
4
|
+
default: string;
|
|
5
|
+
};
|
|
6
|
+
placeholder: {
|
|
7
|
+
type: StringConstructor;
|
|
8
|
+
default: string;
|
|
9
|
+
};
|
|
10
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
11
|
+
"update:modelValue": (value: string) => any;
|
|
12
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
13
|
+
modelValue: {
|
|
14
|
+
type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
|
|
15
|
+
default: string;
|
|
16
|
+
};
|
|
17
|
+
placeholder: {
|
|
18
|
+
type: StringConstructor;
|
|
19
|
+
default: string;
|
|
20
|
+
};
|
|
21
|
+
}>> & Readonly<{
|
|
22
|
+
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
|
|
23
|
+
}>, {
|
|
24
|
+
placeholder: string;
|
|
25
|
+
modelValue: string | number | boolean;
|
|
26
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
27
|
+
export default _default;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
2
|
+
modelValue: {
|
|
3
|
+
type: StringConstructor;
|
|
4
|
+
default: string;
|
|
5
|
+
};
|
|
6
|
+
placeholder: {
|
|
7
|
+
type: StringConstructor;
|
|
8
|
+
default: string;
|
|
9
|
+
};
|
|
10
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
11
|
+
"update:modelValue": (value: string) => any;
|
|
12
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
13
|
+
modelValue: {
|
|
14
|
+
type: StringConstructor;
|
|
15
|
+
default: string;
|
|
16
|
+
};
|
|
17
|
+
placeholder: {
|
|
18
|
+
type: StringConstructor;
|
|
19
|
+
default: string;
|
|
20
|
+
};
|
|
21
|
+
}>> & Readonly<{
|
|
22
|
+
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
|
|
23
|
+
}>, {
|
|
24
|
+
placeholder: string;
|
|
25
|
+
modelValue: string;
|
|
26
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
27
|
+
export default _default;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Component } from 'vue';
|
|
2
|
+
import type { PropEditorType } from '@/types/component';
|
|
3
|
+
export declare const DEFAULT_PROP_EDITOR: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
4
|
+
modelValue: {
|
|
5
|
+
type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
|
|
6
|
+
default: string;
|
|
7
|
+
};
|
|
8
|
+
placeholder: {
|
|
9
|
+
type: StringConstructor;
|
|
10
|
+
default: string;
|
|
11
|
+
};
|
|
12
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
13
|
+
"update:modelValue": (value: string) => any;
|
|
14
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
15
|
+
modelValue: {
|
|
16
|
+
type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
|
|
17
|
+
default: string;
|
|
18
|
+
};
|
|
19
|
+
placeholder: {
|
|
20
|
+
type: StringConstructor;
|
|
21
|
+
default: string;
|
|
22
|
+
};
|
|
23
|
+
}>> & Readonly<{
|
|
24
|
+
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
|
|
25
|
+
}>, {
|
|
26
|
+
placeholder: string;
|
|
27
|
+
modelValue: string | number | boolean;
|
|
28
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
29
|
+
export declare const PROP_EDITORS: Partial<Record<PropEditorType, Component>>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type PropType } from 'vue';
|
|
2
|
+
import type { INode } from '@/types/node';
|
|
3
|
+
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
4
|
+
node: {
|
|
5
|
+
type: PropType<INode>;
|
|
6
|
+
required: true;
|
|
7
|
+
};
|
|
8
|
+
variables: {
|
|
9
|
+
type: PropType<Record<string, string>>;
|
|
10
|
+
default: () => {};
|
|
11
|
+
};
|
|
12
|
+
markNodes: {
|
|
13
|
+
type: BooleanConstructor;
|
|
14
|
+
default: boolean;
|
|
15
|
+
};
|
|
16
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
17
|
+
node: {
|
|
18
|
+
type: PropType<INode>;
|
|
19
|
+
required: true;
|
|
20
|
+
};
|
|
21
|
+
variables: {
|
|
22
|
+
type: PropType<Record<string, string>>;
|
|
23
|
+
default: () => {};
|
|
24
|
+
};
|
|
25
|
+
markNodes: {
|
|
26
|
+
type: BooleanConstructor;
|
|
27
|
+
default: boolean;
|
|
28
|
+
};
|
|
29
|
+
}>> & Readonly<{}>, {
|
|
30
|
+
variables: Record<string, string>;
|
|
31
|
+
markNodes: boolean;
|
|
32
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
33
|
+
export default _default;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type PropType } from 'vue';
|
|
2
|
+
import type { IPageData } from '@/types/node';
|
|
3
|
+
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
4
|
+
pageData: {
|
|
5
|
+
type: PropType<IPageData>;
|
|
6
|
+
required: true;
|
|
7
|
+
};
|
|
8
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
9
|
+
pageData: {
|
|
10
|
+
type: PropType<IPageData>;
|
|
11
|
+
required: true;
|
|
12
|
+
};
|
|
13
|
+
}>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
14
|
+
export default _default;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
fallbackMessage?: string;
|
|
3
|
+
showDetailsInDev?: boolean;
|
|
4
|
+
diagnosticContext?: string;
|
|
5
|
+
};
|
|
6
|
+
declare var __VLS_1: {};
|
|
7
|
+
type __VLS_Slots = {} & {
|
|
8
|
+
default?: (props: typeof __VLS_1) => any;
|
|
9
|
+
};
|
|
10
|
+
declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
11
|
+
fallbackMessage: string;
|
|
12
|
+
showDetailsInDev: boolean;
|
|
13
|
+
diagnosticContext: string;
|
|
14
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
15
|
+
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
16
|
+
export default _default;
|
|
17
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
18
|
+
new (): {
|
|
19
|
+
$slots: S;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type Ref } from 'vue';
|
|
2
|
+
export interface DragState {
|
|
3
|
+
isDragging: boolean;
|
|
4
|
+
sourceNodeId: number | null;
|
|
5
|
+
sourceComponentName: string | null;
|
|
6
|
+
isNewComponent: boolean;
|
|
7
|
+
dropTargetId: number | null;
|
|
8
|
+
dropIndex: number;
|
|
9
|
+
dropSlot: string;
|
|
10
|
+
}
|
|
11
|
+
export interface DragDropApi {
|
|
12
|
+
dragState: Ref<DragState>;
|
|
13
|
+
startDragExisting: (nodeId: number) => void;
|
|
14
|
+
startDragNew: (componentName: string) => void;
|
|
15
|
+
updateDropTarget: (targetId: number, index: number, slot?: string) => void;
|
|
16
|
+
endDrag: () => DragState;
|
|
17
|
+
cancelDrag: () => void;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Composable for drag-and-drop interactions in the editor.
|
|
21
|
+
* Handles both dragging existing nodes and new components from the palette.
|
|
22
|
+
*/
|
|
23
|
+
export declare function useDragDrop(): DragDropApi;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { ViewportPreset } from '@/types/editor';
|
|
2
|
+
interface UseEditorOptions {
|
|
3
|
+
initialSnapshot?: string;
|
|
4
|
+
initialLabel?: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Composable managing the editor UI state (selection, drawers, history, viewport).
|
|
8
|
+
* Drag-and-drop state is handled separately by useDragDrop.
|
|
9
|
+
*/
|
|
10
|
+
export declare function useEditor(options?: UseEditorOptions): {
|
|
11
|
+
canUndo: import("vue").ComputedRef<boolean>;
|
|
12
|
+
canRedo: import("vue").ComputedRef<boolean>;
|
|
13
|
+
selectNode: (id: number | null) => void;
|
|
14
|
+
hoverNode: (id: number | null) => void;
|
|
15
|
+
toggleLeftDrawer: () => void;
|
|
16
|
+
toggleRightDrawer: () => void;
|
|
17
|
+
setViewport: (preset: ViewportPreset) => void;
|
|
18
|
+
setHistoryBaseline: (snapshot: string, label?: string) => void;
|
|
19
|
+
pushHistory: (label: string, snapshot: string) => void;
|
|
20
|
+
undo: () => string | undefined;
|
|
21
|
+
redo: () => string | undefined;
|
|
22
|
+
selectedNodeId: import("vue").Ref<number | null, number | null>;
|
|
23
|
+
hoveredNodeId: import("vue").Ref<number | null, number | null>;
|
|
24
|
+
leftDrawerOpen: import("vue").Ref<boolean, boolean>;
|
|
25
|
+
rightDrawerOpen: import("vue").Ref<boolean, boolean>;
|
|
26
|
+
history: import("vue").Ref<{
|
|
27
|
+
timestamp: number;
|
|
28
|
+
label: string;
|
|
29
|
+
snapshot: string;
|
|
30
|
+
}[], {
|
|
31
|
+
timestamp: number;
|
|
32
|
+
label: string;
|
|
33
|
+
snapshot: string;
|
|
34
|
+
}[]>;
|
|
35
|
+
historyIndex: import("vue").Ref<number, number>;
|
|
36
|
+
isDirty: import("vue").Ref<boolean, boolean>;
|
|
37
|
+
canvasScale: import("vue").Ref<number, number>;
|
|
38
|
+
viewport: import("vue").Ref<ViewportPreset, ViewportPreset>;
|
|
39
|
+
};
|
|
40
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Ref } from 'vue';
|
|
2
|
+
import type { INode } from '@/types/node';
|
|
3
|
+
export interface UseNodeTreeOptions {
|
|
4
|
+
content: Ref<INode>;
|
|
5
|
+
nextId: () => number;
|
|
6
|
+
onUpdate: (newContent: INode) => void;
|
|
7
|
+
onSnapshot?: (label: string) => void;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Composable for manipulating the node tree (add, remove, move, update props).
|
|
11
|
+
* All mutations clone before modifying to preserve immutability for history.
|
|
12
|
+
*/
|
|
13
|
+
export declare function useNodeTree({ content, nextId, onUpdate, onSnapshot }: UseNodeTreeOptions): {
|
|
14
|
+
addNode: (parentId: number, componentName: string, index: number, slot?: string, defaultProps?: Record<string, unknown>) => number | null;
|
|
15
|
+
deleteNode: (nodeId: number) => void;
|
|
16
|
+
moveNodeTo: (nodeId: number, newParentId: number, index: number, slot?: string) => void;
|
|
17
|
+
updateNodeProps: (nodeId: number, props: Record<string, unknown>) => void;
|
|
18
|
+
duplicateNode: (nodeId: number) => void;
|
|
19
|
+
canMoveNodeUp: (nodeId: number) => boolean;
|
|
20
|
+
canMoveNodeDown: (nodeId: number) => boolean;
|
|
21
|
+
moveNodeUp: (nodeId: number) => void;
|
|
22
|
+
moveNodeDown: (nodeId: number) => void;
|
|
23
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type Ref, type ComputedRef } from 'vue';
|
|
2
|
+
import type { IPageData, INode } from '@/types/node';
|
|
3
|
+
import type { PageBuilderMode } from '@/types/editor';
|
|
4
|
+
export interface UsePageBuilderOptions {
|
|
5
|
+
initialData: IPageData;
|
|
6
|
+
mode?: PageBuilderMode;
|
|
7
|
+
}
|
|
8
|
+
export interface UsePageBuilderReturn {
|
|
9
|
+
mode: Ref<PageBuilderMode>;
|
|
10
|
+
pageData: ComputedRef<IPageData>;
|
|
11
|
+
content: Ref<INode>;
|
|
12
|
+
layout: Ref<INode>;
|
|
13
|
+
maxId: Ref<number>;
|
|
14
|
+
variables: Ref<Record<string, string>>;
|
|
15
|
+
isDirty: Ref<boolean>;
|
|
16
|
+
setMode: (newMode: PageBuilderMode) => void;
|
|
17
|
+
updateContent: (newContent: INode) => void;
|
|
18
|
+
updateLayout: (newLayout: INode) => void;
|
|
19
|
+
nextId: () => number;
|
|
20
|
+
getSnapshot: () => string;
|
|
21
|
+
restoreSnapshot: (snapshot: string) => void;
|
|
22
|
+
reset: () => void;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Main composable for managing page builder state.
|
|
26
|
+
* Used internally by the PageBuilder component.
|
|
27
|
+
*/
|
|
28
|
+
export declare function usePageBuilder(options: UsePageBuilderOptions): UsePageBuilderReturn;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { INode } from '@/types/node';
|
|
2
|
+
import type { ISlotDefinition } from '@/types/component';
|
|
3
|
+
/**
|
|
4
|
+
* Slots of the parent component that accept the given child component name.
|
|
5
|
+
* Used to validate drop targets (canvas and tree panel).
|
|
6
|
+
*/
|
|
7
|
+
export declare function getAllowedDropSlots(parentNode: INode, componentName: string): ISlotDefinition[];
|
|
8
|
+
/**
|
|
9
|
+
* Resolve a valid slot name for dropping the given component into the parent,
|
|
10
|
+
* or null if the parent does not accept this component in any slot.
|
|
11
|
+
*/
|
|
12
|
+
export declare function normalizeDropSlot(parentNode: INode, preferredSlot: string | null | undefined, componentName: string): string | null;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type PageBuilderErrorCode = 'INVALID_PAGE_DATA' | 'INVALID_NODE' | 'INVALID_SNAPSHOT' | 'MISSING_COMPONENT' | 'DUPLICATE_COMPONENT' | 'RENDER_FAILURE' | 'UNKNOWN';
|
|
2
|
+
export interface PageBuilderErrorOptions {
|
|
3
|
+
details?: Record<string, unknown>;
|
|
4
|
+
cause?: unknown;
|
|
5
|
+
}
|
|
6
|
+
export declare class PageBuilderError extends Error {
|
|
7
|
+
readonly code: PageBuilderErrorCode;
|
|
8
|
+
readonly details: Record<string, unknown>;
|
|
9
|
+
constructor(code: PageBuilderErrorCode, message: string, options?: PageBuilderErrorOptions);
|
|
10
|
+
}
|
|
11
|
+
export declare function isPageBuilderError(error: unknown): error is PageBuilderError;
|
|
12
|
+
export declare function createPageBuilderError(code: PageBuilderErrorCode, message: string, options?: PageBuilderErrorOptions): PageBuilderError;
|
|
13
|
+
export declare function toErrorMessage(error: unknown): string;
|
|
14
|
+
export declare function reportDevDiagnostic(context: string, error: unknown, details?: Record<string, unknown>): void;
|