@turnipxenon/pineapple 2.4.12 → 2.4.14
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/.idea/discord.xml +1 -1
- package/.idea/workspace.xml +139 -121
- package/.svelte-kit/__package__/app.postcss +28 -2
- package/.svelte-kit/__package__/assets/icons/close.svg +1 -0
- package/.svelte-kit/__package__/components/Card.svelte +28 -28
- package/.svelte-kit/__package__/components/CarouselElement.svelte +16 -16
- package/.svelte-kit/__package__/components/Chip.svelte +13 -12
- package/.svelte-kit/__package__/components/ElementVisbilityDetector.svelte +5 -5
- package/.svelte-kit/__package__/components/SocialSection.svelte +162 -159
- package/.svelte-kit/__package__/components/StickyElement.svelte +20 -20
- package/.svelte-kit/__package__/components/ToggleableContent.svelte +8 -8
- package/.svelte-kit/__package__/components/layouts/SeaweedBaseLayout.svelte +1 -8
- package/.svelte-kit/__package__/components/layouts/SeaweedBaseLayout.svelte.d.ts +1 -0
- package/.svelte-kit/__package__/components/{layouts → pineapple}/PineappleBaseLayout.svelte +65 -20
- package/.svelte-kit/__package__/components/pineapple/overlay_manager/OverlayManager.d.ts +0 -0
- package/.svelte-kit/__package__/components/pineapple/overlay_manager/OverlayManager.js +1 -0
- package/.svelte-kit/__package__/components/pineapple/toast/DefaultToastBody.d.ts +8 -0
- package/.svelte-kit/__package__/components/pineapple/toast/DefaultToastBody.js +1 -0
- package/.svelte-kit/__package__/components/pineapple/toast/DefaultToastBody.svelte +48 -0
- package/.svelte-kit/__package__/components/pineapple/toast/DefaultToastBody.svelte.d.ts +20 -0
- package/.svelte-kit/__package__/components/pineapple/toast/Toast.d.ts +27 -0
- package/.svelte-kit/__package__/components/pineapple/toast/Toast.js +37 -0
- package/.svelte-kit/__package__/components/pineapple/toast/Toast.svelte +89 -0
- package/.svelte-kit/__package__/components/pineapple/toast/Toast.svelte.d.ts +14 -0
- package/.svelte-kit/__package__/components/pineapple/toast/custom-toast/TestCustomToast.d.ts +5 -0
- package/.svelte-kit/__package__/components/pineapple/toast/custom-toast/TestCustomToast.js +1 -0
- package/.svelte-kit/__package__/components/pineapple/toast/custom-toast/TestCustomToast.svelte +1 -0
- package/.svelte-kit/__package__/components/pineapple/toast/custom-toast/TestCustomToast.svelte.d.ts +23 -0
- package/.svelte-kit/__package__/index.d.ts +1 -1
- package/.svelte-kit/__package__/index.js +1 -1
- package/.svelte-kit/__package__/postcss.d.ts +3 -3
- package/.svelte-kit/__package__/styles/global.css +1 -1
- package/.svelte-kit/__package__/theme.postcss +2 -1
- package/.svelte-kit/ambient.d.ts +4 -0
- package/.svelte-kit/generated/client/app.js +6 -5
- package/.svelte-kit/generated/client/nodes/2.js +1 -1
- package/.svelte-kit/generated/client/nodes/3.js +1 -1
- package/.svelte-kit/generated/client/nodes/4.js +1 -1
- package/.svelte-kit/generated/client/nodes/5.js +1 -1
- package/.svelte-kit/generated/client/nodes/6.js +1 -1
- package/.svelte-kit/generated/client/nodes/7.js +1 -0
- package/.svelte-kit/generated/server/internal.js +1 -1
- package/.svelte-kit/types/route_meta_data.json +6 -4
- package/.svelte-kit/types/src/routes/$types.d.ts +1 -4
- package/.svelte-kit/types/src/routes/{personal → (pineapple)}/$types.d.ts +2 -2
- package/.svelte-kit/types/src/routes/{portfolio/actual → (pineapple)/pineapple}/$types.d.ts +2 -2
- package/.svelte-kit/types/src/routes/(seaweed)/$types.d.ts +19 -0
- package/.svelte-kit/types/src/routes/{portfolio → (seaweed)/portfolio}/$types.d.ts +3 -3
- package/.svelte-kit/types/src/routes/(seaweed)/portfolio/actual/$types.d.ts +17 -0
- package/.svelte-kit/types/src/routes/{portfolio → (seaweed)/portfolio}/proxy+page.server.ts +1 -1
- package/README.md +8 -18
- package/dist/app.postcss +28 -2
- package/dist/assets/icons/close.svg +1 -0
- package/dist/components/Card.svelte +28 -28
- package/dist/components/CarouselElement.svelte +16 -16
- package/dist/components/Chip.svelte +13 -12
- package/dist/components/ElementVisbilityDetector.svelte +5 -5
- package/dist/components/SocialSection.svelte +162 -159
- package/dist/components/StickyElement.svelte +20 -20
- package/dist/components/ToggleableContent.svelte +8 -8
- package/dist/components/layouts/SeaweedBaseLayout.svelte +1 -8
- package/dist/components/layouts/SeaweedBaseLayout.svelte.d.ts +1 -0
- package/dist/components/{layouts → pineapple}/PineappleBaseLayout.svelte +65 -20
- package/dist/components/pineapple/overlay_manager/OverlayManager.d.ts +0 -0
- package/dist/components/pineapple/overlay_manager/OverlayManager.js +1 -0
- package/dist/components/pineapple/toast/DefaultToastBody.d.ts +8 -0
- package/dist/components/pineapple/toast/DefaultToastBody.js +1 -0
- package/dist/components/pineapple/toast/DefaultToastBody.svelte +48 -0
- package/dist/components/pineapple/toast/DefaultToastBody.svelte.d.ts +20 -0
- package/dist/components/pineapple/toast/Toast.d.ts +27 -0
- package/dist/components/pineapple/toast/Toast.js +37 -0
- package/dist/components/pineapple/toast/Toast.svelte +89 -0
- package/dist/components/pineapple/toast/Toast.svelte.d.ts +14 -0
- package/dist/components/pineapple/toast/custom-toast/TestCustomToast.d.ts +5 -0
- package/dist/components/pineapple/toast/custom-toast/TestCustomToast.js +1 -0
- package/dist/components/pineapple/toast/custom-toast/TestCustomToast.svelte +1 -0
- package/dist/components/pineapple/toast/custom-toast/TestCustomToast.svelte.d.ts +23 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/postcss.d.ts +3 -3
- package/dist/styles/global.css +1 -1
- package/dist/theme.postcss +2 -1
- package/docs/OverlaySpec.md +23 -0
- package/docs/pull_request_template.md +34 -0
- package/package.json +1 -1
- package/src/lib/app.postcss +28 -2
- package/src/lib/assets/icons/close.svg +1 -0
- package/src/lib/components/Card.svelte +32 -32
- package/src/lib/components/CarouselElement.svelte +22 -22
- package/src/lib/components/Chip.svelte +13 -12
- package/src/lib/components/ElementVisbilityDetector.svelte +22 -22
- package/src/lib/components/OnElementVisbilityChanged.ts +1 -1
- package/src/lib/components/SocialSection.svelte +95 -92
- package/src/lib/components/StickyElement.svelte +39 -39
- package/src/lib/components/ToggleableContent.svelte +85 -85
- package/src/lib/components/ToggleableContentType.ts +4 -4
- package/src/lib/components/layouts/LayoutConstants.ts +1 -1
- package/src/lib/components/layouts/SeaweedBaseLayout.svelte +1 -8
- package/src/lib/components/pineapple/PineappleBaseLayout.svelte +207 -0
- package/src/lib/components/pineapple/overlay_manager/OverlayManager.ts +0 -0
- package/src/lib/components/pineapple/toast/DefaultToastBody.svelte +43 -0
- package/src/lib/components/pineapple/toast/DefaultToastBody.ts +10 -0
- package/src/lib/components/pineapple/toast/Toast.svelte +113 -0
- package/src/lib/components/pineapple/toast/Toast.ts +57 -0
- package/src/lib/components/pineapple/toast/custom-toast/TestCustomToast.svelte +1 -0
- package/src/lib/components/pineapple/toast/custom-toast/TestCustomToast.ts +6 -0
- package/src/lib/consts.ts +2 -2
- package/src/lib/index.ts +1 -1
- package/src/lib/postcss.d.ts +3 -3
- package/src/lib/styles/global.css +1 -1
- package/src/lib/theme.postcss +2 -1
- package/src/lib/util/create_go_to_function.ts +5 -5
- package/src/routes/{personal → (pineapple)}/+layout.svelte +1 -1
- package/src/routes/(pineapple)/+page.svelte +36 -0
- package/src/routes/(pineapple)/pineapple/+page.svelte +44 -0
- package/src/routes/(seaweed)/+layout.svelte +10 -0
- package/src/routes/{portfolio → (seaweed)/portfolio}/+page.server.ts +1 -1
- package/src/routes/{portfolio → (seaweed)/portfolio}/+page.svelte +2 -2
- package/src/routes/{portfolio → (seaweed)/portfolio}/.gitignore +1 -1
- package/src/routes/{portfolio → (seaweed)/portfolio}/actual/+page.svelte +1 -1
- package/src/routes/+layout.svelte +0 -7
- package/static/robots.txt +5 -5
- package/src/lib/components/layouts/PineappleBaseLayout.svelte +0 -161
- package/src/routes/+page.svelte +0 -38
- package/src/routes/personal/+page.svelte +0 -37
- /package/.svelte-kit/__package__/components/{layouts → pineapple}/PineappleBaseLayout.svelte.d.ts +0 -0
- /package/dist/components/{layouts → pineapple}/PineappleBaseLayout.svelte.d.ts +0 -0
|
@@ -1,93 +1,96 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
{
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
{
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
{
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
{
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
1
|
+
<script>
|
|
2
|
+
export let isSmallVersion = false;
|
|
3
|
+
export let email = "turnipxenon@gmail.com";
|
|
4
|
+
export let linkedinSlug = "turnip-xenon";
|
|
5
|
+
export let isSlot = false;
|
|
6
|
+
|
|
7
|
+
import { ItchLogoHotLink } from "$pkg/consts";
|
|
8
|
+
import { onMount } from "svelte";
|
|
9
|
+
import { scale } from "svelte/transition";
|
|
10
|
+
|
|
11
|
+
import MailIcon from "$pkg/assets/icons/mail.svg";
|
|
12
|
+
import GithubIcon from "$pkg/assets/icons/github-mark.svg";
|
|
13
|
+
import LinkedinIcon from "$pkg/assets/icons/linkedin.svg";
|
|
14
|
+
|
|
15
|
+
let shouldShowExtra = false;
|
|
16
|
+
const style = `
|
|
17
|
+
--preferred-justify-content: ${isSlot ? "flex-start" : "center"};
|
|
18
|
+
--preferred-overall-margin-bottom: ${isSlot ? "0" : "0.75lh"};
|
|
19
|
+
`;
|
|
20
|
+
|
|
21
|
+
onMount(() => {
|
|
22
|
+
shouldShowExtra = window.screen.availWidth >= 440;
|
|
23
|
+
});
|
|
24
|
+
</script>
|
|
25
|
+
|
|
26
|
+
<div class="socials" class:isSmall={isSmallVersion} style={style} data-nosnippet>
|
|
27
|
+
<button type="button" class="social-button turnip-button"
|
|
28
|
+
role="link"
|
|
29
|
+
title="https://github.com/TurnipXenon"
|
|
30
|
+
on:click={() => window.open("https://github.com/TurnipXenon")}>
|
|
31
|
+
<img src={GithubIcon} alt="github icon">
|
|
32
|
+
{#if (!isSmallVersion)}
|
|
33
|
+
<span>TurnipXenon</span>
|
|
34
|
+
{/if}
|
|
35
|
+
</button>
|
|
36
|
+
<button type="button" class="social-button turnip-button"
|
|
37
|
+
role="link"
|
|
38
|
+
title={`https://www.linkedin.com/in/${linkedinSlug}/`}
|
|
39
|
+
on:click={() => window.open(`https://www.linkedin.com/in/${linkedinSlug}/`)}>
|
|
40
|
+
<img src={LinkedinIcon} alt="linkedikn icon">
|
|
41
|
+
{#if (!isSmallVersion)}
|
|
42
|
+
<span>{linkedinSlug}</span>
|
|
43
|
+
{/if}
|
|
44
|
+
</button>
|
|
45
|
+
<button type="button" class="social-button turnip-button"
|
|
46
|
+
role="link"
|
|
47
|
+
title={`mailto:${email}`}
|
|
48
|
+
on:click={() => window.open(`mailto:${email}`)}>
|
|
49
|
+
<img src={MailIcon} alt="mail icon" />
|
|
50
|
+
{#if (!isSmallVersion)}
|
|
51
|
+
<span>{email}</span>
|
|
52
|
+
{/if}
|
|
53
|
+
</button>
|
|
54
|
+
{#if (shouldShowExtra)}
|
|
55
|
+
<button type="button" class="social-button turnip-button"
|
|
56
|
+
role="link"
|
|
57
|
+
title="https://turnipxenon.itch.io/"
|
|
58
|
+
transition:scale
|
|
59
|
+
on:click={() => window.open("https://turnipxenon.itch.io/")}>
|
|
60
|
+
<img src={ItchLogoHotLink} alt="itch icon">
|
|
61
|
+
{#if (!isSmallVersion)}
|
|
62
|
+
<span>TurnipXenon</span>
|
|
63
|
+
{/if}
|
|
64
|
+
</button>
|
|
65
|
+
{/if}
|
|
66
|
+
</div>
|
|
67
|
+
|
|
68
|
+
<style lang="postcss">
|
|
69
|
+
.social-button {
|
|
70
|
+
@apply btn variant-filled-primary;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
button > img {
|
|
74
|
+
max-height: 1lh;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
button {
|
|
78
|
+
min-width: 0;
|
|
79
|
+
min-height: 0;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.socials {
|
|
83
|
+
display: flex;
|
|
84
|
+
flex-wrap: wrap;
|
|
85
|
+
justify-content: var(--preferred-justify-content);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.socials > button {
|
|
89
|
+
margin: 0 0.5em var(--preferred-overall-margin-bottom);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.socials.isSmall > button {
|
|
93
|
+
margin-left: 0.25em;
|
|
94
|
+
margin-right: 0.25em;
|
|
95
|
+
}
|
|
93
96
|
</style>
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import {onMount} from "svelte";
|
|
3
|
-
import {fly} from "svelte/transition";
|
|
4
|
-
|
|
5
|
-
export let isFirst = false;
|
|
6
|
-
|
|
7
|
-
let stickyElem: HTMLElement;
|
|
8
|
-
let isSticky = false;
|
|
9
|
-
|
|
10
|
-
let observer: undefined | IntersectionObserver;
|
|
11
|
-
onMount(() => {
|
|
12
|
-
observer = new IntersectionObserver(
|
|
13
|
-
([e]) => {
|
|
14
|
-
isSticky = e.intersectionRatio < 1;
|
|
15
|
-
},
|
|
16
|
-
{threshold: [1]}
|
|
17
|
-
);
|
|
18
|
-
observer.observe(stickyElem);
|
|
19
|
-
});
|
|
20
|
-
</script>
|
|
21
|
-
|
|
22
|
-
<span transition:fly={{y: -100}}>
|
|
23
|
-
{#if (isFirst && !isSticky)}
|
|
24
|
-
<!-- intentionally empty -->
|
|
25
|
-
{:else if (isSticky)}
|
|
26
|
-
{" | "}
|
|
27
|
-
{:else }
|
|
28
|
-
<br>
|
|
29
|
-
{/if}
|
|
30
|
-
<span class="sticky-div" bind:this={stickyElem}>
|
|
31
|
-
<slot/>
|
|
32
|
-
</span>
|
|
33
|
-
</span>
|
|
34
|
-
|
|
35
|
-
<style>
|
|
36
|
-
.sticky-div {
|
|
37
|
-
position: sticky;
|
|
38
|
-
top: -1px;
|
|
39
|
-
}
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import {onMount} from "svelte";
|
|
3
|
+
import {fly} from "svelte/transition";
|
|
4
|
+
|
|
5
|
+
export let isFirst = false;
|
|
6
|
+
|
|
7
|
+
let stickyElem: HTMLElement;
|
|
8
|
+
let isSticky = false;
|
|
9
|
+
|
|
10
|
+
let observer: undefined | IntersectionObserver;
|
|
11
|
+
onMount(() => {
|
|
12
|
+
observer = new IntersectionObserver(
|
|
13
|
+
([e]) => {
|
|
14
|
+
isSticky = e.intersectionRatio < 1;
|
|
15
|
+
},
|
|
16
|
+
{threshold: [1]}
|
|
17
|
+
);
|
|
18
|
+
observer.observe(stickyElem);
|
|
19
|
+
});
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<span transition:fly={{y: -100}}>
|
|
23
|
+
{#if (isFirst && !isSticky)}
|
|
24
|
+
<!-- intentionally empty -->
|
|
25
|
+
{:else if (isSticky)}
|
|
26
|
+
{" | "}
|
|
27
|
+
{:else }
|
|
28
|
+
<br>
|
|
29
|
+
{/if}
|
|
30
|
+
<span class="sticky-div" bind:this={stickyElem}>
|
|
31
|
+
<slot/>
|
|
32
|
+
</span>
|
|
33
|
+
</span>
|
|
34
|
+
|
|
35
|
+
<style>
|
|
36
|
+
.sticky-div {
|
|
37
|
+
position: sticky;
|
|
38
|
+
top: -1px;
|
|
39
|
+
}
|
|
40
40
|
</style>
|
|
@@ -1,86 +1,86 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { ToggleableContentType } from "$pkg/components/ToggleableContentType";
|
|
3
|
-
import { afterUpdate, onMount } from "svelte";
|
|
4
|
-
|
|
5
|
-
export let toggle: ToggleableContentType = ToggleableContentType.Default;
|
|
6
|
-
|
|
7
|
-
enum GibberishState {
|
|
8
|
-
NonExistent,
|
|
9
|
-
CreatingParent,
|
|
10
|
-
Binded
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
let defaultSlot: HTMLDivElement | undefined = undefined;
|
|
14
|
-
let gibberishState: GibberishState = GibberishState.NonExistent;
|
|
15
|
-
let gibberishParent: HTMLDivElement | undefined;
|
|
16
|
-
let gibberishSlot: Node | undefined;
|
|
17
|
-
|
|
18
|
-
const chaoticWordBank = ["niko", "toba", "seal", "aquarium", "ojisan", "baikal"];
|
|
19
|
-
const turnToGibberish = (node: Node) => {
|
|
20
|
-
for (const childNodes of node.childNodes) {
|
|
21
|
-
turnToGibberish(childNodes);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
if (node.nodeType === Node.TEXT_NODE && node.textContent?.trim()) {
|
|
25
|
-
const max = node.textContent.length;
|
|
26
|
-
node.textContent = "";
|
|
27
|
-
while (node.textContent.length < max) {
|
|
28
|
-
node.textContent += (chaoticWordBank[Math.floor(Math.random() * chaoticWordBank.length)]) + " ";
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
const processDefaultSlot = (slot: HTMLDivElement | undefined) => {
|
|
34
|
-
if (!slot || toggle == ToggleableContentType.Default) {
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
turnToGibberish(slot);
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
const attachGibberish = (parent: HTMLDivElement | undefined) => {
|
|
42
|
-
console.log("Help");
|
|
43
|
-
if (gibberishState !== GibberishState.CreatingParent && parent !== undefined) {
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
console.log("Help1");
|
|
48
|
-
if (gibberishSlot === undefined) {
|
|
49
|
-
console.warn("Gibberish slot was not created");
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
console.log("Help2");
|
|
54
|
-
if (gibberishParent === undefined) {
|
|
55
|
-
console.warn("Gibberish parent was not created");
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
console.log("Help3");
|
|
60
|
-
gibberishParent.appendChild(gibberishSlot);
|
|
61
|
-
console.log(gibberishParent);
|
|
62
|
-
gibberishState = GibberishState.Binded;
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
onMount(() => {
|
|
66
|
-
processDefaultSlot(defaultSlot);
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
// afterUpdate(() => {
|
|
70
|
-
// console.log("after update:", gibberishState);
|
|
71
|
-
// console.log("after update:", gibberishParent);
|
|
72
|
-
// if (gibberishParent !== undefined && gibberishState === GibberishState.CreatingParent) {
|
|
73
|
-
// gibberishState = GibberishState.ParentCreated;
|
|
74
|
-
// }
|
|
75
|
-
// });
|
|
76
|
-
|
|
77
|
-
$: attachGibberish(gibberishParent);
|
|
78
|
-
</script>
|
|
79
|
-
|
|
80
|
-
{#if toggle === ToggleableContentType.Default}
|
|
81
|
-
<slot />
|
|
82
|
-
{:else if (ToggleableContentType.Gibberish === toggle)}
|
|
83
|
-
<div bind:this={defaultSlot} style={`visibility: ${gibberishState === GibberishState.Binded}`}>
|
|
84
|
-
<slot />
|
|
85
|
-
</div>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { ToggleableContentType } from "$pkg/components/ToggleableContentType";
|
|
3
|
+
import { afterUpdate, onMount } from "svelte";
|
|
4
|
+
|
|
5
|
+
export let toggle: ToggleableContentType = ToggleableContentType.Default;
|
|
6
|
+
|
|
7
|
+
enum GibberishState {
|
|
8
|
+
NonExistent,
|
|
9
|
+
CreatingParent,
|
|
10
|
+
Binded
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
let defaultSlot: HTMLDivElement | undefined = undefined;
|
|
14
|
+
let gibberishState: GibberishState = GibberishState.NonExistent;
|
|
15
|
+
let gibberishParent: HTMLDivElement | undefined;
|
|
16
|
+
let gibberishSlot: Node | undefined;
|
|
17
|
+
|
|
18
|
+
const chaoticWordBank = ["niko", "toba", "seal", "aquarium", "ojisan", "baikal"];
|
|
19
|
+
const turnToGibberish = (node: Node) => {
|
|
20
|
+
for (const childNodes of node.childNodes) {
|
|
21
|
+
turnToGibberish(childNodes);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (node.nodeType === Node.TEXT_NODE && node.textContent?.trim()) {
|
|
25
|
+
const max = node.textContent.length;
|
|
26
|
+
node.textContent = "";
|
|
27
|
+
while (node.textContent.length < max) {
|
|
28
|
+
node.textContent += (chaoticWordBank[Math.floor(Math.random() * chaoticWordBank.length)]) + " ";
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const processDefaultSlot = (slot: HTMLDivElement | undefined) => {
|
|
34
|
+
if (!slot || toggle == ToggleableContentType.Default) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
turnToGibberish(slot);
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const attachGibberish = (parent: HTMLDivElement | undefined) => {
|
|
42
|
+
console.log("Help");
|
|
43
|
+
if (gibberishState !== GibberishState.CreatingParent && parent !== undefined) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
console.log("Help1");
|
|
48
|
+
if (gibberishSlot === undefined) {
|
|
49
|
+
console.warn("Gibberish slot was not created");
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
console.log("Help2");
|
|
54
|
+
if (gibberishParent === undefined) {
|
|
55
|
+
console.warn("Gibberish parent was not created");
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
console.log("Help3");
|
|
60
|
+
gibberishParent.appendChild(gibberishSlot);
|
|
61
|
+
console.log(gibberishParent);
|
|
62
|
+
gibberishState = GibberishState.Binded;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
onMount(() => {
|
|
66
|
+
processDefaultSlot(defaultSlot);
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
// afterUpdate(() => {
|
|
70
|
+
// console.log("after update:", gibberishState);
|
|
71
|
+
// console.log("after update:", gibberishParent);
|
|
72
|
+
// if (gibberishParent !== undefined && gibberishState === GibberishState.CreatingParent) {
|
|
73
|
+
// gibberishState = GibberishState.ParentCreated;
|
|
74
|
+
// }
|
|
75
|
+
// });
|
|
76
|
+
|
|
77
|
+
$: attachGibberish(gibberishParent);
|
|
78
|
+
</script>
|
|
79
|
+
|
|
80
|
+
{#if toggle === ToggleableContentType.Default}
|
|
81
|
+
<slot />
|
|
82
|
+
{:else if (ToggleableContentType.Gibberish === toggle)}
|
|
83
|
+
<div bind:this={defaultSlot} style={`visibility: ${gibberishState === GibberishState.Binded}`}>
|
|
84
|
+
<slot />
|
|
85
|
+
</div>
|
|
86
86
|
{/if}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export enum ToggleableContentType {
|
|
2
|
-
Default,
|
|
3
|
-
Gibberish,
|
|
4
|
-
}
|
|
1
|
+
export enum ToggleableContentType {
|
|
2
|
+
Default,
|
|
3
|
+
Gibberish,
|
|
4
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const AppShellBackground = "app-shell-token";
|
|
1
|
+
export const AppShellBackground = "app-shell-token";
|
|
@@ -28,13 +28,6 @@
|
|
|
28
28
|
{@html `<script>${autoModeWatcher.toString()} autoModeWatcher();</script>`}
|
|
29
29
|
</svelte:head>
|
|
30
30
|
|
|
31
|
-
<!--todo: turn off hidden when it's time-->
|
|
32
|
-
<!--<button type="button" class="fab" on:click={()=>{-->
|
|
33
|
-
<!-- enableDialogueOverlay.set(!enableDialogueOverlayValue);-->
|
|
34
|
-
<!--}}>-->
|
|
35
|
-
<!-- <img src={FABIcon} alt="interactive floating action button represented as a turnip">-->
|
|
36
|
-
<!--</button>-->
|
|
37
|
-
|
|
38
31
|
<AppShell>
|
|
39
32
|
<svelte:fragment slot="header">
|
|
40
33
|
<!-- App Bar -->
|
|
@@ -49,7 +42,7 @@
|
|
|
49
42
|
</div>
|
|
50
43
|
{:else if $$slots.extraLeadingIcons}
|
|
51
44
|
<div hidden>
|
|
52
|
-
<slot name="
|
|
45
|
+
<slot name="s" />
|
|
53
46
|
</div>
|
|
54
47
|
{/if}
|
|
55
48
|
</svelte:fragment>
|