@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.
Files changed (69) hide show
  1. package/README.md +2 -1
  2. package/dist/core.cjs +2 -0
  3. package/dist/core.cjs.map +1 -0
  4. package/dist/core.js +29 -0
  5. package/dist/core.js.map +1 -0
  6. package/dist/index-D79WbFRY.cjs +2 -0
  7. package/dist/index-D79WbFRY.cjs.map +1 -0
  8. package/dist/index-c6HOrx9r.js +523 -0
  9. package/dist/index-c6HOrx9r.js.map +1 -0
  10. package/dist/index.cjs +8490 -5
  11. package/dist/index.cjs.map +1 -1
  12. package/dist/index.js +27958 -2680
  13. package/dist/index.js.map +1 -1
  14. package/dist/style.css +1 -0
  15. package/dist/types/built-in/PbColumn.vue.d.ts +41 -0
  16. package/dist/types/built-in/PbContainer.vue.d.ts +32 -0
  17. package/dist/types/built-in/PbImage.vue.d.ts +42 -0
  18. package/dist/types/built-in/PbRow.vue.d.ts +41 -0
  19. package/dist/types/built-in/PbSection.vue.d.ts +50 -0
  20. package/dist/types/built-in/PbText.vue.d.ts +25 -0
  21. package/dist/types/built-in/PbVideo.vue.d.ts +27 -0
  22. package/dist/types/built-in/index.d.ts +10 -0
  23. package/dist/types/components/PageBuilder.vue.d.ts +50 -0
  24. package/dist/types/components/editor/EditorCanvas.vue.d.ts +67 -0
  25. package/dist/types/components/editor/EditorToolbar.vue.d.ts +97 -0
  26. package/dist/types/components/editor/IframeCanvas.vue.d.ts +102 -0
  27. package/dist/types/components/editor/LeftDrawer.vue.d.ts +46 -0
  28. package/dist/types/components/editor/NodeContextMenu.vue.d.ts +66 -0
  29. package/dist/types/components/editor/PageEditor.vue.d.ts +20 -0
  30. package/dist/types/components/editor/PbIcon.vue.d.ts +25 -0
  31. package/dist/types/components/editor/RightDrawer.vue.d.ts +43 -0
  32. package/dist/types/components/editor/TreePanel.vue.d.ts +28 -0
  33. package/dist/types/components/editor/prop-editors/MediaPicker.vue.d.ts +20 -0
  34. package/dist/types/components/editor/prop-editors/PropBooleanEditor.vue.d.ts +18 -0
  35. package/dist/types/components/editor/prop-editors/PropColorEditor.vue.d.ts +18 -0
  36. package/dist/types/components/editor/prop-editors/PropNumberEditor.vue.d.ts +36 -0
  37. package/dist/types/components/editor/prop-editors/PropSelectEditor.vue.d.ts +31 -0
  38. package/dist/types/components/editor/prop-editors/PropTextEditor.vue.d.ts +27 -0
  39. package/dist/types/components/editor/prop-editors/RichTextEditor.vue.d.ts +27 -0
  40. package/dist/types/components/editor/prop-editors/index.d.ts +29 -0
  41. package/dist/types/components/reader/NodeRenderer.vue.d.ts +33 -0
  42. package/dist/types/components/reader/PageReader.vue.d.ts +14 -0
  43. package/dist/types/components/shared/ErrorBoundary.vue.d.ts +21 -0
  44. package/dist/types/composables/use-drag-drop.d.ts +23 -0
  45. package/dist/types/composables/use-editor.d.ts +40 -0
  46. package/dist/types/composables/use-node-tree.d.ts +23 -0
  47. package/dist/types/composables/use-page-builder.d.ts +28 -0
  48. package/dist/types/core/drop-slot.d.ts +12 -0
  49. package/dist/types/core/errors.d.ts +14 -0
  50. package/dist/types/core/iframe-bridge.d.ts +85 -0
  51. package/dist/types/core/index.d.ts +18 -0
  52. package/dist/types/core/registry.d.ts +43 -0
  53. package/dist/types/core/sanitize.d.ts +3 -0
  54. package/dist/types/core/tree.d.ts +56 -0
  55. package/dist/types/core/validation.d.ts +10 -0
  56. package/dist/types/core/virtual-tree.d.ts +44 -0
  57. package/dist/types/i18n/context.d.ts +13 -0
  58. package/dist/types/i18n/index.d.ts +3 -0
  59. package/dist/types/i18n/messages.d.ts +3 -0
  60. package/dist/types/i18n/translator.d.ts +14 -0
  61. package/dist/types/index.d.ts +27 -0
  62. package/dist/types/plugin.d.ts +18 -0
  63. package/dist/types/types/component.d.ts +68 -0
  64. package/dist/types/types/editor.d.ts +54 -0
  65. package/dist/types/types/index.d.ts +6 -0
  66. package/dist/types/types/keys.d.ts +13 -0
  67. package/dist/types/types/node.d.ts +54 -0
  68. package/package.json +10 -2
  69. 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;