Add types to components and remove unused components
This commit is contained in:
parent
0f17d49fae
commit
2e6c5f6215
@ -1,94 +0,0 @@
|
|||||||
<script>
|
|
||||||
import {onMount, tick, beforeUpdate} from 'svelte' ;
|
|
||||||
|
|
||||||
let barcodeReady = false;
|
|
||||||
let mounted = false;
|
|
||||||
|
|
||||||
onMount(() => {
|
|
||||||
// The payment-form is ready.
|
|
||||||
mounted = true;
|
|
||||||
//if (barcodeReady) {
|
|
||||||
loadBarcodeElements();
|
|
||||||
//}
|
|
||||||
});
|
|
||||||
|
|
||||||
//export const
|
|
||||||
|
|
||||||
const target = (bc) => bc.length < 9 ? 7 : 12;
|
|
||||||
|
|
||||||
let error;
|
|
||||||
|
|
||||||
$: format = barcode.length < 9 ? "EAN8" : "EAN13";
|
|
||||||
|
|
||||||
|
|
||||||
function padBarcode(bc, length, pad = 0) {
|
|
||||||
return bc;
|
|
||||||
while (bc.length < length) {
|
|
||||||
bc = pad + bc.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
return bc;
|
|
||||||
}
|
|
||||||
|
|
||||||
const loadBarcodeElements = () => {
|
|
||||||
clearCanvas(document.getElementById("barcode").getContext("2d"));
|
|
||||||
error = null;
|
|
||||||
if (barcode != null && barcode.length > 0) {
|
|
||||||
//bwipjs.toCanvas("barcode", {bcid:format, text: padBarcode(barcode, target(barcode))});
|
|
||||||
try {
|
|
||||||
|
|
||||||
const x = JsBarcode("#barcode", padBarcode(barcode, target(barcode)), {format: format});
|
|
||||||
console.log(x);
|
|
||||||
} catch {
|
|
||||||
error = "Invalid barcode"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export let barcode = "";
|
|
||||||
|
|
||||||
beforeUpdate(async () => {
|
|
||||||
if (mounted) {
|
|
||||||
loadBarcodeElements();
|
|
||||||
}
|
|
||||||
await tick();
|
|
||||||
});
|
|
||||||
|
|
||||||
export const appendCheckDigit = () => {
|
|
||||||
if (barcode.length === 7 || barcode.length === 12) {
|
|
||||||
const check = eanCheckDigit(barcode);
|
|
||||||
//if (barcode[barcode.length-1] !== check)
|
|
||||||
//{
|
|
||||||
barcode += check;
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
function clearCanvas(context, canvas = context.canvas) {
|
|
||||||
context.clearRect(0, 0, canvas.width, canvas.height);
|
|
||||||
const w = canvas.width;
|
|
||||||
canvas.width = 1;
|
|
||||||
canvas.width = w;
|
|
||||||
}
|
|
||||||
|
|
||||||
// definitely a hack.
|
|
||||||
export const eanCheckDigit = (s) => {
|
|
||||||
let x = JsBarcode("#barcode", s, {format: format});
|
|
||||||
|
|
||||||
//EAN barcodes by default have 5 parts (prefix -> left part -> middle seperator -> right part -> suffix)
|
|
||||||
// we only want left & right part (which contain a text
|
|
||||||
let calculated = "";
|
|
||||||
x._encodings[0].filter(e => e.text !== "").forEach(e => calculated += e.text);
|
|
||||||
console.log(calculated);
|
|
||||||
return calculated[calculated.length - 1];
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
<canvas id="barcode" width="50%" height="100%"></canvas>
|
|
||||||
{#if error}
|
|
||||||
<p>Error: {error}</p>
|
|
||||||
{/if}
|
|
||||||
|
|
@ -1,36 +0,0 @@
|
|||||||
<script>
|
|
||||||
import {getContext} from 'svelte';
|
|
||||||
import {writable} from 'svelte/store';
|
|
||||||
|
|
||||||
const navigate = getContext('navigate');
|
|
||||||
const navaid = getContext('navaid');
|
|
||||||
|
|
||||||
const base = navaid && navaid.base || writable('/');
|
|
||||||
const library = navaid && navaid.library || writable(null);
|
|
||||||
let props;
|
|
||||||
let href;
|
|
||||||
|
|
||||||
export let append;
|
|
||||||
|
|
||||||
$: {
|
|
||||||
props = {...$$props};
|
|
||||||
href = props.href;
|
|
||||||
delete props.href;
|
|
||||||
href = ($library && $library.prefix ? $library.prefix : '') + (!append ? $base : '') + href.replace(/^\//, '');
|
|
||||||
}
|
|
||||||
|
|
||||||
const click = () => {
|
|
||||||
navigate(href);
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
span {
|
|
||||||
text-decoration: none;
|
|
||||||
padding: 1rem 0.5rem;
|
|
||||||
display: block;
|
|
||||||
color: #005de6;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<span {...props} on:click={click}><slot></slot></span>
|
|
@ -1,19 +1,24 @@
|
|||||||
<script>
|
<script lang="ts">
|
||||||
import {setContext as baseSetContext, createEventDispatcher} from 'svelte';
|
//@ts-nocheck
|
||||||
import {fade} from 'svelte/transition';
|
import {
|
||||||
|
setContext as baseSetContext,
|
||||||
|
createEventDispatcher,
|
||||||
|
} from "svelte";
|
||||||
|
import { fade } from "svelte/transition";
|
||||||
|
|
||||||
export let key = 'simple-modal';
|
export let key = "simple-modal";
|
||||||
export let closeButton = true;
|
export let closeButton = true;
|
||||||
export let closeOnEsc = true;
|
export let closeOnEsc = true;
|
||||||
export let closeOnOuterClick = true;
|
export let closeOnOuterClick = true;
|
||||||
export let transitionBg = fade;
|
export let transitionBg = fade;
|
||||||
export let transitionBgProps = {duration: 250};
|
export let transitionBgProps = { duration: 250 };
|
||||||
export let transitionWindow = transitionBg;
|
export let transitionWindow = transitionBg;
|
||||||
export let transitionWindowProps = transitionBgProps;
|
export let transitionWindowProps = transitionBgProps;
|
||||||
export let styleBg = {top: 0, left: 0};
|
export let styleBg = { top: 0, left: 0 };
|
||||||
export let styleWindow = {};
|
export let styleWindow = {};
|
||||||
export let styleContent = {};
|
export let styleContent = {};
|
||||||
export let setContext = baseSetContext;
|
export let setContext = baseSetContext;
|
||||||
|
export let show: boolean = false;
|
||||||
|
|
||||||
let Component = null;
|
let Component = null;
|
||||||
let props = null;
|
let props = null;
|
||||||
@ -24,23 +29,38 @@
|
|||||||
let customStyleWindow = {};
|
let customStyleWindow = {};
|
||||||
let customStyleContent = {};
|
let customStyleContent = {};
|
||||||
|
|
||||||
let Callback = (props) => {
|
let Callback = (props) => {};
|
||||||
};
|
|
||||||
|
$: Component,
|
||||||
|
() => {
|
||||||
|
show = !!Component;
|
||||||
|
};
|
||||||
|
|
||||||
const dispatch = createEventDispatcher();
|
const dispatch = createEventDispatcher();
|
||||||
|
|
||||||
const camelCaseToDash = str => str
|
const camelCaseToDash = (str) =>
|
||||||
.replace(/([a-zA-Z])(?=[A-Z])/g, '$1-').toLowerCase();
|
str.replace(/([a-zA-Z])(?=[A-Z])/g, "$1-").toLowerCase();
|
||||||
|
|
||||||
const toCssString = (props) => Object.keys(props)
|
const toCssString = (props) =>
|
||||||
.reduce((str, key) => `${str}; ${camelCaseToDash(key)}: ${props[key]}`, '');
|
Object.keys(props).reduce(
|
||||||
|
(str, key) => `${str}; ${camelCaseToDash(key)}: ${props[key]}`,
|
||||||
|
""
|
||||||
|
);
|
||||||
|
|
||||||
$: cssBg = toCssString(Object.assign({}, styleBg, customStyleBg));
|
$: cssBg = toCssString(Object.assign({}, styleBg, customStyleBg));
|
||||||
$: cssWindow = toCssString(Object.assign({}, styleWindow, customStyleWindow));
|
$: cssWindow = toCssString(
|
||||||
$: cssContent = toCssString(Object.assign({}, styleContent, customStyleContent));
|
Object.assign({}, styleWindow, customStyleWindow)
|
||||||
|
);
|
||||||
|
$: cssContent = toCssString(
|
||||||
|
Object.assign({}, styleContent, customStyleContent)
|
||||||
|
);
|
||||||
|
|
||||||
const open = (NewComponent, newProps = {}, style = {bg: {}, window: {}, content: {}}, newCallback = () => {
|
const open = (
|
||||||
}) => {
|
NewComponent,
|
||||||
|
newProps = {},
|
||||||
|
style = { bg: {}, window: {}, content: {} },
|
||||||
|
newCallback = () => {}
|
||||||
|
) => {
|
||||||
Component = NewComponent;
|
Component = NewComponent;
|
||||||
props = newProps;
|
props = newProps;
|
||||||
Callback = newCallback;
|
Callback = newCallback;
|
||||||
@ -58,8 +78,8 @@
|
|||||||
customStyleContent = {};
|
customStyleContent = {};
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleKeyup = ({key}) => {
|
const handleKeyup = ({ key }) => {
|
||||||
if (closeOnEsc && Component && key === 'Escape') {
|
if (closeOnEsc && Component && key === "Escape") {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
@ -67,18 +87,47 @@
|
|||||||
|
|
||||||
const handleOuterClick = (event) => {
|
const handleOuterClick = (event) => {
|
||||||
if (
|
if (
|
||||||
closeOnOuterClick && (
|
closeOnOuterClick &&
|
||||||
event.target === background || event.target === wrap
|
(event.target === background || event.target === wrap)
|
||||||
)
|
|
||||||
) {
|
) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
setContext(key, {open, close});
|
setContext(key, { open: show, close });
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<svelte:window on:keyup={handleKeyup} />
|
||||||
|
|
||||||
|
<div>
|
||||||
|
{#if Component}
|
||||||
|
<div
|
||||||
|
class="bg"
|
||||||
|
on:click={handleOuterClick}
|
||||||
|
bind:this={background}
|
||||||
|
transition:transitionBg={transitionBgProps}
|
||||||
|
style={cssBg}
|
||||||
|
>
|
||||||
|
<div class="window-wrap" bind:this={wrap}>
|
||||||
|
<div
|
||||||
|
class="window"
|
||||||
|
transition:transitionWindow={transitionWindowProps}
|
||||||
|
style={cssWindow}
|
||||||
|
>
|
||||||
|
{#if closeButton}
|
||||||
|
<button on:click={close} class="close" />
|
||||||
|
{/if}
|
||||||
|
<div class="content" style={cssContent}>
|
||||||
|
<Component {...props} {close} />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
<slot />
|
||||||
|
</div>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
|
||||||
** LICENSE **
|
** LICENSE **
|
||||||
@ -165,12 +214,13 @@ https://github.com/flekschas/svelte-simple-moda
|
|||||||
background: white;
|
background: white;
|
||||||
box-shadow: 0 0 0 1px black;
|
box-shadow: 0 0 0 1px black;
|
||||||
transition: transform 0.2s cubic-bezier(0.25, 0.1, 0.25, 1),
|
transition: transform 0.2s cubic-bezier(0.25, 0.1, 0.25, 1),
|
||||||
background 0.2s cubic-bezier(0.25, 0.1, 0.25, 1);
|
background 0.2s cubic-bezier(0.25, 0.1, 0.25, 1);
|
||||||
-webkit-appearance: none;
|
-webkit-appearance: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.close:before, .close:after {
|
.close:before,
|
||||||
content: '';
|
.close:after {
|
||||||
|
content: "";
|
||||||
display: block;
|
display: block;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@ -180,7 +230,7 @@ https://github.com/flekschas/svelte-simple-moda
|
|||||||
background: black;
|
background: black;
|
||||||
transform-origin: center;
|
transform-origin: center;
|
||||||
transition: height 0.2s cubic-bezier(0.25, 0.1, 0.25, 1),
|
transition: height 0.2s cubic-bezier(0.25, 0.1, 0.25, 1),
|
||||||
background 0.2s cubic-bezier(0.25, 0.1, 0.25, 1);
|
background 0.2s cubic-bezier(0.25, 0.1, 0.25, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.close:before {
|
.close:before {
|
||||||
@ -201,7 +251,8 @@ https://github.com/flekschas/svelte-simple-moda
|
|||||||
background: black;
|
background: black;
|
||||||
}
|
}
|
||||||
|
|
||||||
.close:hover:before, .close:hover:after {
|
.close:hover:before,
|
||||||
|
.close:hover:after {
|
||||||
height: 2px;
|
height: 2px;
|
||||||
background: white;
|
background: white;
|
||||||
}
|
}
|
||||||
@ -215,35 +266,9 @@ https://github.com/flekschas/svelte-simple-moda
|
|||||||
transform: scale(0.9);
|
transform: scale(0.9);
|
||||||
}
|
}
|
||||||
|
|
||||||
.close:hover, .close:focus, .close:active {
|
.close:hover,
|
||||||
|
.close:focus,
|
||||||
|
.close:active {
|
||||||
outline: none;
|
outline: none;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<svelte:window on:keyup={handleKeyup}/>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
{#if Component}
|
|
||||||
<div
|
|
||||||
class="bg"
|
|
||||||
on:click={handleOuterClick}
|
|
||||||
bind:this={background}
|
|
||||||
transition:transitionBg={transitionBgProps}
|
|
||||||
style={cssBg}>
|
|
||||||
<div class="window-wrap" bind:this={wrap}>
|
|
||||||
<div
|
|
||||||
class="window"
|
|
||||||
transition:transitionWindow={transitionWindowProps}
|
|
||||||
style={cssWindow}>
|
|
||||||
{#if closeButton}
|
|
||||||
<button on:click={close} class="close"></button>
|
|
||||||
{/if}
|
|
||||||
<div class="content" style={cssContent}>
|
|
||||||
<Component {...props} {close}/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
<slot></slot>
|
|
||||||
</div>
|
|
||||||
|
@ -1,6 +1,24 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import { fly } from "svelte/transition";
|
||||||
|
import Modal from "./Modal.svelte";
|
||||||
|
|
||||||
|
const click = () => {
|
||||||
|
modal_show = true;
|
||||||
|
show = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function overlay_click(e: MouseEvent) {
|
||||||
|
//@ts-ignore
|
||||||
|
if ("close" in e.target.dataset) show = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
export let show = false;
|
||||||
|
let modal_show = false;
|
||||||
|
</script>
|
||||||
|
|
||||||
{#if show}
|
{#if show}
|
||||||
<div class="overlay" data-close on:click={overlay_click}>
|
<div class="overlay" data-close on:click={overlay_click}>
|
||||||
<nav transition:fly={{x: -250, opacity: 1}}>
|
<nav transition:fly={{ x: -250, opacity: 1 }}>
|
||||||
<slot>
|
<slot>
|
||||||
<button on:click={click}>About</button>
|
<button on:click={click}>About</button>
|
||||||
</slot>
|
</slot>
|
||||||
@ -8,25 +26,7 @@
|
|||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<Modal bind:show={modal_show}/>
|
<Modal bind:show={modal_show} />
|
||||||
|
|
||||||
<script>
|
|
||||||
import {fly} from 'svelte/transition';
|
|
||||||
import Modal from './Modal.svelte';
|
|
||||||
|
|
||||||
const click = () => {
|
|
||||||
modal_show = true;
|
|
||||||
show = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
function overlay_click(e) {
|
|
||||||
if ('close' in e.target.dataset)
|
|
||||||
show = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
export let show = false;
|
|
||||||
let modal_show = false;
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.overlay {
|
.overlay {
|
||||||
@ -53,4 +53,4 @@
|
|||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
width: 20rem;
|
width: 20rem;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -1,23 +1,23 @@
|
|||||||
<script>
|
<script lang="ts">
|
||||||
|
//@ts-nocheck
|
||||||
import {quintOut} from "svelte/easing";
|
import { quintOut } from "svelte/easing";
|
||||||
import {crossfade} from "svelte/transition";
|
import { crossfade } from "svelte/transition";
|
||||||
import {flip} from "svelte/animate";
|
import { flip } from "svelte/animate";
|
||||||
// FLIP ANIMATION
|
// FLIP ANIMATION
|
||||||
const [send, receive] = crossfade({
|
const [send, receive] = crossfade({
|
||||||
duration: d => Math.sqrt(d * 200),
|
duration: (d) => Math.sqrt(d * 200),
|
||||||
fallback(node, params) {
|
fallback(node, params) {
|
||||||
const style = getComputedStyle(node);
|
const style = getComputedStyle(node);
|
||||||
const transform = style.transform === "none" ? "" : style.transform;
|
const transform = style.transform === "none" ? "" : style.transform;
|
||||||
return {
|
return {
|
||||||
duration: 600,
|
duration: 600,
|
||||||
easing: quintOut,
|
easing: quintOut,
|
||||||
css: t => `
|
css: (t) => `
|
||||||
transform: ${transform} scale(${t});
|
transform: ${transform} scale(${t});
|
||||||
opacity: ${t}
|
opacity: ${t}
|
||||||
`
|
`,
|
||||||
};
|
};
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
// DRAG AND DROP
|
// DRAG AND DROP
|
||||||
let isOver = false;
|
let isOver = false;
|
||||||
@ -25,56 +25,68 @@
|
|||||||
const getDraggedParent = (node) => {
|
const getDraggedParent = (node) => {
|
||||||
return node.dataset && node.dataset.index
|
return node.dataset && node.dataset.index
|
||||||
? node.dataset
|
? node.dataset
|
||||||
: getDraggedParent(node.parentNode)
|
: getDraggedParent(node.parentNode);
|
||||||
};
|
};
|
||||||
const click = ev => {
|
const click = (ev) => {
|
||||||
dispatch("slotclick", {
|
dispatch("slotclick", {
|
||||||
source: ev.target.parentElement.dataset.index,
|
source: ev.target.parentElement.dataset.index,
|
||||||
sourceItem: list[ev.target.parentElement.dataset.index]
|
sourceItem: list[ev.target.parentElement.dataset.index],
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
const start = ev => {
|
const start = (ev) => {
|
||||||
isDragging = true;
|
isDragging = true;
|
||||||
ev.dataTransfer.setData("source", ev.target.dataset.index);
|
ev.dataTransfer.setData("source", ev.target.dataset.index);
|
||||||
};
|
};
|
||||||
const over = ev => {
|
const over = (ev) => {
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
let dragged = getDraggedParent(ev.target);
|
let dragged = getDraggedParent(ev.target);
|
||||||
if (isOver !== dragged.id) isOver = JSON.parse(dragged.id);
|
if (isOver !== dragged.id) isOver = JSON.parse(dragged.id);
|
||||||
};
|
};
|
||||||
const leave = ev => {
|
const leave = (ev) => {
|
||||||
let dragged = getDraggedParent(ev.target);
|
let dragged = getDraggedParent(ev.target);
|
||||||
if (isOver === dragged.id) isOver = false;
|
if (isOver === dragged.id) isOver = false;
|
||||||
};
|
};
|
||||||
const drop = ev => {
|
const drop = (ev) => {
|
||||||
isOver = false;
|
isOver = false;
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
let dragged = getDraggedParent(ev.target);
|
let dragged = getDraggedParent(ev.target);
|
||||||
let from = ev.dataTransfer.getData("source");
|
let from = ev.dataTransfer.getData("source");
|
||||||
let to = dragged.index;
|
let to = dragged.index;
|
||||||
reorder({from, to});
|
reorder({ from, to });
|
||||||
isDragging = false;
|
isDragging = false;
|
||||||
};
|
};
|
||||||
// DISPATCH REORDER
|
// DISPATCH REORDER
|
||||||
import {createEventDispatcher, onMount, afterUpdate, beforeUpdate, tick} from "svelte";
|
import {
|
||||||
|
createEventDispatcher,
|
||||||
|
onMount,
|
||||||
|
afterUpdate,
|
||||||
|
beforeUpdate,
|
||||||
|
tick,
|
||||||
|
} from "svelte";
|
||||||
|
|
||||||
const dispatch = createEventDispatcher();
|
const dispatch = createEventDispatcher();
|
||||||
const reorder = ({from, to}) => {
|
const reorder = ({ from, to }) => {
|
||||||
let newList = [...list];
|
let newList = [...list];
|
||||||
let temp = newList[from];
|
let temp = newList[from];
|
||||||
newList[from] = newList[to];
|
newList[from] = newList[to];
|
||||||
newList[to] = temp;
|
newList[to] = temp;
|
||||||
//newList[from] = [newList[to], (newList[to] = newList[from])][0];
|
//newList[from] = [newList[to], (newList[to] = newList[from])][0];
|
||||||
dispatch("sort", {data: newList, from: from, to: to});
|
dispatch("sort", { data: newList, from: from, to: to });
|
||||||
};
|
};
|
||||||
// UTILS
|
// UTILS
|
||||||
const getKey = item => (key ? item[key] : item);
|
const getKey = (item) => (key ? item[key] : item);
|
||||||
|
|
||||||
|
type ListItem = {
|
||||||
|
displayTileSize: number;
|
||||||
|
endsGroup: boolean;
|
||||||
|
startsNewGroup: boolean;
|
||||||
|
};
|
||||||
// PROPS
|
// PROPS
|
||||||
export let list;
|
export let list: ListItem[][];
|
||||||
export let key;
|
export let key;
|
||||||
export let ulclass;
|
export let ulclass;
|
||||||
|
|
||||||
export let breakon;
|
export let breakon: string | null = null;
|
||||||
|
|
||||||
export let breakComponent;
|
export let breakComponent;
|
||||||
// return `<><li class='${breakClass}' style='height:100%; grid-column: span 5;'><div style='width:100%;height:inherit;'></li>`;
|
// return `<><li class='${breakClass}' style='height:100%; grid-column: span 5;'><div style='width:100%;height:inherit;'></li>`;
|
||||||
@ -113,16 +125,16 @@
|
|||||||
let carry = 0;
|
let carry = 0;
|
||||||
let elements = Elements();
|
let elements = Elements();
|
||||||
|
|
||||||
|
|
||||||
for (let x = 0; x < list.length; x++) {
|
for (let x = 0; x < list.length; x++) {
|
||||||
|
|
||||||
if (last != null) {
|
if (last != null) {
|
||||||
if (list[x][breakon] > last) {
|
if (list[x][breakon] > last) {
|
||||||
|
|
||||||
if (elements.length) {
|
if (elements.length) {
|
||||||
let targetIndex = x + breaks;
|
let targetIndex = x + breaks;
|
||||||
|
|
||||||
if (list.length !== elements[0].children.length - breaks) {
|
if (
|
||||||
|
list.length !==
|
||||||
|
elements[0].children.length - breaks
|
||||||
|
) {
|
||||||
if (lastCollection)
|
if (lastCollection)
|
||||||
if (lastCollection.length)
|
if (lastCollection.length)
|
||||||
targetIndex += lastCollection.length;
|
targetIndex += lastCollection.length;
|
||||||
@ -159,23 +171,49 @@
|
|||||||
updateBreak();
|
updateBreak();
|
||||||
|
|
||||||
updating = false;
|
updating = false;
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const getClass = () => {
|
const getClass = () => {
|
||||||
let ret = "";
|
let ret = "";
|
||||||
if (key)
|
if (key) ret += ` ${key}`;
|
||||||
ret += ` ${key}`;
|
if (ulclass) ret += ` ${ulclass}`;
|
||||||
if (ulclass)
|
|
||||||
ret += ` ${ulclass}`;
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
};
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
{#if list && list.length}
|
||||||
|
<ul class={getClass()}>
|
||||||
|
{#each list as item, index (getKey(item))}
|
||||||
|
<li
|
||||||
|
class:small={item.displayTileSize === 2}
|
||||||
|
class:medium={item.displayTileSize === 3}
|
||||||
|
class:large={item.displayTileSize === 4}
|
||||||
|
class:startsNewGroup={item.startsNewGroup}
|
||||||
|
class:endsGroup={item.endsGroup}
|
||||||
|
data-index={index}
|
||||||
|
data-item={JSON.stringify(item)}
|
||||||
|
data-id={JSON.stringify(getKey(item))}
|
||||||
|
draggable="true"
|
||||||
|
on:dragstart={start}
|
||||||
|
on:dragover={over}
|
||||||
|
on:dragleave={leave}
|
||||||
|
on:drop={drop}
|
||||||
|
on:click={click}
|
||||||
|
in:receive={{ key: getKey(item) }}
|
||||||
|
out:send={{ key: getKey(item) }}
|
||||||
|
animate:flip={{ duration: 300 }}
|
||||||
|
class:over={getKey(item) === isOver}
|
||||||
|
>
|
||||||
|
<slot {item} {index}>
|
||||||
|
<p>{getKey(item)}</p>
|
||||||
|
</slot>
|
||||||
|
</li>
|
||||||
|
{/each}
|
||||||
|
</ul>
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
<style>
|
||||||
ul {
|
ul {
|
||||||
display: inline-grid;
|
display: inline-grid;
|
||||||
list-style: none;
|
list-style: none;
|
||||||
@ -189,7 +227,7 @@
|
|||||||
transition: border 0.1s linear;
|
transition: border 0.1s linear;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
margin: .5%;
|
margin: 0.5%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.startsNewGroup {
|
.startsNewGroup {
|
||||||
@ -215,35 +253,3 @@
|
|||||||
border-color: rgba(48, 12, 200, 0.2);
|
border-color: rgba(48, 12, 200, 0.2);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
{#if list && list.length}
|
|
||||||
<ul class={getClass()}>
|
|
||||||
{#each list as item, index (getKey(item))}
|
|
||||||
<li
|
|
||||||
class:small={item.displayTileSize === 2}
|
|
||||||
class:medium={item.displayTileSize === 3}
|
|
||||||
class:large={item.displayTileSize === 4}
|
|
||||||
class:startsNewGroup={item.startsNewGroup}
|
|
||||||
class:endsGroup={item.endsGroup}
|
|
||||||
data-index={index}
|
|
||||||
data-item={JSON.stringify(item)}
|
|
||||||
data-id={JSON.stringify(getKey(item))}
|
|
||||||
draggable="true"
|
|
||||||
on:dragstart={start}
|
|
||||||
on:dragover={over}
|
|
||||||
on:dragleave={leave}
|
|
||||||
on:drop={drop}
|
|
||||||
on:click={click}
|
|
||||||
in:receive={{ key: getKey(item) }}
|
|
||||||
out:send={{ key: getKey(item) }}
|
|
||||||
animate:flip={{ duration: 300 }}
|
|
||||||
class:over={getKey(item) === isOver}>
|
|
||||||
|
|
||||||
<slot {item} {index}>
|
|
||||||
<p>{getKey(item)}</p>
|
|
||||||
</slot>
|
|
||||||
|
|
||||||
</li>
|
|
||||||
{/each}
|
|
||||||
</ul>
|
|
||||||
{/if}
|
|
@ -1,11 +1,24 @@
|
|||||||
<script>
|
<script lang="ts">
|
||||||
export let name;
|
export let name: string;
|
||||||
export let link;
|
export let link: string;
|
||||||
export let img = "https://placehold.it/600x300";
|
export let img = "https://placehold.it/600x300";
|
||||||
export let size = { width: 600, height: 300 };
|
export let size = { width: 600, height: 300 };
|
||||||
export let description;
|
export let description: string;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<div class="back">
|
||||||
|
<a href={link}>
|
||||||
|
<img src={img} alt={name} width={size.width} height={size.height} />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="description">
|
||||||
|
<h2>{name}</h2>
|
||||||
|
<p>{description}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.card {
|
.card {
|
||||||
display: flex;
|
display: flex;
|
||||||
@ -28,16 +41,3 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<div class="card">
|
|
||||||
<div class="back">
|
|
||||||
<a href="{link}">
|
|
||||||
<img src={img} alt={name} width={size.width} height={size.height}>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="description">
|
|
||||||
<h2>{name}</h2>
|
|
||||||
<p>{description}</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<br>
|
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
<script>
|
<script lang="ts">
|
||||||
import {onMount} from 'svelte'
|
import { onMount } from "svelte";
|
||||||
import Banner from '../components/Banner.svelte'
|
import Banner from "../components/Banner.svelte";
|
||||||
|
|
||||||
export let status;
|
export let status: string;
|
||||||
export let error;
|
export let error: Error;
|
||||||
|
|
||||||
const dev = process.env.NODE_ENV === 'development';
|
const dev = process.env.NODE_ENV === "development";
|
||||||
|
|
||||||
var appa = ` .,-:;//;:=,
|
var appa = ` .,-:;//;:=,
|
||||||
. :H@@@MM@M#H/.,+%;,
|
. :H@@@MM@M#H/.,+%;,
|
||||||
,/X+ +M@@M@MM%=,-%HMMM@X/,
|
,/X+ +M@@M@MM%=,-%HMMM@X/,
|
||||||
-+@MM; $M@@MH+-,;XMMMM@MMMM@+-
|
-+@MM; $M@@MH+-,;XMMMM@MMMM@+-
|
||||||
@ -28,7 +28,7 @@
|
|||||||
,:+$+-,/H#MMMMMMM@- -,
|
,:+$+-,/H#MMMMMMM@- -,
|
||||||
=++%%%%+/:-.`;
|
=++%%%%+/:-.`;
|
||||||
|
|
||||||
var nuke = ` =+$HM####@H%;,
|
var nuke = ` =+$HM####@H%;,
|
||||||
/H###############M$,
|
/H###############M$,
|
||||||
,@################+
|
,@################+
|
||||||
.H##############+
|
.H##############+
|
||||||
@ -49,7 +49,7 @@ X##############%, ,+##############X
|
|||||||
.+M###@, ,@###M+.
|
.+M###@, ,@###M+.
|
||||||
:XH. .HX:`;
|
:XH. .HX:`;
|
||||||
|
|
||||||
var atom = ` =/;;/-
|
var atom = ` =/;;/-
|
||||||
+: //
|
+: //
|
||||||
/; /;
|
/; /;
|
||||||
-X H.
|
-X H.
|
||||||
@ -70,7 +70,7 @@ M- ,=;;;#:, ,:#;;:=, ,@
|
|||||||
// +;
|
// +;
|
||||||
,////,`;
|
,////,`;
|
||||||
|
|
||||||
var heart = ` .,---.
|
var heart = ` .,---.
|
||||||
,/XM#MMMX;,
|
,/XM#MMMX;,
|
||||||
-%##########M%,
|
-%##########M%,
|
||||||
-@######% $###@=
|
-@######% $###@=
|
||||||
@ -91,7 +91,7 @@ X################, -$=X#######@:
|
|||||||
.,/X$; .::,
|
.,/X$; .::,
|
||||||
., ..`;
|
., ..`;
|
||||||
|
|
||||||
var fire = ` -$-
|
var fire = ` -$-
|
||||||
.H##H,
|
.H##H,
|
||||||
+######+
|
+######+
|
||||||
.+#########H.
|
.+#########H.
|
||||||
@ -112,7 +112,7 @@ X################, -$=X#######@:
|
|||||||
/XHX%:#####MH%= ,---:;;;;/&&XHM,:###$
|
/XHX%:#####MH%= ,---:;;;;/&&XHM,:###$
|
||||||
$@#MX %+;- .`;
|
$@#MX %+;- .`;
|
||||||
|
|
||||||
var tick = ` :X-
|
var tick = ` :X-
|
||||||
:X###
|
:X###
|
||||||
;@####@
|
;@####@
|
||||||
;M######X
|
;M######X
|
||||||
@ -133,7 +133,7 @@ $@#MX %+;- .`;
|
|||||||
+####:
|
+####:
|
||||||
,$M-`;
|
,$M-`;
|
||||||
|
|
||||||
var bang = ` .+
|
var bang = ` .+
|
||||||
/M;
|
/M;
|
||||||
H#@: ;,
|
H#@: ;,
|
||||||
-###H- -@/
|
-###H- -@/
|
||||||
@ -154,7 +154,7 @@ $@#MX %+;- .`;
|
|||||||
.#H, :XH,
|
.#H, :XH,
|
||||||
+ .;-`;
|
+ .;-`;
|
||||||
|
|
||||||
var mesa = ` .-;+$XHHHHHHX$+;-.
|
var mesa = ` .-;+$XHHHHHHX$+;-.
|
||||||
,;X@@X%/;=----=:/%X@@X/,
|
,;X@@X%/;=----=:/%X@@X/,
|
||||||
=$@@%=. .=+H@X:
|
=$@@%=. .=+H@X:
|
||||||
-XMX: =XMX=
|
-XMX: =XMX=
|
||||||
@ -175,7 +175,7 @@ H@: :HHHHHHHHHHHHHHHHHHX, =@H
|
|||||||
,;$@@@@@@@@@@@@@@@@@@X/-
|
,;$@@@@@@@@@@@@@@@@@@X/-
|
||||||
.-;+$XXHHHHHX$+;-.`;
|
.-;+$XXHHHHHX$+;-.`;
|
||||||
|
|
||||||
var cube = ` #+ @ # # M#@
|
var cube = ` #+ @ # # M#@
|
||||||
. .X X.%##@;# # +@#######X. @H%
|
. .X X.%##@;# # +@#######X. @H%
|
||||||
,==. ,######M+ -#####%M####M- #
|
,==. ,######M+ -#####%M####M- #
|
||||||
:H##M%:=##+ .M##M,;#####/+#######% ,M#
|
:H##M%:=##+ .M##M,;#####/+#######% ,M#
|
||||||
@ -196,7 +196,7 @@ H@: :HHHHHHHHHHHHHHHHHHX, =@H
|
|||||||
H#M /@####/ ,++. / ==-,
|
H#M /@####/ ,++. / ==-,
|
||||||
,=/:, .+X@MMH@#H #####$=`;
|
,=/:, .+X@MMH@#H #####$=`;
|
||||||
|
|
||||||
var cake = ` ,:/+/-
|
var cake = ` ,:/+/-
|
||||||
/M/ .,-=;//;-
|
/M/ .,-=;//;-
|
||||||
.:/= ;MH/, ,=/+%$XH@MM#@:
|
.:/= ;MH/, ,=/+%$XH@MM#@:
|
||||||
-$##@+$###@H@MMM#######H:. -/H#
|
-$##@+$###@H@MMM#######H:. -/H#
|
||||||
@ -217,23 +217,70 @@ H@: :HHHHHHHHHHHHHHHHHHX, =@H
|
|||||||
,:/%XM####H/.
|
,:/%XM####H/.
|
||||||
,.:=-.`;
|
,.:=-.`;
|
||||||
|
|
||||||
// appa, atom, nuke
|
// appa, atom, nuke
|
||||||
var options = [cake, heart, fire, tick, bang, mesa, cube];
|
var options = [cake, heart, fire, tick, bang, mesa, cube];
|
||||||
let active = cake
|
let active = cake;
|
||||||
|
|
||||||
function updateView() {
|
function updateView() {
|
||||||
active = options[Math.floor((Math.random() * options.length))];
|
active = options[Math.floor(Math.random() * options.length)];
|
||||||
setTimeout(updateView, 5000);
|
setTimeout(updateView, 5000);
|
||||||
}
|
}
|
||||||
|
|
||||||
onMount(() => updateView());
|
onMount(() => updateView());
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<svelte:head>
|
||||||
|
<title>Quartnzet - {status}</title>
|
||||||
|
</svelte:head>
|
||||||
|
|
||||||
|
<Banner title={status} />
|
||||||
|
|
||||||
|
<main class="container">
|
||||||
|
<p>{error.message}</p>
|
||||||
|
|
||||||
|
{#if dev && error.stack}
|
||||||
|
<pre>{error.stack}</pre>
|
||||||
|
{:else}
|
||||||
|
<audio controls autoplay>
|
||||||
|
<track kind="captions" />
|
||||||
|
<source src="http://quartznet.info/alive.ogg" type="audio/wav" />
|
||||||
|
</audio>
|
||||||
|
<div class="ascii">
|
||||||
|
<div>
|
||||||
|
<pre><br />{active}</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr />
|
||||||
|
<p class="info">
|
||||||
|
This was a triumph! I'm making a note here: Huge success! It's hard to
|
||||||
|
overstate my satisfaction. Aperture Science: We do what we must because we
|
||||||
|
can For the good of all of us. Except the ones who are dead. But there's
|
||||||
|
no sense crying over every mistake. You just keep on trying 'til you run
|
||||||
|
out of cake. And the science gets done. And you make a neat gun for the
|
||||||
|
people who are still alive. I'm not even angry... I'm being so sincere
|
||||||
|
right now. Even though you broke my heart, and killed me. And tore me to
|
||||||
|
pieces. And threw every piece into a fire. As they burned it hurt because
|
||||||
|
I was so happy for you! Now, these points of data make a beautiful line.
|
||||||
|
And we're out of beta. We're releasing on time! So I'm GLaD I got burned!
|
||||||
|
Think of all the things we learned! for the people who are still alive. Go
|
||||||
|
ahead and leave me... I think I'd prefer to stay inside... Maybe you'll
|
||||||
|
find someone else to help you. Maybe Black Mesa? That was a joke. Ha Ha.
|
||||||
|
Fat Chance! Anyway this cake is great! It's so delicious and moist! Look
|
||||||
|
at me: still talking when there's science to do! When I look out there, it
|
||||||
|
makes me glad I'm not you. I've experiments to run. There is research to
|
||||||
|
be done. On the people who are still alive. And believe me I am still
|
||||||
|
alive. I'm doing science and I'm still alive. I feel fantastic and I'm
|
||||||
|
still alive. While you're dying I'll be still alive. And when you're dead
|
||||||
|
I will be still alive Still alive. Still alive.
|
||||||
|
</p>
|
||||||
|
{/if}
|
||||||
|
</main>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
* {
|
* {
|
||||||
color: white !important;
|
color: white !important;
|
||||||
font-family: monospace;
|
font-family: monospace;
|
||||||
white-space: pre;
|
white-space: pre;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ascii {
|
.ascii {
|
||||||
@ -249,109 +296,8 @@ H@: :HHHHHHHHHHHHHHHHHHX, =@H
|
|||||||
}
|
}
|
||||||
|
|
||||||
pre {
|
pre {
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
font-family: monospace;
|
font-family: monospace;
|
||||||
white-space: pre;
|
white-space: pre;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<svelte:head>
|
|
||||||
<title>Quartnzet - {status}</title>
|
|
||||||
</svelte:head>
|
|
||||||
|
|
||||||
<Banner title="{status}"/>
|
|
||||||
|
|
||||||
<main class="container">
|
|
||||||
<p>{error.message}</p>
|
|
||||||
|
|
||||||
{#if dev && error.stack}
|
|
||||||
<pre>{error.stack}</pre>
|
|
||||||
{:else}
|
|
||||||
<audio controls autoplay>
|
|
||||||
<track kind="captions"/>
|
|
||||||
<source src="http://quartznet.info/alive.ogg" type="audio/wav">
|
|
||||||
</audio>
|
|
||||||
<div class="ascii">
|
|
||||||
<div>
|
|
||||||
<pre><br>{active}</pre>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<hr>
|
|
||||||
<p class="info">
|
|
||||||
This was a triumph!
|
|
||||||
I'm making a note here:
|
|
||||||
Huge success!
|
|
||||||
|
|
||||||
It's hard to overstate
|
|
||||||
my satisfaction.
|
|
||||||
|
|
||||||
Aperture Science:
|
|
||||||
We do what we must
|
|
||||||
because we can
|
|
||||||
For the good of all of us.
|
|
||||||
Except the ones who are dead.
|
|
||||||
|
|
||||||
But there's no sense crying
|
|
||||||
over every mistake.
|
|
||||||
You just keep on trying
|
|
||||||
'til you run out of cake.
|
|
||||||
And the science gets done.
|
|
||||||
And you make a neat gun
|
|
||||||
for the people who are
|
|
||||||
still alive.
|
|
||||||
|
|
||||||
I'm not even angry...
|
|
||||||
I'm being so sincere right now.
|
|
||||||
Even though you broke my heart,
|
|
||||||
and killed me.
|
|
||||||
|
|
||||||
And tore me to pieces.
|
|
||||||
And threw every piece into a fire.
|
|
||||||
As they burned it hurt because
|
|
||||||
I was so happy for you!
|
|
||||||
|
|
||||||
Now, these points of data
|
|
||||||
make a beautiful line.
|
|
||||||
And we're out of beta.
|
|
||||||
We're releasing on time!
|
|
||||||
So I'm GLaD I got burned!
|
|
||||||
Think of all the things we learned!
|
|
||||||
for the people who are
|
|
||||||
still alive.
|
|
||||||
|
|
||||||
Go ahead and leave me...
|
|
||||||
I think I'd prefer to stay inside...
|
|
||||||
Maybe you'll find someone else
|
|
||||||
to help you.
|
|
||||||
Maybe Black Mesa?
|
|
||||||
That was a joke. Ha Ha. Fat Chance!
|
|
||||||
|
|
||||||
Anyway this cake is great!
|
|
||||||
It's so delicious and moist!
|
|
||||||
|
|
||||||
Look at me: still talking
|
|
||||||
when there's science to do!
|
|
||||||
When I look out there,
|
|
||||||
it makes me glad I'm not you.
|
|
||||||
|
|
||||||
I've experiments to run.
|
|
||||||
There is research to be done.
|
|
||||||
On the people who are
|
|
||||||
still alive.
|
|
||||||
And believe me I am
|
|
||||||
still alive.
|
|
||||||
I'm doing science and I'm
|
|
||||||
still alive.
|
|
||||||
I feel fantastic and I'm
|
|
||||||
still alive.
|
|
||||||
While you're dying I'll be
|
|
||||||
still alive.
|
|
||||||
And when you're dead I will be
|
|
||||||
still alive
|
|
||||||
|
|
||||||
Still alive.
|
|
||||||
|
|
||||||
Still alive.
|
|
||||||
</p>
|
|
||||||
{/if}
|
|
||||||
</main>
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user