@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.
- package/assets/logic-core.global.d.ts +22 -0
- package/dist/benchmark/helper.d.ts +21 -0
- package/dist/benchmark/helper.js +34 -0
- package/dist/benchmark/prepareBench.js +140 -0
- package/dist/benchmark/runBench.js +206 -0
- package/dist/{data → src/data}/dataHelper.js +4 -18
- package/dist/{data → src/data}/grid.js +15 -68
- package/dist/{data → src/data}/gridZones.js +1 -6
- package/dist/{data → src/data}/rules/banPatternRule.js +19 -50
- package/dist/{data → src/data}/rules/cellCountPerZoneRule.js +2 -6
- package/dist/{data → src/data}/rules/cellCountRule.js +62 -96
- package/dist/{data → src/data}/rules/completePatternRule.js +6 -22
- package/dist/{data → src/data}/rules/connectAllRule.js +20 -50
- package/dist/{data → src/data}/rules/connectZonesRule.js +28 -58
- package/dist/{data → src/data}/rules/containsShapeRule.js +29 -65
- package/dist/{data → src/data}/rules/customRule.js +28 -57
- package/dist/{data → src/data}/rules/differentCountPerZoneRule.js +33 -68
- package/dist/{data → src/data}/rules/exactCountPerZoneRule.js +43 -82
- package/dist/{data → src/data}/rules/foresightRule.js +50 -87
- package/dist/{data → src/data}/rules/lyingSymbolRule.js +37 -88
- package/dist/{data → src/data}/rules/musicControlLine.js +69 -131
- package/dist/{data → src/data}/rules/musicGridRule.js +43 -76
- package/dist/{data → src/data}/rules/mysteryRule.js +29 -58
- package/dist/src/data/rules/noLoopsRule.d.ts +29 -0
- package/dist/src/data/rules/noLoopsRule.js +111 -0
- package/dist/{data → src/data}/rules/offByXRule.js +49 -74
- package/dist/{data → src/data}/rules/perfectionRule.js +8 -28
- package/dist/{data → src/data}/rules/regionAreaRule.js +47 -86
- package/dist/{data → src/data}/rules/regionShapeRule.js +2 -6
- package/dist/{data → src/data}/rules/rules.gen.d.ts +1 -0
- package/dist/{data → src/data}/rules/rules.gen.js +1 -0
- package/dist/{data → src/data}/rules/sameCountPerZoneRule.js +33 -68
- package/dist/{data → src/data}/rules/sameShapeRule.js +18 -44
- package/dist/{data → src/data}/rules/symbolsPerRegionRule.js +52 -90
- package/dist/{data → src/data}/rules/undercluedRule.js +11 -27
- package/dist/{data → src/data}/rules/uniqueShapeRule.js +18 -44
- package/dist/{data → src/data}/rules/wrapAroundRule.js +99 -138
- package/dist/{data → src/data}/serializer/serializer_checksum.js +1 -9
- package/dist/{data → src/data}/serializer/serializer_v0.js +1 -9
- package/dist/{data → src/data}/solver/auto/autoSolver.js +11 -40
- package/dist/{data → src/data}/solver/backtrack/backtrackSolver.js +15 -39
- package/dist/{data → src/data}/solver/backtrack/backtrackWorker.js +1 -1
- package/dist/{data → src/data}/solver/backtrack/data.js +16 -48
- package/dist/{data → src/data}/solver/backtrack/rules/banPattern.js +1 -6
- package/dist/{data → src/data}/solver/backtrack/rules/cellCount.js +1 -6
- package/dist/{data → src/data}/solver/backtrack/rules/connectAll.js +1 -6
- package/dist/{data → src/data}/solver/backtrack/rules/regionArea.js +1 -6
- package/dist/{data → src/data}/solver/backtrack/rules/regionShape.js +1 -6
- package/dist/{data → src/data}/solver/backtrack/rules/sameShape.js +1 -6
- package/dist/{data → src/data}/solver/backtrack/rules/symbolsPerRegion.js +2 -12
- package/dist/{data → src/data}/solver/backtrack/rules/uniqueShape.js +1 -6
- package/dist/{data → src/data}/solver/backtrack/symbols/areaNumber.js +1 -6
- package/dist/{data → src/data}/solver/backtrack/symbols/dart.js +1 -6
- package/dist/{data → src/data}/solver/backtrack/symbols/directionLinker.js +3 -13
- package/dist/{data → src/data}/solver/backtrack/symbols/focus.js +3 -13
- package/dist/{data → src/data}/solver/backtrack/symbols/galaxy.js +1 -6
- package/dist/{data → src/data}/solver/backtrack/symbols/letter.js +2 -12
- package/dist/{data → src/data}/solver/backtrack/symbols/lotus.js +1 -6
- package/dist/{data → src/data}/solver/backtrack/symbols/minesweeper.js +3 -13
- package/dist/{data → src/data}/solver/backtrack/symbols/myopia.js +1 -6
- package/dist/{data → src/data}/solver/backtrack/symbols/viewpoint.js +1 -6
- package/dist/{data → src/data}/solver/cspuz/cspuzSolver.js +22 -46
- package/dist/{data → src/data}/solver/eventIteratingSolver.js +9 -12
- package/dist/{data → src/data}/solver/solver.js +1 -8
- package/dist/src/data/solver/universal/universalSolver.js +20 -0
- package/dist/src/data/solver/universal/universalWorker.d.ts +1 -0
- package/dist/{data → src/data}/solver/z3/modules/areaNumberModule.js +1 -9
- package/dist/{data → src/data}/solver/z3/modules/cellCountModule.js +1 -9
- package/dist/{data → src/data}/solver/z3/modules/connectAllModule.js +1 -9
- package/dist/{data → src/data}/solver/z3/modules/dartModule.js +1 -9
- package/dist/{data → src/data}/solver/z3/modules/letterModule.js +1 -9
- package/dist/{data → src/data}/solver/z3/modules/myopiaModule.js +1 -9
- package/dist/{data → src/data}/solver/z3/modules/regionAreaModule.js +1 -9
- package/dist/{data → src/data}/solver/z3/modules/viewpointModule.js +1 -9
- package/dist/{data → src/data}/solver/z3/z3Solver.js +4 -27
- package/dist/{data → src/data}/solver/z3/z3SolverContext.js +3 -12
- package/dist/{data → src/data}/symbols/areaNumberSymbol.js +28 -44
- package/dist/{data → src/data}/symbols/customIconSymbol.js +40 -64
- package/dist/{data → src/data}/symbols/customSymbol.js +4 -12
- package/dist/{data → src/data}/symbols/customTextSymbol.js +40 -64
- package/dist/{data → src/data}/symbols/dartSymbol.js +39 -59
- package/dist/{data → src/data}/symbols/directionLinkerSymbol.js +34 -63
- package/dist/{data → src/data}/symbols/everyLetterSymbol.js +37 -65
- package/dist/{data → src/data}/symbols/focusSymbol.js +49 -69
- package/dist/{data → src/data}/symbols/galaxySymbol.js +12 -31
- package/dist/{data → src/data}/symbols/hiddenSymbol.js +34 -62
- package/dist/{data → src/data}/symbols/houseSymbol.js +39 -67
- package/dist/{data → src/data}/symbols/letterSymbol.js +40 -68
- package/dist/{data → src/data}/symbols/lotusSymbol.js +58 -81
- package/dist/{data → src/data}/symbols/minesweeperSymbol.js +30 -46
- package/dist/{data → src/data}/symbols/myopiaSymbol.js +45 -69
- package/dist/{data → src/data}/symbols/numberSymbol.js +6 -18
- package/dist/{data → src/data}/symbols/symbol.js +4 -12
- package/dist/{data → src/data}/symbols/viewpointSymbol.js +26 -42
- package/dist/{data → src/data}/tile.js +6 -18
- package/dist/src/data/validateAsync.js +71 -0
- package/dist/src/data/validateAsyncWorker.d.ts +1 -0
- package/dist/{index.d.ts → src/index.d.ts} +2 -1
- package/dist/{index.js → src/index.js} +2 -1
- package/package.json +6 -2
- package/dist/data/solver/universal/universalSolver.js +0 -38
- package/dist/data/validateAsync.js +0 -128
- /package/dist/{data/solver/backtrack/backtrackWorker.d.ts → benchmark/prepareBench.d.ts} +0 -0
- /package/dist/{data/solver/cspuz/cspuzWorker.d.ts → benchmark/runBench.d.ts} +0 -0
- /package/dist/{data → src/data}/config.d.ts +0 -0
- /package/dist/{data → src/data}/config.js +0 -0
- /package/dist/{data → src/data}/configurable.d.ts +0 -0
- /package/dist/{data → src/data}/configurable.js +0 -0
- /package/dist/{data → src/data}/dataHelper.d.ts +0 -0
- /package/dist/{data → src/data}/events/eventHelper.d.ts +0 -0
- /package/dist/{data → src/data}/events/eventHelper.js +0 -0
- /package/dist/{data → src/data}/events/onFinalValidation.d.ts +0 -0
- /package/dist/{data → src/data}/events/onFinalValidation.js +0 -0
- /package/dist/{data → src/data}/events/onGetTile.d.ts +0 -0
- /package/dist/{data → src/data}/events/onGetTile.js +0 -0
- /package/dist/{data → src/data}/events/onGridChange.d.ts +0 -0
- /package/dist/{data → src/data}/events/onGridChange.js +0 -0
- /package/dist/{data → src/data}/events/onGridResize.d.ts +0 -0
- /package/dist/{data → src/data}/events/onGridResize.js +0 -0
- /package/dist/{data → src/data}/events/onSetGrid.d.ts +0 -0
- /package/dist/{data → src/data}/events/onSetGrid.js +0 -0
- /package/dist/{data → src/data}/events/onSymbolDisplay.d.ts +0 -0
- /package/dist/{data → src/data}/events/onSymbolDisplay.js +0 -0
- /package/dist/{data → src/data}/events/onSymbolMerge.d.ts +0 -0
- /package/dist/{data → src/data}/events/onSymbolMerge.js +0 -0
- /package/dist/{data → src/data}/events/onSymbolValidation.d.ts +0 -0
- /package/dist/{data → src/data}/events/onSymbolValidation.js +0 -0
- /package/dist/{data → src/data}/grid.d.ts +0 -0
- /package/dist/{data → src/data}/gridConnections.d.ts +0 -0
- /package/dist/{data → src/data}/gridConnections.js +0 -0
- /package/dist/{data → src/data}/gridZones.d.ts +0 -0
- /package/dist/{data → src/data}/instruction.d.ts +0 -0
- /package/dist/{data → src/data}/instruction.js +0 -0
- /package/dist/{data → src/data}/primitives.d.ts +0 -0
- /package/dist/{data → src/data}/primitives.js +0 -0
- /package/dist/{data → src/data}/puzzle.d.ts +0 -0
- /package/dist/{data → src/data}/puzzle.js +0 -0
- /package/dist/{data → src/data}/rules/banPatternRule.d.ts +0 -0
- /package/dist/{data → src/data}/rules/cellCountPerZoneRule.d.ts +0 -0
- /package/dist/{data → src/data}/rules/cellCountRule.d.ts +0 -0
- /package/dist/{data → src/data}/rules/completePatternRule.d.ts +0 -0
- /package/dist/{data → src/data}/rules/connectAllRule.d.ts +0 -0
- /package/dist/{data → src/data}/rules/connectZonesRule.d.ts +0 -0
- /package/dist/{data → src/data}/rules/containsShapeRule.d.ts +0 -0
- /package/dist/{data → src/data}/rules/customRule.d.ts +0 -0
- /package/dist/{data → src/data}/rules/differentCountPerZoneRule.d.ts +0 -0
- /package/dist/{data → src/data}/rules/exactCountPerZoneRule.d.ts +0 -0
- /package/dist/{data → src/data}/rules/foresightRule.d.ts +0 -0
- /package/dist/{data → src/data}/rules/index.d.ts +0 -0
- /package/dist/{data → src/data}/rules/index.js +0 -0
- /package/dist/{data → src/data}/rules/lyingSymbolRule.d.ts +0 -0
- /package/dist/{data → src/data}/rules/musicControlLine.d.ts +0 -0
- /package/dist/{data → src/data}/rules/musicGridRule.d.ts +0 -0
- /package/dist/{data → src/data}/rules/mysteryRule.d.ts +0 -0
- /package/dist/{data → src/data}/rules/offByXRule.d.ts +0 -0
- /package/dist/{data → src/data}/rules/perfectionRule.d.ts +0 -0
- /package/dist/{data → src/data}/rules/regionAreaRule.d.ts +0 -0
- /package/dist/{data → src/data}/rules/regionShapeRule.d.ts +0 -0
- /package/dist/{data → src/data}/rules/rule.d.ts +0 -0
- /package/dist/{data → src/data}/rules/rule.js +0 -0
- /package/dist/{data → src/data}/rules/sameCountPerZoneRule.d.ts +0 -0
- /package/dist/{data → src/data}/rules/sameShapeRule.d.ts +0 -0
- /package/dist/{data → src/data}/rules/symbolsPerRegionRule.d.ts +0 -0
- /package/dist/{data → src/data}/rules/undercluedRule.d.ts +0 -0
- /package/dist/{data → src/data}/rules/uniqueShapeRule.d.ts +0 -0
- /package/dist/{data → src/data}/rules/wrapAroundRule.d.ts +0 -0
- /package/dist/{data → src/data}/serializer/allSerializers.d.ts +0 -0
- /package/dist/{data → src/data}/serializer/allSerializers.js +0 -0
- /package/dist/{data → src/data}/serializer/compressor/allCompressors.d.ts +0 -0
- /package/dist/{data → src/data}/serializer/compressor/allCompressors.js +0 -0
- /package/dist/{data → src/data}/serializer/compressor/checksumCompressor.d.ts +0 -0
- /package/dist/{data → src/data}/serializer/compressor/checksumCompressor.js +0 -0
- /package/dist/{data → src/data}/serializer/compressor/compressorBase.d.ts +0 -0
- /package/dist/{data → src/data}/serializer/compressor/compressorBase.js +0 -0
- /package/dist/{data → src/data}/serializer/compressor/deflateCompressor.d.ts +0 -0
- /package/dist/{data → src/data}/serializer/compressor/deflateCompressor.js +0 -0
- /package/dist/{data → src/data}/serializer/compressor/gzipCompressor.d.ts +0 -0
- /package/dist/{data → src/data}/serializer/compressor/gzipCompressor.js +0 -0
- /package/dist/{data → src/data}/serializer/compressor/streamCompressor.d.ts +0 -0
- /package/dist/{data → src/data}/serializer/compressor/streamCompressor.js +0 -0
- /package/dist/{data → src/data}/serializer/serializerBase.d.ts +0 -0
- /package/dist/{data → src/data}/serializer/serializerBase.js +0 -0
- /package/dist/{data → src/data}/serializer/serializer_checksum.d.ts +0 -0
- /package/dist/{data → src/data}/serializer/serializer_v0.d.ts +0 -0
- /package/dist/{data → src/data}/shapes.d.ts +0 -0
- /package/dist/{data → src/data}/shapes.js +0 -0
- /package/dist/{data → src/data}/solver/allSolvers.d.ts +0 -0
- /package/dist/{data → src/data}/solver/allSolvers.js +0 -0
- /package/dist/{data → src/data}/solver/auto/autoSolver.d.ts +0 -0
- /package/dist/{data → src/data}/solver/backtrack/backtrackSolver.d.ts +0 -0
- /package/dist/{data/solver/universal/universalWorker.d.ts → src/data/solver/backtrack/backtrackWorker.d.ts} +0 -0
- /package/dist/{data → src/data}/solver/backtrack/data.d.ts +0 -0
- /package/dist/{data → src/data}/solver/backtrack/rules/banPattern.d.ts +0 -0
- /package/dist/{data → src/data}/solver/backtrack/rules/cellCount.d.ts +0 -0
- /package/dist/{data → src/data}/solver/backtrack/rules/connectAll.d.ts +0 -0
- /package/dist/{data → src/data}/solver/backtrack/rules/regionArea.d.ts +0 -0
- /package/dist/{data → src/data}/solver/backtrack/rules/regionShape.d.ts +0 -0
- /package/dist/{data → src/data}/solver/backtrack/rules/sameShape.d.ts +0 -0
- /package/dist/{data → src/data}/solver/backtrack/rules/symbolsPerRegion.d.ts +0 -0
- /package/dist/{data → src/data}/solver/backtrack/rules/uniqueShape.d.ts +0 -0
- /package/dist/{data → src/data}/solver/backtrack/symbols/areaNumber.d.ts +0 -0
- /package/dist/{data → src/data}/solver/backtrack/symbols/dart.d.ts +0 -0
- /package/dist/{data → src/data}/solver/backtrack/symbols/directionLinker.d.ts +0 -0
- /package/dist/{data → src/data}/solver/backtrack/symbols/focus.d.ts +0 -0
- /package/dist/{data → src/data}/solver/backtrack/symbols/galaxy.d.ts +0 -0
- /package/dist/{data → src/data}/solver/backtrack/symbols/letter.d.ts +0 -0
- /package/dist/{data → src/data}/solver/backtrack/symbols/lotus.d.ts +0 -0
- /package/dist/{data → src/data}/solver/backtrack/symbols/minesweeper.d.ts +0 -0
- /package/dist/{data → src/data}/solver/backtrack/symbols/myopia.d.ts +0 -0
- /package/dist/{data → src/data}/solver/backtrack/symbols/viewpoint.d.ts +0 -0
- /package/dist/{data → src/data}/solver/cspuz/cspuzSolver.d.ts +0 -0
- /package/dist/{data/validateAsyncWorker.d.ts → src/data/solver/cspuz/cspuzWorker.d.ts} +0 -0
- /package/dist/{data → src/data}/solver/cspuz/cspuzWorker.js +0 -0
- /package/dist/{data → src/data}/solver/cspuz/jsonify.d.ts +0 -0
- /package/dist/{data → src/data}/solver/cspuz/jsonify.js +0 -0
- /package/dist/{data → src/data}/solver/eventIteratingSolver.d.ts +0 -0
- /package/dist/{data → src/data}/solver/solver.d.ts +0 -0
- /package/dist/{data → src/data}/solver/universal/universalSolver.d.ts +0 -0
- /package/dist/{data → src/data}/solver/universal/universalWorker.js +0 -0
- /package/dist/{data → src/data}/solver/z3/modules/areaNumberModule.d.ts +0 -0
- /package/dist/{data → src/data}/solver/z3/modules/cellCountModule.d.ts +0 -0
- /package/dist/{data → src/data}/solver/z3/modules/connectAllModule.d.ts +0 -0
- /package/dist/{data → src/data}/solver/z3/modules/dartModule.d.ts +0 -0
- /package/dist/{data → src/data}/solver/z3/modules/index.d.ts +0 -0
- /package/dist/{data → src/data}/solver/z3/modules/index.js +0 -0
- /package/dist/{data → src/data}/solver/z3/modules/letterModule.d.ts +0 -0
- /package/dist/{data → src/data}/solver/z3/modules/modules.gen.d.ts +0 -0
- /package/dist/{data → src/data}/solver/z3/modules/modules.gen.js +0 -0
- /package/dist/{data → src/data}/solver/z3/modules/myopiaModule.d.ts +0 -0
- /package/dist/{data → src/data}/solver/z3/modules/regionAreaModule.d.ts +0 -0
- /package/dist/{data → src/data}/solver/z3/modules/viewpointModule.d.ts +0 -0
- /package/dist/{data → src/data}/solver/z3/modules/z3Module.d.ts +0 -0
- /package/dist/{data → src/data}/solver/z3/modules/z3Module.js +0 -0
- /package/dist/{data → src/data}/solver/z3/utils.d.ts +0 -0
- /package/dist/{data → src/data}/solver/z3/utils.js +0 -0
- /package/dist/{data → src/data}/solver/z3/z3Solver.d.ts +0 -0
- /package/dist/{data → src/data}/solver/z3/z3SolverContext.d.ts +0 -0
- /package/dist/{data → src/data}/symbols/areaNumberSymbol.d.ts +0 -0
- /package/dist/{data → src/data}/symbols/customIconSymbol.d.ts +0 -0
- /package/dist/{data → src/data}/symbols/customSymbol.d.ts +0 -0
- /package/dist/{data → src/data}/symbols/customTextSymbol.d.ts +0 -0
- /package/dist/{data → src/data}/symbols/dartSymbol.d.ts +0 -0
- /package/dist/{data → src/data}/symbols/directionLinkerSymbol.d.ts +0 -0
- /package/dist/{data → src/data}/symbols/everyLetterSymbol.d.ts +0 -0
- /package/dist/{data → src/data}/symbols/focusSymbol.d.ts +0 -0
- /package/dist/{data → src/data}/symbols/galaxySymbol.d.ts +0 -0
- /package/dist/{data → src/data}/symbols/hiddenSymbol.d.ts +0 -0
- /package/dist/{data → src/data}/symbols/houseSymbol.d.ts +0 -0
- /package/dist/{data → src/data}/symbols/index.d.ts +0 -0
- /package/dist/{data → src/data}/symbols/index.js +0 -0
- /package/dist/{data → src/data}/symbols/letterSymbol.d.ts +0 -0
- /package/dist/{data → src/data}/symbols/lotusSymbol.d.ts +0 -0
- /package/dist/{data → src/data}/symbols/minesweeperSymbol.d.ts +0 -0
- /package/dist/{data → src/data}/symbols/myopiaSymbol.d.ts +0 -0
- /package/dist/{data → src/data}/symbols/numberSymbol.d.ts +0 -0
- /package/dist/{data → src/data}/symbols/symbol.d.ts +0 -0
- /package/dist/{data → src/data}/symbols/symbols.gen.d.ts +0 -0
- /package/dist/{data → src/data}/symbols/symbols.gen.js +0 -0
- /package/dist/{data → src/data}/symbols/viewpointSymbol.d.ts +0 -0
- /package/dist/{data → src/data}/tile.d.ts +0 -0
- /package/dist/{data → src/data}/tileConnections.d.ts +0 -0
- /package/dist/{data → src/data}/tileConnections.js +0 -0
- /package/dist/{data → src/data}/validate.d.ts +0 -0
- /package/dist/{data → src/data}/validate.js +0 -0
- /package/dist/{data → src/data}/validateAsync.d.ts +0 -0
- /package/dist/{data → src/data}/validateAsyncWorker.js +0 -0
- /package/dist/{polyfill → src/polyfill}/streamPolyfill.d.ts +0 -0
- /package/dist/{polyfill → src/polyfill}/streamPolyfill.js +0 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { instance as undercluedInstance } from '../../rules/undercluedRule.js';
|
|
2
|
+
import EventIteratingSolver from '../eventIteratingSolver.js';
|
|
3
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-expressions
|
|
4
|
+
('vite-apply-code-mod');
|
|
5
|
+
export default class UniversalSolver extends EventIteratingSolver {
|
|
6
|
+
id = 'universal';
|
|
7
|
+
author = 'romain22222, Lysine';
|
|
8
|
+
description = 'A backtracking solver that supports all rules and symbols (including underclued) but is less optimized.';
|
|
9
|
+
createWorker() {
|
|
10
|
+
return new Worker(new URL('./universalWorker.js', import.meta.url), {
|
|
11
|
+
type: 'module',
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
isInstructionSupported(instructionId) {
|
|
15
|
+
if (super.isInstructionSupported(instructionId)) {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
return instructionId === undercluedInstance.id;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -2,15 +2,7 @@ import Z3Module from './z3Module.js';
|
|
|
2
2
|
import { instance as areaNumberInstance, } from '../../../symbols/areaNumberSymbol.js';
|
|
3
3
|
import { Point } from 'grilops';
|
|
4
4
|
export default class AreaNumberModule extends Z3Module {
|
|
5
|
-
|
|
6
|
-
super(...arguments);
|
|
7
|
-
Object.defineProperty(this, "id", {
|
|
8
|
-
enumerable: true,
|
|
9
|
-
configurable: true,
|
|
10
|
-
writable: true,
|
|
11
|
-
value: areaNumberInstance.id
|
|
12
|
-
});
|
|
13
|
-
}
|
|
5
|
+
id = areaNumberInstance.id;
|
|
14
6
|
encode(grid, ctx) {
|
|
15
7
|
const symbols = grid.symbols.get(this.id);
|
|
16
8
|
// optimizations
|
|
@@ -3,15 +3,7 @@ import { Point } from 'grilops';
|
|
|
3
3
|
import { instance as cellCountInstance, } from '../../../rules/cellCountRule.js';
|
|
4
4
|
import { Color } from '../../../primitives.js';
|
|
5
5
|
export default class CellCountModule extends Z3Module {
|
|
6
|
-
|
|
7
|
-
super(...arguments);
|
|
8
|
-
Object.defineProperty(this, "id", {
|
|
9
|
-
enumerable: true,
|
|
10
|
-
configurable: true,
|
|
11
|
-
writable: true,
|
|
12
|
-
value: cellCountInstance.id
|
|
13
|
-
});
|
|
14
|
-
}
|
|
6
|
+
id = cellCountInstance.id;
|
|
15
7
|
encode(grid, ctx) {
|
|
16
8
|
const rules = grid.rules.filter(rule => rule.id === this.id);
|
|
17
9
|
// optimizations
|
|
@@ -1,15 +1,7 @@
|
|
|
1
1
|
import Z3Module from './z3Module.js';
|
|
2
2
|
import { instance as connectAllInstance, } from '../../../rules/connectAllRule.js';
|
|
3
3
|
export default class ConnectAllModule extends Z3Module {
|
|
4
|
-
|
|
5
|
-
super(...arguments);
|
|
6
|
-
Object.defineProperty(this, "id", {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
configurable: true,
|
|
9
|
-
writable: true,
|
|
10
|
-
value: connectAllInstance.id
|
|
11
|
-
});
|
|
12
|
-
}
|
|
4
|
+
id = connectAllInstance.id;
|
|
13
5
|
encode(grid, ctx) {
|
|
14
6
|
const rules = grid.rules.filter(rule => rule.id === this.id);
|
|
15
7
|
// optimizations to try to simplify the encoding
|
|
@@ -5,15 +5,7 @@ import { Color } from '../../../primitives.js';
|
|
|
5
5
|
import { move } from '../../../dataHelper.js';
|
|
6
6
|
import { convertDirection } from '../utils.js';
|
|
7
7
|
export default class DartModule extends Z3Module {
|
|
8
|
-
|
|
9
|
-
super(...arguments);
|
|
10
|
-
Object.defineProperty(this, "id", {
|
|
11
|
-
enumerable: true,
|
|
12
|
-
configurable: true,
|
|
13
|
-
writable: true,
|
|
14
|
-
value: dartInstance.id
|
|
15
|
-
});
|
|
16
|
-
}
|
|
8
|
+
id = dartInstance.id;
|
|
17
9
|
encode(grid, ctx) {
|
|
18
10
|
const symbols = grid.symbols.get(this.id);
|
|
19
11
|
// optimizations
|
|
@@ -2,15 +2,7 @@ import Z3Module from './z3Module.js';
|
|
|
2
2
|
import { instance as letterInstance, } from '../../../symbols/letterSymbol.js';
|
|
3
3
|
import { Point } from 'grilops';
|
|
4
4
|
export default class LetterModule extends Z3Module {
|
|
5
|
-
|
|
6
|
-
super(...arguments);
|
|
7
|
-
Object.defineProperty(this, "id", {
|
|
8
|
-
enumerable: true,
|
|
9
|
-
configurable: true,
|
|
10
|
-
writable: true,
|
|
11
|
-
value: letterInstance.id
|
|
12
|
-
});
|
|
13
|
-
}
|
|
5
|
+
id = letterInstance.id;
|
|
14
6
|
encode(grid, ctx) {
|
|
15
7
|
const symbols = grid.symbols.get(this.id);
|
|
16
8
|
if (!symbols || symbols.length === 0) {
|
|
@@ -5,15 +5,7 @@ import { DIRECTIONS, ORIENTATIONS } from '../../../primitives.js';
|
|
|
5
5
|
import { convertDirection } from '../utils.js';
|
|
6
6
|
import { move } from '../../../dataHelper.js';
|
|
7
7
|
export default class MyopiaModule extends Z3Module {
|
|
8
|
-
|
|
9
|
-
super(...arguments);
|
|
10
|
-
Object.defineProperty(this, "id", {
|
|
11
|
-
enumerable: true,
|
|
12
|
-
configurable: true,
|
|
13
|
-
writable: true,
|
|
14
|
-
value: myopiaInstance.id
|
|
15
|
-
});
|
|
16
|
-
}
|
|
8
|
+
id = myopiaInstance.id;
|
|
17
9
|
encode(grid, ctx) {
|
|
18
10
|
const symbols = grid.symbols.get(this.id);
|
|
19
11
|
// optimizations
|
|
@@ -1,15 +1,7 @@
|
|
|
1
1
|
import Z3Module from './z3Module.js';
|
|
2
2
|
import { instance as regionAreaInstance, } from '../../../rules/regionAreaRule.js';
|
|
3
3
|
export default class RegionAreaModule extends Z3Module {
|
|
4
|
-
|
|
5
|
-
super(...arguments);
|
|
6
|
-
Object.defineProperty(this, "id", {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
configurable: true,
|
|
9
|
-
writable: true,
|
|
10
|
-
value: regionAreaInstance.id
|
|
11
|
-
});
|
|
12
|
-
}
|
|
4
|
+
id = regionAreaInstance.id;
|
|
13
5
|
encode(grid, ctx) {
|
|
14
6
|
const rules = grid.rules.filter(rule => rule.id === this.id);
|
|
15
7
|
// optimizations
|
|
@@ -5,15 +5,7 @@ import { DIRECTIONS } from '../../../primitives.js';
|
|
|
5
5
|
import { move } from '../../../dataHelper.js';
|
|
6
6
|
import { convertDirection } from '../utils.js';
|
|
7
7
|
export default class ViewpointModule extends Z3Module {
|
|
8
|
-
|
|
9
|
-
super(...arguments);
|
|
10
|
-
Object.defineProperty(this, "id", {
|
|
11
|
-
enumerable: true,
|
|
12
|
-
configurable: true,
|
|
13
|
-
writable: true,
|
|
14
|
-
value: viewpointInstance.id
|
|
15
|
-
});
|
|
16
|
-
}
|
|
8
|
+
id = viewpointInstance.id;
|
|
17
9
|
encode(grid, ctx) {
|
|
18
10
|
const symbols = grid.symbols.get(this.id);
|
|
19
11
|
// optimizations
|
|
@@ -6,33 +6,10 @@ import { init } from 'z3-solver';
|
|
|
6
6
|
import Z3SolverContext from './z3SolverContext.js';
|
|
7
7
|
import { array } from '../../dataHelper.js';
|
|
8
8
|
export default class Z3Solver extends Solver {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
configurable: true,
|
|
14
|
-
writable: true,
|
|
15
|
-
value: 'z3'
|
|
16
|
-
});
|
|
17
|
-
Object.defineProperty(this, "author", {
|
|
18
|
-
enumerable: true,
|
|
19
|
-
configurable: true,
|
|
20
|
-
writable: true,
|
|
21
|
-
value: 'Lysine'
|
|
22
|
-
});
|
|
23
|
-
Object.defineProperty(this, "description", {
|
|
24
|
-
enumerable: true,
|
|
25
|
-
configurable: true,
|
|
26
|
-
writable: true,
|
|
27
|
-
value: '(Obsolete) A WebAssembly solver that supports a limited set of rules and symbols.'
|
|
28
|
-
});
|
|
29
|
-
Object.defineProperty(this, "supportsCancellation", {
|
|
30
|
-
enumerable: true,
|
|
31
|
-
configurable: true,
|
|
32
|
-
writable: true,
|
|
33
|
-
value: false
|
|
34
|
-
});
|
|
35
|
-
}
|
|
9
|
+
id = 'z3';
|
|
10
|
+
author = 'Lysine';
|
|
11
|
+
description = '(Obsolete) A WebAssembly solver that supports a limited set of rules and symbols.';
|
|
12
|
+
supportsCancellation = false;
|
|
36
13
|
async isEnvironmentSupported() {
|
|
37
14
|
try {
|
|
38
15
|
await init();
|
|
@@ -1,18 +1,9 @@
|
|
|
1
1
|
import { RegionConstrainer } from 'grilops';
|
|
2
2
|
export default class Z3SolverContext {
|
|
3
|
+
grid;
|
|
4
|
+
_regionConstrainer;
|
|
3
5
|
constructor(grid) {
|
|
4
|
-
|
|
5
|
-
enumerable: true,
|
|
6
|
-
configurable: true,
|
|
7
|
-
writable: true,
|
|
8
|
-
value: grid
|
|
9
|
-
});
|
|
10
|
-
Object.defineProperty(this, "_regionConstrainer", {
|
|
11
|
-
enumerable: true,
|
|
12
|
-
configurable: true,
|
|
13
|
-
writable: true,
|
|
14
|
-
value: void 0
|
|
15
|
-
});
|
|
6
|
+
this.grid = grid;
|
|
16
7
|
this.grid = grid;
|
|
17
8
|
}
|
|
18
9
|
get solver() {
|
|
@@ -2,7 +2,34 @@ import { ConfigType } from '../config.js';
|
|
|
2
2
|
import GridData from '../grid.js';
|
|
3
3
|
import { Color } from '../primitives.js';
|
|
4
4
|
import NumberSymbol from './numberSymbol.js';
|
|
5
|
-
class AreaNumberSymbol extends NumberSymbol {
|
|
5
|
+
export default class AreaNumberSymbol extends NumberSymbol {
|
|
6
|
+
title = 'Area Number';
|
|
7
|
+
static CONFIGS = Object.freeze([
|
|
8
|
+
{
|
|
9
|
+
type: ConfigType.Number,
|
|
10
|
+
default: 0,
|
|
11
|
+
field: 'x',
|
|
12
|
+
description: 'X',
|
|
13
|
+
configurable: false,
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
type: ConfigType.Number,
|
|
17
|
+
default: 0,
|
|
18
|
+
field: 'y',
|
|
19
|
+
description: 'Y',
|
|
20
|
+
configurable: false,
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
type: ConfigType.Number,
|
|
24
|
+
default: 1,
|
|
25
|
+
field: 'number',
|
|
26
|
+
description: 'Number',
|
|
27
|
+
configurable: true,
|
|
28
|
+
},
|
|
29
|
+
]);
|
|
30
|
+
static EXAMPLE_GRID = Object.freeze(GridData.create(['wbbbb', 'wbbwb', 'bbwwb', 'bbbbb'])
|
|
31
|
+
.addSymbol(new AreaNumberSymbol(2, 2, 3))
|
|
32
|
+
.addSymbol(new AreaNumberSymbol(0, 1, 2)));
|
|
6
33
|
/**
|
|
7
34
|
* **Area Numbers must equal region sizes**
|
|
8
35
|
*
|
|
@@ -12,12 +39,6 @@ class AreaNumberSymbol extends NumberSymbol {
|
|
|
12
39
|
*/
|
|
13
40
|
constructor(x, y, number) {
|
|
14
41
|
super(x, y, number);
|
|
15
|
-
Object.defineProperty(this, "title", {
|
|
16
|
-
enumerable: true,
|
|
17
|
-
configurable: true,
|
|
18
|
-
writable: true,
|
|
19
|
-
value: 'Area Number'
|
|
20
|
-
});
|
|
21
42
|
}
|
|
22
43
|
get id() {
|
|
23
44
|
return `number`;
|
|
@@ -54,41 +75,4 @@ class AreaNumberSymbol extends NumberSymbol {
|
|
|
54
75
|
return this.copyWith({ number });
|
|
55
76
|
}
|
|
56
77
|
}
|
|
57
|
-
Object.defineProperty(AreaNumberSymbol, "CONFIGS", {
|
|
58
|
-
enumerable: true,
|
|
59
|
-
configurable: true,
|
|
60
|
-
writable: true,
|
|
61
|
-
value: Object.freeze([
|
|
62
|
-
{
|
|
63
|
-
type: ConfigType.Number,
|
|
64
|
-
default: 0,
|
|
65
|
-
field: 'x',
|
|
66
|
-
description: 'X',
|
|
67
|
-
configurable: false,
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
type: ConfigType.Number,
|
|
71
|
-
default: 0,
|
|
72
|
-
field: 'y',
|
|
73
|
-
description: 'Y',
|
|
74
|
-
configurable: false,
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
type: ConfigType.Number,
|
|
78
|
-
default: 1,
|
|
79
|
-
field: 'number',
|
|
80
|
-
description: 'Number',
|
|
81
|
-
configurable: true,
|
|
82
|
-
},
|
|
83
|
-
])
|
|
84
|
-
});
|
|
85
|
-
Object.defineProperty(AreaNumberSymbol, "EXAMPLE_GRID", {
|
|
86
|
-
enumerable: true,
|
|
87
|
-
configurable: true,
|
|
88
|
-
writable: true,
|
|
89
|
-
value: Object.freeze(GridData.create(['wbbbb', 'wbbwb', 'bbwwb', 'bbbbb'])
|
|
90
|
-
.addSymbol(new AreaNumberSymbol(2, 2, 3))
|
|
91
|
-
.addSymbol(new AreaNumberSymbol(0, 1, 2)))
|
|
92
|
-
});
|
|
93
|
-
export default AreaNumberSymbol;
|
|
94
78
|
export const instance = new AreaNumberSymbol(0, 0, 1);
|
|
@@ -1,70 +1,15 @@
|
|
|
1
1
|
import { ConfigType } from '../config.js';
|
|
2
2
|
import GridData from '../grid.js';
|
|
3
3
|
import CustomSymbol from './customSymbol.js';
|
|
4
|
-
class CustomIconSymbol extends CustomSymbol {
|
|
4
|
+
export default class CustomIconSymbol extends CustomSymbol {
|
|
5
|
+
icon;
|
|
6
|
+
rotation;
|
|
7
|
+
title = 'Custom Icon Symbol';
|
|
5
8
|
get configExplanation() {
|
|
6
9
|
return 'A customizable symbol. Your provided solution may override auto-validation.';
|
|
7
10
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
*
|
|
11
|
-
* @param description - The description of the symbol. Leave this empty to hide the description.
|
|
12
|
-
* @param grid - The thumbnail grid of the rule, preferably 5x4 in size.
|
|
13
|
-
* @param x - The x-coordinate of the symbol.
|
|
14
|
-
* @param y - The y-coordinate of the symbol.
|
|
15
|
-
* @param icon - The icon to display. All available icons can be found at https://react-icons.github.io/react-icons/icons/md/
|
|
16
|
-
* @param rotation - The rotation of the icon in degrees.
|
|
17
|
-
*/
|
|
18
|
-
constructor(description, grid, x, y, icon, rotation = 0) {
|
|
19
|
-
super(description, grid, x, y);
|
|
20
|
-
Object.defineProperty(this, "icon", {
|
|
21
|
-
enumerable: true,
|
|
22
|
-
configurable: true,
|
|
23
|
-
writable: true,
|
|
24
|
-
value: icon
|
|
25
|
-
});
|
|
26
|
-
Object.defineProperty(this, "rotation", {
|
|
27
|
-
enumerable: true,
|
|
28
|
-
configurable: true,
|
|
29
|
-
writable: true,
|
|
30
|
-
value: rotation
|
|
31
|
-
});
|
|
32
|
-
Object.defineProperty(this, "title", {
|
|
33
|
-
enumerable: true,
|
|
34
|
-
configurable: true,
|
|
35
|
-
writable: true,
|
|
36
|
-
value: 'Custom Icon Symbol'
|
|
37
|
-
});
|
|
38
|
-
this.icon = icon;
|
|
39
|
-
this.rotation = rotation;
|
|
40
|
-
}
|
|
41
|
-
get id() {
|
|
42
|
-
return `custom_icon`;
|
|
43
|
-
}
|
|
44
|
-
get configs() {
|
|
45
|
-
return CustomIconSymbol.CONFIGS;
|
|
46
|
-
}
|
|
47
|
-
copyWith({ description, grid, x, y, icon, rotation, }) {
|
|
48
|
-
return new CustomIconSymbol(description ?? this.description, grid ?? this.grid, x ?? this.x, y ?? this.y, icon ?? this.icon, rotation ?? this.rotation);
|
|
49
|
-
}
|
|
50
|
-
withIcon(icon) {
|
|
51
|
-
return this.copyWith({ icon });
|
|
52
|
-
}
|
|
53
|
-
withRotation(rotation) {
|
|
54
|
-
return this.copyWith({ rotation });
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
Object.defineProperty(CustomIconSymbol, "EXAMPLE_GRID", {
|
|
58
|
-
enumerable: true,
|
|
59
|
-
configurable: true,
|
|
60
|
-
writable: true,
|
|
61
|
-
value: Object.freeze(GridData.create(5, 4))
|
|
62
|
-
});
|
|
63
|
-
Object.defineProperty(CustomIconSymbol, "CONFIGS", {
|
|
64
|
-
enumerable: true,
|
|
65
|
-
configurable: true,
|
|
66
|
-
writable: true,
|
|
67
|
-
value: Object.freeze([
|
|
11
|
+
static EXAMPLE_GRID = Object.freeze(GridData.create(5, 4));
|
|
12
|
+
static CONFIGS = Object.freeze([
|
|
68
13
|
{
|
|
69
14
|
type: ConfigType.Number,
|
|
70
15
|
default: 0,
|
|
@@ -112,7 +57,38 @@ Object.defineProperty(CustomIconSymbol, "CONFIGS", {
|
|
|
112
57
|
explanation: 'Rotate the symbol by the given degrees.',
|
|
113
58
|
configurable: true,
|
|
114
59
|
},
|
|
115
|
-
])
|
|
116
|
-
|
|
117
|
-
|
|
60
|
+
]);
|
|
61
|
+
/**
|
|
62
|
+
* **A custom icon symbol**
|
|
63
|
+
*
|
|
64
|
+
* @param description - The description of the symbol. Leave this empty to hide the description.
|
|
65
|
+
* @param grid - The thumbnail grid of the rule, preferably 5x4 in size.
|
|
66
|
+
* @param x - The x-coordinate of the symbol.
|
|
67
|
+
* @param y - The y-coordinate of the symbol.
|
|
68
|
+
* @param icon - The icon to display. All available icons can be found at https://react-icons.github.io/react-icons/icons/md/
|
|
69
|
+
* @param rotation - The rotation of the icon in degrees.
|
|
70
|
+
*/
|
|
71
|
+
constructor(description, grid, x, y, icon, rotation = 0) {
|
|
72
|
+
super(description, grid, x, y);
|
|
73
|
+
this.icon = icon;
|
|
74
|
+
this.rotation = rotation;
|
|
75
|
+
this.icon = icon;
|
|
76
|
+
this.rotation = rotation;
|
|
77
|
+
}
|
|
78
|
+
get id() {
|
|
79
|
+
return `custom_icon`;
|
|
80
|
+
}
|
|
81
|
+
get configs() {
|
|
82
|
+
return CustomIconSymbol.CONFIGS;
|
|
83
|
+
}
|
|
84
|
+
copyWith({ description, grid, x, y, icon, rotation, }) {
|
|
85
|
+
return new CustomIconSymbol(description ?? this.description, grid ?? this.grid, x ?? this.x, y ?? this.y, icon ?? this.icon, rotation ?? this.rotation);
|
|
86
|
+
}
|
|
87
|
+
withIcon(icon) {
|
|
88
|
+
return this.copyWith({ icon });
|
|
89
|
+
}
|
|
90
|
+
withRotation(rotation) {
|
|
91
|
+
return this.copyWith({ rotation });
|
|
92
|
+
}
|
|
93
|
+
}
|
|
118
94
|
export const instance = new CustomIconSymbol('A *custom* icon symbol', GridData.create(5, 4), 0, 0, 'MdQuestionMark');
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { State } from '../primitives.js';
|
|
2
2
|
import Symbol from './symbol.js';
|
|
3
3
|
export default class CustomSymbol extends Symbol {
|
|
4
|
+
description;
|
|
5
|
+
grid;
|
|
4
6
|
/**
|
|
5
7
|
* **A custom symbol**
|
|
6
8
|
*
|
|
@@ -11,18 +13,8 @@ export default class CustomSymbol extends Symbol {
|
|
|
11
13
|
*/
|
|
12
14
|
constructor(description, grid, x, y) {
|
|
13
15
|
super(x, y);
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
configurable: true,
|
|
17
|
-
writable: true,
|
|
18
|
-
value: description
|
|
19
|
-
});
|
|
20
|
-
Object.defineProperty(this, "grid", {
|
|
21
|
-
enumerable: true,
|
|
22
|
-
configurable: true,
|
|
23
|
-
writable: true,
|
|
24
|
-
value: grid
|
|
25
|
-
});
|
|
16
|
+
this.description = description;
|
|
17
|
+
this.grid = grid;
|
|
26
18
|
this.description = description;
|
|
27
19
|
this.grid = grid;
|
|
28
20
|
}
|
|
@@ -1,70 +1,15 @@
|
|
|
1
1
|
import { ConfigType } from '../config.js';
|
|
2
2
|
import GridData from '../grid.js';
|
|
3
3
|
import CustomSymbol from './customSymbol.js';
|
|
4
|
-
class CustomTextSymbol extends CustomSymbol {
|
|
4
|
+
export default class CustomTextSymbol extends CustomSymbol {
|
|
5
|
+
text;
|
|
6
|
+
rotation;
|
|
7
|
+
title = 'Custom Text Symbol';
|
|
5
8
|
get configExplanation() {
|
|
6
9
|
return 'A customizable symbol. Your provided solution may override auto-validation.';
|
|
7
10
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
*
|
|
11
|
-
* @param description - The description of the symbol. Leave this empty to hide the description.
|
|
12
|
-
* @param grid - The thumbnail grid of the rule, preferably 5x4 in size.
|
|
13
|
-
* @param x - The x-coordinate of the symbol.
|
|
14
|
-
* @param y - The y-coordinate of the symbol.
|
|
15
|
-
* @param text - The text to display.
|
|
16
|
-
* @param rotation - The rotation of the text in degrees.
|
|
17
|
-
*/
|
|
18
|
-
constructor(description, grid, x, y, text, rotation = 0) {
|
|
19
|
-
super(description, grid, x, y);
|
|
20
|
-
Object.defineProperty(this, "text", {
|
|
21
|
-
enumerable: true,
|
|
22
|
-
configurable: true,
|
|
23
|
-
writable: true,
|
|
24
|
-
value: text
|
|
25
|
-
});
|
|
26
|
-
Object.defineProperty(this, "rotation", {
|
|
27
|
-
enumerable: true,
|
|
28
|
-
configurable: true,
|
|
29
|
-
writable: true,
|
|
30
|
-
value: rotation
|
|
31
|
-
});
|
|
32
|
-
Object.defineProperty(this, "title", {
|
|
33
|
-
enumerable: true,
|
|
34
|
-
configurable: true,
|
|
35
|
-
writable: true,
|
|
36
|
-
value: 'Custom Text Symbol'
|
|
37
|
-
});
|
|
38
|
-
this.text = text;
|
|
39
|
-
this.rotation = rotation;
|
|
40
|
-
}
|
|
41
|
-
get id() {
|
|
42
|
-
return `custom_text`;
|
|
43
|
-
}
|
|
44
|
-
get configs() {
|
|
45
|
-
return CustomTextSymbol.CONFIGS;
|
|
46
|
-
}
|
|
47
|
-
copyWith({ description, grid, x, y, text, rotation, }) {
|
|
48
|
-
return new CustomTextSymbol(description ?? this.description, grid ?? this.grid, x ?? this.x, y ?? this.y, text ?? this.text, rotation ?? this.rotation);
|
|
49
|
-
}
|
|
50
|
-
withText(text) {
|
|
51
|
-
return this.copyWith({ text });
|
|
52
|
-
}
|
|
53
|
-
withRotation(rotation) {
|
|
54
|
-
return this.copyWith({ rotation });
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
Object.defineProperty(CustomTextSymbol, "EXAMPLE_GRID", {
|
|
58
|
-
enumerable: true,
|
|
59
|
-
configurable: true,
|
|
60
|
-
writable: true,
|
|
61
|
-
value: Object.freeze(GridData.create(5, 4))
|
|
62
|
-
});
|
|
63
|
-
Object.defineProperty(CustomTextSymbol, "CONFIGS", {
|
|
64
|
-
enumerable: true,
|
|
65
|
-
configurable: true,
|
|
66
|
-
writable: true,
|
|
67
|
-
value: Object.freeze([
|
|
11
|
+
static EXAMPLE_GRID = Object.freeze(GridData.create(5, 4));
|
|
12
|
+
static CONFIGS = Object.freeze([
|
|
68
13
|
{
|
|
69
14
|
type: ConfigType.Number,
|
|
70
15
|
default: 0,
|
|
@@ -113,7 +58,38 @@ Object.defineProperty(CustomTextSymbol, "CONFIGS", {
|
|
|
113
58
|
explanation: 'Rotate the symbol by the given degrees.',
|
|
114
59
|
configurable: true,
|
|
115
60
|
},
|
|
116
|
-
])
|
|
117
|
-
|
|
118
|
-
|
|
61
|
+
]);
|
|
62
|
+
/**
|
|
63
|
+
* **A custom text symbol**
|
|
64
|
+
*
|
|
65
|
+
* @param description - The description of the symbol. Leave this empty to hide the description.
|
|
66
|
+
* @param grid - The thumbnail grid of the rule, preferably 5x4 in size.
|
|
67
|
+
* @param x - The x-coordinate of the symbol.
|
|
68
|
+
* @param y - The y-coordinate of the symbol.
|
|
69
|
+
* @param text - The text to display.
|
|
70
|
+
* @param rotation - The rotation of the text in degrees.
|
|
71
|
+
*/
|
|
72
|
+
constructor(description, grid, x, y, text, rotation = 0) {
|
|
73
|
+
super(description, grid, x, y);
|
|
74
|
+
this.text = text;
|
|
75
|
+
this.rotation = rotation;
|
|
76
|
+
this.text = text;
|
|
77
|
+
this.rotation = rotation;
|
|
78
|
+
}
|
|
79
|
+
get id() {
|
|
80
|
+
return `custom_text`;
|
|
81
|
+
}
|
|
82
|
+
get configs() {
|
|
83
|
+
return CustomTextSymbol.CONFIGS;
|
|
84
|
+
}
|
|
85
|
+
copyWith({ description, grid, x, y, text, rotation, }) {
|
|
86
|
+
return new CustomTextSymbol(description ?? this.description, grid ?? this.grid, x ?? this.x, y ?? this.y, text ?? this.text, rotation ?? this.rotation);
|
|
87
|
+
}
|
|
88
|
+
withText(text) {
|
|
89
|
+
return this.copyWith({ text });
|
|
90
|
+
}
|
|
91
|
+
withRotation(rotation) {
|
|
92
|
+
return this.copyWith({ rotation });
|
|
93
|
+
}
|
|
94
|
+
}
|
|
119
95
|
export const instance = new CustomTextSymbol('A *custom* text symbol', GridData.create(5, 4), 0, 0, 'X');
|