create-steedos-app 2.2.52-beta.6 → 2.2.53-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +2 -5
- package/README.md +40 -2
- package/dist/create-app.d.ts +10 -0
- package/dist/default/README-template.md +32 -0
- package/dist/default/docker-compose.yml +29 -0
- package/dist/default/env +32 -0
- package/dist/default/gitignore +17 -0
- package/{templates → dist}/default/steedos-app/main/default/client/analytics.baidu.client.js +0 -0
- package/dist/default/steedos-app/package.json +6 -0
- package/{templates → dist}/default/steedos-app/package.service.js +0 -0
- package/dist/default/steedos.config.js +18 -0
- package/dist/gitignore +17 -0
- package/dist/helpers/examples.d.ts +12 -0
- package/dist/helpers/get-pkg-manager.d.ts +2 -0
- package/dist/helpers/git.d.ts +1 -0
- package/dist/helpers/install.d.ts +22 -0
- package/dist/helpers/is-folder-empty.d.ts +1 -0
- package/dist/helpers/is-online.d.ts +1 -0
- package/dist/helpers/is-writeable.d.ts +1 -0
- package/dist/helpers/make-dir.d.ts +3 -0
- package/dist/helpers/validate-pkg.d.ts +4 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +385 -0
- package/package.json +35 -22
- package/createSteedosApp.js +0 -127
- package/index.js +0 -19
- package/templates/default/.scripts/env.sh +0 -7
- package/templates/default/.scripts/flush_cacher_db.js +0 -7
- package/templates/default/.scripts/setup.sh +0 -8
- package/templates/default/.scripts/tailscale.sh +0 -7
- package/templates/default/.scripts/tailscaled.sh +0 -6
- package/templates/default/.steedos/_package.json +0 -11
- package/templates/default/.steedos/steedos-packages.yml +0 -30
- package/templates/default/.steedos/yarn.lock +0 -35
- package/templates/default/.vscode/extensions.json +0 -5
- package/templates/default/.vscode/settings.json +0 -17
- package/templates/default/Dockerfile +0 -21
- package/templates/default/Dockerfile-codeserver +0 -37
- package/templates/default/README.md +0 -99
- package/templates/default/_package.json +0 -60
- package/templates/default/docker-compose.yml +0 -59
- package/templates/default/env +0 -35
- package/templates/default/gitignore +0 -35
- package/templates/default/gitpod.Dockerfile +0 -52
- package/templates/default/gitpod.yml +0 -47
- package/templates/default/index.js +0 -0
- package/templates/default/jsreport-app/_package.json +0 -16
- package/templates/default/jsreport-app/jsreport.config.json +0 -43
- package/templates/default/jsreport-app/server.js +0 -14
- package/templates/default/lerna.json +0 -10
- package/templates/default/moleculer.config.js +0 -268
- package/templates/default/node-red-app/LICENSE.txt +0 -706
- package/templates/default/node-red-app/README.md +0 -78
- package/templates/default/node-red-app/_package.json +0 -26
- package/templates/default/node-red-app/index.js +0 -137
- package/templates/default/node-red-app/public/css/simplegrid.css +0 -145
- package/templates/default/node-red-app/public/css/style.css +0 -482
- package/templates/default/node-red-app/public/favicon.ico +0 -0
- package/templates/default/node-red-app/public/first-run.html +0 -280
- package/templates/default/node-red-app/public/fonts/css.css +0 -224
- package/templates/default/node-red-app/public/images/progress-bar.png +0 -0
- package/templates/default/node-red-app/public/images/progress-left.png +0 -0
- package/templates/default/node-red-app/public/images/progress-middle.png +0 -0
- package/templates/default/node-red-app/public/images/progress-o-bar.png +0 -0
- package/templates/default/node-red-app/public/images/progress-o-left.png +0 -0
- package/templates/default/node-red-app/public/images/progress-o-middle.png +0 -0
- package/templates/default/node-red-app/public/images/progress-o-right.png +0 -0
- package/templates/default/node-red-app/public/images/progress-right.png +0 -0
- package/templates/default/node-red-app/public/images/spin.svg +0 -41
- package/templates/default/node-red-app/public/images/title-wave.png +0 -0
- package/templates/default/node-red-app/public/index.html +0 -220
- package/templates/default/node-red-app/public/scripts/jquery-1.11.2.min.js +0 -4
- package/templates/default/node-red-app/public/scripts/zxcvbn.js +0 -28
- package/templates/default/node-red-app/public/steedos.png +0 -0
- package/templates/default/node-red-app/red.js +0 -294
- package/templates/default/node-red-app/routers/health.js +0 -13
- package/templates/default/node-red-app/settings.js +0 -121
- package/templates/default/services/community.service.js +0 -19
- package/templates/default/services/enterprise.service.js +0 -26
- package/templates/default/services/sidecar-server.service.js +0 -7
- package/templates/default/steedos-app/README.md +0 -5
- package/templates/default/steedos-app/_package.json +0 -9
- package/templates/default/steedos-app/tsconfig.json +0 -74
- package/templates/default/steedos-config.yml +0 -95
- package/templates/default/steedos-packages/README.md +0 -1
- package/templates/default/steedos-packages/my-package/README.md +0 -3
- package/templates/default/steedos-packages/my-package/_package.json +0 -9
- package/templates/default/steedos-packages/my-package/main/default/client/analytics.baidu.client.js +0 -24
- package/templates/default/steedos-packages/my-package/package.service.js +0 -69
|
@@ -1,280 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en"><head>
|
|
3
|
-
<head>
|
|
4
|
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>Node-RED on Steedos</title>
|
|
7
|
-
|
|
8
|
-
<link href='fonts/css.css?family=Roboto+Slab:400,700,300,100' rel='stylesheet' type='text/css'>
|
|
9
|
-
<script src="scripts/jquery-1.11.2.min.js"></script>
|
|
10
|
-
|
|
11
|
-
<link href="css/simplegrid.css" rel="stylesheet" media="screen">
|
|
12
|
-
<link href="css/style.css" rel="stylesheet" media="screen">
|
|
13
|
-
<script src="scripts/zxcvbn.js"></script>
|
|
14
|
-
|
|
15
|
-
</head>
|
|
16
|
-
<body>
|
|
17
|
-
|
|
18
|
-
<div class="header">
|
|
19
|
-
<div class="header-content">
|
|
20
|
-
|
|
21
|
-
</div>
|
|
22
|
-
</div>
|
|
23
|
-
<!-- Grid 1 -->
|
|
24
|
-
<div class="guide">
|
|
25
|
-
<div class="deploy hide">
|
|
26
|
-
<h3>Applying your settings and starting Node-RED</h3>
|
|
27
|
-
<p><img src="images/spin.svg"></p>
|
|
28
|
-
</div>
|
|
29
|
-
<div class="body">
|
|
30
|
-
<div class="page page-1">
|
|
31
|
-
<h3>Welcome to your new Node-RED instance on Steedos</h3>
|
|
32
|
-
<p>We know you're eager to start wiring up your flows, but first there
|
|
33
|
-
are a couple of tasks you should do:</p>
|
|
34
|
-
<ul>
|
|
35
|
-
<li>Secure your Node-RED editor</li>
|
|
36
|
-
<li>Learn how to install additional nodes</li>
|
|
37
|
-
</ul>
|
|
38
|
-
</div>
|
|
39
|
-
<div class="page page-2">
|
|
40
|
-
<h3>Secure your Node-RED editor</h3>
|
|
41
|
-
<ul class="box-list">
|
|
42
|
-
<li>
|
|
43
|
-
<label class="secureOptionLabel" for="secureOption-enabled"><input id="secureOption-enabled" type="radio" value="enabled" name="secureOption" checked> Secure your editor so only authorised users can access it</label>
|
|
44
|
-
<div id="secureOption-enabled-info" class="secureOption-info">
|
|
45
|
-
<div><label for="secureOption-username">Username</label> <input class="secureOption-input" id="secureOption-username" type="text"></div>
|
|
46
|
-
<div><label for="secureOption-password">Password</label> <div class="secureOption-password-box"><input class="secureOption-input" id="secureOption-password" type="password"><meter max="5" id="password-meter"></meter><div class="password-strength"></div></div><div class="password-hints">Must be at least 8 characters</div></div>
|
|
47
|
-
<div><label class="checkboxLabel" for="secureOption-anonymous"><input id="secureOption-anonymous" type="checkbox"> Allow anyone to view the editor, but not make any changes</label></div>
|
|
48
|
-
</div>
|
|
49
|
-
</li>
|
|
50
|
-
<li>
|
|
51
|
-
<label class="secureOptionLabel" for="secureOption-disabled"><input id="secureOption-disabled" type="radio" value="disabled" name="secureOption"> <i>Not recommended:</i> Allow anyone to access the editor and make changes</label>
|
|
52
|
-
<div id="secureOption-disabled-info" class="secureOption-info hide">
|
|
53
|
-
Your editor will not be secured. Anyone with the URL will be able to access your flows, data and bound services.
|
|
54
|
-
<div><label class="checkboxLabel" for="secureOption-insecure"><input id="secureOption-insecure" type="checkbox"> Tick this box to confirm you want your editor to be insecure</label></div>
|
|
55
|
-
</div>
|
|
56
|
-
</li>
|
|
57
|
-
</ul>
|
|
58
|
-
</div>
|
|
59
|
-
<div class="page page-3">
|
|
60
|
-
<h3>Learn how to install additional nodes</h3>
|
|
61
|
-
<p> Node-RED provides a <a href="https://flows.nodered.org" target="_blank">huge catalog of extra nodes</a> you can install into the editor.</p>
|
|
62
|
-
<p> Many of these nodes can be installed directly from the editor's palette manager feature. However that can cause issues due to the limited
|
|
63
|
-
memory of the default Node-RED starter application.</p>
|
|
64
|
-
<p> The <i>recommended approach</i> is to edit your application's <code>package.json</code> file to include the additional node modules and then redeploy the application.
|
|
65
|
-
This can be done using the Continuous Delivery feature on the application's Steedos dashboard.</p>
|
|
66
|
-
<p> For more information, follow <a href="https://developer.ibm.com/tutorials/how-to-create-a-node-red-starter-application/" target="_blank">this tutorial on IBM Developer</a>.</p>
|
|
67
|
-
</div>
|
|
68
|
-
<div class="page page-4">
|
|
69
|
-
<h3>Finish the install</h3>
|
|
70
|
-
<p>You have made the following selections:</p>
|
|
71
|
-
<ul id="summary"></ul>
|
|
72
|
-
<p>You can change these settings at any time by setting the following environment variables via the Steedos console:</p>
|
|
73
|
-
<ul>
|
|
74
|
-
<li><code>NODE_RED_USERNAME</code> - the username</li>
|
|
75
|
-
<li><code>NODE_RED_PASSWORD</code> - the password</li>
|
|
76
|
-
<li><code>NODE_RED_GUEST_ACCESS</code> - if set to `true`, allows anyone read-only access to the editor</li>
|
|
77
|
-
</ul>
|
|
78
|
-
</div>
|
|
79
|
-
|
|
80
|
-
</div>
|
|
81
|
-
<div class="toolbar">
|
|
82
|
-
<div class="progress">
|
|
83
|
-
<div class="progress-step progress-step-0 active"></div>
|
|
84
|
-
<div class="progress-bar progress-bar-1"></div>
|
|
85
|
-
<div class="progress-step progress-step-1"></div>
|
|
86
|
-
<div class="progress-bar progress-bar-2"></div>
|
|
87
|
-
<div class="progress-step progress-step-2"></div>
|
|
88
|
-
<div class="progress-bar progress-bar-3"></div>
|
|
89
|
-
<div class="progress-step progress-step-3"></div>
|
|
90
|
-
</div>
|
|
91
|
-
<div class="btn-group">
|
|
92
|
-
<button id="btn-prev">Previous</button>
|
|
93
|
-
<button id="btn-next">Next</button>
|
|
94
|
-
<button id="btn-finish" class="hide">Finish</button>
|
|
95
|
-
</div>
|
|
96
|
-
</div>
|
|
97
|
-
</div>
|
|
98
|
-
|
|
99
|
-
<script>
|
|
100
|
-
$(function() {
|
|
101
|
-
var currentPage = 0;
|
|
102
|
-
var totalPages = 4;
|
|
103
|
-
var passwordValid = false;
|
|
104
|
-
|
|
105
|
-
var password;
|
|
106
|
-
|
|
107
|
-
function updateProgress() {
|
|
108
|
-
for (var i = 0; i <totalPages; i++) {
|
|
109
|
-
$(".progress-step-"+i).toggleClass("active",i<=currentPage);
|
|
110
|
-
$(".progress-bar-"+i).toggleClass("active",i<=currentPage);
|
|
111
|
-
}
|
|
112
|
-
var pageValid = true;
|
|
113
|
-
if (currentPage === 1) {
|
|
114
|
-
var v = $('input[name=secureOption]:checked').val();
|
|
115
|
-
if (!v) {
|
|
116
|
-
pageValid = false;
|
|
117
|
-
} else if (v === 'enabled') {
|
|
118
|
-
pageValid = $("#secureOption-username").val().length > 0 && passwordValid;
|
|
119
|
-
$("#secureOption-insecure").prop("checked",false);
|
|
120
|
-
} else {
|
|
121
|
-
pageValid = $("#secureOption-insecure").prop("checked");
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
$("#btn-next").prop("disabled",!pageValid);
|
|
125
|
-
|
|
126
|
-
$("#btn-prev").prop("disabled",currentPage === 0);
|
|
127
|
-
$("#btn-next").toggleClass("hide",currentPage+1===totalPages);
|
|
128
|
-
$("#btn-finish").toggleClass("hide",currentPage+1!==totalPages);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
$("#btn-next").click(function(e) {
|
|
132
|
-
e.preventDefault();
|
|
133
|
-
if (currentPage+1 < totalPages) {
|
|
134
|
-
if (currentPage === 1) {
|
|
135
|
-
// Shuffle the password to stop password managers constantly prompting
|
|
136
|
-
password = $("#secureOption-password").val();
|
|
137
|
-
$("#secureOption-password").val("");
|
|
138
|
-
}
|
|
139
|
-
currentPage++;
|
|
140
|
-
if (currentPage === 1) {
|
|
141
|
-
$("#secureOption-password").val(password);
|
|
142
|
-
} else if (currentPage === 3) {
|
|
143
|
-
var summary = $("#summary");
|
|
144
|
-
summary.empty();
|
|
145
|
-
var v = $('input[name=secureOption]:checked').val();
|
|
146
|
-
if (v === 'disabled') {
|
|
147
|
-
$("<li><i>Not recommended:</i> Allow anyone to access the editor and make changes</li>").appendTo(summary);
|
|
148
|
-
} else if (v === 'enabled') {
|
|
149
|
-
$("<li>Secure your editor so only authorised users can access it</li>").appendTo(summary);
|
|
150
|
-
if ($("#secureOption-anonymous").prop("checked")) {
|
|
151
|
-
$("<li>Allow anyone to view the editor, but not make any changes</li>").appendTo(summary);
|
|
152
|
-
}
|
|
153
|
-
} else {
|
|
154
|
-
$("<li>None - please go back and make a selection</li>").appendTo(summary);
|
|
155
|
-
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
$(".body").animate({
|
|
159
|
-
left: "-"+currentPage+"00%"
|
|
160
|
-
});
|
|
161
|
-
updateProgress();
|
|
162
|
-
}
|
|
163
|
-
});
|
|
164
|
-
$("#btn-prev").click(function(e) {
|
|
165
|
-
e.preventDefault();
|
|
166
|
-
if (currentPage > 0) {
|
|
167
|
-
if (currentPage === 1) {
|
|
168
|
-
// Shuffle the password to stop password managers constantly prompting
|
|
169
|
-
password = $("#secureOption-password").val();
|
|
170
|
-
$("#secureOption-password").val("");
|
|
171
|
-
}
|
|
172
|
-
currentPage--;
|
|
173
|
-
if (currentPage === 1) {
|
|
174
|
-
$("#secureOption-password").val(password);
|
|
175
|
-
}
|
|
176
|
-
$(".body").animate({
|
|
177
|
-
left: "-"+currentPage+"00%"
|
|
178
|
-
});
|
|
179
|
-
updateProgress();
|
|
180
|
-
}
|
|
181
|
-
});
|
|
182
|
-
$(".body").css({
|
|
183
|
-
left: "-"+currentPage+"00%"
|
|
184
|
-
});
|
|
185
|
-
$('#secureOption-username').on('keyup',function() {
|
|
186
|
-
updateProgress();
|
|
187
|
-
});
|
|
188
|
-
$('input[name=secureOption]').on('change', function() {
|
|
189
|
-
updateProgress();
|
|
190
|
-
var v = $('input[name=secureOption]:checked').val();
|
|
191
|
-
if (v === 'enabled') {
|
|
192
|
-
$("#secureOption-disabled-info").slideUp('fast');
|
|
193
|
-
$("#secureOption-enabled-info").slideDown('fast');
|
|
194
|
-
} else {
|
|
195
|
-
$("#secureOption-enabled-info").slideUp('fast');
|
|
196
|
-
$("#secureOption-disabled-info").slideDown('fast');
|
|
197
|
-
|
|
198
|
-
}
|
|
199
|
-
});
|
|
200
|
-
|
|
201
|
-
$("#secureOption-insecure").on('change', function() {
|
|
202
|
-
updateProgress();
|
|
203
|
-
});
|
|
204
|
-
var meter = $("#password-meter");
|
|
205
|
-
var strengthColors = [
|
|
206
|
-
"red","red","red","yellowgreen","green"
|
|
207
|
-
];
|
|
208
|
-
$("#secureOption-password").on('keyup', function() {
|
|
209
|
-
var val = $(this).val();
|
|
210
|
-
if (val.length === 0) {
|
|
211
|
-
meter.val(0);
|
|
212
|
-
$(".password-strength").text("");
|
|
213
|
-
$(".password-hints").show();
|
|
214
|
-
passwordValid = false;
|
|
215
|
-
} else if (val.length < 8) {
|
|
216
|
-
meter.val(1);
|
|
217
|
-
$(".password-strength").text("too short").css({color:strengthColors[1]});
|
|
218
|
-
$(".password-hints").show();
|
|
219
|
-
passwordValid = false;
|
|
220
|
-
} else {
|
|
221
|
-
var result = zxcvbn(val);
|
|
222
|
-
meter.val(result.score+1);
|
|
223
|
-
$(".password-strength").text([
|
|
224
|
-
'too weak','too weak','weak','good','strong'
|
|
225
|
-
][result.score]).css({color:strengthColors[result.score]});
|
|
226
|
-
$(".password-hints").hide();
|
|
227
|
-
passwordValid = (result.score >= 2);
|
|
228
|
-
}
|
|
229
|
-
updateProgress();
|
|
230
|
-
});
|
|
231
|
-
|
|
232
|
-
$("#btn-finish").click(function(e) {
|
|
233
|
-
var v = $('input[name=secureOption]:checked').val();
|
|
234
|
-
var config = {};
|
|
235
|
-
if (v === "enabled") {
|
|
236
|
-
config.adminAuth = {
|
|
237
|
-
username: $("#secureOption-username").val(),
|
|
238
|
-
password: password,
|
|
239
|
-
allowAnonymous: $("#secureOption-anonymous").prop("checked")
|
|
240
|
-
};
|
|
241
|
-
}
|
|
242
|
-
$(".body").hide();
|
|
243
|
-
$(".toolbar").hide();
|
|
244
|
-
$(".deploy").show();
|
|
245
|
-
$.ajax({
|
|
246
|
-
url:"/setup",
|
|
247
|
-
type: "POST",
|
|
248
|
-
data: JSON.stringify(config),
|
|
249
|
-
contentType: "application/json; charset=utf-8"
|
|
250
|
-
}).done(function(data,textStatus,xhr) {
|
|
251
|
-
waitForEditor();
|
|
252
|
-
});
|
|
253
|
-
});
|
|
254
|
-
|
|
255
|
-
function redirectToEditor() {
|
|
256
|
-
document.location.reload(true);
|
|
257
|
-
}
|
|
258
|
-
function waitForEditor() {
|
|
259
|
-
setTimeout(function() {
|
|
260
|
-
$.ajax({
|
|
261
|
-
dataType: "json",
|
|
262
|
-
url: "/red/settings",
|
|
263
|
-
success: function() {
|
|
264
|
-
redirectToEditor();
|
|
265
|
-
},
|
|
266
|
-
error: function(jqXHR,textStatus,errorThrown) {
|
|
267
|
-
if (jqXHR.status !== 401) {
|
|
268
|
-
waitForEditor();
|
|
269
|
-
} else {
|
|
270
|
-
redirectToEditor();
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
});
|
|
274
|
-
},2000);
|
|
275
|
-
}
|
|
276
|
-
updateProgress();
|
|
277
|
-
});
|
|
278
|
-
</script>
|
|
279
|
-
</body>
|
|
280
|
-
</html>
|
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
/* cyrillic-ext */
|
|
2
|
-
@font-face {
|
|
3
|
-
font-family: 'Roboto Slab';
|
|
4
|
-
font-style: normal;
|
|
5
|
-
font-weight: 100;
|
|
6
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufA5qW54A.woff2) format('woff2');
|
|
7
|
-
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
|
8
|
-
}
|
|
9
|
-
/* cyrillic */
|
|
10
|
-
@font-face {
|
|
11
|
-
font-family: 'Roboto Slab';
|
|
12
|
-
font-style: normal;
|
|
13
|
-
font-weight: 100;
|
|
14
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufJ5qW54A.woff2) format('woff2');
|
|
15
|
-
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
|
16
|
-
}
|
|
17
|
-
/* greek-ext */
|
|
18
|
-
@font-face {
|
|
19
|
-
font-family: 'Roboto Slab';
|
|
20
|
-
font-style: normal;
|
|
21
|
-
font-weight: 100;
|
|
22
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufB5qW54A.woff2) format('woff2');
|
|
23
|
-
unicode-range: U+1F00-1FFF;
|
|
24
|
-
}
|
|
25
|
-
/* greek */
|
|
26
|
-
@font-face {
|
|
27
|
-
font-family: 'Roboto Slab';
|
|
28
|
-
font-style: normal;
|
|
29
|
-
font-weight: 100;
|
|
30
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufO5qW54A.woff2) format('woff2');
|
|
31
|
-
unicode-range: U+0370-03FF;
|
|
32
|
-
}
|
|
33
|
-
/* vietnamese */
|
|
34
|
-
@font-face {
|
|
35
|
-
font-family: 'Roboto Slab';
|
|
36
|
-
font-style: normal;
|
|
37
|
-
font-weight: 100;
|
|
38
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufC5qW54A.woff2) format('woff2');
|
|
39
|
-
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
|
40
|
-
}
|
|
41
|
-
/* latin-ext */
|
|
42
|
-
@font-face {
|
|
43
|
-
font-family: 'Roboto Slab';
|
|
44
|
-
font-style: normal;
|
|
45
|
-
font-weight: 100;
|
|
46
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufD5qW54A.woff2) format('woff2');
|
|
47
|
-
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
|
48
|
-
}
|
|
49
|
-
/* latin */
|
|
50
|
-
@font-face {
|
|
51
|
-
font-family: 'Roboto Slab';
|
|
52
|
-
font-style: normal;
|
|
53
|
-
font-weight: 100;
|
|
54
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufN5qU.woff2) format('woff2');
|
|
55
|
-
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
|
56
|
-
}
|
|
57
|
-
/* cyrillic-ext */
|
|
58
|
-
@font-face {
|
|
59
|
-
font-family: 'Roboto Slab';
|
|
60
|
-
font-style: normal;
|
|
61
|
-
font-weight: 300;
|
|
62
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufA5qW54A.woff2) format('woff2');
|
|
63
|
-
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
|
64
|
-
}
|
|
65
|
-
/* cyrillic */
|
|
66
|
-
@font-face {
|
|
67
|
-
font-family: 'Roboto Slab';
|
|
68
|
-
font-style: normal;
|
|
69
|
-
font-weight: 300;
|
|
70
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufJ5qW54A.woff2) format('woff2');
|
|
71
|
-
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
|
72
|
-
}
|
|
73
|
-
/* greek-ext */
|
|
74
|
-
@font-face {
|
|
75
|
-
font-family: 'Roboto Slab';
|
|
76
|
-
font-style: normal;
|
|
77
|
-
font-weight: 300;
|
|
78
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufB5qW54A.woff2) format('woff2');
|
|
79
|
-
unicode-range: U+1F00-1FFF;
|
|
80
|
-
}
|
|
81
|
-
/* greek */
|
|
82
|
-
@font-face {
|
|
83
|
-
font-family: 'Roboto Slab';
|
|
84
|
-
font-style: normal;
|
|
85
|
-
font-weight: 300;
|
|
86
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufO5qW54A.woff2) format('woff2');
|
|
87
|
-
unicode-range: U+0370-03FF;
|
|
88
|
-
}
|
|
89
|
-
/* vietnamese */
|
|
90
|
-
@font-face {
|
|
91
|
-
font-family: 'Roboto Slab';
|
|
92
|
-
font-style: normal;
|
|
93
|
-
font-weight: 300;
|
|
94
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufC5qW54A.woff2) format('woff2');
|
|
95
|
-
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
|
96
|
-
}
|
|
97
|
-
/* latin-ext */
|
|
98
|
-
@font-face {
|
|
99
|
-
font-family: 'Roboto Slab';
|
|
100
|
-
font-style: normal;
|
|
101
|
-
font-weight: 300;
|
|
102
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufD5qW54A.woff2) format('woff2');
|
|
103
|
-
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
|
104
|
-
}
|
|
105
|
-
/* latin */
|
|
106
|
-
@font-face {
|
|
107
|
-
font-family: 'Roboto Slab';
|
|
108
|
-
font-style: normal;
|
|
109
|
-
font-weight: 300;
|
|
110
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufN5qU.woff2) format('woff2');
|
|
111
|
-
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
|
112
|
-
}
|
|
113
|
-
/* cyrillic-ext */
|
|
114
|
-
@font-face {
|
|
115
|
-
font-family: 'Roboto Slab';
|
|
116
|
-
font-style: normal;
|
|
117
|
-
font-weight: 400;
|
|
118
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufA5qW54A.woff2) format('woff2');
|
|
119
|
-
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
|
120
|
-
}
|
|
121
|
-
/* cyrillic */
|
|
122
|
-
@font-face {
|
|
123
|
-
font-family: 'Roboto Slab';
|
|
124
|
-
font-style: normal;
|
|
125
|
-
font-weight: 400;
|
|
126
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufJ5qW54A.woff2) format('woff2');
|
|
127
|
-
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
|
128
|
-
}
|
|
129
|
-
/* greek-ext */
|
|
130
|
-
@font-face {
|
|
131
|
-
font-family: 'Roboto Slab';
|
|
132
|
-
font-style: normal;
|
|
133
|
-
font-weight: 400;
|
|
134
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufB5qW54A.woff2) format('woff2');
|
|
135
|
-
unicode-range: U+1F00-1FFF;
|
|
136
|
-
}
|
|
137
|
-
/* greek */
|
|
138
|
-
@font-face {
|
|
139
|
-
font-family: 'Roboto Slab';
|
|
140
|
-
font-style: normal;
|
|
141
|
-
font-weight: 400;
|
|
142
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufO5qW54A.woff2) format('woff2');
|
|
143
|
-
unicode-range: U+0370-03FF;
|
|
144
|
-
}
|
|
145
|
-
/* vietnamese */
|
|
146
|
-
@font-face {
|
|
147
|
-
font-family: 'Roboto Slab';
|
|
148
|
-
font-style: normal;
|
|
149
|
-
font-weight: 400;
|
|
150
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufC5qW54A.woff2) format('woff2');
|
|
151
|
-
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
|
152
|
-
}
|
|
153
|
-
/* latin-ext */
|
|
154
|
-
@font-face {
|
|
155
|
-
font-family: 'Roboto Slab';
|
|
156
|
-
font-style: normal;
|
|
157
|
-
font-weight: 400;
|
|
158
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufD5qW54A.woff2) format('woff2');
|
|
159
|
-
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
|
160
|
-
}
|
|
161
|
-
/* latin */
|
|
162
|
-
@font-face {
|
|
163
|
-
font-family: 'Roboto Slab';
|
|
164
|
-
font-style: normal;
|
|
165
|
-
font-weight: 400;
|
|
166
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufN5qU.woff2) format('woff2');
|
|
167
|
-
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
|
168
|
-
}
|
|
169
|
-
/* cyrillic-ext */
|
|
170
|
-
@font-face {
|
|
171
|
-
font-family: 'Roboto Slab';
|
|
172
|
-
font-style: normal;
|
|
173
|
-
font-weight: 700;
|
|
174
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufA5qW54A.woff2) format('woff2');
|
|
175
|
-
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
|
176
|
-
}
|
|
177
|
-
/* cyrillic */
|
|
178
|
-
@font-face {
|
|
179
|
-
font-family: 'Roboto Slab';
|
|
180
|
-
font-style: normal;
|
|
181
|
-
font-weight: 700;
|
|
182
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufJ5qW54A.woff2) format('woff2');
|
|
183
|
-
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
|
184
|
-
}
|
|
185
|
-
/* greek-ext */
|
|
186
|
-
@font-face {
|
|
187
|
-
font-family: 'Roboto Slab';
|
|
188
|
-
font-style: normal;
|
|
189
|
-
font-weight: 700;
|
|
190
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufB5qW54A.woff2) format('woff2');
|
|
191
|
-
unicode-range: U+1F00-1FFF;
|
|
192
|
-
}
|
|
193
|
-
/* greek */
|
|
194
|
-
@font-face {
|
|
195
|
-
font-family: 'Roboto Slab';
|
|
196
|
-
font-style: normal;
|
|
197
|
-
font-weight: 700;
|
|
198
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufO5qW54A.woff2) format('woff2');
|
|
199
|
-
unicode-range: U+0370-03FF;
|
|
200
|
-
}
|
|
201
|
-
/* vietnamese */
|
|
202
|
-
@font-face {
|
|
203
|
-
font-family: 'Roboto Slab';
|
|
204
|
-
font-style: normal;
|
|
205
|
-
font-weight: 700;
|
|
206
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufC5qW54A.woff2) format('woff2');
|
|
207
|
-
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
|
208
|
-
}
|
|
209
|
-
/* latin-ext */
|
|
210
|
-
@font-face {
|
|
211
|
-
font-family: 'Roboto Slab';
|
|
212
|
-
font-style: normal;
|
|
213
|
-
font-weight: 700;
|
|
214
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufD5qW54A.woff2) format('woff2');
|
|
215
|
-
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
|
216
|
-
}
|
|
217
|
-
/* latin */
|
|
218
|
-
@font-face {
|
|
219
|
-
font-family: 'Roboto Slab';
|
|
220
|
-
font-style: normal;
|
|
221
|
-
font-weight: 700;
|
|
222
|
-
src: url(https://fonts.gstatic.com/s/robotoslab/v13/BngMUXZYTXPIvIBgJJSb6ufN5qU.woff2) format('woff2');
|
|
223
|
-
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
|
224
|
-
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
The MIT License (MIT)
|
|
3
|
-
|
|
4
|
-
Copyright (c) 2014 Brent Jackson
|
|
5
|
-
|
|
6
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
7
|
-
this software and associated documentation files (the "Software"), to deal in
|
|
8
|
-
the Software without restriction, including without limitation the rights to use,
|
|
9
|
-
copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
|
|
10
|
-
Software, and to permit persons to whom the Software is furnished to do so,
|
|
11
|
-
subject to the following conditions:
|
|
12
|
-
|
|
13
|
-
The above copyright notice and this permission notice shall be included in all
|
|
14
|
-
copies or substantial portions of the Software.
|
|
15
|
-
|
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
18
|
-
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
19
|
-
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
20
|
-
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
21
|
-
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
22
|
-
|
|
23
|
-
https://github.com/jxnblk/loading
|
|
24
|
-
-->
|
|
25
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="#999">
|
|
26
|
-
<path transform="translate(2)" d="M0 12 V20 H4 V12z">
|
|
27
|
-
<animate attributeName="d" values="M0 12 V20 H4 V12z; M0 4 V28 H4 V4z; M0 12 V20 H4 V12z; M0 12 V20 H4 V12z" dur="1.2s" repeatCount="indefinite" begin="0" keytimes="0;.2;.5;1" keySplines="0.2 0.2 0.4 0.8;0.2 0.6 0.4 0.8;0.2 0.8 0.4 0.8" calcMode="spline" />
|
|
28
|
-
</path>
|
|
29
|
-
<path transform="translate(8)" d="M0 12 V20 H4 V12z">
|
|
30
|
-
<animate attributeName="d" values="M0 12 V20 H4 V12z; M0 4 V28 H4 V4z; M0 12 V20 H4 V12z; M0 12 V20 H4 V12z" dur="1.2s" repeatCount="indefinite" begin="0.2" keytimes="0;.2;.5;1" keySplines="0.2 0.2 0.4 0.8;0.2 0.6 0.4 0.8;0.2 0.8 0.4 0.8" calcMode="spline" />
|
|
31
|
-
</path>
|
|
32
|
-
<path transform="translate(14)" d="M0 12 V20 H4 V12z">
|
|
33
|
-
<animate attributeName="d" values="M0 12 V20 H4 V12z; M0 4 V28 H4 V4z; M0 12 V20 H4 V12z; M0 12 V20 H4 V12z" dur="1.2s" repeatCount="indefinite" begin="0.4" keytimes="0;.2;.5;1" keySplines="0.2 0.2 0.4 0.8;0.2 0.6 0.4 0.8;0.2 0.8 0.4 0.8" calcMode="spline" />
|
|
34
|
-
</path>
|
|
35
|
-
<path transform="translate(20)" d="M0 12 V20 H4 V12z">
|
|
36
|
-
<animate attributeName="d" values="M0 12 V20 H4 V12z; M0 4 V28 H4 V4z; M0 12 V20 H4 V12z; M0 12 V20 H4 V12z" dur="1.2s" repeatCount="indefinite" begin="0.6" keytimes="0;.2;.5;1" keySplines="0.2 0.2 0.4 0.8;0.2 0.6 0.4 0.8;0.2 0.8 0.4 0.8" calcMode="spline" />
|
|
37
|
-
</path>
|
|
38
|
-
<path transform="translate(26)" d="M0 12 V20 H4 V12z">
|
|
39
|
-
<animate attributeName="d" values="M0 12 V20 H4 V12z; M0 4 V28 H4 V4z; M0 12 V20 H4 V12z; M0 12 V20 H4 V12z" dur="1.2s" repeatCount="indefinite" begin="0.8" keytimes="0;.2;.5;1" keySplines="0.2 0.2 0.4 0.8;0.2 0.6 0.4 0.8;0.2 0.8 0.4 0.8" calcMode="spline" />
|
|
40
|
-
</path>
|
|
41
|
-
</svg>
|
|
Binary file
|