@bigbinary/neeto-molecules 5.1.27 → 5.1.29
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/TimezoneMismatchModal.js +1 -1
- package/dist/TimezoneMismatchModal.js.map +1 -1
- package/dist/cjs/TimezoneMismatchModal.js +1 -1
- package/dist/cjs/TimezoneMismatchModal.js.map +1 -1
- package/dist/cjs/v2/ErrorPage.js +1 -1
- package/dist/cjs/v2/ErrorPage.js.map +1 -1
- package/dist/cjs/v2/KeyboardShortcuts.js +10 -8
- package/dist/cjs/v2/KeyboardShortcuts.js.map +1 -1
- package/dist/cjs/v2/NeetoWidget.js +12 -12
- package/dist/cjs/v2/NeetoWidget.js.map +1 -1
- package/dist/cjs/v2/Onboarding.js +6 -8
- package/dist/cjs/v2/Onboarding.js.map +1 -1
- package/dist/cjs/v2/PublishBlock.js +24 -15
- package/dist/cjs/v2/PublishBlock.js.map +1 -1
- package/dist/cjs/v2/ResponsiveDevicePicker.js +6 -4
- package/dist/cjs/v2/ResponsiveDevicePicker.js.map +1 -1
- package/dist/cjs/v2/TimezoneMismatchModal.js +1 -1
- package/dist/cjs/v2/TimezoneMismatchModal.js.map +1 -1
- package/dist/v2/ErrorPage.js +1 -1
- package/dist/v2/ErrorPage.js.map +1 -1
- package/dist/v2/KeyboardShortcuts.js +11 -9
- package/dist/v2/KeyboardShortcuts.js.map +1 -1
- package/dist/v2/NeetoWidget.js +12 -12
- package/dist/v2/NeetoWidget.js.map +1 -1
- package/dist/v2/Onboarding.js +6 -8
- package/dist/v2/Onboarding.js.map +1 -1
- package/dist/v2/PublishBlock.js +25 -16
- package/dist/v2/PublishBlock.js.map +1 -1
- package/dist/v2/ResponsiveDevicePicker.js +6 -4
- package/dist/v2/ResponsiveDevicePicker.js.map +1 -1
- package/dist/v2/TimezoneMismatchModal.js +1 -1
- package/dist/v2/TimezoneMismatchModal.js.map +1 -1
- package/package.json +11 -11
|
@@ -73,7 +73,7 @@ var TimezoneMismatchModal = function TimezoneMismatchModal(_ref) {
|
|
|
73
73
|
onClose();
|
|
74
74
|
};
|
|
75
75
|
useEffect(function () {
|
|
76
|
-
if (!(process.env.RAILS_ENV
|
|
76
|
+
if (!["heroku", "transit"].includes(process.env.RAILS_ENV)) return;
|
|
77
77
|
setIsTimezoneModalOpen(!isUserAndBrowserTimeZoneSame);
|
|
78
78
|
}, []);
|
|
79
79
|
return /*#__PURE__*/jsxs(Modal, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimezoneMismatchModal.js","sources":["../src/components/TimezoneMismatchModal/apis/time_zone.js","../src/components/TimezoneMismatchModal/useTimeZoneApi.js","../src/components/TimezoneMismatchModal/utils.js","../src/components/TimezoneMismatchModal/index.jsx"],"sourcesContent":["import axios from \"axios\";\n\nconst timeZoneUrl = \"api/v1/time_zone\";\n\nconst updateTimeZone = payload => axios.patch(timeZoneUrl, payload);\n\nconst timeZoneApi = { updateTimeZone };\n\nexport default timeZoneApi;\n","import { useMutation } from \"@tanstack/react-query\";\n\nimport timeZoneApi from \"./apis/time_zone\";\n\nconst useUpdateTimeZone = () =>\n useMutation({\n mutationFn: timeZoneApi.updateTimeZone,\n onSuccess: () => window.location.reload(),\n });\n\nexport { useUpdateTimeZone };\n","import dayjs from \"dayjs\";\nimport { globalProps } from \"neetocommons/initializers\";\n\nexport const getBrowserTimeZone = () => dayjs.tz.guess();\n\nexport const getUserTimeZone = () => globalProps.user?.timeZone;\n\nexport const checkIfTwoTimeZonesAreSame = (timeZone1, timeZone2) =>\n // eslint-disable-next-line @bigbinary/neeto/use-standard-date-time-formats\n dayjs().tz(timeZone1).format(\"Z\") === dayjs().tz(timeZone2).format(\"Z\");\n","/* eslint-disable @bigbinary/neeto/use-webpack-alias */\nimport { useEffect, useState } from \"react\";\n\nimport { noop } from \"@bigbinary/neeto-cist\";\nimport { Button, Modal, Typography } from \"@bigbinary/neetoui\";\nimport PropTypes from \"prop-types\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nimport { useUpdateTimeZone } from \"./useTimeZoneApi\";\nimport {\n checkIfTwoTimeZonesAreSame,\n getBrowserTimeZone,\n getUserTimeZone,\n} from \"./utils\";\n\nconst TimezoneMismatchModal = ({ isOpen = false, onClose = noop }) => {\n const { t } = useTranslation();\n const [isTimezoneModalOpen, setIsTimezoneModalOpen] = useState(false);\n const { isPending, mutate: updateTimeZone } = useUpdateTimeZone();\n const isUserAndBrowserTimeZoneSame = checkIfTwoTimeZonesAreSame(\n getUserTimeZone(),\n getBrowserTimeZone()\n );\n\n const handleUpdateTimeZone = () => {\n const payload = { timeZone: getBrowserTimeZone() };\n\n updateTimeZone(payload, {\n onSuccess: () => {\n setIsTimezoneModalOpen(false);\n onClose();\n },\n });\n };\n\n const handleCancel = () => {\n setIsTimezoneModalOpen(false);\n onClose();\n };\n\n useEffect(() => {\n if (!(process.env.RAILS_ENV
|
|
1
|
+
{"version":3,"file":"TimezoneMismatchModal.js","sources":["../src/components/TimezoneMismatchModal/apis/time_zone.js","../src/components/TimezoneMismatchModal/useTimeZoneApi.js","../src/components/TimezoneMismatchModal/utils.js","../src/components/TimezoneMismatchModal/index.jsx"],"sourcesContent":["import axios from \"axios\";\n\nconst timeZoneUrl = \"api/v1/time_zone\";\n\nconst updateTimeZone = payload => axios.patch(timeZoneUrl, payload);\n\nconst timeZoneApi = { updateTimeZone };\n\nexport default timeZoneApi;\n","import { useMutation } from \"@tanstack/react-query\";\n\nimport timeZoneApi from \"./apis/time_zone\";\n\nconst useUpdateTimeZone = () =>\n useMutation({\n mutationFn: timeZoneApi.updateTimeZone,\n onSuccess: () => window.location.reload(),\n });\n\nexport { useUpdateTimeZone };\n","import dayjs from \"dayjs\";\nimport { globalProps } from \"neetocommons/initializers\";\n\nexport const getBrowserTimeZone = () => dayjs.tz.guess();\n\nexport const getUserTimeZone = () => globalProps.user?.timeZone;\n\nexport const checkIfTwoTimeZonesAreSame = (timeZone1, timeZone2) =>\n // eslint-disable-next-line @bigbinary/neeto/use-standard-date-time-formats\n dayjs().tz(timeZone1).format(\"Z\") === dayjs().tz(timeZone2).format(\"Z\");\n","/* eslint-disable @bigbinary/neeto/use-webpack-alias */\nimport { useEffect, useState } from \"react\";\n\nimport { noop } from \"@bigbinary/neeto-cist\";\nimport { Button, Modal, Typography } from \"@bigbinary/neetoui\";\nimport PropTypes from \"prop-types\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nimport { useUpdateTimeZone } from \"./useTimeZoneApi\";\nimport {\n checkIfTwoTimeZonesAreSame,\n getBrowserTimeZone,\n getUserTimeZone,\n} from \"./utils\";\n\nconst TimezoneMismatchModal = ({ isOpen = false, onClose = noop }) => {\n const { t } = useTranslation();\n const [isTimezoneModalOpen, setIsTimezoneModalOpen] = useState(false);\n const { isPending, mutate: updateTimeZone } = useUpdateTimeZone();\n const isUserAndBrowserTimeZoneSame = checkIfTwoTimeZonesAreSame(\n getUserTimeZone(),\n getBrowserTimeZone()\n );\n\n const handleUpdateTimeZone = () => {\n const payload = { timeZone: getBrowserTimeZone() };\n\n updateTimeZone(payload, {\n onSuccess: () => {\n setIsTimezoneModalOpen(false);\n onClose();\n },\n });\n };\n\n const handleCancel = () => {\n setIsTimezoneModalOpen(false);\n onClose();\n };\n\n useEffect(() => {\n if (![\"heroku\", \"transit\"].includes(process.env.RAILS_ENV)) return;\n setIsTimezoneModalOpen(!isUserAndBrowserTimeZoneSame);\n }, []);\n\n return (\n <Modal\n closeOnOutsideClick={false}\n isOpen={isTimezoneModalOpen || isOpen}\n size=\"large\"\n onClose={handleCancel}\n >\n <Modal.Header>\n <Typography style=\"h2\" weight=\"normal\">\n {t(\"neetoMolecules.alert.timezone.title\")}\n </Typography>\n </Modal.Header>\n <Modal.Body>\n <span className=\"flex flex-col gap-y-4\">\n <Typography component=\"span\" style=\"body2\">\n {t(\"neetoMolecules.alert.timezone.message\", {\n entity: globalProps.appName,\n })}\n </Typography>\n <Typography component=\"span\" style=\"h4\">\n <Trans\n i18nKey=\"neetoMolecules.alert.timezone.userTimezone\"\n values={{ entity: getUserTimeZone() }}\n />\n </Typography>\n <Typography component=\"span\" style=\"h4\">\n <Trans\n i18nKey=\"neetoMolecules.alert.timezone.browserTimezone\"\n values={{ entity: getBrowserTimeZone() }}\n />\n </Typography>\n </span>\n </Modal.Body>\n <Modal.Footer className=\"flex items-center gap-x-2\">\n <Button\n data-testid=\"update-timezone-button\"\n disabled={isPending}\n label={t(\"neetoMolecules.alert.timezone.updateProfile\")}\n loading={isPending}\n style=\"primary\"\n onClick={handleUpdateTimeZone}\n />\n <Button\n label={t(\"neetoMolecules.common.actions.cancel\")}\n style=\"text\"\n onClick={handleCancel}\n />\n </Modal.Footer>\n </Modal>\n );\n};\n\nTimezoneMismatchModal.propTypes = {\n /**\n * Boolean value to toggle the modal.\n */\n isOpen: PropTypes.bool,\n /**\n * The function that's called after the modal is closed.\n */\n onClose: PropTypes.func,\n};\n\nexport default TimezoneMismatchModal;\n"],"names":["timeZoneUrl","updateTimeZone","payload","axios","patch","timeZoneApi","useUpdateTimeZone","useMutation","mutationFn","onSuccess","window","location","reload","getBrowserTimeZone","dayjs","tz","guess","getUserTimeZone","_globalProps$user","globalProps","user","timeZone","checkIfTwoTimeZonesAreSame","timeZone1","timeZone2","format","TimezoneMismatchModal","_ref","_ref$isOpen","isOpen","_ref$onClose","onClose","noop","_useTranslation","useTranslation","t","_useState","useState","_useState2","_slicedToArray","isTimezoneModalOpen","setIsTimezoneModalOpen","_useUpdateTimeZone","isPending","mutate","isUserAndBrowserTimeZoneSame","handleUpdateTimeZone","handleCancel","useEffect","includes","process","env","RAILS_ENV","_jsxs","Modal","closeOnOutsideClick","size","children","_jsx","Header","Typography","style","weight","Body","className","component","entity","appName","Trans","i18nKey","values","Footer","Button","disabled","label","loading","onClick"],"mappings":"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"}
|
|
@@ -75,7 +75,7 @@ var TimezoneMismatchModal = function TimezoneMismatchModal(_ref) {
|
|
|
75
75
|
onClose();
|
|
76
76
|
};
|
|
77
77
|
React.useEffect(function () {
|
|
78
|
-
if (!(process.env.RAILS_ENV
|
|
78
|
+
if (!["heroku", "transit"].includes(process.env.RAILS_ENV)) return;
|
|
79
79
|
setIsTimezoneModalOpen(!isUserAndBrowserTimeZoneSame);
|
|
80
80
|
}, []);
|
|
81
81
|
return /*#__PURE__*/jsxRuntime.jsxs(Modal, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimezoneMismatchModal.js","sources":["../../src/components/TimezoneMismatchModal/apis/time_zone.js","../../src/components/TimezoneMismatchModal/useTimeZoneApi.js","../../src/components/TimezoneMismatchModal/utils.js","../../src/components/TimezoneMismatchModal/index.jsx"],"sourcesContent":["import axios from \"axios\";\n\nconst timeZoneUrl = \"api/v1/time_zone\";\n\nconst updateTimeZone = payload => axios.patch(timeZoneUrl, payload);\n\nconst timeZoneApi = { updateTimeZone };\n\nexport default timeZoneApi;\n","import { useMutation } from \"@tanstack/react-query\";\n\nimport timeZoneApi from \"./apis/time_zone\";\n\nconst useUpdateTimeZone = () =>\n useMutation({\n mutationFn: timeZoneApi.updateTimeZone,\n onSuccess: () => window.location.reload(),\n });\n\nexport { useUpdateTimeZone };\n","import dayjs from \"dayjs\";\nimport { globalProps } from \"neetocommons/initializers\";\n\nexport const getBrowserTimeZone = () => dayjs.tz.guess();\n\nexport const getUserTimeZone = () => globalProps.user?.timeZone;\n\nexport const checkIfTwoTimeZonesAreSame = (timeZone1, timeZone2) =>\n // eslint-disable-next-line @bigbinary/neeto/use-standard-date-time-formats\n dayjs().tz(timeZone1).format(\"Z\") === dayjs().tz(timeZone2).format(\"Z\");\n","/* eslint-disable @bigbinary/neeto/use-webpack-alias */\nimport { useEffect, useState } from \"react\";\n\nimport { noop } from \"@bigbinary/neeto-cist\";\nimport { Button, Modal, Typography } from \"@bigbinary/neetoui\";\nimport PropTypes from \"prop-types\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nimport { useUpdateTimeZone } from \"./useTimeZoneApi\";\nimport {\n checkIfTwoTimeZonesAreSame,\n getBrowserTimeZone,\n getUserTimeZone,\n} from \"./utils\";\n\nconst TimezoneMismatchModal = ({ isOpen = false, onClose = noop }) => {\n const { t } = useTranslation();\n const [isTimezoneModalOpen, setIsTimezoneModalOpen] = useState(false);\n const { isPending, mutate: updateTimeZone } = useUpdateTimeZone();\n const isUserAndBrowserTimeZoneSame = checkIfTwoTimeZonesAreSame(\n getUserTimeZone(),\n getBrowserTimeZone()\n );\n\n const handleUpdateTimeZone = () => {\n const payload = { timeZone: getBrowserTimeZone() };\n\n updateTimeZone(payload, {\n onSuccess: () => {\n setIsTimezoneModalOpen(false);\n onClose();\n },\n });\n };\n\n const handleCancel = () => {\n setIsTimezoneModalOpen(false);\n onClose();\n };\n\n useEffect(() => {\n if (!(process.env.RAILS_ENV
|
|
1
|
+
{"version":3,"file":"TimezoneMismatchModal.js","sources":["../../src/components/TimezoneMismatchModal/apis/time_zone.js","../../src/components/TimezoneMismatchModal/useTimeZoneApi.js","../../src/components/TimezoneMismatchModal/utils.js","../../src/components/TimezoneMismatchModal/index.jsx"],"sourcesContent":["import axios from \"axios\";\n\nconst timeZoneUrl = \"api/v1/time_zone\";\n\nconst updateTimeZone = payload => axios.patch(timeZoneUrl, payload);\n\nconst timeZoneApi = { updateTimeZone };\n\nexport default timeZoneApi;\n","import { useMutation } from \"@tanstack/react-query\";\n\nimport timeZoneApi from \"./apis/time_zone\";\n\nconst useUpdateTimeZone = () =>\n useMutation({\n mutationFn: timeZoneApi.updateTimeZone,\n onSuccess: () => window.location.reload(),\n });\n\nexport { useUpdateTimeZone };\n","import dayjs from \"dayjs\";\nimport { globalProps } from \"neetocommons/initializers\";\n\nexport const getBrowserTimeZone = () => dayjs.tz.guess();\n\nexport const getUserTimeZone = () => globalProps.user?.timeZone;\n\nexport const checkIfTwoTimeZonesAreSame = (timeZone1, timeZone2) =>\n // eslint-disable-next-line @bigbinary/neeto/use-standard-date-time-formats\n dayjs().tz(timeZone1).format(\"Z\") === dayjs().tz(timeZone2).format(\"Z\");\n","/* eslint-disable @bigbinary/neeto/use-webpack-alias */\nimport { useEffect, useState } from \"react\";\n\nimport { noop } from \"@bigbinary/neeto-cist\";\nimport { Button, Modal, Typography } from \"@bigbinary/neetoui\";\nimport PropTypes from \"prop-types\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nimport { useUpdateTimeZone } from \"./useTimeZoneApi\";\nimport {\n checkIfTwoTimeZonesAreSame,\n getBrowserTimeZone,\n getUserTimeZone,\n} from \"./utils\";\n\nconst TimezoneMismatchModal = ({ isOpen = false, onClose = noop }) => {\n const { t } = useTranslation();\n const [isTimezoneModalOpen, setIsTimezoneModalOpen] = useState(false);\n const { isPending, mutate: updateTimeZone } = useUpdateTimeZone();\n const isUserAndBrowserTimeZoneSame = checkIfTwoTimeZonesAreSame(\n getUserTimeZone(),\n getBrowserTimeZone()\n );\n\n const handleUpdateTimeZone = () => {\n const payload = { timeZone: getBrowserTimeZone() };\n\n updateTimeZone(payload, {\n onSuccess: () => {\n setIsTimezoneModalOpen(false);\n onClose();\n },\n });\n };\n\n const handleCancel = () => {\n setIsTimezoneModalOpen(false);\n onClose();\n };\n\n useEffect(() => {\n if (![\"heroku\", \"transit\"].includes(process.env.RAILS_ENV)) return;\n setIsTimezoneModalOpen(!isUserAndBrowserTimeZoneSame);\n }, []);\n\n return (\n <Modal\n closeOnOutsideClick={false}\n isOpen={isTimezoneModalOpen || isOpen}\n size=\"large\"\n onClose={handleCancel}\n >\n <Modal.Header>\n <Typography style=\"h2\" weight=\"normal\">\n {t(\"neetoMolecules.alert.timezone.title\")}\n </Typography>\n </Modal.Header>\n <Modal.Body>\n <span className=\"flex flex-col gap-y-4\">\n <Typography component=\"span\" style=\"body2\">\n {t(\"neetoMolecules.alert.timezone.message\", {\n entity: globalProps.appName,\n })}\n </Typography>\n <Typography component=\"span\" style=\"h4\">\n <Trans\n i18nKey=\"neetoMolecules.alert.timezone.userTimezone\"\n values={{ entity: getUserTimeZone() }}\n />\n </Typography>\n <Typography component=\"span\" style=\"h4\">\n <Trans\n i18nKey=\"neetoMolecules.alert.timezone.browserTimezone\"\n values={{ entity: getBrowserTimeZone() }}\n />\n </Typography>\n </span>\n </Modal.Body>\n <Modal.Footer className=\"flex items-center gap-x-2\">\n <Button\n data-testid=\"update-timezone-button\"\n disabled={isPending}\n label={t(\"neetoMolecules.alert.timezone.updateProfile\")}\n loading={isPending}\n style=\"primary\"\n onClick={handleUpdateTimeZone}\n />\n <Button\n label={t(\"neetoMolecules.common.actions.cancel\")}\n style=\"text\"\n onClick={handleCancel}\n />\n </Modal.Footer>\n </Modal>\n );\n};\n\nTimezoneMismatchModal.propTypes = {\n /**\n * Boolean value to toggle the modal.\n */\n isOpen: PropTypes.bool,\n /**\n * The function that's called after the modal is closed.\n */\n onClose: PropTypes.func,\n};\n\nexport default TimezoneMismatchModal;\n"],"names":["timeZoneUrl","updateTimeZone","payload","axios","patch","timeZoneApi","useUpdateTimeZone","useMutation","mutationFn","onSuccess","window","location","reload","getBrowserTimeZone","dayjs","tz","guess","getUserTimeZone","_globalProps$user","globalProps","user","timeZone","checkIfTwoTimeZonesAreSame","timeZone1","timeZone2","format","TimezoneMismatchModal","_ref","_ref$isOpen","isOpen","_ref$onClose","onClose","noop","_useTranslation","useTranslation","t","_useState","useState","_useState2","_slicedToArray","isTimezoneModalOpen","setIsTimezoneModalOpen","_useUpdateTimeZone","isPending","mutate","isUserAndBrowserTimeZoneSame","handleUpdateTimeZone","handleCancel","useEffect","includes","process","env","RAILS_ENV","_jsxs","Modal","closeOnOutsideClick","size","children","_jsx","Header","Typography","style","weight","Body","className","component","entity","appName","Trans","i18nKey","values","Footer","Button","disabled","label","loading","onClick"],"mappings":"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"}
|
package/dist/cjs/v2/ErrorPage.js
CHANGED
|
@@ -175,7 +175,7 @@ var ErrorPage = function ErrorPage(_ref) {
|
|
|
175
175
|
}
|
|
176
176
|
})
|
|
177
177
|
}), /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
178
|
-
className: "flex flex-wrap items-center gap-3 [&_a]:no-underline",
|
|
178
|
+
className: "flex flex-wrap items-center justify-center gap-3 @[768px]/error-page:justify-start [&_a]:no-underline",
|
|
179
179
|
children: [primaryAction === "back" ? /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
|
|
180
180
|
asChild: true,
|
|
181
181
|
size: "lg",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorPage.js","sources":["../../../node_modules/lucide-react/dist/esm/icons/lock.js","../../../src/v2/components/ErrorPage/constants.js","../../../src/v2/components/ErrorPage/index.jsx"],"sourcesContent":["/**\n * @license lucide-react v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"rect\", { width: \"18\", height: \"11\", x: \"3\", y: \"11\", rx: \"2\", ry: \"2\", key: \"1w4ew1\" }],\n [\"path\", { d: \"M7 11V7a5 5 0 0 1 10 0v4\", key: \"fwvmzm\" }]\n];\nconst Lock = createLucideIcon(\"lock\", __iconNode);\n\nexport { __iconNode, Lock as default };\n//# sourceMappingURL=lock.js.map\n","import { Lock, Search, TriangleAlert } from \"lucide-react\";\n\nexport const ERRORS = {\n 404: {\n Icon: Search,\n errorKey: \"neetoMolecules.errorPage.cantBeFound\",\n titleKey: \"neetoMolecules.errorPage.title.cantBeFound\",\n descriptionKey: \"neetoMolecules.errorPage.description.cantBeFound\",\n primaryAction: \"home\",\n usesChat: true,\n },\n 403: {\n Icon: Lock,\n errorKey: \"neetoMolecules.errorPage.unauthorized\",\n titleKey: \"neetoMolecules.errorPage.title.unauthorized\",\n descriptionKey: \"neetoMolecules.errorPage.description.unauthorized\",\n primaryAction: \"back\",\n usesChat: false,\n },\n 500: {\n Icon: TriangleAlert,\n errorKey: \"neetoMolecules.errorPage.internalServerError\",\n titleKey: \"neetoMolecules.errorPage.title.internalServerError\",\n descriptionKey: \"neetoMolecules.errorPage.description.internalServerError\",\n primaryAction: \"home\",\n usesChat: true,\n },\n};\n","import { useEffect } from \"react\";\n\nimport { Button, Typography } from \"@bigbinary/neeto-atoms\";\nimport DOMPurify from \"dompurify\";\nimport { ChevronLeft, House } from \"lucide-react\";\nimport { useErrorDisplayStore } from \"neetocommons/v2/react-utils/useDisplayErrorPage\";\nimport PropTypes from \"prop-types\";\nimport { Helmet } from \"react-helmet\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nimport { ERRORS } from \"./constants\";\n\nconst sanitize = DOMPurify.sanitize;\n\nconst ErrorPage = ({\n homeUrl = \"/\",\n status,\n backToHomeButtonProps,\n children,\n showNeetoChatWidget = true,\n description,\n title,\n hideBackToHomeButton = false,\n}) => {\n const { t } = useTranslation();\n const { statusCode: storeStatusCode, showErrorPage } =\n useErrorDisplayStore.pick();\n\n status = status || storeStatusCode;\n const { Icon, errorKey, titleKey, descriptionKey, primaryAction, usesChat } =\n ERRORS[status] || ERRORS[404];\n\n useEffect(() => {\n const pageLoader = document.getElementById(\"neeto-page-loader\");\n if (pageLoader) pageLoader.remove();\n\n const onBackButtonPress = () => {\n if (!showErrorPage) return;\n useErrorDisplayStore.setState({ showErrorPage: false });\n };\n\n window.addEventListener(\"popstate\", onBackButtonPress);\n\n return () => {\n window.removeEventListener(\"popstate\", onBackButtonPress);\n };\n }, []);\n\n const openChatWidget = () => {\n window.NeetoChat?.contextualHelp?.maximizeWidget();\n window.NeetoChat?.contextualHelp?.openWidget();\n };\n\n // Falls back to homeUrl when the user landed on the error page directly\n // (deep link / fresh tab) and has no in-app history to go back to.\n const handleGoBack = () => {\n if (window.history.length > 1) {\n window.history.back();\n } else {\n window.location.href = homeUrl;\n }\n };\n\n const showDefaultDescription = !usesChat || showNeetoChatWidget;\n\n return (\n <div\n className=\"@container/error-page flex min-h-dvh w-full flex-col items-center justify-center\"\n data-testid=\"error-page-container\"\n >\n <div className=\"flex w-[768px] max-w-full flex-col items-center gap-8 p-4 text-center @[768px]/error-page:flex-row @[768px]/error-page:items-center @[768px]/error-page:gap-12 @[768px]/error-page:p-6 @[768px]/error-page:text-left\">\n <div\n className=\"bg-muted text-muted-foreground flex size-24 shrink-0 items-center justify-center rounded-full border\"\n data-testid=\"error-image\"\n >\n <Icon className=\"size-10\" strokeWidth={1.5} />\n </div>\n <div className=\"flex flex-col justify-center md:min-w-0 md:flex-grow\">\n <Helmet>\n <title>{t(titleKey)}</title>\n </Helmet>\n {!!status && (\n <Typography\n className=\"text-muted-foreground mb-2 tracking-[0.08em] uppercase\"\n data-testid=\"status-code\"\n variant=\"body3\"\n weight=\"semibold\"\n >\n {t(\"neetoMolecules.errorPage.statusCodeLabel\", { status })}\n </Typography>\n )}\n <Typography\n className=\"mb-3\"\n data-testid=\"title\"\n variant=\"h3\"\n weight=\"semibold\"\n >\n {title || <Trans i18nKey={errorKey} />}\n </Typography>\n {description ? (\n <Typography\n className=\"mb-6\"\n dangerouslySetInnerHTML={{ __html: sanitize(description) }}\n data-testid=\"description\"\n variant=\"body1\"\n />\n ) : (\n showDefaultDescription && (\n <Typography\n className=\"mb-6\"\n data-testid=\"description\"\n variant=\"body1\"\n >\n <Trans\n i18nKey={descriptionKey}\n components={{\n contactLink: (\n <Button\n className=\"h-auto p-0 text-base\"\n variant=\"link\"\n onClick={openChatWidget}\n />\n ),\n }}\n />\n </Typography>\n )\n )}\n <div className=\"flex flex-wrap items-center gap-3 [&_a]:no-underline\">\n {primaryAction === \"back\" ? (\n <Button asChild size=\"lg\" variant=\"default\">\n <button type=\"button\" onClick={handleGoBack}>\n <ChevronLeft className=\"size-4\" />\n {t(\"neetoMolecules.errorPage.goBack\")}\n </button>\n </Button>\n ) : (\n !hideBackToHomeButton && (\n <Button\n asChild\n size=\"lg\"\n variant=\"default\"\n {...backToHomeButtonProps}\n >\n <a href={homeUrl}>\n <House className=\"size-4\" />\n {t(\"neetoMolecules.errorPage.backToHome\")}\n </a>\n </Button>\n )\n )}\n {children}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nErrorPage.propTypes = {\n /**\n * The URL to which the user will be taken to when user clicks on back to home button.\n */\n homeUrl: PropTypes.string,\n /**\n * The status code of the error.\n */\n status: PropTypes.oneOf([403, 404, 500]),\n /**\n * Decides whether 'contact us' link should be displayed or not.\n */\n showNeetoChatWidget: PropTypes.bool,\n /**\n * Description about the error.\n */\n description: PropTypes.string,\n /**\n * Decides whether 'back to home' button should be displayed or not.\n */\n hideBackToHomeButton: PropTypes.bool,\n /**\n * The title of the error page.\n */\n title: PropTypes.string,\n};\n\nexport default ErrorPage;\n"],"names":["createLucideIcon","ERRORS","Icon","Search","errorKey","titleKey","descriptionKey","primaryAction","usesChat","Lock","TriangleAlert","sanitize","DOMPurify","ErrorPage","_ref","_ref$homeUrl","homeUrl","status","backToHomeButtonProps","children","_ref$showNeetoChatWid","showNeetoChatWidget","description","title","_ref$hideBackToHomeBu","hideBackToHomeButton","_useTranslation","useTranslation","t","_useErrorDisplayStore","useErrorDisplayStore","useShallow","store","statusCode","showErrorPage","storeStatusCode","_ref2","useEffect","pageLoader","document","getElementById","remove","onBackButtonPress","setState","window","addEventListener","removeEventListener","openChatWidget","_window$NeetoChat","_window$NeetoChat2","NeetoChat","contextualHelp","maximizeWidget","openWidget","handleGoBack","history","length","back","location","href","showDefaultDescription","_jsx","className","_jsxs","strokeWidth","Helmet","Typography","variant","weight","Trans","i18nKey","dangerouslySetInnerHTML","__html","components","contactLink","Button","onClick","asChild","size","type","ChevronLeft","_objectSpread","House"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"ErrorPage.js","sources":["../../../node_modules/lucide-react/dist/esm/icons/lock.js","../../../src/v2/components/ErrorPage/constants.js","../../../src/v2/components/ErrorPage/index.jsx"],"sourcesContent":["/**\n * @license lucide-react v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"rect\", { width: \"18\", height: \"11\", x: \"3\", y: \"11\", rx: \"2\", ry: \"2\", key: \"1w4ew1\" }],\n [\"path\", { d: \"M7 11V7a5 5 0 0 1 10 0v4\", key: \"fwvmzm\" }]\n];\nconst Lock = createLucideIcon(\"lock\", __iconNode);\n\nexport { __iconNode, Lock as default };\n//# sourceMappingURL=lock.js.map\n","import { Lock, Search, TriangleAlert } from \"lucide-react\";\n\nexport const ERRORS = {\n 404: {\n Icon: Search,\n errorKey: \"neetoMolecules.errorPage.cantBeFound\",\n titleKey: \"neetoMolecules.errorPage.title.cantBeFound\",\n descriptionKey: \"neetoMolecules.errorPage.description.cantBeFound\",\n primaryAction: \"home\",\n usesChat: true,\n },\n 403: {\n Icon: Lock,\n errorKey: \"neetoMolecules.errorPage.unauthorized\",\n titleKey: \"neetoMolecules.errorPage.title.unauthorized\",\n descriptionKey: \"neetoMolecules.errorPage.description.unauthorized\",\n primaryAction: \"back\",\n usesChat: false,\n },\n 500: {\n Icon: TriangleAlert,\n errorKey: \"neetoMolecules.errorPage.internalServerError\",\n titleKey: \"neetoMolecules.errorPage.title.internalServerError\",\n descriptionKey: \"neetoMolecules.errorPage.description.internalServerError\",\n primaryAction: \"home\",\n usesChat: true,\n },\n};\n","import { useEffect } from \"react\";\n\nimport { Button, Typography } from \"@bigbinary/neeto-atoms\";\nimport DOMPurify from \"dompurify\";\nimport { ChevronLeft, House } from \"lucide-react\";\nimport { useErrorDisplayStore } from \"neetocommons/v2/react-utils/useDisplayErrorPage\";\nimport PropTypes from \"prop-types\";\nimport { Helmet } from \"react-helmet\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nimport { ERRORS } from \"./constants\";\n\nconst sanitize = DOMPurify.sanitize;\n\nconst ErrorPage = ({\n homeUrl = \"/\",\n status,\n backToHomeButtonProps,\n children,\n showNeetoChatWidget = true,\n description,\n title,\n hideBackToHomeButton = false,\n}) => {\n const { t } = useTranslation();\n const { statusCode: storeStatusCode, showErrorPage } =\n useErrorDisplayStore.pick();\n\n status = status || storeStatusCode;\n const { Icon, errorKey, titleKey, descriptionKey, primaryAction, usesChat } =\n ERRORS[status] || ERRORS[404];\n\n useEffect(() => {\n const pageLoader = document.getElementById(\"neeto-page-loader\");\n if (pageLoader) pageLoader.remove();\n\n const onBackButtonPress = () => {\n if (!showErrorPage) return;\n useErrorDisplayStore.setState({ showErrorPage: false });\n };\n\n window.addEventListener(\"popstate\", onBackButtonPress);\n\n return () => {\n window.removeEventListener(\"popstate\", onBackButtonPress);\n };\n }, []);\n\n const openChatWidget = () => {\n window.NeetoChat?.contextualHelp?.maximizeWidget();\n window.NeetoChat?.contextualHelp?.openWidget();\n };\n\n // Falls back to homeUrl when the user landed on the error page directly\n // (deep link / fresh tab) and has no in-app history to go back to.\n const handleGoBack = () => {\n if (window.history.length > 1) {\n window.history.back();\n } else {\n window.location.href = homeUrl;\n }\n };\n\n const showDefaultDescription = !usesChat || showNeetoChatWidget;\n\n return (\n <div\n className=\"@container/error-page flex min-h-dvh w-full flex-col items-center justify-center\"\n data-testid=\"error-page-container\"\n >\n <div className=\"flex w-[768px] max-w-full flex-col items-center gap-8 p-4 text-center @[768px]/error-page:flex-row @[768px]/error-page:items-center @[768px]/error-page:gap-12 @[768px]/error-page:p-6 @[768px]/error-page:text-left\">\n <div\n className=\"bg-muted text-muted-foreground flex size-24 shrink-0 items-center justify-center rounded-full border\"\n data-testid=\"error-image\"\n >\n <Icon className=\"size-10\" strokeWidth={1.5} />\n </div>\n <div className=\"flex flex-col justify-center md:min-w-0 md:flex-grow\">\n <Helmet>\n <title>{t(titleKey)}</title>\n </Helmet>\n {!!status && (\n <Typography\n className=\"text-muted-foreground mb-2 tracking-[0.08em] uppercase\"\n data-testid=\"status-code\"\n variant=\"body3\"\n weight=\"semibold\"\n >\n {t(\"neetoMolecules.errorPage.statusCodeLabel\", { status })}\n </Typography>\n )}\n <Typography\n className=\"mb-3\"\n data-testid=\"title\"\n variant=\"h3\"\n weight=\"semibold\"\n >\n {title || <Trans i18nKey={errorKey} />}\n </Typography>\n {description ? (\n <Typography\n className=\"mb-6\"\n dangerouslySetInnerHTML={{ __html: sanitize(description) }}\n data-testid=\"description\"\n variant=\"body1\"\n />\n ) : (\n showDefaultDescription && (\n <Typography\n className=\"mb-6\"\n data-testid=\"description\"\n variant=\"body1\"\n >\n <Trans\n i18nKey={descriptionKey}\n components={{\n contactLink: (\n <Button\n className=\"h-auto p-0 text-base\"\n variant=\"link\"\n onClick={openChatWidget}\n />\n ),\n }}\n />\n </Typography>\n )\n )}\n <div className=\"flex flex-wrap items-center justify-center gap-3 @[768px]/error-page:justify-start [&_a]:no-underline\">\n {primaryAction === \"back\" ? (\n <Button asChild size=\"lg\" variant=\"default\">\n <button type=\"button\" onClick={handleGoBack}>\n <ChevronLeft className=\"size-4\" />\n {t(\"neetoMolecules.errorPage.goBack\")}\n </button>\n </Button>\n ) : (\n !hideBackToHomeButton && (\n <Button\n asChild\n size=\"lg\"\n variant=\"default\"\n {...backToHomeButtonProps}\n >\n <a href={homeUrl}>\n <House className=\"size-4\" />\n {t(\"neetoMolecules.errorPage.backToHome\")}\n </a>\n </Button>\n )\n )}\n {children}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nErrorPage.propTypes = {\n /**\n * The URL to which the user will be taken to when user clicks on back to home button.\n */\n homeUrl: PropTypes.string,\n /**\n * The status code of the error.\n */\n status: PropTypes.oneOf([403, 404, 500]),\n /**\n * Decides whether 'contact us' link should be displayed or not.\n */\n showNeetoChatWidget: PropTypes.bool,\n /**\n * Description about the error.\n */\n description: PropTypes.string,\n /**\n * Decides whether 'back to home' button should be displayed or not.\n */\n hideBackToHomeButton: PropTypes.bool,\n /**\n * The title of the error page.\n */\n title: PropTypes.string,\n};\n\nexport default ErrorPage;\n"],"names":["createLucideIcon","ERRORS","Icon","Search","errorKey","titleKey","descriptionKey","primaryAction","usesChat","Lock","TriangleAlert","sanitize","DOMPurify","ErrorPage","_ref","_ref$homeUrl","homeUrl","status","backToHomeButtonProps","children","_ref$showNeetoChatWid","showNeetoChatWidget","description","title","_ref$hideBackToHomeBu","hideBackToHomeButton","_useTranslation","useTranslation","t","_useErrorDisplayStore","useErrorDisplayStore","useShallow","store","statusCode","showErrorPage","storeStatusCode","_ref2","useEffect","pageLoader","document","getElementById","remove","onBackButtonPress","setState","window","addEventListener","removeEventListener","openChatWidget","_window$NeetoChat","_window$NeetoChat2","NeetoChat","contextualHelp","maximizeWidget","openWidget","handleGoBack","history","length","back","location","href","showDefaultDescription","_jsx","className","_jsxs","strokeWidth","Helmet","Typography","variant","weight","Trans","i18nKey","dangerouslySetInnerHTML","__html","components","contactLink","Button","onClick","asChild","size","type","ChevronLeft","_objectSpread","House"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -121,7 +121,6 @@ var KbdWithRef = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
121
121
|
ref: ref
|
|
122
122
|
}, props)), {}, {
|
|
123
123
|
children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Kbd, {
|
|
124
|
-
className: "nv-kbd",
|
|
125
124
|
children: children
|
|
126
125
|
})
|
|
127
126
|
}));
|
|
@@ -140,7 +139,6 @@ var KbdKey = function KbdKey(_ref2) {
|
|
|
140
139
|
});
|
|
141
140
|
}
|
|
142
141
|
return /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Kbd, {
|
|
143
|
-
className: "nv-kbd",
|
|
144
142
|
children: keyName
|
|
145
143
|
});
|
|
146
144
|
};
|
|
@@ -164,8 +162,9 @@ var HotKey$1 = function HotKey(_ref3) {
|
|
|
164
162
|
children: /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
165
163
|
className: "flex items-center justify-between gap-3",
|
|
166
164
|
"data-testid": "hotkey-item",
|
|
167
|
-
children: [/*#__PURE__*/jsxRuntime.jsx(
|
|
168
|
-
|
|
165
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
|
|
166
|
+
as: "span",
|
|
167
|
+
className: "min-w-0 flex-grow break-words",
|
|
169
168
|
children: description
|
|
170
169
|
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
171
170
|
className: "flex flex-shrink-0 items-center gap-1",
|
|
@@ -193,8 +192,10 @@ var HotKeyList$1 = reactUtils.withT(function (_ref) {
|
|
|
193
192
|
var fullShortcutsLink = categoryValues[FULL_SHORTCUTS_LINK_PROP_NAME];
|
|
194
193
|
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
195
194
|
className: "mt-4 px-4",
|
|
196
|
-
children: [/*#__PURE__*/jsxRuntime.jsx(
|
|
197
|
-
className: "
|
|
195
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
|
|
196
|
+
className: "uppercase",
|
|
197
|
+
variant: "caption",
|
|
198
|
+
weight: "bold",
|
|
198
199
|
children: categoryName
|
|
199
200
|
}), Object.entries(categoryValues).map(function (_ref2) {
|
|
200
201
|
var _ref3 = _slicedToArray(_ref2, 2),
|
|
@@ -263,9 +264,10 @@ var KeyboardShortcutsPane = function KeyboardShortcutsPane(_ref) {
|
|
|
263
264
|
className: "h-full w-80 overflow-y-auto",
|
|
264
265
|
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
265
266
|
className: "border-border my-2 flex items-center justify-between border-b px-4 pb-2",
|
|
266
|
-
children: [/*#__PURE__*/jsxRuntime.jsx(
|
|
267
|
-
|
|
267
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
|
|
268
|
+
as: "h4",
|
|
268
269
|
"data-testid": "keyboard-shortcuts-pane-title",
|
|
270
|
+
variant: "h6",
|
|
269
271
|
children: t("neetoMolecules.keyboardShortcuts.title")
|
|
270
272
|
}), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
|
|
271
273
|
"data-testid": "keyboard-shortcuts-pane-close-button",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeyboardShortcuts.js","sources":["../../../src/v2/components/KeyboardShortcuts/Pane/constants.js","../../../src/v2/components/KeyboardShortcuts/Pane/utils.js","../../../src/v2/components/KeyboardShortcuts/Pane/HotKey.jsx","../../../src/v2/components/KeyboardShortcuts/Pane/HotKeyList.jsx","../../../src/v2/components/KeyboardShortcuts/Pane/index.jsx","../../../src/v2/components/KeyboardShortcuts/index.js"],"sourcesContent":["export const KEY_SHORTFORM_MAP = {\n command: \"\\u2318\",\n escape: \"esc\",\n control: \"ctrl\",\n option: \"opt\",\n return: \"enter\",\n};\n\nexport const MAC_TO_WINDOWS_KEYS_MAP = {\n option: \"alt\",\n command: \"ctrl\",\n return: \"enter\",\n delete: \"backspace\",\n};\n\nexport const OS = { mac: \"macOS\", windows: \"Windows\" };\n\nexport const FULL_SHORTCUTS_LINK_PROP_NAME = \"fullShortcutsLink\";\n\nexport const TOOLTIP_CONTENT = {\n \"\\u2318\": \"command\",\n esc: \"escape\",\n ctrl: \"control\",\n opt: \"option\",\n backspace: \"delete\",\n};\n","import i18next from \"i18next\";\nimport { toPairs } from \"ramda\";\nimport { UAParser } from \"ua-parser-js\";\n\nimport {\n KEY_SHORTFORM_MAP,\n MAC_TO_WINDOWS_KEYS_MAP,\n OS,\n TOOLTIP_CONTENT,\n} from \"./constants\";\n\nconst isMultipleHotkey = hotkey => Array.isArray(hotkey);\n\nconst replaceKeys = (hotkey, keyName, replaceWith) =>\n isMultipleHotkey(hotkey)\n ? hotkey.map(item => item.replaceAll(keyName, replaceWith))\n : hotkey.replaceAll(keyName, replaceWith);\n\nconst convertHotKeyToWindows = hotkey => {\n toPairs(MAC_TO_WINDOWS_KEYS_MAP).forEach(([macKey, windowsKey]) => {\n hotkey = replaceKeys(hotkey, macKey, windowsKey);\n });\n\n return hotkey;\n};\n\nexport const convertHotkeyToUsersPlatform = hotkey => {\n const parser = new UAParser(navigator.userAgent);\n const result = parser.getResult();\n const isOSX = result.os.name?.includes(OS.mac);\n if (isOSX) return hotkey;\n\n return convertHotKeyToWindows(hotkey);\n};\n\nexport const shortenHotKey = hotkey => {\n let result = hotkey;\n Object.entries(KEY_SHORTFORM_MAP).forEach(([longform, shortform]) => {\n result = result.replaceAll(longform, shortform);\n });\n\n return result;\n};\n\nexport const getGlobalShortcuts = () => ({\n [i18next.t(\"neetoMolecules.keyboardShortcuts.global.categoryName\")]: {\n openKeyboardShortcutsPane: {\n sequence: \"command+/\",\n description: i18next.t(\n \"neetoMolecules.keyboardShortcuts.global.openKeyboardShortcutsPane\"\n ),\n },\n close: {\n sequence: \"esc\",\n description: i18next.t(\"neetoMolecules.keyboardShortcuts.global.close\"),\n },\n submitForm: {\n sequence: \"command+return\",\n description: i18next.t(\n \"neetoMolecules.keyboardShortcuts.global.submitForm\"\n ),\n },\n openProductSwitcher: {\n sequence: \"command+u\",\n description: i18next.t(\n \"neetoMolecules.keyboardShortcuts.global.openProductSwitcher\"\n ),\n },\n },\n});\n\nexport const getTooltipProps = key => {\n if (TOOLTIP_CONTENT[key]) {\n return {\n position: \"top\",\n content: TOOLTIP_CONTENT[key],\n followCursor: \"horizontal\",\n };\n }\n\n return null;\n};\n","import { memo, forwardRef, Fragment } from \"react\";\n\nimport { Kbd, Tooltip } from \"@bigbinary/neeto-atoms\";\n\nimport {\n convertHotkeyToUsersPlatform,\n shortenHotKey,\n getTooltipProps,\n} from \"./utils\";\n\nconst KbdWithRef = forwardRef(({ children, ...props }, ref) => (\n <span {...{ ref, ...props }}>\n <Kbd className=\"nv-kbd\">{children}</Kbd>\n </span>\n));\nKbdWithRef.displayName = \"KbdWithRef\";\n\nconst KbdKey = ({ keyName, tooltipProps }) => {\n if (tooltipProps) {\n return (\n <Tooltip content={tooltipProps.content} position=\"top\">\n <KbdWithRef>{keyName}</KbdWithRef>\n </Tooltip>\n );\n }\n\n return <Kbd className=\"nv-kbd\">{keyName}</Kbd>;\n};\n\nconst HotKey = ({ description, sequence }) => {\n const hotkey = shortenHotKey(convertHotkeyToUsersPlatform(sequence));\n const isSequentialHotkey = hotkey.includes(\" \");\n const isSimultaneousHotkey = hotkey.includes(\"+\");\n const isSingleKeyHotkey = !isSequentialHotkey && !isSimultaneousHotkey;\n let sequences = [];\n\n if (isSingleKeyHotkey) {\n sequences = [hotkey];\n } else if (isSequentialHotkey) {\n sequences = hotkey.split(\" \");\n } else if (isSimultaneousHotkey) {\n sequences = hotkey.split(\"+\");\n }\n\n return (\n <div className=\"my-3 w-full\">\n <div\n className=\"flex items-center justify-between gap-3\"\n data-testid=\"hotkey-item\"\n >\n <span className=\"text-foreground min-w-0 flex-grow text-sm leading-normal break-words\">\n {description}\n </span>\n <div className=\"flex flex-shrink-0 items-center gap-1\">\n {sequences.map((keyName, idx) => (\n <Fragment key={idx}>\n <KbdKey\n {...{ keyName }}\n tooltipProps={getTooltipProps(keyName)}\n />\n {isSequentialHotkey && idx + 1 !== sequences.length && (\n <KbdKey keyName=\"then\" />\n )}\n </Fragment>\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default memo(HotKey);\n","import { memo } from \"react\";\n\nimport { Button } from \"@bigbinary/neeto-atoms\";\nimport { withT } from \"neetocommons/v2/react-utils\";\n\nimport { FULL_SHORTCUTS_LINK_PROP_NAME } from \"./constants\";\nimport HotKey from \"./HotKey\";\n\nconst HotKeyList = withT(({ t, hotkeys }) =>\n Object.keys(hotkeys).map(categoryName => {\n const categoryValues = hotkeys[categoryName];\n const fullShortcutsLink = categoryValues[FULL_SHORTCUTS_LINK_PROP_NAME];\n\n return (\n <div className=\"mt-4 px-4\" key={categoryName}>\n <span className=\"text-foreground text-xs font-bold uppercase\">\n {categoryName}\n </span>\n {Object.entries(categoryValues).map(\n ([, { sequence, description }]) =>\n sequence && <HotKey {...{ description, sequence }} key={sequence} />\n )}\n {fullShortcutsLink && (\n <Button asChild className=\"mb-3\" variant=\"link\">\n <a href={fullShortcutsLink} rel=\"noreferrer\" target=\"_blank\">\n {t(\"neetoMolecules.keyboardShortcuts.viewFullListOfShortcuts\")}\n </a>\n </Button>\n )}\n </div>\n );\n })\n);\n\nexport default memo(HotKeyList);\n","import { Button } from \"@bigbinary/neeto-atoms\";\nimport classnames from \"classnames\";\nimport { X } from \"lucide-react\";\nimport useHotkeys from \"neetohotkeys\";\nimport { manager } from \"neetoui/managers\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport HotKeyList from \"./HotKeyList\";\nimport { getGlobalShortcuts } from \"./utils\";\n\nimport useKeyboardShortcutsPaneState from \"../hooks/useKeyboardShortcutsPaneState\";\n\nconst KeyboardShortcutsPane = ({ productShortcuts = {} }) => {\n const [isOpen, setIsOpen] = useKeyboardShortcutsPaneState();\n const hasOverlays = manager.hasOverlays();\n // eslint-disable-next-line @bigbinary/neeto/no-dangling-constants\n const GLOBAL_SHORTCUTS = getGlobalShortcuts();\n const { t } = useTranslation();\n\n const shortcuts =\n GLOBAL_SHORTCUTS[t(\"neetoMolecules.keyboardShortcuts.global.categoryName\")];\n\n useHotkeys(\n shortcuts.openKeyboardShortcutsPane.sequence,\n () => setIsOpen(prevIsOpen => !prevIsOpen),\n { mode: \"global\" }\n );\n\n useHotkeys(shortcuts.close.sequence, () => setIsOpen(false), {\n mode: \"global\",\n enabled: isOpen,\n });\n\n return (\n <div\n data-testid=\"keyboard-shortcuts-pane\"\n style={{ zIndex: \"var(--nv-pane-z-index, 100000)\" }}\n className={classnames(\n \"border-border bg-background transition-width ms-auto h-dvh shrink-0 grow-0 overflow-hidden border-l duration-300 ease-in-out rtl:border-r rtl:border-l-0\",\n {\n \"w-80\": isOpen,\n \"w-0\": !isOpen,\n absolute: hasOverlays,\n \"end-0\": hasOverlays,\n }\n )}\n >\n <div className=\"h-full w-80 overflow-y-auto\">\n <div className=\"border-border my-2 flex items-center justify-between border-b px-4 pb-2\">\n <h4\n className=\"text-foreground text-base font-semibold\"\n data-testid=\"keyboard-shortcuts-pane-title\"\n >\n {t(\"neetoMolecules.keyboardShortcuts.title\")}\n </h4>\n <Button\n data-testid=\"keyboard-shortcuts-pane-close-button\"\n icon={X}\n size=\"icon\"\n variant=\"ghost\"\n onClick={() => setIsOpen(false)}\n />\n </div>\n <HotKeyList hotkeys={GLOBAL_SHORTCUTS} />\n <HotKeyList hotkeys={productShortcuts} />\n </div>\n </div>\n );\n};\n\nKeyboardShortcutsPane.propTypes = {\n /**\n * Used to pass in the product specific keyboard shortcuts.\n */\n productShortcuts: PropTypes.object,\n};\n\nexport default KeyboardShortcutsPane;\n","import useKeyboardShortcutsPaneState from \"./hooks/useKeyboardShortcutsPaneState\";\nimport KeyboardShortcutsPane from \"./Pane\";\nimport { getGlobalShortcuts } from \"./Pane/utils\";\n\nconst KeyboardShortcuts = {\n Pane: KeyboardShortcutsPane,\n usePaneState: useKeyboardShortcutsPaneState,\n GLOBAL_SHORTCUTS: getGlobalShortcuts(),\n};\n\nexport default KeyboardShortcuts;\n"],"names":["KEY_SHORTFORM_MAP","command","escape","control","option","MAC_TO_WINDOWS_KEYS_MAP","OS","mac","FULL_SHORTCUTS_LINK_PROP_NAME","TOOLTIP_CONTENT","esc","ctrl","opt","backspace","isMultipleHotkey","hotkey","Array","isArray","replaceKeys","keyName","replaceWith","map","item","replaceAll","convertHotKeyToWindows","toPairs","forEach","_ref","_ref2","_slicedToArray","macKey","windowsKey","convertHotkeyToUsersPlatform","_result$os$name","parser","UAParser","navigator","userAgent","result","getResult","isOSX","os","name","includes","shortenHotKey","Object","entries","_ref3","_ref4","longform","shortform","getGlobalShortcuts","_defineProperty","i18next","t","openKeyboardShortcutsPane","sequence","description","close","submitForm","openProductSwitcher","getTooltipProps","key","position","content","followCursor","KbdWithRef","forwardRef","ref","children","props","_objectWithoutProperties","_excluded","_jsx","_objectSpread","Kbd","className","displayName","KbdKey","tooltipProps","Tooltip","HotKey","isSequentialHotkey","isSimultaneousHotkey","isSingleKeyHotkey","sequences","split","_jsxs","idx","Fragment","length","memo","HotKeyList","withT","hotkeys","keys","categoryName","categoryValues","fullShortcutsLink","_ref3$","_createElement","Button","asChild","variant","href","rel","target","KeyboardShortcutsPane","_ref$productShortcuts","productShortcuts","_useKeyboardShortcuts","useKeyboardShortcutsPaneState","_useKeyboardShortcuts2","isOpen","setIsOpen","hasOverlays","manager","GLOBAL_SHORTCUTS","_useTranslation","useTranslation","shortcuts","useHotkeys","prevIsOpen","mode","enabled","style","zIndex","classnames","absolute","icon","X","size","onClick","KeyboardShortcuts","Pane","usePaneState"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"KeyboardShortcuts.js","sources":["../../../src/v2/components/KeyboardShortcuts/Pane/constants.js","../../../src/v2/components/KeyboardShortcuts/Pane/utils.js","../../../src/v2/components/KeyboardShortcuts/Pane/HotKey.jsx","../../../src/v2/components/KeyboardShortcuts/Pane/HotKeyList.jsx","../../../src/v2/components/KeyboardShortcuts/Pane/index.jsx","../../../src/v2/components/KeyboardShortcuts/index.js"],"sourcesContent":["export const KEY_SHORTFORM_MAP = {\n command: \"\\u2318\",\n escape: \"esc\",\n control: \"ctrl\",\n option: \"opt\",\n return: \"enter\",\n};\n\nexport const MAC_TO_WINDOWS_KEYS_MAP = {\n option: \"alt\",\n command: \"ctrl\",\n return: \"enter\",\n delete: \"backspace\",\n};\n\nexport const OS = { mac: \"macOS\", windows: \"Windows\" };\n\nexport const FULL_SHORTCUTS_LINK_PROP_NAME = \"fullShortcutsLink\";\n\nexport const TOOLTIP_CONTENT = {\n \"\\u2318\": \"command\",\n esc: \"escape\",\n ctrl: \"control\",\n opt: \"option\",\n backspace: \"delete\",\n};\n","import i18next from \"i18next\";\nimport { toPairs } from \"ramda\";\nimport { UAParser } from \"ua-parser-js\";\n\nimport {\n KEY_SHORTFORM_MAP,\n MAC_TO_WINDOWS_KEYS_MAP,\n OS,\n TOOLTIP_CONTENT,\n} from \"./constants\";\n\nconst isMultipleHotkey = hotkey => Array.isArray(hotkey);\n\nconst replaceKeys = (hotkey, keyName, replaceWith) =>\n isMultipleHotkey(hotkey)\n ? hotkey.map(item => item.replaceAll(keyName, replaceWith))\n : hotkey.replaceAll(keyName, replaceWith);\n\nconst convertHotKeyToWindows = hotkey => {\n toPairs(MAC_TO_WINDOWS_KEYS_MAP).forEach(([macKey, windowsKey]) => {\n hotkey = replaceKeys(hotkey, macKey, windowsKey);\n });\n\n return hotkey;\n};\n\nexport const convertHotkeyToUsersPlatform = hotkey => {\n const parser = new UAParser(navigator.userAgent);\n const result = parser.getResult();\n const isOSX = result.os.name?.includes(OS.mac);\n if (isOSX) return hotkey;\n\n return convertHotKeyToWindows(hotkey);\n};\n\nexport const shortenHotKey = hotkey => {\n let result = hotkey;\n Object.entries(KEY_SHORTFORM_MAP).forEach(([longform, shortform]) => {\n result = result.replaceAll(longform, shortform);\n });\n\n return result;\n};\n\nexport const getGlobalShortcuts = () => ({\n [i18next.t(\"neetoMolecules.keyboardShortcuts.global.categoryName\")]: {\n openKeyboardShortcutsPane: {\n sequence: \"command+/\",\n description: i18next.t(\n \"neetoMolecules.keyboardShortcuts.global.openKeyboardShortcutsPane\"\n ),\n },\n close: {\n sequence: \"esc\",\n description: i18next.t(\"neetoMolecules.keyboardShortcuts.global.close\"),\n },\n submitForm: {\n sequence: \"command+return\",\n description: i18next.t(\n \"neetoMolecules.keyboardShortcuts.global.submitForm\"\n ),\n },\n openProductSwitcher: {\n sequence: \"command+u\",\n description: i18next.t(\n \"neetoMolecules.keyboardShortcuts.global.openProductSwitcher\"\n ),\n },\n },\n});\n\nexport const getTooltipProps = key => {\n if (TOOLTIP_CONTENT[key]) {\n return {\n position: \"top\",\n content: TOOLTIP_CONTENT[key],\n followCursor: \"horizontal\",\n };\n }\n\n return null;\n};\n","import { memo, forwardRef, Fragment } from \"react\";\n\nimport { Kbd, Tooltip, Typography } from \"@bigbinary/neeto-atoms\";\n\nimport {\n convertHotkeyToUsersPlatform,\n shortenHotKey,\n getTooltipProps,\n} from \"./utils\";\n\nconst KbdWithRef = forwardRef(({ children, ...props }, ref) => (\n <span {...{ ref, ...props }}>\n <Kbd>{children}</Kbd>\n </span>\n));\nKbdWithRef.displayName = \"KbdWithRef\";\n\nconst KbdKey = ({ keyName, tooltipProps }) => {\n if (tooltipProps) {\n return (\n <Tooltip content={tooltipProps.content} position=\"top\">\n <KbdWithRef>{keyName}</KbdWithRef>\n </Tooltip>\n );\n }\n\n return <Kbd>{keyName}</Kbd>;\n};\n\nconst HotKey = ({ description, sequence }) => {\n const hotkey = shortenHotKey(convertHotkeyToUsersPlatform(sequence));\n const isSequentialHotkey = hotkey.includes(\" \");\n const isSimultaneousHotkey = hotkey.includes(\"+\");\n const isSingleKeyHotkey = !isSequentialHotkey && !isSimultaneousHotkey;\n let sequences = [];\n\n if (isSingleKeyHotkey) {\n sequences = [hotkey];\n } else if (isSequentialHotkey) {\n sequences = hotkey.split(\" \");\n } else if (isSimultaneousHotkey) {\n sequences = hotkey.split(\"+\");\n }\n\n return (\n <div className=\"my-3 w-full\">\n <div\n className=\"flex items-center justify-between gap-3\"\n data-testid=\"hotkey-item\"\n >\n <Typography as=\"span\" className=\"min-w-0 flex-grow break-words\">\n {description}\n </Typography>\n <div className=\"flex flex-shrink-0 items-center gap-1\">\n {sequences.map((keyName, idx) => (\n <Fragment key={idx}>\n <KbdKey\n {...{ keyName }}\n tooltipProps={getTooltipProps(keyName)}\n />\n {isSequentialHotkey && idx + 1 !== sequences.length && (\n <KbdKey keyName=\"then\" />\n )}\n </Fragment>\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default memo(HotKey);\n","import { memo } from \"react\";\n\nimport { Button, Typography } from \"@bigbinary/neeto-atoms\";\nimport { withT } from \"neetocommons/v2/react-utils\";\n\nimport { FULL_SHORTCUTS_LINK_PROP_NAME } from \"./constants\";\nimport HotKey from \"./HotKey\";\n\nconst HotKeyList = withT(({ t, hotkeys }) =>\n Object.keys(hotkeys).map(categoryName => {\n const categoryValues = hotkeys[categoryName];\n const fullShortcutsLink = categoryValues[FULL_SHORTCUTS_LINK_PROP_NAME];\n\n return (\n <div className=\"mt-4 px-4\" key={categoryName}>\n <Typography className=\"uppercase\" variant=\"caption\" weight=\"bold\">\n {categoryName}\n </Typography>\n {Object.entries(categoryValues).map(\n ([, { sequence, description }]) =>\n sequence && <HotKey {...{ description, sequence }} key={sequence} />\n )}\n {fullShortcutsLink && (\n <Button asChild className=\"mb-3\" variant=\"link\">\n <a href={fullShortcutsLink} rel=\"noreferrer\" target=\"_blank\">\n {t(\"neetoMolecules.keyboardShortcuts.viewFullListOfShortcuts\")}\n </a>\n </Button>\n )}\n </div>\n );\n })\n);\n\nexport default memo(HotKeyList);\n","import { Button, Typography } from \"@bigbinary/neeto-atoms\";\nimport classnames from \"classnames\";\nimport { X } from \"lucide-react\";\nimport useHotkeys from \"neetohotkeys\";\nimport { manager } from \"neetoui/managers\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport HotKeyList from \"./HotKeyList\";\nimport { getGlobalShortcuts } from \"./utils\";\n\nimport useKeyboardShortcutsPaneState from \"../hooks/useKeyboardShortcutsPaneState\";\n\nconst KeyboardShortcutsPane = ({ productShortcuts = {} }) => {\n const [isOpen, setIsOpen] = useKeyboardShortcutsPaneState();\n const hasOverlays = manager.hasOverlays();\n // eslint-disable-next-line @bigbinary/neeto/no-dangling-constants\n const GLOBAL_SHORTCUTS = getGlobalShortcuts();\n const { t } = useTranslation();\n\n const shortcuts =\n GLOBAL_SHORTCUTS[t(\"neetoMolecules.keyboardShortcuts.global.categoryName\")];\n\n useHotkeys(\n shortcuts.openKeyboardShortcutsPane.sequence,\n () => setIsOpen(prevIsOpen => !prevIsOpen),\n { mode: \"global\" }\n );\n\n useHotkeys(shortcuts.close.sequence, () => setIsOpen(false), {\n mode: \"global\",\n enabled: isOpen,\n });\n\n return (\n <div\n data-testid=\"keyboard-shortcuts-pane\"\n style={{ zIndex: \"var(--nv-pane-z-index, 100000)\" }}\n className={classnames(\n \"border-border bg-background transition-width ms-auto h-dvh shrink-0 grow-0 overflow-hidden border-l duration-300 ease-in-out rtl:border-r rtl:border-l-0\",\n {\n \"w-80\": isOpen,\n \"w-0\": !isOpen,\n absolute: hasOverlays,\n \"end-0\": hasOverlays,\n }\n )}\n >\n <div className=\"h-full w-80 overflow-y-auto\">\n <div className=\"border-border my-2 flex items-center justify-between border-b px-4 pb-2\">\n <Typography\n as=\"h4\"\n data-testid=\"keyboard-shortcuts-pane-title\"\n variant=\"h6\"\n >\n {t(\"neetoMolecules.keyboardShortcuts.title\")}\n </Typography>\n <Button\n data-testid=\"keyboard-shortcuts-pane-close-button\"\n icon={X}\n size=\"icon\"\n variant=\"ghost\"\n onClick={() => setIsOpen(false)}\n />\n </div>\n <HotKeyList hotkeys={GLOBAL_SHORTCUTS} />\n <HotKeyList hotkeys={productShortcuts} />\n </div>\n </div>\n );\n};\n\nKeyboardShortcutsPane.propTypes = {\n /**\n * Used to pass in the product specific keyboard shortcuts.\n */\n productShortcuts: PropTypes.object,\n};\n\nexport default KeyboardShortcutsPane;\n","import useKeyboardShortcutsPaneState from \"./hooks/useKeyboardShortcutsPaneState\";\nimport KeyboardShortcutsPane from \"./Pane\";\nimport { getGlobalShortcuts } from \"./Pane/utils\";\n\nconst KeyboardShortcuts = {\n Pane: KeyboardShortcutsPane,\n usePaneState: useKeyboardShortcutsPaneState,\n GLOBAL_SHORTCUTS: getGlobalShortcuts(),\n};\n\nexport default KeyboardShortcuts;\n"],"names":["KEY_SHORTFORM_MAP","command","escape","control","option","MAC_TO_WINDOWS_KEYS_MAP","OS","mac","FULL_SHORTCUTS_LINK_PROP_NAME","TOOLTIP_CONTENT","esc","ctrl","opt","backspace","isMultipleHotkey","hotkey","Array","isArray","replaceKeys","keyName","replaceWith","map","item","replaceAll","convertHotKeyToWindows","toPairs","forEach","_ref","_ref2","_slicedToArray","macKey","windowsKey","convertHotkeyToUsersPlatform","_result$os$name","parser","UAParser","navigator","userAgent","result","getResult","isOSX","os","name","includes","shortenHotKey","Object","entries","_ref3","_ref4","longform","shortform","getGlobalShortcuts","_defineProperty","i18next","t","openKeyboardShortcutsPane","sequence","description","close","submitForm","openProductSwitcher","getTooltipProps","key","position","content","followCursor","KbdWithRef","forwardRef","ref","children","props","_objectWithoutProperties","_excluded","_jsx","_objectSpread","Kbd","displayName","KbdKey","tooltipProps","Tooltip","HotKey","isSequentialHotkey","isSimultaneousHotkey","isSingleKeyHotkey","sequences","split","className","_jsxs","Typography","as","idx","Fragment","length","memo","HotKeyList","withT","hotkeys","keys","categoryName","categoryValues","fullShortcutsLink","variant","weight","_ref3$","_createElement","Button","asChild","href","rel","target","KeyboardShortcutsPane","_ref$productShortcuts","productShortcuts","_useKeyboardShortcuts","useKeyboardShortcutsPaneState","_useKeyboardShortcuts2","isOpen","setIsOpen","hasOverlays","manager","GLOBAL_SHORTCUTS","_useTranslation","useTranslation","shortcuts","useHotkeys","prevIsOpen","mode","enabled","style","zIndex","classnames","absolute","icon","X","size","onClick","KeyboardShortcuts","Pane","usePaneState"],"mappings":"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"}
|
|
@@ -195,10 +195,8 @@ var SyntaxHighlighter = /*#__PURE__*/React.memo(SyntaxHighlighter$1);
|
|
|
195
195
|
|
|
196
196
|
var CodeBlock = function CodeBlock(_ref) {
|
|
197
197
|
var _ref$title = _ref.title,
|
|
198
|
-
title = _ref$title === void 0 ? /*#__PURE__*/jsxRuntime.jsx(
|
|
199
|
-
|
|
200
|
-
i18nKey: "neetoMolecules.codeblock.codeSnippet"
|
|
201
|
-
})
|
|
198
|
+
title = _ref$title === void 0 ? /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
|
|
199
|
+
i18nKey: "neetoMolecules.codeblock.codeSnippet"
|
|
202
200
|
}) : _ref$title,
|
|
203
201
|
codeString = _ref.codeString,
|
|
204
202
|
_ref$showCopyButton = _ref.showCopyButton,
|
|
@@ -219,9 +217,10 @@ var CodeBlock = function CodeBlock(_ref) {
|
|
|
219
217
|
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
220
218
|
className: "border-border bg-muted flex w-full flex-wrap items-center justify-between gap-2 rounded-lg rounded-b-none border p-3",
|
|
221
219
|
children: [title && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
|
|
222
|
-
|
|
220
|
+
as: "h4",
|
|
221
|
+
className: "flex-shrink-0",
|
|
223
222
|
"data-testid": "code-block-title-text",
|
|
224
|
-
variant: "
|
|
223
|
+
variant: "h6",
|
|
225
224
|
children: title
|
|
226
225
|
}), selectedFramework && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Select, {
|
|
227
226
|
className: "max-w-40",
|
|
@@ -232,7 +231,7 @@ var CodeBlock = function CodeBlock(_ref) {
|
|
|
232
231
|
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
233
232
|
className: "ms-auto flex flex-shrink-0 items-center justify-end gap-2",
|
|
234
233
|
children: sendViaEmail ? /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
|
|
235
|
-
variant: "
|
|
234
|
+
variant: "outline",
|
|
236
235
|
label: t("neetoMolecules.widget.installation.snippet.sendViaEmail"),
|
|
237
236
|
onClick: sendViaEmail
|
|
238
237
|
}) : null
|
|
@@ -245,7 +244,7 @@ var CodeBlock = function CodeBlock(_ref) {
|
|
|
245
244
|
variant: "secondary",
|
|
246
245
|
tooltipContent: t("neetoMolecules.widget.installation.snippet.copy")
|
|
247
246
|
}), /*#__PURE__*/jsxRuntime.jsx(SyntaxHighlighter, {
|
|
248
|
-
className: "m-0 rounded-lg rounded-t-none pt-4",
|
|
247
|
+
className: "!m-0 min-h-16 rounded-lg rounded-t-none pt-4",
|
|
249
248
|
code: codeString,
|
|
250
249
|
language: "javascript"
|
|
251
250
|
})]
|
|
@@ -406,7 +405,7 @@ var CodeSnippet = function CodeSnippet(_ref) {
|
|
|
406
405
|
emailMutation.mutate({
|
|
407
406
|
subject: formData.subject,
|
|
408
407
|
emails: ramda.pluck("value", formData.emails),
|
|
409
|
-
message: (_body$ref$current$inn = (_body$ref = body.ref) === null || _body$ref === void 0 ? void 0 : _body$ref.
|
|
408
|
+
message: (_body$ref$current$inn = body === null || body === void 0 || (_body$ref = body.ref) === null || _body$ref === void 0 || (_body$ref = _body$ref.current) === null || _body$ref === void 0 ? void 0 : _body$ref.innerHTML) !== null && _body$ref$current$inn !== void 0 ? _body$ref$current$inn : body,
|
|
410
409
|
snippet: codeToDisplay
|
|
411
410
|
});
|
|
412
411
|
};
|
|
@@ -433,6 +432,7 @@ var CodeSnippet = function CodeSnippet(_ref) {
|
|
|
433
432
|
validationSchema: getEmailWidgetSnippetValidationSchema(),
|
|
434
433
|
onSubmit: handleSubmit,
|
|
435
434
|
children: /*#__PURE__*/jsxRuntime.jsxs(formik.Form, {
|
|
435
|
+
className: "flex min-h-0 flex-1 flex-col",
|
|
436
436
|
children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Sheet.Header, {
|
|
437
437
|
children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Sheet.Title, {
|
|
438
438
|
children: t("neetoMolecules.widget.email.title")
|
|
@@ -451,6 +451,8 @@ var CodeSnippet = function CodeSnippet(_ref) {
|
|
|
451
451
|
name: "subject",
|
|
452
452
|
type: "text"
|
|
453
453
|
}), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
|
|
454
|
+
as: "div",
|
|
455
|
+
className: "min-w-0 break-words [&_a]:inline [&_a]:break-all [&_a]:whitespace-normal [&_a_span]:inline",
|
|
454
456
|
variant: "body2",
|
|
455
457
|
children: body
|
|
456
458
|
}), /*#__PURE__*/jsxRuntime.jsx(CodeBlock, _objectSpread$3({}, renderCodeBlockProps()))]
|
|
@@ -749,9 +751,7 @@ var EmbedCode$1 = function EmbedCode(_ref) {
|
|
|
749
751
|
sendViaEmail: function sendViaEmail() {
|
|
750
752
|
return handleSendViaEmail(EMAIL_TYPES.embedCode);
|
|
751
753
|
},
|
|
752
|
-
title:
|
|
753
|
-
children: t("neetoMolecules.widget.title.embedCode")
|
|
754
|
-
})
|
|
754
|
+
title: t("neetoMolecules.widget.title.embedCode")
|
|
755
755
|
})
|
|
756
756
|
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
757
757
|
className: "w-full",
|