123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="utf-8" />
- <title>Excalidraw | Hand-drawn look & feel • Collaborative • Secure</title>
- <meta
- name="viewport"
- content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover, shrink-to-fit=no"
- />
- <meta name="referrer" content="origin" />
- <meta name="mobile-web-app-capable" content="yes" />
- <meta name="theme-color" content="#121212" />
- <!-- Primary Meta Tags -->
- <meta
- name="title"
- content="Excalidraw — Collaborative whiteboarding made easy"
- />
- <meta
- name="description"
- content="Excalidraw is a virtual collaborative whiteboard tool that lets you easily sketch diagrams that have a hand-drawn feel to them."
- />
- <meta name="image" content="https://excalidraw.com/og-general-v1.png" />
- <!-- Open Graph / Facebook -->
- <meta property="og:site_name" content="Excalidraw" />
- <meta property="og:type" content="website" />
- <meta property="og:url" content="https://excalidraw.com" />
- <meta
- property="og:title"
- content="Excalidraw — Collaborative whiteboarding made easy"
- />
- <meta property="og:image:alt" content="Excalidraw logo" />
- <meta
- property="og:description"
- content="Excalidraw is a virtual collaborative whiteboard tool that lets you easily sketch diagrams that have a hand-drawn feel to them."
- />
- <meta property="og:image" content="https://excalidraw.com/og-fb-v1.png" />
- <!-- Twitter -->
- <meta property="twitter:card" content="summary_large_image" />
- <meta property="twitter:site" content="@excalidraw" />
- <meta property="twitter:url" content="https://excalidraw.com" />
- <meta
- property="twitter:title"
- content="Excalidraw — Collaborative whiteboarding made easy"
- />
- <meta
- property="twitter:description"
- content="Excalidraw is a virtual collaborative whiteboard tool that lets you easily sketch diagrams that have a hand-drawn feel to them."
- />
- <meta
- property="twitter:image"
- content="https://excalidraw.com/og-twitter-v1.png"
- />
- <!-- General tags -->
- <meta
- name="description"
- content="Excalidraw is a virtual collaborative whiteboard tool that lets you easily sketch diagrams that have a hand-drawn feel to them."
- />
- <!------------------------------------------------------------------------->
- <!-- to minimize white flash on load when user has dark mode enabled -->
- <script>
- try {
- //
- const theme = window.localStorage.getItem("excalidraw-theme");
- if (theme === "dark") {
- document.documentElement.classList.add("dark");
- }
- } catch {}
- </script>
- <style>
- html.dark {
- background-color: #121212;
- color: #fff;
- }
- </style>
- <!------------------------------------------------------------------------->
- <script>
- // Redirect Excalidraw+ users which have auto-redirect enabled.
- //
- // Redirect only the bare root path, so link/room/library urls are not
- // redirected.
- //
- // Putting into index.html for best performance (can't redirect on server
- // due to location.hash checks).
- if (
- window.location.pathname === "/" &&
- !window.location.hash &&
- !window.location.search &&
- // if its present redirect
- document.cookie.includes("excplus-autoredirect=true")
- ) {
- window.location.href = "https://app.excalidraw.com";
- }
- </script>
- <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
- <!-- Excalidraw version -->
- <meta name="version" content="{version}" />
- <link
- rel="preload"
- href="Virgil.woff2"
- as="font"
- type="font/woff2"
- crossorigin="anonymous"
- />
- <link
- rel="preload"
- href="Cascadia.woff2"
- as="font"
- type="font/woff2"
- crossorigin="anonymous"
- />
- <link
- rel="manifest"
- href="manifest.json"
- style="--pwacompat-splash-font: 24px Virgil"
- />
- <link rel="stylesheet" href="fonts.css" type="text/css" />
- <% if (process.env.REACT_APP_DEV_DISABLE_LIVE_RELOAD==="true" ) { %>
- <script>
- {
- const _WebSocket = window.WebSocket;
- window.WebSocket = function (url) {
- if (/ws:\/\/localhost:.+?\/sockjs-node/.test(url)) {
- console.info(
- "[!!!] Live reload is disabled via process.env.REACT_APP_DEV_DISABLE_LIVE_RELOAD [!!!]",
- );
- } else {
- return new _WebSocket(url);
- }
- };
- }
- </script>
- <% } %>
- <script>
- window.EXCALIDRAW_ASSET_PATH = "/";
- // setting this so that libraries installation reuses this window tab.
- window.name = "_excalidraw";
- </script>
- <% if (process.env.REACT_APP_DISABLE_TRACKING !== 'true') { %>
- <!-- LEGACY GOOGLE ANALYTICS -->
- <% if (process.env.REACT_APP_GOOGLE_ANALYTICS_ID) { %>
- <script
- async
- src="https://www.googletagmanager.com/gtag/js?id=%REACT_APP_GOOGLE_ANALYTICS_ID%"
- ></script>
- <script>
- window.dataLayer = window.dataLayer || [];
- function gtag() {
- dataLayer.push(arguments);
- }
- gtag("js", new Date());
- gtag("config", "%REACT_APP_GOOGLE_ANALYTICS_ID%");
- </script>
- <% } %>
- <!-- end LEGACY GOOGLE ANALYTICS -->
- <!-- Matomo -->
- <% if (process.env.REACT_APP_MATOMO_URL &&
- process.env.REACT_APP_MATOMO_SITE_ID &&
- process.env.REACT_APP_CDN_MATOMO_TRACKER_URL) { %>
- <script>
- var _paq = (window._paq = window._paq || []);
- /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
- _paq.push(["trackPageView"]);
- _paq.push(["enableLinkTracking"]);
- (function () {
- var u = "%REACT_APP_MATOMO_URL%";
- _paq.push(["setTrackerUrl", u + "matomo.php"]);
- _paq.push(["setSiteId", "%REACT_APP_MATOMO_SITE_ID%"]);
- var d = document,
- g = d.createElement("script"),
- s = d.getElementsByTagName("script")[0];
- g.async = true;
- g.src = "%REACT_APP_CDN_MATOMO_TRACKER_URL%";
- s.parentNode.insertBefore(g, s);
- })();
- </script>
- <% } %>
- <!-- end Matomo analytics -->
- <% } %>
- <!-- FIXME: remove this when we update CRA (fix SW caching) -->
- <style>
- body,
- html {
- margin: 0;
- -webkit-text-size-adjust: 100%;
- width: 100%;
- height: 100%;
- overflow: hidden;
- }
- .visually-hidden {
- position: absolute !important;
- height: 1px;
- width: 1px;
- overflow: hidden;
- clip: rect(1px, 1px, 1px, 1px);
- white-space: nowrap;
- user-select: none;
- }
- #root {
- height: 100%;
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- }
- @media screen and (min-width: 1200px) {
- #root {
- -webkit-touch-callout: default;
- -webkit-user-select: auto;
- -khtml-user-select: auto;
- -moz-user-select: auto;
- -ms-user-select: auto;
- user-select: auto;
- }
- }
- </style>
- </head>
- <body>
- <noscript> You need to enable JavaScript to run this app. </noscript>
- <header>
- <h1 class="visually-hidden">Excalidraw</h1>
- </header>
- <div id="root"></div>
- </body>
- </html>
|