@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
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _styled = _interopRequireDefault(require("@mui/material/styles/styled.js"));
8
+ var _react = require("react");
9
+ var _reactColorful = require("react-colorful");
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ const PreviewSpan = (0, _styled.default)('span')(() => ({
13
+ display: 'flex',
14
+ alignItems: 'center',
15
+ justifyContent: 'center',
16
+ width: '100%',
17
+ border: '1px solid #ccc',
18
+ height: 64,
19
+ position: 'relative',
20
+ '&:after': {
21
+ content: '" "',
22
+ position: 'absolute',
23
+ backgroundImage: `
24
+ repeating-linear-gradient(45deg, #e0e0e0 25%, transparent 25%, transparent 75%, #e0e0e0 75%, #e0e0e0),
25
+ repeating-linear-gradient(45deg, #e0e0e0 25%, transparent 25%, transparent 75%, #e0e0e0 75%, #e0e0e0)`,
26
+ backgroundPosition: '0 0,24px 24px',
27
+ backgroundSize: '48px 48px',
28
+ inset: '1px',
29
+ zIndex: -1
30
+ }
31
+ }));
32
+ function GradientColorPicker({
33
+ current = '',
34
+ onChange,
35
+ label = 'Gradient Color Picker',
36
+ presets
37
+ }) {
38
+ const [showPicker, setShowPicker] = (0, _react.useState)(false);
39
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
40
+ onMouseLeave: () => {
41
+ if (showPicker) setShowPicker(false);
42
+ },
43
+ style: {
44
+ display: 'flex',
45
+ flexDirection: 'column',
46
+ gap: 16
47
+ },
48
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("h3", {
49
+ style: {
50
+ fontWeight: 'bold',
51
+ textTransform: 'uppercase'
52
+ },
53
+ children: label
54
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
55
+ type: "button",
56
+ style: {
57
+ cursor: 'pointer'
58
+ },
59
+ onClick: () => setShowPicker(!showPicker),
60
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(PreviewSpan, {
61
+ style: {
62
+ background: current
63
+ },
64
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
65
+ style: {
66
+ color: '#fff',
67
+ mixBlendMode: 'difference'
68
+ },
69
+ children: current
70
+ })
71
+ })
72
+ }), showPicker &&
73
+ /*#__PURE__*/
74
+ // Note: react-colorful types may be incompatible with React 19
75
+ (0, _jsxRuntime.jsx)(_reactColorful.HexAlphaColorPicker, {
76
+ color: current,
77
+ onChange: val => onChange(val)
78
+ })]
79
+ });
80
+ }
81
+ var _default = exports.default = GradientColorPicker;
@@ -0,0 +1,2 @@
1
+ import GradientColorPicker from './GradientColorPicker';
2
+ export default GradientColorPicker;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _GradientColorPicker = _interopRequireDefault(require("./GradientColorPicker"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ var _default = exports.default = _GradientColorPicker.default;
@@ -0,0 +1,14 @@
1
+ export declare const headingAttributes: readonly ["Element", "FontSize", "DesktopFontSize", "LineHeight", "DesktopLineHeight", "FontWeight", "DesktopFontWeight", "LetterSpacing", "DesktopLetterSpacing"];
2
+ export type HeadingAttribute = (typeof headingAttributes)[number];
3
+ export type HeadingControlData = {
4
+ content: string;
5
+ attributes: {
6
+ [key in HeadingAttribute]: string;
7
+ };
8
+ };
9
+ export declare const defaultHeadingData: HeadingControlData;
10
+ export default function HeadingControl({ label, data, onChange }: {
11
+ label?: string;
12
+ data: HeadingControlData;
13
+ onChange: <T extends keyof HeadingControlData>(key: T, value: HeadingControlData[T]) => void;
14
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,251 @@
1
+ "use strict";
2
+ 'use client';
3
+
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = HeadingControl;
8
+ exports.headingAttributes = exports.defaultHeadingData = void 0;
9
+ var _Edit = _interopRequireDefault(require("@mui/icons-material/Edit"));
10
+ var _Settings = _interopRequireDefault(require("@mui/icons-material/Settings"));
11
+ var _TextField = _interopRequireDefault(require("@mui/material/TextField/TextField.js"));
12
+ var _useTheme = _interopRequireDefault(require("@mui/material/styles/useTheme.js"));
13
+ var _react = _interopRequireWildcard(require("react"));
14
+ var _jsxRuntime = require("react/jsx-runtime");
15
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
16
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
17
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
18
+ const headingAttributes = exports.headingAttributes = ['Element', 'FontSize', 'DesktopFontSize', 'LineHeight', 'DesktopLineHeight', 'FontWeight', 'DesktopFontWeight', 'LetterSpacing', 'DesktopLetterSpacing'];
19
+ // 定义一个泛型类型,用于生成带前缀的类型
20
+ // export type PrefixHeadingData<P extends string> = {
21
+ // [K in keyof HeadingControlData as `${P}${K & string}`]: HeadingControlData[K];
22
+ // };
23
+
24
+ const defaultHeadingData = exports.defaultHeadingData = {
25
+ content: '',
26
+ attributes: {
27
+ Element: 'h2',
28
+ FontSize: '32px',
29
+ LineHeight: '40px',
30
+ FontWeight: '350',
31
+ LetterSpacing: '0px',
32
+ DesktopFontSize: '56px',
33
+ DesktopLineHeight: '72px',
34
+ DesktopFontWeight: '350',
35
+ DesktopLetterSpacing: '0px'
36
+ }
37
+ };
38
+ function HeadingControl({
39
+ label = 'Title',
40
+ data,
41
+ onChange
42
+ }) {
43
+ const theme = (0, _useTheme.default)();
44
+ const [showSettings, setShowSettings] = (0, _react.useState)(false);
45
+ const toggleSettings = () => {
46
+ setShowSettings(prev => !prev);
47
+ };
48
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
49
+ style: {
50
+ display: 'flex',
51
+ flexDirection: 'column',
52
+ gap: 16
53
+ },
54
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("button", {
55
+ type: "button",
56
+ style: {
57
+ cursor: 'pointer',
58
+ display: 'flex',
59
+ alignItems: 'center',
60
+ justifyContent: 'space-between',
61
+ borderBottom: '1px solid #eee',
62
+ padding: '8px 0'
63
+ },
64
+ onClick: toggleSettings,
65
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
66
+ style: {
67
+ fontWeight: 'bold',
68
+ textTransform: 'uppercase'
69
+ },
70
+ children: label
71
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
72
+ style: {
73
+ display: 'flex',
74
+ gap: 16
75
+ },
76
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Edit.default, {
77
+ style: {
78
+ color: showSettings ? theme.palette.grey[500] : theme.palette.primary.main
79
+ }
80
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Settings.default, {
81
+ style: {
82
+ color: showSettings ? theme.palette.primary.main : theme.palette.grey[500]
83
+ }
84
+ })]
85
+ })]
86
+ }), !showSettings && /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
87
+ label: "Title",
88
+ multiline: true,
89
+ value: data.content,
90
+ onChange: e => onChange('content', e.target.value)
91
+ }), showSettings && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
92
+ style: {
93
+ display: 'flex',
94
+ flexDirection: 'column',
95
+ gap: 16
96
+ },
97
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
98
+ style: {
99
+ display: 'flex',
100
+ alignItems: 'center',
101
+ gap: '8px',
102
+ padding: '4px 0'
103
+ },
104
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("label", {
105
+ style: {
106
+ width: '120px',
107
+ fontWeight: 'bold'
108
+ },
109
+ children: "Element"
110
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("select", {
111
+ style: {
112
+ border: '1px solid #ccc',
113
+ padding: '5px 10px',
114
+ borderRadius: '4px'
115
+ },
116
+ defaultValue: data.attributes.Element,
117
+ onChange: e => {
118
+ onChange('attributes', {
119
+ ...data.attributes,
120
+ Element: e.target.value
121
+ });
122
+ },
123
+ children: ['H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'P'].map(el => /*#__PURE__*/(0, _jsxRuntime.jsx)("option", {
124
+ value: el.toLowerCase(),
125
+ children: el
126
+ }, el))
127
+ })]
128
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
129
+ style: {
130
+ display: 'flex',
131
+ alignItems: 'center',
132
+ gap: '8px',
133
+ padding: '4px 0'
134
+ },
135
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("label", {
136
+ style: {
137
+ width: '120px',
138
+ fontWeight: 'bold'
139
+ },
140
+ children: "Font Size"
141
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
142
+ label: "Desktop",
143
+ size: "small",
144
+ value: data.attributes.DesktopFontSize,
145
+ onChange: e => onChange('attributes', {
146
+ ...data.attributes,
147
+ DesktopFontSize: e.target.value
148
+ })
149
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
150
+ label: "Mobile",
151
+ size: "small",
152
+ value: data.attributes.FontSize,
153
+ onChange: e => onChange('attributes', {
154
+ ...data.attributes,
155
+ FontSize: e.target.value
156
+ })
157
+ })]
158
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
159
+ style: {
160
+ display: 'flex',
161
+ alignItems: 'center',
162
+ gap: '8px',
163
+ padding: '4px 0'
164
+ },
165
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("label", {
166
+ style: {
167
+ width: '120px',
168
+ fontWeight: 'bold'
169
+ },
170
+ children: "Line Height"
171
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
172
+ label: "Desktop",
173
+ size: "small",
174
+ value: data.attributes.DesktopLineHeight,
175
+ onChange: e => onChange('attributes', {
176
+ ...data.attributes,
177
+ DesktopLineHeight: e.target.value
178
+ })
179
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
180
+ label: "Mobile",
181
+ size: "small",
182
+ value: data.attributes.LineHeight,
183
+ onChange: e => onChange('attributes', {
184
+ ...data.attributes,
185
+ LineHeight: e.target.value
186
+ })
187
+ })]
188
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
189
+ style: {
190
+ display: 'flex',
191
+ alignItems: 'center',
192
+ gap: '8px',
193
+ padding: '4px 0'
194
+ },
195
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("label", {
196
+ style: {
197
+ width: '120px',
198
+ fontWeight: 'bold'
199
+ },
200
+ children: "Font Weight"
201
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
202
+ label: "Desktop",
203
+ size: "small",
204
+ value: data.attributes.DesktopFontWeight,
205
+ onChange: e => onChange('attributes', {
206
+ ...data.attributes,
207
+ DesktopFontWeight: e.target.value
208
+ })
209
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
210
+ label: "Mobile",
211
+ size: "small",
212
+ value: data.attributes.FontWeight,
213
+ onChange: e => onChange('attributes', {
214
+ ...data.attributes,
215
+ FontWeight: e.target.value
216
+ })
217
+ })]
218
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
219
+ style: {
220
+ display: 'flex',
221
+ alignItems: 'center',
222
+ gap: '8px',
223
+ padding: '4px 0'
224
+ },
225
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("label", {
226
+ style: {
227
+ width: '120px',
228
+ fontWeight: 'bold'
229
+ },
230
+ children: "Spacing"
231
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
232
+ label: "Desktop",
233
+ size: "small",
234
+ value: data.attributes.DesktopLetterSpacing,
235
+ onChange: e => onChange('attributes', {
236
+ ...data.attributes,
237
+ DesktopLetterSpacing: e.target.value
238
+ })
239
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
240
+ label: "Mobile",
241
+ size: "small",
242
+ value: data.attributes.LetterSpacing,
243
+ onChange: e => onChange('attributes', {
244
+ ...data.attributes,
245
+ LetterSpacing: e.target.value
246
+ })
247
+ })]
248
+ })]
249
+ })]
250
+ });
251
+ }
@@ -0,0 +1,21 @@
1
+ import React, { HTMLAttributes } from 'react';
2
+ import { HeadingControlData } from './HeadingControl';
3
+ /**
4
+ * @example
5
+ * // use the code below in your block view.
6
+ * <HeadingView
7
+ * data={data.title}
8
+ * className="whitespace-pre-line
9
+ * text-[length:var(--fontsize)] lg:text-[length:var(--desktop-fontsize)]
10
+ * leading-[--line-height] lg:leading-[--desktop-line-height]
11
+ * font-[--font-weight] lg:font-[--desktop-font-weight]
12
+ * tracking-[--letter-spacing] lg:tracking-[--desktop-letter-spacing]"
13
+ * />
14
+ */
15
+ export default function HeadingView({ data, className }: {
16
+ data: HeadingControlData;
17
+ className?: HTMLAttributes<HTMLHeadingElement>['className'];
18
+ }): React.ReactElement<{
19
+ style: React.CSSProperties;
20
+ className: string;
21
+ }, string | React.JSXElementConstructor<any>>;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = HeadingView;
7
+ var _clsx = _interopRequireDefault(require("clsx"));
8
+ var _react = _interopRequireDefault(require("react"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ /**
11
+ * @example
12
+ * // use the code below in your block view.
13
+ * <HeadingView
14
+ * data={data.title}
15
+ * className="whitespace-pre-line
16
+ * text-[length:var(--fontsize)] lg:text-[length:var(--desktop-fontsize)]
17
+ * leading-[--line-height] lg:leading-[--desktop-line-height]
18
+ * font-[--font-weight] lg:font-[--desktop-font-weight]
19
+ * tracking-[--letter-spacing] lg:tracking-[--desktop-letter-spacing]"
20
+ * />
21
+ */
22
+ function HeadingView({
23
+ data,
24
+ className
25
+ }) {
26
+ const {
27
+ content,
28
+ attributes
29
+ } = data;
30
+ return /*#__PURE__*/_react.default.createElement(attributes.Element || 'p', {
31
+ style: {
32
+ '--fontsize': attributes.FontSize,
33
+ '--desktop-fontsize': attributes.DesktopFontSize,
34
+ '--line-height': attributes.LineHeight,
35
+ '--desktop-line-height': attributes.DesktopLineHeight,
36
+ '--font-weight': attributes.FontWeight,
37
+ '--desktop-font-weight': attributes.DesktopFontWeight,
38
+ '--letter-spacing': attributes.LetterSpacing,
39
+ '--desktop-letter-spacing': attributes.DesktopLetterSpacing
40
+ },
41
+ className: (0, _clsx.default)(className, 'whitespace-pre-line', 'text-[length:var(--fontsize)] lg:text-[length:var(--desktop-fontsize)]', 'leading-[--line-height] lg:leading-[--desktop-line-height]', 'font-[--font-weight] lg:font-[--desktop-font-weight]', 'tracking-[--letter-spacing] lg:tracking-[--desktop-letter-spacing]')
42
+ }, content);
43
+ }
@@ -0,0 +1,4 @@
1
+ import HeadingControl from './HeadingControl';
2
+ export { defaultHeadingData } from './HeadingControl';
3
+ export type { HeadingControlData } from './HeadingControl';
4
+ export default HeadingControl;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ Object.defineProperty(exports, "defaultHeadingData", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _HeadingControl.defaultHeadingData;
11
+ }
12
+ });
13
+ var _HeadingControl = _interopRequireWildcard(require("./HeadingControl"));
14
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
15
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
+ var _default = exports.default = _HeadingControl.default;
@@ -0,0 +1,14 @@
1
+ import { DialogProps } from '@mui/material';
2
+ import { Object as BrowserObject, Permissions } from 'itc-file-browser';
3
+ import React from 'react';
4
+ export type FileBrowserDialogProps = {
5
+ open: boolean;
6
+ onClose(): void;
7
+ onSelect(files: BrowserObject[]): void;
8
+ permissions: Permissions;
9
+ cardinality: number;
10
+ container?: DialogProps['container'];
11
+ allowedExtensions: string[];
12
+ };
13
+ declare const FileBrowserDialog: React.FC<FileBrowserDialogProps>;
14
+ export default FileBrowserDialog;
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = require("@emotion/react");
8
+ var _Box = _interopRequireDefault(require("@mui/material/Box/Box.js"));
9
+ var _CircularProgress = _interopRequireDefault(require("@mui/material/CircularProgress/CircularProgress.js"));
10
+ var _Dialog = _interopRequireDefault(require("@mui/material/Dialog/Dialog.js"));
11
+ var _DialogContent = _interopRequireDefault(require("@mui/material/DialogContent/DialogContent.js"));
12
+ var _colors = require("@mui/material/colors");
13
+ var _DialogTitle = _interopRequireDefault(require("@mui/material/DialogTitle"));
14
+ var _styles = require("@mui/material/styles");
15
+ var _itcFileBrowser = _interopRequireDefault(require("itc-file-browser"));
16
+ var _react2 = _interopRequireWildcard(require("react"));
17
+ var _store = require("../../store");
18
+ var _jsxRuntime = require("react/jsx-runtime");
19
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
20
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
21
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
22
+ const PREFIX = 'FileBrowserDialog';
23
+ const classes = {
24
+ root: `${PREFIX}-root`,
25
+ dialogTitle: `${PREFIX}-dialogTitle`,
26
+ dialogContent: `${PREFIX}-dialogContent`
27
+ };
28
+ const Root = (0, _styles.styled)(_Dialog.default)(({
29
+ theme
30
+ }) => (0, _react.css)`
31
+ & {
32
+
33
+ }
34
+
35
+ .${classes.dialogTitle} {
36
+ border-bottom: 1px solid ${_colors.grey[300]};
37
+ }
38
+
39
+ .${classes.dialogContent} {
40
+ padding: 0;
41
+ }
42
+
43
+ .FileBrowser-main {
44
+ padding: 0;
45
+ .FileBrowserActions-root,
46
+ .Header-root {
47
+ padding-left: ${theme.spacing(2)};
48
+ padding-right: ${theme.spacing(2)};
49
+ }
50
+ }
51
+ `);
52
+ const FileBrowserDialog = props => {
53
+ const {
54
+ open,
55
+ onClose,
56
+ container,
57
+ onSelect,
58
+ cardinality,
59
+ permissions,
60
+ allowedExtensions
61
+ } = props;
62
+ const [selectedFiles, setSelectedFiles] = (0, _react2.useState)([]);
63
+ const [loading, setLoading] = (0, _react2.useState)(false);
64
+ const storage = (0, _store.useObjectStorage)();
65
+ const handleChooseFiles = async chosenObjects => {
66
+ onSelect(chosenObjects.slice(0, cardinality));
67
+ onClose();
68
+ };
69
+ (0, _react2.useEffect)(() => {
70
+ if (!open) {
71
+ setSelectedFiles([]);
72
+ setLoading(false);
73
+ }
74
+ }, [open]);
75
+ if (!storage) {
76
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
77
+ className: classes.root,
78
+ open: open,
79
+ onClose: onClose,
80
+ container: container,
81
+ PaperProps: {
82
+ sx: {
83
+ position: 'relative',
84
+ width: '80vw',
85
+ maxWidth: '90vw',
86
+ height: '80%'
87
+ }
88
+ },
89
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_DialogTitle.default, {
90
+ className: classes.dialogTitle,
91
+ children: "Unable to add or select media. No storage adapter provided."
92
+ })
93
+ });
94
+ }
95
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Root, {
96
+ className: classes.root,
97
+ open: open,
98
+ onClose: onClose,
99
+ container: container,
100
+ PaperProps: {
101
+ sx: {
102
+ position: 'relative',
103
+ width: '80vw',
104
+ maxWidth: '90vw',
105
+ height: '80%'
106
+ }
107
+ },
108
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_DialogTitle.default, {
109
+ className: classes.dialogTitle,
110
+ children: "Add or select media"
111
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_DialogContent.default, {
112
+ className: classes.dialogContent,
113
+ children: [open && selectedFiles.length === 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_itcFileBrowser.default, {
114
+ portalContainer: container,
115
+ onClose: onClose,
116
+ allowedExtensions: allowedExtensions,
117
+ onChooseFiles: handleChooseFiles,
118
+ adapter: storage,
119
+ viewMode: "grid",
120
+ permissions: permissions
121
+ }), loading && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
122
+ sx: {
123
+ position: 'absolute',
124
+ top: 0,
125
+ left: 0,
126
+ width: '100%',
127
+ height: '100%',
128
+ display: 'flex',
129
+ alignItems: 'center',
130
+ justifyContent: 'center',
131
+ background: 'rgba(255 255 255 / 0.5)'
132
+ },
133
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_CircularProgress.default, {})
134
+ })]
135
+ })]
136
+ });
137
+ };
138
+ var _default = exports.default = FileBrowserDialog;
@@ -0,0 +1,38 @@
1
+ import { Object as FileBrowserObject, ObjectMeta } from 'itc-file-browser';
2
+ import React from 'react';
3
+ import { FileBrowserDialogProps } from './FileBrowserDialog';
4
+ export type MediaType = 'image' | 'document' | 'video';
5
+ export type MediaItem = FileBrowserObject & {
6
+ meta?: ObjectMeta;
7
+ settings?: {
8
+ version: number;
9
+ filter: {
10
+ name: string;
11
+ value: number;
12
+ };
13
+ };
14
+ };
15
+ type MediaControlData<Cardinality extends number> = Cardinality extends 1 ? MediaItem | null : MediaItem[];
16
+ type MediaControlProps<Cardinality extends number = number> = {
17
+ cardinality?: Cardinality;
18
+ onChange(arg: MediaControlData<Cardinality>): void;
19
+ initialData: MediaControlData<Cardinality>;
20
+ type?: MediaType;
21
+ label: React.ReactNode;
22
+ required?: boolean;
23
+ permissions?: FileBrowserDialogProps['permissions'];
24
+ mediaGridItemSize?: {
25
+ xs?: number;
26
+ sm?: number;
27
+ md?: number;
28
+ lg?: number;
29
+ xl?: number;
30
+ };
31
+ itemActions?: React.FC<{
32
+ onChange(media: MediaItem): void;
33
+ }>;
34
+ disableFilters?: boolean;
35
+ className?: string | (string | Record<string, any>)[];
36
+ };
37
+ declare const MediaControl: <Cardinality extends number = 1>(props: MediaControlProps<Cardinality>) => React.ReactElement;
38
+ export default MediaControl;