UNPKG

@cycle/dom

Version:

The standard DOM Driver for Cycle.js, based on Snabbdom

65 lines 2.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var SymbolTree = /** @class */ (function () { function SymbolTree(mapper) { this.mapper = mapper; this.tree = [undefined, {}]; } SymbolTree.prototype.set = function (path, element, max) { var curr = this.tree; var _max = max !== undefined ? max : path.length; for (var i = 0; i < _max; i++) { var n = this.mapper(path[i]); var child = curr[1][n]; if (!child) { child = [undefined, {}]; curr[1][n] = child; } curr = child; } curr[0] = element; }; SymbolTree.prototype.getDefault = function (path, mkDefaultElement, max) { return this.get(path, mkDefaultElement, max); }; /** * Returns the payload of the path * If a default element creator is given, it will insert it at the path */ SymbolTree.prototype.get = function (path, mkDefaultElement, max) { var curr = this.tree; var _max = max !== undefined ? max : path.length; for (var i = 0; i < _max; i++) { var n = this.mapper(path[i]); var child = curr[1][n]; if (!child) { if (mkDefaultElement) { child = [undefined, {}]; curr[1][n] = child; } else { return undefined; } } curr = child; } if (mkDefaultElement && !curr[0]) { curr[0] = mkDefaultElement(); } return curr[0]; }; SymbolTree.prototype.delete = function (path) { var curr = this.tree; for (var i = 0; i < path.length - 1; i++) { var child = curr[1][this.mapper(path[i])]; if (!child) { return; } curr = child; } delete curr[1][this.mapper(path[path.length - 1])]; }; return SymbolTree; }()); exports.default = SymbolTree; //# sourceMappingURL=SymbolTree.js.map