@bigbinary/neeto-molecules 5.1.23 → 5.1.25
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/PhoneNumber.js +2 -2
- package/dist/SessionEnvironment.js +1 -1
- package/dist/arrow-left-B-s28MD1.js +18 -0
- package/dist/arrow-left-B-s28MD1.js.map +1 -0
- package/dist/cjs/PhoneNumber.js +1 -1
- package/dist/cjs/SessionEnvironment.js +1 -1
- package/dist/cjs/arrow-left-gtCwH31u.js +20 -0
- package/dist/cjs/arrow-left-gtCwH31u.js.map +1 -0
- package/dist/cjs/{phone-number-DIIlhFGA.js → phone-number-D8DlSqHJ.js} +6 -5
- package/dist/cjs/phone-number-D8DlSqHJ.js.map +1 -0
- package/dist/cjs/{phone-number-Bza7WGZm.js → phone-number-DMH57syY.js} +6 -5
- package/dist/cjs/phone-number-DMH57syY.js.map +1 -0
- package/dist/cjs/v2/ImageWithFallback.js +51 -0
- package/dist/cjs/v2/ImageWithFallback.js.map +1 -0
- package/dist/cjs/v2/PhoneNumber.js +1 -1
- package/dist/cjs/v2/ProductEmbed.js +4 -17
- package/dist/cjs/v2/ProductEmbed.js.map +1 -1
- package/dist/cjs/v2/SessionEnvironment.js +1 -1
- package/dist/cjs/v2/ShareRecordingPane.js +305 -0
- package/dist/cjs/v2/ShareRecordingPane.js.map +1 -0
- package/dist/cjs/v2/ShareViaEmail.js +387 -0
- package/dist/cjs/v2/ShareViaEmail.js.map +1 -0
- package/dist/cjs/v2/StatusDropdown.js +161 -0
- package/dist/cjs/v2/StatusDropdown.js.map +1 -0
- package/dist/cjs/v2/SubscriptionNotificationsContainer.js +72 -0
- package/dist/cjs/v2/SubscriptionNotificationsContainer.js.map +1 -0
- package/dist/cjs/v2/SubscriptionUpgradeRequestModal.js +90 -0
- package/dist/cjs/v2/SubscriptionUpgradeRequestModal.js.map +1 -0
- package/dist/cjs/v2/SuffixedInput.js +130 -0
- package/dist/cjs/v2/SuffixedInput.js.map +1 -0
- package/dist/cjs/v2/TimezoneMismatchModal.js +136 -0
- package/dist/cjs/v2/TimezoneMismatchModal.js.map +1 -0
- package/dist/cjs/v2/VersionHistory.js +210 -0
- package/dist/cjs/v2/VersionHistory.js.map +1 -0
- package/dist/{phone-number-B3OcwVZM.js → phone-number-CJj2wD9_.js} +6 -5
- package/dist/phone-number-CJj2wD9_.js.map +1 -0
- package/dist/{phone-number-CGZtDB_n.js → phone-number-D9soCpCv.js} +6 -5
- package/dist/phone-number-D9soCpCv.js.map +1 -0
- package/dist/v2/ImageWithFallback.js +49 -0
- package/dist/v2/ImageWithFallback.js.map +1 -0
- package/dist/v2/PhoneNumber.js +2 -2
- package/dist/v2/ProductEmbed.js +2 -15
- package/dist/v2/ProductEmbed.js.map +1 -1
- package/dist/v2/SessionEnvironment.js +1 -1
- package/dist/v2/ShareRecordingPane.js +303 -0
- package/dist/v2/ShareRecordingPane.js.map +1 -0
- package/dist/v2/ShareViaEmail.js +366 -0
- package/dist/v2/ShareViaEmail.js.map +1 -0
- package/dist/v2/StatusDropdown.js +159 -0
- package/dist/v2/StatusDropdown.js.map +1 -0
- package/dist/v2/SubscriptionNotificationsContainer.js +70 -0
- package/dist/v2/SubscriptionNotificationsContainer.js.map +1 -0
- package/dist/v2/SubscriptionUpgradeRequestModal.js +88 -0
- package/dist/v2/SubscriptionUpgradeRequestModal.js.map +1 -0
- package/dist/v2/SuffixedInput.js +128 -0
- package/dist/v2/SuffixedInput.js.map +1 -0
- package/dist/v2/TimezoneMismatchModal.js +134 -0
- package/dist/v2/TimezoneMismatchModal.js.map +1 -0
- package/dist/v2/VersionHistory.js +208 -0
- package/dist/v2/VersionHistory.js.map +1 -0
- package/package.json +1 -1
- package/types/v2/ImageWithFallback.d.ts +9 -0
- package/types/v2/ShareRecordingPane.d.ts +16 -0
- package/types/v2/ShareViaEmail.d.ts +34 -0
- package/types/v2/StatusDropdown.d.ts +16 -0
- package/types/v2/SubscriptionNotificationsContainer.d.ts +5 -0
- package/types/v2/SubscriptionUpgradeRequestModal.d.ts +8 -0
- package/types/v2/SuffixedInput.d.ts +16 -0
- package/types/v2/TimezoneMismatchModal.d.ts +8 -0
- package/types/v2/VersionHistory.d.ts +44 -0
- package/dist/cjs/phone-number-Bza7WGZm.js.map +0 -1
- package/dist/cjs/phone-number-DIIlhFGA.js.map +0 -1
- package/dist/phone-number-B3OcwVZM.js.map +0 -1
- package/dist/phone-number-CGZtDB_n.js.map +0 -1
|
@@ -23,7 +23,7 @@ var useHotkeys = require('@bigbinary/neeto-hotkeys');
|
|
|
23
23
|
var jsxRuntime = require('react/jsx-runtime');
|
|
24
24
|
require('@babel/runtime/helpers/objectWithoutProperties');
|
|
25
25
|
require('formik');
|
|
26
|
-
var phoneNumber = require('../phone-number-
|
|
26
|
+
var phoneNumber = require('../phone-number-DMH57syY.js');
|
|
27
27
|
require('../index.es5.min-CUvhPmKJ.js');
|
|
28
28
|
require('@babel/runtime/helpers/asyncToGenerator');
|
|
29
29
|
require('i18next');
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
4
|
+
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
5
|
+
var neetoAtoms = require('@bigbinary/neeto-atoms');
|
|
6
|
+
var neetoCist = require('@bigbinary/neeto-cist');
|
|
7
|
+
var reactI18next = require('react-i18next');
|
|
8
|
+
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
9
|
+
var React = require('react');
|
|
10
|
+
var utils = require('@bigbinary/neeto-commons-frontend/v2/utils');
|
|
11
|
+
var ramda = require('ramda');
|
|
12
|
+
var v2_CopyToClipboardButton = require('./CopyToClipboardButton.js');
|
|
13
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
14
|
+
require('classnames');
|
|
15
|
+
require('@bigbinary/neeto-commons-frontend/v2/utils/general');
|
|
16
|
+
require('../check-VgZf0qTr.js');
|
|
17
|
+
require('../createLucideIcon-DBDhE7kE.js');
|
|
18
|
+
require('../copy-CerjTcLL.js');
|
|
19
|
+
|
|
20
|
+
var ONE_SECOND = 1;
|
|
21
|
+
var ONE_MINUTE = 60 * ONE_SECOND;
|
|
22
|
+
var ONE_HOUR = 60 * ONE_MINUTE;
|
|
23
|
+
|
|
24
|
+
var padZero = function padZero(number) {
|
|
25
|
+
var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
|
|
26
|
+
var string = String(number);
|
|
27
|
+
var threshold = Math.pow(10, length - 1);
|
|
28
|
+
if (number < threshold) {
|
|
29
|
+
while (String(threshold).length > string.length) {
|
|
30
|
+
string = "0".concat(number);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return string;
|
|
34
|
+
};
|
|
35
|
+
var shouldRenderHoursInput = function shouldRenderHoursInput(duration) {
|
|
36
|
+
var hours = Math.floor(duration / ONE_HOUR);
|
|
37
|
+
return hours > 0;
|
|
38
|
+
};
|
|
39
|
+
var formatTime = function formatTime(timeInSeconds, showHours) {
|
|
40
|
+
var hours = Math.floor(timeInSeconds / ONE_HOUR);
|
|
41
|
+
var minutes = Math.floor(timeInSeconds % ONE_HOUR / ONE_MINUTE);
|
|
42
|
+
var seconds = timeInSeconds % ONE_MINUTE;
|
|
43
|
+
return showHours ? "".concat(padZero(hours), ":").concat(padZero(minutes), ":").concat(padZero(seconds)) : "".concat(padZero(minutes), ":").concat(padZero(seconds));
|
|
44
|
+
};
|
|
45
|
+
var parseTime = function parseTime(timeString) {
|
|
46
|
+
var parts = timeString.split(":").map(function (part) {
|
|
47
|
+
return part === "" ? NaN : parseInt(part, 10);
|
|
48
|
+
});
|
|
49
|
+
if (parts.some(isNaN) || parts.length > 3) {
|
|
50
|
+
return 0;
|
|
51
|
+
}
|
|
52
|
+
if (parts.length === 1) {
|
|
53
|
+
return parts[0];
|
|
54
|
+
} else if (parts.length === 2) {
|
|
55
|
+
return parts[0] * ONE_MINUTE + parts[1];
|
|
56
|
+
} else if (parts.length === 3) {
|
|
57
|
+
return parts[0] * ONE_HOUR + parts[1] * ONE_MINUTE + parts[2];
|
|
58
|
+
}
|
|
59
|
+
return 0;
|
|
60
|
+
};
|
|
61
|
+
var validateInput = function validateInput(input) {
|
|
62
|
+
var regex = /^[0-9:]{0,8}$/;
|
|
63
|
+
var colons = (input.match(/:/g) || []).length;
|
|
64
|
+
return regex.test(input) && colons <= 2;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
var SharePaneBody = function SharePaneBody(_ref) {
|
|
68
|
+
var recordingUrls = _ref.recordingUrls,
|
|
69
|
+
totalDuration = _ref.totalDuration,
|
|
70
|
+
getCurrentTimestamp = _ref.getCurrentTimestamp,
|
|
71
|
+
isOpen = _ref.isOpen,
|
|
72
|
+
onClose = _ref.onClose,
|
|
73
|
+
Preview = _ref.preview,
|
|
74
|
+
enableAutoplayAndMuteFlags = _ref.enableAutoplayAndMuteFlags;
|
|
75
|
+
var _useTranslation = reactI18next.useTranslation(),
|
|
76
|
+
t = _useTranslation.t;
|
|
77
|
+
var currentTimestamp = getCurrentTimestamp();
|
|
78
|
+
var _useState = React.useState([]),
|
|
79
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
80
|
+
shareLinks = _useState2[0],
|
|
81
|
+
setShareLinks = _useState2[1];
|
|
82
|
+
var _useState3 = React.useState(currentTimestamp),
|
|
83
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
84
|
+
currentPlaybackTime = _useState4[0],
|
|
85
|
+
setCurrentPlaybackTime = _useState4[1];
|
|
86
|
+
var _useState5 = React.useState({
|
|
87
|
+
muted: false,
|
|
88
|
+
autoplay: false
|
|
89
|
+
}),
|
|
90
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
91
|
+
params = _useState6[0],
|
|
92
|
+
setParams = _useState6[1];
|
|
93
|
+
var muted = params.muted,
|
|
94
|
+
autoplay = params.autoplay;
|
|
95
|
+
var _useState7 = React.useState(""),
|
|
96
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
97
|
+
rawInput = _useState8[0],
|
|
98
|
+
setRawInput = _useState8[1];
|
|
99
|
+
var showHours = shouldRenderHoursInput(totalDuration);
|
|
100
|
+
var handlePlaybackTimestampChange = function handlePlaybackTimestampChange(e) {
|
|
101
|
+
var input = e.target.value;
|
|
102
|
+
if (validateInput(input)) {
|
|
103
|
+
setRawInput(input);
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
var handleFlagsChange = function handleFlagsChange(key, value) {
|
|
107
|
+
return setParams(ramda.assoc(key, value));
|
|
108
|
+
};
|
|
109
|
+
var formatAndSetTime = function formatAndSetTime() {
|
|
110
|
+
var timeInSeconds = parseTime(rawInput);
|
|
111
|
+
if (timeInSeconds > totalDuration) {
|
|
112
|
+
timeInSeconds = totalDuration;
|
|
113
|
+
}
|
|
114
|
+
setRawInput(formatTime(timeInSeconds, showHours));
|
|
115
|
+
};
|
|
116
|
+
var handleKeyDown = function handleKeyDown(e) {
|
|
117
|
+
if (e.key !== "Enter") return;
|
|
118
|
+
formatAndSetTime();
|
|
119
|
+
};
|
|
120
|
+
var generateUrls = React.useCallback(function (timeInSeconds, urlParams) {
|
|
121
|
+
var playbackUrls = recordingUrls.map(function (recordingUrl) {
|
|
122
|
+
return utils.buildUrl(recordingUrl, {
|
|
123
|
+
time: timeInSeconds,
|
|
124
|
+
muted: urlParams.muted ? 1 : undefined,
|
|
125
|
+
autoplay: urlParams.autoplay ? 1 : undefined
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
setShareLinks(playbackUrls);
|
|
129
|
+
}, [recordingUrls]);
|
|
130
|
+
var handleRegenerateUrl = function handleRegenerateUrl() {
|
|
131
|
+
var timeInSeconds = parseTime(rawInput);
|
|
132
|
+
if (timeInSeconds > totalDuration) {
|
|
133
|
+
timeInSeconds = totalDuration;
|
|
134
|
+
}
|
|
135
|
+
setCurrentPlaybackTime(timeInSeconds);
|
|
136
|
+
generateUrls(timeInSeconds, params);
|
|
137
|
+
};
|
|
138
|
+
React.useEffect(function () {
|
|
139
|
+
if (ramda.not(isOpen)) return;
|
|
140
|
+
var initialTime = currentTimestamp > 0 ? currentTimestamp : 0;
|
|
141
|
+
var initialParams = {
|
|
142
|
+
muted: false,
|
|
143
|
+
autoplay: false
|
|
144
|
+
};
|
|
145
|
+
setCurrentPlaybackTime(initialTime);
|
|
146
|
+
setRawInput(formatTime(initialTime, showHours));
|
|
147
|
+
setParams(initialParams);
|
|
148
|
+
generateUrls(initialTime, initialParams);
|
|
149
|
+
}, [isOpen, showHours, currentTimestamp, generateUrls]);
|
|
150
|
+
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
151
|
+
className: "flex w-full flex-col gap-8",
|
|
152
|
+
children: [/*#__PURE__*/jsxRuntime.jsx("div", {
|
|
153
|
+
className: "border-border flex flex-col gap-8 border-b px-6 pb-8",
|
|
154
|
+
children: /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
155
|
+
className: "flex w-full flex-col gap-6",
|
|
156
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
157
|
+
className: "flex flex-col gap-y-2",
|
|
158
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
|
|
159
|
+
variant: "h4",
|
|
160
|
+
children: t("neetoMolecules.shareRecording.configureUrlParameters")
|
|
161
|
+
}), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
|
|
162
|
+
variant: "body3",
|
|
163
|
+
children: t("neetoMolecules.shareRecording.configureUrlParametersDescription")
|
|
164
|
+
})]
|
|
165
|
+
}), /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
166
|
+
className: "flex items-center gap-x-3",
|
|
167
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Label, {
|
|
168
|
+
children: t("neetoMolecules.shareRecording.startVideoAt")
|
|
169
|
+
}), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Input, {
|
|
170
|
+
unlimitedChars: true,
|
|
171
|
+
className: "w-full max-w-32",
|
|
172
|
+
"data-testid": "time-input",
|
|
173
|
+
placeholder: showHours ? "HH:MM:SS" : "MM:SS",
|
|
174
|
+
value: rawInput,
|
|
175
|
+
onBlur: formatAndSetTime,
|
|
176
|
+
onChange: handlePlaybackTimestampChange,
|
|
177
|
+
onKeyDown: handleKeyDown
|
|
178
|
+
})]
|
|
179
|
+
}), enableAutoplayAndMuteFlags && /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
180
|
+
className: "flex flex-col gap-4",
|
|
181
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Switch, {
|
|
182
|
+
checked: muted,
|
|
183
|
+
"data-testid": "muted-checkbox",
|
|
184
|
+
id: "muted",
|
|
185
|
+
label: t("neetoMolecules.shareRecording.muted"),
|
|
186
|
+
name: "muted",
|
|
187
|
+
onCheckedChange: function onCheckedChange(checked) {
|
|
188
|
+
return handleFlagsChange("muted", checked);
|
|
189
|
+
}
|
|
190
|
+
}), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Switch, {
|
|
191
|
+
checked: autoplay,
|
|
192
|
+
"data-testid": "autoplay-checkbox",
|
|
193
|
+
id: "autoplay",
|
|
194
|
+
label: t("neetoMolecules.shareRecording.autoplay"),
|
|
195
|
+
name: "autoplay",
|
|
196
|
+
onCheckedChange: function onCheckedChange(checked) {
|
|
197
|
+
return handleFlagsChange("autoplay", checked);
|
|
198
|
+
}
|
|
199
|
+
})]
|
|
200
|
+
}), /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
201
|
+
className: "mt-2 flex items-center gap-x-3",
|
|
202
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
|
|
203
|
+
"data-testid": "regenerate-url-button",
|
|
204
|
+
label: t("neetoMolecules.shareRecording.regenerateUrl"),
|
|
205
|
+
size: "sm",
|
|
206
|
+
onClick: handleRegenerateUrl
|
|
207
|
+
}), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
|
|
208
|
+
"data-testid": "cancel-button",
|
|
209
|
+
label: t("neetoMolecules.shareRecording.cancel"),
|
|
210
|
+
size: "sm",
|
|
211
|
+
variant: "ghost",
|
|
212
|
+
onClick: onClose
|
|
213
|
+
})]
|
|
214
|
+
})]
|
|
215
|
+
})
|
|
216
|
+
}), /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
217
|
+
className: "flex flex-col gap-6 px-6",
|
|
218
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
219
|
+
className: "flex flex-col gap-y-2",
|
|
220
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
|
|
221
|
+
variant: "h4",
|
|
222
|
+
children: t("neetoMolecules.shareRecording.generatedUrls")
|
|
223
|
+
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
224
|
+
className: "flex flex-col gap-y-3",
|
|
225
|
+
children: shareLinks.map(function (shareLink, index) {
|
|
226
|
+
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
227
|
+
className: "bg-muted flex w-full items-start justify-between gap-2 rounded p-2",
|
|
228
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
|
|
229
|
+
className: "min-w-0 flex-1 break-words",
|
|
230
|
+
variant: "body2",
|
|
231
|
+
children: shareLink
|
|
232
|
+
}), /*#__PURE__*/jsxRuntime.jsx(v2_CopyToClipboardButton, {
|
|
233
|
+
className: "flex-shrink-0",
|
|
234
|
+
value: shareLink,
|
|
235
|
+
variant: "ghost"
|
|
236
|
+
})]
|
|
237
|
+
}, index);
|
|
238
|
+
})
|
|
239
|
+
})]
|
|
240
|
+
}), Preview && /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
241
|
+
className: "flex flex-col gap-y-2",
|
|
242
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
|
|
243
|
+
variant: "h4",
|
|
244
|
+
children: t("neetoMolecules.shareRecording.preview")
|
|
245
|
+
}), /*#__PURE__*/jsxRuntime.jsx(Preview, {
|
|
246
|
+
currentPlaybackTime: currentPlaybackTime
|
|
247
|
+
})]
|
|
248
|
+
})]
|
|
249
|
+
})]
|
|
250
|
+
});
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
var _excluded = ["recordingUrl", "recordingUrls", "totalDuration", "getCurrentTimestamp", "isOpen", "onClose", "isLoading", "preview", "enableAutoplayAndMuteFlags", "size"];
|
|
254
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
255
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
256
|
+
var ShareRecordingPane = function ShareRecordingPane(_ref) {
|
|
257
|
+
var _ref$recordingUrl = _ref.recordingUrl,
|
|
258
|
+
recordingUrl = _ref$recordingUrl === void 0 ? null : _ref$recordingUrl,
|
|
259
|
+
_ref$recordingUrls = _ref.recordingUrls,
|
|
260
|
+
recordingUrls = _ref$recordingUrls === void 0 ? [] : _ref$recordingUrls,
|
|
261
|
+
totalDuration = _ref.totalDuration,
|
|
262
|
+
getCurrentTimestamp = _ref.getCurrentTimestamp,
|
|
263
|
+
isOpen = _ref.isOpen,
|
|
264
|
+
onClose = _ref.onClose,
|
|
265
|
+
_ref$isLoading = _ref.isLoading,
|
|
266
|
+
isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
|
|
267
|
+
preview = _ref.preview,
|
|
268
|
+
_ref$enableAutoplayAn = _ref.enableAutoplayAndMuteFlags,
|
|
269
|
+
enableAutoplayAndMuteFlags = _ref$enableAutoplayAn === void 0 ? false : _ref$enableAutoplayAn,
|
|
270
|
+
_ref$size = _ref.size,
|
|
271
|
+
size = _ref$size === void 0 ? "large" : _ref$size,
|
|
272
|
+
otherProps = _objectWithoutProperties(_ref, _excluded);
|
|
273
|
+
var _useTranslation = reactI18next.useTranslation(),
|
|
274
|
+
t = _useTranslation.t;
|
|
275
|
+
var recordingUrlsToShare = neetoCist.isNotEmpty(recordingUrls) ? recordingUrls : [recordingUrl];
|
|
276
|
+
return /*#__PURE__*/jsxRuntime.jsxs(neetoAtoms.Sheet, _objectSpread(_objectSpread({}, _objectSpread({
|
|
277
|
+
isOpen: isOpen,
|
|
278
|
+
onClose: onClose,
|
|
279
|
+
size: size
|
|
280
|
+
}, otherProps)), {}, {
|
|
281
|
+
"aria-describedby": undefined,
|
|
282
|
+
"data-testid": "share-pane",
|
|
283
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Sheet.Header, {
|
|
284
|
+
children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Sheet.Title, {
|
|
285
|
+
children: t("neetoMolecules.shareRecording.title")
|
|
286
|
+
})
|
|
287
|
+
}), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Sheet.Body, {
|
|
288
|
+
className: "border-border border-t px-0 py-6",
|
|
289
|
+
children: isLoading ? /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Spinner, {
|
|
290
|
+
className: "mx-auto"
|
|
291
|
+
}) : /*#__PURE__*/jsxRuntime.jsx(SharePaneBody, {
|
|
292
|
+
enableAutoplayAndMuteFlags: enableAutoplayAndMuteFlags,
|
|
293
|
+
getCurrentTimestamp: getCurrentTimestamp,
|
|
294
|
+
isOpen: isOpen,
|
|
295
|
+
onClose: onClose,
|
|
296
|
+
preview: preview,
|
|
297
|
+
totalDuration: totalDuration,
|
|
298
|
+
recordingUrls: recordingUrlsToShare
|
|
299
|
+
})
|
|
300
|
+
})]
|
|
301
|
+
}));
|
|
302
|
+
};
|
|
303
|
+
|
|
304
|
+
module.exports = ShareRecordingPane;
|
|
305
|
+
//# sourceMappingURL=ShareRecordingPane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShareRecordingPane.js","sources":["../../../src/v2/components/ShareRecordingPane/constants.js","../../../src/v2/components/ShareRecordingPane/utils.js","../../../src/v2/components/ShareRecordingPane/SharePaneBody.jsx","../../../src/v2/components/ShareRecordingPane/index.jsx"],"sourcesContent":["export const ONE_SECOND = 1;\nexport const ONE_MINUTE = 60 * ONE_SECOND;\nexport const ONE_HOUR = 60 * ONE_MINUTE;\n","import { ONE_HOUR, ONE_MINUTE } from \"./constants\";\n\nexport const padZero = (number, length = 2) => {\n let string = String(number);\n const threshold = Math.pow(10, length - 1);\n\n if (number < threshold) {\n while (String(threshold).length > string.length) {\n string = `0${number}`;\n }\n }\n\n return string;\n};\n\nexport const shouldRenderHoursInput = duration => {\n const hours = Math.floor(duration / ONE_HOUR);\n\n return hours > 0;\n};\n\nexport const formatTime = (timeInSeconds, showHours) => {\n const hours = Math.floor(timeInSeconds / ONE_HOUR);\n const minutes = Math.floor((timeInSeconds % ONE_HOUR) / ONE_MINUTE);\n const seconds = timeInSeconds % ONE_MINUTE;\n\n return showHours\n ? `${padZero(hours)}:${padZero(minutes)}:${padZero(seconds)}`\n : `${padZero(minutes)}:${padZero(seconds)}`;\n};\n\nexport const parseTime = timeString => {\n const parts = timeString\n .split(\":\")\n .map(part => (part === \"\" ? NaN : parseInt(part, 10)));\n if (parts.some(isNaN) || parts.length > 3) {\n return 0;\n }\n\n if (parts.length === 1) {\n return parts[0];\n } else if (parts.length === 2) {\n return parts[0] * ONE_MINUTE + parts[1];\n } else if (parts.length === 3) {\n return parts[0] * ONE_HOUR + parts[1] * ONE_MINUTE + parts[2];\n }\n\n return 0;\n};\n\nexport const validateInput = input => {\n const regex = /^[0-9:]{0,8}$/;\n const colons = (input.match(/:/g) || []).length;\n\n return regex.test(input) && colons <= 2;\n};\n","import { useState, useEffect, useCallback } from \"react\";\n\nimport {\n Label,\n Typography,\n Input,\n Switch,\n Button,\n} from \"@bigbinary/neeto-atoms\";\nimport { buildUrl } from \"neetocommons/v2/utils\";\nimport { assoc, not } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport {\n formatTime,\n parseTime,\n shouldRenderHoursInput,\n validateInput,\n} from \"./utils\";\n\nimport CopyToClipboardButton from \"../CopyToClipboardButton\";\n\nconst SharePaneBody = ({\n recordingUrls,\n totalDuration,\n getCurrentTimestamp,\n isOpen,\n onClose,\n preview: Preview,\n enableAutoplayAndMuteFlags,\n}) => {\n const { t } = useTranslation();\n\n const currentTimestamp = getCurrentTimestamp();\n\n const [shareLinks, setShareLinks] = useState([]);\n const [currentPlaybackTime, setCurrentPlaybackTime] =\n useState(currentTimestamp);\n\n const [params, setParams] = useState({\n muted: false,\n autoplay: false,\n });\n\n const { muted, autoplay } = params;\n\n const [rawInput, setRawInput] = useState(\"\");\n\n const showHours = shouldRenderHoursInput(totalDuration);\n\n const handlePlaybackTimestampChange = e => {\n const input = e.target.value;\n if (validateInput(input)) {\n setRawInput(input);\n }\n };\n\n const handleFlagsChange = (key, value) => setParams(assoc(key, value));\n\n const formatAndSetTime = () => {\n let timeInSeconds = parseTime(rawInput);\n if (timeInSeconds > totalDuration) {\n timeInSeconds = totalDuration;\n }\n setRawInput(formatTime(timeInSeconds, showHours));\n };\n\n const handleKeyDown = e => {\n if (e.key !== \"Enter\") return;\n formatAndSetTime();\n };\n\n const generateUrls = useCallback(\n (timeInSeconds, urlParams) => {\n const playbackUrls = recordingUrls.map(recordingUrl =>\n buildUrl(recordingUrl, {\n time: timeInSeconds,\n muted: urlParams.muted ? 1 : undefined,\n autoplay: urlParams.autoplay ? 1 : undefined,\n })\n );\n setShareLinks(playbackUrls);\n },\n [recordingUrls]\n );\n\n const handleRegenerateUrl = () => {\n let timeInSeconds = parseTime(rawInput);\n if (timeInSeconds > totalDuration) {\n timeInSeconds = totalDuration;\n }\n setCurrentPlaybackTime(timeInSeconds);\n generateUrls(timeInSeconds, params);\n };\n\n useEffect(() => {\n if (not(isOpen)) return;\n\n const initialTime = currentTimestamp > 0 ? currentTimestamp : 0;\n const initialParams = { muted: false, autoplay: false };\n\n setCurrentPlaybackTime(initialTime);\n setRawInput(formatTime(initialTime, showHours));\n setParams(initialParams);\n generateUrls(initialTime, initialParams);\n }, [isOpen, showHours, currentTimestamp, generateUrls]);\n\n return (\n <div className=\"flex w-full flex-col gap-8\">\n <div className=\"border-border flex flex-col gap-8 border-b px-6 pb-8\">\n <div className=\"flex w-full flex-col gap-6\">\n <div className=\"flex flex-col gap-y-2\">\n <Typography variant=\"h4\">\n {t(\"neetoMolecules.shareRecording.configureUrlParameters\")}\n </Typography>\n <Typography variant=\"body3\">\n {t(\n \"neetoMolecules.shareRecording.configureUrlParametersDescription\"\n )}\n </Typography>\n </div>\n <div className=\"flex items-center gap-x-3\">\n <Label>{t(\"neetoMolecules.shareRecording.startVideoAt\")}</Label>\n <Input\n unlimitedChars\n className=\"w-full max-w-32\"\n data-testid=\"time-input\"\n placeholder={showHours ? \"HH:MM:SS\" : \"MM:SS\"}\n value={rawInput}\n onBlur={formatAndSetTime}\n onChange={handlePlaybackTimestampChange}\n onKeyDown={handleKeyDown}\n />\n </div>\n {enableAutoplayAndMuteFlags && (\n <div className=\"flex flex-col gap-4\">\n <Switch\n checked={muted}\n data-testid=\"muted-checkbox\"\n id=\"muted\"\n label={t(\"neetoMolecules.shareRecording.muted\")}\n name=\"muted\"\n onCheckedChange={checked => handleFlagsChange(\"muted\", checked)}\n />\n <Switch\n checked={autoplay}\n data-testid=\"autoplay-checkbox\"\n id=\"autoplay\"\n label={t(\"neetoMolecules.shareRecording.autoplay\")}\n name=\"autoplay\"\n onCheckedChange={checked =>\n handleFlagsChange(\"autoplay\", checked)\n }\n />\n </div>\n )}\n <div className=\"mt-2 flex items-center gap-x-3\">\n <Button\n data-testid=\"regenerate-url-button\"\n label={t(\"neetoMolecules.shareRecording.regenerateUrl\")}\n size=\"sm\"\n onClick={handleRegenerateUrl}\n />\n <Button\n data-testid=\"cancel-button\"\n label={t(\"neetoMolecules.shareRecording.cancel\")}\n size=\"sm\"\n variant=\"ghost\"\n onClick={onClose}\n />\n </div>\n </div>\n </div>\n <div className=\"flex flex-col gap-6 px-6\">\n <div className=\"flex flex-col gap-y-2\">\n <Typography variant=\"h4\">\n {t(\"neetoMolecules.shareRecording.generatedUrls\")}\n </Typography>\n <div className=\"flex flex-col gap-y-3\">\n {shareLinks.map((shareLink, index) => (\n <div\n className=\"bg-muted flex w-full items-start justify-between gap-2 rounded p-2\"\n key={index}\n >\n <Typography\n className=\"min-w-0 flex-1 break-words\"\n variant=\"body2\"\n >\n {shareLink}\n </Typography>\n <CopyToClipboardButton\n className=\"flex-shrink-0\"\n value={shareLink}\n variant=\"ghost\"\n />\n </div>\n ))}\n </div>\n </div>\n {Preview && (\n <div className=\"flex flex-col gap-y-2\">\n <Typography variant=\"h4\">\n {t(\"neetoMolecules.shareRecording.preview\")}\n </Typography>\n <Preview {...{ currentPlaybackTime }} />\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default SharePaneBody;\n","import { Sheet, Spinner } from \"@bigbinary/neeto-atoms\";\nimport { isNotEmpty } from \"neetocist\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport SharePaneBody from \"./SharePaneBody\";\n\nconst ShareRecordingPane = ({\n recordingUrl = null,\n recordingUrls = [],\n totalDuration,\n getCurrentTimestamp,\n isOpen,\n onClose,\n isLoading = false,\n preview,\n enableAutoplayAndMuteFlags = false,\n size = \"large\",\n ...otherProps\n}) => {\n const { t } = useTranslation();\n\n const recordingUrlsToShare = isNotEmpty(recordingUrls)\n ? recordingUrls\n : [recordingUrl];\n\n return (\n <Sheet\n {...{ isOpen, onClose, size, ...otherProps }}\n aria-describedby={undefined}\n data-testid=\"share-pane\"\n >\n <Sheet.Header>\n <Sheet.Title>{t(\"neetoMolecules.shareRecording.title\")}</Sheet.Title>\n </Sheet.Header>\n <Sheet.Body className=\"border-border border-t px-0 py-6\">\n {isLoading ? (\n <Spinner className=\"mx-auto\" />\n ) : (\n <SharePaneBody\n {...{\n enableAutoplayAndMuteFlags,\n getCurrentTimestamp,\n isOpen,\n onClose,\n preview,\n totalDuration,\n }}\n recordingUrls={recordingUrlsToShare}\n />\n )}\n </Sheet.Body>\n </Sheet>\n );\n};\n\nShareRecordingPane.propTypes = {\n /**\n * Recording URL used for building the share link.\n */\n recordingUrl: PropTypes.string,\n /**\n * Recording URLs used for building the share link.\n */\n recordingUrls: PropTypes.array,\n /**\n * Total duration of the content being shared.\n */\n totalDuration: PropTypes.number.isRequired,\n /**\n * A function that returns current playback time of the recorded content in seconds.\n */\n getCurrentTimestamp: PropTypes.func.isRequired,\n /**\n * Boolean indicating whether the pane is open or not.\n */\n isOpen: PropTypes.bool.isRequired,\n /**\n * Function to close the pane.\n */\n onClose: PropTypes.func.isRequired,\n /**\n * Boolean indicating whether content is loading or not.\n */\n isLoading: PropTypes.bool,\n /**\n * Component to render as a preview of the recording.\n */\n preview: PropTypes.elementType,\n /**\n * Size of the pane.\n */\n size: PropTypes.oneOf([\"extraLarge\", \"large\", \"small\"]),\n};\n\nexport default ShareRecordingPane;\n"],"names":["ONE_SECOND","ONE_MINUTE","ONE_HOUR","padZero","number","length","arguments","undefined","string","String","threshold","Math","pow","concat","shouldRenderHoursInput","duration","hours","floor","formatTime","timeInSeconds","showHours","minutes","seconds","parseTime","timeString","parts","split","map","part","NaN","parseInt","some","isNaN","validateInput","input","regex","colons","match","test","SharePaneBody","_ref","recordingUrls","totalDuration","getCurrentTimestamp","isOpen","onClose","Preview","preview","enableAutoplayAndMuteFlags","_useTranslation","useTranslation","t","currentTimestamp","_useState","useState","_useState2","_slicedToArray","shareLinks","setShareLinks","_useState3","_useState4","currentPlaybackTime","setCurrentPlaybackTime","_useState5","muted","autoplay","_useState6","params","setParams","_useState7","_useState8","rawInput","setRawInput","handlePlaybackTimestampChange","e","target","value","handleFlagsChange","key","assoc","formatAndSetTime","handleKeyDown","generateUrls","useCallback","urlParams","playbackUrls","recordingUrl","buildUrl","time","handleRegenerateUrl","useEffect","not","initialTime","initialParams","_jsxs","className","children","_jsx","Typography","variant","Label","Input","unlimitedChars","placeholder","onBlur","onChange","onKeyDown","Switch","checked","id","label","name","onCheckedChange","Button","size","onClick","shareLink","index","CopyToClipboardButton","ShareRecordingPane","_ref$recordingUrl","_ref$recordingUrls","_ref$isLoading","isLoading","_ref$enableAutoplayAn","_ref$size","otherProps","_objectWithoutProperties","_excluded","recordingUrlsToShare","isNotEmpty","Sheet","_objectSpread","Header","Title","Body","Spinner"],"mappings":"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"}
|