| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- /*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
- 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;
- return c > 3 && r && Object.defineProperty(target, key, r), r;
- };
- import { AbstractTree } from './abstractTree.js';
- import { CompressibleObjectTreeModel } from './compressedObjectTreeModel.js';
- import { ObjectTreeModel } from './objectTreeModel.js';
- import { memoize } from '../../../common/decorators.js';
- import { Iterable } from '../../../common/iterator.js';
- export class ObjectTree extends AbstractTree {
- constructor(user, container, delegate, renderers, options = {}) {
- super(user, container, delegate, renderers, options);
- this.user = user;
- }
- get onDidChangeCollapseState() { return this.model.onDidChangeCollapseState; }
- setChildren(element, children = Iterable.empty(), options) {
- this.model.setChildren(element, children, options);
- }
- rerender(element) {
- if (element === undefined) {
- this.view.rerender();
- return;
- }
- this.model.rerender(element);
- }
- hasElement(element) {
- return this.model.has(element);
- }
- createModel(user, view, options) {
- return new ObjectTreeModel(user, view, options);
- }
- }
- class CompressibleRenderer {
- constructor(_compressedTreeNodeProvider, renderer) {
- this._compressedTreeNodeProvider = _compressedTreeNodeProvider;
- this.renderer = renderer;
- this.templateId = renderer.templateId;
- if (renderer.onDidChangeTwistieState) {
- this.onDidChangeTwistieState = renderer.onDidChangeTwistieState;
- }
- }
- get compressedTreeNodeProvider() {
- return this._compressedTreeNodeProvider();
- }
- renderTemplate(container) {
- const data = this.renderer.renderTemplate(container);
- return { compressedTreeNode: undefined, data };
- }
- renderElement(node, index, templateData, height) {
- const compressedTreeNode = this.compressedTreeNodeProvider.getCompressedTreeNode(node.element);
- if (compressedTreeNode.element.elements.length === 1) {
- templateData.compressedTreeNode = undefined;
- this.renderer.renderElement(node, index, templateData.data, height);
- }
- else {
- templateData.compressedTreeNode = compressedTreeNode;
- this.renderer.renderCompressedElements(compressedTreeNode, index, templateData.data, height);
- }
- }
- disposeElement(node, index, templateData, height) {
- var _a, _b, _c, _d;
- if (templateData.compressedTreeNode) {
- (_b = (_a = this.renderer).disposeCompressedElements) === null || _b === void 0 ? void 0 : _b.call(_a, templateData.compressedTreeNode, index, templateData.data, height);
- }
- else {
- (_d = (_c = this.renderer).disposeElement) === null || _d === void 0 ? void 0 : _d.call(_c, node, index, templateData.data, height);
- }
- }
- disposeTemplate(templateData) {
- this.renderer.disposeTemplate(templateData.data);
- }
- renderTwistie(element, twistieElement) {
- if (this.renderer.renderTwistie) {
- return this.renderer.renderTwistie(element, twistieElement);
- }
- return false;
- }
- }
- __decorate([
- memoize
- ], CompressibleRenderer.prototype, "compressedTreeNodeProvider", null);
- function asObjectTreeOptions(compressedTreeNodeProvider, options) {
- return options && Object.assign(Object.assign({}, options), { keyboardNavigationLabelProvider: options.keyboardNavigationLabelProvider && {
- getKeyboardNavigationLabel(e) {
- let compressedTreeNode;
- try {
- compressedTreeNode = compressedTreeNodeProvider().getCompressedTreeNode(e);
- }
- catch (_a) {
- return options.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e);
- }
- if (compressedTreeNode.element.elements.length === 1) {
- return options.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e);
- }
- else {
- return options.keyboardNavigationLabelProvider.getCompressedNodeKeyboardNavigationLabel(compressedTreeNode.element.elements);
- }
- }
- } });
- }
- export class CompressibleObjectTree extends ObjectTree {
- constructor(user, container, delegate, renderers, options = {}) {
- const compressedTreeNodeProvider = () => this;
- const compressibleRenderers = renderers.map(r => new CompressibleRenderer(compressedTreeNodeProvider, r));
- super(user, container, delegate, compressibleRenderers, asObjectTreeOptions(compressedTreeNodeProvider, options));
- }
- setChildren(element, children = Iterable.empty(), options) {
- this.model.setChildren(element, children, options);
- }
- createModel(user, view, options) {
- return new CompressibleObjectTreeModel(user, view, options);
- }
- updateOptions(optionsUpdate = {}) {
- super.updateOptions(optionsUpdate);
- if (typeof optionsUpdate.compressionEnabled !== 'undefined') {
- this.model.setCompressionEnabled(optionsUpdate.compressionEnabled);
- }
- }
- getCompressedTreeNode(element = null) {
- return this.model.getCompressedTreeNode(element);
- }
- }
|