@novely/core 0.36.0-beta.2 → 0.36.0-beta.3
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/index.d.ts +28 -7
- package/dist/index.global.js +42 -6
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +42 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -72,7 +72,7 @@ interface CharacterHandle {
|
|
|
72
72
|
emotion: (emotion: string, render: boolean) => void;
|
|
73
73
|
append: (className?: string, style?: string, restoring?: boolean) => void;
|
|
74
74
|
remove: (className?: string, style?: string, duration?: number, restoring?: boolean) => Promise<void>;
|
|
75
|
-
animate: (
|
|
75
|
+
animate: (classes: string[]) => void;
|
|
76
76
|
emotions: Record<string, HTMLImageElement[]>;
|
|
77
77
|
}
|
|
78
78
|
type CustomActionHandle = {
|
|
@@ -510,7 +510,7 @@ type ValidAction = ['choice', number] | ['clear', Set<keyof DefaultActionProxy>?
|
|
|
510
510
|
type Story = Record<string, ValidAction[]>;
|
|
511
511
|
type TextContent<L extends string, S extends State> = string | ((state: S) => string) | Record<L, string | ((state: S) => string)>;
|
|
512
512
|
type FunctionableValue<T> = T | (() => T);
|
|
513
|
-
type CustomHandlerGetResultDataFunction =
|
|
513
|
+
type CustomHandlerGetResultDataFunction = <T = Record<string, unknown>>(data?: T) => T;
|
|
514
514
|
type CustomHandlerGetResult<I extends boolean> = {
|
|
515
515
|
/**
|
|
516
516
|
* Element for the custom action to be rendered into
|
|
@@ -587,6 +587,10 @@ type CustomHandlerCalling = {
|
|
|
587
587
|
skipOnRestore?: (getNext: () => Exclude<ValidAction, ValidAction[]>[]) => boolean;
|
|
588
588
|
};
|
|
589
589
|
type CustomHandlerInfo = CustomHandlerCalling & {
|
|
590
|
+
/**
|
|
591
|
+
* Assets (pictures, audio files) used by action
|
|
592
|
+
*/
|
|
593
|
+
assets?: string[];
|
|
590
594
|
/**
|
|
591
595
|
* When true interacting with it will be saved in history
|
|
592
596
|
*/
|
|
@@ -597,10 +601,8 @@ type CustomHandlerInfo = CustomHandlerCalling & {
|
|
|
597
601
|
skipClearOnGoingBack?: boolean;
|
|
598
602
|
/**
|
|
599
603
|
* Id by which we will determine what action is which
|
|
600
|
-
*
|
|
601
|
-
* It IS recommended to pass this property as it will speed up that check and make it more reliable
|
|
602
604
|
*/
|
|
603
|
-
id
|
|
605
|
+
id: string | symbol;
|
|
604
606
|
/**
|
|
605
607
|
* Key by which we will save the data in the `get` function provided to custom action.
|
|
606
608
|
*
|
|
@@ -714,7 +716,7 @@ type ActionProxy<Characters extends Record<string, Character>, Languages extends
|
|
|
714
716
|
jump: (scene: string) => ValidAction;
|
|
715
717
|
showCharacter: <C extends keyof Characters>(character: C, emotion?: keyof Characters[C]['emotions'], className?: string, style?: string) => ValidAction;
|
|
716
718
|
hideCharacter: (character: keyof Characters, className?: string, style?: string, duration?: number) => ValidAction;
|
|
717
|
-
animateCharacter: (character: keyof Characters,
|
|
719
|
+
animateCharacter: (character: keyof Characters, classes: string) => ValidAction;
|
|
718
720
|
wait: (time: number | ((state: State) => number)) => ValidAction;
|
|
719
721
|
function: (fn: FunctionAction<Languages, S>) => ValidAction;
|
|
720
722
|
input: (question: TextContent<Languages, S>, onInput: (meta: ActionInputOnInputMeta<Languages, S>) => void, setup?: ActionInputSetup) => ValidAction;
|
|
@@ -729,6 +731,8 @@ type DefaultActionProxy = ActionProxy<Record<string, Character>, Lang, State>;
|
|
|
729
731
|
type GetActionParameters<T extends Capitalize<keyof DefaultActionProxy>> = Parameters<DefaultActionProxy[Uncapitalize<T>]>;
|
|
730
732
|
|
|
731
733
|
type ConditionParams<T> = T extends TypeEssentials<any, infer $State, any, any> ? $State : never;
|
|
734
|
+
type ChoiceParams<T> = T extends TypeEssentials<infer $Lang, infer $State, any, any> ? ChoiceCheckFunctionProps<$Lang, $State> : never;
|
|
735
|
+
type FunctionParams<T> = T extends TypeEssentials<infer $Lang, infer $State, any, any> ? FunctionActionProps<$Lang, $State> : never;
|
|
732
736
|
type InputHandler<T> = T extends TypeEssentials<infer $Lang, infer $State, any, any> ? ActionInputOnInputMeta<$Lang, $State> : never;
|
|
733
737
|
|
|
734
738
|
declare const novely: <$Language extends string, $Characters extends Record<string, Character<$Language>>, $State extends State, $Data extends Data, $Actions extends Record<string, (...args: any[]) => ValidAction>>({ characters, defaultEmotions, storage, storageDelay, renderer: createRenderer, initialScreen, translation, state: defaultState, data: defaultData, autosaves, migrations, throttleTimeout, getLanguage, overrideLanguage, askBeforeExit, preloadAssets, parallelAssetsDownloadLimit, fetch: request, saveOnUnload, startKey }: NovelyInit<$Language, $Characters, $State, $Data, $Actions>) => {
|
|
@@ -819,6 +823,23 @@ declare const novely: <$Language extends string, $Characters extends Record<stri
|
|
|
819
823
|
* ```
|
|
820
824
|
*/
|
|
821
825
|
getCurrentStorageData: () => StorageData<$Language, $Data> | null;
|
|
826
|
+
/**
|
|
827
|
+
* Function to set storage data. Using this function is not recommended.
|
|
828
|
+
*
|
|
829
|
+
* @deprecated
|
|
830
|
+
* @example
|
|
831
|
+
* ```ts
|
|
832
|
+
* const currentStorageData = engine.getCurrentStorageData();
|
|
833
|
+
*
|
|
834
|
+
* if (currentStorageData) {
|
|
835
|
+
* // update music volume
|
|
836
|
+
* currentStorageData.meta[2] = 1;
|
|
837
|
+
*
|
|
838
|
+
* setStorageData(currentStorageData)
|
|
839
|
+
* }
|
|
840
|
+
* ```
|
|
841
|
+
*/
|
|
842
|
+
setStorageData: (data: StorageData<$Language, $Data>) => void;
|
|
822
843
|
};
|
|
823
844
|
|
|
824
845
|
/**
|
|
@@ -836,4 +857,4 @@ declare const novely: <$Language extends string, $Characters extends Record<stri
|
|
|
836
857
|
*/
|
|
837
858
|
declare const extendAction: <Part0 extends Record<string, (...args: any[]) => ValidAction>, Part1 extends Record<string, (...args: any[]) => ValidAction>>(base: Part0, extension: Part1) => Readonly<Assign<Part0, Part1>>;
|
|
838
859
|
|
|
839
|
-
export { type ActionInputOnInputMeta, type ActionInputSetup, type ActionInputSetupCleanup, type ActionProxy, type AllowedContent, type AudioHandle, type BackgroundImage, type BaseTranslationStrings, type Character, type CharacterHandle, type ConditionParams, type Context, type CoreData, type CustomActionHandle, type CustomHandler, type CustomHandlerFunctionGetFn, type CustomHandlerFunctionParameters, type CustomHandlerGetResult, type CustomHandlerGetResultDataFunction, type Data, type DeepPartial, type DefaultActionProxy, EN, type Emotions, type FunctionableValue, type GetActionParameters, type InputHandler, JP, KK, type Lang, type NovelyInit, type NovelyScreen, type Path, type PluralType, type Pluralization, RU, type Renderer, type RendererInit, type Save, type Stack, type StackHolder, type State, type StateFunction, type Storage, type StorageData, type StorageMeta, type Stored, type Story, type TextContent, type Thenable, type TranslationActions, type TypeEssentials, type TypewriterSpeed, type ValidAction, extendAction, localStorageStorage, novely };
|
|
860
|
+
export { type ActionInputOnInputMeta, type ActionInputSetup, type ActionInputSetupCleanup, type ActionProxy, type AllowedContent, type AudioHandle, type BackgroundImage, type BaseTranslationStrings, type Character, type CharacterHandle, type ChoiceParams, type ConditionParams, type Context, type CoreData, type CustomActionHandle, type CustomHandler, type CustomHandlerFunctionGetFn, type CustomHandlerFunctionParameters, type CustomHandlerGetResult, type CustomHandlerGetResultDataFunction, type Data, type DeepPartial, type DefaultActionProxy, EN, type Emotions, type FunctionParams, type FunctionableValue, type GetActionParameters, type InputHandler, JP, KK, type Lang, type NovelyInit, type NovelyScreen, type Path, type PluralType, type Pluralization, RU, type Renderer, type RendererInit, type Save, type Stack, type StackHolder, type State, type StateFunction, type Storage, type StorageData, type StorageMeta, type Stored, type Story, type TextContent, type Thenable, type TranslationActions, type TypeEssentials, type TypewriterSpeed, type ValidAction, extendAction, localStorageStorage, novely };
|
package/dist/index.global.js
CHANGED
|
@@ -1156,6 +1156,7 @@ var Novely = (() => {
|
|
|
1156
1156
|
const ASSETS_TO_PRELOAD = /* @__PURE__ */ new Set();
|
|
1157
1157
|
const dataLoaded = createControlledPromise();
|
|
1158
1158
|
let initialScreenWasShown = false;
|
|
1159
|
+
let destroyed = false;
|
|
1159
1160
|
const intime = (value) => {
|
|
1160
1161
|
return times.add(value), value;
|
|
1161
1162
|
};
|
|
@@ -1185,6 +1186,8 @@ var Novely = (() => {
|
|
|
1185
1186
|
}
|
|
1186
1187
|
};
|
|
1187
1188
|
const scriptBase = async (part) => {
|
|
1189
|
+
if (destroyed)
|
|
1190
|
+
return;
|
|
1188
1191
|
Object.assign(story, flattenStory(part));
|
|
1189
1192
|
let loadingIsShown = false;
|
|
1190
1193
|
if (!initialScreenWasShown) {
|
|
@@ -1223,9 +1226,11 @@ var Novely = (() => {
|
|
|
1223
1226
|
assetsToPreloadAdd(value);
|
|
1224
1227
|
}
|
|
1225
1228
|
}
|
|
1229
|
+
return;
|
|
1226
1230
|
}
|
|
1227
1231
|
if (isAudioAction(action2) && isString(props[0])) {
|
|
1228
1232
|
assetsToPreloadAdd(props[0]);
|
|
1233
|
+
return;
|
|
1229
1234
|
}
|
|
1230
1235
|
if (action2 === "showCharacter" && isString(props[0]) && isString(props[1])) {
|
|
1231
1236
|
const images = characters[props[0]].emotions[props[1]];
|
|
@@ -1236,6 +1241,12 @@ var Novely = (() => {
|
|
|
1236
1241
|
} else {
|
|
1237
1242
|
assetsToPreloadAdd(images);
|
|
1238
1243
|
}
|
|
1244
|
+
return;
|
|
1245
|
+
}
|
|
1246
|
+
if (action2 === "custom" && props[0].assets && props[0].assets.length > 0) {
|
|
1247
|
+
for (const asset of props[0].assets) {
|
|
1248
|
+
assetsToPreloadAdd(asset);
|
|
1249
|
+
}
|
|
1239
1250
|
}
|
|
1240
1251
|
};
|
|
1241
1252
|
const action = new Proxy({}, {
|
|
@@ -1879,16 +1890,14 @@ var Novely = (() => {
|
|
|
1879
1890
|
next({ push }) {
|
|
1880
1891
|
push();
|
|
1881
1892
|
},
|
|
1882
|
-
animateCharacter({ ctx, push }, [character,
|
|
1893
|
+
animateCharacter({ ctx, push }, [character, className]) {
|
|
1894
|
+
const classes = className.split(" ");
|
|
1883
1895
|
if (DEV && classes.length === 0) {
|
|
1884
1896
|
throw new Error("Attempt to use AnimateCharacter without classes. Classes should be provided [https://novely.pages.dev/guide/actions/animateCharacter.html]");
|
|
1885
1897
|
}
|
|
1886
|
-
if (DEV && (timeout <= 0 || !Number.isFinite(timeout) || Number.isNaN(timeout))) {
|
|
1887
|
-
throw new Error("Attempt to use AnimateCharacter with unacceptable timeout. It should be finite and greater than zero");
|
|
1888
|
-
}
|
|
1889
1898
|
if (ctx.meta.preview)
|
|
1890
1899
|
return;
|
|
1891
|
-
ctx.character(character).animate(
|
|
1900
|
+
ctx.character(character).animate(classes);
|
|
1892
1901
|
push();
|
|
1893
1902
|
},
|
|
1894
1903
|
text({ ctx, data: data2, forward }, text) {
|
|
@@ -2002,6 +2011,15 @@ var Novely = (() => {
|
|
|
2002
2011
|
const getCurrentStorageData = () => {
|
|
2003
2012
|
return coreData.get().dataLoaded ? klona(storageData.get()) : null;
|
|
2004
2013
|
};
|
|
2014
|
+
const setStorageData = (data2) => {
|
|
2015
|
+
if (destroyed) {
|
|
2016
|
+
if (DEV) {
|
|
2017
|
+
throw new Error(`function \`setStorageData\` was called after novely instance was destroyed.`);
|
|
2018
|
+
}
|
|
2019
|
+
return;
|
|
2020
|
+
}
|
|
2021
|
+
storageData.set(data2);
|
|
2022
|
+
};
|
|
2005
2023
|
return {
|
|
2006
2024
|
/**
|
|
2007
2025
|
* Function to set game script
|
|
@@ -2086,6 +2104,7 @@ var Novely = (() => {
|
|
|
2086
2104
|
dataLoaded.cancel();
|
|
2087
2105
|
UIInstance.unmount();
|
|
2088
2106
|
unsubscribeFromBrowserVisibilityChange();
|
|
2107
|
+
destroyed = true;
|
|
2089
2108
|
},
|
|
2090
2109
|
/**
|
|
2091
2110
|
* Funtion to get current storage data
|
|
@@ -2095,7 +2114,24 @@ var Novely = (() => {
|
|
|
2095
2114
|
* const currentStorageData = engine.getCurrentStorageData();
|
|
2096
2115
|
* ```
|
|
2097
2116
|
*/
|
|
2098
|
-
getCurrentStorageData
|
|
2117
|
+
getCurrentStorageData,
|
|
2118
|
+
/**
|
|
2119
|
+
* Function to set storage data. Using this function is not recommended.
|
|
2120
|
+
*
|
|
2121
|
+
* @deprecated
|
|
2122
|
+
* @example
|
|
2123
|
+
* ```ts
|
|
2124
|
+
* const currentStorageData = engine.getCurrentStorageData();
|
|
2125
|
+
*
|
|
2126
|
+
* if (currentStorageData) {
|
|
2127
|
+
* // update music volume
|
|
2128
|
+
* currentStorageData.meta[2] = 1;
|
|
2129
|
+
*
|
|
2130
|
+
* setStorageData(currentStorageData)
|
|
2131
|
+
* }
|
|
2132
|
+
* ```
|
|
2133
|
+
*/
|
|
2134
|
+
setStorageData
|
|
2099
2135
|
};
|
|
2100
2136
|
};
|
|
2101
2137
|
|