@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.
- package/README.md +1101 -0
- package/dist/coordinates/grid.d.cts +8 -0
- package/dist/coordinates/grid.d.ts +9 -0
- package/dist/coordinates/grid.d.ts.map +1 -0
- package/dist/coordinates/lineClipping.d.cts +3 -0
- package/dist/coordinates/lineClipping.d.ts +4 -0
- package/dist/coordinates/lineClipping.d.ts.map +1 -0
- package/dist/coordinates/transform.d.cts +18 -0
- package/dist/coordinates/transform.d.ts +19 -0
- package/dist/coordinates/transform.d.ts.map +1 -0
- package/dist/core.cjs +1 -0
- package/dist/core.mjs +4 -0
- package/dist/entries/core.d.cts +16 -0
- package/dist/entries/core.d.ts +17 -0
- package/dist/entries/core.d.ts.map +1 -0
- package/dist/entries/react.d.cts +18 -0
- package/dist/entries/react.d.ts +19 -0
- package/dist/entries/react.d.ts.map +1 -0
- package/dist/entries/schemas.d.cts +14 -0
- package/dist/entries/schemas.d.ts +15 -0
- package/dist/entries/schemas.d.ts.map +1 -0
- package/dist/entries/validation.d.cts +12 -0
- package/dist/entries/validation.d.ts +13 -0
- package/dist/entries/validation.d.ts.map +1 -0
- package/dist/exercise.schema-BV2b7rtN.cjs +2 -0
- package/dist/exercise.schema-BV2b7rtN.cjs.map +1 -0
- package/dist/exercise.schema-ckVBW9XA.js +212 -0
- package/dist/exercise.schema-ckVBW9XA.js.map +1 -0
- package/dist/geometry/distance.d.cts +9 -0
- package/dist/geometry/distance.d.ts +10 -0
- package/dist/geometry/distance.d.ts.map +1 -0
- package/dist/geometry/entities/circle.d.cts +36 -0
- package/dist/geometry/entities/circle.d.ts +37 -0
- package/dist/geometry/entities/circle.d.ts.map +1 -0
- package/dist/geometry/entities/index.d.cts +60 -0
- package/dist/geometry/entities/index.d.ts +61 -0
- package/dist/geometry/entities/index.d.ts.map +1 -0
- package/dist/geometry/entities/line.d.cts +43 -0
- package/dist/geometry/entities/line.d.ts +44 -0
- package/dist/geometry/entities/line.d.ts.map +1 -0
- package/dist/geometry/entities/point.d.cts +27 -0
- package/dist/geometry/entities/point.d.ts +28 -0
- package/dist/geometry/entities/point.d.ts.map +1 -0
- package/dist/geometry/entities/relations.d.cts +27 -0
- package/dist/geometry/entities/relations.d.ts +28 -0
- package/dist/geometry/entities/relations.d.ts.map +1 -0
- package/dist/geometry/entities/segment.d.cts +45 -0
- package/dist/geometry/entities/segment.d.ts +46 -0
- package/dist/geometry/entities/segment.d.ts.map +1 -0
- package/dist/geometry/entityCapabilities.d.cts +2 -0
- package/dist/geometry/entityCapabilities.d.ts +3 -0
- package/dist/geometry/entityCapabilities.d.ts.map +1 -0
- package/dist/geometry/entityModel.d.cts +139 -0
- package/dist/geometry/entityModel.d.ts +140 -0
- package/dist/geometry/entityModel.d.ts.map +1 -0
- package/dist/geometry/entityRecord.d.cts +27 -0
- package/dist/geometry/entityRecord.d.ts +28 -0
- package/dist/geometry/entityRecord.d.ts.map +1 -0
- package/dist/geometry/evaluateGraph.d.cts +37 -0
- package/dist/geometry/evaluateGraph.d.ts +38 -0
- package/dist/geometry/evaluateGraph.d.ts.map +1 -0
- package/dist/geometry/geometryObject.d.cts +4 -0
- package/dist/geometry/geometryObject.d.ts +5 -0
- package/dist/geometry/geometryObject.d.ts.map +1 -0
- package/dist/geometry/goalCandidate.d.cts +8 -0
- package/dist/geometry/goalCandidate.d.ts +9 -0
- package/dist/geometry/goalCandidate.d.ts.map +1 -0
- package/dist/geometry/hitTest.d.cts +23 -0
- package/dist/geometry/hitTest.d.ts +24 -0
- package/dist/geometry/hitTest.d.ts.map +1 -0
- package/dist/geometry/point.d.cts +5 -0
- package/dist/geometry/point.d.ts +6 -0
- package/dist/geometry/point.d.ts.map +1 -0
- package/dist/geometry/pointOrigin.d.cts +5 -0
- package/dist/geometry/pointOrigin.d.ts +6 -0
- package/dist/geometry/pointOrigin.d.ts.map +1 -0
- package/dist/geometry/v1Bridge.d.cts +41 -0
- package/dist/geometry/v1Bridge.d.ts +42 -0
- package/dist/geometry/v1Bridge.d.ts.map +1 -0
- package/dist/geometryAttemptStatus-5L_q6-9l.js +184 -0
- package/dist/geometryAttemptStatus-5L_q6-9l.js.map +1 -0
- package/dist/geometryAttemptStatus-N_XHIkiS.cjs +2 -0
- package/dist/geometryAttemptStatus-N_XHIkiS.cjs.map +1 -0
- package/dist/geometryState.schema-D0ixyGYE.js +955 -0
- package/dist/geometryState.schema-D0ixyGYE.js.map +1 -0
- package/dist/geometryState.schema-DKQ-durx.cjs +2 -0
- package/dist/geometryState.schema-DKQ-durx.cjs.map +1 -0
- package/dist/goals-C3ZwbEh_.js +451 -0
- package/dist/goals-C3ZwbEh_.js.map +1 -0
- package/dist/goals-CxR5qPDC.cjs +2 -0
- package/dist/goals-CxR5qPDC.cjs.map +1 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.cts +4 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.mjs +10 -0
- package/dist/measure/geometryAdapter.d.cts +26 -0
- package/dist/measure/geometryAdapter.d.ts +27 -0
- package/dist/measure/geometryAdapter.d.ts.map +1 -0
- package/dist/measure/kernel.d.cts +25 -0
- package/dist/measure/kernel.d.ts +26 -0
- package/dist/measure/kernel.d.ts.map +1 -0
- package/dist/numerics/policy.d.cts +17 -0
- package/dist/numerics/policy.d.ts +18 -0
- package/dist/numerics/policy.d.ts.map +1 -0
- package/dist/react-BEcdx1f6.js +1851 -0
- package/dist/react-BEcdx1f6.js.map +1 -0
- package/dist/react-Pp_VSk--.cjs +2 -0
- package/dist/react-Pp_VSk--.cjs.map +1 -0
- package/dist/react.cjs +1 -0
- package/dist/react.mjs +2 -0
- package/dist/renderer/GeometryCanvas.d.cts +14 -0
- package/dist/renderer/GeometryCanvas.d.ts +15 -0
- package/dist/renderer/GeometryCanvas.d.ts.map +1 -0
- package/dist/renderer/GeometryCompanion.d.cts +29 -0
- package/dist/renderer/GeometryCompanion.d.ts +30 -0
- package/dist/renderer/GeometryCompanion.d.ts.map +1 -0
- package/dist/renderer/GeometryGrid.d.cts +7 -0
- package/dist/renderer/GeometryGrid.d.ts +8 -0
- package/dist/renderer/GeometryGrid.d.ts.map +1 -0
- package/dist/renderer/GeometryInstruments.d.cts +7 -0
- package/dist/renderer/GeometryInstruments.d.ts +8 -0
- package/dist/renderer/GeometryInstruments.d.ts.map +1 -0
- package/dist/renderer/StudentGeometryCanvas.d.cts +11 -0
- package/dist/renderer/StudentGeometryCanvas.d.ts +12 -0
- package/dist/renderer/StudentGeometryCanvas.d.ts.map +1 -0
- package/dist/renderer/StudentGeometryExercise.d.cts +36 -0
- package/dist/renderer/StudentGeometryExercise.d.ts +37 -0
- package/dist/renderer/StudentGeometryExercise.d.ts.map +1 -0
- package/dist/renderer/Toolbar.d.cts +7 -0
- package/dist/renderer/Toolbar.d.ts +8 -0
- package/dist/renderer/Toolbar.d.ts.map +1 -0
- package/dist/renderer/deriveRenderableGeometry.d.cts +15 -0
- package/dist/renderer/deriveRenderableGeometry.d.ts +16 -0
- package/dist/renderer/deriveRenderableGeometry.d.ts.map +1 -0
- package/dist/renderer/deriveSemanticScene.d.cts +58 -0
- package/dist/renderer/deriveSemanticScene.d.ts +59 -0
- package/dist/renderer/deriveSemanticScene.d.ts.map +1 -0
- package/dist/renderer/entityDisplayName.d.cts +12 -0
- package/dist/renderer/entityDisplayName.d.ts +13 -0
- package/dist/renderer/entityDisplayName.d.ts.map +1 -0
- package/dist/renderer/gesturePolicy.d.cts +97 -0
- package/dist/renderer/gesturePolicy.d.ts +98 -0
- package/dist/renderer/gesturePolicy.d.ts.map +1 -0
- package/dist/renderer/shapes/CircleShape.d.cts +17 -0
- package/dist/renderer/shapes/CircleShape.d.ts +18 -0
- package/dist/renderer/shapes/CircleShape.d.ts.map +1 -0
- package/dist/renderer/shapes/EntityLabel.d.cts +14 -0
- package/dist/renderer/shapes/EntityLabel.d.ts +15 -0
- package/dist/renderer/shapes/EntityLabel.d.ts.map +1 -0
- package/dist/renderer/shapes/EntityShape.d.cts +18 -0
- package/dist/renderer/shapes/EntityShape.d.ts +19 -0
- package/dist/renderer/shapes/EntityShape.d.ts.map +1 -0
- package/dist/renderer/shapes/LineShape.d.cts +16 -0
- package/dist/renderer/shapes/LineShape.d.ts +17 -0
- package/dist/renderer/shapes/LineShape.d.ts.map +1 -0
- package/dist/renderer/shapes/PointShape.d.cts +17 -0
- package/dist/renderer/shapes/PointShape.d.ts +18 -0
- package/dist/renderer/shapes/PointShape.d.ts.map +1 -0
- package/dist/renderer/shapes/SegmentShape.d.cts +17 -0
- package/dist/renderer/shapes/SegmentShape.d.ts +18 -0
- package/dist/renderer/shapes/SegmentShape.d.ts.map +1 -0
- package/dist/renderer/shapes/SnapMarker.d.cts +8 -0
- package/dist/renderer/shapes/SnapMarker.d.ts +9 -0
- package/dist/renderer/shapes/SnapMarker.d.ts.map +1 -0
- package/dist/renderer/shapes/StrokedLine.d.cts +18 -0
- package/dist/renderer/shapes/StrokedLine.d.ts +19 -0
- package/dist/renderer/shapes/StrokedLine.d.ts.map +1 -0
- package/dist/renderer/studentExerciseSession.d.cts +71 -0
- package/dist/renderer/studentExerciseSession.d.ts +72 -0
- package/dist/renderer/studentExerciseSession.d.ts.map +1 -0
- package/dist/renderer/useConnectionPreview.d.cts +44 -0
- package/dist/renderer/useConnectionPreview.d.ts +45 -0
- package/dist/renderer/useConnectionPreview.d.ts.map +1 -0
- package/dist/renderer/usePlacementSnap.d.cts +28 -0
- package/dist/renderer/usePlacementSnap.d.ts +29 -0
- package/dist/renderer/usePlacementSnap.d.ts.map +1 -0
- package/dist/renderer/usePointerGestures.d.cts +46 -0
- package/dist/renderer/usePointerGestures.d.ts +47 -0
- package/dist/renderer/usePointerGestures.d.ts.map +1 -0
- package/dist/schemas/circle.schema.d.cts +8 -0
- package/dist/schemas/circle.schema.d.ts +9 -0
- package/dist/schemas/circle.schema.d.ts.map +1 -0
- package/dist/schemas/entityDefinition.schema.d.cts +69 -0
- package/dist/schemas/entityDefinition.schema.d.ts +70 -0
- package/dist/schemas/entityDefinition.schema.d.ts.map +1 -0
- package/dist/schemas/entityDocument.d.cts +95 -0
- package/dist/schemas/entityDocument.d.ts +96 -0
- package/dist/schemas/entityDocument.d.ts.map +1 -0
- package/dist/schemas/entityPresentation.schema.d.cts +12 -0
- package/dist/schemas/entityPresentation.schema.d.ts +13 -0
- package/dist/schemas/entityPresentation.schema.d.ts.map +1 -0
- package/dist/schemas/exercise.schema.d.cts +217 -0
- package/dist/schemas/exercise.schema.d.ts +218 -0
- package/dist/schemas/exercise.schema.d.ts.map +1 -0
- package/dist/schemas/exerciseProjection.d.cts +10 -0
- package/dist/schemas/exerciseProjection.d.ts +11 -0
- package/dist/schemas/exerciseProjection.d.ts.map +1 -0
- package/dist/schemas/exerciseV2.schema.d.cts +137 -0
- package/dist/schemas/exerciseV2.schema.d.ts +138 -0
- package/dist/schemas/exerciseV2.schema.d.ts.map +1 -0
- package/dist/schemas/exerciseV3.schema.d.cts +149 -0
- package/dist/schemas/exerciseV3.schema.d.ts +150 -0
- package/dist/schemas/exerciseV3.schema.d.ts.map +1 -0
- package/dist/schemas/geometryObject.schema.d.cts +17 -0
- package/dist/schemas/geometryObject.schema.d.ts +18 -0
- package/dist/schemas/geometryObject.schema.d.ts.map +1 -0
- package/dist/schemas/geometryState.schema.d.cts +64 -0
- package/dist/schemas/geometryState.schema.d.ts +65 -0
- package/dist/schemas/geometryState.schema.d.ts.map +1 -0
- package/dist/schemas/givenElement.schema.d.cts +24 -0
- package/dist/schemas/givenElement.schema.d.ts +25 -0
- package/dist/schemas/givenElement.schema.d.ts.map +1 -0
- package/dist/schemas/goals/createGoal.schema.d.cts +12 -0
- package/dist/schemas/goals/createGoal.schema.d.ts +13 -0
- package/dist/schemas/goals/createGoal.schema.d.ts.map +1 -0
- package/dist/schemas/goals/geometryGoal.schema.d.cts +58 -0
- package/dist/schemas/goals/geometryGoal.schema.d.ts +59 -0
- package/dist/schemas/goals/geometryGoal.schema.d.ts.map +1 -0
- package/dist/schemas/goals/goalKindDeclaration.d.cts +53 -0
- package/dist/schemas/goals/goalKindDeclaration.d.ts +54 -0
- package/dist/schemas/goals/goalKindDeclaration.d.ts.map +1 -0
- package/dist/schemas/goals/midpointGoal.schema.d.cts +9 -0
- package/dist/schemas/goals/midpointGoal.schema.d.ts +10 -0
- package/dist/schemas/goals/midpointGoal.schema.d.ts.map +1 -0
- package/dist/schemas/goals/parallelGoal.schema.d.cts +15 -0
- package/dist/schemas/goals/parallelGoal.schema.d.ts +16 -0
- package/dist/schemas/goals/parallelGoal.schema.d.ts.map +1 -0
- package/dist/schemas/goals/perpendicularGoal.schema.d.cts +15 -0
- package/dist/schemas/goals/perpendicularGoal.schema.d.ts +16 -0
- package/dist/schemas/goals/perpendicularGoal.schema.d.ts.map +1 -0
- package/dist/schemas/goals/segmentLengthGoal.schema.d.cts +9 -0
- package/dist/schemas/goals/segmentLengthGoal.schema.d.ts +10 -0
- package/dist/schemas/goals/segmentLengthGoal.schema.d.ts.map +1 -0
- package/dist/schemas/goals/throughPointsGoal.schema.d.cts +13 -0
- package/dist/schemas/goals/throughPointsGoal.schema.d.ts +14 -0
- package/dist/schemas/goals/throughPointsGoal.schema.d.ts.map +1 -0
- package/dist/schemas/identifier.schema.d.cts +2 -0
- package/dist/schemas/identifier.schema.d.ts +3 -0
- package/dist/schemas/identifier.schema.d.ts.map +1 -0
- package/dist/schemas/line.schema.d.cts +7 -0
- package/dist/schemas/line.schema.d.ts +8 -0
- package/dist/schemas/line.schema.d.ts.map +1 -0
- package/dist/schemas/migrate.d.cts +21 -0
- package/dist/schemas/migrate.d.ts +22 -0
- package/dist/schemas/migrate.d.ts.map +1 -0
- package/dist/schemas/objectTypeName.schema.d.cts +8 -0
- package/dist/schemas/objectTypeName.schema.d.ts +9 -0
- package/dist/schemas/objectTypeName.schema.d.ts.map +1 -0
- package/dist/schemas/point.schema.d.cts +15 -0
- package/dist/schemas/point.schema.d.ts +16 -0
- package/dist/schemas/point.schema.d.ts.map +1 -0
- package/dist/schemas/pointOrigin.schema.d.cts +25 -0
- package/dist/schemas/pointOrigin.schema.d.ts +26 -0
- package/dist/schemas/pointOrigin.schema.d.ts.map +1 -0
- package/dist/schemas/segment.schema.d.cts +8 -0
- package/dist/schemas/segment.schema.d.ts +9 -0
- package/dist/schemas/segment.schema.d.ts.map +1 -0
- package/dist/schemas/v1ToV2.d.cts +37 -0
- package/dist/schemas/v1ToV2.d.ts +38 -0
- package/dist/schemas/v1ToV2.d.ts.map +1 -0
- package/dist/schemas/v2ToV3.d.cts +37 -0
- package/dist/schemas/v2ToV3.d.ts +38 -0
- package/dist/schemas/v2ToV3.d.ts.map +1 -0
- package/dist/schemas/v3ToV4.d.cts +3 -0
- package/dist/schemas/v3ToV4.d.ts +4 -0
- package/dist/schemas/v3ToV4.d.ts.map +1 -0
- package/dist/schemas/viewport.schema.d.cts +3 -0
- package/dist/schemas/viewport.schema.d.ts +4 -0
- package/dist/schemas/viewport.schema.d.ts.map +1 -0
- package/dist/schemas.cjs +1 -0
- package/dist/schemas.mjs +3 -0
- package/dist/snapping/computeSnap.d.cts +30 -0
- package/dist/snapping/computeSnap.d.ts +31 -0
- package/dist/snapping/computeSnap.d.ts.map +1 -0
- package/dist/state/geometryContext.d.cts +40 -0
- package/dist/state/geometryContext.d.ts +41 -0
- package/dist/state/geometryContext.d.ts.map +1 -0
- package/dist/state/resolvePoints.d.cts +51 -0
- package/dist/state/resolvePoints.d.ts +52 -0
- package/dist/state/resolvePoints.d.ts.map +1 -0
- package/dist/store/attemptChange.d.cts +30 -0
- package/dist/store/attemptChange.d.ts +31 -0
- package/dist/store/attemptChange.d.ts.map +1 -0
- package/dist/store/constructionCommand.d.cts +35 -0
- package/dist/store/constructionCommand.d.ts +36 -0
- package/dist/store/constructionCommand.d.ts.map +1 -0
- package/dist/store/constructionIdentity.d.cts +21 -0
- package/dist/store/constructionIdentity.d.ts +22 -0
- package/dist/store/constructionIdentity.d.ts.map +1 -0
- package/dist/store/createStore.d.cts +6 -0
- package/dist/store/createStore.d.ts +7 -0
- package/dist/store/createStore.d.ts.map +1 -0
- package/dist/store/history.d.cts +2 -0
- package/dist/store/history.d.ts +3 -0
- package/dist/store/history.d.ts.map +1 -0
- package/dist/store/studentStore.d.cts +151 -0
- package/dist/store/studentStore.d.ts +152 -0
- package/dist/store/studentStore.d.ts.map +1 -0
- package/dist/store/teacherStore.d.cts +111 -0
- package/dist/store/teacherStore.d.ts +112 -0
- package/dist/store/teacherStore.d.ts.map +1 -0
- package/dist/store/useStoreState.d.cts +2 -0
- package/dist/store/useStoreState.d.ts +3 -0
- package/dist/store/useStoreState.d.ts.map +1 -0
- package/dist/studentStore-CEKTtMCh.js +1162 -0
- package/dist/studentStore-CEKTtMCh.js.map +1 -0
- package/dist/studentStore-DLftfFAl.cjs +2 -0
- package/dist/studentStore-DLftfFAl.cjs.map +1 -0
- package/dist/validation/checkGeometryAnswer.d.cts +63 -0
- package/dist/validation/checkGeometryAnswer.d.ts +64 -0
- package/dist/validation/checkGeometryAnswer.d.ts.map +1 -0
- package/dist/validation/deriveGeometryCanvasFeedback.d.cts +7 -0
- package/dist/validation/deriveGeometryCanvasFeedback.d.ts +8 -0
- package/dist/validation/deriveGeometryCanvasFeedback.d.ts.map +1 -0
- package/dist/validation/exerciseLoad.d.cts +29 -0
- package/dist/validation/exerciseLoad.d.ts +30 -0
- package/dist/validation/exerciseLoad.d.ts.map +1 -0
- package/dist/validation/geometryAttemptStatus.d.cts +23 -0
- package/dist/validation/geometryAttemptStatus.d.ts +24 -0
- package/dist/validation/geometryAttemptStatus.d.ts.map +1 -0
- package/dist/validation/getGeometryExerciseWarnings.d.cts +16 -0
- package/dist/validation/getGeometryExerciseWarnings.d.ts +17 -0
- package/dist/validation/getGeometryExerciseWarnings.d.ts.map +1 -0
- package/dist/validation/goals/create.d.cts +3 -0
- package/dist/validation/goals/create.d.ts +4 -0
- package/dist/validation/goals/create.d.ts.map +1 -0
- package/dist/validation/goals/goalContext.d.cts +44 -0
- package/dist/validation/goals/goalContext.d.ts +45 -0
- package/dist/validation/goals/goalContext.d.ts.map +1 -0
- package/dist/validation/goals/goalKindHandler.d.cts +26 -0
- package/dist/validation/goals/goalKindHandler.d.ts +27 -0
- package/dist/validation/goals/goalKindHandler.d.ts.map +1 -0
- package/dist/validation/goals/index.d.cts +14 -0
- package/dist/validation/goals/index.d.ts +15 -0
- package/dist/validation/goals/index.d.ts.map +1 -0
- package/dist/validation/goals/midpoint.d.cts +4 -0
- package/dist/validation/goals/midpoint.d.ts +5 -0
- package/dist/validation/goals/midpoint.d.ts.map +1 -0
- package/dist/validation/goals/parallel.d.cts +3 -0
- package/dist/validation/goals/parallel.d.ts +4 -0
- package/dist/validation/goals/parallel.d.ts.map +1 -0
- package/dist/validation/goals/perpendicular.d.cts +3 -0
- package/dist/validation/goals/perpendicular.d.ts +4 -0
- package/dist/validation/goals/perpendicular.d.ts.map +1 -0
- package/dist/validation/goals/previewGeometry.d.cts +9 -0
- package/dist/validation/goals/previewGeometry.d.ts +10 -0
- package/dist/validation/goals/previewGeometry.d.ts.map +1 -0
- package/dist/validation/goals/segmentLength.d.cts +3 -0
- package/dist/validation/goals/segmentLength.d.ts +4 -0
- package/dist/validation/goals/segmentLength.d.ts.map +1 -0
- package/dist/validation/goals/throughPoints.d.cts +5 -0
- package/dist/validation/goals/throughPoints.d.ts +6 -0
- package/dist/validation/goals/throughPoints.d.ts.map +1 -0
- package/dist/validation/gradingFingerprints.d.cts +4 -0
- package/dist/validation/gradingFingerprints.d.ts +5 -0
- package/dist/validation/gradingFingerprints.d.ts.map +1 -0
- package/dist/validation/revealGeometryAnswers.d.cts +3 -0
- package/dist/validation/revealGeometryAnswers.d.ts +4 -0
- package/dist/validation/revealGeometryAnswers.d.ts.map +1 -0
- package/dist/validation/revealGeometryAttempt.d.cts +36 -0
- package/dist/validation/revealGeometryAttempt.d.ts +37 -0
- package/dist/validation/revealGeometryAttempt.d.ts.map +1 -0
- package/dist/validation/types.d.cts +58 -0
- package/dist/validation/types.d.ts +59 -0
- package/dist/validation/types.d.ts.map +1 -0
- package/dist/validation/validateGeometryExercise.d.cts +30 -0
- package/dist/validation/validateGeometryExercise.d.ts +31 -0
- package/dist/validation/validateGeometryExercise.d.ts.map +1 -0
- package/dist/validation/validateGeometryState.d.cts +16 -0
- package/dist/validation/validateGeometryState.d.ts +17 -0
- package/dist/validation/validateGeometryState.d.ts.map +1 -0
- package/dist/validation/validateGeometryStateInput.d.cts +22 -0
- package/dist/validation/validateGeometryStateInput.d.ts +23 -0
- package/dist/validation/validateGeometryStateInput.d.ts.map +1 -0
- package/dist/validation.cjs +2 -0
- package/dist/validation.cjs.map +1 -0
- package/dist/validation.mjs +269 -0
- package/dist/validation.mjs.map +1 -0
- 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 {};
|