@it-consultis/page-builder 1.1.34

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 (124) hide show
  1. package/Editor.d.ts +77 -0
  2. package/Editor.js +312 -0
  3. package/LICENSE.txt +674 -0
  4. package/README.md +248 -0
  5. package/assets/svg/mp.d.ts +2 -0
  6. package/assets/svg/mp.js +37 -0
  7. package/assets/svg/status-bar.d.ts +2 -0
  8. package/assets/svg/status-bar.js +38 -0
  9. package/constants/index.d.ts +11 -0
  10. package/constants/index.js +17 -0
  11. package/contexts/I18nContext.d.ts +15 -0
  12. package/contexts/I18nContext.js +56 -0
  13. package/controls/AlignmentControl/AlignmentControl.d.ts +5 -0
  14. package/controls/AlignmentControl/AlignmentControl.js +58 -0
  15. package/controls/AlignmentControl/index.d.ts +3 -0
  16. package/controls/AlignmentControl/index.js +9 -0
  17. package/controls/DeviceSwitcher/DeviceSwitcher.d.ts +10 -0
  18. package/controls/DeviceSwitcher/DeviceSwitcher.js +64 -0
  19. package/controls/DeviceSwitcher/index.d.ts +2 -0
  20. package/controls/DeviceSwitcher/index.js +9 -0
  21. package/controls/GradientColorPicker/GradientColorPicker.d.ts +8 -0
  22. package/controls/GradientColorPicker/GradientColorPicker.js +81 -0
  23. package/controls/GradientColorPicker/index.d.ts +2 -0
  24. package/controls/GradientColorPicker/index.js +9 -0
  25. package/controls/HeadingControl/HeadingControl.d.ts +14 -0
  26. package/controls/HeadingControl/HeadingControl.js +251 -0
  27. package/controls/HeadingControl/HeadingView.d.ts +21 -0
  28. package/controls/HeadingControl/HeadingView.js +43 -0
  29. package/controls/HeadingControl/index.d.ts +4 -0
  30. package/controls/HeadingControl/index.js +16 -0
  31. package/controls/MediaLibraryControl/FileBrowserDialog.d.ts +14 -0
  32. package/controls/MediaLibraryControl/FileBrowserDialog.js +138 -0
  33. package/controls/MediaLibraryControl/MediaLibraryControl.d.ts +38 -0
  34. package/controls/MediaLibraryControl/MediaLibraryControl.js +537 -0
  35. package/controls/MediaLibraryControl/index.d.ts +3 -0
  36. package/controls/MediaLibraryControl/index.js +9 -0
  37. package/controls/PaddingMarginControl/PaddingMarginControl.d.ts +30 -0
  38. package/controls/PaddingMarginControl/PaddingMarginControl.js +88 -0
  39. package/controls/PaddingMarginControl/PaddingMarginForm.d.ts +8 -0
  40. package/controls/PaddingMarginControl/PaddingMarginForm.js +109 -0
  41. package/controls/PaddingMarginControl/index.d.ts +4 -0
  42. package/controls/PaddingMarginControl/index.js +16 -0
  43. package/controls/PaddingMarginControl/utils.d.ts +3 -0
  44. package/controls/PaddingMarginControl/utils.js +21 -0
  45. package/controls/SelectableControl/SelectableControl.d.ts +5 -0
  46. package/controls/SelectableControl/SelectableControl.js +35 -0
  47. package/controls/SelectableControl/index.d.ts +3 -0
  48. package/controls/SelectableControl/index.js +9 -0
  49. package/hooks/ui-optimizations/useDebounce.d.ts +3 -0
  50. package/hooks/ui-optimizations/useDebounce.js +23 -0
  51. package/hooks/ui-optimizations/useThrottle.d.ts +3 -0
  52. package/hooks/ui-optimizations/useThrottle.js +22 -0
  53. package/hooks/useMediaImageQuery.d.ts +10 -0
  54. package/hooks/useMediaImageQuery.js +51 -0
  55. package/hooks/useSortable.d.ts +20 -0
  56. package/hooks/useSortable.js +70 -0
  57. package/index.d.ts +7 -0
  58. package/index.js +54 -0
  59. package/layouts/BlocksBar/LayerPanel.d.ts +8 -0
  60. package/layouts/BlocksBar/LayerPanel.js +299 -0
  61. package/layouts/BlocksBar/index.d.ts +7 -0
  62. package/layouts/BlocksBar/index.js +575 -0
  63. package/layouts/EditorPreview/BlockView.d.ts +16 -0
  64. package/layouts/EditorPreview/BlockView.js +435 -0
  65. package/layouts/EditorPreview/index.d.ts +9 -0
  66. package/layouts/EditorPreview/index.js +463 -0
  67. package/layouts/Header/index.d.ts +18 -0
  68. package/layouts/Header/index.js +202 -0
  69. package/layouts/Header/menus/ExportDataDialog.d.ts +4 -0
  70. package/layouts/Header/menus/ExportDataDialog.js +95 -0
  71. package/layouts/Header/menus/ImportDataDialog.d.ts +4 -0
  72. package/layouts/Header/menus/ImportDataDialog.js +100 -0
  73. package/layouts/Header/menus/LeftMenu.d.ts +9 -0
  74. package/layouts/Header/menus/LeftMenu.js +369 -0
  75. package/layouts/Header/menus/RightMenu.d.ts +14 -0
  76. package/layouts/Header/menus/RightMenu.js +91 -0
  77. package/layouts/Header/menus/SaveTemplateDialog.d.ts +4 -0
  78. package/layouts/Header/menus/SaveTemplateDialog.js +203 -0
  79. package/layouts/MessageBus.d.ts +13 -0
  80. package/layouts/MessageBus.js +76 -0
  81. package/layouts/Sidebar/AddBlockButton.d.ts +12 -0
  82. package/layouts/Sidebar/AddBlockButton.js +267 -0
  83. package/layouts/Sidebar/BlockForm.d.ts +20 -0
  84. package/layouts/Sidebar/BlockForm.js +517 -0
  85. package/layouts/Sidebar/BlocksControl.d.ts +21 -0
  86. package/layouts/Sidebar/BlocksControl.js +190 -0
  87. package/layouts/Sidebar/index.d.ts +10 -0
  88. package/layouts/Sidebar/index.js +451 -0
  89. package/layouts/Snackbar.d.ts +3 -0
  90. package/layouts/Snackbar.js +43 -0
  91. package/package.json +133 -0
  92. package/store/Provider.d.ts +15 -0
  93. package/store/Provider.js +71 -0
  94. package/store/editor-store-core.d.ts +4 -0
  95. package/store/editor-store-core.js +271 -0
  96. package/store/index.d.ts +112 -0
  97. package/store/index.js +178 -0
  98. package/theme.d.ts +10 -0
  99. package/theme.js +9 -0
  100. package/translation/cn.json +29 -0
  101. package/translation/en.json +29 -0
  102. package/translation/fr.json +31 -0
  103. package/translation/index.d.ts +6 -0
  104. package/translation/index.js +23 -0
  105. package/translation/types.d.ts +13 -0
  106. package/translation/types.js +5 -0
  107. package/types/Block.d.ts +22 -0
  108. package/types/Block.js +5 -0
  109. package/types/BlockType.d.ts +50 -0
  110. package/types/BlockType.js +5 -0
  111. package/types/ConfigStorageAdapter.d.ts +11 -0
  112. package/types/ConfigStorageAdapter.js +5 -0
  113. package/types/ObjectStorageAdapter.d.ts +68 -0
  114. package/types/ObjectStorageAdapter.js +5 -0
  115. package/types/index.d.ts +5 -0
  116. package/types/index.js +100 -0
  117. package/types/throttle-and-debounce.d.ts +2 -0
  118. package/types/throttle-and-debounce.js +5 -0
  119. package/utils/block.d.ts +16 -0
  120. package/utils/block.js +41 -0
  121. package/utils/helpers.d.ts +5 -0
  122. package/utils/helpers.js +22 -0
  123. package/utils/strings.d.ts +1 -0
  124. package/utils/strings.js +11 -0
package/store/index.js ADDED
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useTemporalEditorStore = exports.useObjectStorage = exports.useEditorStore = exports.useConfigStorageQueryClient = exports.useConfigStorage = exports.createEditorStore = exports.EditorContext = void 0;
7
+ var _reactQuery = require("@tanstack/react-query");
8
+ var _react = require("react");
9
+ var _zundo = require("zundo");
10
+ var _zustand = require("zustand");
11
+ var _editorStoreCore = _interopRequireDefault(require("./editor-store-core"));
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ const createEditorStore = (initialState = {}) => {
14
+ const createTemporalOptions = () => ({
15
+ partialize: state => ({
16
+ data: state.data
17
+ }),
18
+ equality: (pastState, futureState) => {
19
+ const aId = pastState.data.map(block => `${block.id}:${block.meta.changed}`).join('/');
20
+ const bId = futureState.data.map(block => `${block.id}:${block.meta.changed}`).join('/');
21
+ return aId === bId;
22
+ },
23
+ limit: 20
24
+ });
25
+ const temporalOptions = createTemporalOptions();
26
+ return (0, _zustand.create)()((0, _zundo.temporal)((0, _editorStoreCore.default)(initialState), temporalOptions));
27
+ };
28
+ exports.createEditorStore = createEditorStore;
29
+ const EditorContext = exports.EditorContext = /*#__PURE__*/(0, _react.createContext)(undefined);
30
+ const rootEditorStore = createEditorStore();
31
+ const useEditorStore = selector => {
32
+ const store = (0, _react.useContext)(EditorContext) || rootEditorStore;
33
+ return (0, _zustand.useStore)(store, selector);
34
+ };
35
+ exports.useEditorStore = useEditorStore;
36
+ const useTemporalEditorStore = selector => {
37
+ const store = (0, _react.useContext)(EditorContext) || rootEditorStore;
38
+ return (0, _zustand.useStore)(store.temporal, selector);
39
+ };
40
+ exports.useTemporalEditorStore = useTemporalEditorStore;
41
+ const useObjectStorage = () => {
42
+ return useEditorStore(state => state.storage?.object);
43
+ };
44
+ exports.useObjectStorage = useObjectStorage;
45
+ const useConfigStorage = () => {
46
+ // eslint-disable-next-line no-underscore-dangle
47
+ let _configStorage;
48
+ const {
49
+ storage
50
+ } = useEditorStore(state => state);
51
+ const isStorageUndefined = typeof storage === 'undefined';
52
+ const {
53
+ config: configStorage = null
54
+ } = isStorageUndefined ? {} : storage;
55
+ const objectStorage = useObjectStorage();
56
+ if (configStorage) {
57
+ return configStorage;
58
+ }
59
+ if (isStorageUndefined && !objectStorage) {
60
+ return undefined;
61
+ }
62
+ if (!_configStorage) {
63
+ const prefix = '.config/mui-edit/';
64
+ const getFilename = id => `${id}.json`;
65
+ _configStorage = {
66
+ async get(id) {
67
+ if (!objectStorage) {
68
+ return Promise.resolve([]);
69
+ }
70
+ const url = await objectStorage.objectUrl({
71
+ key: `${prefix}${getFilename(id)}`
72
+ });
73
+ const response = await fetch(url);
74
+ if (response.status !== 200) {
75
+ throw new Error(`Fail to get config data for config "${id}"`);
76
+ }
77
+ return await response.json();
78
+ },
79
+ async list() {
80
+ if (!objectStorage) {
81
+ return Promise.resolve([]);
82
+ }
83
+ const results = await objectStorage.ls({
84
+ prefix
85
+ });
86
+ return results.objects.map(o => o.name.slice(0, -5));
87
+ },
88
+ async save(config) {
89
+ if (!objectStorage) {
90
+ throw new Error('Object storage is not defined');
91
+ }
92
+ const filename = getFilename(config.id);
93
+ const file = new File([JSON.stringify({
94
+ id: config.id,
95
+ revisionId: (config.revisionId || 0) + 1,
96
+ data: config.data
97
+ })], filename);
98
+ await objectStorage.upload({
99
+ file,
100
+ key: `${prefix}${filename}`,
101
+ acl: 'private',
102
+ overwrite: true
103
+ });
104
+ return config;
105
+ },
106
+ async delete(id) {
107
+ if (!objectStorage) {
108
+ throw new Error('Object storage is not defined');
109
+ }
110
+ await objectStorage.delete({
111
+ key: `${prefix}${getFilename(id)}`
112
+ });
113
+ }
114
+ };
115
+ }
116
+ return _configStorage;
117
+ };
118
+ exports.useConfigStorage = useConfigStorage;
119
+ const useConfigStorageQueryClient = () => {
120
+ const ErrorConfigStorageNotDefined = new Error('Config storage is not defined');
121
+ const storage = useConfigStorage();
122
+ const queryClient = (0, _reactQuery.useQueryClient)();
123
+ const getStorage = () => {
124
+ if (!storage) {
125
+ throw ErrorConfigStorageNotDefined;
126
+ }
127
+ return storage;
128
+ };
129
+ return {
130
+ useGetQuery(id, options = {}) {
131
+ const query = (0, _reactQuery.useQuery)({
132
+ queryKey: ['configStorage.get', id],
133
+ async queryFn() {
134
+ const config = await getStorage().get(id);
135
+ return config;
136
+ },
137
+ ...options
138
+ });
139
+ return query;
140
+ },
141
+ useListQuery(options = {}) {
142
+ return (0, _reactQuery.useQuery)({
143
+ queryKey: ['configStorage.list'],
144
+ queryFn() {
145
+ return getStorage().list();
146
+ },
147
+ ...options
148
+ });
149
+ },
150
+ useDeleteMutation(options) {
151
+ return (0, _reactQuery.useMutation)({
152
+ async mutationFn(id) {
153
+ await getStorage().delete(id);
154
+ return id;
155
+ },
156
+ onSuccess(id) {
157
+ queryClient.invalidateQueries(['configStorage.list', 'configStorage.get', id]);
158
+ if (options?.onSuccess) options.onSuccess(id);
159
+ }
160
+ });
161
+ },
162
+ useSaveMutation(options) {
163
+ return (0, _reactQuery.useMutation)({
164
+ mutationFn(config) {
165
+ if (!storage) {
166
+ throw ErrorConfigStorageNotDefined;
167
+ }
168
+ return storage.save(config);
169
+ },
170
+ onSuccess(config) {
171
+ queryClient.invalidateQueries(['configStorage.list', 'configStorage.get', config.id]);
172
+ if (options?.onSuccess) options.onSuccess(config);
173
+ }
174
+ });
175
+ }
176
+ };
177
+ };
178
+ exports.useConfigStorageQueryClient = useConfigStorageQueryClient;
package/theme.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ declare module '@mui/material/styles' {
2
+ interface Palette {
3
+ header?: Record<string, string>;
4
+ }
5
+ interface PaletteOptions {
6
+ header?: Record<string, string>;
7
+ }
8
+ }
9
+ declare const theme: import("@mui/material/styles").Theme;
10
+ export default theme;
package/theme.js ADDED
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _styles = require("@mui/material/styles");
8
+ const theme = (0, _styles.createTheme)();
9
+ var _default = exports.default = theme;
@@ -0,0 +1,29 @@
1
+ {
2
+ "editor": {
3
+ "components": "组件",
4
+ "layers": "图层",
5
+ "content": "内容",
6
+ "advanced": "高级",
7
+ "settings": "设置",
8
+ "clone": "复制",
9
+ "delete": "删除",
10
+ "cancel": "取消",
11
+ "confirm": "确定",
12
+ "clearAll": "清空所有",
13
+ "clearConfirm": "确定要清空所有内容吗?",
14
+ "importFromTemplate": "从模板导入",
15
+ "saveAsTemplate": "保存为模板",
16
+ "importData": "导入数据",
17
+ "exportData": "导出数据",
18
+ "copyToClipboard": "复制到剪贴板",
19
+ "templateName": "模板名称",
20
+ "templateId": "模板ID",
21
+ "edit": "编辑",
22
+ "save": "保存",
23
+ "noTemplatesFound": "没有可用模板",
24
+ "noAdvanced": "暂无高级样式/设置",
25
+ "noLayers": "暂无图层, 添加一些组件吧",
26
+ "searchPlaceholder": "搜索组件名称",
27
+ "noBlockSelected": "选择一个组件编辑"
28
+ }
29
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "editor": {
3
+ "components": "Components",
4
+ "layers": "Layers",
5
+ "content": "Content",
6
+ "advanced": "Advanced",
7
+ "settings": "Settings",
8
+ "clone": "Clone",
9
+ "delete": "Delete",
10
+ "cancel": "Cancel",
11
+ "confirm": "Confirm",
12
+ "clearAll": "Clear All",
13
+ "clearConfirm": "Are you sure you want to clear all content?",
14
+ "importFromTemplate": "Import from Template",
15
+ "saveAsTemplate": "Save as Template",
16
+ "importData": "Import Data",
17
+ "exportData": "Export Data",
18
+ "copyToClipboard": "Copy to Clipboard",
19
+ "templateName": "Template Name",
20
+ "templateId": "Template ID",
21
+ "edit": "Edit",
22
+ "save": "Save",
23
+ "noTemplatesFound": "No templates found.",
24
+ "noAdvanced": "No Advanced style/settings available yet",
25
+ "noLayers": "No layers yet. Add some blocks to see the structure here.",
26
+ "searchPlaceholder": "Search components name",
27
+ "noBlockSelected": "Select a block to edit its properties"
28
+ }
29
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "editor": {
3
+ "components": "Composants",
4
+ "layers": "Calques",
5
+ "content": "Contenu",
6
+ "advanced": "Avancé",
7
+ "settings": "Paramètres",
8
+ "clone": "Dupliquer",
9
+ "delete": "Supprimer",
10
+ "cancel": "Annuler",
11
+ "confirm": "Confirmer",
12
+ "clearAll": "Tout effacer",
13
+ "clearConfirm": "Êtes-vous sûr de vouloir effacer tout le contenu ?",
14
+ "importFromTemplate": "Importer depuis un modèle",
15
+ "saveAsTemplate": "Enregistrer comme modèle",
16
+ "importData": "Importer des données",
17
+ "exportData": "Exporter des données",
18
+ "copyToClipboard": "Copier dans le presse-papiers",
19
+ "templateName": "Nom du modèle",
20
+ "templateId": "ID du modèle",
21
+ "edit": "Modifier",
22
+ "save": "Enregistrer",
23
+ "noTemplatesFound": "Aucun modèle trouvé.",
24
+ "noAdvanced": "Aucun style/paramètres disponibles pour le moment",
25
+ "noLayers": "Aucun calque pour le moment. Ajoutez des blocs pour voir la structure ici.",
26
+ "searchPlaceholder": "Rechercher un composant",
27
+ "noBlockSelected": "Sélectionnez un bloc pour modifier ses propriétés"
28
+ }
29
+ }
30
+
31
+
@@ -0,0 +1,6 @@
1
+ import { LocaleType, TMessage } from './types';
2
+ declare const translations: Record<LocaleType, TMessage>;
3
+ export declare const getTranslations: (locale: LocaleType) => TMessage;
4
+ export declare const getSupportedLocales: () => LocaleType[];
5
+ export { type LocaleType, type TMessage, type TranslationKey } from './types';
6
+ export { translations };
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.translations = exports.getTranslations = exports.getSupportedLocales = void 0;
7
+ var _cn = _interopRequireDefault(require("./cn.json"));
8
+ var _en = _interopRequireDefault(require("./en.json"));
9
+ var _fr = _interopRequireDefault(require("./fr.json"));
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ const translations = exports.translations = {
12
+ en: _en.default,
13
+ cn: _cn.default,
14
+ fr: _fr.default
15
+ };
16
+ const getTranslations = locale => {
17
+ return translations[locale] || translations.en;
18
+ };
19
+ exports.getTranslations = getTranslations;
20
+ const getSupportedLocales = () => {
21
+ return Object.keys(translations);
22
+ };
23
+ exports.getSupportedLocales = getSupportedLocales;
@@ -0,0 +1,13 @@
1
+ import en from './en.json';
2
+ export type TMessage = typeof en;
3
+ export type LocaleType = 'en' | 'cn' | 'fr';
4
+ export interface LanguageConfig {
5
+ en: TMessage;
6
+ cn: TMessage;
7
+ fr: TMessage;
8
+ }
9
+ type NestedKeyPaths<T, Prefix extends string = ''> = {
10
+ [K in keyof T]: T[K] extends object ? K extends string ? `${Prefix}${K}` | NestedKeyPaths<T[K], `${Prefix}${K}.`> : never : K extends string ? `${Prefix}${K}` : never;
11
+ }[keyof T];
12
+ export type TranslationKey = NestedKeyPaths<TMessage>;
13
+ export {};
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,22 @@
1
+ export interface BlockMeta {
2
+ changed: number;
3
+ created: number;
4
+ }
5
+ export type RelationshipItem = {
6
+ id: string;
7
+ type: string;
8
+ meta?: any;
9
+ };
10
+ export interface Relationship<D extends RelationshipItem = RelationshipItem> {
11
+ data: D | D[];
12
+ }
13
+ export interface Block<D = any, S = any> {
14
+ id: string;
15
+ type: string;
16
+ data: D;
17
+ settings: S;
18
+ meta: BlockMeta;
19
+ collapse?: boolean;
20
+ mpBlock?: boolean;
21
+ top?: boolean;
22
+ }
package/types/Block.js ADDED
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,50 @@
1
+ import { LoadableComponent } from '@loadable/component';
2
+ import React from 'react';
3
+ import { z } from 'zod';
4
+ import { ThrottleAndDebounce } from '../types';
5
+ import { Block } from './Block';
6
+ export interface EditFormProps<D, S> extends Partial<Block<D, S>> {
7
+ id: string;
8
+ data: D;
9
+ onChange(dataOrFn: D | ((prevData: D) => D)): void;
10
+ onDebouncedChange: ThrottleAndDebounce;
11
+ onThrottledChange: ThrottleAndDebounce;
12
+ onClose(): void;
13
+ }
14
+ export interface SettingsFormProps<D, S> extends Partial<Block<D, S>> {
15
+ id: string;
16
+ data: D;
17
+ settings: S;
18
+ onChange(settingsOrFn: S | ((prevSettings: S) => S)): void;
19
+ onDebouncedChange: ThrottleAndDebounce;
20
+ onThrottledChange: ThrottleAndDebounce;
21
+ }
22
+ export interface ViewProps<D, S, C = Record<string, any>> extends Block<D, S> {
23
+ contentEditable?: boolean;
24
+ onDataChange(data: D): void;
25
+ onSettingsChange(settings: S): void;
26
+ context?: C;
27
+ }
28
+ export interface BlockType<D = any, S = any> {
29
+ id: string;
30
+ icon?: string;
31
+ preview?: string;
32
+ category?: 'Banner' | 'Tool' | 'Card' | 'Text' | 'Media' | 'Design' | 'Brand';
33
+ collapse?: boolean;
34
+ label: string;
35
+ defaultData: D & {
36
+ blockName: string;
37
+ };
38
+ defaultSettings: S;
39
+ getDataSchema?(): Promise<z.Schema>;
40
+ getSettingsSchema?(): Promise<z.Schema>;
41
+ blockLabel(data: D): React.ReactNode;
42
+ settingsForm: LoadableComponent<SettingsFormProps<D, S>> | React.FunctionComponent<SettingsFormProps<D, S>> | null;
43
+ editForm: LoadableComponent<EditFormProps<D, S>> | React.FunctionComponent<EditFormProps<D, S>> | null;
44
+ view: LoadableComponent<ViewProps<D, S>> | React.FunctionComponent<ViewProps<D, S>> | null;
45
+ cardinality?: number;
46
+ disabled?: boolean;
47
+ suspense?: React.SuspenseProps;
48
+ mpBlock?: boolean;
49
+ top?: boolean;
50
+ }
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,11 @@
1
+ export interface Config<Data = any> {
2
+ id: string;
3
+ revisionId: number;
4
+ data: Data;
5
+ }
6
+ export interface ConfigStorageAdapter {
7
+ get<Data>(id: string): Promise<Config<Data> | null>;
8
+ delete(id: string): Promise<void>;
9
+ list(): Promise<string[]>;
10
+ save(config: Config): Promise<typeof config>;
11
+ }
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,68 @@
1
+ export interface StorageObject {
2
+ id: string;
3
+ type: 'file';
4
+ key: string;
5
+ size: number;
6
+ name: string;
7
+ lastModified: string;
8
+ }
9
+ export interface StorageObjectMeta {
10
+ name: string;
11
+ url: string;
12
+ uri: string;
13
+ contentType: string;
14
+ size: string;
15
+ md5?: string;
16
+ exif?: {
17
+ width: number;
18
+ height: number;
19
+ };
20
+ }
21
+ export interface Folder {
22
+ id: string;
23
+ type: 'folder';
24
+ prefix: string;
25
+ name: string;
26
+ }
27
+ export type LsResult = {
28
+ objects: StorageObject[];
29
+ folders: Folder[];
30
+ isTruncated: boolean;
31
+ count: number;
32
+ };
33
+ export interface ObjectStorageAdapter {
34
+ ls(args: {
35
+ prefix: string;
36
+ }): Promise<LsResult>;
37
+ upload(args: {
38
+ key: string;
39
+ file: File | Blob;
40
+ acl?: 'private' | 'public' | 'public-read';
41
+ overwrite?: boolean;
42
+ onProgress?: XMLHttpRequestUpload['onprogress'];
43
+ onReady?(xhr: XMLHttpRequest): void;
44
+ }): Promise<string>;
45
+ mkdir(args: {
46
+ key: string;
47
+ }): Promise<void>;
48
+ rename(args: {
49
+ source: string;
50
+ destination: string;
51
+ }): Promise<void>;
52
+ objectUrl(args: {
53
+ key: string;
54
+ expires?: number;
55
+ }): Promise<string>;
56
+ imagePreviewUrl(args: {
57
+ key: string;
58
+ expires?: number;
59
+ width: number;
60
+ }): Promise<string>;
61
+ objectMeta(args: {
62
+ key: string;
63
+ }): Promise<StorageObjectMeta>;
64
+ delete(args: {
65
+ key: string;
66
+ }): Promise<void>;
67
+ }
68
+ export default ObjectStorageAdapter;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,5 @@
1
+ export { Block, BlockMeta, Relationship, RelationshipItem } from './Block';
2
+ export { BlockType, EditFormProps, SettingsFormProps, ViewProps } from './BlockType';
3
+ export { Config, ConfigStorageAdapter } from './ConfigStorageAdapter';
4
+ export { ObjectStorageAdapter, StorageObject, StorageObjectMeta } from './ObjectStorageAdapter';
5
+ export { ThrottleAndDebounce, WrapFunction } from './throttle-and-debounce';
package/types/index.js ADDED
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Block", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _Block.Block;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "BlockMeta", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _Block.BlockMeta;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "BlockType", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _BlockType.BlockType;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "Config", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _ConfigStorageAdapter.Config;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "ConfigStorageAdapter", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _ConfigStorageAdapter.ConfigStorageAdapter;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "EditFormProps", {
37
+ enumerable: true,
38
+ get: function () {
39
+ return _BlockType.EditFormProps;
40
+ }
41
+ });
42
+ Object.defineProperty(exports, "ObjectStorageAdapter", {
43
+ enumerable: true,
44
+ get: function () {
45
+ return _ObjectStorageAdapter.ObjectStorageAdapter;
46
+ }
47
+ });
48
+ Object.defineProperty(exports, "Relationship", {
49
+ enumerable: true,
50
+ get: function () {
51
+ return _Block.Relationship;
52
+ }
53
+ });
54
+ Object.defineProperty(exports, "RelationshipItem", {
55
+ enumerable: true,
56
+ get: function () {
57
+ return _Block.RelationshipItem;
58
+ }
59
+ });
60
+ Object.defineProperty(exports, "SettingsFormProps", {
61
+ enumerable: true,
62
+ get: function () {
63
+ return _BlockType.SettingsFormProps;
64
+ }
65
+ });
66
+ Object.defineProperty(exports, "StorageObject", {
67
+ enumerable: true,
68
+ get: function () {
69
+ return _ObjectStorageAdapter.StorageObject;
70
+ }
71
+ });
72
+ Object.defineProperty(exports, "StorageObjectMeta", {
73
+ enumerable: true,
74
+ get: function () {
75
+ return _ObjectStorageAdapter.StorageObjectMeta;
76
+ }
77
+ });
78
+ Object.defineProperty(exports, "ThrottleAndDebounce", {
79
+ enumerable: true,
80
+ get: function () {
81
+ return _throttleAndDebounce.ThrottleAndDebounce;
82
+ }
83
+ });
84
+ Object.defineProperty(exports, "ViewProps", {
85
+ enumerable: true,
86
+ get: function () {
87
+ return _BlockType.ViewProps;
88
+ }
89
+ });
90
+ Object.defineProperty(exports, "WrapFunction", {
91
+ enumerable: true,
92
+ get: function () {
93
+ return _throttleAndDebounce.WrapFunction;
94
+ }
95
+ });
96
+ var _Block = require("./Block");
97
+ var _BlockType = require("./BlockType");
98
+ var _ConfigStorageAdapter = require("./ConfigStorageAdapter");
99
+ var _ObjectStorageAdapter = require("./ObjectStorageAdapter");
100
+ var _throttleAndDebounce = require("./throttle-and-debounce");
@@ -0,0 +1,2 @@
1
+ export type WrapFunction<T extends (...args: any[]) => void> = (fn: T) => T;
2
+ export type ThrottleAndDebounce = WrapFunction<any>;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,16 @@
1
+ import { Block } from '../types/Block';
2
+ import { BlockType } from '../types/BlockType';
3
+ export declare const createBlock: (blockType: BlockType) => Block<any, any>;
4
+ /**
5
+ *
6
+ * @param block -- Block type
7
+ * @param include -- blocks data will be including mp-nav when it is true,
8
+ * @param field -- use type or id to filter the block
9
+ * @returns -- return true if the block is mp-nav when include is true,
10
+ * otherwise execute the excluding logic
11
+ */
12
+ export declare const blockFilteredMPNav: (block: Block | BlockType, include?: boolean, field?: 'type' | 'id') => boolean;
13
+ declare const _default: {
14
+ createBlock: (blockType: BlockType<any, any>) => Block<any, any>;
15
+ };
16
+ export default _default;