2024-01-16 14:38:05 +00:00
|
|
|
import * as Popover from '@radix-ui/react-popover'
|
|
|
|
import { Button, lns, useActions, useContainer, useTranslation } from '@tldraw/tldraw'
|
|
|
|
import React, { useEffect, useState } from 'react'
|
|
|
|
import { useShareMenuIsOpen } from '../hooks/useShareMenuOpen'
|
|
|
|
import { createQRCodeImageDataString } from '../utils/qrcode'
|
|
|
|
import { SHARE_PROJECT_ACTION, SHARE_SNAPSHOT_ACTION } from '../utils/sharing'
|
|
|
|
|
|
|
|
type ShareState = {
|
|
|
|
state: 'offline' | 'shared' | 'readonly'
|
|
|
|
qrCodeDataUrl: string
|
|
|
|
url: string
|
|
|
|
readonlyUrl: string
|
|
|
|
readonlyQrCodeDataUrl: string
|
|
|
|
}
|
|
|
|
|
|
|
|
function getFreshShareState(): ShareState {
|
|
|
|
const isShared = window.location.href.includes('/r/')
|
|
|
|
const isReadOnly = window.location.href.includes('/v/')
|
|
|
|
|
|
|
|
return {
|
|
|
|
state: isShared ? 'shared' : isReadOnly ? 'readonly' : 'offline',
|
|
|
|
url: window.location.href,
|
|
|
|
readonlyUrl: window.location.href.includes('/r/')
|
|
|
|
? getShareUrl(window.location.href, true)
|
|
|
|
: window.location.href,
|
|
|
|
qrCodeDataUrl: '',
|
|
|
|
readonlyQrCodeDataUrl: '',
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/** @public */
|
|
|
|
export const ShareMenu = React.memo(function ShareMenu() {
|
|
|
|
const msg = useTranslation()
|
|
|
|
const container = useContainer()
|
|
|
|
|
|
|
|
const { [SHARE_PROJECT_ACTION]: shareProject, [SHARE_SNAPSHOT_ACTION]: shareSnapshot } =
|
|
|
|
useActions()
|
|
|
|
|
|
|
|
const [shareState, setShareState] = useState(getFreshShareState)
|
|
|
|
|
|
|
|
const [isUploading, setIsUploading] = useState(false)
|
|
|
|
const [isUploadingSnapshot, setIsUploadingSnapshot] = useState(false)
|
|
|
|
const [isReadOnlyLink, setIsReadOnlyLink] = useState(shareState.state === 'readonly')
|
|
|
|
const currentShareLinkUrl = isReadOnlyLink ? shareState.readonlyUrl : shareState.url
|
|
|
|
const currentQrCodeUrl = isReadOnlyLink
|
|
|
|
? shareState.readonlyQrCodeDataUrl
|
|
|
|
: shareState.qrCodeDataUrl
|
|
|
|
const [didCopy, setDidCopy] = useState(false)
|
|
|
|
const [didCopySnapshotLink, setDidCopySnapshotLink] = useState(false)
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
if (shareState.state === 'offline') {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
let cancelled = false
|
|
|
|
|
|
|
|
const shareUrl = getShareUrl(window.location.href, false)
|
|
|
|
const readonlyShareUrl = getShareUrl(window.location.href, true)
|
|
|
|
|
|
|
|
if (!shareState.qrCodeDataUrl && shareState.state === 'shared') {
|
|
|
|
// Fetch the QR code data URL
|
|
|
|
createQRCodeImageDataString(shareUrl).then((dataUrl) => {
|
|
|
|
if (!cancelled) {
|
|
|
|
setShareState((s) => ({ ...s, shareUrl, qrCodeDataUrl: dataUrl }))
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!shareState.readonlyQrCodeDataUrl) {
|
|
|
|
// fetch the readonly QR code data URL
|
|
|
|
createQRCodeImageDataString(readonlyShareUrl).then((dataUrl) => {
|
|
|
|
if (!cancelled) {
|
|
|
|
setShareState((s) => ({ ...s, readonlyShareUrl, readonlyQrCodeDataUrl: dataUrl }))
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
const interval = setInterval(() => {
|
|
|
|
const url = window.location.href
|
|
|
|
if (shareState.url === url) return
|
|
|
|
setShareState(getFreshShareState())
|
|
|
|
}, 300)
|
|
|
|
|
|
|
|
return () => {
|
|
|
|
clearInterval(interval)
|
|
|
|
cancelled = true
|
|
|
|
}
|
|
|
|
}, [shareState])
|
|
|
|
|
|
|
|
const [isOpen, onOpenChange] = useShareMenuIsOpen()
|
|
|
|
|
|
|
|
return (
|
|
|
|
<Popover.Root onOpenChange={onOpenChange} open={isOpen}>
|
|
|
|
<Popover.Trigger dir="ltr" asChild>
|
|
|
|
<Button
|
|
|
|
type="normal"
|
|
|
|
className="tlui-share-zone__button"
|
|
|
|
title={msg('share-menu.title')}
|
|
|
|
label={'share-menu.title'}
|
|
|
|
/>
|
|
|
|
</Popover.Trigger>
|
Bump Yarn to 4.0.2 and add version constraints (#2481)
This PR bumps Yarn to 4.0.2, adds version constraints and fixes reported
problems.
Current constraints (per @ds300):
1. all dependencies (both prod and dev) should have consistent versions
across the project
2. only the root `package.json` should have `packageManager` set
Removed 54 packages due to deduplication.
### Change Type
- [ ] `patch` — Bug fix
- [ ] `minor` — New feature
- [ ] `major` — Breaking change
- [x] `dependencies` — Changes to package dependencies[^1]
- [ ] `documentation` — Changes to the documentation only[^2]
- [ ] `tests` — Changes to any test code only[^2]
- [ ] `internal` — Any other changes that don't affect the published
package[^2]
- [ ] I don't know
[^1]: publishes a `patch` release, for devDependencies use `internal`
[^2]: will not publish a new version
<details>
<summary>An example of a report with a bunch of problems</summary>
```
❯ yarn constraints
➤ Errors prefixed by '⚙' can be fixed by running yarn constraints --fix
├─ @tldraw/monorepo@workspace:.
│ ├─ Conflict detected in constraint targeting devDependencies["@types/react"]; conflicting values are:
│ │ ├─ '^18.2.47' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^18.2.33' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["@typescript-eslint/eslint-plugin"]; conflicting values are:
│ │ ├─ '^5.57.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^5.10.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["@typescript-eslint/parser"]; conflicting values are:
│ │ ├─ '^5.57.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^5.10.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["eslint"]; conflicting values are:
│ │ ├─ '^8.37.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '8.36.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["eslint-config-prettier"]; conflicting values are:
│ │ ├─ '^8.8.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^8.3.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["eslint-plugin-react"]; conflicting values are:
│ │ ├─ '^7.32.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '7.28.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["prettier-plugin-organize-imports"]; conflicting values are:
│ │ ├─ '^3.2.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^3.2.3' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["tsx"]; conflicting values are:
│ │ ├─ '^3.12.7' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^4.0.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ └─ Conflict detected in constraint targeting devDependencies["typescript"]; conflicting values are:
│ ├─ '^5.2.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ └─ '^5.0.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│
├─ @tldraw/docs@workspace:apps/docs
│ ├─ Conflict detected in constraint targeting dependencies["@types/ws"]; conflicting values are:
│ │ ├─ '^8.5.9' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^8.5.3' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting dependencies["@vercel/analytics"]; conflicting values are:
│ │ ├─ '^1.1.1' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^1.0.1' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting dependencies["concurrently"]; conflicting values are:
│ │ ├─ '^8.2.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ ├─ '^8.2.1' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '7.0.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting dependencies["dotenv"]; conflicting values are:
│ │ ├─ '^16.3.1' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^16.0.3' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting dependencies["eslint"]; conflicting values are:
│ │ ├─ '^8.37.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '8.36.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting dependencies["eslint-config-next"]; conflicting values are:
│ │ ├─ '13.2.4' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '12.2.5' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting dependencies["next"]; conflicting values are:
│ │ ├─ '^14.0.4' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^13.2.3' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting dependencies["prettier-plugin-organize-imports"]; conflicting values are:
│ │ ├─ '^3.2.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^3.2.3' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting dependencies["react"]; conflicting values are:
│ │ ├─ '18.2.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^18.2.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting dependencies["react-dom"]; conflicting values are:
│ │ ├─ '18.2.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^18.2.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting dependencies["tsx"]; conflicting values are:
│ │ ├─ '^3.12.7' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^4.0.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting dependencies["typescript"]; conflicting values are:
│ │ ├─ '^5.2.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^5.0.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting dependencies["ws"]; conflicting values are:
│ │ ├─ '^8.14.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ ├─ '^8.13.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^8.16.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ └─ ⚙ Invalid field packageManager; expected null, found 'yarn@3.5.0'
│
├─ dotcom@workspace:apps/dotcom
│ ├─ Conflict detected in constraint targeting dependencies["@radix-ui/react-popover"]; conflicting values are:
│ │ ├─ '1.0.6-rc.5' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^1.0.7' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting dependencies["@vercel/analytics"]; conflicting values are:
│ │ ├─ '^1.1.1' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^1.0.1' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting dependencies["react"]; conflicting values are:
│ │ ├─ '18.2.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^18.2.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting dependencies["react-dom"]; conflicting values are:
│ │ ├─ '18.2.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^18.2.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting dependencies["react-router-dom"]; conflicting values are:
│ │ ├─ '^6.17.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^6.9.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["@types/react"]; conflicting values are:
│ │ ├─ '^18.2.47' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^18.2.33' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["dotenv"]; conflicting values are:
│ │ ├─ '^16.3.1' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^16.0.3' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["vite"]; conflicting values are:
│ │ ├─ '^5.0.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^4.3.4' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["ws"]; conflicting values are:
│ │ ├─ '^8.14.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ ├─ '^8.13.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^8.16.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ └─ ⚙ Invalid field packageManager; expected null, found 'yarn@3.5.0'
│
├─ dotcom-asset-upload@workspace:apps/dotcom-asset-upload
│ ├─ Conflict detected in constraint targeting dependencies["itty-router"]; conflicting values are:
│ │ ├─ '^2.6.6' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^4.0.13' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["@types/ws"]; conflicting values are:
│ │ ├─ '^8.5.9' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^8.5.3' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ └─ ⚙ Invalid field packageManager; expected null, found 'yarn@3.5.0'
│
├─ @tldraw/bookmark-extractor@workspace:apps/dotcom-bookmark-extractor
│ ├─ Conflict detected in constraint targeting dependencies["tslib"]; conflicting values are:
│ │ ├─ '^2.6.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^2.4.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["typescript"]; conflicting values are:
│ │ ├─ '^5.2.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^5.0.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ └─ ⚙ Invalid field packageManager; expected null, found 'yarn@3.5.0'
│
├─ @tldraw/dotcom-worker@workspace:apps/dotcom-worker
│ ├─ Conflict detected in constraint targeting dependencies["itty-router"]; conflicting values are:
│ │ ├─ '^2.6.6' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^4.0.13' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["concurrently"]; conflicting values are:
│ │ ├─ '^8.2.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ ├─ '^8.2.1' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '7.0.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["typescript"]; conflicting values are:
│ │ ├─ '^5.2.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^5.0.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ └─ ⚙ Invalid field packageManager; expected null, found 'yarn@3.5.0'
│
├─ examples.tldraw.com@workspace:apps/examples
│ ├─ Conflict detected in constraint targeting dependencies["@vercel/analytics"]; conflicting values are:
│ │ ├─ '^1.1.1' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^1.0.1' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting dependencies["react"]; conflicting values are:
│ │ ├─ '18.2.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^18.2.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting dependencies["react-dom"]; conflicting values are:
│ │ ├─ '18.2.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^18.2.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting dependencies["react-router-dom"]; conflicting values are:
│ │ ├─ '^6.17.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^6.9.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting dependencies["vite"]; conflicting values are:
│ │ ├─ '^5.0.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^4.3.4' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["dotenv"]; conflicting values are:
│ │ ├─ '^16.3.1' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^16.0.3' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ └─ ⚙ Invalid field packageManager; expected null, found 'yarn@3.5.0'
│
├─ huppy@workspace:apps/huppy
│ ├─ Conflict detected in constraint targeting dependencies["next"]; conflicting values are:
│ │ ├─ '^14.0.4' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^13.2.3' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting dependencies["react"]; conflicting values are:
│ │ ├─ '18.2.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^18.2.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting dependencies["react-dom"]; conflicting values are:
│ │ ├─ '18.2.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^18.2.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["eslint-config-next"]; conflicting values are:
│ │ ├─ '13.2.4' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '12.2.5' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ └─ ⚙ Invalid field packageManager; expected null, found 'yarn@3.5.0'
│
├─ @tldraw/vscode-editor@workspace:apps/vscode/editor
│ ├─ Conflict detected in constraint targeting devDependencies["@types/react"]; conflicting values are:
│ │ ├─ '^18.2.47' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^18.2.33' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["concurrently"]; conflicting values are:
│ │ ├─ '^8.2.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ ├─ '^8.2.1' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '7.0.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["dotenv"]; conflicting values are:
│ │ ├─ '^16.3.1' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^16.0.3' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["react"]; conflicting values are:
│ │ ├─ '18.2.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^18.2.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["react-dom"]; conflicting values are:
│ │ ├─ '18.2.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^18.2.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["tslib"]; conflicting values are:
│ │ ├─ '^2.6.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^2.4.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ └─ ⚙ Invalid field packageManager; expected null, found 'yarn@3.5.0'
│
├─ tldraw-vscode@workspace:apps/vscode/extension
│ ├─ Conflict detected in constraint targeting devDependencies["@typescript-eslint/eslint-plugin"]; conflicting values are:
│ │ ├─ '^5.57.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^5.10.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["@typescript-eslint/parser"]; conflicting values are:
│ │ ├─ '^5.57.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^5.10.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["tslib"]; conflicting values are:
│ │ ├─ '^2.6.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^2.4.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["tsx"]; conflicting values are:
│ │ ├─ '^3.12.7' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^4.0.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ └─ ⚙ Invalid field packageManager; expected null, found 'yarn@3.5.0'
│
├─ config@workspace:config
│ ├─ Conflict detected in constraint targeting dependencies["eslint-config-prettier"]; conflicting values are:
│ │ ├─ '^8.8.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^8.3.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting dependencies["eslint-plugin-react"]; conflicting values are:
│ │ ├─ '^7.32.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '7.28.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ └─ ⚙ Missing field packageManager; expected null
│
├─ @tldraw/assets@workspace:packages/assets
│ └─ ⚙ Missing field packageManager; expected null
│
├─ @tldraw/editor@workspace:packages/editor
│ ├─ Conflict detected in constraint targeting devDependencies["@testing-library/jest-dom"]; conflicting values are:
│ │ ├─ '^5.16.5' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^5.14.1' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["jest-canvas-mock"]; conflicting values are:
│ │ ├─ '^2.5.1' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^2.5.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["jest-environment-jsdom"]; conflicting values are:
│ │ ├─ '^29.4.3' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^28.1.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ └─ ⚙ Invalid field packageManager; expected null, found 'yarn@3.5.0'
│
├─ @tldraw/state@workspace:packages/state
│ ├─ Conflict detected in constraint targeting devDependencies["@types/react"]; conflicting values are:
│ │ ├─ '^18.2.47' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^18.2.33' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ └─ ⚙ Invalid field packageManager; expected null, found 'yarn@3.5.0'
│
├─ @tldraw/store@workspace:packages/store
│ └─ ⚙ Invalid field packageManager; expected null, found 'yarn@3.5.0'
│
├─ @tldraw/tldraw@workspace:packages/tldraw
│ ├─ Conflict detected in constraint targeting dependencies["@radix-ui/react-popover"]; conflicting values are:
│ │ ├─ '1.0.6-rc.5' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^1.0.7' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["@testing-library/jest-dom"]; conflicting values are:
│ │ ├─ '^5.16.5' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^5.14.1' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["jest-canvas-mock"]; conflicting values are:
│ │ ├─ '^2.5.1' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^2.5.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["jest-environment-jsdom"]; conflicting values are:
│ │ ├─ '^29.4.3' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^28.1.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ └─ ⚙ Invalid field packageManager; expected null, found 'yarn@3.5.0'
│
├─ @tldraw/tlschema@workspace:packages/tlschema
│ └─ ⚙ Invalid field packageManager; expected null, found 'yarn@3.5.0'
│
├─ @tldraw/tlsync@workspace:packages/tlsync
│ ├─ Conflict detected in constraint targeting dependencies["ws"]; conflicting values are:
│ │ ├─ '^8.14.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ ├─ '^8.13.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^8.16.0' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ ├─ Conflict detected in constraint targeting devDependencies["typescript"]; conflicting values are:
│ │ ├─ '^5.2.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ │ └─ '^5.0.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ └─ ⚙ Invalid field packageManager; expected null, found 'yarn@3.5.0'
│
├─ @tldraw/utils@workspace:packages/utils
│ └─ ⚙ Invalid field packageManager; expected null, found 'yarn@3.5.0'
│
├─ @tldraw/validate@workspace:packages/validate
│ └─ ⚙ Invalid field packageManager; expected null, found 'yarn@3.5.0'
│
└─ @tldraw/scripts@workspace:scripts
├─ Conflict detected in constraint targeting devDependencies["typescript"]; conflicting values are:
│ ├─ '^5.2.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
│ └─ '^5.0.2' at enforceConsistentDependenciesAcrossTheProject (…/tldraw/yarn.config.cjs:14:15)
└─ ⚙ Invalid field packageManager; expected null, found 'yarn@3.5.0'
```
</details>
2024-01-18 11:09:17 +00:00
|
|
|
<Popover.Portal container={container}>
|
2024-01-16 14:38:05 +00:00
|
|
|
<Popover.Content
|
|
|
|
dir="ltr"
|
|
|
|
className="tlui-menu tlui-share-zone__popover"
|
|
|
|
align="end"
|
|
|
|
side="bottom"
|
|
|
|
sideOffset={2}
|
|
|
|
>
|
|
|
|
{shareState.state === 'shared' || shareState.state === 'readonly' ? (
|
|
|
|
<>
|
|
|
|
<button
|
|
|
|
className="tlui-share-zone__qr-code"
|
|
|
|
style={{ backgroundImage: `url(${currentQrCodeUrl})` }}
|
|
|
|
title={msg(
|
|
|
|
isReadOnlyLink ? 'share-menu.copy-readonly-link' : 'share-menu.copy-link'
|
|
|
|
)}
|
|
|
|
onClick={() => {
|
|
|
|
setDidCopy(true)
|
|
|
|
setTimeout(() => setDidCopy(false), 1000)
|
|
|
|
navigator.clipboard.writeText(currentShareLinkUrl)
|
|
|
|
}}
|
|
|
|
/>
|
|
|
|
<div className="tlui-menu__group">
|
|
|
|
<Button
|
|
|
|
type="menu"
|
|
|
|
icon={didCopy ? 'clipboard-copied' : 'clipboard-copy'}
|
|
|
|
label={isReadOnlyLink ? 'share-menu.copy-readonly-link' : 'share-menu.copy-link'}
|
|
|
|
onClick={() => {
|
|
|
|
setDidCopy(true)
|
|
|
|
setTimeout(() => setDidCopy(false), 750)
|
|
|
|
navigator.clipboard.writeText(currentShareLinkUrl)
|
|
|
|
}}
|
|
|
|
/>
|
|
|
|
{shareState.state === 'shared' && (
|
|
|
|
<Button
|
|
|
|
type="menu"
|
|
|
|
label="share-menu.readonly-link"
|
|
|
|
icon={isReadOnlyLink ? 'check' : 'checkbox-empty'}
|
|
|
|
onClick={async () => {
|
|
|
|
setIsReadOnlyLink(() => !isReadOnlyLink)
|
|
|
|
}}
|
|
|
|
/>
|
|
|
|
)}
|
|
|
|
<p className="tlui-menu__group tlui-share-zone__details">
|
|
|
|
{msg(
|
|
|
|
isReadOnlyLink
|
|
|
|
? 'share-menu.copy-readonly-link-note'
|
|
|
|
: 'share-menu.copy-link-note'
|
|
|
|
)}
|
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div className="tlui-menu__group">
|
|
|
|
<Button
|
|
|
|
type="menu"
|
|
|
|
icon={didCopySnapshotLink ? 'clipboard-copied' : 'clipboard-copy'}
|
|
|
|
label={shareSnapshot.label!}
|
|
|
|
onClick={async () => {
|
|
|
|
setIsUploadingSnapshot(true)
|
|
|
|
await shareSnapshot.onSelect('share-menu')
|
|
|
|
setIsUploadingSnapshot(false)
|
|
|
|
setDidCopySnapshotLink(true)
|
|
|
|
setTimeout(() => setDidCopySnapshotLink(false), 1000)
|
|
|
|
}}
|
|
|
|
spinner={isUploadingSnapshot}
|
|
|
|
/>
|
|
|
|
<p className="tlui-menu__group tlui-share-zone__details">
|
|
|
|
{msg('share-menu.snapshot-link-note')}
|
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
</>
|
|
|
|
) : (
|
|
|
|
<>
|
|
|
|
<div className="tlui-menu__group">
|
|
|
|
<Button
|
|
|
|
type="menu"
|
|
|
|
label="share-menu.share-project"
|
|
|
|
icon="share-1"
|
|
|
|
onClick={async () => {
|
|
|
|
if (isUploading) return
|
|
|
|
setIsUploading(true)
|
|
|
|
await shareProject.onSelect('menu')
|
|
|
|
setIsUploading(false)
|
|
|
|
}}
|
|
|
|
spinner={isUploading}
|
|
|
|
/>
|
|
|
|
<p className="tlui-menu__group tlui-share-zone__details">
|
|
|
|
{msg(
|
|
|
|
shareState.state === 'offline'
|
|
|
|
? 'share-menu.offline-note'
|
|
|
|
: isReadOnlyLink
|
|
|
|
? 'share-menu.copy-readonly-link-note'
|
|
|
|
: 'share-menu.copy-link-note'
|
|
|
|
)}
|
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
<div className="tlui-menu__group">
|
|
|
|
<Button
|
|
|
|
type="menu"
|
|
|
|
icon={didCopySnapshotLink ? 'clipboard-copied' : 'clipboard-copy'}
|
|
|
|
label={shareSnapshot.label!}
|
|
|
|
onClick={async () => {
|
|
|
|
setIsUploadingSnapshot(true)
|
|
|
|
await shareSnapshot.onSelect('share-menu')
|
|
|
|
setIsUploadingSnapshot(false)
|
|
|
|
setDidCopySnapshotLink(true)
|
|
|
|
setTimeout(() => setDidCopySnapshotLink(false), 1000)
|
|
|
|
}}
|
|
|
|
spinner={isUploadingSnapshot}
|
|
|
|
/>
|
|
|
|
<p className="tlui-menu__group tlui-share-zone__details">
|
|
|
|
{msg('share-menu.snapshot-link-note')}
|
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
</>
|
|
|
|
)}
|
|
|
|
</Popover.Content>
|
|
|
|
</Popover.Portal>
|
|
|
|
</Popover.Root>
|
|
|
|
)
|
|
|
|
})
|
|
|
|
|
|
|
|
function getShareUrl(url: string, readonly: boolean) {
|
|
|
|
if (!readonly) {
|
|
|
|
return url
|
|
|
|
}
|
|
|
|
|
|
|
|
const segs = url.split('/')
|
|
|
|
|
|
|
|
// Change the r for a v
|
|
|
|
segs[segs.length - 2] = 'v'
|
|
|
|
|
|
|
|
// A url might be something like https://www.tldraw.com/r/123?pageId=myPageId
|
|
|
|
// we want it instead to be https://www.tldraw.com/v/312?pageId=myPageId, ie
|
|
|
|
// the scrambled room id but not scrambled query params
|
|
|
|
const [roomId, params] = segs[segs.length - 1].split('?')
|
|
|
|
segs[segs.length - 1] = lns(roomId)
|
|
|
|
if (params) segs[segs.length - 1] += '?' + params
|
|
|
|
|
|
|
|
return segs.join('/')
|
|
|
|
}
|