@mathscan/geometry-engine 0.1.0 → 0.1.1

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 (238) hide show
  1. package/README.md +24 -7
  2. package/dist/core.cjs +1 -1
  3. package/dist/core.mjs +4 -4
  4. package/dist/entries/core.d.cts +1 -1
  5. package/dist/entries/core.d.ts +1 -1
  6. package/dist/entries/core.d.ts.map +1 -1
  7. package/dist/exercise.schema-Bma3qN9P.js +251 -0
  8. package/dist/exercise.schema-Bma3qN9P.js.map +1 -0
  9. package/dist/exercise.schema-Oj5ZH-yO.cjs +2 -0
  10. package/dist/exercise.schema-Oj5ZH-yO.cjs.map +1 -0
  11. package/dist/exerciseLoad-Db9Cigxi.cjs +2 -0
  12. package/dist/exerciseLoad-Db9Cigxi.cjs.map +1 -0
  13. package/dist/{geometryAttemptStatus-5L_q6-9l.js → exerciseLoad-DgeDXYbf.js} +84 -71
  14. package/dist/exerciseLoad-DgeDXYbf.js.map +1 -0
  15. package/dist/geometry/entities/angle.d.cts +56 -0
  16. package/dist/geometry/entities/angle.d.ts +57 -0
  17. package/dist/geometry/entities/angle.d.ts.map +1 -0
  18. package/dist/geometry/entities/circle.d.ts.map +1 -1
  19. package/dist/geometry/entities/index.d.cts +8 -4
  20. package/dist/geometry/entities/index.d.ts +8 -4
  21. package/dist/geometry/entities/index.d.ts.map +1 -1
  22. package/dist/geometry/entities/line.d.ts.map +1 -1
  23. package/dist/geometry/entities/point.d.ts.map +1 -1
  24. package/dist/geometry/entities/relations.d.cts +8 -1
  25. package/dist/geometry/entities/relations.d.ts +8 -1
  26. package/dist/geometry/entities/relations.d.ts.map +1 -1
  27. package/dist/geometry/entities/segment.d.ts.map +1 -1
  28. package/dist/geometry/entityModel.d.cts +21 -3
  29. package/dist/geometry/entityModel.d.ts +21 -3
  30. package/dist/geometry/entityModel.d.ts.map +1 -1
  31. package/dist/geometryState.schema-B5ccMKDa.cjs +2 -0
  32. package/dist/geometryState.schema-B5ccMKDa.cjs.map +1 -0
  33. package/dist/geometryState.schema-CKFPlX8j.js +1177 -0
  34. package/dist/geometryState.schema-CKFPlX8j.js.map +1 -0
  35. package/dist/goals-BlSeniyt.js +563 -0
  36. package/dist/goals-BlSeniyt.js.map +1 -0
  37. package/dist/goals-DLbmBZD8.cjs +2 -0
  38. package/dist/goals-DLbmBZD8.cjs.map +1 -0
  39. package/dist/index.cjs +1 -1
  40. package/dist/index.mjs +8 -8
  41. package/dist/measure/angleType.d.cts +2 -0
  42. package/dist/measure/angleType.d.ts +3 -0
  43. package/dist/measure/angleType.d.ts.map +1 -0
  44. package/dist/measure/geometryAdapter.d.cts +3 -0
  45. package/dist/measure/geometryAdapter.d.ts +3 -0
  46. package/dist/measure/geometryAdapter.d.ts.map +1 -1
  47. package/dist/react-B26_e52I.cjs +2 -0
  48. package/dist/react-B26_e52I.cjs.map +1 -0
  49. package/dist/{react-BEcdx1f6.js → react-B5cGaxH8.js} +738 -513
  50. package/dist/react-B5cGaxH8.js.map +1 -0
  51. package/dist/react.cjs +1 -1
  52. package/dist/react.mjs +1 -1
  53. package/dist/renderer/GeometryCanvas.d.ts.map +1 -1
  54. package/dist/renderer/StudentGeometryCanvas.d.ts.map +1 -1
  55. package/dist/renderer/Toolbar.d.ts.map +1 -1
  56. package/dist/renderer/angleMeasure.d.cts +14 -0
  57. package/dist/renderer/angleMeasure.d.ts +15 -0
  58. package/dist/renderer/angleMeasure.d.ts.map +1 -0
  59. package/dist/renderer/deriveRenderableGeometry.d.cts +1 -0
  60. package/dist/renderer/deriveRenderableGeometry.d.ts +1 -0
  61. package/dist/renderer/deriveRenderableGeometry.d.ts.map +1 -1
  62. package/dist/renderer/deriveSemanticScene.d.ts.map +1 -1
  63. package/dist/renderer/dragSnap.d.cts +14 -0
  64. package/dist/renderer/dragSnap.d.ts +15 -0
  65. package/dist/renderer/dragSnap.d.ts.map +1 -0
  66. package/dist/renderer/shapes/AngleShape.d.cts +19 -0
  67. package/dist/renderer/shapes/AngleShape.d.ts +20 -0
  68. package/dist/renderer/shapes/AngleShape.d.ts.map +1 -0
  69. package/dist/renderer/shapes/EntityLabel.d.cts +9 -1
  70. package/dist/renderer/shapes/EntityLabel.d.ts +9 -1
  71. package/dist/renderer/shapes/EntityLabel.d.ts.map +1 -1
  72. package/dist/renderer/shapes/EntityShape.d.cts +2 -1
  73. package/dist/renderer/shapes/EntityShape.d.ts +2 -1
  74. package/dist/renderer/shapes/EntityShape.d.ts.map +1 -1
  75. package/dist/renderer/useConnectionPreview.d.cts +12 -1
  76. package/dist/renderer/useConnectionPreview.d.ts +12 -1
  77. package/dist/renderer/useConnectionPreview.d.ts.map +1 -1
  78. package/dist/renderer/usePointerGestures.d.cts +1 -1
  79. package/dist/renderer/usePointerGestures.d.ts +1 -1
  80. package/dist/renderer/usePointerGestures.d.ts.map +1 -1
  81. package/dist/schemas/entityDefinition.schema.d.cts +7 -0
  82. package/dist/schemas/entityDefinition.schema.d.ts +7 -0
  83. package/dist/schemas/entityDefinition.schema.d.ts.map +1 -1
  84. package/dist/schemas/entityDocument.d.cts +34 -13
  85. package/dist/schemas/entityDocument.d.ts +34 -13
  86. package/dist/schemas/entityDocument.d.ts.map +1 -1
  87. package/dist/schemas/entityPresentation.schema.d.cts +3 -0
  88. package/dist/schemas/entityPresentation.schema.d.ts +3 -0
  89. package/dist/schemas/entityPresentation.schema.d.ts.map +1 -1
  90. package/dist/schemas/exercise.schema.d.cts +80 -2
  91. package/dist/schemas/exercise.schema.d.ts +80 -2
  92. package/dist/schemas/exercise.schema.d.ts.map +1 -1
  93. package/dist/schemas/exerciseV2.schema.d.cts +57 -0
  94. package/dist/schemas/exerciseV2.schema.d.ts +57 -0
  95. package/dist/schemas/exerciseV2.schema.d.ts.map +1 -1
  96. package/dist/schemas/exerciseV4.schema.d.cts +168 -0
  97. package/dist/schemas/exerciseV4.schema.d.ts +169 -0
  98. package/dist/schemas/exerciseV4.schema.d.ts.map +1 -0
  99. package/dist/schemas/geometryState.schema.d.cts +8 -0
  100. package/dist/schemas/geometryState.schema.d.ts +8 -0
  101. package/dist/schemas/geometryState.schema.d.ts.map +1 -1
  102. package/dist/schemas/goals/angleBisectorGoal.schema.d.cts +15 -0
  103. package/dist/schemas/goals/angleBisectorGoal.schema.d.ts +16 -0
  104. package/dist/schemas/goals/angleBisectorGoal.schema.d.ts.map +1 -0
  105. package/dist/schemas/goals/angleCriterion.schema.d.cts +28 -0
  106. package/dist/schemas/goals/angleCriterion.schema.d.ts +29 -0
  107. package/dist/schemas/goals/angleCriterion.schema.d.ts.map +1 -0
  108. package/dist/schemas/goals/angleMeasureGoal.schema.d.cts +26 -0
  109. package/dist/schemas/goals/angleMeasureGoal.schema.d.ts +27 -0
  110. package/dist/schemas/goals/angleMeasureGoal.schema.d.ts.map +1 -0
  111. package/dist/schemas/goals/createGoal.schema.d.cts +1 -0
  112. package/dist/schemas/goals/createGoal.schema.d.ts +1 -0
  113. package/dist/schemas/goals/createGoal.schema.d.ts.map +1 -1
  114. package/dist/schemas/goals/geometryGoal.schema.d.cts +61 -0
  115. package/dist/schemas/goals/geometryGoal.schema.d.ts +61 -0
  116. package/dist/schemas/goals/geometryGoal.schema.d.ts.map +1 -1
  117. package/dist/schemas/goals/givenAngleGoal.schema.d.cts +35 -0
  118. package/dist/schemas/goals/givenAngleGoal.schema.d.ts +36 -0
  119. package/dist/schemas/goals/givenAngleGoal.schema.d.ts.map +1 -0
  120. package/dist/schemas/goals/goalKindDeclaration.d.cts +7 -0
  121. package/dist/schemas/goals/goalKindDeclaration.d.ts +7 -0
  122. package/dist/schemas/goals/goalKindDeclaration.d.ts.map +1 -1
  123. package/dist/schemas/goals/parallelGoal.schema.d.cts +1 -0
  124. package/dist/schemas/goals/parallelGoal.schema.d.ts +1 -0
  125. package/dist/schemas/goals/parallelGoal.schema.d.ts.map +1 -1
  126. package/dist/schemas/goals/perpendicularGoal.schema.d.cts +1 -0
  127. package/dist/schemas/goals/perpendicularGoal.schema.d.ts +1 -0
  128. package/dist/schemas/goals/perpendicularGoal.schema.d.ts.map +1 -1
  129. package/dist/schemas/goals/throughPointsGoal.schema.d.cts +1 -0
  130. package/dist/schemas/goals/throughPointsGoal.schema.d.ts +1 -0
  131. package/dist/schemas/goals/throughPointsGoal.schema.d.ts.map +1 -1
  132. package/dist/schemas/objectTypeName.schema.d.cts +1 -0
  133. package/dist/schemas/objectTypeName.schema.d.ts +1 -0
  134. package/dist/schemas/objectTypeName.schema.d.ts.map +1 -1
  135. package/dist/schemas/v2ToV3.d.cts +15 -1
  136. package/dist/schemas/v2ToV3.d.ts +15 -1
  137. package/dist/schemas/v2ToV3.d.ts.map +1 -1
  138. package/dist/schemas/v3ToV4.d.cts +2 -1
  139. package/dist/schemas/v3ToV4.d.ts +2 -1
  140. package/dist/schemas/v3ToV4.d.ts.map +1 -1
  141. package/dist/schemas/v4ToV5.d.cts +7 -0
  142. package/dist/schemas/v4ToV5.d.ts +8 -0
  143. package/dist/schemas/v4ToV5.d.ts.map +1 -0
  144. package/dist/schemas.cjs +1 -1
  145. package/dist/schemas.mjs +3 -3
  146. package/dist/snapping/computeDragSnap.d.cts +30 -0
  147. package/dist/snapping/computeDragSnap.d.ts +31 -0
  148. package/dist/snapping/computeDragSnap.d.ts.map +1 -0
  149. package/dist/state/geometryContext.d.ts.map +1 -1
  150. package/dist/store/attemptChange.d.cts +1 -1
  151. package/dist/store/attemptChange.d.ts +1 -1
  152. package/dist/store/attemptChange.d.ts.map +1 -1
  153. package/dist/store/constructionCommand.d.cts +14 -2
  154. package/dist/store/constructionCommand.d.ts +14 -2
  155. package/dist/store/constructionCommand.d.ts.map +1 -1
  156. package/dist/store/constructionIdentity.d.cts +9 -0
  157. package/dist/store/constructionIdentity.d.ts +9 -0
  158. package/dist/store/constructionIdentity.d.ts.map +1 -1
  159. package/dist/store/studentStore.d.cts +7 -0
  160. package/dist/store/studentStore.d.ts +7 -0
  161. package/dist/store/studentStore.d.ts.map +1 -1
  162. package/dist/store/teacherStore.d.cts +16 -0
  163. package/dist/store/teacherStore.d.ts +16 -0
  164. package/dist/store/teacherStore.d.ts.map +1 -1
  165. package/dist/{studentStore-CEKTtMCh.js → studentStore-CyYa0N93.js} +502 -370
  166. package/dist/studentStore-CyYa0N93.js.map +1 -0
  167. package/dist/studentStore-ubldy4PJ.cjs +2 -0
  168. package/dist/studentStore-ubldy4PJ.cjs.map +1 -0
  169. package/dist/validation/getGeometryExerciseWarnings.d.cts +3 -2
  170. package/dist/validation/getGeometryExerciseWarnings.d.ts +3 -2
  171. package/dist/validation/getGeometryExerciseWarnings.d.ts.map +1 -1
  172. package/dist/validation/goals/angleBisector.d.cts +3 -0
  173. package/dist/validation/goals/angleBisector.d.ts +4 -0
  174. package/dist/validation/goals/angleBisector.d.ts.map +1 -0
  175. package/dist/validation/goals/angleCriterion.d.cts +12 -0
  176. package/dist/validation/goals/angleCriterion.d.ts +13 -0
  177. package/dist/validation/goals/angleCriterion.d.ts.map +1 -0
  178. package/dist/validation/goals/angleMeasure.d.cts +9 -0
  179. package/dist/validation/goals/angleMeasure.d.ts +10 -0
  180. package/dist/validation/goals/angleMeasure.d.ts.map +1 -0
  181. package/dist/validation/goals/create.d.cts +2 -2
  182. package/dist/validation/goals/create.d.ts +2 -2
  183. package/dist/validation/goals/create.d.ts.map +1 -1
  184. package/dist/validation/goals/givenAngle.d.cts +11 -0
  185. package/dist/validation/goals/givenAngle.d.ts +12 -0
  186. package/dist/validation/goals/givenAngle.d.ts.map +1 -0
  187. package/dist/validation/goals/goalKindHandler.d.cts +38 -1
  188. package/dist/validation/goals/goalKindHandler.d.ts +38 -1
  189. package/dist/validation/goals/goalKindHandler.d.ts.map +1 -1
  190. package/dist/validation/goals/index.d.cts +9 -2
  191. package/dist/validation/goals/index.d.ts +9 -2
  192. package/dist/validation/goals/index.d.ts.map +1 -1
  193. package/dist/validation/goals/midpoint.d.cts +2 -2
  194. package/dist/validation/goals/midpoint.d.ts +2 -2
  195. package/dist/validation/goals/midpoint.d.ts.map +1 -1
  196. package/dist/validation/goals/parallel.d.cts +2 -2
  197. package/dist/validation/goals/parallel.d.ts +2 -2
  198. package/dist/validation/goals/parallel.d.ts.map +1 -1
  199. package/dist/validation/goals/perpendicular.d.cts +2 -2
  200. package/dist/validation/goals/perpendicular.d.ts +2 -2
  201. package/dist/validation/goals/perpendicular.d.ts.map +1 -1
  202. package/dist/validation/goals/segmentLength.d.cts +2 -2
  203. package/dist/validation/goals/segmentLength.d.ts +2 -2
  204. package/dist/validation/goals/segmentLength.d.ts.map +1 -1
  205. package/dist/validation/goals/throughPoints.d.cts +2 -2
  206. package/dist/validation/goals/throughPoints.d.ts +2 -2
  207. package/dist/validation/goals/throughPoints.d.ts.map +1 -1
  208. package/dist/validation/types.d.cts +5 -1
  209. package/dist/validation/types.d.ts +5 -1
  210. package/dist/validation/types.d.ts.map +1 -1
  211. package/dist/validation/validateGeometryState.d.ts.map +1 -1
  212. package/dist/validation/validateGeometryStateInput.d.ts.map +1 -1
  213. package/dist/validation.cjs +1 -1
  214. package/dist/validation.cjs.map +1 -1
  215. package/dist/validation.mjs +106 -85
  216. package/dist/validation.mjs.map +1 -1
  217. package/package.json +1 -1
  218. package/dist/exercise.schema-BV2b7rtN.cjs +0 -2
  219. package/dist/exercise.schema-BV2b7rtN.cjs.map +0 -1
  220. package/dist/exercise.schema-ckVBW9XA.js +0 -212
  221. package/dist/exercise.schema-ckVBW9XA.js.map +0 -1
  222. package/dist/geometryAttemptStatus-5L_q6-9l.js.map +0 -1
  223. package/dist/geometryAttemptStatus-N_XHIkiS.cjs +0 -2
  224. package/dist/geometryAttemptStatus-N_XHIkiS.cjs.map +0 -1
  225. package/dist/geometryState.schema-D0ixyGYE.js +0 -955
  226. package/dist/geometryState.schema-D0ixyGYE.js.map +0 -1
  227. package/dist/geometryState.schema-DKQ-durx.cjs +0 -2
  228. package/dist/geometryState.schema-DKQ-durx.cjs.map +0 -1
  229. package/dist/goals-C3ZwbEh_.js +0 -451
  230. package/dist/goals-C3ZwbEh_.js.map +0 -1
  231. package/dist/goals-CxR5qPDC.cjs +0 -2
  232. package/dist/goals-CxR5qPDC.cjs.map +0 -1
  233. package/dist/react-BEcdx1f6.js.map +0 -1
  234. package/dist/react-Pp_VSk--.cjs +0 -2
  235. package/dist/react-Pp_VSk--.cjs.map +0 -1
  236. package/dist/studentStore-CEKTtMCh.js.map +0 -1
  237. package/dist/studentStore-DLftfFAl.cjs +0 -2
  238. package/dist/studentStore-DLftfFAl.cjs.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { Point } from './point.cjs';
2
2
  import { MeasuredObject } from '../measure/geometryAdapter.cjs';
3
3
  export type EntityId = string;
4
- export type EntityKind = 'point' | 'segment' | 'line' | 'circle';
4
+ export type EntityKind = 'point' | 'segment' | 'line' | 'circle' | 'angle';
5
5
  export interface FreeOrigin {
6
6
  at: Point;
7
7
  }
@@ -36,7 +36,11 @@ export interface CircleDefinition {
36
36
  kind: 'circle';
37
37
  parents: readonly [EntityId, EntityId];
38
38
  }
39
- export type EntityDefinition = PointDefinition | SegmentDefinition | LineDefinition | CircleDefinition;
39
+ export interface AngleDefinition {
40
+ kind: 'angle';
41
+ parents: readonly [EntityId, EntityId, EntityId];
42
+ }
43
+ export type EntityDefinition = PointDefinition | SegmentDefinition | LineDefinition | CircleDefinition | AngleDefinition;
40
44
  export type EntityDefinitionOf<K extends EntityKind> = Extract<EntityDefinition, {
41
45
  kind: K;
42
46
  }>;
@@ -58,7 +62,14 @@ export interface ResolvedCircle {
58
62
  center: Point;
59
63
  radius: number;
60
64
  }
61
- export type ResolvedEntity = ResolvedPoint | ResolvedSegment | ResolvedLine | ResolvedCircle;
65
+ export interface ResolvedAngle {
66
+ kind: 'angle';
67
+ vertex: Point;
68
+ startTurn: number;
69
+ sweepTurn: number;
70
+ markRadius: number;
71
+ }
72
+ export type ResolvedEntity = ResolvedPoint | ResolvedSegment | ResolvedLine | ResolvedCircle | ResolvedAngle;
62
73
  export type ResolvedEntityOf<K extends EntityKind> = Extract<ResolvedEntity, {
63
74
  kind: K;
64
75
  }>;
@@ -76,11 +87,18 @@ export type ShapeDescriptor = {
76
87
  shape: 'circle';
77
88
  center: Point;
78
89
  radius: number;
90
+ } | {
91
+ shape: 'angle';
92
+ vertex: Point;
93
+ startTurn: number;
94
+ sweepTurn: number;
95
+ radius: number;
79
96
  };
80
97
  export type EntityRole = 'implicit' | 'explicit';
81
98
  export interface EntityPresentation {
82
99
  role: EntityRole;
83
100
  label?: string;
101
+ measureLabel?: 'degrees';
84
102
  }
85
103
  export interface EntityCapabilities {
86
104
  rendered: boolean;
@@ -1,7 +1,7 @@
1
1
  import { Point } from './point.js';
2
2
  import { MeasuredObject } from '../measure/geometryAdapter.js';
3
3
  export type EntityId = string;
4
- export type EntityKind = 'point' | 'segment' | 'line' | 'circle';
4
+ export type EntityKind = 'point' | 'segment' | 'line' | 'circle' | 'angle';
5
5
  export interface FreeOrigin {
6
6
  at: Point;
7
7
  }
@@ -36,7 +36,11 @@ export interface CircleDefinition {
36
36
  kind: 'circle';
37
37
  parents: readonly [EntityId, EntityId];
38
38
  }
39
- export type EntityDefinition = PointDefinition | SegmentDefinition | LineDefinition | CircleDefinition;
39
+ export interface AngleDefinition {
40
+ kind: 'angle';
41
+ parents: readonly [EntityId, EntityId, EntityId];
42
+ }
43
+ export type EntityDefinition = PointDefinition | SegmentDefinition | LineDefinition | CircleDefinition | AngleDefinition;
40
44
  export type EntityDefinitionOf<K extends EntityKind> = Extract<EntityDefinition, {
41
45
  kind: K;
42
46
  }>;
@@ -58,7 +62,14 @@ export interface ResolvedCircle {
58
62
  center: Point;
59
63
  radius: number;
60
64
  }
61
- export type ResolvedEntity = ResolvedPoint | ResolvedSegment | ResolvedLine | ResolvedCircle;
65
+ export interface ResolvedAngle {
66
+ kind: 'angle';
67
+ vertex: Point;
68
+ startTurn: number;
69
+ sweepTurn: number;
70
+ markRadius: number;
71
+ }
72
+ export type ResolvedEntity = ResolvedPoint | ResolvedSegment | ResolvedLine | ResolvedCircle | ResolvedAngle;
62
73
  export type ResolvedEntityOf<K extends EntityKind> = Extract<ResolvedEntity, {
63
74
  kind: K;
64
75
  }>;
@@ -76,11 +87,18 @@ export type ShapeDescriptor = {
76
87
  shape: 'circle';
77
88
  center: Point;
78
89
  radius: number;
90
+ } | {
91
+ shape: 'angle';
92
+ vertex: Point;
93
+ startTurn: number;
94
+ sweepTurn: number;
95
+ radius: number;
79
96
  };
80
97
  export type EntityRole = 'implicit' | 'explicit';
81
98
  export interface EntityPresentation {
82
99
  role: EntityRole;
83
100
  label?: string;
101
+ measureLabel?: 'degrees';
84
102
  }
85
103
  export interface EntityCapabilities {
86
104
  rendered: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"entityModel.d.ts","sourceRoot":"","sources":["../../src/geometry/entityModel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entityModel.d.ts","sourceRoot":"","sources":["../../src/geometry/entityModel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,s)=>(s=n==null?{}:e(i(n)),o(r||!n||!n.__esModule||!a.call(n,`default`)?t(s,`default`,{value:n,enumerable:!0}):s,n));let c=require("jsxgraph");c=s(c,1);let l=require("zod");function u(e,t){return Math.hypot(t.x-e.x,t.y-e.y)}function d(e,t){return{x:(e.x+t.x)/2,y:(e.y+t.y)/2}}var ee=1e-9,te=1e-9,ne=1e-12,f=1e-12,re=1e-6,p=1e-9,ie=24,ae=32;function oe(e,t,n=ee){return Math.abs(e-t)<=n}function m(e,t){return Math.abs(e)<=Math.abs(t)*f}function h(e,t,n=te){return u(e,t)<=n}function se(e,t){return u(e,t)<=re}function g(e){return e>=-1e-12&&e<=1.000000000001}function ce(e,t,n){return Math.abs(e-t)<=n+p}function le(e,t){return e<=t+p}function ue(e,t){return e/t}function _(e,t,n){let r=n.x-t.x,i=n.y-t.y,a=Math.hypot(r,i);if(a===0||m(a,u(e,t)))return null;let o=r/a,s=i/a;return((e.x-t.x)*o+(e.y-t.y)*s)/a}function v(e,t,n){return{x:e.x+(t.x-e.x)*n,y:e.y+(t.y-e.y)*n}}function de(e,t,n){let r=_(e,t,n);return r===null?t:v(t,n,r)}function fe(e,t,n){let r=_(e,t,n);return r===null?t:v(t,n,Math.min(1,Math.max(0,r)))}function pe(e,t,n){return u(e,de(e,t,n))}function y(e,t,n){return u(e,fe(e,t,n))}function me(e,t,n){return Math.abs(u(e,t)-n)}function b(e,t,n){let r=e.x-t.x,i=e.y-t.y,a=Math.hypot(r,i);return a===0||m(a,n)?null:{x:t.x+r/a*n,y:t.y+i/a*n}}function x(e){let t=p;return e<=t||e>=360-t?null:Math.abs(e-90)<=t?`right`:Math.abs(e-180)<=t?`straight`:e<90?`acute`:e<180?`obtuse`:`reflex`}var S=Object.freeze({origin:Object.freeze({scrCoords:Object.freeze([1,0,0])}),unitX:1,unitY:1}),C=c.default.default??c.default,w=C.Math.Geometry,T=C.Math;function E(e){return[1,e.x,e.y]}function he(e,t){let[n,r,i]=T.crossProduct(E(e),E(t));return T.normalize([n??0,r??0,i??0,0,1,0,0,0])}function D(e){return T.normalize([0,-e.center.x,-e.center.y,.5,e.radius,0,0,0])}function O(e){let[t,n,r]=e.usrCoords;return{w:t??NaN,x:n??NaN,y:r??NaN}}function ge(e,t,n,r){let[i,a,o]=w.meetSegmentSegment(E(e),E(t),E(n),E(r));return{point:O({usrCoords:i}),t:a,u:o}}function _e(e,t,n){return O(w.meetLineCircle(he(e.from,e.to),D(t),n,S))}function ve(e,t,n){return O(w.meetCircleCircle(D(e),D(t),n,S))}function k(e,t){return h(e,t)}function ye(e,t){return u(e,t)===0?NaN:Math.atan2(t.y-e.y,t.x-e.x)}function A(e,t){return h(e,t)?null:xe(Math.atan2(t.y-e.y,t.x-e.x)/(2*Math.PI))}function be(e,t){return xe(t-e)}function xe(e){let t=e%1,n=t<0?t+1:t;return n>=1||n===0?0:n}function Se(e,t,n,r){let i=((ye(e,t)-ye(n,r))*180/Math.PI%180+180)%180;return Math.min(i,180-i)}function Ce(e,t){let n=((e-t)%360+360)%360;return Math.min(n,360-n)}function j(e,t){return e.type===`line`||g(t)}function we(e){return e.type===`segment`?{type:`line`,from:e.from,to:e.to}:e}function M(e){let{w:t,x:n,y:r}=e;return!Number.isFinite(t)||!Number.isFinite(n)||!Number.isFinite(r)||m(t,1)?null:{x:Te(n/t),y:Te(r/t)}}function Te(e){return e===0?0:e}function Ee(e){let t=[];for(let n of e)n&&(t.some(e=>k(e,n))||t.push(n));return t.sort((e,t)=>e.x-t.x||e.y-t.y)}function De(e,t){let n={from:e.from,to:e.to},r={center:t.center,radius:t.radius},i=Ee([M(_e(n,r,0)),M(_e(n,r,1))]);return e.type===`line`?i:i.filter(t=>{let n=_(t,e.from,e.to);return n!==null&&j(e,n)})}function Oe(e,t){return k(e.center,t.center)?[]:Ee([M(ve(e,t,0)),M(ve(e,t,1))])}function ke(e,t){let{point:n,t:r,u:i}=ge(e.from,e.to,t.from,t.to);if(!Number.isFinite(r)||!Number.isFinite(i))return[];let a=M(n);return!a||!j(e,r)||!j(t,i)?[]:[a]}function Ae(e,t){return e.type===`circle`?t.type===`circle`?Oe(e,t):De(t,e):t.type===`circle`?De(e,t):ke(e,t)}var je=.4,Me={kind:`angle`,parents:e=>e.parents,resolve:(e,[t,n,r])=>{if(t?.kind!==`point`||n?.kind!==`point`||r?.kind!==`point`)return null;let i=A(n.at,t.at),a=A(n.at,r.at);if(i===null||a===null)return null;let o=Math.min(u(n.at,t.at),u(n.at,r.at))*je;return{kind:`angle`,vertex:n.at,startTurn:i,sweepTurn:be(i,a),markRadius:o}},toShape:e=>({shape:`angle`,vertex:e.vertex,startTurn:e.startTurn,sweepTurn:e.sweepTurn,radius:e.markRadius}),toMeasured:()=>null,distanceTo:(e,t)=>{let n=Ne(e);if(!n)return Pe(e,t);let[r,i,a]=n;return Math.min(y(t,r,i),y(t,i,a))},describe:(e,t)=>{let[n,r,i]=e.parents;return`angle at ${t(r)} from ${t(n)} to ${t(i)}`},hitPriority:1,identityKey:e=>`angle:${JSON.stringify(e.parents)}`};function Ne(e){let{vertex:t,startTurn:n,sweepTurn:r,markRadius:i}=e;if(x(r*360)!==`right`)return null;let a=i*Math.SQRT1_2,o=N(t,n,a),s=N(t,n+r,a);return[o,{x:o.x+s.x-t.x,y:o.y+s.y-t.y},s]}function Pe(e,t){let{vertex:n,startTurn:r,sweepTurn:i,markRadius:a}=e,o=A(n,t);return o===null?a:((o-r)%1+1)%1<=i?Math.abs(u(n,t)-a):Math.min(u(t,N(n,r,a)),u(t,N(n,r+i,a)))}function N(e,t,n){return{x:e.x+n*Math.cos(2*Math.PI*t),y:e.y+n*Math.sin(2*Math.PI*t)}}var Fe={kind:`circle`,parents:e=>e.parents,resolve:(e,[t,n])=>{if(t?.kind!==`point`||n?.kind!==`point`)return null;let r=u(t.at,n.at);return r===0?null:{kind:`circle`,center:t.at,radius:r}},toShape:e=>({shape:`circle`,center:e.center,radius:e.radius}),toMeasured:e=>({type:`circle`,center:e.center,radius:e.radius}),distanceTo:(e,t)=>me(t,e.center,e.radius),describe:(e,t)=>`circle centred on ${t(e.parents[0])} through ${t(e.parents[1])}`,hitPriority:1,identityKey:e=>`circle:${JSON.stringify(e.parents)}`},P=e=>({type:`segment`,from:e.from,to:e.to}),F=e=>({type:`line`,from:e.through[0],to:e.through[1]}),I=e=>({type:`circle`,center:e.center,radius:e.radius});function L(e,t,n){return Ae(e,t)[n]??null}var R=()=>null,Ie={"point:point":R,"point:segment":R,"point:line":R,"segment:point":R,"line:point":R,"point:circle":R,"circle:point":R,"point:angle":R,"angle:point":R,"segment:angle":R,"angle:segment":R,"line:angle":R,"angle:line":R,"circle:angle":R,"angle:circle":R,"angle:angle":R,"segment:segment":([e,t],n)=>L(P(e),P(t),n),"segment:line":([e,t],n)=>L(P(e),F(t),n),"line:segment":([e,t],n)=>L(F(e),P(t),n),"line:line":([e,t],n)=>L(F(e),F(t),n),"segment:circle":([e,t],n)=>L(P(e),I(t),n),"circle:segment":([e,t],n)=>L(I(e),P(t),n),"line:circle":([e,t],n)=>L(F(e),I(t),n),"circle:line":([e,t],n)=>L(I(e),F(t),n),"circle:circle":([e,t],n)=>L(I(e),I(t),n)};function Le(e,t,n=0){let r=Ie[`${e.kind}:${t.kind}`];return r([e,t],n)}var z=()=>null,Re={point:z,angle:z,segment:(e,t)=>v(e.from,e.to,t),line:(e,t)=>v(e.through[0],e.through[1],t),circle:(e,t)=>({x:e.center.x+e.radius*Math.cos(2*Math.PI*t),y:e.center.y+e.radius*Math.sin(2*Math.PI*t)})};function ze(e){return Re[e]!==z}function Be(e,t){let n=Re[e.kind];return n(e,t)}var Ve={point:()=>null,angle:()=>null,segment:(e,t)=>{let n=_(t,e.from,e.to);return n===null?null:Math.min(1,Math.max(0,n))},line:(e,t)=>_(t,e.through[0],e.through[1]),circle:(e,t)=>{let n=b(t,e.center,e.radius);if(!n)return null;let r=Math.atan2(n.y-e.center.y,n.x-e.center.x)/(2*Math.PI);return r<0?r+1:r}};function He(e,t){let n=Ve[e.kind];return n(e,t)}var Ue={kind:`line`,parents:e=>e.parents,resolve:(e,[t,n])=>t?.kind!==`point`||n?.kind!==`point`?null:{kind:`line`,through:[t.at,n.at]},toShape:e=>({shape:`line`,through:e.through}),toMeasured:e=>({type:`line`,from:e.through[0],to:e.through[1]}),distanceTo:(e,t)=>pe(t,e.through[0],e.through[1]),describe:(e,t)=>`line through ${t(e.parents[0])} and ${t(e.parents[1])}`,hitPriority:2,identityKey:e=>`line:${JSON.stringify([...e.parents].sort())}`},We=Object.freeze([]);function Ge(e){return String(Number(e.toFixed(2)))}var Ke=Object.freeze({point:{kind:`point`,parents:e=>`at`in e?We:`on`in e?[e.on]:e.intersectionOf,resolve:(e,t)=>{if(`at`in e)return{kind:`point`,at:e.at};if(`on`in e){let n=t[0];if(!n)return null;let r=Be(n,e.t);return r?{kind:`point`,at:r}:null}let[n,r]=t;if(!n||!r)return null;let i=Le(n,r,e.which??0);return i?{kind:`point`,at:i}:null},toShape:e=>({shape:`point`,at:e.at}),toMeasured:()=>null,distanceTo:(e,t)=>u(t,e.at),describe:(e,t)=>{if(`at`in e)return`point at (${Ge(e.at.x)}, ${Ge(e.at.y)})`;if(`on`in e)return`point on ${t(e.on)}`;let[n,r]=e.intersectionOf;return`point where ${t(n)} and ${t(r)} meet`},hitPriority:0,identityKey:e=>`at`in e?`point:at:${e.at.x}:${e.at.y}`:`on`in e?`point:on:${e.on}:${e.t}`:`point:meet:${JSON.stringify(e.intersectionOf)}:${e.which??0}`},segment:{kind:`segment`,parents:e=>e.parents,resolve:(e,[t,n])=>t?.kind!==`point`||n?.kind!==`point`?null:{kind:`segment`,from:t.at,to:n.at},toShape:e=>({shape:`segment`,from:e.from,to:e.to}),toMeasured:e=>({type:`segment`,from:e.from,to:e.to}),distanceTo:(e,t)=>y(t,e.from,e.to),describe:(e,t)=>`segment from ${t(e.parents[0])} to ${t(e.parents[1])}`,hitPriority:1,identityKey:e=>`segment:${JSON.stringify([...e.parents].sort())}`},line:Ue,circle:Fe,angle:Me}),qe=Object.freeze(Object.keys(Ke)),Je=Object.freeze(qe.filter(e=>e!==`point`&&ze(e)));function B(e){return Ke[e]}function V(e){return B(e.kind).parents(e)}function Ye(e,t){return B(e.kind).resolve(e,t)}function Xe(e,t){let n=[];for(let r of V(e)){let e=t.get(r);if(!e)return null;n.push({kind:`point`,at:e})}return Ye(e,n)}function Ze(e){return B(e.kind).toShape(e)}function Qe(e){return B(e.kind).toMeasured(e)}function $e(e,t){return B(e.kind).distanceTo(e,t)}function et(e){return B(e).hitPriority}function tt(e){return B(e.kind).identityKey(e)}function nt(e,t){return B(e.kind).describe(e,t)}var H=`__proto__`;function rt(e){return e===H}function it(e){return`${e} cannot be used as an entity id`}function U(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0}function W(){return Object.create(null)}var G=l.z.string().min(1).refine(e=>e===e.trim(),{message:`id must not have leading or trailing spaces`});function K(e){return l.z.preprocess((e,t)=>typeof e==`object`&&e&&Object.prototype.hasOwnProperty.call(e,`__proto__`)?(t.addIssue({code:`custom`,path:[H],message:it(H)}),l.z.NEVER):e,l.z.record(G,e))}function q(e){return e===`angle`?`an ${e}`:`a ${e}`}function at(e,t,n,r){return t.kind===`point`?r.kind!==`point`&&r.kind!==`angle`?null:`on`in t?`${e} is on ${n}, which is ${q(r.kind)}`:`${e} intersects ${n}, which is ${q(r.kind)}`:r.kind===`point`?null:`${e} references ${n}, which is ${q(r.kind)} and not a point`}function ot(e,t){let n=[],r=Object.entries(e.entities),i=t=>Object.prototype.hasOwnProperty.call(e.entities,t),a=new Map;for(let[i,o]of r){let r=V(o),s=[`entities`,i];r.includes(i)&&n.push({path:s,message:`${i} is its own parent`}),new Set(r).size!==r.length&&n.push({path:s,message:`${i} must reference distinct entities`});for(let a of r){let r=U(e.entities,a);if(!r){t.parentsMustBeDeclared&&n.push({path:s,message:`${i} references missing entity ${a}`});continue}let c=at(i,o,a,r);c&&n.push({path:s,message:c}),`on`in o&&r.kind===`segment`&&(o.t<0||o.t>1)&&n.push({path:[...s,`t`],message:`${i} must have t within [0, 1] on segment ${a}`})}if(o.kind===`point`)continue;let c=tt(o),l=a.get(c);l===void 0?a.set(c,i):n.push({path:s,message:`${i} duplicates the geometry of ${l}`})}for(let[t,r]of Object.entries(e.presentation)){if(!i(t)){n.push({path:[`presentation`,t],message:`presentation entry for unknown entity ${t}`});continue}r.measureLabel!==void 0&&U(e.entities,t)?.kind!==`angle`&&n.push({path:[`presentation`,t],message:`presentation entry for ${t} sets measureLabel, which only an angle has`})}return n}function st(e,t){let n=[];for(let[r,i]of Object.entries(e.entities)){let a=[`entities`,r],o=U(t,r)!==void 0;for(let s of V(i)){if(Object.prototype.hasOwnProperty.call(e.entities,s)){o&&!U(t,s)&&n.push({path:a,message:`${r} is declared by the exercise and cannot be defined on ${s}, which it does not declare`});continue}let c=U(t,s);if(!c){n.push({path:a,message:`${r} references missing entity ${s}`});continue}let l=at(r,i,s,c);l&&n.push({path:a,message:l}),!o&&`on`in i&&c.kind===`segment`&&(i.t<0||i.t>1)&&n.push({path:[...a,`t`],message:`${r} must have t within [0, 1] on segment ${s}`})}}return n}function ct(e,t){let n=U(e.entities,t);return n?.kind!==`point`||`intersectionOf`in n?!1:e.draggableEntityIds.includes(t)}function lt(e,t,n,r){return n.kind!==`point`||r.kind!==`point`?`collision`:ct(e,t)?`at`in n?`at`in r?`override`:`collision`:!(`on`in n)||!(`on`in r)||r.on!==n.on||U(e.entities,n.on)?.kind===`segment`&&!(r.t>=0&&r.t<=1)?`collision`:`override`:`ignored`}function ut(e,t){let n=[];for(let[r,i]of Object.entries(e.entities)){let e=U(t.entities,r);e&&lt(t,r,e,i)===`collision`&&n.push({path:[`entities`,r],message:e.kind===`point`&&i.kind===`point`?`${r} is a point the exercise declares, and an attempt may change only its position`:`${r} is already declared by the exercise as a ${e.kind}`})}return n}function dt(e,t,n,r={}){let i=[],a=new Set;return e.forEach((e,o)=>{let s=[t,o],c=U(n.entities,e);c?r.pointsOnly&&c.kind!==`point`&&i.push({path:s,message:`${t} names ${e}, which is ${q(c.kind)}`}):i.push({path:s,message:`${t} names unknown entity ${e}`}),a.has(e)&&i.push({path:s,message:`duplicate ${t} entry: ${e}`}),a.add(e)}),i}var J=l.z.enum([`point`,`segment`,`line`,`circle`,`angle`]),ft=l.z.object({id:G,type:l.z.literal(`angleBisector`),objectType:J,referenceAngleId:G,toleranceDegrees:l.z.number().positive().max(90)}).strict(),pt=l.z.enum([`acute`,`right`,`obtuse`,`straight`,`reflex`]),mt=l.z.discriminatedUnion(`kind`,[l.z.object({kind:l.z.literal(`degrees`),targetDegrees:l.z.number().min(0).lt(360),toleranceDegrees:l.z.number().positive().max(180)}).strict(),l.z.object({kind:l.z.literal(`type`),angleType:pt}).strict()]),ht=l.z.object({id:G,type:l.z.literal(`angleMeasure`),objectType:l.z.literal(`angle`),vertexPointId:G,interpretation:l.z.enum([`directed`,`undirected`]),criterion:mt}).strict(),gt=l.z.object({id:G,type:l.z.literal(`create`),objectType:J}).strict(),_t=l.z.object({id:G,type:l.z.literal(`givenAngle`),angleId:G,interpretation:l.z.enum([`directed`,`undirected`]),criterion:mt}).strict(),vt=l.z.object({id:G,type:l.z.literal(`midpoint`),objectType:l.z.literal(`point`),referenceObjectId:G,toleranceUnits:l.z.number().positive().finite()}).strict(),yt=l.z.object({id:G,type:l.z.literal(`parallel`),objectType:J,referenceObjectId:G,throughPointId:G,toleranceDegrees:l.z.number().positive().max(90)}).strict(),bt=l.z.object({id:G,type:l.z.literal(`perpendicular`),objectType:J,referenceObjectId:G,throughPointId:G,toleranceDegrees:l.z.number().positive().max(90)}).strict(),xt=l.z.object({id:G,type:l.z.literal(`segmentLength`),objectType:l.z.literal(`segment`),targetLength:l.z.number().positive().finite(),toleranceUnits:l.z.number().positive().finite()}).strict(),St=l.z.object({id:G,type:l.z.literal(`throughPoints`),objectType:J,pointIds:l.z.array(G).min(1)}).strict();function Y(e){return e===`segment`||e===`line`}var Ct=()=>[],wt=()=>[];function Tt(e,t,n){let r=[];Y(e.objectType)||r.push({path:[`objectType`],message:`${e.type} requires segment or line`});let i=t.definitionOf(e.referenceObjectId);return i?Y(i.kind)||r.push({path:[`referenceObjectId`],message:`${e.type} requires a segment or line reference, got ${i.kind} ${e.referenceObjectId}`}):r.push({path:[`referenceObjectId`],message:`unknown reference object ${e.referenceObjectId}`}),t.definitionOf(e.throughPointId)?.kind!==`point`&&r.push({path:[`throughPointId`],message:`unknown point ${e.throughPointId}`}),n(i)&&r.push({path:[`throughPointId`],message:`parallel through ${e.throughPointId} is degenerate: it defines ${e.referenceObjectId}`}),r}function Et({interpretation:e,criterion:t}){return e===`undirected`?t.kind===`degrees`&&t.targetDegrees>180?[{path:[`criterion`,`targetDegrees`],message:`an undirected angle cannot measure more than 180 degrees`}]:t.kind===`type`&&t.angleType===`reflex`?[{path:[`criterion`,`angleType`],message:`an undirected angle cannot be reflex`}]:[]:[]}function Dt(e,t){let n=new Set([e]),r=[e];for(;r.length>0;){let i=r.pop();if(i===void 0)continue;if(i!==e&&t.isStudentDraggable(i))return!0;let a=t.definitionOf(i);if(a)for(let e of V(a))n.has(e)||(n.add(e),r.push(e))}return!1}var Ot=Object.freeze({create:{kind:`create`,schema:gt,referencedGivenIds:Ct,crossReferenceIssues(e){return e.objectType===`angle`?[{path:[`objectType`],message:`create does not support angle; use angleMeasure`}]:[]}},throughPoints:{kind:`throughPoints`,schema:St,referencedGivenIds:e=>e.pointIds,crossReferenceIssues(e,t){let n=[];Y(e.objectType)||n.push({path:[`objectType`],message:`throughPoints requires segment or line`}),(e.pointIds.length!==2||new Set(e.pointIds).size!==2)&&n.push({path:[`pointIds`],message:`throughPoints requires two distinct points`});for(let r of e.pointIds)t.definitionOf(r)?.kind!==`point`&&n.push({path:[`pointIds`],message:`unknown point ${r}`});return n}},perpendicular:{kind:`perpendicular`,schema:bt,referencedGivenIds:e=>[e.throughPointId,e.referenceObjectId],crossReferenceIssues:(e,t)=>Tt(e,t,()=>!1)},parallel:{kind:`parallel`,schema:yt,referencedGivenIds:e=>[e.throughPointId,e.referenceObjectId],crossReferenceIssues:(e,t)=>Tt(e,t,t=>t!==void 0&&Y(t.kind)&&V(t).includes(e.throughPointId))},segmentLength:{kind:`segmentLength`,schema:xt,referencedGivenIds:Ct,crossReferenceIssues:wt},midpoint:{kind:`midpoint`,schema:vt,referencedGivenIds:e=>[e.referenceObjectId],crossReferenceIssues(e,t){let n=t.definitionOf(e.referenceObjectId);return!n||n.kind!==`segment`?[{path:[`referenceObjectId`],message:`midpoint requires a given segment, got ${e.referenceObjectId}`}]:[]}},angleMeasure:{kind:`angleMeasure`,schema:ht,referencedGivenIds:e=>[e.vertexPointId],crossReferenceIssues(e,t){let n=[];return t.definitionOf(e.vertexPointId)?.kind!==`point`&&n.push({path:[`vertexPointId`],message:`unknown point ${e.vertexPointId}`}),n.push(...Et(e)),n}},angleBisector:{kind:`angleBisector`,schema:ft,referencedGivenIds:e=>[e.referenceAngleId],crossReferenceIssues(e,t){let n=[];return Y(e.objectType)||n.push({path:[`objectType`],message:`angleBisector requires segment or line`}),t.definitionOf(e.referenceAngleId)?.kind!==`angle`&&n.push({path:[`referenceAngleId`],message:`angleBisector requires a given angle, got ${e.referenceAngleId}`}),n}},givenAngle:{kind:`givenAngle`,schema:_t,referencedGivenIds:e=>[e.angleId],crossReferenceIssues(e,t){let n=[];return t.definitionOf(e.angleId)?.kind===`angle`?Dt(e.angleId,t)||n.push({path:[`angleId`],message:`goal ${e.id} grades ${e.angleId}, and nothing it is built on can be dragged`}):n.push({path:[`angleId`],message:`givenAngle requires a given angle, got ${e.angleId}`}),n.push(...Et(e)),n}}});function kt(e){return Ot[e.type]}function At(e){if(!(`solution`in e))return e;let t={...e};return delete t.solution,t}var jt=l.z.object({x:l.z.number().finite(),y:l.z.number().finite()}).strict();l.z.object({id:G,type:l.z.literal(`point`),x:l.z.number().finite(),y:l.z.number().finite(),label:l.z.string().min(1).optional(),draggable:l.z.boolean().optional()}).strict();var Mt=l.z.object({kind:l.z.literal(`point`),at:jt}).strict(),Nt=l.z.object({kind:l.z.literal(`point`),on:G,t:l.z.number().finite()}).strict(),Pt=l.z.object({kind:l.z.literal(`point`),intersectionOf:l.z.tuple([G,G]).readonly(),which:l.z.union([l.z.literal(0),l.z.literal(1)]).optional()}).strict(),Ft=l.z.union([Mt,Nt,Pt]),X=l.z.tuple([G,G]).readonly(),It=l.z.tuple([G,G,G]).readonly(),Lt=l.z.object({kind:l.z.literal(`segment`),parents:X}).strict(),Rt=l.z.object({kind:l.z.literal(`line`),parents:X}).strict(),zt=l.z.object({kind:l.z.literal(`circle`),parents:X}).strict(),Bt=l.z.object({kind:l.z.literal(`angle`),parents:It}).strict(),Vt=l.z.union([Ft,Lt,Rt,zt,Bt]),Ht=l.z.enum([`implicit`,`explicit`]),Z=l.z.object({role:Ht,label:l.z.string().min(1).optional(),measureLabel:l.z.enum([`degrees`]).optional()}).strict();function Ut(e){let t=e.schemaVersion;return typeof t==`number`&&Number.isInteger(t)?t:null}function Wt(e,t,n){if(typeof e!=`object`||!e||Array.isArray(e))return{success:!1,message:`expected an object`};let r={...e},i=Ut(r);if(i===null)return{success:!1,message:`missing or invalid schemaVersion`};if(i>n)return{success:!1,message:`schemaVersion ${i} is newer than the supported version ${n}`};let a=i;for(;a<n;){let e=t.find(e=>e.from===a);if(!e)return{success:!1,message:`no migration from schemaVersion ${a} to ${n}`};if(e.to<=a)return{success:!1,message:`migration from ${a} does not advance the version`};try{r={...e.migrate(r),schemaVersion:e.to}}catch(t){return{success:!1,message:`migration from ${a} to ${e.to} failed: ${t instanceof Error?t.message:String(t)}`}}a=e.to}return{success:!0,data:r}}function Gt(e){return`x`in e}function Kt(e){return`onObject`in e}var qt={segment:e=>({kind:`segment`,parents:[e.from,e.to]}),line:e=>({kind:`line`,parents:e.through}),circle:e=>({kind:`circle`,parents:[e.center,e.through]})};function Jt(e){let t=qt[e.type];return t(e)}function Yt(e){return Gt(e)?{kind:`point`,at:e}:Kt(e)?{kind:`point`,on:e.onObject,t:e.t}:{kind:`point`,intersectionOf:e.intersectionOf}}function Xt(e){return e.type===`point`?{kind:`point`,at:{x:e.x,y:e.y}}:Jt(e)}function Q(e,t){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`${t} is not an object`);return e}function $(e,t){let n=e[t];if(!Array.isArray(n))throw Error(`${t} is not an array`);return n}function Zt(e,t){let n=e.id;if(typeof n!=`string`)throw Error(`${t}.id is not a string`);return Qt(n,`${t}.id`),n}function Qt(e,t){if(rt(e))throw Error(`${t}: ${it(e)}`)}function $t(e,t,n,r){if(e.has(t))throw Error(`${n}.id duplicates ${r}`);e.add(t)}var en=[`segment`,`line`,`circle`];function tn(e,t){let n=e.type;if(typeof n!=`string`||!en.includes(n))throw Error(`${t} has unknown type ${JSON.stringify(n)}`);return Jt(e)}function nn(e,t){let n=Q(t,`points.${e}`);if(!(`x`in n)&&!(`onObject`in n)&&!(`intersectionOf`in n))throw Error(`points.${e} is not a free, on-object or intersection origin`);return Yt(n)}var rn={from:1,to:2,migrate:e=>{let t=Q(e.points,`points`),n=$(e,`constructions`),r=W(),i=W(),a=[...$(e,`constructedPointIds`)],o=new Map,s=new Set;for(let[e,n]of Object.entries(t))Qt(e,`points.${e}`),r[e]=nn(e,n),i[e]={role:`explicit`},s.add(e),o.set(e,`points.${e}`);return n.forEach((e,t)=>{let n=`constructions[${t}]`,c=Q(e,n),l=Zt(c,n);$t(s,l,n,o.get(l)??n),o.set(l,n),r[l]=tn(c,n),i[l]={role:`explicit`},a.push(l)}),{schemaVersion:2,entities:r,presentation:i,answerEntityIds:a}}},an={from:1,to:2,migrate:e=>{let t=$(e,`givens`),n=W(),r=W(),i=[],a=new Set,o=new Map;t.forEach((e,t)=>{let s=`givens[${t}]`,c=Q(e,s),l=Zt(c,s);if($t(a,l,s,o.get(l)??s),o.set(l,s),n[l]=c.type===`point`?Xt(c):tn(c,s),c.label!==void 0&&(r[l]={role:`explicit`,label:c.label}),c.draggable!==void 0){if(typeof c.draggable!=`boolean`)throw Error(`${s}.draggable is not a boolean`);c.draggable&&i.push(l)}});let s={...e};return delete s.givens,{...s,schemaVersion:2,entities:n,presentation:r,draggableEntityIds:i}}},on=2,sn=[rn],cn=l.z.object({schemaVersion:l.z.literal(2),entities:K(Vt),presentation:K(Z),answerEntityIds:l.z.array(G)}).strict().superRefine((e,t)=>{for(let n of ot(e,{parentsMustBeDeclared:!1}))t.addIssue({code:`custom`,path:n.path,message:n.message});for(let n of dt(e.answerEntityIds,`answerEntityIds`,e))t.addIssue({code:`custom`,path:n.path,message:n.message})});function ln(e){return Wt(e,sn,2)}Object.defineProperty(exports,"$",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"A",{enumerable:!0,get:function(){return ct}}),Object.defineProperty(exports,"B",{enumerable:!0,get:function(){return Xe}}),Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,"Ct",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return ot}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return st}}),Object.defineProperty(exports,"F",{enumerable:!0,get:function(){return et}}),Object.defineProperty(exports,"G",{enumerable:!0,get:function(){return Ne}}),Object.defineProperty(exports,"H",{enumerable:!0,get:function(){return Ze}}),Object.defineProperty(exports,"I",{enumerable:!0,get:function(){return tt}}),Object.defineProperty(exports,"J",{enumerable:!0,get:function(){return Ae}}),Object.defineProperty(exports,"K",{enumerable:!0,get:function(){return Ce}}),Object.defineProperty(exports,"L",{enumerable:!0,get:function(){return Qe}}),Object.defineProperty(exports,"M",{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,"N",{enumerable:!0,get:function(){return nt}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return dt}}),Object.defineProperty(exports,"P",{enumerable:!0,get:function(){return $e}}),Object.defineProperty(exports,"Q",{enumerable:!0,get:function(){return we}}),Object.defineProperty(exports,"R",{enumerable:!0,get:function(){return Je}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return ft}}),Object.defineProperty(exports,"St",{enumerable:!0,get:function(){return le}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return ut}}),Object.defineProperty(exports,"Tt",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"U",{enumerable:!0,get:function(){return He}}),Object.defineProperty(exports,"V",{enumerable:!0,get:function(){return Ye}}),Object.defineProperty(exports,"W",{enumerable:!0,get:function(){return Be}}),Object.defineProperty(exports,"X",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"Y",{enumerable:!0,get:function(){return Se}}),Object.defineProperty(exports,"Z",{enumerable:!0,get:function(){return be}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return yt}}),Object.defineProperty(exports,"_t",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return an}}),Object.defineProperty(exports,"at",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return gt}}),Object.defineProperty(exports,"bt",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return Vt}}),Object.defineProperty(exports,"ct",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return kt}}),Object.defineProperty(exports,"dt",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"et",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return Ot}}),Object.defineProperty(exports,"ft",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return bt}}),Object.defineProperty(exports,"gt",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return xt}}),Object.defineProperty(exports,"ht",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return ln}}),Object.defineProperty(exports,"it",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(exports,"j",{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,"k",{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return jt}}),Object.defineProperty(exports,"lt",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return St}}),Object.defineProperty(exports,"mt",{enumerable:!0,get:function(){return re}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return cn}}),Object.defineProperty(exports,"nt",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return Wt}}),Object.defineProperty(exports,"ot",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,"pt",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(exports,"q",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return on}}),Object.defineProperty(exports,"rt",{enumerable:!0,get:function(){return me}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"st",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return sn}}),Object.defineProperty(exports,"tt",{enumerable:!0,get:function(){return de}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return At}}),Object.defineProperty(exports,"ut",{enumerable:!0,get:function(){return te}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return vt}}),Object.defineProperty(exports,"vt",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return lt}}),Object.defineProperty(exports,"wt",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return ht}}),Object.defineProperty(exports,"xt",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return _t}}),Object.defineProperty(exports,"yt",{enumerable:!0,get:function(){return se}}),Object.defineProperty(exports,"z",{enumerable:!0,get:function(){return V}});
2
+ //# sourceMappingURL=geometryState.schema-B5ccMKDa.cjs.map