Thumbnail doubles up as secondary loader; Webpack dev server as primary dev stack, dynamic base_href to accommodate
This commit is contained in:
227
src/index.html
227
src/index.html
@ -1,118 +1,123 @@
|
||||
<html>
|
||||
<head>
|
||||
|
||||
<title>Iris</title>
|
||||
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||
<meta content="width=device-width, initial-scale=1" name="viewport" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
|
||||
<link rel="manifest" href="manifest.json" crossorigin="use-credentials" />
|
||||
|
||||
<!-- App setup -->
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-title" content="Iris" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="#121212" />
|
||||
<meta name="mobile-web-app-capable" content="yes" />
|
||||
<meta name="theme-color" content="#222222" />
|
||||
|
||||
<!-- Icons -->
|
||||
<link rel="apple-touch-startup-image" href="assets/app-icon_512.png" />
|
||||
<link rel="apple-touch-icon" sizes="192x192" href="assets/app-icon_192.png" />
|
||||
<link rel="apple-touch-icon" sizes="512x512" href="assets/app-icon_512.png" />
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="assets/app-icon_57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="assets/app-icon_60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="assets/app-icon_72.png">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="assets/app-icon_76.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="assets/app-icon_114.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="assets/app-icon_120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="assets/app-icon_144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="assets/app-icon_152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="assets/app-icon_180.png">
|
||||
|
||||
<link class="favicon" rel="shortcut icon" type="image/ico" href="assets/favicon.png" />
|
||||
<link class="favicon" rel="shortcut icon" type="image/x-icon" href="assets/favicon.png" />
|
||||
<link class="favicon" rel="shortcut-icon" href="assets/favicon.png" />
|
||||
|
||||
<link rel="mask-icon" href="assets/app-icon.svg" color="#08d58f" />
|
||||
|
||||
<!-- Loading screen styles -->
|
||||
<style>
|
||||
html {
|
||||
background-color: #121212;
|
||||
<head>
|
||||
<title>Iris</title>
|
||||
<base id="base_href" href="/iris/" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-title" content="Iris" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="#121212" />
|
||||
<meta name="mobile-web-app-capable" content="yes" />
|
||||
<meta name="theme-color" content="#222222" />
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||
<meta content="width=device-width, initial-scale=1" name="viewport" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<style>
|
||||
html {
|
||||
background-color: #121212;
|
||||
}
|
||||
@keyframes loader {
|
||||
0% { left: 0; right: 100%; }
|
||||
50% { left: 0; right: 0; }
|
||||
100% { left: 100%; right: 0; }
|
||||
}
|
||||
#app-loading {
|
||||
position: fixed;
|
||||
top: 50vh;
|
||||
left: 0;
|
||||
right: 0;
|
||||
transform: translateY(-50%);
|
||||
text-align: center;
|
||||
padding: 30px 0;
|
||||
}
|
||||
#app-loading-logo {
|
||||
filter: brightness(0) invert(1);
|
||||
margin: 0 auto;
|
||||
display: block;
|
||||
width: 60vw;
|
||||
max-width: 100px;
|
||||
opacity: 0.25;
|
||||
}
|
||||
#app-loading-loader.loading {
|
||||
position: relative;
|
||||
margin: 30px auto 0;
|
||||
width: 80vw;
|
||||
max-width: 200px;
|
||||
height: 3px;
|
||||
border-radius: 3px;
|
||||
overflow: hidden;
|
||||
background-color: #1A1A1A;
|
||||
}
|
||||
#app-loading-loader.loading::before {
|
||||
position: absolute;
|
||||
display: block;
|
||||
content: '';
|
||||
height: 100%;
|
||||
animation-name: loader;
|
||||
background: #444444;
|
||||
animation-duration: 1.8s;
|
||||
animation-timing-function: ease-in-out;
|
||||
animation-iteration-count: infinite;
|
||||
}
|
||||
#app-loading-message {
|
||||
color: white;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
line-height: 20px;
|
||||
padding: 10px;
|
||||
opacity: 0.3;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<script type="text/javascript">
|
||||
var base_href = document.location.pathname.indexOf('/iris/') > -1 ? '/iris/' : '/';
|
||||
const baseObject = document.getElementById('base_href');
|
||||
baseObject.href = base_href;
|
||||
|
||||
var links = [
|
||||
{ rel: 'manifest', href: 'manifest.json', crossorigin: 'use-credentials' },
|
||||
{ rel: 'apple-touch-startup-image', href: 'assets/app-icon_512.png' },
|
||||
{ rel: 'apple-touch-icon', href: 'assets/app-icon_192.png', sizes: '192x192' },
|
||||
{ rel: 'apple-touch-icon', href: 'assets/app-icon_512.png', sizes: '512x512' },
|
||||
{ rel: 'apple-touch-icon', href: 'assets/app-icon_57.png', sizes: '57x57' },
|
||||
{ rel: 'apple-touch-icon', href: 'assets/app-icon_60.png', sizes: '60x60' },
|
||||
{ rel: 'apple-touch-icon', href: 'assets/app-icon_72.png', sizes: '72x72' },
|
||||
{ rel: 'apple-touch-icon', href: 'assets/app-icon_76.png', sizes: '76x76' },
|
||||
{ rel: 'apple-touch-icon', href: 'assets/app-icon_114.png', sizes: '114x114' },
|
||||
{ rel: 'apple-touch-icon', href: 'assets/app-icon_120.png', sizes: '120x120' },
|
||||
{ rel: 'apple-touch-icon', href: 'assets/app-icon_144.png', sizes: '144x144' },
|
||||
{ rel: 'apple-touch-icon', href: 'assets/app-icon_152.png', sizes: '152x152' },
|
||||
{ rel: 'apple-touch-icon', href: 'assets/app-icon_180.png', sizes: '180x180' },
|
||||
{ rel: 'shortcut icon', href: 'assets/favicon.png', class: 'favicon', type: 'image/ico' },
|
||||
{ rel: 'shortcut icon', href: 'assets/favicon.png', class: 'favicon', type: 'image/x-icon' },
|
||||
{ rel: 'shortcut-icon', href: 'assets/favicon.png', class: 'favicon' },
|
||||
{ rel: 'mask-icon', href: 'assets/app-icon.svg', color: '#08d58f' },
|
||||
];
|
||||
|
||||
for (const link of links) {
|
||||
const linkObject = document.createElement('link');
|
||||
linkObject.rel = link.rel;
|
||||
linkObject.href = base_href + link.href;
|
||||
if (link.type) linkObject.type = link.type;
|
||||
if (link.sizes) linkObject.sizes = link.sizes;
|
||||
if (link.color) linkObject.color = link.color;
|
||||
if (link.crossorigin) linkObject.crossorigin = link.crossorigin;
|
||||
document.head.appendChild(linkObject);
|
||||
}
|
||||
@keyframes loader {
|
||||
0% { left: 0; right: 100%; }
|
||||
50% { left: 0; right: 0; }
|
||||
100% { left: 100%; right: 0; }
|
||||
}
|
||||
#app-loading {
|
||||
position: fixed;
|
||||
top: 50vh;
|
||||
left: 0;
|
||||
right: 0;
|
||||
transform: translateY(-50%);
|
||||
text-align: center;
|
||||
padding: 30px 0;
|
||||
}
|
||||
#app-loading-logo {
|
||||
filter: brightness(0) invert(1);
|
||||
margin: 0 auto;
|
||||
display: block;
|
||||
width: 60vw;
|
||||
max-width: 100px;
|
||||
opacity: 0.25;
|
||||
}
|
||||
#app-loading-loader.loading {
|
||||
position: relative;
|
||||
margin: 30px auto 0;
|
||||
width: 80vw;
|
||||
max-width: 200px;
|
||||
height: 3px;
|
||||
border-radius: 3px;
|
||||
overflow: hidden;
|
||||
background-color: #1A1A1A;
|
||||
}
|
||||
#app-loading-loader.loading::before {
|
||||
position: absolute;
|
||||
display: block;
|
||||
content: '';
|
||||
height: 100%;
|
||||
animation-name: loader;
|
||||
background: #444444;
|
||||
animation-duration: 1.8s;
|
||||
animation-timing-function: ease-in-out;
|
||||
animation-iteration-count: infinite;
|
||||
}
|
||||
#app-loading-message {
|
||||
color: white;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
line-height: 20px;
|
||||
padding: 10px;
|
||||
opacity: 0.3;
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div id="app">
|
||||
<!-- ReactJS app gets injected here, replacing the loader -->
|
||||
<div id="app-loading">
|
||||
<img src="assets/app-icon.svg" id="app-loading-logo" />
|
||||
<div id="app-loading-loader" class="loading"></div>
|
||||
<div id="app-loading-message">
|
||||
<div id="app-loading-message-base"></div>
|
||||
<div id="app-loading-message-js"></div>
|
||||
<div id="app-loading-message-css"></div>
|
||||
</script>
|
||||
<body>
|
||||
<div id="app">
|
||||
<!-- ReactJS app gets injected here, replacing the loader -->
|
||||
<div id="app-loading">
|
||||
<img src="assets/app-icon.svg" id="app-loading-logo" />
|
||||
<div id="app-loading-loader" class="loading"></div>
|
||||
<div id="app-loading-message">
|
||||
<div id="app-loading-message-base"></div>
|
||||
<div id="app-loading-message-js"></div>
|
||||
<div id="app-loading-message-css"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
<script type="text/javascript">
|
||||
if ('serviceWorker' in navigator){
|
||||
navigator.serviceWorker.register('/service-worker.js')
|
||||
@ -123,7 +128,6 @@
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
var setMessage = function(type = '', content = '') {
|
||||
var element = document.getElementById(`app-loading-message-${type}`);
|
||||
@ -196,6 +200,5 @@
|
||||
document.body.appendChild(js);
|
||||
|
||||
</script>
|
||||
|
||||
</html>
|
||||
|
||||
|
||||
@ -84,7 +84,7 @@ export default memo((props) => {
|
||||
style={{ backgroundImage: `url("${image}")` }}
|
||||
/>
|
||||
)}
|
||||
<Loader loading={loading} />
|
||||
{loading && <Loader loading />}
|
||||
<div className="thumbnail__actions">
|
||||
{props.canZoom && image && (
|
||||
<Link
|
||||
|
||||
@ -36,10 +36,10 @@
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: 8;
|
||||
background-color: rgba(0, 0, 0, 0.50);
|
||||
background-color: rgba(0, 0, 0, 0.75);
|
||||
|
||||
@include theme('light') {
|
||||
background-color: rgba(255, 255, 255, 0.50);
|
||||
background-color: rgba(255, 255, 255, 0.75);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user