“use strict”;
Object.defineProperty(exports, “__esModule”, {
value: true
}); exports.remove = remove; exports._removeFromScope = _removeFromScope; exports._callRemovalHooks = _callRemovalHooks; exports._remove = _remove; exports._markRemoved = _markRemoved; exports._assertUnremoved = _assertUnremoved;
var _removalHooks = require(“./lib/removal-hooks”);
function remove() {
this._assertUnremoved(); this.resync(); this._removeFromScope(); if (this._callRemovalHooks()) { this._markRemoved(); return; } this.shareCommentsWithSiblings(); this._remove(); this._markRemoved();
}
function _removeFromScope() {
const bindings = this.getBindingIdentifiers(); Object.keys(bindings).forEach(name => this.scope.removeBinding(name));
}
function _callRemovalHooks() {
for (const fn of _removalHooks.hooks) { if (fn(this, this.parentPath)) return true; }
}
function _remove() {
if (Array.isArray(this.container)) { this.container.splice(this.key, 1); this.updateSiblingKeys(this.key, -1); } else { this._replaceWith(null); }
}
function _markRemoved() {
this.shouldSkip = true; this.removed = true; this.node = null;
}
function _assertUnremoved() {
if (this.removed) { throw this.buildCodeFrameError("NodePath has been removed so is read-only."); }
}