@douyinfe/semi-json-viewer-core 2.72.2-alpha.0 → 2.72.2-alpha.2
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/lib/index.js +63 -17
- package/package.json +2 -2
package/lib/index.js
CHANGED
|
@@ -754,6 +754,7 @@ var HiddenRangeModel = class {
|
|
|
754
754
|
constructor(foldingModel) {
|
|
755
755
|
this._hiddenRanges = [];
|
|
756
756
|
this._hasLineChanged = false;
|
|
757
|
+
this.emitter = getEmitter();
|
|
757
758
|
this._foldingModel = foldingModel;
|
|
758
759
|
if (this._foldingModel.regions.length) {
|
|
759
760
|
this.updateHiddenRanges();
|
|
@@ -793,6 +794,7 @@ var HiddenRangeModel = class {
|
|
|
793
794
|
applyHiddenRanges(newHiddenAreas) {
|
|
794
795
|
this._hasLineChanged = false;
|
|
795
796
|
this._hiddenRanges = newHiddenAreas;
|
|
797
|
+
this.emitter.emit("forceRender", void 0);
|
|
796
798
|
}
|
|
797
799
|
get hiddenRanges() {
|
|
798
800
|
return this._hiddenRanges;
|
|
@@ -816,14 +818,12 @@ var HiddenRangeModel = class {
|
|
|
816
818
|
}
|
|
817
819
|
notifyChangeModelContent(e) {
|
|
818
820
|
if (this._hiddenRanges.length && !this._hasLineChanged) {
|
|
819
|
-
console.log("notifyChangeModelContent", e);
|
|
820
821
|
if (Array.isArray(e)) {
|
|
821
822
|
this._hasLineChanged = e.some((change) => {
|
|
822
823
|
return change.range.endLineNumber !== change.range.startLineNumber || countEOL(change.newText)[0] !== 0 || countEOL(change.oldText)[0] !== 0;
|
|
823
824
|
});
|
|
824
825
|
} else {
|
|
825
826
|
this._hasLineChanged = e.range.endLineNumber !== e.range.startLineNumber || countEOL(e.newText)[0] !== 0 || countEOL(e.oldText)[0] !== 0;
|
|
826
|
-
console.log("notifyChangeModelContent", this._hasLineChanged);
|
|
827
827
|
}
|
|
828
828
|
}
|
|
829
829
|
}
|
|
@@ -837,6 +837,9 @@ var FoldingModel = class {
|
|
|
837
837
|
this.emitter = getEmitter();
|
|
838
838
|
this._jsonModel = jsonModel;
|
|
839
839
|
this.updateFoldingRanges();
|
|
840
|
+
this.emitter.on("contentChanged", (e) => {
|
|
841
|
+
this._hiddenRangeModel.notifyChangeModelContent(e);
|
|
842
|
+
});
|
|
840
843
|
this.emitter.on("problemsChanged", (e) => {
|
|
841
844
|
this._jsonWorkerManager.foldRange().then((ranges) => {
|
|
842
845
|
const newRegions = FoldingRegions.fromFoldRanges(ranges);
|
|
@@ -855,7 +858,7 @@ var FoldingModel = class {
|
|
|
855
858
|
});
|
|
856
859
|
}
|
|
857
860
|
update(newRegions, blockedLineNumers = []) {
|
|
858
|
-
const foldedOrManualRanges = this._currentFoldedOrManualRanges(blockedLineNumers);
|
|
861
|
+
const foldedOrManualRanges = this._currentFoldedOrManualRanges(blockedLineNumers, newRegions);
|
|
859
862
|
const newRanges = FoldingRegions.sanitizeAndMerge(
|
|
860
863
|
newRegions,
|
|
861
864
|
foldedOrManualRanges,
|
|
@@ -863,17 +866,35 @@ var FoldingModel = class {
|
|
|
863
866
|
);
|
|
864
867
|
this._regions = FoldingRegions.fromFoldRanges(newRanges);
|
|
865
868
|
}
|
|
866
|
-
_currentFoldedOrManualRanges(blockedLineNumers = []) {
|
|
869
|
+
_currentFoldedOrManualRanges(blockedLineNumers = [], newRegions) {
|
|
870
|
+
const isBlocked = (startLineNumber, endLineNumber) => {
|
|
871
|
+
if (newRegions) {
|
|
872
|
+
const index = newRegions.findRange(startLineNumber);
|
|
873
|
+
if (index === -1) return true;
|
|
874
|
+
const region = newRegions.toRegion(index);
|
|
875
|
+
if (!region || region.endLineNumber !== endLineNumber) return true;
|
|
876
|
+
}
|
|
877
|
+
for (const blockedLineNumber of blockedLineNumers) {
|
|
878
|
+
if (startLineNumber < blockedLineNumber && blockedLineNumber <= endLineNumber) {
|
|
879
|
+
return true;
|
|
880
|
+
}
|
|
881
|
+
}
|
|
882
|
+
return false;
|
|
883
|
+
};
|
|
867
884
|
const foldedRanges = [];
|
|
868
885
|
for (let i = 0; i < this._regions.length; i++) {
|
|
869
886
|
if (this._regions.isCollapsed(i)) {
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
887
|
+
const startLineNumber = this._regions.getStartLineNumber(i);
|
|
888
|
+
const endLineNumber = this._regions.getEndLineNumber(i);
|
|
889
|
+
if (!isBlocked(startLineNumber, endLineNumber)) {
|
|
890
|
+
foldedRanges.push({
|
|
891
|
+
startLineNumber,
|
|
892
|
+
endLineNumber,
|
|
893
|
+
isCollapsed: true,
|
|
894
|
+
source: 0 /* provider */,
|
|
895
|
+
type: this._regions.getType(i)
|
|
896
|
+
});
|
|
897
|
+
}
|
|
877
898
|
}
|
|
878
899
|
}
|
|
879
900
|
return foldedRanges;
|
|
@@ -912,6 +933,29 @@ var FoldingModel = class {
|
|
|
912
933
|
if (!this._regions || !this._hiddenRangeModel) return this._jsonModel.getLineCount();
|
|
913
934
|
return this._jsonModel.getLineCount() - this._hiddenRangeModel.getHiddenLineCount();
|
|
914
935
|
}
|
|
936
|
+
getActualLineNumber(visibleLineNumber) {
|
|
937
|
+
if (!this._regions || !this._hiddenRangeModel) return visibleLineNumber;
|
|
938
|
+
let actualLine = visibleLineNumber;
|
|
939
|
+
const hiddenRanges = this._hiddenRangeModel.hiddenRanges;
|
|
940
|
+
for (const range of hiddenRanges) {
|
|
941
|
+
if (range.startLineNumber <= actualLine) {
|
|
942
|
+
actualLine += range.endLineNumber - range.startLineNumber + 1;
|
|
943
|
+
} else {
|
|
944
|
+
break;
|
|
945
|
+
}
|
|
946
|
+
}
|
|
947
|
+
return actualLine;
|
|
948
|
+
}
|
|
949
|
+
getNextVisibleLine(actualLineNumber) {
|
|
950
|
+
if (!this._regions || !this._hiddenRangeModel) return actualLineNumber + 1;
|
|
951
|
+
let nextLine = actualLineNumber + 1;
|
|
952
|
+
const hiddenRanges = this._hiddenRangeModel.hiddenRanges;
|
|
953
|
+
const containingRange = this._hiddenRangeModel.findRange(nextLine, hiddenRanges);
|
|
954
|
+
if (containingRange) {
|
|
955
|
+
return containingRange.endLineNumber + 1;
|
|
956
|
+
}
|
|
957
|
+
return nextLine;
|
|
958
|
+
}
|
|
915
959
|
getRegionAtLine(lineNumber) {
|
|
916
960
|
if (this._regions) {
|
|
917
961
|
const index = this._regions.findRange(lineNumber);
|
|
@@ -1499,7 +1543,6 @@ var EditWidget = class {
|
|
|
1499
1543
|
}
|
|
1500
1544
|
_copyHandler() {
|
|
1501
1545
|
const op = this.buildBaseOperation("replace");
|
|
1502
|
-
console.log(op);
|
|
1503
1546
|
navigator.clipboard.writeText(op.oldText);
|
|
1504
1547
|
}
|
|
1505
1548
|
};
|
|
@@ -3906,13 +3949,16 @@ var View = class {
|
|
|
3906
3949
|
this.emitter.on("contentChanged", () => {
|
|
3907
3950
|
this.resetScalingManagerConfigAndCell(0);
|
|
3908
3951
|
if (this._jsonModel.lastChangeBufferPos.lineNumber >= this.visibleLineCount + this.startLineNumber) {
|
|
3909
|
-
this.scrollToLine(
|
|
3910
|
-
this._jsonModel.lastChangeBufferPos.lineNumber - this.visibleLineCount + 1
|
|
3911
|
-
);
|
|
3952
|
+
this.scrollToLine(this._jsonModel.lastChangeBufferPos.lineNumber - this.visibleLineCount + 1);
|
|
3912
3953
|
return;
|
|
3913
3954
|
}
|
|
3914
3955
|
this.layout();
|
|
3915
3956
|
});
|
|
3957
|
+
this.emitter.on("forceRender", () => {
|
|
3958
|
+
this.resetScalingManagerConfigAndCell(0);
|
|
3959
|
+
this.layout();
|
|
3960
|
+
this._errorWidget.renderErrorLine();
|
|
3961
|
+
});
|
|
3916
3962
|
}
|
|
3917
3963
|
getLineElement(lineNumber) {
|
|
3918
3964
|
return this.scrollDom.querySelector(`[data-line-number="${lineNumber}"]`);
|
|
@@ -4102,14 +4148,14 @@ var View = class {
|
|
|
4102
4148
|
}
|
|
4103
4149
|
renderVisibleLines(startVisibleLine, endVisibleLine) {
|
|
4104
4150
|
this._tokenizationJsonModelPart.forceTokenize(endVisibleLine + 1);
|
|
4105
|
-
let actualLineNumber = startVisibleLine + 1;
|
|
4151
|
+
let actualLineNumber = this._foldingModel.getActualLineNumber(startVisibleLine + 1);
|
|
4106
4152
|
let visibleLineNumber = startVisibleLine;
|
|
4107
4153
|
while (visibleLineNumber <= endVisibleLine && actualLineNumber <= this._jsonModel.getLineCount()) {
|
|
4108
4154
|
if (!this._foldingModel.isLineCollapsed(actualLineNumber)) {
|
|
4109
4155
|
this.renderLine(actualLineNumber, visibleLineNumber);
|
|
4110
4156
|
visibleLineNumber++;
|
|
4111
4157
|
}
|
|
4112
|
-
actualLineNumber
|
|
4158
|
+
actualLineNumber = this._foldingModel.getNextVisibleLine(actualLineNumber);
|
|
4113
4159
|
}
|
|
4114
4160
|
}
|
|
4115
4161
|
renderLine(actualLineNumber, visibleLineNumber) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@douyinfe/semi-json-viewer-core",
|
|
3
|
-
"version": "2.72.2-alpha.
|
|
3
|
+
"version": "2.72.2-alpha.2",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib/index.js",
|
|
@@ -53,5 +53,5 @@
|
|
|
53
53
|
],
|
|
54
54
|
"author": "",
|
|
55
55
|
"license": "MIT",
|
|
56
|
-
"gitHead": "
|
|
56
|
+
"gitHead": "49ecf64970618ad594ae216fccf6d35b507bc52f"
|
|
57
57
|
}
|