@blerp/design 1.2.74 → 1.2.76
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/Blerp/BlerpImageRow.js +167 -0
- package/dist/cjs/Blerp/BlerpSavePopup.js +157 -0
- package/dist/cjs/Blerp/BlerpTitleRow.js +116 -0
- package/dist/cjs/Blerp/BlerpTopRow.js +246 -0
- package/dist/cjs/Blerp.js +239 -0
- package/dist/cjs/BlerpAudioContextProvider.js +141 -0
- package/dist/cjs/BlerpListView.js +357 -0
- package/dist/cjs/BlerpListViewPremium.js +404 -0
- package/dist/cjs/BlerpListViewSkeleton.js +27 -0
- package/dist/cjs/BlerpSkeleton.js +23 -0
- package/dist/cjs/CollectionCard.js +402 -0
- package/dist/cjs/CollectionListViewPremium.js +368 -0
- package/dist/cjs/CollectionSkeleton.js +28 -0
- package/dist/cjs/Dropdown.js +283 -0
- package/dist/cjs/EllipsisLoader.js +51 -0
- package/dist/cjs/GroupCard.js +172 -0
- package/dist/cjs/Icons/Icons.js +606 -0
- package/dist/cjs/ImageUploadModal.js +278 -0
- package/dist/cjs/Lotties/JiggleLock.json.js +2762 -0
- package/dist/cjs/Lotties/LottieAnimation.js +32 -0
- package/dist/cjs/NewBlerp.js +740 -0
- package/dist/cjs/NewBlerpTest.js +808 -0
- package/dist/cjs/NewCollectionModal.js +403 -0
- package/dist/cjs/PremiumCollectionCard.js +511 -0
- package/dist/cjs/PurchaseModals/CheckoutModal.js +39 -0
- package/dist/cjs/PurchaseModals/PremiumBlerpCheckoutModal.js +39 -0
- package/dist/cjs/PurchaseModals/PremiumCollectionCheckoutModal.js +39 -0
- package/dist/cjs/PurchaseModals/PremiumSubscriptionCheckoutModal.js +39 -0
- package/dist/cjs/ReactionButtons.js +65 -0
- package/dist/cjs/ScreenSizeHook.js +34 -0
- package/dist/cjs/SnackbarContextProvider.js +166 -0
- package/dist/cjs/Theme.js +255 -0
- package/dist/cjs/Toggle.js +59 -0
- package/dist/cjs/UserCard.js +141 -0
- package/dist/cjs/UserPage/LibraryControls.js +315 -0
- package/dist/cjs/UserPage/UserLibraryHeader.js +93 -0
- package/dist/cjs/UserPage/UserProfileHeader.js +283 -0
- package/dist/cjs/UsernameWithPopout.js +93 -0
- package/dist/cjs/colors.js +368 -0
- package/dist/cjs/icons.js +161 -0
- package/dist/cjs/index.js +449 -0
- package/dist/esm/Blerp/BlerpImageRow.js +157 -0
- package/dist/esm/Blerp/BlerpSavePopup.js +147 -0
- package/dist/esm/Blerp/BlerpTitleRow.js +108 -0
- package/dist/esm/Blerp/BlerpTopRow.js +236 -0
- package/dist/esm/Blerp.js +230 -0
- package/dist/esm/BlerpAudioContextProvider.js +132 -0
- package/dist/esm/BlerpListView.js +344 -0
- package/dist/esm/BlerpListViewPremium.js +391 -0
- package/dist/esm/BlerpListViewSkeleton.js +17 -0
- package/dist/esm/BlerpSkeleton.js +13 -0
- package/dist/esm/CollectionCard.js +392 -0
- package/dist/esm/CollectionListViewPremium.js +354 -0
- package/dist/esm/CollectionSkeleton.js +18 -0
- package/dist/esm/Dropdown.js +273 -0
- package/dist/esm/EllipsisLoader.js +41 -0
- package/dist/esm/GroupCard.js +162 -0
- package/dist/esm/Icons/Icons.js +571 -0
- package/dist/esm/ImageUploadModal.js +265 -0
- package/dist/esm/Lotties/JiggleLock.json.js +2747 -0
- package/dist/esm/Lotties/LottieAnimation.js +25 -0
- package/dist/esm/NewBlerp.js +719 -0
- package/dist/esm/NewBlerpTest.js +787 -0
- package/dist/esm/NewCollectionModal.js +391 -0
- package/dist/esm/PremiumCollectionCard.js +498 -0
- package/dist/esm/PurchaseModals/CheckoutModal.js +33 -0
- package/dist/esm/PurchaseModals/PremiumBlerpCheckoutModal.js +33 -0
- package/dist/esm/PurchaseModals/PremiumCollectionCheckoutModal.js +33 -0
- package/dist/esm/PurchaseModals/PremiumSubscriptionCheckoutModal.js +33 -0
- package/dist/esm/ReactionButtons.js +57 -0
- package/dist/esm/ScreenSizeHook.js +30 -0
- package/dist/esm/SnackbarContextProvider.js +154 -0
- package/dist/esm/Theme.js +246 -0
- package/dist/esm/Toggle.js +49 -0
- package/dist/esm/UserCard.js +133 -0
- package/dist/esm/UserPage/LibraryControls.js +301 -0
- package/dist/esm/UserPage/UserLibraryHeader.js +87 -0
- package/dist/esm/UserPage/UserProfileHeader.js +268 -0
- package/dist/esm/UsernameWithPopout.js +85 -0
- package/dist/esm/colors.js +360 -0
- package/dist/esm/icons.js +159 -0
- package/dist/esm/index.js +336 -0
- package/package.json +2 -1
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _extends = require('@babel/runtime/helpers/extends');
|
|
4
|
+
var _taggedTemplateLiteral = require('@babel/runtime/helpers/taggedTemplateLiteral');
|
|
5
|
+
var index = require('./index.js');
|
|
6
|
+
var React = require('react');
|
|
7
|
+
var AvatarEditor = require('react-avatar-editor');
|
|
8
|
+
var Dropzone = require('react-dropzone');
|
|
9
|
+
var styled = require('styled-components');
|
|
10
|
+
var InsertPhotoRoundedIcon = require('@mui/icons-material/InsertPhotoRounded');
|
|
11
|
+
var CloseRoundedIcon = require('@mui/icons-material/CloseRounded');
|
|
12
|
+
var ScreenSizeHook = require('./ScreenSizeHook.js');
|
|
13
|
+
|
|
14
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
15
|
+
|
|
16
|
+
var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);
|
|
17
|
+
var _taggedTemplateLiteral__default = /*#__PURE__*/_interopDefaultLegacy(_taggedTemplateLiteral);
|
|
18
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
19
|
+
var AvatarEditor__default = /*#__PURE__*/_interopDefaultLegacy(AvatarEditor);
|
|
20
|
+
var Dropzone__default = /*#__PURE__*/_interopDefaultLegacy(Dropzone);
|
|
21
|
+
var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
|
|
22
|
+
var InsertPhotoRoundedIcon__default = /*#__PURE__*/_interopDefaultLegacy(InsertPhotoRoundedIcon);
|
|
23
|
+
var CloseRoundedIcon__default = /*#__PURE__*/_interopDefaultLegacy(CloseRoundedIcon);
|
|
24
|
+
|
|
25
|
+
var _templateObject, _templateObject2;
|
|
26
|
+
const Slider = styled__default['default'].input(_templateObject || (_templateObject = _taggedTemplateLiteral__default['default'](["\n -webkit-appearance: none;\n align-self: center;\n width: 80%;\n height: 5px;\n border-radius: 5px;\n background: #d3d3d3;\n outline: none;\n opacity: 0.7;\n -webkit-transition: 0.2s;\n transition: opacity 0.2s;\n\n &:focus {\n border: 0px !important;\n }\n\n &:hover {\n opacity: 1;\n }\n\n &::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 25px;\n height: 25px;\n border-radius: 50%;\n background: ", ";\n border: 2px solid ", ";\n cursor: pointer;\n }\n\n &::-moz-range-thumb {\n width: 25px;\n height: 25px;\n border-radius: 50%;\n background: ", ";\n border: 2px solid ", ";\n cursor: pointer;\n }\n"])), props => props.theme.colors.ibisRed, props => props.theme.colors.waxwing, props => props.theme.colors.ibisRed, props => props.theme.colors.waxwing);
|
|
27
|
+
const ZoomIcon = styled__default['default'].div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral__default['default'](["\n background-image: url(\"https://cdn.blerp.com/blerp_products/Web/Account/zoom%20icon.svg?folder=true&organizationId=true\");\n background-repeat: no-repeat;\n background-position: left;\n background-size: cover;\n width: 20px;\n height: 20px;\n"])));
|
|
28
|
+
|
|
29
|
+
const ImageUploadModal = _ref => {
|
|
30
|
+
let {
|
|
31
|
+
prevImage,
|
|
32
|
+
updateImage,
|
|
33
|
+
onClose,
|
|
34
|
+
title,
|
|
35
|
+
isCircularImage,
|
|
36
|
+
isSquareImage,
|
|
37
|
+
sizeInfo
|
|
38
|
+
} = _ref;
|
|
39
|
+
const [image, setImage] = React.useState(prevImage);
|
|
40
|
+
const [zoom, setZoom] = React.useState(50);
|
|
41
|
+
const [loading, setLoading] = React.useState(false);
|
|
42
|
+
const [dropzoneHovered, setDropzoneHovered] = React.useState(false);
|
|
43
|
+
const size = ScreenSizeHook.useWindowSize();
|
|
44
|
+
|
|
45
|
+
const urlToObject = async img => {
|
|
46
|
+
const response = await fetch(img); // here image is url/location of image
|
|
47
|
+
|
|
48
|
+
const blob = await response.blob();
|
|
49
|
+
const file = new File([blob], img, {
|
|
50
|
+
type: blob.type,
|
|
51
|
+
size: blob.type
|
|
52
|
+
});
|
|
53
|
+
setImage(file);
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
React.useEffect(() => {
|
|
57
|
+
if (prevImage) {
|
|
58
|
+
urlToObject(prevImage);
|
|
59
|
+
}
|
|
60
|
+
}, [prevImage]);
|
|
61
|
+
const imageEditorRef = /*#__PURE__*/React.createRef();
|
|
62
|
+
|
|
63
|
+
const handleImageDrop = acceptedFiles => {
|
|
64
|
+
if (acceptedFiles[0].type === "image/gif") {
|
|
65
|
+
console.log("hit dat GIF in IF");
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
setImage(acceptedFiles[0]);
|
|
69
|
+
setDropzoneHovered(false);
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
const handleGifUpload = async () => {
|
|
73
|
+
if (image.name !== prevImage) {
|
|
74
|
+
console.log("does not equal");
|
|
75
|
+
updateImage(image);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
onClose();
|
|
79
|
+
}; // This is called when there is a non-gif photo ready to be uploaded
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
const handleUploadClick = async () => {
|
|
83
|
+
// check image exists
|
|
84
|
+
if (!image) {
|
|
85
|
+
alert("You must upload a valid image");
|
|
86
|
+
return;
|
|
87
|
+
} // check image size
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
if (image.size > 8842038) {
|
|
91
|
+
alert("You must update with a valid image less then 7mb");
|
|
92
|
+
return;
|
|
93
|
+
} // create a dom element for the photo and creates a data URL (URI)
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
setLoading(true);
|
|
97
|
+
const canvas = imageEditorRef.current.getImage().toDataURL();
|
|
98
|
+
let file;
|
|
99
|
+
await fetch(canvas) // canvas res is the URL data of the photo. Now the .blob() method reads that data URL (URI), and creates a new Blob (file-like object of immutable data)
|
|
100
|
+
.then(res => res.blob()).then(blob => {
|
|
101
|
+
// assign the blob data to the DOM STRING of the DOM element
|
|
102
|
+
window.URL.createObjectURL(blob); // create an image file using the data from the blob, assign the file a name, assign the file type
|
|
103
|
+
// Adding ".JPG" is totally janky, but since the database currently reads the file type from the name of the file (not the image.type), and since we are changing the image.name to match the url of the image, an error will be thrown if we do not declare a file type at the end.
|
|
104
|
+
|
|
105
|
+
file = new File([blob], image.name, {
|
|
106
|
+
type: image.type,
|
|
107
|
+
size: image.size
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
await updateImage(file);
|
|
111
|
+
setLoading(false);
|
|
112
|
+
onClose();
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
return /*#__PURE__*/React__default['default'].createElement(index.Stack, {
|
|
116
|
+
sx: {
|
|
117
|
+
minHeight: "580px"
|
|
118
|
+
},
|
|
119
|
+
alignItems: "center",
|
|
120
|
+
justifyContent: "space-between"
|
|
121
|
+
}, /*#__PURE__*/React__default['default'].createElement(CloseRoundedIcon__default['default'], {
|
|
122
|
+
sx: {
|
|
123
|
+
position: "absolute",
|
|
124
|
+
cursor: "pointer",
|
|
125
|
+
top: "20px",
|
|
126
|
+
right: "20px"
|
|
127
|
+
},
|
|
128
|
+
onClick: () => onClose()
|
|
129
|
+
}), /*#__PURE__*/React__default['default'].createElement(index.Stack, {
|
|
130
|
+
alignItems: "center",
|
|
131
|
+
sx: {
|
|
132
|
+
position: "relative"
|
|
133
|
+
}
|
|
134
|
+
}, /*#__PURE__*/React__default['default'].createElement(index.Text, {
|
|
135
|
+
sx: {
|
|
136
|
+
fontSize: "32px",
|
|
137
|
+
marginbottom: "16px"
|
|
138
|
+
}
|
|
139
|
+
}, title), /*#__PURE__*/React__default['default'].createElement(index.Text, {
|
|
140
|
+
color: "grey4",
|
|
141
|
+
sx: {
|
|
142
|
+
fontWeight: "lighter",
|
|
143
|
+
marginBottom: "2px"
|
|
144
|
+
}
|
|
145
|
+
}, "Adjust your image below."), /*#__PURE__*/React__default['default'].createElement(index.Text, {
|
|
146
|
+
color: "grey4",
|
|
147
|
+
sx: {
|
|
148
|
+
fontWeight: "lighter",
|
|
149
|
+
marginBottom: "2px"
|
|
150
|
+
}
|
|
151
|
+
}, sizeInfo)), loading ? /*#__PURE__*/React__default['default'].createElement("div", {
|
|
152
|
+
style: {
|
|
153
|
+
width: "100%",
|
|
154
|
+
height: "300px"
|
|
155
|
+
}
|
|
156
|
+
}, /*#__PURE__*/React__default['default'].createElement(index.Text, null, "Loading...")) : /*#__PURE__*/React__default['default'].createElement(index.Stack, {
|
|
157
|
+
sx: {
|
|
158
|
+
minWidth: "300px",
|
|
159
|
+
margin: "0px 0",
|
|
160
|
+
position: "relative",
|
|
161
|
+
backgroundColor: "waxwing.main",
|
|
162
|
+
maxHeight: "250px",
|
|
163
|
+
overflow: "hidden",
|
|
164
|
+
justifyContent: "center",
|
|
165
|
+
alignItems: "center"
|
|
166
|
+
}
|
|
167
|
+
}, image ? image.type !== "image/gif" ? isCircularImage ? /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(AvatarEditor__default['default'], {
|
|
168
|
+
ref: imageEditorRef,
|
|
169
|
+
width: 250,
|
|
170
|
+
height: 250,
|
|
171
|
+
borderRadius: 125,
|
|
172
|
+
image: image,
|
|
173
|
+
scale: zoom / 50,
|
|
174
|
+
crossOrigin: "anonymous"
|
|
175
|
+
})) : isSquareImage ? /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(AvatarEditor__default['default'], {
|
|
176
|
+
ref: imageEditorRef,
|
|
177
|
+
width: 250,
|
|
178
|
+
height: 250,
|
|
179
|
+
borderRadius: 0,
|
|
180
|
+
image: image,
|
|
181
|
+
scale: zoom / 50,
|
|
182
|
+
crossOrigin: "anonymous"
|
|
183
|
+
})) : /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(AvatarEditor__default['default'], {
|
|
184
|
+
ref: imageEditorRef,
|
|
185
|
+
width: 650,
|
|
186
|
+
height: 225,
|
|
187
|
+
image: image,
|
|
188
|
+
scale: zoom / 50,
|
|
189
|
+
crossorigin: "anonymous"
|
|
190
|
+
})) : /*#__PURE__*/React__default['default'].createElement("img", {
|
|
191
|
+
src: URL.createObjectURL(image) || image.name,
|
|
192
|
+
width: "250px",
|
|
193
|
+
height: "auto",
|
|
194
|
+
style: {
|
|
195
|
+
alignSelf: "center"
|
|
196
|
+
}
|
|
197
|
+
}) : /*#__PURE__*/React__default['default'].createElement(Dropzone__default['default'], {
|
|
198
|
+
onDragEnter: () => setDropzoneHovered(true),
|
|
199
|
+
onDragLeave: () => setDropzoneHovered(false),
|
|
200
|
+
onDrop: acceptedFiles => handleImageDrop(acceptedFiles)
|
|
201
|
+
}, _ref2 => {
|
|
202
|
+
let {
|
|
203
|
+
getRootProps,
|
|
204
|
+
getInputProps
|
|
205
|
+
} = _ref2;
|
|
206
|
+
return /*#__PURE__*/React__default['default'].createElement(index.Stack, {
|
|
207
|
+
sx: {
|
|
208
|
+
width: "100%",
|
|
209
|
+
height: size.width > 600 ? "300px" : "200px",
|
|
210
|
+
cursor: "pointer",
|
|
211
|
+
box: "borderBox",
|
|
212
|
+
justifyContent: "center"
|
|
213
|
+
}
|
|
214
|
+
}, /*#__PURE__*/React__default['default'].createElement("div", _extends__default['default']({
|
|
215
|
+
style: {
|
|
216
|
+
height: "100%",
|
|
217
|
+
display: "flex"
|
|
218
|
+
}
|
|
219
|
+
}, getRootProps()), /*#__PURE__*/React__default['default'].createElement("input", getInputProps()), dropzoneHovered ? /*#__PURE__*/React__default['default'].createElement(index.Stack, {
|
|
220
|
+
color: "grey3",
|
|
221
|
+
style: {
|
|
222
|
+
justifyContent: "center",
|
|
223
|
+
alignItems: "center",
|
|
224
|
+
width: "100%"
|
|
225
|
+
}
|
|
226
|
+
}, /*#__PURE__*/React__default['default'].createElement(InsertPhotoRoundedIcon__default['default'], {
|
|
227
|
+
style: {
|
|
228
|
+
color: "white",
|
|
229
|
+
height: "90%",
|
|
230
|
+
width: "90%"
|
|
231
|
+
}
|
|
232
|
+
})) : /*#__PURE__*/React__default['default'].createElement(index.Text, {
|
|
233
|
+
sx: {
|
|
234
|
+
flexWrap: "wrap",
|
|
235
|
+
width: "80%",
|
|
236
|
+
alignSelf: "center",
|
|
237
|
+
textAlign: "center",
|
|
238
|
+
verticalAlign: "center",
|
|
239
|
+
margin: "auto"
|
|
240
|
+
}
|
|
241
|
+
}, "Click or drop image here to upload.")));
|
|
242
|
+
})), /*#__PURE__*/React__default['default'].createElement(index.Stack, {
|
|
243
|
+
alignItems: "center"
|
|
244
|
+
}, image && image.type !== "image/gif" ? /*#__PURE__*/React__default['default'].createElement(index.Stack, {
|
|
245
|
+
direction: "row",
|
|
246
|
+
style: {
|
|
247
|
+
justifyContent: "space-around"
|
|
248
|
+
}
|
|
249
|
+
}, /*#__PURE__*/React__default['default'].createElement(ZoomIcon, null), /*#__PURE__*/React__default['default'].createElement(Slider, {
|
|
250
|
+
type: "range",
|
|
251
|
+
min: "35",
|
|
252
|
+
max: "100",
|
|
253
|
+
value: zoom,
|
|
254
|
+
onChange: e => setZoom(e.target.value)
|
|
255
|
+
})) : /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null), /*#__PURE__*/React__default['default'].createElement(index.Button, {
|
|
256
|
+
variant: "text",
|
|
257
|
+
color: "notBlack",
|
|
258
|
+
sx: {
|
|
259
|
+
textDecoration: "none",
|
|
260
|
+
textTransform: "none",
|
|
261
|
+
cursor: "pointer",
|
|
262
|
+
textDecoration: "underline",
|
|
263
|
+
margin: "20px 0"
|
|
264
|
+
},
|
|
265
|
+
onClick: () => setImage(image ? null : () => {
|
|
266
|
+
urlToObject(prevImage);
|
|
267
|
+
return image;
|
|
268
|
+
})
|
|
269
|
+
}, image ? "Change Image" : "Cancel"), /*#__PURE__*/React__default['default'].createElement(index.Button, {
|
|
270
|
+
variant: "contained",
|
|
271
|
+
disableElevation: true,
|
|
272
|
+
onClick: () => {
|
|
273
|
+
image.type === "image/gif" ? handleGifUpload() : handleUploadClick();
|
|
274
|
+
}
|
|
275
|
+
}, "Save Image")));
|
|
276
|
+
};
|
|
277
|
+
|
|
278
|
+
module.exports = ImageUploadModal;
|