diff --git a/list-editor/index.js b/list-editor/index.js index d499e54..0f39114 100644 --- a/list-editor/index.js +++ b/list-editor/index.js @@ -320,9 +320,12 @@ function editor(root, inputData, options) { let hideLevel = 99999; + let closedFolds = JSON.parse(localStorage.getItem('closed-folds') || '{}') || {} + $enter.each(function (index, li) { let storeId = enterData[index] let value = rootData.value(storeId) + value.fold = closedFolds[value.id] ? 'closed' : 'open' let hasChildren = false; if (index + 1 < last) { @@ -358,6 +361,8 @@ function editor(root, inputData, options) { _.each(exitData, function (storeId, index) { let value = rootData.value(storeId) + value.fold = closedFolds[value.id] ? 'closed' : 'open' + let $li = newItem(value) .css('margin-left', (value.indented * 32) + 'px') .toggleClass('selected', cursor.atPosition(index + $enter.length)) @@ -427,6 +432,7 @@ function editor(root, inputData, options) { let newPosition = store.moveBefore(startID, stopID) cursor.set(newPosition[0]) + // fix indent _.defer(() => { trigger('change') @@ -726,7 +732,7 @@ function editor(root, inputData, options) { '{': '{}', } - let c = prefix[prefix.length-1] + let c = prefix[prefix.length - 1] let braceSet = braces[c] let prefixCount = _(prefix) diff --git a/list-editor/store.js b/list-editor/store.js index e6dfd89..93f114b 100644 --- a/list-editor/store.js +++ b/list-editor/store.js @@ -203,9 +203,20 @@ function Store(inputData) { values[currentId] = newValue changed = true } + updateFold(currentId, newValue.fold === 'open') return currentId } + function updateFold(id, open) { + let closedFolds = JSON.parse(localStorage.getItem("closed-folds") || '{}') || {} + if (!open) { + closedFolds[id] = true + } else { + delete closedFolds[id] + } + localStorage.setItem('closed-folds', JSON.stringify(closedFolds)) + } + function length() { return idList.length; } @@ -309,7 +320,7 @@ function Store(inputData) { let first = index(from) let i = 0 while (i < n) { - value(idList[first+i]).indented += diff + value(idList[first + i]).indented += diff i++ }