@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.
Files changed (74) hide show
  1. package/dist/PhoneNumber.js +2 -2
  2. package/dist/SessionEnvironment.js +1 -1
  3. package/dist/arrow-left-B-s28MD1.js +18 -0
  4. package/dist/arrow-left-B-s28MD1.js.map +1 -0
  5. package/dist/cjs/PhoneNumber.js +1 -1
  6. package/dist/cjs/SessionEnvironment.js +1 -1
  7. package/dist/cjs/arrow-left-gtCwH31u.js +20 -0
  8. package/dist/cjs/arrow-left-gtCwH31u.js.map +1 -0
  9. package/dist/cjs/{phone-number-DIIlhFGA.js → phone-number-D8DlSqHJ.js} +6 -5
  10. package/dist/cjs/phone-number-D8DlSqHJ.js.map +1 -0
  11. package/dist/cjs/{phone-number-Bza7WGZm.js → phone-number-DMH57syY.js} +6 -5
  12. package/dist/cjs/phone-number-DMH57syY.js.map +1 -0
  13. package/dist/cjs/v2/ImageWithFallback.js +51 -0
  14. package/dist/cjs/v2/ImageWithFallback.js.map +1 -0
  15. package/dist/cjs/v2/PhoneNumber.js +1 -1
  16. package/dist/cjs/v2/ProductEmbed.js +4 -17
  17. package/dist/cjs/v2/ProductEmbed.js.map +1 -1
  18. package/dist/cjs/v2/SessionEnvironment.js +1 -1
  19. package/dist/cjs/v2/ShareRecordingPane.js +305 -0
  20. package/dist/cjs/v2/ShareRecordingPane.js.map +1 -0
  21. package/dist/cjs/v2/ShareViaEmail.js +387 -0
  22. package/dist/cjs/v2/ShareViaEmail.js.map +1 -0
  23. package/dist/cjs/v2/StatusDropdown.js +161 -0
  24. package/dist/cjs/v2/StatusDropdown.js.map +1 -0
  25. package/dist/cjs/v2/SubscriptionNotificationsContainer.js +72 -0
  26. package/dist/cjs/v2/SubscriptionNotificationsContainer.js.map +1 -0
  27. package/dist/cjs/v2/SubscriptionUpgradeRequestModal.js +90 -0
  28. package/dist/cjs/v2/SubscriptionUpgradeRequestModal.js.map +1 -0
  29. package/dist/cjs/v2/SuffixedInput.js +130 -0
  30. package/dist/cjs/v2/SuffixedInput.js.map +1 -0
  31. package/dist/cjs/v2/TimezoneMismatchModal.js +136 -0
  32. package/dist/cjs/v2/TimezoneMismatchModal.js.map +1 -0
  33. package/dist/cjs/v2/VersionHistory.js +210 -0
  34. package/dist/cjs/v2/VersionHistory.js.map +1 -0
  35. package/dist/{phone-number-B3OcwVZM.js → phone-number-CJj2wD9_.js} +6 -5
  36. package/dist/phone-number-CJj2wD9_.js.map +1 -0
  37. package/dist/{phone-number-CGZtDB_n.js → phone-number-D9soCpCv.js} +6 -5
  38. package/dist/phone-number-D9soCpCv.js.map +1 -0
  39. package/dist/v2/ImageWithFallback.js +49 -0
  40. package/dist/v2/ImageWithFallback.js.map +1 -0
  41. package/dist/v2/PhoneNumber.js +2 -2
  42. package/dist/v2/ProductEmbed.js +2 -15
  43. package/dist/v2/ProductEmbed.js.map +1 -1
  44. package/dist/v2/SessionEnvironment.js +1 -1
  45. package/dist/v2/ShareRecordingPane.js +303 -0
  46. package/dist/v2/ShareRecordingPane.js.map +1 -0
  47. package/dist/v2/ShareViaEmail.js +366 -0
  48. package/dist/v2/ShareViaEmail.js.map +1 -0
  49. package/dist/v2/StatusDropdown.js +159 -0
  50. package/dist/v2/StatusDropdown.js.map +1 -0
  51. package/dist/v2/SubscriptionNotificationsContainer.js +70 -0
  52. package/dist/v2/SubscriptionNotificationsContainer.js.map +1 -0
  53. package/dist/v2/SubscriptionUpgradeRequestModal.js +88 -0
  54. package/dist/v2/SubscriptionUpgradeRequestModal.js.map +1 -0
  55. package/dist/v2/SuffixedInput.js +128 -0
  56. package/dist/v2/SuffixedInput.js.map +1 -0
  57. package/dist/v2/TimezoneMismatchModal.js +134 -0
  58. package/dist/v2/TimezoneMismatchModal.js.map +1 -0
  59. package/dist/v2/VersionHistory.js +208 -0
  60. package/dist/v2/VersionHistory.js.map +1 -0
  61. package/package.json +1 -1
  62. package/types/v2/ImageWithFallback.d.ts +9 -0
  63. package/types/v2/ShareRecordingPane.d.ts +16 -0
  64. package/types/v2/ShareViaEmail.d.ts +34 -0
  65. package/types/v2/StatusDropdown.d.ts +16 -0
  66. package/types/v2/SubscriptionNotificationsContainer.d.ts +5 -0
  67. package/types/v2/SubscriptionUpgradeRequestModal.d.ts +8 -0
  68. package/types/v2/SuffixedInput.d.ts +16 -0
  69. package/types/v2/TimezoneMismatchModal.d.ts +8 -0
  70. package/types/v2/VersionHistory.d.ts +44 -0
  71. package/dist/cjs/phone-number-Bza7WGZm.js.map +0 -1
  72. package/dist/cjs/phone-number-DIIlhFGA.js.map +0 -1
  73. package/dist/phone-number-B3OcwVZM.js.map +0 -1
  74. 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-Bza7WGZm.js');
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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"}