@pretty-chitty/core 1.1.2 → 1.2.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 (410) hide show
  1. package/dist/components/BottomBarButton.d.ts +2 -1
  2. package/dist/components/BottomBarButton.d.ts.map +1 -1
  3. package/dist/components/BottomBarButton.js +2 -1
  4. package/dist/components/BottomBarButton.js.map +1 -1
  5. package/dist/components/ClientTrustMatchViewer.d.ts +4 -1
  6. package/dist/components/ClientTrustMatchViewer.d.ts.map +1 -1
  7. package/dist/components/ClientTrustMatchViewer.js +11 -4
  8. package/dist/components/ClientTrustMatchViewer.js.map +1 -1
  9. package/dist/components/ContextGalleryDisplay.js +1 -1
  10. package/dist/components/ContextGalleryDisplay.js.map +1 -1
  11. package/dist/components/DemoWrapper.d.ts +9 -0
  12. package/dist/components/DemoWrapper.d.ts.map +1 -0
  13. package/dist/components/DemoWrapper.js +76 -0
  14. package/dist/components/DemoWrapper.js.map +1 -0
  15. package/dist/components/FullScreenGalleryDisplay.d.ts +2 -0
  16. package/dist/components/FullScreenGalleryDisplay.d.ts.map +1 -0
  17. package/dist/components/FullScreenGalleryDisplay.js +56 -0
  18. package/dist/components/FullScreenGalleryDisplay.js.map +1 -0
  19. package/dist/components/Gallery/AnimationController.d.ts +19 -0
  20. package/dist/components/Gallery/AnimationController.d.ts.map +1 -0
  21. package/dist/components/Gallery/AnimationController.js +81 -0
  22. package/dist/components/Gallery/AnimationController.js.map +1 -0
  23. package/dist/components/Gallery/BuiltItem.d.ts +58 -0
  24. package/dist/components/Gallery/BuiltItem.d.ts.map +1 -0
  25. package/dist/components/Gallery/BuiltItem.js +301 -0
  26. package/dist/components/Gallery/BuiltItem.js.map +1 -0
  27. package/dist/components/Gallery/CameraManager.d.ts +14 -0
  28. package/dist/components/Gallery/CameraManager.d.ts.map +1 -0
  29. package/dist/components/Gallery/CameraManager.js +41 -0
  30. package/dist/components/Gallery/CameraManager.js.map +1 -0
  31. package/dist/components/Gallery/GalleryController.d.ts +30 -0
  32. package/dist/components/Gallery/GalleryController.d.ts.map +1 -0
  33. package/dist/components/Gallery/GalleryController.js +134 -0
  34. package/dist/components/Gallery/GalleryController.js.map +1 -0
  35. package/dist/components/Gallery/GalleryViewer.d.ts +18 -0
  36. package/dist/components/Gallery/GalleryViewer.d.ts.map +1 -0
  37. package/dist/components/Gallery/GalleryViewer.js +141 -0
  38. package/dist/components/Gallery/GalleryViewer.js.map +1 -0
  39. package/dist/components/Gallery/LayoutManager.d.ts +49 -0
  40. package/dist/components/Gallery/LayoutManager.d.ts.map +1 -0
  41. package/dist/components/Gallery/LayoutManager.js +129 -0
  42. package/dist/components/Gallery/LayoutManager.js.map +1 -0
  43. package/dist/components/Gallery/constants.d.ts +13 -0
  44. package/dist/components/Gallery/constants.d.ts.map +1 -0
  45. package/dist/components/Gallery/constants.js +13 -0
  46. package/dist/components/Gallery/constants.js.map +1 -0
  47. package/dist/components/Gallery/index.d.ts +3 -0
  48. package/dist/components/Gallery/index.d.ts.map +1 -0
  49. package/dist/components/Gallery/index.js +2 -0
  50. package/dist/components/Gallery/index.js.map +1 -0
  51. package/dist/components/Gallery/types.d.ts +45 -0
  52. package/dist/components/Gallery/types.d.ts.map +1 -0
  53. package/dist/components/Gallery/types.js +2 -0
  54. package/dist/components/Gallery/types.js.map +1 -0
  55. package/dist/components/GalleryPlayground.js +1 -1
  56. package/dist/components/GalleryPlayground.js.map +1 -1
  57. package/dist/components/GalleryViewer.d.ts +2 -47
  58. package/dist/components/GalleryViewer.d.ts.map +1 -1
  59. package/dist/components/GalleryViewer.js +3 -569
  60. package/dist/components/GalleryViewer.js.map +1 -1
  61. package/dist/components/GameDesigner.d.ts.map +1 -1
  62. package/dist/components/GameDesigner.js +13 -2
  63. package/dist/components/GameDesigner.js.map +1 -1
  64. package/dist/components/InlineGalleryDisplay.d.ts +2 -0
  65. package/dist/components/InlineGalleryDisplay.d.ts.map +1 -0
  66. package/dist/components/InlineGalleryDisplay.js +69 -0
  67. package/dist/components/InlineGalleryDisplay.js.map +1 -0
  68. package/dist/components/LiveButton.d.ts.map +1 -1
  69. package/dist/components/LiveButton.js +1 -1
  70. package/dist/components/LiveButton.js.map +1 -1
  71. package/dist/components/MatchViewer.d.ts +0 -1
  72. package/dist/components/MatchViewer.d.ts.map +1 -1
  73. package/dist/components/MatchViewer.js +20 -10
  74. package/dist/components/MatchViewer.js.map +1 -1
  75. package/dist/components/Panel/MultiPanel.d.ts.map +1 -1
  76. package/dist/components/Panel/MultiPanel.js +14 -7
  77. package/dist/components/Panel/MultiPanel.js.map +1 -1
  78. package/dist/components/Panel/PanelContents.d.ts +2 -1
  79. package/dist/components/Panel/PanelContents.d.ts.map +1 -1
  80. package/dist/components/Panel/PanelContents.js +16 -11
  81. package/dist/components/Panel/PanelContents.js.map +1 -1
  82. package/dist/components/Panel/SinglePanel.d.ts.map +1 -1
  83. package/dist/components/Panel/SinglePanel.js +4 -3
  84. package/dist/components/Panel/SinglePanel.js.map +1 -1
  85. package/dist/components/Panel/ViewerWrapper.d.ts +1 -3
  86. package/dist/components/Panel/ViewerWrapper.d.ts.map +1 -1
  87. package/dist/components/Panel/ViewerWrapper.js +2 -3
  88. package/dist/components/Panel/ViewerWrapper.js.map +1 -1
  89. package/dist/components/Playground.d.ts.map +1 -1
  90. package/dist/components/Playground.js +351 -50
  91. package/dist/components/Playground.js.map +1 -1
  92. package/dist/components/PromptControls.d.ts.map +1 -1
  93. package/dist/components/PromptControls.js +39 -6
  94. package/dist/components/PromptControls.js.map +1 -1
  95. package/dist/components/ServerTrustMatchViewer.d.ts +11 -0
  96. package/dist/components/ServerTrustMatchViewer.d.ts.map +1 -0
  97. package/dist/components/ServerTrustMatchViewer.js +26 -0
  98. package/dist/components/ServerTrustMatchViewer.js.map +1 -0
  99. package/dist/components/Viewer.d.ts.map +1 -1
  100. package/dist/components/Viewer.js +54 -14
  101. package/dist/components/Viewer.js.map +1 -1
  102. package/dist/game/Chit.d.ts +6 -2
  103. package/dist/game/Chit.d.ts.map +1 -1
  104. package/dist/game/Chit.js +40 -27
  105. package/dist/game/Chit.js.map +1 -1
  106. package/dist/game/ClientTimeState.d.ts +1 -0
  107. package/dist/game/ClientTimeState.d.ts.map +1 -1
  108. package/dist/game/ClientTimeState.js +4 -2
  109. package/dist/game/ClientTimeState.js.map +1 -1
  110. package/dist/game/ConnectionObject.js.map +1 -1
  111. package/dist/game/ConnectionTransport.js +0 -1
  112. package/dist/game/ConnectionTransport.js.map +1 -1
  113. package/dist/game/DropdownChit.js.map +1 -1
  114. package/dist/game/GalleryItemChitChildrenSource.d.ts +1 -0
  115. package/dist/game/GalleryItemChitChildrenSource.d.ts.map +1 -1
  116. package/dist/game/GalleryItemChitChildrenSource.js +1 -1
  117. package/dist/game/GalleryItemChitChildrenSource.js.map +1 -1
  118. package/dist/game/GalleryItemRawSource.d.ts +1 -0
  119. package/dist/game/GalleryItemRawSource.d.ts.map +1 -1
  120. package/dist/game/GalleryItemRawSource.js +1 -0
  121. package/dist/game/GalleryItemRawSource.js.map +1 -1
  122. package/dist/game/Game.d.ts +2 -1
  123. package/dist/game/Game.d.ts.map +1 -1
  124. package/dist/game/GameBagChit.js.map +1 -1
  125. package/dist/game/GameButton.d.ts +1 -0
  126. package/dist/game/GameButton.d.ts.map +1 -1
  127. package/dist/game/GameButton.js +2 -9
  128. package/dist/game/GameButton.js.map +1 -1
  129. package/dist/game/GameDeckChit.d.ts +6 -0
  130. package/dist/game/GameDeckChit.d.ts.map +1 -1
  131. package/dist/game/GameDeckChit.js +33 -6
  132. package/dist/game/GameDeckChit.js.map +1 -1
  133. package/dist/game/GameMetaData.d.ts +18 -0
  134. package/dist/game/GameMetaData.d.ts.map +1 -0
  135. package/dist/game/GameMetaData.js +2 -0
  136. package/dist/game/GameMetaData.js.map +1 -0
  137. package/dist/game/GameTheme.d.ts +11 -0
  138. package/dist/game/GameTheme.d.ts.map +1 -1
  139. package/dist/game/GameTheme.js +19 -5
  140. package/dist/game/GameTheme.js.map +1 -1
  141. package/dist/game/Match.d.ts +2 -1
  142. package/dist/game/Match.d.ts.map +1 -1
  143. package/dist/game/Match.js +4 -3
  144. package/dist/game/Match.js.map +1 -1
  145. package/dist/game/MatchStorage.d.ts +10 -0
  146. package/dist/game/MatchStorage.d.ts.map +1 -1
  147. package/dist/game/MatchStorage.js +29 -0
  148. package/dist/game/MatchStorage.js.map +1 -1
  149. package/dist/game/ModalState.d.ts +1 -0
  150. package/dist/game/ModalState.d.ts.map +1 -1
  151. package/dist/game/ModalState.js +1 -0
  152. package/dist/game/ModalState.js.map +1 -1
  153. package/dist/game/OrderedOutlet.d.ts.map +1 -1
  154. package/dist/game/OrderedOutlet.js +6 -10
  155. package/dist/game/OrderedOutlet.js.map +1 -1
  156. package/dist/game/Pick.d.ts +11 -1
  157. package/dist/game/Pick.d.ts.map +1 -1
  158. package/dist/game/Pick.js +83 -11
  159. package/dist/game/Pick.js.map +1 -1
  160. package/dist/game/PlayerChit.d.ts +2 -1
  161. package/dist/game/PlayerChit.d.ts.map +1 -1
  162. package/dist/game/PlayerChit.js +12 -2
  163. package/dist/game/PlayerChit.js.map +1 -1
  164. package/dist/game/PlayerInfo.d.ts +2 -1
  165. package/dist/game/PlayerInfo.d.ts.map +1 -1
  166. package/dist/game/PlayerInfo.js +18 -5
  167. package/dist/game/PlayerInfo.js.map +1 -1
  168. package/dist/game/PlayerPromptStatusChit.js +0 -2
  169. package/dist/game/PlayerPromptStatusChit.js.map +1 -1
  170. package/dist/game/Prompt.d.ts +1 -11
  171. package/dist/game/Prompt.d.ts.map +1 -1
  172. package/dist/game/Prompt.js +0 -36
  173. package/dist/game/Prompt.js.map +1 -1
  174. package/dist/game/RootChit.d.ts +4 -0
  175. package/dist/game/RootChit.d.ts.map +1 -1
  176. package/dist/game/RootChit.js +36 -3
  177. package/dist/game/RootChit.js.map +1 -1
  178. package/dist/game/SparkChit.js +0 -3
  179. package/dist/game/SparkChit.js.map +1 -1
  180. package/dist/game/Turn.d.ts +9 -8
  181. package/dist/game/Turn.d.ts.map +1 -1
  182. package/dist/game/Turn.js +34 -42
  183. package/dist/game/Turn.js.map +1 -1
  184. package/dist/game/TurnState.d.ts +3 -2
  185. package/dist/game/TurnState.d.ts.map +1 -1
  186. package/dist/game/TurnState.js +22 -4
  187. package/dist/game/TurnState.js.map +1 -1
  188. package/dist/game/badAiTransport/BadAIClientPrompts.d.ts +14 -0
  189. package/dist/game/badAiTransport/BadAIClientPrompts.d.ts.map +1 -0
  190. package/dist/game/badAiTransport/BadAIClientPrompts.js +50 -0
  191. package/dist/game/badAiTransport/BadAIClientPrompts.js.map +1 -0
  192. package/dist/game/clientTransport/ClientPrompts.js +0 -2
  193. package/dist/game/clientTransport/ClientPrompts.js.map +1 -1
  194. package/dist/game/clientTransport/ClientStatus.js +0 -1
  195. package/dist/game/clientTransport/ClientStatus.js.map +1 -1
  196. package/dist/game/clientTransport/ClientTime.js +1 -3
  197. package/dist/game/clientTransport/ClientTime.js.map +1 -1
  198. package/dist/game/serverTransport/ServerPrompts.js +0 -1
  199. package/dist/game/serverTransport/ServerPrompts.js.map +1 -1
  200. package/dist/game/serverTransport/ServerStatus.js +0 -1
  201. package/dist/game/serverTransport/ServerStatus.js.map +1 -1
  202. package/dist/game/serverTransport/ServerTime.js +1 -2
  203. package/dist/game/serverTransport/ServerTime.js.map +1 -1
  204. package/dist/hooks/useButtonGalleriesOptions.d.ts +4 -0
  205. package/dist/hooks/useButtonGalleriesOptions.d.ts.map +1 -0
  206. package/dist/hooks/useButtonGalleriesOptions.js +7 -0
  207. package/dist/hooks/useButtonGalleriesOptions.js.map +1 -0
  208. package/dist/hooks/useEventChannelState.js +1 -1
  209. package/dist/hooks/useEventChannelState.js.map +1 -1
  210. package/dist/hooks/useLoadingStates.d.ts +17 -0
  211. package/dist/hooks/useLoadingStates.d.ts.map +1 -0
  212. package/dist/hooks/useLoadingStates.js +44 -0
  213. package/dist/hooks/useLoadingStates.js.map +1 -0
  214. package/dist/hooks/useModalState.d.ts +2 -1
  215. package/dist/hooks/useModalState.d.ts.map +1 -1
  216. package/dist/hooks/useModalState.js +2 -2
  217. package/dist/hooks/useModalState.js.map +1 -1
  218. package/dist/hooks/usePanelPositioning.d.ts +0 -1
  219. package/dist/hooks/usePanelPositioning.d.ts.map +1 -1
  220. package/dist/hooks/usePanelPositioning.js.map +1 -1
  221. package/dist/hooks/useTimeController.js.map +1 -1
  222. package/dist/hooks/useWebGlRenderer.js +0 -2
  223. package/dist/hooks/useWebGlRenderer.js.map +1 -1
  224. package/dist/index.d.ts +7 -5
  225. package/dist/index.d.ts.map +1 -1
  226. package/dist/index.js +17 -1
  227. package/dist/index.js.map +1 -1
  228. package/dist/rendering/CameraSpec.js.map +1 -1
  229. package/dist/rendering/CameraWrapperPerspective.d.ts.map +1 -1
  230. package/dist/rendering/CameraWrapperPerspective.js +1 -2
  231. package/dist/rendering/CameraWrapperPerspective.js.map +1 -1
  232. package/dist/rendering/ChitGalleryItemInstance.d.ts +2 -0
  233. package/dist/rendering/ChitGalleryItemInstance.d.ts.map +1 -1
  234. package/dist/rendering/ChitGalleryItemInstance.js +0 -12
  235. package/dist/rendering/ChitGalleryItemInstance.js.map +1 -1
  236. package/dist/rendering/ChitRenderInstance.d.ts +13 -2
  237. package/dist/rendering/ChitRenderInstance.d.ts.map +1 -1
  238. package/dist/rendering/ChitRenderInstance.js +95 -52
  239. package/dist/rendering/ChitRenderInstance.js.map +1 -1
  240. package/dist/rendering/ChitRenderSpec.d.ts +3 -0
  241. package/dist/rendering/ChitRenderSpec.d.ts.map +1 -1
  242. package/dist/rendering/ChitRenderSpec.js +1 -11
  243. package/dist/rendering/ChitRenderSpec.js.map +1 -1
  244. package/dist/rendering/HighlightSpec.js +0 -2
  245. package/dist/rendering/HighlightSpec.js.map +1 -1
  246. package/dist/rendering/LightSpec.js +1 -0
  247. package/dist/rendering/LightSpec.js.map +1 -1
  248. package/dist/rendering/RootChitRenderInstance.d.ts +5 -2
  249. package/dist/rendering/RootChitRenderInstance.d.ts.map +1 -1
  250. package/dist/rendering/RootChitRenderInstance.js +76 -17
  251. package/dist/rendering/RootChitRenderInstance.js.map +1 -1
  252. package/dist/rendering/Splay.js.map +1 -1
  253. package/dist/rendering/SplayCounter.d.ts.map +1 -1
  254. package/dist/rendering/SplayCounter.js +1 -1
  255. package/dist/rendering/SplayCounter.js.map +1 -1
  256. package/dist/rendering/TextureReferenceCounter.d.ts +1 -1
  257. package/dist/rendering/TextureReferenceCounter.d.ts.map +1 -1
  258. package/dist/rendering/TextureReferenceCounter.js +10 -10
  259. package/dist/rendering/TextureReferenceCounter.js.map +1 -1
  260. package/dist/rendering/outline/DepthVisualizationPass.js +0 -3
  261. package/dist/rendering/outline/DepthVisualizationPass.js.map +1 -1
  262. package/dist/rendering/outline/EffectComposer.js +0 -9
  263. package/dist/rendering/outline/EffectComposer.js.map +1 -1
  264. package/dist/rendering/outline/FullScreenQuad.js +0 -1
  265. package/dist/rendering/outline/FullScreenQuad.js.map +1 -1
  266. package/dist/rendering/outline/IDBasedOutlinePass.js +0 -19
  267. package/dist/rendering/outline/IDBasedOutlinePass.js.map +1 -1
  268. package/dist/rendering/outline/OutputPass.js +0 -5
  269. package/dist/rendering/outline/OutputPass.js.map +1 -1
  270. package/dist/rendering/outline/RenderPass.js +0 -2
  271. package/dist/rendering/outline/RenderPass.js.map +1 -1
  272. package/dist/rendering/outline/SceneWrapper.js +0 -2
  273. package/dist/rendering/outline/SceneWrapper.js.map +1 -1
  274. package/dist/rendering/outline/ShaderPass.js +0 -4
  275. package/dist/rendering/outline/ShaderPass.js.map +1 -1
  276. package/dist/rendering/outline/passes/DebugIDMappingPass.js +0 -2
  277. package/dist/rendering/outline/passes/DebugIDMappingPass.js.map +1 -1
  278. package/dist/rendering/outline/passes/DepthOcclusionPass.js +1 -3
  279. package/dist/rendering/outline/passes/DepthOcclusionPass.js.map +1 -1
  280. package/dist/rendering/outline/passes/InterMeshEdgeDetectionPass.js +0 -3
  281. package/dist/rendering/outline/passes/InterMeshEdgeDetectionPass.js.map +1 -1
  282. package/dist/rendering/outline/types.js.map +1 -1
  283. package/dist/utilities/Annotations.d.ts +59 -0
  284. package/dist/utilities/Annotations.d.ts.map +1 -1
  285. package/dist/utilities/Annotations.js +63 -0
  286. package/dist/utilities/Annotations.js.map +1 -1
  287. package/dist/utilities/BaseTable.js +0 -5
  288. package/dist/utilities/BaseTable.js.map +1 -1
  289. package/dist/utilities/CanvasStack/CanvasOperations.d.ts +10 -1
  290. package/dist/utilities/CanvasStack/CanvasOperations.d.ts.map +1 -1
  291. package/dist/utilities/CanvasStack/CanvasOperations.js +8 -0
  292. package/dist/utilities/CanvasStack/CanvasOperations.js.map +1 -1
  293. package/dist/utilities/CanvasStack/CanvasStack.js +0 -4
  294. package/dist/utilities/CanvasStack/CanvasStack.js.map +1 -1
  295. package/dist/utilities/CanvasStack/ImageCache.js +0 -4
  296. package/dist/utilities/CanvasStack/ImageCache.js.map +1 -1
  297. package/dist/utilities/CanvasStack/ReactCanvas.d.ts +4 -2
  298. package/dist/utilities/CanvasStack/ReactCanvas.d.ts.map +1 -1
  299. package/dist/utilities/CanvasStack/ReactCanvas.js +5 -2
  300. package/dist/utilities/CanvasStack/ReactCanvas.js.map +1 -1
  301. package/dist/utilities/CanvasStack/RichTextRenderer.d.ts.map +1 -1
  302. package/dist/utilities/CanvasStack/RichTextRenderer.js +12 -4
  303. package/dist/utilities/CanvasStack/RichTextRenderer.js.map +1 -1
  304. package/dist/utilities/Dice.js.map +1 -1
  305. package/dist/utilities/EventChannel.d.ts.map +1 -1
  306. package/dist/utilities/EventChannel.js +2 -3
  307. package/dist/utilities/EventChannel.js.map +1 -1
  308. package/dist/utilities/GlbLoader.d.ts +15 -0
  309. package/dist/utilities/GlbLoader.d.ts.map +1 -0
  310. package/dist/utilities/GlbLoader.js +212 -0
  311. package/dist/utilities/GlbLoader.js.map +1 -0
  312. package/dist/utilities/LayoutHelper.js +23 -2
  313. package/dist/utilities/LayoutHelper.js.map +1 -1
  314. package/dist/utilities/ObjectWithProps.d.ts.map +1 -1
  315. package/dist/utilities/ObjectWithProps.js +32 -3
  316. package/dist/utilities/ObjectWithProps.js.map +1 -1
  317. package/dist/utilities/ParameterizedCanvas.js +1 -1
  318. package/dist/utilities/ParameterizedCanvas.js.map +1 -1
  319. package/dist/utilities/StaticImage.js +0 -1
  320. package/dist/utilities/StaticImage.js.map +1 -1
  321. package/dist/utilities/ThreeDisposer.js +0 -1
  322. package/dist/utilities/ThreeDisposer.js.map +1 -1
  323. package/package.json +6 -5
  324. package/src/library/components/BottomBarButton.tsx +3 -0
  325. package/src/library/components/ClientTrustMatchViewer.tsx +23 -8
  326. package/src/library/components/ContextGalleryDisplay.tsx +2 -2
  327. package/src/library/components/DemoWrapper.tsx +113 -0
  328. package/src/library/components/{GalleryDisplay.tsx → FullScreenGalleryDisplay.tsx} +28 -2
  329. package/src/library/components/Gallery/AnimationController.ts +110 -0
  330. package/src/library/components/Gallery/BuiltItem.ts +385 -0
  331. package/src/library/components/Gallery/CameraManager.ts +54 -0
  332. package/src/library/components/Gallery/GalleryController.ts +193 -0
  333. package/src/library/components/Gallery/GalleryViewer.tsx +211 -0
  334. package/src/library/components/Gallery/LayoutManager.ts +166 -0
  335. package/src/library/components/Gallery/constants.ts +12 -0
  336. package/src/library/components/Gallery/index.ts +2 -0
  337. package/src/library/components/Gallery/types.ts +55 -0
  338. package/src/library/components/GalleryPlayground.tsx +1 -1
  339. package/src/library/components/GalleryViewer.tsx +4 -773
  340. package/src/library/components/GameDesigner.tsx +21 -4
  341. package/src/library/components/InlineGalleryDisplay.tsx +101 -0
  342. package/src/library/components/LiveButton.tsx +2 -1
  343. package/src/library/components/MatchViewer.tsx +32 -14
  344. package/src/library/components/Panel/MultiPanel.tsx +20 -8
  345. package/src/library/components/Panel/PanelContents.tsx +17 -12
  346. package/src/library/components/Panel/SinglePanel.tsx +5 -4
  347. package/src/library/components/Panel/ViewerWrapper.tsx +0 -5
  348. package/src/library/components/Playground.tsx +692 -119
  349. package/src/library/components/PromptControls.tsx +61 -8
  350. package/src/library/components/ServerTrustMatchViewer.tsx +53 -0
  351. package/src/library/components/Viewer.tsx +60 -20
  352. package/src/library/game/Chit.ts +46 -6
  353. package/src/library/game/ClientTimeState.ts +5 -1
  354. package/src/library/game/GalleryItemChitChildrenSource.ts +2 -0
  355. package/src/library/game/GalleryItemRawSource.ts +2 -0
  356. package/src/library/game/Game.ts +3 -1
  357. package/src/library/game/GameButton.ts +3 -0
  358. package/src/library/game/GameDeckChit.ts +36 -5
  359. package/src/library/game/GameMetaData.ts +19 -0
  360. package/src/library/game/GameTheme.ts +23 -5
  361. package/src/library/game/Match.ts +4 -3
  362. package/src/library/game/MatchStorage.ts +37 -0
  363. package/src/library/game/ModalState.ts +1 -0
  364. package/src/library/game/OrderedOutlet.ts +6 -6
  365. package/src/library/game/Pick.ts +98 -2
  366. package/src/library/game/PlayerChit.ts +13 -1
  367. package/src/library/game/PlayerInfo.ts +22 -3
  368. package/src/library/game/Prompt.ts +1 -36
  369. package/src/library/game/RootChit.ts +41 -1
  370. package/src/library/game/Turn.ts +37 -40
  371. package/src/library/game/TurnState.ts +22 -3
  372. package/src/library/game/badAiTransport/BadAIClientPrompts.ts +60 -0
  373. package/src/library/game/clientTransport/ClientTime.ts +1 -1
  374. package/src/library/game/serverTransport/ServerTime.ts +2 -2
  375. package/src/library/hooks/useButtonGalleriesOptions.tsx +9 -0
  376. package/src/library/hooks/useEventChannelState.ts +1 -1
  377. package/src/library/hooks/useLoadingStates.tsx +55 -0
  378. package/src/library/hooks/useModalState.tsx +2 -2
  379. package/src/library/hooks/usePanelPositioning.tsx +0 -1
  380. package/src/library/index.ts +21 -1
  381. package/src/library/rendering/CameraWrapperPerspective.ts +10 -12
  382. package/src/library/rendering/ChitGalleryItemInstance.ts +2 -0
  383. package/src/library/rendering/ChitRenderInstance.ts +119 -61
  384. package/src/library/rendering/ChitRenderSpec.ts +4 -0
  385. package/src/library/rendering/RootChitRenderInstance.ts +87 -13
  386. package/src/library/rendering/SplayCounter.tsx +2 -1
  387. package/src/library/rendering/TextureReferenceCounter.ts +9 -9
  388. package/src/library/rendering/outline/passes/DepthOcclusionPass.ts +1 -1
  389. package/src/library/utilities/Annotations.ts +99 -0
  390. package/src/library/utilities/CanvasStack/CanvasOperations.tsx +19 -1
  391. package/src/library/utilities/CanvasStack/ReactCanvas.tsx +10 -3
  392. package/src/library/utilities/CanvasStack/RichTextRenderer.ts +14 -4
  393. package/src/library/utilities/EventChannel.ts +2 -4
  394. package/src/library/utilities/GlbLoader.ts +292 -0
  395. package/src/library/utilities/LayoutHelper.ts +28 -2
  396. package/src/library/utilities/ObjectWithProps.ts +27 -3
  397. package/dist/components/GalleryDisplay.d.ts +0 -2
  398. package/dist/components/GalleryDisplay.d.ts.map +0 -1
  399. package/dist/components/GalleryDisplay.js +0 -42
  400. package/dist/components/GalleryDisplay.js.map +0 -1
  401. package/dist/utilities/OutlineCanvas.d.ts +0 -12
  402. package/dist/utilities/OutlineCanvas.d.ts.map +0 -1
  403. package/dist/utilities/OutlineCanvas.js +0 -31
  404. package/dist/utilities/OutlineCanvas.js.map +0 -1
  405. package/dist/utilities/OutlineGeometry.d.ts +0 -3
  406. package/dist/utilities/OutlineGeometry.d.ts.map +0 -1
  407. package/dist/utilities/OutlineGeometry.js +0 -57
  408. package/dist/utilities/OutlineGeometry.js.map +0 -1
  409. package/src/library/utilities/OutlineCanvas.tsx +0 -45
  410. package/src/library/utilities/OutlineGeometry.ts +0 -69
@@ -1,570 +1,4 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { AmbientLight, Box3, DirectionalLight, Fog, Group, Mesh, PerspectiveCamera, PlaneGeometry, Raycaster, Scene, Vector3, } from "three";
3
- import { Box } from "@mui/material";
4
- import { useEffect, useRef, useState } from "react";
5
- import Hammer from "@egjs/hammerjs";
6
- import { useWebGlRenderer } from "../hooks/useWebGlRenderer";
7
- import { Easing, Tween } from "@tweenjs/tween.js";
8
- import { addWheelListener, removeWheelListener } from "wheel";
9
- import { CanvasStack } from "../utilities/CanvasStack/CanvasStack";
10
- import { ColorCanvasOperation, LayeredCanvasOperation, MarkdownCanvasOperation, PadCanvasOperation, } from "../utilities/CanvasStack/CanvasOperations";
11
- import { useGameTheme } from "../hooks/useGameTheme";
12
- import { SceneWrapper } from "../rendering/outline";
13
- import { requestSharedAnimationFrame } from "../utilities/RequestSharedAnimationFrame";
14
- import { TextureReferenaceCounter } from "../rendering/TextureReferenceCounter";
15
- let ID_COUNTER = 1;
16
- const SCALE_FACTOR = 20;
17
- class GalleryController {
18
- constructor(sceneWrapper, theme, offsetAngle, fov) {
19
- this.sceneWrapper = sceneWrapper;
20
- this.theme = theme;
21
- this.offsetAngle = offsetAngle;
22
- this.camera = undefined;
23
- this.w = 100 / SCALE_FACTOR;
24
- this.h = 100 / SCALE_FACTOR;
25
- this.itemWidth = 100 / SCALE_FACTOR;
26
- this.itemHeight = 100 / SCALE_FACTOR;
27
- this.tweenDuration = 250;
28
- this.showSummary = true;
29
- this.changed = false;
30
- this.itemSpacing = 100 / SCALE_FACTOR;
31
- this.itemsPerPage = 1;
32
- this.frontStageWidth = 1;
33
- this.offsetX = 0;
34
- this.light = undefined;
35
- this.effectiveItemHeight = 0;
36
- this.baseCameraZ = 500 / SCALE_FACTOR;
37
- this.items = [];
38
- this.leavingItems = [];
39
- this.itemLookup = {};
40
- this.tween = undefined;
41
- this._rawItems = [];
42
- this.camera = new PerspectiveCamera(fov, 1, 0.1, 10000 / SCALE_FACTOR);
43
- this.camera.position.z = 500 / SCALE_FACTOR;
44
- this.light = new DirectionalLight(0xffffff, 1);
45
- this.light.position.copy(this.camera.position);
46
- sceneWrapper.scene.add(this.light);
47
- const ambient = new AmbientLight(0xffffff, 1);
48
- sceneWrapper.scene.add(ambient);
49
- }
50
- getRootGroup() {
51
- return this.sceneWrapper.scene;
52
- }
53
- markHasChange() {
54
- this.changed = true;
55
- }
56
- updateEffectiveItemHeightAndCamera() {
57
- // Calculate the tallest actual mesh height (capped at itemHeight)
58
- const tallestMeshHeight = Math.max(...this.items.map((item) => item.height), 0);
59
- const newEffectiveItemHeight = Math.min(tallestMeshHeight, this.itemHeight);
60
- // Check if effective height changed - if so, need to reposition all summaries
61
- const heightChanged = Math.abs(newEffectiveItemHeight - this.effectiveItemHeight) > 0.001;
62
- this.effectiveItemHeight = newEffectiveItemHeight;
63
- if (heightChanged) {
64
- this.items.forEach((item) => {
65
- if (item.meshToShowOrHideIfCentered) {
66
- // Reposition summary based on new effective height
67
- const summaryHeight = item.summaryHeight - this.theme.spacing / SCALE_FACTOR;
68
- item.meshToShowOrHideIfCentered.position.y =
69
- -this.effectiveItemHeight * 0.5 - summaryHeight / 2 - this.theme.spacing / SCALE_FACTOR;
70
- }
71
- });
72
- }
73
- // Calculate tallest summary
74
- const tallestSummaryHeight = Math.max(...this.items.map((item) => item.summaryHeight), 0);
75
- // Vertical offset is based on effective item height + tallest summary
76
- const verticalOffset = -tallestSummaryHeight / 2;
77
- // Update camera position using the base Z distance
78
- this.camera.position.z = Math.cos(this.offsetAngle) * this.baseCameraZ;
79
- this.camera.position.y = Math.sin(this.offsetAngle) * this.baseCameraZ + verticalOffset;
80
- this.camera.lookAt(new Vector3(this.camera.position.x, verticalOffset, 0));
81
- // Update light to match camera
82
- this.light.position.copy(this.camera.position);
83
- this.light.lookAt(0, verticalOffset, 0);
84
- this.changed = true;
85
- }
86
- setSize(w, h, itemWidth, itemHeight, itemSpacing) {
87
- this.changed = true;
88
- this.w = w / SCALE_FACTOR;
89
- this.h = h / SCALE_FACTOR;
90
- this.itemHeight = Math.min(itemHeight, h - itemSpacing) / SCALE_FACTOR;
91
- this.itemWidth = Math.min(itemWidth, w - itemSpacing) / SCALE_FACTOR;
92
- this.itemSpacing = itemSpacing / SCALE_FACTOR;
93
- this.itemsPerPage = Math.floor((w - itemSpacing * 2) / (this.itemWidth * SCALE_FACTOR + itemSpacing));
94
- this.frontStageWidth =
95
- (this.itemsPerPage * (this.itemWidth * SCALE_FACTOR + itemSpacing)) / SCALE_FACTOR - this.itemSpacing;
96
- this.camera.aspect = w / h;
97
- this.camera.updateProjectionMatrix();
98
- // Calculate base camera Z distance from the field of view
99
- const aspect = this.camera.aspect;
100
- const vFov = (this.camera.fov * Math.PI) / 180;
101
- const hFov = 2 * Math.atan(aspect * Math.tan(vFov / 2));
102
- this.baseCameraZ = w / SCALE_FACTOR / (2 * Math.tan(hFov / 2));
103
- this.camera.position.x = 0;
104
- // Set up fog and camera clipping planes
105
- this.sceneWrapper.scene.fog = new Fog(0x000000, this.baseCameraZ, this.baseCameraZ + (w / SCALE_FACTOR) * 2);
106
- this.camera.near = this.baseCameraZ * 0.5;
107
- this.camera.far = this.baseCameraZ + (w / SCALE_FACTOR) * 3;
108
- this.camera.updateProjectionMatrix();
109
- // reset the world
110
- this.setItems(this.items.map((item) => item.item));
111
- this.pan(0, true);
112
- }
113
- getItemAtPosition(x, y) {
114
- const paddingX = (this.w - this.frontStageWidth) / 2;
115
- const index = (-this.offsetX + x / SCALE_FACTOR - paddingX) / (this.itemWidth + this.itemSpacing);
116
- const item = this.items.find((item) => index > item.index && Math.abs(index - item.index) < 1);
117
- if (!item) {
118
- return null;
119
- }
120
- if (index - item.index > 1 - this.itemSpacing / (this.itemWidth + this.itemSpacing)) {
121
- return null;
122
- }
123
- const ndc = new Vector3((x / SCALE_FACTOR / this.w) * 2 - 1, -(y / SCALE_FACTOR / this.h) * 2 + 1, 0.5);
124
- ndc.unproject(this.camera);
125
- const raycaster = new Raycaster(this.camera.position, ndc.sub(this.camera.position).normalize());
126
- // Create a combined bounding box from mesh to summary (if present)
127
- const combinedBox = new Box3().setFromObject(item.mesh);
128
- if (item.meshToShowOrHideIfCentered) {
129
- const summaryBox = new Box3().setFromObject(item.meshToShowOrHideIfCentered);
130
- combinedBox.union(summaryBox);
131
- }
132
- const hit = raycaster.ray.intersectBox(combinedBox, new Vector3());
133
- if (!hit) {
134
- return null;
135
- }
136
- return item.item;
137
- }
138
- render() {
139
- let changed = this.changed;
140
- if (this.tween) {
141
- this.tween.update();
142
- changed = true;
143
- }
144
- this.items.forEach((item) => {
145
- if (item.tween) {
146
- item.tween.update();
147
- changed = true;
148
- }
149
- if (item.enteredTween) {
150
- item.enteredTween.update();
151
- changed = true;
152
- }
153
- });
154
- this.leavingItems.forEach((item) => {
155
- if (item.enteredTween) {
156
- item.enteredTween.update();
157
- }
158
- changed = true;
159
- });
160
- this.changed = false;
161
- return changed;
162
- }
163
- isAnimating() {
164
- return this.tween !== undefined;
165
- }
166
- stop() {
167
- this.tween?.stop();
168
- this.tween = undefined;
169
- }
170
- pan(deltaX, animate = false) {
171
- const max = 0;
172
- const min = -(this.items.length - Math.min(this.items.length, this.itemsPerPage)) * (this.itemWidth + this.itemSpacing);
173
- this.changed = true;
174
- if (this.tween) {
175
- this.tween.stop();
176
- this.tween = undefined;
177
- }
178
- if (!animate) {
179
- this.offsetX += deltaX / SCALE_FACTOR;
180
- if (this.offsetX > max + this.w / 2) {
181
- this.offsetX = max + this.w / 2;
182
- }
183
- if (this.offsetX < min - this.w / 2) {
184
- this.offsetX = min - this.w / 2;
185
- }
186
- this.items.forEach((item) => this.positionItem(item));
187
- }
188
- else {
189
- // lock the offset to the nearest item
190
- let target = this.offsetX + deltaX / SCALE_FACTOR;
191
- const itemIndex = Math.round(target / (this.itemWidth + this.itemSpacing));
192
- target = itemIndex * (this.itemWidth + this.itemSpacing);
193
- if (target > max) {
194
- target = max;
195
- }
196
- if (target < min) {
197
- target = min;
198
- }
199
- const duration = 0.0001 + Math.min(750, Math.abs(target - this.offsetX));
200
- this.tween = new Tween({ x: this.offsetX })
201
- .onUpdate(({ x }) => {
202
- this.offsetX = x;
203
- this.items.forEach((item) => this.positionItem(item));
204
- })
205
- .easing(Easing.Quadratic.Out)
206
- .to({ x: target }, duration)
207
- .onComplete(() => {
208
- this.tween = undefined;
209
- })
210
- .start();
211
- }
212
- }
213
- positionItem(item) {
214
- const index = item.index;
215
- const initialOffset = -(this.frontStageWidth / 2 - this.itemWidth / 2);
216
- const group = item.group;
217
- group.position.x = initialOffset + index * (this.itemWidth + this.itemSpacing) + this.offsetX;
218
- group.position.y = (1 - item.enteredAmount) * -this.h; // 5 is height of display?
219
- const zFactor = 3;
220
- const largestX = initialOffset + (this.itemsPerPage - 1) * (this.itemWidth + this.itemSpacing);
221
- if (group.position.x > largestX) {
222
- const overshot = group.position.x - largestX;
223
- group.position.x = largestX + Math.pow(overshot, 0.94);
224
- group.position.z = -overshot * zFactor;
225
- group.rotation.x = -overshot / (3000 / SCALE_FACTOR) - this.offsetAngle;
226
- if (item.meshToShowOrHideIfCentered) {
227
- item.meshToShowOrHideIfCentered.position.x = overshot * 3;
228
- item.meshToShowOrHideIfCentered.position.z = -overshot * 3;
229
- }
230
- }
231
- else if (group.position.x < initialOffset) {
232
- const overshot = Math.abs(initialOffset - group.position.x);
233
- group.position.x = initialOffset - Math.pow(overshot, 0.94);
234
- group.position.z = -overshot * zFactor;
235
- group.rotation.x = -overshot / (3000 / SCALE_FACTOR) - this.offsetAngle;
236
- if (item.meshToShowOrHideIfCentered) {
237
- item.meshToShowOrHideIfCentered.position.x = -overshot * 3;
238
- item.meshToShowOrHideIfCentered.position.z = -overshot * 3;
239
- }
240
- }
241
- else {
242
- if (item.meshToShowOrHideIfCentered) {
243
- item.meshToShowOrHideIfCentered.position.x = 0;
244
- item.meshToShowOrHideIfCentered.position.z = 0;
245
- }
246
- group.position.z = 0;
247
- group.rotation.x = -this.offsetAngle;
248
- }
249
- // group.rotation.x -= Math.min(1, item.depth / this.w);
250
- group.position.add(item.center);
251
- }
252
- scaleItem(item, maximumWidth, maximumHeight) {
253
- if (item.mesh) {
254
- item.mesh.removeFromParent();
255
- }
256
- item.mesh = item.item.createMesh(this.sceneWrapper);
257
- const box3 = new Box3();
258
- box3.expandByObject(item.mesh);
259
- if (!box3.isEmpty()) {
260
- const size = box3.getSize(new Vector3());
261
- const center = box3.getCenter(new Vector3());
262
- const xScale = Math.min(this.itemWidth, (maximumWidth ?? Number.MAX_SAFE_INTEGER) / SCALE_FACTOR) / size.x;
263
- const yScale = Math.min(this.itemHeight, (maximumHeight ?? Number.MAX_SAFE_INTEGER) / SCALE_FACTOR) / size.y;
264
- const scale = Math.min(xScale, yScale);
265
- item.mesh.scale.set(scale, scale, scale);
266
- item.mesh.updateMatrix();
267
- item.center = center.multiplyScalar(scale).negate();
268
- item.center.z = 0; // i want to "floor" everything... but that is hard?
269
- item.height = size.y * scale;
270
- item.depth = size.z * scale;
271
- }
272
- item.group.add(item.mesh);
273
- }
274
- updateHelpText(item) {
275
- const summary = item.item.summary;
276
- if (!summary || !this.showSummary) {
277
- item.summaryHeight = 0;
278
- return;
279
- }
280
- const height = (this.h - this.itemHeight) / 2 - this.theme.spacing * 2;
281
- const specs = {
282
- align: "center",
283
- color: this.theme.dialogForegroundColor,
284
- ...(item.item.summaryRenderingOptions ?? {}),
285
- };
286
- if (!specs.fontSize) {
287
- specs.fontSize = this.theme.dialogFontSize;
288
- }
289
- specs.fontSize *= window.devicePixelRatio;
290
- const pad = this.theme.spacing * window.devicePixelRatio;
291
- const markdown = new MarkdownCanvasOperation(summary, item.item.summaryIconMap ?? {}, specs);
292
- const ops = new LayeredCanvasOperation([
293
- new ColorCanvasOperation(this.theme.gallerySummaryBackgroundColor, this.theme.gallerySummaryBackgroundOpacity),
294
- new PadCanvasOperation({ top: pad, bottom: pad, left: pad, right: pad }, markdown),
295
- ]);
296
- const stack1 = new CanvasStack(this.itemWidth * SCALE_FACTOR * window.devicePixelRatio, height * SCALE_FACTOR * window.devicePixelRatio, ops);
297
- stack1.render();
298
- const stack2 = new CanvasStack(this.itemWidth * SCALE_FACTOR * window.devicePixelRatio, markdown.height + this.theme.spacing * 2 * window.devicePixelRatio, ops);
299
- stack2.render();
300
- const material = stack2.material;
301
- material.transparent = true;
302
- material.depthWrite = true;
303
- const finalHeight = stack2.height / window.devicePixelRatio / SCALE_FACTOR;
304
- item.summaryHeight = finalHeight + this.theme.spacing / SCALE_FACTOR;
305
- const face = new PlaneGeometry(this.itemWidth, finalHeight);
306
- const m = new Mesh(face, material);
307
- // m.renderOrder = 2;
308
- // Position will be set by updateEffectiveItemHeightAndCamera based on effectiveItemHeight
309
- m.position.set(0, -this.effectiveItemHeight * 0.5 - finalHeight / 2 - this.theme.spacing / SCALE_FACTOR, 0);
310
- item.meshToShowOrHideIfCentered = m;
311
- item.group.add(m);
312
- }
313
- setItems(items) {
314
- this._rawItems = items;
315
- this.changed = true;
316
- const itemIndexOffset = items.length < this.itemsPerPage ? (this.itemsPerPage - items.length) / 2 : 0;
317
- const seenIds = new Set(Object.keys(this.itemLookup));
318
- items.forEach((item, i) => {
319
- seenIds.delete(item.id);
320
- if (!this.itemLookup[item.id]) {
321
- const builtItem = (this.itemLookup[item.id] = {
322
- item,
323
- enteredAmount: 0,
324
- mesh: item.createMesh(this.sceneWrapper),
325
- group: new Group(),
326
- index: i + itemIndexOffset,
327
- center: new Vector3(),
328
- height: 0,
329
- depth: 0,
330
- summaryHeight: 0,
331
- targetIndex: i + itemIndexOffset,
332
- unsubscribe: item.registerUpdateHandler(() => {
333
- builtItem.group.removeFromParent();
334
- builtItem.mesh.removeFromParent();
335
- this.changed = true;
336
- builtItem.group = new Group();
337
- this.sceneWrapper.scene.add(builtItem.group);
338
- this.scaleItem(builtItem, item.maximumWidth, item.maximumHeight);
339
- this.positionItem(builtItem);
340
- this.updateHelpText(builtItem);
341
- this.updateEffectiveItemHeightAndCamera();
342
- TextureReferenaceCounter.update();
343
- }),
344
- });
345
- this.scaleItem(builtItem, item.maximumWidth, item.maximumHeight);
346
- // Also add your mesh to the scene:
347
- builtItem.mesh.removeFromParent();
348
- builtItem.group.removeFromParent();
349
- builtItem.group.add(builtItem.mesh);
350
- this.sceneWrapper.scene.add(builtItem.group);
351
- this.positionItem(builtItem);
352
- this.updateHelpText(builtItem);
353
- builtItem.enteredTween = new Tween({ x: 0 })
354
- .to({ x: 1 }, this.tweenDuration)
355
- .easing(Easing.Quadratic.Out)
356
- .onUpdate((obj) => {
357
- builtItem.enteredAmount = obj.x;
358
- this.positionItem(builtItem);
359
- })
360
- .onComplete(() => {
361
- this.positionItem(builtItem);
362
- builtItem.enteredTween = undefined;
363
- })
364
- .start();
365
- }
366
- else {
367
- const it = this.itemLookup[item.id];
368
- this.scaleItem(it, it.item.maximumWidth, it.item.maximumHeight);
369
- this.positionItem(it);
370
- }
371
- });
372
- [...seenIds].forEach((id) => {
373
- const item = this.itemLookup[id];
374
- item.unsubscribe();
375
- delete this.itemLookup[id];
376
- this.leavingItems.push(item);
377
- if (item.enteredTween) {
378
- item.enteredTween.stop();
379
- item.enteredTween = undefined;
380
- }
381
- item.enteredTween = new Tween({ x: item.enteredAmount })
382
- .to({ x: 0 }, this.tweenDuration)
383
- .easing(Easing.Quadratic.In)
384
- .onUpdate((obj) => {
385
- item.enteredAmount = obj.x;
386
- this.positionItem(item);
387
- })
388
- .onComplete(() => {
389
- item.enteredTween = undefined;
390
- item.mesh.parent?.remove(item.mesh);
391
- this.leavingItems = this.leavingItems.filter((i) => i !== item);
392
- })
393
- .start();
394
- });
395
- const hasChangedLength = this.items.length !== items.length;
396
- this.items = items.map((item) => this.itemLookup[item.id]);
397
- this.items.forEach((item, index) => {
398
- if (item.tween) {
399
- item.tween.stop();
400
- item.tween = undefined;
401
- }
402
- if (item.index !== index + itemIndexOffset) {
403
- item.targetIndex = index + itemIndexOffset;
404
- item.tween = new Tween({ x: item.index })
405
- .to({ x: item.targetIndex }, this.tweenDuration)
406
- .easing(Easing.Quadratic.InOut)
407
- .onUpdate((obj) => {
408
- item.index = obj.x;
409
- this.positionItem(item);
410
- })
411
- .onComplete(() => {
412
- item.tween = undefined;
413
- })
414
- .start();
415
- }
416
- });
417
- if (hasChangedLength && !this.tween) {
418
- this.pan(0, true);
419
- }
420
- this.updateEffectiveItemHeightAndCamera();
421
- this.sceneWrapper.markDirty();
422
- TextureReferenaceCounter.update();
423
- }
424
- }
425
- export function GalleryViewer({ items, paused = false, galleryItemWidth = 200, fov = 15, angle = Math.PI * 0.1, onClose, itemSpacing = 50, tweenDuration = 250, w = 0, h = 0, galleryItemHeight = h * 0.7, showSummary = true, }) {
426
- const calcedItemWidth = Math.min(...items.map((item) => item.preferredWidth ?? galleryItemWidth));
427
- const calcedItemHeight = Math.min(...items.map((item) => item.preferredHeight ?? galleryItemHeight));
428
- const [id] = useState(`GalleryViewer${ID_COUNTER++}`);
429
- const refContainer = useRef(null);
430
- const rendererWrapper = useWebGlRenderer();
431
- const theme = useGameTheme();
432
- const [galleryController] = useState(new GalleryController(new SceneWrapper(new Scene()), theme, angle, fov));
433
- galleryController.tweenDuration = tweenDuration;
434
- galleryController.showSummary = showSummary;
435
- useEffect(() => {
436
- if (!w || !h) {
437
- return;
438
- }
439
- if (!Number.isFinite(calcedItemHeight) || !Number.isFinite(calcedItemWidth)) {
440
- return;
441
- }
442
- galleryController.setSize(w, h, calcedItemWidth, calcedItemHeight, itemSpacing);
443
- }, [calcedItemWidth, itemSpacing, calcedItemHeight, w, h, galleryController]);
444
- useEffect(() => {
445
- galleryController.setItems(items);
446
- }, [items, galleryController]);
447
- useEffect(() => {
448
- const canvas = refContainer.current;
449
- if (!canvas || !rendererWrapper || paused)
450
- return;
451
- const ctx = canvas.getContext("2d");
452
- let cancelled = false;
453
- // FPS tracking variables
454
- let frameCount = 0;
455
- let fpsStartTime = performance.now();
456
- let isAnimating = false;
457
- const animate = () => {
458
- if (cancelled)
459
- return;
460
- requestSharedAnimationFrame(animate);
461
- const wasAnimating = isAnimating;
462
- isAnimating = galleryController.render();
463
- if (isAnimating) {
464
- if (!wasAnimating) {
465
- // Animation just started
466
- frameCount = 0;
467
- fpsStartTime = performance.now();
468
- }
469
- frameCount++;
470
- const elapsed = performance.now() - fpsStartTime;
471
- if (elapsed > 1000 && frameCount > 10) {
472
- // After 1 second and at least 10 frames
473
- const fps = (frameCount / elapsed) * 1000;
474
- console.log(`Gallery Animation FPS: ${fps.toFixed(1)}`);
475
- frameCount = 0;
476
- fpsStartTime = performance.now();
477
- }
478
- if (ctx) {
479
- // Set canvas size to match target dimensions
480
- ctx.canvas.width = w * rendererWrapper.pixelRatio;
481
- ctx.canvas.height = h * rendererWrapper.pixelRatio;
482
- // Clear canvas and render
483
- ctx.clearRect(0, 0, w * rendererWrapper.pixelRatio, h * rendererWrapper.pixelRatio);
484
- rendererWrapper.render(galleryController.sceneWrapper, galleryController.camera, ctx, theme);
485
- }
486
- }
487
- };
488
- animate();
489
- return () => {
490
- cancelled = true;
491
- };
492
- }, [id, rendererWrapper, galleryController, paused, theme, w, h]);
493
- useEffect(() => {
494
- const el = refContainer.current;
495
- if (!el)
496
- return;
497
- const hammer = new Hammer.Manager(el);
498
- hammer.add(new Hammer.Pan({ direction: Hammer.DIRECTION_HORIZONTAL }));
499
- const fixPosition = (ev) => {
500
- const rect = el.getBoundingClientRect();
501
- return { x: ev.center.x - rect.left, y: ev.center.y - rect.top };
502
- };
503
- hammer.add(new Hammer.Tap());
504
- hammer.on("tap", (ev) => {
505
- const pos = fixPosition(ev);
506
- if (galleryController.isAnimating()) {
507
- galleryController.pan(0, true); // goofy but fine? locks to closest slot?
508
- }
509
- else {
510
- const tappedItem = galleryController.getItemAtPosition(pos.x, pos.y);
511
- if (tappedItem) {
512
- if (tappedItem.onClick) {
513
- tappedItem.onClick();
514
- // // TODO: this is maybe not right? do we always want to close upon selection? I don't think so
515
- // if (onClose) {
516
- // setTimeout(onClose, 500);
517
- // }
518
- }
519
- }
520
- else if (onClose) {
521
- onClose();
522
- }
523
- }
524
- });
525
- let lastX = undefined;
526
- let lastVelocityX = 0;
527
- hammer.on("pan", (ev) => {
528
- if (lastX === undefined) {
529
- lastX = 0;
530
- }
531
- else {
532
- lastVelocityX = ev.velocityX;
533
- galleryController.pan(-(lastX - ev.deltaX));
534
- lastX = ev.deltaX;
535
- }
536
- ev.preventDefault();
537
- });
538
- hammer.on("panend", () => {
539
- lastX = undefined;
540
- galleryController.pan(lastVelocityX * 300, true);
541
- lastVelocityX = 0;
542
- });
543
- let timeout;
544
- const wheelListener = (ev) => {
545
- const dy = ev.wheelDeltaY;
546
- galleryController.pan(dy / 3, false);
547
- ev.preventDefault();
548
- clearTimeout(timeout);
549
- timeout = setTimeout(() => galleryController.pan(0, true), 50);
550
- };
551
- addWheelListener(el, wheelListener);
552
- return () => {
553
- hammer.destroy();
554
- removeWheelListener(el, wheelListener);
555
- };
556
- }, [galleryController, onClose]);
557
- // Cleanup sceneWrapper on unmount
558
- useEffect(() => {
559
- TextureReferenaceCounter.registerInstance(galleryController);
560
- return () => {
561
- TextureReferenaceCounter.unregisterInstance(galleryController);
562
- galleryController.sceneWrapper.dispose();
563
- };
564
- }, [galleryController]);
565
- if (!w || !h) {
566
- return null;
567
- }
568
- return (_jsx(Box, { sx: { position: "absolute", top: 0, right: 0, left: 0, bottom: 0 }, children: _jsx("canvas", { width: w * rendererWrapper.pixelRatio, height: h * rendererWrapper.pixelRatio, style: { width: w, height: h }, ref: refContainer }) }));
569
- }
1
+ // This file is kept for backward compatibility
2
+ // The implementation has been moved to the Gallery folder for better organization
3
+ export { GalleryViewer } from "./Gallery";
570
4
  //# sourceMappingURL=GalleryViewer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GalleryViewer.js","sourceRoot":"","sources":["../../src/library/components/GalleryViewer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GalleryViewer.js","sourceRoot":"","sources":["../../src/library/components/GalleryViewer.tsx"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,kFAAkF;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"GameDesigner.d.ts","sourceRoot":"","sources":["../../src/library/components/GameDesigner.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAKpC,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;CAAE,2CA6B9D"}
1
+ {"version":3,"file":"GameDesigner.d.ts","sourceRoot":"","sources":["../../src/library/components/GameDesigner.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAKpC,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;CAAE,2CA8C9D"}
@@ -4,11 +4,22 @@ import { AppBar, Tabs, Tab, CssBaseline, Stack } from "@mui/material";
4
4
  import CanvasLibraryViewer from "./CanvasLibraryViewer";
5
5
  import ChitLibraryViewer from "./ChitLibraryViewer";
6
6
  import Playground from "./Playground";
7
- import GalleryPlayground from "./GalleryPlayground";
7
+ import { DemoWrapper } from "./DemoWrapper";
8
8
  export function GameDesigner({ game }) {
9
9
  const [tabIndex, setTabIndex] = useLocalStorageState("selectedMainTab", {
10
10
  defaultValue: 2,
11
11
  });
12
- return (_jsxs(Stack, { sx: { height: "100vh", maxHeight: "-webkit-fill-available", width: "100vw" }, children: [_jsx(CssBaseline, {}), _jsx(AppBar, { position: "static", children: _jsxs(Tabs, { value: tabIndex, onChange: (e, newValue) => setTabIndex(newValue), indicatorColor: "secondary", textColor: "inherit", variant: "fullWidth", children: [_jsx(Tab, { label: "Canvas" }), _jsx(Tab, { label: "Chits" }), _jsx(Tab, { label: "Playground" }), _jsx(Tab, { label: "Gallery" })] }) }), tabIndex === 0 && _jsx(CanvasLibraryViewer, { library: game.canvasLibrary }), tabIndex === 1 && _jsx(ChitLibraryViewer, { library: game.chitLibrary }), tabIndex === 2 && _jsx(Playground, { game: game }), tabIndex === 3 && _jsx(GalleryPlayground, { game: game })] }));
12
+ const isDemo = window.location.pathname.endsWith("/demo");
13
+ if (isDemo) {
14
+ return (_jsx(Stack, { sx: { height: "100vh", maxHeight: "-webkit-fill-available", width: "100vw" }, children: _jsx(DemoWrapper, { game: game }) }));
15
+ }
16
+ return (_jsxs(Stack, { sx: { height: "100vh", maxHeight: "-webkit-fill-available", width: "100vw" }, children: [_jsx(CssBaseline, {}), _jsx(AppBar, { position: "static", children: _jsxs(Tabs, { value: tabIndex, onChange: (e, newValue) => {
17
+ if (newValue === 3) {
18
+ document.location.pathname = "/demo";
19
+ }
20
+ else {
21
+ setTabIndex(newValue);
22
+ }
23
+ }, indicatorColor: "secondary", textColor: "inherit", variant: "fullWidth", children: [_jsx(Tab, { label: "Canvas" }), _jsx(Tab, { label: "Chits" }), _jsx(Tab, { label: "Playground" }), _jsx(Tab, { label: "Demo" })] }) }), tabIndex === 0 && _jsx(CanvasLibraryViewer, { library: game.canvasLibrary }), tabIndex === 1 && _jsx(ChitLibraryViewer, { library: game.chitLibrary }), tabIndex === 2 && _jsx(Playground, { game: game })] }));
13
24
  }
14
25
  //# sourceMappingURL=GameDesigner.js.map