index.html 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>Excalidraw | Hand-drawn look & feel • Collaborative • Secure</title>
  6. <meta
  7. name="viewport"
  8. content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover, shrink-to-fit=no"
  9. />
  10. <meta name="referrer" content="origin" />
  11. <meta name="mobile-web-app-capable" content="yes" />
  12. <meta name="theme-color" content="#000" />
  13. <!-- General tags -->
  14. <meta
  15. name="description"
  16. content="Excalidraw is a virtual collaborative whiteboard tool that lets you easily sketch diagrams that have a hand-drawn feel to them."
  17. />
  18. <meta name="image" content="og-image.png" />
  19. <!-- OpenGraph tags -->
  20. <meta property="og:url" content="https://excalidraw.com" />
  21. <meta property="og:site_name" content="Excalidraw" />
  22. <meta property="og:type" content="website" />
  23. <meta property="og:title" content="Excalidraw" />
  24. <meta
  25. property="og:description"
  26. content="Excalidraw is a whiteboard tool that lets you easily sketch diagrams that have a hand-drawn feel to them."
  27. />
  28. <!-- OG tags require an absolute url for images -->
  29. <meta
  30. property="og:image"
  31. name="twitter:image"
  32. content="https://excalidraw.com/og-image.png"
  33. />
  34. <meta
  35. property="og:image:secure_url"
  36. name="twitter:image"
  37. content="https://excalidraw.com/og-image.png"
  38. />
  39. <meta property="og:image:width" content="1280" />
  40. <meta property="og:image:height" content="669" />
  41. <meta property="og:image:alt" content="Excalidraw logo with byline." />
  42. <!-- Twitter Card tags -->
  43. <meta name="twitter:card" content="summary_large_image" />
  44. <meta name="twitter:title" content="Excalidraw" />
  45. <meta
  46. name="twitter:description"
  47. content="Excalidraw is a whiteboard tool that lets you easily sketch diagrams that have a hand-drawn feel to them."
  48. />
  49. <!------------------------------------------------------------------------->
  50. <!-- to minimize white flash on load when user has dark mode enabled -->
  51. <script>
  52. try {
  53. //
  54. const theme = window.localStorage.getItem("excalidraw-theme");
  55. if (theme === "dark") {
  56. document.documentElement.classList.add("dark");
  57. }
  58. } catch {}
  59. </script>
  60. <style>
  61. html.dark {
  62. background-color: #121212;
  63. color: #fff;
  64. }
  65. </style>
  66. <!------------------------------------------------------------------------->
  67. <script>
  68. // Redirect Excalidraw+ users which have auto-redirect enabled.
  69. //
  70. // Redirect only the bare root path, so link/room/library urls are not
  71. // redirected.
  72. //
  73. // Putting into index.html for best performance (can't redirect on server
  74. // due to location.hash checks).
  75. if (
  76. window.location.pathname === "/" &&
  77. !window.location.hash &&
  78. !window.location.search &&
  79. // if its present redirect
  80. document.cookie.includes("excplus-autoredirect=true")
  81. ) {
  82. window.location.href = "https://app.excalidraw.com";
  83. }
  84. </script>
  85. <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
  86. <!-- Excalidraw version -->
  87. <meta name="version" content="{version}" />
  88. <link
  89. rel="preload"
  90. href="Virgil.woff2"
  91. as="font"
  92. type="font/woff2"
  93. crossorigin="anonymous"
  94. />
  95. <link
  96. rel="preload"
  97. href="Cascadia.woff2"
  98. as="font"
  99. type="font/woff2"
  100. crossorigin="anonymous"
  101. />
  102. <link
  103. rel="manifest"
  104. href="manifest.json"
  105. style="--pwacompat-splash-font: 24px Virgil"
  106. />
  107. <link rel="stylesheet" href="fonts.css" type="text/css" />
  108. <% if (process.env.REACT_APP_DEV_DISABLE_LIVE_RELOAD==="true" ) { %>
  109. <script>
  110. {
  111. const _WebSocket = window.WebSocket;
  112. window.WebSocket = function (url) {
  113. if (/ws:\/\/localhost:.+?\/sockjs-node/.test(url)) {
  114. console.info(
  115. "[!!!] Live reload is disabled via process.env.REACT_APP_DEV_DISABLE_LIVE_RELOAD [!!!]",
  116. );
  117. } else {
  118. return new _WebSocket(url);
  119. }
  120. };
  121. }
  122. </script>
  123. <% } %>
  124. <script>
  125. window.EXCALIDRAW_ASSET_PATH = "/";
  126. // setting this so that libraries installation reuses this window tab.
  127. window.name = "_excalidraw";
  128. </script>
  129. <% if (process.env.REACT_APP_GOOGLE_ANALYTICS_ID) { %>
  130. <script
  131. async
  132. src="https://www.googletagmanager.com/gtag/js?id=%REACT_APP_GOOGLE_ANALYTICS_ID%"
  133. ></script>
  134. <script>
  135. window.dataLayer = window.dataLayer || [];
  136. function gtag() {
  137. dataLayer.push(arguments);
  138. }
  139. gtag("js", new Date());
  140. gtag("config", "%REACT_APP_GOOGLE_ANALYTICS_ID%");
  141. </script>
  142. <% } %>
  143. <!-- FIXME: remove this when we update CRA (fix SW caching) -->
  144. <style>
  145. body,
  146. html {
  147. margin: 0;
  148. --ui-font: system-ui, BlinkMacSystemFont, -apple-system, Segoe UI,
  149. Roboto, Helvetica, Arial, sans-serif;
  150. font-family: var(--ui-font);
  151. -webkit-text-size-adjust: 100%;
  152. width: 100%;
  153. height: 100%;
  154. overflow: hidden;
  155. }
  156. .visually-hidden {
  157. position: absolute !important;
  158. height: 1px;
  159. width: 1px;
  160. overflow: hidden;
  161. clip: rect(1px, 1px, 1px, 1px);
  162. white-space: nowrap;
  163. user-select: none;
  164. }
  165. #root {
  166. height: 100%;
  167. -webkit-touch-callout: none;
  168. -webkit-user-select: none;
  169. -khtml-user-select: none;
  170. -moz-user-select: none;
  171. -ms-user-select: none;
  172. user-select: none;
  173. }
  174. @media screen and (min-width: 1200px) {
  175. #root {
  176. -webkit-touch-callout: default;
  177. -webkit-user-select: auto;
  178. -khtml-user-select: auto;
  179. -moz-user-select: auto;
  180. -ms-user-select: auto;
  181. user-select: auto;
  182. }
  183. }
  184. </style>
  185. </head>
  186. <body>
  187. <noscript> You need to enable JavaScript to run this app. </noscript>
  188. <header>
  189. <h1 class="visually-hidden">Excalidraw</h1>
  190. </header>
  191. <div id="root"></div>
  192. </body>
  193. </html>