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,
18npm/microtip@0.2.2/microtip.min.css
19"
20 />
21 <link rel="stylesheet" href="style.css" />
22 <link href="favicon.ico" rel="icon" type="image/x-icon" />
23 <link rel="canonical" href="https://nopaste.ml/" />
24 <meta
25 name="description"
26 property="og:description"
27 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"
28 />
29 <meta property="og:title" content="NoPaste - No-database paste service" />
30 <meta property="og:image" content="https://cdn.jsdelivr.net/gh/bokub/nopaste@images/logo.png" />
31 <meta property="og:url" content="https://nopaste.ml/" />
32 <meta property="og:type" content="website" />
33 </head>
34 <body class="m-0">
35 <script>
36 const readOnly = window.location !== window.parent.location || new URLSearchParams(window.location.search).has('readonly');
37 if (readOnly) {
38 document.body.classList.add('readonly');
39 }
40 </script>
41 <div id="copy" class="container-fluid hidden shadow-bottom hide-readonly">
42 <div class="row my-1">
43 <div class="col my-1">
44 <input type="text" value="copy me" id="copy-link" class="px-2" onclick="this.setSelectionRange(0, this.value.length)" />
45 </div>
46 <div class="col-auto my-1">
47 <button class="clipboard py-1 px-2 mx-1" id="copy-btn" data-clipboard-target="#copy-link" type="button">
48 Copy
49 </button>
50 <button class="py-1 px-2 mx-1" onclick="hideCopyBar(false)" type="button">Cancel</button>
51 </div>
52 </div>
53 </div>
54 <div id="controls" class="container-fluid shadow-bottom hide-readonly">
55 <div class="row align-items-center justify-content-end my-1">
56 <div class="col-auto mb-1">
57 <h1 class="my-0"><span>{</span> NoPaste <span>}</span></h1>
58 </div>
59 <div class="col-auto">
60 <a
61 href="https://github.com/bokub/nopaste"
62 rel="noopener"
63 target="_blank"
64 class="mx-1"
65 aria-label="Source code"
66 data-microtip-position="bottom"
67 role="tooltip"
68 >
69 <span class="icon-github"></span>
70 </a>
71 <a
72 href="javascript:void(0)"
73 class="mx-1"
74 aria-label="What is NoPaste?"
75 data-microtip-position="bottom"
76 role="tooltip"
77 data-micromodal-trigger="description-modal"
78 >
79 <span class="mx-2 icon-question"></span>
80 </a>
81 </div>
82 <div class="col"></div>
83 <div class="col-auto my-1">
84 <select id="language"></select>
85 </div>
86 <div class="col-auto">
87 <button
88 onclick="enableLineWrapping()"
89 type="button"
90 id="enable-line-wrapping"
91 aria-label="Enable line wrapping"
92 data-microtip-position="bottom"
93 role="tooltip"
94 >
95 <span class="icon-notes"></span>
96 </button>
97 <button
98 onclick="disableLineWrapping()"
99 type="button"
100 id="disable-line-wrapping"
101 aria-label="Disable line wrapping"
102 data-microtip-position="bottom"
103 role="tooltip"
104 class="hidden"
105 >
106 <span class="icon-wrap-text"></span>
107 </button>
108 </div>
109 <div class="col-auto">
110 <button class="py-1 px-2 mx-0 my-1" onclick="generateLink('url')" type="button">
111 Generate link
112 </button>
113 <button class="py-1 px-2 mx-1 my-1" onclick="generateLink('markdown')" type="button">
114 Generate markdown
115 </button>
116 <button class="py-1 px-2 mx-0 my-1" onclick="generateLink('iframe')" type="button">Embed</button>
117 </div>
118 </div>
119 </div>
120 <div id="progress"></div>
121 <div id="editor"></div>
122 <footer id="footer" class="shadow-top container-fluid">
123 <div class="row my-1">
124 <div class="col mono hide-readonly" id="stats">Length: 0 | Lines: 1</div>
125 <div class="col mono show-readonly">Hosted on NoPaste.ml</div>
126 <div class="col-auto mono show-readonly">
127 <a href="javascript:void(0)" onclick="openInNewTab()">
128 <span class="icon-edit"></span>
129 Edit
130 </a>
131 </div>
132 </div>
133 </footer>
134 <div id="description-modal" class="modal">
135 <div tabindex="-1" data-micromodal-close class="modal-overlay">
136 <div role="dialog" class="modal-content shadow-bottom p-3 m-3" data-micromodal-close>
137 NoPaste is a client-side paste service which works with <span class="pink">no database</span>, and
138 <span class="pink">no back-end code</span>.<br /><br />
139 Instead, the data is <span class="pink">compressed</span> then <span class="pink">stored</span> into a unique URL that
140 can be shared and decoded later.<br /><br />
141
142 As a result, there is no risk of data being lost, censored or deleted. The data is stored entirely
143 <span class="pink">in the links</span> and nowhere else!<br /><br />
144
145 You can find more detailed information on
146 <a href="https://github.com/bokub/nopaste" rel="noopener" target="_blank">Github</a>
147 </div>
148 </div>
149 </div>
150
151 <script src="https://cdn.jsdelivr.net/combine/
152npm/lzma@2.3.2/src/lzma.min.js,
153npm/slim-select@1.25.0/dist/slimselect.min.js,
154npm/clipboard@2/dist/clipboard.min.js,
155npm/micromodal@0.4.6/dist/micromodal.min.js,
156npm/codemirror@5.52.0,
157npm/codemirror@5.52.0/addon/mode/loadmode.min.js,
158npm/codemirror@5.52.0/addon/mode/overlay.min.js,
159npm/codemirror@5.52.0/addon/mode/multiplex.min.js,
160npm/codemirror@5.52.0/addon/mode/simple.min.js,
161npm/codemirror@5.52.0/addon/scroll/simplescrollbars.js,
162npm/codemirror@5.52.0/mode/meta.min.js
163"></script>
164 <script src="index.js"></script>
165 </body>
166</html>