@mirasen/chessboard 0.1.0

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 (336) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/LICENSE +21 -0
  3. package/README.md +96 -0
  4. package/assets/pieces/chessnut/ATTRIBUTION.md +13 -0
  5. package/assets/pieces/chessnut/LICENSE.txt +202 -0
  6. package/assets/pieces/chessnut/bB.svg +58 -0
  7. package/assets/pieces/chessnut/bK.svg +51 -0
  8. package/assets/pieces/chessnut/bN.svg +19 -0
  9. package/assets/pieces/chessnut/bP.svg +17 -0
  10. package/assets/pieces/chessnut/bQ.svg +97 -0
  11. package/assets/pieces/chessnut/bR.svg +34 -0
  12. package/assets/pieces/chessnut/wB.svg +61 -0
  13. package/assets/pieces/chessnut/wK.svg +71 -0
  14. package/assets/pieces/chessnut/wN.svg +19 -0
  15. package/assets/pieces/chessnut/wP.svg +17 -0
  16. package/assets/pieces/chessnut/wQ.svg +40 -0
  17. package/assets/pieces/chessnut/wR.svg +38 -0
  18. package/dist/animation/planner.d.ts +6 -0
  19. package/dist/animation/planner.js +128 -0
  20. package/dist/animation/render/fade.d.ts +7 -0
  21. package/dist/animation/render/fade.js +24 -0
  22. package/dist/animation/render/move.d.ts +7 -0
  23. package/dist/animation/render/move.js +28 -0
  24. package/dist/animation/render/plan.d.ts +14 -0
  25. package/dist/animation/render/plan.js +69 -0
  26. package/dist/animation/render/static.d.ts +7 -0
  27. package/dist/animation/render/static.js +21 -0
  28. package/dist/animation/render/types.d.ts +21 -0
  29. package/dist/animation/render/types.js +1 -0
  30. package/dist/animation/types.d.ts +46 -0
  31. package/dist/animation/types.js +6 -0
  32. package/dist/extensions/animation/factory.d.ts +3 -0
  33. package/dist/extensions/animation/factory.js +88 -0
  34. package/dist/extensions/animation/types.d.ts +11 -0
  35. package/dist/extensions/animation/types.js +1 -0
  36. package/dist/extensions/factory/main.d.ts +2 -0
  37. package/dist/extensions/factory/main.js +101 -0
  38. package/dist/extensions/factory/runtime.d.ts +5 -0
  39. package/dist/extensions/factory/runtime.js +43 -0
  40. package/dist/extensions/first-party/active-target/factory.d.ts +2 -0
  41. package/dist/extensions/first-party/active-target/factory.js +109 -0
  42. package/dist/extensions/first-party/active-target/types.d.ts +25 -0
  43. package/dist/extensions/first-party/active-target/types.js +15 -0
  44. package/dist/extensions/first-party/board-events/factory.d.ts +2 -0
  45. package/dist/extensions/first-party/board-events/factory.js +65 -0
  46. package/dist/extensions/first-party/board-events/types.d.ts +27 -0
  47. package/dist/extensions/first-party/board-events/types.js +2 -0
  48. package/dist/extensions/first-party/common/helpers.d.ts +8 -0
  49. package/dist/extensions/first-party/common/helpers.js +33 -0
  50. package/dist/extensions/first-party/common/types.d.ts +10 -0
  51. package/dist/extensions/first-party/common/types.js +1 -0
  52. package/dist/extensions/first-party/last-move/factory.d.ts +2 -0
  53. package/dist/extensions/first-party/last-move/factory.js +106 -0
  54. package/dist/extensions/first-party/last-move/types.d.ts +19 -0
  55. package/dist/extensions/first-party/last-move/types.js +6 -0
  56. package/dist/extensions/first-party/legal-moves/factory.d.ts +2 -0
  57. package/dist/extensions/first-party/legal-moves/factory.js +101 -0
  58. package/dist/extensions/first-party/legal-moves/types.d.ts +29 -0
  59. package/dist/extensions/first-party/legal-moves/types.js +19 -0
  60. package/dist/extensions/first-party/main-renderer/animation/factory.d.ts +4 -0
  61. package/dist/extensions/first-party/main-renderer/animation/factory.js +35 -0
  62. package/dist/extensions/first-party/main-renderer/animation/render.d.ts +7 -0
  63. package/dist/extensions/first-party/main-renderer/animation/render.js +46 -0
  64. package/dist/extensions/first-party/main-renderer/animation/types.d.ts +24 -0
  65. package/dist/extensions/first-party/main-renderer/animation/types.js +1 -0
  66. package/dist/extensions/first-party/main-renderer/animation/update.d.ts +3 -0
  67. package/dist/extensions/first-party/main-renderer/animation/update.js +40 -0
  68. package/dist/extensions/first-party/main-renderer/board/factory.d.ts +3 -0
  69. package/dist/extensions/first-party/main-renderer/board/factory.js +16 -0
  70. package/dist/extensions/first-party/main-renderer/board/render.d.ts +3 -0
  71. package/dist/extensions/first-party/main-renderer/board/render.js +24 -0
  72. package/dist/extensions/first-party/main-renderer/board/types.d.ts +10 -0
  73. package/dist/extensions/first-party/main-renderer/board/types.js +1 -0
  74. package/dist/extensions/first-party/main-renderer/board/update.d.ts +3 -0
  75. package/dist/extensions/first-party/main-renderer/board/update.js +27 -0
  76. package/dist/extensions/first-party/main-renderer/coordinates/factory.d.ts +3 -0
  77. package/dist/extensions/first-party/main-renderer/coordinates/factory.js +9 -0
  78. package/dist/extensions/first-party/main-renderer/coordinates/render.d.ts +3 -0
  79. package/dist/extensions/first-party/main-renderer/coordinates/render.js +60 -0
  80. package/dist/extensions/first-party/main-renderer/coordinates/types.d.ts +8 -0
  81. package/dist/extensions/first-party/main-renderer/coordinates/types.js +1 -0
  82. package/dist/extensions/first-party/main-renderer/drag/factory.d.ts +4 -0
  83. package/dist/extensions/first-party/main-renderer/drag/factory.js +23 -0
  84. package/dist/extensions/first-party/main-renderer/drag/render.d.ts +3 -0
  85. package/dist/extensions/first-party/main-renderer/drag/render.js +27 -0
  86. package/dist/extensions/first-party/main-renderer/drag/types.d.ts +16 -0
  87. package/dist/extensions/first-party/main-renderer/drag/types.js +1 -0
  88. package/dist/extensions/first-party/main-renderer/drag/update.d.ts +3 -0
  89. package/dist/extensions/first-party/main-renderer/drag/update.js +23 -0
  90. package/dist/extensions/first-party/main-renderer/factory.d.ts +2 -0
  91. package/dist/extensions/first-party/main-renderer/factory.js +95 -0
  92. package/dist/extensions/first-party/main-renderer/normalize.d.ts +4 -0
  93. package/dist/extensions/first-party/main-renderer/normalize.js +27 -0
  94. package/dist/extensions/first-party/main-renderer/pieces/factory.d.ts +3 -0
  95. package/dist/extensions/first-party/main-renderer/pieces/factory.js +27 -0
  96. package/dist/extensions/first-party/main-renderer/pieces/render.d.ts +3 -0
  97. package/dist/extensions/first-party/main-renderer/pieces/render.js +45 -0
  98. package/dist/extensions/first-party/main-renderer/pieces/suppress.d.ts +5 -0
  99. package/dist/extensions/first-party/main-renderer/pieces/suppress.js +9 -0
  100. package/dist/extensions/first-party/main-renderer/pieces/types.d.ts +20 -0
  101. package/dist/extensions/first-party/main-renderer/pieces/types.js +1 -0
  102. package/dist/extensions/first-party/main-renderer/pieces/update.d.ts +6 -0
  103. package/dist/extensions/first-party/main-renderer/pieces/update.js +31 -0
  104. package/dist/extensions/first-party/main-renderer/types/extension.d.ts +15 -0
  105. package/dist/extensions/first-party/main-renderer/types/extension.js +10 -0
  106. package/dist/extensions/first-party/main-renderer/types/input.d.ts +4 -0
  107. package/dist/extensions/first-party/main-renderer/types/input.js +1 -0
  108. package/dist/extensions/first-party/main-renderer/types/instance.d.ts +16 -0
  109. package/dist/extensions/first-party/main-renderer/types/instance.js +1 -0
  110. package/dist/extensions/first-party/main-renderer/types/internal.d.ts +17 -0
  111. package/dist/extensions/first-party/main-renderer/types/internal.js +30 -0
  112. package/dist/extensions/first-party/main-renderer/types/template.d.ts +5 -0
  113. package/dist/extensions/first-party/main-renderer/types/template.js +1 -0
  114. package/dist/extensions/first-party/selected-square/factory.d.ts +2 -0
  115. package/dist/extensions/first-party/selected-square/factory.js +88 -0
  116. package/dist/extensions/first-party/selected-square/types.d.ts +18 -0
  117. package/dist/extensions/first-party/selected-square/types.js +6 -0
  118. package/dist/extensions/index.d.ts +8 -0
  119. package/dist/extensions/index.js +6 -0
  120. package/dist/extensions/invalidation/factory.d.ts +2 -0
  121. package/dist/extensions/invalidation/factory.js +22 -0
  122. package/dist/extensions/invalidation/types.d.ts +11 -0
  123. package/dist/extensions/invalidation/types.js +1 -0
  124. package/dist/extensions/types/basic/animation.d.ts +28 -0
  125. package/dist/extensions/types/basic/animation.js +6 -0
  126. package/dist/extensions/types/basic/events.d.ts +34 -0
  127. package/dist/extensions/types/basic/events.js +7 -0
  128. package/dist/extensions/types/basic/mount.d.ts +7 -0
  129. package/dist/extensions/types/basic/mount.js +14 -0
  130. package/dist/extensions/types/basic/render.d.ts +9 -0
  131. package/dist/extensions/types/basic/render.js +1 -0
  132. package/dist/extensions/types/basic/transient-visuals.d.ts +10 -0
  133. package/dist/extensions/types/basic/transient-visuals.js +1 -0
  134. package/dist/extensions/types/basic/update.d.ts +16 -0
  135. package/dist/extensions/types/basic/update.js +11 -0
  136. package/dist/extensions/types/context/animation.d.ts +31 -0
  137. package/dist/extensions/types/context/animation.js +9 -0
  138. package/dist/extensions/types/context/render.d.ts +6 -0
  139. package/dist/extensions/types/context/render.js +1 -0
  140. package/dist/extensions/types/context/transient-visuals.d.ts +7 -0
  141. package/dist/extensions/types/context/transient-visuals.js +1 -0
  142. package/dist/extensions/types/context/ui-move.d.ts +16 -0
  143. package/dist/extensions/types/context/ui-move.js +1 -0
  144. package/dist/extensions/types/context/update.d.ts +25 -0
  145. package/dist/extensions/types/context/update.js +10 -0
  146. package/dist/extensions/types/extension.d.ts +40 -0
  147. package/dist/extensions/types/extension.js +1 -0
  148. package/dist/extensions/types/main.d.ts +44 -0
  149. package/dist/extensions/types/main.js +1 -0
  150. package/dist/extensions/types/surface/commands.d.ts +26 -0
  151. package/dist/extensions/types/surface/commands.js +1 -0
  152. package/dist/extensions/types/surface/events.d.ts +5 -0
  153. package/dist/extensions/types/surface/events.js +1 -0
  154. package/dist/extensions/types/surface/main.d.ts +10 -0
  155. package/dist/extensions/types/surface/main.js +1 -0
  156. package/dist/extensions/types/surface/transient-visuals.d.ts +4 -0
  157. package/dist/extensions/types/surface/transient-visuals.js +1 -0
  158. package/dist/extensions/types/wrapper.d.ts +26 -0
  159. package/dist/extensions/types/wrapper.js +11 -0
  160. package/dist/extensions/update.d.ts +4 -0
  161. package/dist/extensions/update.js +29 -0
  162. package/dist/helpers/util.d.ts +1 -0
  163. package/dist/helpers/util.js +9 -0
  164. package/dist/index.d.ts +4 -0
  165. package/dist/index.js +1 -0
  166. package/dist/layout/factory.d.ts +2 -0
  167. package/dist/layout/factory.js +33 -0
  168. package/dist/layout/geometry/factory.d.ts +12 -0
  169. package/dist/layout/geometry/factory.js +33 -0
  170. package/dist/layout/geometry/types.d.ts +20 -0
  171. package/dist/layout/geometry/types.js +1 -0
  172. package/dist/layout/helpers.d.ts +4 -0
  173. package/dist/layout/helpers.js +6 -0
  174. package/dist/layout/mutation.d.ts +6 -0
  175. package/dist/layout/mutation.js +1 -0
  176. package/dist/layout/reducers.d.ts +2 -0
  177. package/dist/layout/reducers.js +30 -0
  178. package/dist/layout/types.d.ts +23 -0
  179. package/dist/layout/types.js +1 -0
  180. package/dist/mutation/pipeline.d.ts +2 -0
  181. package/dist/mutation/pipeline.js +36 -0
  182. package/dist/mutation/session.d.ts +3 -0
  183. package/dist/mutation/session.js +66 -0
  184. package/dist/mutation/types.d.ts +26 -0
  185. package/dist/mutation/types.js +1 -0
  186. package/dist/render/factory.d.ts +2 -0
  187. package/dist/render/factory.js +117 -0
  188. package/dist/render/mount.d.ts +3 -0
  189. package/dist/render/mount.js +28 -0
  190. package/dist/render/rendering/animation.d.ts +13 -0
  191. package/dist/render/rendering/animation.js +92 -0
  192. package/dist/render/rendering/helpers.d.ts +3 -0
  193. package/dist/render/rendering/helpers.js +10 -0
  194. package/dist/render/rendering/state.d.ts +4 -0
  195. package/dist/render/rendering/state.js +48 -0
  196. package/dist/render/rendering/visuals.d.ts +3 -0
  197. package/dist/render/rendering/visuals.js +21 -0
  198. package/dist/render/scheduler/scheduler.d.ts +2 -0
  199. package/dist/render/scheduler/scheduler.js +53 -0
  200. package/dist/render/scheduler/types.d.ts +12 -0
  201. package/dist/render/scheduler/types.js +1 -0
  202. package/dist/render/svg/factory.d.ts +4 -0
  203. package/dist/render/svg/factory.js +38 -0
  204. package/dist/render/svg/helpers.d.ts +18 -0
  205. package/dist/render/svg/helpers.js +34 -0
  206. package/dist/render/types.d.ts +42 -0
  207. package/dist/render/types.js +1 -0
  208. package/dist/runtime/factory/helpers.d.ts +6 -0
  209. package/dist/runtime/factory/helpers.js +42 -0
  210. package/dist/runtime/factory/input.d.ts +3 -0
  211. package/dist/runtime/factory/input.js +98 -0
  212. package/dist/runtime/factory/main.d.ts +2 -0
  213. package/dist/runtime/factory/main.js +182 -0
  214. package/dist/runtime/factory/ui-move.d.ts +4 -0
  215. package/dist/runtime/factory/ui-move.js +84 -0
  216. package/dist/runtime/input/adapter/factory.d.ts +2 -0
  217. package/dist/runtime/input/adapter/factory.js +55 -0
  218. package/dist/runtime/input/adapter/helpers.d.ts +5 -0
  219. package/dist/runtime/input/adapter/helpers.js +23 -0
  220. package/dist/runtime/input/adapter/pointer.d.ts +13 -0
  221. package/dist/runtime/input/adapter/pointer.js +97 -0
  222. package/dist/runtime/input/adapter/types.d.ts +16 -0
  223. package/dist/runtime/input/adapter/types.js +1 -0
  224. package/dist/runtime/input/controller/factory.d.ts +2 -0
  225. package/dist/runtime/input/controller/factory.js +32 -0
  226. package/dist/runtime/input/controller/helpers.d.ts +3 -0
  227. package/dist/runtime/input/controller/helpers.js +12 -0
  228. package/dist/runtime/input/controller/pointer.d.ts +7 -0
  229. package/dist/runtime/input/controller/pointer.js +104 -0
  230. package/dist/runtime/input/controller/transient-visuals.d.ts +3 -0
  231. package/dist/runtime/input/controller/transient-visuals.js +12 -0
  232. package/dist/runtime/input/controller/types.d.ts +25 -0
  233. package/dist/runtime/input/controller/types.js +1 -0
  234. package/dist/runtime/layout.d.ts +2 -0
  235. package/dist/runtime/layout.js +10 -0
  236. package/dist/runtime/lifecycle.d.ts +12 -0
  237. package/dist/runtime/lifecycle.js +49 -0
  238. package/dist/runtime/mutation/extension-update.d.ts +2 -0
  239. package/dist/runtime/mutation/extension-update.js +26 -0
  240. package/dist/runtime/mutation/factory.d.ts +2 -0
  241. package/dist/runtime/mutation/factory.js +47 -0
  242. package/dist/runtime/mutation/interaction.d.ts +2 -0
  243. package/dist/runtime/mutation/interaction.js +34 -0
  244. package/dist/runtime/mutation/invalidation.d.ts +0 -0
  245. package/dist/runtime/mutation/invalidation.js +2 -0
  246. package/dist/runtime/mutation/last-move.d.ts +3 -0
  247. package/dist/runtime/mutation/last-move.js +19 -0
  248. package/dist/runtime/mutation/layout.d.ts +2 -0
  249. package/dist/runtime/mutation/layout.js +8 -0
  250. package/dist/runtime/mutation/pipeline.d.ts +22 -0
  251. package/dist/runtime/mutation/pipeline.js +1 -0
  252. package/dist/runtime/mutation/request-render.d.ts +2 -0
  253. package/dist/runtime/mutation/request-render.js +29 -0
  254. package/dist/runtime/mutation/run.d.ts +2 -0
  255. package/dist/runtime/mutation/run.js +3 -0
  256. package/dist/runtime/mutation/types.d.ts +14 -0
  257. package/dist/runtime/mutation/types.js +1 -0
  258. package/dist/runtime/types/main.d.ts +36 -0
  259. package/dist/runtime/types/main.js +1 -0
  260. package/dist/runtime/types/ui-move.d.ts +9 -0
  261. package/dist/runtime/types/ui-move.js +1 -0
  262. package/dist/state/board/check.d.ts +27 -0
  263. package/dist/state/board/check.js +148 -0
  264. package/dist/state/board/coords.d.ts +4 -0
  265. package/dist/state/board/coords.js +9 -0
  266. package/dist/state/board/denormalize.d.ts +11 -0
  267. package/dist/state/board/denormalize.js +77 -0
  268. package/dist/state/board/factory.d.ts +3 -0
  269. package/dist/state/board/factory.js +46 -0
  270. package/dist/state/board/mutation.d.ts +9 -0
  271. package/dist/state/board/mutation.js +1 -0
  272. package/dist/state/board/normalize.d.ts +8 -0
  273. package/dist/state/board/normalize.js +76 -0
  274. package/dist/state/board/piece.d.ts +3 -0
  275. package/dist/state/board/piece.js +11 -0
  276. package/dist/state/board/position.d.ts +4 -0
  277. package/dist/state/board/position.js +94 -0
  278. package/dist/state/board/reducers.d.ts +8 -0
  279. package/dist/state/board/reducers.js +80 -0
  280. package/dist/state/board/types/input.d.ts +35 -0
  281. package/dist/state/board/types/input.js +1 -0
  282. package/dist/state/board/types/internal.d.ts +54 -0
  283. package/dist/state/board/types/internal.js +17 -0
  284. package/dist/state/board/types/main.d.ts +18 -0
  285. package/dist/state/board/types/main.js +1 -0
  286. package/dist/state/board/types/output.d.ts +5 -0
  287. package/dist/state/board/types/output.js +1 -0
  288. package/dist/state/board/types/template.d.ts +23 -0
  289. package/dist/state/board/types/template.js +1 -0
  290. package/dist/state/change/factory.d.ts +2 -0
  291. package/dist/state/change/factory.js +28 -0
  292. package/dist/state/change/helpers.d.ts +8 -0
  293. package/dist/state/change/helpers.js +86 -0
  294. package/dist/state/change/mutation.d.ts +6 -0
  295. package/dist/state/change/mutation.js +1 -0
  296. package/dist/state/change/reducers.d.ts +5 -0
  297. package/dist/state/change/reducers.js +16 -0
  298. package/dist/state/change/types.d.ts +17 -0
  299. package/dist/state/change/types.js +1 -0
  300. package/dist/state/factory.d.ts +2 -0
  301. package/dist/state/factory.js +24 -0
  302. package/dist/state/interaction/factory.d.ts +2 -0
  303. package/dist/state/interaction/factory.js +83 -0
  304. package/dist/state/interaction/helpers.d.ts +4 -0
  305. package/dist/state/interaction/helpers.js +16 -0
  306. package/dist/state/interaction/movability.d.ts +5 -0
  307. package/dist/state/interaction/movability.js +87 -0
  308. package/dist/state/interaction/mutation.d.ts +11 -0
  309. package/dist/state/interaction/mutation.js +1 -0
  310. package/dist/state/interaction/normalize.d.ts +5 -0
  311. package/dist/state/interaction/normalize.js +50 -0
  312. package/dist/state/interaction/reducers.d.ts +11 -0
  313. package/dist/state/interaction/reducers.js +81 -0
  314. package/dist/state/interaction/types/input.d.ts +18 -0
  315. package/dist/state/interaction/types/input.js +1 -0
  316. package/dist/state/interaction/types/internal.d.ts +35 -0
  317. package/dist/state/interaction/types/internal.js +1 -0
  318. package/dist/state/interaction/types/main.d.ts +33 -0
  319. package/dist/state/interaction/types/main.js +1 -0
  320. package/dist/state/types.d.ts +30 -0
  321. package/dist/state/types.js +1 -0
  322. package/dist/state/view/factory.d.ts +2 -0
  323. package/dist/state/view/factory.js +24 -0
  324. package/dist/state/view/mutation.d.ts +5 -0
  325. package/dist/state/view/mutation.js +1 -0
  326. package/dist/state/view/reducers.d.ts +3 -0
  327. package/dist/state/view/reducers.js +6 -0
  328. package/dist/state/view/types/internal.d.ts +6 -0
  329. package/dist/state/view/types/internal.js +1 -0
  330. package/dist/state/view/types/main.d.ts +12 -0
  331. package/dist/state/view/types/main.js +1 -0
  332. package/dist/wrapper/factory.d.ts +3 -0
  333. package/dist/wrapper/factory.js +61 -0
  334. package/dist/wrapper/types.d.ts +56 -0
  335. package/dist/wrapper/types.js +1 -0
  336. package/package.json +98 -0
@@ -0,0 +1,18 @@
1
+ import { PartialDeep } from 'type-fest';
2
+ import { ExtensionDefinition, ExtensionInstance } from '../../types/extension';
3
+ import { ExtensionInternal, OpaqueColor } from '../common/types';
4
+ export declare const EXTENSION_SLOTS: readonly ["underPieces"];
5
+ export type ExtensionSlotsType = typeof EXTENSION_SLOTS;
6
+ export declare const EXTENSION_ID: "selectedSquare";
7
+ export type SelectedSquareConfig = OpaqueColor;
8
+ export declare const DEFAULT_CONFIG: SelectedSquareConfig;
9
+ export type SelectedSquareInitConfig = PartialDeep<SelectedSquareConfig>;
10
+ export type SelectedSquareDefinition = ExtensionDefinition<typeof EXTENSION_ID, typeof EXTENSION_SLOTS, never>;
11
+ export type SelectedSquareInstance = ExtensionInstance<typeof EXTENSION_ID, typeof EXTENSION_SLOTS, never>;
12
+ export interface SelectedSquareInstanceInternal extends ExtensionInternal<ExtensionSlotsType> {
13
+ svgRect: SVGRectElement | null;
14
+ readonly config: SelectedSquareConfig;
15
+ }
16
+ export declare const enum DirtyLayer {
17
+ Highlight = 1
18
+ }
@@ -0,0 +1,6 @@
1
+ export const EXTENSION_SLOTS = ['underPieces'];
2
+ export const EXTENSION_ID = 'selectedSquare';
3
+ export const DEFAULT_CONFIG = {
4
+ color: 'rgba(255, 255, 0)',
5
+ opacity: 0.4
6
+ };
@@ -0,0 +1,8 @@
1
+ export { createActiveTarget } from './first-party/active-target/factory';
2
+ export { createBoardEvents } from './first-party/board-events/factory';
3
+ export { createLastMove } from './first-party/last-move/factory';
4
+ export { createLegalMoves } from './first-party/legal-moves/factory';
5
+ export { createMainRenderer } from './first-party/main-renderer/factory';
6
+ export { createSelectedSquare } from './first-party/selected-square/factory';
7
+ export type { AnyExtensionDefinition, ExtensionDefinitionId, ExtensionDefinitionPublicApi } from './types/extension';
8
+ export type { BuiltInExtensionId, DefaultBuiltinChessboardExtensions } from './types/wrapper';
@@ -0,0 +1,6 @@
1
+ export { createActiveTarget } from './first-party/active-target/factory';
2
+ export { createBoardEvents } from './first-party/board-events/factory';
3
+ export { createLastMove } from './first-party/last-move/factory';
4
+ export { createLegalMoves } from './first-party/legal-moves/factory';
5
+ export { createMainRenderer } from './first-party/main-renderer/factory';
6
+ export { createSelectedSquare } from './first-party/selected-square/factory';
@@ -0,0 +1,2 @@
1
+ import type { ExtensionInvalidationState } from './types';
2
+ export declare function createExtensionInvalidationState(): ExtensionInvalidationState;
@@ -0,0 +1,22 @@
1
+ function createExtensionInvalidationStateInternal() {
2
+ return {
3
+ dirtyLayers: 0
4
+ };
5
+ }
6
+ export function createExtensionInvalidationState() {
7
+ const internalState = createExtensionInvalidationStateInternal();
8
+ return {
9
+ get dirtyLayers() {
10
+ return internalState.dirtyLayers;
11
+ },
12
+ markDirty(layers) {
13
+ internalState.dirtyLayers |= layers;
14
+ },
15
+ clearDirty(layers) {
16
+ internalState.dirtyLayers &= ~layers;
17
+ },
18
+ clear() {
19
+ internalState.dirtyLayers = 0;
20
+ }
21
+ };
22
+ }
@@ -0,0 +1,11 @@
1
+ export interface ExtensionInvalidationStateInternal {
2
+ dirtyLayers: number;
3
+ }
4
+ export interface ExtensionReadonlyInvalidationState {
5
+ readonly dirtyLayers: number;
6
+ }
7
+ export interface ExtensionInvalidationState extends ExtensionReadonlyInvalidationState {
8
+ markDirty(layers: number): void;
9
+ clearDirty(layers: number): void;
10
+ clear(): void;
11
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,28 @@
1
+ export type ExtensionAnimationSessionStatus = 'submitted' | 'active' | 'ended' | 'cancelled';
2
+ export declare const ANIMATION_SESSION_STATUS_ALL: Set<ExtensionAnimationSessionStatus>;
3
+ export interface ExtensionAnimationSessionSubmitOptions {
4
+ duration: number;
5
+ }
6
+ export interface ExtensionAnimationSession {
7
+ readonly id: number;
8
+ readonly startTime: DOMHighResTimeStamp;
9
+ readonly duration: number;
10
+ readonly status: ExtensionAnimationSessionStatus;
11
+ }
12
+ export interface ExtensionAnimationController {
13
+ submit(options: ExtensionAnimationSessionSubmitOptions): ExtensionAnimationSession;
14
+ cancel(sessionId: number): void;
15
+ getAll(status?: ExtensionAnimationSessionStatus | Iterable<ExtensionAnimationSessionStatus>): readonly ExtensionAnimationSession[];
16
+ }
17
+ export interface ExtensionAnimationSessionInternalSurface extends ExtensionAnimationSession {
18
+ readonly elapsedTime: DOMHighResTimeStamp;
19
+ readonly progress: number;
20
+ readonly pendingCleanup: boolean;
21
+ setStatus(status: ExtensionAnimationSessionStatus): void;
22
+ markPendingCleanup(): void;
23
+ }
24
+ export interface ExtensionAnimationControllerInternalSurface extends ExtensionAnimationController {
25
+ getAll(status?: ExtensionAnimationSessionStatus | Iterable<ExtensionAnimationSessionStatus>): readonly ExtensionAnimationSessionInternalSurface[];
26
+ remove(sessionId: number | Iterable<number>): void;
27
+ clear(): void;
28
+ }
@@ -0,0 +1,6 @@
1
+ export const ANIMATION_SESSION_STATUS_ALL = new Set([
2
+ 'submitted',
3
+ 'active',
4
+ 'ended',
5
+ 'cancelled'
6
+ ]);
@@ -0,0 +1,34 @@
1
+ import { Square } from '../../../state/board/types/internal';
2
+ import { ScenePoint } from '../basic/transient-visuals';
3
+ interface SceneEventBase {
4
+ readonly defaultPrevented: boolean;
5
+ preventDefault(): void;
6
+ }
7
+ export interface ScenePointerEvent extends SceneEventBase {
8
+ readonly type: 'pointerdown' | 'pointermove' | 'pointerup' | 'pointercancel' | 'pointerleave';
9
+ readonly pointerId: number;
10
+ readonly isPrimary: boolean;
11
+ readonly button: number;
12
+ readonly buttons: number;
13
+ readonly ctrlKey: boolean;
14
+ readonly altKey: boolean;
15
+ readonly shiftKey: boolean;
16
+ readonly metaKey: boolean;
17
+ readonly rawPoint: ScenePoint | null;
18
+ readonly clampedPoint: ScenePoint | null;
19
+ readonly target: Square | null;
20
+ }
21
+ export type ScenePointerEventType = ScenePointerEvent['type'];
22
+ export declare const SCENE_POINTER_EVENT_TYPES: ScenePointerEventType[];
23
+ export interface SceneKeyboardEvent extends SceneEventBase {
24
+ readonly type: 'keydown' | 'keyup';
25
+ readonly key: string;
26
+ readonly repeat: boolean;
27
+ readonly ctrlKey: boolean;
28
+ readonly altKey: boolean;
29
+ readonly shiftKey: boolean;
30
+ readonly metaKey: boolean;
31
+ }
32
+ export type SceneEvent = ScenePointerEvent | SceneKeyboardEvent;
33
+ export type SceneEventType = SceneEvent['type'];
34
+ export {};
@@ -0,0 +1,7 @@
1
+ export const SCENE_POINTER_EVENT_TYPES = [
2
+ 'pointerdown',
3
+ 'pointermove',
4
+ 'pointerup',
5
+ 'pointercancel',
6
+ 'pointerleave'
7
+ ];
@@ -0,0 +1,7 @@
1
+ export type ExtensionSlotName = 'defs' | 'board' | 'coordinates' | 'underPieces' | 'pieces' | 'overPieces' | 'animation' | 'underDrag' | 'drag' | 'overDrag';
2
+ export declare const ALL_EXTENSION_SLOTS: readonly ["defs", "board", "coordinates", "underPieces", "pieces", "overPieces", "animation", "underDrag", "drag", "overDrag"];
3
+ export type ExtensionSlotSvgRoots<TSlots extends readonly ExtensionSlotName[]> = Readonly<Record<TSlots[number], SVGGElement>>;
4
+ export type ExtensionAllocatedSlotsInternal = Partial<ExtensionSlotSvgRoots<readonly ExtensionSlotName[]>>;
5
+ export interface ExtensionInstanceMountOptions<TSlots extends readonly ExtensionSlotName[]> {
6
+ slotRoots: ExtensionSlotSvgRoots<TSlots>;
7
+ }
@@ -0,0 +1,14 @@
1
+ export const ALL_EXTENSION_SLOTS = [
2
+ 'defs',
3
+ 'board',
4
+ 'coordinates',
5
+ 'underPieces',
6
+ 'pieces',
7
+ 'overPieces',
8
+ 'animation',
9
+ 'underDrag',
10
+ 'drag',
11
+ 'overDrag'
12
+ ];
13
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
14
+ const _checkAllExtensionSlotsExact = true;
@@ -0,0 +1,9 @@
1
+ import { LayoutSnapshot } from '../../../layout/types';
2
+ import { RuntimeStateSnapshot } from '../../../state/types';
3
+ export interface RenderLayoutSnapshot extends LayoutSnapshot {
4
+ readonly geometry: NonNullable<LayoutSnapshot['geometry']>;
5
+ }
6
+ export interface RenderFrameSnapshot {
7
+ readonly state: RuntimeStateSnapshot;
8
+ readonly layout: RenderLayoutSnapshot;
9
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,10 @@
1
+ import { Square } from '../../../state/board/types/internal';
2
+ export interface ScenePoint {
3
+ readonly x: number;
4
+ readonly y: number;
5
+ }
6
+ export interface TransientInput {
7
+ target: Square | null;
8
+ rawPoint: ScenePoint;
9
+ clampedPoint: ScenePoint;
10
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,16 @@
1
+ import { LayoutSnapshot } from '../../../layout/types';
2
+ import { RuntimeStateSnapshot } from '../../../state/types';
3
+ import { RenderFrameSnapshot } from './render';
4
+ export interface UpdateFrameSnapshotUnmounted {
5
+ readonly isMounted: false;
6
+ readonly state: RuntimeStateSnapshot;
7
+ }
8
+ export interface UpdateFrameSnapshotMounted {
9
+ readonly isMounted: true;
10
+ readonly state: RuntimeStateSnapshot;
11
+ readonly layout: LayoutSnapshot;
12
+ }
13
+ export type UpdateFrameSnapshot = UpdateFrameSnapshotUnmounted | UpdateFrameSnapshotMounted;
14
+ export declare function isFrameMounted<T extends UpdateFrameSnapshot>(frame: T): frame is T & UpdateFrameSnapshotMounted;
15
+ export declare function isFrameRenderable<T extends UpdateFrameSnapshot>(frame: T): frame is T & RenderFrameSnapshot;
16
+ export declare function assertFrameRenderable<T extends UpdateFrameSnapshot>(frame: T): asserts frame is T & RenderFrameSnapshot;
@@ -0,0 +1,11 @@
1
+ export function isFrameMounted(frame) {
2
+ return frame.isMounted;
3
+ }
4
+ export function isFrameRenderable(frame) {
5
+ return frame.isMounted && frame.layout.geometry !== null;
6
+ }
7
+ export function assertFrameRenderable(frame) {
8
+ if (!isFrameRenderable(frame)) {
9
+ throw new Error('Frame is not renderable. It must be mounted and have valid geometry.');
10
+ }
11
+ }
@@ -0,0 +1,31 @@
1
+ import { ExtensionInvalidationState } from '../../invalidation/types';
2
+ import { ExtensionAnimationSession } from '../basic/animation';
3
+ import { ExtensionRenderContext } from './render';
4
+ export interface ExtensionSubmittedAnimationSession extends ExtensionAnimationSession {
5
+ readonly status: 'submitted';
6
+ }
7
+ export interface ExtensionActiveAnimationSession extends ExtensionAnimationSession {
8
+ readonly status: 'active';
9
+ readonly elapsedTime: DOMHighResTimeStamp;
10
+ readonly progress: number;
11
+ }
12
+ export interface ExtensionFinishedAnimationSession extends ExtensionAnimationSession {
13
+ readonly status: 'ended' | 'cancelled';
14
+ }
15
+ export interface ExtensionPrepareAnimationContext extends ExtensionRenderContext {
16
+ readonly submittedSessions: readonly ExtensionSubmittedAnimationSession[];
17
+ }
18
+ export interface ExtensionRenderAnimationContext extends ExtensionRenderContext {
19
+ readonly activeSessions: readonly ExtensionActiveAnimationSession[];
20
+ }
21
+ export interface ExtensionAnimationFinishedContext extends ExtensionRenderContext {
22
+ readonly invalidation: ExtensionInvalidationState;
23
+ readonly finishedSessions: readonly ExtensionFinishedAnimationSession[];
24
+ }
25
+ export interface ExtensionCleanAnimationContext extends ExtensionRenderContext {
26
+ readonly invalidation: ExtensionInvalidationState;
27
+ readonly finishedSessions: readonly ExtensionFinishedAnimationSession[];
28
+ }
29
+ export declare function isExtensionSubmittedAnimationSession(session: ExtensionAnimationSession): session is ExtensionSubmittedAnimationSession;
30
+ export declare function isExtensionActiveAnimationSession(session: ExtensionAnimationSession): session is ExtensionActiveAnimationSession;
31
+ export declare function isExtensionFinishedAnimationSession(session: ExtensionAnimationSession): session is ExtensionFinishedAnimationSession;
@@ -0,0 +1,9 @@
1
+ export function isExtensionSubmittedAnimationSession(session) {
2
+ return session.status === 'submitted';
3
+ }
4
+ export function isExtensionActiveAnimationSession(session) {
5
+ return session.status === 'active';
6
+ }
7
+ export function isExtensionFinishedAnimationSession(session) {
8
+ return session.status === 'ended' || session.status === 'cancelled';
9
+ }
@@ -0,0 +1,6 @@
1
+ import { ExtensionReadonlyInvalidationState } from '../../invalidation/types';
2
+ import { RenderFrameSnapshot } from '../basic/render';
3
+ export interface ExtensionRenderContext {
4
+ readonly currentFrame: RenderFrameSnapshot;
5
+ readonly invalidation: ExtensionReadonlyInvalidationState;
6
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ import { ReadonlyDeep } from 'type-fest';
2
+ import { RenderFrameSnapshot } from '../basic/render';
3
+ import { TransientInput } from '../basic/transient-visuals';
4
+ export interface ExtensionRenderTransientVisualsContext {
5
+ readonly currentFrame: RenderFrameSnapshot;
6
+ readonly transientInput: ReadonlyDeep<TransientInput>;
7
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,16 @@
1
+ import { MoveRequest, Square } from '../../../state/board/types/internal';
2
+ import { MoveDestinationSnapshot } from '../../../state/interaction/types/internal';
3
+ export type ExtensionUIMoveRequestStatus = 'unresolved' | 'deferred' | 'resolved';
4
+ export interface ExtensionUIMoveRequestContextSnapshot {
5
+ readonly status: ExtensionUIMoveRequestStatus;
6
+ readonly sourceSquare: Square;
7
+ readonly destination: MoveDestinationSnapshot;
8
+ readonly canBeAutoResolved: boolean;
9
+ readonly resolvedMoveRequest: MoveRequest | null;
10
+ }
11
+ export interface ExtensionUIMoveRequestContext extends ExtensionUIMoveRequestContextSnapshot {
12
+ defer(): void;
13
+ resolve(request: MoveRequest): void;
14
+ autoresolve(): void;
15
+ getSnapshot(): ExtensionUIMoveRequestContextSnapshot;
16
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,25 @@
1
+ import { RuntimeReadonlyMutationSession } from '../../../runtime/mutation/types';
2
+ import { ExtensionInvalidationState } from '../../invalidation/types';
3
+ import { RenderFrameSnapshot } from '../basic/render';
4
+ import { UpdateFrameSnapshot, UpdateFrameSnapshotMounted, UpdateFrameSnapshotUnmounted } from '../basic/update';
5
+ export interface ExtensionUpdateContextCommon {
6
+ readonly previousFrame: UpdateFrameSnapshot | null;
7
+ readonly mutation: RuntimeReadonlyMutationSession;
8
+ readonly currentFrame: UpdateFrameSnapshot;
9
+ }
10
+ export interface ExtensionUpdateContextCommonUnmounted extends ExtensionUpdateContextCommon {
11
+ readonly currentFrame: UpdateFrameSnapshotUnmounted;
12
+ }
13
+ export interface ExtensionUpdateContextCommonMounted extends ExtensionUpdateContextCommon {
14
+ readonly currentFrame: UpdateFrameSnapshotMounted;
15
+ }
16
+ export type ExtensionUpdateContextUnmounted = ExtensionUpdateContextCommonUnmounted;
17
+ export interface ExtensionUpdateContextMounted extends ExtensionUpdateContextCommonMounted {
18
+ readonly invalidation: ExtensionInvalidationState;
19
+ }
20
+ export type ExtensionUpdateContext = ExtensionUpdateContextUnmounted | ExtensionUpdateContextMounted;
21
+ export declare function isUpdateContextCommonMounted<T extends ExtensionUpdateContextCommon>(context: T): context is T & ExtensionUpdateContextCommonMounted;
22
+ export declare function isUpdateContextMounted<T extends ExtensionUpdateContext>(context: T): context is T & ExtensionUpdateContextMounted;
23
+ export declare function isUpdateContextRenderable<T extends ExtensionUpdateContext>(context: T): context is T & ExtensionUpdateContextMounted & {
24
+ currentFrame: RenderFrameSnapshot;
25
+ };
@@ -0,0 +1,10 @@
1
+ import { isFrameMounted, isFrameRenderable } from '../basic/update';
2
+ export function isUpdateContextCommonMounted(context) {
3
+ return isFrameMounted(context.currentFrame);
4
+ }
5
+ export function isUpdateContextMounted(context) {
6
+ return isFrameMounted(context.currentFrame);
7
+ }
8
+ export function isUpdateContextRenderable(context) {
9
+ return isFrameRenderable(context.currentFrame);
10
+ }
@@ -0,0 +1,40 @@
1
+ import { SceneEvent } from './basic/events';
2
+ import { ExtensionInstanceMountOptions, ExtensionSlotName } from './basic/mount';
3
+ import { ExtensionAnimationFinishedContext, ExtensionCleanAnimationContext, ExtensionPrepareAnimationContext, ExtensionRenderAnimationContext } from './context/animation';
4
+ import { ExtensionRenderContext } from './context/render';
5
+ import { ExtensionRenderTransientVisualsContext } from './context/transient-visuals';
6
+ import { ExtensionUIMoveRequestContext } from './context/ui-move';
7
+ import { ExtensionUpdateContext } from './context/update';
8
+ import { ExtensionRuntimeSurface } from './surface/main';
9
+ interface ExtensionInstanceBase<TId extends string, TSlots extends readonly ExtensionSlotName[]> {
10
+ readonly id: TId;
11
+ mount(env: ExtensionInstanceMountOptions<TSlots>): void;
12
+ unmount(): void;
13
+ destroy(): void;
14
+ onUpdate(context: ExtensionUpdateContext): void;
15
+ onUIMoveRequest?(context: ExtensionUIMoveRequestContext): void;
16
+ render?(context: ExtensionRenderContext): void;
17
+ prepareAnimation?(context: ExtensionPrepareAnimationContext): void;
18
+ renderAnimation?(context: ExtensionRenderAnimationContext): void;
19
+ onAnimationFinished?(context: ExtensionAnimationFinishedContext): void;
20
+ cleanAnimation?(context: ExtensionCleanAnimationContext): void;
21
+ renderTransientVisuals?(context: ExtensionRenderTransientVisualsContext): void;
22
+ onEvent?(event: SceneEvent): void;
23
+ }
24
+ type ExtensionInstancePublicPart<TPublic> = [TPublic] extends [never] ? Record<never, never> : {
25
+ getPublic(): TPublic;
26
+ };
27
+ export type ExtensionInstance<TId extends string, TSlots extends readonly ExtensionSlotName[], TPublic = never> = ExtensionInstanceBase<TId, TSlots> & ExtensionInstancePublicPart<TPublic>;
28
+ export type AnyExtensionInstance = ExtensionInstance<string, readonly ExtensionSlotName[], unknown>;
29
+ export interface ExtensionCreateInstanceOptions {
30
+ runtimeSurface: ExtensionRuntimeSurface;
31
+ }
32
+ export interface ExtensionDefinition<TId extends string, TSlots extends readonly ExtensionSlotName[], TPublic> {
33
+ readonly id: TId;
34
+ readonly slots: TSlots;
35
+ createInstance(options: ExtensionCreateInstanceOptions): ExtensionInstance<TId, TSlots, TPublic>;
36
+ }
37
+ export type AnyExtensionDefinition = ExtensionDefinition<string, readonly ExtensionSlotName[], unknown>;
38
+ export type ExtensionDefinitionId<T> = T extends ExtensionDefinition<infer TId, readonly ExtensionSlotName[], unknown> ? TId : never;
39
+ export type ExtensionDefinitionPublicApi<T> = T extends ExtensionDefinition<string, readonly ExtensionSlotName[], infer TPublicApi> ? TPublicApi : never;
40
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,44 @@
1
+ import { RuntimeReadonlyMutationSession } from '../../runtime/mutation/types';
2
+ import { ExtensionInvalidationState } from '../invalidation/types';
3
+ import { ExtensionAnimationControllerInternalSurface } from './basic/animation';
4
+ import { SceneEventType } from './basic/events';
5
+ import { UpdateFrameSnapshot } from './basic/update';
6
+ import { ExtensionUIMoveRequestContext } from './context/ui-move';
7
+ import { AnyExtensionDefinition, AnyExtensionInstance } from './extension';
8
+ import { ExtensionRuntimeSurfaceCommands } from './surface/commands';
9
+ export interface ExtensionSystemExtensionRecord {
10
+ readonly id: string;
11
+ readonly definition: AnyExtensionDefinition;
12
+ readonly instance: AnyExtensionInstance;
13
+ readonly invalidation: ExtensionInvalidationState;
14
+ readonly animation: ExtensionAnimationControllerInternalSurface;
15
+ }
16
+ export interface ExtensionSystemInitOptions {
17
+ extensionRuntimeSurfaceCommands: ExtensionRuntimeSurfaceCommands;
18
+ extensions?: readonly AnyExtensionDefinition[];
19
+ }
20
+ export interface ExtensionSystemInternal {
21
+ readonly extensions: Map<string, ExtensionSystemExtensionRecord>;
22
+ readonly transientVisualsSubscribers: Set<string>;
23
+ readonly eventSubscribers: Map<string, Set<SceneEventType>>;
24
+ currentFrame: UpdateFrameSnapshot | null;
25
+ }
26
+ export interface ExtensionSystemUpdateRequest {
27
+ readonly state: UpdateFrameSnapshot;
28
+ readonly mutation: RuntimeReadonlyMutationSession;
29
+ }
30
+ export interface ExtensionSystemSharedDataForRenderSystem {
31
+ readonly extensions: ReadonlyMap<string, ExtensionSystemExtensionRecord>;
32
+ readonly transientVisualsSubscribers: ReadonlySet<string>;
33
+ }
34
+ export interface ExtensionSystem {
35
+ readonly currentFrame: UpdateFrameSnapshot | null;
36
+ readonly hasSubmittedAnimations: boolean;
37
+ getPublicRecord(): Readonly<Record<string, unknown>>;
38
+ getSharedDataForRenderSystem(): ExtensionSystemSharedDataForRenderSystem;
39
+ onUpdate(request: ExtensionSystemUpdateRequest): void;
40
+ onUIMoveRequest(context: ExtensionUIMoveRequestContext): void;
41
+ onUnmount(): void;
42
+ onDestroy(): void;
43
+ }
44
+ export type GetInternalState = () => ExtensionSystemInternal;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,26 @@
1
+ import { LayoutSnapshot } from '../../../layout/types';
2
+ import { ColorInput, MoveRequestInput, PiecePositionInput, PositionInput, SquareString } from '../../../state/board/types/input';
3
+ import { Move } from '../../../state/board/types/internal';
4
+ import { MovabilityInput } from '../../../state/interaction/types/input';
5
+ import { RuntimeStateSnapshot } from '../../../state/types';
6
+ export interface ExtensionRuntimeSurfaceCommandsSnapshot {
7
+ readonly state: RuntimeStateSnapshot;
8
+ readonly layout: LayoutSnapshot;
9
+ }
10
+ export interface ExtensionRuntimeSurfaceCommandsRenderRequest {
11
+ state?: boolean;
12
+ animation?: boolean;
13
+ }
14
+ export interface ExtensionRuntimeSurfaceCommands {
15
+ setPosition(input: PositionInput): boolean;
16
+ setPiecePosition(input: PiecePositionInput): boolean;
17
+ setTurn(turn: ColorInput): boolean;
18
+ move(request: MoveRequestInput): Move;
19
+ setOrientation(orientation: ColorInput): boolean;
20
+ setMovability(movability: MovabilityInput): boolean;
21
+ select(square: SquareString | null): boolean;
22
+ clearActiveInteraction(): boolean;
23
+ clearInteraction(): boolean;
24
+ requestRender(request: ExtensionRuntimeSurfaceCommandsRenderRequest): void;
25
+ getSnapshot(): ExtensionRuntimeSurfaceCommandsSnapshot;
26
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ import { SceneEventType } from '../basic/events';
2
+ export interface ExtensionRuntimeSurfaceEvents {
3
+ subscribe(events: Iterable<SceneEventType>): void;
4
+ unsubscribe(events?: Iterable<SceneEventType>): void;
5
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,10 @@
1
+ import { ExtensionAnimationController } from '../basic/animation';
2
+ import { ExtensionRuntimeSurfaceCommands } from './commands';
3
+ import { ExtensionRuntimeSurfaceEvents } from './events';
4
+ import { ExtensionRuntimeSurfaceTransientVisuals } from './transient-visuals';
5
+ export interface ExtensionRuntimeSurface {
6
+ readonly commands: ExtensionRuntimeSurfaceCommands;
7
+ readonly animation: ExtensionAnimationController;
8
+ readonly events: ExtensionRuntimeSurfaceEvents;
9
+ readonly transientVisuals: ExtensionRuntimeSurfaceTransientVisuals;
10
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ export interface ExtensionRuntimeSurfaceTransientVisuals {
2
+ subscribe(): void;
3
+ unsubscribe(): void;
4
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Public built-in extension ids accepted by createBoard({ extensions })
3
+ */
4
+ import { ActiveTargetDefinition } from '../first-party/active-target/types';
5
+ import { BoardEventsDefinition } from '../first-party/board-events/types';
6
+ import { LastMoveDefinition } from '../first-party/last-move/types';
7
+ import { LegalMovesDefinition } from '../first-party/legal-moves/types';
8
+ import { MainRendererDefinition } from '../first-party/main-renderer/types/extension';
9
+ import { SelectedSquareDefinition } from '../first-party/selected-square/types';
10
+ export declare const DefaultBuiltinChessboardExtensions: readonly ["mainRenderer", "events", "selectedSquare", "activeTarget", "legalMoves", "lastMove"];
11
+ export type BuiltInExtensionId = (typeof DefaultBuiltinChessboardExtensions)[number];
12
+ /**
13
+ * Default built-in extensions used when createBoard(...) receives no extensions option
14
+ */
15
+ export type DefaultBuiltinChessboardExtensions = typeof DefaultBuiltinChessboardExtensions;
16
+ /**
17
+ * Map built-in public ids -> concrete extension definition types
18
+ */
19
+ export interface BuiltInExtensionDefinitionMap {
20
+ mainRenderer: MainRendererDefinition;
21
+ events: BoardEventsDefinition;
22
+ selectedSquare: SelectedSquareDefinition;
23
+ activeTarget: ActiveTargetDefinition;
24
+ legalMoves: LegalMovesDefinition;
25
+ lastMove: LastMoveDefinition;
26
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Public built-in extension ids accepted by createBoard({ extensions })
3
+ */
4
+ export const DefaultBuiltinChessboardExtensions = [
5
+ 'mainRenderer',
6
+ 'events',
7
+ 'selectedSquare',
8
+ 'activeTarget',
9
+ 'legalMoves',
10
+ 'lastMove'
11
+ ];
@@ -0,0 +1,4 @@
1
+ import { ExtensionUIMoveRequestContext } from './types/context/ui-move';
2
+ import { ExtensionSystemInternal, ExtensionSystemUpdateRequest } from './types/main';
3
+ export declare function extensionSystemUpdateState(state: ExtensionSystemInternal, request: ExtensionSystemUpdateRequest): void;
4
+ export declare function extensionSystemUpdateUIMoveRequest(state: ExtensionSystemInternal, context: ExtensionUIMoveRequestContext): void;
@@ -0,0 +1,29 @@
1
+ import { isUpdateContextCommonMounted } from './types/context/update';
2
+ export function extensionSystemUpdateState(state, request) {
3
+ // Prepare base context
4
+ const contextCommon = {
5
+ previousFrame: state.currentFrame,
6
+ mutation: request.mutation,
7
+ currentFrame: request.state
8
+ };
9
+ // Update invalidation state based on the new request
10
+ for (const extension of state.extensions.values()) {
11
+ const context = isUpdateContextCommonMounted(contextCommon)
12
+ ? {
13
+ ...contextCommon,
14
+ invalidation: extension.invalidation
15
+ }
16
+ : {
17
+ ...contextCommon
18
+ };
19
+ extension.instance.onUpdate(context);
20
+ }
21
+ state.currentFrame = request.state;
22
+ }
23
+ export function extensionSystemUpdateUIMoveRequest(state, context) {
24
+ for (const extension of state.extensions.values()) {
25
+ if (extension.instance.onUIMoveRequest) {
26
+ extension.instance.onUIMoveRequest(context);
27
+ }
28
+ }
29
+ }
@@ -0,0 +1 @@
1
+ export declare function setsEqual<T>(a: ReadonlySet<T>, b: ReadonlySet<T>): boolean;
@@ -0,0 +1,9 @@
1
+ export function setsEqual(a, b) {
2
+ if (a.size !== b.size)
3
+ return false;
4
+ for (const value of a) {
5
+ if (!b.has(value))
6
+ return false;
7
+ }
8
+ return true;
9
+ }