@g1cloud/page-builder-editor 1.0.0-alpha.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 (87) hide show
  1. package/LICENSE +6 -0
  2. package/README.md +23 -0
  3. package/css/bluesea.scss +8244 -0
  4. package/css/canvas-block.scss +20 -0
  5. package/css/canvas-page.scss +62 -0
  6. package/css/canvas-section.scss +51 -0
  7. package/css/canvas-widget.scss +41 -0
  8. package/css/canvas.scss +146 -0
  9. package/css/page-builder-editor.scss +185 -0
  10. package/css/page-builder-viewer.scss +1 -0
  11. package/css/property-editor-image.scss +16 -0
  12. package/css/property-editor-multiline-text.scss +0 -0
  13. package/css/property-editor-product.scss +17 -0
  14. package/css/property-editor-readonly-text.scss +0 -0
  15. package/css/property-editor-select.scss +10 -0
  16. package/css/property-editor-text.scss +10 -0
  17. package/css/property-group-editor-background.scss +40 -0
  18. package/css/property-group-editor-border.scss +25 -0
  19. package/css/property-group-editor-margin.scss +13 -0
  20. package/css/property-group-editor-padding.scss +13 -0
  21. package/css/property-group-editor-position.scss +13 -0
  22. package/css/property-group-editor-size.scss +13 -0
  23. package/css/property-localpart.scss +21 -0
  24. package/css/variable.scss +1 -0
  25. package/dist/PageBuilderEditor.vue.d.ts +21 -0
  26. package/dist/PbPartAddModal-DuLpnV4E.js +50 -0
  27. package/dist/PbPropertyEditorImage-BFIqG-bL.js +42 -0
  28. package/dist/PbPropertyEditorMultilineText-BMeNUGm8.js +42 -0
  29. package/dist/PbPropertyEditorProduct--cf9LI2Z.js +49 -0
  30. package/dist/PbPropertyEditorReadonlyText-Bk0WJxA0.js +31 -0
  31. package/dist/PbPropertyEditorSelect-BJovN1su.js +44 -0
  32. package/dist/PbPropertyEditorText-DNdXl-Tr.js +41 -0
  33. package/dist/PbWidgetAddModal-CQvFYzfU.js +55 -0
  34. package/dist/components/canvas/PbCanvas.vue.d.ts +2 -0
  35. package/dist/components/canvas/PbCanvasFrame.vue.d.ts +2 -0
  36. package/dist/components/depart/PbLoginDepart.vue.d.ts +17 -0
  37. package/dist/components/menu/PbMenu.vue.d.ts +2 -0
  38. package/dist/components/menu/PbToolbar.vue.d.ts +2 -0
  39. package/dist/components/menu/PbToolbarButton.vue.d.ts +17 -0
  40. package/dist/components/menu/PbToolbarButtonGroup.vue.d.ts +17 -0
  41. package/dist/components/modal/PbPartAddModal.vue.d.ts +24 -0
  42. package/dist/components/modal/PbWidgetAddModal.vue.d.ts +24 -0
  43. package/dist/components/navigator/PbNavigator.vue.d.ts +2 -0
  44. package/dist/components/part/PbAddWidgetButton.vue.d.ts +2 -0
  45. package/dist/components/part/PbBlock.vue.d.ts +17 -0
  46. package/dist/components/part/PbPage.vue.d.ts +21 -0
  47. package/dist/components/part/PbSection.vue.d.ts +17 -0
  48. package/dist/components/part/PbWidget.vue.d.ts +17 -0
  49. package/dist/components/sidebar/PbSidebar.vue.d.ts +2 -0
  50. package/dist/components/sidebar/PbSidebarProperties.vue.d.ts +2 -0
  51. package/dist/components/sidebar/PbSidebarPropertyEditor.vue.d.ts +20 -0
  52. package/dist/components/sidebar/PbSidebarPropertyGroupEditor.vue.d.ts +22 -0
  53. package/dist/components/sidebar/property/PbPropertyEditorImage.vue.d.ts +23 -0
  54. package/dist/components/sidebar/property/PbPropertyEditorMultilineText.vue.d.ts +23 -0
  55. package/dist/components/sidebar/property/PbPropertyEditorProduct.vue.d.ts +23 -0
  56. package/dist/components/sidebar/property/PbPropertyEditorReadonlyText.vue.d.ts +19 -0
  57. package/dist/components/sidebar/property/PbPropertyEditorSelect.vue.d.ts +23 -0
  58. package/dist/components/sidebar/property/PbPropertyEditorText.vue.d.ts +23 -0
  59. package/dist/components/sidebar/property/PbPropertyGroupEditorBackground.vue.d.ts +20 -0
  60. package/dist/components/sidebar/property/PbPropertyGroupEditorBorder.vue.d.ts +20 -0
  61. package/dist/components/sidebar/property/PbPropertyGroupEditorMargin.vue.d.ts +20 -0
  62. package/dist/components/sidebar/property/PbPropertyGroupEditorPadding.vue.d.ts +20 -0
  63. package/dist/components/sidebar/property/PbPropertyGroupEditorPosition.vue.d.ts +20 -0
  64. package/dist/components/sidebar/property/PbPropertyGroupEditorSize.vue.d.ts +20 -0
  65. package/dist/components/sidebar/property/PbPropertyLocalPart.vue.d.ts +23 -0
  66. package/dist/components/ui/PbColorPicker.vue.d.ts +24 -0
  67. package/dist/directives/vPartHandler.d.ts +26 -0
  68. package/dist/index-BtILenNo.js +13902 -0
  69. package/dist/index.d.ts +3 -0
  70. package/dist/model/command.d.ts +188 -0
  71. package/dist/model/context.d.ts +136 -0
  72. package/dist/model/default-part-property-editor.d.ts +3 -0
  73. package/dist/model/default-part-property-group.d.ts +12 -0
  74. package/dist/model/event.d.ts +71 -0
  75. package/dist/model/model.d.ts +66 -0
  76. package/dist/model/page-builder-editor.d.ts +51 -0
  77. package/dist/model/page-builder-util.d.ts +5 -0
  78. package/dist/model/part-definintion.d.ts +26 -0
  79. package/dist/model/part-manager.d.ts +29 -0
  80. package/dist/model/part-property.d.ts +22 -0
  81. package/dist/model/plugin.d.ts +15 -0
  82. package/dist/model/toolbar.d.ts +27 -0
  83. package/dist/page-builder-editor.js +27 -0
  84. package/dist/page-builder-editor.umd.cjs +14248 -0
  85. package/dist/style.css +173 -0
  86. package/dist/utils/mouse-tracker.d.ts +11 -0
  87. package/package.json +49 -0
@@ -0,0 +1,3 @@
1
+ export { default as PageBuilderEditor } from './PageBuilderEditor.vue';
2
+ export * from './model/event';
3
+ export * from '@g1cloud/page-builder-viewer';
@@ -0,0 +1,188 @@
1
+ import { ToolButtonGroup } from './toolbar.ts';
2
+ import { ContextMenu, KeyHandler } from './context.ts';
3
+ import { IPart } from '@g1cloud/page-builder-viewer';
4
+ import { PageBuilderEditor } from './page-builder-editor.ts';
5
+ import { BSModal, MenuItem } from '@g1cloud/bluesea';
6
+
7
+ export declare const SAVE_MODEL_COMMAND_ID = "SaveModel";
8
+ export interface Command {
9
+ commandId: string;
10
+ caption?: string;
11
+ icon?: string;
12
+ execute(pageBuilder: PageBuilderEditor, args?: any): void | Promise<void>;
13
+ }
14
+ export interface CommandRegistry {
15
+ registerCommands(commandList: Command[]): void;
16
+ registerCommand(command: Command): void;
17
+ getCommand(commandId: string): Command | undefined;
18
+ executeCommand(commandId: string, args?: any): boolean;
19
+ }
20
+ export declare class CommandRegistryImpl implements CommandRegistry {
21
+ private pageBuilder;
22
+ private commandMap;
23
+ constructor(pageBuilder: PageBuilderEditor);
24
+ registerCommands(commandList: Command[]): void;
25
+ registerCommand(command: Command): void;
26
+ getCommand(commandId: string): Command | undefined;
27
+ executeCommand(commandId: string, args?: any): boolean;
28
+ }
29
+ export declare class OpenAddPartModalCommand implements Command {
30
+ private modal;
31
+ static readonly COMMAND_ID = "OpenAddPartModal";
32
+ readonly commandId = "OpenAddPartModal";
33
+ readonly caption = "Add Part";
34
+ constructor(modal: BSModal);
35
+ execute(pageBuilder: PageBuilderEditor, args?: any): void;
36
+ }
37
+ export declare class OpenAddWidgetModalCommand implements Command {
38
+ private modal;
39
+ static readonly COMMAND_ID = "OpenAddWidgetModal";
40
+ readonly commandId = "OpenAddWidgetModal";
41
+ readonly caption = "Add Block/Widget";
42
+ constructor(modal: BSModal);
43
+ execute(pageBuilder: PageBuilderEditor, args?: any): void;
44
+ }
45
+ export declare const createSection: (pageBuilder: PageBuilderEditor) => IPart | undefined;
46
+ export declare const createBlock: (pageBuilder: PageBuilderEditor) => IPart | undefined;
47
+ export declare const findLeafPart: (part: IPart | undefined) => IPart | undefined;
48
+ export declare class AddPartCommand implements Command {
49
+ private modal;
50
+ static readonly COMMAND_ID = "AddPart";
51
+ readonly commandId = "AddPart";
52
+ readonly caption = "Add Part";
53
+ constructor(modal: BSModal);
54
+ execute(pageBuilder: PageBuilderEditor, args?: any): void;
55
+ }
56
+ export declare class AddSectionAboveCommand implements Command {
57
+ private modal;
58
+ static readonly COMMAND_ID = "AddSectionAbove";
59
+ static readonly CAPTION = "Add Part Above";
60
+ readonly commandId = "AddSectionAbove";
61
+ readonly caption = "Add Part Above";
62
+ constructor(modal: BSModal);
63
+ execute(pageBuilder: PageBuilderEditor, args?: any): void;
64
+ }
65
+ export declare class AddSectionBelowCommand implements Command {
66
+ private modal;
67
+ static readonly COMMAND_ID = "AddSectionBelow";
68
+ static readonly CAPTION = "Add Part Below";
69
+ readonly commandId = "AddSectionBelow";
70
+ readonly caption = "Add Part Below";
71
+ constructor(modal: BSModal);
72
+ execute(pageBuilder: PageBuilderEditor, args?: any): void;
73
+ }
74
+ export declare class AddBlockLeftCommand implements Command {
75
+ static readonly COMMAND_ID = "AddBlockLeft";
76
+ static readonly CAPTION = "Add Block Left";
77
+ readonly commandId = "AddBlockLeft";
78
+ readonly caption = "Add Block Left";
79
+ constructor();
80
+ execute(pageBuilder: PageBuilderEditor, args?: any): void;
81
+ }
82
+ export declare class AddBlockRightCommand implements Command {
83
+ static readonly COMMAND_ID = "AddBlockRight";
84
+ static readonly CAPTION = "Add Block Right";
85
+ readonly commandId = "AddBlockRight";
86
+ readonly caption = "Add Block Right";
87
+ constructor();
88
+ execute(pageBuilder: PageBuilderEditor, args?: any): void;
89
+ }
90
+ export declare class AddBlockAboveCommand implements Command {
91
+ static readonly COMMAND_ID = "AddBlockAbove";
92
+ static readonly CAPTION = "Add Block Above";
93
+ readonly commandId = "AddBlockAbove";
94
+ readonly caption = "Add Block Above";
95
+ constructor();
96
+ execute(pageBuilder: PageBuilderEditor, args?: any): void;
97
+ }
98
+ export declare class AddBlockBelowCommand implements Command {
99
+ static readonly COMMAND_ID = "AddBlockBelow";
100
+ static readonly CAPTION = "Add Block Below";
101
+ readonly commandId = "AddBlockBelow";
102
+ readonly caption = "Add Block Below";
103
+ constructor();
104
+ execute(pageBuilder: PageBuilderEditor, args?: any): void;
105
+ }
106
+ export declare class AddWidgetLeftCommand implements Command {
107
+ private modal;
108
+ static readonly COMMAND_ID = "AddWidgetLeft";
109
+ static readonly CAPTION = "Add Widget Left";
110
+ readonly commandId = "AddWidgetLeft";
111
+ readonly caption = "Add Widget Left";
112
+ constructor(modal: BSModal);
113
+ execute(pageBuilder: PageBuilderEditor, args?: any): void;
114
+ }
115
+ export declare class AddWidgetRightCommand implements Command {
116
+ private modal;
117
+ static readonly COMMAND_ID = "AddWidgetRight";
118
+ static readonly CAPTION = "Add Widget Right";
119
+ readonly commandId = "AddWidgetRight";
120
+ readonly caption = "Add Widget Right";
121
+ constructor(modal: BSModal);
122
+ execute(pageBuilder: PageBuilderEditor, args?: any): void;
123
+ }
124
+ export declare class AddWidgetAboveCommand implements Command {
125
+ private modal;
126
+ static readonly COMMAND_ID = "AddWidgetAbove";
127
+ static readonly CAPTION = "Add Widget Above";
128
+ readonly commandId = "AddWidgetAbove";
129
+ readonly caption = "Add Widget Above";
130
+ constructor(modal: BSModal);
131
+ execute(pageBuilder: PageBuilderEditor, args?: any): void;
132
+ }
133
+ export declare class AddWidgetBelowCommand implements Command {
134
+ private modal;
135
+ static readonly COMMAND_ID = "AddWidgetBelow";
136
+ static readonly CAPTION = "Add Widget Below";
137
+ readonly commandId = "AddWidgetBelow";
138
+ readonly caption = "Add Widget Below";
139
+ constructor(modal: BSModal);
140
+ execute(pageBuilder: PageBuilderEditor, args?: any): void;
141
+ }
142
+ export declare class AddWidgetInsideCommand implements Command {
143
+ private modal;
144
+ static readonly COMMAND_ID = "AddWidgetInside";
145
+ static readonly CAPTION = "Add Widget Inside";
146
+ readonly commandId = "AddWidgetInside";
147
+ readonly caption = "Add Widget Inside";
148
+ constructor(modal: BSModal);
149
+ execute(pageBuilder: PageBuilderEditor, args?: any): void;
150
+ }
151
+ export declare class ChangePropertyCommand implements Command {
152
+ static readonly COMMAND_ID = "ChangeProperty";
153
+ readonly commandId = "ChangeProperty";
154
+ readonly caption = "Change Property";
155
+ execute(pageBuilder: PageBuilderEditor, args?: any): void;
156
+ }
157
+ export declare class DeletePartCommand implements Command {
158
+ static readonly COMMAND_ID = "DeletePart";
159
+ static readonly CAPTION = "Delete";
160
+ readonly commandId = "DeletePart";
161
+ readonly caption = "Delete";
162
+ execute(pageBuilder: PageBuilderEditor): void;
163
+ }
164
+ export declare class CopyPartCommand implements Command {
165
+ static readonly COMMAND_ID = "CopyPart";
166
+ readonly commandId = "CopyPart";
167
+ execute(pageBuilder: PageBuilderEditor): Promise<void>;
168
+ }
169
+ export declare class CutPartCommand implements Command {
170
+ static readonly COMMAND_ID = "CutPart";
171
+ readonly commandId = "CutPart";
172
+ execute(pageBuilder: PageBuilderEditor): void;
173
+ }
174
+ export declare class PastePartCommand implements Command {
175
+ static readonly COMMAND_ID = "PastePart";
176
+ readonly commandId = "PastePart";
177
+ execute(pageBuilder: PageBuilderEditor): Promise<void>;
178
+ }
179
+ export declare class SelectAllPartsCommand implements Command {
180
+ static readonly COMMAND_ID = "SelectAllParts";
181
+ readonly commandId = "SelectAllParts";
182
+ execute(pageBuilder: PageBuilderEditor): void;
183
+ }
184
+ export declare const createDefaultCommands: (modal: BSModal) => (OpenAddPartModalCommand | OpenAddWidgetModalCommand | AddPartCommand | AddSectionAboveCommand | AddSectionBelowCommand | AddBlockLeftCommand | AddBlockRightCommand | AddBlockAboveCommand | AddBlockBelowCommand | AddWidgetLeftCommand | AddWidgetRightCommand | AddWidgetAboveCommand | AddWidgetBelowCommand | AddWidgetInsideCommand | ChangePropertyCommand | DeletePartCommand | CopyPartCommand | CutPartCommand | PastePartCommand | SelectAllPartsCommand)[];
185
+ export declare const menuItemForCommand: (pageBuilder: PageBuilderEditor, commandId: string, caption?: string) => MenuItem;
186
+ export declare const createDefaultContextMenus: () => ContextMenu[];
187
+ export declare const createDefaultKeyHandlers: () => KeyHandler[];
188
+ export declare const createDefaultToolButtonGroups: () => ToolButtonGroup[];
@@ -0,0 +1,136 @@
1
+ import { PageBuilderEditor } from './page-builder-editor.ts';
2
+ import { MenuItem } from '@g1cloud/bluesea';
3
+ import { IPart } from '@g1cloud/page-builder-viewer';
4
+
5
+ export interface PageBuilderContext {
6
+ setSelection(parts: IPart[]): void;
7
+ addSelection(parts: IPart[]): void;
8
+ removeSelection(parts: IPart[] | string[]): void;
9
+ isSelected(part: IPart): boolean;
10
+ getSelectedParts(): IPart[];
11
+ getSelectionCount(): number;
12
+ hasSelection(): boolean;
13
+ getSelectedPage(): IPart | undefined;
14
+ isPageSelected(): boolean;
15
+ clearSelection(): void;
16
+ getSingleSelectedWidget(): IPart | undefined;
17
+ getSingleSelectedBlock(): IPart | undefined;
18
+ getSingleSelectedSection(): IPart | undefined;
19
+ }
20
+ export declare class PageBuilderContextImpl implements PageBuilderContext {
21
+ private selection;
22
+ private model;
23
+ constructor(pageBuilder: PageBuilderEditor);
24
+ setSelection(parts: IPart[]): void;
25
+ addSelection(parts: IPart[]): void;
26
+ removeSelection(parts: IPart[] | string[]): void;
27
+ isSelected(part: IPart): boolean;
28
+ getSelectedParts(): IPart[];
29
+ getSelectionCount(): number;
30
+ hasSelection(): boolean;
31
+ getSelectedPage(): IPart | undefined;
32
+ isPageSelected(): boolean;
33
+ clearSelection(): void;
34
+ getSingleSelectedWidget(): {
35
+ partType: string;
36
+ partName: string;
37
+ partId: string;
38
+ properties?: Record<string, string> | undefined;
39
+ children?: any[] | undefined;
40
+ parent?: any | undefined;
41
+ isRoot: () => boolean;
42
+ isPage: () => boolean;
43
+ isSection: () => boolean;
44
+ isBlock: () => boolean;
45
+ isWidget: () => boolean;
46
+ isNestedWidget: () => boolean;
47
+ getName: () => string | undefined;
48
+ getProperty: (propertyName: string) => string | undefined;
49
+ getClassNames: () => string;
50
+ getStyles: () => Record<string, string>;
51
+ getPageBuilderId: () => string | undefined;
52
+ } | undefined;
53
+ getSingleSelectedBlock(): {
54
+ partType: string;
55
+ partName: string;
56
+ partId: string;
57
+ properties?: Record<string, string> | undefined;
58
+ children?: any[] | undefined;
59
+ parent?: any | undefined;
60
+ isRoot: () => boolean;
61
+ isPage: () => boolean;
62
+ isSection: () => boolean;
63
+ isBlock: () => boolean;
64
+ isWidget: () => boolean;
65
+ isNestedWidget: () => boolean;
66
+ getName: () => string | undefined;
67
+ getProperty: (propertyName: string) => string | undefined;
68
+ getClassNames: () => string;
69
+ getStyles: () => Record<string, string>;
70
+ getPageBuilderId: () => string | undefined;
71
+ } | undefined;
72
+ getSingleSelectedSection(): {
73
+ partType: string;
74
+ partName: string;
75
+ partId: string;
76
+ properties?: Record<string, string> | undefined;
77
+ children?: any[] | undefined;
78
+ parent?: any | undefined;
79
+ isRoot: () => boolean;
80
+ isPage: () => boolean;
81
+ isSection: () => boolean;
82
+ isBlock: () => boolean;
83
+ isWidget: () => boolean;
84
+ isNestedWidget: () => boolean;
85
+ getName: () => string | undefined;
86
+ getProperty: (propertyName: string) => string | undefined;
87
+ getClassNames: () => string;
88
+ getStyles: () => Record<string, string>;
89
+ getPageBuilderId: () => string | undefined;
90
+ } | undefined;
91
+ }
92
+ export type ContextMenu = {
93
+ commandId: string;
94
+ groupId?: string;
95
+ precedence?: number;
96
+ getMenuItem?: (pageBuilder: PageBuilderEditor) => MenuItem | undefined;
97
+ };
98
+ export type ContextMenuGroup = {
99
+ groupId: string;
100
+ menus: ContextMenu[];
101
+ };
102
+ export interface ContextMenuRegistry {
103
+ registerContextMenus(menus: ContextMenu[]): void;
104
+ registerContextMenu(menu: ContextMenu): void;
105
+ composeContextMenuItems(pageBuilder: PageBuilderEditor): MenuItem[];
106
+ }
107
+ export type KeyHandler = {
108
+ handleKeyEvent: (event: KeyboardEvent, modeler: PageBuilderEditor) => boolean | undefined;
109
+ };
110
+ export interface KeyHandlers {
111
+ appendKeyHandlers(handlers: KeyHandler[]): void;
112
+ appendKeyHandler(handler: KeyHandler): void;
113
+ removeKeyHandler(handler: KeyHandler): void;
114
+ handleKeyDownEvent(event: KeyboardEvent): void;
115
+ addDocumentKeyEventListener(document: Document): void;
116
+ removeDocumentKeyEventListener(document: Document): void;
117
+ }
118
+ export declare class ContextMenuRegistryImpl implements ContextMenuRegistry {
119
+ readonly groups: ContextMenuGroup[];
120
+ constructor();
121
+ registerContextMenus(menus: ContextMenu[]): void;
122
+ registerContextMenu(menu: ContextMenu): void;
123
+ composeContextMenuItems(pageBuilder: PageBuilderEditor): MenuItem[];
124
+ private ensureGetGroup;
125
+ }
126
+ export declare class KeyHandlersImpl implements KeyHandlers {
127
+ private pageBuilder;
128
+ private handlers;
129
+ constructor(pageBuilder: PageBuilderEditor);
130
+ appendKeyHandlers(handlers: KeyHandler[]): void;
131
+ appendKeyHandler(handler: KeyHandler): void;
132
+ removeKeyHandler(handler: KeyHandler): void;
133
+ handleKeyDownEvent(event: KeyboardEvent): void;
134
+ addDocumentKeyEventListener(document: Document): void;
135
+ removeDocumentKeyEventListener(document: Document): void;
136
+ }
@@ -0,0 +1,3 @@
1
+ import { PartPropertyEditor, PartPropertyType } from './part-property.ts';
2
+
3
+ export declare const defaultPartPropertyEditors: () => Record<PartPropertyType, PartPropertyEditor>;
@@ -0,0 +1,12 @@
1
+ import { PartPropertyGroup } from './part-property.ts';
2
+
3
+ export declare const positionGroup: () => PartPropertyGroup;
4
+ export declare const sizeGroup: () => PartPropertyGroup;
5
+ export declare const marginGroup: () => PartPropertyGroup;
6
+ export declare const paddingGroup: () => PartPropertyGroup;
7
+ export declare const commonGroup: () => PartPropertyGroup;
8
+ export declare const layoutGroup: () => PartPropertyGroup;
9
+ export declare const backgroundGroup: () => PartPropertyGroup;
10
+ export declare const borderGroup: () => PartPropertyGroup;
11
+ export declare const defaultPropertyGroups: () => PartPropertyGroup[];
12
+ export declare const defaultWidgetPropertyGroups: () => PartPropertyGroup[];
@@ -0,0 +1,71 @@
1
+ import { ModelUpdateResult } from './model';
2
+
3
+ export type PageBuilderEditorEventType = {
4
+ modelUpdatedByUI: ModelUpdateResult;
5
+ modelUpdated: ModelUpdateResult;
6
+ requestImage: {
7
+ pageBuilderId?: string;
8
+ callback: (url: string) => void;
9
+ };
10
+ requestProducts: {
11
+ pageBuilderId?: string;
12
+ itemCodes: string;
13
+ callback: (products: any[]) => void;
14
+ };
15
+ requestLocalPartContentSchedule: {
16
+ pageBuilderId?: string;
17
+ callback: (schedule: any) => void;
18
+ };
19
+ };
20
+ export declare const PageBuilderEditorEvent: {
21
+ on: {
22
+ modelUpdated: (listener: (changes: ModelUpdateResult) => void) => void;
23
+ modelUpdatedByUI: (listener: (changes: ModelUpdateResult) => void) => void;
24
+ requestImage: (listener: (param: {
25
+ pageBuilderId?: string;
26
+ callback: (url: string) => void;
27
+ }) => void) => void;
28
+ requestProducts: (listener: (param: {
29
+ pageBuilderId?: string;
30
+ itemCodes: string;
31
+ callback: (products: any[]) => void;
32
+ }) => void) => void;
33
+ requestLocalPartContentSchedule: (listener: (param: {
34
+ pageBuilderId?: string;
35
+ callback: (schedule: any) => void;
36
+ }) => void) => void;
37
+ };
38
+ off: {
39
+ modelUpdated: (listener: (changes: ModelUpdateResult) => void) => void;
40
+ modelUpdatedByUI: (listener: (changes: ModelUpdateResult) => void) => void;
41
+ requestImage: (listener: (param: {
42
+ pageBuilderId?: string;
43
+ callback: (url: string) => void;
44
+ }) => void) => void;
45
+ requestProducts: (listener: (param: {
46
+ pageBuilderId?: string;
47
+ itemCodes: string;
48
+ callback: (products: any[]) => void;
49
+ }) => void) => void;
50
+ requestLocalPartContentSchedule: (listener: (param: {
51
+ callback: (schedule: any) => void;
52
+ }) => void) => void;
53
+ };
54
+ emit: {
55
+ modelUpdated: (changes: ModelUpdateResult) => void;
56
+ modelUpdatedByUI: (changes: ModelUpdateResult) => void;
57
+ requestImage: (param: {
58
+ pageBuilderId?: string;
59
+ callback: (url: string) => void;
60
+ }) => void;
61
+ requestProducts: (param: {
62
+ pageBuilderId?: string;
63
+ itemCodes: string;
64
+ callback: (products: any[]) => void;
65
+ }) => void;
66
+ requestLocalPartContentSchedule: (param: {
67
+ pageBuilderId?: string;
68
+ callback: (schedule: any) => void;
69
+ }) => void;
70
+ };
71
+ };
@@ -0,0 +1,66 @@
1
+ import { IPart } from '@g1cloud/page-builder-viewer';
2
+ import * as Y from 'yjs';
3
+ export declare const ROOT_TYPE = "Root";
4
+ export declare const PAGE_TYPE = "Page";
5
+ export declare const SECTION_TYPE = "Section";
6
+ export declare const BLOCK_TYPE = "Block";
7
+ export declare const WIDGET_TYPE = "Widget";
8
+ export declare const getNewPartId: () => string;
9
+ export declare const partsToJsonString: (parts: IPart[]) => string;
10
+ export declare const partFromJsonObject: (object: any) => IPart | undefined;
11
+ export declare const createPart: (partType: string, partName: string, properties?: Record<string, string>) => IPart | undefined;
12
+ export declare class Model {
13
+ yjsDoc: Y.Doc;
14
+ yjsRoot: Y.XmlElement;
15
+ undoManager: Y.UndoManager;
16
+ rootPart: IPart;
17
+ constructor();
18
+ getRootPartId(): string;
19
+ updateModel(param: ModelUpdateParam): ModelUpdateResult;
20
+ findPartById(partId?: string): IPart | undefined;
21
+ findPartsByIds(partIds: string[]): IPart[];
22
+ serializePageModel: (partIds: string[]) => string;
23
+ parsePageModel(json: string, removePartId: boolean): IPart[] | undefined;
24
+ moveElements(partId: string, destPartId: string, destIndex: number, update?: PartUpdateParam[]): void;
25
+ isMobilePart(part: IPart): boolean;
26
+ isPcPart(part: IPart): boolean;
27
+ private insertParts;
28
+ private updateParts;
29
+ private deleteParts;
30
+ private createElement;
31
+ private getIndexOfElement;
32
+ private emitUpdateModelEvent;
33
+ }
34
+ export type PartInsertParam = {
35
+ partId: string;
36
+ index: number;
37
+ parts: IPart[];
38
+ };
39
+ export type PartUpdateParam = {
40
+ partId: string;
41
+ properties: Record<string, string>;
42
+ removeOtherAttributes?: boolean;
43
+ };
44
+ export type PartInsertResult = {
45
+ element: Y.XmlElement;
46
+ partId: string;
47
+ };
48
+ export type PartUpdateResult = {
49
+ element: Y.XmlElement;
50
+ properties: Record<string, string>;
51
+ removeOtherProperties?: boolean;
52
+ };
53
+ export type PartDeleteResult = {
54
+ element: Y.XmlElement;
55
+ partId: string;
56
+ };
57
+ export type ModelUpdateParam = {
58
+ insert?: PartInsertParam[];
59
+ update?: PartUpdateParam[];
60
+ delete?: string[];
61
+ };
62
+ export type ModelUpdateResult = {
63
+ inserted?: PartInsertResult[];
64
+ updated?: PartUpdateResult[];
65
+ deleted?: PartDeleteResult[];
66
+ };
@@ -0,0 +1,51 @@
1
+ import { ContextMenuRegistry, ContextMenuRegistryImpl, KeyHandlers, PageBuilderContext, PageBuilderContextImpl } from './context.ts';
2
+ import { ToolButtonRegistry } from './toolbar.ts';
3
+ import { PageBuilderPlugin } from './plugin.ts';
4
+ import { CommandRegistry, CommandRegistryImpl } from './command';
5
+ import { PartManager } from './part-manager';
6
+ import { Model } from './model';
7
+ import { Ref } from 'vue';
8
+
9
+ export type PageBuilderEditMode = 'template' | 'global' | 'local' | 'free';
10
+ export declare const createPageBuilderEditor: () => PageBuilderEditor;
11
+ export declare const providePageBuilderEditor: (pageBuilderEditor: PageBuilderEditor) => void;
12
+ export declare const usePageBuilderEditor: () => PageBuilderEditor;
13
+ export interface PageBuilderEditor {
14
+ instanceId?: string;
15
+ partManager: PartManager;
16
+ model: Model;
17
+ context: PageBuilderContext;
18
+ commandRegistry: CommandRegistry;
19
+ contextMenuRegistry: ContextMenuRegistry;
20
+ keyHandlers: KeyHandlers;
21
+ toolButtonRegistry: ToolButtonRegistry;
22
+ title?: string;
23
+ editMode: PageBuilderEditMode;
24
+ scale: Ref<number>;
25
+ registerPlugin(plugin: PageBuilderPlugin): void;
26
+ initData(content?: any): void;
27
+ undo(): void;
28
+ redo(): void;
29
+ zoom(scale: number): void;
30
+ }
31
+ export declare class PageBuilderEditorImpl implements PageBuilderEditor {
32
+ instanceId?: string;
33
+ partManager: PartManager;
34
+ model: Model;
35
+ context: PageBuilderContextImpl;
36
+ commandRegistry: CommandRegistryImpl;
37
+ contextMenuRegistry: ContextMenuRegistryImpl;
38
+ keyHandlers: KeyHandlers;
39
+ toolButtonRegistry: ToolButtonRegistry;
40
+ title?: string;
41
+ editMode: PageBuilderEditMode;
42
+ scale: Ref<number>;
43
+ constructor();
44
+ registerPlugin(plugin: PageBuilderPlugin): void;
45
+ initData(content?: any): void;
46
+ undo(): void;
47
+ redo(): void;
48
+ zoom(scale: number): void;
49
+ private getEmptyPageContent;
50
+ private initPlugins;
51
+ }
@@ -0,0 +1,5 @@
1
+ import { IPart } from '@g1cloud/page-builder-viewer';
2
+
3
+ export declare const getPropertyValueOfParts: (parts: IPart[], propertyName: string) => string | undefined;
4
+ export declare const isCursorInElement: (event: MouseEvent, element: Element) => boolean;
5
+ export declare const extractCommonStylesFromProperties: (properties: Record<string, string>) => Record<string, unknown>;
@@ -0,0 +1,26 @@
1
+ import { PartPropertyGroup } from './part-property.ts';
2
+ import { Component } from 'vue';
3
+ import { IPart } from '@g1cloud/page-builder-viewer';
4
+
5
+ export type PartCreator = (part: IPart, partDef: PartDefinition) => Component | undefined;
6
+ export type PartDefinition = {
7
+ partType: string;
8
+ partName: string;
9
+ caption: string;
10
+ propertyGroups: PartPropertyGroup[];
11
+ initialProperties: Record<string, string>;
12
+ localized: boolean;
13
+ allowsChild: (partOrName?: IPart | string | undefined) => boolean;
14
+ creator: PartCreator;
15
+ };
16
+ export type PartDefinitionGroup = {
17
+ groupName: string;
18
+ caption: string;
19
+ partDefinitions: PartDefinition[];
20
+ };
21
+ declare const partDefinitions: Record<string, PartDefinition>;
22
+ export { partDefinitions };
23
+ export declare const designPartDefinitions: PartDefinitionGroup[];
24
+ export declare const layoutPartDefinitions: PartDefinitionGroup[];
25
+ export declare const widgetPartDefinitions: PartDefinitionGroup[];
26
+ export declare const blockWidgetPartDefinitions: PartDefinitionGroup[];
@@ -0,0 +1,29 @@
1
+ import { PartDefinition } from './part-definintion.ts';
2
+ import { PartProperty, PartPropertyEditor, PartPropertyGroupEditor, PartPropertyType } from './part-property.ts';
3
+ import { IPart } from '@g1cloud/page-builder-viewer';
4
+ import { Component } from 'vue';
5
+
6
+ export type PartComponent = {
7
+ part: IPart;
8
+ component: Component;
9
+ };
10
+ export declare class PartManager {
11
+ readonly partDefinitions: Record<string, PartDefinition>;
12
+ readonly partPropertyGroupEditors: Map<string, PartPropertyGroupEditor>;
13
+ readonly partPropertyEditors: Map<string, PartPropertyEditor>;
14
+ private readonly partDefinitionMap;
15
+ registerPartDefinitions(partDefinitions: Record<string, PartDefinition>): void;
16
+ getPartDefinition(partName: string): PartDefinition | undefined;
17
+ getPropertyDefinition(partName: string, propertyName: string): PartProperty | undefined;
18
+ createPartComponent(part?: IPart): Component | undefined;
19
+ createPartComponents(parts?: IPart[]): PartComponent[];
20
+ registerPartPropertyGroupEditors(editors: Record<string, PartPropertyGroupEditor>): void;
21
+ getPartPropertyGroupEditor(groupName: string): PartPropertyGroupEditor | undefined;
22
+ registerPartPropertyEditors(editors: Record<PartPropertyType, PartPropertyEditor>): void;
23
+ getPartPropertyEditor(attrType: PartPropertyType): PartPropertyEditor | undefined;
24
+ findNearestAvailableParentPart(target: IPart, partOrName: IPart | string | undefined): IPart | undefined;
25
+ getSectionDefinition(): PartDefinition | undefined;
26
+ getBlockDefinition(): PartDefinition | undefined;
27
+ findNearestSection(part: IPart): IPart | undefined;
28
+ findNearestBlock(part: IPart): IPart | undefined;
29
+ }
@@ -0,0 +1,22 @@
1
+ import { IPart } from '@g1cloud/page-builder-viewer';
2
+ import { Component } from 'vue';
3
+
4
+ export type PartPropertyType = 'readonly-text' | 'text' | 'number' | 'multiline-text' | 'select' | string;
5
+ export type PartPropertyEditor = (property: PartProperty, parts: IPart[]) => Component | undefined;
6
+ export type PartProperty = {
7
+ propertyName: string;
8
+ propertyType: PartPropertyType;
9
+ caption: string;
10
+ params?: any;
11
+ propertyEditor?: PartPropertyEditor;
12
+ localized?: boolean;
13
+ };
14
+ export type PartPropertyGroupEditor = (group: PartPropertyGroup, parts: IPart[]) => Component | undefined;
15
+ export type PartPropertyGroup = {
16
+ groupName: string;
17
+ properties: PartProperty[];
18
+ caption: string;
19
+ showGroupName?: boolean;
20
+ propertyGroupEditor?: PartPropertyGroupEditor;
21
+ localized?: boolean;
22
+ };
@@ -0,0 +1,15 @@
1
+ import { PartPropertyEditor, PartPropertyGroupEditor, PartPropertyType } from './part-property.ts';
2
+ import { PartDefinition } from './part-definintion.ts';
3
+ import { ToolButtonGroup } from './toolbar.ts';
4
+ import { ContextMenu, KeyHandler } from './context.ts';
5
+ import { Command } from './command.ts';
6
+
7
+ export type PageBuilderPlugin = {
8
+ partDefinitions?: Record<string, PartDefinition>;
9
+ partPropertyGroupEditors?: Record<string, PartPropertyGroupEditor>;
10
+ partPropertyEditors?: Record<PartPropertyType, PartPropertyEditor>;
11
+ commands?: Command[];
12
+ contextMenus?: ContextMenu[];
13
+ keyHandlers?: KeyHandler[];
14
+ toolButtonGroups?: ToolButtonGroup[];
15
+ };
@@ -0,0 +1,27 @@
1
+ import { PageBuilderEditor } from './page-builder-editor.ts';
2
+ import { Component } from 'vue';
3
+
4
+ export type ToolButton = {
5
+ buttonId: string;
6
+ caption?: string;
7
+ component?: () => Component;
8
+ icon?: string;
9
+ iconFontSize?: string;
10
+ handler?: (pageBuilder: PageBuilderEditor) => void;
11
+ };
12
+ export type ToolButtonGroup = {
13
+ groupId: string;
14
+ buttons: ToolButton[];
15
+ };
16
+ export interface ToolButtonRegistry {
17
+ registerToolButtonGroups(groups: ToolButtonGroup[]): void;
18
+ registerToolButtons(groupId: string, buttons: ToolButton[]): void;
19
+ getToolButtonGroups(): ToolButtonGroup[];
20
+ }
21
+ export declare class ToolButtonRegistryImpl implements ToolButtonRegistry {
22
+ private readonly groups;
23
+ registerToolButtonGroups(groups: ToolButtonGroup[]): void;
24
+ registerToolButtonGroup(group: ToolButtonGroup): void;
25
+ registerToolButtons(groupId: string, buttons: ToolButton[]): void;
26
+ getToolButtonGroups(): ToolButtonGroup[];
27
+ }