@league-of-foundry-developers/foundry-vtt-types 12.331.3-beta → 12.331.5

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 (559) hide show
  1. package/README.md +17 -18
  2. package/package.json +91 -32
  3. package/src/configuration/configuration.d.mts +316 -0
  4. package/src/configuration/documents.d.mts +295 -0
  5. package/src/configuration/globals.d.mts +357 -0
  6. package/src/configuration/index.d.mts +5 -0
  7. package/src/foundry/client/apps/app.d.mts +129 -122
  8. package/src/foundry/client/apps/av/av-config.d.mts +12 -7
  9. package/src/foundry/client/apps/av/cameras.d.mts +12 -7
  10. package/src/foundry/client/apps/dice/dice-config.d.mts +59 -0
  11. package/src/foundry/client/apps/dice/index.d.mts +1 -0
  12. package/src/foundry/client/apps/form.d.mts +114 -86
  13. package/src/foundry/client/apps/forms/actor.d.mts +21 -11
  14. package/src/foundry/client/apps/forms/adventure-exporter.d.mts +12 -7
  15. package/src/foundry/client/apps/forms/adventure-importer.d.mts +14 -6
  16. package/src/foundry/client/apps/forms/base-sheet.d.mts +16 -8
  17. package/src/foundry/client/apps/forms/card-config.d.mts +16 -8
  18. package/src/foundry/client/apps/forms/cards-config.d.mts +15 -14
  19. package/src/foundry/client/apps/forms/combat-config.d.mts +7 -7
  20. package/src/foundry/client/apps/forms/combatant-config.d.mts +3 -3
  21. package/src/foundry/client/apps/forms/default-sheets-config.d.mts +1 -1
  22. package/src/foundry/client/apps/forms/effect-config.d.mts +7 -7
  23. package/src/foundry/client/apps/forms/folder-config.d.mts +10 -5
  24. package/src/foundry/client/apps/forms/fonts.d.mts +42 -35
  25. package/src/foundry/client/apps/forms/grid-config.d.mts +12 -13
  26. package/src/foundry/client/apps/forms/image-popout.d.mts +29 -23
  27. package/src/foundry/client/apps/forms/item.d.mts +9 -9
  28. package/src/foundry/client/apps/forms/journal-page-sheet.d.mts +16 -14
  29. package/src/foundry/client/apps/forms/journal-sheet.d.mts +48 -38
  30. package/src/foundry/client/apps/forms/macro-config.d.mts +7 -7
  31. package/src/foundry/client/apps/forms/measure-template.d.mts +10 -12
  32. package/src/foundry/client/apps/forms/ownership.d.mts +5 -5
  33. package/src/foundry/client/apps/forms/playlist-config.d.mts +8 -10
  34. package/src/foundry/client/apps/forms/playlist-sound-config.d.mts +7 -7
  35. package/src/foundry/client/apps/forms/roll-table-config.d.mts +11 -10
  36. package/src/foundry/client/apps/forms/scene-config.d.mts +40 -41
  37. package/src/foundry/client/apps/forms/sheet-config.d.mts +9 -21
  38. package/src/foundry/client/apps/forms/user-config.d.mts +13 -12
  39. package/src/foundry/client/apps/hud/chatbubble.d.mts +18 -6
  40. package/src/foundry/client/apps/hud/container.d.mts +4 -4
  41. package/src/foundry/client/apps/hud/controls.d.mts +126 -81
  42. package/src/foundry/client/apps/hud/hotbar.d.mts +17 -12
  43. package/src/foundry/client/apps/hud/hud.d.mts +5 -5
  44. package/src/foundry/client/apps/hud/menu.d.mts +10 -3
  45. package/src/foundry/client/apps/hud/navigation.d.mts +14 -9
  46. package/src/foundry/client/apps/hud/pause.d.mts +9 -4
  47. package/src/foundry/client/apps/hud/players.d.mts +14 -9
  48. package/src/foundry/client/apps/i18n.d.mts +31 -27
  49. package/src/foundry/client/apps/index.d.mts +1 -0
  50. package/src/foundry/client/apps/placeables/drawing-config.d.mts +41 -33
  51. package/src/foundry/client/apps/placeables/drawing-hud.d.mts +5 -5
  52. package/src/foundry/client/apps/placeables/index.d.mts +0 -2
  53. package/src/foundry/client/apps/placeables/note-config.d.mts +28 -18
  54. package/src/foundry/client/apps/placeables/tile-config.d.mts +23 -10
  55. package/src/foundry/client/apps/placeables/tile-hud.d.mts +10 -5
  56. package/src/foundry/client/apps/placeables/token-config.d.mts +91 -58
  57. package/src/foundry/client/apps/placeables/token-hud.d.mts +12 -7
  58. package/src/foundry/client/apps/placeables/wall-config.d.mts +21 -17
  59. package/src/foundry/client/apps/sidebar/apps/chat-popout.d.mts +5 -5
  60. package/src/foundry/client/apps/sidebar/apps/client-settings.d.mts +3 -3
  61. package/src/foundry/client/apps/sidebar/apps/compendium.d.mts +15 -13
  62. package/src/foundry/client/apps/sidebar/apps/invitation-links.d.mts +3 -3
  63. package/src/foundry/client/apps/sidebar/apps/keybindings-config.d.mts +3 -2
  64. package/src/foundry/client/apps/sidebar/apps/module-management.d.mts +6 -6
  65. package/src/foundry/client/apps/sidebar/apps/permission-config.d.mts +6 -6
  66. package/src/foundry/client/apps/sidebar/apps/support-details.d.mts +34 -29
  67. package/src/foundry/client/apps/sidebar/apps/tours-management.d.mts +2 -2
  68. package/src/foundry/client/apps/sidebar/apps/world-config.d.mts +13 -10
  69. package/src/foundry/client/apps/sidebar/directory-tab-mixin.d.mts +50 -35
  70. package/src/foundry/client/apps/sidebar/document-directory.d.mts +52 -38
  71. package/src/foundry/client/apps/sidebar/package-configuration.d.mts +4 -4
  72. package/src/foundry/client/apps/sidebar/sidebar-tab.d.mts +3 -3
  73. package/src/foundry/client/apps/sidebar/sidebar.d.mts +9 -4
  74. package/src/foundry/client/apps/sidebar/tabs/actors-directory.d.mts +11 -2
  75. package/src/foundry/client/apps/sidebar/tabs/cards-directory.d.mts +11 -2
  76. package/src/foundry/client/apps/sidebar/tabs/chat-log.d.mts +39 -27
  77. package/src/foundry/client/apps/sidebar/tabs/combat-tracker.d.mts +21 -12
  78. package/src/foundry/client/apps/sidebar/tabs/compendium-directory.d.mts +30 -15
  79. package/src/foundry/client/apps/sidebar/tabs/items-directory.d.mts +11 -2
  80. package/src/foundry/client/apps/sidebar/tabs/journal-directory.d.mts +11 -2
  81. package/src/foundry/client/apps/sidebar/tabs/macros-directory.d.mts +14 -5
  82. package/src/foundry/client/apps/sidebar/tabs/playlists-directory.d.mts +30 -22
  83. package/src/foundry/client/apps/sidebar/tabs/roll-table-directory.d.mts +11 -2
  84. package/src/foundry/client/apps/sidebar/tabs/scenes-directory.d.mts +14 -5
  85. package/src/foundry/client/apps/sidebar/tabs/settings.d.mts +23 -5
  86. package/src/foundry/client/apps/templates.d.mts +1 -1
  87. package/src/foundry/client/av/client.d.mts +1 -1
  88. package/src/foundry/client/av/clients/simplepeer.d.mts +11 -1
  89. package/src/foundry/client/av/master.d.mts +2 -2
  90. package/src/foundry/client/av/settings.d.mts +17 -15
  91. package/src/foundry/client/config.d.mts +444 -312
  92. package/src/foundry/client/core/document-index.d.mts +11 -3
  93. package/src/foundry/client/core/hooks.d.mts +2 -4
  94. package/src/foundry/client/core/image.d.mts +14 -13
  95. package/src/foundry/client/core/issues.d.mts +9 -4
  96. package/src/foundry/client/core/keybindings.d.mts +5 -5
  97. package/src/foundry/client/core/nue.d.mts +1 -1
  98. package/src/foundry/client/core/packages.d.mts +400 -62
  99. package/src/foundry/client/core/settings.d.mts +62 -38
  100. package/src/foundry/client/core/socket.d.mts +2 -2
  101. package/src/foundry/client/core/sorting.d.mts +6 -6
  102. package/src/foundry/client/core/time.d.mts +6 -3
  103. package/src/foundry/client/core/tooltip.d.mts +2 -2
  104. package/src/foundry/client/core/tour.d.mts +59 -50
  105. package/src/foundry/client/core/tours.d.mts +1 -1
  106. package/src/foundry/client/core/utils.d.mts +33 -10
  107. package/src/foundry/client/core/video.d.mts +1 -1
  108. package/src/foundry/client/core/workers.d.mts +24 -17
  109. package/src/foundry/client/data/abstract/canvas-document.d.mts +22 -28
  110. package/src/foundry/client/data/abstract/client-document.d.mts +238 -206
  111. package/src/foundry/client/data/abstract/directory-collection-mixin.d.mts +24 -40
  112. package/src/foundry/client/data/abstract/document-collection.d.mts +96 -68
  113. package/src/foundry/client/data/abstract/world-collection.d.mts +53 -54
  114. package/src/foundry/client/data/collections/actors.d.mts +30 -28
  115. package/src/foundry/client/data/collections/cards.d.mts +16 -3
  116. package/src/foundry/client/data/collections/combats.d.mts +18 -5
  117. package/src/foundry/client/data/collections/compendium-collection.d.mts +84 -101
  118. package/src/foundry/client/data/collections/compendium-folders.d.mts +6 -6
  119. package/src/foundry/client/data/collections/compendium-packs.d.mts +5 -5
  120. package/src/foundry/client/data/collections/fog.d.mts +16 -3
  121. package/src/foundry/client/data/collections/folder.d.mts +20 -6
  122. package/src/foundry/client/data/collections/items.d.mts +17 -4
  123. package/src/foundry/client/data/collections/journal.d.mts +22 -7
  124. package/src/foundry/client/data/collections/macros.d.mts +21 -19
  125. package/src/foundry/client/data/collections/messages.d.mts +19 -6
  126. package/src/foundry/client/data/collections/playlists.d.mts +17 -5
  127. package/src/foundry/client/data/collections/scenes.d.mts +24 -27
  128. package/src/foundry/client/data/collections/settings.d.mts +16 -3
  129. package/src/foundry/client/data/collections/tables.d.mts +18 -5
  130. package/src/foundry/client/data/collections/users.d.mts +22 -10
  131. package/src/foundry/client/data/documents/active-effect.d.mts +780 -112
  132. package/src/foundry/client/data/documents/actor-delta.d.mts +705 -31
  133. package/src/foundry/client/data/documents/actor.d.mts +806 -98
  134. package/src/foundry/client/data/documents/adventure.d.mts +522 -59
  135. package/src/foundry/client/data/documents/ambient-light.d.mts +427 -20
  136. package/src/foundry/client/data/documents/ambient-sound.d.mts +478 -14
  137. package/src/foundry/client/data/documents/card.d.mts +598 -44
  138. package/src/foundry/client/data/documents/cards.d.mts +862 -169
  139. package/src/foundry/client/data/documents/chat-message.d.mts +668 -77
  140. package/src/foundry/client/data/documents/combat.d.mts +757 -107
  141. package/src/foundry/client/data/documents/combatant.d.mts +545 -32
  142. package/src/foundry/client/data/documents/drawing.d.mts +545 -14
  143. package/src/foundry/client/data/documents/fog-exploration.d.mts +465 -30
  144. package/src/foundry/client/data/documents/folder.d.mts +567 -51
  145. package/src/foundry/client/data/documents/index.d.mts +2 -0
  146. package/src/foundry/client/data/documents/item.d.mts +691 -24
  147. package/src/foundry/client/data/documents/journal-entry-page.d.mts +654 -55
  148. package/src/foundry/client/data/documents/journal-entry.d.mts +631 -35
  149. package/src/foundry/client/data/documents/macro.d.mts +560 -31
  150. package/src/foundry/client/data/documents/measured-template.d.mts +484 -15
  151. package/src/foundry/client/data/documents/note.d.mts +498 -15
  152. package/src/foundry/client/data/documents/playlist-sound.d.mts +443 -45
  153. package/src/foundry/client/data/documents/playlist.d.mts +710 -99
  154. package/src/foundry/client/data/documents/region-behavior.d.mts +516 -0
  155. package/src/foundry/client/data/documents/region.d.mts +789 -0
  156. package/src/foundry/client/data/documents/scene.d.mts +1216 -159
  157. package/src/foundry/client/data/documents/setting.d.mts +406 -23
  158. package/src/foundry/client/data/documents/table-result.d.mts +488 -14
  159. package/src/foundry/client/data/documents/table.d.mts +667 -78
  160. package/src/foundry/client/data/documents/tile.d.mts +505 -14
  161. package/src/foundry/client/data/documents/token.d.mts +1191 -143
  162. package/src/foundry/client/data/documents/user.d.mts +613 -57
  163. package/src/foundry/client/data/documents/wall.d.mts +555 -14
  164. package/src/foundry/client/game.d.mts +60 -92
  165. package/src/foundry/client/head.d.mts +9 -9
  166. package/src/foundry/client/hooks.d.mts +259 -248
  167. package/src/foundry/client/pixi/board.d.mts +107 -94
  168. package/src/foundry/client/pixi/core/containers/base-canvas-group.d.mts +97 -25
  169. package/src/foundry/client/pixi/core/containers/cached-container.d.mts +37 -19
  170. package/src/foundry/client/pixi/core/containers/full-canvas-container.d.mts +7 -10
  171. package/src/foundry/client/pixi/core/containers/point-source-mesh.d.mts +25 -15
  172. package/src/foundry/client/pixi/core/containers/quad-mesh.d.mts +16 -6
  173. package/src/foundry/client/pixi/core/containers/quadtree.d.mts +113 -54
  174. package/src/foundry/client/pixi/core/containers/sprite-mesh.d.mts +69 -26
  175. package/src/foundry/client/pixi/core/containers/unbound-container.d.mts +20 -2
  176. package/src/foundry/client/pixi/core/interaction/canvas-animation.d.mts +164 -99
  177. package/src/foundry/client/pixi/core/interaction/control-icon.d.mts +61 -22
  178. package/src/foundry/client/pixi/core/interaction/mouse-handler.d.mts +120 -53
  179. package/src/foundry/client/pixi/core/interaction/ping.d.mts +62 -31
  180. package/src/foundry/client/pixi/core/interaction/pings/chevron.d.mts +23 -10
  181. package/src/foundry/client/pixi/core/interaction/pings/pulse.d.mts +91 -34
  182. package/src/foundry/client/pixi/core/interaction/render-flags.d.mts +69 -30
  183. package/src/foundry/client/pixi/core/interaction/resize-handle.d.mts +35 -5
  184. package/src/foundry/client/pixi/core/interaction/targets.d.mts +21 -18
  185. package/src/foundry/client/pixi/core/loader.d.mts +86 -76
  186. package/src/foundry/client/pixi/core/shapes/limited-angle-polygon.d.mts +42 -17
  187. package/src/foundry/client/pixi/core/shapes/polygon-mesher.d.mts +92 -64
  188. package/src/foundry/client/pixi/core/shapes/precise-text.d.mts +28 -10
  189. package/src/foundry/client/pixi/core/shapes/ray.d.mts +47 -23
  190. package/src/foundry/client/pixi/core/shapes/source-polygon.d.mts +170 -75
  191. package/src/foundry/client/pixi/extensions/circle.d.mts +128 -125
  192. package/src/foundry/client/pixi/extensions/graphics.d.mts +3 -1
  193. package/src/foundry/client/pixi/extensions/observable-transform.d.mts +5 -4
  194. package/src/foundry/client/pixi/extensions/polygon.d.mts +154 -134
  195. package/src/foundry/client/pixi/extensions/rectangle.d.mts +242 -259
  196. package/src/foundry/client/pixi/groups/effects.d.mts +75 -24
  197. package/src/foundry/client/pixi/groups/environment.d.mts +68 -19
  198. package/src/foundry/client/pixi/groups/hidden.d.mts +27 -11
  199. package/src/foundry/client/pixi/groups/interface.d.mts +62 -38
  200. package/src/foundry/client/pixi/groups/overlay.d.mts +19 -7
  201. package/src/foundry/client/pixi/groups/primary.d.mts +66 -44
  202. package/src/foundry/client/pixi/groups/rendered.d.mts +19 -7
  203. package/src/foundry/client/pixi/layers/base/canvas-layer.d.mts +11 -15
  204. package/src/foundry/client/pixi/layers/base/interaction-layer.d.mts +29 -28
  205. package/src/foundry/client/pixi/layers/base/placeables-layer.d.mts +306 -272
  206. package/src/foundry/client/pixi/layers/controls/cursor.d.mts +18 -9
  207. package/src/foundry/client/pixi/layers/controls/door.d.mts +32 -11
  208. package/src/foundry/client/pixi/layers/controls/layer.d.mts +89 -77
  209. package/src/foundry/client/pixi/layers/controls/ruler.d.mts +121 -96
  210. package/src/foundry/client/pixi/layers/effects/background-effects.d.mts +9 -12
  211. package/src/foundry/client/pixi/layers/effects/coloration-effects.d.mts +9 -10
  212. package/src/foundry/client/pixi/layers/effects/darkness-effects.d.mts +8 -8
  213. package/src/foundry/client/pixi/layers/effects/illumination-effects.d.mts +22 -22
  214. package/src/foundry/client/pixi/layers/effects/visibility.d.mts +106 -86
  215. package/src/foundry/client/pixi/layers/effects/weather/particles/effect.d.mts +14 -5
  216. package/src/foundry/client/pixi/layers/effects/weather/particles/leaves.d.mts +31 -2
  217. package/src/foundry/client/pixi/layers/effects/weather-effects.d.mts +137 -65
  218. package/src/foundry/client/pixi/layers/grid/highlight.d.mts +14 -4
  219. package/src/foundry/client/pixi/layers/grid/layer.d.mts +92 -92
  220. package/src/foundry/client/pixi/layers/grid/mesh.d.mts +37 -16
  221. package/src/foundry/client/pixi/layers/masks/depth.d.mts +12 -7
  222. package/src/foundry/client/pixi/layers/masks/occlusion.d.mts +19 -12
  223. package/src/foundry/client/pixi/layers/masks/vision.d.mts +104 -18
  224. package/src/foundry/client/pixi/layers/placeables/drawings.d.mts +16 -15
  225. package/src/foundry/client/pixi/layers/placeables/index.d.mts +1 -0
  226. package/src/foundry/client/pixi/layers/placeables/lighting.d.mts +12 -14
  227. package/src/foundry/client/pixi/layers/placeables/notes.d.mts +49 -32
  228. package/src/foundry/client/pixi/layers/placeables/regions.d.mts +113 -0
  229. package/src/foundry/client/pixi/layers/placeables/sounds.d.mts +81 -67
  230. package/src/foundry/client/pixi/layers/placeables/templates.d.mts +11 -15
  231. package/src/foundry/client/pixi/layers/placeables/tiles.d.mts +30 -21
  232. package/src/foundry/client/pixi/layers/placeables/tokens.d.mts +66 -52
  233. package/src/foundry/client/pixi/layers/placeables/walls.d.mts +54 -57
  234. package/src/foundry/client/pixi/perception/clockwise-sweep.d.mts +62 -27
  235. package/src/foundry/client/pixi/perception/detection-mode.d.mts +121 -47
  236. package/src/foundry/client/pixi/perception/fog.d.mts +38 -15
  237. package/src/foundry/client/pixi/perception/perception-manager.d.mts +136 -136
  238. package/src/foundry/client/pixi/perception/vision-mode.d.mts +91 -64
  239. package/src/foundry/client/pixi/perception/weiler-atherton-clipping.d.mts +44 -16
  240. package/src/foundry/client/pixi/placeable.d.mts +239 -137
  241. package/src/foundry/client/pixi/placeables/drawing.d.mts +255 -133
  242. package/src/foundry/client/pixi/placeables/index.d.mts +1 -0
  243. package/src/foundry/client/pixi/placeables/light.d.mts +193 -64
  244. package/src/foundry/client/pixi/placeables/note.d.mts +145 -54
  245. package/src/foundry/client/pixi/placeables/primary-canvas-objects/primary-canvas-object.d.mts +30 -8
  246. package/src/foundry/client/pixi/placeables/primary-canvas-objects/primary-graphics.d.mts +41 -11
  247. package/src/foundry/client/pixi/placeables/primary-canvas-objects/primary-occludable-object.d.mts +59 -18
  248. package/src/foundry/client/pixi/placeables/primary-canvas-objects/primary-sprite-mesh.d.mts +120 -37
  249. package/src/foundry/client/pixi/placeables/region.d.mts +280 -0
  250. package/src/foundry/client/pixi/placeables/sound.d.mts +205 -66
  251. package/src/foundry/client/pixi/placeables/template.d.mts +181 -100
  252. package/src/foundry/client/pixi/placeables/tile.d.mts +206 -140
  253. package/src/foundry/client/pixi/placeables/token.d.mts +916 -449
  254. package/src/foundry/client/pixi/placeables/wall.d.mts +249 -129
  255. package/src/foundry/client/pixi/webgl/extensions/batch-renderer.d.mts +72 -33
  256. package/src/foundry/client/pixi/webgl/extensions/batch-shader-generator.d.mts +10 -9
  257. package/src/foundry/client/pixi/webgl/helpers/{framebugger-snapshot.d.mts → framebuffer-snapshot.d.mts} +10 -9
  258. package/src/foundry/client/pixi/webgl/helpers/index.d.mts +1 -1
  259. package/src/foundry/client/pixi/webgl/helpers/smooth-noise.d.mts +38 -23
  260. package/src/foundry/client/pixi/webgl/helpers/texture-extractor.d.mts +82 -53
  261. package/src/foundry/client/pixi/webgl/shaders/base-shader-mixin.d.mts +12 -12
  262. package/src/foundry/client/pixi/webgl/shaders/base-shader.d.mts +45 -28
  263. package/src/foundry/client/pixi/webgl/shaders/filters/base-filter.d.mts +12 -11
  264. package/src/foundry/client/pixi/webgl/shaders/filters/base-mask-filter.d.mts +12 -10
  265. package/src/foundry/client/pixi/webgl/shaders/filters/blur.d.mts +22 -20
  266. package/src/foundry/client/pixi/webgl/shaders/filters/effects-masking.d.mts +36 -32
  267. package/src/foundry/client/pixi/webgl/shaders/filters/environment.d.mts +10 -9
  268. package/src/foundry/client/pixi/webgl/shaders/filters/glow-overlay.d.mts +12 -11
  269. package/src/foundry/client/pixi/webgl/shaders/filters/invisibility.d.mts +10 -9
  270. package/src/foundry/client/pixi/webgl/shaders/filters/outline-overlay.d.mts +12 -11
  271. package/src/foundry/client/pixi/webgl/shaders/filters/transition.d.mts +67 -60
  272. package/src/foundry/client/pixi/webgl/shaders/filters/visibility.d.mts +24 -17
  273. package/src/foundry/client/pixi/webgl/shaders/filters/vision-mask-filter.d.mts +13 -10
  274. package/src/foundry/client/pixi/webgl/shaders/filters/void.d.mts +10 -9
  275. package/src/foundry/client/pixi/webgl/shaders/filters/weather-occlusion-masks.d.mts +11 -10
  276. package/src/foundry/client/pixi/webgl/shaders/fragment-channel-mixin.d.mts +20 -14
  277. package/src/foundry/client/pixi/webgl/shaders/grid/grid.d.mts +12 -11
  278. package/src/foundry/client/pixi/webgl/shaders/lighting/background-lighting.d.mts +10 -9
  279. package/src/foundry/client/pixi/webgl/shaders/lighting/base-lighting.d.mts +33 -33
  280. package/src/foundry/client/pixi/webgl/shaders/lighting/coloration-lighting.d.mts +10 -9
  281. package/src/foundry/client/pixi/webgl/shaders/lighting/darkness-lighting.d.mts +10 -9
  282. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/bewitching-wave.d.mts +19 -17
  283. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/black-hole.d.mts +10 -9
  284. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/chroma.d.mts +10 -9
  285. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/emanation.d.mts +10 -9
  286. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/energy-field.d.mts +10 -9
  287. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/fairy-light.d.mts +19 -17
  288. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/flame.d.mts +19 -17
  289. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/fog.d.mts +10 -9
  290. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/force-grid.d.mts +10 -8
  291. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/ghost-light.d.mts +19 -17
  292. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/hexa-dome.d.mts +10 -9
  293. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/light-dome.d.mts +10 -9
  294. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/magical-gloom.d.mts +10 -9
  295. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/pulse.d.mts +19 -17
  296. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/radial-rainbow.d.mts +10 -9
  297. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/revolving-light.d.mts +10 -9
  298. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/roiling-mass.d.mts +10 -9
  299. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/siren-light.d.mts +19 -17
  300. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/smoke-patch.d.mts +20 -17
  301. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/star-light.d.mts +10 -9
  302. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/sunburst.d.mts +19 -17
  303. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/swirling-rainbow.d.mts +10 -9
  304. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/torch.d.mts +19 -17
  305. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/vortex.d.mts +19 -17
  306. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/wave.d.mts +19 -17
  307. package/src/foundry/client/pixi/webgl/shaders/lighting/illumination-lighting.d.mts +10 -9
  308. package/src/foundry/client/pixi/webgl/shaders/region/adjust-darkness-level.d.mts +71 -29
  309. package/src/foundry/client/pixi/webgl/shaders/region/base.d.mts +54 -10
  310. package/src/foundry/client/pixi/webgl/shaders/region/highlight.d.mts +69 -9
  311. package/src/foundry/client/pixi/webgl/shaders/samplers/base-sampler.d.mts +24 -25
  312. package/src/foundry/client/pixi/webgl/shaders/samplers/baseline-illumination.d.mts +10 -9
  313. package/src/foundry/client/pixi/webgl/shaders/samplers/color-adjustment.d.mts +38 -29
  314. package/src/foundry/client/pixi/webgl/shaders/samplers/depth.d.mts +21 -17
  315. package/src/foundry/client/pixi/webgl/shaders/samplers/fog-of-war.d.mts +10 -9
  316. package/src/foundry/client/pixi/webgl/shaders/samplers/occlusion.d.mts +20 -18
  317. package/src/foundry/client/pixi/webgl/shaders/samplers/primary.d.mts +11 -2
  318. package/src/foundry/client/pixi/webgl/shaders/samplers/token-ring.d.mts +28 -2
  319. package/src/foundry/client/pixi/webgl/shaders/vision/background-vision.d.mts +10 -9
  320. package/src/foundry/client/pixi/webgl/shaders/vision/base-vision.d.mts +11 -9
  321. package/src/foundry/client/pixi/webgl/shaders/vision/coloration-vision.d.mts +10 -9
  322. package/src/foundry/client/pixi/webgl/shaders/vision/effects/amplification.d.mts +10 -9
  323. package/src/foundry/client/pixi/webgl/shaders/vision/effects/wave.d.mts +19 -17
  324. package/src/foundry/client/pixi/webgl/shaders/vision/illumination-vision.d.mts +10 -9
  325. package/src/foundry/client/pixi/webgl/shaders/weather/base-weather.d.mts +40 -36
  326. package/src/foundry/client/pixi/webgl/shaders/weather/effect.d.mts +27 -33
  327. package/src/foundry/client/pixi/webgl/shaders/weather/fog.d.mts +17 -16
  328. package/src/foundry/client/pixi/webgl/shaders/weather/rain.d.mts +19 -18
  329. package/src/foundry/client/pixi/webgl/shaders/weather/snow.d.mts +15 -14
  330. package/src/foundry/client/pixi/workers/texture-worker.d.mts +33 -53
  331. package/src/foundry/client/tours/setup-tour.d.mts +15 -10
  332. package/src/foundry/client/ui/context.d.mts +48 -40
  333. package/src/foundry/client/ui/dialog.d.mts +137 -126
  334. package/src/foundry/client/ui/drag.d.mts +1 -1
  335. package/src/foundry/client/ui/dragdrop.d.mts +34 -28
  336. package/src/foundry/client/ui/editor.d.mts +29 -21
  337. package/src/foundry/client/ui/filepicker.d.mts +43 -38
  338. package/src/foundry/client/ui/filter.d.mts +62 -50
  339. package/src/foundry/client/ui/forms.d.mts +22 -22
  340. package/src/foundry/client/ui/notifications.d.mts +10 -3
  341. package/src/foundry/client/ui/prosemirror.d.mts +15 -7
  342. package/src/foundry/client/ui/secrets.d.mts +42 -27
  343. package/src/foundry/client/ui/tabs.d.mts +40 -33
  344. package/src/foundry/client-esm/applications/_module.d.mts +3 -3
  345. package/src/foundry/client-esm/applications/_types.d.mts +0 -2
  346. package/src/foundry/client-esm/applications/api/_module.d.mts +2 -2
  347. package/src/foundry/client-esm/applications/api/application.d.mts +28 -19
  348. package/src/foundry/client-esm/applications/api/dialog.d.mts +20 -22
  349. package/src/foundry/client-esm/applications/api/document-sheet.d.mts +26 -12
  350. package/src/foundry/client-esm/applications/api/handlebars-application.d.mts +142 -126
  351. package/src/foundry/client-esm/applications/apps/_module.d.mts +2 -2
  352. package/src/foundry/client-esm/applications/apps/compendium-art-config.d.mts +10 -10
  353. package/src/foundry/client-esm/applications/apps/permission-config.d.mts +3 -3
  354. package/src/foundry/client-esm/applications/dice/_module.d.mts +2 -2
  355. package/src/foundry/client-esm/applications/dice/roll-resolver.d.mts +14 -2
  356. package/src/foundry/client-esm/applications/elements/_module.d.mts +2 -2
  357. package/src/foundry/client-esm/applications/elements/document-tags.d.mts +2 -0
  358. package/src/foundry/client-esm/applications/elements/file-picker.d.mts +1 -1
  359. package/src/foundry/client-esm/applications/elements/multi-select.d.mts +15 -5
  360. package/src/foundry/client-esm/applications/elements/string-tags.d.mts +1 -1
  361. package/src/foundry/client-esm/applications/forms/fields.d.mts +1 -1
  362. package/src/foundry/client-esm/applications/sheets/_module.d.mts +2 -2
  363. package/src/foundry/client-esm/applications/sheets/actor-sheet.d.mts +3 -3
  364. package/src/foundry/client-esm/applications/sheets/ambient-light-config.d.mts +10 -8
  365. package/src/foundry/client-esm/applications/sheets/ambient-sound-config.d.mts +9 -7
  366. package/src/foundry/client-esm/applications/sheets/item-sheet.d.mts +3 -3
  367. package/src/foundry/client-esm/applications/sheets/region-behavior-config.d.mts +30 -5
  368. package/src/foundry/client-esm/applications/sheets/region-config.d.mts +36 -5
  369. package/src/foundry/client-esm/applications/sheets/user-config.d.mts +8 -7
  370. package/src/foundry/client-esm/applications/ui/_module.d.mts +2 -2
  371. package/src/foundry/client-esm/applications/ui/region-legend.d.mts +45 -3
  372. package/src/foundry/client-esm/audio/_module.d.mts +2 -3
  373. package/src/foundry/client-esm/audio/_types.d.mts +2 -0
  374. package/src/foundry/client-esm/audio/biquad.d.mts +76 -26
  375. package/src/foundry/client-esm/audio/cache.d.mts +31 -20
  376. package/src/foundry/client-esm/audio/convolver.d.mts +47 -25
  377. package/src/foundry/client-esm/audio/helper.d.mts +124 -80
  378. package/src/foundry/client-esm/audio/sound.d.mts +230 -126
  379. package/src/foundry/client-esm/audio/timeout.d.mts +28 -12
  380. package/src/foundry/client-esm/canvas/_module.d.mts +2 -2
  381. package/src/foundry/client-esm/canvas/edges/_module.d.mts +2 -2
  382. package/src/foundry/client-esm/canvas/edges/collision.d.mts +69 -18
  383. package/src/foundry/client-esm/canvas/edges/edge.d.mts +110 -41
  384. package/src/foundry/client-esm/canvas/edges/edges.d.mts +10 -0
  385. package/src/foundry/client-esm/canvas/edges/vertex.d.mts +56 -26
  386. package/src/foundry/client-esm/canvas/regions/_module.d.mts +6 -11
  387. package/src/foundry/client-esm/canvas/regions/geometry.d.mts +38 -0
  388. package/src/foundry/client-esm/canvas/regions/mesh.d.mts +72 -0
  389. package/src/foundry/client-esm/canvas/regions/polygon-tree.d.mts +130 -0
  390. package/src/foundry/client-esm/canvas/regions/shape.d.mts +129 -0
  391. package/src/foundry/client-esm/canvas/scene-manager.d.mts +13 -3
  392. package/src/foundry/client-esm/canvas/smaa/blend.d.mts +14 -3
  393. package/src/foundry/client-esm/canvas/smaa/edges.d.mts +25 -3
  394. package/src/foundry/client-esm/canvas/smaa/smaa.d.mts +121 -23
  395. package/src/foundry/client-esm/canvas/smaa/weights.d.mts +26 -3
  396. package/src/foundry/client-esm/canvas/sources/_module.d.mts +2 -2
  397. package/src/foundry/client-esm/canvas/sources/base-effect-source.d.mts +84 -40
  398. package/src/foundry/client-esm/canvas/sources/base-light-source.d.mts +103 -39
  399. package/src/foundry/client-esm/canvas/sources/global-light-source.d.mts +89 -15
  400. package/src/foundry/client-esm/canvas/sources/point-darkness-source.d.mts +71 -27
  401. package/src/foundry/client-esm/canvas/sources/point-effect-source.d.mts +49 -20
  402. package/src/foundry/client-esm/canvas/sources/point-light-source.d.mts +57 -16
  403. package/src/foundry/client-esm/canvas/sources/point-movement-source.d.mts +31 -4
  404. package/src/foundry/client-esm/canvas/sources/point-sound-source.d.mts +45 -12
  405. package/src/foundry/client-esm/canvas/sources/point-vision-source.d.mts +98 -52
  406. package/src/foundry/client-esm/canvas/sources/rendered-effect-source.d.mts +180 -69
  407. package/src/foundry/client-esm/canvas/tokens/_module.d.mts +2 -3
  408. package/src/foundry/client-esm/canvas/tokens/ring-config.d.mts +175 -2
  409. package/src/foundry/client-esm/canvas/tokens/ring-data.d.mts +142 -2
  410. package/src/foundry/client-esm/canvas/tokens/ring.d.mts +284 -2
  411. package/src/foundry/client-esm/client.d.mts +47 -54
  412. package/src/foundry/client-esm/data/_module.d.mts +2 -2
  413. package/src/foundry/client-esm/data/client-backend.d.mts +22 -23
  414. package/src/foundry/client-esm/data/region-behaviors/_module.d.mts +11 -14
  415. package/src/foundry/client-esm/data/region-behaviors/adjust-darkness-level.d.mts +56 -0
  416. package/src/foundry/client-esm/data/region-behaviors/base.d.mts +59 -0
  417. package/src/foundry/client-esm/data/region-behaviors/display-scrolling-text.d.mts +64 -0
  418. package/src/foundry/client-esm/data/region-behaviors/execute-macro.d.mts +27 -0
  419. package/src/foundry/client-esm/data/region-behaviors/execute-script.d.mts +23 -0
  420. package/src/foundry/client-esm/data/region-behaviors/pause-game.d.mts +23 -0
  421. package/src/foundry/client-esm/data/region-behaviors/suppress-weather.d.mts +17 -0
  422. package/src/foundry/client-esm/data/region-behaviors/teleport-token.d.mts +32 -0
  423. package/src/foundry/client-esm/data/region-behaviors/toggle-behavior.d.mts +31 -0
  424. package/src/foundry/client-esm/dice/_module.d.mts +2 -3
  425. package/src/foundry/client-esm/dice/parser.d.mts +11 -25
  426. package/src/foundry/client-esm/dice/roll.d.mts +112 -89
  427. package/src/foundry/client-esm/dice/terms/_module.d.mts +2 -3
  428. package/src/foundry/client-esm/dice/terms/coin.d.mts +8 -5
  429. package/src/foundry/client-esm/dice/terms/dice.d.mts +93 -63
  430. package/src/foundry/client-esm/dice/terms/die.d.mts +11 -4
  431. package/src/foundry/client-esm/dice/terms/fate.d.mts +9 -2
  432. package/src/foundry/client-esm/dice/terms/function.d.mts +18 -18
  433. package/src/foundry/client-esm/dice/terms/numeric.d.mts +3 -5
  434. package/src/foundry/client-esm/dice/terms/operator.d.mts +2 -2
  435. package/src/foundry/client-esm/dice/terms/parenthetical.d.mts +9 -10
  436. package/src/foundry/client-esm/dice/terms/pool.d.mts +25 -31
  437. package/src/foundry/client-esm/dice/terms/string.d.mts +4 -4
  438. package/src/foundry/client-esm/dice/terms/term.d.mts +18 -4
  439. package/src/foundry/client-esm/dice/twister.d.mts +3 -3
  440. package/src/foundry/client-esm/helpers/_module.d.mts +2 -2
  441. package/src/foundry/client-esm/helpers/_types.d.mts +12 -46
  442. package/src/foundry/client-esm/helpers/compendium-art.d.mts +56 -4
  443. package/src/foundry/common/abstract/_types.d.mts +60 -54
  444. package/src/foundry/common/abstract/backend.d.mts +51 -45
  445. package/src/foundry/common/abstract/data.d.mts +265 -236
  446. package/src/foundry/common/abstract/document.d.mts +1449 -464
  447. package/src/foundry/common/abstract/embedded-collection-delta.d.mts +1 -1
  448. package/src/foundry/common/abstract/embedded-collection.d.mts +37 -7
  449. package/src/foundry/common/abstract/module.d.mts +3 -2
  450. package/src/foundry/common/abstract/singleton-collection.d.mts +1 -1
  451. package/src/foundry/common/abstract/socket.d.mts +1 -1
  452. package/src/foundry/common/abstract/type-data.d.mts +61 -55
  453. package/src/foundry/common/config.d.mts +11 -3
  454. package/src/foundry/common/constants.d.mts +261 -231
  455. package/src/foundry/common/data/data.d.mts +238 -102
  456. package/src/foundry/common/data/fields.d.mts +1334 -874
  457. package/src/foundry/common/data/module.d.mts +2 -2
  458. package/src/foundry/common/data/validation-failure.d.mts +12 -9
  459. package/src/foundry/common/documents/_module.d.mts +4 -2
  460. package/src/foundry/common/documents/_types.d.mts +22 -56
  461. package/src/foundry/common/documents/active-effect.d.mts +358 -194
  462. package/src/foundry/common/documents/actor-delta.d.mts +403 -73
  463. package/src/foundry/common/documents/actor.d.mts +359 -117
  464. package/src/foundry/common/documents/adventure.d.mts +312 -142
  465. package/src/foundry/common/documents/ambient-light.d.mts +296 -75
  466. package/src/foundry/common/documents/ambient-sound.d.mts +296 -109
  467. package/src/foundry/common/documents/card.d.mts +321 -187
  468. package/src/foundry/common/documents/cards.d.mts +353 -125
  469. package/src/foundry/common/documents/chat-message.d.mts +338 -167
  470. package/src/foundry/common/documents/combat.d.mts +358 -94
  471. package/src/foundry/common/documents/combatant.d.mts +323 -92
  472. package/src/foundry/common/documents/drawing.d.mts +327 -206
  473. package/src/foundry/common/documents/fog-exploration.d.mts +303 -69
  474. package/src/foundry/common/documents/folder.d.mts +307 -82
  475. package/src/foundry/common/documents/item.d.mts +377 -100
  476. package/src/foundry/common/documents/journal-entry-page.d.mts +327 -187
  477. package/src/foundry/common/documents/journal-entry.d.mts +345 -68
  478. package/src/foundry/common/documents/macro.d.mts +325 -139
  479. package/src/foundry/common/documents/measured-template.d.mts +328 -138
  480. package/src/foundry/common/documents/note.d.mts +312 -151
  481. package/src/foundry/common/documents/playlist-sound.d.mts +309 -102
  482. package/src/foundry/common/documents/playlist.d.mts +341 -131
  483. package/src/foundry/common/documents/region-behavior.d.mts +360 -0
  484. package/src/foundry/common/documents/region.d.mts +355 -0
  485. package/src/foundry/common/documents/roll-table.d.mts +320 -102
  486. package/src/foundry/common/documents/scene.d.mts +437 -350
  487. package/src/foundry/common/documents/setting.d.mts +285 -54
  488. package/src/foundry/common/documents/table-result.d.mts +326 -103
  489. package/src/foundry/common/documents/tile.d.mts +337 -172
  490. package/src/foundry/common/documents/token.d.mts +396 -447
  491. package/src/foundry/common/documents/user.d.mts +296 -173
  492. package/src/foundry/common/documents/wall.d.mts +303 -156
  493. package/src/foundry/common/grid/_module.d.mts +3 -3
  494. package/src/foundry/common/grid/base.d.mts +66 -49
  495. package/src/foundry/common/grid/gridless.d.mts +2 -2
  496. package/src/foundry/common/grid/hexagonal.d.mts +35 -28
  497. package/src/foundry/common/grid/square.d.mts +3 -3
  498. package/src/foundry/common/packages/base-module.d.mts +6 -24
  499. package/src/foundry/common/packages/base-package.d.mts +56 -31
  500. package/src/foundry/common/packages/base-system.d.mts +45 -63
  501. package/src/foundry/common/packages/base-world.d.mts +15 -61
  502. package/src/foundry/common/packages/module.d.mts +7 -7
  503. package/src/foundry/common/packages/sub-types.d.mts +4 -6
  504. package/src/foundry/common/primitives/array.d.mts +4 -4
  505. package/src/foundry/common/primitives/math.d.mts +7 -1
  506. package/src/foundry/common/primitives/number.d.mts +2 -2
  507. package/src/foundry/common/primitives/set.d.mts +17 -14
  508. package/src/foundry/common/primitives/string.d.mts +1 -1
  509. package/src/foundry/common/prosemirror/_module.d.mts +15 -15
  510. package/src/foundry/common/prosemirror/dirty-plugin.d.mts +1 -1
  511. package/src/foundry/common/prosemirror/dom-parser.d.mts +2 -1
  512. package/src/foundry/common/prosemirror/dropdown.d.mts +1 -1
  513. package/src/foundry/common/prosemirror/highlight-matches-plugin.d.mts +2 -2
  514. package/src/foundry/common/prosemirror/image-plugin.d.mts +1 -1
  515. package/src/foundry/common/prosemirror/menu.d.mts +3 -3
  516. package/src/foundry/common/prosemirror/paste-transformer.d.mts +1 -1
  517. package/src/foundry/common/prosemirror/plugin.d.mts +2 -2
  518. package/src/foundry/common/prosemirror/schema/index.d.mts +0 -1
  519. package/src/foundry/common/prosemirror/schema/lists.d.mts +2 -0
  520. package/src/foundry/common/prosemirror/util.d.mts +1 -1
  521. package/src/foundry/common/types.d.mts +3 -3
  522. package/src/foundry/common/utils/bitmask.d.mts +23 -11
  523. package/src/foundry/common/utils/collection.d.mts +61 -38
  524. package/src/foundry/common/utils/color.d.mts +20 -2
  525. package/src/foundry/common/utils/event-emitter.d.mts +32 -17
  526. package/src/foundry/common/utils/helpers.d.mts +36 -26
  527. package/src/foundry/common/utils/http.d.mts +2 -2
  528. package/src/foundry/common/utils/module.d.mts +2 -2
  529. package/src/foundry/common/utils/string-tree.d.mts +45 -39
  530. package/src/foundry/common/utils/word-tree.d.mts +10 -23
  531. package/src/foundry/index.d.mts +0 -1
  532. package/src/foundry/{clipper → public/scripts/clipper}/clipper.d.mts +58 -16
  533. package/src/foundry/public/scripts/index.d.mts +1 -0
  534. package/src/foundry/public/scripts/workers/image-compressor.d.mts +23 -0
  535. package/src/foundry/public/scripts/workers/index.d.mts +1 -0
  536. package/{index-lenient.d.mts → src/index-lenient.d.mts} +2 -0
  537. package/src/index.d.mts +6 -0
  538. package/src/tsconfig.json +15 -0
  539. package/src/types/augments/particles.d.mts +29 -0
  540. package/src/types/augments/pixi.d.mts +1024 -21
  541. package/src/types/augments/smooth.d.mts +31 -0
  542. package/src/types/augments/tinyMCE.d.mts +1 -1
  543. package/src/types/config.d.mts +18 -313
  544. package/src/types/documentConfiguration.d.mts +286 -542
  545. package/src/types/index.d.mts +1 -1
  546. package/src/types/lib.d.mts +12 -0
  547. package/src/types/workers/image-compressor.d.mts +176 -0
  548. package/src/utils/index.d.mts +1279 -0
  549. package/tsconfig.json +29 -0
  550. package/tsconfig.main.json +8 -0
  551. package/tsconfig.miscellaneous.json +16 -0
  552. package/index.d.mts +0 -5
  553. package/src/foundry/client/apps/placeables/light-config.d.mts +0 -100
  554. package/src/foundry/client/apps/placeables/sound-config.d.mts +0 -43
  555. package/src/foundry/common/documents/module.d.mts +0 -35
  556. package/src/foundry/common/primitives/regex.d.mts +0 -12
  557. package/src/types/helperTypes.d.mts +0 -583
  558. package/src/types/utils.d.mts +0 -539
  559. /package/src/foundry/{clipper → public/scripts/clipper}/index.d.mts +0 -0
@@ -1,48 +1,566 @@
1
- import type { InexactPartial } from "../../../../types/utils.d.mts";
2
- import type { DocumentDatabaseOperations } from "../../../common/abstract/document.d.mts";
1
+ import type { AnyObject, InexactPartial, Merge } from "#utils";
2
+ import type { documents } from "../../../client-esm/client.d.mts";
3
3
  import type { Document } from "../../../common/abstract/module.d.mts";
4
- import type BasePlaylist from "../../../common/documents/playlist.d.mts";
5
- import type { ClientDocument } from "../abstract/client-document.d.mts";
4
+ import type { DataSchema } from "../../../common/data/fields.d.mts";
5
+ import type { fields } from "../../../common/data/module.d.mts";
6
6
 
7
7
  declare global {
8
8
  namespace Playlist {
9
- type Metadata = Document.MetadataFor<Playlist>;
9
+ /**
10
+ * The document's name.
11
+ */
12
+ type Name = "Playlist";
13
+
14
+ /**
15
+ * The arguments to construct the document.
16
+ */
17
+ type ConstructorArgs = Document.ConstructorParameters<CreateData, Parent>;
18
+
19
+ /**
20
+ * The documents embedded within `Playlist`.
21
+ */
22
+ type Hierarchy = Readonly<Document.HierarchyOf<Schema>>;
23
+
24
+ /**
25
+ * The implementation of the `Playlist` document instance configured through `CONFIG.Playlist.documentClass` in Foundry and
26
+ * {@link DocumentClassConfig | `DocumentClassConfig`} or {@link ConfiguredPlaylist | `fvtt-types/configuration/ConfiguredPlaylist`} in fvtt-types.
27
+ */
28
+ type Implementation = Document.ImplementationFor<"Playlist">;
29
+
30
+ /**
31
+ * The implementation of the `Playlist` document configured through `CONFIG.Playlist.documentClass` in Foundry and
32
+ * {@link DocumentClassConfig | `DocumentClassConfig`} in fvtt-types.
33
+ */
34
+ type ImplementationClass = Document.ImplementationClassFor<"Playlist">;
35
+
36
+ /**
37
+ * A document's metadata is special information about the document ranging anywhere from its name,
38
+ * whether it's indexed, or to the permissions a user has over it.
39
+ */
40
+ interface Metadata
41
+ extends Merge<
42
+ Document.Metadata.Default,
43
+ Readonly<{
44
+ name: "Playlist";
45
+ collection: "playlists";
46
+ indexed: true;
47
+ compendiumIndexFields: ["_id", "name", "sort", "folder"];
48
+ embedded: Metadata.Embedded;
49
+ label: string;
50
+ labelPlural: string;
51
+ permissions: Metadata.Permissions;
52
+ schemaVersion: string;
53
+ }>
54
+ > {}
55
+
56
+ namespace Metadata {
57
+ /**
58
+ * The embedded metadata
59
+ */
60
+ interface Embedded {
61
+ PlaylistSound: "sounds";
62
+ }
63
+
64
+ /**
65
+ * The permissions for whether a certain user can create, update, or delete this document.
66
+ */
67
+ interface Permissions {
68
+ create: "PLAYLIST_CREATE";
69
+ }
70
+ }
71
+
72
+ /**
73
+ * A document's parent is something that can contain it.
74
+ * For example an `Item` can be contained by an `Actor` which makes `Actor` one of its possible parents.
75
+ */
76
+ type Parent = null;
77
+
78
+ /**
79
+ * A document's direct descendants are documents that are contained directly within its schema.
80
+ * This is a union of all such instances, or never if the document doesn't have any descendants.
81
+ */
82
+ type DirectDescendant = PlaylistSound.Stored;
83
+
84
+ /**
85
+ * A document's direct descendants are documents that are contained directly within its schema.
86
+ * This is a union of all such classes, or never if the document doesn't have any descendants.
87
+ */
88
+ type DirectDescendantClass = PlaylistSound.ImplementationClass;
89
+
90
+ /**
91
+ * A document's descendants are any documents that are contained within, either within its schema
92
+ * or its descendant's schemas.
93
+ * This is a union of all such instances, or never if the document doesn't have any descendants.
94
+ */
95
+ type Descendant = DirectDescendant;
96
+
97
+ /**
98
+ * A document's descendants are any child documents, grandchild documents, etc.
99
+ * This is a union of all classes, or never if the document doesn't have any descendants.
100
+ */
101
+ type DescendantClass = DirectDescendantClass;
102
+
103
+ /**
104
+ * Types of `CompendiumCollection` this document might be contained in.
105
+ * Note that `this.pack` will always return a string; this is the type for `game.packs.get(this.pack)`
106
+ */
107
+ // Note: Takes any document in the heritage chain (i.e. itself or any parent, transitive or not) that can be contained in a compendium.
108
+ type Pack = CompendiumCollection.ForDocument<"Playlist">;
109
+
110
+ /**
111
+ * An embedded document is a document contained in another.
112
+ * For example an `Item` can be contained by an `Actor` which means `Item` can be embedded in `Actor`.
113
+ *
114
+ * If this is `never` it is because there are no embeddable documents (or there's a bug!).
115
+ */
116
+ type Embedded = Document.ImplementationFor<Embedded.Name>;
117
+
118
+ namespace Embedded {
119
+ /**
120
+ * An embedded document is a document contained in another.
121
+ * For example an `Item` can be contained by an `Actor` which means `Item` can be embedded in `Actor`.
122
+ *
123
+ * If this is `never` it is because there are no embeddable documents (or there's a bug!).
124
+ */
125
+ type Name = keyof Metadata.Embedded;
126
+
127
+ /**
128
+ * Gets the collection name for an embedded document.
129
+ */
130
+ type CollectionNameOf<CollectionName extends Embedded.CollectionName> = Document.Embedded.CollectionNameFor<
131
+ Metadata.Embedded,
132
+ CollectionName
133
+ >;
134
+
135
+ /**
136
+ * Gets the collection document for an embedded document.
137
+ */
138
+ // TODO(LukeAbby): There's a circularity. Should be `Document.Embedded.CollectionDocumentFor<Metadata.Embedded, CollectionName>`
139
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
140
+ type DocumentFor<CollectionName extends Embedded.CollectionName> = Document.Any;
141
+
142
+ /**
143
+ * Gets the collection for an embedded document.
144
+ */
145
+ type CollectionFor<CollectionName extends Embedded.CollectionName> = Document.Embedded.CollectionFor<
146
+ // TODO(LukeAbby): This should be `TokenDocument.Implementation` but this causes a circularity.
147
+ Document.Any,
148
+ Metadata.Embedded,
149
+ CollectionName
150
+ >;
151
+
152
+ /**
153
+ * A valid name to refer to a collection embedded in this document. For example an `Actor`
154
+ * has the key `"items"` which contains `Item` instance which would make both `"Item" | "Items"`
155
+ * valid keys (amongst others).
156
+ */
157
+ type CollectionName = Document.Embedded.CollectionName<Metadata.Embedded>;
158
+ }
159
+
160
+ /**
161
+ * The name of the world or embedded collection this document can find itself in.
162
+ * For example an `Item` is always going to be inside a collection with a key of `items`.
163
+ * This is a fixed string per document type and is primarily useful for {@link ClientDocumentMixin | `Descendant Document Events`}.
164
+ */
165
+ type ParentCollectionName = Metadata["collection"];
166
+
167
+ /**
168
+ * The world collection that contains `Playlist`s. Will be `never` if none exists.
169
+ */
170
+ type CollectionClass = Playlists.ConfiguredClass;
171
+
172
+ /**
173
+ * The world collection that contains `Playlist`s. Will be `never` if none exists.
174
+ */
175
+ type Collection = Playlists.Configured;
176
+
177
+ /**
178
+ * An instance of `Playlist` that comes from the database but failed validation meaning that
179
+ * its `system` and `_source` could theoretically be anything.
180
+ */
181
+ interface Invalid extends Document.Invalid<Playlist.Implementation> {}
182
+
183
+ /**
184
+ * An instance of `Playlist` that comes from the database.
185
+ */
186
+ interface Stored extends Document.Stored<Playlist.Implementation> {}
187
+
188
+ /**
189
+ * The data put in {@link Playlist._source | `Playlist#_source`}.. This data is what was
190
+ * persisted to the database and therefore it must be valid JSON.
191
+ *
192
+ * For example a {@link fields.SetField | `SetField`} is persisted to the database as an array
193
+ * but initialized as a {@link Set | `Set`}.
194
+ */
195
+ interface Source extends fields.SchemaField.SourceData<Schema> {}
196
+
197
+ /**
198
+ * @deprecated {@link Playlist.Source | `Playlist.Source`}
199
+ */
200
+ type PersistedData = Source;
201
+
202
+ /**
203
+ * The data necessary to create a document. Used in places like {@link Playlist.create | `Playlist.create`}
204
+ * and {@link Playlist | `new Playlist(...)`}.
205
+ *
206
+ * For example a {@link fields.SetField | `SetField`} can accept any {@link Iterable | `Iterable`}
207
+ * with the right values. This means you can pass a `Set` instance, an array of values,
208
+ * a generator, or any other iterable.
209
+ */
210
+ interface CreateData extends fields.SchemaField.CreateData<Schema> {}
211
+
212
+ /**
213
+ * The data after a {@link foundry.abstract.Document | `Document`} has been initialized, for example
214
+ * {@link Playlist.name | `Playlist#name`}.
215
+ *
216
+ * This is data transformed from {@link Playlist.Source | `Playlist.Source`} and turned into more
217
+ * convenient runtime data structures. For example a {@link fields.SetField | `SetField`} is
218
+ * persisted to the database as an array of values but at runtime it is a `Set` instance.
219
+ */
220
+ interface InitializedData extends fields.SchemaField.InitializedData<Schema> {}
221
+
222
+ /**
223
+ * The data used to update a document, for example {@link Playlist.update | `Playlist#update`}.
224
+ * It is a distinct type from {@link Playlist.CreateData | `DeepPartial<Playlist.CreateData>`} because
225
+ * it has different rules for `null` and `undefined`.
226
+ */
227
+ interface UpdateData extends fields.SchemaField.UpdateData<Schema> {}
228
+
229
+ /**
230
+ * The schema for {@link Playlist | `Playlist`}. This is the source of truth for how an Playlist document
231
+ * must be structured.
232
+ *
233
+ * Foundry uses this schema to validate the structure of the {@link Playlist | `Playlist`}. For example
234
+ * a {@link fields.StringField | `StringField`} will enforce that the value is a string. More
235
+ * complex fields like {@link fields.SetField | `SetField`} goes through various conversions
236
+ * starting as an array in the database, initialized as a set, and allows updates with any
237
+ * iterable.
238
+ */
239
+ interface Schema extends DataSchema {
240
+ /**
241
+ * The _id which uniquely identifies this Playlist document
242
+ * @defaultValue `null`
243
+ */
244
+ _id: fields.DocumentIdField;
245
+
246
+ /**
247
+ * The name of this playlist
248
+ */
249
+ // FIXME: This field is `required` with no `initial`, so actually required for construction; Currently an AssignmentType override is required to enforce this
250
+ name: fields.StringField<{ required: true; blank: false; textSearch: true }, string>;
251
+
252
+ /**
253
+ * The description of this playlist
254
+ * @defaultValue `undefined`
255
+ */
256
+ description: fields.StringField<{ textSearch: true }>;
257
+
258
+ /**
259
+ * A Collection of PlaylistSounds embedded documents which belong to this playlist
260
+ * @defaultValue `[]`
261
+ */
262
+ sounds: fields.EmbeddedCollectionField<typeof documents.BasePlaylistSound, Playlist.Implementation>;
263
+
264
+ /**
265
+ * A channel in CONST.AUDIO_CHANNELS where all sounds in this playlist are played
266
+ * @defaultValue `"music"`
267
+ */
268
+ channel: fields.StringField<{ choices: typeof CONST.AUDIO_CHANNELS; initial: string; blank: false }>;
269
+
270
+ /**
271
+ * The playback mode for sounds in this playlist
272
+ * @defaultValue `CONST.PLAYLIST_MODES.SEQUENTIAL`
273
+ */
274
+ mode: fields.NumberField<
275
+ {
276
+ required: true;
277
+ choices: CONST.PLAYLIST_MODES[];
278
+ initial: typeof CONST.PLAYLIST_MODES.SEQUENTIAL;
279
+ validationError: "must be a value in CONST.PLAYLIST_MODES";
280
+ },
281
+ // FIXME: Overrides required to enforce the branded type
282
+ CONST.PLAYLIST_MODES | null | undefined,
283
+ CONST.PLAYLIST_MODES,
284
+ CONST.PLAYLIST_MODES
285
+ >;
286
+
287
+ /**
288
+ * Is this playlist currently playing?
289
+ * @defaultValue `false`
290
+ */
291
+ playing: fields.BooleanField;
292
+
293
+ /**
294
+ * A duration in milliseconds to fade volume transition
295
+ * @defaultValue `null`
296
+ */
297
+ fade: fields.NumberField<{ positive: true }>;
298
+
299
+ /**
300
+ * The _id of a Folder which contains this playlist
301
+ * @defaultValue `null`
302
+ */
303
+ folder: fields.ForeignDocumentField<typeof documents.BaseFolder>;
304
+
305
+ /**
306
+ * The sorting mode used for this playlist.
307
+ * @defaultValue `CONST.PLAYLIST_SORT_MODES.ALPHABETICAL`
308
+ */
309
+ sorting: fields.StringField<
310
+ {
311
+ required: true;
312
+ choices: CONST.PLAYLIST_SORT_MODES[];
313
+ initial: typeof CONST.PLAYLIST_SORT_MODES.ALPHABETICAL;
314
+ validationError: "must be a value in CONST.PLAYLIST_SORTING_MODES";
315
+ },
316
+ // FIXME: Overrides required to enforce the branded type
317
+ CONST.PLAYLIST_SORT_MODES | null | undefined,
318
+ CONST.PLAYLIST_SORT_MODES,
319
+ CONST.PLAYLIST_SORT_MODES
320
+ >;
321
+
322
+ /**
323
+ * A seed used for playlist randomization to guarantee that all clients generate the same random order.
324
+ * @defaultValue `null`
325
+ */
326
+ seed: fields.NumberField<{ integer: true; min: 0 }>;
10
327
 
11
- type ConfiguredClass = Document.ConfiguredClassForName<"Playlist">;
12
- type ConfiguredInstance = Document.ConfiguredInstanceForName<"Playlist">;
328
+ /**
329
+ * The numeric sort value which orders this playlist relative to its siblings
330
+ * @defaultValue `0`
331
+ */
332
+ sort: fields.IntegerSortField;
13
333
 
14
- interface DatabaseOperations extends DocumentDatabaseOperations<Playlist> {}
334
+ /**
335
+ * An object which configures ownership of this Playlist
336
+ * @defaultValue see {@link fields.DocumentOwnershipField | `fields.DocumentOwnershipField`}
337
+ */
338
+ ownership: fields.DocumentOwnershipField;
15
339
 
16
- // Helpful aliases
17
- type ConstructorData = BasePlaylist.ConstructorData;
18
- type UpdateData = BasePlaylist.UpdateData;
19
- type Schema = BasePlaylist.Schema;
20
- type Source = BasePlaylist.Source;
340
+ /**
341
+ * An object of optional key/value flags
342
+ * @defaultValue `{}`
343
+ */
344
+ flags: fields.ObjectField.FlagsField<"Playlist">;
21
345
 
22
- interface PlayNextOptions {
346
+ /**
347
+ * An object of creation and access information
348
+ * @defaultValue see {@link fields.DocumentStatsField | `fields.DocumentStatsField`}
349
+ */
350
+ _stats: fields.DocumentStatsField;
351
+ }
352
+
353
+ namespace Database {
354
+ /** Options passed along in Get operations for Playlists */
355
+ interface Get extends foundry.abstract.types.DatabaseGetOperation<Playlist.Parent> {}
356
+
357
+ /** Options passed along in Create operations for Playlists */
358
+ interface Create<Temporary extends boolean | undefined = boolean | undefined>
359
+ extends foundry.abstract.types.DatabaseCreateOperation<Playlist.CreateData, Playlist.Parent, Temporary> {}
360
+
361
+ /** Options passed along in Delete operations for Playlists */
362
+ interface Delete extends foundry.abstract.types.DatabaseDeleteOperation<Playlist.Parent> {}
363
+
364
+ /** Options passed along in Update operations for Playlists */
365
+ interface Update extends foundry.abstract.types.DatabaseUpdateOperation<Playlist.UpdateData, Playlist.Parent> {}
366
+
367
+ /** Operation for {@link Playlist.createDocuments | `Playlist.createDocuments`} */
368
+ interface CreateDocumentsOperation<Temporary extends boolean | undefined>
369
+ extends Document.Database.CreateOperation<Playlist.Database.Create<Temporary>> {}
370
+
371
+ /** Operation for {@link Playlist.updateDocuments | `Playlist.updateDocuments`} */
372
+ interface UpdateDocumentsOperation extends Document.Database.UpdateDocumentsOperation<Playlist.Database.Update> {}
373
+
374
+ /** Operation for {@link Playlist.deleteDocuments | `Playlist.deleteDocuments`} */
375
+ interface DeleteDocumentsOperation extends Document.Database.DeleteDocumentsOperation<Playlist.Database.Delete> {}
376
+
377
+ /** Operation for {@link Playlist.create | `Playlist.create`} */
378
+ interface CreateOperation<Temporary extends boolean | undefined>
379
+ extends Document.Database.CreateOperation<Playlist.Database.Create<Temporary>> {}
380
+
381
+ /** Operation for {@link Playlist.update | `Playlist#update`} */
382
+ interface UpdateOperation extends Document.Database.UpdateOperation<Update> {}
383
+
384
+ interface DeleteOperation extends Document.Database.DeleteOperation<Delete> {}
385
+
386
+ /** Options for {@link Playlist.get | `Playlist.get`} */
387
+ interface GetOptions extends Document.Database.GetOptions {}
388
+
389
+ /** Options for {@link Playlist._preCreate | `Playlist#_preCreate`} */
390
+ interface PreCreateOptions extends Document.Database.PreCreateOptions<Create> {}
391
+
392
+ /** Options for {@link Playlist._onCreate | `Playlist#_onCreate`} */
393
+ interface OnCreateOptions extends Document.Database.CreateOptions<Create> {}
394
+
395
+ /** Operation for {@link Playlist._preCreateOperation | `Playlist._preCreateOperation`} */
396
+ interface PreCreateOperation extends Document.Database.PreCreateOperationStatic<Playlist.Database.Create> {}
397
+
398
+ /** Operation for {@link Playlist._onCreateOperation | `Playlist#_onCreateOperation`} */
399
+ interface OnCreateOperation extends Playlist.Database.Create {}
400
+
401
+ /** Options for {@link Playlist._preUpdate | `Playlist#_preUpdate`} */
402
+ interface PreUpdateOptions extends Document.Database.PreUpdateOptions<Update> {}
403
+
404
+ /** Options for {@link Playlist._onUpdate | `Playlist#_onUpdate`} */
405
+ interface OnUpdateOptions extends Document.Database.UpdateOptions<Update> {}
406
+
407
+ /** Operation for {@link Playlist._preUpdateOperation | `Playlist._preUpdateOperation`} */
408
+ interface PreUpdateOperation extends Playlist.Database.Update {}
409
+
410
+ /** Operation for {@link Playlist._onUpdateOperation | `Playlist._preUpdateOperation`} */
411
+ interface OnUpdateOperation extends Playlist.Database.Update {}
412
+
413
+ /** Options for {@link Playlist._preDelete | `Playlist#_preDelete`} */
414
+ interface PreDeleteOptions extends Document.Database.PreDeleteOperationInstance<Delete> {}
415
+
416
+ /** Options for {@link Playlist._onDelete | `Playlist#_onDelete`} */
417
+ interface OnDeleteOptions extends Document.Database.DeleteOptions<Delete> {}
418
+
419
+ /** Options for {@link Playlist._preDeleteOperation | `Playlist#_preDeleteOperation`} */
420
+ interface PreDeleteOperation extends Playlist.Database.Delete {}
421
+
422
+ /** Options for {@link Playlist._onDeleteOperation | `Playlist#_onDeleteOperation`} */
423
+ interface OnDeleteOperation extends Playlist.Database.Delete {}
424
+
425
+ /** Context for {@link Playlist._onDeleteOperation | `Playlist._onDeleteOperation`} */
426
+ interface OnDeleteDocumentsContext extends Document.ModificationContext<Playlist.Parent> {}
427
+
428
+ /** Context for {@link Playlist._onCreateDocuments | `Playlist._onCreateDocuments`} */
429
+ interface OnCreateDocumentsContext extends Document.ModificationContext<Playlist.Parent> {}
430
+
431
+ /** Context for {@link Playlist._onUpdateDocuments | `Playlist._onUpdateDocuments`} */
432
+ interface OnUpdateDocumentsContext extends Document.ModificationContext<Playlist.Parent> {}
433
+
434
+ /**
435
+ * Options for {@link Playlist._preCreateDescendantDocuments | `Playlist#_preCreateDescendantDocuments`}
436
+ * and {@link Playlist._onCreateDescendantDocuments | `Playlist#_onCreateDescendantDocuments`}
437
+ */
438
+ interface CreateOptions extends Document.Database.CreateOptions<Playlist.Database.Create> {}
439
+
440
+ /**
441
+ * Options for {@link Playlist._preUpdateDescendantDocuments | `Playlist#_preUpdateDescendantDocuments`}
442
+ * and {@link Playlist._onUpdateDescendantDocuments | `Playlist#_onUpdateDescendantDocuments`}
443
+ */
444
+ interface UpdateOptions extends Document.Database.UpdateOptions<Playlist.Database.Update> {}
445
+
446
+ /**
447
+ * Options for {@link Playlist._preDeleteDescendantDocuments | `Playlist#_preDeleteDescendantDocuments`}
448
+ * and {@link Playlist._onDeleteDescendantDocuments | `Playlist#_onDeleteDescendantDocuments`}
449
+ */
450
+ interface DeleteOptions extends Document.Database.DeleteOptions<Playlist.Database.Delete> {}
451
+ }
452
+
453
+ /**
454
+ * The flags that are available for this document in the form `{ [scope: string]: { [key: string]: unknown } }`.
455
+ */
456
+ interface Flags extends Document.ConfiguredFlagsForName<Name> {}
457
+
458
+ namespace Flags {
459
+ /**
460
+ * The valid scopes for the flags on this document e.g. `"core"` or `"dnd5e"`.
461
+ */
462
+ type Scope = Document.FlagKeyOf<Flags>;
463
+
464
+ /**
465
+ * The valid keys for a certain scope for example if the scope is "core" then a valid key may be `"sheetLock"` or `"viewMode"`.
466
+ */
467
+ type Key<Scope extends Flags.Scope> = Document.FlagKeyOf<Document.FlagGetKey<Flags, Scope>>;
468
+
469
+ /**
470
+ * Gets the type of a particular flag given a `Scope` and a `Key`.
471
+ */
472
+ type Get<Scope extends Flags.Scope, Key extends Flags.Key<Scope>> = Document.GetFlag<Name, Scope, Key>;
473
+ }
474
+
475
+ type PreCreateDescendantDocumentsArgs = Document.PreCreateDescendantDocumentsArgs<
476
+ Playlist.Stored,
477
+ Playlist.DirectDescendant,
478
+ Playlist.Metadata.Embedded
479
+ >;
480
+
481
+ type OnCreateDescendantDocumentsArgs = Document.OnCreateDescendantDocumentsArgs<
482
+ Playlist.Stored,
483
+ Playlist.DirectDescendant,
484
+ Playlist.Metadata.Embedded
485
+ >;
486
+
487
+ type PreUpdateDescendantDocumentsArgs = Document.PreUpdateDescendantDocumentsArgs<
488
+ Playlist.Stored,
489
+ Playlist.DirectDescendant,
490
+ Playlist.Metadata.Embedded
491
+ >;
492
+
493
+ type OnUpdateDescendantDocumentsArgs = Document.OnUpdateDescendantDocumentsArgs<
494
+ Playlist.Stored,
495
+ Playlist.DirectDescendant,
496
+ Playlist.Metadata.Embedded
497
+ >;
498
+
499
+ type PreDeleteDescendantDocumentsArgs = Document.PreDeleteDescendantDocumentsArgs<
500
+ Playlist.Stored,
501
+ Playlist.DirectDescendant,
502
+ Playlist.Metadata.Embedded
503
+ >;
504
+
505
+ type OnDeleteDescendantDocumentsArgs = Document.OnDeleteDescendantDocumentsArgs<
506
+ Playlist.Stored,
507
+ Playlist.DirectDescendant,
508
+ Playlist.Metadata.Embedded
509
+ >;
510
+
511
+ /** @internal */
512
+ type _PlayNextOptions = InexactPartial<{
23
513
  /**
24
514
  * Whether to advance forward (if 1) or backwards (if -1)
25
515
  * @defaultValue `1`
516
+ * @remarks Can't be `null` as it only has a parameter default.
517
+ * @privateRemarks This is only checked for `=== 1`, restricting 'backward' values to `-1` based on core's description
26
518
  */
27
519
  direction: 1 | -1;
28
- }
520
+ }>;
521
+
522
+ interface PlayNextOptions extends _PlayNextOptions {}
523
+
524
+ /**
525
+ * @deprecated {@link Playlist.Database.Operation | `Playlist.Database.Operation`}
526
+ */
527
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
528
+ interface DatabaseOperations extends Document.Database.Operations<Playlist.Implementation> {}
529
+
530
+ /**
531
+ * @deprecated {@link Playlist.CreateData | `Playlist.CreateData`}
532
+ */
533
+ interface ConstructorData extends Playlist.CreateData {}
534
+
535
+ /**
536
+ * @deprecated {@link Playlist.implementation | `Playlist.ImplementationClass`}
537
+ */
538
+ type ConfiguredClass = ImplementationClass;
539
+
540
+ /**
541
+ * @deprecated {@link Playlist.Implementation | `Playlist.Implementation`}
542
+ */
543
+ type ConfiguredInstance = Implementation;
29
544
  }
30
545
 
31
546
  /**
32
547
  * The client-side Playlist document which extends the common BasePlaylist model.
33
548
  *
34
- * @see {@link Playlists} The world-level collection of Playlist documents
35
- * @see {@link PlaylistSound} The PlaylistSound embedded document within a parent Playlist
36
- * @see {@link PlaylistConfig} The Playlist configuration application
549
+ * @see {@link Playlists | `Playlists`} The world-level collection of Playlist documents
550
+ * @see {@link PlaylistSound | `PlaylistSound`} The PlaylistSound embedded document within a parent Playlist
551
+ * @see {@link PlaylistConfig | `PlaylistConfig`} The Playlist configuration application
37
552
  *
38
553
  */
39
554
  class Playlist extends ClientDocumentMixin(foundry.documents.BasePlaylist) {
40
- static override metadata: Playlist.Metadata;
555
+ /**
556
+ * @param data - Initial data from which to construct the `Playlist`
557
+ * @param context - Construction context options
558
+ */
559
+ constructor(...args: Playlist.ConstructorArgs);
41
560
 
42
561
  /**
43
562
  * Playlists may have a playback order which defines the sequence of Playlist Sounds
44
563
  * @defaultValue `undefined`
45
- * @internal
46
564
  */
47
565
  protected _playbackOrder: string[] | undefined;
48
566
 
@@ -55,10 +573,10 @@ declare global {
55
573
  override get visible(): boolean;
56
574
 
57
575
  /**
58
- * Find all content links belonging to a given {@link Playlist} or {@link PlaylistSound}.
576
+ * Find all content links belonging to a given {@linkcode Playlist} or {@linkcode PlaylistSound}.
59
577
  * @param doc - The Playlist or PlaylistSound.
60
578
  */
61
- static _getSoundContentLinks(doc: Playlist | PlaylistSound): NodeListOf<Element>;
579
+ static _getSoundContentLinks(doc: Playlist.Implementation | PlaylistSound.Implementation): NodeListOf<Element>;
62
580
 
63
581
  override prepareDerivedData(): void;
64
582
 
@@ -74,7 +592,8 @@ declare global {
74
592
  * @param options - Additional options which configure the next track
75
593
  * @returns The updated Playlist document
76
594
  */
77
- playNext(soundId?: string, options?: Partial<Playlist.PlayNextOptions>): Promise<this | undefined | null>;
595
+ // options: not null (destructured)
596
+ playNext(soundId?: string | null, options?: Playlist.PlayNextOptions): Promise<this | undefined | null>;
78
597
 
79
598
  /**
80
599
  * Begin playback of a specific Sound within this Playlist.
@@ -82,7 +601,7 @@ declare global {
82
601
  * @param sound - The desired sound that should play
83
602
  * @returns The updated Playlist
84
603
  */
85
- playSound(sound: PlaylistSound.ConfiguredInstance): Promise<this | undefined>;
604
+ playSound(sound: PlaylistSound.Implementation): Promise<this | undefined>;
86
605
 
87
606
  /**
88
607
  * Stop playback of a specific Sound within this Playlist.
@@ -90,7 +609,7 @@ declare global {
90
609
  * @param sound - The desired sound that should play
91
610
  * @returns The updated Playlist
92
611
  */
93
- stopSound(sound: PlaylistSound.ConfiguredInstance): Promise<this | undefined>;
612
+ stopSound(sound: PlaylistSound.Implementation): Promise<this | undefined>;
94
613
 
95
614
  /**
96
615
  * End playback for any/all currently playing sounds within the Playlist.
@@ -106,102 +625,194 @@ declare global {
106
625
 
107
626
  /**
108
627
  * Get the next sound in the cached playback order. For internal use.
109
- * @internal
628
+ * @private
110
629
  */
111
- protected _getNextSound(soundId: string): PlaylistSound.ConfiguredInstance | undefined;
630
+ protected _getNextSound(soundId: string): PlaylistSound.Implementation | undefined;
112
631
 
113
632
  /**
114
633
  * Get the previous sound in the cached playback order. For internal use.
115
- * @internal
634
+ * @private
116
635
  */
117
- protected _getPreviousSound(soundId: string): PlaylistSound.ConfiguredInstance | undefined;
636
+ protected _getPreviousSound(soundId: string): PlaylistSound.Implementation | undefined;
118
637
 
119
638
  /**
120
639
  * Define the sorting order for the Sounds within this Playlist. For internal use.
121
640
  * If sorting alphabetically, the sounds are sorted with a locale-independent comparator
122
641
  * to ensure the same order on all clients.
123
- * @internal
642
+ * @private
643
+ */
644
+ protected _sortSounds(a: PlaylistSound.Implementation, b: PlaylistSound.Implementation): number;
645
+
646
+ // options: not null (destructured)
647
+ override toAnchor(options?: TextEditor.EnrichmentAnchorOptions): HTMLAnchorElement;
648
+
649
+ /**
650
+ * @remarks Returns {@link Playlist.playAll | `this.playAll()`} or {@link Playlist.stopAll | `this.stopAll()`}
651
+ */
652
+ override _onClickDocumentLink(event: MouseEvent): Promise<this | undefined>;
653
+
654
+ // _preUpdate, _onUpdate, _onDelete are all overridden but with no signature changes from the BasePlaylist class.
655
+
656
+ /**
657
+ * @remarks To make it possible for narrowing one parameter to jointly narrow other parameters
658
+ * this method must be overridden like so:
659
+ * ```typescript
660
+ * class GurpsPlaylist extends Playlist {
661
+ * protected override _onCreateDescendantDocuments(...args: Playlist.OnCreateDescendantDocumentsArgs) {
662
+ * super._onCreateDescendantDocuments(...args);
663
+ *
664
+ * const [parent, collection, documents, data, options, userId] = args;
665
+ * if (collection === "sounds") {
666
+ * options; // Will be narrowed.
667
+ * }
668
+ * }
669
+ * }
670
+ * ```
671
+ */
672
+ protected override _onCreateDescendantDocuments(...args: Playlist.OnCreateDescendantDocumentsArgs): void;
673
+
674
+ /**
675
+ * @remarks To make it possible for narrowing one parameter to jointly narrow other parameters
676
+ * this method must be overridden like so:
677
+ * ```typescript
678
+ * class Ptr2ePlaylist extends Playlist {
679
+ * protected override _onUpdateDescendantDocuments(...args: Playlist.OnUpdateDescendantDocumentsArgs) {
680
+ * super._onUpdateDescendantDocuments(...args);
681
+ *
682
+ * const [parent, collection, documents, changes, options, userId] = args;
683
+ * if (collection === "sounds") {
684
+ * options; // Will be narrowed.
685
+ * }
686
+ * }
687
+ * }
688
+ * ```
689
+ */
690
+ protected override _onUpdateDescendantDocuments(...args: Playlist.OnUpdateDescendantDocumentsArgs): void;
691
+
692
+ /**
693
+ * @remarks To make it possible for narrowing one parameter to jointly narrow other parameters
694
+ * this method must be overridden like so:
695
+ * ```typescript
696
+ * class BladesPlaylist extends Playlist {
697
+ * protected override _onDeleteDescendantDocuments(...args: Playlist.OnUpdateDescendantDocuments) {
698
+ * super._onDeleteDescendantDocuments(...args);
699
+ *
700
+ * const [parent, collection, documents, ids, options, userId] = args;
701
+ * if (collection === "sounds") {
702
+ * options; // Will be narrowed.
703
+ * }
704
+ * }
705
+ * }
706
+ * ```
124
707
  */
125
- protected _sortSounds(a: PlaylistSound.ConfiguredInstance, b: PlaylistSound.ConfiguredInstance): number;
126
-
127
- override toAnchor(
128
- options?: InexactPartial<{
129
- attrs: Record<string, string>;
130
- dataset: Record<string, string>;
131
- classes: string[];
132
- name: string;
133
- icon: string;
134
- }>,
135
- ): HTMLAnchorElement;
136
-
137
- override _onClickDocumentLink(event: MouseEvent): ReturnType<this["playAll" | "stopAll"]>;
138
-
139
- /**
140
- * @privateRemarks _preUpdate, _onUpdate, _onDelete, _onCreateDescendantDocuments, _onUpdateDescendantDocuments, and _onDeleteDescendantDocuments are all overridden but with no signature changes.
141
- * For type simplicity they are left off. These methods historically have been the source of a large amount of computation from tsc.
142
- */
143
-
144
- protected override _onCreateDescendantDocuments(
145
- parent: ClientDocument<Document.Any>,
146
- collection: string,
147
- documents: ClientDocument<Document.Any>[],
148
- data: unknown[],
149
- options: Document.OnCreateOptions<"PlaylistSound">,
150
- userId: string,
151
- ): void;
152
-
153
- protected override _onUpdateDescendantDocuments(
154
- parent: ClientDocument<Document.Any>,
155
- collection: string,
156
- documents: ClientDocument<Document.Any>[],
157
- changes: unknown[],
158
- options: Document.OnUpdateOptions<"PlaylistSound">,
159
- userId: string,
160
- ): void;
161
-
162
- protected override _onDeleteDescendantDocuments(
163
- parent: ClientDocument<Document.Any>,
164
- collection: string,
165
- documents: ClientDocument<Document.Any>[],
166
- ids: string,
167
- options: Document.OnDeleteOptions<"PlaylistSound">,
168
- userId: string,
169
- ): void;
708
+ protected override _onDeleteDescendantDocuments(...args: Playlist.OnDeleteDescendantDocumentsArgs): void;
170
709
 
171
710
  /**
172
711
  * Handle callback logic when an individual sound within the Playlist concludes playback naturally
173
712
  * @internal
713
+ * @privateRemarks Possibly returns `this.playNext()` so possibly `null`
174
714
  */
175
- _onSoundEnd(sound: PlaylistSound.ConfiguredInstance): Promise<this | undefined>;
715
+ _onSoundEnd(sound: PlaylistSound.Implementation): Promise<this | null | undefined>;
176
716
 
177
717
  /**
178
718
  * Handle callback logic when playback for an individual sound within the Playlist is started.
179
719
  * Schedule auto-preload of next track
180
720
  * @internal
181
721
  */
182
- _onSoundStart(sound: PlaylistSound.ConfiguredInstance): Promise<void>;
183
-
184
- override toCompendium<
185
- FlagsOpt extends boolean = false,
186
- SourceOpt extends boolean = true,
187
- SortOpt extends boolean = true,
188
- FolderOpt extends boolean = false,
189
- OwnershipOpt extends boolean = false,
190
- StateOpt extends boolean = true,
191
- IdOpt extends boolean = false,
192
- >(
722
+ _onSoundStart(sound: PlaylistSound.Implementation): Promise<void>;
723
+
724
+ // options: not null (parameter default only, destructured in super)
725
+ override toCompendium<Options extends ClientDocument.ToCompendiumOptions | undefined = undefined>(
193
726
  pack?: CompendiumCollection<CompendiumCollection.Metadata> | null,
194
- options?: InexactPartial<
195
- ClientDocument.CompendiumExportOptions<FlagsOpt, SourceOpt, SortOpt, FolderOpt, OwnershipOpt, StateOpt, IdOpt>
196
- >,
197
- ): Omit<
198
- this["_source"],
199
- | (IdOpt extends false ? "_id" : never)
200
- | ClientDocument.OmitProperty<SortOpt, "sort" | "navigation" | "navOrder">
201
- | ClientDocument.OmitProperty<FolderOpt, "folder">
202
- | ClientDocument.OmitProperty<FlagsOpt, "flags">
203
- | ClientDocument.OmitProperty<OwnershipOpt, "ownership">
204
- | ClientDocument.OmitProperty<StateOpt, "active" | "fogReset" | "playing"> // does not model the sounds.playing = false
205
- >;
727
+ options?: Options,
728
+ ): ClientDocument.ToCompendiumReturnType<foundry.documents.BasePlaylist, Options>;
729
+
730
+ /*
731
+ * After this point these are not really overridden methods.
732
+ * They are here because Foundry's documents are complex and have lots of edge cases.
733
+ * There are DRY ways of representing this but this ends up being harder to understand
734
+ * for end users extending these functions, especially for static methods. There are also a
735
+ * number of methods that don't make sense to call directly on `Document` like `createDocuments`,
736
+ * as there is no data that can safely construct every possible document. Finally keeping definitions
737
+ * separate like this helps against circularities.
738
+ */
739
+
740
+ // ClientDocument overrides
741
+
742
+ /**
743
+ * @remarks To make it possible for narrowing one parameter to jointly narrow other parameters
744
+ * this method must be overridden like so:
745
+ * ```typescript
746
+ * class SwadePlaylist extends Playlist {
747
+ * protected override _preCreateDescendantDocuments(...args: Playlist.PreCreateDescendantDocumentsArgs) {
748
+ * super._preCreateDescendantDocuments(...args);
749
+ *
750
+ * const [parent, collection, data, options, userId] = args;
751
+ * if (collection === "sounds") {
752
+ * options; // Will be narrowed.
753
+ * }
754
+ * }
755
+ * }
756
+ * ```
757
+ */
758
+ protected override _preCreateDescendantDocuments(...args: Playlist.PreCreateDescendantDocumentsArgs): void;
759
+
760
+ /**
761
+ * @remarks To make it possible for narrowing one parameter to jointly narrow other parameters
762
+ * this method must be overridden like so:
763
+ * ```typescript
764
+ * class LancerPlaylist extends Playlist {
765
+ * protected override _preUpdateDescendantDocuments(...args: Playlist.OnUpdateDescendantDocuments) {
766
+ * super._preUpdateDescendantDocuments(...args);
767
+ *
768
+ * const [parent, collection, changes, options, userId] = args;
769
+ * if (collection === "sounds") {
770
+ * options; // Will be narrowed.
771
+ * }
772
+ * }
773
+ * }
774
+ * ```
775
+ */
776
+ protected override _preUpdateDescendantDocuments(...args: Playlist.PreUpdateDescendantDocumentsArgs): void;
777
+
778
+ /**
779
+ * @remarks To make it possible for narrowing one parameter to jointly narrow other parameters
780
+ * this method must be overridden like so:
781
+ * ```typescript
782
+ * class KultPlaylist extends Playlist {
783
+ * protected override _preDeleteDescendantDocuments(...args: Playlist.PreDeleteDescendantDocumentsArgs) {
784
+ * super._preDeleteDescendantDocuments(...args);
785
+ *
786
+ * const [parent, collection, ids, options, userId] = args;
787
+ * if (collection === "sounds") {
788
+ * options; // Will be narrowed.
789
+ * }
790
+ * }
791
+ * }
792
+ * ```
793
+ */
794
+ protected override _preDeleteDescendantDocuments(...args: Playlist.PreDeleteDescendantDocumentsArgs): void;
795
+
796
+ // context: not null (destructured)
797
+ static override defaultName(context?: Document.DefaultNameContext<"Playlist", Playlist.Parent>): string;
798
+
799
+ // data: not null (parameter default only), context: not null (destructured)
800
+ static override createDialog(
801
+ data?: Document.CreateDialogData<Playlist.CreateData>,
802
+ context?: Document.CreateDialogContext<"Playlist", Playlist.Parent>,
803
+ ): Promise<Playlist.Stored | null | undefined>;
804
+
805
+ // options: not null (parameter default only)
806
+ static override fromDropData(
807
+ data: Document.DropData<Playlist.Implementation>,
808
+ options?: AnyObject,
809
+ ): Promise<Playlist.Implementation | undefined>;
810
+
811
+ static override fromImport(
812
+ source: Playlist.Source,
813
+ context?: Document.FromImportContext<Playlist.Parent> | null,
814
+ ): Promise<Playlist.Implementation>;
815
+
816
+ #Playlist: true;
206
817
  }
207
818
  }