@ankhorage/zora 21.0.23 → 21.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 (554) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +6 -2
  3. package/dist/features/authoring/allowedChildren.d.ts +5 -2
  4. package/dist/features/authoring/allowedChildren.d.ts.map +1 -1
  5. package/dist/features/authoring/allowedChildren.js +13 -2
  6. package/dist/features/authoring/allowedChildren.js.map +1 -1
  7. package/dist/features/authoring/componentMeta.d.ts.map +1 -1
  8. package/dist/features/authoring/componentMeta.js +21 -0
  9. package/dist/features/authoring/componentMeta.js.map +1 -1
  10. package/dist/features/authoring/constants.d.ts +3 -0
  11. package/dist/features/authoring/constants.d.ts.map +1 -1
  12. package/dist/features/authoring/constants.js +3 -0
  13. package/dist/features/authoring/constants.js.map +1 -1
  14. package/dist/features/card/cardMeta.d.ts +1 -1
  15. package/dist/features/card/cardMeta.d.ts.map +1 -1
  16. package/dist/features/card/cardMeta.js +7 -2
  17. package/dist/features/card/cardMeta.js.map +1 -1
  18. package/dist/features/chess/adapters/inbound/ChessBoard.d.ts +5 -0
  19. package/dist/features/chess/adapters/inbound/ChessBoard.d.ts.map +1 -0
  20. package/dist/features/chess/adapters/inbound/ChessBoard.js +119 -0
  21. package/dist/features/chess/adapters/inbound/ChessBoard.js.map +1 -0
  22. package/dist/features/chess/adapters/inbound/OpeningBook.d.ts +5 -0
  23. package/dist/features/chess/adapters/inbound/OpeningBook.d.ts.map +1 -0
  24. package/dist/features/chess/adapters/inbound/OpeningBook.js +94 -0
  25. package/dist/features/chess/adapters/inbound/OpeningBook.js.map +1 -0
  26. package/dist/features/chess/meta.d.ts +219 -0
  27. package/dist/features/chess/meta.d.ts.map +1 -0
  28. package/dist/features/chess/meta.js +165 -0
  29. package/dist/features/chess/meta.js.map +1 -0
  30. package/dist/features/chess/public.d.ts +12 -0
  31. package/dist/features/chess/public.d.ts.map +1 -0
  32. package/dist/features/chess/public.js +10 -0
  33. package/dist/features/chess/public.js.map +1 -0
  34. package/dist/features/chess/utils/chessSquares.d.ts +4 -0
  35. package/dist/features/chess/utils/chessSquares.d.ts.map +1 -0
  36. package/dist/features/chess/utils/chessSquares.js +3 -0
  37. package/dist/features/chess/utils/chessSquares.js.map +1 -0
  38. package/dist/features/chess/utils/createBoardSquares.d.ts +4 -0
  39. package/dist/features/chess/utils/createBoardSquares.d.ts.map +1 -0
  40. package/dist/features/chess/utils/createBoardSquares.js +9 -0
  41. package/dist/features/chess/utils/createBoardSquares.js.map +1 -0
  42. package/dist/features/chess/utils/createChessBoardColorScheme.d.ts +35 -0
  43. package/dist/features/chess/utils/createChessBoardColorScheme.d.ts.map +1 -0
  44. package/dist/features/chess/utils/createChessBoardColorScheme.js +26 -0
  45. package/dist/features/chess/utils/createChessBoardColorScheme.js.map +1 -0
  46. package/dist/features/chess/utils/createOpeningBookColorScheme.d.ts +11 -0
  47. package/dist/features/chess/utils/createOpeningBookColorScheme.d.ts.map +1 -0
  48. package/dist/features/chess/utils/createOpeningBookColorScheme.js +21 -0
  49. package/dist/features/chess/utils/createOpeningBookColorScheme.js.map +1 -0
  50. package/dist/features/chess/utils/getSquareFile.d.ts +4 -0
  51. package/dist/features/chess/utils/getSquareFile.d.ts.map +1 -0
  52. package/dist/features/chess/utils/getSquareFile.js +5 -0
  53. package/dist/features/chess/utils/getSquareFile.js.map +1 -0
  54. package/dist/features/chess/utils/getSquareRank.d.ts +4 -0
  55. package/dist/features/chess/utils/getSquareRank.d.ts.map +1 -0
  56. package/dist/features/chess/utils/getSquareRank.js +5 -0
  57. package/dist/features/chess/utils/getSquareRank.js.map +1 -0
  58. package/dist/features/chess/utils/isLightSquare.d.ts +4 -0
  59. package/dist/features/chess/utils/isLightSquare.d.ts.map +1 -0
  60. package/dist/features/chess/utils/isLightSquare.js +6 -0
  61. package/dist/features/chess/utils/isLightSquare.js.map +1 -0
  62. package/dist/features/game/adapters/inbound/Game.d.ts +5 -0
  63. package/dist/features/game/adapters/inbound/Game.d.ts.map +1 -0
  64. package/dist/features/game/adapters/inbound/Game.js +24 -0
  65. package/dist/features/game/adapters/inbound/Game.js.map +1 -0
  66. package/dist/features/game/adapters/inbound/GameEntity.d.ts +5 -0
  67. package/dist/features/game/adapters/inbound/GameEntity.d.ts.map +1 -0
  68. package/dist/features/game/adapters/inbound/GameEntity.js +29 -0
  69. package/dist/features/game/adapters/inbound/GameEntity.js.map +1 -0
  70. package/dist/features/game/adapters/inbound/GameField.d.ts +4 -0
  71. package/dist/features/game/adapters/inbound/GameField.d.ts.map +1 -0
  72. package/dist/features/game/adapters/inbound/GameField.js +32 -0
  73. package/dist/features/game/adapters/inbound/GameField.js.map +1 -0
  74. package/dist/features/game/adapters/inbound/GameInputZone.d.ts +4 -0
  75. package/dist/features/game/adapters/inbound/GameInputZone.d.ts.map +1 -0
  76. package/dist/features/game/adapters/inbound/GameInputZone.js +50 -0
  77. package/dist/features/game/adapters/inbound/GameInputZone.js.map +1 -0
  78. package/dist/features/game/adapters/inbound/GameMeasurementProbe.d.ts +4 -0
  79. package/dist/features/game/adapters/inbound/GameMeasurementProbe.d.ts.map +1 -0
  80. package/dist/features/game/adapters/inbound/GameMeasurementProbe.js +54 -0
  81. package/dist/features/game/adapters/inbound/GameMeasurementProbe.js.map +1 -0
  82. package/dist/features/game/adapters/inbound/GameOverlay.d.ts +4 -0
  83. package/dist/features/game/adapters/inbound/GameOverlay.d.ts.map +1 -0
  84. package/dist/features/game/adapters/inbound/GameOverlay.js +39 -0
  85. package/dist/features/game/adapters/inbound/GameOverlay.js.map +1 -0
  86. package/dist/features/game/adapters/inbound/createGameKeyboardEvent.d.ts +16 -0
  87. package/dist/features/game/adapters/inbound/createGameKeyboardEvent.d.ts.map +1 -0
  88. package/dist/features/game/adapters/inbound/createGameKeyboardEvent.js +16 -0
  89. package/dist/features/game/adapters/inbound/createGameKeyboardEvent.js.map +1 -0
  90. package/dist/features/game/adapters/inbound/createGameMeasurementEvent.d.ts +14 -0
  91. package/dist/features/game/adapters/inbound/createGameMeasurementEvent.d.ts.map +1 -0
  92. package/dist/features/game/adapters/inbound/createGameMeasurementEvent.js +25 -0
  93. package/dist/features/game/adapters/inbound/createGameMeasurementEvent.js.map +1 -0
  94. package/dist/features/game/adapters/inbound/createGamePointerEvent.d.ts +17 -0
  95. package/dist/features/game/adapters/inbound/createGamePointerEvent.d.ts.map +1 -0
  96. package/dist/features/game/adapters/inbound/createGamePointerEvent.js +20 -0
  97. package/dist/features/game/adapters/inbound/createGamePointerEvent.js.map +1 -0
  98. package/dist/features/game/adapters/inbound/measureGameEntity.d.ts +5 -0
  99. package/dist/features/game/adapters/inbound/measureGameEntity.d.ts.map +1 -0
  100. package/dist/features/game/adapters/inbound/measureGameEntity.js +22 -0
  101. package/dist/features/game/adapters/inbound/measureGameEntity.js.map +1 -0
  102. package/dist/features/game/adapters/inbound/useGameInputZoneResponder.d.ts +15 -0
  103. package/dist/features/game/adapters/inbound/useGameInputZoneResponder.d.ts.map +1 -0
  104. package/dist/features/game/adapters/inbound/useGameInputZoneResponder.js +67 -0
  105. package/dist/features/game/adapters/inbound/useGameInputZoneResponder.js.map +1 -0
  106. package/dist/features/game/composition/GameRuntimeContext.d.ts +5 -0
  107. package/dist/features/game/composition/GameRuntimeContext.d.ts.map +1 -0
  108. package/dist/features/game/composition/GameRuntimeContext.js +4 -0
  109. package/dist/features/game/composition/GameRuntimeContext.js.map +1 -0
  110. package/dist/features/game/composition/createGameBindingContext.d.ts +4 -0
  111. package/dist/features/game/composition/createGameBindingContext.d.ts.map +1 -0
  112. package/dist/features/game/composition/createGameBindingContext.js +10 -0
  113. package/dist/features/game/composition/createGameBindingContext.js.map +1 -0
  114. package/dist/features/game/composition/createGameMeasurementRegistry.d.ts +4 -0
  115. package/dist/features/game/composition/createGameMeasurementRegistry.d.ts.map +1 -0
  116. package/dist/features/game/composition/createGameMeasurementRegistry.js +15 -0
  117. package/dist/features/game/composition/createGameMeasurementRegistry.js.map +1 -0
  118. package/dist/features/game/composition/useGameRuntime.d.ts +5 -0
  119. package/dist/features/game/composition/useGameRuntime.d.ts.map +1 -0
  120. package/dist/features/game/composition/useGameRuntime.js +117 -0
  121. package/dist/features/game/composition/useGameRuntime.js.map +1 -0
  122. package/dist/features/game/composition/useGameScheduledEffects.d.ts +17 -0
  123. package/dist/features/game/composition/useGameScheduledEffects.d.ts.map +1 -0
  124. package/dist/features/game/composition/useGameScheduledEffects.js +40 -0
  125. package/dist/features/game/composition/useGameScheduledEffects.js.map +1 -0
  126. package/dist/features/game/meta/gameEntityMeta.d.ts +403 -0
  127. package/dist/features/game/meta/gameEntityMeta.d.ts.map +1 -0
  128. package/dist/features/game/meta/gameEntityMeta.js +224 -0
  129. package/dist/features/game/meta/gameEntityMeta.js.map +1 -0
  130. package/dist/features/game/meta/gameFieldMeta.d.ts +61 -0
  131. package/dist/features/game/meta/gameFieldMeta.d.ts.map +1 -0
  132. package/dist/features/game/meta/gameFieldMeta.js +48 -0
  133. package/dist/features/game/meta/gameFieldMeta.js.map +1 -0
  134. package/dist/features/game/meta/gameInputZoneMeta.d.ts +163 -0
  135. package/dist/features/game/meta/gameInputZoneMeta.d.ts.map +1 -0
  136. package/dist/features/game/meta/gameInputZoneMeta.js +138 -0
  137. package/dist/features/game/meta/gameInputZoneMeta.js.map +1 -0
  138. package/dist/features/game/meta/gameMeasurementProbeMeta.d.ts +112 -0
  139. package/dist/features/game/meta/gameMeasurementProbeMeta.d.ts.map +1 -0
  140. package/dist/features/game/meta/gameMeasurementProbeMeta.js +70 -0
  141. package/dist/features/game/meta/gameMeasurementProbeMeta.js.map +1 -0
  142. package/dist/features/game/meta/gameMeta.d.ts +130 -0
  143. package/dist/features/game/meta/gameMeta.d.ts.map +1 -0
  144. package/dist/features/game/meta/gameMeta.js +113 -0
  145. package/dist/features/game/meta/gameMeta.js.map +1 -0
  146. package/dist/features/game/meta/gameOverlayMeta.d.ts +55 -0
  147. package/dist/features/game/meta/gameOverlayMeta.d.ts.map +1 -0
  148. package/dist/features/game/meta/gameOverlayMeta.js +65 -0
  149. package/dist/features/game/meta/gameOverlayMeta.js.map +1 -0
  150. package/dist/features/game/public.d.ts +8 -0
  151. package/dist/features/game/public.d.ts.map +1 -0
  152. package/dist/features/game/public.js +7 -0
  153. package/dist/features/game/public.js.map +1 -0
  154. package/dist/features/game/utils/clampGamePercentage.d.ts +3 -0
  155. package/dist/features/game/utils/clampGamePercentage.d.ts.map +1 -0
  156. package/dist/features/game/utils/clampGamePercentage.js +5 -0
  157. package/dist/features/game/utils/clampGamePercentage.js.map +1 -0
  158. package/dist/features/game/utils/resolveGameEntityMotionPlan.d.ts +15 -0
  159. package/dist/features/game/utils/resolveGameEntityMotionPlan.d.ts.map +1 -0
  160. package/dist/features/game/utils/resolveGameEntityMotionPlan.js +31 -0
  161. package/dist/features/game/utils/resolveGameEntityMotionPlan.js.map +1 -0
  162. package/dist/features/game/utils/toGamePercentage.d.ts +3 -0
  163. package/dist/features/game/utils/toGamePercentage.d.ts.map +1 -0
  164. package/dist/features/game/utils/toGamePercentage.js +6 -0
  165. package/dist/features/game/utils/toGamePercentage.js.map +1 -0
  166. package/dist/features/game/utils/useAnimatedGameEntityValue.d.ts +5 -0
  167. package/dist/features/game/utils/useAnimatedGameEntityValue.d.ts.map +1 -0
  168. package/dist/features/game/utils/useAnimatedGameEntityValue.js +33 -0
  169. package/dist/features/game/utils/useAnimatedGameEntityValue.js.map +1 -0
  170. package/dist/features/game/utils/useGameEntityAnimatedStyle.d.ts +16 -0
  171. package/dist/features/game/utils/useGameEntityAnimatedStyle.d.ts.map +1 -0
  172. package/dist/features/game/utils/useGameEntityAnimatedStyle.js +52 -0
  173. package/dist/features/game/utils/useGameEntityAnimatedStyle.js.map +1 -0
  174. package/dist/features/game/utils/useGameEntityMeasurement.d.ts +5 -0
  175. package/dist/features/game/utils/useGameEntityMeasurement.d.ts.map +1 -0
  176. package/dist/features/game/utils/useGameEntityMeasurement.js +14 -0
  177. package/dist/features/game/utils/useGameEntityMeasurement.js.map +1 -0
  178. package/dist/features/game/utils/useGameEntityMotionProgress.d.ts +5 -0
  179. package/dist/features/game/utils/useGameEntityMotionProgress.d.ts.map +1 -0
  180. package/dist/features/game/utils/useGameEntityMotionProgress.js +87 -0
  181. package/dist/features/game/utils/useGameEntityMotionProgress.js.map +1 -0
  182. package/dist/features/game/utils/useGameReducedMotion.d.ts +3 -0
  183. package/dist/features/game/utils/useGameReducedMotion.d.ts.map +1 -0
  184. package/dist/features/game/utils/useGameReducedMotion.js +13 -0
  185. package/dist/features/game/utils/useGameReducedMotion.js.map +1 -0
  186. package/dist/features/layout/gridMeta.d.ts +1 -1
  187. package/dist/features/layout/gridMeta.d.ts.map +1 -1
  188. package/dist/features/layout/gridMeta.js +7 -2
  189. package/dist/features/layout/gridMeta.js.map +1 -1
  190. package/dist/features/layout/screenMeta.d.ts +1 -1
  191. package/dist/features/layout/viewMeta.d.ts +1 -1
  192. package/dist/features/layout/viewMeta.d.ts.map +1 -1
  193. package/dist/features/layout/viewMeta.js +6 -2
  194. package/dist/features/layout/viewMeta.js.map +1 -1
  195. package/dist/features/registry/ZORA_COMPONENT_REGISTRY.d.ts.map +1 -1
  196. package/dist/features/registry/ZORA_COMPONENT_REGISTRY.js +16 -0
  197. package/dist/features/registry/ZORA_COMPONENT_REGISTRY.js.map +1 -1
  198. package/dist/features/section/screenSectionMeta.d.ts +1 -1
  199. package/dist/features/tabletop/adapters/inbound/CardBack.d.ts +5 -0
  200. package/dist/features/tabletop/adapters/inbound/CardBack.d.ts.map +1 -0
  201. package/dist/features/tabletop/adapters/inbound/CardBack.js +47 -0
  202. package/dist/features/tabletop/adapters/inbound/CardBack.js.map +1 -0
  203. package/dist/features/tabletop/adapters/inbound/CardHand.d.ts +5 -0
  204. package/dist/features/tabletop/adapters/inbound/CardHand.d.ts.map +1 -0
  205. package/dist/features/tabletop/adapters/inbound/CardHand.js +28 -0
  206. package/dist/features/tabletop/adapters/inbound/CardHand.js.map +1 -0
  207. package/dist/features/tabletop/adapters/inbound/PlayingCard.d.ts +5 -0
  208. package/dist/features/tabletop/adapters/inbound/PlayingCard.d.ts.map +1 -0
  209. package/dist/features/tabletop/adapters/inbound/PlayingCard.js +64 -0
  210. package/dist/features/tabletop/adapters/inbound/PlayingCard.js.map +1 -0
  211. package/dist/features/tabletop/adapters/inbound/PokerTrainingTable.d.ts +5 -0
  212. package/dist/features/tabletop/adapters/inbound/PokerTrainingTable.d.ts.map +1 -0
  213. package/dist/features/tabletop/adapters/inbound/PokerTrainingTable.js +12 -0
  214. package/dist/features/tabletop/adapters/inbound/PokerTrainingTable.js.map +1 -0
  215. package/dist/features/tabletop/adapters/inbound/TabletopTable.d.ts +5 -0
  216. package/dist/features/tabletop/adapters/inbound/TabletopTable.d.ts.map +1 -0
  217. package/dist/features/tabletop/adapters/inbound/TabletopTable.js +206 -0
  218. package/dist/features/tabletop/adapters/inbound/TabletopTable.js.map +1 -0
  219. package/dist/features/tabletop/meta.d.ts +353 -0
  220. package/dist/features/tabletop/meta.d.ts.map +1 -0
  221. package/dist/features/tabletop/meta.js +252 -0
  222. package/dist/features/tabletop/meta.js.map +1 -0
  223. package/dist/features/tabletop/public.d.ts +10 -0
  224. package/dist/features/tabletop/public.d.ts.map +1 -0
  225. package/dist/features/tabletop/public.js +9 -0
  226. package/dist/features/tabletop/public.js.map +1 -0
  227. package/dist/features/tabletop/utils/createPokerTrainingTableState.d.ts +13 -0
  228. package/dist/features/tabletop/utils/createPokerTrainingTableState.d.ts.map +1 -0
  229. package/dist/features/tabletop/utils/createPokerTrainingTableState.js +112 -0
  230. package/dist/features/tabletop/utils/createPokerTrainingTableState.js.map +1 -0
  231. package/dist/features/tabletop/utils/createTabletopColorScheme.d.ts +36 -0
  232. package/dist/features/tabletop/utils/createTabletopColorScheme.d.ts.map +1 -0
  233. package/dist/features/tabletop/utils/createTabletopColorScheme.js +144 -0
  234. package/dist/features/tabletop/utils/createTabletopColorScheme.js.map +1 -0
  235. package/dist/features/tabletop/utils/createTabletopGameSeats.d.ts +13 -0
  236. package/dist/features/tabletop/utils/createTabletopGameSeats.d.ts.map +1 -0
  237. package/dist/features/tabletop/utils/createTabletopGameSeats.js +22 -0
  238. package/dist/features/tabletop/utils/createTabletopGameSeats.js.map +1 -0
  239. package/dist/features/tabletop/utils/getPlayingCardLabel.d.ts +4 -0
  240. package/dist/features/tabletop/utils/getPlayingCardLabel.d.ts.map +1 -0
  241. package/dist/features/tabletop/utils/getPlayingCardLabel.js +6 -0
  242. package/dist/features/tabletop/utils/getPlayingCardLabel.js.map +1 -0
  243. package/dist/features/tabletop/utils/getTabletopCardDimensions.d.ts +12 -0
  244. package/dist/features/tabletop/utils/getTabletopCardDimensions.d.ts.map +1 -0
  245. package/dist/features/tabletop/utils/getTabletopCardDimensions.js +35 -0
  246. package/dist/features/tabletop/utils/getTabletopCardDimensions.js.map +1 -0
  247. package/dist/features/tabletop/utils/getTabletopSeatPosition.d.ts +9 -0
  248. package/dist/features/tabletop/utils/getTabletopSeatPosition.d.ts.map +1 -0
  249. package/dist/features/tabletop/utils/getTabletopSeatPosition.js +88 -0
  250. package/dist/features/tabletop/utils/getTabletopSeatPosition.js.map +1 -0
  251. package/dist/index.d.ts +8 -0
  252. package/dist/index.d.ts.map +1 -1
  253. package/dist/index.js +4 -0
  254. package/dist/index.js.map +1 -1
  255. package/dist/types/chess.d.ts +83 -0
  256. package/dist/types/chess.d.ts.map +1 -0
  257. package/dist/types/chess.js +2 -0
  258. package/dist/types/chess.js.map +1 -0
  259. package/dist/types/gamePresentation.d.ts +94 -0
  260. package/dist/types/gamePresentation.d.ts.map +1 -0
  261. package/dist/types/gamePresentation.js +2 -0
  262. package/dist/types/gamePresentation.js.map +1 -0
  263. package/dist/types/gameRuntime.d.ts +29 -0
  264. package/dist/types/gameRuntime.d.ts.map +1 -0
  265. package/dist/types/gameRuntime.js +2 -0
  266. package/dist/types/gameRuntime.js.map +1 -0
  267. package/dist/types/tabletop.d.ts +129 -0
  268. package/dist/types/tabletop.d.ts.map +1 -0
  269. package/dist/types/tabletop.js +2 -0
  270. package/dist/types/tabletop.js.map +1 -0
  271. package/package.json +3 -1
  272. package/src/features/authoring/allowedChildren.ts +15 -2
  273. package/src/features/authoring/componentMeta.test.ts +93 -0
  274. package/src/features/authoring/componentMeta.ts +27 -0
  275. package/src/features/authoring/constants.ts +3 -0
  276. package/src/features/card/cardMeta.ts +12 -2
  277. package/src/features/chess/adapters/inbound/ChessBoard.tsx +169 -0
  278. package/src/features/chess/adapters/inbound/OpeningBook.tsx +131 -0
  279. package/src/features/chess/meta.ts +168 -0
  280. package/src/features/chess/public.test.tsx +165 -0
  281. package/src/features/chess/public.ts +27 -0
  282. package/src/features/chess/utils/chessSquares.ts +6 -0
  283. package/src/features/chess/utils/createBoardSquares.ts +13 -0
  284. package/src/features/chess/utils/createChessBoardColorScheme.ts +55 -0
  285. package/src/features/chess/utils/createOpeningBookColorScheme.ts +26 -0
  286. package/src/features/chess/utils/getSquareFile.ts +6 -0
  287. package/src/features/chess/utils/getSquareRank.ts +6 -0
  288. package/src/features/chess/utils/isLightSquare.ts +8 -0
  289. package/src/features/chessTabletopOwnership.test.ts +71 -0
  290. package/src/features/game/adapters/inbound/Game.tsx +43 -0
  291. package/src/features/game/adapters/inbound/GameEntity.tsx +44 -0
  292. package/src/features/game/adapters/inbound/GameField.tsx +52 -0
  293. package/src/features/game/adapters/inbound/GameInputZone.tsx +99 -0
  294. package/src/features/game/adapters/inbound/GameMeasurementProbe.tsx +83 -0
  295. package/src/features/game/adapters/inbound/GameOverlay.tsx +58 -0
  296. package/src/features/game/adapters/inbound/createGameKeyboardEvent.test.ts +51 -0
  297. package/src/features/game/adapters/inbound/createGameKeyboardEvent.ts +33 -0
  298. package/src/features/game/adapters/inbound/createGameMeasurementEvent.test.ts +56 -0
  299. package/src/features/game/adapters/inbound/createGameMeasurementEvent.ts +38 -0
  300. package/src/features/game/adapters/inbound/createGamePointerEvent.test.ts +56 -0
  301. package/src/features/game/adapters/inbound/createGamePointerEvent.ts +39 -0
  302. package/src/features/game/adapters/inbound/measureGameEntity.ts +28 -0
  303. package/src/features/game/adapters/inbound/useGameInputZoneResponder.ts +85 -0
  304. package/src/features/game/composition/GameRuntimeContext.ts +6 -0
  305. package/src/features/game/composition/createGameBindingContext.test.ts +66 -0
  306. package/src/features/game/composition/createGameBindingContext.ts +11 -0
  307. package/src/features/game/composition/createGameMeasurementRegistry.test.ts +35 -0
  308. package/src/features/game/composition/createGameMeasurementRegistry.ts +16 -0
  309. package/src/features/game/composition/useGameRuntime.test.tsx +173 -0
  310. package/src/features/game/composition/useGameRuntime.ts +200 -0
  311. package/src/features/game/composition/useGameScheduledEffects.ts +85 -0
  312. package/src/features/game/meta/gameEntityMeta.ts +226 -0
  313. package/src/features/game/meta/gameFieldMeta.ts +49 -0
  314. package/src/features/game/meta/gameInputZoneMeta.ts +140 -0
  315. package/src/features/game/meta/gameMeasurementProbeMeta.ts +72 -0
  316. package/src/features/game/meta/gameMeta.ts +115 -0
  317. package/src/features/game/meta/gameOverlayMeta.ts +66 -0
  318. package/src/features/game/public.test.tsx +64 -0
  319. package/src/features/game/public.ts +19 -0
  320. package/src/features/game/utils/clampGamePercentage.ts +4 -0
  321. package/src/features/game/utils/resolveGameEntityMotionPlan.test.ts +63 -0
  322. package/src/features/game/utils/resolveGameEntityMotionPlan.ts +53 -0
  323. package/src/features/game/utils/toGamePercentage.ts +6 -0
  324. package/src/features/game/utils/useAnimatedGameEntityValue.ts +41 -0
  325. package/src/features/game/utils/useGameEntityAnimatedStyle.ts +87 -0
  326. package/src/features/game/utils/useGameEntityMeasurement.ts +19 -0
  327. package/src/features/game/utils/useGameEntityMotionProgress.ts +114 -0
  328. package/src/features/game/utils/useGameReducedMotion.ts +15 -0
  329. package/src/features/layout/gridMeta.ts +12 -2
  330. package/src/features/layout/viewMeta.ts +10 -2
  331. package/src/features/registry/ZORA_COMPONENT_REGISTRY.ts +29 -0
  332. package/src/features/tabletop/adapters/inbound/CardBack.tsx +70 -0
  333. package/src/features/tabletop/adapters/inbound/CardHand.tsx +61 -0
  334. package/src/features/tabletop/adapters/inbound/PlayingCard.tsx +95 -0
  335. package/src/features/tabletop/adapters/inbound/PokerTrainingTable.tsx +34 -0
  336. package/src/features/tabletop/adapters/inbound/TabletopTable.tsx +264 -0
  337. package/src/features/tabletop/meta.ts +254 -0
  338. package/src/features/tabletop/public.test.tsx +127 -0
  339. package/src/features/tabletop/public.ts +32 -0
  340. package/src/features/tabletop/utils/createPokerTrainingTableState.ts +152 -0
  341. package/src/features/tabletop/utils/createTabletopColorScheme.ts +232 -0
  342. package/src/features/tabletop/utils/createTabletopGameSeats.ts +31 -0
  343. package/src/features/tabletop/utils/getPlayingCardLabel.ts +8 -0
  344. package/src/features/tabletop/utils/getTabletopCardDimensions.ts +45 -0
  345. package/src/features/tabletop/utils/getTabletopSeatPosition.ts +100 -0
  346. package/src/index.ts +83 -0
  347. package/src/types/chess.ts +95 -0
  348. package/src/types/gamePresentation.ts +103 -0
  349. package/src/types/gameRuntime.ts +34 -0
  350. package/src/types/tabletop.ts +131 -0
  351. package/web-dist/chunks/{Accordion-cscmtcn8.js → Accordion-0txegc16.js} +1 -1
  352. package/web-dist/chunks/{Accordion-06588rzn.js → Accordion-10xw59gm.js} +1 -1
  353. package/web-dist/chunks/{Accordion-8kgtg62g.js → Accordion-2zh15wt9.js} +6 -6
  354. package/web-dist/chunks/{Accordion-pkqj4g3r.js → Accordion-481bknsd.js} +5 -5
  355. package/web-dist/chunks/{Accordion-grfbz6f2.js → Accordion-4fkjn6r5.js} +1 -1
  356. package/web-dist/chunks/{Accordion-ftjkdjqs.js → Accordion-4gx45mn0.js} +3 -3
  357. package/web-dist/chunks/{Accordion-fjnck2tg.js → Accordion-4s69xvqy.js} +6 -6
  358. package/web-dist/chunks/{Accordion-jh7nxehr.js → Accordion-50jz5nhg.js} +1 -1
  359. package/web-dist/chunks/{Accordion-t6sdgmbz.js → Accordion-52xke54s.js} +1 -1
  360. package/web-dist/chunks/{Accordion-far6szrp.js → Accordion-6npzmbgk.js} +5 -5
  361. package/web-dist/chunks/{Accordion-q7c1ryf2.js → Accordion-6z4npcgf.js} +4 -4
  362. package/web-dist/chunks/{Accordion-gbba10rg.js → Accordion-8gw5tkfw.js} +6 -6
  363. package/web-dist/chunks/{Accordion-fmxygyb6.js → Accordion-8qteyww0.js} +4 -4
  364. package/web-dist/chunks/{Accordion-1pp37dtg.js → Accordion-9h5dx3ck.js} +4 -4
  365. package/web-dist/chunks/{Accordion-paha5aje.js → Accordion-9mmqf3wr.js} +2 -2
  366. package/web-dist/chunks/{Accordion-f5swy5bs.js → Accordion-b21zrnzj.js} +1 -1
  367. package/web-dist/chunks/{Accordion-ars389m1.js → Accordion-b8qd23hr.js} +3 -3
  368. package/web-dist/chunks/{Accordion-hxfa71g9.js → Accordion-c79y8g44.js} +7 -7
  369. package/web-dist/chunks/Accordion-ca2csh5r.js +321 -0
  370. package/web-dist/chunks/{Accordion-49gf1zb8.js → Accordion-cjht9dyv.js} +1 -1
  371. package/web-dist/chunks/{Accordion-sz21xsf4.js → Accordion-cq6hn45r.js} +1 -1
  372. package/web-dist/chunks/{Accordion-33rd76r7.js → Accordion-d90g9wcb.js} +8 -8
  373. package/web-dist/chunks/{Accordion-crx58d5n.js → Accordion-f5jb299b.js} +2 -2
  374. package/web-dist/chunks/{Accordion-h95wvyn5.js → Accordion-fe6vmbpf.js} +2 -2
  375. package/web-dist/chunks/{Accordion-jzbq36ec.js → Accordion-fqm027n3.js} +8 -8
  376. package/web-dist/chunks/{Accordion-0jkm3y3w.js → Accordion-gpccarct.js} +1 -1
  377. package/web-dist/chunks/{Accordion-v6ykq9hv.js → Accordion-h95h3xdb.js} +10 -10
  378. package/web-dist/chunks/{Accordion-t3p4ykg7.js → Accordion-j8ab9k8k.js} +8 -8
  379. package/web-dist/chunks/{Accordion-qpwhmqzd.js → Accordion-k5z591wx.js} +13 -13
  380. package/web-dist/chunks/{Accordion-rrpej6sv.js → Accordion-kdncjvc7.js} +7 -7
  381. package/web-dist/chunks/{Accordion-f05a7r28.js → Accordion-ks4a1c6w.js} +5 -5
  382. package/web-dist/chunks/{Accordion-x0j8b2by.js → Accordion-ma1sfe5z.js} +5 -5
  383. package/web-dist/chunks/{Accordion-2dws3778.js → Accordion-mhtyce1k.js} +4 -4
  384. package/web-dist/chunks/{Accordion-1vewf8aa.js → Accordion-n7gtb5ec.js} +2 -2
  385. package/web-dist/chunks/{Accordion-0psdn97s.js → Accordion-p42mm8rr.js} +1 -1
  386. package/web-dist/chunks/{Accordion-3404tth9.js → Accordion-panw5f0q.js} +7 -7
  387. package/web-dist/chunks/{Accordion-4a6wj3ez.js → Accordion-pxq8gfgg.js} +9 -9
  388. package/web-dist/chunks/{Accordion-xshn7k8f.js → Accordion-qwbshc4s.js} +4 -4
  389. package/web-dist/chunks/{Accordion-395r3wra.js → Accordion-r51wsmvy.js} +2 -2
  390. package/web-dist/chunks/Accordion-rt13cqr7.js +830 -0
  391. package/web-dist/chunks/{Accordion-hz4xaqjf.js → Accordion-s1f9hb5a.js} +9 -9
  392. package/web-dist/chunks/{Accordion-7ja4mtbz.js → Accordion-sv87mbqa.js} +1 -1
  393. package/web-dist/chunks/{Accordion-r4c9k9y7.js → Accordion-t4k9egq6.js} +2 -2
  394. package/web-dist/chunks/{Accordion-96cqeekv.js → Accordion-t64m1kca.js} +5 -5
  395. package/web-dist/chunks/Accordion-wg31jkvp.js +1559 -0
  396. package/web-dist/chunks/{Accordion-ch67q4t0.js → Accordion-y9zr4x2x.js} +4 -4
  397. package/web-dist/chunks/{Accordion-31aeqxak.js → Accordion-ye3k55r7.js} +3 -3
  398. package/web-dist/chunks/{Accordion-s42wwh6m.js → Accordion-z29agann.js} +6 -6
  399. package/web-dist/chunks/{Accordion-f1h2f05v.js → Accordion-ze26effy.js} +5 -5
  400. package/web-dist/chunks/{Accordion-tx78txec.js → Accordion-zqzcagxz.js} +5 -5
  401. package/web-dist/components/accordion/Accordion.js +12 -12
  402. package/web-dist/components/accordion-item/AccordionItem.js +12 -12
  403. package/web-dist/components/activity-indicator/ActivityIndicator.js +3 -3
  404. package/web-dist/components/app-bar/AppBar.js +19 -19
  405. package/web-dist/components/app-shell/AppShell.js +6 -6
  406. package/web-dist/components/avatar/Avatar.js +12 -12
  407. package/web-dist/components/avatar-group/AvatarGroup.js +12 -12
  408. package/web-dist/components/badge/Badge.js +7 -7
  409. package/web-dist/components/barcode-scanner-view/BarcodeScannerView.js +20 -20
  410. package/web-dist/components/bottom-sheet/BottomSheet.js +8 -8
  411. package/web-dist/components/bottom-sheet-flat-list/BottomSheetFlatList.js +8 -8
  412. package/web-dist/components/bottom-sheet-scroll-view/BottomSheetScrollView.js +8 -8
  413. package/web-dist/components/bottom-sheet-section-list/BottomSheetSectionList.js +8 -8
  414. package/web-dist/components/bottom-sheet-view/BottomSheetView.js +8 -8
  415. package/web-dist/components/bottom-sheet-virtualized-list/BottomSheetVirtualizedList.js +8 -8
  416. package/web-dist/components/breadcrumbs/Breadcrumbs.js +15 -15
  417. package/web-dist/components/button/Button.js +12 -12
  418. package/web-dist/components/button-group/ButtonGroup.js +12 -12
  419. package/web-dist/components/camera-permission-view/CameraPermissionView.js +20 -20
  420. package/web-dist/components/card/Card.js +19 -19
  421. package/web-dist/components/card-back/CardBack.d.ts +7 -0
  422. package/web-dist/components/card-back/CardBack.js +19 -0
  423. package/web-dist/components/card-back/index.d.ts +1 -0
  424. package/web-dist/components/card-back/index.js +2 -0
  425. package/web-dist/components/card-hand/CardHand.d.ts +7 -0
  426. package/web-dist/components/card-hand/CardHand.js +19 -0
  427. package/web-dist/components/card-hand/index.d.ts +1 -0
  428. package/web-dist/components/card-hand/index.js +2 -0
  429. package/web-dist/components/chat-list-item/ChatListItem.js +16 -16
  430. package/web-dist/components/checkbox/Checkbox.js +12 -12
  431. package/web-dist/components/checkbox-group/CheckboxGroup.js +12 -12
  432. package/web-dist/components/chess-board/ChessBoard.d.ts +4 -0
  433. package/web-dist/components/chess-board/ChessBoard.js +13 -0
  434. package/web-dist/components/chess-board/index.d.ts +1 -0
  435. package/web-dist/components/chess-board/index.js +2 -0
  436. package/web-dist/components/chip/Chip.js +13 -13
  437. package/web-dist/components/chip-group/ChipGroup.js +13 -13
  438. package/web-dist/components/collection-editor/CollectionEditor.js +19 -19
  439. package/web-dist/components/content-rail/ContentRail.js +13 -13
  440. package/web-dist/components/data-table/DataTable.js +26 -26
  441. package/web-dist/components/date-picker/DatePicker.js +17 -17
  442. package/web-dist/components/dialog/Dialog.js +12 -12
  443. package/web-dist/components/divider/Divider.js +6 -6
  444. package/web-dist/components/empty-state/EmptyState.js +20 -20
  445. package/web-dist/components/field/Field.js +12 -12
  446. package/web-dist/components/flat-list/FlatList.js +13 -13
  447. package/web-dist/components/forgot-password-form/ForgotPasswordForm.js +18 -18
  448. package/web-dist/components/form/Form.js +16 -16
  449. package/web-dist/components/form-actions/FormActions.js +16 -16
  450. package/web-dist/components/form-error/FormError.js +16 -16
  451. package/web-dist/components/game/Game.d.ts +8 -0
  452. package/web-dist/components/game/Game.js +25 -0
  453. package/web-dist/components/game/index.d.ts +1 -0
  454. package/web-dist/components/game/index.js +2 -0
  455. package/web-dist/components/game-entity/GameEntity.d.ts +8 -0
  456. package/web-dist/components/game-entity/GameEntity.js +25 -0
  457. package/web-dist/components/game-entity/index.d.ts +1 -0
  458. package/web-dist/components/game-entity/index.js +2 -0
  459. package/web-dist/components/game-field/GameField.d.ts +8 -0
  460. package/web-dist/components/game-field/GameField.js +25 -0
  461. package/web-dist/components/game-field/index.d.ts +1 -0
  462. package/web-dist/components/game-field/index.js +2 -0
  463. package/web-dist/components/game-input-zone/GameInputZone.d.ts +8 -0
  464. package/web-dist/components/game-input-zone/GameInputZone.js +25 -0
  465. package/web-dist/components/game-input-zone/index.d.ts +1 -0
  466. package/web-dist/components/game-input-zone/index.js +2 -0
  467. package/web-dist/components/game-measurement-probe/GameMeasurementProbe.d.ts +8 -0
  468. package/web-dist/components/game-measurement-probe/GameMeasurementProbe.js +25 -0
  469. package/web-dist/components/game-measurement-probe/index.d.ts +1 -0
  470. package/web-dist/components/game-measurement-probe/index.js +2 -0
  471. package/web-dist/components/game-overlay/GameOverlay.d.ts +8 -0
  472. package/web-dist/components/game-overlay/GameOverlay.js +25 -0
  473. package/web-dist/components/game-overlay/index.d.ts +1 -0
  474. package/web-dist/components/game-overlay/index.js +2 -0
  475. package/web-dist/components/gradient/Gradient.js +7 -7
  476. package/web-dist/components/gradient-renderer-provider/GradientRendererProvider.js +7 -7
  477. package/web-dist/components/grid/Grid.js +6 -6
  478. package/web-dist/components/heading/Heading.js +6 -6
  479. package/web-dist/components/hero/Hero.js +19 -19
  480. package/web-dist/components/icon/Icon.js +4 -4
  481. package/web-dist/components/icon-button/IconButton.js +12 -12
  482. package/web-dist/components/image/Image.js +10 -10
  483. package/web-dist/components/keyboard-avoiding-view/KeyboardAvoidingView.js +2 -2
  484. package/web-dist/components/list/List.js +13 -13
  485. package/web-dist/components/list-item/ListItem.js +13 -13
  486. package/web-dist/components/list-section/ListSection.js +13 -13
  487. package/web-dist/components/media-card/MediaCard.js +19 -19
  488. package/web-dist/components/message-bubble/MessageBubble.js +16 -16
  489. package/web-dist/components/metric-card/MetricCard.js +19 -19
  490. package/web-dist/components/missing-element/MissingElement.js +11 -11
  491. package/web-dist/components/o-auth-provider-button/OAuthProviderButton.js +18 -18
  492. package/web-dist/components/o-auth-provider-list/OAuthProviderList.js +18 -18
  493. package/web-dist/components/opening-book/OpeningBook.d.ts +4 -0
  494. package/web-dist/components/opening-book/OpeningBook.js +13 -0
  495. package/web-dist/components/opening-book/index.d.ts +1 -0
  496. package/web-dist/components/opening-book/index.js +2 -0
  497. package/web-dist/components/otp-form/OtpForm.js +18 -18
  498. package/web-dist/components/pagination/Pagination.js +13 -13
  499. package/web-dist/components/palette-item/PaletteItem.js +19 -19
  500. package/web-dist/components/playing-card/PlayingCard.d.ts +7 -0
  501. package/web-dist/components/playing-card/PlayingCard.js +19 -0
  502. package/web-dist/components/playing-card/index.d.ts +1 -0
  503. package/web-dist/components/playing-card/index.js +2 -0
  504. package/web-dist/components/poker-training-table/PokerTrainingTable.d.ts +7 -0
  505. package/web-dist/components/poker-training-table/PokerTrainingTable.js +19 -0
  506. package/web-dist/components/poker-training-table/index.d.ts +1 -0
  507. package/web-dist/components/poker-training-table/index.js +2 -0
  508. package/web-dist/components/popover-menu/PopoverMenu.js +14 -14
  509. package/web-dist/components/post-card/PostCard.js +19 -19
  510. package/web-dist/components/product-card/ProductCard.js +19 -19
  511. package/web-dist/components/progress/Progress.js +10 -10
  512. package/web-dist/components/progress-ring/ProgressRing.js +10 -10
  513. package/web-dist/components/radio/Radio.js +14 -14
  514. package/web-dist/components/radio-group/RadioGroup.js +14 -14
  515. package/web-dist/components/rating/Rating.js +9 -9
  516. package/web-dist/components/reader-surface/ReaderSurface.js +21 -21
  517. package/web-dist/components/scan-overlay/ScanOverlay.js +20 -20
  518. package/web-dist/components/screen/Screen.js +6 -6
  519. package/web-dist/components/screen-section/ScreenSection.js +10 -10
  520. package/web-dist/components/scroll-view/ScrollView.js +6 -6
  521. package/web-dist/components/search-input/SearchInput.js +13 -13
  522. package/web-dist/components/section-header/SectionHeader.js +10 -10
  523. package/web-dist/components/section-list/SectionList.js +13 -13
  524. package/web-dist/components/select/Select.js +16 -16
  525. package/web-dist/components/selectable-item/SelectableItem.js +5 -5
  526. package/web-dist/components/selection-provider/SelectionProvider.js +5 -5
  527. package/web-dist/components/sign-in-form/SignInForm.js +18 -18
  528. package/web-dist/components/sign-up-form/SignUpForm.js +18 -18
  529. package/web-dist/components/skeleton/Skeleton.js +22 -22
  530. package/web-dist/components/skeleton-card/SkeletonCard.js +22 -22
  531. package/web-dist/components/skeleton-list/SkeletonList.js +22 -22
  532. package/web-dist/components/skeleton-text/SkeletonText.js +22 -22
  533. package/web-dist/components/surface/Surface.js +7 -7
  534. package/web-dist/components/switch/Switch.js +7 -7
  535. package/web-dist/components/tab/Tab.js +7 -7
  536. package/web-dist/components/tab-list/TabList.js +7 -7
  537. package/web-dist/components/tab-panel/TabPanel.js +7 -7
  538. package/web-dist/components/tabletop-table/TabletopTable.d.ts +7 -0
  539. package/web-dist/components/tabletop-table/TabletopTable.js +19 -0
  540. package/web-dist/components/tabletop-table/index.d.ts +1 -0
  541. package/web-dist/components/tabletop-table/index.js +2 -0
  542. package/web-dist/components/tabs/Tabs.js +7 -7
  543. package/web-dist/components/text/Text.js +6 -6
  544. package/web-dist/components/text-input/TextInput.js +13 -13
  545. package/web-dist/components/time-picker/TimePicker.js +17 -17
  546. package/web-dist/components/timeline/Timeline.js +11 -11
  547. package/web-dist/components/toast/Toast.js +9 -9
  548. package/web-dist/components/toast-provider/ToastProvider.js +9 -9
  549. package/web-dist/components/toolbar/Toolbar.js +19 -19
  550. package/web-dist/components/tree-item/TreeItem.js +16 -16
  551. package/web-dist/components/uploader/Uploader.js +22 -22
  552. package/web-dist/components/view/View.js +6 -6
  553. package/web-dist/manifest.json +1650 -1379
  554. package/web-dist/runtime/ZoraProvider.js +8 -8
@@ -0,0 +1,130 @@
1
+ /*** Describe the embeddable config-driven Game runtime/presentation boundary for ZORA authoring. */
2
+ export declare const gameMeta: {
3
+ readonly name: "Game";
4
+ readonly category: "pattern";
5
+ readonly description: "Embeds one config-driven game session inside ordinary ZORA layout and emits domain-neutral game outputs.";
6
+ readonly directManifestNode: true;
7
+ readonly allowedChildren: readonly ["GameEntity", "GameInputZone", "GameMeasurementProbe", "GameOverlay", "Gradient", "Image", "View"];
8
+ readonly blueprint: {
9
+ readonly label: "Game";
10
+ readonly defaultProps: {
11
+ readonly definition: {
12
+ readonly id: "game";
13
+ readonly initialPhase: "playing";
14
+ readonly stages: readonly [{
15
+ readonly id: "main";
16
+ }];
17
+ readonly rules: readonly [];
18
+ };
19
+ readonly seed: 0;
20
+ readonly resetKey: "";
21
+ readonly autoAdvanceTime: true;
22
+ readonly minHeight: 320;
23
+ readonly fill: false;
24
+ readonly clip: true;
25
+ };
26
+ };
27
+ readonly bindings: {
28
+ readonly props: {
29
+ readonly definition: {
30
+ readonly value: {
31
+ readonly type: "object";
32
+ };
33
+ readonly acceptsFallback: true;
34
+ };
35
+ readonly input: {
36
+ readonly value: {
37
+ readonly type: "record";
38
+ };
39
+ readonly acceptsFallback: true;
40
+ };
41
+ };
42
+ };
43
+ readonly events: {
44
+ readonly output: {
45
+ readonly label: "Game output";
46
+ readonly eventType: "game.output";
47
+ readonly description: "Emitted when the platform-neutral game runtime produces an app/domain output.";
48
+ readonly payloadFields: readonly [{
49
+ readonly path: "type";
50
+ readonly type: "string";
51
+ }, {
52
+ readonly path: "payload";
53
+ readonly type: "record";
54
+ }];
55
+ };
56
+ };
57
+ readonly props: {
58
+ readonly seed: {
59
+ readonly type: "number";
60
+ readonly category: "Runtime";
61
+ readonly label: "Initial seed";
62
+ readonly default: 0;
63
+ readonly authoring: {
64
+ readonly authority: "instance";
65
+ };
66
+ };
67
+ readonly resetKey: {
68
+ readonly type: "string";
69
+ readonly category: "Runtime";
70
+ readonly label: "Reset key";
71
+ readonly default: "";
72
+ readonly authoring: {
73
+ readonly authority: "instance";
74
+ };
75
+ };
76
+ readonly autoAdvanceTime: {
77
+ readonly type: "boolean";
78
+ readonly category: "Runtime";
79
+ readonly label: "Advance scheduled effects";
80
+ readonly default: true;
81
+ readonly authoring: {
82
+ readonly authority: "instance";
83
+ };
84
+ };
85
+ readonly aspectRatio: {
86
+ readonly type: "number";
87
+ readonly category: "Layout";
88
+ readonly label: "Aspect ratio";
89
+ readonly authoring: {
90
+ readonly authority: "instance";
91
+ };
92
+ };
93
+ readonly minHeight: {
94
+ readonly type: "number";
95
+ readonly category: "Layout";
96
+ readonly label: "Minimum height";
97
+ readonly default: 320;
98
+ readonly authoring: {
99
+ readonly authority: "instance";
100
+ };
101
+ };
102
+ readonly fill: {
103
+ readonly type: "boolean";
104
+ readonly category: "Layout";
105
+ readonly label: "Fill available space";
106
+ readonly default: false;
107
+ readonly authoring: {
108
+ readonly authority: "instance";
109
+ };
110
+ };
111
+ readonly clip: {
112
+ readonly type: "boolean";
113
+ readonly category: "Layout";
114
+ readonly label: "Clip overflow";
115
+ readonly default: true;
116
+ readonly authoring: {
117
+ readonly authority: "instance";
118
+ };
119
+ };
120
+ readonly accessibilityLabel: {
121
+ readonly type: "string";
122
+ readonly category: "Accessibility";
123
+ readonly label: "Accessibility label";
124
+ readonly authoring: {
125
+ readonly authority: "instance";
126
+ };
127
+ };
128
+ };
129
+ };
130
+ //# sourceMappingURL=gameMeta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gameMeta.d.ts","sourceRoot":"","sources":["../../../../src/features/game/meta/gameMeta.ts"],"names":[],"mappings":"AAEA,oGAAoG;AACpG,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+GiB,CAAC"}
@@ -0,0 +1,113 @@
1
+ /*** Describe the embeddable config-driven Game runtime/presentation boundary for ZORA authoring. */
2
+ export const gameMeta = {
3
+ name: 'Game',
4
+ category: 'pattern',
5
+ description: 'Embeds one config-driven game session inside ordinary ZORA layout and emits domain-neutral game outputs.',
6
+ directManifestNode: true,
7
+ allowedChildren: [
8
+ 'GameEntity',
9
+ 'GameInputZone',
10
+ 'GameMeasurementProbe',
11
+ 'GameOverlay',
12
+ 'Gradient',
13
+ 'Image',
14
+ 'View',
15
+ ],
16
+ blueprint: {
17
+ label: 'Game',
18
+ defaultProps: {
19
+ definition: {
20
+ id: 'game',
21
+ initialPhase: 'playing',
22
+ stages: [{ id: 'main' }],
23
+ rules: [],
24
+ },
25
+ seed: 0,
26
+ resetKey: '',
27
+ autoAdvanceTime: true,
28
+ minHeight: 320,
29
+ fill: false,
30
+ clip: true,
31
+ },
32
+ },
33
+ bindings: {
34
+ props: {
35
+ definition: {
36
+ value: { type: 'object' },
37
+ acceptsFallback: true,
38
+ },
39
+ input: {
40
+ value: { type: 'record' },
41
+ acceptsFallback: true,
42
+ },
43
+ },
44
+ },
45
+ events: {
46
+ output: {
47
+ label: 'Game output',
48
+ eventType: 'game.output',
49
+ description: 'Emitted when the platform-neutral game runtime produces an app/domain output.',
50
+ payloadFields: [
51
+ { path: 'type', type: 'string' },
52
+ { path: 'payload', type: 'record' },
53
+ ],
54
+ },
55
+ },
56
+ props: {
57
+ seed: {
58
+ type: 'number',
59
+ category: 'Runtime',
60
+ label: 'Initial seed',
61
+ default: 0,
62
+ authoring: { authority: 'instance' },
63
+ },
64
+ resetKey: {
65
+ type: 'string',
66
+ category: 'Runtime',
67
+ label: 'Reset key',
68
+ default: '',
69
+ authoring: { authority: 'instance' },
70
+ },
71
+ autoAdvanceTime: {
72
+ type: 'boolean',
73
+ category: 'Runtime',
74
+ label: 'Advance scheduled effects',
75
+ default: true,
76
+ authoring: { authority: 'instance' },
77
+ },
78
+ aspectRatio: {
79
+ type: 'number',
80
+ category: 'Layout',
81
+ label: 'Aspect ratio',
82
+ authoring: { authority: 'instance' },
83
+ },
84
+ minHeight: {
85
+ type: 'number',
86
+ category: 'Layout',
87
+ label: 'Minimum height',
88
+ default: 320,
89
+ authoring: { authority: 'instance' },
90
+ },
91
+ fill: {
92
+ type: 'boolean',
93
+ category: 'Layout',
94
+ label: 'Fill available space',
95
+ default: false,
96
+ authoring: { authority: 'instance' },
97
+ },
98
+ clip: {
99
+ type: 'boolean',
100
+ category: 'Layout',
101
+ label: 'Clip overflow',
102
+ default: true,
103
+ authoring: { authority: 'instance' },
104
+ },
105
+ accessibilityLabel: {
106
+ type: 'string',
107
+ category: 'Accessibility',
108
+ label: 'Accessibility label',
109
+ authoring: { authority: 'instance' },
110
+ },
111
+ },
112
+ };
113
+ //# sourceMappingURL=gameMeta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gameMeta.js","sourceRoot":"","sources":["../../../../src/features/game/meta/gameMeta.ts"],"names":[],"mappings":"AAEA,oGAAoG;AACpG,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,SAAS;IACnB,WAAW,EACT,0GAA0G;IAC5G,kBAAkB,EAAE,IAAI;IACxB,eAAe,EAAE;QACf,YAAY;QACZ,eAAe;QACf,sBAAsB;QACtB,aAAa;QACb,UAAU;QACV,OAAO;QACP,MAAM;KACP;IACD,SAAS,EAAE;QACT,KAAK,EAAE,MAAM;QACb,YAAY,EAAE;YACZ,UAAU,EAAE;gBACV,EAAE,EAAE,MAAM;gBACV,YAAY,EAAE,SAAS;gBACvB,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;gBACxB,KAAK,EAAE,EAAE;aACV;YACD,IAAI,EAAE,CAAC;YACP,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,IAAI;YACrB,SAAS,EAAE,GAAG;YACd,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,IAAI;SACX;KACF;IACD,QAAQ,EAAE;QACR,KAAK,EAAE;YACL,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,eAAe,EAAE,IAAI;aACtB;YACD,KAAK,EAAE;gBACL,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,eAAe,EAAE,IAAI;aACtB;SACF;KACF;IACD,MAAM,EAAE;QACN,MAAM,EAAE;YACN,KAAK,EAAE,aAAa;YACpB,SAAS,EAAE,aAAa;YACxB,WAAW,EAAE,+EAA+E;YAC5F,aAAa,EAAE;gBACb,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAChC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE;aACpC;SACF;KACF;IACD,KAAK,EAAE;QACL,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,cAAc;YACrB,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;SACrC;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;SACrC;QACD,eAAe,EAAE;YACf,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,2BAA2B;YAClC,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;SACrC;QACD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,cAAc;YACrB,SAAS,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;SACrC;QACD,SAAS,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,gBAAgB;YACvB,OAAO,EAAE,GAAG;YACZ,SAAS,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;SACrC;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,sBAAsB;YAC7B,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;SACrC;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,eAAe;YACtB,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;SACrC;QACD,kBAAkB,EAAE;YAClB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,eAAe;YACzB,KAAK,EAAE,qBAAqB;YAC5B,SAAS,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;SACrC;KACF;CACmC,CAAC","sourcesContent":["import type { ZoraComponentMeta } from '../../../types/authoring';\n\n/*** Describe the embeddable config-driven Game runtime/presentation boundary for ZORA authoring. */\nexport const gameMeta = {\n name: 'Game',\n category: 'pattern',\n description:\n 'Embeds one config-driven game session inside ordinary ZORA layout and emits domain-neutral game outputs.',\n directManifestNode: true,\n allowedChildren: [\n 'GameEntity',\n 'GameInputZone',\n 'GameMeasurementProbe',\n 'GameOverlay',\n 'Gradient',\n 'Image',\n 'View',\n ],\n blueprint: {\n label: 'Game',\n defaultProps: {\n definition: {\n id: 'game',\n initialPhase: 'playing',\n stages: [{ id: 'main' }],\n rules: [],\n },\n seed: 0,\n resetKey: '',\n autoAdvanceTime: true,\n minHeight: 320,\n fill: false,\n clip: true,\n },\n },\n bindings: {\n props: {\n definition: {\n value: { type: 'object' },\n acceptsFallback: true,\n },\n input: {\n value: { type: 'record' },\n acceptsFallback: true,\n },\n },\n },\n events: {\n output: {\n label: 'Game output',\n eventType: 'game.output',\n description: 'Emitted when the platform-neutral game runtime produces an app/domain output.',\n payloadFields: [\n { path: 'type', type: 'string' },\n { path: 'payload', type: 'record' },\n ],\n },\n },\n props: {\n seed: {\n type: 'number',\n category: 'Runtime',\n label: 'Initial seed',\n default: 0,\n authoring: { authority: 'instance' },\n },\n resetKey: {\n type: 'string',\n category: 'Runtime',\n label: 'Reset key',\n default: '',\n authoring: { authority: 'instance' },\n },\n autoAdvanceTime: {\n type: 'boolean',\n category: 'Runtime',\n label: 'Advance scheduled effects',\n default: true,\n authoring: { authority: 'instance' },\n },\n aspectRatio: {\n type: 'number',\n category: 'Layout',\n label: 'Aspect ratio',\n authoring: { authority: 'instance' },\n },\n minHeight: {\n type: 'number',\n category: 'Layout',\n label: 'Minimum height',\n default: 320,\n authoring: { authority: 'instance' },\n },\n fill: {\n type: 'boolean',\n category: 'Layout',\n label: 'Fill available space',\n default: false,\n authoring: { authority: 'instance' },\n },\n clip: {\n type: 'boolean',\n category: 'Layout',\n label: 'Clip overflow',\n default: true,\n authoring: { authority: 'instance' },\n },\n accessibilityLabel: {\n type: 'string',\n category: 'Accessibility',\n label: 'Accessibility label',\n authoring: { authority: 'instance' },\n },\n },\n} as const satisfies ZoraComponentMeta;\n"]}
@@ -0,0 +1,55 @@
1
+ /*** Describe a generic absolute game layer for HUD, feedback, and phase content. */
2
+ export declare const gameOverlayMeta: {
3
+ readonly name: "GameOverlay";
4
+ readonly category: "layout";
5
+ readonly description: "Absolute presentation layer for HUD, feedback, controls, and phase content.";
6
+ readonly directManifestNode: true;
7
+ readonly allowedChildren: readonly ["Badge", "Button", "ButtonGroup", "Card", "GameEntity", "Heading", "Icon", "Image", "Progress", "ProgressRing", "Text", "View"];
8
+ readonly blueprint: {
9
+ readonly label: "Game overlay";
10
+ readonly defaultProps: {
11
+ readonly placement: "fill";
12
+ readonly blocking: false;
13
+ readonly padding: 0;
14
+ };
15
+ };
16
+ readonly props: {
17
+ readonly placement: {
18
+ readonly type: "enum";
19
+ readonly category: "Layout";
20
+ readonly label: "Placement";
21
+ readonly enum: readonly ["fill", "center", "top", "bottom", "top-left", "top-right", "bottom-left", "bottom-right"];
22
+ readonly default: "fill";
23
+ readonly authoring: {
24
+ readonly authority: "instance";
25
+ };
26
+ };
27
+ readonly blocking: {
28
+ readonly type: "boolean";
29
+ readonly category: "Interaction";
30
+ readonly label: "Block pointer input";
31
+ readonly default: false;
32
+ readonly authoring: {
33
+ readonly authority: "instance";
34
+ };
35
+ };
36
+ readonly padding: {
37
+ readonly type: "number";
38
+ readonly category: "Layout";
39
+ readonly label: "Padding";
40
+ readonly default: 0;
41
+ readonly authoring: {
42
+ readonly authority: "instance";
43
+ };
44
+ };
45
+ readonly accessibilityLabel: {
46
+ readonly type: "string";
47
+ readonly category: "Accessibility";
48
+ readonly label: "Accessibility label";
49
+ readonly authoring: {
50
+ readonly authority: "instance";
51
+ };
52
+ };
53
+ };
54
+ };
55
+ //# sourceMappingURL=gameOverlayMeta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gameOverlayMeta.d.ts","sourceRoot":"","sources":["../../../../src/features/game/meta/gameOverlayMeta.ts"],"names":[],"mappings":"AAEA,oFAAoF;AACpF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8DU,CAAC"}
@@ -0,0 +1,65 @@
1
+ /*** Describe a generic absolute game layer for HUD, feedback, and phase content. */
2
+ export const gameOverlayMeta = {
3
+ name: 'GameOverlay',
4
+ category: 'layout',
5
+ description: 'Absolute presentation layer for HUD, feedback, controls, and phase content.',
6
+ directManifestNode: true,
7
+ allowedChildren: [
8
+ 'Badge',
9
+ 'Button',
10
+ 'ButtonGroup',
11
+ 'Card',
12
+ 'GameEntity',
13
+ 'Heading',
14
+ 'Icon',
15
+ 'Image',
16
+ 'Progress',
17
+ 'ProgressRing',
18
+ 'Text',
19
+ 'View',
20
+ ],
21
+ blueprint: {
22
+ label: 'Game overlay',
23
+ defaultProps: { placement: 'fill', blocking: false, padding: 0 },
24
+ },
25
+ props: {
26
+ placement: {
27
+ type: 'enum',
28
+ category: 'Layout',
29
+ label: 'Placement',
30
+ enum: [
31
+ 'fill',
32
+ 'center',
33
+ 'top',
34
+ 'bottom',
35
+ 'top-left',
36
+ 'top-right',
37
+ 'bottom-left',
38
+ 'bottom-right',
39
+ ],
40
+ default: 'fill',
41
+ authoring: { authority: 'instance' },
42
+ },
43
+ blocking: {
44
+ type: 'boolean',
45
+ category: 'Interaction',
46
+ label: 'Block pointer input',
47
+ default: false,
48
+ authoring: { authority: 'instance' },
49
+ },
50
+ padding: {
51
+ type: 'number',
52
+ category: 'Layout',
53
+ label: 'Padding',
54
+ default: 0,
55
+ authoring: { authority: 'instance' },
56
+ },
57
+ accessibilityLabel: {
58
+ type: 'string',
59
+ category: 'Accessibility',
60
+ label: 'Accessibility label',
61
+ authoring: { authority: 'instance' },
62
+ },
63
+ },
64
+ };
65
+ //# sourceMappingURL=gameOverlayMeta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gameOverlayMeta.js","sourceRoot":"","sources":["../../../../src/features/game/meta/gameOverlayMeta.ts"],"names":[],"mappings":"AAEA,oFAAoF;AACpF,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,aAAa;IACnB,QAAQ,EAAE,QAAQ;IAClB,WAAW,EAAE,6EAA6E;IAC1F,kBAAkB,EAAE,IAAI;IACxB,eAAe,EAAE;QACf,OAAO;QACP,QAAQ;QACR,aAAa;QACb,MAAM;QACN,YAAY;QACZ,SAAS;QACT,MAAM;QACN,OAAO;QACP,UAAU;QACV,cAAc;QACd,MAAM;QACN,MAAM;KACP;IACD,SAAS,EAAE;QACT,KAAK,EAAE,cAAc;QACrB,YAAY,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;KACjE;IACD,KAAK,EAAE;QACL,SAAS,EAAE;YACT,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,WAAW;YAClB,IAAI,EAAE;gBACJ,MAAM;gBACN,QAAQ;gBACR,KAAK;gBACL,QAAQ;gBACR,UAAU;gBACV,WAAW;gBACX,aAAa;gBACb,cAAc;aACf;YACD,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;SACrC;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,aAAa;YACvB,KAAK,EAAE,qBAAqB;YAC5B,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;SACrC;QACD,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;SACrC;QACD,kBAAkB,EAAE;YAClB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,eAAe;YACzB,KAAK,EAAE,qBAAqB;YAC5B,SAAS,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;SACrC;KACF;CACmC,CAAC","sourcesContent":["import type { ZoraComponentMeta } from '../../../types/authoring';\n\n/*** Describe a generic absolute game layer for HUD, feedback, and phase content. */\nexport const gameOverlayMeta = {\n name: 'GameOverlay',\n category: 'layout',\n description: 'Absolute presentation layer for HUD, feedback, controls, and phase content.',\n directManifestNode: true,\n allowedChildren: [\n 'Badge',\n 'Button',\n 'ButtonGroup',\n 'Card',\n 'GameEntity',\n 'Heading',\n 'Icon',\n 'Image',\n 'Progress',\n 'ProgressRing',\n 'Text',\n 'View',\n ],\n blueprint: {\n label: 'Game overlay',\n defaultProps: { placement: 'fill', blocking: false, padding: 0 },\n },\n props: {\n placement: {\n type: 'enum',\n category: 'Layout',\n label: 'Placement',\n enum: [\n 'fill',\n 'center',\n 'top',\n 'bottom',\n 'top-left',\n 'top-right',\n 'bottom-left',\n 'bottom-right',\n ],\n default: 'fill',\n authoring: { authority: 'instance' },\n },\n blocking: {\n type: 'boolean',\n category: 'Interaction',\n label: 'Block pointer input',\n default: false,\n authoring: { authority: 'instance' },\n },\n padding: {\n type: 'number',\n category: 'Layout',\n label: 'Padding',\n default: 0,\n authoring: { authority: 'instance' },\n },\n accessibilityLabel: {\n type: 'string',\n category: 'Accessibility',\n label: 'Accessibility label',\n authoring: { authority: 'instance' },\n },\n },\n} as const satisfies ZoraComponentMeta;\n"]}
@@ -0,0 +1,8 @@
1
+ export type { GameEntityEasing, GameEntityMotionProps, GameEntityProps, GameFieldProps, GameInputZoneProps, GameKeyboardBinding, GameMeasurementProbeProps, GameOverlayPlacement, GameOverlayProps, GamePointerEvents, GameProps, } from '../../types/gamePresentation';
2
+ export { Game } from './adapters/inbound/Game';
3
+ export { GameEntity } from './adapters/inbound/GameEntity';
4
+ export { GameField } from './adapters/inbound/GameField';
5
+ export { GameInputZone } from './adapters/inbound/GameInputZone';
6
+ export { GameMeasurementProbe } from './adapters/inbound/GameMeasurementProbe';
7
+ export { GameOverlay } from './adapters/inbound/GameOverlay';
8
+ //# sourceMappingURL=public.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/features/game/public.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,EACzB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,GACV,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { Game } from './adapters/inbound/Game';
2
+ export { GameEntity } from './adapters/inbound/GameEntity';
3
+ export { GameField } from './adapters/inbound/GameField';
4
+ export { GameInputZone } from './adapters/inbound/GameInputZone';
5
+ export { GameMeasurementProbe } from './adapters/inbound/GameMeasurementProbe';
6
+ export { GameOverlay } from './adapters/inbound/GameOverlay';
7
+ //# sourceMappingURL=public.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.js","sourceRoot":"","sources":["../../../src/features/game/public.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC","sourcesContent":["export type {\n GameEntityEasing,\n GameEntityMotionProps,\n GameEntityProps,\n GameFieldProps,\n GameInputZoneProps,\n GameKeyboardBinding,\n GameMeasurementProbeProps,\n GameOverlayPlacement,\n GameOverlayProps,\n GamePointerEvents,\n GameProps,\n} from '../../types/gamePresentation';\nexport { Game } from './adapters/inbound/Game';\nexport { GameEntity } from './adapters/inbound/GameEntity';\nexport { GameField } from './adapters/inbound/GameField';\nexport { GameInputZone } from './adapters/inbound/GameInputZone';\nexport { GameMeasurementProbe } from './adapters/inbound/GameMeasurementProbe';\nexport { GameOverlay } from './adapters/inbound/GameOverlay';\n"]}
@@ -0,0 +1,3 @@
1
+ /*** Clamp one game presentation coordinate to the inclusive field-percentage range. */
2
+ export declare function clampGamePercentage(value: number): number;
3
+ //# sourceMappingURL=clampGamePercentage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clampGamePercentage.d.ts","sourceRoot":"","sources":["../../../../src/features/game/utils/clampGamePercentage.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzD"}
@@ -0,0 +1,5 @@
1
+ /*** Clamp one game presentation coordinate to the inclusive field-percentage range. */
2
+ export function clampGamePercentage(value) {
3
+ return Math.min(100, Math.max(0, value));
4
+ }
5
+ //# sourceMappingURL=clampGamePercentage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clampGamePercentage.js","sourceRoot":"","sources":["../../../../src/features/game/utils/clampGamePercentage.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3C,CAAC","sourcesContent":["/*** Clamp one game presentation coordinate to the inclusive field-percentage range. */\nexport function clampGamePercentage(value: number): number {\n return Math.min(100, Math.max(0, value));\n}\n"]}
@@ -0,0 +1,15 @@
1
+ import type { GameEntityEasing, GameEntityMotionProps } from '../../../types/gamePresentation';
2
+ export interface GameEntityMotionPlan {
3
+ readonly transitionDurationMs: number;
4
+ readonly transitionEasing: GameEntityEasing;
5
+ readonly motionDurationMs: number;
6
+ readonly motionDelayMs: number;
7
+ readonly motionEasing: GameEntityEasing;
8
+ readonly motionEnabled: boolean;
9
+ readonly motionRepeat: boolean;
10
+ readonly motionAlternate: boolean;
11
+ readonly motionPaused: boolean;
12
+ }
13
+ /*** Normalize serializable GameEntity motion props against the current reduced-motion preference. */
14
+ export declare function resolveGameEntityMotionPlan(props: GameEntityMotionProps, reduceMotion: boolean): GameEntityMotionPlan;
15
+ //# sourceMappingURL=resolveGameEntityMotionPlan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveGameEntityMotionPlan.d.ts","sourceRoot":"","sources":["../../../../src/features/game/utils/resolveGameEntityMotionPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAE/F,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;CAChC;AAED,qGAAqG;AACrG,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,qBAAqB,EAC5B,YAAY,EAAE,OAAO,GACpB,oBAAoB,CAkBtB"}
@@ -0,0 +1,31 @@
1
+ /*** Normalize serializable GameEntity motion props against the current reduced-motion preference. */
2
+ export function resolveGameEntityMotionPlan(props, reduceMotion) {
3
+ const essential = props.motionEssential === true;
4
+ const motionEnabled = hasMotionOffset(props) &&
5
+ normalizeDuration(props.motionDurationMs) > 0 &&
6
+ (!reduceMotion || essential);
7
+ return {
8
+ transitionDurationMs: reduceMotion ? 0 : normalizeDuration(props.transitionDurationMs),
9
+ transitionEasing: props.transitionEasing ?? 'linear',
10
+ motionDurationMs: normalizeDuration(props.motionDurationMs),
11
+ motionDelayMs: normalizeDuration(props.motionDelayMs),
12
+ motionEasing: props.motionEasing ?? 'linear',
13
+ motionEnabled,
14
+ motionRepeat: props.motionRepeat === true,
15
+ motionAlternate: props.motionRepeat === true && props.motionAlternate === true,
16
+ motionPaused: props.motionPaused === true,
17
+ };
18
+ }
19
+ /*** Return whether any relative presentation offset requires a motion timeline. */
20
+ function hasMotionOffset(props) {
21
+ return ((props.motionOffsetX ?? 0) !== 0 ||
22
+ (props.motionOffsetY ?? 0) !== 0 ||
23
+ (props.motionOpacityDelta ?? 0) !== 0 ||
24
+ (props.motionScaleDelta ?? 0) !== 0 ||
25
+ (props.motionRotationDelta ?? 0) !== 0);
26
+ }
27
+ /*** Clamp an optional duration to a finite non-negative millisecond value. */
28
+ function normalizeDuration(value) {
29
+ return value === undefined || !Number.isFinite(value) ? 0 : Math.max(0, value);
30
+ }
31
+ //# sourceMappingURL=resolveGameEntityMotionPlan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveGameEntityMotionPlan.js","sourceRoot":"","sources":["../../../../src/features/game/utils/resolveGameEntityMotionPlan.ts"],"names":[],"mappings":"AAcA,qGAAqG;AACrG,MAAM,UAAU,2BAA2B,CACzC,KAA4B,EAC5B,YAAqB;IAErB,MAAM,SAAS,GAAG,KAAK,CAAC,eAAe,KAAK,IAAI,CAAC;IACjD,MAAM,aAAa,GACjB,eAAe,CAAC,KAAK,CAAC;QACtB,iBAAiB,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC;QAC7C,CAAC,CAAC,YAAY,IAAI,SAAS,CAAC,CAAC;IAE/B,OAAO;QACL,oBAAoB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,oBAAoB,CAAC;QACtF,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,IAAI,QAAQ;QACpD,gBAAgB,EAAE,iBAAiB,CAAC,KAAK,CAAC,gBAAgB,CAAC;QAC3D,aAAa,EAAE,iBAAiB,CAAC,KAAK,CAAC,aAAa,CAAC;QACrD,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,QAAQ;QAC5C,aAAa;QACb,YAAY,EAAE,KAAK,CAAC,YAAY,KAAK,IAAI;QACzC,eAAe,EAAE,KAAK,CAAC,YAAY,KAAK,IAAI,IAAI,KAAK,CAAC,eAAe,KAAK,IAAI;QAC9E,YAAY,EAAE,KAAK,CAAC,YAAY,KAAK,IAAI;KAC1C,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,SAAS,eAAe,CAAC,KAA4B;IACnD,OAAO,CACL,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC,KAAK,CAAC;QAChC,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC,KAAK,CAAC;QAChC,CAAC,KAAK,CAAC,kBAAkB,IAAI,CAAC,CAAC,KAAK,CAAC;QACrC,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,CAAC,KAAK,CAAC;QACnC,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,CAAC,KAAK,CAAC,CACvC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,SAAS,iBAAiB,CAAC,KAAyB;IAClD,OAAO,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACjF,CAAC","sourcesContent":["import type { GameEntityEasing, GameEntityMotionProps } from '../../../types/gamePresentation';\n\nexport interface GameEntityMotionPlan {\n readonly transitionDurationMs: number;\n readonly transitionEasing: GameEntityEasing;\n readonly motionDurationMs: number;\n readonly motionDelayMs: number;\n readonly motionEasing: GameEntityEasing;\n readonly motionEnabled: boolean;\n readonly motionRepeat: boolean;\n readonly motionAlternate: boolean;\n readonly motionPaused: boolean;\n}\n\n/*** Normalize serializable GameEntity motion props against the current reduced-motion preference. */\nexport function resolveGameEntityMotionPlan(\n props: GameEntityMotionProps,\n reduceMotion: boolean,\n): GameEntityMotionPlan {\n const essential = props.motionEssential === true;\n const motionEnabled =\n hasMotionOffset(props) &&\n normalizeDuration(props.motionDurationMs) > 0 &&\n (!reduceMotion || essential);\n\n return {\n transitionDurationMs: reduceMotion ? 0 : normalizeDuration(props.transitionDurationMs),\n transitionEasing: props.transitionEasing ?? 'linear',\n motionDurationMs: normalizeDuration(props.motionDurationMs),\n motionDelayMs: normalizeDuration(props.motionDelayMs),\n motionEasing: props.motionEasing ?? 'linear',\n motionEnabled,\n motionRepeat: props.motionRepeat === true,\n motionAlternate: props.motionRepeat === true && props.motionAlternate === true,\n motionPaused: props.motionPaused === true,\n };\n}\n\n/*** Return whether any relative presentation offset requires a motion timeline. */\nfunction hasMotionOffset(props: GameEntityMotionProps): boolean {\n return (\n (props.motionOffsetX ?? 0) !== 0 ||\n (props.motionOffsetY ?? 0) !== 0 ||\n (props.motionOpacityDelta ?? 0) !== 0 ||\n (props.motionScaleDelta ?? 0) !== 0 ||\n (props.motionRotationDelta ?? 0) !== 0\n );\n}\n\n/*** Clamp an optional duration to a finite non-negative millisecond value. */\nfunction normalizeDuration(value: number | undefined): number {\n return value === undefined || !Number.isFinite(value) ? 0 : Math.max(0, value);\n}\n"]}
@@ -0,0 +1,3 @@
1
+ /*** Convert one game percentage coordinate to React Native percentage style syntax. */
2
+ export declare function toGamePercentage(value: number): `${number}%`;
3
+ //# sourceMappingURL=toGamePercentage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toGamePercentage.d.ts","sourceRoot":"","sources":["../../../../src/features/game/utils/toGamePercentage.ts"],"names":[],"mappings":"AAEA,uFAAuF;AACvF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,MAAM,GAAG,CAE5D"}
@@ -0,0 +1,6 @@
1
+ import { clampGamePercentage } from './clampGamePercentage';
2
+ /*** Convert one game percentage coordinate to React Native percentage style syntax. */
3
+ export function toGamePercentage(value) {
4
+ return `${clampGamePercentage(value)}%`;
5
+ }
6
+ //# sourceMappingURL=toGamePercentage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toGamePercentage.js","sourceRoot":"","sources":["../../../../src/features/game/utils/toGamePercentage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,uFAAuF;AACvF,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1C,CAAC","sourcesContent":["import { clampGamePercentage } from './clampGamePercentage';\n\n/*** Convert one game percentage coordinate to React Native percentage style syntax. */\nexport function toGamePercentage(value: number): `${number}%` {\n return `${clampGamePercentage(value)}%`;\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import { Animated } from 'react-native';
2
+ import type { GameEntityEasing } from '../../../types/gamePresentation';
3
+ /*** Animate one bound numeric GameEntity presentation value toward its latest session-driven target. */
4
+ export declare function useAnimatedGameEntityValue(target: number, durationMs: number, easing: GameEntityEasing): Animated.Value;
5
+ //# sourceMappingURL=useAnimatedGameEntityValue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAnimatedGameEntityValue.d.ts","sourceRoot":"","sources":["../../../../src/features/game/utils/useAnimatedGameEntityValue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAU,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAExE,wGAAwG;AACxG,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,gBAAgB,GACvB,QAAQ,CAAC,KAAK,CAsBhB"}
@@ -0,0 +1,33 @@
1
+ import React from 'react';
2
+ import { Animated, Easing } from 'react-native';
3
+ /*** Animate one bound numeric GameEntity presentation value toward its latest session-driven target. */
4
+ export function useAnimatedGameEntityValue(target, durationMs, easing) {
5
+ const [value] = React.useState(() => new Animated.Value(target));
6
+ React.useEffect(() => {
7
+ value.stopAnimation();
8
+ if (durationMs === 0) {
9
+ value.setValue(target);
10
+ return undefined;
11
+ }
12
+ const animation = Animated.timing(value, {
13
+ toValue: target,
14
+ duration: durationMs,
15
+ easing: resolveGameEntityEasing(easing),
16
+ useNativeDriver: false,
17
+ });
18
+ animation.start();
19
+ return () => animation.stop();
20
+ }, [durationMs, easing, target, value]);
21
+ return value;
22
+ }
23
+ /*** Map serializable easing names onto React Native easing functions. */
24
+ function resolveGameEntityEasing(easing) {
25
+ if (easing === 'ease-in')
26
+ return Easing.in(Easing.ease);
27
+ if (easing === 'ease-out')
28
+ return Easing.out(Easing.ease);
29
+ if (easing === 'ease-in-out')
30
+ return Easing.inOut(Easing.ease);
31
+ return Easing.linear;
32
+ }
33
+ //# sourceMappingURL=useAnimatedGameEntityValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAnimatedGameEntityValue.js","sourceRoot":"","sources":["../../../../src/features/game/utils/useAnimatedGameEntityValue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAIhD,wGAAwG;AACxG,MAAM,UAAU,0BAA0B,CACxC,MAAc,EACd,UAAkB,EAClB,MAAwB;IAExB,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAEjE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,KAAK,CAAC,aAAa,EAAE,CAAC;QAEtB,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACrB,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACvB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE;YACvC,OAAO,EAAE,MAAM;YACf,QAAQ,EAAE,UAAU;YACpB,MAAM,EAAE,uBAAuB,CAAC,MAAM,CAAC;YACvC,eAAe,EAAE,KAAK;SACvB,CAAC,CAAC;QACH,SAAS,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAExC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,yEAAyE;AACzE,SAAS,uBAAuB,CAAC,MAAwB;IACvD,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,MAAM,KAAK,UAAU;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1D,IAAI,MAAM,KAAK,aAAa;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/D,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC","sourcesContent":["import React from 'react';\nimport { Animated, Easing } from 'react-native';\n\nimport type { GameEntityEasing } from '../../../types/gamePresentation';\n\n/*** Animate one bound numeric GameEntity presentation value toward its latest session-driven target. */\nexport function useAnimatedGameEntityValue(\n target: number,\n durationMs: number,\n easing: GameEntityEasing,\n): Animated.Value {\n const [value] = React.useState(() => new Animated.Value(target));\n\n React.useEffect(() => {\n value.stopAnimation();\n\n if (durationMs === 0) {\n value.setValue(target);\n return undefined;\n }\n\n const animation = Animated.timing(value, {\n toValue: target,\n duration: durationMs,\n easing: resolveGameEntityEasing(easing),\n useNativeDriver: false,\n });\n animation.start();\n return () => animation.stop();\n }, [durationMs, easing, target, value]);\n\n return value;\n}\n\n/*** Map serializable easing names onto React Native easing functions. */\nfunction resolveGameEntityEasing(easing: GameEntityEasing) {\n if (easing === 'ease-in') return Easing.in(Easing.ease);\n if (easing === 'ease-out') return Easing.out(Easing.ease);\n if (easing === 'ease-in-out') return Easing.inOut(Easing.ease);\n return Easing.linear;\n}\n"]}
@@ -0,0 +1,16 @@
1
+ import { Animated } from 'react-native';
2
+ import type { GameEntityProps } from '../../../types/gamePresentation';
3
+ /*** Compose bound GameEntity values with optional relative presentation motion. */
4
+ export declare function useGameEntityAnimatedStyle(input: GameEntityProps): {
5
+ left: Animated.AnimatedInterpolation<string | number>;
6
+ top: Animated.AnimatedInterpolation<string | number>;
7
+ opacity: Animated.AnimatedInterpolation<string | number>;
8
+ transform: ({
9
+ scale: Animated.AnimatedAddition<string | number>;
10
+ rotate?: undefined;
11
+ } | {
12
+ rotate: Animated.AnimatedInterpolation<string | number>;
13
+ scale?: undefined;
14
+ })[];
15
+ };
16
+ //# sourceMappingURL=useGameEntityAnimatedStyle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGameEntityAnimatedStyle.d.ts","sourceRoot":"","sources":["../../../../src/features/game/utils/useGameEntityAnimatedStyle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAevE,mFAAmF;AACnF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,eAAe;;;;;;;;;;;EAyBhE"}