@league-of-foundry-developers/foundry-vtt-types 0.8.9-4 → 0.8.9-8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/README.md +41 -13
  2. package/index-lenient.d.ts +10 -0
  3. package/package.json +10 -1
  4. package/src/foundry/common/abstract/backend.mjs.d.ts +14 -15
  5. package/src/foundry/common/abstract/document.mjs.d.ts +6 -2
  6. package/src/foundry/common/data/data.mjs/drawingData.d.ts +8 -3
  7. package/src/foundry/common/data/data.mjs/index.d.ts +2 -0
  8. package/src/foundry/common/data/data.mjs/playlistData.d.ts +171 -0
  9. package/src/foundry/common/data/data.mjs/playlistSoundData.d.ts +143 -0
  10. package/src/foundry/common/data/fields.mjs.d.ts +2 -2
  11. package/src/foundry/common/documents.mjs/basePlaylist.d.ts +11 -1
  12. package/src/foundry/common/documents.mjs/basePlaylistSound.d.ts +21 -2
  13. package/src/foundry/common/types.mjs.d.ts +5 -0
  14. package/src/foundry/foundry.js/application.d.ts +2 -5
  15. package/src/foundry/foundry.js/applications/cameraViews.d.ts +36 -31
  16. package/src/foundry/foundry.js/applications/compendium.d.ts +5 -2
  17. package/src/foundry/foundry.js/applications/filePicker.d.ts +114 -114
  18. package/src/foundry/foundry.js/applications/formApplication.d.ts +3 -11
  19. package/src/foundry/foundry.js/applications/formApplications/combatTrackerConfig.d.ts +20 -27
  20. package/src/foundry/foundry.js/applications/formApplications/defaultTokenConfig.d.ts +66 -0
  21. package/src/foundry/foundry.js/applications/formApplications/documentSheet.d.ts +1 -1
  22. package/src/foundry/foundry.js/applications/formApplications/documentSheets/activeEffectConfig.d.ts +2 -2
  23. package/src/foundry/foundry.js/applications/formApplications/documentSheets/actorSheet.d.ts +5 -2
  24. package/src/foundry/foundry.js/applications/formApplications/documentSheets/ambientSoundConfig.d.ts +57 -0
  25. package/src/foundry/foundry.js/applications/formApplications/{folderConfig.d.ts → documentSheets/folderConfig.d.ts} +2 -2
  26. package/src/foundry/foundry.js/applications/formApplications/documentSheets/index.d.ts +7 -0
  27. package/src/foundry/foundry.js/applications/formApplications/documentSheets/lightConfig.d.ts +84 -0
  28. package/src/foundry/foundry.js/applications/formApplications/documentSheets/measuredTemplateConfig.d.ts +60 -0
  29. package/src/foundry/foundry.js/applications/formApplications/documentSheets/noteConfig.d.ts +72 -0
  30. package/src/foundry/foundry.js/applications/formApplications/documentSheets/permissionControl.d.ts +54 -60
  31. package/src/foundry/foundry.js/applications/formApplications/documentSheets/playlistConfig.d.ts +41 -28
  32. package/src/foundry/foundry.js/applications/formApplications/documentSheets/playlistSoundConfig.d.ts +75 -0
  33. package/src/foundry/foundry.js/applications/formApplications/documentSheets/rollTableConfig.d.ts +190 -148
  34. package/src/foundry/foundry.js/applications/formApplications/documentSheets/sceneConfig.d.ts +133 -110
  35. package/src/foundry/foundry.js/applications/formApplications/documentSheets/tileConfig.d.ts +66 -0
  36. package/src/foundry/foundry.js/applications/formApplications/drawingConfig.d.ts +93 -95
  37. package/src/foundry/foundry.js/applications/formApplications/entitySheetConfig.d.ts +163 -147
  38. package/src/foundry/foundry.js/applications/formApplications/index.d.ts +1 -7
  39. package/src/foundry/foundry.js/applications/formApplications/moduleManagement.d.ts +41 -23
  40. package/src/foundry/foundry.js/applications/formApplications/settingsConfig.d.ts +95 -86
  41. package/src/foundry/foundry.js/applications/formApplications/tokenConfig.d.ts +146 -158
  42. package/src/foundry/foundry.js/applications/formApplications/wallConfig.d.ts +60 -70
  43. package/src/foundry/foundry.js/applications/formApplications/worldConfig.d.ts +25 -17
  44. package/src/foundry/foundry.js/applications/headsUpDisplay.d.ts +11 -5
  45. package/src/foundry/foundry.js/applications/hotbar.d.ts +5 -4
  46. package/src/foundry/foundry.js/applications/sceneControls.d.ts +13 -3
  47. package/src/foundry/foundry.js/applications/sceneNavigation.d.ts +90 -71
  48. package/src/foundry/foundry.js/applications/sidebarTabs/sidebarDirectories/actorDirectory.d.ts +13 -56
  49. package/src/foundry/foundry.js/applications/sidebarTabs/sidebarDirectories/itemDirectory.d.ts +7 -30
  50. package/src/foundry/foundry.js/applications/sidebarTabs/sidebarDirectories/journalDirectory.d.ts +14 -34
  51. package/src/foundry/foundry.js/applications/sidebarTabs/sidebarDirectories/macroDirectory.d.ts +6 -52
  52. package/src/foundry/foundry.js/applications/sidebarTabs/sidebarDirectories/playlistDirectory.d.ts +249 -139
  53. package/src/foundry/foundry.js/applications/sidebarTabs/sidebarDirectories/sceneDirectory.d.ts +6 -23
  54. package/src/foundry/foundry.js/applications/sidebarTabs/sidebarDirectory.d.ts +3 -5
  55. package/src/foundry/foundry.js/cameraPopoutAppWrapper.d.ts +12 -7
  56. package/src/foundry/foundry.js/canvas.d.ts +2 -1
  57. package/src/foundry/foundry.js/clientDatabaseBackend.d.ts +210 -0
  58. package/src/foundry/foundry.js/clientDocumentMixin.d.ts +1 -1
  59. package/src/foundry/foundry.js/clientDocuments/canvasDocuments/index.d.ts +8 -0
  60. package/src/foundry/foundry.js/clientDocuments/canvasDocuments/tokenDocument.d.ts +1 -1
  61. package/src/foundry/foundry.js/clientDocuments/index.d.ts +19 -0
  62. package/src/foundry/foundry.js/clientDocuments/playlist.d.ts +195 -6
  63. package/src/foundry/foundry.js/clientDocuments/playlistSound.d.ts +113 -0
  64. package/src/foundry/foundry.js/clientDocuments/prototypeToken.d.ts +15 -0
  65. package/src/foundry/foundry.js/clientSettings.d.ts +14 -1
  66. package/src/foundry/foundry.js/collections/documentCollections/compendiumCollection.d.ts +44 -8
  67. package/src/foundry/foundry.js/config.d.ts +85 -71
  68. package/src/foundry/foundry.js/dragDrop.d.ts +17 -14
  69. package/src/foundry/foundry.js/globalVariables.d.ts +7 -4
  70. package/src/foundry/foundry.js/mouseInteractionManager.d.ts +78 -34
  71. package/src/foundry/foundry.js/pixi/containers/canvasLayer.d.ts +2 -1
  72. package/src/foundry/foundry.js/pixi/containers/canvasLayers/placeablesLayer.d.ts +10 -19
  73. package/src/foundry/foundry.js/pixi/containers/canvasLayers/placeablesLayers/mapLayers/backgroundLayer.d.ts +6 -2
  74. package/src/foundry/foundry.js/pixi/containers/canvasLayers/placeablesLayers/mapLayers/foregroundLayer.d.ts +2 -2
  75. package/src/foundry/foundry.js/pixi/containers/canvasLayers/placeablesLayers/wallsLayer.d.ts +1 -1
  76. package/src/foundry/foundry.js/pixi/containers/doorControl.d.ts +53 -35
  77. package/src/foundry/foundry.js/pixi/containers/placeableObject.d.ts +6 -2
  78. package/src/foundry/foundry.js/pixi/containers/placeableObjects/ambientLight.d.ts +38 -40
  79. package/src/foundry/foundry.js/pixi/containers/placeableObjects/ambientSound.d.ts +56 -56
  80. package/src/foundry/foundry.js/pixi/containers/placeableObjects/note.d.ts +9 -50
  81. package/src/foundry/foundry.js/pixi/containers/placeableObjects/tile.d.ts +166 -47
  82. package/src/foundry/foundry.js/pixi/containers/placeableObjects/wall.d.ts +1 -1
  83. package/src/foundry/foundry.js/pixi/containers/ruler.d.ts +11 -7
  84. package/src/foundry/foundry.js/pixi/graphics/gridHighlight.d.ts +4 -9
  85. package/src/foundry/foundry.js/pointSource.d.ts +173 -85
  86. package/src/foundry/foundry.js/textEditor.d.ts +39 -8
  87. package/src/foundry/index.d.ts +2 -25
  88. package/src/foundry/foundry.js/applications/formApplications/ambientSoundConfig.d.ts +0 -68
  89. package/src/foundry/foundry.js/applications/formApplications/lightConfig.d.ts +0 -98
  90. package/src/foundry/foundry.js/applications/formApplications/measuredTemplateConfig.d.ts +0 -61
  91. package/src/foundry/foundry.js/applications/formApplications/noteConfig.d.ts +0 -77
  92. package/src/foundry/foundry.js/applications/formApplications/playlistSoundConfig.d.ts +0 -70
  93. package/src/foundry/foundry.js/applications/formApplications/tileConfig.d.ts +0 -73
@@ -1,27 +1,37 @@
1
- // TODO: Remove when updating this class!!!
2
- // eslint-disable-next-line
3
- // @ts-nocheck
4
-
5
1
  /**
6
2
  * The Module Management Application.
7
3
  * This application provides a view of which modules are available to be used and allows for configuration of the
8
4
  * set of modules which are active within the World.
5
+ * @typeParam Options - The type of the options object
6
+ * @typeParam Data - The data structure used to render the handlebars template.
9
7
  */
10
- declare class ModuleManagement extends FormApplication<FormApplication.Options, ModuleManagement.Data, any> {
8
+
9
+ declare class ModuleManagement<
10
+ Options extends FormApplication.Options = FormApplication.Options,
11
+ Data extends object = ModuleManagement.Data
12
+ > extends FormApplication<Options, Data, undefined> {
11
13
  /**
12
14
  * @defaultValue `'all'`
15
+ * @internal
13
16
  */
14
17
  protected _filter: ModuleManagement.FilterName;
15
18
 
16
19
  /**
17
20
  * @defaultValue `false`
21
+ * @internal
18
22
  */
19
23
  protected _expanded: boolean;
20
24
 
21
25
  /**
22
26
  * @defaultValue `{}`
27
+ * @internal
23
28
  */
24
- protected _checked: Partial<Record<string, boolean>>;
29
+ protected _checked: Record<string, boolean>;
30
+
31
+ /**
32
+ * The named game setting which persists module configuration.
33
+ */
34
+ static CONFIG_SETTING: 'moduleConfiguration';
25
35
 
26
36
  /**
27
37
  * @override
@@ -40,57 +50,63 @@ declare class ModuleManagement extends FormApplication<FormApplication.Options,
40
50
  * });
41
51
  * ```
42
52
  */
43
- static get defaultOptions(): typeof FormApplication['defaultOptions'];
53
+ static get defaultOptions(): FormApplication.Options;
44
54
 
45
55
  /** @override */
46
56
  get isEditable(): boolean;
47
57
 
48
58
  /** @override */
49
- getData(options?: Partial<FormApplication.Options>): ModuleManagement.Data;
59
+ getData(options?: Partial<Options>): Data | Promise<Data>;
50
60
 
51
61
  /** @override */
52
62
  activateListeners(html: JQuery): void;
53
63
 
54
64
  /**
55
- * @param event - (unused)
56
65
  * @override
66
+ * @param event - (unused)
57
67
  */
58
- // TODO: type return value when the class' config setting is typed
59
- protected _updateObject(event: Event, formData: ModuleManagement.FormData): Promise<unknown>;
68
+ protected _updateObject(event: Event, formData: ModuleManagement.FormData): Promise<Record<string, boolean>>;
69
+
70
+ /**
71
+ * Restores the Form UI to the internal checked state
72
+ * @internal
73
+ */
74
+ protected _restoreCheckboxState(): void;
60
75
 
61
76
  /**
62
77
  * Handle changes to a module checkbox to prompt for whether or not to enable dependencies
78
+ * @internal
63
79
  */
64
- protected _onChangeCheckbox(event: JQuery.ChangeEvent): void;
80
+ protected _onChangeCheckbox(event: JQuery.ChangeEvent): unknown;
65
81
 
66
82
  /**
67
83
  * Handle a button-click to deactivate all modules
84
+ * @internal
68
85
  */
69
86
  protected _onDeactivateAll(event: JQuery.ClickEvent): void;
70
87
 
71
88
  /**
72
89
  * Handle expanding or collapsing the display of descriptive elements
90
+ * @internal
73
91
  */
74
92
  protected _onExpandCollapse(event: JQuery.ClickEvent): void;
75
93
 
76
94
  /**
77
95
  * Handle a button-click to deactivate all modules
96
+ * @internal
78
97
  */
79
98
  protected _onFilterList(event: JQuery.ClickEvent): void;
80
99
 
81
100
  /** @override */
82
101
  protected _onSearchFilter(event: KeyboardEvent, query: string, rgx: RegExp, html: HTMLElement): void;
83
-
84
- static readonly CONFIG_SETTING: 'moduleConfiguration';
85
102
  }
86
103
 
87
104
  declare namespace ModuleManagement {
88
105
  interface Data {
89
- editable: ModuleManagement['isEditable'];
106
+ editable: boolean;
90
107
  filters: [Data.Filter<'all'>, Data.Filter<'active'>, Data.Filter<'inactive'>];
91
108
  modules: Data.Module[];
92
- query: undefined; // TODO: this seems to reference an undefined value (`this._query`)
93
- expanded: ModuleManagement['_expanded'];
109
+ expanded: boolean;
94
110
  }
95
111
 
96
112
  namespace Data {
@@ -101,23 +117,25 @@ declare namespace ModuleManagement {
101
117
  count: number;
102
118
  }
103
119
 
104
- interface Module extends foundry.utils.Duplicated<Game.Module> {
120
+ type Module = foundry.packages.ModuleData['_source'] & {
105
121
  active: boolean;
122
+ availability: number;
123
+ data: foundry.packages.ModuleData;
106
124
  css: ' active' | '';
107
125
  hasPacks: boolean;
108
126
  hasScripts: boolean;
109
127
  hasStyles: boolean;
110
128
  systemOnly: boolean;
111
129
  systemTag: Game['system']['id'];
112
- incompatible: any; // TODO
113
- unavailable: any; // TODO
114
130
  dependencies: string[] | null;
115
- }
131
+ unavailable?: string;
132
+ incompatible?: string;
133
+ };
116
134
  }
117
135
 
118
136
  type FilterName = 'all' | 'active' | 'inactive';
119
137
 
120
- interface FormData {
138
+ type FormData = Record<string, boolean> & {
121
139
  search: string;
122
- }
140
+ };
123
141
  }
@@ -1,103 +1,112 @@
1
- /**
2
- * A game settings configuration application
3
- * This form renders the settings defined via the game.settings.register API which have config = true
4
- */
5
- declare class SettingsConfig extends FormApplication<FormApplication.Options, SettingsConfig.Data> {
6
- /**
7
- * @override
8
- * @defaultValue
9
- * ```typescript
10
- * mergeObject(super.defaultOptions, {
11
- * title: game.i18n.localize("SETTINGS.Title"),
12
- * id: "client-settings",
13
- * template: "templates/sidebar/apps/settings-config.html",
14
- * width: 600,
15
- * height: "auto",
16
- * tabs: [
17
- * {navSelector: ".tabs", contentSelector: ".content", initial: "core"}
18
- * ]
19
- * })
20
- * ```
21
- */
22
- static get defaultOptions(): typeof FormApplication['defaultOptions'];
1
+ import type { ConfiguredDocumentClass } from '../../../../types/helperTypes';
23
2
 
3
+ declare global {
24
4
  /**
25
- * @param options - (unused)
26
- * @override
5
+ * The Application responsible for displaying and editing a single Setting document.
6
+ * This form renders the settings defined via the game.settings.register API which have config = true
7
+ * @typeParam Options - The type of the options object
8
+ * @typeParam Data - The data structure used to render the handlebars template.
27
9
  */
28
- getData(options?: Partial<FormApplication.Options>): SettingsConfig.Data;
10
+ class SettingsConfig<
11
+ Options extends FormApplication.Options = FormApplication.Options,
12
+ Data extends object = SettingsConfig.Data
13
+ > extends FormApplication<Options, Data> {
14
+ /**
15
+ * @override
16
+ * @defaultValue
17
+ * ```typescript
18
+ * foundry.utils.mergeObject(super.defaultOptions, {
19
+ * title: game.i18n.localize("SETTINGS.Title"),
20
+ * id: "client-settings",
21
+ * template: "templates/sidebar/apps/settings-config.html",
22
+ * width: 600,
23
+ * height: "auto",
24
+ * tabs: [{ navSelector: ".tabs", contentSelector: ".content", initial: "core" }],
25
+ * })
26
+ * ```
27
+ */
28
+ static get defaultOptions(): typeof FormApplication['defaultOptions'];
29
29
 
30
- /** @override */
31
- activateListeners(html: JQuery): void;
30
+ /**
31
+ * @param options - (unused)
32
+ * @override
33
+ */
34
+ getData(options?: Partial<Options>): Data | Promise<Data>;
32
35
 
33
- /**
34
- * Handle activating the button to configure User Role permissions
35
- * @param event - The initial button click event
36
- */
37
- protected _onClickSubmenu(event: JQuery.ClickEvent): void;
36
+ /** @override */
37
+ activateListeners(html: JQuery): void;
38
38
 
39
- /**
40
- * Handle button click to reset default settings
41
- * @param event - The initial button click event
42
- */
43
- protected _onResetDefaults(event: JQuery.ClickEvent): void;
39
+ /**
40
+ * Handle activating the button to configure User Role permissions
41
+ * @param event - The initial button click event
42
+ * @internal
43
+ */
44
+ protected _onClickSubmenu(event: JQuery.ClickEvent): void;
44
45
 
45
- /**
46
- * @param event - (unused)
47
- * @override
48
- */
49
- protected _updateObject(event: Event, formData: SettingsConfig.FormData): Promise<void>;
50
- }
46
+ /**
47
+ * Handle button click to reset default settings
48
+ * @param event - The initial button click event
49
+ * @internal
50
+ */
51
+ protected _onResetDefaults(event: JQuery.ClickEvent): void;
51
52
 
52
- declare namespace SettingsConfig {
53
- interface Data {
54
- user: User;
55
- canConfigure: boolean;
56
- systemTitle: Game['system']['data']['title'];
57
- data: Data.Data;
53
+ /** @override */
54
+ protected _updateObject(event: Event, formData: SettingsConfig.FormData): Promise<void>;
58
55
  }
59
56
 
60
- namespace Data {
57
+ namespace SettingsConfig {
61
58
  interface Data {
62
- core: {
63
- version: Game['data']['version'];
64
- menus: ClientSettings.CompleteMenuSetting[];
65
- settings: Setting[];
66
- none: boolean;
67
- };
68
- system: {
69
- title: Game['system']['data']['title'];
70
- menus: ClientSettings.CompleteMenuSetting[];
71
- settings: Setting[];
72
- none: boolean;
73
- };
74
- modules: Record<string, { title: string; menus: ClientSettings.CompleteMenuSetting[]; settings: Setting[] }>;
59
+ user: StoredDocument<InstanceType<ConfiguredDocumentClass<typeof User>>>;
60
+ canConfigure: boolean;
61
+ systemTitle: Game['system']['data']['title'];
62
+ data: Data.Data;
75
63
  }
76
64
 
77
- interface Setting extends foundry.utils.Duplicated<ClientSettings.CompleteSetting> {
78
- name: string;
79
- hint: string;
80
- value: ReturnType<ClientSettings['get']>;
81
- type: string;
82
- isCheckbox: boolean;
83
- isSelect: boolean;
84
- isRange: boolean;
65
+ namespace Data {
66
+ interface Data {
67
+ core: {
68
+ version: string;
69
+ menus: ClientSettings.CompleteMenuSetting[];
70
+ settings: Setting[];
71
+ none: boolean;
72
+ };
73
+ system: {
74
+ title: Game['system']['data']['title'];
75
+ menus: ClientSettings.CompleteMenuSetting[];
76
+ settings: Setting[];
77
+ none: boolean;
78
+ };
79
+ modules: { title: string; menus: ClientSettings.CompleteMenuSetting[]; settings: Setting[] }[];
80
+ }
81
+
82
+ interface Setting extends Omit<ClientSettings.CompleteSetting, 'type'> {
83
+ id: string;
84
+ name: string;
85
+ hint: string;
86
+ value: unknown;
87
+ type: string;
88
+ isCheckbox: boolean;
89
+ isSelect: boolean;
90
+ isRange: boolean;
91
+ filePickerType: FilePicker.Type | undefined;
92
+ }
85
93
  }
86
- }
87
94
 
88
- interface FormData {
89
- 'core.animateRollTable': boolean;
90
- 'core.chatBubbles': boolean;
91
- 'core.chatBubblesPan': boolean;
92
- 'core.coneTemplateType': 'round' | 'flat';
93
- 'core.language': string;
94
- 'core.leftClickRelease': boolean;
95
- 'core.lightAnimation': boolean;
96
- 'core.maxFPS': number;
97
- 'core.mipmap': boolean;
98
- 'core.softShadows': boolean;
99
- 'core.tokenDragPreview': boolean;
100
- 'core.visionAnimation': boolean;
101
- [key: string]: unknown;
95
+ interface FormData {
96
+ 'core.animateRollTable': boolean;
97
+ 'core.chatBubbles': boolean;
98
+ 'core.chatBubblesPan': boolean;
99
+ 'core.coneTemplateType': 'round' | 'flat';
100
+ 'core.language': string;
101
+ 'core.leftClickRelease': boolean;
102
+ 'core.lightAnimation': boolean;
103
+ 'core.maxFPS': number;
104
+ 'core.mipmap': boolean;
105
+ 'core.noCanvas': boolean;
106
+ 'core.softShadows': boolean;
107
+ 'core.tokenDragPreview': boolean;
108
+ 'core.visionAnimation': boolean;
109
+ [key: string]: unknown;
110
+ }
102
111
  }
103
112
  }
@@ -1,175 +1,163 @@
1
- // TODO: Remove when updating this class!!!
2
- // eslint-disable-next-line
3
- // @ts-nocheck
4
-
5
- /**
6
- * A Token Configuration Application
7
- * @typeParam P - the type of the options object
8
- */
9
- declare class TokenConfig<P extends TokenConfig.Options = TokenConfig.Options> extends FormApplication<
10
- P,
11
- TokenConfig.Data,
12
- Token
13
- > {
14
- /**
15
- * @param token - The Token object for which settings are being configured
16
- * @param options - TokenConfig ui options (see Application)
17
- */
18
- constructor(token: Token, options?: Partial<P>);
19
-
20
- /**
21
- * @override
22
- * @defaultValue
23
- * ```typescript
24
- * mergeObject(super.defaultOptions, {
25
- * classes: ["sheet", "token-sheet"],
26
- * template: "templates/scene/token-config.html",
27
- * width: 480,
28
- * height: "auto",
29
- * tabs: [{navSelector: ".tabs", contentSelector: "form", initial: "character"}]
30
- * });
31
- * ```
32
- */
33
- static get defaultOptions(): TokenConfig.Options;
34
-
35
- /** @override */
36
- get id(): string;
37
-
38
- /**
39
- * Convenience access for the Token object
40
- */
41
- get token(): this['object'];
42
-
43
- /**
44
- * Convenience access for the Token's linked Actor, if any
45
- */
46
- get actor(): this['token']['actor'];
47
-
48
- /** @override */
49
- get title(): string;
50
-
51
- /**
52
- * @param options - (unused)
53
- * @override
54
- */
55
- getData(options?: Partial<P>): Promise<TokenConfig.Data>;
56
-
57
- /** @override */
58
- render(force?: boolean, options?: Application.RenderOptions<P>): Promise<void>;
59
-
60
- /**
61
- * Inspect the Actor data model and identify the set of attributes which could be used for a Token Bar
62
- */
63
- static getTrackedAttributeChoices(attributes: TokenConfig.Attributes): Partial<Record<string, string[]>>;
64
-
65
- /**
66
- * Test whether an individual data object is a valid attribute - containing both a "value" and "max" field
67
- * @param data - The data object to search
68
- * @param _path - The attribute path being recursed
69
- * (default: `[]`)
70
- * @returns An object containing both bar and value attribute paths
71
- */
72
- protected static getTrackedAttributes(data: object, _path: string[]): TokenConfig.Attributes;
1
+ import type { ConfiguredDocumentClassForName, ConstructorDataType } from '../../../../types/helperTypes';
73
2
 
3
+ declare global {
74
4
  /**
75
- * Get an Object of image paths and filenames to display in the Token sheet
5
+ * The Application responsible for configuring a single Token document within a parent Scene.
6
+ * @typeParam Options - The type of the options object
7
+ * @typeParam Data - The data structure used to render the handlebars template.
76
8
  */
77
- protected _getAlternateTokenImages(): Promise<Partial<Record<string, string>>>;
9
+ class TokenConfig<
10
+ Options extends FormApplication.Options = FormApplication.Options,
11
+ Data extends object = TokenConfig.Data<Options>
12
+ > extends FormApplication<
13
+ Options,
14
+ Data,
15
+ InstanceType<ConfiguredDocumentClassForName<'Token'>> | InstanceType<ConfiguredDocumentClassForName<'Actor'>>
16
+ > {
17
+ constructor(
18
+ object:
19
+ | InstanceType<ConfiguredDocumentClassForName<'Token'>>
20
+ | InstanceType<ConfiguredDocumentClassForName<'Actor'>>,
21
+ options?: Partial<Options>
22
+ );
23
+
24
+ token: InstanceType<ConfiguredDocumentClassForName<'Token'>> | PrototypeTokenDocument;
78
25
 
79
- /** @override */
80
- activateListeners(html: JQuery): void;
26
+ /**
27
+ * @override
28
+ * @defaultValue
29
+ * ```typescript
30
+ * foundry.utils.mergeObject(super.defaultOptions, {
31
+ * classes: ["sheet", "token-sheet"],
32
+ * template: "templates/scene/token-config.html",
33
+ * width: 480,
34
+ * height: "auto",
35
+ * tabs: [{ navSelector: ".tabs", contentSelector: "form", initial: "character" }],
36
+ * })
37
+ * ```
38
+ */
39
+ static get defaultOptions(): FormApplication.Options;
81
40
 
82
- /** @override */
83
- protected _getSubmitData(
84
- updateData?: TokenConfig.FormData
85
- ): ReturnType<FormApplication['_getSubmitData']> & { lightAlpha: number };
41
+ /** @override */
42
+ get id(): string;
86
43
 
87
- /** @override */
88
- protected _updateObject(event: Event, formData: TokenConfig.FormData): Promise<void>;
44
+ /**
45
+ * A convenience accessor to test whether we are configuring the prototype Token for an Actor.
46
+ */
47
+ get isPrototype(): boolean;
89
48
 
90
- /**
91
- * Update certain fields of a linked actor token when token configuration is changed
92
- * @param tokenData - The new token data
93
- */
94
- protected _updateActorData(tokenData: TokenConfig.FormData): ReturnType<Actor['update']> | void;
49
+ /**
50
+ * Convenience access to the Actor document that this Token represents
51
+ */
52
+ get actor(): InstanceType<ConfiguredDocumentClassForName<'Actor'>>;
95
53
 
96
- /**
97
- * Handle Token assignment requests to update the default prototype Token
98
- * @param event - The left-click event on the assign token button
99
- */
100
- protected _onAssignToken(event: JQuery.ClickEvent): Promise<void>;
54
+ /** @override */
55
+ get title(): string;
101
56
 
102
- /**
103
- * Handle changing the attribute bar in the drop-down selector to update the default current and max value
104
- */
105
- protected _onBarChange(ev: JQuery.ChangeEvent): Promise<void>;
106
- }
57
+ /** @override */
58
+ getData(options?: Partial<Options>): Data | Promise<Data>;
107
59
 
108
- declare namespace TokenConfig {
109
- interface Attributes {
110
- bar: string[][];
111
- value: string[][];
112
- }
60
+ /** @override */
61
+ render(force?: boolean, options?: Application.RenderOptions<Options>): Promise<this>;
113
62
 
114
- interface Data {
115
- cssClasses: 'prototype' | '';
116
- isPrototype: Options['configureDefault'];
117
- hasAlternates: boolean;
118
- alternateImages: TokenConfig['_getAlternateTokenImages'] | [];
119
- object: foundry.utils.Duplicated<TokenConfig['token']['data']>;
120
- options: TokenConfig['options'];
121
- gridUnits: Scene['data']['gridUnits'] | Game['system']['gridUnits'];
122
- barAttributes: ReturnType<typeof TokenConfig['getTrackedAttributeChoices']>;
123
- bar1: ReturnType<TokenConfig['object']['getBarAttribute']>;
124
- bar2: ReturnType<TokenConfig['object']['getBarAttribute']>;
125
- displayModes: Record<foundry.CONST.TokenDisplayMode, string>;
126
- actors: Array<Pick<Actor, '_id' | 'name'>>;
127
- dispositions: Record<foundry.CONST.TokenDisposition, string>;
128
- lightAnimations: { [Key in keyof typeof CONFIG['Canvas']['lightAnimations']]: string } & { '': 'None' };
129
- lightAlpha: number;
130
- isGM: User['isGM'];
131
- }
63
+ /**
64
+ * Get an Object of image paths and filenames to display in the Token sheet
65
+ * @internal
66
+ */
67
+ protected _getAlternateTokenImages(): Promise<Record<string, string>>;
68
+
69
+ /** @override */
70
+ activateListeners(html: JQuery): void;
71
+
72
+ /** @override */
73
+ protected _getSubmitData(
74
+ updateData?: ConstructorDataType<foundry.data.TokenData>
75
+ ): Record<string, unknown> & { lightAlpha: number };
76
+
77
+ /** @override */
78
+ protected _updateObject(
79
+ event: Event,
80
+ formData: TokenConfig.FormData
81
+ ): Promise<
82
+ | InstanceType<ConfiguredDocumentClassForName<'Token'>>
83
+ | InstanceType<ConfiguredDocumentClassForName<'Actor'>>
84
+ | undefined
85
+ >;
132
86
 
133
- interface FormData {
134
- actorId: Token.Data['actorId'];
135
- actorLink: Token.Data['actorLink'];
136
- alternateImages?: string;
137
- 'bar1.attribute': Token.Data['bar1']['attribute'];
138
- 'bar2.attribute': Token.Data['bar2']['attribute'];
139
- brightLight: Token.Data['brightLight'] | null;
140
- brightSight: Token.Data['brightSight'] | null;
141
- dimLight: Token.Data['dimLight'] | null;
142
- dimSight: Token.Data['dimSight'] | null;
143
- displayBars: Token.Data['displayBars'];
144
- displayName: Token.Data['displayName'];
145
- disposition: Token.Data['disposition'];
146
- elevation: Token.Data['elevation'] | null;
147
- height: Token.Data['height'] | null;
148
- img: Token.Data['img'];
149
- lightAlpha: Token.Data['lightAlpha'];
150
- lightAngle: Token.Data['lightAngle'] | null;
151
- 'lightAnimation.intensity': Token.Data['lightAnimation']['intensity'];
152
- 'lightAnimation.speed': Token.Data['lightAnimation']['speed'];
153
- 'lightAnimation.type': Token.Data['lightAnimation']['type'];
154
- lightColor: Token.Data['lightColor'];
155
- lockRotation: Token.Data['lockRotation'];
156
- mirrorX: Token.Data['mirrorX'];
157
- mirrorY: Token.Data['mirrorY'];
158
- name: Token.Data['name'];
159
- rotation: Token.Data['rotation'] | null;
160
- scale: Token.Data['scale'];
161
- sightAngle: Token.Data['sightAngle'] | null;
162
- tint: Token.Data['tint'];
163
- vision: Token.Data['vision'];
164
- width: Token.Data['width'] | null;
165
- x: Token.Data['x'] | null;
166
- y: Token.Data['y'] | null;
167
- }
87
+ /**
88
+ * Handle Token assignment requests to update the default prototype Token
89
+ * @param event - The left-click event on the assign token button
90
+ * @internal
91
+ */
92
+ protected _onAssignToken(event: JQuery.ClickEvent): void;
168
93
 
169
- interface Options extends FormApplication.Options {
170
94
  /**
171
- * Configure the default actor token on submit
95
+ * Handle changing the attribute bar in the drop-down selector to update the default current and max value
96
+ * @internal
172
97
  */
173
- configureDefault?: boolean;
98
+ protected _onBarChange(ev: JQuery.ChangeEvent): void;
99
+ }
100
+
101
+ namespace TokenConfig {
102
+ interface Attributes {
103
+ bar: string[][];
104
+ value: string[][];
105
+ }
106
+
107
+ interface Data<Options extends FormApplication.Options = FormApplication.Options> {
108
+ cssClasses: string;
109
+ isPrototype: boolean;
110
+ hasAlternates: boolean;
111
+ alternateImages: Record<string, string> | [];
112
+ object: foundry.data.PrototypeTokenData | foundry.data.TokenData;
113
+ options: Options;
114
+ gridUnits: string | undefined;
115
+ barAttributes: Record<string, string[]>;
116
+ bar1: ReturnType<TokenDocument['getBarAttribute']>;
117
+ bar2: ReturnType<TokenDocument['getBarAttribute']>;
118
+ displayModes: Record<foundry.CONST.TokenDisplayMode, string>;
119
+ actors: { _id: string; name: string }[];
120
+ dispositions: Record<foundry.CONST.TokenDisposition, string>;
121
+ lightAnimations: { [Key in keyof typeof CONFIG.Canvas.lightAnimations]: string } & { '': string };
122
+ lightAlpha: number;
123
+ isGM: boolean;
124
+ }
125
+
126
+ interface FormData {
127
+ actorId: string;
128
+ actorLink: boolean;
129
+ alternateImages?: string;
130
+ alpha: number;
131
+ 'bar1.attribute': string;
132
+ 'bar2.attribute': string;
133
+ brightLight: number | null;
134
+ brightSight: number | null;
135
+ dimLight: number | null;
136
+ dimSight: number | null;
137
+ displayBars: foundry.CONST.TokenDisplayMode;
138
+ displayName: foundry.CONST.TokenDisplayMode;
139
+ disposition: foundry.CONST.TokenDisposition;
140
+ elevation: number | null;
141
+ height: number | null;
142
+ img: string;
143
+ lightAlpha: number;
144
+ lightAngle: number | null;
145
+ 'lightAnimation.intensity': number;
146
+ 'lightAnimation.speed': number;
147
+ 'lightAnimation.type': string;
148
+ lightColor: string;
149
+ lockRotation: boolean;
150
+ mirrorX: boolean;
151
+ mirrorY: boolean;
152
+ name: StringTerm;
153
+ rotation: number | null;
154
+ scale: number;
155
+ sightAngle: number | null;
156
+ tint: string;
157
+ vision: boolean;
158
+ width: number | null;
159
+ x: number | null;
160
+ y: number | null;
161
+ }
174
162
  }
175
163
  }