mirror of
https://github.com/excalidraw/excalidraw.git
synced 2024-11-02 03:25:53 +01:00
feat: go-to-excalidrawplus button (#5202)
Co-authored-by: dwelle <luzar.david@gmail.com>
This commit is contained in:
parent
b9968e2e72
commit
bed9fca4a5
@ -13,3 +13,5 @@ REACT_APP_FIREBASE_CONFIG='{"apiKey":"AIzaSyAd15pYlMci_xIp9ko6wkEsDzAAA0Dn0RU","
|
|||||||
|
|
||||||
# production-only vars
|
# production-only vars
|
||||||
REACT_APP_GOOGLE_ANALYTICS_ID=UA-387204-13
|
REACT_APP_GOOGLE_ANALYTICS_ID=UA-387204-13
|
||||||
|
|
||||||
|
REACT_APP_PLUS_APP=https://app.excalidraw.com
|
||||||
|
@ -193,3 +193,7 @@ export const VERTICAL_ALIGN = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const ELEMENT_READY_TO_ERASE_OPACITY = 20;
|
export const ELEMENT_READY_TO_ERASE_OPACITY = 20;
|
||||||
|
|
||||||
|
export const COOKIES = {
|
||||||
|
AUTH_STATE_COOKIE: "excplus-auth",
|
||||||
|
} as const;
|
||||||
|
@ -32,3 +32,25 @@
|
|||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.plus-button {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
cursor: pointer;
|
||||||
|
align-items: center;
|
||||||
|
border: 1px solid var(--color-primary);
|
||||||
|
padding: 0.6em 0.7em;
|
||||||
|
border-radius: var(--space-factor);
|
||||||
|
color: var(--color-primary) !important;
|
||||||
|
margin: 8px;
|
||||||
|
text-decoration: none !important;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: var(--color-primary);
|
||||||
|
color: white !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:active {
|
||||||
|
background-color: var(--color-primary-darker);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -4,7 +4,13 @@ import { trackEvent } from "../analytics";
|
|||||||
import { getDefaultAppState } from "../appState";
|
import { getDefaultAppState } from "../appState";
|
||||||
import { ErrorDialog } from "../components/ErrorDialog";
|
import { ErrorDialog } from "../components/ErrorDialog";
|
||||||
import { TopErrorBoundary } from "../components/TopErrorBoundary";
|
import { TopErrorBoundary } from "../components/TopErrorBoundary";
|
||||||
import { APP_NAME, EVENT, TITLE_TIMEOUT, VERSION_TIMEOUT } from "../constants";
|
import {
|
||||||
|
APP_NAME,
|
||||||
|
COOKIES,
|
||||||
|
EVENT,
|
||||||
|
TITLE_TIMEOUT,
|
||||||
|
VERSION_TIMEOUT,
|
||||||
|
} from "../constants";
|
||||||
import { loadFromBlob } from "../data/blob";
|
import { loadFromBlob } from "../data/blob";
|
||||||
import {
|
import {
|
||||||
ExcalidrawElement,
|
ExcalidrawElement,
|
||||||
@ -68,6 +74,10 @@ import { isBrowserStorageStateNewer } from "./data/tabSync";
|
|||||||
import clsx from "clsx";
|
import clsx from "clsx";
|
||||||
import { parseLibraryTokensFromUrl, useHandleLibrary } from "../data/library";
|
import { parseLibraryTokensFromUrl, useHandleLibrary } from "../data/library";
|
||||||
|
|
||||||
|
const isExcalidrawPlusSignedUser = document.cookie.includes(
|
||||||
|
COOKIES.AUTH_STATE_COOKIE,
|
||||||
|
);
|
||||||
|
|
||||||
const languageDetector = new LanguageDetector();
|
const languageDetector = new LanguageDetector();
|
||||||
languageDetector.init({
|
languageDetector.init({
|
||||||
languageUtils: {
|
languageUtils: {
|
||||||
@ -182,7 +192,7 @@ const initializeScene = async (opts: {
|
|||||||
return { scene: null, isExternalScene: false };
|
return { scene: null, isExternalScene: false };
|
||||||
};
|
};
|
||||||
|
|
||||||
const PlusLinkJSX = (
|
const PlusLPLinkJSX = (
|
||||||
<p style={{ direction: "ltr", unicodeBidi: "embed" }}>
|
<p style={{ direction: "ltr", unicodeBidi: "embed" }}>
|
||||||
Introducing Excalidraw+
|
Introducing Excalidraw+
|
||||||
<br />
|
<br />
|
||||||
@ -196,6 +206,17 @@ const PlusLinkJSX = (
|
|||||||
</p>
|
</p>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const PlusAppLinkJSX = (
|
||||||
|
<a
|
||||||
|
href={`${process.env.REACT_APP_PLUS_APP}/#excalidraw-redirect`}
|
||||||
|
target="_blank"
|
||||||
|
rel="noreferrer"
|
||||||
|
className="plus-button"
|
||||||
|
>
|
||||||
|
Go to Excalidraw+
|
||||||
|
</a>
|
||||||
|
);
|
||||||
|
|
||||||
const ExcalidrawWrapper = () => {
|
const ExcalidrawWrapper = () => {
|
||||||
const [errorMessage, setErrorMessage] = useState("");
|
const [errorMessage, setErrorMessage] = useState("");
|
||||||
let currentLangCode = languageDetector.detect() || defaultLang.code;
|
let currentLangCode = languageDetector.detect() || defaultLang.code;
|
||||||
@ -524,17 +545,16 @@ const ExcalidrawWrapper = () => {
|
|||||||
if (isMobile) {
|
if (isMobile) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
style={{
|
style={{
|
||||||
width: "24ch",
|
width: isExcalidrawPlusSignedUser ? "21ch" : "23ch",
|
||||||
fontSize: "0.7em",
|
fontSize: "0.7em",
|
||||||
textAlign: "center",
|
textAlign: "center",
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{/* <GitHubCorner theme={appState.theme} dir={document.dir} /> */}
|
{isExcalidrawPlusSignedUser ? PlusAppLinkJSX : PlusLPLinkJSX}
|
||||||
{/* FIXME remove after 2021-05-20 */}
|
|
||||||
{PlusLinkJSX}
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@ -586,12 +606,14 @@ const ExcalidrawWrapper = () => {
|
|||||||
marginTop: isTinyDevice ? 16 : undefined,
|
marginTop: isTinyDevice ? 16 : undefined,
|
||||||
marginLeft: "auto",
|
marginLeft: "auto",
|
||||||
marginRight: isTinyDevice ? "auto" : undefined,
|
marginRight: isTinyDevice ? "auto" : undefined,
|
||||||
padding: "4px 2px",
|
padding: isExcalidrawPlusSignedUser ? undefined : "4px 2px",
|
||||||
border: "1px dashed #aaa",
|
border: isExcalidrawPlusSignedUser
|
||||||
|
? undefined
|
||||||
|
: "1px dashed #aaa",
|
||||||
borderRadius: 12,
|
borderRadius: 12,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{PlusLinkJSX}
|
{isExcalidrawPlusSignedUser ? PlusAppLinkJSX : PlusLPLinkJSX}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
Loading…
Reference in New Issue
Block a user