gramene-search 2.15.6 → 2.16.0
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/dist/index.css +35 -1
- package/dist/index.css.map +1 -1
- package/dist/index.js +217 -29
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -850,6 +850,38 @@ function $af4441dd29af05df$var$markSubtree(node, source, invert) {
|
|
|
850
850
|
$af4441dd29af05df$var$markSubtree(child, source, invert);
|
|
851
851
|
});
|
|
852
852
|
}
|
|
853
|
+
const $af4441dd29af05df$export$da3188ffd2da2525 = {
|
|
854
|
+
orthologs: {
|
|
855
|
+
label: 'orthologs',
|
|
856
|
+
// Edge fields: a seed gene's homology__all_orthologs values are the ids of its
|
|
857
|
+
// orthologs. Same field already queried directly in bundles/api.js.
|
|
858
|
+
from: 'homology__all_orthologs',
|
|
859
|
+
to: 'id'
|
|
860
|
+
},
|
|
861
|
+
paralogs: {
|
|
862
|
+
label: 'paralogs',
|
|
863
|
+
// Within-species, so this stays inside the seed's own genome — a much smaller
|
|
864
|
+
// expansion than orthologs (11 vs 70 for msd2).
|
|
865
|
+
from: 'homology__within_species_paralog',
|
|
866
|
+
to: 'id'
|
|
867
|
+
}
|
|
868
|
+
};
|
|
869
|
+
function $af4441dd29af05df$export$a6dc3fef1cecdf28(node) {
|
|
870
|
+
const type = node && node.expand;
|
|
871
|
+
return typeof type === 'string' && type ? type : null;
|
|
872
|
+
}
|
|
873
|
+
function $af4441dd29af05df$export$c8b6102be216752a(token) {
|
|
874
|
+
return String(token).replace(/[^A-Za-z0-9_-]/g, '-');
|
|
875
|
+
}
|
|
876
|
+
function $af4441dd29af05df$export$fb4df7b076406c76(subquery) {
|
|
877
|
+
return String(subquery).replace(/\\/g, '\\\\').replace(/"/g, '\\"');
|
|
878
|
+
}
|
|
879
|
+
function $af4441dd29af05df$export$90cfa1f3fbcb6430(node) {
|
|
880
|
+
const type = $af4441dd29af05df$export$a6dc3fef1cecdf28(node);
|
|
881
|
+
if (!type) return null;
|
|
882
|
+
const spec = $af4441dd29af05df$export$da3188ffd2da2525[type];
|
|
883
|
+
return `EXPAND: ${spec ? spec.label : type}`;
|
|
884
|
+
}
|
|
853
885
|
function $af4441dd29af05df$var$reindexTree(node, idx) {
|
|
854
886
|
node.leftIdx = idx;
|
|
855
887
|
idx++;
|
|
@@ -988,11 +1020,33 @@ const $af4441dd29af05df$var$grameneFilters = {
|
|
|
988
1020
|
searchOffset: 0
|
|
989
1021
|
});
|
|
990
1022
|
let node = $af4441dd29af05df$var$findNodeWithLeftIdx(newState, payload.leftIdx);
|
|
991
|
-
|
|
1023
|
+
// Set an explicit operation when one is supplied; otherwise keep the
|
|
1024
|
+
// historical AND<->OR flip for callers that just pass the node.
|
|
1025
|
+
node.operation = payload.newOperation ? payload.newOperation : node.operation === 'AND' ? 'OR' : 'AND';
|
|
992
1026
|
$af4441dd29af05df$var$markSubtree(newState, node, false);
|
|
993
1027
|
return newState;
|
|
994
1028
|
}
|
|
995
1029
|
break;
|
|
1030
|
+
case 'GRAMENE_FILTER_EXPANSION_SET':
|
|
1031
|
+
{
|
|
1032
|
+
// Setting or clearing an expansion is just a field on the node — the tree
|
|
1033
|
+
// shape is untouched, so there is nothing to reindex and no special case
|
|
1034
|
+
// for the root. `payload.expand` of null/undefined removes it.
|
|
1035
|
+
newState = Object.assign({}, state, {
|
|
1036
|
+
status: 'search',
|
|
1037
|
+
showMarked: true,
|
|
1038
|
+
searchOffset: 0
|
|
1039
|
+
});
|
|
1040
|
+
let node = $af4441dd29af05df$var$findNodeWithLeftIdx(newState, payload.leftIdx);
|
|
1041
|
+
if (!node) break;
|
|
1042
|
+
// Leave showMenu alone, as GRAMENE_FILTER_NEGATED does. The radios are a
|
|
1043
|
+
// setting rather than a command, so the menu stays open and the selection
|
|
1044
|
+
// updates in place — you can switch type or clear without reopening it.
|
|
1045
|
+
if (payload.expand) node.expand = payload.expand;
|
|
1046
|
+
else delete node.expand;
|
|
1047
|
+
$af4441dd29af05df$var$markSubtree(newState, node, false);
|
|
1048
|
+
return newState;
|
|
1049
|
+
}
|
|
996
1050
|
case 'GRAMENE_FILTER_MOVED':
|
|
997
1051
|
{
|
|
998
1052
|
newState = Object.assign({}, state, {
|
|
@@ -1163,6 +1217,48 @@ const $af4441dd29af05df$var$grameneFilters = {
|
|
|
1163
1217
|
]
|
|
1164
1218
|
});
|
|
1165
1219
|
},
|
|
1220
|
+
// Expand a node (leaf or group) along a relationship, e.g. "orthologs of this".
|
|
1221
|
+
doExpandGrameneFilter: (filter, type)=>({ dispatch: dispatch })=>{
|
|
1222
|
+
dispatch({
|
|
1223
|
+
type: 'BATCH_ACTIONS',
|
|
1224
|
+
actions: [
|
|
1225
|
+
{
|
|
1226
|
+
type: 'GRAMENE_SEARCH_CLEARED'
|
|
1227
|
+
},
|
|
1228
|
+
{
|
|
1229
|
+
type: 'GRAMENE_TAXONOMY_CLEARED'
|
|
1230
|
+
},
|
|
1231
|
+
{
|
|
1232
|
+
type: 'GRAMENE_FILTER_EXPANSION_SET',
|
|
1233
|
+
payload: {
|
|
1234
|
+
leftIdx: filter.leftIdx,
|
|
1235
|
+
expand: type
|
|
1236
|
+
}
|
|
1237
|
+
}
|
|
1238
|
+
]
|
|
1239
|
+
});
|
|
1240
|
+
},
|
|
1241
|
+
// Clear a node's expansion, leaving the node and its filters in place.
|
|
1242
|
+
doRemoveGrameneExpansion: (filter)=>({ dispatch: dispatch })=>{
|
|
1243
|
+
dispatch({
|
|
1244
|
+
type: 'BATCH_ACTIONS',
|
|
1245
|
+
actions: [
|
|
1246
|
+
{
|
|
1247
|
+
type: 'GRAMENE_SEARCH_CLEARED'
|
|
1248
|
+
},
|
|
1249
|
+
{
|
|
1250
|
+
type: 'GRAMENE_TAXONOMY_CLEARED'
|
|
1251
|
+
},
|
|
1252
|
+
{
|
|
1253
|
+
type: 'GRAMENE_FILTER_EXPANSION_SET',
|
|
1254
|
+
payload: {
|
|
1255
|
+
leftIdx: filter.leftIdx,
|
|
1256
|
+
expand: null
|
|
1257
|
+
}
|
|
1258
|
+
}
|
|
1259
|
+
]
|
|
1260
|
+
});
|
|
1261
|
+
},
|
|
1166
1262
|
doMoveOrCopyGrameneFilter: (target)=>({ dispatch: dispatch, getState: getState })=>{
|
|
1167
1263
|
const state = getState();
|
|
1168
1264
|
if (state.grameneFilters.moveCopyMode) {
|
|
@@ -1301,18 +1397,45 @@ const $af4441dd29af05df$var$grameneFilters = {
|
|
|
1301
1397
|
const isQuery = new RegExp(/\([a-zA-Z0-9_]+:[a-zA-Z0-9_]+\s/);
|
|
1302
1398
|
const isRegionQuery = new RegExp(/^\(map:/);
|
|
1303
1399
|
const idWithColon = new RegExp(/^[a-zA-Z0-9_]+:[a-zA-Z0-9_]+$/);
|
|
1400
|
+
// The node's own clause, before negation and before any expansion.
|
|
1401
|
+
function ownQuery(node) {
|
|
1402
|
+
if (node.hasOwnProperty('children')) {
|
|
1403
|
+
// Only AND and OR are valid infix operators. Anything else — a token from a
|
|
1404
|
+
// newer client arriving via ?filters= or a saved view — would otherwise be
|
|
1405
|
+
// interpolated raw and produce a Solr 400, which surfaces as blank results
|
|
1406
|
+
// across every view rather than as an error.
|
|
1407
|
+
const op = node.operation === 'AND' || node.operation === 'OR' ? node.operation : 'OR';
|
|
1408
|
+
const kids = Array.isArray(node.children) ? node.children : [];
|
|
1409
|
+
return `(${kids.map((c)=>getQuery(c)).sort().join(` ${op} `)})`;
|
|
1410
|
+
}
|
|
1411
|
+
// this node is a suggestion
|
|
1412
|
+
if (node.fq_field === 'location' && isRegionQuery.test(node.fq_value)) return `${node.fq_value}`;
|
|
1413
|
+
if (isQuery.test(node.fq_value)) return `${node.fq_value.replace(/:/g, '\\:')}`;
|
|
1414
|
+
if (hasSpaces.test(node.fq_value)) return `${node.fq_field}:"${node.fq_value}"`;
|
|
1415
|
+
else if (idWithColon.test(node.fq_value)) return `${node.fq_field}:${node.fq_value.replace(/:/g, '\\:')}`;
|
|
1416
|
+
else return `${node.fq_field}:${node.fq_value}`;
|
|
1417
|
+
}
|
|
1304
1418
|
function getQuery(node) {
|
|
1305
1419
|
const negate = node.negate ? 'NOT ' : '';
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1420
|
+
const clause = ownQuery(node);
|
|
1421
|
+
const expType = $af4441dd29af05df$export$a6dc3fef1cecdf28(node);
|
|
1422
|
+
// No expansion on this node: unchanged from before.
|
|
1423
|
+
if (!expType) return `${negate}${clause}`;
|
|
1424
|
+
const spec = $af4441dd29af05df$export$da3188ffd2da2525[expType];
|
|
1425
|
+
// Unknown expansion type — e.g. a link shared from a newer client. Degrade to
|
|
1426
|
+
// the un-expanded clause rather than emitting something broken.
|
|
1427
|
+
if (!spec) return `${negate}${clause}`;
|
|
1428
|
+
// An expansion of nothing must match nothing; '*:*' here would turn an empty
|
|
1429
|
+
// group into "every gene in the index".
|
|
1430
|
+
if (!clause || clause === '()') return `${negate}(*:* AND NOT *:*)`;
|
|
1431
|
+
// The braces MUST stay inside a quoted `_query_` value. A bare `{!graph ...}`
|
|
1432
|
+
// in `q` is unreliable and fails *silently* — observed returning 0 rows in
|
|
1433
|
+
// some shapes and millions in others, always HTTP 200, depending on the seed
|
|
1434
|
+
// and the endpoint in front of Solr. Don't factor `graph` out to module scope
|
|
1435
|
+
// where it could be used somewhere that isn't wrapped this way.
|
|
1436
|
+
const graph = `{!graph from=${spec.from} to=${spec.to} maxDepth=1 returnRoot=true}`;
|
|
1437
|
+
// Negation applies to the expanded set: "NOT an ortholog of msd2".
|
|
1438
|
+
return `${negate}(_query_:"${graph}${$af4441dd29af05df$export$fb4df7b076406c76(clause)}")`;
|
|
1316
1439
|
}
|
|
1317
1440
|
if (state.grameneFilters.rightIdx === 1) return '*:*';
|
|
1318
1441
|
return `*:* AND (${getQuery(state.grameneFilters)})`;
|
|
@@ -5226,6 +5349,9 @@ const $6c52be7952d5ec43$var$facetCounts = {
|
|
|
5226
5349
|
const vals = [];
|
|
5227
5350
|
for(let i = 0; i < arr.length; i += 2){
|
|
5228
5351
|
if (hidden && hidden.has(arr[i])) continue;
|
|
5352
|
+
// facet.mincount=1 already excludes empty buckets; belt and braces so
|
|
5353
|
+
// a zero can never reach the sidebar if that param is ever relaxed.
|
|
5354
|
+
if (!(arr[i + 1] > 0)) continue;
|
|
5229
5355
|
vals.push({
|
|
5230
5356
|
value: arr[i],
|
|
5231
5357
|
count: arr[i + 1]
|
|
@@ -6267,6 +6393,7 @@ const $472fe3745b238881$var$FILTER_NODE_KEEP = [
|
|
|
6267
6393
|
'rightIdx',
|
|
6268
6394
|
'operation',
|
|
6269
6395
|
'negate',
|
|
6396
|
+
'expand',
|
|
6270
6397
|
'fq_field',
|
|
6271
6398
|
'fq_value',
|
|
6272
6399
|
'name',
|
|
@@ -6276,6 +6403,7 @@ const $472fe3745b238881$var$FILTER_NODE_KEEP = [
|
|
|
6276
6403
|
const $472fe3745b238881$var$FILTER_ROOT_KEEP = [
|
|
6277
6404
|
'operation',
|
|
6278
6405
|
'negate',
|
|
6406
|
+
'expand',
|
|
6279
6407
|
'leftIdx',
|
|
6280
6408
|
'rightIdx',
|
|
6281
6409
|
'children',
|
|
@@ -7776,8 +7904,13 @@ const $9e29a4f60318db7a$var$Detail = (props)=>{
|
|
|
7776
7904
|
}, [
|
|
7777
7905
|
props.expressionStudies
|
|
7778
7906
|
]);
|
|
7907
|
+
// Which Expression Atlas instance the embedded widget should query. The
|
|
7908
|
+
// widget falls back to its own default when `atlasUrl` is absent, so sites
|
|
7909
|
+
// that don't configure one are unaffected — only pass it when set.
|
|
7910
|
+
const atlasUrl = props.configuration && props.configuration.atlasUrl || null;
|
|
7911
|
+
const atlasParam = atlasUrl ? `&atlasUrl=${encodeURIComponent(atlasUrl)}` : '';
|
|
7779
7912
|
let paralogs_url;
|
|
7780
|
-
let gene_url = `https://dev.gramene.org/static/atlasWidget.html?genes=${gene.atlas_id || gene._id}&localAPI=${isLocal}`;
|
|
7913
|
+
let gene_url = `https://dev.gramene.org/static/atlasWidget.html?genes=${gene.atlas_id || gene._id}&localAPI=${isLocal}${atlasParam}`;
|
|
7781
7914
|
let paralogs = [];
|
|
7782
7915
|
const haveParalogs = props.grameneParalogs && props.grameneParalogs[gene._id];
|
|
7783
7916
|
if (haveParalogs) paralogs = props.grameneParalogs[gene._id];
|
|
@@ -7790,7 +7923,7 @@ const $9e29a4f60318db7a$var$Detail = (props)=>{
|
|
|
7790
7923
|
// if (gene.homology && gene.homology.homologous_genes && gene.homology.homologous_genes.within_species_paralog) {
|
|
7791
7924
|
// paralogs = gene.homology.homologous_genes.within_species_paralog;
|
|
7792
7925
|
// }
|
|
7793
|
-
if (paralogs.length > 0 && atlasExperiment) paralogs_url = `https://dev.gramene.org/static/atlasWidget.html?genes=${paralogs.join(' ')}&experiment=${atlasExperiment}&localAPI=${isLocal}`;
|
|
7926
|
+
if (paralogs.length > 0 && atlasExperiment) paralogs_url = `https://dev.gramene.org/static/atlasWidget.html?genes=${paralogs.join(' ')}&experiment=${atlasExperiment}&localAPI=${isLocal}${atlasParam}`;
|
|
7794
7927
|
return /*#__PURE__*/ (0, $gXNCa$reactjsxruntime.jsxs)((0, $gXNCa$reactbootstrap.Tabs), {
|
|
7795
7928
|
activeKey: activeTab,
|
|
7796
7929
|
onSelect: (k)=>setActiveTab(k),
|
|
@@ -7845,7 +7978,7 @@ const $9e29a4f60318db7a$var$Detail = (props)=>{
|
|
|
7845
7978
|
]
|
|
7846
7979
|
});
|
|
7847
7980
|
};
|
|
7848
|
-
var $9e29a4f60318db7a$export$2e2bcd8739ae039 = (0, $gXNCa$reduxbundlerreact.connect)('selectGrameneParalogs', 'selectExpressionStudies', 'selectUiViewState', 'doRequestParalogs', 'doFetchExpressionStudies', 'doSetExpressionState', //'doRequestParalogExpression',
|
|
7981
|
+
var $9e29a4f60318db7a$export$2e2bcd8739ae039 = (0, $gXNCa$reduxbundlerreact.connect)('selectConfiguration', 'selectGrameneParalogs', 'selectExpressionStudies', 'selectUiViewState', 'doRequestParalogs', 'doFetchExpressionStudies', 'doSetExpressionState', //'doRequestParalogExpression',
|
|
7849
7982
|
$9e29a4f60318db7a$var$Detail);
|
|
7850
7983
|
|
|
7851
7984
|
|
|
@@ -19945,10 +20078,6 @@ const $7d7b7dad5e71dfd3$var$FacetGroup = ({ group: group, values: values, onAdd:
|
|
|
19945
20078
|
open && /*#__PURE__*/ (0, $gXNCa$reactjsxruntime.jsxs)("div", {
|
|
19946
20079
|
className: "facet-group-body",
|
|
19947
20080
|
children: [
|
|
19948
|
-
values.length === 0 && /*#__PURE__*/ (0, $gXNCa$reactjsxruntime.jsx)("div", {
|
|
19949
|
-
className: "facet-empty",
|
|
19950
|
-
children: "none in this result set"
|
|
19951
|
-
}),
|
|
19952
20081
|
shown.map(({ value: value, count: count })=>{
|
|
19953
20082
|
const label = $7d7b7dad5e71dfd3$var$labelFor(group, value);
|
|
19954
20083
|
return /*#__PURE__*/ (0, $gXNCa$reactjsxruntime.jsxs)("div", {
|
|
@@ -20031,11 +20160,17 @@ const $7d7b7dad5e71dfd3$var$FacetsCmp = (props)=>{
|
|
|
20031
20160
|
className: "facet-status",
|
|
20032
20161
|
children: "no categories for this result set"
|
|
20033
20162
|
}),
|
|
20034
|
-
hasData && (0, $6c52be7952d5ec43$export$f3878c70e70de19e).map((g)
|
|
20163
|
+
hasData && (0, $6c52be7952d5ec43$export$f3878c70e70de19e).map((g)=>{
|
|
20164
|
+
// A field with nothing in this result set is dropped rather than
|
|
20165
|
+
// rendered as an empty group — an all-zero heading is noise.
|
|
20166
|
+
const values = groups[g.field] || [];
|
|
20167
|
+
if (values.length === 0) return null;
|
|
20168
|
+
return /*#__PURE__*/ (0, $gXNCa$reactjsxruntime.jsx)($7d7b7dad5e71dfd3$var$FacetGroup, {
|
|
20035
20169
|
group: g,
|
|
20036
|
-
values:
|
|
20170
|
+
values: values,
|
|
20037
20171
|
onAdd: onAdd
|
|
20038
|
-
}, g.field)
|
|
20172
|
+
}, g.field);
|
|
20173
|
+
})
|
|
20039
20174
|
]
|
|
20040
20175
|
})
|
|
20041
20176
|
]
|
|
@@ -20053,6 +20188,7 @@ var $7d7b7dad5e71dfd3$export$2e2bcd8739ae039 = $7d7b7dad5e71dfd3$var$Facets;
|
|
|
20053
20188
|
|
|
20054
20189
|
|
|
20055
20190
|
|
|
20191
|
+
|
|
20056
20192
|
// "Save this view" UI — sits inside the Auth sidebar panel.
|
|
20057
20193
|
//
|
|
20058
20194
|
// Sign-in-gated by Auth.js (we only mount this when `user` is truthy). Opens
|
|
@@ -20496,7 +20632,10 @@ function $693dd8c7a5607c3a$var$logAction(action) {
|
|
|
20496
20632
|
}
|
|
20497
20633
|
const $693dd8c7a5607c3a$var$Filter = ({ node: node, moveCopyMode: moveCopyMode, showMarked: showMarked, actions: actions })=>{
|
|
20498
20634
|
let classes = 'gramene-filter gramene-filter';
|
|
20499
|
-
if (node.operation) classes = `${classes}-${node.operation}`;
|
|
20635
|
+
if (node.operation) classes = `${classes}-${(0, $af4441dd29af05df$export$c8b6102be216752a)(node.operation)}`;
|
|
20636
|
+
// An expansion decorates whatever node it sits on, leaf or group — same as negate.
|
|
20637
|
+
const expType = (0, $af4441dd29af05df$export$a6dc3fef1cecdf28)(node);
|
|
20638
|
+
if (expType) classes = `${classes} gramene-filter-EXPAND gramene-filter-EXPAND-${(0, $af4441dd29af05df$export$c8b6102be216752a)(expType)}`;
|
|
20500
20639
|
if (node.negate) classes = `${classes} gramene-filter-NOT`;
|
|
20501
20640
|
if (showMarked && node.marked) classes = `${classes} gramene-filter-marked`;
|
|
20502
20641
|
let content = '';
|
|
@@ -20517,6 +20656,40 @@ const $693dd8c7a5607c3a$var$Filter = ({ node: node, moveCopyMode: moveCopyMode,
|
|
|
20517
20656
|
})
|
|
20518
20657
|
]
|
|
20519
20658
|
}, key++));
|
|
20659
|
+
// A node carries at most one expansion, so the types are radios rather than
|
|
20660
|
+
// separate commands. Any node can carry one, leaf or group — attaching it to a
|
|
20661
|
+
// group means "expand whatever this group matches".
|
|
20662
|
+
menuItems.push(/*#__PURE__*/ (0, $gXNCa$reactjsxruntime.jsx)("li", {
|
|
20663
|
+
className: "gramene-filter-menu-label",
|
|
20664
|
+
children: "expand filter(s)"
|
|
20665
|
+
}, key++));
|
|
20666
|
+
Object.keys((0, $af4441dd29af05df$export$da3188ffd2da2525)).forEach((type)=>{
|
|
20667
|
+
const checked = expType === type;
|
|
20668
|
+
menuItems.push(/*#__PURE__*/ (0, $gXNCa$reactjsxruntime.jsxs)("li", {
|
|
20669
|
+
className: "gramene-filter-menu-radio",
|
|
20670
|
+
onClick: ()=>{
|
|
20671
|
+
// Re-picking the active type clears it — the only way to remove an
|
|
20672
|
+
// expansion from the root, which has no `delete`.
|
|
20673
|
+
if (checked) {
|
|
20674
|
+
$693dd8c7a5607c3a$var$logAction(`Remove expansion`);
|
|
20675
|
+
actions.removeExpansion(node);
|
|
20676
|
+
} else {
|
|
20677
|
+
$693dd8c7a5607c3a$var$logAction(`Expand by ${type}`);
|
|
20678
|
+
actions.expand(node, type);
|
|
20679
|
+
}
|
|
20680
|
+
},
|
|
20681
|
+
children: [
|
|
20682
|
+
/*#__PURE__*/ (0, $gXNCa$reactjsxruntime.jsx)("input", {
|
|
20683
|
+
type: "radio",
|
|
20684
|
+
readOnly: true,
|
|
20685
|
+
checked: checked,
|
|
20686
|
+
onChange: ()=>{},
|
|
20687
|
+
name: `gramene-expand-${node.leftIdx}`
|
|
20688
|
+
}),
|
|
20689
|
+
(0, $af4441dd29af05df$export$da3188ffd2da2525)[type].label
|
|
20690
|
+
]
|
|
20691
|
+
}, key++));
|
|
20692
|
+
});
|
|
20520
20693
|
if (node.leftIdx > 0) {
|
|
20521
20694
|
menuItems.push(/*#__PURE__*/ (0, $gXNCa$reactjsxruntime.jsx)("li", {
|
|
20522
20695
|
onClick: ()=>{
|
|
@@ -20586,6 +20759,13 @@ const $693dd8c7a5607c3a$var$Filter = ({ node: node, moveCopyMode: moveCopyMode,
|
|
|
20586
20759
|
})
|
|
20587
20760
|
});
|
|
20588
20761
|
}
|
|
20762
|
+
// Shown above the node's own label, since the expansion applies to whatever that
|
|
20763
|
+
// node resolves to rather than replacing it.
|
|
20764
|
+
const expBadge = expType ? /*#__PURE__*/ (0, $gXNCa$reactjsxruntime.jsx)("span", {
|
|
20765
|
+
className: "gramene-filter-expansion",
|
|
20766
|
+
onClick: ()=>actions.toggleMenu(node),
|
|
20767
|
+
children: (0, $af4441dd29af05df$export$90cfa1f3fbcb6430)(node)
|
|
20768
|
+
}) : null;
|
|
20589
20769
|
if (node.operation) {
|
|
20590
20770
|
children = node.children.map((child, idx)=>/*#__PURE__*/ (0, $gXNCa$reactjsxruntime.jsx)($693dd8c7a5607c3a$var$Filter, {
|
|
20591
20771
|
moveCopyMode: moveCopyMode,
|
|
@@ -20595,6 +20775,7 @@ const $693dd8c7a5607c3a$var$Filter = ({ node: node, moveCopyMode: moveCopyMode,
|
|
|
20595
20775
|
}, idx));
|
|
20596
20776
|
content = /*#__PURE__*/ (0, $gXNCa$reactjsxruntime.jsxs)("div", {
|
|
20597
20777
|
children: [
|
|
20778
|
+
expBadge,
|
|
20598
20779
|
/*#__PURE__*/ (0, $gXNCa$reactjsxruntime.jsx)("span", {
|
|
20599
20780
|
className: "gramene-filter-operation",
|
|
20600
20781
|
onClick: ()=>actions.toggleMenu(node),
|
|
@@ -20603,13 +20784,18 @@ const $693dd8c7a5607c3a$var$Filter = ({ node: node, moveCopyMode: moveCopyMode,
|
|
|
20603
20784
|
warning
|
|
20604
20785
|
]
|
|
20605
20786
|
});
|
|
20606
|
-
} else content = /*#__PURE__*/ (0, $gXNCa$reactjsxruntime.jsxs)(
|
|
20607
|
-
className: "gramene-filter-text",
|
|
20608
|
-
onClick: ()=>actions.toggleMenu(node),
|
|
20787
|
+
} else content = /*#__PURE__*/ (0, $gXNCa$reactjsxruntime.jsxs)((0, $gXNCa$reactjsxruntime.Fragment), {
|
|
20609
20788
|
children: [
|
|
20610
|
-
|
|
20611
|
-
|
|
20612
|
-
|
|
20789
|
+
expBadge,
|
|
20790
|
+
/*#__PURE__*/ (0, $gXNCa$reactjsxruntime.jsxs)("span", {
|
|
20791
|
+
className: "gramene-filter-text",
|
|
20792
|
+
onClick: ()=>actions.toggleMenu(node),
|
|
20793
|
+
children: [
|
|
20794
|
+
node.category,
|
|
20795
|
+
" |\xa0",
|
|
20796
|
+
node.name
|
|
20797
|
+
]
|
|
20798
|
+
})
|
|
20613
20799
|
]
|
|
20614
20800
|
});
|
|
20615
20801
|
return /*#__PURE__*/ (0, $gXNCa$reactjsxruntime.jsxs)("div", {
|
|
@@ -20627,6 +20813,8 @@ const $693dd8c7a5607c3a$var$FiltersCmp = (props)=>{
|
|
|
20627
20813
|
negate: props.doNegateGrameneFilter,
|
|
20628
20814
|
deleteNode: props.doDeleteGrameneFilter,
|
|
20629
20815
|
changeOperation: props.doChangeGrameneFilterOperation,
|
|
20816
|
+
expand: props.doExpandGrameneFilter,
|
|
20817
|
+
removeExpansion: props.doRemoveGrameneExpansion,
|
|
20630
20818
|
selectTarget: props.doMoveOrCopyGrameneFilter,
|
|
20631
20819
|
markTargets: props.doMarkGrameneFilterTargets,
|
|
20632
20820
|
unmarkTargets: props.doUnmarkGrameneFilterTargets,
|
|
@@ -20667,7 +20855,7 @@ const $693dd8c7a5607c3a$var$FiltersCmp = (props)=>{
|
|
|
20667
20855
|
})
|
|
20668
20856
|
});
|
|
20669
20857
|
};
|
|
20670
|
-
const $693dd8c7a5607c3a$export$92a576f896a9bf72 = (0, $gXNCa$reduxbundlerreact.connect)('selectGrameneFilters', 'selectConfiguration', 'doNegateGrameneFilter', 'doDeleteGrameneFilter', 'doChangeGrameneFilterOperation', 'doMoveOrCopyGrameneFilter', 'doMarkGrameneFilterTargets', 'doUnmarkGrameneFilterTargets', 'doToggleGrameneFilterMenu', 'doClearGrameneFilters', $693dd8c7a5607c3a$var$FiltersCmp);
|
|
20858
|
+
const $693dd8c7a5607c3a$export$92a576f896a9bf72 = (0, $gXNCa$reduxbundlerreact.connect)('selectGrameneFilters', 'selectConfiguration', 'doNegateGrameneFilter', 'doDeleteGrameneFilter', 'doChangeGrameneFilterOperation', 'doExpandGrameneFilter', 'doRemoveGrameneExpansion', 'doMoveOrCopyGrameneFilter', 'doMarkGrameneFilterTargets', 'doUnmarkGrameneFilterTargets', 'doToggleGrameneFilterMenu', 'doClearGrameneFilters', $693dd8c7a5607c3a$var$FiltersCmp);
|
|
20671
20859
|
const $693dd8c7a5607c3a$var$ResultsCmp = (props)=>{
|
|
20672
20860
|
let activeViews = props.grameneViews.options;
|
|
20673
20861
|
return props.grameneFilters.rightIdx > 0 ? /*#__PURE__*/ (0, $gXNCa$reactjsxruntime.jsx)("div", {
|