@cccsaurora/clue-ui 1.0.1 → 1.1.0-dev.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ActionForm-D4ryHO0M.js +436 -0
- package/AnnotationDetails-YAPoqw3R.js +175 -0
- package/AnnotationPreview-DiQDjt9s.js +188 -0
- package/ClueEnrichContext-DIn6g8tw.js +522 -0
- package/FlexOne-BSYAhhtG.js +9 -0
- package/_Map-kgDsDYxq.js +64 -0
- package/_MapCache-DabaaWfq.js +161 -0
- package/_Uint8Array-BlVVH1tp.js +129 -0
- package/_baseAssignValue-CNbcU6Nb.js +25 -0
- package/_baseClone-D3a8Pa4T.js +284 -0
- package/_baseExtremum-B1o1zHjR.js +33 -0
- package/_baseFlatten-D4huXoEI.js +92 -0
- package/_baseGet-BSK_nnoz.js +109 -0
- package/_baseIsEqual-B5xLoweL.js +238 -0
- package/_baseIteratee-p6Nj07-n.js +126 -0
- package/_baseSlice-GAv_YFTT.js +20 -0
- package/_baseSum-D0WC1dN0.js +13 -0
- package/_baseUniq-CpupKWcL.js +89 -0
- package/_commonjsHelpers-CUmg6egw.js +6 -0
- package/_createAggregator-BpVy5xMi.js +63 -0
- package/_getPrototype-D1LAdQKO.js +5 -0
- package/_getTag-D3ToyefI.js +126 -0
- package/api/lookup/enrich.d.ts +3 -3
- package/cloneDeep-CjP5k9zW.js +8 -0
- package/components/AnnotationBody.js +49 -34
- package/components/AnnotationDetailPopover.js +36 -30
- package/components/AnnotationDetails.js +21 -155
- package/components/AnnotationEntry.js +50 -52
- package/components/AnnotationPreview.js +5 -5
- package/components/ClassificationChip.js +44 -23
- package/components/CountBadge.js +31 -26
- package/components/EnrichedCard.js +104 -92
- package/components/EnrichedChip.js +134 -109
- package/components/EnrichedTypography.js +136 -110
- package/components/ErrorBoundary.js +28 -24
- package/components/RetryFailedEnrichments.js +10 -9
- package/components/SourcePicker.js +57 -49
- package/components/actions/ActionForm.js +4 -4
- package/components/actions/ExecutePopover.js +64 -50
- package/components/actions/ResultModal.js +37 -34
- package/components/actions/form/schemaAdapter.js +39 -20
- package/components/display/graph/ExpandMoreButton.js +10 -10
- package/components/display/graph/elements/NodeCard.js +92 -76
- package/components/display/graph/elements/NodeTag.js +15 -13
- package/components/display/graph/index.js +258 -200
- package/components/display/graph/visualizations/Leaf.js +88 -69
- package/components/display/graph/visualizations/cloud/index.js +98 -81
- package/components/display/graph/visualizations/icons/BaseIcon.js +26 -21
- package/components/display/graph/visualizations/icons/BugIcon.js +12 -12
- package/components/display/graph/visualizations/icons/HostIcon.js +12 -12
- package/components/display/graph/visualizations/icons/NetworkIcon.js +12 -12
- package/components/display/graph/visualizations/icons/ProcessIcon.js +12 -12
- package/components/display/graph/visualizations/icons/TargetIcon.js +13 -13
- package/components/display/graph/visualizations/icons/index.js +14 -13
- package/components/display/graph/visualizations/panels/NodePanel.js +10 -8
- package/components/display/graph/visualizations/tree/BundleLine.js +108 -81
- package/components/display/graph/visualizations/tree/Triangle.js +13 -13
- package/components/display/graph/visualizations/tree/index.js +407 -305
- package/components/display/icons/Iconified.js +27 -12
- package/components/display/json/index.js +4 -4
- package/components/display/markdown/DynamicTabs.js +22 -17
- package/components/display/markdown/index.js +8527 -5670
- package/components/display/markdown/markdownPlugins/tabs.js +1 -1
- package/components/enrichment/EnrichPopover.js +55 -47
- package/components/fetchers/Fetcher.js +123 -95
- package/components/fetchers/PreviewModal.js +20 -17
- package/components/fetchers/StatusChip.js +22 -18
- package/components/group/Entry.js +13 -11
- package/components/group/Group.js +13 -10
- package/components/group/GroupControl.js +76 -65
- package/components/stats/QueryStatus.js +37 -28
- package/countBy-C69WslUA.js +14 -0
- package/data/event.js +6 -4
- package/database/index.js +2 -2
- package/debounce-bV0h5FC5.js +92 -0
- package/get-D3C3lEU3.js +8 -0
- package/groupBy-DC2oOuBN.js +14 -0
- package/hooks/ClueActionContext.d.ts +1 -1
- package/hooks/ClueActionContext.js +6 -6
- package/hooks/ClueComponentContext.js +29 -23
- package/hooks/ClueConfigProvider.js +14 -12
- package/hooks/ClueDatabaseContext.js +19 -13
- package/hooks/ClueEnrichContext.js +8 -8
- package/hooks/ClueFetcherContext.js +74 -46
- package/hooks/ClueGroupContext.js +17 -14
- package/hooks/CluePopupContext.js +5 -5
- package/hooks/ClueProvider.js +12 -10
- package/hooks/selectors.js +22 -11
- package/hooks/useAnnotations.js +45 -33
- package/hooks/useClue.js +6 -4
- package/hooks/useClueActions.js +3 -3
- package/hooks/useClueConfig.js +5 -5
- package/hooks/useClueTypeConfig.d.ts +2 -1
- package/hooks/useClueTypeConfig.js +3 -3
- package/hooks/useComparator.js +722 -435
- package/hooks/useErrors.js +22 -18
- package/hooks/useMyHighlights.js +66 -36
- package/hooks/useMyLocalStorage.js +63 -43
- package/iconify-CXMreGTg.js +1782 -0
- package/icons/Action.js +66 -49
- package/icons/Assessment.js +84 -68
- package/icons/Context.js +75 -61
- package/icons/Opinion.js +77 -65
- package/icons/iconMap.js +2 -2
- package/identity-CPGTqrE4.js +6 -0
- package/index-BDVjGvMI.js +696 -0
- package/index-BHPT3qoB.js +1172 -0
- package/index-BMxyILVD.js +465 -0
- package/index-BbPn6-Mw.js +15750 -0
- package/index-Dz1kF2MU.js +17654 -0
- package/isEmpty-BQkZubqU.js +29 -0
- package/isNil-CIubwp4T.js +6 -0
- package/isObject-FTY-5JQX.js +7 -0
- package/isObjectLike-OAgjjZye.js +48 -0
- package/isSymbol-Xd2FsJyp.js +8 -0
- package/last-CUCl67Im.js +7 -0
- package/main.d.ts +0 -1
- package/main.js +58 -68
- package/package.json +1 -1
- package/sortBy-B-UKp4GT.js +100 -0
- package/sumBy-MYkDPHZL.js +8 -0
- package/tabs-xGuUGsJd.js +254 -0
- package/text/Frequency.js +42 -23
- package/toFinite-Bc55msYj.js +16 -0
- package/toNumber-DPxy1FBy.js +39 -0
- package/useClueTypeConfig-CH-nGq6a.js +3184 -0
- package/utils/chain.js +91 -64
- package/utils/classificationParser.d.ts +8 -8
- package/utils/classificationParser.js +517 -267
- package/utils/constants.js +35 -10
- package/utils/graph.js +72 -45
- package/utils/hashUtil.js +7 -7
- package/utils/line.js +131 -81
- package/utils/loggerUtil.js +5 -3
- package/utils/sessionStorage.js +41 -29
- package/utils/utils.js +9 -9
- package/utils/window.js +21 -10
- package/utils-Dr4wbKBZ.js +4182 -0
- package/ActionForm-WIj7BfD5.js +0 -340
- package/AnnotationPreview-DWRDhxUB.js +0 -140
- package/ClueEnrichContext-CbJVBm4w.js +0 -397
- package/FlexOne-BXWFOd1T.js +0 -6
- package/_Map-DXNg_Z-q.js +0 -54
- package/_MapCache-Cu25RRDU.js +0 -129
- package/_Uint8Array-DlJCtTvG.js +0 -102
- package/_baseAssignValue-CUmzp727.js +0 -20
- package/_baseClone-BlMmRXeX.js +0 -208
- package/_baseExtremum-P_0akmCi.js +0 -27
- package/_baseFlatten-CN7vDNEQ.js +0 -72
- package/_baseGet-Dgf6_xCm.js +0 -80
- package/_baseIsEqual-Cpjtfb3Q.js +0 -173
- package/_baseIteratee-CP1bocOX.js +0 -95
- package/_baseSlice-M5RKzt1A.js +0 -10
- package/_baseSum-wEbgNeUs.js +0 -10
- package/_baseUniq-tMFmk80M.js +0 -61
- package/_commonjsHelpers-C6fGbg64.js +0 -6
- package/_createAggregator-B4Cav8ZM.js +0 -53
- package/_getPrototype-CHAFQYL_.js +0 -5
- package/_getTag-BV_UoLYG.js +0 -90
- package/cloneDeep-BPVpFBzJ.js +0 -8
- package/countBy-DOutsa_w.js +0 -8
- package/debounce-DryYcbJ4.js +0 -56
- package/get-Bow1vKwx.js +0 -8
- package/groupBy-BheQYl6f.js +0 -8
- package/iconify-BBckr5AQ.js +0 -1263
- package/identity-ByMq8VxU.js +0 -6
- package/index-4YFAh_sa.js +0 -358
- package/index-E7g8cRyW.js +0 -568
- package/index-HuYhutsd.js +0 -975
- package/index-WvFmjbxF.js +0 -12734
- package/index-p5_wX7q1.js +0 -11729
- package/isEmpty-g47Qir2A.js +0 -21
- package/isNil-CjWwlQS3.js +0 -6
- package/isObject-B53jY8Qg.js +0 -7
- package/isObjectLike-BatpeCIi.js +0 -29
- package/isSymbol-C3_SC0Qp.js +0 -8
- package/isUndefined-DiNCDKoz.js +0 -10
- package/last-7CdUxN0r.js +0 -7
- package/sortBy-ITdmD17L.js +0 -79
- package/sumBy-DxJUU2E8.js +0 -8
- package/tabs-CgADNA57.js +0 -195
- package/toFinite-BMy6GObD.js +0 -14
- package/toNumber-YVhnnJv4.js +0 -31
- package/useClueTypeConfig-BQ33EiyB.js +0 -2273
- package/utils-C_RX5uMP.js +0 -2704
|
@@ -1,303 +1,553 @@
|
|
|
1
|
-
const
|
|
1
|
+
const defaultParts = {
|
|
2
2
|
lvlIdx: 0,
|
|
3
3
|
lvl: "",
|
|
4
4
|
req: [],
|
|
5
5
|
groups: [],
|
|
6
6
|
subgroups: []
|
|
7
|
-
}
|
|
7
|
+
};
|
|
8
|
+
const defaultDisabled = {
|
|
8
9
|
groups: [],
|
|
9
10
|
levels: []
|
|
10
11
|
};
|
|
11
|
-
class
|
|
12
|
-
}
|
|
13
|
-
function I(i, s, o, p) {
|
|
14
|
-
let u = null;
|
|
15
|
-
return s != null && i != null && (u = s.levels_map[i.toString()]), u === void 0 || u == null ? (console.error(
|
|
16
|
-
`[classificationParser] Classification level number '${i}' was not found in your classification definition.`
|
|
17
|
-
), "INVALID") : o === "long" && !p ? s.levels_map_stl[u] : u;
|
|
18
|
-
}
|
|
19
|
-
function T(i, s) {
|
|
20
|
-
let o = null;
|
|
21
|
-
const [p, u, r] = (i == null ? void 0 : i.split(/\/\/(.*)/)) ?? [null, null, null], a = p == null ? void 0 : p.toUpperCase();
|
|
22
|
-
return s.levels_map[a] !== void 0 ? o = s.levels_map[a] : s.levels_map_lts[a] !== void 0 ? o = s.levels_map[s.levels_map_lts[a]] : s.levels_aliases[a] !== void 0 ? o = s.levels_map[s.levels_aliases[a]] : (o = -1, console.error(
|
|
23
|
-
`[classificationParser] Classification level '${p}' was not found in your classification definition.`
|
|
24
|
-
)), typeof o != "number" && (o = parseInt(o)), [o, u];
|
|
12
|
+
class InvalidClassification extends Error {
|
|
25
13
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
if (
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
14
|
+
const getLevelText = (lvl, c12nDef, format, isMobile) => {
|
|
15
|
+
let text = null;
|
|
16
|
+
if (c12nDef != null && lvl != null) {
|
|
17
|
+
text = c12nDef.levels_map[lvl.toString()];
|
|
18
|
+
}
|
|
19
|
+
if (text === void 0 || text == null) {
|
|
20
|
+
console.error(
|
|
21
|
+
`[classificationParser] Classification level number '${lvl}' was not found in your classification definition.`
|
|
22
|
+
);
|
|
23
|
+
return "INVALID";
|
|
24
|
+
}
|
|
25
|
+
if (format === "long" && !isMobile) {
|
|
26
|
+
return c12nDef.levels_map_stl[text];
|
|
27
|
+
}
|
|
28
|
+
return text;
|
|
29
|
+
};
|
|
30
|
+
const getLevelIndex = (c12n, c12nDef) => {
|
|
31
|
+
let retIndex = null;
|
|
32
|
+
const [level, unused, _x] = (c12n == null ? void 0 : c12n.split(/\/\/(.*)/)) ?? [null, null, null];
|
|
33
|
+
const c12nLvl = level == null ? void 0 : level.toUpperCase();
|
|
34
|
+
if (c12nDef.levels_map[c12nLvl] !== void 0) {
|
|
35
|
+
retIndex = c12nDef.levels_map[c12nLvl];
|
|
36
|
+
} else if (c12nDef.levels_map_lts[c12nLvl] !== void 0) {
|
|
37
|
+
retIndex = c12nDef.levels_map[c12nDef.levels_map_lts[c12nLvl]];
|
|
38
|
+
} else if (c12nDef.levels_aliases[c12nLvl] !== void 0) {
|
|
39
|
+
retIndex = c12nDef.levels_map[c12nDef.levels_aliases[c12nLvl]];
|
|
40
|
+
} else {
|
|
41
|
+
retIndex = -1;
|
|
42
|
+
console.error(
|
|
43
|
+
`[classificationParser] Classification level '${level}' was not found in your classification definition.`
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
if (typeof retIndex !== "number") {
|
|
47
|
+
retIndex = parseInt(retIndex);
|
|
48
|
+
}
|
|
49
|
+
return [retIndex, unused];
|
|
50
|
+
};
|
|
51
|
+
const getRequired = (c12n, c12nDef, format, isMobile) => {
|
|
52
|
+
const returnSet = [];
|
|
53
|
+
const unused = [];
|
|
54
|
+
if (!c12n) {
|
|
55
|
+
return [returnSet.sort(), unused];
|
|
56
|
+
}
|
|
57
|
+
const partSet = c12n.toUpperCase().split("/");
|
|
58
|
+
for (const p of partSet) {
|
|
59
|
+
if (p in c12nDef.access_req_map_lts) {
|
|
60
|
+
returnSet.push(c12nDef.access_req_map_lts[p]);
|
|
61
|
+
} else if (p in c12nDef.access_req_map_stl) {
|
|
62
|
+
returnSet.push(p);
|
|
63
|
+
} else if (p in c12nDef.access_req_aliases) {
|
|
64
|
+
for (const a of c12nDef.access_req_aliases[p]) {
|
|
65
|
+
returnSet.push(a);
|
|
66
|
+
}
|
|
67
|
+
} else {
|
|
68
|
+
unused.push(p);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (format === "long" && !isMobile) {
|
|
72
|
+
const out = [];
|
|
73
|
+
for (const r of returnSet) {
|
|
74
|
+
out.push(c12nDef.access_req_map_stl[r]);
|
|
75
|
+
}
|
|
76
|
+
return [out.sort(), unused];
|
|
77
|
+
}
|
|
78
|
+
return [returnSet.sort(), unused];
|
|
79
|
+
};
|
|
80
|
+
const getGroups = (groupParts, c12nDef, format, isMobile, autoSelect = false) => {
|
|
81
|
+
var _a, _b, _c, _d;
|
|
82
|
+
let g1Set = /* @__PURE__ */ new Set();
|
|
83
|
+
let g2Set = /* @__PURE__ */ new Set();
|
|
84
|
+
let others = /* @__PURE__ */ new Set();
|
|
85
|
+
const groups = [];
|
|
86
|
+
const subgroups = [];
|
|
87
|
+
for (const grpPart of groupParts) {
|
|
88
|
+
if (!grpPart) {
|
|
55
89
|
continue;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
90
|
+
}
|
|
91
|
+
const gp = grpPart.toUpperCase();
|
|
92
|
+
if (gp.startsWith("REL ")) {
|
|
93
|
+
const tempGroups = new Set(gp.replace("REL TO ", "").replace("REL ", "").split(","));
|
|
94
|
+
for (let tg of tempGroups) {
|
|
95
|
+
tg = tg.trim();
|
|
96
|
+
for (let tsg of tg.split("/")) {
|
|
97
|
+
tsg = tsg.trim();
|
|
98
|
+
groups.push(tsg);
|
|
99
|
+
}
|
|
63
100
|
}
|
|
64
|
-
} else
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
for (const t of d)
|
|
68
|
-
if (t in s.groups_map_lts)
|
|
69
|
-
r.add(s.groups_map_lts[t]);
|
|
70
|
-
else if (t in s.groups_map_stl)
|
|
71
|
-
r.add(t);
|
|
72
|
-
else if (t in s.groups_aliases)
|
|
73
|
-
for (const m of s.groups_aliases[t])
|
|
74
|
-
r.add(m);
|
|
75
|
-
else
|
|
76
|
-
f.add(t);
|
|
77
|
-
for (const t of _)
|
|
78
|
-
if (t in s.subgroups_map_lts)
|
|
79
|
-
a.add(s.subgroups_map_lts[t]);
|
|
80
|
-
else if (t in s.subgroups_map_stl)
|
|
81
|
-
a.add(t);
|
|
82
|
-
else if (t in s.subgroups_aliases)
|
|
83
|
-
for (const m of s.subgroups_aliases[t])
|
|
84
|
-
a.add(m);
|
|
85
|
-
else if (t in s.groups_aliases) {
|
|
86
|
-
const m = s.groups_aliases[t];
|
|
87
|
-
m.length > 1 && console.error(`[classificationParser] Unclear use of alias ${t}`), r.add(m[0]);
|
|
88
|
-
} else
|
|
89
|
-
r.add(t), console.error(`[classificationParser] Unknown component ${t}`);
|
|
90
|
-
if (s.dynamic_groups) {
|
|
91
|
-
for (const t of f)
|
|
92
|
-
r.add(t);
|
|
93
|
-
f = /* @__PURE__ */ new Set();
|
|
94
|
-
}
|
|
95
|
-
for (const t of a) {
|
|
96
|
-
const m = (h = (l = s.params_map) == null ? void 0 : l[t]) == null ? void 0 : h.require_group;
|
|
97
|
-
m && r.add(m);
|
|
98
|
-
}
|
|
99
|
-
for (const t of a) {
|
|
100
|
-
const m = (S = (e = s.params_map) == null ? void 0 : e[t]) == null ? void 0 : S.limited_to_group;
|
|
101
|
-
m != null && (r.size > 1 || r.size === 1 && !r.has(m)) && console.error(
|
|
102
|
-
`[classificationParser] Subgroup ${t} is limited to group ${m} (found: ${Array.from(
|
|
103
|
-
r
|
|
104
|
-
).toString()})`
|
|
105
|
-
);
|
|
101
|
+
} else {
|
|
102
|
+
subgroups.push(gp);
|
|
103
|
+
}
|
|
106
104
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
105
|
+
for (const g of groups) {
|
|
106
|
+
if (g in c12nDef.groups_map_lts) {
|
|
107
|
+
g1Set.add(c12nDef.groups_map_lts[g]);
|
|
108
|
+
} else if (g in c12nDef.groups_map_stl) {
|
|
109
|
+
g1Set.add(g);
|
|
110
|
+
} else if (g in c12nDef.groups_aliases) {
|
|
111
|
+
for (const a of c12nDef.groups_aliases[g]) {
|
|
112
|
+
g1Set.add(a);
|
|
113
|
+
}
|
|
114
|
+
} else {
|
|
115
|
+
others.add(g);
|
|
116
|
+
}
|
|
115
117
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
118
|
+
for (const g of subgroups) {
|
|
119
|
+
if (g in c12nDef.subgroups_map_lts) {
|
|
120
|
+
g2Set.add(c12nDef.subgroups_map_lts[g]);
|
|
121
|
+
} else if (g in c12nDef.subgroups_map_stl) {
|
|
122
|
+
g2Set.add(g);
|
|
123
|
+
} else if (g in c12nDef.subgroups_aliases) {
|
|
124
|
+
for (const sa of c12nDef.subgroups_aliases[g]) {
|
|
125
|
+
g2Set.add(sa);
|
|
126
|
+
}
|
|
127
|
+
} else if (g in c12nDef.groups_aliases) {
|
|
128
|
+
const grps = c12nDef.groups_aliases[g];
|
|
129
|
+
if (grps.length > 1) {
|
|
130
|
+
console.error(`[classificationParser] Unclear use of alias ${g}`);
|
|
131
|
+
}
|
|
132
|
+
g1Set.add(grps[0]);
|
|
133
|
+
} else {
|
|
134
|
+
g1Set.add(g);
|
|
135
|
+
console.error(`[classificationParser] Unknown component ${g}`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
if (c12nDef.dynamic_groups) {
|
|
139
|
+
for (const o of others) {
|
|
140
|
+
g1Set.add(o);
|
|
141
|
+
}
|
|
142
|
+
others = /* @__PURE__ */ new Set();
|
|
143
|
+
}
|
|
144
|
+
for (const subgroup of g2Set) {
|
|
145
|
+
const required = (_b = (_a = c12nDef.params_map) == null ? void 0 : _a[subgroup]) == null ? void 0 : _b.require_group;
|
|
146
|
+
if (!!required) {
|
|
147
|
+
g1Set.add(required);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
for (const subgroup of g2Set) {
|
|
151
|
+
const limitedToGroup = (_d = (_c = c12nDef.params_map) == null ? void 0 : _c[subgroup]) == null ? void 0 : _d.limited_to_group;
|
|
152
|
+
if (limitedToGroup !== null && limitedToGroup !== void 0) {
|
|
153
|
+
if (g1Set.size > 1 || g1Set.size === 1 && !g1Set.has(limitedToGroup)) {
|
|
154
|
+
console.error(
|
|
155
|
+
`[classificationParser] Subgroup ${subgroup} is limited to group ${limitedToGroup} (found: ${Array.from(
|
|
156
|
+
g1Set
|
|
157
|
+
).toString()})`
|
|
158
|
+
);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
if (!!autoSelect && !!g1Set) {
|
|
163
|
+
g1Set = /* @__PURE__ */ new Set([...g1Set, ...c12nDef.groups_auto_select_short]);
|
|
164
|
+
}
|
|
165
|
+
if (!!autoSelect && !!g2Set) {
|
|
166
|
+
g2Set = /* @__PURE__ */ new Set([...g2Set, ...c12nDef.subgroups_auto_select_short]);
|
|
167
|
+
}
|
|
168
|
+
if (format === "long" && !isMobile) {
|
|
169
|
+
const g1Out = [];
|
|
170
|
+
for (const gr of g1Set) {
|
|
171
|
+
g1Out.push(gr in c12nDef.groups_map_stl ? c12nDef.groups_map_stl[gr] : gr);
|
|
172
|
+
}
|
|
173
|
+
const g2Out = [];
|
|
174
|
+
for (const sgr of g2Set) {
|
|
175
|
+
g2Out.push(c12nDef.subgroups_map_stl[sgr]);
|
|
176
|
+
}
|
|
177
|
+
return { groups: g1Out.sort(), subgroups: g2Out.sort(), others: Array.from(others).sort() };
|
|
178
|
+
}
|
|
179
|
+
return { groups: Array.from(g1Set).sort(), subgroups: Array.from(g2Set).sort(), others: Array.from(others).sort() };
|
|
180
|
+
};
|
|
181
|
+
const getParts = (c12n, c12nDef, format, isMobile) => {
|
|
182
|
+
const [lvlIdx, unused] = getLevelIndex(c12n, c12nDef);
|
|
183
|
+
const [req, unusedParts] = getRequired(unused, c12nDef, format, isMobile);
|
|
184
|
+
const { groups, subgroups, others } = getGroups(unusedParts, c12nDef, format, isMobile);
|
|
185
|
+
if (others.length > 0) {
|
|
186
|
+
console.error(`[classificationParser] Unparsable classification parts: ${others.join(",")}`);
|
|
187
|
+
}
|
|
188
|
+
return {
|
|
189
|
+
lvlIdx,
|
|
190
|
+
lvl: getLevelText(lvlIdx, c12nDef, format, isMobile),
|
|
191
|
+
req,
|
|
192
|
+
groups,
|
|
193
|
+
subgroups
|
|
126
194
|
};
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
if (
|
|
130
|
-
const
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
(
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
195
|
+
};
|
|
196
|
+
const canSeeRequired = (user_req, req) => {
|
|
197
|
+
if (req.length <= 0) return true;
|
|
198
|
+
const userSet = new Set(user_req);
|
|
199
|
+
const reqSet = new Set(req);
|
|
200
|
+
for (const elem of reqSet) {
|
|
201
|
+
if (!userSet.has(elem)) {
|
|
202
|
+
return false;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return true;
|
|
206
|
+
};
|
|
207
|
+
const canSeeGroups = (user_groups, groups) => {
|
|
208
|
+
if (groups.length === 0) return true;
|
|
209
|
+
const groupSet = new Set(groups);
|
|
210
|
+
const userSet = new Set(user_groups);
|
|
211
|
+
for (const elem of groupSet) {
|
|
212
|
+
if (userSet.has(elem)) {
|
|
213
|
+
return true;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return false;
|
|
217
|
+
};
|
|
218
|
+
const normalizedClassification = (parts, c12nDef, format, isMobile, skipAutoSelect = false) => {
|
|
219
|
+
var _a, _b, _c, _d, _e, _f;
|
|
220
|
+
if (!c12nDef.enforce || !!c12nDef.invalid_mode) return c12nDef.UNRESTRICTED;
|
|
221
|
+
const longFormat = format === "short" || !!isMobile ? false : true;
|
|
222
|
+
const groupDelim = !!longFormat ? "REL TO " : "REL ";
|
|
223
|
+
const { lvlIdx, lvl } = parts;
|
|
224
|
+
let { groups, subgroups, req } = parts;
|
|
225
|
+
req = req.map((r) => {
|
|
226
|
+
if (!!longFormat) {
|
|
227
|
+
return c12nDef.access_req_map_stl[r] || r;
|
|
228
|
+
}
|
|
229
|
+
return c12nDef.access_req_map_lts[r] || r;
|
|
230
|
+
});
|
|
231
|
+
groups = groups.map((g) => {
|
|
232
|
+
if (!!longFormat) {
|
|
233
|
+
return c12nDef.groups_map_stl[g] || g;
|
|
234
|
+
}
|
|
235
|
+
return c12nDef.groups_map_lts[g] || g;
|
|
236
|
+
});
|
|
237
|
+
subgroups = subgroups.map((g) => {
|
|
238
|
+
if (!!longFormat) {
|
|
239
|
+
return c12nDef.subgroups_map_stl[g] || g;
|
|
240
|
+
}
|
|
241
|
+
return c12nDef.subgroups_map_lts[g] || g;
|
|
242
|
+
});
|
|
243
|
+
let out = lvl;
|
|
244
|
+
let requiredLvlIdx = 0;
|
|
245
|
+
for (const r of req) {
|
|
246
|
+
const rl = !!((_b = (_a = c12nDef.params_map) == null ? void 0 : _a[r]) == null ? void 0 : _b.require_lvl) ? c12nDef.params_map[r].require_lvl : 0;
|
|
247
|
+
requiredLvlIdx = Math.max(requiredLvlIdx, rl);
|
|
248
|
+
}
|
|
249
|
+
out = getLevelText(Math.max(lvlIdx, requiredLvlIdx), c12nDef, format, isMobile);
|
|
250
|
+
const reqGrp = /* @__PURE__ */ new Set();
|
|
251
|
+
for (const r of req) {
|
|
252
|
+
if (!!((_c = c12nDef.params_map[r]) == null ? void 0 : _c.is_required_group)) {
|
|
253
|
+
reqGrp.add(r);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
const tempReq = Array.from(new Set([...req].filter((x) => !reqGrp.has(x))));
|
|
257
|
+
if (tempReq.length > 0) {
|
|
258
|
+
out += "//" + tempReq.sort().join("/");
|
|
259
|
+
}
|
|
260
|
+
if (reqGrp.size > 0) {
|
|
261
|
+
out += "//" + Array.from(reqGrp).sort().join("/");
|
|
262
|
+
}
|
|
263
|
+
let tempSubGroups = [...subgroups];
|
|
264
|
+
if (!!longFormat) {
|
|
265
|
+
if (subgroups.length > 0 && c12nDef.subgroups_auto_select.length > 0 && !skipAutoSelect) {
|
|
266
|
+
tempSubGroups = Array.from(/* @__PURE__ */ new Set([...subgroups, ...c12nDef.subgroups_auto_select])).sort();
|
|
267
|
+
}
|
|
268
|
+
} else {
|
|
269
|
+
if (subgroups.length > 0 && c12nDef.subgroups_auto_select_short.length > 0 && !skipAutoSelect) {
|
|
270
|
+
tempSubGroups = Array.from(/* @__PURE__ */ new Set([...subgroups, ...c12nDef.subgroups_auto_select_short])).sort();
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
let tempGroups = [];
|
|
274
|
+
for (const sg of tempSubGroups) {
|
|
275
|
+
const rGrp = (_d = c12nDef.params_map[sg]) == null ? void 0 : _d.require_group;
|
|
276
|
+
if (!!rGrp) {
|
|
277
|
+
tempGroups.push(rGrp);
|
|
278
|
+
}
|
|
279
|
+
const limToGrp = (_e = c12nDef.params_map[sg]) == null ? void 0 : _e.limited_to_group;
|
|
280
|
+
if (!!limToGrp) {
|
|
281
|
+
if (limToGrp in tempGroups) {
|
|
282
|
+
tempGroups = [limToGrp];
|
|
283
|
+
} else {
|
|
284
|
+
tempGroups = [];
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
for (const g of tempGroups) {
|
|
289
|
+
if (!!longFormat) {
|
|
290
|
+
groups.push(c12nDef.groups_map_stl[g] || g);
|
|
176
291
|
} else {
|
|
177
|
-
|
|
178
|
-
for (const [n, q] of Object.entries(s.groups_aliases))
|
|
179
|
-
q.length > 1 && JSON.stringify(q.sort()) === JSON.stringify(_) && (_ = [n]);
|
|
180
|
-
e += a + _.sort().join(", ");
|
|
292
|
+
groups.push(c12nDef.groups_map_lts[g] || g);
|
|
181
293
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
294
|
+
}
|
|
295
|
+
groups = Array.from(new Set(groups));
|
|
296
|
+
if (!!longFormat) {
|
|
297
|
+
if (groups.length > 0 && c12nDef.groups_auto_select.length > 0 && !skipAutoSelect) {
|
|
298
|
+
groups = Array.from(/* @__PURE__ */ new Set([...groups, ...c12nDef.groups_auto_select])).sort();
|
|
299
|
+
}
|
|
300
|
+
} else {
|
|
301
|
+
if (groups.length > 0 && c12nDef.groups_auto_select_short.length > 0 && !skipAutoSelect) {
|
|
302
|
+
groups = Array.from(/* @__PURE__ */ new Set([...groups, ...c12nDef.groups_auto_select_short])).sort();
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
if (groups.length > 0) {
|
|
306
|
+
groups = groups.sort();
|
|
307
|
+
out += reqGrp.size > 0 ? "/" : "//";
|
|
308
|
+
if (groups.length === 1) {
|
|
309
|
+
const grp = groups[0];
|
|
310
|
+
const displayName = ((_f = c12nDef.params_map[grp]) == null ? void 0 : _f.solitary_display_name) || grp;
|
|
311
|
+
out += displayName !== grp ? displayName : groupDelim + grp;
|
|
312
|
+
} else {
|
|
313
|
+
if (!longFormat) {
|
|
314
|
+
for (const [alias, values] of Object.entries(c12nDef.groups_aliases)) {
|
|
315
|
+
if (values.length > 1) {
|
|
316
|
+
if (JSON.stringify(values.sort()) === JSON.stringify(groups)) {
|
|
317
|
+
groups = [alias];
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
out += groupDelim + groups.sort().join(", ");
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
if (tempSubGroups.length > 0) {
|
|
326
|
+
if (groups.length > 0 || reqGrp.size > 0) {
|
|
327
|
+
out += "/";
|
|
328
|
+
} else {
|
|
329
|
+
out += "//";
|
|
330
|
+
}
|
|
331
|
+
out += tempSubGroups.sort().join("/");
|
|
332
|
+
}
|
|
333
|
+
return out;
|
|
193
334
|
};
|
|
194
|
-
|
|
195
|
-
const
|
|
335
|
+
const levelList = (c12nDef) => {
|
|
336
|
+
const out = [];
|
|
337
|
+
for (const i in c12nDef.levels_map) {
|
|
338
|
+
if (!isNaN(parseInt(i))) {
|
|
339
|
+
out.push(c12nDef.levels_map[i]);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
return out;
|
|
343
|
+
};
|
|
344
|
+
const defaultClassificationValidator = {
|
|
345
|
+
disabled: defaultDisabled,
|
|
346
|
+
parts: defaultParts
|
|
347
|
+
};
|
|
348
|
+
const applyClassificationRules = (parts, c12nDef, format, isMobile, userClassification = false) => {
|
|
349
|
+
const longFormat = format === "short" || !!isMobile ? false : true;
|
|
350
|
+
const requireLvl = {};
|
|
351
|
+
const limitedToGroup = {};
|
|
352
|
+
const requireGroup = {};
|
|
353
|
+
const partsToCheck = ["req", "groups", "subgroups"];
|
|
354
|
+
const retParts = { ...parts };
|
|
355
|
+
const disabledList = {
|
|
196
356
|
levels: [],
|
|
197
357
|
groups: []
|
|
198
358
|
};
|
|
199
|
-
for (const
|
|
200
|
-
if ({}.hasOwnProperty.call(
|
|
201
|
-
const
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
359
|
+
for (const item in c12nDef.params_map) {
|
|
360
|
+
if ({}.hasOwnProperty.call(c12nDef.params_map, item)) {
|
|
361
|
+
const data = c12nDef.params_map[item];
|
|
362
|
+
if ("require_lvl" in data) {
|
|
363
|
+
requireLvl[item] = data.require_lvl;
|
|
364
|
+
}
|
|
365
|
+
if ("limited_to_group" in data) {
|
|
366
|
+
limitedToGroup[item] = data.limited_to_group;
|
|
367
|
+
}
|
|
368
|
+
if ("require_group" in data) {
|
|
369
|
+
requireGroup[item] = data.require_group;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
for (const partName in partsToCheck) {
|
|
374
|
+
if ({}.hasOwnProperty.call(partsToCheck, partName)) {
|
|
375
|
+
const part = retParts[partsToCheck[partName]];
|
|
376
|
+
for (const value of part) {
|
|
377
|
+
let triggerAutoSelect = false;
|
|
378
|
+
if (value) {
|
|
379
|
+
if (value in requireLvl) {
|
|
380
|
+
if (retParts.lvlIdx < requireLvl[value]) {
|
|
381
|
+
retParts.lvlIdx = requireLvl[value];
|
|
382
|
+
retParts.lvl = getLevelText(requireLvl[value], c12nDef, format, isMobile);
|
|
383
|
+
}
|
|
384
|
+
const levels = levelList(c12nDef);
|
|
385
|
+
for (const l of levels) {
|
|
386
|
+
if (c12nDef.levels_map[l] < requireLvl[value]) {
|
|
387
|
+
disabledList.levels.push(l);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
215
390
|
}
|
|
216
|
-
if (
|
|
217
|
-
const
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
391
|
+
if (value in requireGroup) {
|
|
392
|
+
const valueLong = c12nDef.groups_map_stl[requireGroup[value]] || requireGroup[value];
|
|
393
|
+
const valueShort = c12nDef.groups_map_lts[requireGroup[value]] || requireGroup[value];
|
|
394
|
+
if (!retParts.groups.includes(valueLong) && !retParts.groups.includes(valueShort)) {
|
|
395
|
+
retParts.groups.push(valueShort);
|
|
396
|
+
for (const group of c12nDef.groups_auto_select) {
|
|
397
|
+
const gLong = c12nDef.groups_map_stl[group] || group;
|
|
398
|
+
const gShort = c12nDef.groups_map_lts[group] || group;
|
|
399
|
+
if (!retParts.groups.includes(gShort) && !retParts.groups.includes(gLong)) {
|
|
400
|
+
retParts.groups.push(group);
|
|
401
|
+
}
|
|
223
402
|
}
|
|
224
403
|
}
|
|
225
404
|
}
|
|
226
|
-
if (
|
|
227
|
-
for (const
|
|
228
|
-
const
|
|
229
|
-
if (
|
|
230
|
-
const
|
|
231
|
-
|
|
405
|
+
if (value in limitedToGroup) {
|
|
406
|
+
for (const gShort in c12nDef.groups_map_stl) {
|
|
407
|
+
const lgShort = c12nDef.groups_map_lts[limitedToGroup[value]] || limitedToGroup[value];
|
|
408
|
+
if (gShort !== lgShort) {
|
|
409
|
+
const gLong = c12nDef.groups_map_stl[gShort];
|
|
410
|
+
disabledList.groups.push(gShort);
|
|
411
|
+
if (retParts.groups.includes(gShort)) {
|
|
412
|
+
retParts.groups.splice(retParts.groups.indexOf(gShort), 1);
|
|
413
|
+
} else if (retParts.groups.includes(gLong)) {
|
|
414
|
+
retParts.groups.splice(retParts.groups.indexOf(gLong), 1);
|
|
415
|
+
}
|
|
232
416
|
}
|
|
233
417
|
}
|
|
234
|
-
|
|
418
|
+
}
|
|
419
|
+
if (!userClassification && partsToCheck[partName] === "groups") {
|
|
420
|
+
triggerAutoSelect = true;
|
|
421
|
+
}
|
|
235
422
|
}
|
|
236
|
-
if (
|
|
237
|
-
for (const
|
|
238
|
-
const
|
|
239
|
-
|
|
423
|
+
if (triggerAutoSelect) {
|
|
424
|
+
for (const group of c12nDef.groups_auto_select) {
|
|
425
|
+
const gLong = c12nDef.groups_map_stl[group] || group;
|
|
426
|
+
const gShort = c12nDef.groups_map_lts[group] || group;
|
|
427
|
+
if (!retParts.groups.includes(gLong) && !retParts.groups.includes(gShort)) {
|
|
428
|
+
retParts.groups.push(group);
|
|
429
|
+
}
|
|
240
430
|
}
|
|
431
|
+
}
|
|
241
432
|
}
|
|
242
433
|
}
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
434
|
+
}
|
|
435
|
+
retParts.req = retParts.req.sort().map((r) => {
|
|
436
|
+
if (!!longFormat) {
|
|
437
|
+
return c12nDef.access_req_map_stl[r] || r;
|
|
438
|
+
}
|
|
439
|
+
return c12nDef.access_req_map_lts[r] || r;
|
|
440
|
+
});
|
|
441
|
+
retParts.groups = retParts.groups.sort().map((g) => {
|
|
442
|
+
if (!!longFormat) {
|
|
443
|
+
return c12nDef.groups_map_stl[g] || g;
|
|
444
|
+
}
|
|
445
|
+
return c12nDef.groups_map_lts[g] || g;
|
|
446
|
+
});
|
|
447
|
+
retParts.subgroups = retParts.subgroups.sort().map((sg) => {
|
|
448
|
+
if (!!longFormat) {
|
|
449
|
+
return c12nDef.subgroups_map_stl[sg] || sg;
|
|
450
|
+
}
|
|
451
|
+
return c12nDef.subgroups_map_lts[sg] || sg;
|
|
452
|
+
});
|
|
453
|
+
disabledList.groups = disabledList.groups.sort().map((g) => {
|
|
454
|
+
if (!!longFormat) {
|
|
455
|
+
return c12nDef.groups_map_stl[g] || g;
|
|
456
|
+
}
|
|
457
|
+
return c12nDef.groups_map_lts[g] || g;
|
|
458
|
+
});
|
|
459
|
+
disabledList.levels = disabledList.levels.sort().map((l) => {
|
|
460
|
+
if (!!longFormat) {
|
|
461
|
+
return c12nDef.levels_map_stl[l] || l;
|
|
462
|
+
}
|
|
463
|
+
return c12nDef.levels_map_lts[l] || l;
|
|
464
|
+
});
|
|
465
|
+
if (!!longFormat) {
|
|
466
|
+
retParts.lvl = c12nDef.levels_map_stl[retParts.lvl] || retParts.lvl;
|
|
467
|
+
} else {
|
|
468
|
+
retParts.lvl = c12nDef.levels_map_lts[retParts.lvl] || retParts.lvl;
|
|
469
|
+
}
|
|
470
|
+
return {
|
|
471
|
+
disabled: disabledList,
|
|
472
|
+
parts: retParts
|
|
246
473
|
};
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
let
|
|
250
|
-
if (
|
|
251
|
-
const
|
|
252
|
-
|
|
253
|
-
} else
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
if (!
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
const
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
474
|
+
};
|
|
475
|
+
const getMaxGroups = (grps1, grps2) => {
|
|
476
|
+
let groups = /* @__PURE__ */ new Set();
|
|
477
|
+
if (grps1.length > 0 && grps2.length > 0) {
|
|
478
|
+
const g2 = new Set(grps2);
|
|
479
|
+
groups = new Set([...grps1].filter((x) => g2.has(x)));
|
|
480
|
+
} else {
|
|
481
|
+
groups = /* @__PURE__ */ new Set([...grps1, ...grps2]);
|
|
482
|
+
}
|
|
483
|
+
if (grps1.length > 0 && grps2.length > 0 && groups.size <= 0) {
|
|
484
|
+
groups = /* @__PURE__ */ new Set([...grps1, ...grps2]);
|
|
485
|
+
console.error(
|
|
486
|
+
`[classificationParser] Could not find any intersection between the groups. ${grps1.toString()} & ${grps2.toString()}`
|
|
487
|
+
);
|
|
488
|
+
}
|
|
489
|
+
return Array.from(groups);
|
|
490
|
+
};
|
|
491
|
+
const getMaxClassification = (c12n_1, c12n_2, c12nDef, format, isMobile) => {
|
|
492
|
+
if (!c12nDef.enforce || !!c12nDef.invalid_mode) {
|
|
493
|
+
const noEnforceParts = getParts(c12nDef.UNRESTRICTED, c12nDef, format, isMobile);
|
|
494
|
+
return normalizedClassification(noEnforceParts, c12nDef, format, isMobile);
|
|
495
|
+
}
|
|
496
|
+
const c12n1Parts = getParts(c12n_1, c12nDef, format, isMobile);
|
|
497
|
+
const c12n2Parts = getParts(c12n_2, c12nDef, format, isMobile);
|
|
498
|
+
if (!c12n_1) {
|
|
499
|
+
return normalizedClassification(c12n2Parts, c12nDef, format, isMobile);
|
|
500
|
+
}
|
|
501
|
+
if (!c12n_2) {
|
|
502
|
+
return normalizedClassification(c12n1Parts, c12nDef, format, isMobile);
|
|
503
|
+
}
|
|
504
|
+
const req = Array.from(/* @__PURE__ */ new Set([...c12n1Parts.req, ...c12n2Parts.req]));
|
|
505
|
+
const groups = getMaxGroups(c12n1Parts.groups, c12n2Parts.groups);
|
|
506
|
+
const subgroups = getMaxGroups(c12n1Parts.subgroups, c12n2Parts.subgroups);
|
|
507
|
+
const lvlIdx = Math.max(c12n1Parts.lvlIdx, c12n2Parts.lvlIdx);
|
|
508
|
+
const out = {
|
|
509
|
+
lvlIdx,
|
|
510
|
+
lvl: getLevelText(lvlIdx, c12nDef, format, isMobile),
|
|
511
|
+
req,
|
|
512
|
+
groups,
|
|
513
|
+
subgroups
|
|
275
514
|
};
|
|
276
|
-
return
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
if (
|
|
280
|
-
if (!
|
|
515
|
+
return normalizedClassification(out, c12nDef, format, isMobile);
|
|
516
|
+
};
|
|
517
|
+
const isAccessible = (user_c12n, c12n, c12nDef, enforce = false, ignoreInvalid = true) => {
|
|
518
|
+
if (!!c12nDef.invalid_mode) return false;
|
|
519
|
+
if (!enforce) return true;
|
|
520
|
+
if (!c12n) return true;
|
|
281
521
|
try {
|
|
282
|
-
const
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
return
|
|
287
|
-
|
|
522
|
+
const userParts = getParts(user_c12n, c12nDef, "long", false);
|
|
523
|
+
const parts = getParts(c12n, c12nDef, "long", false);
|
|
524
|
+
if (Number(userParts.lvlIdx) >= Number(parts.lvlIdx)) {
|
|
525
|
+
if (!canSeeRequired(userParts.req, parts.req)) return false;
|
|
526
|
+
if (!canSeeGroups(userParts.groups, parts.groups)) return false;
|
|
527
|
+
if (!canSeeGroups(userParts.subgroups, parts.subgroups)) return false;
|
|
528
|
+
return true;
|
|
529
|
+
}
|
|
530
|
+
return false;
|
|
531
|
+
} catch (e) {
|
|
532
|
+
if (e instanceof InvalidClassification) {
|
|
533
|
+
if (!!ignoreInvalid) {
|
|
534
|
+
return false;
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
throw e;
|
|
288
538
|
}
|
|
289
|
-
}
|
|
539
|
+
};
|
|
290
540
|
export {
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
541
|
+
InvalidClassification,
|
|
542
|
+
applyClassificationRules,
|
|
543
|
+
canSeeGroups,
|
|
544
|
+
canSeeRequired,
|
|
545
|
+
defaultClassificationValidator,
|
|
546
|
+
defaultDisabled,
|
|
547
|
+
defaultParts,
|
|
548
|
+
getLevelText,
|
|
549
|
+
getMaxClassification,
|
|
550
|
+
getParts,
|
|
551
|
+
isAccessible,
|
|
552
|
+
normalizedClassification
|
|
303
553
|
};
|