@logic-pad/core 0.24.0 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. package/assets/logic-core.global.d.ts +22 -0
  2. package/dist/benchmark/helper.d.ts +21 -0
  3. package/dist/benchmark/helper.js +34 -0
  4. package/dist/benchmark/prepareBench.js +140 -0
  5. package/dist/benchmark/runBench.js +206 -0
  6. package/dist/{data → src/data}/dataHelper.js +4 -18
  7. package/dist/{data → src/data}/grid.js +15 -68
  8. package/dist/{data → src/data}/gridZones.js +1 -6
  9. package/dist/{data → src/data}/rules/banPatternRule.js +19 -50
  10. package/dist/{data → src/data}/rules/cellCountPerZoneRule.js +2 -6
  11. package/dist/{data → src/data}/rules/cellCountRule.js +62 -96
  12. package/dist/{data → src/data}/rules/completePatternRule.js +6 -22
  13. package/dist/{data → src/data}/rules/connectAllRule.js +20 -50
  14. package/dist/{data → src/data}/rules/connectZonesRule.js +28 -58
  15. package/dist/{data → src/data}/rules/containsShapeRule.js +29 -65
  16. package/dist/{data → src/data}/rules/customRule.js +28 -57
  17. package/dist/{data → src/data}/rules/differentCountPerZoneRule.js +33 -68
  18. package/dist/{data → src/data}/rules/exactCountPerZoneRule.js +43 -82
  19. package/dist/{data → src/data}/rules/foresightRule.js +50 -87
  20. package/dist/{data → src/data}/rules/lyingSymbolRule.js +37 -88
  21. package/dist/{data → src/data}/rules/musicControlLine.js +69 -131
  22. package/dist/{data → src/data}/rules/musicGridRule.js +43 -76
  23. package/dist/{data → src/data}/rules/mysteryRule.js +29 -58
  24. package/dist/src/data/rules/noLoopsRule.d.ts +29 -0
  25. package/dist/src/data/rules/noLoopsRule.js +111 -0
  26. package/dist/{data → src/data}/rules/offByXRule.js +49 -74
  27. package/dist/{data → src/data}/rules/perfectionRule.js +8 -28
  28. package/dist/{data → src/data}/rules/regionAreaRule.js +47 -86
  29. package/dist/{data → src/data}/rules/regionShapeRule.js +2 -6
  30. package/dist/{data → src/data}/rules/rules.gen.d.ts +1 -0
  31. package/dist/{data → src/data}/rules/rules.gen.js +1 -0
  32. package/dist/{data → src/data}/rules/sameCountPerZoneRule.js +33 -68
  33. package/dist/{data → src/data}/rules/sameShapeRule.js +18 -44
  34. package/dist/{data → src/data}/rules/symbolsPerRegionRule.js +52 -90
  35. package/dist/{data → src/data}/rules/undercluedRule.js +11 -27
  36. package/dist/{data → src/data}/rules/uniqueShapeRule.js +18 -44
  37. package/dist/{data → src/data}/rules/wrapAroundRule.js +99 -138
  38. package/dist/{data → src/data}/serializer/serializer_checksum.js +1 -9
  39. package/dist/{data → src/data}/serializer/serializer_v0.js +1 -9
  40. package/dist/{data → src/data}/solver/auto/autoSolver.js +11 -40
  41. package/dist/{data → src/data}/solver/backtrack/backtrackSolver.js +15 -39
  42. package/dist/{data → src/data}/solver/backtrack/backtrackWorker.js +1 -1
  43. package/dist/{data → src/data}/solver/backtrack/data.js +16 -48
  44. package/dist/{data → src/data}/solver/backtrack/rules/banPattern.js +1 -6
  45. package/dist/{data → src/data}/solver/backtrack/rules/cellCount.js +1 -6
  46. package/dist/{data → src/data}/solver/backtrack/rules/connectAll.js +1 -6
  47. package/dist/{data → src/data}/solver/backtrack/rules/regionArea.js +1 -6
  48. package/dist/{data → src/data}/solver/backtrack/rules/regionShape.js +1 -6
  49. package/dist/{data → src/data}/solver/backtrack/rules/sameShape.js +1 -6
  50. package/dist/{data → src/data}/solver/backtrack/rules/symbolsPerRegion.js +2 -12
  51. package/dist/{data → src/data}/solver/backtrack/rules/uniqueShape.js +1 -6
  52. package/dist/{data → src/data}/solver/backtrack/symbols/areaNumber.js +1 -6
  53. package/dist/{data → src/data}/solver/backtrack/symbols/dart.js +1 -6
  54. package/dist/{data → src/data}/solver/backtrack/symbols/directionLinker.js +3 -13
  55. package/dist/{data → src/data}/solver/backtrack/symbols/focus.js +3 -13
  56. package/dist/{data → src/data}/solver/backtrack/symbols/galaxy.js +1 -6
  57. package/dist/{data → src/data}/solver/backtrack/symbols/letter.js +2 -12
  58. package/dist/{data → src/data}/solver/backtrack/symbols/lotus.js +1 -6
  59. package/dist/{data → src/data}/solver/backtrack/symbols/minesweeper.js +3 -13
  60. package/dist/{data → src/data}/solver/backtrack/symbols/myopia.js +1 -6
  61. package/dist/{data → src/data}/solver/backtrack/symbols/viewpoint.js +1 -6
  62. package/dist/{data → src/data}/solver/cspuz/cspuzSolver.js +22 -46
  63. package/dist/{data → src/data}/solver/eventIteratingSolver.js +9 -12
  64. package/dist/{data → src/data}/solver/solver.js +1 -8
  65. package/dist/src/data/solver/universal/universalSolver.js +20 -0
  66. package/dist/src/data/solver/universal/universalWorker.d.ts +1 -0
  67. package/dist/{data → src/data}/solver/z3/modules/areaNumberModule.js +1 -9
  68. package/dist/{data → src/data}/solver/z3/modules/cellCountModule.js +1 -9
  69. package/dist/{data → src/data}/solver/z3/modules/connectAllModule.js +1 -9
  70. package/dist/{data → src/data}/solver/z3/modules/dartModule.js +1 -9
  71. package/dist/{data → src/data}/solver/z3/modules/letterModule.js +1 -9
  72. package/dist/{data → src/data}/solver/z3/modules/myopiaModule.js +1 -9
  73. package/dist/{data → src/data}/solver/z3/modules/regionAreaModule.js +1 -9
  74. package/dist/{data → src/data}/solver/z3/modules/viewpointModule.js +1 -9
  75. package/dist/{data → src/data}/solver/z3/z3Solver.js +4 -27
  76. package/dist/{data → src/data}/solver/z3/z3SolverContext.js +3 -12
  77. package/dist/{data → src/data}/symbols/areaNumberSymbol.js +28 -44
  78. package/dist/{data → src/data}/symbols/customIconSymbol.js +40 -64
  79. package/dist/{data → src/data}/symbols/customSymbol.js +4 -12
  80. package/dist/{data → src/data}/symbols/customTextSymbol.js +40 -64
  81. package/dist/{data → src/data}/symbols/dartSymbol.js +39 -59
  82. package/dist/{data → src/data}/symbols/directionLinkerSymbol.js +34 -63
  83. package/dist/{data → src/data}/symbols/everyLetterSymbol.js +37 -65
  84. package/dist/{data → src/data}/symbols/focusSymbol.js +49 -69
  85. package/dist/{data → src/data}/symbols/galaxySymbol.js +12 -31
  86. package/dist/{data → src/data}/symbols/hiddenSymbol.js +34 -62
  87. package/dist/{data → src/data}/symbols/houseSymbol.js +39 -67
  88. package/dist/{data → src/data}/symbols/letterSymbol.js +40 -68
  89. package/dist/{data → src/data}/symbols/lotusSymbol.js +58 -81
  90. package/dist/{data → src/data}/symbols/minesweeperSymbol.js +30 -46
  91. package/dist/{data → src/data}/symbols/myopiaSymbol.js +45 -69
  92. package/dist/{data → src/data}/symbols/numberSymbol.js +6 -18
  93. package/dist/{data → src/data}/symbols/symbol.js +4 -12
  94. package/dist/{data → src/data}/symbols/viewpointSymbol.js +26 -42
  95. package/dist/{data → src/data}/tile.js +6 -18
  96. package/dist/src/data/validateAsync.js +71 -0
  97. package/dist/src/data/validateAsyncWorker.d.ts +1 -0
  98. package/dist/{index.d.ts → src/index.d.ts} +2 -1
  99. package/dist/{index.js → src/index.js} +2 -1
  100. package/package.json +6 -2
  101. package/dist/data/solver/universal/universalSolver.js +0 -38
  102. package/dist/data/validateAsync.js +0 -128
  103. /package/dist/{data/solver/backtrack/backtrackWorker.d.ts → benchmark/prepareBench.d.ts} +0 -0
  104. /package/dist/{data/solver/cspuz/cspuzWorker.d.ts → benchmark/runBench.d.ts} +0 -0
  105. /package/dist/{data → src/data}/config.d.ts +0 -0
  106. /package/dist/{data → src/data}/config.js +0 -0
  107. /package/dist/{data → src/data}/configurable.d.ts +0 -0
  108. /package/dist/{data → src/data}/configurable.js +0 -0
  109. /package/dist/{data → src/data}/dataHelper.d.ts +0 -0
  110. /package/dist/{data → src/data}/events/eventHelper.d.ts +0 -0
  111. /package/dist/{data → src/data}/events/eventHelper.js +0 -0
  112. /package/dist/{data → src/data}/events/onFinalValidation.d.ts +0 -0
  113. /package/dist/{data → src/data}/events/onFinalValidation.js +0 -0
  114. /package/dist/{data → src/data}/events/onGetTile.d.ts +0 -0
  115. /package/dist/{data → src/data}/events/onGetTile.js +0 -0
  116. /package/dist/{data → src/data}/events/onGridChange.d.ts +0 -0
  117. /package/dist/{data → src/data}/events/onGridChange.js +0 -0
  118. /package/dist/{data → src/data}/events/onGridResize.d.ts +0 -0
  119. /package/dist/{data → src/data}/events/onGridResize.js +0 -0
  120. /package/dist/{data → src/data}/events/onSetGrid.d.ts +0 -0
  121. /package/dist/{data → src/data}/events/onSetGrid.js +0 -0
  122. /package/dist/{data → src/data}/events/onSymbolDisplay.d.ts +0 -0
  123. /package/dist/{data → src/data}/events/onSymbolDisplay.js +0 -0
  124. /package/dist/{data → src/data}/events/onSymbolMerge.d.ts +0 -0
  125. /package/dist/{data → src/data}/events/onSymbolMerge.js +0 -0
  126. /package/dist/{data → src/data}/events/onSymbolValidation.d.ts +0 -0
  127. /package/dist/{data → src/data}/events/onSymbolValidation.js +0 -0
  128. /package/dist/{data → src/data}/grid.d.ts +0 -0
  129. /package/dist/{data → src/data}/gridConnections.d.ts +0 -0
  130. /package/dist/{data → src/data}/gridConnections.js +0 -0
  131. /package/dist/{data → src/data}/gridZones.d.ts +0 -0
  132. /package/dist/{data → src/data}/instruction.d.ts +0 -0
  133. /package/dist/{data → src/data}/instruction.js +0 -0
  134. /package/dist/{data → src/data}/primitives.d.ts +0 -0
  135. /package/dist/{data → src/data}/primitives.js +0 -0
  136. /package/dist/{data → src/data}/puzzle.d.ts +0 -0
  137. /package/dist/{data → src/data}/puzzle.js +0 -0
  138. /package/dist/{data → src/data}/rules/banPatternRule.d.ts +0 -0
  139. /package/dist/{data → src/data}/rules/cellCountPerZoneRule.d.ts +0 -0
  140. /package/dist/{data → src/data}/rules/cellCountRule.d.ts +0 -0
  141. /package/dist/{data → src/data}/rules/completePatternRule.d.ts +0 -0
  142. /package/dist/{data → src/data}/rules/connectAllRule.d.ts +0 -0
  143. /package/dist/{data → src/data}/rules/connectZonesRule.d.ts +0 -0
  144. /package/dist/{data → src/data}/rules/containsShapeRule.d.ts +0 -0
  145. /package/dist/{data → src/data}/rules/customRule.d.ts +0 -0
  146. /package/dist/{data → src/data}/rules/differentCountPerZoneRule.d.ts +0 -0
  147. /package/dist/{data → src/data}/rules/exactCountPerZoneRule.d.ts +0 -0
  148. /package/dist/{data → src/data}/rules/foresightRule.d.ts +0 -0
  149. /package/dist/{data → src/data}/rules/index.d.ts +0 -0
  150. /package/dist/{data → src/data}/rules/index.js +0 -0
  151. /package/dist/{data → src/data}/rules/lyingSymbolRule.d.ts +0 -0
  152. /package/dist/{data → src/data}/rules/musicControlLine.d.ts +0 -0
  153. /package/dist/{data → src/data}/rules/musicGridRule.d.ts +0 -0
  154. /package/dist/{data → src/data}/rules/mysteryRule.d.ts +0 -0
  155. /package/dist/{data → src/data}/rules/offByXRule.d.ts +0 -0
  156. /package/dist/{data → src/data}/rules/perfectionRule.d.ts +0 -0
  157. /package/dist/{data → src/data}/rules/regionAreaRule.d.ts +0 -0
  158. /package/dist/{data → src/data}/rules/regionShapeRule.d.ts +0 -0
  159. /package/dist/{data → src/data}/rules/rule.d.ts +0 -0
  160. /package/dist/{data → src/data}/rules/rule.js +0 -0
  161. /package/dist/{data → src/data}/rules/sameCountPerZoneRule.d.ts +0 -0
  162. /package/dist/{data → src/data}/rules/sameShapeRule.d.ts +0 -0
  163. /package/dist/{data → src/data}/rules/symbolsPerRegionRule.d.ts +0 -0
  164. /package/dist/{data → src/data}/rules/undercluedRule.d.ts +0 -0
  165. /package/dist/{data → src/data}/rules/uniqueShapeRule.d.ts +0 -0
  166. /package/dist/{data → src/data}/rules/wrapAroundRule.d.ts +0 -0
  167. /package/dist/{data → src/data}/serializer/allSerializers.d.ts +0 -0
  168. /package/dist/{data → src/data}/serializer/allSerializers.js +0 -0
  169. /package/dist/{data → src/data}/serializer/compressor/allCompressors.d.ts +0 -0
  170. /package/dist/{data → src/data}/serializer/compressor/allCompressors.js +0 -0
  171. /package/dist/{data → src/data}/serializer/compressor/checksumCompressor.d.ts +0 -0
  172. /package/dist/{data → src/data}/serializer/compressor/checksumCompressor.js +0 -0
  173. /package/dist/{data → src/data}/serializer/compressor/compressorBase.d.ts +0 -0
  174. /package/dist/{data → src/data}/serializer/compressor/compressorBase.js +0 -0
  175. /package/dist/{data → src/data}/serializer/compressor/deflateCompressor.d.ts +0 -0
  176. /package/dist/{data → src/data}/serializer/compressor/deflateCompressor.js +0 -0
  177. /package/dist/{data → src/data}/serializer/compressor/gzipCompressor.d.ts +0 -0
  178. /package/dist/{data → src/data}/serializer/compressor/gzipCompressor.js +0 -0
  179. /package/dist/{data → src/data}/serializer/compressor/streamCompressor.d.ts +0 -0
  180. /package/dist/{data → src/data}/serializer/compressor/streamCompressor.js +0 -0
  181. /package/dist/{data → src/data}/serializer/serializerBase.d.ts +0 -0
  182. /package/dist/{data → src/data}/serializer/serializerBase.js +0 -0
  183. /package/dist/{data → src/data}/serializer/serializer_checksum.d.ts +0 -0
  184. /package/dist/{data → src/data}/serializer/serializer_v0.d.ts +0 -0
  185. /package/dist/{data → src/data}/shapes.d.ts +0 -0
  186. /package/dist/{data → src/data}/shapes.js +0 -0
  187. /package/dist/{data → src/data}/solver/allSolvers.d.ts +0 -0
  188. /package/dist/{data → src/data}/solver/allSolvers.js +0 -0
  189. /package/dist/{data → src/data}/solver/auto/autoSolver.d.ts +0 -0
  190. /package/dist/{data → src/data}/solver/backtrack/backtrackSolver.d.ts +0 -0
  191. /package/dist/{data/solver/universal/universalWorker.d.ts → src/data/solver/backtrack/backtrackWorker.d.ts} +0 -0
  192. /package/dist/{data → src/data}/solver/backtrack/data.d.ts +0 -0
  193. /package/dist/{data → src/data}/solver/backtrack/rules/banPattern.d.ts +0 -0
  194. /package/dist/{data → src/data}/solver/backtrack/rules/cellCount.d.ts +0 -0
  195. /package/dist/{data → src/data}/solver/backtrack/rules/connectAll.d.ts +0 -0
  196. /package/dist/{data → src/data}/solver/backtrack/rules/regionArea.d.ts +0 -0
  197. /package/dist/{data → src/data}/solver/backtrack/rules/regionShape.d.ts +0 -0
  198. /package/dist/{data → src/data}/solver/backtrack/rules/sameShape.d.ts +0 -0
  199. /package/dist/{data → src/data}/solver/backtrack/rules/symbolsPerRegion.d.ts +0 -0
  200. /package/dist/{data → src/data}/solver/backtrack/rules/uniqueShape.d.ts +0 -0
  201. /package/dist/{data → src/data}/solver/backtrack/symbols/areaNumber.d.ts +0 -0
  202. /package/dist/{data → src/data}/solver/backtrack/symbols/dart.d.ts +0 -0
  203. /package/dist/{data → src/data}/solver/backtrack/symbols/directionLinker.d.ts +0 -0
  204. /package/dist/{data → src/data}/solver/backtrack/symbols/focus.d.ts +0 -0
  205. /package/dist/{data → src/data}/solver/backtrack/symbols/galaxy.d.ts +0 -0
  206. /package/dist/{data → src/data}/solver/backtrack/symbols/letter.d.ts +0 -0
  207. /package/dist/{data → src/data}/solver/backtrack/symbols/lotus.d.ts +0 -0
  208. /package/dist/{data → src/data}/solver/backtrack/symbols/minesweeper.d.ts +0 -0
  209. /package/dist/{data → src/data}/solver/backtrack/symbols/myopia.d.ts +0 -0
  210. /package/dist/{data → src/data}/solver/backtrack/symbols/viewpoint.d.ts +0 -0
  211. /package/dist/{data → src/data}/solver/cspuz/cspuzSolver.d.ts +0 -0
  212. /package/dist/{data/validateAsyncWorker.d.ts → src/data/solver/cspuz/cspuzWorker.d.ts} +0 -0
  213. /package/dist/{data → src/data}/solver/cspuz/cspuzWorker.js +0 -0
  214. /package/dist/{data → src/data}/solver/cspuz/jsonify.d.ts +0 -0
  215. /package/dist/{data → src/data}/solver/cspuz/jsonify.js +0 -0
  216. /package/dist/{data → src/data}/solver/eventIteratingSolver.d.ts +0 -0
  217. /package/dist/{data → src/data}/solver/solver.d.ts +0 -0
  218. /package/dist/{data → src/data}/solver/universal/universalSolver.d.ts +0 -0
  219. /package/dist/{data → src/data}/solver/universal/universalWorker.js +0 -0
  220. /package/dist/{data → src/data}/solver/z3/modules/areaNumberModule.d.ts +0 -0
  221. /package/dist/{data → src/data}/solver/z3/modules/cellCountModule.d.ts +0 -0
  222. /package/dist/{data → src/data}/solver/z3/modules/connectAllModule.d.ts +0 -0
  223. /package/dist/{data → src/data}/solver/z3/modules/dartModule.d.ts +0 -0
  224. /package/dist/{data → src/data}/solver/z3/modules/index.d.ts +0 -0
  225. /package/dist/{data → src/data}/solver/z3/modules/index.js +0 -0
  226. /package/dist/{data → src/data}/solver/z3/modules/letterModule.d.ts +0 -0
  227. /package/dist/{data → src/data}/solver/z3/modules/modules.gen.d.ts +0 -0
  228. /package/dist/{data → src/data}/solver/z3/modules/modules.gen.js +0 -0
  229. /package/dist/{data → src/data}/solver/z3/modules/myopiaModule.d.ts +0 -0
  230. /package/dist/{data → src/data}/solver/z3/modules/regionAreaModule.d.ts +0 -0
  231. /package/dist/{data → src/data}/solver/z3/modules/viewpointModule.d.ts +0 -0
  232. /package/dist/{data → src/data}/solver/z3/modules/z3Module.d.ts +0 -0
  233. /package/dist/{data → src/data}/solver/z3/modules/z3Module.js +0 -0
  234. /package/dist/{data → src/data}/solver/z3/utils.d.ts +0 -0
  235. /package/dist/{data → src/data}/solver/z3/utils.js +0 -0
  236. /package/dist/{data → src/data}/solver/z3/z3Solver.d.ts +0 -0
  237. /package/dist/{data → src/data}/solver/z3/z3SolverContext.d.ts +0 -0
  238. /package/dist/{data → src/data}/symbols/areaNumberSymbol.d.ts +0 -0
  239. /package/dist/{data → src/data}/symbols/customIconSymbol.d.ts +0 -0
  240. /package/dist/{data → src/data}/symbols/customSymbol.d.ts +0 -0
  241. /package/dist/{data → src/data}/symbols/customTextSymbol.d.ts +0 -0
  242. /package/dist/{data → src/data}/symbols/dartSymbol.d.ts +0 -0
  243. /package/dist/{data → src/data}/symbols/directionLinkerSymbol.d.ts +0 -0
  244. /package/dist/{data → src/data}/symbols/everyLetterSymbol.d.ts +0 -0
  245. /package/dist/{data → src/data}/symbols/focusSymbol.d.ts +0 -0
  246. /package/dist/{data → src/data}/symbols/galaxySymbol.d.ts +0 -0
  247. /package/dist/{data → src/data}/symbols/hiddenSymbol.d.ts +0 -0
  248. /package/dist/{data → src/data}/symbols/houseSymbol.d.ts +0 -0
  249. /package/dist/{data → src/data}/symbols/index.d.ts +0 -0
  250. /package/dist/{data → src/data}/symbols/index.js +0 -0
  251. /package/dist/{data → src/data}/symbols/letterSymbol.d.ts +0 -0
  252. /package/dist/{data → src/data}/symbols/lotusSymbol.d.ts +0 -0
  253. /package/dist/{data → src/data}/symbols/minesweeperSymbol.d.ts +0 -0
  254. /package/dist/{data → src/data}/symbols/myopiaSymbol.d.ts +0 -0
  255. /package/dist/{data → src/data}/symbols/numberSymbol.d.ts +0 -0
  256. /package/dist/{data → src/data}/symbols/symbol.d.ts +0 -0
  257. /package/dist/{data → src/data}/symbols/symbols.gen.d.ts +0 -0
  258. /package/dist/{data → src/data}/symbols/symbols.gen.js +0 -0
  259. /package/dist/{data → src/data}/symbols/viewpointSymbol.d.ts +0 -0
  260. /package/dist/{data → src/data}/tile.d.ts +0 -0
  261. /package/dist/{data → src/data}/tileConnections.d.ts +0 -0
  262. /package/dist/{data → src/data}/tileConnections.js +0 -0
  263. /package/dist/{data → src/data}/validate.d.ts +0 -0
  264. /package/dist/{data → src/data}/validate.js +0 -0
  265. /package/dist/{data → src/data}/validateAsync.d.ts +0 -0
  266. /package/dist/{data → src/data}/validateAsyncWorker.js +0 -0
  267. /package/dist/{polyfill → src/polyfill}/streamPolyfill.d.ts +0 -0
  268. /package/dist/{polyfill → src/polyfill}/streamPolyfill.js +0 -0
@@ -2,7 +2,44 @@ import { ConfigType } from '../config.js';
2
2
  import GridData from '../grid.js';
3
3
  import { Color, Orientation } from '../primitives.js';
4
4
  import NumberSymbol from './numberSymbol.js';
5
- class DartSymbol extends NumberSymbol {
5
+ export default class DartSymbol extends NumberSymbol {
6
+ orientation;
7
+ title = 'Dart';
8
+ static CONFIGS = Object.freeze([
9
+ {
10
+ type: ConfigType.Number,
11
+ default: 0,
12
+ field: 'x',
13
+ description: 'X',
14
+ configurable: false,
15
+ },
16
+ {
17
+ type: ConfigType.Number,
18
+ default: 0,
19
+ field: 'y',
20
+ description: 'Y',
21
+ configurable: false,
22
+ },
23
+ {
24
+ type: ConfigType.Number,
25
+ default: 1,
26
+ field: 'number',
27
+ description: 'Number',
28
+ configurable: true,
29
+ },
30
+ {
31
+ type: ConfigType.Orientation,
32
+ default: Orientation.Right,
33
+ field: 'orientation',
34
+ description: 'Orientation',
35
+ configurable: true,
36
+ },
37
+ ]);
38
+ static EXAMPLE_GRID = Object.freeze(GridData.create(['wwbbw', 'wwwww', 'wbwbb', 'wwwww'])
39
+ .addSymbol(new DartSymbol(1, 0, 1, Orientation.Down))
40
+ .addSymbol(new DartSymbol(4, 0, 2, Orientation.Left))
41
+ .addSymbol(new DartSymbol(3, 1, 1, Orientation.Down))
42
+ .addSymbol(new DartSymbol(0, 2, 3, Orientation.Right)));
6
43
  /**
7
44
  * **Darts count opposite color cells in that direction**
8
45
  *
@@ -13,18 +50,7 @@ class DartSymbol extends NumberSymbol {
13
50
  */
14
51
  constructor(x, y, number, orientation) {
15
52
  super(x, y, number);
16
- Object.defineProperty(this, "orientation", {
17
- enumerable: true,
18
- configurable: true,
19
- writable: true,
20
- value: orientation
21
- });
22
- Object.defineProperty(this, "title", {
23
- enumerable: true,
24
- configurable: true,
25
- writable: true,
26
- value: 'Dart'
27
- });
53
+ this.orientation = orientation;
28
54
  this.orientation = orientation;
29
55
  }
30
56
  get id() {
@@ -67,50 +93,4 @@ class DartSymbol extends NumberSymbol {
67
93
  return this.copyWith({ number });
68
94
  }
69
95
  }
70
- Object.defineProperty(DartSymbol, "CONFIGS", {
71
- enumerable: true,
72
- configurable: true,
73
- writable: true,
74
- value: Object.freeze([
75
- {
76
- type: ConfigType.Number,
77
- default: 0,
78
- field: 'x',
79
- description: 'X',
80
- configurable: false,
81
- },
82
- {
83
- type: ConfigType.Number,
84
- default: 0,
85
- field: 'y',
86
- description: 'Y',
87
- configurable: false,
88
- },
89
- {
90
- type: ConfigType.Number,
91
- default: 1,
92
- field: 'number',
93
- description: 'Number',
94
- configurable: true,
95
- },
96
- {
97
- type: ConfigType.Orientation,
98
- default: Orientation.Right,
99
- field: 'orientation',
100
- description: 'Orientation',
101
- configurable: true,
102
- },
103
- ])
104
- });
105
- Object.defineProperty(DartSymbol, "EXAMPLE_GRID", {
106
- enumerable: true,
107
- configurable: true,
108
- writable: true,
109
- value: Object.freeze(GridData.create(['wwbbw', 'wwwww', 'wbwbb', 'wwwww'])
110
- .addSymbol(new DartSymbol(1, 0, 1, Orientation.Down))
111
- .addSymbol(new DartSymbol(4, 0, 2, Orientation.Left))
112
- .addSymbol(new DartSymbol(3, 1, 1, Orientation.Down))
113
- .addSymbol(new DartSymbol(0, 2, 3, Orientation.Right)))
114
- });
115
- export default DartSymbol;
116
96
  export const instance = new DartSymbol(0, 0, 1, Orientation.Right);
@@ -16,7 +16,38 @@ function makeTurtle(pos1, pos2, grid) {
16
16
  color2: getColor(pos2, grid),
17
17
  };
18
18
  }
19
- class DirectionLinkerSymbol extends Symbol {
19
+ export default class DirectionLinkerSymbol extends Symbol {
20
+ x;
21
+ y;
22
+ static CONFIGS = Object.freeze([
23
+ {
24
+ type: ConfigType.Number,
25
+ default: 0,
26
+ field: 'x',
27
+ description: 'X',
28
+ configurable: false,
29
+ },
30
+ {
31
+ type: ConfigType.Number,
32
+ default: 0,
33
+ field: 'y',
34
+ description: 'Y',
35
+ configurable: false,
36
+ },
37
+ ]);
38
+ static EXAMPLE_GRID = Object.freeze(GridData.create(['wwbbw', 'wwwww', 'wwwww', 'wwwww']));
39
+ static directionDeltas = {
40
+ [Direction.Up]: { dx: 0, dy: -1 },
41
+ [Direction.Down]: { dx: 0, dy: 1 },
42
+ [Direction.Left]: { dx: -1, dy: 0 },
43
+ [Direction.Right]: { dx: 1, dy: 0 },
44
+ };
45
+ linkedDirections = {
46
+ [Direction.Left]: Direction.Left,
47
+ [Direction.Up]: Direction.Up,
48
+ [Direction.Right]: Direction.Right,
49
+ [Direction.Down]: Direction.Down,
50
+ };
20
51
  /**
21
52
  * **Darts count opposite color cells in that direction**
22
53
  *
@@ -25,29 +56,8 @@ class DirectionLinkerSymbol extends Symbol {
25
56
  */
26
57
  constructor(x, y) {
27
58
  super(x, y);
28
- Object.defineProperty(this, "x", {
29
- enumerable: true,
30
- configurable: true,
31
- writable: true,
32
- value: x
33
- });
34
- Object.defineProperty(this, "y", {
35
- enumerable: true,
36
- configurable: true,
37
- writable: true,
38
- value: y
39
- });
40
- Object.defineProperty(this, "linkedDirections", {
41
- enumerable: true,
42
- configurable: true,
43
- writable: true,
44
- value: {
45
- [Direction.Left]: Direction.Left,
46
- [Direction.Up]: Direction.Up,
47
- [Direction.Right]: Direction.Right,
48
- [Direction.Down]: Direction.Down,
49
- }
50
- });
59
+ this.x = x;
60
+ this.y = y;
51
61
  }
52
62
  changeDirections(linkedDirections) {
53
63
  this.linkedDirections = linkedDirections;
@@ -219,43 +229,4 @@ class DirectionLinkerSymbol extends Symbol {
219
229
  ];
220
230
  }
221
231
  }
222
- Object.defineProperty(DirectionLinkerSymbol, "CONFIGS", {
223
- enumerable: true,
224
- configurable: true,
225
- writable: true,
226
- value: Object.freeze([
227
- {
228
- type: ConfigType.Number,
229
- default: 0,
230
- field: 'x',
231
- description: 'X',
232
- configurable: false,
233
- },
234
- {
235
- type: ConfigType.Number,
236
- default: 0,
237
- field: 'y',
238
- description: 'Y',
239
- configurable: false,
240
- },
241
- ])
242
- });
243
- Object.defineProperty(DirectionLinkerSymbol, "EXAMPLE_GRID", {
244
- enumerable: true,
245
- configurable: true,
246
- writable: true,
247
- value: Object.freeze(GridData.create(['wwbbw', 'wwwww', 'wwwww', 'wwwww']))
248
- });
249
- Object.defineProperty(DirectionLinkerSymbol, "directionDeltas", {
250
- enumerable: true,
251
- configurable: true,
252
- writable: true,
253
- value: {
254
- [Direction.Up]: { dx: 0, dy: -1 },
255
- [Direction.Down]: { dx: 0, dy: 1 },
256
- [Direction.Left]: { dx: -1, dy: 0 },
257
- [Direction.Right]: { dx: 1, dy: 0 },
258
- }
259
- });
260
- export default DirectionLinkerSymbol;
261
232
  export const instance = undefined;
@@ -3,7 +3,40 @@ import GridData from '../grid.js';
3
3
  import { array } from '../dataHelper.js';
4
4
  import { Color, State } from '../primitives.js';
5
5
  import Symbol from './symbol.js';
6
- class EveryLetterSymbol extends Symbol {
6
+ export default class EveryLetterSymbol extends Symbol {
7
+ x;
8
+ y;
9
+ letter;
10
+ title = 'Hollow Letter';
11
+ static CONFIGS = Object.freeze([
12
+ {
13
+ type: ConfigType.Number,
14
+ default: 0,
15
+ field: 'x',
16
+ description: 'X',
17
+ configurable: false,
18
+ },
19
+ {
20
+ type: ConfigType.Number,
21
+ default: 0,
22
+ field: 'y',
23
+ description: 'Y',
24
+ configurable: false,
25
+ },
26
+ {
27
+ type: ConfigType.String,
28
+ default: 'a',
29
+ field: 'letter',
30
+ description: 'Letter',
31
+ explanation: 'Use single lowercase letters by convention.',
32
+ configurable: true,
33
+ },
34
+ ]);
35
+ static EXAMPLE_GRID = Object.freeze(GridData.create(['bwwbw', 'bwbbw', 'wwbww', 'bbbwb'])
36
+ .addSymbol(new EveryLetterSymbol(2, 0, 'b'))
37
+ .addSymbol(new EveryLetterSymbol(4, 1, 'a'))
38
+ .addSymbol(new EveryLetterSymbol(0, 2, 'a'))
39
+ .addSymbol(new EveryLetterSymbol(3, 2, 'b')));
7
40
  /**
8
41
  * **Include each Hollow Letter once per region**
9
42
  *
@@ -13,30 +46,9 @@ class EveryLetterSymbol extends Symbol {
13
46
  */
14
47
  constructor(x, y, letter) {
15
48
  super(x, y);
16
- Object.defineProperty(this, "x", {
17
- enumerable: true,
18
- configurable: true,
19
- writable: true,
20
- value: x
21
- });
22
- Object.defineProperty(this, "y", {
23
- enumerable: true,
24
- configurable: true,
25
- writable: true,
26
- value: y
27
- });
28
- Object.defineProperty(this, "letter", {
29
- enumerable: true,
30
- configurable: true,
31
- writable: true,
32
- value: letter
33
- });
34
- Object.defineProperty(this, "title", {
35
- enumerable: true,
36
- configurable: true,
37
- writable: true,
38
- value: 'Hollow Letter'
39
- });
49
+ this.x = x;
50
+ this.y = y;
51
+ this.letter = letter;
40
52
  this.letter = letter;
41
53
  }
42
54
  get id() {
@@ -102,44 +114,4 @@ class EveryLetterSymbol extends Symbol {
102
114
  return this.copyWith({ letter });
103
115
  }
104
116
  }
105
- Object.defineProperty(EveryLetterSymbol, "CONFIGS", {
106
- enumerable: true,
107
- configurable: true,
108
- writable: true,
109
- value: Object.freeze([
110
- {
111
- type: ConfigType.Number,
112
- default: 0,
113
- field: 'x',
114
- description: 'X',
115
- configurable: false,
116
- },
117
- {
118
- type: ConfigType.Number,
119
- default: 0,
120
- field: 'y',
121
- description: 'Y',
122
- configurable: false,
123
- },
124
- {
125
- type: ConfigType.String,
126
- default: 'a',
127
- field: 'letter',
128
- description: 'Letter',
129
- explanation: 'Use single lowercase letters by convention.',
130
- configurable: true,
131
- },
132
- ])
133
- });
134
- Object.defineProperty(EveryLetterSymbol, "EXAMPLE_GRID", {
135
- enumerable: true,
136
- configurable: true,
137
- writable: true,
138
- value: Object.freeze(GridData.create(['bwwbw', 'bwbbw', 'wwbww', 'bbbwb'])
139
- .addSymbol(new EveryLetterSymbol(2, 0, 'b'))
140
- .addSymbol(new EveryLetterSymbol(4, 1, 'a'))
141
- .addSymbol(new EveryLetterSymbol(0, 2, 'a'))
142
- .addSymbol(new EveryLetterSymbol(3, 2, 'b')))
143
- });
144
- export default EveryLetterSymbol;
145
117
  export const instance = new EveryLetterSymbol(0, 0, 'a');
@@ -10,7 +10,8 @@ const OFFSETS = [
10
10
  [0, 1],
11
11
  [-1, 0],
12
12
  ];
13
- class FocusSymbol extends NumberSymbol {
13
+ export default class FocusSymbol extends NumberSymbol {
14
+ deadEnd;
14
15
  get title() {
15
16
  if (this.deadEnd) {
16
17
  return 'Dead End';
@@ -19,6 +20,52 @@ class FocusSymbol extends NumberSymbol {
19
20
  return 'Focus Number';
20
21
  }
21
22
  }
23
+ static CONFIGS = Object.freeze([
24
+ {
25
+ type: ConfigType.Number,
26
+ default: 0,
27
+ field: 'x',
28
+ description: 'X',
29
+ configurable: false,
30
+ },
31
+ {
32
+ type: ConfigType.Number,
33
+ default: 0,
34
+ field: 'y',
35
+ description: 'Y',
36
+ configurable: false,
37
+ },
38
+ {
39
+ type: ConfigType.Boolean,
40
+ default: false,
41
+ field: 'deadEnd',
42
+ description: 'Dead End',
43
+ explanation: 'A Dead End is a Focus Number of 1 that can be stacked with other symbols.',
44
+ configurable: true,
45
+ },
46
+ {
47
+ type: ConfigType.Number,
48
+ default: 1,
49
+ field: 'number',
50
+ description: 'Number',
51
+ explanation: 'Must be 1 for Dead Ends. Between 0 and 4 for Focus Numbers.',
52
+ configurable: true,
53
+ },
54
+ ]);
55
+ static EXAMPLE_GRID = Object.freeze(GridData.create(['wwwww', 'bbbbw', 'wwbbw', 'wwwww']).withSymbols([
56
+ new FocusSymbol(0, 0, false, 1),
57
+ new FocusSymbol(4, 1, false, 2),
58
+ new FocusSymbol(1, 3, false, 3),
59
+ ]));
60
+ static EXAMPLE_GRID_DEAD_END = Object.freeze(GridData.create(['wwwww', 'bbbbw', 'wwwbw', 'bbbbw']).withSymbols([
61
+ new FocusSymbol(0, 0, true, 1),
62
+ new FocusSymbol(4, 3, true, 1),
63
+ new FocusSymbol(0, 2, true, 1),
64
+ new FocusSymbol(2, 2, true, 1),
65
+ new AreaNumberSymbol(0, 2, 3),
66
+ new LetterSymbol(0, 0, 'A'),
67
+ new LetterSymbol(4, 3, 'A'),
68
+ ]));
22
69
  /**
23
70
  * **Focus Numbers count directly adjacent cells of the same color**
24
71
  * @param x - The x-coordinate of the symbol.
@@ -31,12 +78,7 @@ class FocusSymbol extends NumberSymbol {
31
78
  number = 1;
32
79
  }
33
80
  super(x, y, number);
34
- Object.defineProperty(this, "deadEnd", {
35
- enumerable: true,
36
- configurable: true,
37
- writable: true,
38
- value: deadEnd
39
- });
81
+ this.deadEnd = deadEnd;
40
82
  this.deadEnd = deadEnd;
41
83
  }
42
84
  get id() {
@@ -114,66 +156,4 @@ class FocusSymbol extends NumberSymbol {
114
156
  return this.copyWith({ deadEnd });
115
157
  }
116
158
  }
117
- Object.defineProperty(FocusSymbol, "CONFIGS", {
118
- enumerable: true,
119
- configurable: true,
120
- writable: true,
121
- value: Object.freeze([
122
- {
123
- type: ConfigType.Number,
124
- default: 0,
125
- field: 'x',
126
- description: 'X',
127
- configurable: false,
128
- },
129
- {
130
- type: ConfigType.Number,
131
- default: 0,
132
- field: 'y',
133
- description: 'Y',
134
- configurable: false,
135
- },
136
- {
137
- type: ConfigType.Boolean,
138
- default: false,
139
- field: 'deadEnd',
140
- description: 'Dead End',
141
- explanation: 'A Dead End is a Focus Number of 1 that can be stacked with other symbols.',
142
- configurable: true,
143
- },
144
- {
145
- type: ConfigType.Number,
146
- default: 1,
147
- field: 'number',
148
- description: 'Number',
149
- explanation: 'Must be 1 for Dead Ends. Between 0 and 4 for Focus Numbers.',
150
- configurable: true,
151
- },
152
- ])
153
- });
154
- Object.defineProperty(FocusSymbol, "EXAMPLE_GRID", {
155
- enumerable: true,
156
- configurable: true,
157
- writable: true,
158
- value: Object.freeze(GridData.create(['wwwww', 'bbbbw', 'wwbbw', 'wwwww']).withSymbols([
159
- new FocusSymbol(0, 0, false, 1),
160
- new FocusSymbol(4, 1, false, 2),
161
- new FocusSymbol(1, 3, false, 3),
162
- ]))
163
- });
164
- Object.defineProperty(FocusSymbol, "EXAMPLE_GRID_DEAD_END", {
165
- enumerable: true,
166
- configurable: true,
167
- writable: true,
168
- value: Object.freeze(GridData.create(['wwwww', 'bbbbw', 'wwwbw', 'bbbbw']).withSymbols([
169
- new FocusSymbol(0, 0, true, 1),
170
- new FocusSymbol(4, 3, true, 1),
171
- new FocusSymbol(0, 2, true, 1),
172
- new FocusSymbol(2, 2, true, 1),
173
- new AreaNumberSymbol(0, 2, 3),
174
- new LetterSymbol(0, 0, 'A'),
175
- new LetterSymbol(4, 3, 'A'),
176
- ]))
177
- });
178
- export default FocusSymbol;
179
159
  export const instance = new FocusSymbol(0, 0, false, 1);
@@ -2,7 +2,16 @@ import { ConfigType } from '../config.js';
2
2
  import GridData from '../grid.js';
3
3
  import { Direction } from '../primitives.js';
4
4
  import DirectionLinkerSymbol from './directionLinkerSymbol.js';
5
- class GalaxySymbol extends DirectionLinkerSymbol {
5
+ export default class GalaxySymbol extends DirectionLinkerSymbol {
6
+ x;
7
+ y;
8
+ title = 'Galaxy';
9
+ static linkedDirections = {
10
+ [Direction.Left]: Direction.Right,
11
+ [Direction.Up]: Direction.Down,
12
+ [Direction.Right]: Direction.Left,
13
+ [Direction.Down]: Direction.Up,
14
+ };
6
15
  /**
7
16
  * **Galaxies are centers of rotational symmetry**
8
17
  *
@@ -11,24 +20,8 @@ class GalaxySymbol extends DirectionLinkerSymbol {
11
20
  */
12
21
  constructor(x, y) {
13
22
  super(x, y);
14
- Object.defineProperty(this, "x", {
15
- enumerable: true,
16
- configurable: true,
17
- writable: true,
18
- value: x
19
- });
20
- Object.defineProperty(this, "y", {
21
- enumerable: true,
22
- configurable: true,
23
- writable: true,
24
- value: y
25
- });
26
- Object.defineProperty(this, "title", {
27
- enumerable: true,
28
- configurable: true,
29
- writable: true,
30
- value: 'Galaxy'
31
- });
23
+ this.x = x;
24
+ this.y = y;
32
25
  super.changeDirections(GalaxySymbol.linkedDirections);
33
26
  }
34
27
  get id() {
@@ -65,16 +58,4 @@ class GalaxySymbol extends DirectionLinkerSymbol {
65
58
  return new GalaxySymbol(x ?? this.x, y ?? this.y);
66
59
  }
67
60
  }
68
- Object.defineProperty(GalaxySymbol, "linkedDirections", {
69
- enumerable: true,
70
- configurable: true,
71
- writable: true,
72
- value: {
73
- [Direction.Left]: Direction.Right,
74
- [Direction.Up]: Direction.Down,
75
- [Direction.Right]: Direction.Left,
76
- [Direction.Down]: Direction.Up,
77
- }
78
- });
79
- export default GalaxySymbol;
80
61
  export const instance = new GalaxySymbol(0, 0);
@@ -3,10 +3,40 @@ import GridData from '../grid.js';
3
3
  import { Color, State } from '../primitives.js';
4
4
  import CustomIconSymbol from './customIconSymbol.js';
5
5
  import Symbol from './symbol.js';
6
- class HiddenSymbol extends Symbol {
6
+ export default class HiddenSymbol extends Symbol {
7
+ x;
8
+ y;
9
+ revealLocation;
10
+ title = 'Hidden Symbol Marker';
7
11
  get configExplanation() {
8
12
  return 'Other symbols in the same location will be hidden until this tile is colored correctly.';
9
13
  }
14
+ static CONFIGS = Object.freeze([
15
+ {
16
+ type: ConfigType.Number,
17
+ default: 0,
18
+ field: 'x',
19
+ description: 'X',
20
+ configurable: false,
21
+ },
22
+ {
23
+ type: ConfigType.Number,
24
+ default: 0,
25
+ field: 'y',
26
+ description: 'Y',
27
+ configurable: false,
28
+ },
29
+ {
30
+ type: ConfigType.Boolean,
31
+ default: false,
32
+ field: 'revealLocation',
33
+ description: 'Reveal symbol location',
34
+ explanation: 'Whether to show this symbol when the tile is not yet colored correctly.',
35
+ configurable: true,
36
+ },
37
+ ]);
38
+ static EXAMPLE_GRID = Object.freeze(GridData.create(['w']).addSymbol(new CustomIconSymbol('', GridData.create(['.']), 0, 0, 'MdHideSource') // Not using HiddenSymbol here because it is meant to be hidden in non-edit mode
39
+ ));
10
40
  /**
11
41
  * **Hidden Symbols: color cells correctly to reveal more clues**
12
42
  *
@@ -16,30 +46,9 @@ class HiddenSymbol extends Symbol {
16
46
  */
17
47
  constructor(x, y, revealLocation = false) {
18
48
  super(x, y);
19
- Object.defineProperty(this, "x", {
20
- enumerable: true,
21
- configurable: true,
22
- writable: true,
23
- value: x
24
- });
25
- Object.defineProperty(this, "y", {
26
- enumerable: true,
27
- configurable: true,
28
- writable: true,
29
- value: y
30
- });
31
- Object.defineProperty(this, "revealLocation", {
32
- enumerable: true,
33
- configurable: true,
34
- writable: true,
35
- value: revealLocation
36
- });
37
- Object.defineProperty(this, "title", {
38
- enumerable: true,
39
- configurable: true,
40
- writable: true,
41
- value: 'Hidden Symbol Marker'
42
- });
49
+ this.x = x;
50
+ this.y = y;
51
+ this.revealLocation = revealLocation;
43
52
  this.revealLocation = revealLocation;
44
53
  }
45
54
  get id() {
@@ -101,41 +110,4 @@ class HiddenSymbol extends Symbol {
101
110
  return this.copyWith({ revealLocation });
102
111
  }
103
112
  }
104
- Object.defineProperty(HiddenSymbol, "CONFIGS", {
105
- enumerable: true,
106
- configurable: true,
107
- writable: true,
108
- value: Object.freeze([
109
- {
110
- type: ConfigType.Number,
111
- default: 0,
112
- field: 'x',
113
- description: 'X',
114
- configurable: false,
115
- },
116
- {
117
- type: ConfigType.Number,
118
- default: 0,
119
- field: 'y',
120
- description: 'Y',
121
- configurable: false,
122
- },
123
- {
124
- type: ConfigType.Boolean,
125
- default: false,
126
- field: 'revealLocation',
127
- description: 'Reveal symbol location',
128
- explanation: 'Whether to show this symbol when the tile is not yet colored correctly.',
129
- configurable: true,
130
- },
131
- ])
132
- });
133
- Object.defineProperty(HiddenSymbol, "EXAMPLE_GRID", {
134
- enumerable: true,
135
- configurable: true,
136
- writable: true,
137
- value: Object.freeze(GridData.create(['w']).addSymbol(new CustomIconSymbol('', GridData.create(['.']), 0, 0, 'MdHideSource') // Not using HiddenSymbol here because it is meant to be hidden in non-edit mode
138
- ))
139
- });
140
- export default HiddenSymbol;
141
113
  export const instance = new HiddenSymbol(0, 0);