1 | "use strict";
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
18 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
19 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
20 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
21 | return c > 3 && r && Object.defineProperty(target, key, r), r;
|
22 | };
|
23 | var __metadata = (this && this.__metadata) || function (k, v) {
|
24 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
25 | };
|
26 | Object.defineProperty(exports, "__esModule", { value: true });
|
27 | exports.CompressedTreeModel = exports.TopDownCompressedTreeIterator = void 0;
|
28 | const inversify_1 = require("inversify");
|
29 | const tree_compression_service_1 = require("./tree-compression-service");
|
30 | const tree_1 = require("../tree");
|
31 | const tree_model_1 = require("../tree-model");
|
32 | const tree_selection_1 = require("../tree-selection");
|
33 | const tree_expansion_1 = require("../tree-expansion");
|
34 | const tree_iterator_1 = require("../tree-iterator");
|
35 | class TopDownCompressedTreeIterator extends tree_iterator_1.TopDownTreeIterator {
|
36 | isCollapsed(candidate) {
|
37 | return tree_expansion_1.ExpandableTreeNode.isCollapsed(candidate) && !tree_compression_service_1.TreeCompressionService.prototype.isCompressionParent(candidate);
|
38 | }
|
39 | }
|
40 | exports.TopDownCompressedTreeIterator = TopDownCompressedTreeIterator;
|
41 | var BackOrForward;
|
42 | (function (BackOrForward) {
|
43 | BackOrForward[BackOrForward["Forward"] = 0] = "Forward";
|
44 | BackOrForward[BackOrForward["Backward"] = 1] = "Backward";
|
45 | })(BackOrForward || (BackOrForward = {}));
|
46 | let CompressedTreeModel = class CompressedTreeModel extends tree_model_1.TreeModelImpl {
|
47 | selectAdjacentRow(direction, type = tree_selection_1.TreeSelection.SelectionType.DEFAULT, startingPoint = this.getFocusedNode()) {
|
48 | var _a, _b;
|
49 | if (!startingPoint && this.root) {
|
50 | this.selectAdjacentRow(BackOrForward.Forward, type, this.root);
|
51 | }
|
52 | if (this.compressionService.isCompressionParticipant(startingPoint)) {
|
53 | const chain = this.compressionService.getCompressionChain(startingPoint);
|
54 | startingPoint = (_a = (direction === BackOrForward.Backward ? chain === null || chain === void 0 ? void 0 : chain.head() : chain === null || chain === void 0 ? void 0 : chain.tail())) !== null && _a !== void 0 ? _a : startingPoint;
|
55 | }
|
56 | const iterator = direction === BackOrForward.Backward ? this.createBackwardIterator(startingPoint) : this.createIterator(startingPoint);
|
57 | const test = (candidate) => tree_selection_1.SelectableTreeNode.isVisible(candidate)
|
58 | && (this.compressionService.isCompressionHead(candidate) || !this.compressionService.isCompressionParticipant(candidate));
|
59 | const rowRoot = iterator && this.doGetNextNode(iterator, test);
|
60 | const nodes = ((_b = this.compressionService.getCompressionChain(rowRoot)) !== null && _b !== void 0 ? _b : [rowRoot]).reverse();
|
61 | const node = nodes.find(tree_selection_1.SelectableTreeNode.is);
|
62 | if (node) {
|
63 | this.addSelection({ node, type });
|
64 | }
|
65 | }
|
66 | selectPrevRow(type) {
|
67 | this.selectAdjacentRow(BackOrForward.Backward, type);
|
68 | }
|
69 | selectNextRow(type) {
|
70 | this.selectAdjacentRow(BackOrForward.Forward, type);
|
71 | }
|
72 | createForwardIteratorForNode(node) {
|
73 | return new TopDownCompressedTreeIterator(node, { pruneCollapsed: true });
|
74 | }
|
75 | selectIfAncestorOfSelected(node) {
|
76 | var _a, _b;
|
77 | if (!this.compressionToggle.compress) {
|
78 | return super.selectIfAncestorOfSelected(node);
|
79 | }
|
80 | const tail = (_b = (_a = this.compressionService.getCompressionChain(node)) === null || _a === void 0 ? void 0 : _a.tail()) !== null && _b !== void 0 ? _b : node;
|
81 | if (tree_selection_1.SelectableTreeNode.is(tail) && !tail.expanded && this.selectedNodes.some(selectedNode => tree_1.CompositeTreeNode.isAncestor(tail, selectedNode))) {
|
82 | this.selectNode(tail);
|
83 | }
|
84 | }
|
85 | };
|
86 | __decorate([
|
87 | (0, inversify_1.inject)(tree_compression_service_1.CompressionToggle),
|
88 | __metadata("design:type", Object)
|
89 | ], CompressedTreeModel.prototype, "compressionToggle", void 0);
|
90 | __decorate([
|
91 | (0, inversify_1.inject)(tree_compression_service_1.TreeCompressionService),
|
92 | __metadata("design:type", tree_compression_service_1.TreeCompressionService)
|
93 | ], CompressedTreeModel.prototype, "compressionService", void 0);
|
94 | CompressedTreeModel = __decorate([
|
95 | (0, inversify_1.injectable)()
|
96 | ], CompressedTreeModel);
|
97 | exports.CompressedTreeModel = CompressedTreeModel;
|
98 |
|
\ | No newline at end of file |