@league-of-foundry-developers/foundry-vtt-types 13.346.0-beta.20250718083608 → 13.346.0-beta.20250720082736

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 (33) hide show
  1. package/package.json +1 -1
  2. package/src/foundry/client/applications/ui/game-pause.d.mts +17 -2
  3. package/src/foundry/client/applications/ui/hotbar.d.mts +96 -2
  4. package/src/foundry/client/applications/ui/main-menu.d.mts +29 -2
  5. package/src/foundry/client/applications/ui/players.d.mts +77 -2
  6. package/src/foundry/client/applications/ui/region-legend.d.mts +1 -0
  7. package/src/foundry/client/applications/ui/scene-navigation.d.mts +1 -1
  8. package/src/foundry/client/canvas/containers/advanced/cached-container.d.mts +15 -15
  9. package/src/foundry/client/canvas/containers/advanced/full-canvas-mixin.d.mts +2 -2
  10. package/src/foundry/client/canvas/containers/elements/control-icon.d.mts +12 -32
  11. package/src/foundry/client/canvas/containers/elements/cursor.d.mts +14 -1
  12. package/src/foundry/client/canvas/containers/elements/door-control.d.mts +2 -2
  13. package/src/foundry/client/canvas/containers/elements/door-mesh.d.mts +215 -3
  14. package/src/foundry/client/canvas/containers/elements/grid-highlight.d.mts +3 -3
  15. package/src/foundry/client/canvas/containers/elements/grid-mesh.d.mts +4 -4
  16. package/src/foundry/client/canvas/containers/elements/particles/leaves.d.mts +7 -6
  17. package/src/foundry/client/canvas/containers/elements/particles/particle-effect.d.mts +4 -5
  18. package/src/foundry/client/canvas/containers/elements/point-source-mesh.d.mts +18 -23
  19. package/src/foundry/client/canvas/containers/elements/precise-text.d.mts +9 -10
  20. package/src/foundry/client/canvas/containers/elements/quad-mesh.d.mts +1 -2
  21. package/src/foundry/client/canvas/containers/elements/resize-handle.d.mts +37 -11
  22. package/src/foundry/client/canvas/containers/elements/sprite-mesh.d.mts +34 -26
  23. package/src/foundry/client/canvas/layers/masks/depth.d.mts +1 -1
  24. package/src/foundry/client/canvas/layers/masks/occlusion.d.mts +1 -1
  25. package/src/foundry/client/canvas/primary/primary-canvas-container.d.mts +32 -0
  26. package/src/foundry/client/canvas/primary/primary-canvas-object.d.mts +39 -38
  27. package/src/foundry/client/canvas/primary/primary-graphics.d.mts +22 -18
  28. package/src/foundry/client/canvas/primary/primary-occludable-object.d.mts +59 -29
  29. package/src/foundry/client/canvas/primary/primary-particle-effect.d.mts +51 -0
  30. package/src/foundry/client/canvas/primary/primary-sprite-mesh.d.mts +72 -66
  31. package/src/foundry/client/config.d.mts +444 -311
  32. package/src/foundry/client/documents/wall.d.mts +13 -2
  33. package/src/foundry/client/hooks.d.mts +14 -4
@@ -18,8 +18,9 @@ import type * as canvasLayers from "#client/canvas/layers/_module.d.mts";
18
18
  import type * as canvasGroups from "#client/canvas/groups/_module.d.mts";
19
19
  import type * as perception from "#client/canvas/perception/_module.d.mts";
20
20
  import type * as placeables from "#client/canvas/placeables/_module.d.mts";
21
- import type { DoorControl } from "#client/canvas/containers/_module.d.mts";
21
+ import type { DoorControl, DoorMesh } from "#client/canvas/containers/_module.d.mts";
22
22
  import type * as geometry from "#client/canvas/geometry/_module.d.mts";
23
+ import type { CanvasAnimation } from "#client/canvas/animation/_module.d.mts";
23
24
 
24
25
  import SimplePeerAVClient = foundry.av.clients.SimplePeerAVClient;
25
26
 
@@ -2068,279 +2069,9 @@ declare global {
2068
2069
  /** @defaultValue `1` */
2069
2070
  thresholdAttenuationMultiplier: number;
2070
2071
 
2071
- doorSounds: {
2072
- [sound: string]: CONFIG.WallDoorSound;
2072
+ doorSounds: InterfaceToObject<CONFIG.Wall.DoorSounds>;
2073
2073
 
2074
- /**
2075
- * @defaultValue
2076
- * ```ts
2077
- * {
2078
- * label: "WALLS.DoorSound.FuturisticFast",
2079
- * close: "sounds/doors/futuristic/close-fast.ogg",
2080
- * lock: "sounds/doors/futuristic/lock.ogg",
2081
- * open: "sounds/doors/futuristic/open-fast.ogg",
2082
- * test: "sounds/doors/futuristic/test.ogg",
2083
- * unlock: "sounds/doors/futuristic/unlock.ogg"
2084
- * }
2085
- * ```
2086
- */
2087
- futuristicFast: CONFIG.WallDoorSound;
2088
-
2089
- /**
2090
- * @defaultValue
2091
- * ```ts
2092
- * {
2093
- * label: "WALLS.DoorSound.FuturisticHydraulic",
2094
- * close: "sounds/doors/futuristic/close-hydraulic.ogg",
2095
- * lock: "sounds/doors/futuristic/lock.ogg",
2096
- * open: "sounds/doors/futuristic/open-hydraulic.ogg",
2097
- * test: "sounds/doors/futuristic/test.ogg",
2098
- * unlock: "sounds/doors/futuristic/unlock.ogg"
2099
- * }
2100
- * ```
2101
- */
2102
- futuristicHydraulic: CONFIG.WallDoorSound;
2103
-
2104
- /**
2105
- * @defaultValue
2106
- * ```ts
2107
- * {
2108
- * label: "WALLS.DoorSound.FuturisticForcefield",
2109
- * close: "sounds/doors/futuristic/close-forcefield.ogg",
2110
- * lock: "sounds/doors/futuristic/lock.ogg",
2111
- * open: "sounds/doors/futuristic/open-forcefield.ogg",
2112
- * test: "sounds/doors/futuristic/test-forcefield.ogg",
2113
- * unlock: "sounds/doors/futuristic/unlock.ogg"
2114
- * }
2115
- * ```
2116
- */
2117
- futuristicForcefield: CONFIG.WallDoorSound;
2118
-
2119
- /**
2120
- * @defaultValue
2121
- * ```ts
2122
- * {
2123
- * label: "WALLS.DoorSound.Industrial",
2124
- * close: "sounds/doors/industrial/close.ogg",
2125
- * lock: "sounds/doors/industrial/lock.ogg",
2126
- * open: "sounds/doors/industrial/open.ogg",
2127
- * test: "sounds/doors/industrial/test.ogg",
2128
- * unlock: "sounds/doors/industrial/unlock.ogg"
2129
- * }
2130
- * ```
2131
- */
2132
- industrial: CONFIG.WallDoorSound;
2133
-
2134
- /**
2135
- * @defaultValue
2136
- * ```ts
2137
- * {
2138
- * label: "WALLS.DoorSound.IndustrialCreaky",
2139
- * close: "sounds/doors/industrial/close-creaky.ogg",
2140
- * lock: "sounds/doors/industrial/lock.ogg",
2141
- * open: "sounds/doors/industrial/open-creaky.ogg",
2142
- * test: "sounds/doors/industrial/test.ogg",
2143
- * unlock: "sounds/doors/industrial/unlock.ogg"
2144
- * }
2145
- * ```
2146
- */
2147
- industrialCreaky: CONFIG.WallDoorSound;
2148
-
2149
- /**
2150
- * @defaultValue
2151
- * ```ts
2152
- * {
2153
- * label: "WALLS.DoorSound.Jail",
2154
- * close: "sounds/doors/jail/close.ogg",
2155
- * lock: "sounds/doors/jail/lock.ogg",
2156
- * open: "sounds/doors/jail/open.ogg",
2157
- * test: "sounds/doors/jail/test.ogg",
2158
- * unlock: "sounds/doors/jail/unlock.ogg"
2159
- * }
2160
- * ```
2161
- */
2162
- jail: CONFIG.WallDoorSound;
2163
-
2164
- /**
2165
- * @defaultValue
2166
- * ```ts
2167
- * {
2168
- * label: "WALLS.DoorSound.MagicDoor",
2169
- * close: "sounds/doors/magic/door-close.ogg",
2170
- * lock: "sounds/doors/magic/lock.ogg",
2171
- * open: "sounds/doors/magic/door-open.ogg",
2172
- * test: "sounds/doors/magic/test.ogg",
2173
- * unlock: "sounds/doors/magic/unlock.ogg"
2174
- * }
2175
- * ```
2176
- */
2177
- magicDoor: CONFIG.WallDoorSound;
2178
-
2179
- /**
2180
- * @defaultValue
2181
- * ```ts
2182
- * {
2183
- * label: "WALLS.DoorSound.MagicWall",
2184
- * close: "sounds/doors/magic/wall-close.ogg",
2185
- * lock: "sounds/doors/magic/lock.ogg",
2186
- * open: "sounds/doors/magic/wall-open.ogg",
2187
- * test: "sounds/doors/magic/test.ogg",
2188
- * unlock: "sounds/doors/magic/unlock.ogg"
2189
- * }
2190
- * ```
2191
- */
2192
- magicWall: CONFIG.WallDoorSound;
2193
-
2194
- /**
2195
- * @defaultValue
2196
- * ```ts
2197
- * {
2198
- * label: "WALLS.DoorSound.Metal",
2199
- * close: "sounds/doors/metal/close.ogg",
2200
- * lock: "sounds/doors/metal/lock.ogg",
2201
- * open: "sounds/doors/metal/open.ogg",
2202
- * test: "sounds/doors/metal/test.ogg",
2203
- * unlock: "sounds/doors/metal/unlock.ogg"
2204
- * }
2205
- * ```
2206
- */
2207
- metal: CONFIG.WallDoorSound;
2208
-
2209
- /**
2210
- * @defaultValue
2211
- * ```ts
2212
- * {
2213
- * label: "WALLS.DoorSound.SlidingMetal",
2214
- * close: "sounds/doors/shutter/close.ogg",
2215
- * lock: "sounds/doors/shutter/lock.ogg",
2216
- * open: "sounds/doors/shutter/open.ogg",
2217
- * test: "sounds/doors/shutter/test.ogg",
2218
- * unlock: "sounds/doors/shutter/unlock.ogg"
2219
- * }
2220
- * ```
2221
- */
2222
- slidingMetal: CONFIG.WallDoorSound;
2223
-
2224
- /**
2225
- * @defaultValue
2226
- * ```ts
2227
- * {
2228
- * label: "WALLS.DoorSound.SlidingModern",
2229
- * close: "sounds/doors/sliding/close.ogg",
2230
- * lock: "sounds/doors/sliding/lock.ogg",
2231
- * open: "sounds/doors/sliding/open.ogg",
2232
- * test: "sounds/doors/sliding/test.ogg",
2233
- * unlock: "sounds/doors/sliding/unlock.ogg"
2234
- * }
2235
- * ```
2236
- */
2237
- slidingModern: CONFIG.WallDoorSound;
2238
-
2239
- /**
2240
- * @defaultValue
2241
- * ```ts
2242
- * {
2243
- * label: "WALLS.DoorSound.SlidingWood",
2244
- * close: "sounds/doors/sliding/close-wood.ogg",
2245
- * lock: "sounds/doors/sliding/lock.ogg",
2246
- * open: "sounds/doors/sliding/open-wood.ogg",
2247
- * test: "sounds/doors/sliding/test.ogg",
2248
- * unlock: "sounds/doors/sliding/unlock.ogg"
2249
- * }
2250
- * ```
2251
- */
2252
- slidingWood: CONFIG.WallDoorSound;
2253
-
2254
- /**
2255
- * @defaultValue
2256
- * ```ts
2257
- * {
2258
- * label: "WALLS.DoorSound.StoneBasic",
2259
- * close: "sounds/doors/stone/close.ogg",
2260
- * lock: "sounds/doors/stone/lock.ogg",
2261
- * open: "sounds/doors/stone/open.ogg",
2262
- * test: "sounds/doors/stone/test.ogg",
2263
- * unlock: "sounds/doors/stone/unlock.ogg"
2264
- * }
2265
- * ```
2266
- */
2267
- stoneBasic: CONFIG.WallDoorSound;
2268
-
2269
- /**
2270
- * @defaultValue
2271
- * ```ts
2272
- * {
2273
- * label: "WALLS.DoorSound.StoneRocky",
2274
- * close: "sounds/doors/stone/close-rocky.ogg",
2275
- * lock: "sounds/doors/stone/lock.ogg",
2276
- * open: "sounds/doors/stone/open-rocky.ogg",
2277
- * test: "sounds/doors/stone/test.ogg",
2278
- * unlock: "sounds/doors/stone/unlock.ogg"
2279
- * }
2280
- * ```
2281
- */
2282
- stoneRocky: CONFIG.WallDoorSound;
2283
-
2284
- /**
2285
- * @defaultValue
2286
- * ```ts
2287
- * {
2288
- * label: "WALLS.DoorSound.StoneSandy",
2289
- * close: "sounds/doors/stone/close-sandy.ogg",
2290
- * lock: "sounds/doors/stone/lock.ogg",
2291
- * open: "sounds/doors/stone/open-sandy.ogg",
2292
- * test: "sounds/doors/stone/test.ogg",
2293
- * unlock: "sounds/doors/stone/unlock.ogg"
2294
- * }
2295
- * ```
2296
- */
2297
- stoneSandy: CONFIG.WallDoorSound;
2298
-
2299
- /**
2300
- * @defaultValue
2301
- * ```ts
2302
- * {
2303
- * label: "WALLS.DoorSound.WoodBasic",
2304
- * close: "sounds/doors/wood/close.ogg",
2305
- * lock: "sounds/doors/wood/lock.ogg",
2306
- * open: "sounds/doors/wood/open.ogg",
2307
- * test: "sounds/doors/wood/test.ogg",
2308
- * unlock: "sounds/doors/wood/unlock.ogg"
2309
- * }
2310
- * ```
2311
- */
2312
- woodBasic: CONFIG.WallDoorSound;
2313
-
2314
- /**
2315
- * @defaultValue
2316
- * ```ts
2317
- * {
2318
- * label: "WALLS.DoorSound.WoodCreaky",
2319
- * close: "sounds/doors/wood/close-creaky.ogg",
2320
- * lock: "sounds/doors/wood/lock.ogg",
2321
- * open: "sounds/doors/wood/open-creaky.ogg",
2322
- * test: "sounds/doors/wood/test.ogg",
2323
- * unlock: "sounds/doors/wood/unlock.ogg"
2324
- * }
2325
- * ```
2326
- */
2327
- woodCreaky: CONFIG.WallDoorSound;
2328
-
2329
- /**
2330
- * @defaultValue
2331
- * ```ts
2332
- * {
2333
- * label: "WALLS.DoorSound.WoodHeavy",
2334
- * close: "sounds/doors/wood/close-heavy.ogg",
2335
- * lock: "sounds/doors/wood/lock.ogg",
2336
- * open: "sounds/doors/wood/open-heavy.ogg",
2337
- * test: "sounds/doors/wood/test.ogg",
2338
- * unlock: "sounds/doors/wood/unlock.ogg"
2339
- * }
2340
- * ```
2341
- */
2342
- woodHeavy: CONFIG.WallDoorSound;
2343
- };
2074
+ animationTypes: InterfaceToObject<CONFIG.Wall.DoorAnimations>;
2344
2075
  };
2345
2076
 
2346
2077
  /**
@@ -3480,44 +3211,8 @@ declare global {
3480
3211
  }
3481
3212
  }
3482
3213
 
3483
- /** @privateRemarks Foundry does not document the array options */
3484
- interface WallDoorSound {
3485
- /** A localization string label */
3486
- label: string;
3487
-
3488
- /**
3489
- * A sound path when the door is closed
3490
- * @remarks If an array is provided, a random entry is chosen
3491
- */
3492
- close?: string | string[];
3493
-
3494
- /**
3495
- * A sound path when the door becomes locked
3496
- * @remarks If an array is provided, a random entry is chosen
3497
- */
3498
- lock?: string | string[];
3499
-
3500
- /**
3501
- * A sound path when opening the door
3502
- * @remarks If an array is provided, a random entry is chosen
3503
- */
3504
- open?: string | string[];
3505
-
3506
- /**
3507
- * A sound path when attempting to open a locked door
3508
- * @remarks If an array is provided, a random entry is chosen
3509
- */
3510
- test?: string | string[];
3511
-
3512
- /**
3513
- * A sound path when the door becomes unlocked
3514
- * @remarks If an array is provided, a random entry is chosen
3515
- */
3516
- unlock?: string | string[];
3517
- }
3518
-
3519
- namespace Dice {
3520
- type RollMode = keyof RollModes;
3214
+ namespace Dice {
3215
+ type RollMode = keyof RollModes;
3521
3216
 
3522
3217
  interface RollModes {
3523
3218
  [rollMode: Brand<string, "CONFIG.Dice.RollMode">]: RollModeConfig;
@@ -3731,6 +3426,444 @@ declare global {
3731
3426
  ago: typeof foundry.data.CalendarData.formatAgo;
3732
3427
  }
3733
3428
  }
3429
+
3430
+ namespace Wall {
3431
+ /** @internal */
3432
+ type _DoorSoundConfig = InexactPartial<{
3433
+ /**
3434
+ * One or more sound paths for when the door is closed
3435
+ * @remarks If an array is provided, a random entry is chosen
3436
+ */
3437
+ close: string | string[];
3438
+
3439
+ /**
3440
+ * One or more sound paths for when the door becomes locked
3441
+ * @remarks If an array is provided, a random entry is chosen
3442
+ */
3443
+ lock: string | string[];
3444
+
3445
+ /**
3446
+ * One or more sound paths for when opening the door
3447
+ * @remarks If an array is provided, a random entry is chosen
3448
+ */
3449
+ open: string | string[];
3450
+
3451
+ /**
3452
+ * One or more sound paths for when attempting to open a locked door
3453
+ * @remarks If an array is provided, a random entry is chosen
3454
+ */
3455
+ test: string | string[];
3456
+
3457
+ /**
3458
+ * One or more sound paths for when the door becomes unlocked
3459
+ * @remarks If an array is provided, a random entry is chosen
3460
+ */
3461
+ unlock: string | string[];
3462
+ }>;
3463
+
3464
+ interface DoorSoundConfig extends _DoorSoundConfig {
3465
+ /** A localization string label */
3466
+ label: string;
3467
+ }
3468
+
3469
+ type DoorSound = Brand<string, "CONFIG.Wall.doorSounds">;
3470
+
3471
+ interface DoorSounds {
3472
+ [sound: DoorSound]: DoorSoundConfig;
3473
+
3474
+ /**
3475
+ * @defaultValue
3476
+ * ```ts
3477
+ * {
3478
+ * label: "WALLS.DoorSound.FuturisticFast",
3479
+ * close: "sounds/doors/futuristic/close-fast.ogg",
3480
+ * lock: "sounds/doors/futuristic/lock.ogg",
3481
+ * open: "sounds/doors/futuristic/open-fast.ogg",
3482
+ * test: "sounds/doors/futuristic/test.ogg",
3483
+ * unlock: "sounds/doors/futuristic/unlock.ogg"
3484
+ * }
3485
+ * ```
3486
+ */
3487
+ futuristicFast: DoorSoundConfig;
3488
+
3489
+ /**
3490
+ * @defaultValue
3491
+ * ```ts
3492
+ * {
3493
+ * label: "WALLS.DoorSound.FuturisticHydraulic",
3494
+ * close: "sounds/doors/futuristic/close-hydraulic.ogg",
3495
+ * lock: "sounds/doors/futuristic/lock.ogg",
3496
+ * open: "sounds/doors/futuristic/open-hydraulic.ogg",
3497
+ * test: "sounds/doors/futuristic/test.ogg",
3498
+ * unlock: "sounds/doors/futuristic/unlock.ogg"
3499
+ * }
3500
+ * ```
3501
+ */
3502
+ futuristicHydraulic: DoorSoundConfig;
3503
+
3504
+ /**
3505
+ * @defaultValue
3506
+ * ```ts
3507
+ * {
3508
+ * label: "WALLS.DoorSound.FuturisticForcefield",
3509
+ * close: "sounds/doors/futuristic/close-forcefield.ogg",
3510
+ * lock: "sounds/doors/futuristic/lock.ogg",
3511
+ * open: "sounds/doors/futuristic/open-forcefield.ogg",
3512
+ * test: "sounds/doors/futuristic/test-forcefield.ogg",
3513
+ * unlock: "sounds/doors/futuristic/unlock.ogg"
3514
+ * }
3515
+ * ```
3516
+ */
3517
+ futuristicForcefield: DoorSoundConfig;
3518
+
3519
+ /**
3520
+ * @defaultValue
3521
+ * ```ts
3522
+ * {
3523
+ * label: "WALLS.DoorSound.Industrial",
3524
+ * close: "sounds/doors/industrial/close.ogg",
3525
+ * lock: "sounds/doors/industrial/lock.ogg",
3526
+ * open: "sounds/doors/industrial/open.ogg",
3527
+ * test: "sounds/doors/industrial/test.ogg",
3528
+ * unlock: "sounds/doors/industrial/unlock.ogg"
3529
+ * }
3530
+ * ```
3531
+ */
3532
+ industrial: DoorSoundConfig;
3533
+
3534
+ /**
3535
+ * @defaultValue
3536
+ * ```ts
3537
+ * {
3538
+ * label: "WALLS.DoorSound.IndustrialCreaky",
3539
+ * close: "sounds/doors/industrial/close-creaky.ogg",
3540
+ * lock: "sounds/doors/industrial/lock.ogg",
3541
+ * open: "sounds/doors/industrial/open-creaky.ogg",
3542
+ * test: "sounds/doors/industrial/test.ogg",
3543
+ * unlock: "sounds/doors/industrial/unlock.ogg"
3544
+ * }
3545
+ * ```
3546
+ */
3547
+ industrialCreaky: DoorSoundConfig;
3548
+
3549
+ /**
3550
+ * @defaultValue
3551
+ * ```ts
3552
+ * {
3553
+ * label: "WALLS.DoorSound.Jail",
3554
+ * close: "sounds/doors/jail/close.ogg",
3555
+ * lock: "sounds/doors/jail/lock.ogg",
3556
+ * open: "sounds/doors/jail/open.ogg",
3557
+ * test: "sounds/doors/jail/test.ogg",
3558
+ * unlock: "sounds/doors/jail/unlock.ogg"
3559
+ * }
3560
+ * ```
3561
+ */
3562
+ jail: DoorSoundConfig;
3563
+
3564
+ /**
3565
+ * @defaultValue
3566
+ * ```ts
3567
+ * {
3568
+ * label: "WALLS.DoorSound.MagicDoor",
3569
+ * close: "sounds/doors/magic/door-close.ogg",
3570
+ * lock: "sounds/doors/magic/lock.ogg",
3571
+ * open: "sounds/doors/magic/door-open.ogg",
3572
+ * test: "sounds/doors/magic/test.ogg",
3573
+ * unlock: "sounds/doors/magic/unlock.ogg"
3574
+ * }
3575
+ * ```
3576
+ */
3577
+ magicDoor: DoorSoundConfig;
3578
+
3579
+ /**
3580
+ * @defaultValue
3581
+ * ```ts
3582
+ * {
3583
+ * label: "WALLS.DoorSound.MagicWall",
3584
+ * close: "sounds/doors/magic/wall-close.ogg",
3585
+ * lock: "sounds/doors/magic/lock.ogg",
3586
+ * open: "sounds/doors/magic/wall-open.ogg",
3587
+ * test: "sounds/doors/magic/test.ogg",
3588
+ * unlock: "sounds/doors/magic/unlock.ogg"
3589
+ * }
3590
+ * ```
3591
+ */
3592
+ magicWall: DoorSoundConfig;
3593
+
3594
+ /**
3595
+ * @defaultValue
3596
+ * ```ts
3597
+ * {
3598
+ * label: "WALLS.DoorSound.Metal",
3599
+ * close: "sounds/doors/metal/close.ogg",
3600
+ * lock: "sounds/doors/metal/lock.ogg",
3601
+ * open: "sounds/doors/metal/open.ogg",
3602
+ * test: "sounds/doors/metal/test.ogg",
3603
+ * unlock: "sounds/doors/metal/unlock.ogg"
3604
+ * }
3605
+ * ```
3606
+ */
3607
+ metal: DoorSoundConfig;
3608
+
3609
+ /**
3610
+ * @defaultValue
3611
+ * ```ts
3612
+ * {
3613
+ * label: "WALLS.DoorSound.SlidingMetal",
3614
+ * close: "sounds/doors/shutter/close.ogg",
3615
+ * lock: "sounds/doors/shutter/lock.ogg",
3616
+ * open: "sounds/doors/shutter/open.ogg",
3617
+ * test: "sounds/doors/shutter/test.ogg",
3618
+ * unlock: "sounds/doors/shutter/unlock.ogg"
3619
+ * }
3620
+ * ```
3621
+ */
3622
+ slidingMetal: DoorSoundConfig;
3623
+
3624
+ /**
3625
+ * @defaultValue
3626
+ * ```js
3627
+ * {
3628
+ * label: "WALL.DoorSounds.SlidingMetalHeavy";
3629
+ * close: "sounds/doors/metal/heavy-sliding-close.ogg";
3630
+ * lock: "sounds/doors/metal/heavy-sliding-lock.ogg";
3631
+ * open: "sounds/doors/metal/heavy-sliding-open.ogg";
3632
+ * test: "sounds/doors/metal/heavy-sliding-test.ogg";
3633
+ * unlock: "sounds/doors/metal/heavy-sliding-unlock.ogg";
3634
+ * }
3635
+ * ```
3636
+ */
3637
+ slidingMetalHeavy: DoorSoundConfig;
3638
+
3639
+ /**
3640
+ * @defaultValue
3641
+ * ```ts
3642
+ * {
3643
+ * label: "WALLS.DoorSound.SlidingModern",
3644
+ * close: "sounds/doors/sliding/close.ogg",
3645
+ * lock: "sounds/doors/sliding/lock.ogg",
3646
+ * open: "sounds/doors/sliding/open.ogg",
3647
+ * test: "sounds/doors/sliding/test.ogg",
3648
+ * unlock: "sounds/doors/sliding/unlock.ogg"
3649
+ * }
3650
+ * ```
3651
+ */
3652
+ slidingModern: DoorSoundConfig;
3653
+
3654
+ /**
3655
+ * @defaultValue
3656
+ * ```ts
3657
+ * {
3658
+ * label: "WALLS.DoorSound.SlidingWood",
3659
+ * close: "sounds/doors/sliding/close-wood.ogg",
3660
+ * lock: "sounds/doors/sliding/lock.ogg",
3661
+ * open: "sounds/doors/sliding/open-wood.ogg",
3662
+ * test: "sounds/doors/sliding/test.ogg",
3663
+ * unlock: "sounds/doors/sliding/unlock.ogg"
3664
+ * }
3665
+ * ```
3666
+ */
3667
+ slidingWood: DoorSoundConfig;
3668
+
3669
+ /**
3670
+ * @defaultValue
3671
+ * ```ts
3672
+ * {
3673
+ * label: "WALLS.DoorSound.StoneBasic",
3674
+ * close: "sounds/doors/stone/close.ogg",
3675
+ * lock: "sounds/doors/stone/lock.ogg",
3676
+ * open: "sounds/doors/stone/open.ogg",
3677
+ * test: "sounds/doors/stone/test.ogg",
3678
+ * unlock: "sounds/doors/stone/unlock.ogg"
3679
+ * }
3680
+ * ```
3681
+ */
3682
+ stoneBasic: DoorSoundConfig;
3683
+
3684
+ /**
3685
+ * @defaultValue
3686
+ * ```ts
3687
+ * {
3688
+ * label: "WALLS.DoorSound.StoneRocky",
3689
+ * close: "sounds/doors/stone/close-rocky.ogg",
3690
+ * lock: "sounds/doors/stone/lock.ogg",
3691
+ * open: "sounds/doors/stone/open-rocky.ogg",
3692
+ * test: "sounds/doors/stone/test.ogg",
3693
+ * unlock: "sounds/doors/stone/unlock.ogg"
3694
+ * }
3695
+ * ```
3696
+ */
3697
+ stoneRocky: DoorSoundConfig;
3698
+
3699
+ /**
3700
+ * @defaultValue
3701
+ * ```ts
3702
+ * {
3703
+ * label: "WALLS.DoorSound.StoneSandy",
3704
+ * close: "sounds/doors/stone/close-sandy.ogg",
3705
+ * lock: "sounds/doors/stone/lock.ogg",
3706
+ * open: "sounds/doors/stone/open-sandy.ogg",
3707
+ * test: "sounds/doors/stone/test.ogg",
3708
+ * unlock: "sounds/doors/stone/unlock.ogg"
3709
+ * }
3710
+ * ```
3711
+ */
3712
+ stoneSandy: DoorSoundConfig;
3713
+
3714
+ /**
3715
+ * @defaultValue
3716
+ * ```ts
3717
+ * {
3718
+ * label: "WALLS.DoorSound.WoodBasic",
3719
+ * close: "sounds/doors/wood/close.ogg",
3720
+ * lock: "sounds/doors/wood/lock.ogg",
3721
+ * open: "sounds/doors/wood/open.ogg",
3722
+ * test: "sounds/doors/wood/test.ogg",
3723
+ * unlock: "sounds/doors/wood/unlock.ogg"
3724
+ * }
3725
+ * ```
3726
+ */
3727
+ woodBasic: DoorSoundConfig;
3728
+
3729
+ /**
3730
+ * @defaultValue
3731
+ * ```ts
3732
+ * {
3733
+ * label: "WALLS.DoorSound.WoodCreaky",
3734
+ * close: "sounds/doors/wood/close-creaky.ogg",
3735
+ * lock: "sounds/doors/wood/lock.ogg",
3736
+ * open: "sounds/doors/wood/open-creaky.ogg",
3737
+ * test: "sounds/doors/wood/test.ogg",
3738
+ * unlock: "sounds/doors/wood/unlock.ogg"
3739
+ * }
3740
+ * ```
3741
+ */
3742
+ woodCreaky: DoorSoundConfig;
3743
+
3744
+ /**
3745
+ * @defaultValue
3746
+ * ```ts
3747
+ * {
3748
+ * label: "WALLS.DoorSound.WoodHeavy",
3749
+ * close: "sounds/doors/wood/close-heavy.ogg",
3750
+ * lock: "sounds/doors/wood/lock.ogg",
3751
+ * open: "sounds/doors/wood/open-heavy.ogg",
3752
+ * test: "sounds/doors/wood/test.ogg",
3753
+ * unlock: "sounds/doors/wood/unlock.ogg"
3754
+ * }
3755
+ * ```
3756
+ */
3757
+ woodHeavy: DoorSoundConfig;
3758
+ }
3759
+
3760
+ type DoorAnimationFunction = (this: DoorMesh, open: boolean) => CanvasAnimation.Attribute[];
3761
+
3762
+ type DoorAnimationHook = (this: DoorMesh, open: boolean) => MaybePromise<void>;
3763
+
3764
+ /** @internal */
3765
+ type _DoorAnimationConfig = InexactPartial<{
3766
+ /**
3767
+ * @defaultValue `false`
3768
+ * @remarks Pivot about the midpoint, instead of the {@linkcode geometry.edges.Edge.a | a} endpoint of the Wall's Edge?
3769
+ */
3770
+ midpoint: boolean;
3771
+
3772
+ /** @defaultValue {@linkcode CanvasAnimation.easeInOutCosine | "easeInOutCosine"} */
3773
+ easing: CanvasAnimation.EasingFunction;
3774
+
3775
+ /** @remarks `initialize` hooks are not awaited */
3776
+ initialize: DoorAnimationHook;
3777
+
3778
+ /** @remarks `preAnimate` hooks **are** awaited */
3779
+ preAnimate: DoorAnimationHook;
3780
+
3781
+ /** @remarks `postAnimate` hooks **are** awaited */
3782
+ postAnimate: DoorAnimationHook;
3783
+ }>;
3784
+
3785
+ interface DoorAnimationConfig extends _DoorAnimationConfig {
3786
+ /** @remarks Label (or localization key) for the animation select in {@linkcode foundry.applications.sheets.WallConfig | WallConfig}*/
3787
+ label: string;
3788
+
3789
+ animate: DoorAnimationFunction;
3790
+
3791
+ /** @remarks Time to animate over in milliseconds */
3792
+ duration: number;
3793
+ }
3794
+
3795
+ type DoorAnimation = Brand<string, "CONFIG.Wall.animationTypes">;
3796
+
3797
+ interface DoorAnimations {
3798
+ [animationName: DoorAnimation]: DoorAnimationConfig;
3799
+
3800
+ /**
3801
+ * @defaultValue
3802
+ * ```js
3803
+ * {
3804
+ * label: "WALL.ANIMATION_TYPES.ASCEND",
3805
+ * midpoint: true,
3806
+ * animate: canvas.containers.DoorMesh.animateAscend,
3807
+ * duration: 1000
3808
+ * }
3809
+ * ```
3810
+ */
3811
+ ascend: DoorAnimationConfig;
3812
+
3813
+ /**
3814
+ * @defaultValue
3815
+ * ```js
3816
+ * {
3817
+ * label: "WALL.ANIMATION_TYPES.DESCEND",
3818
+ * midpoint: true,
3819
+ * initialize: canvas.containers.DoorMesh.initializeDescend,
3820
+ * animate: canvas.containers.DoorMesh.animateDescend,
3821
+ * preAnimate: canvas.containers.DoorMesh.preAnimateDescend,
3822
+ * postAnimate: canvas.containers.DoorMesh.postAnimateDescend,
3823
+ * duration: 1000
3824
+ * }
3825
+ * ```
3826
+ */
3827
+ descend: DoorAnimationConfig;
3828
+
3829
+ /**
3830
+ * @defaultValue
3831
+ * ```js
3832
+ * {
3833
+ * label: "WALL.ANIMATION_TYPES.SLIDE",
3834
+ * animate: canvas.containers.DoorMesh.animateSlide,
3835
+ * duration: 500
3836
+ * }
3837
+ * ```
3838
+ */
3839
+ slide: DoorAnimationConfig;
3840
+
3841
+ /**
3842
+ * @defaultValue
3843
+ * ```js
3844
+ * {
3845
+ * label: "WALL.ANIMATION_TYPES.SWING",
3846
+ * animate: canvas.containers.DoorMesh.animateSwing,
3847
+ * duration: 500
3848
+ * }
3849
+ * ```
3850
+ */
3851
+ swing: DoorAnimationConfig;
3852
+
3853
+ /**
3854
+ * @defaultValue
3855
+ * ```js
3856
+ * {
3857
+ * label: "WALL.ANIMATION_TYPES.SWIVEL",
3858
+ * midpoint: true,
3859
+ * animate: canvas.containers.DoorMesh.animateSwing,
3860
+ * duration: 500
3861
+ * }
3862
+ * ```
3863
+ */
3864
+ swivel: DoorAnimationConfig;
3865
+ }
3866
+ }
3734
3867
  }
3735
3868
 
3736
3869
  const CONFIG: CONFIG;