@turnipxenon/pineapple 3.0.0-alpha.8 → 3.0.0

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.
Files changed (117) hide show
  1. package/dist/components/blog_template/BlogTemplate.svelte +1 -1
  2. package/dist/components/blog_template/BlogTemplateInner.svelte +1 -1
  3. package/dist/components/blog_template/BlogTemplateInner.svelte.d.ts +1 -1
  4. package/dist/components/dialog_manager/DialogManager.d.ts +2 -1
  5. package/dist/components/dialog_manager/DialogMangerInit.d.ts +2 -15
  6. package/dist/components/dialog_manager/DialogMangerInit.js +8 -2
  7. package/dist/components/dialog_manager/IDialogManager.d.ts +39 -0
  8. package/dist/components/dialog_manager/IDialogManager.js +4 -0
  9. package/dist/components/dialog_manager/behavior_tree/line_processors/commands/JumpCommand.d.ts +3 -0
  10. package/dist/components/dialog_manager/behavior_tree/line_processors/commands/JumpCommand.js +15 -3
  11. package/dist/components/dialog_overlay/DialogOverlay.svelte +31 -22
  12. package/dist/components/navigation_component/NavigationComponent.svelte +2 -1
  13. package/dist/components/navigation_component/NavigationControl.svelte +1 -1
  14. package/dist/components/pineapple/PineappleBaseLayout.svelte +2 -2
  15. package/dist/index.d.ts +2 -2
  16. package/dist/index.js +1 -2
  17. package/dist/styles/turnip-theme.css +64 -64
  18. package/dist/ui/components/SocialSection.svelte +6 -2
  19. package/dist/ui/components/accordion/PinyaAccordion.svelte +21 -0
  20. package/dist/ui/components/accordion/PinyaAccordion.svelte.d.ts +8 -0
  21. package/dist/ui/components/accordion/PinyaAccordionItem.svelte +29 -0
  22. package/dist/ui/components/accordion/PinyaAccordionItem.svelte.d.ts +9 -0
  23. package/dist/ui/components/accordion/index.d.ts +2 -0
  24. package/dist/ui/components/accordion/index.js +2 -0
  25. package/dist/ui/components/index.d.ts +1 -0
  26. package/dist/ui/components/index.js +1 -0
  27. package/dist/ui/elements/{pinya-button/component.svelte → PinyaButton/PinyaButton.svelte} +4 -3
  28. package/dist/ui/elements/PinyaButton/PinyaButton.svelte.d.ts +4 -0
  29. package/dist/ui/elements/{pinya-button/props.d.ts → PinyaButton/PinyaButtonProps.d.ts} +1 -0
  30. package/dist/ui/elements/PinyaButton/index.d.ts +2 -0
  31. package/dist/ui/elements/PinyaButton/index.js +2 -0
  32. package/dist/ui/elements/Placeholder.svelte +17 -0
  33. package/dist/ui/elements/Placeholder.svelte.d.ts +7 -0
  34. package/dist/ui/elements/index.d.ts +1 -1
  35. package/dist/ui/elements/index.js +1 -1
  36. package/dist/ui/elements/pinya-combobox/PinyaComboboxProps.d.ts +1 -0
  37. package/dist/ui/modules/modals/general-settings/LanguagePicker.svelte +7 -2
  38. package/dist/ui/modules/projects/Hepcat.svelte +6 -4
  39. package/dist/ui/modules/projects/Hepcat.svelte.d.ts +1 -1
  40. package/dist/ui/modules/projects/Pengi.svelte +6 -4
  41. package/dist/ui/modules/projects/Pengi.svelte.d.ts +1 -1
  42. package/dist/ui/modules/projects/Soulwork.svelte +7 -5
  43. package/dist/ui/modules/projects/ThisWebpage.svelte +9 -8
  44. package/dist/ui/modules/projects/ThisWebpage.svelte.d.ts +1 -1
  45. package/dist/ui/modules/seaweed/ChumBucket.svelte +5 -4
  46. package/dist/ui/templates/{pinya-page-layout/component.svelte → PinyaPageLayout/PinyaPageLayout.svelte} +1 -1
  47. package/dist/ui/templates/PinyaPageLayout/PinyaPageLayout.svelte.d.ts +9 -0
  48. package/dist/ui/templates/PinyaPageLayout/index.d.ts +2 -0
  49. package/dist/ui/templates/PinyaPageLayout/index.js +2 -0
  50. package/dist/ui/templates/{pinya-page-layout → PinyaPageLayout}/runes.svelte.d.ts +1 -0
  51. package/dist/ui/templates/PinyaPageLayout/runes.svelte.js +4 -0
  52. package/dist/{template/seaweed → ui/templates/SeaweedLayout}/CreateUrlForm.svelte +2 -2
  53. package/dist/ui/templates/SeaweedLayout/EntryOrderConfig.svelte.d.ts +9 -0
  54. package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/ProjectGroupConfig.svelte.d.ts +1 -1
  55. package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/SeaweedLayout.svelte +7 -7
  56. package/dist/ui/templates/confirmation-modal/component.svelte +1 -1
  57. package/dist/ui/templates/index.d.ts +2 -2
  58. package/dist/ui/templates/index.js +2 -2
  59. package/package.json +3 -2
  60. package/dist/template/seaweed/ParseQueryTerms.d.ts +0 -1
  61. package/dist/template/seaweed/ParseQueryTerms.js +0 -23
  62. package/dist/template/seaweed/RunChaos.d.ts +0 -1
  63. package/dist/template/seaweed/RunChaos.js +0 -41
  64. package/dist/template/seaweed/SeaweedTemplate.svelte +0 -336
  65. package/dist/template/seaweed/SeaweedTemplate.svelte.d.ts +0 -32
  66. package/dist/template/seaweed/SeaweedTemplateData.d.ts +0 -30
  67. package/dist/template/seaweed/SeaweedTemplateData.js +0 -79
  68. package/dist/template/seaweed/entries/ChefWings.svelte +0 -45
  69. package/dist/template/seaweed/entries/ChefWings.svelte.d.ts +0 -7
  70. package/dist/template/seaweed/entries/CustomizedYarnspinner.svelte +0 -40
  71. package/dist/template/seaweed/entries/CustomizedYarnspinner.svelte.d.ts +0 -7
  72. package/dist/template/seaweed/entries/EntryProps.d.ts +0 -16
  73. package/dist/template/seaweed/entries/EntryProps.js +0 -5
  74. package/dist/template/seaweed/entries/Hepcat.svelte +0 -64
  75. package/dist/template/seaweed/entries/Hepcat.svelte.d.ts +0 -7
  76. package/dist/template/seaweed/entries/Pengi.svelte +0 -57
  77. package/dist/template/seaweed/entries/Pengi.svelte.d.ts +0 -7
  78. package/dist/template/seaweed/entries/Soulwork.svelte +0 -54
  79. package/dist/template/seaweed/entries/Soulwork.svelte.d.ts +0 -7
  80. package/dist/template/seaweed/entries/ThisWebpage.svelte +0 -55
  81. package/dist/template/seaweed/entries/ThisWebpage.svelte.d.ts +0 -7
  82. package/dist/template/seaweed/entries/WorkExperience.svelte +0 -130
  83. package/dist/template/seaweed/entries/WorkExperience.svelte.d.ts +0 -8
  84. package/dist/template/seaweed/entries/Workset.svelte +0 -57
  85. package/dist/template/seaweed/entries/Workset.svelte.d.ts +0 -7
  86. package/dist/template/seaweed/entry_order_config/EntryOrderConfig.d.ts +0 -1
  87. package/dist/template/seaweed/entry_order_config/EntryOrderConfig.js +0 -8
  88. package/dist/template/seaweed/entry_order_config/EntryOrderConfig.svelte +0 -297
  89. package/dist/template/seaweed/entry_order_config/EntryOrderConfig.svelte.d.ts +0 -12
  90. package/dist/template/seaweed/entry_order_config/entry-order-config.postcss +0 -35
  91. package/dist/template/seaweed/index.d.ts +0 -4
  92. package/dist/template/seaweed/index.js +0 -4
  93. package/dist/template/seaweed/seaweed.postcss +0 -125
  94. package/dist/ui/elements/pinya-button/component.svelte.d.ts +0 -4
  95. package/dist/ui/elements/pinya-button/index.d.ts +0 -2
  96. package/dist/ui/elements/pinya-button/index.js +0 -2
  97. package/dist/ui/templates/pinya-page-layout/component.svelte.d.ts +0 -9
  98. package/dist/ui/templates/pinya-page-layout/index.d.ts +0 -2
  99. package/dist/ui/templates/pinya-page-layout/index.js +0 -2
  100. package/dist/ui/templates/pinya-page-layout/runes.svelte.js +0 -3
  101. package/dist/ui/templates/seaweed-layout/EntryOrderConfig2.svelte.d.ts +0 -9
  102. /package/dist/ui/elements/{pinya-button/props.js → PinyaButton/PinyaButtonProps.js} +0 -0
  103. /package/dist/{template/seaweed → ui/templates/SeaweedLayout}/CreateUrlForm.svelte.d.ts +0 -0
  104. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/EntryGroup.svelte +0 -0
  105. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/EntryGroup.svelte.d.ts +0 -0
  106. /package/dist/ui/templates/{seaweed-layout/EntryOrderConfig2.svelte → SeaweedLayout/EntryOrderConfig.svelte} +0 -0
  107. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/ProjectComponentProps.d.ts +0 -0
  108. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/ProjectComponentProps.js +0 -0
  109. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/ProjectGroupConfig.svelte +0 -0
  110. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/SeaweedLayout.md +0 -0
  111. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/SeaweedLayout.svelte.d.ts +0 -0
  112. /package/dist/{template/seaweed → ui/templates/SeaweedLayout}/ToastSettings.d.ts +0 -0
  113. /package/dist/{template/seaweed → ui/templates/SeaweedLayout}/ToastSettings.js +0 -0
  114. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/index.d.ts +0 -0
  115. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/index.js +0 -0
  116. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/props.d.ts +0 -0
  117. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/props.js +0 -0
@@ -1,336 +0,0 @@
1
- <!-- @migration-task Error while migrating Svelte code: Can't migrate code with afterUpdate. Please migrate by hand. -->
2
- <script lang="ts">
3
- import { afterUpdate, type ComponentType, onMount } from "svelte";
4
- import EntryOrderConfig from "./entry_order_config/EntryOrderConfig.svelte";
5
- import { runChaos } from "./RunChaos";
6
- import SocialSection from "../../ui/components/SocialSection.svelte";
7
- import SeaweedBaseLayout from "../../components/layouts/SeaweedBaseLayout.svelte";
8
- import { page } from "$app/stores";
9
- import Card from "../../components/Card.svelte";
10
- import {
11
- type ComponentMeta,
12
- type EntryGroup,
13
- type SeaweedTemplateData,
14
- TurnGroupEntriesMutable
15
- } from "./SeaweedTemplateData";
16
- import type { EntryProps } from "./entries/EntryProps";
17
- import { parseQueryTerms } from "./ParseQueryTerms";
18
- import UrlShortenerForm from "./CreateUrlForm.svelte";
19
- import PineappleSlideToggle from "../../components/PineappleSlideToggle.svelte";
20
- import { Chip } from "../../index";
21
- import ChumBucket from "../../ui/modules/seaweed/ChumBucket.svelte";
22
-
23
- export let seaweedTemplateData: SeaweedTemplateData;
24
- export let projectFirstGroupedEntries: ReadonlyArray<EntryGroup>;
25
- export let getAllEntryFromGlobal: () => Map<string, ComponentMeta>;
26
- export let getEntryFromGlobal: (name: string) => undefined | ComponentMeta;
27
- export let letChaos = true;
28
- export let name = "Turnip";
29
- export let email = "turnipxenon@gmail.com";
30
- export let linkedinSlug = "turnip-xenon";
31
- export let domain = "http://localhost:5173/portfolio/actual/";
32
- export let serverSideQueryParams = "";
33
- export let experienceSection: ComponentType;
34
-
35
- // region query params
36
- let entryProps: EntryProps = {
37
- email,
38
- letChaos,
39
- linkedinSlug,
40
- name,
41
- seaweedTemplateData
42
- };
43
-
44
- let isVisible = true;
45
- const paramQTSet = new Set<string>();
46
-
47
- let isAdvanceSettingOn = false;
48
- $: isSocialsGone = !isVisible;
49
- $: console.log("is visible", isVisible);
50
-
51
- let qtfontWeight = "normal";
52
- let additionalFontWeight = "";
53
-
54
- let chaosDone = false;
55
- let mainVisibility = "visible";
56
- $: mainVisibility = letChaos && !chaosDone ? "hidden" : "visible";
57
-
58
- const syncQT = () => {
59
- if (seaweedTemplateData.queryTermMap.size === 0 || paramQTSet.size === 0) {
60
- return;
61
- }
62
-
63
- seaweedTemplateData.queryTermMap.forEach((_, k) => {
64
- seaweedTemplateData.queryTermMap.set(k, paramQTSet.has(k));
65
- });
66
-
67
- // force svelte refresh
68
- seaweedTemplateData.queryTermMap = seaweedTemplateData.queryTermMap;
69
- };
70
-
71
- const parseQueryTermsLocal = async () => {
72
- const qtSet = new Set<string>();
73
- parseQueryTerms(document.body, qtSet);
74
- qtSet.forEach(t => seaweedTemplateData.queryTermMap.set(t, true));
75
- // force svelte update
76
- seaweedTemplateData.queryTermMap = seaweedTemplateData.queryTermMap;
77
- syncQT();
78
- };
79
-
80
- /** qt values and what they mean:
81
- * undefined: set all qt terms to font-weight: bold
82
- * todo: implement clear
83
- * clear: unset all terms to font-weight: normal
84
- * <term>: only set qt-<term> to bold
85
- * <term1>,<term2>: only set qt-<term1> and qt-<term2> to bold,
86
- *
87
- * ONLY CALL INSIDE onMount()
88
- **/
89
- const filterSearchParams = (searchParams: URLSearchParams) => {
90
- const isFunOn = searchParams.get("fun")?.trim();
91
- if (isFunOn === "true") {
92
- seaweedTemplateData.shouldAddFunNote = true;
93
- }
94
-
95
- // region Order
96
- const gameSectionFirstParam = searchParams.get("game-section-first")?.trim();
97
- const orderParam = searchParams.get("order")?.trim();
98
- if (orderParam) {
99
- seaweedTemplateData.groupedEntries = [];
100
-
101
- orderParam.split(",").forEach(groupDefinition => {
102
- const pair = groupDefinition.split(":");
103
- if (pair.length >= 2) {
104
- const group: EntryGroup = {
105
- name: pair[0],
106
- items: [],
107
- gridClass: pair[2]
108
- };
109
-
110
- pair[1].split("|").forEach(e => {
111
- const component = getEntryFromGlobal(e);
112
- if (component) {
113
- group.items.push(component);
114
- }
115
- });
116
-
117
- seaweedTemplateData.groupedEntries.push(group);
118
- }
119
-
120
- });
121
-
122
- seaweedTemplateData.groupedEntries = seaweedTemplateData.groupedEntries;
123
- } else if (gameSectionFirstParam === "false") {
124
- seaweedTemplateData.groupedEntries = TurnGroupEntriesMutable(projectFirstGroupedEntries);
125
- }
126
- // endregion
127
-
128
- // region Bold terms
129
- const qtValue = searchParams.get("qt")?.trim();
130
- if (qtValue !== undefined) {
131
- qtfontWeight = "normal";
132
- const dynamicStyle = qtValue.split(",").map((term) => {
133
- // side-effect
134
- paramQTSet.add(`qt-${term}`);
135
-
136
- // main effect
137
- return `span.qt-${term} { font-weight: bold !important; }`;
138
- }).join("\n");
139
-
140
- // https://stackoverflow.com/a/24285947/17836168
141
- const style = document.createElement("style");
142
- // noinspection JSDeprecatedSymbols
143
- style.type = "text/css";
144
- style.innerText = dynamicStyle;
145
- document.head.appendChild(style);
146
- syncQT();
147
- } else {
148
- qtfontWeight = "bold";
149
- }
150
- // endregion Bold terms
151
- };
152
- // endregion query params
153
-
154
- /* region chaos scripts */
155
- /* endregion chaos scripts */
156
-
157
- onMount(async () => {
158
- if (!letChaos && serverSideQueryParams) {
159
- filterSearchParams(new URLSearchParams(serverSideQueryParams));
160
- } else if (!letChaos && $page.url.searchParams) {
161
- filterSearchParams($page.url.searchParams);
162
- }
163
-
164
- if (letChaos) {
165
- runChaos(document.body);
166
- chaosDone = true;
167
- }
168
- });
169
-
170
- // todo: figure out what this does #migration
171
- // let isParsed = false;
172
- // afterUpdate(async () => {
173
- // if (!letChaos && !isParsed) {
174
- // isParsed = true;
175
- // await parseQueryTermsLocal();
176
- // }
177
- // });
178
-
179
- const toggleTerm = (term: string) => {
180
- seaweedTemplateData.queryTermMap.set(term, !seaweedTemplateData.queryTermMap.get(term));
181
- seaweedTemplateData.queryTermMap = seaweedTemplateData.queryTermMap;
182
- };
183
-
184
- // when either gameSectionFirst or the queryTerms are updated, update advancedUrl
185
- let orderUrl = "";
186
- let advancedUrl = domain;
187
- let advancedQuery = "";
188
- const updateUrl = (seaweedTemplateData: SeaweedTemplateData) => {
189
- if (seaweedTemplateData === undefined) {
190
- return;
191
- }
192
-
193
- const queryParams: string[] = [];
194
-
195
- if (orderUrl) {
196
- queryParams.push(orderUrl);
197
- }
198
-
199
- const qtList: string[] = [];
200
- seaweedTemplateData.queryTermMap.forEach((shouldBold, term) => {
201
- if (shouldBold) {
202
- qtList.push(term);
203
- }
204
- });
205
-
206
- if (qtList.length === 0) {
207
- queryParams.push("qt=clear");
208
- } else if (seaweedTemplateData.queryTermMap.size !== qtList.length) {
209
- // we'll only add if the lengths are not equal
210
- // dont need to add query if all terms in qtMap is true
211
- queryParams.push(`qt=${qtList.map(t => t.slice(3, t.length)).join(",")}`);
212
- }
213
-
214
- if (seaweedTemplateData.shouldAddFunNote) {
215
- queryParams.push("fun=true");
216
- }
217
-
218
- if (!seaweedTemplateData.gameSectionFirst) {
219
- queryParams.push("game-section-first=false");
220
- }
221
-
222
- if (queryParams.length > 0) {
223
- advancedQuery = queryParams.join("&");
224
- advancedUrl = `${domain}?${advancedQuery}`;
225
- } else {
226
- advancedUrl = domain;
227
- }
228
- };
229
- $: updateUrl(seaweedTemplateData);
230
-
231
- // eslint-disable-next-line
232
- const updateSeaweedWhenFunNoteChanged = (_: boolean) => {
233
- entryProps = entryProps;
234
- };
235
- $: updateSeaweedWhenFunNoteChanged(seaweedTemplateData.shouldAddFunNote);
236
- </script>
237
-
238
- <SeaweedBaseLayout bind:shouldDisplayLeadingIcons={isSocialsGone}>
239
- <!-- todo: limit main size to 1080 px? -->
240
- <main style={`
241
- --qt-font-weight: ${qtfontWeight};${additionalFontWeight};
242
- visibility: ${mainVisibility};
243
- `}>
244
- <svelte:component this={experienceSection}
245
- entryProps={entryProps}
246
- bind:isVisible={isVisible}
247
- ></svelte:component>
248
-
249
- {#if seaweedTemplateData}
250
- {#each seaweedTemplateData.groupedEntries as group}
251
- {#if group.items.length > 0}
252
- <Card>
253
- <section class="section-card title-card" slot="content">
254
- <h1 class="text-center">{group.name}</h1>
255
- </section>
256
- </Card>
257
-
258
- <section class={group.gridClass}>
259
- {#each group.items as entry}
260
- <svelte:component this={entry.component} props={entryProps}></svelte:component>
261
- {/each}
262
- </section>
263
- {/if}
264
- {/each}
265
- {/if}
266
-
267
- <ChumBucket></ChumBucket>
268
-
269
- {#if (!letChaos)}
270
- <div aria-hidden="true" style="height: 3lh" />
271
-
272
- <Card>
273
- <div slot="content" class="default-card advanced-setting">
274
- <h1>Advanced settings</h1>
275
- <p>This one is for those curious how I customize this page.</p>
276
-
277
- <PineappleSlideToggle name="advanced-setting-slider"
278
- bind:checked={isAdvanceSettingOn}>
279
- Advanced settings: {isAdvanceSettingOn ? "On" : "Off"}
280
- </PineappleSlideToggle>
281
-
282
- {#if (isAdvanceSettingOn)}
283
- <PineappleSlideToggle name="game-section-slider"
284
- bind:checked={seaweedTemplateData.gameSectionFirst}>
285
- Should game section appear first over projects: {seaweedTemplateData.gameSectionFirst ? "On" : "Off"}
286
- </PineappleSlideToggle>
287
- <p>Note: the above configuration was made before the dynamic entry list and to support links sent with that params, we will act like it only swaps the two groups, and nothing more dynamic if order query param does not exist. The configuration only happens during page load with query param, and it does not apply when changed here.</p>
288
- <PineappleSlideToggle name="fun-note-slider"
289
- bind:checked={seaweedTemplateData.shouldAddFunNote}>
290
- Should add fun note in description: {seaweedTemplateData.shouldAddFunNote ? "On" : "Off"}
291
- </PineappleSlideToggle>
292
-
293
- <h3>Query terms to bold</h3>
294
- <div class="query-term-grid">
295
- {#each seaweedTemplateData.queryTermMap.entries() as [term, shouldBold]}
296
- <!--{@const shouldBold = false}-->
297
- <Chip onClick={() => {toggleTerm(term)}}
298
- checked={shouldBold}>
299
- <!-- todo: change shouldBold -->
300
- <span style={`font-weight: ${shouldBold ? "bold" : "normal"}`}>
301
- {#if (shouldBold)}✓{/if}
302
- {term}
303
- </span>
304
- </Chip>
305
- {/each}
306
- </div>
307
-
308
- <EntryOrderConfig bind:seaweedEntries={seaweedTemplateData.groupedEntries}
309
- seaweedTemplateData={seaweedTemplateData}
310
- bind:orderUrl={orderUrl}
311
- getAllEntryFromGlobal={getAllEntryFromGlobal}
312
- getEntryFromGlobal={getEntryFromGlobal}
313
- updateUrl={updateUrl}></EntryOrderConfig>
314
-
315
- <br>
316
- <p>Copy the url below and open a new page with it</p>
317
- <CodeBlock language="url" code={advancedUrl}></CodeBlock>
318
-
319
- <UrlShortenerForm queryParams={advancedQuery}></UrlShortenerForm>
320
- {/if}
321
- </div>
322
- </Card>
323
- {/if}
324
- </main>
325
-
326
- {#snippet extraLeadingIcons()}
327
- <SocialSection
328
- isSlot={true}
329
- email={email}
330
- linkedinSlug={linkedinSlug}
331
- isSmallVersion={true}></SocialSection>
332
- {/snippet}
333
- </SeaweedBaseLayout>
334
-
335
- <style>/*$$__STYLE_CONTENT__$$*/
336
- </style>
@@ -1,32 +0,0 @@
1
- import { type ComponentType } from "svelte";
2
- import { type ComponentMeta, type EntryGroup, type SeaweedTemplateData } from "./SeaweedTemplateData";
3
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
4
- new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
5
- $$bindings?: Bindings;
6
- } & Exports;
7
- (internal: unknown, props: Props & {
8
- $$events?: Events;
9
- $$slots?: Slots;
10
- }): Exports & {
11
- $set?: any;
12
- $on?: any;
13
- };
14
- z_$$bindings?: Bindings;
15
- }
16
- declare const SeaweedTemplate: $$__sveltets_2_IsomorphicComponent<{
17
- seaweedTemplateData: SeaweedTemplateData;
18
- projectFirstGroupedEntries: ReadonlyArray<EntryGroup>;
19
- getAllEntryFromGlobal: () => Map<string, ComponentMeta>;
20
- getEntryFromGlobal: (name: string) => undefined | ComponentMeta;
21
- letChaos?: boolean;
22
- name?: string;
23
- email?: string;
24
- linkedinSlug?: string;
25
- domain?: string;
26
- serverSideQueryParams?: string;
27
- experienceSection: ComponentType;
28
- }, {
29
- [evt: string]: CustomEvent<any>;
30
- }, {}, {}, string>;
31
- type SeaweedTemplate = InstanceType<typeof SeaweedTemplate>;
32
- export default SeaweedTemplate;
@@ -1,30 +0,0 @@
1
- import type { ComponentType } from "svelte";
2
- export declare enum GroupGridClass {
3
- Games = "games-section",
4
- Projects = "projects-section"
5
- }
6
- export interface ComponentMeta {
7
- name: string;
8
- component: ComponentType;
9
- }
10
- export interface EntryGroup {
11
- name: string;
12
- items: ComponentMeta[];
13
- gridClass: string;
14
- }
15
- export declare const GameEntries: Readonly<EntryGroup>;
16
- export declare const ProjectEntries: Readonly<EntryGroup>;
17
- export declare const EmptyRelevantProjects: Readonly<EntryGroup>;
18
- export declare const AllGroupedEntriesGameFirst: ReadonlyArray<EntryGroup>;
19
- export declare const AllGroupedEntriesProjectFirst: ReadonlyArray<EntryGroup>;
20
- export declare const lazyInitializeAllFlatEntries: () => void;
21
- export declare const GetAllEntryFromGlobal: () => Map<string, ComponentMeta>;
22
- export declare const GetEntryFromGlobal: (name: string) => ComponentMeta | undefined;
23
- export declare const TurnGroupEntriesMutable: (allEntries: ReadonlyArray<EntryGroup>) => EntryGroup[];
24
- export interface SeaweedTemplateData {
25
- groupedEntries: EntryGroup[];
26
- shouldAddFunNote: boolean;
27
- queryTermMap: Map<string, boolean>;
28
- gameSectionFirst: boolean;
29
- }
30
- export declare const seaweedTemplateData: SeaweedTemplateData;
@@ -1,79 +0,0 @@
1
- import { DefaultHeader } from "./entries/EntryProps";
2
- import Pengi from "./entries/Pengi.svelte";
3
- import Hepcat from "./entries/Hepcat.svelte";
4
- import ChefWings from "./entries/ChefWings.svelte";
5
- import Soulwork from "./entries/Soulwork.svelte";
6
- import CustomizedYarnspinner from "./entries/CustomizedYarnspinner.svelte";
7
- import ThisWebpage from "./entries/ThisWebpage.svelte";
8
- import { removeProxyWrapperOnString } from "./entry_order_config/EntryOrderConfig";
9
- export var GroupGridClass;
10
- (function (GroupGridClass) {
11
- GroupGridClass["Games"] = "games-section";
12
- GroupGridClass["Projects"] = "projects-section";
13
- })(GroupGridClass || (GroupGridClass = {}));
14
- export const GameEntries = {
15
- name: DefaultHeader.Games.toString(),
16
- items: [
17
- { name: "Pengi", component: Pengi },
18
- { name: "Hepcat", component: Hepcat },
19
- { name: "Chef Wings", component: ChefWings }
20
- ],
21
- gridClass: GroupGridClass.Games.toString()
22
- };
23
- export const ProjectEntries = {
24
- name: DefaultHeader.Projects.toString(),
25
- items: [
26
- { name: "Soulwork", component: Soulwork },
27
- { name: "Customized YarnSpinner", component: CustomizedYarnspinner },
28
- { name: "This Webpage", component: ThisWebpage }
29
- ],
30
- gridClass: GroupGridClass.Projects.toString()
31
- };
32
- export const EmptyRelevantProjects = {
33
- name: "Relevant projects",
34
- items: [],
35
- gridClass: GroupGridClass.Games.toString()
36
- };
37
- export const AllGroupedEntriesGameFirst = [
38
- EmptyRelevantProjects,
39
- GameEntries,
40
- ProjectEntries
41
- ];
42
- export const AllGroupedEntriesProjectFirst = [
43
- EmptyRelevantProjects,
44
- ProjectEntries,
45
- GameEntries
46
- ];
47
- const allFlatEntries = new Map();
48
- export const lazyInitializeAllFlatEntries = () => {
49
- if (allFlatEntries.size === 0) {
50
- [...ProjectEntries.items, ...GameEntries.items].forEach(e => {
51
- allFlatEntries.set(removeProxyWrapperOnString(e.name), e);
52
- });
53
- }
54
- };
55
- export const GetAllEntryFromGlobal = () => {
56
- lazyInitializeAllFlatEntries();
57
- return allFlatEntries;
58
- };
59
- export const GetEntryFromGlobal = (name) => {
60
- lazyInitializeAllFlatEntries();
61
- return allFlatEntries.get(name);
62
- };
63
- export const TurnGroupEntriesMutable = (allEntries) => {
64
- return allEntries.map(g => {
65
- return {
66
- name: g.name,
67
- gridClass: g.gridClass,
68
- items: g.items.map(e => e)
69
- };
70
- });
71
- };
72
- export const seaweedTemplateData = {
73
- shouldAddFunNote: false,
74
- queryTermMap: new Map(),
75
- // todo: gameSectionFirst currently has no functionality
76
- gameSectionFirst: true,
77
- // copy the readonly properties into mutable values
78
- groupedEntries: TurnGroupEntriesMutable(AllGroupedEntriesGameFirst)
79
- };
@@ -1,45 +0,0 @@
1
- <script lang="ts">
2
-
3
- import { type EntryProps } from "./EntryProps";
4
- import HeaderChefWings from "../../../assets/game_dev/footage-chef-wings.gif";
5
- import LinkIcon from "../../../assets/icons/link-icon.svg";
6
- import Card from "../../../components/Card.svelte";
7
-
8
- interface Props {
9
- props: EntryProps;
10
- }
11
-
12
- let { props }: Props = $props();
13
-
14
- </script>
15
-
16
- <Card>
17
- {#snippet content()}
18
- <section class="game-card" >
19
- <img src={HeaderChefWings} alt="todo" loading="lazy">
20
- <section class="game-card-body">
21
-
22
- <h1>Chef Wings</h1>
23
- <p>
24
- A “roguelite-lite” where you gather ingredients in a procedurally-generated dungeon and use
25
- them to cook for customers and then critics!
26
- </p>
27
- <p>
28
- I built and documented several of the game’s systems including the game state management
29
- system that extends <span class="qt-unity">Unity’s</span> existing Monobehavior lifecycle with new events,
30
- and the dialogue, event, and level systems that coordinate the game flow using the interactive
31
- dialogue tool YarnSpinner
32
- </p>
33
-
34
- <section class="game-link-section">
35
- <button type="button" class="game-button turnip-button"
36
- title="https://selk.io/birb-project/trunk/"
37
- onclick={()=>{alert('not implemented')}}>
38
- <img alt="itch.io icon" src={LinkIcon}>
39
- <span>selk.io/birb-project/trunk/</span>
40
- </button>
41
- </section>
42
- </section>
43
- </section>
44
- {/snippet}
45
- </Card>
@@ -1,7 +0,0 @@
1
- import { type EntryProps } from "./EntryProps";
2
- interface Props {
3
- props: EntryProps;
4
- }
5
- declare const ChefWings: import("svelte").Component<Props, {}, "">;
6
- type ChefWings = ReturnType<typeof ChefWings>;
7
- export default ChefWings;
@@ -1,40 +0,0 @@
1
- <script lang="ts">
2
- import { type EntryProps } from "./EntryProps";
3
- import Card from "../../../components/Card.svelte";
4
- import GithubIcon from "../../../assets/icons/github-mark.svg";
5
- import WeaverFootage from "../../../assets/others/weaver-footage.gif";
6
-
7
- interface Props {
8
- props: EntryProps;
9
- }
10
-
11
- let { props }: Props = $props();
12
- </script>
13
-
14
-
15
- <Card>
16
- {#snippet content()}
17
- <section class="project-card" >
18
- <img alt="Footage of a visual novel-like dynamic dialog interaction happening on the same page we are on"
19
- src={WeaverFootage} />
20
-
21
- <div class="project-card-body">
22
- <h2>Customized Yarnspinner interpreter and dialog runner</h2>
23
-
24
- A custom dialog interpreter, written in <span class="qt-ts">Typescript</span>, that tokenizes then
25
- transpiles custom Yarnspinner dialog into a <span class="qt-ts">Typescript</span> file. The said files can
26
- be used on a corresponding runner or library, also implemented alongside it, allowing the ability to play a
27
- custom-flavor of YarnSpinner dialogs on <span class="qt-svelte">Svelte</span>.
28
-
29
- <section class="game-link-section">
30
- <button type="button" class="game-button turnip-button"
31
- role="link"
32
- title="https://github.com/TurnipXenon/pineapple/blob/main/docs/PineappleFiberSpec.md"
33
- onclick={() => window.open("https://github.com/TurnipXenon/pineapple/blob/main/docs/PineappleFiberSpec.md")}>
34
- <img src={GithubIcon} alt="github icon">
35
- </button>
36
- </section>
37
- </div>
38
- </section>
39
- {/snippet}
40
- </Card>
@@ -1,7 +0,0 @@
1
- import { type EntryProps } from "./EntryProps";
2
- interface Props {
3
- props: EntryProps;
4
- }
5
- declare const CustomizedYarnspinner: import("svelte").Component<Props, {}, "">;
6
- type CustomizedYarnspinner = ReturnType<typeof CustomizedYarnspinner>;
7
- export default CustomizedYarnspinner;
@@ -1,16 +0,0 @@
1
- import type { SeaweedTemplateData } from "../SeaweedTemplateData";
2
- export declare enum DefaultHeader {
3
- Games = "Games",
4
- Projects = "Projects"
5
- }
6
- export interface EntryProps {
7
- email: string;
8
- letChaos: boolean;
9
- linkedinSlug: string;
10
- name: string;
11
- seaweedTemplateData: SeaweedTemplateData;
12
- }
13
- export interface GroupedEntry {
14
- header: string;
15
- entryList: EntryProps[];
16
- }
@@ -1,5 +0,0 @@
1
- export var DefaultHeader;
2
- (function (DefaultHeader) {
3
- DefaultHeader["Games"] = "Games";
4
- DefaultHeader["Projects"] = "Projects";
5
- })(DefaultHeader || (DefaultHeader = {}));
@@ -1,64 +0,0 @@
1
- <script lang="ts">
2
- import type { EntryProps } from "./EntryProps";
3
- import HeaderHepCat from "../../../assets/temp/header-hep-cat.mp4";
4
- import BitbucketIcon from "../../../assets/icons/bitbucket-icon.svg";
5
- import { ItchLogoHotLink } from "../../../consts";
6
- import Card from "../../../components/Card.svelte";
7
-
8
- interface Props {
9
- props: EntryProps;
10
- }
11
-
12
- let { props }: Props = $props();
13
- </script>
14
-
15
- <Card>
16
- {#snippet content()}
17
- <section class="game-card" >
18
- <!-- todo: move the image crop a bit lower -->
19
- <video playsinline autoplay muted loop preload="none" id="hepcat-video">
20
- <source src={HeaderHepCat} type="video/mp4">
21
- </video>
22
-
23
- <section class="game-card-body">
24
-
25
- <h1>Hepcat</h1>
26
-
27
- <blockquote>
28
- "Cats, Jazz, and a little bit of Death. What more could anyone ask for?"
29
- </blockquote>
30
-
31
-
32
- <p>This is a course project made by a team of six for <a
33
- href="https://sites.google.com/ualberta.ca/cmput250/">CMPUT 250</a>, and it won <a
34
- href="https://webdocs.cs.ualberta.ca/~nathanst/certificate/">Game of the year.</a>
35
- </p>
36
-
37
- <p>
38
- Hep Cat is a rhythm game made in <a
39
- href="https://www.rpgmakerweb.com/products/programs/rpg-maker-mv" target="_blank" class="qt-rpgmaker">
40
- RPG Maker MV</a> with the help of additional custom-made <span class="qt-js">Javascript</span> plugins. I
41
- wrote the rhythm game plugin's framework. For this plugin to work, I
42
- had to write a <span class="qt-python">Python</span> script that parses osu! files into readable JSON
43
- files.
44
- </p>
45
-
46
-
47
- <section class="game-link-section">
48
- <button type="button" class="game-button turnip-button"
49
- role="link"
50
- title="https://bitbucket.org/egginchicken/hep-cat/src/master/"
51
- onclick={()=> window.open("https://bitbucket.org/egginchicken/hep-cat/src/master/")}>
52
- <img alt="bitbucket icon" src={BitbucketIcon}>
53
- </button>
54
- <button type="button" class="game-button turnip-button"
55
- role="link"
56
- title="https://just-a-phantom.itch.io/hep-cat"
57
- onclick={()=> window.open("https://just-a-phantom.itch.io/hep-cat")}>
58
- <img alt="itch.io icon" src={ItchLogoHotLink}>
59
- </button>
60
- </section>
61
- </section>
62
- </section>
63
- {/snippet}
64
- </Card>
@@ -1,7 +0,0 @@
1
- import type { EntryProps } from "./EntryProps";
2
- interface Props {
3
- props: EntryProps;
4
- }
5
- declare const Hepcat: import("svelte").Component<Props, {}, "">;
6
- type Hepcat = ReturnType<typeof Hepcat>;
7
- export default Hepcat;