@tenancy.nz/gallery 1.10.1 → 1.10.2
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/cjs/_virtual/_rollupPluginBabelHelpers.cjs +14 -0
- package/dist/cjs/components/GalleryDragHandle.cjs +24 -0
- package/dist/cjs/components/GalleryDragHandle.styled.cjs +12 -0
- package/dist/cjs/components/GalleryDragOverlay.cjs +16 -0
- package/dist/cjs/components/GalleryDragOverlay.styled.cjs +13 -0
- package/dist/cjs/components/GalleryImage.cjs +8 -4
- package/dist/cjs/components/GalleryImage.styled.cjs +2 -2
- package/dist/cjs/components/SortableGallery.cjs +163 -0
- package/dist/cjs/components/SortableGallery.styled.cjs +16 -0
- package/dist/cjs/components/SortableGalleryImage.cjs +75 -0
- package/dist/cjs/index.cjs +8 -0
- package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +13 -1
- package/dist/esm/components/GalleryDragHandle.js +20 -0
- package/dist/esm/components/GalleryDragHandle.styled.js +8 -0
- package/dist/esm/components/GalleryDragOverlay.js +12 -0
- package/dist/esm/components/GalleryDragOverlay.styled.js +9 -0
- package/dist/esm/components/GalleryImage.js +10 -6
- package/dist/esm/components/GalleryImage.styled.js +2 -2
- package/dist/esm/components/SortableGallery.js +159 -0
- package/dist/esm/components/SortableGallery.styled.js +12 -0
- package/dist/esm/components/SortableGalleryImage.js +71 -0
- package/dist/esm/index.js +4 -0
- package/package.json +11 -5
|
@@ -16,6 +16,15 @@ function _defineProperty(e, r, t) {
|
|
|
16
16
|
writable: true
|
|
17
17
|
}) : e[r] = t, e;
|
|
18
18
|
}
|
|
19
|
+
function _extends() {
|
|
20
|
+
return _extends = Object.assign ? Object.assign.bind() : function (n) {
|
|
21
|
+
for (var e = 1; e < arguments.length; e++) {
|
|
22
|
+
var t = arguments[e];
|
|
23
|
+
for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
|
|
24
|
+
}
|
|
25
|
+
return n;
|
|
26
|
+
}, _extends.apply(null, arguments);
|
|
27
|
+
}
|
|
19
28
|
function _iterableToArrayLimit(r, l) {
|
|
20
29
|
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
|
21
30
|
if (null != t) {
|
|
@@ -43,6 +52,9 @@ function _iterableToArrayLimit(r, l) {
|
|
|
43
52
|
function _nonIterableRest() {
|
|
44
53
|
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
45
54
|
}
|
|
55
|
+
function _objectDestructuringEmpty(t) {
|
|
56
|
+
if (null == t) throw new TypeError("Cannot destructure " + t);
|
|
57
|
+
}
|
|
46
58
|
function ownKeys(e, r) {
|
|
47
59
|
var t = Object.keys(e);
|
|
48
60
|
if (Object.getOwnPropertySymbols) {
|
|
@@ -119,8 +131,10 @@ function _unsupportedIterableToArray(r, a) {
|
|
|
119
131
|
exports.arrayLikeToArray = _arrayLikeToArray;
|
|
120
132
|
exports.arrayWithHoles = _arrayWithHoles;
|
|
121
133
|
exports.defineProperty = _defineProperty;
|
|
134
|
+
exports.extends = _extends;
|
|
122
135
|
exports.iterableToArrayLimit = _iterableToArrayLimit;
|
|
123
136
|
exports.nonIterableRest = _nonIterableRest;
|
|
137
|
+
exports.objectDestructuringEmpty = _objectDestructuringEmpty;
|
|
124
138
|
exports.objectSpread2 = _objectSpread2;
|
|
125
139
|
exports.objectWithoutProperties = _objectWithoutProperties;
|
|
126
140
|
exports.objectWithoutPropertiesLoose = _objectWithoutPropertiesLoose;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _rollupPluginBabelHelpers = require('../_virtual/_rollupPluginBabelHelpers.cjs');
|
|
6
|
+
var React = require('react');
|
|
7
|
+
var DragIndicatorIcon = require('@tenancy.nz/icons/DragIndicator');
|
|
8
|
+
var GalleryDragHandle_styled = require('./GalleryDragHandle.styled.cjs');
|
|
9
|
+
|
|
10
|
+
var GalleryDragHandle = /*#__PURE__*/React.forwardRef(function GalleryDragHandle2(_ref, ref) {
|
|
11
|
+
var rest = _rollupPluginBabelHelpers.extends({}, (_rollupPluginBabelHelpers.objectDestructuringEmpty(_ref), _ref));
|
|
12
|
+
return /* @__PURE__ */React.createElement(GalleryDragHandle_styled.default, _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({
|
|
13
|
+
size: "small",
|
|
14
|
+
sx: {
|
|
15
|
+
color: "#fff"
|
|
16
|
+
}
|
|
17
|
+
}, rest), {}, {
|
|
18
|
+
ref: ref
|
|
19
|
+
}), /* @__PURE__ */React.createElement(DragIndicatorIcon, {
|
|
20
|
+
size: 24
|
|
21
|
+
}));
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
exports.default = GalleryDragHandle;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _rollupPluginBabelHelpers = require('../_virtual/_rollupPluginBabelHelpers.cjs');
|
|
6
|
+
var IconButton = require('@mui/material/IconButton');
|
|
7
|
+
var styles = require('@mui/material/styles');
|
|
8
|
+
|
|
9
|
+
var _templateObject;
|
|
10
|
+
var StyledGalleryDragHandle = styles.styled(IconButton)(_templateObject || (_templateObject = _rollupPluginBabelHelpers.taggedTemplateLiteral(["\n cursor: grab;\n touch-action: manipulation;\n"])));
|
|
11
|
+
|
|
12
|
+
exports.default = StyledGalleryDragHandle;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var React = require('react');
|
|
6
|
+
var ui = require('@tenancy.nz/ui');
|
|
7
|
+
var GalleryDragOverlay_styled = require('./GalleryDragOverlay.styled.cjs');
|
|
8
|
+
|
|
9
|
+
function GalleryDragOverlay(_ref) {
|
|
10
|
+
var src = _ref.src;
|
|
11
|
+
return /* @__PURE__ */React.createElement(GalleryDragOverlay_styled.default, null, /* @__PURE__ */React.createElement(ui.Media, {
|
|
12
|
+
src: src
|
|
13
|
+
}));
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
exports.default = GalleryDragOverlay;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _rollupPluginBabelHelpers = require('../_virtual/_rollupPluginBabelHelpers.cjs');
|
|
6
|
+
var react = require('@emotion/react');
|
|
7
|
+
var styles = require('@mui/material/styles');
|
|
8
|
+
|
|
9
|
+
var _templateObject, _templateObject2;
|
|
10
|
+
var pop = react.keyframes(_templateObject || (_templateObject = _rollupPluginBabelHelpers.taggedTemplateLiteral(["\n 0% {\n transform: scale(1);\n }\n 100% {\n transform: scale(1.05);\n box-shadow:\n 0 0 0 calc(1px / 1.05) rgba(63, 63, 68, 0.05),\n -1px 0 15px 0 rgba(34, 33, 81, 0.01),\n 0px 15px 15px 0 rgba(34, 33, 81, 0.25);\n }\n"])));
|
|
11
|
+
var StyledGalleryDragOverlay = styles.styled("div")(_templateObject2 || (_templateObject2 = _rollupPluginBabelHelpers.taggedTemplateLiteral(["\n height: 162px;\n width: 162px;\n cursor: move;\n animation: ", " 200ms cubic-bezier(0.18, 0.67, 0.6, 1.22);\n box-shadow:\n 0 0 0 calc(1px / 1.05) rgba(63, 63, 68, 0.05),\n -1px 0 15px 0 rgba(34, 33, 81, 0.01),\n 0px 15px 15px 0 rgba(34, 33, 81, 0.25);\n opacity: 1;\n z-index: 999;\n transform: scale(1.05);\n transform-origin: 50% 50%;\n border-radius: 8px;\n overflow: hidden;\n"])), pop);
|
|
12
|
+
|
|
13
|
+
exports.default = StyledGalleryDragOverlay;
|
|
@@ -8,12 +8,12 @@ var ZoomInIcon = require('@tenancy.nz/icons/ZoomInOutlined');
|
|
|
8
8
|
var ui = require('@tenancy.nz/ui');
|
|
9
9
|
var GalleryImage_styled = require('./GalleryImage.styled.cjs');
|
|
10
10
|
|
|
11
|
-
var _excluded = ["actions", "
|
|
11
|
+
var _excluded = ["actions", "tag", "dragging", "onClick", "src", "uploading"];
|
|
12
12
|
var GalleryImage = /*#__PURE__*/React.forwardRef(function GalleryImage2(_ref, ref) {
|
|
13
13
|
var _ref$actions = _ref.actions,
|
|
14
14
|
actions = _ref$actions === void 0 ? void 0 : _ref$actions,
|
|
15
|
-
_ref$
|
|
16
|
-
|
|
15
|
+
_ref$tag = _ref.tag,
|
|
16
|
+
tag = _ref$tag === void 0 ? void 0 : _ref$tag,
|
|
17
17
|
_ref$dragging = _ref.dragging,
|
|
18
18
|
dragging = _ref$dragging === void 0 ? void 0 : _ref$dragging,
|
|
19
19
|
_ref$onClick = _ref.onClick,
|
|
@@ -37,7 +37,11 @@ var GalleryImage = /*#__PURE__*/React.forwardRef(function GalleryImage2(_ref, re
|
|
|
37
37
|
onClick: onClick
|
|
38
38
|
}, actions, onClick && /* @__PURE__ */React.createElement(ZoomInIcon, {
|
|
39
39
|
size: "inherit"
|
|
40
|
-
})), !uploading &&
|
|
40
|
+
})), !uploading && tag && /* @__PURE__ */React.createElement(ui.AbsBox, {
|
|
41
|
+
right: 12,
|
|
42
|
+
bottom: 8,
|
|
43
|
+
zIndex: 2
|
|
44
|
+
}, tag));
|
|
41
45
|
});
|
|
42
46
|
|
|
43
47
|
exports.default = GalleryImage;
|
|
@@ -27,9 +27,9 @@ var StyledGalleryImageOverlay = styles.styled("div", {
|
|
|
27
27
|
var visible = _ref2.visible;
|
|
28
28
|
return react.css(_templateObject5 || (_templateObject5 = _rollupPluginBabelHelpers.taggedTemplateLiteral(["\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 3;\n background: rgba(0, 0, 0, 0.5);\n color: #fff;\n font-size: 50px;\n transition: all 275ms ease-in-out;\n ", "\n "])), !visible && react.css(_templateObject6 || (_templateObject6 = _rollupPluginBabelHelpers.taggedTemplateLiteral(["\n opacity: 0;\n visibility: hidden;\n backface-visibility: hidden;\n cursor: pointer;\n background: rgba(0, 0, 0, 0.38);\n "]))));
|
|
29
29
|
});
|
|
30
|
-
var
|
|
30
|
+
var StyledGalleryImageAction = styles.styled("div")(_templateObject7 || (_templateObject7 = _rollupPluginBabelHelpers.taggedTemplateLiteral(["\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n display: flex;\n align-items: center;\n z-index: 4;\n\n > * {\n margin: 4px 2px;\n }\n\n > *:last-child {\n margin-left: auto;\n }\n"])));
|
|
31
31
|
|
|
32
|
+
exports.StyledGalleryImageAction = StyledGalleryImageAction;
|
|
32
33
|
exports.StyledGalleryImageOverlay = StyledGalleryImageOverlay;
|
|
33
|
-
exports.StyledGalleryImageText = StyledGalleryImageText;
|
|
34
34
|
exports.default = StyledGalleryImage;
|
|
35
35
|
exports.galleryImageOverlayClassName = galleryImageOverlayClassName;
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _rollupPluginBabelHelpers = require('../_virtual/_rollupPluginBabelHelpers.cjs');
|
|
6
|
+
var React = require('react');
|
|
7
|
+
var Dropzone = require('react-dropzone');
|
|
8
|
+
var core = require('@dnd-kit/core');
|
|
9
|
+
var sortable = require('@dnd-kit/sortable');
|
|
10
|
+
var Stack = require('@mui/material/Stack');
|
|
11
|
+
var UploadIcon = require('@tenancy.nz/icons/Upload');
|
|
12
|
+
var ui = require('@tenancy.nz/ui');
|
|
13
|
+
var GalleryDragOverlay = require('./GalleryDragOverlay.cjs');
|
|
14
|
+
var SortableGalleryImage = require('./SortableGalleryImage.cjs');
|
|
15
|
+
var Gallery = require('./Gallery.cjs');
|
|
16
|
+
var SortableGallery_styled = require('./SortableGallery.styled.cjs');
|
|
17
|
+
|
|
18
|
+
var _excluded = ["dropzoneText", "dropzoneProps", "onDelete", "onUpload", "onSortComplete"];
|
|
19
|
+
function SortableGallery(_ref) {
|
|
20
|
+
var _ref$dropzoneText = _ref.dropzoneText,
|
|
21
|
+
dropzoneText = _ref$dropzoneText === void 0 ? "" : _ref$dropzoneText,
|
|
22
|
+
_ref$dropzoneProps = _ref.dropzoneProps,
|
|
23
|
+
dropzoneProps = _ref$dropzoneProps === void 0 ? {} : _ref$dropzoneProps,
|
|
24
|
+
_ref$onDelete = _ref.onDelete,
|
|
25
|
+
onDelete = _ref$onDelete === void 0 ? void 0 : _ref$onDelete,
|
|
26
|
+
_ref$onUpload = _ref.onUpload,
|
|
27
|
+
onUpload = _ref$onUpload === void 0 ? void 0 : _ref$onUpload,
|
|
28
|
+
_ref$onSortComplete = _ref.onSortComplete,
|
|
29
|
+
onSortComplete = _ref$onSortComplete === void 0 ? void 0 : _ref$onSortComplete,
|
|
30
|
+
listProps = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
|
|
31
|
+
var _listProps$images = listProps.images,
|
|
32
|
+
images = _listProps$images === void 0 ? [] : _listProps$images,
|
|
33
|
+
loading = listProps.loading,
|
|
34
|
+
infoText = listProps.infoText;
|
|
35
|
+
var _useState = React.useState(null),
|
|
36
|
+
_useState2 = _rollupPluginBabelHelpers.slicedToArray(_useState, 2),
|
|
37
|
+
activeId = _useState2[0],
|
|
38
|
+
setActiveId = _useState2[1];
|
|
39
|
+
var _useState3 = React.useState(null),
|
|
40
|
+
_useState4 = _rollupPluginBabelHelpers.slicedToArray(_useState3, 2),
|
|
41
|
+
confirmDelete = _useState4[0],
|
|
42
|
+
setConfirmDelete = _useState4[1];
|
|
43
|
+
var sensors = core.useSensors(core.useSensor(core.MouseSensor), core.useSensor(core.TouchSensor));
|
|
44
|
+
var handleUpload = React.useCallback(function (acceptedFiles) {
|
|
45
|
+
var readFile = function readFile(file) {
|
|
46
|
+
return new Promise(function (resolve) {
|
|
47
|
+
var reader = new FileReader();
|
|
48
|
+
reader.onload = function () {
|
|
49
|
+
resolve({
|
|
50
|
+
path: reader.result,
|
|
51
|
+
thumb: reader.result,
|
|
52
|
+
name: file.name,
|
|
53
|
+
type: file.type
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
reader.readAsDataURL(file);
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
Promise.all(acceptedFiles.map(readFile)).then(function (files) {
|
|
60
|
+
onUpload === null || onUpload === void 0 || onUpload(files);
|
|
61
|
+
});
|
|
62
|
+
}, [onUpload]);
|
|
63
|
+
var handleDragStart = function handleDragStart(event) {
|
|
64
|
+
setActiveId(event.active.id);
|
|
65
|
+
};
|
|
66
|
+
var handleDragCancel = function handleDragCancel() {
|
|
67
|
+
setActiveId(null);
|
|
68
|
+
};
|
|
69
|
+
var handleDragEnd = function handleDragEnd(event) {
|
|
70
|
+
var active = event.active,
|
|
71
|
+
over = event.over;
|
|
72
|
+
if (over && active.id !== over.id) {
|
|
73
|
+
var oldIndex = images.findIndex(function (img) {
|
|
74
|
+
return img.thumb === active.id;
|
|
75
|
+
});
|
|
76
|
+
var newIndex = images.findIndex(function (img) {
|
|
77
|
+
return img.thumb === over.id;
|
|
78
|
+
});
|
|
79
|
+
var sortedImages = sortable.arrayMove(images, oldIndex, newIndex);
|
|
80
|
+
onSortComplete === null || onSortComplete === void 0 || onSortComplete(sortedImages, newIndex, oldIndex);
|
|
81
|
+
}
|
|
82
|
+
setActiveId(null);
|
|
83
|
+
};
|
|
84
|
+
var handleDelete = function handleDelete(event, index) {
|
|
85
|
+
event.stopPropagation();
|
|
86
|
+
event.preventDefault();
|
|
87
|
+
setConfirmDelete(index);
|
|
88
|
+
};
|
|
89
|
+
var handleDeleteConfirm = function handleDeleteConfirm() {
|
|
90
|
+
if (confirmDelete !== null) {
|
|
91
|
+
onDelete === null || onDelete === void 0 || onDelete(confirmDelete);
|
|
92
|
+
}
|
|
93
|
+
setConfirmDelete(null);
|
|
94
|
+
};
|
|
95
|
+
return /* @__PURE__ */React.createElement(ui.Box, null, /* @__PURE__ */React.createElement(core.DndContext, {
|
|
96
|
+
sensors: sensors,
|
|
97
|
+
collisionDetection: core.closestCenter,
|
|
98
|
+
onDragCancel: handleDragCancel,
|
|
99
|
+
onDragStart: handleDragStart,
|
|
100
|
+
onDragEnd: handleDragEnd
|
|
101
|
+
}, /* @__PURE__ */React.createElement(sortable.SortableContext, {
|
|
102
|
+
items: images.map(function (image) {
|
|
103
|
+
return image.thumb;
|
|
104
|
+
}),
|
|
105
|
+
strategy: sortable.rectSortingStrategy
|
|
106
|
+
}, /* @__PURE__ */React.createElement(Gallery.default, {
|
|
107
|
+
loading: loading,
|
|
108
|
+
images: images,
|
|
109
|
+
infoText: infoText,
|
|
110
|
+
renderItem: function renderItem(image, i) {
|
|
111
|
+
return /* @__PURE__ */React.createElement(SortableGalleryImage.default, {
|
|
112
|
+
key: image.thumb,
|
|
113
|
+
src: image.thumb,
|
|
114
|
+
tag: i === 0 ? /* @__PURE__ */React.createElement(ui.Tag, {
|
|
115
|
+
color: "white",
|
|
116
|
+
disableIcon: true,
|
|
117
|
+
label: "Cover image",
|
|
118
|
+
variant: "filled"
|
|
119
|
+
}) : void 0,
|
|
120
|
+
onDelete: function onDelete(e) {
|
|
121
|
+
return handleDelete(e, i);
|
|
122
|
+
},
|
|
123
|
+
uploading: !!image.uploading,
|
|
124
|
+
onClick: image.onClick
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
})), /* @__PURE__ */React.createElement(core.DragOverlay, {
|
|
128
|
+
adjustScale: false
|
|
129
|
+
}, activeId ? /* @__PURE__ */React.createElement(GalleryDragOverlay.default, {
|
|
130
|
+
src: String(activeId)
|
|
131
|
+
}) : null)), /* @__PURE__ */React.createElement(Dropzone, _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, _rollupPluginBabelHelpers.objectSpread2({
|
|
132
|
+
disabled: loading
|
|
133
|
+
}, dropzoneProps)), {}, {
|
|
134
|
+
accept: {
|
|
135
|
+
"image/*": []
|
|
136
|
+
},
|
|
137
|
+
onDrop: handleUpload
|
|
138
|
+
}), function (_ref2) {
|
|
139
|
+
var getRootProps = _ref2.getRootProps,
|
|
140
|
+
getInputProps = _ref2.getInputProps;
|
|
141
|
+
return /* @__PURE__ */React.createElement(SortableGallery_styled.default, _rollupPluginBabelHelpers.objectSpread2({}, getRootProps()), /* @__PURE__ */React.createElement("input", _rollupPluginBabelHelpers.objectSpread2({}, getInputProps())), /* @__PURE__ */React.createElement(Stack, {
|
|
142
|
+
gap: 2,
|
|
143
|
+
alignItems: "center"
|
|
144
|
+
}, /* @__PURE__ */React.createElement(UploadIcon, {
|
|
145
|
+
size: 68
|
|
146
|
+
}), /* @__PURE__ */React.createElement(ui.Text, {
|
|
147
|
+
variant: "body2",
|
|
148
|
+
weight: "400"
|
|
149
|
+
}, dropzoneText || /* @__PURE__ */React.createElement(React.Fragment, null, "Drag and drop image(s) here, or ", /* @__PURE__ */React.createElement("u", null, "choose image")))));
|
|
150
|
+
}), /* @__PURE__ */React.createElement(ui.Confirmation, {
|
|
151
|
+
open: confirmDelete !== null,
|
|
152
|
+
severity: "destructive",
|
|
153
|
+
title: "Delete image?",
|
|
154
|
+
message: "Deleting this image will permanently remove it from the system. This action cannot be undone.",
|
|
155
|
+
onCancel: function onCancel() {
|
|
156
|
+
return setConfirmDelete(null);
|
|
157
|
+
},
|
|
158
|
+
onConfirm: handleDeleteConfirm,
|
|
159
|
+
confirmBtnText: "Delete"
|
|
160
|
+
}));
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
exports.default = SortableGallery;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _rollupPluginBabelHelpers = require('../_virtual/_rollupPluginBabelHelpers.cjs');
|
|
6
|
+
var react = require('@emotion/react');
|
|
7
|
+
var styles = require('@mui/material/styles');
|
|
8
|
+
var ui = require('@tenancy.nz/ui');
|
|
9
|
+
|
|
10
|
+
var _templateObject, _templateObject2;
|
|
11
|
+
var StyledDropzone = styles.styled("div")(_templateObject || (_templateObject = _rollupPluginBabelHelpers.taggedTemplateLiteral(["\n ", "\n"])), function (_ref) {
|
|
12
|
+
var theme = _ref.theme;
|
|
13
|
+
return react.css(_templateObject2 || (_templateObject2 = _rollupPluginBabelHelpers.taggedTemplateLiteral(["\n border: 2px dashed ", ";\n background: #fff;\n margin: 24px 0 0 0;\n padding: 32px 16px;\n border-radius: ", "px;\n color: ", ";\n max-height: 176px;\n "])), ui.token("palette.semantic.border.accentColor"), theme.shape.borderRadius, ui.token("palette.semantic.text.primaryColor"));
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
exports.default = StyledDropzone;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _rollupPluginBabelHelpers = require('../_virtual/_rollupPluginBabelHelpers.cjs');
|
|
6
|
+
var React = require('react');
|
|
7
|
+
var sortable = require('@dnd-kit/sortable');
|
|
8
|
+
var utilities = require('@dnd-kit/utilities');
|
|
9
|
+
var DeleteOutlinedIcon = require('@tenancy.nz/icons/DeleteOutlined');
|
|
10
|
+
var ui = require('@tenancy.nz/ui');
|
|
11
|
+
var GalleryDragHandle = require('./GalleryDragHandle.cjs');
|
|
12
|
+
var GalleryImage = require('./GalleryImage.cjs');
|
|
13
|
+
|
|
14
|
+
var _excluded = ["tag", "onDelete", "src", "uploading"];
|
|
15
|
+
function SortableGalleryImage(_ref) {
|
|
16
|
+
var _ref$tag = _ref.tag,
|
|
17
|
+
tag = _ref$tag === void 0 ? void 0 : _ref$tag,
|
|
18
|
+
_ref$onDelete = _ref.onDelete,
|
|
19
|
+
onDelete = _ref$onDelete === void 0 ? void 0 : _ref$onDelete,
|
|
20
|
+
src = _ref.src,
|
|
21
|
+
_ref$uploading = _ref.uploading,
|
|
22
|
+
uploading = _ref$uploading === void 0 ? false : _ref$uploading,
|
|
23
|
+
rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
|
|
24
|
+
var _useSortable = sortable.useSortable({
|
|
25
|
+
id: src
|
|
26
|
+
}),
|
|
27
|
+
attributes = _useSortable.attributes,
|
|
28
|
+
isDragging = _useSortable.isDragging,
|
|
29
|
+
listeners = _useSortable.listeners,
|
|
30
|
+
setNodeRef = _useSortable.setNodeRef,
|
|
31
|
+
setDraggableNodeRef = _useSortable.setDraggableNodeRef,
|
|
32
|
+
transform = _useSortable.transform,
|
|
33
|
+
transition = _useSortable.transition;
|
|
34
|
+
var styles = {
|
|
35
|
+
transform: utilities.CSS.Transform.toString(transform),
|
|
36
|
+
transition: transition
|
|
37
|
+
};
|
|
38
|
+
var actions = function actions() {
|
|
39
|
+
if (!uploading && !isDragging) {
|
|
40
|
+
return /* @__PURE__ */React.createElement(React.Fragment, null, /* @__PURE__ */React.createElement(ui.AbsBox, {
|
|
41
|
+
display: "flex",
|
|
42
|
+
left: 8,
|
|
43
|
+
top: "50%",
|
|
44
|
+
sx: {
|
|
45
|
+
transform: "translateY(-50%)"
|
|
46
|
+
}
|
|
47
|
+
}, /* @__PURE__ */React.createElement(GalleryDragHandle.default, _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, attributes), listeners), {}, {
|
|
48
|
+
ref: setDraggableNodeRef
|
|
49
|
+
}))), onDelete && /* @__PURE__ */React.createElement(ui.AbsBox, {
|
|
50
|
+
display: "flex",
|
|
51
|
+
top: 8,
|
|
52
|
+
right: 8,
|
|
53
|
+
zIndex: 2
|
|
54
|
+
}, /* @__PURE__ */React.createElement(ui.IconButton, {
|
|
55
|
+
onClick: onDelete,
|
|
56
|
+
color: "error",
|
|
57
|
+
variant: "contained"
|
|
58
|
+
}, /* @__PURE__ */React.createElement(DeleteOutlinedIcon, {
|
|
59
|
+
size: 20
|
|
60
|
+
}))));
|
|
61
|
+
}
|
|
62
|
+
return void 0;
|
|
63
|
+
};
|
|
64
|
+
return /* @__PURE__ */React.createElement(GalleryImage.default, _rollupPluginBabelHelpers.objectSpread2({
|
|
65
|
+
ref: setNodeRef,
|
|
66
|
+
style: styles,
|
|
67
|
+
dragging: isDragging,
|
|
68
|
+
actions: actions(),
|
|
69
|
+
tag: tag,
|
|
70
|
+
src: src,
|
|
71
|
+
uploading: uploading
|
|
72
|
+
}, rest));
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
exports.default = SortableGalleryImage;
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var Gallery = require('./components/Gallery.cjs');
|
|
4
|
+
var GalleryDragHandle = require('./components/GalleryDragHandle.cjs');
|
|
5
|
+
var GalleryDragOverlay = require('./components/GalleryDragOverlay.cjs');
|
|
4
6
|
var GalleryImage = require('./components/GalleryImage.cjs');
|
|
5
7
|
var GalleryImageSkeleton = require('./components/GalleryImageSkeleton.cjs');
|
|
6
8
|
var GalleryViewer = require('./components/GalleryViewer.cjs');
|
|
9
|
+
var SortableGallery = require('./components/SortableGallery.cjs');
|
|
10
|
+
var SortableGalleryImage = require('./components/SortableGalleryImage.cjs');
|
|
7
11
|
|
|
8
12
|
|
|
9
13
|
|
|
10
14
|
exports.Gallery = Gallery.default;
|
|
15
|
+
exports.GalleryDragHandle = GalleryDragHandle.default;
|
|
16
|
+
exports.GalleryDragOverlay = GalleryDragOverlay.default;
|
|
11
17
|
exports.GalleryImage = GalleryImage.default;
|
|
12
18
|
exports.GalleryImageSkeleton = GalleryImageSkeleton.default;
|
|
13
19
|
exports.GalleryViewer = GalleryViewer.default;
|
|
20
|
+
exports.SortableGallery = SortableGallery.default;
|
|
21
|
+
exports.SortableGalleryImage = SortableGalleryImage.default;
|
|
@@ -14,6 +14,15 @@ function _defineProperty(e, r, t) {
|
|
|
14
14
|
writable: true
|
|
15
15
|
}) : e[r] = t, e;
|
|
16
16
|
}
|
|
17
|
+
function _extends() {
|
|
18
|
+
return _extends = Object.assign ? Object.assign.bind() : function (n) {
|
|
19
|
+
for (var e = 1; e < arguments.length; e++) {
|
|
20
|
+
var t = arguments[e];
|
|
21
|
+
for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
|
|
22
|
+
}
|
|
23
|
+
return n;
|
|
24
|
+
}, _extends.apply(null, arguments);
|
|
25
|
+
}
|
|
17
26
|
function _iterableToArrayLimit(r, l) {
|
|
18
27
|
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
|
19
28
|
if (null != t) {
|
|
@@ -41,6 +50,9 @@ function _iterableToArrayLimit(r, l) {
|
|
|
41
50
|
function _nonIterableRest() {
|
|
42
51
|
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
43
52
|
}
|
|
53
|
+
function _objectDestructuringEmpty(t) {
|
|
54
|
+
if (null == t) throw new TypeError("Cannot destructure " + t);
|
|
55
|
+
}
|
|
44
56
|
function ownKeys(e, r) {
|
|
45
57
|
var t = Object.keys(e);
|
|
46
58
|
if (Object.getOwnPropertySymbols) {
|
|
@@ -114,4 +126,4 @@ function _unsupportedIterableToArray(r, a) {
|
|
|
114
126
|
}
|
|
115
127
|
}
|
|
116
128
|
|
|
117
|
-
export { _arrayLikeToArray as arrayLikeToArray, _arrayWithHoles as arrayWithHoles, _defineProperty as defineProperty, _iterableToArrayLimit as iterableToArrayLimit, _nonIterableRest as nonIterableRest, _objectSpread2 as objectSpread2, _objectWithoutProperties as objectWithoutProperties, _objectWithoutPropertiesLoose as objectWithoutPropertiesLoose, _slicedToArray as slicedToArray, _taggedTemplateLiteral as taggedTemplateLiteral, _toPrimitive as toPrimitive, _toPropertyKey as toPropertyKey, _unsupportedIterableToArray as unsupportedIterableToArray };
|
|
129
|
+
export { _arrayLikeToArray as arrayLikeToArray, _arrayWithHoles as arrayWithHoles, _defineProperty as defineProperty, _extends as extends, _iterableToArrayLimit as iterableToArrayLimit, _nonIterableRest as nonIterableRest, _objectDestructuringEmpty as objectDestructuringEmpty, _objectSpread2 as objectSpread2, _objectWithoutProperties as objectWithoutProperties, _objectWithoutPropertiesLoose as objectWithoutPropertiesLoose, _slicedToArray as slicedToArray, _taggedTemplateLiteral as taggedTemplateLiteral, _toPrimitive as toPrimitive, _toPropertyKey as toPropertyKey, _unsupportedIterableToArray as unsupportedIterableToArray };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { extends as _extends, objectDestructuringEmpty as _objectDestructuringEmpty, objectSpread2 as _objectSpread2 } from '../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import React, { forwardRef } from 'react';
|
|
3
|
+
import DragIndicatorIcon from '@tenancy.nz/icons/DragIndicator';
|
|
4
|
+
import StyledGalleryDragHandle from './GalleryDragHandle.styled.js';
|
|
5
|
+
|
|
6
|
+
var GalleryDragHandle = /*#__PURE__*/forwardRef(function GalleryDragHandle2(_ref, ref) {
|
|
7
|
+
var rest = _extends({}, (_objectDestructuringEmpty(_ref), _ref));
|
|
8
|
+
return /* @__PURE__ */React.createElement(StyledGalleryDragHandle, _objectSpread2(_objectSpread2({
|
|
9
|
+
size: "small",
|
|
10
|
+
sx: {
|
|
11
|
+
color: "#fff"
|
|
12
|
+
}
|
|
13
|
+
}, rest), {}, {
|
|
14
|
+
ref: ref
|
|
15
|
+
}), /* @__PURE__ */React.createElement(DragIndicatorIcon, {
|
|
16
|
+
size: 24
|
|
17
|
+
}));
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
export { GalleryDragHandle as default };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { taggedTemplateLiteral as _taggedTemplateLiteral } from '../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import IconButton from '@mui/material/IconButton';
|
|
3
|
+
import { styled } from '@mui/material/styles';
|
|
4
|
+
|
|
5
|
+
var _templateObject;
|
|
6
|
+
var StyledGalleryDragHandle = styled(IconButton)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n cursor: grab;\n touch-action: manipulation;\n"])));
|
|
7
|
+
|
|
8
|
+
export { StyledGalleryDragHandle as default };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Media } from '@tenancy.nz/ui';
|
|
3
|
+
import StyledGalleryDragOverlay from './GalleryDragOverlay.styled.js';
|
|
4
|
+
|
|
5
|
+
function GalleryDragOverlay(_ref) {
|
|
6
|
+
var src = _ref.src;
|
|
7
|
+
return /* @__PURE__ */React.createElement(StyledGalleryDragOverlay, null, /* @__PURE__ */React.createElement(Media, {
|
|
8
|
+
src: src
|
|
9
|
+
}));
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export { GalleryDragOverlay as default };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { taggedTemplateLiteral as _taggedTemplateLiteral } from '../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import { keyframes } from '@emotion/react';
|
|
3
|
+
import { styled } from '@mui/material/styles';
|
|
4
|
+
|
|
5
|
+
var _templateObject, _templateObject2;
|
|
6
|
+
var pop = keyframes(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n 0% {\n transform: scale(1);\n }\n 100% {\n transform: scale(1.05);\n box-shadow:\n 0 0 0 calc(1px / 1.05) rgba(63, 63, 68, 0.05),\n -1px 0 15px 0 rgba(34, 33, 81, 0.01),\n 0px 15px 15px 0 rgba(34, 33, 81, 0.25);\n }\n"])));
|
|
7
|
+
var StyledGalleryDragOverlay = styled("div")(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n height: 162px;\n width: 162px;\n cursor: move;\n animation: ", " 200ms cubic-bezier(0.18, 0.67, 0.6, 1.22);\n box-shadow:\n 0 0 0 calc(1px / 1.05) rgba(63, 63, 68, 0.05),\n -1px 0 15px 0 rgba(34, 33, 81, 0.01),\n 0px 15px 15px 0 rgba(34, 33, 81, 0.25);\n opacity: 1;\n z-index: 999;\n transform: scale(1.05);\n transform-origin: 50% 50%;\n border-radius: 8px;\n overflow: hidden;\n"])), pop);
|
|
8
|
+
|
|
9
|
+
export { StyledGalleryDragOverlay as default };
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { objectWithoutProperties as _objectWithoutProperties, objectSpread2 as _objectSpread2 } from '../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
2
|
import React, { forwardRef } from 'react';
|
|
3
3
|
import ZoomInIcon from '@tenancy.nz/icons/ZoomInOutlined';
|
|
4
|
-
import { Media, CircularProgress } from '@tenancy.nz/ui';
|
|
5
|
-
import StyledGalleryImage, { StyledGalleryImageOverlay, galleryImageOverlayClassName
|
|
4
|
+
import { Media, CircularProgress, AbsBox } from '@tenancy.nz/ui';
|
|
5
|
+
import StyledGalleryImage, { StyledGalleryImageOverlay, galleryImageOverlayClassName } from './GalleryImage.styled.js';
|
|
6
6
|
|
|
7
|
-
var _excluded = ["actions", "
|
|
7
|
+
var _excluded = ["actions", "tag", "dragging", "onClick", "src", "uploading"];
|
|
8
8
|
var GalleryImage = /*#__PURE__*/forwardRef(function GalleryImage2(_ref, ref) {
|
|
9
9
|
var _ref$actions = _ref.actions,
|
|
10
10
|
actions = _ref$actions === void 0 ? void 0 : _ref$actions,
|
|
11
|
-
_ref$
|
|
12
|
-
|
|
11
|
+
_ref$tag = _ref.tag,
|
|
12
|
+
tag = _ref$tag === void 0 ? void 0 : _ref$tag,
|
|
13
13
|
_ref$dragging = _ref.dragging,
|
|
14
14
|
dragging = _ref$dragging === void 0 ? void 0 : _ref$dragging,
|
|
15
15
|
_ref$onClick = _ref.onClick,
|
|
@@ -33,7 +33,11 @@ var GalleryImage = /*#__PURE__*/forwardRef(function GalleryImage2(_ref, ref) {
|
|
|
33
33
|
onClick: onClick
|
|
34
34
|
}, actions, onClick && /* @__PURE__ */React.createElement(ZoomInIcon, {
|
|
35
35
|
size: "inherit"
|
|
36
|
-
})), !uploading &&
|
|
36
|
+
})), !uploading && tag && /* @__PURE__ */React.createElement(AbsBox, {
|
|
37
|
+
right: 12,
|
|
38
|
+
bottom: 8,
|
|
39
|
+
zIndex: 2
|
|
40
|
+
}, tag));
|
|
37
41
|
});
|
|
38
42
|
|
|
39
43
|
export { GalleryImage as default };
|
|
@@ -23,6 +23,6 @@ var StyledGalleryImageOverlay = styled("div", {
|
|
|
23
23
|
var visible = _ref2.visible;
|
|
24
24
|
return css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 3;\n background: rgba(0, 0, 0, 0.5);\n color: #fff;\n font-size: 50px;\n transition: all 275ms ease-in-out;\n ", "\n "])), !visible && css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n opacity: 0;\n visibility: hidden;\n backface-visibility: hidden;\n cursor: pointer;\n background: rgba(0, 0, 0, 0.38);\n "]))));
|
|
25
25
|
});
|
|
26
|
-
var
|
|
26
|
+
var StyledGalleryImageAction = styled("div")(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n display: flex;\n align-items: center;\n z-index: 4;\n\n > * {\n margin: 4px 2px;\n }\n\n > *:last-child {\n margin-left: auto;\n }\n"])));
|
|
27
27
|
|
|
28
|
-
export {
|
|
28
|
+
export { StyledGalleryImageAction, StyledGalleryImageOverlay, StyledGalleryImage as default, galleryImageOverlayClassName };
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { objectWithoutProperties as _objectWithoutProperties, slicedToArray as _slicedToArray, objectSpread2 as _objectSpread2 } from '../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import React, { useState, useCallback } from 'react';
|
|
3
|
+
import Dropzone from 'react-dropzone';
|
|
4
|
+
import { useSensors, useSensor, MouseSensor, TouchSensor, DndContext, closestCenter, DragOverlay } from '@dnd-kit/core';
|
|
5
|
+
import { SortableContext, rectSortingStrategy, arrayMove } from '@dnd-kit/sortable';
|
|
6
|
+
import Stack from '@mui/material/Stack';
|
|
7
|
+
import UploadIcon from '@tenancy.nz/icons/Upload';
|
|
8
|
+
import { Box, Tag, Text, Confirmation } from '@tenancy.nz/ui';
|
|
9
|
+
import GalleryDragOverlay from './GalleryDragOverlay.js';
|
|
10
|
+
import SortableGalleryImage from './SortableGalleryImage.js';
|
|
11
|
+
import Gallery from './Gallery.js';
|
|
12
|
+
import StyledDropzone from './SortableGallery.styled.js';
|
|
13
|
+
|
|
14
|
+
var _excluded = ["dropzoneText", "dropzoneProps", "onDelete", "onUpload", "onSortComplete"];
|
|
15
|
+
function SortableGallery(_ref) {
|
|
16
|
+
var _ref$dropzoneText = _ref.dropzoneText,
|
|
17
|
+
dropzoneText = _ref$dropzoneText === void 0 ? "" : _ref$dropzoneText,
|
|
18
|
+
_ref$dropzoneProps = _ref.dropzoneProps,
|
|
19
|
+
dropzoneProps = _ref$dropzoneProps === void 0 ? {} : _ref$dropzoneProps,
|
|
20
|
+
_ref$onDelete = _ref.onDelete,
|
|
21
|
+
onDelete = _ref$onDelete === void 0 ? void 0 : _ref$onDelete,
|
|
22
|
+
_ref$onUpload = _ref.onUpload,
|
|
23
|
+
onUpload = _ref$onUpload === void 0 ? void 0 : _ref$onUpload,
|
|
24
|
+
_ref$onSortComplete = _ref.onSortComplete,
|
|
25
|
+
onSortComplete = _ref$onSortComplete === void 0 ? void 0 : _ref$onSortComplete,
|
|
26
|
+
listProps = _objectWithoutProperties(_ref, _excluded);
|
|
27
|
+
var _listProps$images = listProps.images,
|
|
28
|
+
images = _listProps$images === void 0 ? [] : _listProps$images,
|
|
29
|
+
loading = listProps.loading,
|
|
30
|
+
infoText = listProps.infoText;
|
|
31
|
+
var _useState = useState(null),
|
|
32
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
33
|
+
activeId = _useState2[0],
|
|
34
|
+
setActiveId = _useState2[1];
|
|
35
|
+
var _useState3 = useState(null),
|
|
36
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
37
|
+
confirmDelete = _useState4[0],
|
|
38
|
+
setConfirmDelete = _useState4[1];
|
|
39
|
+
var sensors = useSensors(useSensor(MouseSensor), useSensor(TouchSensor));
|
|
40
|
+
var handleUpload = useCallback(function (acceptedFiles) {
|
|
41
|
+
var readFile = function readFile(file) {
|
|
42
|
+
return new Promise(function (resolve) {
|
|
43
|
+
var reader = new FileReader();
|
|
44
|
+
reader.onload = function () {
|
|
45
|
+
resolve({
|
|
46
|
+
path: reader.result,
|
|
47
|
+
thumb: reader.result,
|
|
48
|
+
name: file.name,
|
|
49
|
+
type: file.type
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
reader.readAsDataURL(file);
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
Promise.all(acceptedFiles.map(readFile)).then(function (files) {
|
|
56
|
+
onUpload === null || onUpload === void 0 || onUpload(files);
|
|
57
|
+
});
|
|
58
|
+
}, [onUpload]);
|
|
59
|
+
var handleDragStart = function handleDragStart(event) {
|
|
60
|
+
setActiveId(event.active.id);
|
|
61
|
+
};
|
|
62
|
+
var handleDragCancel = function handleDragCancel() {
|
|
63
|
+
setActiveId(null);
|
|
64
|
+
};
|
|
65
|
+
var handleDragEnd = function handleDragEnd(event) {
|
|
66
|
+
var active = event.active,
|
|
67
|
+
over = event.over;
|
|
68
|
+
if (over && active.id !== over.id) {
|
|
69
|
+
var oldIndex = images.findIndex(function (img) {
|
|
70
|
+
return img.thumb === active.id;
|
|
71
|
+
});
|
|
72
|
+
var newIndex = images.findIndex(function (img) {
|
|
73
|
+
return img.thumb === over.id;
|
|
74
|
+
});
|
|
75
|
+
var sortedImages = arrayMove(images, oldIndex, newIndex);
|
|
76
|
+
onSortComplete === null || onSortComplete === void 0 || onSortComplete(sortedImages, newIndex, oldIndex);
|
|
77
|
+
}
|
|
78
|
+
setActiveId(null);
|
|
79
|
+
};
|
|
80
|
+
var handleDelete = function handleDelete(event, index) {
|
|
81
|
+
event.stopPropagation();
|
|
82
|
+
event.preventDefault();
|
|
83
|
+
setConfirmDelete(index);
|
|
84
|
+
};
|
|
85
|
+
var handleDeleteConfirm = function handleDeleteConfirm() {
|
|
86
|
+
if (confirmDelete !== null) {
|
|
87
|
+
onDelete === null || onDelete === void 0 || onDelete(confirmDelete);
|
|
88
|
+
}
|
|
89
|
+
setConfirmDelete(null);
|
|
90
|
+
};
|
|
91
|
+
return /* @__PURE__ */React.createElement(Box, null, /* @__PURE__ */React.createElement(DndContext, {
|
|
92
|
+
sensors: sensors,
|
|
93
|
+
collisionDetection: closestCenter,
|
|
94
|
+
onDragCancel: handleDragCancel,
|
|
95
|
+
onDragStart: handleDragStart,
|
|
96
|
+
onDragEnd: handleDragEnd
|
|
97
|
+
}, /* @__PURE__ */React.createElement(SortableContext, {
|
|
98
|
+
items: images.map(function (image) {
|
|
99
|
+
return image.thumb;
|
|
100
|
+
}),
|
|
101
|
+
strategy: rectSortingStrategy
|
|
102
|
+
}, /* @__PURE__ */React.createElement(Gallery, {
|
|
103
|
+
loading: loading,
|
|
104
|
+
images: images,
|
|
105
|
+
infoText: infoText,
|
|
106
|
+
renderItem: function renderItem(image, i) {
|
|
107
|
+
return /* @__PURE__ */React.createElement(SortableGalleryImage, {
|
|
108
|
+
key: image.thumb,
|
|
109
|
+
src: image.thumb,
|
|
110
|
+
tag: i === 0 ? /* @__PURE__ */React.createElement(Tag, {
|
|
111
|
+
color: "white",
|
|
112
|
+
disableIcon: true,
|
|
113
|
+
label: "Cover image",
|
|
114
|
+
variant: "filled"
|
|
115
|
+
}) : void 0,
|
|
116
|
+
onDelete: function onDelete(e) {
|
|
117
|
+
return handleDelete(e, i);
|
|
118
|
+
},
|
|
119
|
+
uploading: !!image.uploading,
|
|
120
|
+
onClick: image.onClick
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
})), /* @__PURE__ */React.createElement(DragOverlay, {
|
|
124
|
+
adjustScale: false
|
|
125
|
+
}, activeId ? /* @__PURE__ */React.createElement(GalleryDragOverlay, {
|
|
126
|
+
src: String(activeId)
|
|
127
|
+
}) : null)), /* @__PURE__ */React.createElement(Dropzone, _objectSpread2(_objectSpread2({}, _objectSpread2({
|
|
128
|
+
disabled: loading
|
|
129
|
+
}, dropzoneProps)), {}, {
|
|
130
|
+
accept: {
|
|
131
|
+
"image/*": []
|
|
132
|
+
},
|
|
133
|
+
onDrop: handleUpload
|
|
134
|
+
}), function (_ref2) {
|
|
135
|
+
var getRootProps = _ref2.getRootProps,
|
|
136
|
+
getInputProps = _ref2.getInputProps;
|
|
137
|
+
return /* @__PURE__ */React.createElement(StyledDropzone, _objectSpread2({}, getRootProps()), /* @__PURE__ */React.createElement("input", _objectSpread2({}, getInputProps())), /* @__PURE__ */React.createElement(Stack, {
|
|
138
|
+
gap: 2,
|
|
139
|
+
alignItems: "center"
|
|
140
|
+
}, /* @__PURE__ */React.createElement(UploadIcon, {
|
|
141
|
+
size: 68
|
|
142
|
+
}), /* @__PURE__ */React.createElement(Text, {
|
|
143
|
+
variant: "body2",
|
|
144
|
+
weight: "400"
|
|
145
|
+
}, dropzoneText || /* @__PURE__ */React.createElement(React.Fragment, null, "Drag and drop image(s) here, or ", /* @__PURE__ */React.createElement("u", null, "choose image")))));
|
|
146
|
+
}), /* @__PURE__ */React.createElement(Confirmation, {
|
|
147
|
+
open: confirmDelete !== null,
|
|
148
|
+
severity: "destructive",
|
|
149
|
+
title: "Delete image?",
|
|
150
|
+
message: "Deleting this image will permanently remove it from the system. This action cannot be undone.",
|
|
151
|
+
onCancel: function onCancel() {
|
|
152
|
+
return setConfirmDelete(null);
|
|
153
|
+
},
|
|
154
|
+
onConfirm: handleDeleteConfirm,
|
|
155
|
+
confirmBtnText: "Delete"
|
|
156
|
+
}));
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export { SortableGallery as default };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { taggedTemplateLiteral as _taggedTemplateLiteral } from '../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import { css } from '@emotion/react';
|
|
3
|
+
import { styled } from '@mui/material/styles';
|
|
4
|
+
import { token } from '@tenancy.nz/ui';
|
|
5
|
+
|
|
6
|
+
var _templateObject, _templateObject2;
|
|
7
|
+
var StyledDropzone = styled("div")(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n ", "\n"])), function (_ref) {
|
|
8
|
+
var theme = _ref.theme;
|
|
9
|
+
return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n border: 2px dashed ", ";\n background: #fff;\n margin: 24px 0 0 0;\n padding: 32px 16px;\n border-radius: ", "px;\n color: ", ";\n max-height: 176px;\n "])), token("palette.semantic.border.accentColor"), theme.shape.borderRadius, token("palette.semantic.text.primaryColor"));
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
export { StyledDropzone as default };
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { objectWithoutProperties as _objectWithoutProperties, objectSpread2 as _objectSpread2 } from '../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { useSortable } from '@dnd-kit/sortable';
|
|
4
|
+
import { CSS } from '@dnd-kit/utilities';
|
|
5
|
+
import DeleteOutlinedIcon from '@tenancy.nz/icons/DeleteOutlined';
|
|
6
|
+
import { AbsBox, IconButton } from '@tenancy.nz/ui';
|
|
7
|
+
import GalleryDragHandle from './GalleryDragHandle.js';
|
|
8
|
+
import GalleryImage from './GalleryImage.js';
|
|
9
|
+
|
|
10
|
+
var _excluded = ["tag", "onDelete", "src", "uploading"];
|
|
11
|
+
function SortableGalleryImage(_ref) {
|
|
12
|
+
var _ref$tag = _ref.tag,
|
|
13
|
+
tag = _ref$tag === void 0 ? void 0 : _ref$tag,
|
|
14
|
+
_ref$onDelete = _ref.onDelete,
|
|
15
|
+
onDelete = _ref$onDelete === void 0 ? void 0 : _ref$onDelete,
|
|
16
|
+
src = _ref.src,
|
|
17
|
+
_ref$uploading = _ref.uploading,
|
|
18
|
+
uploading = _ref$uploading === void 0 ? false : _ref$uploading,
|
|
19
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
20
|
+
var _useSortable = useSortable({
|
|
21
|
+
id: src
|
|
22
|
+
}),
|
|
23
|
+
attributes = _useSortable.attributes,
|
|
24
|
+
isDragging = _useSortable.isDragging,
|
|
25
|
+
listeners = _useSortable.listeners,
|
|
26
|
+
setNodeRef = _useSortable.setNodeRef,
|
|
27
|
+
setDraggableNodeRef = _useSortable.setDraggableNodeRef,
|
|
28
|
+
transform = _useSortable.transform,
|
|
29
|
+
transition = _useSortable.transition;
|
|
30
|
+
var styles = {
|
|
31
|
+
transform: CSS.Transform.toString(transform),
|
|
32
|
+
transition: transition
|
|
33
|
+
};
|
|
34
|
+
var actions = function actions() {
|
|
35
|
+
if (!uploading && !isDragging) {
|
|
36
|
+
return /* @__PURE__ */React.createElement(React.Fragment, null, /* @__PURE__ */React.createElement(AbsBox, {
|
|
37
|
+
display: "flex",
|
|
38
|
+
left: 8,
|
|
39
|
+
top: "50%",
|
|
40
|
+
sx: {
|
|
41
|
+
transform: "translateY(-50%)"
|
|
42
|
+
}
|
|
43
|
+
}, /* @__PURE__ */React.createElement(GalleryDragHandle, _objectSpread2(_objectSpread2(_objectSpread2({}, attributes), listeners), {}, {
|
|
44
|
+
ref: setDraggableNodeRef
|
|
45
|
+
}))), onDelete && /* @__PURE__ */React.createElement(AbsBox, {
|
|
46
|
+
display: "flex",
|
|
47
|
+
top: 8,
|
|
48
|
+
right: 8,
|
|
49
|
+
zIndex: 2
|
|
50
|
+
}, /* @__PURE__ */React.createElement(IconButton, {
|
|
51
|
+
onClick: onDelete,
|
|
52
|
+
color: "error",
|
|
53
|
+
variant: "contained"
|
|
54
|
+
}, /* @__PURE__ */React.createElement(DeleteOutlinedIcon, {
|
|
55
|
+
size: 20
|
|
56
|
+
}))));
|
|
57
|
+
}
|
|
58
|
+
return void 0;
|
|
59
|
+
};
|
|
60
|
+
return /* @__PURE__ */React.createElement(GalleryImage, _objectSpread2({
|
|
61
|
+
ref: setNodeRef,
|
|
62
|
+
style: styles,
|
|
63
|
+
dragging: isDragging,
|
|
64
|
+
actions: actions(),
|
|
65
|
+
tag: tag,
|
|
66
|
+
src: src,
|
|
67
|
+
uploading: uploading
|
|
68
|
+
}, rest));
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export { SortableGalleryImage as default };
|
package/dist/esm/index.js
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
export { default as Gallery } from './components/Gallery.js';
|
|
2
|
+
export { default as GalleryDragHandle } from './components/GalleryDragHandle.js';
|
|
3
|
+
export { default as GalleryDragOverlay } from './components/GalleryDragOverlay.js';
|
|
2
4
|
export { default as GalleryImage } from './components/GalleryImage.js';
|
|
3
5
|
export { default as GalleryImageSkeleton } from './components/GalleryImageSkeleton.js';
|
|
4
6
|
export { default as GalleryViewer } from './components/GalleryViewer.js';
|
|
7
|
+
export { default as SortableGallery } from './components/SortableGallery.js';
|
|
8
|
+
export { default as SortableGalleryImage } from './components/SortableGalleryImage.js';
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tenancy.nz/gallery",
|
|
3
3
|
"description": "React UI gallery components.",
|
|
4
|
-
"version": "1.10.
|
|
4
|
+
"version": "1.10.2",
|
|
5
5
|
"author": "TPS <https://www.tenancy.co.nz>",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/cjs/index.cjs",
|
|
@@ -19,15 +19,21 @@
|
|
|
19
19
|
"@mui/material": "^7.3.1",
|
|
20
20
|
"react": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
|
|
21
21
|
"react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
|
|
22
|
-
"@tenancy.nz/icons": "1.10.
|
|
23
|
-
"@tenancy.nz/ui": "1.10.
|
|
22
|
+
"@tenancy.nz/icons": "1.10.2",
|
|
23
|
+
"@tenancy.nz/ui": "1.10.2"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@emotion/react": "^11.14.0",
|
|
27
27
|
"@emotion/styled": "^11.14.1",
|
|
28
28
|
"@mui/material": "^7.3.1",
|
|
29
|
-
"@tenancy.nz/
|
|
30
|
-
"@tenancy.nz/
|
|
29
|
+
"@tenancy.nz/ui": "1.10.2",
|
|
30
|
+
"@tenancy.nz/icons": "1.10.2"
|
|
31
|
+
},
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"@dnd-kit/core": "^6.3.1",
|
|
34
|
+
"@dnd-kit/sortable": "^10.0.0",
|
|
35
|
+
"@dnd-kit/utilities": "^3.2.2",
|
|
36
|
+
"react-dropzone": "^14.3.8"
|
|
31
37
|
},
|
|
32
38
|
"scripts": {
|
|
33
39
|
"build": "tsx ../../scripts/build.js"
|