@blockbite/ui 2.0.6 → 2.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AutocompleteDropdown.d.ts +1 -1
- package/dist/AutocompleteDropdown.js +23 -94
- package/dist/AutocompleteDropdown.js.map +1 -0
- package/dist/Badge.js +5 -15
- package/dist/Badge.js.map +1 -0
- package/dist/BitePreview.js +50 -60
- package/dist/BitePreview.js.map +1 -0
- package/dist/Button.d.ts +1 -1
- package/dist/Button.js +8 -51
- package/dist/Button.js.map +1 -0
- package/dist/ButtonToggle.js +44 -111
- package/dist/ButtonToggle.js.map +1 -0
- package/dist/Chapter.d.ts +1 -1
- package/dist/Chapter.js +6 -18
- package/dist/Chapter.js.map +1 -0
- package/dist/ChapterDivider.js +5 -16
- package/dist/ChapterDivider.js.map +1 -0
- package/dist/Checkbox.d.ts +1 -1
- package/dist/Checkbox.js +11 -20
- package/dist/Checkbox.js.map +1 -0
- package/dist/DisappearingMessage.js +27 -21
- package/dist/DisappearingMessage.js.map +1 -0
- package/dist/DropdownPicker.d.ts +1 -1
- package/dist/DropdownPicker.js +35 -52
- package/dist/DropdownPicker.js.map +1 -0
- package/dist/EmptyState.js +16 -17
- package/dist/EmptyState.js.map +1 -0
- package/dist/FloatingPanel.js +30 -41
- package/dist/FloatingPanel.js.map +1 -0
- package/dist/FocalPointControl.js +30 -40
- package/dist/FocalPointControl.js.map +1 -0
- package/dist/Icon.d.ts +1 -1
- package/dist/Icon.js +7 -8
- package/dist/Icon.js.map +1 -0
- package/dist/LinkPicker.d.ts +1 -1
- package/dist/LinkPicker.js +48 -65
- package/dist/LinkPicker.js.map +1 -0
- package/dist/MediaPicker.js +93 -90
- package/dist/MediaPicker.js.map +1 -0
- package/dist/MetricsControl.js +92 -117
- package/dist/MetricsControl.js.map +1 -0
- package/dist/Modal.js +74 -80
- package/dist/Modal.js.map +1 -0
- package/dist/NewWindowPortal.js +52 -40
- package/dist/NewWindowPortal.js.map +1 -0
- package/dist/Notice.d.ts +1 -1
- package/dist/Notice.js +9 -23
- package/dist/Notice.js.map +1 -0
- package/dist/PasswordInput.js +20 -36
- package/dist/PasswordInput.js.map +1 -0
- package/dist/Popover.js +22 -47
- package/dist/Popover.js.map +1 -0
- package/dist/RangeSlider.js +36 -47
- package/dist/RangeSlider.js.map +1 -0
- package/dist/ResponsiveImage.js +13 -36
- package/dist/ResponsiveImage.js.map +1 -0
- package/dist/ResponsiveVideo.js +7 -19
- package/dist/ResponsiveVideo.js.map +1 -0
- package/dist/ScrollList.js +9 -21
- package/dist/ScrollList.js.map +1 -0
- package/dist/SectionList.d.ts +1 -1
- package/dist/SectionList.js +57 -118
- package/dist/SectionList.js.map +1 -0
- package/dist/SelectControlWrapper.js +17 -32
- package/dist/SelectControlWrapper.js.map +1 -0
- package/dist/SingleBlockTypeAppender.js +17 -18
- package/dist/SingleBlockTypeAppender.js.map +1 -0
- package/dist/SlideIn.d.ts +1 -1
- package/dist/SlideIn.js +16 -27
- package/dist/SlideIn.js.map +1 -0
- package/dist/Spinner.js +16 -14
- package/dist/Spinner.js.map +1 -0
- package/dist/Tabs.d.ts +6 -6
- package/dist/Tabs.js +52 -50
- package/dist/Tabs.js.map +1 -0
- package/dist/Tag.js +5 -10
- package/dist/Tag.js.map +1 -0
- package/dist/TextControl.js +17 -51
- package/dist/TextControl.js.map +1 -0
- package/dist/TextControlLabel.d.ts +1 -1
- package/dist/TextControlLabel.js +7 -18
- package/dist/TextControlLabel.js.map +1 -0
- package/dist/ToggleGroup.js +15 -51
- package/dist/ToggleGroup.js.map +1 -0
- package/dist/ToggleSwitch.d.ts +1 -1
- package/dist/ToggleSwitch.js +16 -28
- package/dist/ToggleSwitch.js.map +1 -0
- package/dist/Wrap.js +7 -9
- package/dist/Wrap.js.map +1 -0
- package/dist/index.js +49 -88
- package/dist/index.js.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +26 -30
- package/dist/_virtual/jsx-runtime.js +0 -4
- package/dist/_virtual/react-jsx-runtime.development.js +0 -4
- package/dist/_virtual/react-jsx-runtime.production.min.js +0 -4
- package/dist/vite.svg +0 -1
package/dist/MediaPicker.js
CHANGED
|
@@ -1,93 +1,96 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { __
|
|
6
|
-
function
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { MediaUpload, MediaUploadCheck } from '@wordpress/block-editor';
|
|
3
|
+
import { Button, PanelRow } from '@wordpress/components';
|
|
4
|
+
import { useEffect, useState } from '@wordpress/element';
|
|
5
|
+
import { __ } from '@wordpress/i18n';
|
|
6
|
+
export function MediaPicker({ mediaProps, mediaCallback }) {
|
|
7
|
+
const allowedTypes = [
|
|
8
|
+
'image',
|
|
9
|
+
'video',
|
|
10
|
+
'image/svg+xml',
|
|
11
|
+
'svg',
|
|
12
|
+
'text/plain',
|
|
13
|
+
'application/json',
|
|
14
|
+
];
|
|
15
|
+
// toggles
|
|
16
|
+
const [stateMedia, setStateMedia] = useState({
|
|
17
|
+
id: null,
|
|
18
|
+
url: '',
|
|
19
|
+
sizes: [],
|
|
20
|
+
alt: '',
|
|
21
|
+
type: '',
|
|
22
|
+
width: 0,
|
|
23
|
+
height: 0,
|
|
24
|
+
});
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
if (mediaProps) {
|
|
27
|
+
setStateMedia(Object.assign({}, mediaProps));
|
|
28
|
+
}
|
|
29
|
+
}, [mediaProps]);
|
|
30
|
+
// image handlers
|
|
31
|
+
const removeMedia = () => {
|
|
32
|
+
const mediaObj = {
|
|
33
|
+
mediaId: 0,
|
|
34
|
+
mediaUrl: '',
|
|
35
|
+
};
|
|
36
|
+
mediaCallback(Object.assign({}, mediaObj));
|
|
36
37
|
};
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
a,
|
|
61
|
-
{
|
|
62
|
-
className: t.id === 0 ? "editor-post-featured-image__toggle" : "editor-post-featured-image__preview",
|
|
63
|
-
onClick: e,
|
|
64
|
-
children: [
|
|
65
|
-
t.id === 0 && r("Choose Media", "blockbite"),
|
|
66
|
-
t.id && t.type === "image" ? /* @__PURE__ */ l.jsx("div", { className: "blockbite--editor-visual-image", children: /* @__PURE__ */ l.jsx(
|
|
67
|
-
"img",
|
|
68
|
-
{
|
|
69
|
-
alt: t.alt ? t.alt : r("Image", "blockbite"),
|
|
70
|
-
src: t.url
|
|
38
|
+
// onselect media
|
|
39
|
+
const onSelectMedia = (media) => {
|
|
40
|
+
const safeSizes = {
|
|
41
|
+
thumbnail: null,
|
|
42
|
+
medium: null,
|
|
43
|
+
large: null,
|
|
44
|
+
};
|
|
45
|
+
// Normalize Sizes
|
|
46
|
+
if (media === null || media === void 0 ? void 0 : media.sizes) {
|
|
47
|
+
Object.keys(media.sizes).map((key) => {
|
|
48
|
+
const sizeObject = media.sizes[key];
|
|
49
|
+
if (key === 'thumbnail') {
|
|
50
|
+
safeSizes.thumbnail = sizeObject.url;
|
|
51
|
+
}
|
|
52
|
+
else if (sizeObject.width < 768 || sizeObject.height < 768) {
|
|
53
|
+
safeSizes.thumbnail = sizeObject.url;
|
|
54
|
+
}
|
|
55
|
+
if (key === 'medium') {
|
|
56
|
+
safeSizes.medium = sizeObject.url;
|
|
57
|
+
}
|
|
58
|
+
else if ((sizeObject.width > 1024 && sizeObject.width < 1024) ||
|
|
59
|
+
(sizeObject.height < 1536 && sizeObject.height > 1536)) {
|
|
60
|
+
safeSizes.medium = sizeObject.url;
|
|
71
61
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
62
|
+
if (key === 'large') {
|
|
63
|
+
safeSizes.large = sizeObject.url;
|
|
64
|
+
}
|
|
65
|
+
else if (sizeObject.width > 1536 || sizeObject.height > 1536) {
|
|
66
|
+
safeSizes.large = sizeObject.url;
|
|
67
|
+
}
|
|
68
|
+
return null;
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
// if type ends .lottie then it is a lottie file
|
|
72
|
+
if (media.url.endsWith('.json')) {
|
|
73
|
+
media.type = 'lottie';
|
|
74
|
+
}
|
|
75
|
+
// if type ends with .svg then it is an svg file
|
|
76
|
+
if (media.url.endsWith('.svg')) {
|
|
77
|
+
media.type = 'svg';
|
|
78
|
+
}
|
|
79
|
+
const mediaObj = {
|
|
80
|
+
id: media.id,
|
|
81
|
+
url: media.url,
|
|
82
|
+
sizes: safeSizes,
|
|
83
|
+
alt: media.alt,
|
|
84
|
+
type: media.type,
|
|
85
|
+
width: media.width,
|
|
86
|
+
height: media.height,
|
|
87
|
+
};
|
|
88
|
+
mediaCallback(Object.assign({}, mediaObj));
|
|
89
|
+
};
|
|
90
|
+
return (_jsxs(PanelRow, { children: [stateMedia.id !== null && (_jsx(MediaUploadCheck, { children: _jsx(MediaUpload, { onSelect: onSelectMedia, value: stateMedia.id, allowedTypes: allowedTypes, render: ({ open }) => (_jsxs(Button, { className: stateMedia.id === 0
|
|
91
|
+
? 'editor-post-featured-image__toggle'
|
|
92
|
+
: 'editor-post-featured-image__preview', onClick: open, children: [stateMedia.id === 0 && __('Choose Media', 'blockbite'), stateMedia.id && stateMedia.type === 'image' ? (_jsx("div", { className: "blockbite--editor-visual-image", children: _jsx("img", { alt: stateMedia.alt
|
|
93
|
+
? stateMedia.alt
|
|
94
|
+
: __('Image', 'blockbite'), src: stateMedia.url }) })) : ('Add media')] })) }) })), stateMedia.id !== 0 && (_jsx(MediaUploadCheck, { children: _jsx(MediaUpload, { title: __('Replace media', 'blockbite'), value: stateMedia.id, onSelect: onSelectMedia, allowedTypes: allowedTypes, render: ({ open }) => (_jsx(Button, { onClick: open, children: __('Replace media', 'blockbite') })) }) })), stateMedia.id !== 0 && (_jsx(MediaUploadCheck, { children: _jsx(Button, { onClick: () => removeMedia(), isDestructive: true, children: __('Remove media', 'blockbite') }) }))] }));
|
|
90
95
|
}
|
|
91
|
-
|
|
92
|
-
S as MediaPicker
|
|
93
|
-
};
|
|
96
|
+
//# sourceMappingURL=MediaPicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MediaPicker.js","sourceRoot":"","sources":["../src/MediaPicker.tsx"],"names":[],"mappings":"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"}
|
package/dist/MetricsControl.js
CHANGED
|
@@ -1,118 +1,93 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { ButtonToggleGroup
|
|
4
|
-
import { DropdownPicker
|
|
5
|
-
import { Popover
|
|
6
|
-
import { RangeSlider
|
|
7
|
-
import { TextControl
|
|
8
|
-
import { Wrap
|
|
9
|
-
import {
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
position: "bottom left",
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
size: "small",
|
|
92
|
-
defaultPressed: o?.toString() || "",
|
|
93
|
-
onPressedChange: (e) => {
|
|
94
|
-
i(e), t(e);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
)
|
|
98
|
-
}
|
|
99
|
-
),
|
|
100
|
-
/* @__PURE__ */ s.jsx(
|
|
101
|
-
P,
|
|
102
|
-
{
|
|
103
|
-
className: "h-[32px]",
|
|
104
|
-
defaultValue: r,
|
|
105
|
-
options: y,
|
|
106
|
-
onPressedChange: (e) => {
|
|
107
|
-
e === "reset" ? (i(""), t(""), m(!1)) : (x(e), g(e), f(e));
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
)
|
|
111
|
-
]
|
|
112
|
-
}
|
|
113
|
-
) });
|
|
114
|
-
};
|
|
115
|
-
export {
|
|
116
|
-
W as MetricsControl,
|
|
117
|
-
W as default
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from '@wordpress/element';
|
|
3
|
+
import { ButtonToggleGroup } from './ButtonToggle.js';
|
|
4
|
+
import { DropdownPicker } from './DropdownPicker.js';
|
|
5
|
+
import { Popover } from './Popover.js';
|
|
6
|
+
import { RangeSlider } from './RangeSlider.js';
|
|
7
|
+
import { TextControl } from './TextControl.js';
|
|
8
|
+
import { Wrap } from './Wrap.js';
|
|
9
|
+
import { ColumnSpacing as ColumnSpacingIcon, Desktop as DesktopIcon, Grid as GridIcon, Percentage as PercentageIcon, Slider as SliderIcon, Tailwind as TailwindUnitIcon, } from '@blockbite/icons';
|
|
10
|
+
export const MetricsControl = ({ defaultUnit, defaultValue, onValueChange, onUnitChange, inputClassName = 'w-[75px]', }) => {
|
|
11
|
+
const [isVisible, setIsVisible] = useState(false);
|
|
12
|
+
const [currentOptions, setCurrentOptions] = useState([]);
|
|
13
|
+
// Use local state for defaultUnit and defaultValue
|
|
14
|
+
const [unit, setUnit] = useState(defaultUnit);
|
|
15
|
+
const [value, setValue] = useState('');
|
|
16
|
+
const [resetValue, setResetValue] = useState(defaultValue);
|
|
17
|
+
// Set initial state from props
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
if (defaultUnit) {
|
|
20
|
+
setUnit(defaultUnit);
|
|
21
|
+
}
|
|
22
|
+
if (defaultValue) {
|
|
23
|
+
setValue(defaultValue.toString());
|
|
24
|
+
}
|
|
25
|
+
}, [defaultUnit, defaultValue]);
|
|
26
|
+
// Save last value after popover close to support "reset" functionality
|
|
27
|
+
// Only apply to arbitrary units
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
if (!isVisible && unit === 'arbitrary') {
|
|
30
|
+
setResetValue(value);
|
|
31
|
+
}
|
|
32
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
33
|
+
}, [isVisible]);
|
|
34
|
+
const showOptions = (u) => {
|
|
35
|
+
var _a, _b, _c;
|
|
36
|
+
if (u !== 'arbitrary' && ((_c = (_b = (_a = bb === null || bb === void 0 ? void 0 : bb.codex) === null || _a === void 0 ? void 0 : _a.units) === null || _b === void 0 ? void 0 : _b.spacing) === null || _c === void 0 ? void 0 : _c[u])) {
|
|
37
|
+
const options = bb.codex.units.spacing[u];
|
|
38
|
+
setCurrentOptions(Array.isArray(options) ? options : Object.keys(options));
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
setCurrentOptions([]);
|
|
42
|
+
}
|
|
43
|
+
setIsVisible(true);
|
|
44
|
+
};
|
|
45
|
+
const unitOptions = [
|
|
46
|
+
{
|
|
47
|
+
icon: _jsx(TailwindUnitIcon, {}),
|
|
48
|
+
label: 'Tailwind CSS Units',
|
|
49
|
+
value: 'native',
|
|
50
|
+
},
|
|
51
|
+
{ icon: _jsx(PercentageIcon, {}), label: 'Percentage Units', value: 'percent' },
|
|
52
|
+
{ icon: _jsx(GridIcon, {}), label: 'Grid Units', value: 'grid' },
|
|
53
|
+
{ icon: _jsx(DesktopIcon, {}), label: 'Screen Units', value: 'screen' },
|
|
54
|
+
{ icon: _jsx(SliderIcon, {}), label: 'Pixel Units', value: 'arbitrary' },
|
|
55
|
+
{ icon: _jsx(ColumnSpacingIcon, {}), label: 'Fluid Units', value: 'fluid' },
|
|
56
|
+
];
|
|
57
|
+
return (_jsx(Wrap, { className: "relative flex flex-col items-baseline", children: _jsxs(TextControl, { inputClassName: inputClassName, defaultValue:
|
|
58
|
+
// Remove the "b_" prefix for grid units
|
|
59
|
+
unit === 'grid' ? value.replace('b_', '') : value, onClick: () => unit !== 'arbitrary' && showOptions(unit), onChange: (newValue) => {
|
|
60
|
+
setValue(newValue);
|
|
61
|
+
onValueChange(newValue);
|
|
62
|
+
}, readOnly: unit !== 'arbitrary', children: [_jsx(Popover, { visible: isVisible, position: "bottom left", className: "w-[300px] bg-white shadow-sm", onVisibleChange: setIsVisible, children: unit === 'arbitrary' ? (_jsx(RangeSlider, { defaultValue: value, label: "Pixel Value", min: 0, max: 100, gridMode: true, showTooltip: false, allowReset: true, resetFallbackValue: isNaN(resetValue.toString())
|
|
63
|
+
? 0
|
|
64
|
+
: Number(resetValue) / 16, onValueChange: (newValue) => {
|
|
65
|
+
setValue(newValue);
|
|
66
|
+
onValueChange(newValue);
|
|
67
|
+
} })) : (_jsx(ButtonToggleGroup, { className: "mt-4", options: currentOptions.map((option) => ({
|
|
68
|
+
value: option,
|
|
69
|
+
label: unit === 'grid'
|
|
70
|
+
? option.toString().replace('b_', '')
|
|
71
|
+
: option,
|
|
72
|
+
onClick: () => {
|
|
73
|
+
setValue(option);
|
|
74
|
+
onValueChange(option);
|
|
75
|
+
},
|
|
76
|
+
})), size: "small", defaultPressed: (value === null || value === void 0 ? void 0 : value.toString()) || '', onPressedChange: (newValue) => {
|
|
77
|
+
setValue(newValue);
|
|
78
|
+
onValueChange(newValue);
|
|
79
|
+
} })) }), _jsx(DropdownPicker, { className: "h-[32px]", defaultValue: unit, options: unitOptions, onPressedChange: (selectedUnit) => {
|
|
80
|
+
if (selectedUnit === 'reset') {
|
|
81
|
+
setValue('');
|
|
82
|
+
onValueChange('');
|
|
83
|
+
setIsVisible(false);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
setUnit(selectedUnit);
|
|
87
|
+
onUnitChange(selectedUnit);
|
|
88
|
+
showOptions(selectedUnit);
|
|
89
|
+
}
|
|
90
|
+
} })] }) }));
|
|
118
91
|
};
|
|
92
|
+
export default MetricsControl;
|
|
93
|
+
//# sourceMappingURL=MetricsControl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetricsControl.js","sourceRoot":"","sources":["../src/MetricsControl.tsx"],"names":[],"mappings":"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"}
|
package/dist/Modal.js
CHANGED
|
@@ -1,82 +1,76 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
children: e,
|
|
12
|
-
defaultOpen: o,
|
|
13
|
-
onOpenChange: s,
|
|
14
|
-
title: p,
|
|
15
|
-
className: f
|
|
16
|
-
}) => {
|
|
17
|
-
const [m, c] = v(!1);
|
|
18
|
-
u(() => {
|
|
19
|
-
c(o);
|
|
20
|
-
}, [o]);
|
|
21
|
-
const M = () => c(!0), x = () => c(!1);
|
|
22
|
-
return u(() => {
|
|
23
|
-
s(m);
|
|
24
|
-
}, [m, s]), /* @__PURE__ */ r.jsxs(i.Provider, { value: { closeModal: x, openModal: M }, children: [
|
|
25
|
-
a.map(e, (t) => l(t) && t.type === w ? t : null),
|
|
26
|
-
m && /* @__PURE__ */ r.jsx(
|
|
27
|
-
C,
|
|
28
|
-
{
|
|
29
|
-
className: n("blockbite-ui__modal bb_", f),
|
|
30
|
-
onRequestClose: x,
|
|
31
|
-
title: p,
|
|
32
|
-
children: /* @__PURE__ */ r.jsxs("div", { className: "relative", children: [
|
|
33
|
-
a.map(e, (t) => l(t) && t.type === y ? t : null),
|
|
34
|
-
a.map(e, (t) => l(t) && t.type === g ? t : null),
|
|
35
|
-
a.map(e, (t) => l(t) && t.type === N ? t : null)
|
|
36
|
-
] })
|
|
37
|
-
}
|
|
38
|
-
)
|
|
39
|
-
] });
|
|
40
|
-
}, y = ({ children: e, className: o = "", ...s }) => /* @__PURE__ */ r.jsx(
|
|
41
|
-
"div",
|
|
42
|
-
{
|
|
43
|
-
className: n(
|
|
44
|
-
"flex flex-col space-y-1.5 text-center sm:text-left",
|
|
45
|
-
o
|
|
46
|
-
),
|
|
47
|
-
...s,
|
|
48
|
-
children: e
|
|
49
|
-
}
|
|
50
|
-
), N = ({ children: e, className: o = "", ...s }) => /* @__PURE__ */ r.jsx(
|
|
51
|
-
"div",
|
|
52
|
-
{
|
|
53
|
-
className: n(
|
|
54
|
-
"border-gray-light fixed bottom-0 left-0 right-0 flex h-[4rem] flex-row items-center justify-end space-x-2 border-t bg-white px-4",
|
|
55
|
-
o
|
|
56
|
-
),
|
|
57
|
-
...s,
|
|
58
|
-
children: e
|
|
59
|
-
}
|
|
60
|
-
), g = ({ children: e, className: o = "", ...s }) => /* @__PURE__ */ r.jsx(
|
|
61
|
-
"div",
|
|
62
|
-
{
|
|
63
|
-
className: n("text-gray-medium px-4 pb-4 text-sm", o),
|
|
64
|
-
...s,
|
|
65
|
-
children: e
|
|
66
|
-
}
|
|
67
|
-
), q = ({ children: e }) => {
|
|
68
|
-
const { closeModal: o } = d();
|
|
69
|
-
return /* @__PURE__ */ r.jsx("div", { onClick: o, className: "cursor-pointer", children: e });
|
|
70
|
-
}, w = ({ children: e }) => {
|
|
71
|
-
const { openModal: o } = d();
|
|
72
|
-
return /* @__PURE__ */ r.jsx("div", { onClick: o, className: "cursor-pointer", children: e });
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
73
11
|
};
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
12
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import { Children, createContext, isValidElement, useContext, useEffect, useState, } from '@wordpress/element';
|
|
14
|
+
import { Modal as WordpressModal } from '@wordpress/components';
|
|
15
|
+
import classNames from 'classnames';
|
|
16
|
+
const ModalContext = createContext(null);
|
|
17
|
+
export const useModalContext = () => {
|
|
18
|
+
const context = useContext(ModalContext);
|
|
19
|
+
if (!context) {
|
|
20
|
+
throw new Error('useModalContext must be used within a ModalProvider');
|
|
21
|
+
}
|
|
22
|
+
return context;
|
|
82
23
|
};
|
|
24
|
+
export const Modal = ({ children, defaultOpen, onOpenChange, title, className, }) => {
|
|
25
|
+
const [isOpen, setOpen] = useState(false);
|
|
26
|
+
// Sync `isOpen` with `defaultOpen` when `defaultOpen` changes
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
setOpen(defaultOpen);
|
|
29
|
+
}, [defaultOpen]);
|
|
30
|
+
const openModal = () => setOpen(true);
|
|
31
|
+
const closeModal = () => setOpen(false);
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
onOpenChange(isOpen);
|
|
34
|
+
}, [isOpen, onOpenChange]);
|
|
35
|
+
return (_jsxs(ModalContext.Provider, { value: { closeModal, openModal }, children: [Children.map(children, (child) => {
|
|
36
|
+
return isValidElement(child) && child.type === ModalTrigger
|
|
37
|
+
? child
|
|
38
|
+
: null;
|
|
39
|
+
}), isOpen && (_jsx(WordpressModal, { className: classNames('blockbite-ui__modal bb_', className), onRequestClose: closeModal, title: title, children: _jsxs("div", { className: "relative", children: [Children.map(children, (child) => {
|
|
40
|
+
return isValidElement(child) && child.type === ModalHeader
|
|
41
|
+
? child
|
|
42
|
+
: null;
|
|
43
|
+
}), Children.map(children, (child) => {
|
|
44
|
+
return isValidElement(child) && child.type === ModalContent
|
|
45
|
+
? child
|
|
46
|
+
: null;
|
|
47
|
+
}), Children.map(children, (child) => {
|
|
48
|
+
return isValidElement(child) && child.type === ModalFooter
|
|
49
|
+
? child
|
|
50
|
+
: null;
|
|
51
|
+
})] }) }))] }));
|
|
52
|
+
};
|
|
53
|
+
// Header component for modal
|
|
54
|
+
export const ModalHeader = (_a) => {
|
|
55
|
+
var { children, className = '' } = _a, props = __rest(_a, ["children", "className"]);
|
|
56
|
+
return (_jsx("div", Object.assign({ className: classNames('flex flex-col space-y-1.5 text-center sm:text-left', className) }, props, { children: children })));
|
|
57
|
+
};
|
|
58
|
+
// Footer component for modal
|
|
59
|
+
export const ModalFooter = (_a) => {
|
|
60
|
+
var { children, className = '' } = _a, props = __rest(_a, ["children", "className"]);
|
|
61
|
+
return (_jsx("div", Object.assign({ className: classNames('border-gray-light fixed bottom-0 left-0 right-0 flex h-[4rem] flex-row items-center justify-end space-x-2 border-t bg-white px-4', className) }, props, { children: children })));
|
|
62
|
+
};
|
|
63
|
+
// Description component for modal
|
|
64
|
+
export const ModalContent = (_a) => {
|
|
65
|
+
var { children, className = '' } = _a, props = __rest(_a, ["children", "className"]);
|
|
66
|
+
return (_jsx("div", Object.assign({ className: classNames('text-gray-medium px-4 pb-4 text-sm', className) }, props, { children: children })));
|
|
67
|
+
};
|
|
68
|
+
export const ModalClose = ({ children }) => {
|
|
69
|
+
const { closeModal } = useModalContext();
|
|
70
|
+
return (_jsx("div", { onClick: closeModal, className: "cursor-pointer", children: children }));
|
|
71
|
+
};
|
|
72
|
+
export const ModalTrigger = ({ children }) => {
|
|
73
|
+
const { openModal } = useModalContext();
|
|
74
|
+
return (_jsx("div", { onClick: openModal, className: "cursor-pointer", children: children }));
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=Modal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Modal.js","sourceRoot":"","sources":["../src/Modal.tsx"],"names":[],"mappings":"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"}
|