@blaze-cms/plugin-media-ui 0.146.0-alpha.13 → 0.146.0-alpha.14
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/CHANGELOG.md +11 -0
- package/lib/components/FilePreview/Actions/index.js +2 -2
- package/lib/components/FilePreview/Actions/index.js.map +1 -1
- package/lib/components/FilePreview/Image/index.js +1 -3
- package/lib/components/FilePreview/Image/index.js.map +1 -1
- package/lib/components/FilePreviewReadOnly/FilePreviewList.js +1 -1
- package/lib/components/FilePreviewReadOnly/FilePreviewList.js.map +1 -1
- package/lib/components/FilePreviewReadOnly/FilePreviewReadOnly.js +7 -11
- package/lib/components/FilePreviewReadOnly/FilePreviewReadOnly.js.map +1 -1
- package/lib/components/FileUploadAdapter/FileUploadAdapter.js +23 -14
- package/lib/components/FileUploadAdapter/FileUploadAdapter.js.map +1 -1
- package/lib/components/FileUploadModal/FileUploadModal.js +17 -9
- package/lib/components/FileUploadModal/FileUploadModal.js.map +1 -1
- package/lib/components/ListingContainer/Listing/Listing.js +6 -1
- package/lib/components/ListingContainer/Listing/Listing.js.map +1 -1
- package/lib/components/ListingContainer/ListingContainer.js +17 -6
- package/lib/components/ListingContainer/ListingContainer.js.map +1 -1
- package/lib/utils/media-context/media-context.js +1 -1
- package/lib/utils/media-context/media-context.js.map +1 -1
- package/lib-es/components/FilePreview/Actions/index.js +2 -2
- package/lib-es/components/FilePreview/Actions/index.js.map +1 -1
- package/lib-es/components/FilePreview/Image/index.js +1 -3
- package/lib-es/components/FilePreview/Image/index.js.map +1 -1
- package/lib-es/components/FilePreviewReadOnly/FilePreviewList.js +1 -1
- package/lib-es/components/FilePreviewReadOnly/FilePreviewList.js.map +1 -1
- package/lib-es/components/FilePreviewReadOnly/FilePreviewReadOnly.js +2 -4
- package/lib-es/components/FilePreviewReadOnly/FilePreviewReadOnly.js.map +1 -1
- package/lib-es/components/FileUploadAdapter/FileUploadAdapter.js +13 -8
- package/lib-es/components/FileUploadAdapter/FileUploadAdapter.js.map +1 -1
- package/lib-es/components/FileUploadModal/FileUploadModal.js +14 -4
- package/lib-es/components/FileUploadModal/FileUploadModal.js.map +1 -1
- package/lib-es/components/ListingContainer/Listing/Listing.js +6 -1
- package/lib-es/components/ListingContainer/Listing/Listing.js.map +1 -1
- package/lib-es/components/ListingContainer/ListingContainer.js +17 -5
- package/lib-es/components/ListingContainer/ListingContainer.js.map +1 -1
- package/lib-es/utils/media-context/media-context.js +1 -1
- package/lib-es/utils/media-context/media-context.js.map +1 -1
- package/package.json +2 -2
- package/src/components/FilePreview/Actions/index.js +18 -14
- package/src/components/FilePreview/Image/index.js +1 -3
- package/src/components/FilePreviewReadOnly/FilePreviewList.js +3 -1
- package/src/components/FilePreviewReadOnly/FilePreviewReadOnly.js +2 -7
- package/src/components/FileUploadAdapter/FileUploadAdapter.js +18 -10
- package/src/components/FileUploadModal/FileUploadModal.js +12 -4
- package/src/components/ListingContainer/Listing/Listing.js +6 -1
- package/src/components/ListingContainer/ListingContainer.js +14 -2
- package/src/utils/media-context/media-context.js +1 -1
- package/lib/components/FilePreview/Image/ReadOnly.js +0 -47
- package/lib/components/FilePreview/Image/ReadOnly.js.map +0 -1
- package/lib-es/components/FilePreview/Image/ReadOnly.js +0 -37
- package/lib-es/components/FilePreview/Image/ReadOnly.js.map +0 -1
- package/src/components/FilePreview/Image/ReadOnly.js +0 -33
|
@@ -12,6 +12,7 @@ const Listing = ({
|
|
|
12
12
|
handleDisplayFileUploadModal,
|
|
13
13
|
getSelectedFiles,
|
|
14
14
|
setDisplayFileUploadModal,
|
|
15
|
+
closeModalAndSetValue,
|
|
15
16
|
simpleLayout
|
|
16
17
|
}) => (
|
|
17
18
|
<div className="page">
|
|
@@ -21,6 +22,8 @@ const Listing = ({
|
|
|
21
22
|
handleDisplayFileUploadModal(false);
|
|
22
23
|
setDisplayFileUploadModal(false);
|
|
23
24
|
}}
|
|
25
|
+
closeModalAndSetValue={closeModalAndSetValue}
|
|
26
|
+
simpleLayout={simpleLayout}
|
|
24
27
|
getSelectedFiles={getSelectedFiles}
|
|
25
28
|
/>
|
|
26
29
|
)}
|
|
@@ -57,10 +60,12 @@ Listing.propTypes = {
|
|
|
57
60
|
handleDisplayFileUploadModal: PropTypes.func,
|
|
58
61
|
simpleLayout: PropTypes.bool,
|
|
59
62
|
setDisplayFileUploadModal: PropTypes.func.isRequired,
|
|
60
|
-
displayFileUploadModal: PropTypes.bool.isRequired
|
|
63
|
+
displayFileUploadModal: PropTypes.bool.isRequired,
|
|
64
|
+
closeModalAndSetValue: PropTypes.func
|
|
61
65
|
};
|
|
62
66
|
|
|
63
67
|
Listing.defaultProps = {
|
|
68
|
+
closeModalAndSetValue: () => {},
|
|
64
69
|
handleDisplayFileUploadModal: () => {},
|
|
65
70
|
simpleLayout: false
|
|
66
71
|
};
|
|
@@ -15,6 +15,7 @@ const ListingContainer = ({
|
|
|
15
15
|
filesSelected,
|
|
16
16
|
displayFileUploadModal,
|
|
17
17
|
setDisplayFileUploadModal,
|
|
18
|
+
closeModalAndSetValue,
|
|
18
19
|
simpleLayout
|
|
19
20
|
}) => {
|
|
20
21
|
const [selectedFiles, setSelectedFiles] = useState(filesSelected || []);
|
|
@@ -31,7 +32,13 @@ const ListingContainer = ({
|
|
|
31
32
|
});
|
|
32
33
|
if (loading) return null;
|
|
33
34
|
|
|
34
|
-
const getSelectedFiles = (
|
|
35
|
+
const getSelectedFiles = (file, files) => {
|
|
36
|
+
if (simpleLayout) {
|
|
37
|
+
handleSelectedFiles(files, false);
|
|
38
|
+
setSelectedFiles(files);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const { id } = file;
|
|
35
42
|
const existPreviousFile = existPrevious(selectedFiles, id);
|
|
36
43
|
if (maxItems === selectedFiles.length && !existPreviousFile) {
|
|
37
44
|
handleSelectedFiles([id], false);
|
|
@@ -67,11 +74,14 @@ const ListingContainer = ({
|
|
|
67
74
|
}}>
|
|
68
75
|
<FilesListProvider>
|
|
69
76
|
<Listing
|
|
77
|
+
closeModalAndSetValue={closeModalAndSetValue}
|
|
70
78
|
simpleLayout={simpleLayout}
|
|
71
79
|
getSelectedFiles={getSelectedFiles}
|
|
72
80
|
setDisplayFileUploadModal={setDisplayFileUploadModal}
|
|
73
81
|
displayFileUploadModal={displayFileUploadModal}
|
|
74
82
|
handleDisplayFileUploadModal={handleDisplayFileUploadModal}
|
|
83
|
+
setSelectedFiles={setSelectedFiles}
|
|
84
|
+
handleSelectedFiles={handleSelectedFiles}
|
|
75
85
|
/>
|
|
76
86
|
</FilesListProvider>
|
|
77
87
|
</MediaContextProvider>
|
|
@@ -85,10 +95,12 @@ ListingContainer.propTypes = {
|
|
|
85
95
|
filesSelected: PropTypes.arrayOf(PropTypes.string),
|
|
86
96
|
simpleLayout: PropTypes.bool,
|
|
87
97
|
setDisplayFileUploadModal: PropTypes.func.isRequired,
|
|
88
|
-
displayFileUploadModal: PropTypes.bool.isRequired
|
|
98
|
+
displayFileUploadModal: PropTypes.bool.isRequired,
|
|
99
|
+
closeModalAndSetValue: PropTypes.func
|
|
89
100
|
};
|
|
90
101
|
|
|
91
102
|
ListingContainer.defaultProps = {
|
|
103
|
+
closeModalAndSetValue: () => {},
|
|
92
104
|
handleSelectedFiles: () => {},
|
|
93
105
|
maxItems: false,
|
|
94
106
|
filesSelected: [],
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
require("core-js/modules/es.object.define-property.js");
|
|
4
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.ReadOnly = void 0;
|
|
9
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
-
require("core-js/modules/es.function.name.js");
|
|
11
|
-
var _react = _interopRequireDefault(require("react"));
|
|
12
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
|
-
var ReadOnly = exports.ReadOnly = function ReadOnly(_ref) {
|
|
14
|
-
var url = _ref.url,
|
|
15
|
-
name = _ref.name,
|
|
16
|
-
file = _ref.file;
|
|
17
|
-
var _file$mimetype$split = file.mimetype.split('/'),
|
|
18
|
-
_file$mimetype$split2 = (0, _slicedToArray2["default"])(_file$mimetype$split, 2),
|
|
19
|
-
extension = _file$mimetype$split2[1];
|
|
20
|
-
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
21
|
-
className: "FilePreview"
|
|
22
|
-
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
23
|
-
className: "FilePreviewItem"
|
|
24
|
-
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
25
|
-
className: "FilePreviewItem__wrapper"
|
|
26
|
-
}, /*#__PURE__*/_react["default"].createElement("img", {
|
|
27
|
-
className: "FilePreviewItem__wrapper__image",
|
|
28
|
-
src: url,
|
|
29
|
-
alt: name
|
|
30
|
-
})), /*#__PURE__*/_react["default"].createElement("div", {
|
|
31
|
-
className: "FilePreviewItem__info"
|
|
32
|
-
}, /*#__PURE__*/_react["default"].createElement("p", {
|
|
33
|
-
className: "FilePreviewItem__info__fileName"
|
|
34
|
-
}, name), /*#__PURE__*/_react["default"].createElement("div", {
|
|
35
|
-
className: "FilePreviewItem__info__actions"
|
|
36
|
-
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
37
|
-
className: "FilePreviewItem__info__actions FilePreviewItem__info__actions--media-type"
|
|
38
|
-
}, /*#__PURE__*/_react["default"].createElement("i", {
|
|
39
|
-
className: "FilePreviewItem__info__actionsIcon material-icons"
|
|
40
|
-
}, "insert_photo"), ' ', /*#__PURE__*/_react["default"].createElement("span", null, extension))))));
|
|
41
|
-
};
|
|
42
|
-
ReadOnly.propTypes = {
|
|
43
|
-
url: _propTypes["default"].string.isRequired,
|
|
44
|
-
name: _propTypes["default"].string.isRequired,
|
|
45
|
-
file: _propTypes["default"].object.isRequired
|
|
46
|
-
};
|
|
47
|
-
//# sourceMappingURL=ReadOnly.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ReadOnly.js","names":["_react","_interopRequireDefault","require","_propTypes","ReadOnly","exports","_ref","url","name","file","_file$mimetype$split","mimetype","split","_file$mimetype$split2","_slicedToArray2","extension","createElement","className","src","alt","propTypes","PropTypes","string","isRequired","object"],"sources":["../../../../src/components/FilePreview/Image/ReadOnly.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst ReadOnly = ({ url, name, file }) => {\n const [, extension] = file.mimetype.split('/');\n\n return (\n <div className=\"FilePreview\">\n <div className=\"FilePreviewItem\">\n <div className=\"FilePreviewItem__wrapper\">\n <img className=\"FilePreviewItem__wrapper__image\" src={url} alt={name} />\n </div>\n <div className=\"FilePreviewItem__info\">\n <p className=\"FilePreviewItem__info__fileName\">{name}</p>\n <div className=\"FilePreviewItem__info__actions\">\n <div className=\"FilePreviewItem__info__actions FilePreviewItem__info__actions--media-type\">\n <i className=\"FilePreviewItem__info__actionsIcon material-icons\">insert_photo</i>{' '}\n <span>{extension}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nReadOnly.propTypes = {\n url: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n file: PropTypes.object.isRequired\n};\n\nexport { ReadOnly };\n"],"mappings":";;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAME,QAAQ,GAAAC,OAAA,CAAAD,QAAA,GAAG,SAAXA,QAAQA,CAAAE,IAAA,EAA4B;EAAA,IAAtBC,GAAG,GAAAD,IAAA,CAAHC,GAAG;IAAEC,IAAI,GAAAF,IAAA,CAAJE,IAAI;IAAEC,IAAI,GAAAH,IAAA,CAAJG,IAAI;EACjC,IAAAC,oBAAA,GAAsBD,IAAI,CAACE,QAAQ,CAACC,KAAK,CAAC,GAAG,CAAC;IAAAC,qBAAA,OAAAC,eAAA,aAAAJ,oBAAA;IAArCK,SAAS,GAAAF,qBAAA;EAElB,oBACEb,MAAA,YAAAgB,aAAA;IAAKC,SAAS,EAAC;EAAa,gBAC1BjB,MAAA,YAAAgB,aAAA;IAAKC,SAAS,EAAC;EAAiB,gBAC9BjB,MAAA,YAAAgB,aAAA;IAAKC,SAAS,EAAC;EAA0B,gBACvCjB,MAAA,YAAAgB,aAAA;IAAKC,SAAS,EAAC,iCAAiC;IAACC,GAAG,EAAEX,GAAI;IAACY,GAAG,EAAEX;EAAK,CAAE,CACpE,CAAC,eACNR,MAAA,YAAAgB,aAAA;IAAKC,SAAS,EAAC;EAAuB,gBACpCjB,MAAA,YAAAgB,aAAA;IAAGC,SAAS,EAAC;EAAiC,GAAET,IAAQ,CAAC,eACzDR,MAAA,YAAAgB,aAAA;IAAKC,SAAS,EAAC;EAAgC,gBAC7CjB,MAAA,YAAAgB,aAAA;IAAKC,SAAS,EAAC;EAA2E,gBACxFjB,MAAA,YAAAgB,aAAA;IAAGC,SAAS,EAAC;EAAmD,GAAC,cAAe,CAAC,EAAC,GAAG,eACrFjB,MAAA,YAAAgB,aAAA,eAAOD,SAAgB,CACpB,CACF,CACF,CACF,CACF,CAAC;AAEV,CAAC;AAEDX,QAAQ,CAACgB,SAAS,GAAG;EACnBb,GAAG,EAAEc,qBAAS,CAACC,MAAM,CAACC,UAAU;EAChCf,IAAI,EAAEa,qBAAS,CAACC,MAAM,CAACC,UAAU;EACjCd,IAAI,EAAEY,qBAAS,CAACG,MAAM,CAACD;AACzB,CAAC"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import PropTypes from 'prop-types';
|
|
3
|
-
const ReadOnly = ({
|
|
4
|
-
url,
|
|
5
|
-
name,
|
|
6
|
-
file
|
|
7
|
-
}) => {
|
|
8
|
-
const [, extension] = file.mimetype.split('/');
|
|
9
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
10
|
-
className: "FilePreview"
|
|
11
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
12
|
-
className: "FilePreviewItem"
|
|
13
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
14
|
-
className: "FilePreviewItem__wrapper"
|
|
15
|
-
}, /*#__PURE__*/React.createElement("img", {
|
|
16
|
-
className: "FilePreviewItem__wrapper__image",
|
|
17
|
-
src: url,
|
|
18
|
-
alt: name
|
|
19
|
-
})), /*#__PURE__*/React.createElement("div", {
|
|
20
|
-
className: "FilePreviewItem__info"
|
|
21
|
-
}, /*#__PURE__*/React.createElement("p", {
|
|
22
|
-
className: "FilePreviewItem__info__fileName"
|
|
23
|
-
}, name), /*#__PURE__*/React.createElement("div", {
|
|
24
|
-
className: "FilePreviewItem__info__actions"
|
|
25
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
26
|
-
className: "FilePreviewItem__info__actions FilePreviewItem__info__actions--media-type"
|
|
27
|
-
}, /*#__PURE__*/React.createElement("i", {
|
|
28
|
-
className: "FilePreviewItem__info__actionsIcon material-icons"
|
|
29
|
-
}, "insert_photo"), ' ', /*#__PURE__*/React.createElement("span", null, extension))))));
|
|
30
|
-
};
|
|
31
|
-
ReadOnly.propTypes = {
|
|
32
|
-
url: PropTypes.string.isRequired,
|
|
33
|
-
name: PropTypes.string.isRequired,
|
|
34
|
-
file: PropTypes.object.isRequired
|
|
35
|
-
};
|
|
36
|
-
export { ReadOnly };
|
|
37
|
-
//# sourceMappingURL=ReadOnly.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ReadOnly.js","names":["React","PropTypes","ReadOnly","url","name","file","extension","mimetype","split","createElement","className","src","alt","propTypes","string","isRequired","object"],"sources":["../../../../src/components/FilePreview/Image/ReadOnly.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst ReadOnly = ({ url, name, file }) => {\n const [, extension] = file.mimetype.split('/');\n\n return (\n <div className=\"FilePreview\">\n <div className=\"FilePreviewItem\">\n <div className=\"FilePreviewItem__wrapper\">\n <img className=\"FilePreviewItem__wrapper__image\" src={url} alt={name} />\n </div>\n <div className=\"FilePreviewItem__info\">\n <p className=\"FilePreviewItem__info__fileName\">{name}</p>\n <div className=\"FilePreviewItem__info__actions\">\n <div className=\"FilePreviewItem__info__actions FilePreviewItem__info__actions--media-type\">\n <i className=\"FilePreviewItem__info__actionsIcon material-icons\">insert_photo</i>{' '}\n <span>{extension}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nReadOnly.propTypes = {\n url: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n file: PropTypes.object.isRequired\n};\n\nexport { ReadOnly };\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAElC,MAAMC,QAAQ,GAAGA,CAAC;EAAEC,GAAG;EAAEC,IAAI;EAAEC;AAAK,CAAC,KAAK;EACxC,MAAM,GAAGC,SAAS,CAAC,GAAGD,IAAI,CAACE,QAAQ,CAACC,KAAK,CAAC,GAAG,CAAC;EAE9C,oBACER,KAAA,CAAAS,aAAA;IAAKC,SAAS,EAAC;EAAa,gBAC1BV,KAAA,CAAAS,aAAA;IAAKC,SAAS,EAAC;EAAiB,gBAC9BV,KAAA,CAAAS,aAAA;IAAKC,SAAS,EAAC;EAA0B,gBACvCV,KAAA,CAAAS,aAAA;IAAKC,SAAS,EAAC,iCAAiC;IAACC,GAAG,EAAER,GAAI;IAACS,GAAG,EAAER;EAAK,CAAE,CACpE,CAAC,eACNJ,KAAA,CAAAS,aAAA;IAAKC,SAAS,EAAC;EAAuB,gBACpCV,KAAA,CAAAS,aAAA;IAAGC,SAAS,EAAC;EAAiC,GAAEN,IAAQ,CAAC,eACzDJ,KAAA,CAAAS,aAAA;IAAKC,SAAS,EAAC;EAAgC,gBAC7CV,KAAA,CAAAS,aAAA;IAAKC,SAAS,EAAC;EAA2E,gBACxFV,KAAA,CAAAS,aAAA;IAAGC,SAAS,EAAC;EAAmD,GAAC,cAAe,CAAC,EAAC,GAAG,eACrFV,KAAA,CAAAS,aAAA,eAAOH,SAAgB,CACpB,CACF,CACF,CACF,CACF,CAAC;AAEV,CAAC;AAEDJ,QAAQ,CAACW,SAAS,GAAG;EACnBV,GAAG,EAAEF,SAAS,CAACa,MAAM,CAACC,UAAU;EAChCX,IAAI,EAAEH,SAAS,CAACa,MAAM,CAACC,UAAU;EACjCV,IAAI,EAAEJ,SAAS,CAACe,MAAM,CAACD;AACzB,CAAC;AAED,SAASb,QAAQ"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import PropTypes from 'prop-types';
|
|
3
|
-
|
|
4
|
-
const ReadOnly = ({ url, name, file }) => {
|
|
5
|
-
const [, extension] = file.mimetype.split('/');
|
|
6
|
-
|
|
7
|
-
return (
|
|
8
|
-
<div className="FilePreview">
|
|
9
|
-
<div className="FilePreviewItem">
|
|
10
|
-
<div className="FilePreviewItem__wrapper">
|
|
11
|
-
<img className="FilePreviewItem__wrapper__image" src={url} alt={name} />
|
|
12
|
-
</div>
|
|
13
|
-
<div className="FilePreviewItem__info">
|
|
14
|
-
<p className="FilePreviewItem__info__fileName">{name}</p>
|
|
15
|
-
<div className="FilePreviewItem__info__actions">
|
|
16
|
-
<div className="FilePreviewItem__info__actions FilePreviewItem__info__actions--media-type">
|
|
17
|
-
<i className="FilePreviewItem__info__actionsIcon material-icons">insert_photo</i>{' '}
|
|
18
|
-
<span>{extension}</span>
|
|
19
|
-
</div>
|
|
20
|
-
</div>
|
|
21
|
-
</div>
|
|
22
|
-
</div>
|
|
23
|
-
</div>
|
|
24
|
-
);
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
ReadOnly.propTypes = {
|
|
28
|
-
url: PropTypes.string.isRequired,
|
|
29
|
-
name: PropTypes.string.isRequired,
|
|
30
|
-
file: PropTypes.object.isRequired
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
export { ReadOnly };
|