narraleaf-studio 1.3.0 → 1.4.1
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/_api.d.ts +486 -45
- package/package.json +1 -1
package/dist/_api.d.ts
CHANGED
|
@@ -1775,6 +1775,38 @@ type BlueprintOpenExternalResult = {
|
|
|
1775
1775
|
};
|
|
1776
1776
|
type BlueprintGraphKind = "event" | "function" | "macro";
|
|
1777
1777
|
type GameBuildPlatform = "windows" | "macos" | "linux" | "web" | "android" | "ios";
|
|
1778
|
+
declare const UI_STRUCT_FIELD_TYPES: readonly [
|
|
1779
|
+
"string",
|
|
1780
|
+
"number",
|
|
1781
|
+
"boolean",
|
|
1782
|
+
"image",
|
|
1783
|
+
"color",
|
|
1784
|
+
"json"
|
|
1785
|
+
];
|
|
1786
|
+
type UIStructFieldType = (typeof UI_STRUCT_FIELD_TYPES)[number];
|
|
1787
|
+
type UIStructField = {
|
|
1788
|
+
/**
|
|
1789
|
+
* Stable identity. Value bindings, node params and generated pins all address a field by this,
|
|
1790
|
+
* so renaming `key` costs nothing and reshuffling the list costs nothing.
|
|
1791
|
+
*/
|
|
1792
|
+
id: string;
|
|
1793
|
+
/** The property name this field occupies inside an item object. */
|
|
1794
|
+
key: string;
|
|
1795
|
+
/**
|
|
1796
|
+
* What the author called it, shown in the item table header and in every field picker.
|
|
1797
|
+
*
|
|
1798
|
+
* Optional because `key` is usually already the readable name; a label is what lets a field
|
|
1799
|
+
* whose key has to stay ASCII (it travels in JSON to a plugin, a save file, a story variable)
|
|
1800
|
+
* still read as words in the editor.
|
|
1801
|
+
*/
|
|
1802
|
+
label?: string;
|
|
1803
|
+
type: UIStructFieldType;
|
|
1804
|
+
};
|
|
1805
|
+
type UIStructId = string;
|
|
1806
|
+
type UIStructDef = {
|
|
1807
|
+
id: UIStructId;
|
|
1808
|
+
fields: UIStructField[];
|
|
1809
|
+
};
|
|
1778
1810
|
type PluginPermissionPersistence = "temporary" | "permanent";
|
|
1779
1811
|
type PluginFileSystemPermissionMode = "read" | "write" | "readwrite";
|
|
1780
1812
|
/**
|
|
@@ -2245,6 +2277,33 @@ export type PluginContributes = {
|
|
|
2245
2277
|
* declaration only one of them made would be the half that drifts.
|
|
2246
2278
|
*/
|
|
2247
2279
|
widgetText?: Record<string, PluginWidgetTextContribution[]>;
|
|
2280
|
+
/**
|
|
2281
|
+
* The shapes of the rows this plugin's nodes hand out, so a list can be given one and a field
|
|
2282
|
+
* read from one by name.
|
|
2283
|
+
*
|
|
2284
|
+
* A node pin carrying them says `struct:<id>` or `array<struct:<id>>` - `Get Gallery` answers
|
|
2285
|
+
* `array<struct:narraleaf.gallery.entry>` - and from then on the plugin's rows are what the
|
|
2286
|
+
* engine's own are: a list picks the shape under Edit content and its fields are the plugin's
|
|
2287
|
+
* and locked, Get Field offers them, and a list handed rows that lack them is reported.
|
|
2288
|
+
*
|
|
2289
|
+
* Declared in the manifest rather than at registration because the editor, the running game and
|
|
2290
|
+
* the command-line checker all need the shape, and only the manifest is read by all three before
|
|
2291
|
+
* any plugin code runs. Ids must start with the plugin id.
|
|
2292
|
+
*/
|
|
2293
|
+
structs?: PluginStructContribution[];
|
|
2294
|
+
};
|
|
2295
|
+
type PluginStructContribution = {
|
|
2296
|
+
/** Prefixed with the plugin id: `narraleaf.gallery.entry`. */
|
|
2297
|
+
id: string;
|
|
2298
|
+
/** What the editor calls the shape - "Gallery entry". */
|
|
2299
|
+
name: string;
|
|
2300
|
+
/** `name` per editor locale, matched exactly as `localized` names are. */
|
|
2301
|
+
localized?: Record<string, string>;
|
|
2302
|
+
/** In the order the rows are read: the list's content editor shows them in this order. */
|
|
2303
|
+
fields: {
|
|
2304
|
+
key: string;
|
|
2305
|
+
type: UIStructFieldType;
|
|
2306
|
+
}[];
|
|
2248
2307
|
};
|
|
2249
2308
|
/**
|
|
2250
2309
|
* One prop of a contributed widget whose value is words a player reads.
|
|
@@ -2558,6 +2617,9 @@ type UIInputBinding = {
|
|
|
2558
2617
|
} | {
|
|
2559
2618
|
kind: "key";
|
|
2560
2619
|
key: string;
|
|
2620
|
+
} | {
|
|
2621
|
+
kind: "gamepad";
|
|
2622
|
+
button: string;
|
|
2561
2623
|
};
|
|
2562
2624
|
type UIInputActionDef = {
|
|
2563
2625
|
id: string;
|
|
@@ -2610,38 +2672,6 @@ type UIPageAnimationSettings = {
|
|
|
2610
2672
|
/** Surfaces only: hold the incoming Page until this exit has finished. */
|
|
2611
2673
|
exitBlocking: boolean;
|
|
2612
2674
|
};
|
|
2613
|
-
declare const UI_STRUCT_FIELD_TYPES: readonly [
|
|
2614
|
-
"string",
|
|
2615
|
-
"number",
|
|
2616
|
-
"boolean",
|
|
2617
|
-
"image",
|
|
2618
|
-
"color",
|
|
2619
|
-
"json"
|
|
2620
|
-
];
|
|
2621
|
-
type UIStructFieldType = (typeof UI_STRUCT_FIELD_TYPES)[number];
|
|
2622
|
-
type UIStructField = {
|
|
2623
|
-
/**
|
|
2624
|
-
* Stable identity. Value bindings, node params and generated pins all address a field by this,
|
|
2625
|
-
* so renaming `key` costs nothing and reshuffling the list costs nothing.
|
|
2626
|
-
*/
|
|
2627
|
-
id: string;
|
|
2628
|
-
/** The property name this field occupies inside an item object. */
|
|
2629
|
-
key: string;
|
|
2630
|
-
/**
|
|
2631
|
-
* What the author called it, shown in the item table header and in every field picker.
|
|
2632
|
-
*
|
|
2633
|
-
* Optional because `key` is usually already the readable name; a label is what lets a field
|
|
2634
|
-
* whose key has to stay ASCII (it travels in JSON to a plugin, a save file, a story variable)
|
|
2635
|
-
* still read as words in the editor.
|
|
2636
|
-
*/
|
|
2637
|
-
label?: string;
|
|
2638
|
-
type: UIStructFieldType;
|
|
2639
|
-
};
|
|
2640
|
-
type UIStructId = string;
|
|
2641
|
-
type UIStructDef = {
|
|
2642
|
-
id: UIStructId;
|
|
2643
|
-
fields: UIStructField[];
|
|
2644
|
-
};
|
|
2645
2675
|
type UISurfaceBackgroundFillMode = "cover" | "contain" | "stretch" | "tile";
|
|
2646
2676
|
type UISurfaceBackgroundImage = {
|
|
2647
2677
|
/** Image library asset id. Absent background = absent field, so this is never empty. */
|
|
@@ -2725,7 +2755,27 @@ type UIAppSurface = {
|
|
|
2725
2755
|
* whether what it just did leaves anything for the surface behind to do.
|
|
2726
2756
|
*/
|
|
2727
2757
|
actions?: UISurfaceActionEnablement[];
|
|
2758
|
+
/** The values this page is opened with, in author order. See {@link UIPageParam}. */
|
|
2759
|
+
params?: UIPageParam[];
|
|
2760
|
+
};
|
|
2761
|
+
type UIPageParam = {
|
|
2762
|
+
id: string;
|
|
2763
|
+
name: string;
|
|
2764
|
+
type: UIPageParamType;
|
|
2765
|
+
/**
|
|
2766
|
+
* For a `list`: the shape each row has, as a struct id (an engine shape such as `nl.confirmButton`,
|
|
2767
|
+
* a plugin's, or one of the project's). It types the value on both ends - the inputs that give it
|
|
2768
|
+
* and `Get Page Param` - and a list on the page bound to it is checked against it. Absent for
|
|
2769
|
+
* every other type, and for a list of rows of no declared shape.
|
|
2770
|
+
*/
|
|
2771
|
+
struct?: string;
|
|
2772
|
+
/**
|
|
2773
|
+
* What the page reads when whoever opened it gave nothing for this name, in the declared type.
|
|
2774
|
+
* Absent reads as the type's empty value (`uiPageParamDefaultValue`).
|
|
2775
|
+
*/
|
|
2776
|
+
defaultValue?: unknown;
|
|
2728
2777
|
};
|
|
2778
|
+
type UIPageParamType = "string" | "text" | "number" | "boolean" | "list" | "json";
|
|
2729
2779
|
type UIStageSurface = {
|
|
2730
2780
|
id: UISurfaceId;
|
|
2731
2781
|
name: string;
|
|
@@ -2866,6 +2916,20 @@ type UIElementValueBinding = {
|
|
|
2866
2916
|
| {
|
|
2867
2917
|
kind: "componentParam";
|
|
2868
2918
|
paramId: string;
|
|
2919
|
+
}
|
|
2920
|
+
/**
|
|
2921
|
+
* Show the value the page this element is on was opened with for one of its text parameters.
|
|
2922
|
+
*
|
|
2923
|
+
* The page's counterpart of `componentParam`, read the same way: no graph - the value is taken from
|
|
2924
|
+
* the props the page was opened with (`resolveUIPageTextParams`), words given at the opening shown
|
|
2925
|
+
* as given, the declared default translated through the page's own unit. Only a text parameter
|
|
2926
|
+
* answers one, only a widget's words take one, and only on a page: a component's insides and a
|
|
2927
|
+
* Game UI have no page parameters to show. The editing canvas, where the page has not been opened,
|
|
2928
|
+
* draws the default, or the element's own words as sample text while the default is empty.
|
|
2929
|
+
*/
|
|
2930
|
+
| {
|
|
2931
|
+
kind: "pageParam";
|
|
2932
|
+
paramId: string;
|
|
2869
2933
|
};
|
|
2870
2934
|
type UILayout = {
|
|
2871
2935
|
x: number;
|
|
@@ -3402,6 +3466,10 @@ declare const en: {
|
|
|
3402
3466
|
readonly downloadRewrites: {
|
|
3403
3467
|
readonly label: "Download address rewrites";
|
|
3404
3468
|
};
|
|
3469
|
+
readonly useSystemProxy: {
|
|
3470
|
+
readonly label: "Use this computer's proxy";
|
|
3471
|
+
readonly description: "Studio downloads follow the proxy this computer already uses.";
|
|
3472
|
+
};
|
|
3405
3473
|
readonly pluginRegistryUrl: {
|
|
3406
3474
|
readonly label: "Plugin registry URL";
|
|
3407
3475
|
readonly description: "Where the plugin store looks for its index.";
|
|
@@ -4321,6 +4389,7 @@ declare const en: {
|
|
|
4321
4389
|
readonly panelRenderError: "This panel hit a rendering error";
|
|
4322
4390
|
readonly mainEditorRegion: "Main editor";
|
|
4323
4391
|
readonly resizeSplit: "Resize split";
|
|
4392
|
+
readonly resizeSections: "Resize sections";
|
|
4324
4393
|
readonly noActiveEditor: "No active editor";
|
|
4325
4394
|
readonly closePanel: "Close panel";
|
|
4326
4395
|
readonly closeTab: "Close {name}";
|
|
@@ -4897,6 +4966,15 @@ declare const en: {
|
|
|
4897
4966
|
readonly alignBottom: "Align bottom";
|
|
4898
4967
|
readonly distributeHorizontal: "Distribute horizontally";
|
|
4899
4968
|
readonly distributeVertical: "Distribute vertically";
|
|
4969
|
+
readonly nudgeLeft: "Move left 1 px";
|
|
4970
|
+
readonly nudgeRight: "Move right 1 px";
|
|
4971
|
+
readonly nudgeUp: "Move up 1 px";
|
|
4972
|
+
readonly nudgeDown: "Move down 1 px";
|
|
4973
|
+
readonly nudgeLeftLarge: "Move left 10 px";
|
|
4974
|
+
readonly nudgeRightLarge: "Move right 10 px";
|
|
4975
|
+
readonly nudgeUpLarge: "Move up 10 px";
|
|
4976
|
+
readonly nudgeDownLarge: "Move down 10 px";
|
|
4977
|
+
readonly snapToGrid: "Snap to grid";
|
|
4900
4978
|
};
|
|
4901
4979
|
readonly blueprint: {
|
|
4902
4980
|
readonly undo: "Undo";
|
|
@@ -5405,6 +5483,8 @@ declare const en: {
|
|
|
5405
5483
|
readonly forkCondition: "Condition";
|
|
5406
5484
|
readonly fallsThrough: "continues";
|
|
5407
5485
|
readonly fallsThroughTitle: "No jump of its own; the scene continues past the fork";
|
|
5486
|
+
readonly ends: "ends";
|
|
5487
|
+
readonly endsTitle: "The story ends in this branch: {names}";
|
|
5408
5488
|
readonly forkCount: {
|
|
5409
5489
|
readonly one: "{count} branch";
|
|
5410
5490
|
readonly other: "{count} branches";
|
|
@@ -5868,6 +5948,15 @@ declare const en: {
|
|
|
5868
5948
|
readonly appliesTo: "Also filed under";
|
|
5869
5949
|
readonly star: "Star";
|
|
5870
5950
|
readonly unstar: "Unstar";
|
|
5951
|
+
readonly abbreviations: "Your abbreviations";
|
|
5952
|
+
readonly addAbbreviation: "Add abbreviation";
|
|
5953
|
+
readonly removeAbbreviation: "Remove {word}";
|
|
5954
|
+
readonly abbreviationPlaceholder: "Abbreviation";
|
|
5955
|
+
readonly abbreviationSpace: "An abbreviation cannot contain spaces.";
|
|
5956
|
+
readonly abbreviationCharacter: "Quotes, =, /, @ and # cannot be used.";
|
|
5957
|
+
readonly abbreviationBuiltIn: "Already a spelling of {command}.";
|
|
5958
|
+
readonly abbreviationTaken: "Already your abbreviation for {command}.";
|
|
5959
|
+
readonly abbreviationShadowed: "Now a spelling of {command}. This abbreviation has no effect.";
|
|
5871
5960
|
readonly type: {
|
|
5872
5961
|
readonly image: "Image asset";
|
|
5873
5962
|
readonly audio: "Audio asset";
|
|
@@ -5995,7 +6084,7 @@ declare const en: {
|
|
|
5995
6084
|
readonly openPreview: "Open live preview";
|
|
5996
6085
|
readonly closePreview: "Close live preview";
|
|
5997
6086
|
readonly title: "Live Preview";
|
|
5998
|
-
readonly dock: "Dock
|
|
6087
|
+
readonly dock: "Dock in the scene editor";
|
|
5999
6088
|
readonly pip: "Picture-in-picture";
|
|
6000
6089
|
readonly selectRow: "Select a story row to preview its stage state.";
|
|
6001
6090
|
readonly failed: "Preview failed";
|
|
@@ -7973,6 +8062,25 @@ declare const en: {
|
|
|
7973
8062
|
readonly targetTooltip: "Target: {label} ({type})";
|
|
7974
8063
|
readonly fromPin: "Create from pin";
|
|
7975
8064
|
readonly connectEmpty: "No nodes can connect to this pin.";
|
|
8065
|
+
readonly fieldsCategory: "Fields";
|
|
8066
|
+
readonly readField: "Get {field}";
|
|
8067
|
+
readonly filterByField: "Filter by {field}";
|
|
8068
|
+
readonly sortByField: "Sort by {field}";
|
|
8069
|
+
readonly findByField: "Find by {field}";
|
|
8070
|
+
};
|
|
8071
|
+
readonly struct: {
|
|
8072
|
+
readonly any: "Struct";
|
|
8073
|
+
readonly listRow: "List row";
|
|
8074
|
+
readonly arrayOf: "{name} list";
|
|
8075
|
+
readonly choiceItem: "Choice";
|
|
8076
|
+
readonly notificationItem: "Notification";
|
|
8077
|
+
readonly nvlItem: "NVL line";
|
|
8078
|
+
readonly historyEntry: "History entry";
|
|
8079
|
+
readonly saveEntry: "Save entry";
|
|
8080
|
+
readonly confirmButton: "Confirm button";
|
|
8081
|
+
readonly ending: "Ending";
|
|
8082
|
+
readonly language: "Language";
|
|
8083
|
+
readonly voiceLanguage: "Voice language";
|
|
7976
8084
|
};
|
|
7977
8085
|
readonly diagnostics: {
|
|
7978
8086
|
readonly empty: "No diagnostics.";
|
|
@@ -7991,7 +8099,7 @@ declare const en: {
|
|
|
7991
8099
|
};
|
|
7992
8100
|
readonly interaction: {
|
|
7993
8101
|
readonly hiddenEvents: "Element \u201C{name}\u201D is not visible but still has interaction bindings";
|
|
7994
|
-
readonly hiddenEventsHint: "Remove the events,
|
|
8102
|
+
readonly hiddenEventsHint: "Remove the events, make the element visible, or show it from a blueprint. A hidden element receives no input.";
|
|
7995
8103
|
readonly opaqueEvents: "Element \u201C{name}\u201D is nearly invisible (opacity) but has interaction bindings";
|
|
7996
8104
|
readonly opaqueEventsHint: "Players may not see this control. Check it in Dev Mode.";
|
|
7997
8105
|
readonly smallHit: "Element \u201C{name}\u201D has a small hit area with interactions";
|
|
@@ -8052,6 +8160,11 @@ declare const en: {
|
|
|
8052
8160
|
readonly variableIdInvalid: "Node \"{node}\": pick a variable.";
|
|
8053
8161
|
readonly persistentVariableIdInvalid: "Node \"{node}\": pick a persistent variable.";
|
|
8054
8162
|
readonly savedVariableIdInvalid: "Node \"{node}\": pick a saved variable.";
|
|
8163
|
+
readonly fieldMissing: "\"{node}\": {struct} has no field \"{field}\".";
|
|
8164
|
+
readonly fieldUnpicked: "Node \"{node}\": pick a field.";
|
|
8165
|
+
readonly keyNotAField: "\"{node}\": {struct} has no field \"{key}\". No item matches.";
|
|
8166
|
+
readonly listShapeMismatch: "\"{node}\": {struct} does not match this list's fields. Fields that differ show empty.";
|
|
8167
|
+
readonly pageParamMissing: "\"{node}\": the page does not declare this param.";
|
|
8055
8168
|
};
|
|
8056
8169
|
readonly fn: {
|
|
8057
8170
|
readonly nameMissing: "Fn \"{node}\": set a function name.";
|
|
@@ -8324,6 +8437,7 @@ declare const en: {
|
|
|
8324
8437
|
readonly editValue: "Edit value on card";
|
|
8325
8438
|
readonly removeOutput: "Remove output pin";
|
|
8326
8439
|
readonly jsonFieldName: "JSON object field name";
|
|
8440
|
+
readonly readsRow: "Current row";
|
|
8327
8441
|
};
|
|
8328
8442
|
readonly comment: {
|
|
8329
8443
|
readonly color: {
|
|
@@ -8416,6 +8530,7 @@ declare const en: {
|
|
|
8416
8530
|
readonly missingCharacter: "Missing character";
|
|
8417
8531
|
readonly unnamedInputAction: "Unnamed action";
|
|
8418
8532
|
readonly missingInputAction: "Missing action";
|
|
8533
|
+
readonly missingField: "Missing field \u201C{field}\u201D";
|
|
8419
8534
|
};
|
|
8420
8535
|
readonly script: {
|
|
8421
8536
|
readonly fileLabel: "Script file";
|
|
@@ -8646,6 +8761,8 @@ declare const en: {
|
|
|
8646
8761
|
readonly height: "Height";
|
|
8647
8762
|
readonly held: "Held";
|
|
8648
8763
|
readonly device: "Device";
|
|
8764
|
+
readonly connected: "Connected";
|
|
8765
|
+
readonly axis: "Axis";
|
|
8649
8766
|
readonly hide: "Hide";
|
|
8650
8767
|
readonly holdFinalValue: "Hold final value";
|
|
8651
8768
|
readonly id: "Id";
|
|
@@ -8717,6 +8834,7 @@ declare const en: {
|
|
|
8717
8834
|
readonly page: "Page";
|
|
8718
8835
|
readonly pageProps: "Page props";
|
|
8719
8836
|
readonly param: "Param";
|
|
8837
|
+
readonly parameter: "Parameter";
|
|
8720
8838
|
readonly persistent: "Persistent";
|
|
8721
8839
|
readonly pointer: "Pointer";
|
|
8722
8840
|
readonly center: "Center";
|
|
@@ -9076,7 +9194,7 @@ declare const en: {
|
|
|
9076
9194
|
readonly getLineHeight: "Get Line Height";
|
|
9077
9195
|
readonly findItemByField: "Find Item By Field";
|
|
9078
9196
|
readonly getItemAt: "Get Item At";
|
|
9079
|
-
readonly
|
|
9197
|
+
readonly getField: "Get Field";
|
|
9080
9198
|
readonly getListContent: "Get List Content";
|
|
9081
9199
|
readonly getListLength: "Get List Length";
|
|
9082
9200
|
readonly setItemFieldAt: "Set Item Field At";
|
|
@@ -9138,6 +9256,9 @@ declare const en: {
|
|
|
9138
9256
|
readonly isLayerMounted: "Is Layer Mounted";
|
|
9139
9257
|
readonly isActionHeld: "Is Action Held";
|
|
9140
9258
|
readonly getInputDevice: "Get Input Device";
|
|
9259
|
+
readonly isGamepadConnected: "Is Gamepad Connected";
|
|
9260
|
+
readonly isGamepadButtonHeld: "Is Gamepad Button Held";
|
|
9261
|
+
readonly getGamepadAxis: "Get Gamepad Axis";
|
|
9141
9262
|
readonly showConfirm: "Show Confirm";
|
|
9142
9263
|
readonly memo: "Memo";
|
|
9143
9264
|
readonly clearPage: "Clear Page";
|
|
@@ -9236,6 +9357,10 @@ declare const en: {
|
|
|
9236
9357
|
readonly onAction: "On Action";
|
|
9237
9358
|
readonly onKeyDown: "On Key Down";
|
|
9238
9359
|
readonly onKeyUp: "On Key Up";
|
|
9360
|
+
readonly onGamepadButtonDown: "On Gamepad Button Down";
|
|
9361
|
+
readonly onGamepadButtonUp: "On Gamepad Button Up";
|
|
9362
|
+
readonly anyGamepadButtonDown: "Any Gamepad Button Down";
|
|
9363
|
+
readonly anyGamepadButtonUp: "Any Gamepad Button Up";
|
|
9239
9364
|
readonly onPreferenceChanged: "On Preference Changed";
|
|
9240
9365
|
readonly openLink: "Open Link";
|
|
9241
9366
|
readonly openScreenshotsFolder: "Open Screenshots Folder";
|
|
@@ -9386,6 +9511,7 @@ declare const en: {
|
|
|
9386
9511
|
};
|
|
9387
9512
|
readonly nodeDescription: {
|
|
9388
9513
|
readonly getComponentParam: "The value this placement sets for the chosen parameter, or the parameter's default when it sets none. A Text parameter that reads from a translation key gives the key's name; Translation Key Text gives its words.";
|
|
9514
|
+
readonly getPageParam: "The value the page was opened with for the chosen param, or the param's default when it was given none. Params are declared in the page's properties.";
|
|
9389
9515
|
readonly compareEqual: "True when A and B are the same value of the same type. The number 1 and the text \"1\" are not equal.";
|
|
9390
9516
|
readonly compareNotEqual: "True when A and B differ in value or in type. The number 1 and the text \"1\" count as different.";
|
|
9391
9517
|
readonly compareGreaterThan: "True when A is greater than B. Both sides are compared as numbers; a side that cannot be read as a number gives false.";
|
|
@@ -9405,6 +9531,7 @@ declare const en: {
|
|
|
9405
9531
|
readonly translationKeyText: "A translation key's text in the player's current language, or its source text when that language has no translation. A key that does not exist gives its name. The same text as Get Text, and also usable in Blueprint Value and functions. A Blueprint Value that shows it updates when the player changes language.";
|
|
9406
9532
|
readonly format: "Replaces the placeholders in Template with values: {0}, {1} and so on with the items of an array, {name} with the field of that name in an object. A placeholder with no value becomes empty. A translated template comes from Translation Key Text.";
|
|
9407
9533
|
readonly formatText: "Replaces {0}, {1} and so on in Text with the items of Values. Format does the same, also fills {name} from an object, and can be used in Blueprint Value and functions.";
|
|
9534
|
+
readonly getField: "One field of the struct wired into Object, picked from that struct's fields. Inside a list row, leave Object unwired to read the row. Use Get JSON Field for an object whose fields are not declared.";
|
|
9408
9535
|
};
|
|
9409
9536
|
readonly live: {
|
|
9410
9537
|
readonly nodeClaimed: "{name} is editing this node";
|
|
@@ -9816,6 +9943,27 @@ declare const en: {
|
|
|
9816
9943
|
readonly bindNone: "No parameter";
|
|
9817
9944
|
readonly bindMissing: "Missing parameter";
|
|
9818
9945
|
};
|
|
9946
|
+
readonly pageParams: {
|
|
9947
|
+
readonly title: "Params";
|
|
9948
|
+
readonly none: "No params";
|
|
9949
|
+
readonly hint: "Given by whatever opens this page. A text param can be shown by a text directly; read the others with Get Page Param.";
|
|
9950
|
+
readonly rowShape: "Row struct";
|
|
9951
|
+
readonly anyShape: "Unspecified";
|
|
9952
|
+
readonly bindLabel: "Page param";
|
|
9953
|
+
readonly bindNone: "No param";
|
|
9954
|
+
readonly bindMissing: "Missing param";
|
|
9955
|
+
readonly add: "Add param";
|
|
9956
|
+
readonly remove: "Remove {name}";
|
|
9957
|
+
readonly namePlaceholder: "Name";
|
|
9958
|
+
readonly default: "Default";
|
|
9959
|
+
readonly type: "Type";
|
|
9960
|
+
readonly typeString: "String";
|
|
9961
|
+
readonly typeText: "Text";
|
|
9962
|
+
readonly typeNumber: "Number";
|
|
9963
|
+
readonly typeBoolean: "Boolean";
|
|
9964
|
+
readonly typeList: "List";
|
|
9965
|
+
readonly typeJson: "JSON";
|
|
9966
|
+
};
|
|
9819
9967
|
readonly binding: {
|
|
9820
9968
|
readonly notReady: "Blueprint not ready for this control.";
|
|
9821
9969
|
readonly bindToField: "Bind to field\u2026";
|
|
@@ -9911,6 +10059,7 @@ declare const en: {
|
|
|
9911
10059
|
readonly character: "Character";
|
|
9912
10060
|
readonly voice: "Voice";
|
|
9913
10061
|
readonly design: "Design";
|
|
10062
|
+
readonly projectSettings: "Settings";
|
|
9914
10063
|
readonly plugin: "Plugin";
|
|
9915
10064
|
};
|
|
9916
10065
|
};
|
|
@@ -10229,10 +10378,15 @@ declare const en: {
|
|
|
10229
10378
|
readonly newName: "Field";
|
|
10230
10379
|
readonly none: "No fields";
|
|
10231
10380
|
readonly engineOwned: "This list receives its fields from the engine.";
|
|
10381
|
+
readonly pluginOwned: "This list receives its fields from a plugin.";
|
|
10232
10382
|
readonly picker: "Field";
|
|
10233
10383
|
readonly visiblePicker: "Visible from field";
|
|
10234
10384
|
readonly pickerEmpty: "No field";
|
|
10235
10385
|
};
|
|
10386
|
+
readonly shape: {
|
|
10387
|
+
readonly label: "Struct";
|
|
10388
|
+
readonly custom: "Custom";
|
|
10389
|
+
};
|
|
10236
10390
|
readonly row: {
|
|
10237
10391
|
readonly add: "Add row";
|
|
10238
10392
|
readonly remove: "Remove row";
|
|
@@ -10326,6 +10480,7 @@ declare const en: {
|
|
|
10326
10480
|
readonly nvl: "Full-screen novel-mode dialog history.";
|
|
10327
10481
|
};
|
|
10328
10482
|
readonly panel: {
|
|
10483
|
+
readonly interfaces: "Interfaces";
|
|
10329
10484
|
readonly interfaceType: "Interface Type";
|
|
10330
10485
|
readonly createPage: "Create Page";
|
|
10331
10486
|
readonly createGameUi: "Create Game UI";
|
|
@@ -10361,6 +10516,17 @@ declare const en: {
|
|
|
10361
10516
|
readonly history: {
|
|
10362
10517
|
readonly moveSurface: "move interface {name}";
|
|
10363
10518
|
readonly setEntryPage: "set entry page {name}";
|
|
10519
|
+
readonly setRootElement: "set root element {name}";
|
|
10520
|
+
readonly wrapRoot: "wrap {name} in a container";
|
|
10521
|
+
readonly createComponent: "create component {name}";
|
|
10522
|
+
readonly duplicateComponent: "duplicate component {name}";
|
|
10523
|
+
readonly duplicateComponents: "duplicate {count} components";
|
|
10524
|
+
readonly deleteComponent: "delete component {name}";
|
|
10525
|
+
readonly deleteComponents: "delete {count} components";
|
|
10526
|
+
readonly importSurface: "add interface {name}";
|
|
10527
|
+
readonly importSurfaces: "add {count} interfaces";
|
|
10528
|
+
readonly importComponent: "add component {name}";
|
|
10529
|
+
readonly importComponents: "add {count} components";
|
|
10364
10530
|
};
|
|
10365
10531
|
readonly inputActions: {
|
|
10366
10532
|
readonly title: "Input Actions";
|
|
@@ -10397,6 +10563,7 @@ declare const en: {
|
|
|
10397
10563
|
readonly trackpad: "Trackpad";
|
|
10398
10564
|
readonly touch: "Touch screen";
|
|
10399
10565
|
readonly key: "Keyboard";
|
|
10566
|
+
readonly gamepad: "Gamepad";
|
|
10400
10567
|
};
|
|
10401
10568
|
readonly gesture: {
|
|
10402
10569
|
readonly click: "Click";
|
|
@@ -10463,6 +10630,7 @@ declare const en: {
|
|
|
10463
10630
|
readonly wordsFromRowField: "These words come from the list row field \u201C{field}\u201D.";
|
|
10464
10631
|
readonly wordsFromBlueprintValue: "These words come from the blueprint value \u201C{name}\u201D.";
|
|
10465
10632
|
readonly wordsFromComponentParam: "These words come from the component parameter \u201C{param}\u201D, set on each placement.";
|
|
10633
|
+
readonly wordsFromPageParam: "These words come from the page param \u201C{param}\u201D, given when the page is opened.";
|
|
10466
10634
|
};
|
|
10467
10635
|
readonly editor: {
|
|
10468
10636
|
readonly componentNotFound: "Component not found";
|
|
@@ -10474,6 +10642,9 @@ declare const en: {
|
|
|
10474
10642
|
readonly selectTool: "Select tool";
|
|
10475
10643
|
readonly panTool: "Pan the canvas";
|
|
10476
10644
|
readonly openInDevMode: "Open this interface in Dev Mode";
|
|
10645
|
+
readonly showInLivePreview: "Show this interface in the live preview";
|
|
10646
|
+
readonly livePreviewShowsNoNotifications: "Notifications are not shown in the live preview";
|
|
10647
|
+
readonly livePreviewNoRow: "No row in the story shows this interface";
|
|
10477
10648
|
readonly componentDefinitionHint: "Components are edited as definitions";
|
|
10478
10649
|
readonly bindElement: "Bind Element";
|
|
10479
10650
|
readonly bindSelectHint: "Select one element on this Surface";
|
|
@@ -10501,6 +10672,11 @@ declare const en: {
|
|
|
10501
10672
|
readonly canvasLayout: "Canvas layout (edges & center)";
|
|
10502
10673
|
readonly elementBorders: "Element borders (edge to edge)";
|
|
10503
10674
|
readonly elementLayout: "Element layout (centers)";
|
|
10675
|
+
readonly grid: "Grid";
|
|
10676
|
+
readonly gridStyle: "Grid style";
|
|
10677
|
+
readonly gridLines: "Lines";
|
|
10678
|
+
readonly gridDots: "Dots";
|
|
10679
|
+
readonly gridSize: "Grid size";
|
|
10504
10680
|
};
|
|
10505
10681
|
readonly contextMenu: {
|
|
10506
10682
|
readonly pasteIntoContainer: "Paste into container";
|
|
@@ -10513,6 +10689,14 @@ declare const en: {
|
|
|
10513
10689
|
readonly showSelected: "Show selected";
|
|
10514
10690
|
readonly hideSelected: "Hide selected";
|
|
10515
10691
|
readonly addToComponentLibrary: "Add to Component Library";
|
|
10692
|
+
readonly setAsRoot: "Set as root element";
|
|
10693
|
+
readonly wrapRootInContainer: "Wrap in container";
|
|
10694
|
+
readonly setAsRootNotContainer: "Available when the root element is a container";
|
|
10695
|
+
readonly setAsRootNotAlone: "Available when this is the only element in the root container";
|
|
10696
|
+
readonly setAsRootNotFree: "Available when the root container's child layout is Free";
|
|
10697
|
+
readonly addedToComponentLibrary: "Added \u201C{name}\u201D to the Component Library.";
|
|
10698
|
+
readonly cannotHoldChildren: "{name} cannot contain child elements";
|
|
10699
|
+
readonly linkedInstanceContents: "The contents of a linked instance are edited in its component";
|
|
10516
10700
|
readonly group: "Group";
|
|
10517
10701
|
readonly ungroup: "Ungroup";
|
|
10518
10702
|
readonly addState: "Add state";
|
|
@@ -10549,6 +10733,12 @@ declare const en: {
|
|
|
10549
10733
|
readonly left: "left";
|
|
10550
10734
|
};
|
|
10551
10735
|
};
|
|
10736
|
+
readonly reference: {
|
|
10737
|
+
readonly label: "Game UI reference";
|
|
10738
|
+
readonly heading: "Other game UI";
|
|
10739
|
+
readonly none: "This project has no other game UI.";
|
|
10740
|
+
readonly sizeDiffers: "Different size: {name} {width}\u00D7{height}";
|
|
10741
|
+
};
|
|
10552
10742
|
readonly crossProject: {
|
|
10553
10743
|
readonly pasted: {
|
|
10554
10744
|
readonly one: "{count} element pasted";
|
|
@@ -10695,6 +10885,7 @@ declare const en: {
|
|
|
10695
10885
|
readonly removeBinding: "Remove";
|
|
10696
10886
|
readonly hintBlueprintValue: "Shown in the editor only. The game shows the Blueprint Value's result.";
|
|
10697
10887
|
readonly hintComponentParam: "Shown while editing the component only. Each placement shows the value it sets for the parameter.";
|
|
10888
|
+
readonly hintPageParam: "Shown while editing the page, when the param's default is empty. In the game the page shows the text it is opened with, or the default.";
|
|
10698
10889
|
};
|
|
10699
10890
|
readonly textWriters: {
|
|
10700
10891
|
readonly title: "Written in the game by";
|
|
@@ -10730,6 +10921,9 @@ declare const en: {
|
|
|
10730
10921
|
readonly stateKeyPlaceholder: "choices";
|
|
10731
10922
|
readonly propName: "Prop name";
|
|
10732
10923
|
readonly propNamePlaceholder: "choices";
|
|
10924
|
+
readonly pageParam: "Param";
|
|
10925
|
+
readonly pageParamUndeclared: "not declared on this page";
|
|
10926
|
+
readonly noPageParams: "This page declares no params";
|
|
10733
10927
|
readonly placeholderCount: "Placeholder rows";
|
|
10734
10928
|
readonly contentTitle: "List content";
|
|
10735
10929
|
readonly fields: "Fields";
|
|
@@ -10829,6 +11023,7 @@ declare const en: {
|
|
|
10829
11023
|
readonly title: "Page";
|
|
10830
11024
|
readonly page: "Page";
|
|
10831
11025
|
readonly props: "Props";
|
|
11026
|
+
readonly params: "Params";
|
|
10832
11027
|
readonly animation: "Animation";
|
|
10833
11028
|
readonly usePageAnimation: "Use Page animation";
|
|
10834
11029
|
readonly pageLogic: "Page component logic";
|
|
@@ -11495,7 +11690,7 @@ declare const en: {
|
|
|
11495
11690
|
};
|
|
11496
11691
|
readonly settings: {
|
|
11497
11692
|
readonly title: "Settings";
|
|
11498
|
-
readonly description: "Security, signing, compression, loading, and mobile";
|
|
11693
|
+
readonly description: "Security, signing, compression, loading, letterbox, and mobile";
|
|
11499
11694
|
};
|
|
11500
11695
|
};
|
|
11501
11696
|
readonly group: {
|
|
@@ -11525,6 +11720,7 @@ declare const en: {
|
|
|
11525
11720
|
readonly videoCompression: "Video compression";
|
|
11526
11721
|
readonly loading: "Loading";
|
|
11527
11722
|
readonly crash: "Crashes";
|
|
11723
|
+
readonly letterbox: "Letterbox";
|
|
11528
11724
|
readonly mobile: "Mobile";
|
|
11529
11725
|
};
|
|
11530
11726
|
readonly compressionMode: {
|
|
@@ -11909,6 +12105,10 @@ declare const en: {
|
|
|
11909
12105
|
readonly portrait: "Portrait";
|
|
11910
12106
|
readonly auto: "Follow device";
|
|
11911
12107
|
};
|
|
12108
|
+
readonly letterboxColorTitle: "Letterbox color";
|
|
12109
|
+
readonly letterboxColorDescription: "Shown around the stage on screens of another aspect ratio.";
|
|
12110
|
+
readonly letterboxImageTitle: "Letterbox image";
|
|
12111
|
+
readonly letterboxImageDescription: "Drawn over the letterbox color. The stage covers its middle.";
|
|
11912
12112
|
readonly stageFitTitle: "Screen fit";
|
|
11913
12113
|
readonly stageFitDescription: "Mobile builds and Dev Mode. Desktop and web always letterbox.";
|
|
11914
12114
|
readonly stageFit: {
|
|
@@ -13007,7 +13207,7 @@ declare const en: {
|
|
|
13007
13207
|
readonly rootName: "Root";
|
|
13008
13208
|
readonly componentName: "Component";
|
|
13009
13209
|
readonly pageName: "Page";
|
|
13010
|
-
readonly
|
|
13210
|
+
readonly nameCopy: "{name} Copy";
|
|
13011
13211
|
readonly speaker: "Speaker";
|
|
13012
13212
|
readonly dialog: {
|
|
13013
13213
|
readonly interactionLayer: "Dialog Interaction Layer";
|
|
@@ -13917,6 +14117,32 @@ declare const en: {
|
|
|
13917
14117
|
readonly message: "This is bound to an item field the list does not declare, so every row shows the same value";
|
|
13918
14118
|
readonly help: string;
|
|
13919
14119
|
};
|
|
14120
|
+
readonly uiPagePropUndeclared: {
|
|
14121
|
+
readonly title: "Undeclared page param";
|
|
14122
|
+
readonly description: "A list showing a page prop the page does not declare as a param";
|
|
14123
|
+
readonly message: "This list shows the page prop \"{name}\", which the page does not declare as a param";
|
|
14124
|
+
readonly help: string;
|
|
14125
|
+
};
|
|
14126
|
+
readonly uiPageParamUnknown: {
|
|
14127
|
+
readonly title: "Unknown page param";
|
|
14128
|
+
readonly description: "A Page widget giving a value the page it shows does not declare";
|
|
14129
|
+
readonly message: "This Page widget gives \"{name}\", which the page it shows does not declare";
|
|
14130
|
+
readonly help: string;
|
|
14131
|
+
};
|
|
14132
|
+
readonly uiPageTextParamMissing: {
|
|
14133
|
+
readonly title: "Missing page text param";
|
|
14134
|
+
readonly description: "A text on a page showing a param the page does not declare as text";
|
|
14135
|
+
readonly message: "This shows a page param the page does not declare as text, so the game shows no words here";
|
|
14136
|
+
readonly messageOutside: "This shows a page param but is not on a page, so the game shows no words here";
|
|
14137
|
+
readonly help: string;
|
|
14138
|
+
};
|
|
14139
|
+
readonly uiPageParamListMismatch: {
|
|
14140
|
+
readonly title: "List not matching its page param";
|
|
14141
|
+
readonly description: "A list showing a page param that is not a list, or whose rows lack fields the list draws";
|
|
14142
|
+
readonly messageNotList: "This list shows the page param \"{name}\", which is not a list";
|
|
14143
|
+
readonly message: "This list shows the page param \"{name}\", whose rows lack fields the list draws: {fields}";
|
|
14144
|
+
readonly help: string;
|
|
14145
|
+
};
|
|
13920
14146
|
readonly uiComponentParamMissing: {
|
|
13921
14147
|
readonly title: "Missing text parameter";
|
|
13922
14148
|
readonly description: "A widget in a component showing a parameter the component does not declare as text";
|
|
@@ -13954,6 +14180,24 @@ declare const en: {
|
|
|
13954
14180
|
readonly message: "{node} has nothing connected to {pin}";
|
|
13955
14181
|
readonly help: string;
|
|
13956
14182
|
};
|
|
14183
|
+
readonly blueprintFieldMissing: {
|
|
14184
|
+
readonly title: "Field not in shape";
|
|
14185
|
+
readonly description: "A node that names a field the value it reads does not have";
|
|
14186
|
+
readonly message: "{node}: {struct} has no field {field}";
|
|
14187
|
+
readonly help: string;
|
|
14188
|
+
};
|
|
14189
|
+
readonly blueprintPageParamMissing: {
|
|
14190
|
+
readonly title: "Missing page param";
|
|
14191
|
+
readonly description: "Get Page Param reading a param the page does not declare";
|
|
14192
|
+
readonly message: "{node} reads a param the page does not declare";
|
|
14193
|
+
readonly help: string;
|
|
14194
|
+
};
|
|
14195
|
+
readonly blueprintListShapeMismatch: {
|
|
14196
|
+
readonly title: "List fields do not match";
|
|
14197
|
+
readonly description: "Rows of another shape given to a list";
|
|
14198
|
+
readonly message: "{node}: {struct} does not match the list's fields";
|
|
14199
|
+
readonly help: string;
|
|
14200
|
+
};
|
|
13957
14201
|
readonly blueprintStartSceneForeign: {
|
|
13958
14202
|
readonly title: "Scene from another story";
|
|
13959
14203
|
readonly description: "A Start Game node whose scene is not in the story it names";
|
|
@@ -15933,12 +16177,13 @@ export type SearchJumpTarget = {
|
|
|
15933
16177
|
}
|
|
15934
16178
|
/**
|
|
15935
16179
|
* A page of Project settings - the panel's sub-pages - and, with `part`, the part of it to scroll
|
|
15936
|
-
* into view: `fonts` is the project's font stack on the Design page
|
|
16180
|
+
* into view: `fonts` is the project's font stack on the Design page, `letterbox` the letterbox
|
|
16181
|
+
* settings on the Settings page.
|
|
15937
16182
|
*/
|
|
15938
16183
|
| {
|
|
15939
16184
|
kind: "projectPage";
|
|
15940
16185
|
page: "app" | "game" | "design" | "project" | "runtimes" | "settings";
|
|
15941
|
-
part?: "fonts";
|
|
16186
|
+
part?: "fonts" | "letterbox";
|
|
15942
16187
|
}
|
|
15943
16188
|
/**
|
|
15944
16189
|
* A story's own row in the Story panel's list, selected and scrolled into view - the place a story
|
|
@@ -17151,6 +17396,13 @@ type ImportTemplateBundleInput = {
|
|
|
17151
17396
|
* take those translations.
|
|
17152
17397
|
*/
|
|
17153
17398
|
translations?: CarriedTranslations;
|
|
17399
|
+
/**
|
|
17400
|
+
* Whether the import is one step on the project's undo stack, which takes back every page and
|
|
17401
|
+
* definition it added. On unless a caller's own flow goes on to change more than the import did
|
|
17402
|
+
* - the starter title page also moves the entry page and removes the blank one, and a step that
|
|
17403
|
+
* took back only its middle would leave the project with neither page.
|
|
17404
|
+
*/
|
|
17405
|
+
history?: boolean;
|
|
17154
17406
|
};
|
|
17155
17407
|
declare class UIDocumentService extends Service<UIDocumentService> implements IUIDocumentService {
|
|
17156
17408
|
private document;
|
|
@@ -17246,7 +17498,15 @@ declare class UIDocumentService extends Service<UIDocumentService> implements IU
|
|
|
17246
17498
|
updateElementLayout(elementId: string, layoutPatch: Partial<UILayout>, options?: {
|
|
17247
17499
|
skipHistory?: boolean;
|
|
17248
17500
|
}): void;
|
|
17249
|
-
|
|
17501
|
+
/**
|
|
17502
|
+
* Write several elements' layouts as one change: one `documentChanged` and one undo step.
|
|
17503
|
+
*
|
|
17504
|
+
* `mergeKey` folds this step into the previous one when that carried the same key and was
|
|
17505
|
+
* recorded within the merge window - how a run of arrow-key nudges stays a single undo.
|
|
17506
|
+
*/
|
|
17507
|
+
updateElementLayouts(layoutPatches: Record<string, Partial<UILayout>>, options?: {
|
|
17508
|
+
mergeKey?: string;
|
|
17509
|
+
}): void;
|
|
17250
17510
|
updateElementProps(elementId: string, propsPatch: Record<string, unknown>): void;
|
|
17251
17511
|
/**
|
|
17252
17512
|
* Every widget that reads its words from `keyName`, turned into one that holds `words` itself.
|
|
@@ -17316,6 +17576,25 @@ declare class UIDocumentService extends Service<UIDocumentService> implements IU
|
|
|
17316
17576
|
* shape, and an instance that could redeclare it would be editing every other instance.
|
|
17317
17577
|
*/
|
|
17318
17578
|
setListItemStructFields(elementId: string, fields: readonly UIStructField[]): void;
|
|
17579
|
+
/**
|
|
17580
|
+
* {@link setListItemStructFields} for a list inside a component definition, one step in the
|
|
17581
|
+
* definition's own history.
|
|
17582
|
+
*
|
|
17583
|
+
* The library's rules are the document's, not the page's: a shape another list names - on a page
|
|
17584
|
+
* or in any definition - is forked rather than reshaped (`applyUIStructFieldsForOwner` walks the
|
|
17585
|
+
* definitions too), and the pruning that follows counts what definitions name.
|
|
17586
|
+
*/
|
|
17587
|
+
setComponentListItemStructFields(componentId: string, elementId: string, fields: readonly UIStructField[]): void;
|
|
17588
|
+
/**
|
|
17589
|
+
* Give one list one of the engine's shapes, or (`null`) a shape of its own again.
|
|
17590
|
+
*
|
|
17591
|
+
* One step: the pointer, the rows read into the new shape, the list's key field and its item
|
|
17592
|
+
* template's field bindings moved to the field of the same name, and the library pruned. Undo takes
|
|
17593
|
+
* all of it back, the library included (`UIEditorHistoryService` slices the shapes a page names).
|
|
17594
|
+
*/
|
|
17595
|
+
setListItemStructShape(elementId: string, shapeId: string | null): void;
|
|
17596
|
+
/** {@link setListItemStructShape} for a list inside a component definition, in its own history. */
|
|
17597
|
+
setComponentListItemStructShape(componentId: string, elementId: string, shapeId: string | null): void;
|
|
17319
17598
|
/** What the gestures of this project mean, keyed by id. */
|
|
17320
17599
|
getInputActions(): Record<string, UIInputActionDef>;
|
|
17321
17600
|
/**
|
|
@@ -17367,6 +17646,18 @@ declare class UIDocumentService extends Service<UIDocumentService> implements IU
|
|
|
17367
17646
|
* field id. Switching between them therefore goes through the clear, which is why it runs here.
|
|
17368
17647
|
*/
|
|
17369
17648
|
setElementListItemFieldBinding(elementId: string, propPath: string, fieldId: string | null): void;
|
|
17649
|
+
/**
|
|
17650
|
+
* Show one of its page's text parameters in the words of an element on that page, or (`null`)
|
|
17651
|
+
* stop showing one. The page's counterpart of `setElementComponentParamBinding`: an element on a
|
|
17652
|
+
* Game UI, which declares no parameters, is left alone.
|
|
17653
|
+
*/
|
|
17654
|
+
setElementPageParamBinding(elementId: string, propPath: string, paramId: string | null): void;
|
|
17655
|
+
/**
|
|
17656
|
+
* Bind one prop of one element on a surface to something that needs no blueprint - a field of its
|
|
17657
|
+
* list row, a text parameter of its page - or (`null`) unbind it. A Blueprint Value the prop was
|
|
17658
|
+
* bound to is torn down on the way (`clearElementBlueprintValueBinding`).
|
|
17659
|
+
*/
|
|
17660
|
+
private setElementPlainValueBinding;
|
|
17370
17661
|
ensureElementBlueprintValueBinding(elementId: string, propPath: string, input: {
|
|
17371
17662
|
valueType: UIElementValueBindingValueType;
|
|
17372
17663
|
displayName?: string;
|
|
@@ -17456,10 +17747,65 @@ declare class UIDocumentService extends Service<UIDocumentService> implements IU
|
|
|
17456
17747
|
private scheduleAutoSave;
|
|
17457
17748
|
private setDirty;
|
|
17458
17749
|
private getHistoryService;
|
|
17750
|
+
/**
|
|
17751
|
+
* Where an edit to a component definition is recorded: the definition's own undo stack, named by
|
|
17752
|
+
* the component editor's surface id (`UIEditorHistoryService` maps that to the definition's
|
|
17753
|
+
* scope). One stack per definition, so undoing in one component tab never touches another
|
|
17754
|
+
* definition or any page - and an instance on a page draws the definition from the library each
|
|
17755
|
+
* time, so putting the definition back puts every placement back with it.
|
|
17756
|
+
*/
|
|
17757
|
+
private componentHistory;
|
|
17758
|
+
private getGraphService;
|
|
17759
|
+
/**
|
|
17760
|
+
* One step on the project's undo stack, for an operation on the library as a whole - adding,
|
|
17761
|
+
* copying, deleting or importing pages and definitions.
|
|
17762
|
+
*
|
|
17763
|
+
* The project's stack rather than any editor's, for the reason {@link reorderSurfaces} gives:
|
|
17764
|
+
* these are made from the rail, and that is the stack Ctrl+Z and the Edit menu reach from there
|
|
17765
|
+
* (`resolveWorkspaceUndoScope`). A definition's own stack holds edits *inside* it, and a deleted
|
|
17766
|
+
* definition has no tab to press Ctrl+Z in.
|
|
17767
|
+
*
|
|
17768
|
+
* Each step is a command over whole records, not a snapshot of the library: whichever direction
|
|
17769
|
+
* runs reads the records as they stand at that moment and writes them back exactly, and nothing
|
|
17770
|
+
* else in the library is touched. Tagged, so a live session drops these steps with the interface
|
|
17771
|
+
* editors' stacks (`LiveSessionService`): taking back an addition after a session would remove
|
|
17772
|
+
* whatever the room built inside it.
|
|
17773
|
+
*/
|
|
17774
|
+
private pushLibraryStep;
|
|
17775
|
+
/**
|
|
17776
|
+
* Take pages and definitions out of the project, and return them as they stood.
|
|
17777
|
+
*
|
|
17778
|
+
* Empty when nothing left this copy of the document - ids it does not hold, or an operation sink
|
|
17779
|
+
* that took the gesture: inside a live session the removal arrives as an effect later, the
|
|
17780
|
+
* lifecycle sweep collects the blueprints then, and undo is the session's.
|
|
17781
|
+
*/
|
|
17782
|
+
private takeLibraryRecords;
|
|
17783
|
+
/**
|
|
17784
|
+
* Put records {@link takeLibraryRecords} returned back where they stood.
|
|
17785
|
+
*
|
|
17786
|
+
* Blueprints first: the sweep that follows the document write gives a widget with no blueprint a
|
|
17787
|
+
* fresh, empty one, and it must find each record's own already in place.
|
|
17788
|
+
*/
|
|
17789
|
+
private putLibraryRecords;
|
|
17790
|
+
/**
|
|
17791
|
+
* Leave the step that takes back pages and definitions an operation just added.
|
|
17792
|
+
*
|
|
17793
|
+
* Nothing is recorded when none of them is in this copy of the document, which is what an
|
|
17794
|
+
* operation sink taking the gesture looks like (the reasoning {@link reorderSurfaces} gives).
|
|
17795
|
+
*/
|
|
17796
|
+
private recordLibraryAddition;
|
|
17459
17797
|
private getElementSurfaceId;
|
|
17460
17798
|
private getCommonSurfaceIdForElements;
|
|
17461
17799
|
private filterLinkedComponentLayoutPatch;
|
|
17462
17800
|
private migrateIfNeeded;
|
|
17801
|
+
/**
|
|
17802
|
+
* Every page's declared parameters, in the shape this build reads (`normalizeUIPageParams`).
|
|
17803
|
+
*
|
|
17804
|
+
* A normalizer for the reason {@link normalizeInputModel} is one: an empty list and no list mean
|
|
17805
|
+
* the same thing, so a page that declares none keeps its record as short as it was. A Game UI's
|
|
17806
|
+
* are dropped - the player mounts it with nothing, so nothing could ever fill them.
|
|
17807
|
+
*/
|
|
17808
|
+
private normalizePageParams;
|
|
17463
17809
|
/**
|
|
17464
17810
|
* The v13 step, for the project's own document as it is opened (`textSourceMigration.ts`).
|
|
17465
17811
|
*
|
|
@@ -17653,7 +17999,14 @@ declare class UIDocumentService extends Service<UIDocumentService> implements IU
|
|
|
17653
17999
|
getComponent(componentId: string): UIComponentDefinition | undefined;
|
|
17654
18000
|
getComponentUsageCount(componentId: string): number;
|
|
17655
18001
|
createEmptyComponent(name?: string): UIComponentDefinition;
|
|
18002
|
+
/**
|
|
18003
|
+
* A new definition made of copies of elements on a page, with the logic they carry.
|
|
18004
|
+
*
|
|
18005
|
+
* The page is not changed, so the step that takes this back is the library's - the project's
|
|
18006
|
+
* stack, the one {@link createEmptyComponent} uses - rather than the page's.
|
|
18007
|
+
*/
|
|
17656
18008
|
createComponentFromElements(surfaceId: string, elementIds: string[], name?: string): UIComponentDefinition | null;
|
|
18009
|
+
/** Recorded in the definition's own undo stack, as a page's name is in the page's. */
|
|
17657
18010
|
renameComponent(componentId: string, name: string): void;
|
|
17658
18011
|
/**
|
|
17659
18012
|
* Replace a component's declared params.
|
|
@@ -17661,9 +18014,25 @@ declare class UIDocumentService extends Service<UIDocumentService> implements IU
|
|
|
17661
18014
|
* Instances keep values for ids that survive: a param is identified by `id`, so renaming one in
|
|
17662
18015
|
* the inspector does not unset it anywhere. Values for ids that were removed are left on their
|
|
17663
18016
|
* instances rather than swept - re-adding a param by the same id is how an author undoes a
|
|
17664
|
-
* deletion, and sweeping would make that a data loss with no warning.
|
|
18017
|
+
* deletion, and sweeping would make that a data loss with no warning. That is also why undoing
|
|
18018
|
+
* this - one step in the definition's own stack - needs nothing from the instances: their values
|
|
18019
|
+
* were never touched, so the restored declaration finds them where it left them.
|
|
17665
18020
|
*/
|
|
17666
18021
|
setComponentParams(componentId: string, params: UIComponentParam[]): void;
|
|
18022
|
+
/**
|
|
18023
|
+
* Replace the parameters a page declares.
|
|
18024
|
+
*
|
|
18025
|
+
* A parameter is identified by `id`, so the nodes that open the page and the `Get Page Param`
|
|
18026
|
+
* nodes that read it keep pointing at it through a rename. What reads it by name - the key its
|
|
18027
|
+
* value travels under - is followed in the same step where it lives on the page itself: a list on
|
|
18028
|
+
* the page bound to the old name is bound to the new one. Anything elsewhere that names it (a Page
|
|
18029
|
+
* widget on another page giving it a value, a script) is left alone, because this page's undo must
|
|
18030
|
+
* not reach into another page; the project check reports those.
|
|
18031
|
+
*
|
|
18032
|
+
* A removed parameter's values are not swept from anywhere, as a component's are not: re-adding it
|
|
18033
|
+
* is how an author takes a deletion back.
|
|
18034
|
+
*/
|
|
18035
|
+
setPageParams(surfaceId: string, params: UIPageParam[]): void;
|
|
17667
18036
|
/**
|
|
17668
18037
|
* Set one param value on one instance. An empty string is a value, not a reset.
|
|
17669
18038
|
*
|
|
@@ -17678,9 +18047,42 @@ declare class UIDocumentService extends Service<UIDocumentService> implements IU
|
|
|
17678
18047
|
* and naming none leaves the parameter with neither, which falls back to the definition's default.
|
|
17679
18048
|
*/
|
|
17680
18049
|
setComponentInstanceParamKey(elementId: string, paramId: string, keyName: string | null): void;
|
|
18050
|
+
/**
|
|
18051
|
+
* Remove definitions from the library, as one step on the project's undo stack.
|
|
18052
|
+
*
|
|
18053
|
+
* Placements of them on pages are left as they are, and draw as missing until the definition is
|
|
18054
|
+
* back or they are replaced. Undo puts each definition back at its place in the library with its
|
|
18055
|
+
* widgets' blueprints and the item shapes its lists name, and every placement draws it again.
|
|
18056
|
+
*/
|
|
17681
18057
|
deleteComponents(componentIds: string[]): void;
|
|
18058
|
+
/** One copy of a definition; see {@link duplicateComponents}. */
|
|
17682
18059
|
duplicateComponent(componentId: string): UIComponentDefinition | null;
|
|
17683
|
-
|
|
18060
|
+
/**
|
|
18061
|
+
* A copy of each definition, added to the end of the library, as one step on the project's undo
|
|
18062
|
+
* stack. The copies' translations are written in the background and are not part of the step:
|
|
18063
|
+
* undoing leaves them unused, and redoing finds them again (`carryCopiedTranslations`).
|
|
18064
|
+
*/
|
|
18065
|
+
duplicateComponents(componentIds: readonly string[]): UIComponentDefinition[];
|
|
18066
|
+
private copyComponent;
|
|
18067
|
+
/**
|
|
18068
|
+
* One element of a definition's layout, as `updateElementLayout` is one of a page's: an undo step
|
|
18069
|
+
* of its own, folded into the previous one when that wrote the same fields of the same element
|
|
18070
|
+
* within the merge window - so typing a number into the inspector is one step, not one a key.
|
|
18071
|
+
* `skipHistory` is for the write a gesture makes on its way to the one it records.
|
|
18072
|
+
*/
|
|
18073
|
+
updateComponentElementLayout(componentId: string, elementId: string, layoutPatch: Partial<UILayout>, options?: {
|
|
18074
|
+
skipHistory?: boolean;
|
|
18075
|
+
}): void;
|
|
18076
|
+
/**
|
|
18077
|
+
* Several elements of one definition as one change: one `documentChanged` and one undo step, as
|
|
18078
|
+
* `updateElementLayouts` is on a page - a drag of three elements is undone by one Ctrl+Z.
|
|
18079
|
+
* `mergeKey` folds the step into the previous one when that carried the same key and was
|
|
18080
|
+
* recorded within the merge window, which is how a run of arrow-key nudges stays one undo.
|
|
18081
|
+
*/
|
|
18082
|
+
updateComponentElementLayouts(componentId: string, layoutPatches: Record<string, Partial<UILayout>>, options?: {
|
|
18083
|
+
mergeKey?: string;
|
|
18084
|
+
}): void;
|
|
18085
|
+
private writeComponentElementLayout;
|
|
17684
18086
|
/**
|
|
17685
18087
|
* Bind one prop of one element of a component definition to a field of its list row or to a text
|
|
17686
18088
|
* parameter of the component - the two value bindings that need no blueprint - or (`null`) unbind
|
|
@@ -17697,7 +18099,9 @@ declare class UIDocumentService extends Service<UIDocumentService> implements IU
|
|
|
17697
18099
|
*/
|
|
17698
18100
|
setElementComponentParamBinding(elementId: string, propPath: string, paramId: string | null): void;
|
|
17699
18101
|
updateComponentElementProps(componentId: string, elementId: string, propsPatch: Record<string, unknown>): void;
|
|
17700
|
-
updateComponentElementAnimation(componentId: string, elementId: string, animation: UIPageAnimationSettings | null
|
|
18102
|
+
updateComponentElementAnimation(componentId: string, elementId: string, animation: UIPageAnimationSettings | null, options?: {
|
|
18103
|
+
mergeKey?: string;
|
|
18104
|
+
}): void;
|
|
17701
18105
|
updateComponentElementExtra(componentId: string, elementId: string, extraPatch: Record<string, unknown>): void;
|
|
17702
18106
|
renameComponentElement(componentId: string, elementId: string, name: string): void;
|
|
17703
18107
|
reorderComponentChildren(componentId: string, parentId: string, orderedChildIds: string[]): void;
|
|
@@ -17713,6 +18117,23 @@ declare class UIDocumentService extends Service<UIDocumentService> implements IU
|
|
|
17713
18117
|
* document made of the component alone, as `moveComponentElements` does.
|
|
17714
18118
|
*/
|
|
17715
18119
|
groupComponentElements(componentId: string, elementIds: readonly string[]): string | null;
|
|
18120
|
+
/**
|
|
18121
|
+
* Make an element its definition's root, taking off the container it sat alone in.
|
|
18122
|
+
*
|
|
18123
|
+
* One step in the definition's history, and the one step there that reaches the pages: every
|
|
18124
|
+
* placement is given the box the element took up inside it (`promoteElementToComponentRoot`), and
|
|
18125
|
+
* taking the step back gives the boxes back with the definition.
|
|
18126
|
+
*/
|
|
18127
|
+
promoteComponentElementToRoot(componentId: string, elementId: string): boolean;
|
|
18128
|
+
/**
|
|
18129
|
+
* Put an empty container around a definition's root, as its new root. Returns the container's id.
|
|
18130
|
+
*
|
|
18131
|
+
* The container takes the root's size and draws nothing of its own, so the definition and every
|
|
18132
|
+
* placement look as they did, and the root can now be given siblings.
|
|
18133
|
+
*/
|
|
18134
|
+
wrapComponentRoot(componentId: string): string | null;
|
|
18135
|
+
/** An element as an Edit menu step names it: its own name, or its widget's. */
|
|
18136
|
+
private describeElementForHistory;
|
|
17716
18137
|
createComponentElement(componentId: string, parentId: string, type: string, layoutPatch?: Partial<UILayout>): UIElement | null;
|
|
17717
18138
|
pasteComponentClipboardPayload(componentId: string, targetParentId: string, beforeChildId: string | null, incoming: UIEditorClipboardPayload): {
|
|
17718
18139
|
ok: true;
|
|
@@ -18556,6 +18977,18 @@ type BlueprintNodeDeclaration = {
|
|
|
18556
18977
|
saveSchemaPins?: {
|
|
18557
18978
|
kind: "input" | "output";
|
|
18558
18979
|
};
|
|
18980
|
+
/**
|
|
18981
|
+
* Grow one input per parameter the page this node opens declares (`UIPageParam`).
|
|
18982
|
+
*
|
|
18983
|
+
* The page is the one picked on the card, read from `params[surfaceParam]` - the key the node's
|
|
18984
|
+
* page picker writes. Like {@link saveSchemaPins} the list comes from a project document rather
|
|
18985
|
+
* than from the node, so every node that opens one page grows the same inputs, in the page's
|
|
18986
|
+
* order, and renaming a parameter relabels all of them. The inputs belong to the picked page: a
|
|
18987
|
+
* different page arriving on a wire is opened with the node's `props` input alone.
|
|
18988
|
+
*/
|
|
18989
|
+
pageParamPins?: {
|
|
18990
|
+
surfaceParam: string;
|
|
18991
|
+
};
|
|
18559
18992
|
inspectorParams?: BlueprintInspectorParamDef[];
|
|
18560
18993
|
role?: BlueprintNodeRole;
|
|
18561
18994
|
/**
|
|
@@ -19056,7 +19489,9 @@ interface IUIDocumentService extends IService {
|
|
|
19056
19489
|
updateElementLayout(elementId: string, layoutPatch: Partial<UILayout>, options?: {
|
|
19057
19490
|
skipHistory?: boolean;
|
|
19058
19491
|
}): void;
|
|
19059
|
-
updateElementLayouts(layoutPatches: Record<string, Partial<UILayout
|
|
19492
|
+
updateElementLayouts(layoutPatches: Record<string, Partial<UILayout>>, options?: {
|
|
19493
|
+
mergeKey?: string;
|
|
19494
|
+
}): void;
|
|
19060
19495
|
updateElementProps(elementId: string, propsPatch: Record<string, unknown>): void;
|
|
19061
19496
|
ensureElementBlueprintValueBinding(elementId: string, propPath: string, input: {
|
|
19062
19497
|
valueType: UIElementValueBindingValueType;
|
|
@@ -19090,7 +19525,13 @@ interface IUIDocumentService extends IService {
|
|
|
19090
19525
|
renameComponent(componentId: string, name: string): void;
|
|
19091
19526
|
deleteComponents(componentIds: string[]): void;
|
|
19092
19527
|
duplicateComponent(componentId: string): UIComponentDefinition | null;
|
|
19093
|
-
|
|
19528
|
+
duplicateComponents(componentIds: readonly string[]): UIComponentDefinition[];
|
|
19529
|
+
updateComponentElementLayout(componentId: string, elementId: string, layoutPatch: Partial<UILayout>, options?: {
|
|
19530
|
+
skipHistory?: boolean;
|
|
19531
|
+
}): void;
|
|
19532
|
+
updateComponentElementLayouts(componentId: string, layoutPatches: Record<string, Partial<UILayout>>, options?: {
|
|
19533
|
+
mergeKey?: string;
|
|
19534
|
+
}): void;
|
|
19094
19535
|
updateComponentElementProps(componentId: string, elementId: string, propsPatch: Record<string, unknown>): void;
|
|
19095
19536
|
updateComponentElementExtra(componentId: string, elementId: string, extraPatch: Record<string, unknown>): void;
|
|
19096
19537
|
renameComponentElement(componentId: string, elementId: string, name: string): void;
|
package/package.json
CHANGED