@mathscan/geometry-engine 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (380) hide show
  1. package/README.md +1101 -0
  2. package/dist/coordinates/grid.d.cts +8 -0
  3. package/dist/coordinates/grid.d.ts +9 -0
  4. package/dist/coordinates/grid.d.ts.map +1 -0
  5. package/dist/coordinates/lineClipping.d.cts +3 -0
  6. package/dist/coordinates/lineClipping.d.ts +4 -0
  7. package/dist/coordinates/lineClipping.d.ts.map +1 -0
  8. package/dist/coordinates/transform.d.cts +18 -0
  9. package/dist/coordinates/transform.d.ts +19 -0
  10. package/dist/coordinates/transform.d.ts.map +1 -0
  11. package/dist/core.cjs +1 -0
  12. package/dist/core.mjs +4 -0
  13. package/dist/entries/core.d.cts +16 -0
  14. package/dist/entries/core.d.ts +17 -0
  15. package/dist/entries/core.d.ts.map +1 -0
  16. package/dist/entries/react.d.cts +18 -0
  17. package/dist/entries/react.d.ts +19 -0
  18. package/dist/entries/react.d.ts.map +1 -0
  19. package/dist/entries/schemas.d.cts +14 -0
  20. package/dist/entries/schemas.d.ts +15 -0
  21. package/dist/entries/schemas.d.ts.map +1 -0
  22. package/dist/entries/validation.d.cts +12 -0
  23. package/dist/entries/validation.d.ts +13 -0
  24. package/dist/entries/validation.d.ts.map +1 -0
  25. package/dist/exercise.schema-BV2b7rtN.cjs +2 -0
  26. package/dist/exercise.schema-BV2b7rtN.cjs.map +1 -0
  27. package/dist/exercise.schema-ckVBW9XA.js +212 -0
  28. package/dist/exercise.schema-ckVBW9XA.js.map +1 -0
  29. package/dist/geometry/distance.d.cts +9 -0
  30. package/dist/geometry/distance.d.ts +10 -0
  31. package/dist/geometry/distance.d.ts.map +1 -0
  32. package/dist/geometry/entities/circle.d.cts +36 -0
  33. package/dist/geometry/entities/circle.d.ts +37 -0
  34. package/dist/geometry/entities/circle.d.ts.map +1 -0
  35. package/dist/geometry/entities/index.d.cts +60 -0
  36. package/dist/geometry/entities/index.d.ts +61 -0
  37. package/dist/geometry/entities/index.d.ts.map +1 -0
  38. package/dist/geometry/entities/line.d.cts +43 -0
  39. package/dist/geometry/entities/line.d.ts +44 -0
  40. package/dist/geometry/entities/line.d.ts.map +1 -0
  41. package/dist/geometry/entities/point.d.cts +27 -0
  42. package/dist/geometry/entities/point.d.ts +28 -0
  43. package/dist/geometry/entities/point.d.ts.map +1 -0
  44. package/dist/geometry/entities/relations.d.cts +27 -0
  45. package/dist/geometry/entities/relations.d.ts +28 -0
  46. package/dist/geometry/entities/relations.d.ts.map +1 -0
  47. package/dist/geometry/entities/segment.d.cts +45 -0
  48. package/dist/geometry/entities/segment.d.ts +46 -0
  49. package/dist/geometry/entities/segment.d.ts.map +1 -0
  50. package/dist/geometry/entityCapabilities.d.cts +2 -0
  51. package/dist/geometry/entityCapabilities.d.ts +3 -0
  52. package/dist/geometry/entityCapabilities.d.ts.map +1 -0
  53. package/dist/geometry/entityModel.d.cts +139 -0
  54. package/dist/geometry/entityModel.d.ts +140 -0
  55. package/dist/geometry/entityModel.d.ts.map +1 -0
  56. package/dist/geometry/entityRecord.d.cts +27 -0
  57. package/dist/geometry/entityRecord.d.ts +28 -0
  58. package/dist/geometry/entityRecord.d.ts.map +1 -0
  59. package/dist/geometry/evaluateGraph.d.cts +37 -0
  60. package/dist/geometry/evaluateGraph.d.ts +38 -0
  61. package/dist/geometry/evaluateGraph.d.ts.map +1 -0
  62. package/dist/geometry/geometryObject.d.cts +4 -0
  63. package/dist/geometry/geometryObject.d.ts +5 -0
  64. package/dist/geometry/geometryObject.d.ts.map +1 -0
  65. package/dist/geometry/goalCandidate.d.cts +8 -0
  66. package/dist/geometry/goalCandidate.d.ts +9 -0
  67. package/dist/geometry/goalCandidate.d.ts.map +1 -0
  68. package/dist/geometry/hitTest.d.cts +23 -0
  69. package/dist/geometry/hitTest.d.ts +24 -0
  70. package/dist/geometry/hitTest.d.ts.map +1 -0
  71. package/dist/geometry/point.d.cts +5 -0
  72. package/dist/geometry/point.d.ts +6 -0
  73. package/dist/geometry/point.d.ts.map +1 -0
  74. package/dist/geometry/pointOrigin.d.cts +5 -0
  75. package/dist/geometry/pointOrigin.d.ts +6 -0
  76. package/dist/geometry/pointOrigin.d.ts.map +1 -0
  77. package/dist/geometry/v1Bridge.d.cts +41 -0
  78. package/dist/geometry/v1Bridge.d.ts +42 -0
  79. package/dist/geometry/v1Bridge.d.ts.map +1 -0
  80. package/dist/geometryAttemptStatus-5L_q6-9l.js +184 -0
  81. package/dist/geometryAttemptStatus-5L_q6-9l.js.map +1 -0
  82. package/dist/geometryAttemptStatus-N_XHIkiS.cjs +2 -0
  83. package/dist/geometryAttemptStatus-N_XHIkiS.cjs.map +1 -0
  84. package/dist/geometryState.schema-D0ixyGYE.js +955 -0
  85. package/dist/geometryState.schema-D0ixyGYE.js.map +1 -0
  86. package/dist/geometryState.schema-DKQ-durx.cjs +2 -0
  87. package/dist/geometryState.schema-DKQ-durx.cjs.map +1 -0
  88. package/dist/goals-C3ZwbEh_.js +451 -0
  89. package/dist/goals-C3ZwbEh_.js.map +1 -0
  90. package/dist/goals-CxR5qPDC.cjs +2 -0
  91. package/dist/goals-CxR5qPDC.cjs.map +1 -0
  92. package/dist/index.cjs +1 -0
  93. package/dist/index.d.cts +4 -0
  94. package/dist/index.d.ts +5 -0
  95. package/dist/index.d.ts.map +1 -0
  96. package/dist/index.mjs +10 -0
  97. package/dist/measure/geometryAdapter.d.cts +26 -0
  98. package/dist/measure/geometryAdapter.d.ts +27 -0
  99. package/dist/measure/geometryAdapter.d.ts.map +1 -0
  100. package/dist/measure/kernel.d.cts +25 -0
  101. package/dist/measure/kernel.d.ts +26 -0
  102. package/dist/measure/kernel.d.ts.map +1 -0
  103. package/dist/numerics/policy.d.cts +17 -0
  104. package/dist/numerics/policy.d.ts +18 -0
  105. package/dist/numerics/policy.d.ts.map +1 -0
  106. package/dist/react-BEcdx1f6.js +1851 -0
  107. package/dist/react-BEcdx1f6.js.map +1 -0
  108. package/dist/react-Pp_VSk--.cjs +2 -0
  109. package/dist/react-Pp_VSk--.cjs.map +1 -0
  110. package/dist/react.cjs +1 -0
  111. package/dist/react.mjs +2 -0
  112. package/dist/renderer/GeometryCanvas.d.cts +14 -0
  113. package/dist/renderer/GeometryCanvas.d.ts +15 -0
  114. package/dist/renderer/GeometryCanvas.d.ts.map +1 -0
  115. package/dist/renderer/GeometryCompanion.d.cts +29 -0
  116. package/dist/renderer/GeometryCompanion.d.ts +30 -0
  117. package/dist/renderer/GeometryCompanion.d.ts.map +1 -0
  118. package/dist/renderer/GeometryGrid.d.cts +7 -0
  119. package/dist/renderer/GeometryGrid.d.ts +8 -0
  120. package/dist/renderer/GeometryGrid.d.ts.map +1 -0
  121. package/dist/renderer/GeometryInstruments.d.cts +7 -0
  122. package/dist/renderer/GeometryInstruments.d.ts +8 -0
  123. package/dist/renderer/GeometryInstruments.d.ts.map +1 -0
  124. package/dist/renderer/StudentGeometryCanvas.d.cts +11 -0
  125. package/dist/renderer/StudentGeometryCanvas.d.ts +12 -0
  126. package/dist/renderer/StudentGeometryCanvas.d.ts.map +1 -0
  127. package/dist/renderer/StudentGeometryExercise.d.cts +36 -0
  128. package/dist/renderer/StudentGeometryExercise.d.ts +37 -0
  129. package/dist/renderer/StudentGeometryExercise.d.ts.map +1 -0
  130. package/dist/renderer/Toolbar.d.cts +7 -0
  131. package/dist/renderer/Toolbar.d.ts +8 -0
  132. package/dist/renderer/Toolbar.d.ts.map +1 -0
  133. package/dist/renderer/deriveRenderableGeometry.d.cts +15 -0
  134. package/dist/renderer/deriveRenderableGeometry.d.ts +16 -0
  135. package/dist/renderer/deriveRenderableGeometry.d.ts.map +1 -0
  136. package/dist/renderer/deriveSemanticScene.d.cts +58 -0
  137. package/dist/renderer/deriveSemanticScene.d.ts +59 -0
  138. package/dist/renderer/deriveSemanticScene.d.ts.map +1 -0
  139. package/dist/renderer/entityDisplayName.d.cts +12 -0
  140. package/dist/renderer/entityDisplayName.d.ts +13 -0
  141. package/dist/renderer/entityDisplayName.d.ts.map +1 -0
  142. package/dist/renderer/gesturePolicy.d.cts +97 -0
  143. package/dist/renderer/gesturePolicy.d.ts +98 -0
  144. package/dist/renderer/gesturePolicy.d.ts.map +1 -0
  145. package/dist/renderer/shapes/CircleShape.d.cts +17 -0
  146. package/dist/renderer/shapes/CircleShape.d.ts +18 -0
  147. package/dist/renderer/shapes/CircleShape.d.ts.map +1 -0
  148. package/dist/renderer/shapes/EntityLabel.d.cts +14 -0
  149. package/dist/renderer/shapes/EntityLabel.d.ts +15 -0
  150. package/dist/renderer/shapes/EntityLabel.d.ts.map +1 -0
  151. package/dist/renderer/shapes/EntityShape.d.cts +18 -0
  152. package/dist/renderer/shapes/EntityShape.d.ts +19 -0
  153. package/dist/renderer/shapes/EntityShape.d.ts.map +1 -0
  154. package/dist/renderer/shapes/LineShape.d.cts +16 -0
  155. package/dist/renderer/shapes/LineShape.d.ts +17 -0
  156. package/dist/renderer/shapes/LineShape.d.ts.map +1 -0
  157. package/dist/renderer/shapes/PointShape.d.cts +17 -0
  158. package/dist/renderer/shapes/PointShape.d.ts +18 -0
  159. package/dist/renderer/shapes/PointShape.d.ts.map +1 -0
  160. package/dist/renderer/shapes/SegmentShape.d.cts +17 -0
  161. package/dist/renderer/shapes/SegmentShape.d.ts +18 -0
  162. package/dist/renderer/shapes/SegmentShape.d.ts.map +1 -0
  163. package/dist/renderer/shapes/SnapMarker.d.cts +8 -0
  164. package/dist/renderer/shapes/SnapMarker.d.ts +9 -0
  165. package/dist/renderer/shapes/SnapMarker.d.ts.map +1 -0
  166. package/dist/renderer/shapes/StrokedLine.d.cts +18 -0
  167. package/dist/renderer/shapes/StrokedLine.d.ts +19 -0
  168. package/dist/renderer/shapes/StrokedLine.d.ts.map +1 -0
  169. package/dist/renderer/studentExerciseSession.d.cts +71 -0
  170. package/dist/renderer/studentExerciseSession.d.ts +72 -0
  171. package/dist/renderer/studentExerciseSession.d.ts.map +1 -0
  172. package/dist/renderer/useConnectionPreview.d.cts +44 -0
  173. package/dist/renderer/useConnectionPreview.d.ts +45 -0
  174. package/dist/renderer/useConnectionPreview.d.ts.map +1 -0
  175. package/dist/renderer/usePlacementSnap.d.cts +28 -0
  176. package/dist/renderer/usePlacementSnap.d.ts +29 -0
  177. package/dist/renderer/usePlacementSnap.d.ts.map +1 -0
  178. package/dist/renderer/usePointerGestures.d.cts +46 -0
  179. package/dist/renderer/usePointerGestures.d.ts +47 -0
  180. package/dist/renderer/usePointerGestures.d.ts.map +1 -0
  181. package/dist/schemas/circle.schema.d.cts +8 -0
  182. package/dist/schemas/circle.schema.d.ts +9 -0
  183. package/dist/schemas/circle.schema.d.ts.map +1 -0
  184. package/dist/schemas/entityDefinition.schema.d.cts +69 -0
  185. package/dist/schemas/entityDefinition.schema.d.ts +70 -0
  186. package/dist/schemas/entityDefinition.schema.d.ts.map +1 -0
  187. package/dist/schemas/entityDocument.d.cts +95 -0
  188. package/dist/schemas/entityDocument.d.ts +96 -0
  189. package/dist/schemas/entityDocument.d.ts.map +1 -0
  190. package/dist/schemas/entityPresentation.schema.d.cts +12 -0
  191. package/dist/schemas/entityPresentation.schema.d.ts +13 -0
  192. package/dist/schemas/entityPresentation.schema.d.ts.map +1 -0
  193. package/dist/schemas/exercise.schema.d.cts +217 -0
  194. package/dist/schemas/exercise.schema.d.ts +218 -0
  195. package/dist/schemas/exercise.schema.d.ts.map +1 -0
  196. package/dist/schemas/exerciseProjection.d.cts +10 -0
  197. package/dist/schemas/exerciseProjection.d.ts +11 -0
  198. package/dist/schemas/exerciseProjection.d.ts.map +1 -0
  199. package/dist/schemas/exerciseV2.schema.d.cts +137 -0
  200. package/dist/schemas/exerciseV2.schema.d.ts +138 -0
  201. package/dist/schemas/exerciseV2.schema.d.ts.map +1 -0
  202. package/dist/schemas/exerciseV3.schema.d.cts +149 -0
  203. package/dist/schemas/exerciseV3.schema.d.ts +150 -0
  204. package/dist/schemas/exerciseV3.schema.d.ts.map +1 -0
  205. package/dist/schemas/geometryObject.schema.d.cts +17 -0
  206. package/dist/schemas/geometryObject.schema.d.ts +18 -0
  207. package/dist/schemas/geometryObject.schema.d.ts.map +1 -0
  208. package/dist/schemas/geometryState.schema.d.cts +64 -0
  209. package/dist/schemas/geometryState.schema.d.ts +65 -0
  210. package/dist/schemas/geometryState.schema.d.ts.map +1 -0
  211. package/dist/schemas/givenElement.schema.d.cts +24 -0
  212. package/dist/schemas/givenElement.schema.d.ts +25 -0
  213. package/dist/schemas/givenElement.schema.d.ts.map +1 -0
  214. package/dist/schemas/goals/createGoal.schema.d.cts +12 -0
  215. package/dist/schemas/goals/createGoal.schema.d.ts +13 -0
  216. package/dist/schemas/goals/createGoal.schema.d.ts.map +1 -0
  217. package/dist/schemas/goals/geometryGoal.schema.d.cts +58 -0
  218. package/dist/schemas/goals/geometryGoal.schema.d.ts +59 -0
  219. package/dist/schemas/goals/geometryGoal.schema.d.ts.map +1 -0
  220. package/dist/schemas/goals/goalKindDeclaration.d.cts +53 -0
  221. package/dist/schemas/goals/goalKindDeclaration.d.ts +54 -0
  222. package/dist/schemas/goals/goalKindDeclaration.d.ts.map +1 -0
  223. package/dist/schemas/goals/midpointGoal.schema.d.cts +9 -0
  224. package/dist/schemas/goals/midpointGoal.schema.d.ts +10 -0
  225. package/dist/schemas/goals/midpointGoal.schema.d.ts.map +1 -0
  226. package/dist/schemas/goals/parallelGoal.schema.d.cts +15 -0
  227. package/dist/schemas/goals/parallelGoal.schema.d.ts +16 -0
  228. package/dist/schemas/goals/parallelGoal.schema.d.ts.map +1 -0
  229. package/dist/schemas/goals/perpendicularGoal.schema.d.cts +15 -0
  230. package/dist/schemas/goals/perpendicularGoal.schema.d.ts +16 -0
  231. package/dist/schemas/goals/perpendicularGoal.schema.d.ts.map +1 -0
  232. package/dist/schemas/goals/segmentLengthGoal.schema.d.cts +9 -0
  233. package/dist/schemas/goals/segmentLengthGoal.schema.d.ts +10 -0
  234. package/dist/schemas/goals/segmentLengthGoal.schema.d.ts.map +1 -0
  235. package/dist/schemas/goals/throughPointsGoal.schema.d.cts +13 -0
  236. package/dist/schemas/goals/throughPointsGoal.schema.d.ts +14 -0
  237. package/dist/schemas/goals/throughPointsGoal.schema.d.ts.map +1 -0
  238. package/dist/schemas/identifier.schema.d.cts +2 -0
  239. package/dist/schemas/identifier.schema.d.ts +3 -0
  240. package/dist/schemas/identifier.schema.d.ts.map +1 -0
  241. package/dist/schemas/line.schema.d.cts +7 -0
  242. package/dist/schemas/line.schema.d.ts +8 -0
  243. package/dist/schemas/line.schema.d.ts.map +1 -0
  244. package/dist/schemas/migrate.d.cts +21 -0
  245. package/dist/schemas/migrate.d.ts +22 -0
  246. package/dist/schemas/migrate.d.ts.map +1 -0
  247. package/dist/schemas/objectTypeName.schema.d.cts +8 -0
  248. package/dist/schemas/objectTypeName.schema.d.ts +9 -0
  249. package/dist/schemas/objectTypeName.schema.d.ts.map +1 -0
  250. package/dist/schemas/point.schema.d.cts +15 -0
  251. package/dist/schemas/point.schema.d.ts +16 -0
  252. package/dist/schemas/point.schema.d.ts.map +1 -0
  253. package/dist/schemas/pointOrigin.schema.d.cts +25 -0
  254. package/dist/schemas/pointOrigin.schema.d.ts +26 -0
  255. package/dist/schemas/pointOrigin.schema.d.ts.map +1 -0
  256. package/dist/schemas/segment.schema.d.cts +8 -0
  257. package/dist/schemas/segment.schema.d.ts +9 -0
  258. package/dist/schemas/segment.schema.d.ts.map +1 -0
  259. package/dist/schemas/v1ToV2.d.cts +37 -0
  260. package/dist/schemas/v1ToV2.d.ts +38 -0
  261. package/dist/schemas/v1ToV2.d.ts.map +1 -0
  262. package/dist/schemas/v2ToV3.d.cts +37 -0
  263. package/dist/schemas/v2ToV3.d.ts +38 -0
  264. package/dist/schemas/v2ToV3.d.ts.map +1 -0
  265. package/dist/schemas/v3ToV4.d.cts +3 -0
  266. package/dist/schemas/v3ToV4.d.ts +4 -0
  267. package/dist/schemas/v3ToV4.d.ts.map +1 -0
  268. package/dist/schemas/viewport.schema.d.cts +3 -0
  269. package/dist/schemas/viewport.schema.d.ts +4 -0
  270. package/dist/schemas/viewport.schema.d.ts.map +1 -0
  271. package/dist/schemas.cjs +1 -0
  272. package/dist/schemas.mjs +3 -0
  273. package/dist/snapping/computeSnap.d.cts +30 -0
  274. package/dist/snapping/computeSnap.d.ts +31 -0
  275. package/dist/snapping/computeSnap.d.ts.map +1 -0
  276. package/dist/state/geometryContext.d.cts +40 -0
  277. package/dist/state/geometryContext.d.ts +41 -0
  278. package/dist/state/geometryContext.d.ts.map +1 -0
  279. package/dist/state/resolvePoints.d.cts +51 -0
  280. package/dist/state/resolvePoints.d.ts +52 -0
  281. package/dist/state/resolvePoints.d.ts.map +1 -0
  282. package/dist/store/attemptChange.d.cts +30 -0
  283. package/dist/store/attemptChange.d.ts +31 -0
  284. package/dist/store/attemptChange.d.ts.map +1 -0
  285. package/dist/store/constructionCommand.d.cts +35 -0
  286. package/dist/store/constructionCommand.d.ts +36 -0
  287. package/dist/store/constructionCommand.d.ts.map +1 -0
  288. package/dist/store/constructionIdentity.d.cts +21 -0
  289. package/dist/store/constructionIdentity.d.ts +22 -0
  290. package/dist/store/constructionIdentity.d.ts.map +1 -0
  291. package/dist/store/createStore.d.cts +6 -0
  292. package/dist/store/createStore.d.ts +7 -0
  293. package/dist/store/createStore.d.ts.map +1 -0
  294. package/dist/store/history.d.cts +2 -0
  295. package/dist/store/history.d.ts +3 -0
  296. package/dist/store/history.d.ts.map +1 -0
  297. package/dist/store/studentStore.d.cts +151 -0
  298. package/dist/store/studentStore.d.ts +152 -0
  299. package/dist/store/studentStore.d.ts.map +1 -0
  300. package/dist/store/teacherStore.d.cts +111 -0
  301. package/dist/store/teacherStore.d.ts +112 -0
  302. package/dist/store/teacherStore.d.ts.map +1 -0
  303. package/dist/store/useStoreState.d.cts +2 -0
  304. package/dist/store/useStoreState.d.ts +3 -0
  305. package/dist/store/useStoreState.d.ts.map +1 -0
  306. package/dist/studentStore-CEKTtMCh.js +1162 -0
  307. package/dist/studentStore-CEKTtMCh.js.map +1 -0
  308. package/dist/studentStore-DLftfFAl.cjs +2 -0
  309. package/dist/studentStore-DLftfFAl.cjs.map +1 -0
  310. package/dist/validation/checkGeometryAnswer.d.cts +63 -0
  311. package/dist/validation/checkGeometryAnswer.d.ts +64 -0
  312. package/dist/validation/checkGeometryAnswer.d.ts.map +1 -0
  313. package/dist/validation/deriveGeometryCanvasFeedback.d.cts +7 -0
  314. package/dist/validation/deriveGeometryCanvasFeedback.d.ts +8 -0
  315. package/dist/validation/deriveGeometryCanvasFeedback.d.ts.map +1 -0
  316. package/dist/validation/exerciseLoad.d.cts +29 -0
  317. package/dist/validation/exerciseLoad.d.ts +30 -0
  318. package/dist/validation/exerciseLoad.d.ts.map +1 -0
  319. package/dist/validation/geometryAttemptStatus.d.cts +23 -0
  320. package/dist/validation/geometryAttemptStatus.d.ts +24 -0
  321. package/dist/validation/geometryAttemptStatus.d.ts.map +1 -0
  322. package/dist/validation/getGeometryExerciseWarnings.d.cts +16 -0
  323. package/dist/validation/getGeometryExerciseWarnings.d.ts +17 -0
  324. package/dist/validation/getGeometryExerciseWarnings.d.ts.map +1 -0
  325. package/dist/validation/goals/create.d.cts +3 -0
  326. package/dist/validation/goals/create.d.ts +4 -0
  327. package/dist/validation/goals/create.d.ts.map +1 -0
  328. package/dist/validation/goals/goalContext.d.cts +44 -0
  329. package/dist/validation/goals/goalContext.d.ts +45 -0
  330. package/dist/validation/goals/goalContext.d.ts.map +1 -0
  331. package/dist/validation/goals/goalKindHandler.d.cts +26 -0
  332. package/dist/validation/goals/goalKindHandler.d.ts +27 -0
  333. package/dist/validation/goals/goalKindHandler.d.ts.map +1 -0
  334. package/dist/validation/goals/index.d.cts +14 -0
  335. package/dist/validation/goals/index.d.ts +15 -0
  336. package/dist/validation/goals/index.d.ts.map +1 -0
  337. package/dist/validation/goals/midpoint.d.cts +4 -0
  338. package/dist/validation/goals/midpoint.d.ts +5 -0
  339. package/dist/validation/goals/midpoint.d.ts.map +1 -0
  340. package/dist/validation/goals/parallel.d.cts +3 -0
  341. package/dist/validation/goals/parallel.d.ts +4 -0
  342. package/dist/validation/goals/parallel.d.ts.map +1 -0
  343. package/dist/validation/goals/perpendicular.d.cts +3 -0
  344. package/dist/validation/goals/perpendicular.d.ts +4 -0
  345. package/dist/validation/goals/perpendicular.d.ts.map +1 -0
  346. package/dist/validation/goals/previewGeometry.d.cts +9 -0
  347. package/dist/validation/goals/previewGeometry.d.ts +10 -0
  348. package/dist/validation/goals/previewGeometry.d.ts.map +1 -0
  349. package/dist/validation/goals/segmentLength.d.cts +3 -0
  350. package/dist/validation/goals/segmentLength.d.ts +4 -0
  351. package/dist/validation/goals/segmentLength.d.ts.map +1 -0
  352. package/dist/validation/goals/throughPoints.d.cts +5 -0
  353. package/dist/validation/goals/throughPoints.d.ts +6 -0
  354. package/dist/validation/goals/throughPoints.d.ts.map +1 -0
  355. package/dist/validation/gradingFingerprints.d.cts +4 -0
  356. package/dist/validation/gradingFingerprints.d.ts +5 -0
  357. package/dist/validation/gradingFingerprints.d.ts.map +1 -0
  358. package/dist/validation/revealGeometryAnswers.d.cts +3 -0
  359. package/dist/validation/revealGeometryAnswers.d.ts +4 -0
  360. package/dist/validation/revealGeometryAnswers.d.ts.map +1 -0
  361. package/dist/validation/revealGeometryAttempt.d.cts +36 -0
  362. package/dist/validation/revealGeometryAttempt.d.ts +37 -0
  363. package/dist/validation/revealGeometryAttempt.d.ts.map +1 -0
  364. package/dist/validation/types.d.cts +58 -0
  365. package/dist/validation/types.d.ts +59 -0
  366. package/dist/validation/types.d.ts.map +1 -0
  367. package/dist/validation/validateGeometryExercise.d.cts +30 -0
  368. package/dist/validation/validateGeometryExercise.d.ts +31 -0
  369. package/dist/validation/validateGeometryExercise.d.ts.map +1 -0
  370. package/dist/validation/validateGeometryState.d.cts +16 -0
  371. package/dist/validation/validateGeometryState.d.ts +17 -0
  372. package/dist/validation/validateGeometryState.d.ts.map +1 -0
  373. package/dist/validation/validateGeometryStateInput.d.cts +22 -0
  374. package/dist/validation/validateGeometryStateInput.d.ts +23 -0
  375. package/dist/validation/validateGeometryStateInput.d.ts.map +1 -0
  376. package/dist/validation.cjs +2 -0
  377. package/dist/validation.cjs.map +1 -0
  378. package/dist/validation.mjs +269 -0
  379. package/dist/validation.mjs.map +1 -0
  380. package/package.json +150 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityLabel.d.ts","sourceRoot":"","sources":["../../../src/renderer/shapes/EntityLabel.tsx"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAE3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAajE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,eAAe,CAAA;IAC3B,QAAQ,EAAE,YAAY,CAAA;IACtB,MAAM,EAAE,UAAU,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAqCD,wBAAgB,aAAa,CAAC,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,GAAG,KAAK,GAAG,IAAI,CAS/F;AAED,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,MAAM,EACN,KAAiB,EACjB,OAAW,GACZ,EAAE,gBAAgB,sCAqBlB"}
@@ -0,0 +1,18 @@
1
+ import { ReactElement } from 'react';
2
+ import { CanvasSize } from '../../coordinates/transform.cjs';
3
+ import { ShapeDescriptor } from '../../geometry/entityModel.cjs';
4
+ import { MathViewport } from '../../schemas/viewport.schema.cjs';
5
+ export interface EntityShapeProps {
6
+ id: string;
7
+ descriptor: ShapeDescriptor;
8
+ viewport: MathViewport;
9
+ canvas: CanvasSize;
10
+ color?: string;
11
+ strokeWidth?: number;
12
+ dashed?: boolean;
13
+ selected?: boolean;
14
+ opacity?: number;
15
+ listening?: boolean;
16
+ label?: string;
17
+ }
18
+ export declare function EntityShape({ descriptor, label, ...styling }: EntityShapeProps): ReactElement | null;
@@ -0,0 +1,19 @@
1
+ import { ReactElement } from 'react';
2
+ import { CanvasSize } from '../../coordinates/transform.js';
3
+ import { ShapeDescriptor } from '../../geometry/entityModel.js';
4
+ import { MathViewport } from '../../schemas/viewport.schema.js';
5
+ export interface EntityShapeProps {
6
+ id: string;
7
+ descriptor: ShapeDescriptor;
8
+ viewport: MathViewport;
9
+ canvas: CanvasSize;
10
+ color?: string;
11
+ strokeWidth?: number;
12
+ dashed?: boolean;
13
+ selected?: boolean;
14
+ opacity?: number;
15
+ listening?: boolean;
16
+ label?: string;
17
+ }
18
+ export declare function EntityShape({ descriptor, label, ...styling }: EntityShapeProps): ReactElement | null;
19
+ //# sourceMappingURL=EntityShape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityShape.d.ts","sourceRoot":"","sources":["../../../src/renderer/shapes/EntityShape.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAkBjE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,eAAe,CAAA;IAC3B,QAAQ,EAAE,YAAY,CAAA;IACtB,MAAM,EAAE,UAAU,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;IAKnB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AA6BD,wBAAgB,WAAW,CAAC,EAC1B,UAAU,EACV,KAAK,EACL,GAAG,OAAO,EACX,EAAE,gBAAgB,GAAG,YAAY,GAAG,IAAI,CA4BxC"}
@@ -0,0 +1,16 @@
1
+ import { CanvasSize } from '../../coordinates/transform.cjs';
2
+ import { Point } from '../../geometry/point.cjs';
3
+ import { MathViewport } from '../../schemas/viewport.schema.cjs';
4
+ export interface LineShapeProps {
5
+ id: string;
6
+ through: [Point, Point];
7
+ viewport: MathViewport;
8
+ canvas: CanvasSize;
9
+ color?: string;
10
+ strokeWidth?: number;
11
+ dashed?: boolean;
12
+ selected?: boolean;
13
+ opacity?: number;
14
+ listening?: boolean;
15
+ }
16
+ export declare function LineShape({ id, through, viewport, canvas, color, strokeWidth, dashed, selected, opacity, listening, }: LineShapeProps): import("react").JSX.Element | null;
@@ -0,0 +1,17 @@
1
+ import { CanvasSize } from '../../coordinates/transform.js';
2
+ import { Point } from '../../geometry/point.js';
3
+ import { MathViewport } from '../../schemas/viewport.schema.js';
4
+ export interface LineShapeProps {
5
+ id: string;
6
+ through: [Point, Point];
7
+ viewport: MathViewport;
8
+ canvas: CanvasSize;
9
+ color?: string;
10
+ strokeWidth?: number;
11
+ dashed?: boolean;
12
+ selected?: boolean;
13
+ opacity?: number;
14
+ listening?: boolean;
15
+ }
16
+ export declare function LineShape({ id, through, viewport, canvas, color, strokeWidth, dashed, selected, opacity, listening, }: LineShapeProps): import("react").JSX.Element | null;
17
+ //# sourceMappingURL=LineShape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LineShape.d.ts","sourceRoot":"","sources":["../../../src/renderer/shapes/LineShape.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAE3E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAGjE,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IACvB,QAAQ,EAAE,YAAY,CAAA;IACtB,MAAM,EAAE,UAAU,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAKD,wBAAgB,SAAS,CAAC,EACxB,EAAE,EACF,OAAO,EACP,QAAQ,EACR,MAAM,EACN,KAAiB,EACjB,WAAe,EACf,MAAc,EACd,QAAgB,EAChB,OAAW,EACX,SAAgB,GACjB,EAAE,cAAc,sCAoBhB"}
@@ -0,0 +1,17 @@
1
+ import { CanvasSize } from '../../coordinates/transform.cjs';
2
+ import { Point, PointId } from '../../geometry/point.cjs';
3
+ import { MathViewport } from '../../schemas/viewport.schema.cjs';
4
+ export interface PointShapeProps {
5
+ id: PointId;
6
+ position: Point;
7
+ viewport: MathViewport;
8
+ canvas: CanvasSize;
9
+ selected?: boolean;
10
+ connectable?: boolean;
11
+ snapTarget?: boolean;
12
+ label?: string;
13
+ color?: string;
14
+ feedbackRingColor?: string;
15
+ feedbackRingDashed?: boolean;
16
+ }
17
+ export declare function PointShape({ id, position, viewport, canvas, selected, connectable, snapTarget, label, color, feedbackRingColor, feedbackRingDashed, }: PointShapeProps): import("react").JSX.Element;
@@ -0,0 +1,18 @@
1
+ import { CanvasSize } from '../../coordinates/transform.js';
2
+ import { Point, PointId } from '../../geometry/point.js';
3
+ import { MathViewport } from '../../schemas/viewport.schema.js';
4
+ export interface PointShapeProps {
5
+ id: PointId;
6
+ position: Point;
7
+ viewport: MathViewport;
8
+ canvas: CanvasSize;
9
+ selected?: boolean;
10
+ connectable?: boolean;
11
+ snapTarget?: boolean;
12
+ label?: string;
13
+ color?: string;
14
+ feedbackRingColor?: string;
15
+ feedbackRingDashed?: boolean;
16
+ }
17
+ export declare function PointShape({ id, position, viewport, canvas, selected, connectable, snapTarget, label, color, feedbackRingColor, feedbackRingDashed, }: PointShapeProps): import("react").JSX.Element;
18
+ //# sourceMappingURL=PointShape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PointShape.d.ts","sourceRoot":"","sources":["../../../src/renderer/shapes/PointShape.tsx"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAC3E,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAGjE,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,CAAA;IACX,QAAQ,EAAE,KAAK,CAAA;IACf,QAAQ,EAAE,YAAY,CAAA;IACtB,MAAM,EAAE,UAAU,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAeD,wBAAgB,UAAU,CAAC,EACzB,EAAE,EACF,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,QAAgB,EAChB,WAAmB,EACnB,UAAkB,EAClB,KAAK,EACL,KAAiB,EACjB,iBAAiB,EACjB,kBAA0B,GAC3B,EAAE,eAAe,+BAuDjB"}
@@ -0,0 +1,17 @@
1
+ import { CanvasSize } from '../../coordinates/transform.cjs';
2
+ import { Point } from '../../geometry/point.cjs';
3
+ import { MathViewport } from '../../schemas/viewport.schema.cjs';
4
+ export interface SegmentShapeProps {
5
+ id: string;
6
+ from: Point;
7
+ to: Point;
8
+ viewport: MathViewport;
9
+ canvas: CanvasSize;
10
+ color?: string;
11
+ strokeWidth?: number;
12
+ dashed?: boolean;
13
+ selected?: boolean;
14
+ opacity?: number;
15
+ listening?: boolean;
16
+ }
17
+ export declare function SegmentShape({ id, from, to, viewport, canvas, color, strokeWidth, dashed, selected, opacity, listening, }: SegmentShapeProps): import("react").JSX.Element;
@@ -0,0 +1,18 @@
1
+ import { CanvasSize } from '../../coordinates/transform.js';
2
+ import { Point } from '../../geometry/point.js';
3
+ import { MathViewport } from '../../schemas/viewport.schema.js';
4
+ export interface SegmentShapeProps {
5
+ id: string;
6
+ from: Point;
7
+ to: Point;
8
+ viewport: MathViewport;
9
+ canvas: CanvasSize;
10
+ color?: string;
11
+ strokeWidth?: number;
12
+ dashed?: boolean;
13
+ selected?: boolean;
14
+ opacity?: number;
15
+ listening?: boolean;
16
+ }
17
+ export declare function SegmentShape({ id, from, to, viewport, canvas, color, strokeWidth, dashed, selected, opacity, listening, }: SegmentShapeProps): import("react").JSX.Element;
18
+ //# sourceMappingURL=SegmentShape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SegmentShape.d.ts","sourceRoot":"","sources":["../../../src/renderer/shapes/SegmentShape.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAC3E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAGjE,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,KAAK,CAAA;IACX,EAAE,EAAE,KAAK,CAAA;IACT,QAAQ,EAAE,YAAY,CAAA;IACtB,MAAM,EAAE,UAAU,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,wBAAgB,YAAY,CAAC,EAC3B,EAAE,EACF,IAAI,EACJ,EAAE,EACF,QAAQ,EACR,MAAM,EACN,KAAiB,EACjB,WAAe,EACf,MAAc,EACd,QAAgB,EAChB,OAAW,EACX,SAAgB,GACjB,EAAE,iBAAiB,+BAiBnB"}
@@ -0,0 +1,8 @@
1
+ import { CanvasSize } from '../../coordinates/transform.cjs';
2
+ import { MathViewport } from '../../schemas/viewport.schema.cjs';
3
+ import { SnapResult } from '../../snapping/computeSnap.cjs';
4
+ export declare function SnapMarker({ snap, viewport, canvas, }: {
5
+ snap: SnapResult;
6
+ viewport: MathViewport;
7
+ canvas: CanvasSize;
8
+ }): import("react").JSX.Element;
@@ -0,0 +1,9 @@
1
+ import { CanvasSize } from '../../coordinates/transform.js';
2
+ import { MathViewport } from '../../schemas/viewport.schema.js';
3
+ import { SnapResult } from '../../snapping/computeSnap.js';
4
+ export declare function SnapMarker({ snap, viewport, canvas, }: {
5
+ snap: SnapResult;
6
+ viewport: MathViewport;
7
+ canvas: CanvasSize;
8
+ }): import("react").JSX.Element;
9
+ //# sourceMappingURL=SnapMarker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SnapMarker.d.ts","sourceRoot":"","sources":["../../../src/renderer/shapes/SnapMarker.tsx"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAgB5D,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,QAAQ,EACR,MAAM,GACP,EAAE;IACD,IAAI,EAAE,UAAU,CAAA;IAChB,QAAQ,EAAE,YAAY,CAAA;IACtB,MAAM,EAAE,UAAU,CAAA;CACnB,+BAyBA"}
@@ -0,0 +1,18 @@
1
+ export interface StrokedLineProps {
2
+ id: string;
3
+ a: {
4
+ x: number;
5
+ y: number;
6
+ };
7
+ b: {
8
+ x: number;
9
+ y: number;
10
+ };
11
+ color: string;
12
+ strokeWidth: number;
13
+ dashed: boolean;
14
+ selected: boolean;
15
+ opacity: number;
16
+ listening: boolean;
17
+ }
18
+ export declare function StrokedLine({ id, a, b, color, strokeWidth, dashed, selected, opacity, listening, }: StrokedLineProps): import("react").JSX.Element;
@@ -0,0 +1,19 @@
1
+ export interface StrokedLineProps {
2
+ id: string;
3
+ a: {
4
+ x: number;
5
+ y: number;
6
+ };
7
+ b: {
8
+ x: number;
9
+ y: number;
10
+ };
11
+ color: string;
12
+ strokeWidth: number;
13
+ dashed: boolean;
14
+ selected: boolean;
15
+ opacity: number;
16
+ listening: boolean;
17
+ }
18
+ export declare function StrokedLine({ id, a, b, color, strokeWidth, dashed, selected, opacity, listening, }: StrokedLineProps): import("react").JSX.Element;
19
+ //# sourceMappingURL=StrokedLine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StrokedLine.d.ts","sourceRoot":"","sources":["../../../src/renderer/shapes/StrokedLine.tsx"],"names":[],"mappings":"AAmBA,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3B,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,wBAAgB,WAAW,CAAC,EAC1B,EAAE,EACF,CAAC,EACD,CAAC,EACD,KAAK,EACL,WAAW,EACX,MAAM,EACN,QAAQ,EACR,OAAO,EACP,SAAS,GACV,EAAE,gBAAgB,+BAclB"}
@@ -0,0 +1,71 @@
1
+ import { GeometryExercise } from '../schemas/exercise.schema.cjs';
2
+ import { GeometryState } from '../schemas/geometryState.schema.cjs';
3
+ import { Store } from '../store/createStore.cjs';
4
+ import { ConstructionNotice, StudentGeometryChangeMeta, StudentState } from '../store/studentStore.cjs';
5
+ import { CheckGeometryAnswerResult } from '../validation/checkGeometryAnswer.cjs';
6
+ import { GeometryValidationFeedback } from '../validation/types.cjs';
7
+ /** Why the component cannot mount: `source` names the prop at fault. */
8
+ export interface StudentGeometryExerciseIssue {
9
+ source: 'exercise' | 'value';
10
+ path: Array<string | number>;
11
+ message: string;
12
+ }
13
+ export type StudentExerciseInputs = {
14
+ success: true;
15
+ exercise: GeometryExercise;
16
+ attempt: GeometryState;
17
+ exerciseFingerprint: string;
18
+ attemptFingerprint: string;
19
+ } | {
20
+ success: false;
21
+ issues: StudentGeometryExerciseIssue[];
22
+ };
23
+ /**
24
+ * Both props, loaded the way Check loads them: the exercise through the
25
+ * solution-free grading load, so a malformed authored solution never stops a
26
+ * student working (ADR 0015), and the value normalized against that exercise.
27
+ * An absent value — `undefined` or `null` — is a fresh attempt.
28
+ */
29
+ export declare function loadStudentExerciseInputs(exerciseInput: unknown, valueInput: unknown): StudentExerciseInputs;
30
+ /**
31
+ * One mounted component's store, and the fingerprints of the inputs it last
32
+ * applied. The value fingerprint is what makes a value "arrive": only a value
33
+ * that differs from the last one applied is compared with the store at all, so
34
+ * a host that never passes one does not wipe the student's work on re-render.
35
+ */
36
+ export interface StudentExerciseSession {
37
+ store: Store<StudentState>;
38
+ exercise: string;
39
+ value: string;
40
+ }
41
+ export declare function createStudentExerciseSession(inputs: Extract<StudentExerciseInputs, {
42
+ success: true;
43
+ }>): StudentExerciseSession;
44
+ /**
45
+ * Applies newly loaded props to the session's store. A different exercise
46
+ * replaces exercise and attempt together; a different value replaces the
47
+ * attempt, unless it is the store's own attempt handed back — an echo, which
48
+ * keeps history. Neither replacement records a receipt, so neither reaches
49
+ * `onChange`.
50
+ */
51
+ export declare function syncStudentExerciseSession(session: StudentExerciseSession, inputs: Extract<StudentExerciseInputs, {
52
+ success: true;
53
+ }>): void;
54
+ export interface StudentExerciseListeners {
55
+ onChange(attempt: GeometryState, meta: StudentGeometryChangeMeta): void;
56
+ onNotice?(notice: ConstructionNotice): void;
57
+ }
58
+ /**
59
+ * One `onChange` per completed-action receipt and one `onNotice` per refused
60
+ * construction, read off the store's transitions rather than off renders. The
61
+ * store writes a new notice object for every refusal, so a repeated one is
62
+ * reported again. `listeners` is read on each event, so a host's callbacks may
63
+ * change identity freely.
64
+ */
65
+ export declare function subscribeStudentExerciseEvents(store: Store<StudentState>, listeners: () => StudentExerciseListeners): () => void;
66
+ /**
67
+ * The feedback a check result carries, while it still describes what is on the
68
+ * canvas: both fingerprints must equal the current ones. Anything else — a
69
+ * failed check, an edit, a reset, a replacement — shows no feedback.
70
+ */
71
+ export declare function currentFeedback(result: CheckGeometryAnswerResult | null | undefined, exercise: GeometryExercise, geometry: GeometryState): GeometryValidationFeedback | null;
@@ -0,0 +1,72 @@
1
+ import { GeometryExercise } from '../schemas/exercise.schema.js';
2
+ import { GeometryState } from '../schemas/geometryState.schema.js';
3
+ import { Store } from '../store/createStore.js';
4
+ import { ConstructionNotice, StudentGeometryChangeMeta, StudentState } from '../store/studentStore.js';
5
+ import { CheckGeometryAnswerResult } from '../validation/checkGeometryAnswer.js';
6
+ import { GeometryValidationFeedback } from '../validation/types.js';
7
+ /** Why the component cannot mount: `source` names the prop at fault. */
8
+ export interface StudentGeometryExerciseIssue {
9
+ source: 'exercise' | 'value';
10
+ path: Array<string | number>;
11
+ message: string;
12
+ }
13
+ export type StudentExerciseInputs = {
14
+ success: true;
15
+ exercise: GeometryExercise;
16
+ attempt: GeometryState;
17
+ exerciseFingerprint: string;
18
+ attemptFingerprint: string;
19
+ } | {
20
+ success: false;
21
+ issues: StudentGeometryExerciseIssue[];
22
+ };
23
+ /**
24
+ * Both props, loaded the way Check loads them: the exercise through the
25
+ * solution-free grading load, so a malformed authored solution never stops a
26
+ * student working (ADR 0015), and the value normalized against that exercise.
27
+ * An absent value — `undefined` or `null` — is a fresh attempt.
28
+ */
29
+ export declare function loadStudentExerciseInputs(exerciseInput: unknown, valueInput: unknown): StudentExerciseInputs;
30
+ /**
31
+ * One mounted component's store, and the fingerprints of the inputs it last
32
+ * applied. The value fingerprint is what makes a value "arrive": only a value
33
+ * that differs from the last one applied is compared with the store at all, so
34
+ * a host that never passes one does not wipe the student's work on re-render.
35
+ */
36
+ export interface StudentExerciseSession {
37
+ store: Store<StudentState>;
38
+ exercise: string;
39
+ value: string;
40
+ }
41
+ export declare function createStudentExerciseSession(inputs: Extract<StudentExerciseInputs, {
42
+ success: true;
43
+ }>): StudentExerciseSession;
44
+ /**
45
+ * Applies newly loaded props to the session's store. A different exercise
46
+ * replaces exercise and attempt together; a different value replaces the
47
+ * attempt, unless it is the store's own attempt handed back — an echo, which
48
+ * keeps history. Neither replacement records a receipt, so neither reaches
49
+ * `onChange`.
50
+ */
51
+ export declare function syncStudentExerciseSession(session: StudentExerciseSession, inputs: Extract<StudentExerciseInputs, {
52
+ success: true;
53
+ }>): void;
54
+ export interface StudentExerciseListeners {
55
+ onChange(attempt: GeometryState, meta: StudentGeometryChangeMeta): void;
56
+ onNotice?(notice: ConstructionNotice): void;
57
+ }
58
+ /**
59
+ * One `onChange` per completed-action receipt and one `onNotice` per refused
60
+ * construction, read off the store's transitions rather than off renders. The
61
+ * store writes a new notice object for every refusal, so a repeated one is
62
+ * reported again. `listeners` is read on each event, so a host's callbacks may
63
+ * change identity freely.
64
+ */
65
+ export declare function subscribeStudentExerciseEvents(store: Store<StudentState>, listeners: () => StudentExerciseListeners): () => void;
66
+ /**
67
+ * The feedback a check result carries, while it still describes what is on the
68
+ * canvas: both fingerprints must equal the current ones. Anything else — a
69
+ * failed check, an edit, a reset, a replacement — shows no feedback.
70
+ */
71
+ export declare function currentFeedback(result: CheckGeometryAnswerResult | null | undefined, exercise: GeometryExercise, geometry: GeometryState): GeometryValidationFeedback | null;
72
+ //# sourceMappingURL=studentExerciseSession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"studentExerciseSession.d.ts","sourceRoot":"","sources":["../../src/renderer/studentExerciseSession.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAIL,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,EAC9B,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAOlF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAA;AAGrE,wEAAwE;AACxE,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,UAAU,GAAG,OAAO,CAAA;IAC5B,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,MAAM,qBAAqB,GAC7B;IACE,OAAO,EAAE,IAAI,CAAA;IACb,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,OAAO,EAAE,aAAa,CAAA;IACtB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,kBAAkB,EAAE,MAAM,CAAA;CAC3B,GACD;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,4BAA4B,EAAE,CAAA;CAAE,CAAA;AAE9D;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,OAAO,EACtB,UAAU,EAAE,OAAO,GAClB,qBAAqB,CAyBvB;AASD;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAA;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,OAAO,CAAC,qBAAqB,EAAE;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,CAAC,GACxD,sBAAsB,CAMxB;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,sBAAsB,EAC/B,MAAM,EAAE,OAAO,CAAC,qBAAqB,EAAE;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,CAAC,GACxD,IAAI,CAaN;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,yBAAyB,GAAG,IAAI,CAAA;IACvE,QAAQ,CAAC,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAA;CAC5C;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,EAC1B,SAAS,EAAE,MAAM,wBAAwB,GACxC,MAAM,IAAI,CAaZ;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,yBAAyB,GAAG,IAAI,GAAG,SAAS,EACpD,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,aAAa,GACtB,0BAA0B,GAAG,IAAI,CAInC"}
@@ -0,0 +1,44 @@
1
+ import { CanvasSize } from '../coordinates/transform.cjs';
2
+ import { SceneEntity } from '../geometry/hitTest.cjs';
3
+ import { Point, PointId } from '../geometry/point.cjs';
4
+ import { ConstructionEndpoint } from '../store/constructionCommand.cjs';
5
+ import { SnapResult } from '../snapping/computeSnap.cjs';
6
+ import { MathViewport } from '../schemas/viewport.schema.cjs';
7
+ import { ObjectTypeName } from '../schemas/objectTypeName.schema.cjs';
8
+ import { ScreenPoint } from './gesturePolicy.cjs';
9
+ interface UseConnectionPreviewArgs {
10
+ points: ReadonlyMap<PointId, Point>;
11
+ viewport: MathViewport;
12
+ canvas: CanvasSize;
13
+ pendingObjectType: ObjectTypeName | null;
14
+ pendingFirstPointId: PointId | null;
15
+ connect: (from: ConstructionEndpoint, to: ConstructionEndpoint) => void;
16
+ pick: (id: PointId) => void;
17
+ objects?: readonly SceneEntity[];
18
+ isSnapTarget?: (id: PointId) => boolean;
19
+ canCreatePoints?: boolean;
20
+ preserveCreatedPointOrigins?: boolean;
21
+ }
22
+ /**
23
+ * The shared "tap two points, or drag from one to another" gesture behind
24
+ * building a segment or a line, used identically by the teacher and student
25
+ * canvases so the two roles can never drift out of visual or interaction sync.
26
+ *
27
+ * It resolves endpoints and draws the preview; it does not listen to a single
28
+ * event. `usePointerGestures` owns the pointer lifecycle and calls in with
29
+ * `press`, `drag`, `release` and `cancel`, already classified against the drag
30
+ * threshold (RFC 0004 § Decision 4).
31
+ */
32
+ export declare function useConnectionPreview({ points, viewport, canvas, pendingObjectType, pendingFirstPointId, connect, pick, objects, isSnapTarget, canCreatePoints, preserveCreatedPointOrigins, }: UseConnectionPreviewArgs): {
33
+ connecting: boolean;
34
+ previewPoints: number[] | null;
35
+ snapTargetId: string | null;
36
+ snapPreview: SnapResult | null;
37
+ press: (pointer: ScreenPoint, pressedPointId: PointId | null) => void;
38
+ drag: (pointer: ScreenPoint) => void;
39
+ hover: (pointer: ScreenPoint | null) => void;
40
+ release: (pointer: ScreenPoint, releasedOnPointId: PointId | null, dragging: boolean) => boolean;
41
+ cancel: () => void;
42
+ };
43
+ export type ConnectionPreview = ReturnType<typeof useConnectionPreview>;
44
+ export {};
@@ -0,0 +1,45 @@
1
+ import { CanvasSize } from '../coordinates/transform.js';
2
+ import { SceneEntity } from '../geometry/hitTest.js';
3
+ import { Point, PointId } from '../geometry/point.js';
4
+ import { ConstructionEndpoint } from '../store/constructionCommand.js';
5
+ import { SnapResult } from '../snapping/computeSnap.js';
6
+ import { MathViewport } from '../schemas/viewport.schema.js';
7
+ import { ObjectTypeName } from '../schemas/objectTypeName.schema.js';
8
+ import { ScreenPoint } from './gesturePolicy.js';
9
+ interface UseConnectionPreviewArgs {
10
+ points: ReadonlyMap<PointId, Point>;
11
+ viewport: MathViewport;
12
+ canvas: CanvasSize;
13
+ pendingObjectType: ObjectTypeName | null;
14
+ pendingFirstPointId: PointId | null;
15
+ connect: (from: ConstructionEndpoint, to: ConstructionEndpoint) => void;
16
+ pick: (id: PointId) => void;
17
+ objects?: readonly SceneEntity[];
18
+ isSnapTarget?: (id: PointId) => boolean;
19
+ canCreatePoints?: boolean;
20
+ preserveCreatedPointOrigins?: boolean;
21
+ }
22
+ /**
23
+ * The shared "tap two points, or drag from one to another" gesture behind
24
+ * building a segment or a line, used identically by the teacher and student
25
+ * canvases so the two roles can never drift out of visual or interaction sync.
26
+ *
27
+ * It resolves endpoints and draws the preview; it does not listen to a single
28
+ * event. `usePointerGestures` owns the pointer lifecycle and calls in with
29
+ * `press`, `drag`, `release` and `cancel`, already classified against the drag
30
+ * threshold (RFC 0004 § Decision 4).
31
+ */
32
+ export declare function useConnectionPreview({ points, viewport, canvas, pendingObjectType, pendingFirstPointId, connect, pick, objects, isSnapTarget, canCreatePoints, preserveCreatedPointOrigins, }: UseConnectionPreviewArgs): {
33
+ connecting: boolean;
34
+ previewPoints: number[] | null;
35
+ snapTargetId: string | null;
36
+ snapPreview: SnapResult | null;
37
+ press: (pointer: ScreenPoint, pressedPointId: PointId | null) => void;
38
+ drag: (pointer: ScreenPoint) => void;
39
+ hover: (pointer: ScreenPoint | null) => void;
40
+ release: (pointer: ScreenPoint, releasedOnPointId: PointId | null, dragging: boolean) => boolean;
41
+ cancel: () => void;
42
+ };
43
+ export type ConnectionPreview = ReturnType<typeof useConnectionPreview>;
44
+ export {};
45
+ //# sourceMappingURL=useConnectionPreview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useConnectionPreview.d.ts","sourceRoot":"","sources":["../../src/renderer/useConnectionPreview.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAExE,OAAO,EAA8B,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACrF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAElD,UAAU,wBAAwB;IAChC,MAAM,EAAE,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IACnC,QAAQ,EAAE,YAAY,CAAA;IACtB,MAAM,EAAE,UAAU,CAAA;IAClB,iBAAiB,EAAE,cAAc,GAAG,IAAI,CAAA;IACxC,mBAAmB,EAAE,OAAO,GAAG,IAAI,CAAA;IAKnC,OAAO,EAAE,CAAC,IAAI,EAAE,oBAAoB,EAAE,EAAE,EAAE,oBAAoB,KAAK,IAAI,CAAA;IAIvE,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,CAAA;IAG3B,OAAO,CAAC,EAAE,SAAS,WAAW,EAAE,CAAA;IAMhC,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,OAAO,CAAA;IAIvC,eAAe,CAAC,EAAE,OAAO,CAAA;IAKzB,2BAA2B,CAAC,EAAE,OAAO,CAAA;CACtC;AAgCD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,MAAM,EACN,QAAQ,EACR,MAAM,EACN,iBAAiB,EACjB,mBAAmB,EACnB,OAAO,EACP,IAAI,EACJ,OAAY,EACZ,YAAY,EACZ,eAAuB,EACvB,2BAAkC,GACnC,EAAE,wBAAwB;;;;;qBAyED,WAAW,kBAAkB,OAAO,GAAG,IAAI,KAAG,IAAI;oBAuDnD,WAAW,KAAG,IAAI;qBASjB,WAAW,GAAG,IAAI,KAAG,IAAI;uBAsDtC,WAAW,qBACD,OAAO,GAAG,IAAI,YACvB,OAAO,KAChB,OAAO;kBAyCS,IAAI;EAqBxB;AAED,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAA"}
@@ -0,0 +1,28 @@
1
+ import { KonvaEventObject } from 'konva/lib/Node';
2
+ import { CanvasSize } from '../coordinates/transform.cjs';
3
+ import { SceneEntity } from '../geometry/hitTest.cjs';
4
+ import { EntityId } from '../geometry/entityModel.cjs';
5
+ import { Point, PointId } from '../geometry/point.cjs';
6
+ import { MathViewport } from '../schemas/viewport.schema.cjs';
7
+ import { SnapResult } from '../snapping/computeSnap.cjs';
8
+ export interface SnapPlacement {
9
+ position: Point;
10
+ snap: SnapResult | null;
11
+ }
12
+ interface UsePlacementSnapArgs {
13
+ points: ReadonlyMap<PointId, Point>;
14
+ objects: readonly SceneEntity[];
15
+ viewport: MathViewport;
16
+ canvas: CanvasSize;
17
+ showGrid?: boolean;
18
+ isSnapTarget?: (id: EntityId) => boolean;
19
+ active: boolean;
20
+ }
21
+ export declare function usePlacementSnap({ points, objects, viewport, canvas, showGrid, isSnapTarget, active, }: UsePlacementSnapArgs): {
22
+ snap: SnapResult | null;
23
+ trackAt: (pointer: Point) => void;
24
+ trackPointer: (event: KonvaEventObject<MouseEvent | TouchEvent | PointerEvent>) => void;
25
+ clearPointer: () => void;
26
+ resolvePlacement: (pointer: Point) => SnapPlacement;
27
+ };
28
+ export {};
@@ -0,0 +1,29 @@
1
+ import { KonvaEventObject } from 'konva/lib/Node';
2
+ import { CanvasSize } from '../coordinates/transform.js';
3
+ import { SceneEntity } from '../geometry/hitTest.js';
4
+ import { EntityId } from '../geometry/entityModel.js';
5
+ import { Point, PointId } from '../geometry/point.js';
6
+ import { MathViewport } from '../schemas/viewport.schema.js';
7
+ import { SnapResult } from '../snapping/computeSnap.js';
8
+ export interface SnapPlacement {
9
+ position: Point;
10
+ snap: SnapResult | null;
11
+ }
12
+ interface UsePlacementSnapArgs {
13
+ points: ReadonlyMap<PointId, Point>;
14
+ objects: readonly SceneEntity[];
15
+ viewport: MathViewport;
16
+ canvas: CanvasSize;
17
+ showGrid?: boolean;
18
+ isSnapTarget?: (id: EntityId) => boolean;
19
+ active: boolean;
20
+ }
21
+ export declare function usePlacementSnap({ points, objects, viewport, canvas, showGrid, isSnapTarget, active, }: UsePlacementSnapArgs): {
22
+ snap: SnapResult | null;
23
+ trackAt: (pointer: Point) => void;
24
+ trackPointer: (event: KonvaEventObject<MouseEvent | TouchEvent | PointerEvent>) => void;
25
+ clearPointer: () => void;
26
+ resolvePlacement: (pointer: Point) => SnapPlacement;
27
+ };
28
+ export {};
29
+ //# sourceMappingURL=usePlacementSnap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePlacementSnap.d.ts","sourceRoot":"","sources":["../../src/renderer/usePlacementSnap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAKtE,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,KAAK,CAAA;IACf,IAAI,EAAE,UAAU,GAAG,IAAI,CAAA;CACxB;AAED,UAAU,oBAAoB;IAC5B,MAAM,EAAE,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IACnC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAA;IAC/B,QAAQ,EAAE,YAAY,CAAA;IACtB,MAAM,EAAE,UAAU,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAIlB,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAA;IAGxC,MAAM,EAAE,OAAO,CAAA;CAChB;AAID,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,OAAO,EACP,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,MAAM,GACP,EAAE,oBAAoB;;uBASK,KAAK;0BASF,gBAAgB,CAAC,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;;gCAalD,KAAK,KAAG,aAAa;EAQzD"}
@@ -0,0 +1,46 @@
1
+ import { RefObject } from 'react';
2
+ import { Stage } from 'konva/lib/Stage';
3
+ import { CanvasSize } from '../coordinates/transform.cjs';
4
+ import { PointId } from '../geometry/point.cjs';
5
+ import { ObjectTypeName } from '../schemas/objectTypeName.schema.cjs';
6
+ import { Store } from '../store/createStore.cjs';
7
+ import { ScreenPoint } from './gesturePolicy.cjs';
8
+ import { ConnectionPreview } from './useConnectionPreview.cjs';
9
+ type EpochStore = Pick<Store<{
10
+ interactionEpoch?: number;
11
+ }>, 'getState' | 'subscribe'>;
12
+ export interface PointerGestureHandlers {
13
+ tool: ObjectTypeName | null;
14
+ connection: ConnectionPreview;
15
+ placement: {
16
+ trackAt(pointer: ScreenPoint): void;
17
+ clearPointer(): void;
18
+ };
19
+ pointOnScreen(id: PointId): ScreenPoint | null;
20
+ canDragPoint(id: PointId): boolean;
21
+ dragPoint(id: PointId, to: ScreenPoint): void;
22
+ endPointDrag(id: PointId): void;
23
+ tapPoint(id: PointId): void;
24
+ tapObject(id: string): void;
25
+ tapStage(pointer: ScreenPoint): void;
26
+ abandonConstruction(): void;
27
+ disarmTool(): void;
28
+ }
29
+ /**
30
+ * The one pointer lifecycle behind both canvases (RFC 0004 § Decision 4,
31
+ * ADR 0011).
32
+ *
33
+ * Native Pointer Events on the stage's container, one contact at a time,
34
+ * identified by `pointerId` and captured while it is down. A contact is a tap
35
+ * until it moves its pointer type's threshold and a drag from then on, and it
36
+ * becomes geometry only through a normal release on the canvas — no Konva
37
+ * click, tap or drag handler, and no compatibility mouse event, can build or
38
+ * select anything on its own, so one contact is at most one creation.
39
+ *
40
+ * Every other ending is a cancellation, and every cancellation clears the
41
+ * preview, the snap marker, the pending endpoint and the contact, and closes a
42
+ * point drag's undo step where it stands: a dragged point keeps the last
43
+ * position it was moved to, and one Undo takes it back.
44
+ */
45
+ export declare function usePointerGestures(stageRef: RefObject<Stage | null>, canvas: CanvasSize, store: EpochStore, handlers: PointerGestureHandlers): void;
46
+ export {};