@turnipxenon/pineapple 5.2.2 → 5.3.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/icons/cursor-chat.svg +46 -0
- package/dist/assets/icons/cursor-open-in-new.svg +8 -0
- package/dist/assets/icons/icon-open-in-new.svg +1 -0
- package/dist/components/dialog_manager/DialogManager.d.ts +8 -2
- package/dist/components/dialog_manager/DialogManager.d.ts.map +1 -1
- package/dist/components/dialog_manager/DialogManager.js +63 -11
- package/dist/components/dialog_manager/DialogManagerStore.d.ts +0 -3
- package/dist/components/dialog_manager/DialogManagerStore.d.ts.map +1 -1
- package/dist/components/dialog_manager/DialogManagerStore.js +1 -3
- package/dist/components/dialog_manager/DialogProcessor.d.ts.map +1 -1
- package/dist/components/dialog_manager/DialogProcessor.js +3 -2
- package/dist/components/dialog_manager/DialogUtils.js +2 -2
- package/dist/components/dialog_manager/IDialogManager.d.ts +4 -2
- package/dist/components/dialog_manager/IDialogManager.d.ts.map +1 -1
- package/dist/components/dialog_manager/behavior_tree/core/BTreeUtils.d.ts +2 -1
- package/dist/components/dialog_manager/behavior_tree/core/BTreeUtils.d.ts.map +1 -1
- package/dist/components/dialog_manager/behavior_tree/core/BTreeUtils.js +4 -3
- package/dist/components/dialog_manager/behavior_tree/expression/ExpressionArguments.d.ts +2 -0
- package/dist/components/dialog_manager/behavior_tree/expression/ExpressionArguments.d.ts.map +1 -1
- package/dist/components/dialog_manager/behavior_tree/expression/ExpressionEvaluator.d.ts +4 -2
- package/dist/components/dialog_manager/behavior_tree/expression/ExpressionEvaluator.d.ts.map +1 -1
- package/dist/components/dialog_manager/behavior_tree/expression/ExpressionEvaluator.js +8 -6
- package/dist/components/dialog_manager/behavior_tree/expression/OperandNode.d.ts.map +1 -1
- package/dist/components/dialog_manager/behavior_tree/expression/OperandNode.js +1 -1
- package/dist/components/dialog_manager/behavior_tree/expression/commands/VisitedCountCommand.d.ts.map +1 -1
- package/dist/components/dialog_manager/behavior_tree/expression/commands/VisitedCountCommand.js +1 -2
- package/dist/components/dialog_manager/behavior_tree/line_core/LineNodeArguments.d.ts +2 -0
- package/dist/components/dialog_manager/behavior_tree/line_core/LineNodeArguments.d.ts.map +1 -1
- package/dist/components/dialog_manager/behavior_tree/line_processors/ElseIfNode.js +1 -1
- package/dist/components/dialog_manager/behavior_tree/line_processors/IfNode.d.ts.map +1 -1
- package/dist/components/dialog_manager/behavior_tree/line_processors/IfNode.js +1 -2
- package/dist/components/dialog_manager/behavior_tree/line_processors/NormalLineProcessorNode.d.ts.map +1 -1
- package/dist/components/dialog_manager/behavior_tree/line_processors/NormalLineProcessorNode.js +2 -3
- package/dist/components/dialog_manager/behavior_tree/line_processors/SetVariableNode.d.ts.map +1 -1
- package/dist/components/dialog_manager/behavior_tree/line_processors/SetVariableNode.js +2 -3
- package/dist/components/dialog_manager/behavior_tree/line_processors/commands/DeclareCommand.d.ts.map +1 -1
- package/dist/components/dialog_manager/behavior_tree/line_processors/commands/DeclareCommand.js +3 -2
- package/dist/components/dialog_manager/behavior_tree/line_processors/commands/JumpCommand.d.ts.map +1 -1
- package/dist/components/dialog_manager/behavior_tree/line_processors/commands/JumpCommand.js +3 -2
- package/dist/components/dialog_manager/behavior_tree/line_processors/commands/UnvisitCommand.d.ts.map +1 -1
- package/dist/components/dialog_manager/behavior_tree/line_processors/commands/UnvisitCommand.js +2 -3
- package/dist/modules/parsnip/ParsnipBlockChildren.svelte +3 -0
- package/dist/modules/parsnip/ParsnipBlockChildren.svelte.d.ts.map +1 -1
- package/dist/modules/parsnip/ParsnipPhrasingChildren.svelte +15 -3
- package/dist/modules/parsnip/ParsnipPhrasingChildren.svelte.d.ts.map +1 -1
- package/dist/modules/parsnip/external-images/ParsnipImage.svelte +111 -0
- package/dist/modules/parsnip/external-images/ParsnipImage.svelte.d.ts +9 -0
- package/dist/modules/parsnip/external-images/ParsnipImage.svelte.d.ts.map +1 -0
- package/dist/modules/parsnip/external-images/ParsnipImageCollection.svelte +62 -0
- package/dist/modules/parsnip/external-images/ParsnipImageCollection.svelte.d.ts +9 -0
- package/dist/modules/parsnip/external-images/ParsnipImageCollection.svelte.d.ts.map +1 -0
- package/dist/modules/parsnip/external-images/externalImages.remote.d.ts +8 -0
- package/dist/modules/parsnip/external-images/externalImages.remote.d.ts.map +1 -0
- package/dist/modules/parsnip/external-images/externalImages.remote.js +50 -0
- package/dist/modules/parsnip/route-util/ParsnipBlog.svelte +2 -1
- package/dist/modules/parsnip/route-util/ParsnipBlog.svelte.d.ts.map +1 -1
- package/dist/modules/parsnip/route-util/slugPageServerLoad.d.ts.map +1 -1
- package/dist/modules/parsnip/route-util/slugPageServerLoad.js +21 -0
- package/dist/scripts/pineapple_fiber/PineappleFiberParser.d.ts.map +1 -1
- package/dist/scripts/pineapple_fiber/PineappleFiberParser.js +19 -0
- package/dist/scripts/pineapple_fiber/TutorialBroken.yarn +143 -0
- package/dist/styles/app.css +30 -2
- package/dist/test/DialogTestUtility.d.ts +8 -0
- package/dist/test/DialogTestUtility.d.ts.map +1 -0
- package/dist/test/DialogTestUtility.js +62 -0
- package/dist/test/index.d.ts +3 -0
- package/dist/test/index.d.ts.map +1 -0
- package/dist/test/index.js +2 -0
- package/dist/types/pineapple_fiber/DialogDetail.d.ts +1 -0
- package/dist/types/pineapple_fiber/DialogDetail.d.ts.map +1 -1
- package/dist/types/pineapple_fiber/DialogVariableStore.d.ts.map +1 -1
- package/dist/types/pineapple_fiber/DialogVariableStore.js +41 -13
- package/dist/ui/elements/TextLink.svelte +1 -1
- package/dist/ui/elements/index.d.ts +1 -0
- package/dist/ui/elements/index.d.ts.map +1 -1
- package/dist/ui/elements/index.js +1 -0
- package/dist/ui/modules/NavigationMenu/NavigationControl.svelte +41 -10
- package/dist/ui/modules/NavigationMenu/NavigationControl.svelte.d.ts +3 -1
- package/dist/ui/modules/NavigationMenu/NavigationControl.svelte.d.ts.map +1 -1
- package/dist/ui/modules/NavigationMenu/NavigationMenu.svelte +131 -39
- package/dist/ui/modules/NavigationMenu/NavigationMenu.svelte.d.ts +3 -1
- package/dist/ui/modules/NavigationMenu/NavigationMenu.svelte.d.ts.map +1 -1
- package/dist/ui/modules/modals/general-settings/GeneralSettingsModal.svelte +21 -21
- package/dist/ui/modules/modals/general-settings/GeneralSettingsModal.svelte.d.ts +1 -1
- package/dist/ui/modules/modals/general-settings/GeneralSettingsModal.svelte.d.ts.map +1 -1
- package/dist/ui/modules/universal-overlay/DialogPanel.svelte +80 -6
- package/dist/ui/modules/universal-overlay/DialogPanel.svelte.d.ts.map +1 -1
- package/dist/ui/modules/universal-overlay/SettingsPanel.svelte +132 -75
- package/dist/ui/modules/universal-overlay/SettingsPanel.svelte.d.ts +4 -1
- package/dist/ui/modules/universal-overlay/SettingsPanel.svelte.d.ts.map +1 -1
- package/dist/ui/templates/SeaweedLayout/SeaweedLayout.svelte +0 -3
- package/dist/ui/templates/SeaweedLayout/SeaweedLayout.svelte.d.ts.map +1 -1
- package/dist/ui/templates/blog_template/BlogTemplate.svelte +7 -1
- package/dist/ui/templates/blog_template/BlogTemplateInner.svelte +33 -1
- package/dist/ui/templates/blog_template/BlogTemplateInner.svelte.d.ts.map +1 -1
- package/dist/ui/templates/index.d.ts +1 -0
- package/dist/ui/templates/index.d.ts.map +1 -1
- package/dist/ui/templates/index.js +2 -0
- package/dist/util/context/PineappleBaseContext.svelte +6 -2
- package/dist/util/context/PineappleBaseContext.svelte.d.ts.map +1 -1
- package/dist/util/context/pineappleBaseContextDefinitions.svelte.d.ts +2 -0
- package/dist/util/context/pineappleBaseContextDefinitions.svelte.d.ts.map +1 -1
- package/dist/util/context/pineappleBaseContextDefinitions.svelte.js +2 -0
- package/dist/util/localStore.svelte.d.ts +2 -0
- package/dist/util/localStore.svelte.d.ts.map +1 -1
- package/dist/util/localStore.svelte.js +2 -0
- package/dist/yarn/Tutorial.yarn +141 -0
- package/package.json +12 -7
- package/src/lib/styles/app.css +30 -2
- package/dist/assets/icons/chat-cursor.svg +0 -47
|
@@ -11,19 +11,24 @@ TODO: delete GeneralSettingsModal.svelte
|
|
|
11
11
|
import DarkIcon from "../../../assets/icons/icon-dark-mode.svg";
|
|
12
12
|
import LightIcon from "../../../assets/icons/icon-light-mode.svg";
|
|
13
13
|
import PineappleSwitch from "../../elements/PineappleSwitch.svelte";
|
|
14
|
+
import PinyaButton from "../../elements/PinyaButton/PinyaButton.svelte";
|
|
14
15
|
|
|
15
16
|
import LanguagePicker from "../modals/general-settings/LanguagePicker.svelte";
|
|
16
17
|
import { appState } from "../../templates/index";
|
|
17
18
|
import {
|
|
19
|
+
getAutoScrollPrefContext,
|
|
18
20
|
getEnableDialogPreferenceContext,
|
|
19
|
-
getEnablePortraitContext
|
|
21
|
+
getEnablePortraitContext,
|
|
22
|
+
getTextSpeedContext
|
|
20
23
|
} from "../../../util/context/pineappleBaseContextDefinitions.svelte";
|
|
21
24
|
import { setMode, userPrefersMode } from "mode-watcher";
|
|
25
|
+
import TutorialYarn from "../../../yarn/Tutorial.yarn?raw";
|
|
26
|
+
import { dialogManager } from "../../../components/dialog_manager/DialogManager";
|
|
22
27
|
|
|
23
28
|
interface ToggleItem {
|
|
24
|
-
key: "light" | "dark" | "system"
|
|
25
|
-
imageSrc: string
|
|
26
|
-
label: string
|
|
29
|
+
key: "light" | "dark" | "system";
|
|
30
|
+
imageSrc: string;
|
|
31
|
+
label: string;
|
|
27
32
|
}
|
|
28
33
|
|
|
29
34
|
const modes: ToggleItem[] = [
|
|
@@ -32,13 +37,15 @@ TODO: delete GeneralSettingsModal.svelte
|
|
|
32
37
|
{ key: "system", imageSrc: ConstrastIcon, label: "System" }
|
|
33
38
|
];
|
|
34
39
|
|
|
40
|
+
let { close = undefined }: { close?: () => void } = $props();
|
|
41
|
+
|
|
35
42
|
let selectedItem: ToggleItem = $state(modes[0]);
|
|
36
43
|
|
|
37
44
|
// when mode is edited outside, adjust toggle button
|
|
38
45
|
// do not use runes here because we only want explicit changes outside
|
|
39
46
|
// our control here!
|
|
40
47
|
userPrefersMode.subscribe((value) => {
|
|
41
|
-
const si = modes.find(m => m.key === value);
|
|
48
|
+
const si = modes.find((m) => m.key === value);
|
|
42
49
|
if (selectedItem !== si && si) {
|
|
43
50
|
selectedItem = si;
|
|
44
51
|
}
|
|
@@ -46,6 +53,29 @@ TODO: delete GeneralSettingsModal.svelte
|
|
|
46
53
|
|
|
47
54
|
let enableDialogPreference = getEnableDialogPreferenceContext();
|
|
48
55
|
let enablePortraitContext = getEnablePortraitContext();
|
|
56
|
+
let textSpeedContext = getTextSpeedContext();
|
|
57
|
+
let autoScrollPrefContext = getAutoScrollPrefContext();
|
|
58
|
+
|
|
59
|
+
let tutorialLoaded = $state(false);
|
|
60
|
+
const activateTutorial = () => {
|
|
61
|
+
const _tutorialLoaded = tutorialLoaded;
|
|
62
|
+
tutorialLoaded = false;
|
|
63
|
+
const currentDialogId = dialogManager.currentMessageMeta.dialogId;
|
|
64
|
+
if (currentDialogId && !currentDialogId.includes('Tutorial')) {
|
|
65
|
+
dialogManager.dialogVariableStore.setItem("$tutorialReturnAddress", currentDialogId);
|
|
66
|
+
}
|
|
67
|
+
if (!_tutorialLoaded) {
|
|
68
|
+
dialogManager.extendDialogTree(TutorialYarn, "TutorialStart").then(() => {
|
|
69
|
+
close?.();
|
|
70
|
+
dialogManager.enableDialog(true);
|
|
71
|
+
});
|
|
72
|
+
} else {
|
|
73
|
+
dialogManager.setDialogChoiceById("TutorialStart");
|
|
74
|
+
close?.();
|
|
75
|
+
dialogManager.enableDialog(true);
|
|
76
|
+
|
|
77
|
+
}
|
|
78
|
+
};
|
|
49
79
|
|
|
50
80
|
// when mode is changed inside the button, adjust the mode
|
|
51
81
|
$effect(() => {
|
|
@@ -74,18 +104,20 @@ TODO: delete GeneralSettingsModal.svelte
|
|
|
74
104
|
type="button"
|
|
75
105
|
title={mode.label}
|
|
76
106
|
class={`btn pt-3 pb-3 hover:brightness-125
|
|
77
|
-
${mode.key === selectedItem.key ?
|
|
107
|
+
${mode.key === selectedItem.key ? "selected bg-secondary-400 dark:bg-secondary-800" : "preset-outlined-primary-300-700"}
|
|
78
108
|
`}
|
|
79
|
-
onclick={() => {
|
|
109
|
+
onclick={() => {
|
|
110
|
+
setMode(mode.key);
|
|
111
|
+
}}
|
|
80
112
|
>
|
|
81
113
|
<img
|
|
82
114
|
src={mode.imageSrc}
|
|
83
115
|
aria-hidden="true"
|
|
84
116
|
alt=""
|
|
85
117
|
class={`icon
|
|
86
|
-
${mode.key === selectedItem.key ?
|
|
118
|
+
${mode.key === selectedItem.key ? "reverse" : ""}
|
|
87
119
|
`}
|
|
88
|
-
|
|
120
|
+
/>
|
|
89
121
|
<div>
|
|
90
122
|
{mode.label}
|
|
91
123
|
</div>
|
|
@@ -99,84 +131,109 @@ TODO: delete GeneralSettingsModal.svelte
|
|
|
99
131
|
{/if}
|
|
100
132
|
|
|
101
133
|
{#if appState.allowDialog}
|
|
134
|
+
<h3>Dialog or conversation</h3>
|
|
102
135
|
<div class="switch-default">
|
|
103
|
-
<PineappleSwitch
|
|
104
|
-
|
|
105
|
-
bind:checked={enableDialogPreference.value}>
|
|
106
|
-
</PineappleSwitch>
|
|
136
|
+
<PineappleSwitch name="conversation-preference" bind:checked={enableDialogPreference.value}
|
|
137
|
+
></PineappleSwitch>
|
|
107
138
|
<label for="conversation-preference">
|
|
108
139
|
Conversation preference: {enableDialogPreference.value ? "Always on" : "Always off"}
|
|
109
140
|
</label>
|
|
110
141
|
</div>
|
|
111
142
|
<div class="switch-default">
|
|
112
|
-
<PineappleSwitch
|
|
113
|
-
|
|
114
|
-
bind:checked={enablePortraitContext.value}>
|
|
115
|
-
</PineappleSwitch>
|
|
143
|
+
<PineappleSwitch name="portrait-preference" bind:checked={enablePortraitContext.value}
|
|
144
|
+
></PineappleSwitch>
|
|
116
145
|
<label for="portrait-preference">
|
|
117
146
|
Show conversation portrait: {enablePortraitContext.value ? "Always on" : "Always off"}
|
|
118
147
|
</label>
|
|
119
148
|
</div>
|
|
149
|
+
<div class="switch-default">
|
|
150
|
+
<PineappleSwitch name="auto-scroll-preference" bind:checked={autoScrollPrefContext.value}
|
|
151
|
+
></PineappleSwitch>
|
|
152
|
+
<label for="auto-scroll-preference">
|
|
153
|
+
Auto scroll conversations: {autoScrollPrefContext.value ? "On" : "Off"}
|
|
154
|
+
</label>
|
|
155
|
+
</div>
|
|
156
|
+
<div class="input-slider default-flex">
|
|
157
|
+
<label for="text-speed-input">Text speed {textSpeedContext.value}/10</label>
|
|
158
|
+
<input
|
|
159
|
+
bind:value={textSpeedContext.value}
|
|
160
|
+
id="text-speed-input"
|
|
161
|
+
type="range"
|
|
162
|
+
min="1"
|
|
163
|
+
max="10"
|
|
164
|
+
/>
|
|
165
|
+
</div>
|
|
166
|
+
<PinyaButton onclick={activateTutorial}><span>Initiate conversation tutorial</span></PinyaButton
|
|
167
|
+
>
|
|
120
168
|
{/if}
|
|
121
169
|
</div>
|
|
122
170
|
|
|
123
171
|
<style>
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
172
|
+
:global {
|
|
173
|
+
html {
|
|
174
|
+
--primary-btn-color-selected: var(--color-secondary-400);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
html.dark {
|
|
178
|
+
--primary-btn-color-selected: var(--color-secondary-800);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
.input-slider {
|
|
182
|
+
accent-color: var(--primary-btn-color-selected);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.actions {
|
|
187
|
+
display: flex;
|
|
188
|
+
flex-direction: row-reverse;
|
|
189
|
+
margin-top: 1.4lh;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
.wrapper {
|
|
193
|
+
display: flex;
|
|
194
|
+
flex-direction: column;
|
|
195
|
+
justify-content: start;
|
|
196
|
+
text-align: start;
|
|
197
|
+
gap: 1lh;
|
|
198
|
+
overflow-y: auto;
|
|
199
|
+
font-size: var(--text-base);
|
|
200
|
+
margin: 0.5lh 0;
|
|
201
|
+
padding-top: 0.5lh;
|
|
202
|
+
padding-bottom: 1.6lh;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
#dark-mode-fieldset {
|
|
206
|
+
legend {
|
|
207
|
+
background: transparent;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
#field-flex {
|
|
211
|
+
display: flex;
|
|
212
|
+
flex-wrap: wrap;
|
|
213
|
+
gap: 1rem;
|
|
214
|
+
padding: 0.25lh 1rem;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
button {
|
|
218
|
+
img {
|
|
219
|
+
filter: invert(80%);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
button.selected {
|
|
224
|
+
background-color: var(--primary-btn-color-selected);
|
|
225
|
+
|
|
226
|
+
img {
|
|
227
|
+
filter: unset;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
:global {
|
|
233
|
+
.switch-default {
|
|
234
|
+
display: flex;
|
|
235
|
+
justify-items: center;
|
|
236
|
+
gap: 1em;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
182
239
|
</style>
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
type $$ComponentProps = {
|
|
2
|
+
close?: () => void;
|
|
3
|
+
};
|
|
1
4
|
/**
|
|
2
5
|
* Layout and logic for Settings
|
|
3
6
|
*
|
|
4
7
|
* TODO: delete GeneralSettingsModal.svelte
|
|
5
8
|
*/
|
|
6
|
-
declare const SettingsPanel: import("svelte").Component
|
|
9
|
+
declare const SettingsPanel: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
7
10
|
type SettingsPanel = ReturnType<typeof SettingsPanel>;
|
|
8
11
|
export default SettingsPanel;
|
|
9
12
|
//# sourceMappingURL=SettingsPanel.svelte.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsPanel.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/modules/universal-overlay/SettingsPanel.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SettingsPanel.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/modules/universal-overlay/SettingsPanel.svelte.ts"],"names":[],"mappings":"AA2BC,KAAK,gBAAgB,GAAI;IAAE,KAAK,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC;AA6IjD;;;;GAIG;AACH,QAAA,MAAM,aAAa,sDAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
|
|
@@ -120,8 +120,6 @@
|
|
|
120
120
|
const filterSearchParams = (searchParams: URLSearchParams) => {
|
|
121
121
|
// region Order
|
|
122
122
|
const orderParam = searchParams.get("order")?.trim();
|
|
123
|
-
console.log(searchParams);
|
|
124
|
-
console.log(orderParam);
|
|
125
123
|
if (orderParam) {
|
|
126
124
|
actualLayout = [];
|
|
127
125
|
|
|
@@ -146,7 +144,6 @@
|
|
|
146
144
|
});
|
|
147
145
|
|
|
148
146
|
actualLayout = [...actualLayout];
|
|
149
|
-
console.log(actualLayout);
|
|
150
147
|
}
|
|
151
148
|
// endregion
|
|
152
149
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SeaweedLayout.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/templates/SeaweedLayout/SeaweedLayout.svelte.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAgB,kBAAkB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"SeaweedLayout.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/templates/SeaweedLayout/SeaweedLayout.svelte.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAgB,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAuThE,QAAA,MAAM,aAAa,wDAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
</BlogTemplateInner>
|
|
55
55
|
</div>
|
|
56
56
|
{:else}
|
|
57
|
-
<PinyaCard {includeDataNoSnippet} widthClass="
|
|
57
|
+
<PinyaCard {includeDataNoSnippet} widthClass="blog-template">
|
|
58
58
|
<BlogTemplateInner pageMeta={pageMeta}>
|
|
59
59
|
{@render children?.()}
|
|
60
60
|
</BlogTemplateInner>
|
|
@@ -68,4 +68,10 @@
|
|
|
68
68
|
padding-right: 2em;
|
|
69
69
|
padding-left: 2em;
|
|
70
70
|
}
|
|
71
|
+
|
|
72
|
+
:global(.blog-template) {
|
|
73
|
+
max-width: 64em;
|
|
74
|
+
width: 100%;
|
|
75
|
+
margin: auto;
|
|
76
|
+
}
|
|
71
77
|
</style>
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
<script lang="ts">
|
|
4
4
|
import type { SimplePageMeta } from "../../modules/NavigationMenu/index";
|
|
5
|
+
import { localizeHref } from "../../../external/paraglide/runtime.js";
|
|
5
6
|
|
|
6
7
|
interface Props {
|
|
7
8
|
pageMeta: SimplePageMeta;
|
|
@@ -9,6 +10,13 @@
|
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
let { pageMeta, children }: Props = $props();
|
|
13
|
+
|
|
14
|
+
const getTagQueryHref = (tag: string): string => {
|
|
15
|
+
const query = new URLSearchParams();
|
|
16
|
+
query.set("index", "0");
|
|
17
|
+
query.append("tags", tag);
|
|
18
|
+
return `${localizeHref("/pineapple/")}?${query.toString()}`;
|
|
19
|
+
};
|
|
12
20
|
</script>
|
|
13
21
|
|
|
14
22
|
<article>
|
|
@@ -26,7 +34,7 @@
|
|
|
26
34
|
<section id="article-tags">
|
|
27
35
|
Tags:
|
|
28
36
|
{#each pageMeta.tags as tag, index (index)}
|
|
29
|
-
<
|
|
37
|
+
<a class="badge tag-link" href={getTagQueryHref(tag)}>{tag}</a>
|
|
30
38
|
{/each}
|
|
31
39
|
</section>
|
|
32
40
|
{/if}
|
|
@@ -45,4 +53,28 @@
|
|
|
45
53
|
.badge {
|
|
46
54
|
margin-inline-end: 0.5em;
|
|
47
55
|
}
|
|
56
|
+
|
|
57
|
+
#article-tags a.badge {
|
|
58
|
+
text-decoration: none;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
#article-tags .tag-link {
|
|
62
|
+
display: inline-flex;
|
|
63
|
+
align-items: center;
|
|
64
|
+
border-radius: 0.5rem;
|
|
65
|
+
padding: 0.2rem 0.55rem;
|
|
66
|
+
border: 1px solid var(--color-surface-700-600);
|
|
67
|
+
background-color: transparent;
|
|
68
|
+
color: var(--color-surface-900-100);
|
|
69
|
+
transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
#article-tags .tag-link:hover,
|
|
73
|
+
#article-tags .tag-link:focus-visible {
|
|
74
|
+
background-color: transparent;
|
|
75
|
+
border-color: var(--color-primary-400-600);
|
|
76
|
+
color: var(--color-surface-900-100);
|
|
77
|
+
outline: none;
|
|
78
|
+
filter: brightness(110%);
|
|
79
|
+
}
|
|
48
80
|
</style>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlogTemplateInner.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/templates/blog_template/BlogTemplateInner.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"BlogTemplateInner.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/templates/blog_template/BlogTemplateInner.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAI1E,UAAU,KAAK;IACd,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,QAAQ,EAAE,OAAO,CAAC;CACpC;AAgDF,QAAA,MAAM,iBAAiB,2CAAwC,CAAC;AAChE,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,eAAe,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/ui/templates/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/ui/templates/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAErE,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,eAAO,MAAM,YAAY,QAAgB,CAAC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import _TutorialYarn from "$pkg/yarn/Tutorial.yarn?raw";
|
|
1
2
|
export { default as PinyaBase } from "./pinya-base/PinyaBase.svelte";
|
|
2
3
|
export * from "./PinyaPageLayout";
|
|
3
4
|
export * from "./SeaweedLayout";
|
|
4
5
|
export * from "./confirmation-modal";
|
|
6
|
+
export const TutorialYarn = _TutorialYarn;
|
|
@@ -2,11 +2,13 @@
|
|
|
2
2
|
import { enableUniversalOverlaySvelte4 } from "../..";
|
|
3
3
|
import { appState } from "../../ui/templates/index";
|
|
4
4
|
import {
|
|
5
|
+
setAutoScrollPrefContext,
|
|
5
6
|
setEnableDialogOverlayContext,
|
|
6
7
|
setEnableDialogPreferenceContext,
|
|
7
8
|
setEnablePortraitContext,
|
|
8
9
|
setIgnoreOverlayOverride,
|
|
9
|
-
setOverlayTypeContext
|
|
10
|
+
setOverlayTypeContext,
|
|
11
|
+
setTextSpeedContext
|
|
10
12
|
} from "./pineappleBaseContextDefinitions.svelte";
|
|
11
13
|
import { createLocalStore } from "../localStore.svelte";
|
|
12
14
|
import { onMount } from "svelte";
|
|
@@ -15,6 +17,8 @@
|
|
|
15
17
|
|
|
16
18
|
setEnablePortraitContext(createLocalStore("enable-portrait"));
|
|
17
19
|
setOverlayTypeContext(createLocalStore("overlay-type"));
|
|
20
|
+
setTextSpeedContext(createLocalStore("text-speed"));
|
|
21
|
+
setAutoScrollPrefContext(createLocalStore("auto-scroll-pref"));
|
|
18
22
|
|
|
19
23
|
/**
|
|
20
24
|
* how do we want to use this context???
|
|
@@ -30,7 +34,7 @@
|
|
|
30
34
|
* c.setValue
|
|
31
35
|
*/
|
|
32
36
|
|
|
33
|
-
|
|
37
|
+
// special logic since we would need to change the extensions for all the typescript code if we dont
|
|
34
38
|
const enableDialogPrefStore = createLocalStore("enable-dialog-preference");
|
|
35
39
|
setEnableDialogPreferenceContext(enableDialogPrefStore);
|
|
36
40
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PineappleBaseContext.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/util/context/PineappleBaseContext.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PineappleBaseContext.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/util/context/PineappleBaseContext.svelte.ts"],"names":[],"mappings":"AAqFA,QAAA,MAAM,oBAAoB;cA/D8B,GAAG;UA+DO,CAAC;AACnE,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACpE,eAAe,oBAAoB,CAAC"}
|
|
@@ -17,6 +17,8 @@ export declare const getIgnoreOverlayOverride: () => {
|
|
|
17
17
|
}) => {
|
|
18
18
|
value: boolean;
|
|
19
19
|
};
|
|
20
|
+
export declare const getTextSpeedContext: () => LocalStore<number>, setTextSpeedContext: (context: LocalStore<number>) => LocalStore<number>;
|
|
21
|
+
export declare const getAutoScrollPrefContext: () => LocalStore<boolean>, setAutoScrollPrefContext: (context: LocalStore<boolean>) => LocalStore<boolean>;
|
|
20
22
|
export declare const getSiteLayout: () => PageMeta[], setSiteLayout: (context: PageMeta[]) => PageMeta[];
|
|
21
23
|
/**
|
|
22
24
|
* useful for on-start dialog appearance
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pineappleBaseContextDefinitions.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/util/context/pineappleBaseContextDefinitions.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAE,MAAM,MAAM,CAAC;AACtF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAG9D,eAAO,MAAO,wBAAwB,6BAAE,wBAAwB,uDAAwC,CAAC;AACzG,eAAO,MAAO,gCAAgC,6BAAE,gCAAgC,uDAAwC,CAAC;AAIzH,eAAO,MAAO,6BAA6B;WAAyD,OAAO;GAA9D,6BAA6B;WAA0B,OAAO;;WAAP,OAAO;CAAI,CAAC;AAEhH,eAAO,MAAO,qBAAqB,iCAAE,qBAAqB,+DAA4C,CAAC;AACvG,eAAO,MAAO,wBAAwB;WAAqD,OAAO;GAA1D,wBAAwB;WAA2B,OAAO;;WAAP,OAAO;CAAK,CAAC;AACxG,eAAO,MAAO,aAAa,oBAAE,aAAa,qCAA+B,CAAC;AAE1E;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,OAAO,SAI5C,CAAA"}
|
|
1
|
+
{"version":3,"file":"pineappleBaseContextDefinitions.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/util/context/pineappleBaseContextDefinitions.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAE,MAAM,MAAM,CAAC;AACtF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAG9D,eAAO,MAAO,wBAAwB,6BAAE,wBAAwB,uDAAwC,CAAC;AACzG,eAAO,MAAO,gCAAgC,6BAAE,gCAAgC,uDAAwC,CAAC;AAIzH,eAAO,MAAO,6BAA6B;WAAyD,OAAO;GAA9D,6BAA6B;WAA0B,OAAO;;WAAP,OAAO;CAAI,CAAC;AAEhH,eAAO,MAAO,qBAAqB,iCAAE,qBAAqB,+DAA4C,CAAC;AACvG,eAAO,MAAO,wBAAwB;WAAqD,OAAO;GAA1D,wBAAwB;WAA2B,OAAO;;WAAP,OAAO;CAAK,CAAC;AACxG,eAAO,MAAO,mBAAmB,4BAAE,mBAAmB,qDAAuC,CAAC;AAC9F,eAAO,MAAO,wBAAwB,6BAAE,wBAAwB,uDAAwC,CAAC;AACzG,eAAO,MAAO,aAAa,oBAAE,aAAa,qCAA+B,CAAC;AAE1E;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,OAAO,SAI5C,CAAA"}
|
|
@@ -8,6 +8,8 @@ export const [getEnableDialogPreferenceContext, setEnableDialogPreferenceContext
|
|
|
8
8
|
export const [getEnableDialogOverlayContext, setEnableDialogOverlayContext] = createContext();
|
|
9
9
|
export const [getOverlayTypeContext, setOverlayTypeContext] = createContext();
|
|
10
10
|
export const [getIgnoreOverlayOverride, setIgnoreOverlayOverride] = createContext();
|
|
11
|
+
export const [getTextSpeedContext, setTextSpeedContext] = createContext();
|
|
12
|
+
export const [getAutoScrollPrefContext, setAutoScrollPrefContext] = createContext();
|
|
11
13
|
export const [getSiteLayout, setSiteLayout] = createContext();
|
|
12
14
|
/**
|
|
13
15
|
* useful for on-start dialog appearance
|
|
@@ -12,6 +12,8 @@ export interface LocalStoreRestriction {
|
|
|
12
12
|
"enable-portrait": boolean;
|
|
13
13
|
"enable-dialog-preference": boolean;
|
|
14
14
|
"overlay-type": OverlayType;
|
|
15
|
+
"text-speed": number;
|
|
16
|
+
"auto-scroll-pref": boolean;
|
|
15
17
|
}
|
|
16
18
|
export declare const createLocalStore: <k extends keyof LocalStoreRestriction>(key: k) => LocalStore<Readonly<LocalStoreRestriction>[k]>;
|
|
17
19
|
//# sourceMappingURL=localStore.svelte.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localStore.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/util/localStore.svelte.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAOxC,qBAAa,UAAU,CAAC,CAAC;IACxB,KAAK,EAAkB,CAAC,CAAC;IACzB,GAAG,SAAM;IACT,SAAS,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvG,YAAY,EAAE,CAAC,CAAC;gBAEJ,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IAmCxC,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM;IAQ3B,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC;CAc5B;AAED,MAAM,WAAW,qBAAqB;IACrC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,0BAA0B,EAAE,OAAO,CAAC;IACpC,cAAc,EAAE,WAAW,CAAC;CAC5B;
|
|
1
|
+
{"version":3,"file":"localStore.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/util/localStore.svelte.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAOxC,qBAAa,UAAU,CAAC,CAAC;IACxB,KAAK,EAAkB,CAAC,CAAC;IACzB,GAAG,SAAM;IACT,SAAS,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvG,YAAY,EAAE,CAAC,CAAC;gBAEJ,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IAmCxC,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM;IAQ3B,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC;CAc5B;AAED,MAAM,WAAW,qBAAqB;IACrC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,0BAA0B,EAAE,OAAO,CAAC;IACpC,cAAc,EAAE,WAAW,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,OAAO,CAAC;CAC5B;AAUD,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,MAAM,qBAAqB,EAAE,KAAK,CAAC,mDAE7E,CAAC"}
|
|
@@ -62,6 +62,8 @@ const localStoreDefault = {
|
|
|
62
62
|
"enable-portrait": true,
|
|
63
63
|
"enable-dialog-preference": true,
|
|
64
64
|
"overlay-type": 'dialog',
|
|
65
|
+
"text-speed": 9,
|
|
66
|
+
"auto-scroll-pref": true,
|
|
65
67
|
};
|
|
66
68
|
export const createLocalStore = (key) => {
|
|
67
69
|
return new LocalStore(key, localStoreDefault[key]);
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
title: TutorialSetup
|
|
2
|
+
position: 50,-152
|
|
3
|
+
---
|
|
4
|
+
Portrait: AresNeutral
|
|
5
|
+
<<declare $tutorialReturnAddress = "" as string>>
|
|
6
|
+
===
|
|
7
|
+
title: TutorialStart
|
|
8
|
+
position: 50,31
|
|
9
|
+
---
|
|
10
|
+
Portrait: AresHappy
|
|
11
|
+
<p><b>Hello!</b> If you're here, I'm assuming you want to learn more how to use <i>conversations</i>.
|
|
12
|
+
This is a <i>dialog box</i>.</p>
|
|
13
|
+
<p>Texts within <i>dialog boxes</i> are <i>scrollable</i> so please <i>scroll</i> if this text overflows.</p>
|
|
14
|
+
<p>Below are <i>choices</i> you can <i>click</i>. Please <b>click</b> them to see what the next dialogs look like.</p>
|
|
15
|
+
|
|
16
|
+
<choice Continue>Click me to proceed to the next dialog</choice>
|
|
17
|
+
<ChoiceBreak>
|
|
18
|
+
|
|
19
|
+
-> Continue
|
|
20
|
+
<<jump TutorialStart2>>
|
|
21
|
+
===
|
|
22
|
+
title: TutorialStart2
|
|
23
|
+
position: 51,244
|
|
24
|
+
---
|
|
25
|
+
Portrait: AresNeutral
|
|
26
|
+
<<unvisit TutorialChoiceA>>
|
|
27
|
+
<<unvisit TutorialChoiceB>>
|
|
28
|
+
<p>You can see that <i>choices</i> are indicated with this image <img src="/yarn/icon-chat.svg" alt="dialog-icon"/>.</p>
|
|
29
|
+
<p>Click any of the links that proceed the image <img src="/yarn/icon-chat.svg" alt="dialog-icon"/>.</p>
|
|
30
|
+
|
|
31
|
+
<choice TutorialChoiceA>Let's go to tutorial A</choice> | <choice TutorialChoiceB>Let's go to tutorial B</choice>
|
|
32
|
+
<ChoiceBreak>
|
|
33
|
+
|
|
34
|
+
-> TutorialChoiceA
|
|
35
|
+
<<jump TutorialChoiceA>>
|
|
36
|
+
-> TutorialChoiceB
|
|
37
|
+
<<jump TutorialChoiceB>>
|
|
38
|
+
===
|
|
39
|
+
title: TutorialChoiceA
|
|
40
|
+
position: 316,535
|
|
41
|
+
---
|
|
42
|
+
Portrait: AresHappy
|
|
43
|
+
<p>Click anywhere in the <i>dialog box</i> to instantly make the text appear. Sometimes, you may want to speed up the text.</p>
|
|
44
|
+
<p>This is <i>dialog</i> for choice A!</p>
|
|
45
|
+
<<if visited("TutorialChoiceB")>>
|
|
46
|
+
<choice TutorialMerge>Continue</choice>
|
|
47
|
+
<<else>>
|
|
48
|
+
<choice TutorialChoiceB>Continue</choice>
|
|
49
|
+
<<endif>>
|
|
50
|
+
<ChoiceBreak>
|
|
51
|
+
|
|
52
|
+
-> TutorialChoiceB
|
|
53
|
+
<<jump TutorialChoiceB>>
|
|
54
|
+
-> TutorialMerge
|
|
55
|
+
<<jump TutorialMerge>>
|
|
56
|
+
===
|
|
57
|
+
title: TutorialChoiceB
|
|
58
|
+
position: -191,497
|
|
59
|
+
---
|
|
60
|
+
Portrait: AresYay
|
|
61
|
+
<p>Welcome to Choice B!</p>
|
|
62
|
+
<p>Sometimes, I'll post links in the dialog. You'll see that <i>external links</i> are proceeded with this image <img src="/yarn/icon-open-in-new.svg" alt="external link icon"/>.</p>
|
|
63
|
+
<p>Clicking any of these <i>external links</i> will send you to a new tab with the link. You can <b>hover</b> on the link, and watch on the <i>bottom corner left of your browser</i> to see where the <i>external link</i> will lead you to.</p>
|
|
64
|
+
<p><a target="_blank" class="external-link" href="http://crouton.net">Check out this external link!</a></p>
|
|
65
|
+
<<if visited("TutorialChoiceA")>>
|
|
66
|
+
<choice TutorialMerge>Continue</choice>
|
|
67
|
+
<<else>>
|
|
68
|
+
<choice TutorialChoiceA>Continue</choice>
|
|
69
|
+
<<endif>>
|
|
70
|
+
<ChoiceBreak>
|
|
71
|
+
|
|
72
|
+
-> TutorialChoiceA
|
|
73
|
+
<<jump TutorialChoiceA>>
|
|
74
|
+
-> TutorialMerge
|
|
75
|
+
<<jump TutorialMerge>>
|
|
76
|
+
===
|
|
77
|
+
title: TutorialMerge
|
|
78
|
+
---
|
|
79
|
+
Portrait: AresSurprised
|
|
80
|
+
<p>Just like opportunities and <i>external links</i>, <choice Continue>choices</choice> can appear anywhere!</p>
|
|
81
|
+
<p>It can appear <choice Continue>here</choice>, <choice Continue>there</choice>, and <choice Continue>everywhere!</choice></p>
|
|
82
|
+
<ChoiceBreak>
|
|
83
|
+
|
|
84
|
+
-> Continue
|
|
85
|
+
<<jump TutorialChoicesResult>>
|
|
86
|
+
===
|
|
87
|
+
title: TutorialChoicesResult
|
|
88
|
+
---
|
|
89
|
+
Portrait: AresDisappointed
|
|
90
|
+
<p>Just like life, I've sadly given you an illusion of <i>choice</i> since all those <i>choices</i> only lead to one outcome.
|
|
91
|
+
<i>This particular dialog.</i></p>
|
|
92
|
+
<choice Continue>Anyways...</choice>
|
|
93
|
+
<ChoiceBreak>
|
|
94
|
+
|
|
95
|
+
-> Continue
|
|
96
|
+
<<jump TutorialSettings>>
|
|
97
|
+
===
|
|
98
|
+
title: TutorialSettings
|
|
99
|
+
---
|
|
100
|
+
Portrait: AresMad
|
|
101
|
+
<p>Feel free to check out the <i>Settings</i> menu by clicking the iconic <i>gear icon</i> on this dialog or on the top right of the page. You can...</p>
|
|
102
|
+
<ul>
|
|
103
|
+
<li>Keep this pesky <i>dialog box</i> away all the time!</li>
|
|
104
|
+
<li>Make the <i>portrait</i> of this ugly character disappear!</li>
|
|
105
|
+
<li>Make the <i>text speed</i> faster</li>
|
|
106
|
+
<li>Disable <i>auto scroll</i></li>
|
|
107
|
+
</ul>
|
|
108
|
+
<br>
|
|
109
|
+
<choice Continue>One last thing...</choice>
|
|
110
|
+
<ChoiceBreak>
|
|
111
|
+
|
|
112
|
+
-> Continue
|
|
113
|
+
<<jump TutorialDialogToggle>>
|
|
114
|
+
===
|
|
115
|
+
title: TutorialDialogToggle
|
|
116
|
+
---
|
|
117
|
+
Portrait: AresNeutral
|
|
118
|
+
<p>You can toggle (open or close) the dialog by clicking the <img src="/yarn/icon-chat.svg" alt="dialog-icon"/> icon at the top right,
|
|
119
|
+
or click the close button on this <i>dialog box</i>.</p>
|
|
120
|
+
<p>Try it out! You won't lose progress of our conversation.</p>
|
|
121
|
+
<choice Continue>And...</choice>
|
|
122
|
+
<ChoiceBreak>
|
|
123
|
+
|
|
124
|
+
-> Continue
|
|
125
|
+
<<jump TutorialEnd>>
|
|
126
|
+
===
|
|
127
|
+
title: TutorialEnd
|
|
128
|
+
---
|
|
129
|
+
Portrait: AresLetsGo
|
|
130
|
+
<p>And that covers everything you need to know. <b>^^</b></p>
|
|
131
|
+
<<if $tutorialReturnAddress != "">>
|
|
132
|
+
<choice Return>Return</choice> |
|
|
133
|
+
<<endif>>
|
|
134
|
+
<choice Redo>Redo tutorial</choice>
|
|
135
|
+
<ChoiceBreak>
|
|
136
|
+
|
|
137
|
+
-> Return
|
|
138
|
+
<<jump {$tutorialReturnAddress}>>
|
|
139
|
+
-> Redo
|
|
140
|
+
<<jump TutorialStart>>
|
|
141
|
+
===
|