@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
@@ -3,7 +3,66 @@ import GridData from '../grid.js';
3
3
  import { Color, State } from '../primitives.js';
4
4
  import AreaNumberSymbol from '../symbols/areaNumberSymbol.js';
5
5
  import Rule from './rule.js';
6
- class CellCountRule extends Rule {
6
+ export default class CellCountRule extends Rule {
7
+ color;
8
+ count;
9
+ title = 'Total Count';
10
+ static CONFIGS = Object.freeze([
11
+ {
12
+ type: ConfigType.Color,
13
+ default: Color.Light,
14
+ allowGray: false,
15
+ field: 'color',
16
+ description: 'Color',
17
+ configurable: true,
18
+ },
19
+ {
20
+ type: ConfigType.Number,
21
+ default: 10,
22
+ min: 0,
23
+ field: 'count',
24
+ description: 'Count',
25
+ configurable: true,
26
+ },
27
+ ]);
28
+ static EXAMPLE_GRID_LIGHT = Object.freeze([
29
+ GridData.create(['bbbbb', 'bbbbb', 'bbbbb', 'bbbbb']),
30
+ GridData.create(['bbbbb', 'bbbbb', 'bwbbb', 'bbbbb']).withSymbols([
31
+ new AreaNumberSymbol(1, 2, 1),
32
+ ]),
33
+ GridData.create(['bbbbb', 'bbbbb', 'bwwbb', 'bbbbb']).withSymbols([
34
+ new AreaNumberSymbol(1, 2, 2),
35
+ ]),
36
+ GridData.create(['bbbbb', 'bwbbb', 'bwwbb', 'bbbbb']).withSymbols([
37
+ new AreaNumberSymbol(1, 2, 3),
38
+ ]),
39
+ GridData.create(['bbbbb', 'bwwbb', 'bwwbb', 'bbbbb']).withSymbols([
40
+ new AreaNumberSymbol(1, 2, 4),
41
+ ]),
42
+ GridData.create(['bbbbb', 'bwwbb', 'bwwwb', 'bbbbb']).withSymbols([
43
+ new AreaNumberSymbol(1, 2, 5),
44
+ ]),
45
+ GridData.create(['bbbbb', 'bwwwb', 'bwwwb', 'bbbbb']).withSymbols([
46
+ new AreaNumberSymbol(1, 2, 6),
47
+ ]),
48
+ GridData.create(['bbbbb', 'bbbbb', 'wwwbb', 'wwwwb']).withSymbols([
49
+ new AreaNumberSymbol(1, 2, 7),
50
+ ]),
51
+ GridData.create(['bbbbb', 'wbbbb', 'wwwbb', 'wwwwb']).withSymbols([
52
+ new AreaNumberSymbol(1, 2, 8),
53
+ ]),
54
+ GridData.create(['bbbbb', 'wwbbb', 'wwwbb', 'wwwwb']).withSymbols([
55
+ new AreaNumberSymbol(1, 2, 9),
56
+ ]),
57
+ GridData.create(['wbbbb', 'wwbbb', 'wwwbb', 'wwwwb']).withSymbols([
58
+ new AreaNumberSymbol(1, 2, 10),
59
+ ]),
60
+ ]);
61
+ static EXAMPLE_GRID_DARK = Object.freeze(CellCountRule.EXAMPLE_GRID_LIGHT.map(grid => grid.withTiles(tiles => tiles.map(row => row.map(tile => tile.withColor(tile.color === Color.Dark ? Color.Light : Color.Dark))))));
62
+ static SEARCH_VARIANTS = [
63
+ new CellCountRule(Color.Light, 10).searchVariant(),
64
+ new CellCountRule(Color.Dark, 10).searchVariant(),
65
+ ];
7
66
  /**
8
67
  * **There are <count> <color> cells in total**
9
68
  *
@@ -12,24 +71,8 @@ class CellCountRule extends Rule {
12
71
  */
13
72
  constructor(color, count) {
14
73
  super();
15
- Object.defineProperty(this, "color", {
16
- enumerable: true,
17
- configurable: true,
18
- writable: true,
19
- value: color
20
- });
21
- Object.defineProperty(this, "count", {
22
- enumerable: true,
23
- configurable: true,
24
- writable: true,
25
- value: count
26
- });
27
- Object.defineProperty(this, "title", {
28
- enumerable: true,
29
- configurable: true,
30
- writable: true,
31
- value: 'Total Count'
32
- });
74
+ this.color = color;
75
+ this.count = count;
33
76
  this.color = color;
34
77
  this.count = count;
35
78
  }
@@ -92,81 +135,4 @@ class CellCountRule extends Rule {
92
135
  return this.copyWith({ count });
93
136
  }
94
137
  }
95
- Object.defineProperty(CellCountRule, "CONFIGS", {
96
- enumerable: true,
97
- configurable: true,
98
- writable: true,
99
- value: Object.freeze([
100
- {
101
- type: ConfigType.Color,
102
- default: Color.Light,
103
- allowGray: false,
104
- field: 'color',
105
- description: 'Color',
106
- configurable: true,
107
- },
108
- {
109
- type: ConfigType.Number,
110
- default: 10,
111
- min: 0,
112
- field: 'count',
113
- description: 'Count',
114
- configurable: true,
115
- },
116
- ])
117
- });
118
- Object.defineProperty(CellCountRule, "EXAMPLE_GRID_LIGHT", {
119
- enumerable: true,
120
- configurable: true,
121
- writable: true,
122
- value: Object.freeze([
123
- GridData.create(['bbbbb', 'bbbbb', 'bbbbb', 'bbbbb']),
124
- GridData.create(['bbbbb', 'bbbbb', 'bwbbb', 'bbbbb']).withSymbols([
125
- new AreaNumberSymbol(1, 2, 1),
126
- ]),
127
- GridData.create(['bbbbb', 'bbbbb', 'bwwbb', 'bbbbb']).withSymbols([
128
- new AreaNumberSymbol(1, 2, 2),
129
- ]),
130
- GridData.create(['bbbbb', 'bwbbb', 'bwwbb', 'bbbbb']).withSymbols([
131
- new AreaNumberSymbol(1, 2, 3),
132
- ]),
133
- GridData.create(['bbbbb', 'bwwbb', 'bwwbb', 'bbbbb']).withSymbols([
134
- new AreaNumberSymbol(1, 2, 4),
135
- ]),
136
- GridData.create(['bbbbb', 'bwwbb', 'bwwwb', 'bbbbb']).withSymbols([
137
- new AreaNumberSymbol(1, 2, 5),
138
- ]),
139
- GridData.create(['bbbbb', 'bwwwb', 'bwwwb', 'bbbbb']).withSymbols([
140
- new AreaNumberSymbol(1, 2, 6),
141
- ]),
142
- GridData.create(['bbbbb', 'bbbbb', 'wwwbb', 'wwwwb']).withSymbols([
143
- new AreaNumberSymbol(1, 2, 7),
144
- ]),
145
- GridData.create(['bbbbb', 'wbbbb', 'wwwbb', 'wwwwb']).withSymbols([
146
- new AreaNumberSymbol(1, 2, 8),
147
- ]),
148
- GridData.create(['bbbbb', 'wwbbb', 'wwwbb', 'wwwwb']).withSymbols([
149
- new AreaNumberSymbol(1, 2, 9),
150
- ]),
151
- GridData.create(['wbbbb', 'wwbbb', 'wwwbb', 'wwwwb']).withSymbols([
152
- new AreaNumberSymbol(1, 2, 10),
153
- ]),
154
- ])
155
- });
156
- Object.defineProperty(CellCountRule, "EXAMPLE_GRID_DARK", {
157
- enumerable: true,
158
- configurable: true,
159
- writable: true,
160
- value: Object.freeze(CellCountRule.EXAMPLE_GRID_LIGHT.map(grid => grid.withTiles(tiles => tiles.map(row => row.map(tile => tile.withColor(tile.color === Color.Dark ? Color.Light : Color.Dark))))))
161
- });
162
- Object.defineProperty(CellCountRule, "SEARCH_VARIANTS", {
163
- enumerable: true,
164
- configurable: true,
165
- writable: true,
166
- value: [
167
- new CellCountRule(Color.Light, 10).searchVariant(),
168
- new CellCountRule(Color.Dark, 10).searchVariant(),
169
- ]
170
- });
171
- export default CellCountRule;
172
138
  export const instance = new CellCountRule(Color.Dark, 10);
@@ -1,10 +1,15 @@
1
1
  import GridData from '../grid.js';
2
2
  import { MajorRule, State } from '../primitives.js';
3
3
  import Rule from './rule.js';
4
- class CompletePatternRule extends Rule {
4
+ export default class CompletePatternRule extends Rule {
5
+ title = 'Complete The Pattern';
5
6
  get configExplanation() {
6
7
  return 'Complete the grid by pattern recognition. Your provided solution may override auto-validation.';
7
8
  }
9
+ static EXAMPLE_GRID = Object.freeze(GridData.create(['wbwbw', 'bwbwb', 'wbwbw', 'bwbwb']));
10
+ static SEARCH_VARIANTS = [
11
+ new CompletePatternRule().searchVariant(),
12
+ ];
8
13
  /**
9
14
  * **Complete the pattern**
10
15
  *
@@ -12,12 +17,6 @@ class CompletePatternRule extends Rule {
12
17
  */
13
18
  constructor() {
14
19
  super();
15
- Object.defineProperty(this, "title", {
16
- enumerable: true,
17
- configurable: true,
18
- writable: true,
19
- value: 'Complete The Pattern'
20
- });
21
20
  }
22
21
  get id() {
23
22
  return MajorRule.CompletePattern;
@@ -44,19 +43,4 @@ class CompletePatternRule extends Rule {
44
43
  return true;
45
44
  }
46
45
  }
47
- Object.defineProperty(CompletePatternRule, "EXAMPLE_GRID", {
48
- enumerable: true,
49
- configurable: true,
50
- writable: true,
51
- value: Object.freeze(GridData.create(['wbwbw', 'bwbwb', 'wbwbw', 'bwbwb']))
52
- });
53
- Object.defineProperty(CompletePatternRule, "SEARCH_VARIANTS", {
54
- enumerable: true,
55
- configurable: true,
56
- writable: true,
57
- value: [
58
- new CompletePatternRule().searchVariant(),
59
- ]
60
- });
61
- export default CompletePatternRule;
62
46
  export const instance = new CompletePatternRule();
@@ -3,7 +3,25 @@ import GridData from '../grid.js';
3
3
  import { array, minBy } from '../dataHelper.js';
4
4
  import { Color, State } from '../primitives.js';
5
5
  import Rule from './rule.js';
6
- class ConnectAllRule extends Rule {
6
+ export default class ConnectAllRule extends Rule {
7
+ color;
8
+ title = 'Connect All';
9
+ static CONFIGS = Object.freeze([
10
+ {
11
+ type: ConfigType.Color,
12
+ default: Color.Light,
13
+ allowGray: false,
14
+ field: 'color',
15
+ description: 'Color',
16
+ configurable: true,
17
+ },
18
+ ]);
19
+ static EXAMPLE_GRID_LIGHT = Object.freeze(GridData.create(['bwwwb', 'bwbww', 'wwwbb', 'wbwww']));
20
+ static EXAMPLE_GRID_DARK = Object.freeze(GridData.create(['wbbbw', 'wbwbb', 'bbbww', 'bwbbb']));
21
+ static SEARCH_VARIANTS = [
22
+ new ConnectAllRule(Color.Light).searchVariant(),
23
+ new ConnectAllRule(Color.Dark).searchVariant(),
24
+ ];
7
25
  /**
8
26
  * **Connect all <color> cells**
9
27
  *
@@ -11,18 +29,7 @@ class ConnectAllRule extends Rule {
11
29
  */
12
30
  constructor(color) {
13
31
  super();
14
- Object.defineProperty(this, "color", {
15
- enumerable: true,
16
- configurable: true,
17
- writable: true,
18
- value: color
19
- });
20
- Object.defineProperty(this, "title", {
21
- enumerable: true,
22
- configurable: true,
23
- writable: true,
24
- value: 'Connect All'
25
- });
32
+ this.color = color;
26
33
  this.color = color;
27
34
  }
28
35
  get id() {
@@ -78,41 +85,4 @@ class ConnectAllRule extends Rule {
78
85
  return this.copyWith({ color });
79
86
  }
80
87
  }
81
- Object.defineProperty(ConnectAllRule, "CONFIGS", {
82
- enumerable: true,
83
- configurable: true,
84
- writable: true,
85
- value: Object.freeze([
86
- {
87
- type: ConfigType.Color,
88
- default: Color.Light,
89
- allowGray: false,
90
- field: 'color',
91
- description: 'Color',
92
- configurable: true,
93
- },
94
- ])
95
- });
96
- Object.defineProperty(ConnectAllRule, "EXAMPLE_GRID_LIGHT", {
97
- enumerable: true,
98
- configurable: true,
99
- writable: true,
100
- value: Object.freeze(GridData.create(['bwwwb', 'bwbww', 'wwwbb', 'wbwww']))
101
- });
102
- Object.defineProperty(ConnectAllRule, "EXAMPLE_GRID_DARK", {
103
- enumerable: true,
104
- configurable: true,
105
- writable: true,
106
- value: Object.freeze(GridData.create(['wbbbw', 'wbwbb', 'bbbww', 'bwbbb']))
107
- });
108
- Object.defineProperty(ConnectAllRule, "SEARCH_VARIANTS", {
109
- enumerable: true,
110
- configurable: true,
111
- writable: true,
112
- value: [
113
- new ConnectAllRule(Color.Light).searchVariant(),
114
- new ConnectAllRule(Color.Dark).searchVariant(),
115
- ]
116
- });
117
- export default ConnectAllRule;
118
88
  export const instance = new ConnectAllRule(Color.Dark);
@@ -4,7 +4,33 @@ import { array, minBy } from '../dataHelper.js';
4
4
  import { Color, State } from '../primitives.js';
5
5
  import Rule from './rule.js';
6
6
  import GridZones from '../gridZones.js';
7
- class ConnectZonesRule extends Rule {
7
+ export default class ConnectZonesRule extends Rule {
8
+ color;
9
+ title = 'Connect Zones';
10
+ static CONFIGS = Object.freeze([
11
+ {
12
+ type: ConfigType.Color,
13
+ default: Color.Light,
14
+ allowGray: false,
15
+ field: 'color',
16
+ description: 'Color',
17
+ configurable: true,
18
+ },
19
+ ]);
20
+ static EXAMPLE_GRID_LIGHT = Object.freeze(GridData.create(['wbbwb', 'wbbwb', 'wbbww', 'wwbbb'])
21
+ .withZones(new GridZones([
22
+ { x1: 2, y1: 1, x2: 2, y2: 2 },
23
+ { x1: 1, y1: 0, x2: 2, y2: 0 },
24
+ { x1: 1, y1: 1, x2: 2, y2: 1 },
25
+ { x1: 2, y1: 2, x2: 3, y2: 2 },
26
+ { x1: 2, y1: 3, x2: 3, y2: 3 },
27
+ ]))
28
+ .addRule(new ConnectZonesRule(Color.Light)));
29
+ static EXAMPLE_GRID_DARK = Object.freeze(ConnectZonesRule.EXAMPLE_GRID_LIGHT.withTiles(tiles => tiles.map(row => row.map(tile => tile.withColor(tile.color === Color.Dark ? Color.Light : Color.Dark)))));
30
+ static SEARCH_VARIANTS = [
31
+ new ConnectZonesRule(Color.Light).searchVariant(),
32
+ new ConnectZonesRule(Color.Dark).searchVariant(),
33
+ ];
8
34
  /**
9
35
  * **Connect all <color> cells in each zone**
10
36
  *
@@ -12,18 +38,7 @@ class ConnectZonesRule extends Rule {
12
38
  */
13
39
  constructor(color) {
14
40
  super();
15
- Object.defineProperty(this, "color", {
16
- enumerable: true,
17
- configurable: true,
18
- writable: true,
19
- value: color
20
- });
21
- Object.defineProperty(this, "title", {
22
- enumerable: true,
23
- configurable: true,
24
- writable: true,
25
- value: 'Connect Zones'
26
- });
41
+ this.color = color;
27
42
  this.color = color;
28
43
  }
29
44
  get id() {
@@ -93,49 +108,4 @@ class ConnectZonesRule extends Rule {
93
108
  return this.copyWith({ color });
94
109
  }
95
110
  }
96
- Object.defineProperty(ConnectZonesRule, "CONFIGS", {
97
- enumerable: true,
98
- configurable: true,
99
- writable: true,
100
- value: Object.freeze([
101
- {
102
- type: ConfigType.Color,
103
- default: Color.Light,
104
- allowGray: false,
105
- field: 'color',
106
- description: 'Color',
107
- configurable: true,
108
- },
109
- ])
110
- });
111
- Object.defineProperty(ConnectZonesRule, "EXAMPLE_GRID_LIGHT", {
112
- enumerable: true,
113
- configurable: true,
114
- writable: true,
115
- value: Object.freeze(GridData.create(['wbbwb', 'wbbwb', 'wbbww', 'wwbbb'])
116
- .withZones(new GridZones([
117
- { x1: 2, y1: 1, x2: 2, y2: 2 },
118
- { x1: 1, y1: 0, x2: 2, y2: 0 },
119
- { x1: 1, y1: 1, x2: 2, y2: 1 },
120
- { x1: 2, y1: 2, x2: 3, y2: 2 },
121
- { x1: 2, y1: 3, x2: 3, y2: 3 },
122
- ]))
123
- .addRule(new ConnectZonesRule(Color.Light)))
124
- });
125
- Object.defineProperty(ConnectZonesRule, "EXAMPLE_GRID_DARK", {
126
- enumerable: true,
127
- configurable: true,
128
- writable: true,
129
- value: Object.freeze(ConnectZonesRule.EXAMPLE_GRID_LIGHT.withTiles(tiles => tiles.map(row => row.map(tile => tile.withColor(tile.color === Color.Dark ? Color.Light : Color.Dark)))))
130
- });
131
- Object.defineProperty(ConnectZonesRule, "SEARCH_VARIANTS", {
132
- enumerable: true,
133
- configurable: true,
134
- writable: true,
135
- value: [
136
- new ConnectZonesRule(Color.Light).searchVariant(),
137
- new ConnectZonesRule(Color.Dark).searchVariant(),
138
- ]
139
- });
140
- export default ConnectZonesRule;
141
111
  export const instance = new ConnectZonesRule(Color.Dark);
@@ -4,7 +4,35 @@ import GridData from '../grid.js';
4
4
  import { Color, State } from '../primitives.js';
5
5
  import { getShapeVariants, sanitizePatternGrid, tilesToShape, } from '../shapes.js';
6
6
  import RegionShapeRule from './regionShapeRule.js';
7
- class ContainsShapeRule extends RegionShapeRule {
7
+ export default class ContainsShapeRule extends RegionShapeRule {
8
+ title = 'Areas Contain Pattern';
9
+ static EXAMPLE_GRID_LIGHT = Object.freeze(GridData.create(['nnnnn', 'nnnnn', 'wwwwn', 'nnnnn', 'nnnnn']));
10
+ static EXAMPLE_GRID_DARK = Object.freeze(GridData.create(['nnnnn', 'nnnnn', 'bbbbn', 'nnnnn', 'nnnnn']));
11
+ static CONFIGS = Object.freeze([
12
+ {
13
+ type: ConfigType.Color,
14
+ default: Color.Light,
15
+ allowGray: false,
16
+ field: 'color',
17
+ description: 'Color',
18
+ configurable: true,
19
+ },
20
+ {
21
+ type: ConfigType.Shape,
22
+ default: ContainsShapeRule.EXAMPLE_GRID_LIGHT,
23
+ resizable: true,
24
+ field: 'pattern',
25
+ description: 'Pattern',
26
+ explanation: 'The pattern to be contained. Must only include tiles of the selected color.',
27
+ configurable: true,
28
+ },
29
+ ]);
30
+ static SEARCH_VARIANTS = [
31
+ new ContainsShapeRule(Color.Light, ContainsShapeRule.EXAMPLE_GRID_LIGHT).searchVariant(),
32
+ new ContainsShapeRule(Color.Dark, ContainsShapeRule.EXAMPLE_GRID_DARK).searchVariant(),
33
+ ];
34
+ pattern;
35
+ cache;
8
36
  /**
9
37
  * **All <color> areas must contain this pattern**
10
38
  *
@@ -13,24 +41,6 @@ class ContainsShapeRule extends RegionShapeRule {
13
41
  */
14
42
  constructor(color, pattern) {
15
43
  super(color);
16
- Object.defineProperty(this, "title", {
17
- enumerable: true,
18
- configurable: true,
19
- writable: true,
20
- value: 'Areas Contain Pattern'
21
- });
22
- Object.defineProperty(this, "pattern", {
23
- enumerable: true,
24
- configurable: true,
25
- writable: true,
26
- value: void 0
27
- });
28
- Object.defineProperty(this, "cache", {
29
- enumerable: true,
30
- configurable: true,
31
- writable: true,
32
- value: void 0
33
- });
34
44
  this.pattern = sanitizePatternGrid(pattern, t => t.color === color ? t : t.withColor(Color.Gray));
35
45
  this.cache = getShapeVariants(tilesToShape(this.pattern.tiles));
36
46
  }
@@ -112,50 +122,4 @@ class ContainsShapeRule extends RegionShapeRule {
112
122
  return this.copyWith({ pattern });
113
123
  }
114
124
  }
115
- Object.defineProperty(ContainsShapeRule, "EXAMPLE_GRID_LIGHT", {
116
- enumerable: true,
117
- configurable: true,
118
- writable: true,
119
- value: Object.freeze(GridData.create(['nnnnn', 'nnnnn', 'wwwwn', 'nnnnn', 'nnnnn']))
120
- });
121
- Object.defineProperty(ContainsShapeRule, "EXAMPLE_GRID_DARK", {
122
- enumerable: true,
123
- configurable: true,
124
- writable: true,
125
- value: Object.freeze(GridData.create(['nnnnn', 'nnnnn', 'bbbbn', 'nnnnn', 'nnnnn']))
126
- });
127
- Object.defineProperty(ContainsShapeRule, "CONFIGS", {
128
- enumerable: true,
129
- configurable: true,
130
- writable: true,
131
- value: Object.freeze([
132
- {
133
- type: ConfigType.Color,
134
- default: Color.Light,
135
- allowGray: false,
136
- field: 'color',
137
- description: 'Color',
138
- configurable: true,
139
- },
140
- {
141
- type: ConfigType.Shape,
142
- default: ContainsShapeRule.EXAMPLE_GRID_LIGHT,
143
- resizable: true,
144
- field: 'pattern',
145
- description: 'Pattern',
146
- explanation: 'The pattern to be contained. Must only include tiles of the selected color.',
147
- configurable: true,
148
- },
149
- ])
150
- });
151
- Object.defineProperty(ContainsShapeRule, "SEARCH_VARIANTS", {
152
- enumerable: true,
153
- configurable: true,
154
- writable: true,
155
- value: [
156
- new ContainsShapeRule(Color.Light, ContainsShapeRule.EXAMPLE_GRID_LIGHT).searchVariant(),
157
- new ContainsShapeRule(Color.Dark, ContainsShapeRule.EXAMPLE_GRID_DARK).searchVariant(),
158
- ]
159
- });
160
- export default ContainsShapeRule;
161
125
  export const instance = new ContainsShapeRule(Color.Dark, GridData.create([]));
@@ -2,10 +2,35 @@ import { ConfigType } from '../config.js';
2
2
  import GridData from '../grid.js';
3
3
  import { State } from '../primitives.js';
4
4
  import Rule from './rule.js';
5
- class CustomRule extends Rule {
5
+ export default class CustomRule extends Rule {
6
+ description;
7
+ grid;
8
+ title = 'Custom Rule';
6
9
  get configExplanation() {
7
10
  return 'A customizable rule. Your provided solution may override auto-validation.';
8
11
  }
12
+ static EXAMPLE_GRID = Object.freeze(GridData.create(5, 4));
13
+ static configs = Object.freeze([
14
+ {
15
+ type: ConfigType.String,
16
+ default: 'A *custom* rule',
17
+ field: 'description',
18
+ description: 'Description',
19
+ explanation: 'A short descriptive text. Use *asterisks* to highlight keywords.',
20
+ configurable: true,
21
+ },
22
+ {
23
+ type: ConfigType.Grid,
24
+ default: CustomRule.EXAMPLE_GRID,
25
+ field: 'grid',
26
+ description: 'Thumbnail Grid',
27
+ explanation: 'An example grid showing the rule.',
28
+ configurable: true,
29
+ },
30
+ ]);
31
+ static SEARCH_VARIANTS = [
32
+ new CustomRule('A *custom* rule', CustomRule.EXAMPLE_GRID).searchVariant(),
33
+ ];
9
34
  /**
10
35
  * A custom rule with a description and thumbnail grid.
11
36
  *
@@ -16,24 +41,8 @@ class CustomRule extends Rule {
16
41
  */
17
42
  constructor(description, grid) {
18
43
  super();
19
- Object.defineProperty(this, "description", {
20
- enumerable: true,
21
- configurable: true,
22
- writable: true,
23
- value: description
24
- });
25
- Object.defineProperty(this, "grid", {
26
- enumerable: true,
27
- configurable: true,
28
- writable: true,
29
- value: grid
30
- });
31
- Object.defineProperty(this, "title", {
32
- enumerable: true,
33
- configurable: true,
34
- writable: true,
35
- value: 'Custom Rule'
36
- });
44
+ this.description = description;
45
+ this.grid = grid;
37
46
  this.description = description;
38
47
  this.grid = grid;
39
48
  }
@@ -62,42 +71,4 @@ class CustomRule extends Rule {
62
71
  return true;
63
72
  }
64
73
  }
65
- Object.defineProperty(CustomRule, "EXAMPLE_GRID", {
66
- enumerable: true,
67
- configurable: true,
68
- writable: true,
69
- value: Object.freeze(GridData.create(5, 4))
70
- });
71
- Object.defineProperty(CustomRule, "configs", {
72
- enumerable: true,
73
- configurable: true,
74
- writable: true,
75
- value: Object.freeze([
76
- {
77
- type: ConfigType.String,
78
- default: 'A *custom* rule',
79
- field: 'description',
80
- description: 'Description',
81
- explanation: 'A short descriptive text. Use *asterisks* to highlight keywords.',
82
- configurable: true,
83
- },
84
- {
85
- type: ConfigType.Grid,
86
- default: CustomRule.EXAMPLE_GRID,
87
- field: 'grid',
88
- description: 'Thumbnail Grid',
89
- explanation: 'An example grid showing the rule.',
90
- configurable: true,
91
- },
92
- ])
93
- });
94
- Object.defineProperty(CustomRule, "SEARCH_VARIANTS", {
95
- enumerable: true,
96
- configurable: true,
97
- writable: true,
98
- value: [
99
- new CustomRule('A *custom* rule', CustomRule.EXAMPLE_GRID).searchVariant(),
100
- ]
101
- });
102
- export default CustomRule;
103
74
  export const instance = new CustomRule('', GridData.create([]));