@bigbinary/neeto-molecules 1.16.1 → 1.16.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.
@@ -0,0 +1,189 @@
1
+ import { _ as _extends } from './extends-093996c9.js';
2
+ import { _ as _defineProperty } from './defineProperty-549061a7.js';
3
+ import { _ as _objectWithoutProperties } from './objectWithoutProperties-a0edb288.js';
4
+ import React__default, { useState, useEffect } from 'react';
5
+ import { Tooltip, Typography, Checkbox, Input, Pane, Spinner } from '@bigbinary/neetoui';
6
+ import { useTranslation } from 'react-i18next';
7
+ import { _ as _slicedToArray } from './slicedToArray-b4278ecd.js';
8
+ import { buildUrl } from '@bigbinary/neeto-commons-frontend/utils';
9
+ import { not } from 'ramda';
10
+ import CopyToClipboardButton from './CopyToClipboardButton.js';
11
+ import 'classnames';
12
+ import '@bigbinary/neeto-commons-frontend/utils/general';
13
+ import '@bigbinary/neeto-icons';
14
+ import './inject-css-c86de496.js';
15
+
16
+ var ONE_SECOND = 1;
17
+ var ONE_MINUTE = 60 * ONE_SECOND;
18
+ var ONE_HOUR = 60 * ONE_MINUTE;
19
+
20
+ var padZero = function padZero(number) {
21
+ var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
22
+ var string = String(number);
23
+ var threshold = Math.pow(10, length - 1);
24
+ if (number < threshold) {
25
+ while (String(threshold).length > string.length) {
26
+ string = "0".concat(number);
27
+ }
28
+ }
29
+ return string;
30
+ };
31
+ var shouldRenderHoursInput = function shouldRenderHoursInput(duration) {
32
+ var hours = Math.floor(duration / ONE_HOUR);
33
+ return hours > 0;
34
+ };
35
+ var formatTime = function formatTime(timeInSeconds, showHours) {
36
+ var hours = Math.floor(timeInSeconds / ONE_HOUR);
37
+ var minutes = Math.floor(timeInSeconds % ONE_HOUR / ONE_MINUTE);
38
+ var seconds = timeInSeconds % ONE_MINUTE;
39
+ return showHours ? "".concat(padZero(hours), ":").concat(padZero(minutes), ":").concat(padZero(seconds)) : "".concat(padZero(minutes), ":").concat(padZero(seconds));
40
+ };
41
+ var parseTime = function parseTime(timeString) {
42
+ var parts = timeString.split(":").map(function (part) {
43
+ return part === "" ? NaN : parseInt(part, 10);
44
+ });
45
+ if (parts.some(isNaN) || parts.length > 3) {
46
+ return 0;
47
+ }
48
+ if (parts.length === 1) {
49
+ return parts[0];
50
+ } else if (parts.length === 2) {
51
+ return parts[0] * ONE_MINUTE + parts[1];
52
+ } else if (parts.length === 3) {
53
+ return parts[0] * ONE_HOUR + parts[1] * ONE_MINUTE + parts[2];
54
+ }
55
+ return 0;
56
+ };
57
+ var validateInput = function validateInput(input) {
58
+ var regex = /^[0-9:]{0,8}$/;
59
+ var colons = (input.match(/:/g) || []).length;
60
+ return regex.test(input) && colons <= 2;
61
+ };
62
+
63
+ function ownKeys$1(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; }
64
+ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
65
+ var SharePaneBody = function SharePaneBody(_ref) {
66
+ var recordingUrl = _ref.recordingUrl,
67
+ totalDuration = _ref.totalDuration,
68
+ getCurrentTimestamp = _ref.getCurrentTimestamp,
69
+ isOpen = _ref.isOpen;
70
+ var _useTranslation = useTranslation(),
71
+ t = _useTranslation.t;
72
+ var currentTimestamp = getCurrentTimestamp();
73
+ var _useState = useState(""),
74
+ _useState2 = _slicedToArray(_useState, 2),
75
+ shareLink = _useState2[0],
76
+ setShareLink = _useState2[1];
77
+ var _useState3 = useState(currentTimestamp),
78
+ _useState4 = _slicedToArray(_useState3, 2),
79
+ currentPlaybackTime = _useState4[0],
80
+ setCurrentPlaybackTime = _useState4[1];
81
+ var _useState5 = useState(""),
82
+ _useState6 = _slicedToArray(_useState5, 2),
83
+ rawInput = _useState6[0],
84
+ setRawInput = _useState6[1];
85
+ var _useState7 = useState(currentTimestamp > 0),
86
+ _useState8 = _slicedToArray(_useState7, 2),
87
+ isPlaybackTimeCheckboxChecked = _useState8[0],
88
+ setIsPlaybackTimeCheckboxChecked = _useState8[1];
89
+ var showHours = shouldRenderHoursInput(totalDuration);
90
+ var handlePlaybackTimestampChange = function handlePlaybackTimestampChange(e) {
91
+ var input = e.target.value;
92
+ if (validateInput(input)) {
93
+ setRawInput(input);
94
+ }
95
+ };
96
+ var formatAndSetTime = function formatAndSetTime() {
97
+ var timeInSeconds = parseTime(rawInput);
98
+ if (timeInSeconds > totalDuration) {
99
+ timeInSeconds = totalDuration;
100
+ }
101
+ setCurrentPlaybackTime(timeInSeconds);
102
+ setRawInput(formatTime(timeInSeconds, showHours));
103
+ };
104
+ var handleKeyDown = function handleKeyDown(e) {
105
+ if (!(e.key === "Enter")) return;
106
+ formatAndSetTime();
107
+ };
108
+ useEffect(function () {
109
+ if (not(isOpen)) return;
110
+ setIsPlaybackTimeCheckboxChecked(currentTimestamp > 0);
111
+ setCurrentPlaybackTime(currentTimestamp > 0 ? currentTimestamp : 0);
112
+ setRawInput(formatTime(currentTimestamp > 0 ? currentTimestamp : 0, showHours));
113
+ }, [isOpen, showHours, currentTimestamp]);
114
+ useEffect(function () {
115
+ var playbackUrl = buildUrl(recordingUrl, _objectSpread$1({}, isPlaybackTimeCheckboxChecked && currentPlaybackTime > 0 && {
116
+ time: currentPlaybackTime
117
+ }));
118
+ setShareLink(playbackUrl);
119
+ }, [recordingUrl, isPlaybackTimeCheckboxChecked, currentPlaybackTime]);
120
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
121
+ className: "neeto-ui-bg-gray-100 neeto-ui-rounded-lg mb-3 flex w-full items-center justify-between p-2"
122
+ }, /*#__PURE__*/React__default.createElement(Tooltip, {
123
+ content: shareLink
124
+ }, /*#__PURE__*/React__default.createElement(Typography, {
125
+ className: "truncate",
126
+ style: "body2"
127
+ }, shareLink)), /*#__PURE__*/React__default.createElement(CopyToClipboardButton, {
128
+ className: "flex-shrink-0",
129
+ style: "secondary",
130
+ value: shareLink
131
+ })), /*#__PURE__*/React__default.createElement("div", {
132
+ className: "flex items-center gap-x-2"
133
+ }, /*#__PURE__*/React__default.createElement(Checkbox, {
134
+ checked: isPlaybackTimeCheckboxChecked,
135
+ className: "grow-0",
136
+ "data-cy": "time-checkbox",
137
+ label: t("neetoMolecules.shareRecording.checkboxLabel"),
138
+ onChange: function onChange(_ref2) {
139
+ var checked = _ref2.target.checked;
140
+ return setIsPlaybackTimeCheckboxChecked(checked);
141
+ }
142
+ }), /*#__PURE__*/React__default.createElement(Input, {
143
+ className: "w-40",
144
+ "data-cy": "time-input",
145
+ disabled: not(isPlaybackTimeCheckboxChecked),
146
+ placeholder: showHours ? "HH:MM:SS" : "MM:SS",
147
+ value: rawInput,
148
+ onBlur: formatAndSetTime,
149
+ onChange: handlePlaybackTimestampChange,
150
+ onKeyDown: handleKeyDown
151
+ })));
152
+ };
153
+
154
+ var _excluded = ["recordingUrl", "totalDuration", "getCurrentTimestamp", "isOpen", "onClose", "isLoading"];
155
+ 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; }
156
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).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; }
157
+ var ShareRecordingPane = function ShareRecordingPane(_ref) {
158
+ var recordingUrl = _ref.recordingUrl,
159
+ totalDuration = _ref.totalDuration,
160
+ getCurrentTimestamp = _ref.getCurrentTimestamp,
161
+ isOpen = _ref.isOpen,
162
+ onClose = _ref.onClose,
163
+ _ref$isLoading = _ref.isLoading,
164
+ isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
165
+ otherProps = _objectWithoutProperties(_ref, _excluded);
166
+ var _useTranslation = useTranslation(),
167
+ t = _useTranslation.t;
168
+ return /*#__PURE__*/React__default.createElement(Pane, _extends({}, _objectSpread({
169
+ isOpen: isOpen,
170
+ onClose: onClose
171
+ }, otherProps), {
172
+ "data-cy": "share-pane",
173
+ size: "large"
174
+ }), /*#__PURE__*/React__default.createElement(Pane.Header, null, /*#__PURE__*/React__default.createElement(Typography, {
175
+ style: "h2"
176
+ }, t("neetoMolecules.shareRecording.title"))), /*#__PURE__*/React__default.createElement(Pane.Body, {
177
+ className: "flex flex-col space-y-2"
178
+ }, isLoading ? /*#__PURE__*/React__default.createElement(Spinner, {
179
+ className: "mx-auto"
180
+ }) : /*#__PURE__*/React__default.createElement(SharePaneBody, {
181
+ getCurrentTimestamp: getCurrentTimestamp,
182
+ isOpen: isOpen,
183
+ recordingUrl: recordingUrl,
184
+ totalDuration: totalDuration
185
+ })));
186
+ };
187
+
188
+ export { ShareRecordingPane as default };
189
+ //# sourceMappingURL=ShareRecordingPane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShareRecordingPane.js","sources":["../src/components/ShareRecordingPane/constants.js","../src/components/ShareRecordingPane/utils.js","../src/components/ShareRecordingPane/SharePaneBody.jsx","../src/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 React, { useState, useEffect } from \"react\";\n\nimport { buildUrl } from \"neetocommons/utils\";\nimport { Typography, Input, Checkbox, Tooltip } from \"neetoui\";\nimport { not } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport CopyToClipboardButton from \"components/CopyToClipboardButton\";\n\nimport {\n formatTime,\n parseTime,\n shouldRenderHoursInput,\n validateInput,\n} from \"./utils\";\n\nconst SharePaneBody = ({\n recordingUrl,\n totalDuration,\n getCurrentTimestamp,\n isOpen,\n}) => {\n const { t } = useTranslation();\n const currentTimestamp = getCurrentTimestamp();\n\n const [shareLink, setShareLink] = useState(\"\");\n const [currentPlaybackTime, setCurrentPlaybackTime] =\n useState(currentTimestamp);\n const [rawInput, setRawInput] = useState(\"\");\n\n const [isPlaybackTimeCheckboxChecked, setIsPlaybackTimeCheckboxChecked] =\n useState(currentTimestamp > 0);\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 formatAndSetTime = () => {\n let timeInSeconds = parseTime(rawInput);\n if (timeInSeconds > totalDuration) {\n timeInSeconds = totalDuration;\n }\n setCurrentPlaybackTime(timeInSeconds);\n setRawInput(formatTime(timeInSeconds, showHours));\n };\n\n const handleKeyDown = e => {\n if (!(e.key === \"Enter\")) return;\n formatAndSetTime();\n };\n\n useEffect(() => {\n if (not(isOpen)) return;\n\n setIsPlaybackTimeCheckboxChecked(currentTimestamp > 0);\n setCurrentPlaybackTime(currentTimestamp > 0 ? currentTimestamp : 0);\n setRawInput(\n formatTime(currentTimestamp > 0 ? currentTimestamp : 0, showHours)\n );\n }, [isOpen, showHours, currentTimestamp]);\n\n useEffect(() => {\n const playbackUrl = buildUrl(recordingUrl, {\n ...(isPlaybackTimeCheckboxChecked &&\n currentPlaybackTime > 0 && { time: currentPlaybackTime }),\n });\n\n setShareLink(playbackUrl);\n }, [recordingUrl, isPlaybackTimeCheckboxChecked, currentPlaybackTime]);\n\n return (\n <>\n <div className=\"neeto-ui-bg-gray-100 neeto-ui-rounded-lg mb-3 flex w-full items-center justify-between p-2\">\n <Tooltip content={shareLink}>\n <Typography className=\"truncate\" style=\"body2\">\n {shareLink}\n </Typography>\n </Tooltip>\n <CopyToClipboardButton\n className=\"flex-shrink-0\"\n style=\"secondary\"\n value={shareLink}\n />\n </div>\n <div className=\"flex items-center gap-x-2\">\n <Checkbox\n checked={isPlaybackTimeCheckboxChecked}\n className=\"grow-0\"\n data-cy=\"time-checkbox\"\n label={t(\"neetoMolecules.shareRecording.checkboxLabel\")}\n onChange={({ target: { checked } }) =>\n setIsPlaybackTimeCheckboxChecked(checked)\n }\n />\n <Input\n className=\"w-40\"\n data-cy=\"time-input\"\n disabled={not(isPlaybackTimeCheckboxChecked)}\n placeholder={showHours ? \"HH:MM:SS\" : \"MM:SS\"}\n value={rawInput}\n onBlur={formatAndSetTime}\n onChange={handlePlaybackTimestampChange}\n onKeyDown={handleKeyDown}\n />\n </div>\n </>\n );\n};\n\nexport default SharePaneBody;\n","/* eslint-disable @bigbinary/neeto/no-dumb-components-with-use-translation */\nimport React from \"react\";\n\nimport { Pane, Typography, Spinner } from \"neetoui\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport SharePaneBody from \"./SharePaneBody\";\n\nconst ShareRecordingPane = ({\n recordingUrl,\n totalDuration,\n getCurrentTimestamp,\n isOpen,\n onClose,\n isLoading = false,\n ...otherProps\n}) => {\n const { t } = useTranslation();\n\n return (\n <Pane\n {...{ isOpen, onClose, ...otherProps }}\n data-cy=\"share-pane\"\n size=\"large\"\n >\n <Pane.Header>\n <Typography style=\"h2\">\n {t(\"neetoMolecules.shareRecording.title\")}\n </Typography>\n </Pane.Header>\n <Pane.Body className=\"flex flex-col space-y-2\">\n {isLoading ? (\n <Spinner className=\"mx-auto\" />\n ) : (\n <SharePaneBody\n {...{ getCurrentTimestamp, isOpen, recordingUrl, totalDuration }}\n />\n )}\n </Pane.Body>\n </Pane>\n );\n};\n\nShareRecordingPane.propTypes = {\n /**\n * Recording URL used for building the share link.\n */\n recordingUrl: PropTypes.string.isRequired,\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\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","recordingUrl","totalDuration","getCurrentTimestamp","isOpen","_useTranslation","useTranslation","t","currentTimestamp","_useState","useState","_useState2","_slicedToArray","shareLink","setShareLink","_useState3","_useState4","currentPlaybackTime","setCurrentPlaybackTime","_useState5","_useState6","rawInput","setRawInput","_useState7","_useState8","isPlaybackTimeCheckboxChecked","setIsPlaybackTimeCheckboxChecked","handlePlaybackTimestampChange","e","target","value","formatAndSetTime","handleKeyDown","key","useEffect","not","playbackUrl","buildUrl","_objectSpread","time","React","createElement","Fragment","className","Tooltip","content","Typography","style","CopyToClipboardButton","Checkbox","checked","label","onChange","_ref2","Input","disabled","placeholder","onBlur","onKeyDown","ShareRecordingPane","onClose","_ref$isLoading","isLoading","otherProps","_objectWithoutProperties","_excluded","Pane","_extends","size","Header","Body","Spinner"],"mappings":"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"}
@@ -0,0 +1,195 @@
1
+ 'use strict';
2
+
3
+ var _extends = require('./extends-1b35a664.js');
4
+ var defineProperty = require('./defineProperty-886ed289.js');
5
+ var objectWithoutProperties = require('./objectWithoutProperties-2fed2d7d.js');
6
+ var React = require('react');
7
+ var neetoui = require('@bigbinary/neetoui');
8
+ var reactI18next = require('react-i18next');
9
+ var slicedToArray = require('./slicedToArray-f320d9e7.js');
10
+ var utils = require('@bigbinary/neeto-commons-frontend/utils');
11
+ var ramda = require('ramda');
12
+ var CopyToClipboardButton = require('./CopyToClipboardButton.js');
13
+ require('classnames');
14
+ require('@bigbinary/neeto-commons-frontend/utils/general');
15
+ require('@bigbinary/neeto-icons');
16
+ require('./inject-css-80a5faa3.js');
17
+
18
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
19
+
20
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
21
+
22
+ var ONE_SECOND = 1;
23
+ var ONE_MINUTE = 60 * ONE_SECOND;
24
+ var ONE_HOUR = 60 * ONE_MINUTE;
25
+
26
+ var padZero = function padZero(number) {
27
+ var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
28
+ var string = String(number);
29
+ var threshold = Math.pow(10, length - 1);
30
+ if (number < threshold) {
31
+ while (String(threshold).length > string.length) {
32
+ string = "0".concat(number);
33
+ }
34
+ }
35
+ return string;
36
+ };
37
+ var shouldRenderHoursInput = function shouldRenderHoursInput(duration) {
38
+ var hours = Math.floor(duration / ONE_HOUR);
39
+ return hours > 0;
40
+ };
41
+ var formatTime = function formatTime(timeInSeconds, showHours) {
42
+ var hours = Math.floor(timeInSeconds / ONE_HOUR);
43
+ var minutes = Math.floor(timeInSeconds % ONE_HOUR / ONE_MINUTE);
44
+ var seconds = timeInSeconds % ONE_MINUTE;
45
+ return showHours ? "".concat(padZero(hours), ":").concat(padZero(minutes), ":").concat(padZero(seconds)) : "".concat(padZero(minutes), ":").concat(padZero(seconds));
46
+ };
47
+ var parseTime = function parseTime(timeString) {
48
+ var parts = timeString.split(":").map(function (part) {
49
+ return part === "" ? NaN : parseInt(part, 10);
50
+ });
51
+ if (parts.some(isNaN) || parts.length > 3) {
52
+ return 0;
53
+ }
54
+ if (parts.length === 1) {
55
+ return parts[0];
56
+ } else if (parts.length === 2) {
57
+ return parts[0] * ONE_MINUTE + parts[1];
58
+ } else if (parts.length === 3) {
59
+ return parts[0] * ONE_HOUR + parts[1] * ONE_MINUTE + parts[2];
60
+ }
61
+ return 0;
62
+ };
63
+ var validateInput = function validateInput(input) {
64
+ var regex = /^[0-9:]{0,8}$/;
65
+ var colons = (input.match(/:/g) || []).length;
66
+ return regex.test(input) && colons <= 2;
67
+ };
68
+
69
+ function ownKeys$1(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; }
70
+ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { defineProperty._defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
71
+ var SharePaneBody = function SharePaneBody(_ref) {
72
+ var recordingUrl = _ref.recordingUrl,
73
+ totalDuration = _ref.totalDuration,
74
+ getCurrentTimestamp = _ref.getCurrentTimestamp,
75
+ isOpen = _ref.isOpen;
76
+ var _useTranslation = reactI18next.useTranslation(),
77
+ t = _useTranslation.t;
78
+ var currentTimestamp = getCurrentTimestamp();
79
+ var _useState = React.useState(""),
80
+ _useState2 = slicedToArray._slicedToArray(_useState, 2),
81
+ shareLink = _useState2[0],
82
+ setShareLink = _useState2[1];
83
+ var _useState3 = React.useState(currentTimestamp),
84
+ _useState4 = slicedToArray._slicedToArray(_useState3, 2),
85
+ currentPlaybackTime = _useState4[0],
86
+ setCurrentPlaybackTime = _useState4[1];
87
+ var _useState5 = React.useState(""),
88
+ _useState6 = slicedToArray._slicedToArray(_useState5, 2),
89
+ rawInput = _useState6[0],
90
+ setRawInput = _useState6[1];
91
+ var _useState7 = React.useState(currentTimestamp > 0),
92
+ _useState8 = slicedToArray._slicedToArray(_useState7, 2),
93
+ isPlaybackTimeCheckboxChecked = _useState8[0],
94
+ setIsPlaybackTimeCheckboxChecked = _useState8[1];
95
+ var showHours = shouldRenderHoursInput(totalDuration);
96
+ var handlePlaybackTimestampChange = function handlePlaybackTimestampChange(e) {
97
+ var input = e.target.value;
98
+ if (validateInput(input)) {
99
+ setRawInput(input);
100
+ }
101
+ };
102
+ var formatAndSetTime = function formatAndSetTime() {
103
+ var timeInSeconds = parseTime(rawInput);
104
+ if (timeInSeconds > totalDuration) {
105
+ timeInSeconds = totalDuration;
106
+ }
107
+ setCurrentPlaybackTime(timeInSeconds);
108
+ setRawInput(formatTime(timeInSeconds, showHours));
109
+ };
110
+ var handleKeyDown = function handleKeyDown(e) {
111
+ if (!(e.key === "Enter")) return;
112
+ formatAndSetTime();
113
+ };
114
+ React.useEffect(function () {
115
+ if (ramda.not(isOpen)) return;
116
+ setIsPlaybackTimeCheckboxChecked(currentTimestamp > 0);
117
+ setCurrentPlaybackTime(currentTimestamp > 0 ? currentTimestamp : 0);
118
+ setRawInput(formatTime(currentTimestamp > 0 ? currentTimestamp : 0, showHours));
119
+ }, [isOpen, showHours, currentTimestamp]);
120
+ React.useEffect(function () {
121
+ var playbackUrl = utils.buildUrl(recordingUrl, _objectSpread$1({}, isPlaybackTimeCheckboxChecked && currentPlaybackTime > 0 && {
122
+ time: currentPlaybackTime
123
+ }));
124
+ setShareLink(playbackUrl);
125
+ }, [recordingUrl, isPlaybackTimeCheckboxChecked, currentPlaybackTime]);
126
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", {
127
+ className: "neeto-ui-bg-gray-100 neeto-ui-rounded-lg mb-3 flex w-full items-center justify-between p-2"
128
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Tooltip, {
129
+ content: shareLink
130
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
131
+ className: "truncate",
132
+ style: "body2"
133
+ }, shareLink)), /*#__PURE__*/React__default["default"].createElement(CopyToClipboardButton, {
134
+ className: "flex-shrink-0",
135
+ style: "secondary",
136
+ value: shareLink
137
+ })), /*#__PURE__*/React__default["default"].createElement("div", {
138
+ className: "flex items-center gap-x-2"
139
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Checkbox, {
140
+ checked: isPlaybackTimeCheckboxChecked,
141
+ className: "grow-0",
142
+ "data-cy": "time-checkbox",
143
+ label: t("neetoMolecules.shareRecording.checkboxLabel"),
144
+ onChange: function onChange(_ref2) {
145
+ var checked = _ref2.target.checked;
146
+ return setIsPlaybackTimeCheckboxChecked(checked);
147
+ }
148
+ }), /*#__PURE__*/React__default["default"].createElement(neetoui.Input, {
149
+ className: "w-40",
150
+ "data-cy": "time-input",
151
+ disabled: ramda.not(isPlaybackTimeCheckboxChecked),
152
+ placeholder: showHours ? "HH:MM:SS" : "MM:SS",
153
+ value: rawInput,
154
+ onBlur: formatAndSetTime,
155
+ onChange: handlePlaybackTimestampChange,
156
+ onKeyDown: handleKeyDown
157
+ })));
158
+ };
159
+
160
+ var _excluded = ["recordingUrl", "totalDuration", "getCurrentTimestamp", "isOpen", "onClose", "isLoading"];
161
+ 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; }
162
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { defineProperty._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; }
163
+ var ShareRecordingPane = function ShareRecordingPane(_ref) {
164
+ var recordingUrl = _ref.recordingUrl,
165
+ totalDuration = _ref.totalDuration,
166
+ getCurrentTimestamp = _ref.getCurrentTimestamp,
167
+ isOpen = _ref.isOpen,
168
+ onClose = _ref.onClose,
169
+ _ref$isLoading = _ref.isLoading,
170
+ isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
171
+ otherProps = objectWithoutProperties._objectWithoutProperties(_ref, _excluded);
172
+ var _useTranslation = reactI18next.useTranslation(),
173
+ t = _useTranslation.t;
174
+ return /*#__PURE__*/React__default["default"].createElement(neetoui.Pane, _extends._extends({}, _objectSpread({
175
+ isOpen: isOpen,
176
+ onClose: onClose
177
+ }, otherProps), {
178
+ "data-cy": "share-pane",
179
+ size: "large"
180
+ }), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Header, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
181
+ style: "h2"
182
+ }, t("neetoMolecules.shareRecording.title"))), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, {
183
+ className: "flex flex-col space-y-2"
184
+ }, isLoading ? /*#__PURE__*/React__default["default"].createElement(neetoui.Spinner, {
185
+ className: "mx-auto"
186
+ }) : /*#__PURE__*/React__default["default"].createElement(SharePaneBody, {
187
+ getCurrentTimestamp: getCurrentTimestamp,
188
+ isOpen: isOpen,
189
+ recordingUrl: recordingUrl,
190
+ totalDuration: totalDuration
191
+ })));
192
+ };
193
+
194
+ module.exports = ShareRecordingPane;
195
+ //# sourceMappingURL=ShareRecordingPane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShareRecordingPane.js","sources":["../../src/components/ShareRecordingPane/constants.js","../../src/components/ShareRecordingPane/utils.js","../../src/components/ShareRecordingPane/SharePaneBody.jsx","../../src/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 React, { useState, useEffect } from \"react\";\n\nimport { buildUrl } from \"neetocommons/utils\";\nimport { Typography, Input, Checkbox, Tooltip } from \"neetoui\";\nimport { not } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport CopyToClipboardButton from \"components/CopyToClipboardButton\";\n\nimport {\n formatTime,\n parseTime,\n shouldRenderHoursInput,\n validateInput,\n} from \"./utils\";\n\nconst SharePaneBody = ({\n recordingUrl,\n totalDuration,\n getCurrentTimestamp,\n isOpen,\n}) => {\n const { t } = useTranslation();\n const currentTimestamp = getCurrentTimestamp();\n\n const [shareLink, setShareLink] = useState(\"\");\n const [currentPlaybackTime, setCurrentPlaybackTime] =\n useState(currentTimestamp);\n const [rawInput, setRawInput] = useState(\"\");\n\n const [isPlaybackTimeCheckboxChecked, setIsPlaybackTimeCheckboxChecked] =\n useState(currentTimestamp > 0);\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 formatAndSetTime = () => {\n let timeInSeconds = parseTime(rawInput);\n if (timeInSeconds > totalDuration) {\n timeInSeconds = totalDuration;\n }\n setCurrentPlaybackTime(timeInSeconds);\n setRawInput(formatTime(timeInSeconds, showHours));\n };\n\n const handleKeyDown = e => {\n if (!(e.key === \"Enter\")) return;\n formatAndSetTime();\n };\n\n useEffect(() => {\n if (not(isOpen)) return;\n\n setIsPlaybackTimeCheckboxChecked(currentTimestamp > 0);\n setCurrentPlaybackTime(currentTimestamp > 0 ? currentTimestamp : 0);\n setRawInput(\n formatTime(currentTimestamp > 0 ? currentTimestamp : 0, showHours)\n );\n }, [isOpen, showHours, currentTimestamp]);\n\n useEffect(() => {\n const playbackUrl = buildUrl(recordingUrl, {\n ...(isPlaybackTimeCheckboxChecked &&\n currentPlaybackTime > 0 && { time: currentPlaybackTime }),\n });\n\n setShareLink(playbackUrl);\n }, [recordingUrl, isPlaybackTimeCheckboxChecked, currentPlaybackTime]);\n\n return (\n <>\n <div className=\"neeto-ui-bg-gray-100 neeto-ui-rounded-lg mb-3 flex w-full items-center justify-between p-2\">\n <Tooltip content={shareLink}>\n <Typography className=\"truncate\" style=\"body2\">\n {shareLink}\n </Typography>\n </Tooltip>\n <CopyToClipboardButton\n className=\"flex-shrink-0\"\n style=\"secondary\"\n value={shareLink}\n />\n </div>\n <div className=\"flex items-center gap-x-2\">\n <Checkbox\n checked={isPlaybackTimeCheckboxChecked}\n className=\"grow-0\"\n data-cy=\"time-checkbox\"\n label={t(\"neetoMolecules.shareRecording.checkboxLabel\")}\n onChange={({ target: { checked } }) =>\n setIsPlaybackTimeCheckboxChecked(checked)\n }\n />\n <Input\n className=\"w-40\"\n data-cy=\"time-input\"\n disabled={not(isPlaybackTimeCheckboxChecked)}\n placeholder={showHours ? \"HH:MM:SS\" : \"MM:SS\"}\n value={rawInput}\n onBlur={formatAndSetTime}\n onChange={handlePlaybackTimestampChange}\n onKeyDown={handleKeyDown}\n />\n </div>\n </>\n );\n};\n\nexport default SharePaneBody;\n","/* eslint-disable @bigbinary/neeto/no-dumb-components-with-use-translation */\nimport React from \"react\";\n\nimport { Pane, Typography, Spinner } from \"neetoui\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport SharePaneBody from \"./SharePaneBody\";\n\nconst ShareRecordingPane = ({\n recordingUrl,\n totalDuration,\n getCurrentTimestamp,\n isOpen,\n onClose,\n isLoading = false,\n ...otherProps\n}) => {\n const { t } = useTranslation();\n\n return (\n <Pane\n {...{ isOpen, onClose, ...otherProps }}\n data-cy=\"share-pane\"\n size=\"large\"\n >\n <Pane.Header>\n <Typography style=\"h2\">\n {t(\"neetoMolecules.shareRecording.title\")}\n </Typography>\n </Pane.Header>\n <Pane.Body className=\"flex flex-col space-y-2\">\n {isLoading ? (\n <Spinner className=\"mx-auto\" />\n ) : (\n <SharePaneBody\n {...{ getCurrentTimestamp, isOpen, recordingUrl, totalDuration }}\n />\n )}\n </Pane.Body>\n </Pane>\n );\n};\n\nShareRecordingPane.propTypes = {\n /**\n * Recording URL used for building the share link.\n */\n recordingUrl: PropTypes.string.isRequired,\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\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","recordingUrl","totalDuration","getCurrentTimestamp","isOpen","_useTranslation","useTranslation","t","currentTimestamp","_useState","useState","_useState2","_slicedToArray","shareLink","setShareLink","_useState3","_useState4","currentPlaybackTime","setCurrentPlaybackTime","_useState5","_useState6","rawInput","setRawInput","_useState7","_useState8","isPlaybackTimeCheckboxChecked","setIsPlaybackTimeCheckboxChecked","handlePlaybackTimestampChange","e","target","value","formatAndSetTime","handleKeyDown","key","useEffect","not","playbackUrl","buildUrl","_objectSpread","time","React","createElement","Fragment","className","Tooltip","content","Typography","style","CopyToClipboardButton","Checkbox","checked","label","onChange","_ref2","Input","disabled","placeholder","onBlur","onKeyDown","ShareRecordingPane","onClose","_ref$isLoading","isLoading","otherProps","_objectWithoutProperties","_excluded","Pane","_extends","size","Header","Body","Spinner"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bigbinary/neeto-molecules",
3
- "version": "1.16.1",
3
+ "version": "1.16.2",
4
4
  "description": "A package of reusable molecular components for neeto products.",
5
5
  "repository": "git@github.com:bigbinary/neeto-molecules.git",
6
6
  "author": "Amaljith K <amaljith.k@bigbinary.com>",
@@ -786,7 +786,7 @@
786
786
  },
787
787
  "shareRecording": {
788
788
  "title": "Share recording",
789
- "checkboxLabel": "Start playback at",
789
+ "checkboxLabel": "Start at",
790
790
  "tooltipContent": "Copy link",
791
791
  "successTooltipContent": "Link copied"
792
792
  }
@@ -0,0 +1,50 @@
1
+ import React from "react";
2
+ /**
3
+ *
4
+ * The ShareRecordingPane component provides a pane interface for sharing
5
+ *
6
+ * recordings. It includes options for specifying playback timestamps and generates
7
+ *
8
+ * shareable links accordingly. The pane allows users to copy the shareable link
9
+ *
10
+ * and adjust playback timestamps.
11
+ *
12
+ * @example
13
+ *
14
+ * import React, { useState } from "react";
15
+ * import { Button } from "neetoui";
16
+ * import ShareRecordingPane from "components/ShareRecordingPane";
17
+ *
18
+ * const ShareRecordingPaneExample = () => {
19
+ * const [isOpen, setIsOpen] = useState(false);
20
+ *
21
+ * return (
22
+ * <>
23
+ * <Button
24
+ * label="Open Share Recording Pane"
25
+ * onClick={() => setIsOpen(true)}
26
+ * />
27
+ * <ShareRecordingPane
28
+ * recordingUrl="https://example.com/recording"
29
+ * totalDuration={3600} // Total duration in seconds (e.g., 1 hour)
30
+ * getCurrentTimestamp={() => 300} // Current playback time in seconds
31
+ * isOpen={isOpen} // Boolean indicating if the pane is open
32
+ * onClose={() => setIsOpen(false)} // Function to close the pane
33
+ * isLoading={false}
34
+ * />
35
+ * </>
36
+ * );
37
+ * };
38
+ *
39
+ * export default ShareRecordingPaneExample;
40
+ * @endexample
41
+ */
42
+ declare const ShareRecordingPane: React.FC<{
43
+ recordingUrl: string;
44
+ totalDuration: number;
45
+ getCurrentTimestamp: () => number;
46
+ isOpen: boolean;
47
+ onClose: Function;
48
+ isLoading?: boolean;
49
+ }>;
50
+ export default ShareRecordingPane;