index.html (view raw)
1<!DOCTYPE html>
2<html lang="en">
3 <head>
4 <meta charset="UTF-8" />
5 <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" />
6 <meta http-equiv="X-UA-Compatible" content="ie=edge" />
7
8 <title>NoPaste - No-database paste service</title>
9 <link
10 rel="stylesheet"
11 type="text/css"
12 href="https://cdn.jsdelivr.net/combine/
13npm/bootstrap@4.4.1/dist/css/bootstrap-grid.min.css,
14npm/slim-select@1.25.0/dist/slimselect.min.css,
15npm/codemirror@5.52.0/lib/codemirror.min.css,
16npm/codemirror@5.52.0/addon/scroll/simplescrollbars.css,
17npm/codemirror@5.52.0/theme/dracula.min.css
18"
19 />
20 <link rel="stylesheet" href="style.css" />
21 <link href="favicon.ico" rel="icon" type="image/x-icon" />
22 <link rel="canonical" href="https://nopaste.ml/" />
23 <meta
24 name="description"
25 property="og:description"
26 content="NoPaste is a client-side paste service which works with no database, and no back-end code. The data is stored entirely in the links and nowhere else"
27 />
28 <meta property="og:title" content="NoPaste - No-database paste service" />
29 <meta property="og:image" content="https://cdn.jsdelivr.net/gh/bokub/nopaste@images/logo.png" />
30 <meta property="og:url" content="https://nopaste.ml/" />
31 <meta property="og:type" content="website" />
32 </head>
33 <body class="m-0">
34 <script>
35 const readOnly = window.location !== window.parent.location || new URLSearchParams(window.location.search).has('readonly');
36 if (readOnly) {
37 document.body.classList.add('readonly');
38 }
39 </script>
40 <div id="copy" class="container-fluid hidden shadow-bottom hide-readonly">
41 <div class="row my-1">
42 <div class="col my-1">
43 <input type="text" value="copy me" id="copy-link" class="px-2" onclick="this.setSelectionRange(0, this.value.length)" />
44 </div>
45 <div class="col-auto my-1">
46 <button class="clipboard py-1 px-2 mx-1" id="copy-btn" data-clipboard-target="#copy-link" type="button">
47 Copy
48 </button>
49 <button class="py-1 px-2 mx-1" onclick="hideCopyBar(false)" type="button">Cancel</button>
50 </div>
51 </div>
52 </div>
53 <div id="controls" class="container-fluid shadow-bottom hide-readonly">
54 <div class="row align-items-center justify-content-end my-1">
55 <div class="col-auto mb-1">
56 <h1 class="my-0"><span>{</span> NoPaste <span>}</span></h1>
57 </div>
58 <div class="col-auto">
59 <a href="https://github.com/bokub/nopaste" rel="noopener" target="_blank" class="mx-1" title="Source code">
60 <span class="icon-github"></span>
61 </a>
62 <a href="javascript:void(0)" onclick="byId('overlay').classList.remove('hidden')" class="mx-1" title="What is NoPaste?">
63 <span class="mx-2 icon-question"></span>
64 </a>
65 </div>
66 <div class="col"></div>
67 <div class="col-auto my-1">
68 <select id="language"></select>
69 </div>
70 <div class="col-auto">
71 <button onclick="enableLineWrapping()" type="button" id="enable-line-wrapping" title="Enable line wrapping">
72 <span class="icon-notes"></span>
73 </button>
74 <button
75 onclick="disableLineWrapping()"
76 type="button"
77 id="disable-line-wrapping"
78 title="Disable line wrapping"
79 class="hidden"
80 >
81 <span class="icon-wrap-text"></span>
82 </button>
83 </div>
84 <div class="col-auto">
85 <button class="py-1 px-2 mx-0 my-1" onclick="generateLink('url')" type="button">
86 Generate link
87 </button>
88 <button class="py-1 px-2 mx-1 my-1" onclick="generateLink('markdown')" type="button">
89 Generate markdown
90 </button>
91 <button class="py-1 px-2 mx-0 my-1" onclick="generateLink('iframe')" type="button">Embed</button>
92 </div>
93 </div>
94 </div>
95 <div id="progress"></div>
96 <div id="editor"></div>
97 <footer id="footer" class="shadow-top container-fluid">
98 <div class="row my-1">
99 <div class="col mono hide-readonly" id="stats">Length: 0 | Lines: 1</div>
100 <div class="col mono show-readonly">Hosted on NoPaste.ml</div>
101 <div class="col-auto mono show-readonly">
102 <a href="javascript:void(0)" onclick="openInNewTab()">
103 <span class="icon-edit"></span>
104 Edit
105 </a>
106 </div>
107 </div>
108 </footer>
109 <div class="hidden" id="overlay" onclick="this.classList.add('hidden')">
110 <div id="description" class="hidden shadow-bottom p-3">
111 NoPaste is a client-side paste service which works with <b>no database</b>, and <b>no back-end code</b>.<br /><br />
112 Instead, the data is <b>compressed</b> then <b>stored</b> into a unique URL that can be shared and decoded later.<br /><br />
113
114 As a result, there is no risk of data being lost, censored or deleted. The data is stored entirely
115 <b>in the links</b> and nowhere else!<br /><br />
116
117 You can find more detailed information on
118 <a href="https://github.com/bokub/nopaste" rel="noopener" target="_blank">Github</a>
119 </div>
120 </div>
121 <script src="https://cdn.jsdelivr.net/combine/
122npm/lzma@2.3.2/src/lzma.min.js,
123npm/slim-select@1.25.0/dist/slimselect.min.js,
124npm/clipboard@2/dist/clipboard.min.js,
125npm/codemirror@5.52.0,
126npm/codemirror@5.52.0/addon/mode/loadmode.min.js,
127npm/codemirror@5.52.0/addon/mode/overlay.min.js,
128npm/codemirror@5.52.0/addon/mode/multiplex.min.js,
129npm/codemirror@5.52.0/addon/mode/simple.min.js,
130npm/codemirror@5.52.0/addon/scroll/simplescrollbars.js,
131npm/codemirror@5.52.0/mode/meta.min.js
132"></script>
133 <script src="index.js"></script>
134 </body>
135</html>