chess-moments 1.1.3 → 1.2.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.
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
const { flatten, cloneDeep } = require('lodash');
|
|
2
2
|
const { insertMomentIntoTree } = require('../helpers');
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Adds a new chess moment to the tree structure.
|
|
6
|
+
* @param {*} tree - The current tree structure.
|
|
7
|
+
* @param {*} newMoment - The new moment to add.
|
|
8
|
+
* @returns {*} - The updated tree structure.
|
|
9
|
+
*/
|
|
4
10
|
const addMomentToTree = (tree, newMoment) => {
|
|
5
11
|
if (!newMoment || !newMoment.san || !newMoment.before) {
|
|
6
12
|
return tree;
|
|
@@ -52,6 +58,15 @@ const addMomentToTree = (tree, newMoment) => {
|
|
|
52
58
|
}
|
|
53
59
|
}
|
|
54
60
|
|
|
61
|
+
// Remove all new flags from existing moments
|
|
62
|
+
for (const line of clonedTree) {
|
|
63
|
+
for (const moment of line) {
|
|
64
|
+
if (moment.new) {
|
|
65
|
+
delete moment.new;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
55
70
|
// Insert the moment into the tree
|
|
56
71
|
const newTree = insertMomentIntoTree(clonedTree, point, newMoment);
|
|
57
72
|
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Finds the most recently inserted moment in the tree.
|
|
3
|
+
* @param {*} tree - The current tree structure.
|
|
4
|
+
* @returns {Object|null} - The inserted moment or null if none found.
|
|
5
|
+
*/
|
|
6
|
+
const findInsertedMoment = (tree) => {
|
|
7
|
+
for (const line of tree) {
|
|
8
|
+
for (const moment of line) {
|
|
9
|
+
if (moment.new) {
|
|
10
|
+
return moment;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return null;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
module.exports = findInsertedMoment;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const addMomentToTree = require('./add-moment-to-tree');
|
|
2
|
+
const findInsertedMoment = require('./find-inserted-moment');
|
|
2
3
|
const getNextMoments = require('./get-next-moments');
|
|
3
4
|
const getPrevMoment = require('./get-prev-moment');
|
|
4
5
|
const momentsToPgn = require('./moments-to-pgn');
|
|
@@ -6,6 +7,7 @@ const moveTrainer = require('./move-trainer');
|
|
|
6
7
|
|
|
7
8
|
module.exports = {
|
|
8
9
|
addMomentToTree,
|
|
10
|
+
findInsertedMoment,
|
|
9
11
|
getNextMoments,
|
|
10
12
|
getPrevMoment,
|
|
11
13
|
momentsToPgn,
|
|
@@ -12,6 +12,9 @@ const insertMomentIntoTree = (tree, point, newMoment) => {
|
|
|
12
12
|
// Prepare the moment to be inserted with only the properties that match normal moments
|
|
13
13
|
const momentToInsert = prepareMoment(tree, point, newMoment);
|
|
14
14
|
|
|
15
|
+
// Add flag to indicate this is a new moment
|
|
16
|
+
momentToInsert.new = true;
|
|
17
|
+
|
|
15
18
|
// If no matching position found, always create a new line
|
|
16
19
|
if (!point) {
|
|
17
20
|
tree.push([momentToInsert]);
|
package/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const { fen, pgn, flat, tree, mainline } = require('./functions');
|
|
2
2
|
const {
|
|
3
3
|
addMomentToTree,
|
|
4
|
+
findInsertedMoment,
|
|
4
5
|
getNextMoments,
|
|
5
6
|
getPrevMoment,
|
|
6
7
|
momentsToPgn,
|
|
@@ -14,6 +15,7 @@ module.exports = {
|
|
|
14
15
|
tree,
|
|
15
16
|
mainline,
|
|
16
17
|
addMomentToTree,
|
|
18
|
+
findInsertedMoment,
|
|
17
19
|
getNextMoments,
|
|
18
20
|
getPrevMoment,
|
|
19
21
|
momentsToPgn,
|