blob: 2f24a416400578472671649df22c3dcf39c6673f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
import { getScope, mergeScopes } from "./getScope";
export function getScopes(why, selectedFrame, frameScopes) {
if (!why || !selectedFrame) {
return null;
}
if (!frameScopes) {
return null;
}
const scopes = [];
let scope = frameScopes;
let scopeIndex = 1;
let prev = null,
prevItem = null;
while (scope) {
let scopeItem = getScope(
scope,
selectedFrame,
frameScopes,
why,
scopeIndex
);
if (scopeItem) {
const mergedItem =
prev && prevItem ? mergeScopes(prev, scope, prevItem, scopeItem) : null;
if (mergedItem) {
scopeItem = mergedItem;
scopes.pop();
}
scopes.push(scopeItem);
}
prev = scope;
prevItem = scopeItem;
scopeIndex++;
scope = scope.parent;
}
return scopes;
}
|