diff --git a/CHANGELOG.md b/CHANGELOG.md index 86a6574dd2..9120a9e834 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,10 @@ and this project adheres to ## [Unreleased] +## Fixed + +🐛(frontend) link not clickable and flickering firefox #457 + ## [1.8.0] - 2024-11-25 diff --git a/src/frontend/apps/impress/package.json b/src/frontend/apps/impress/package.json index 7cdb3941e1..c6218d313e 100644 --- a/src/frontend/apps/impress/package.json +++ b/src/frontend/apps/impress/package.json @@ -66,6 +66,6 @@ "stylelint-prettier": "5.0.2", "typescript": "*", "webpack": "5.96.1", - "workbox-webpack-plugin": "7.3.0" + "workbox-webpack-plugin": "7.1.0" } } diff --git a/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteEditor.tsx b/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteEditor.tsx index d0e741ca3a..8c04127b8a 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteEditor.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteEditor.tsx @@ -4,16 +4,14 @@ import { BlockNoteView } from '@blocknote/mantine'; import '@blocknote/mantine/style.css'; import { useCreateBlockNote } from '@blocknote/react'; import { HocuspocusProvider } from '@hocuspocus/provider'; -import { t } from 'i18next'; -import React, { useCallback, useEffect } from 'react'; +import React, { useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import { Box, TextErrors } from '@/components'; import { useAuthStore } from '@/core/auth'; -import { useMediaUrl } from '@/core/config'; import { Doc } from '@/features/docs/doc-management'; -import { useCreateDocAttachment } from '../api/useCreateDocUpload'; +import { useUploadFile } from '../hook'; import useSaveDoc from '../hook/useSaveDoc'; import { useEditorStore, useHeadingStore } from '../stores'; import { randomColor } from '../utils'; @@ -26,17 +24,8 @@ const cssEditor = (readonly: boolean) => ` }; & .bn-editor { padding-right: 30px; - ${ - readonly && - ` - padding-left: 30px; - pointer-events: none; - ` - } + ${readonly && `padding-left: 30px;`} }; - & .collaboration-cursor__caret.ProseMirror-widget{ - word-wrap: initial; - } & .bn-inline-content code { background-color: gainsboro; padding: 2px; @@ -87,33 +76,19 @@ export const BlockNoteEditor = ({ const isVersion = doc.id !== storeId; const { userData } = useAuthStore(); const { setEditor } = useEditorStore(); - const mediaUrl = useMediaUrl(); - + const { t } = useTranslation(); const readOnly = !doc.abilities.partial_update || isVersion; useSaveDoc(doc.id, provider.document, !readOnly); - const { - mutateAsync: createDocAttachment, - isError: isErrorAttachment, - error: errorAttachment, - } = useCreateDocAttachment(); const { setHeadings, resetHeadings } = useHeadingStore(); const { i18n } = useTranslation(); const lang = i18n.language; - const uploadFile = useCallback( - async (file: File) => { - const body = new FormData(); - body.append('file', file); + const { uploadFile, errorAttachment } = useUploadFile(doc.id); - const ret = await createDocAttachment({ - docId: doc.id, - body, - }); - - return `${mediaUrl}${ret.file}`; - }, - [createDocAttachment, doc.id, mediaUrl], - ); + const collabName = + userData?.full_name || + userData?.email || + (readOnly ? 'Reader' : t('Anonymous')); const editor = useCreateBlockNote( { @@ -121,14 +96,39 @@ export const BlockNoteEditor = ({ provider, fragment: provider.document.getXmlFragment('document-store'), user: { - name: userData?.full_name || userData?.email || t('Anonymous'), + name: collabName, color: randomColor(), }, + /** + * We re-use the blocknote code to render the cursor but we: + * - fix rendering issue with Firefox + * - We don't want to show the cursor when anonymous users + */ + renderCursor: (user: { color: string; name: string }) => { + const cursor = document.createElement('span'); + + if (user.name === 'Reader') { + return cursor; + } + + cursor.classList.add('collaboration-cursor__caret'); + cursor.setAttribute('style', `border-color: ${user.color}`); + + const label = document.createElement('span'); + + label.classList.add('collaboration-cursor__label'); + label.setAttribute('style', `background-color: ${user.color}`); + label.insertBefore(document.createTextNode(user.name), null); + + cursor.insertBefore(label, null); + + return cursor; + }, }, dictionary: locales[lang as keyof typeof locales] as Dictionary, uploadFile, }, - [lang, provider, uploadFile, userData?.email, userData?.full_name], + [collabName, lang, provider, uploadFile], ); useEffect(() => { @@ -153,7 +153,7 @@ export const BlockNoteEditor = ({ return ( - {isErrorAttachment && ( + {errorAttachment && ( { + const mediaUrl = useMediaUrl(); + const { + mutateAsync: createDocAttachment, + isError: isErrorAttachment, + error: errorAttachment, + } = useCreateDocAttachment(); + + const uploadFile = useCallback( + async (file: File) => { + const body = new FormData(); + body.append('file', file); + + const ret = await createDocAttachment({ + docId, + body, + }); + + return `${mediaUrl}${ret.file}`; + }, + [createDocAttachment, docId, mediaUrl], + ); + + return { + uploadFile, + isErrorAttachment, + errorAttachment, + }; +}; diff --git a/src/frontend/apps/impress/src/features/docs/doc-header/components/ModalExport.tsx b/src/frontend/apps/impress/src/features/docs/doc-header/components/ModalExport.tsx index b4507f8e1f..240ca6a503 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-header/components/ModalExport.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-header/components/ModalExport.tsx @@ -10,8 +10,8 @@ import { VariantType, useToastProvider, } from '@openfun/cunningham-react'; -import { t } from 'i18next'; import { useEffect, useMemo, useState } from 'react'; +import { useTranslation } from 'react-i18next'; import { Box, Text } from '@/components'; import { useEditorStore } from '@/features/docs/doc-editor'; @@ -27,6 +27,7 @@ interface ModalPDFProps { } export const ModalPDF = ({ onClose, doc }: ModalPDFProps) => { + const { t } = useTranslation(); const { data: templates } = useTemplates({ ordering: TemplatesOrdering.BY_CREATED_ON_DESC, }); diff --git a/src/frontend/apps/impress/src/features/docs/doc-management/components/ModalRemoveDoc.tsx b/src/frontend/apps/impress/src/features/docs/doc-management/components/ModalRemoveDoc.tsx index 6b341b70bb..3841d503e0 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-management/components/ModalRemoveDoc.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-management/components/ModalRemoveDoc.tsx @@ -6,8 +6,8 @@ import { VariantType, useToastProvider, } from '@openfun/cunningham-react'; -import { t } from 'i18next'; import { useRouter } from 'next/router'; +import { useTranslation } from 'react-i18next'; import { Box, Text, TextErrors } from '@/components'; import { useCunninghamTheme } from '@/cunningham/'; @@ -22,6 +22,7 @@ interface ModalRemoveDocProps { } export const ModalRemoveDoc = ({ onClose, doc }: ModalRemoveDocProps) => { + const { t } = useTranslation(); const { colorsTokens } = useCunninghamTheme(); const { toast } = useToastProvider(); const { push } = useRouter(); diff --git a/src/frontend/apps/impress/src/features/docs/doc-management/components/ModalShare.tsx b/src/frontend/apps/impress/src/features/docs/doc-management/components/ModalShare.tsx index 278d9fb1e4..f55c97f2b8 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-management/components/ModalShare.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-management/components/ModalShare.tsx @@ -3,7 +3,7 @@ import { VariantType, useToastProvider, } from '@openfun/cunningham-react'; -import { t } from 'i18next'; +import { useTranslation } from 'react-i18next'; import { createGlobalStyle } from 'styled-components'; import { Box, Card, IconBG, SideModal, Text } from '@/components'; @@ -44,6 +44,7 @@ interface ModalShareProps { } export const ModalShare = ({ onClose, doc }: ModalShareProps) => { + const { t } = useTranslation(); const { isMobile, isSmallMobile } = useResponsiveStore(); const width = isSmallMobile ? '100vw' : isMobile ? '90vw' : '70vw'; const { toast } = useToastProvider(); diff --git a/src/frontend/apps/impress/src/features/docs/doc-versioning/components/ModalVersion.tsx b/src/frontend/apps/impress/src/features/docs/doc-versioning/components/ModalVersion.tsx index c1046176d8..7bc4504696 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-versioning/components/ModalVersion.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-versioning/components/ModalVersion.tsx @@ -6,8 +6,8 @@ import { VariantType, useToastProvider, } from '@openfun/cunningham-react'; -import { t } from 'i18next'; import { useRouter } from 'next/router'; +import { useTranslation } from 'react-i18next'; import * as Y from 'yjs'; import { Box, Text } from '@/components'; @@ -30,6 +30,7 @@ export const ModalVersion = ({ docId, versionId, }: ModalVersionProps) => { + const { t } = useTranslation(); const { toast } = useToastProvider(); const { push } = useRouter(); const { providers } = useDocStore(); diff --git a/src/frontend/apps/impress/src/features/docs/doc-versioning/components/VersionItem.tsx b/src/frontend/apps/impress/src/features/docs/doc-versioning/components/VersionItem.tsx index 5dcf0e9f15..626d6ff1ae 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-versioning/components/VersionItem.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-versioning/components/VersionItem.tsx @@ -1,6 +1,6 @@ import { Button } from '@openfun/cunningham-react'; -import { t } from 'i18next'; import React, { PropsWithChildren, useState } from 'react'; +import { useTranslation } from 'react-i18next'; import { Box, DropButton, IconOptions, StyledLink, Text } from '@/components'; import { useCunninghamTheme } from '@/cunningham'; @@ -25,6 +25,7 @@ export const VersionItem = ({ link, isActive, }: VersionItemProps) => { + const { t } = useTranslation(); const { colorsTokens } = useCunninghamTheme(); const [isDropOpen, setIsDropOpen] = useState(false); const [isModalVersionOpen, setIsModalVersionOpen] = useState(false); diff --git a/src/frontend/yarn.lock b/src/frontend/yarn.lock index 357288ed33..b18fbd833a 100644 --- a/src/frontend/yarn.lock +++ b/src/frontend/yarn.lock @@ -12900,25 +12900,25 @@ word-wrap@^1.2.5: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== -workbox-background-sync@7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-7.3.0.tgz#b6340731a8d5b42b9e75a8a87c8806928e6e6303" - integrity sha512-PCSk3eK7Mxeuyatb22pcSx9dlgWNv3+M8PqPaYDokks8Y5/FX4soaOqj3yhAZr5k6Q5JWTOMYgaJBpbw11G9Eg== +workbox-background-sync@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-7.1.0.tgz#dac65e30af603511f1c92c3e99f53d6c064fde90" + integrity sha512-rMbgrzueVWDFcEq1610YyDW71z0oAXLfdRHRQcKw4SGihkfOK0JUEvqWHFwA6rJ+6TClnMIn7KQI5PNN1XQXwQ== dependencies: idb "^7.0.1" - workbox-core "7.3.0" + workbox-core "7.1.0" -workbox-broadcast-update@7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-7.3.0.tgz#bff86b91795c4b9fa46a758d1a7a151828623280" - integrity sha512-T9/F5VEdJVhwmrIAE+E/kq5at2OY6+OXXgOWQevnubal6sO92Gjo24v6dCVwQiclAF5NS3hlmsifRrpQzZCdUA== +workbox-broadcast-update@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-7.1.0.tgz#fe21c491cc70f1e037898bba63de0752ef59bd82" + integrity sha512-O36hIfhjej/c5ar95pO67k1GQw0/bw5tKP7CERNgK+JdxBANQhDmIuOXZTNvwb2IHBx9hj2kxvcDyRIh5nzOgQ== dependencies: - workbox-core "7.3.0" + workbox-core "7.1.0" -workbox-build@7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-7.3.0.tgz#ab688f3241b32862236aeeb62b240195f1fe4b62" - integrity sha512-JGL6vZTPlxnlqZRhR/K/msqg3wKP+m0wfEUVosK7gsYzSgeIxvZLi1ViJJzVL7CEeI8r7rGFV973RiEqkP3lWQ== +workbox-build@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-7.1.0.tgz#64d1532f1b9ad04d2b8b43ce0b9af06ba3fdd159" + integrity sha512-F6R94XAxjB2j4ETMkP1EXKfjECOtDmyvt0vz3BzgWJMI68TNSXIVNkgatwUKBlPGOfy9n2F/4voYRNAhEvPJNg== dependencies: "@apideck/better-ajv-errors" "^0.3.1" "@babel/core" "^7.24.4" @@ -12942,132 +12942,132 @@ workbox-build@7.3.0: strip-comments "^2.0.1" tempy "^0.6.0" upath "^1.2.0" - workbox-background-sync "7.3.0" - workbox-broadcast-update "7.3.0" - workbox-cacheable-response "7.3.0" - workbox-core "7.3.0" - workbox-expiration "7.3.0" - workbox-google-analytics "7.3.0" - workbox-navigation-preload "7.3.0" - workbox-precaching "7.3.0" - workbox-range-requests "7.3.0" - workbox-recipes "7.3.0" - workbox-routing "7.3.0" - workbox-strategies "7.3.0" - workbox-streams "7.3.0" - workbox-sw "7.3.0" - workbox-window "7.3.0" - -workbox-cacheable-response@7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-7.3.0.tgz#557b0f5fdfceb22fe243e3f19807c76a0ae646e3" - integrity sha512-eAFERIg6J2LuyELhLlmeRcJFa5e16Mj8kL2yCDbhWE+HUun9skRQrGIFVUagqWj4DMaaPSMWfAolM7XZZxNmxA== - dependencies: - workbox-core "7.3.0" - -workbox-core@7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-7.3.0.tgz#f24fb92041a0b7482fe2dd856544aaa9fa105248" - integrity sha512-Z+mYrErfh4t3zi7NVTvOuACB0A/jA3bgxUN3PwtAVHvfEsZxV9Iju580VEETug3zYJRc0Dmii/aixI/Uxj8fmw== - -workbox-expiration@7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-7.3.0.tgz#2c1ee1fdada34aa7e7474f706d5429c914bd10d2" - integrity sha512-lpnSSLp2BM+K6bgFCWc5bS1LR5pAwDWbcKt1iL87/eTSJRdLdAwGQznZE+1czLgn/X05YChsrEegTNxjM067vQ== + workbox-background-sync "7.1.0" + workbox-broadcast-update "7.1.0" + workbox-cacheable-response "7.1.0" + workbox-core "7.1.0" + workbox-expiration "7.1.0" + workbox-google-analytics "7.1.0" + workbox-navigation-preload "7.1.0" + workbox-precaching "7.1.0" + workbox-range-requests "7.1.0" + workbox-recipes "7.1.0" + workbox-routing "7.1.0" + workbox-strategies "7.1.0" + workbox-streams "7.1.0" + workbox-sw "7.1.0" + workbox-window "7.1.0" + +workbox-cacheable-response@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-7.1.0.tgz#d138cc8ef2c32a9f28f29c5b2b0a8681da846c33" + integrity sha512-iwsLBll8Hvua3xCuBB9h92+/e0wdsmSVgR2ZlvcfjepZWwhd3osumQB3x9o7flj+FehtWM2VHbZn8UJeBXXo6Q== + dependencies: + workbox-core "7.1.0" + +workbox-core@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-7.1.0.tgz#1867576f994f20d9991b71a7d0b2581af22db170" + integrity sha512-5KB4KOY8rtL31nEF7BfvU7FMzKT4B5TkbYa2tzkS+Peqj0gayMT9SytSFtNzlrvMaWgv6y/yvP9C0IbpFjV30Q== + +workbox-expiration@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-7.1.0.tgz#c9d348ffc8c3d1ffdddaf6c37bf5be830a69073e" + integrity sha512-m5DcMY+A63rJlPTbbBNtpJ20i3enkyOtSgYfv/l8h+D6YbbNiA0zKEkCUaMsdDlxggla1oOfRkyqTvl5Ni5KQQ== dependencies: idb "^7.0.1" - workbox-core "7.3.0" + workbox-core "7.1.0" -workbox-google-analytics@7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-7.3.0.tgz#3c4d4956c0a9800dfb587d82ec8bc0f9cf963791" - integrity sha512-ii/tSfFdhjLHZ2BrYgFNTrb/yk04pw2hasgbM70jpZfLk0vdJAXgaiMAWsoE+wfJDNWoZmBYY0hMVI0v5wWDbg== +workbox-google-analytics@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-7.1.0.tgz#25cca57a05554b6121521590543e59628eb15a65" + integrity sha512-FvE53kBQHfVTcZyczeBVRexhh7JTkyQ8HAvbVY6mXd2n2A7Oyz/9fIwnY406ZcDhvE4NFfKGjW56N4gBiqkrew== dependencies: - workbox-background-sync "7.3.0" - workbox-core "7.3.0" - workbox-routing "7.3.0" - workbox-strategies "7.3.0" + workbox-background-sync "7.1.0" + workbox-core "7.1.0" + workbox-routing "7.1.0" + workbox-strategies "7.1.0" -workbox-navigation-preload@7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-7.3.0.tgz#9d54693b9179d5175e66af5ef9a92d1b7cf3e605" - integrity sha512-fTJzogmFaTv4bShZ6aA7Bfj4Cewaq5rp30qcxl2iYM45YD79rKIhvzNHiFj1P+u5ZZldroqhASXwwoyusnr2cg== +workbox-navigation-preload@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-7.1.0.tgz#2610674d412a1774b5d9f03c9644c9964407b8b6" + integrity sha512-4wyAbo0vNI/X0uWNJhCMKxnPanNyhybsReMGN9QUpaePLTiDpKxPqFxl4oUmBNddPwIXug01eTSLVIFXimRG/A== dependencies: - workbox-core "7.3.0" + workbox-core "7.1.0" -workbox-precaching@7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-7.3.0.tgz#a84663d69efdb334f25c04dba0a72ed3391c4da8" - integrity sha512-ckp/3t0msgXclVAYaNndAGeAoWQUv7Rwc4fdhWL69CCAb2UHo3Cef0KIUctqfQj1p8h6aGyz3w8Cy3Ihq9OmIw== +workbox-precaching@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-7.1.0.tgz#71e27ec2e85661a41b48dec0c92dae707c429eaa" + integrity sha512-LyxzQts+UEpgtmfnolo0hHdNjoB7EoRWcF7EDslt+lQGd0lW4iTvvSe3v5JiIckQSB5KTW5xiCqjFviRKPj1zA== dependencies: - workbox-core "7.3.0" - workbox-routing "7.3.0" - workbox-strategies "7.3.0" + workbox-core "7.1.0" + workbox-routing "7.1.0" + workbox-strategies "7.1.0" -workbox-range-requests@7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-7.3.0.tgz#1b3d5c235a0ff5271418c3a7183281dc131ccd0d" - integrity sha512-EyFmM1KpDzzAouNF3+EWa15yDEenwxoeXu9bgxOEYnFfCxns7eAxA9WSSaVd8kujFFt3eIbShNqa4hLQNFvmVQ== +workbox-range-requests@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-7.1.0.tgz#8d4344cd85b87d8077289a64dda59fb614628783" + integrity sha512-m7+O4EHolNs5yb/79CrnwPR/g/PRzMFYEdo01LqwixVnc/sbzNSvKz0d04OE3aMRel1CwAAZQheRsqGDwATgPQ== dependencies: - workbox-core "7.3.0" + workbox-core "7.1.0" -workbox-recipes@7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-7.3.0.tgz#fa407101e8ce52850dfba8e17a5afccb733a3942" - integrity sha512-BJro/MpuW35I/zjZQBcoxsctgeB+kyb2JAP5EB3EYzePg8wDGoQuUdyYQS+CheTb+GhqJeWmVs3QxLI8EBP1sg== +workbox-recipes@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-7.1.0.tgz#37625cd2fe7e5decd70c8934a673a7cc080a7675" + integrity sha512-NRrk4ycFN9BHXJB6WrKiRX3W3w75YNrNrzSX9cEZgFB5ubeGoO8s/SDmOYVrFYp9HMw6sh1Pm3eAY/1gVS8YLg== dependencies: - workbox-cacheable-response "7.3.0" - workbox-core "7.3.0" - workbox-expiration "7.3.0" - workbox-precaching "7.3.0" - workbox-routing "7.3.0" - workbox-strategies "7.3.0" + workbox-cacheable-response "7.1.0" + workbox-core "7.1.0" + workbox-expiration "7.1.0" + workbox-precaching "7.1.0" + workbox-routing "7.1.0" + workbox-strategies "7.1.0" -workbox-routing@7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-7.3.0.tgz#fc86296bc1155c112ee2c16b3180853586c30208" - integrity sha512-ZUlysUVn5ZUzMOmQN3bqu+gK98vNfgX/gSTZ127izJg/pMMy4LryAthnYtjuqcjkN4HEAx1mdgxNiKJMZQM76A== +workbox-routing@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-7.1.0.tgz#c44bda350d1c5eb633ee97a660e64ce5473250c4" + integrity sha512-oOYk+kLriUY2QyHkIilxUlVcFqwduLJB7oRZIENbqPGeBP/3TWHYNNdmGNhz1dvKuw7aqvJ7CQxn27/jprlTdg== dependencies: - workbox-core "7.3.0" + workbox-core "7.1.0" -workbox-strategies@7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-7.3.0.tgz#bb1530f205806895aacdea3639e6cf6bfb3a6cb0" - integrity sha512-tmZydug+qzDFATwX7QiEL5Hdf7FrkhjaF9db1CbB39sDmEZJg3l9ayDvPxy8Y18C3Y66Nrr9kkN1f/RlkDgllg== +workbox-strategies@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-7.1.0.tgz#a589f2adc0df8f33049c7f4d4cdf4c9556715918" + integrity sha512-/UracPiGhUNehGjRm/tLUQ+9PtWmCbRufWtV0tNrALuf+HZ4F7cmObSEK+E4/Bx1p8Syx2tM+pkIrvtyetdlew== dependencies: - workbox-core "7.3.0" + workbox-core "7.1.0" -workbox-streams@7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-7.3.0.tgz#a4c0ae51b66121a2aa6f89229e237aca6dc27eb5" - integrity sha512-SZnXucyg8x2Y61VGtDjKPO5EgPUG5NDn/v86WYHX+9ZqvAsGOytP0Jxp1bl663YUuMoXSAtsGLL+byHzEuMRpw== +workbox-streams@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-7.1.0.tgz#8e080e56b5dee7aa0f956fdd3a10506821d2e786" + integrity sha512-WyHAVxRXBMfysM8ORwiZnI98wvGWTVAq/lOyBjf00pXFvG0mNaVz4Ji+u+fKa/mf1i2SnTfikoYKto4ihHeS6w== dependencies: - workbox-core "7.3.0" - workbox-routing "7.3.0" + workbox-core "7.1.0" + workbox-routing "7.1.0" -workbox-sw@7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-7.3.0.tgz#39215017e868d7cfe6835b2961f55369d89b3e73" - integrity sha512-aCUyoAZU9IZtH05mn0ACUpyHzPs0lMeJimAYkQkBsOWiqaJLgusfDCR+yllkPkFRxWpZKF8vSvgHYeG7LwhlmA== +workbox-sw@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-7.1.0.tgz#3df97d7cccb647eb94d66be7dc733c9fda26b9fc" + integrity sha512-Hml/9+/njUXBglv3dtZ9WBKHI235AQJyLBV1G7EFmh4/mUdSQuXui80RtjDeVRrXnm/6QWgRUEHG3/YBVbxtsA== -workbox-webpack-plugin@7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-7.3.0.tgz#e19d2836e2db4f1f4b68d5a8b354f5c407d190c3" - integrity sha512-EC8lmSAuNmPli04+a5r5lTgv8ab+f5l+XjdYuYpbGnxDT15kH6DBeBazVslpffqTDHt+wkdBMnBCu8GdkKrTSA== +workbox-webpack-plugin@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-7.1.0.tgz#404ca3da3f19ed59e58e8c71fae01f5e61ee288f" + integrity sha512-em0vY0Uq7zXzOeEJYpFNX7x6q3RrRVqfaMhA4kadd3UkX/JuClgT9IUW2iX2cjmMPwI3W611c4fSRjtG5wPm2w== dependencies: fast-json-stable-stringify "^2.1.0" pretty-bytes "^5.4.1" upath "^1.2.0" webpack-sources "^1.4.3" - workbox-build "7.3.0" + workbox-build "7.1.0" -workbox-window@7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-7.3.0.tgz#e71bb0b4d880d2295c96bf1ccadb6cea0df51c07" - integrity sha512-qW8PDy16OV1UBaUNGlTVcepzrlzyzNW/ZJvFQQs2j2TzGsg6IKjcpZC1RSquqQnTOafl5pCj5bGfAHlCjOOjdA== +workbox-window@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-7.1.0.tgz#58a90ba89ca35d26f2b322223ee575c750bac7a1" + integrity sha512-ZHeROyqR+AS5UPzholQRDttLFqGMwP0Np8MKWAdyxsDETxq3qOAyXvqessc3GniohG6e0mAqSQyKOHmT8zPF7g== dependencies: "@types/trusted-types" "^2.0.2" - workbox-core "7.3.0" + workbox-core "7.1.0" wrap-ansi@^7.0.0: version "7.0.0"