ydb-embedded-ui 8.10.0 → 8.11.1
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/components/FullNodeViewer/i18n/index.d.ts +1 -1
- package/dist/components/JsonViewer/JsonViewer.d.ts +14 -0
- package/dist/components/JsonViewer/JsonViewer.js +174 -0
- package/dist/components/JsonViewer/JsonViewer.js.map +1 -0
- package/dist/components/JsonViewer/JsonViewer.scss +117 -0
- package/dist/components/JsonViewer/components/Cell.d.ts +16 -0
- package/dist/components/JsonViewer/components/Cell.js +103 -0
- package/dist/components/JsonViewer/components/Cell.js.map +1 -0
- package/dist/components/JsonViewer/components/Filter.d.ts +14 -0
- package/dist/components/JsonViewer/components/Filter.js +16 -0
- package/dist/components/JsonViewer/components/Filter.js.map +1 -0
- package/dist/components/JsonViewer/components/FullValueDialog.d.ts +8 -0
- package/dist/components/JsonViewer/components/FullValueDialog.js +10 -0
- package/dist/components/JsonViewer/components/FullValueDialog.js.map +1 -0
- package/dist/components/JsonViewer/components/HighlightedText.d.ts +15 -0
- package/dist/components/JsonViewer/components/HighlightedText.js +30 -0
- package/dist/components/JsonViewer/components/HighlightedText.js.map +1 -0
- package/dist/components/JsonViewer/components/ToggleCollapseButton.d.ts +8 -0
- package/dist/components/JsonViewer/components/ToggleCollapseButton.js +8 -0
- package/dist/components/JsonViewer/components/ToggleCollapseButton.js.map +1 -0
- package/dist/components/JsonViewer/constants.d.ts +1 -0
- package/dist/components/JsonViewer/constants.js +3 -0
- package/dist/components/JsonViewer/constants.js.map +1 -0
- package/dist/components/JsonViewer/i18n/en.json +17 -0
- package/dist/components/JsonViewer/i18n/index.d.ts +2 -0
- package/dist/components/{JSONTree → JsonViewer}/i18n/index.js +1 -1
- package/dist/components/JsonViewer/i18n/index.js.map +1 -0
- package/dist/components/JsonViewer/unipika/StructuredYsonTypes.d.ts +51 -0
- package/dist/components/JsonViewer/unipika/StructuredYsonTypes.js +2 -0
- package/dist/components/JsonViewer/unipika/StructuredYsonTypes.js.map +1 -0
- package/dist/components/JsonViewer/unipika/flattenUnipika.d.ts +44 -0
- package/dist/components/JsonViewer/unipika/flattenUnipika.js +254 -0
- package/dist/components/JsonViewer/unipika/flattenUnipika.js.map +1 -0
- package/dist/components/JsonViewer/unipika/unipika.d.ts +12 -0
- package/dist/components/JsonViewer/unipika/unipika.js +20 -0
- package/dist/components/JsonViewer/unipika/unipika.js.map +1 -0
- package/dist/components/JsonViewer/utils.d.ts +2 -0
- package/dist/components/JsonViewer/utils.js +5 -0
- package/dist/components/JsonViewer/utils.js.map +1 -0
- package/dist/components/MetricChart/reducer.d.ts +2 -2
- package/dist/components/nodesColumns/i18n/index.d.ts +1 -1
- package/dist/containers/Cluster/i18n/en.json +1 -1
- package/dist/containers/Storage/Disks/Disks.d.ts +3 -1
- package/dist/containers/Storage/Disks/Disks.js +6 -6
- package/dist/containers/Storage/Disks/Disks.js.map +1 -1
- package/dist/containers/Storage/StorageGroups/columns/columns.js +2 -2
- package/dist/containers/Storage/StorageGroups/columns/columns.js.map +1 -1
- package/dist/containers/Storage/VDisks/VDisks.d.ts +3 -1
- package/dist/containers/Storage/VDisks/VDisks.js +2 -2
- package/dist/containers/Storage/VDisks/VDisks.js.map +1 -1
- package/dist/containers/Storage/utils/index.d.ts +2 -1
- package/dist/containers/Storage/utils/index.js +10 -2
- package/dist/containers/Storage/utils/index.js.map +1 -1
- package/dist/containers/Tablets/i18n/index.d.ts +1 -1
- package/dist/containers/Tenant/Diagnostics/Describe/Describe.js +4 -8
- package/dist/containers/Tenant/Diagnostics/Describe/Describe.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/Describe/Describe.scss +0 -6
- package/dist/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/IssuesViewer/IssueTree.js +3 -2
- package/dist/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/IssuesViewer/IssueTree.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/IssuesViewer/IssueTree.scss +2 -31
- package/dist/containers/Tenant/ObjectSummary/ObjectSummary.js +1 -4
- package/dist/containers/Tenant/ObjectSummary/ObjectSummary.js.map +1 -1
- package/dist/containers/Tenant/ObjectSummary/SchemaTree/RefreshTreeButton.js +4 -0
- package/dist/containers/Tenant/ObjectSummary/SchemaTree/RefreshTreeButton.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryEditor/QueryEditor.scss +4 -0
- package/dist/containers/Tenant/Query/QueryResult/components/QueryJSONViewer/QueryJSONViewer.js +4 -2
- package/dist/containers/Tenant/Query/QueryResult/components/QueryJSONViewer/QueryJSONViewer.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryResult/components/QueryJSONViewer/QueryJSONViewer.scss +5 -2
- package/dist/containers/Tenant/Schema/SchemaViewer/SchemaViewer.js +4 -7
- package/dist/containers/Tenant/Schema/SchemaViewer/SchemaViewer.js.map +1 -1
- package/dist/containers/Tenant/Schema/SchemaViewer/SchemaViewer.scss +15 -0
- package/dist/containers/Tenant/Schema/SchemaViewer/columns.js +9 -1
- package/dist/containers/Tenant/Schema/SchemaViewer/columns.js.map +1 -1
- package/dist/containers/Tenant/Schema/SchemaViewer/prepareData.js +1 -3
- package/dist/containers/Tenant/Schema/SchemaViewer/prepareData.js.map +1 -1
- package/dist/containers/Tenant/Tenant.js +2 -5
- package/dist/containers/Tenant/Tenant.js.map +1 -1
- package/dist/containers/Tenant/utils/schemaQueryTemplates.js +68 -27
- package/dist/containers/Tenant/utils/schemaQueryTemplates.js.map +1 -1
- package/dist/store/configureStore.d.ts +4 -4
- package/dist/store/defaultStore.d.ts +2 -2
- package/dist/store/reducers/api.d.ts +1 -1
- package/dist/store/reducers/api.js +10 -1
- package/dist/store/reducers/api.js.map +1 -1
- package/dist/store/reducers/authentication/authentication.d.ts +4 -4
- package/dist/store/reducers/cancelQuery.d.ts +2 -2
- package/dist/store/reducers/capabilities/capabilities.d.ts +16 -16
- package/dist/store/reducers/cluster/cluster.d.ts +5 -5
- package/dist/store/reducers/clusters/clusters.d.ts +2 -2
- package/dist/store/reducers/codeAssist/codeAssist.d.ts +6 -6
- package/dist/store/reducers/executeTopQueries/executeTopQueries.d.ts +3 -3
- package/dist/store/reducers/healthcheckInfo/healthcheckInfo.d.ts +35 -35
- package/dist/store/reducers/heatmap.d.ts +2 -2
- package/dist/store/reducers/hotKeys/hotKeys.d.ts +2 -2
- package/dist/store/reducers/index.d.ts +3 -3
- package/dist/store/reducers/network/network.d.ts +2 -2
- package/dist/store/reducers/node/node.d.ts +3 -3
- package/dist/store/reducers/node/selectors.d.ts +1 -1
- package/dist/store/reducers/nodes/nodes.d.ts +2 -2
- package/dist/store/reducers/nodesList.d.ts +3 -3
- package/dist/store/reducers/operations.d.ts +4 -4
- package/dist/store/reducers/overview/overview.d.ts +3 -3
- package/dist/store/reducers/overview/overview.js +1 -1
- package/dist/store/reducers/overview/overview.js.map +1 -1
- package/dist/store/reducers/partitions/partitions.d.ts +2 -2
- package/dist/store/reducers/pdisk/pdisk.d.ts +2 -2
- package/dist/store/reducers/planToSvg.d.ts +2 -2
- package/dist/store/reducers/preview.d.ts +2 -2
- package/dist/store/reducers/preview.js +1 -1
- package/dist/store/reducers/preview.js.map +1 -1
- package/dist/store/reducers/query/query.d.ts +2 -2
- package/dist/store/reducers/schema/schema.d.ts +16 -16
- package/dist/store/reducers/schemaAcl/schemaAcl.d.ts +2 -2
- package/dist/store/reducers/schemaAcl/schemaAcl.js +1 -1
- package/dist/store/reducers/schemaAcl/schemaAcl.js.map +1 -1
- package/dist/store/reducers/shardsWorkload/shardsWorkload.d.ts +2 -2
- package/dist/store/reducers/storage/prepareGroupsDisks.js +1 -3
- package/dist/store/reducers/storage/prepareGroupsDisks.js.map +1 -1
- package/dist/store/reducers/storage/storage.d.ts +3 -3
- package/dist/store/reducers/storage/types.d.ts +2 -2
- package/dist/store/reducers/tableData.d.ts +1 -1
- package/dist/store/reducers/tableSchemaData.d.ts +2 -2
- package/dist/store/reducers/tablet.d.ts +7 -7
- package/dist/store/reducers/tablets.d.ts +3 -3
- package/dist/store/reducers/tenant/tenant.d.ts +3 -3
- package/dist/store/reducers/tenantOverview/executeTopTables/executeTopTables.d.ts +2 -2
- package/dist/store/reducers/tenantOverview/topShards/tenantOverviewTopShards.d.ts +2 -2
- package/dist/store/reducers/tenants/selectors.d.ts +21 -21
- package/dist/store/reducers/tenants/tenants.d.ts +2 -2
- package/dist/store/reducers/topic.d.ts +35 -35
- package/dist/store/reducers/vdisk/vdisk.d.ts +2 -2
- package/dist/store/reducers/viewSchema/viewSchema.d.ts +2 -2
- package/dist/store/reducers/viewSchema/viewSchema.js +1 -1
- package/dist/store/reducers/viewSchema/viewSchema.js.map +1 -1
- package/dist/{index.css → styles/index.scss} +4 -0
- package/dist/styles/mixins.scss +0 -91
- package/dist/styles/unipika.scss +19 -0
- package/dist/types/api/cluster.d.ts +2 -1
- package/dist/types/api/cluster.js.map +1 -1
- package/dist/types/api/storage.d.ts +6 -2
- package/package.json +2 -2
- package/dist/components/JSONTree/JSONTree.d.ts +0 -9
- package/dist/components/JSONTree/JSONTree.js +0 -23
- package/dist/components/JSONTree/JSONTree.js.map +0 -1
- package/dist/components/JSONTree/JSONTree.scss +0 -20
- package/dist/components/JSONTree/i18n/en.json +0 -4
- package/dist/components/JSONTree/i18n/index.d.ts +0 -2
- package/dist/components/JSONTree/i18n/index.js.map +0 -1
@@ -1,2 +1,2 @@
|
|
1
|
-
declare const _default: (key: "
|
1
|
+
declare const _default: (key: "version" | "database" | "uptime" | "dc" | "links" | "no-data" | "rack" | "la-interval-1m" | "la-interval-5m" | "la-interval-15m" | "developer-ui" | "title.common-info" | "title.endpoints" | "title.roles" | "title.pools" | "title.load-average", params?: import("@gravity-ui/i18n").Params) => string;
|
2
2
|
export default _default;
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import type * as DT100 from '@gravity-ui/react-data-table';
|
3
|
+
import type { UnipikaSettings, UnipikaValue } from './unipika/StructuredYsonTypes';
|
4
|
+
import './JsonViewer.scss';
|
5
|
+
interface JsonViewerProps {
|
6
|
+
value: UnipikaValue;
|
7
|
+
unipikaSettings?: UnipikaSettings;
|
8
|
+
extraTools?: React.ReactNode;
|
9
|
+
tableSettings?: DT100.Settings;
|
10
|
+
search?: boolean;
|
11
|
+
collapsedInitially?: boolean;
|
12
|
+
}
|
13
|
+
export declare function JsonViewer({ tableSettings, value, unipikaSettings, search, extraTools, collapsedInitially, }: JsonViewerProps): import("react/jsx-runtime").JSX.Element;
|
14
|
+
export {};
|
@@ -0,0 +1,174 @@
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
+
import React from 'react';
|
3
|
+
import DataTable from '@gravity-ui/react-data-table';
|
4
|
+
import { ActionTooltip, Button, Flex, Icon } from '@gravity-ui/uikit';
|
5
|
+
import { CASE_SENSITIVE_JSON_SEARCH } from '../../utils/constants';
|
6
|
+
import { useSetting } from '../../utils/hooks';
|
7
|
+
import { Cell } from './components/Cell';
|
8
|
+
import { Filter } from './components/Filter';
|
9
|
+
import { FullValueDialog } from './components/FullValueDialog';
|
10
|
+
import { block } from './constants';
|
11
|
+
import i18n from './i18n';
|
12
|
+
import { flattenUnipika } from './unipika/flattenUnipika';
|
13
|
+
import { unipika } from './unipika/unipika';
|
14
|
+
import ArrowDownToLineIcon from '@gravity-ui/icons/svgs/arrow-down-to-line.svg';
|
15
|
+
import ArrowUpFromLineIcon from '@gravity-ui/icons/svgs/arrow-up-from-line.svg';
|
16
|
+
import './JsonViewer.scss';
|
17
|
+
const SETTINGS = {
|
18
|
+
displayIndices: false,
|
19
|
+
dynamicRender: true,
|
20
|
+
sortable: false,
|
21
|
+
dynamicRenderMinSize: 100,
|
22
|
+
};
|
23
|
+
function getCollapsedState(value) {
|
24
|
+
const { data } = flattenUnipika(value);
|
25
|
+
const collapsedState = data.reduce((acc, { path }) => {
|
26
|
+
if (path) {
|
27
|
+
acc[path] = true;
|
28
|
+
}
|
29
|
+
return acc;
|
30
|
+
}, {});
|
31
|
+
return collapsedState;
|
32
|
+
}
|
33
|
+
function calculateState(value, collapsedState, filter, caseSensitive) {
|
34
|
+
const flattenResult = flattenUnipika(value, {
|
35
|
+
collapsedState: collapsedState,
|
36
|
+
filter,
|
37
|
+
caseSensitive,
|
38
|
+
});
|
39
|
+
return Object.assign({}, {
|
40
|
+
flattenResult,
|
41
|
+
matchedRows: Object.keys(flattenResult.searchIndex).map(Number),
|
42
|
+
});
|
43
|
+
}
|
44
|
+
export function JsonViewer({ tableSettings, value, unipikaSettings, search = true, extraTools, collapsedInitially, }) {
|
45
|
+
const [caseSensitiveSearch, setCaseSensitiveSearch] = useSetting(CASE_SENSITIVE_JSON_SEARCH, false);
|
46
|
+
const [collapsedState, setCollapsedState] = React.useState(() => {
|
47
|
+
if (collapsedInitially) {
|
48
|
+
return getCollapsedState(value);
|
49
|
+
}
|
50
|
+
return {};
|
51
|
+
});
|
52
|
+
const [filter, setFilter] = React.useState('');
|
53
|
+
const [state, setState] = React.useState(() => calculateState(value, collapsedState, filter, caseSensitiveSearch));
|
54
|
+
const [matchIndex, setMatchIndex] = React.useState(-1);
|
55
|
+
const [fullValue, setFullValue] = React.useState();
|
56
|
+
const dataTable = React.useRef(null);
|
57
|
+
const searchRef = React.useRef(null);
|
58
|
+
const normalizedTableSettings = React.useMemo(() => {
|
59
|
+
return {
|
60
|
+
...SETTINGS,
|
61
|
+
dynamicInnerRef: dataTable,
|
62
|
+
...tableSettings,
|
63
|
+
};
|
64
|
+
}, [tableSettings]);
|
65
|
+
const renderCell = ({ row, index }) => {
|
66
|
+
const { flattenResult: { searchIndex }, } = state;
|
67
|
+
return (_jsx(Cell, { matched: searchIndex[index], row: row, settings: unipikaSettings, onToggleCollapse: onTogglePathCollapse, filter: filter, showFullText: onShowFullText, index: index }));
|
68
|
+
};
|
69
|
+
const onTogglePathCollapse = (path) => {
|
70
|
+
const newCollapsedState = { ...collapsedState };
|
71
|
+
if (newCollapsedState[path]) {
|
72
|
+
delete newCollapsedState[path];
|
73
|
+
}
|
74
|
+
else {
|
75
|
+
newCollapsedState[path] = true;
|
76
|
+
}
|
77
|
+
updateState({ collapsedState: newCollapsedState });
|
78
|
+
};
|
79
|
+
const updateState = (changedState, cb) => {
|
80
|
+
const { collapsedState: newCollapsedState, matchIndex: newMatchIndex, filter: newFilter, caseSensitive: newCaseSensitive, } = changedState;
|
81
|
+
if (newCollapsedState !== undefined) {
|
82
|
+
setCollapsedState(newCollapsedState);
|
83
|
+
}
|
84
|
+
if (newMatchIndex !== undefined) {
|
85
|
+
setMatchIndex(newMatchIndex);
|
86
|
+
}
|
87
|
+
if (newFilter !== undefined) {
|
88
|
+
setFilter(newFilter);
|
89
|
+
}
|
90
|
+
const caseSensitive = newCaseSensitive !== null && newCaseSensitive !== void 0 ? newCaseSensitive : caseSensitiveSearch;
|
91
|
+
setState(calculateState(value, newCollapsedState !== null && newCollapsedState !== void 0 ? newCollapsedState : collapsedState, newFilter !== null && newFilter !== void 0 ? newFilter : filter, caseSensitive));
|
92
|
+
cb === null || cb === void 0 ? void 0 : cb();
|
93
|
+
};
|
94
|
+
const renderTable = () => {
|
95
|
+
const columns = [
|
96
|
+
{
|
97
|
+
name: 'content',
|
98
|
+
render: renderCell,
|
99
|
+
header: null,
|
100
|
+
},
|
101
|
+
];
|
102
|
+
const { flattenResult: { data }, } = state;
|
103
|
+
return (_jsx("div", { className: block('content'), children: _jsx(DataTable, { columns: columns, data: data, theme: 'yson', settings: normalizedTableSettings, rowClassName: () => block('row') }) }));
|
104
|
+
};
|
105
|
+
const onExpandAll = () => {
|
106
|
+
updateState({ collapsedState: {} }, () => {
|
107
|
+
onNextMatch(null, 0);
|
108
|
+
});
|
109
|
+
};
|
110
|
+
const onCollapseAll = () => {
|
111
|
+
const collapsedState = getCollapsedState(value);
|
112
|
+
updateState({ collapsedState });
|
113
|
+
};
|
114
|
+
const onFilterChange = (filter) => {
|
115
|
+
updateState({ filter, matchIndex: 0 }, () => {
|
116
|
+
onNextMatch(null, 0);
|
117
|
+
});
|
118
|
+
};
|
119
|
+
const onNextMatch = (_event, diff = 1) => {
|
120
|
+
var _a, _b;
|
121
|
+
const { matchedRows } = state;
|
122
|
+
if (!matchedRows.length) {
|
123
|
+
return;
|
124
|
+
}
|
125
|
+
let index = (matchIndex + diff) % matchedRows.length;
|
126
|
+
if (index < 0) {
|
127
|
+
index = matchedRows.length + index;
|
128
|
+
}
|
129
|
+
if (index !== matchIndex) {
|
130
|
+
setMatchIndex(index);
|
131
|
+
}
|
132
|
+
(_a = dataTable.current) === null || _a === void 0 ? void 0 : _a.scrollTo(matchedRows[index] - 6);
|
133
|
+
(_b = searchRef.current) === null || _b === void 0 ? void 0 : _b.focus();
|
134
|
+
};
|
135
|
+
const onPrevMatch = () => {
|
136
|
+
onNextMatch(null, -1);
|
137
|
+
};
|
138
|
+
const onEnterKeyDown = (e) => {
|
139
|
+
if (e.key !== 'Enter') {
|
140
|
+
return;
|
141
|
+
}
|
142
|
+
if (e.shiftKey || e.ctrlKey) {
|
143
|
+
onPrevMatch();
|
144
|
+
}
|
145
|
+
else {
|
146
|
+
onNextMatch(null);
|
147
|
+
}
|
148
|
+
};
|
149
|
+
const handleUpdateCaseSensitive = () => {
|
150
|
+
const newCaseSensitive = !caseSensitiveSearch;
|
151
|
+
setCaseSensitiveSearch(newCaseSensitive);
|
152
|
+
updateState({ caseSensitive: newCaseSensitive });
|
153
|
+
};
|
154
|
+
const renderToolbar = () => {
|
155
|
+
return (_jsxs(Flex, { gap: 2, wrap: "nowrap", className: block('toolbar'), children: [_jsxs(Flex, { gap: 1, wrap: "nowrap", children: [_jsx(ActionTooltip, { title: i18n('action_expand-all'), children: _jsx(Button, { onClick: onExpandAll, view: "flat-secondary", children: _jsx(Icon, { data: ArrowDownToLineIcon }) }) }), _jsx(ActionTooltip, { title: i18n('action_collapse-all'), children: _jsx(Button, { onClick: onCollapseAll, view: "flat-secondary", children: _jsx(Icon, { data: ArrowUpFromLineIcon }) }) })] }), search && (_jsx(Filter, { onUpdate: onFilterChange, matchIndex: matchIndex, matchedRows: state.matchedRows, value: filter, ref: searchRef, onKeyDown: onEnterKeyDown, onNextMatch: onNextMatch, onPrevMatch: onPrevMatch, caseSensitive: caseSensitiveSearch, onUpdateCaseSensitive: handleUpdateCaseSensitive })), _jsx("span", { className: block('extra-tools'), children: extraTools })] }));
|
156
|
+
};
|
157
|
+
const onShowFullText = (index) => {
|
158
|
+
const { flattenResult: { searchIndex, data }, } = state;
|
159
|
+
setFullValue({
|
160
|
+
value: data[index].value,
|
161
|
+
searchInfo: searchIndex[index],
|
162
|
+
});
|
163
|
+
};
|
164
|
+
const onHideFullValue = () => {
|
165
|
+
setFullValue(undefined);
|
166
|
+
};
|
167
|
+
const renderFullValueModal = () => {
|
168
|
+
const { value, searchInfo } = fullValue !== null && fullValue !== void 0 ? fullValue : {};
|
169
|
+
const tmp = unipika.format(value, { ...unipikaSettings, asHTML: false });
|
170
|
+
return (value && (_jsx(FullValueDialog, { onClose: onHideFullValue, starts: (searchInfo === null || searchInfo === void 0 ? void 0 : searchInfo.valueMatch) || [], text: tmp.substring(1, tmp.length - 1), length: filter.length })));
|
171
|
+
};
|
172
|
+
return (_jsxs("div", { className: block(), children: [renderToolbar(), renderTable(), renderFullValueModal()] }));
|
173
|
+
}
|
174
|
+
//# sourceMappingURL=JsonViewer.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"JsonViewer.js","sourceRoot":"","sources":["../../../src/components/JsonViewer/JsonViewer.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,SAAS,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EAAC,0BAA0B,EAAC,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAC,IAAI,EAAC,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAC,MAAM,EAAC,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAC;AAClC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAE1B,OAAO,EAAC,cAAc,EAAC,MAAM,0BAA0B,CAAC;AAOxD,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAC;AAE1C,OAAO,mBAAmB,MAAM,+CAA+C,CAAC;AAChF,OAAO,mBAAmB,MAAM,+CAA+C,CAAC;AAEhF,OAAO,mBAAmB,CAAC;AAwB3B,MAAM,QAAQ,GAAmB;IAC7B,cAAc,EAAE,KAAK;IACrB,aAAa,EAAE,IAAI;IACnB,QAAQ,EAAE,KAAK;IACf,oBAAoB,EAAE,GAAG;CAC5B,CAAC;AAEF,SAAS,iBAAiB,CAAC,KAAmB;IAC1C,MAAM,EAAC,IAAI,EAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAiB,CAAC,GAAG,EAAE,EAAC,IAAI,EAAC,EAAE,EAAE;QAC/D,IAAI,IAAI,EAAE,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,cAAc,CAAC;AAC1B,CAAC;AAED,SAAS,cAAc,CACnB,KAAmB,EACnB,cAA8B,EAC9B,MAAc,EACd,aAAuB;IAEvB,MAAM,aAAa,GAAG,cAAc,CAAC,KAAK,EAAE;QACxC,cAAc,EAAE,cAAc;QAC9B,MAAM;QACN,aAAa;KAChB,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,MAAM,CAChB,EAAE,EACF;QACI,aAAa;QACb,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;KAClE,CACJ,CAAC;AACN,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EACvB,aAAa,EACb,KAAK,EACL,eAAe,EACf,MAAM,GAAG,IAAI,EACb,UAAU,EACV,kBAAkB,GACJ;IACd,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,UAAU,CAC5D,0BAA0B,EAC1B,KAAK,CACR,CAAC;IAEF,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAiB,GAAG,EAAE;QAC5E,IAAI,kBAAkB,EAAE,CAAC;YACrB,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAGrC,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAE7E,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,EAG5C,CAAC;IAEL,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAyB,IAAI,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAmB,IAAI,CAAC,CAAC;IAEvD,MAAM,uBAAuB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAC/C,OAAO;YACH,GAAG,QAAQ;YACX,eAAe,EAAE,SAAS;YAC1B,GAAG,aAAa;SACnB,CAAC;IACN,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,MAAM,UAAU,GAAG,CAAC,EAAC,GAAG,EAAE,KAAK,EAA+C,EAAE,EAAE;QAC9E,MAAM,EACF,aAAa,EAAE,EAAC,WAAW,EAAC,GAC/B,GAAG,KAAK,CAAC;QACV,OAAO,CACH,KAAC,IAAI,IACD,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,EAC3B,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,eAAe,EACzB,gBAAgB,EAAE,oBAAoB,EACtC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,cAAc,EAC5B,KAAK,EAAE,KAAK,GACd,CACL,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAE,EAAE;QAC1C,MAAM,iBAAiB,GAAG,EAAC,GAAG,cAAc,EAAC,CAAC;QAC9C,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACJ,iBAAiB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACnC,CAAC;QACD,WAAW,CAAC,EAAC,cAAc,EAAE,iBAAiB,EAAC,CAAC,CAAC;IACrD,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAChB,YAEC,EACD,EAAe,EACjB,EAAE;QACA,MAAM,EACF,cAAc,EAAE,iBAAiB,EACjC,UAAU,EAAE,aAAa,EACzB,MAAM,EAAE,SAAS,EACjB,aAAa,EAAE,gBAAgB,GAClC,GAAG,YAAY,CAAC;QAEjB,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;YAClC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAC9B,aAAa,CAAC,aAAa,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,SAAS,CAAC,SAAS,CAAC,CAAC;QACzB,CAAC;QACD,MAAM,aAAa,GAAG,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,mBAAmB,CAAC;QAC9D,QAAQ,CACJ,cAAc,CACV,KAAK,EACL,iBAAiB,aAAjB,iBAAiB,cAAjB,iBAAiB,GAAI,cAAc,EACnC,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,MAAM,EACnB,aAAa,CAChB,CACJ,CAAC;QAEF,EAAE,aAAF,EAAE,uBAAF,EAAE,EAAI,CAAC;IACX,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,GAAG,EAAE;QACrB,MAAM,OAAO,GAAgD;YACzD;gBACI,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,IAAI;aACf;SACJ,CAAC;QAEF,MAAM,EACF,aAAa,EAAE,EAAC,IAAI,EAAC,GACxB,GAAG,KAAK,CAAC;QAEV,OAAO,CACH,cAAK,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,YAC5B,KAAC,SAAS,IACN,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,uBAAuB,EACjC,YAAY,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAClC,GACA,CACT,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,GAAG,EAAE;QACrB,WAAW,CAAC,EAAC,cAAc,EAAE,EAAE,EAAC,EAAE,GAAG,EAAE;YACnC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,GAAG,EAAE;QACvB,MAAM,cAAc,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAChD,WAAW,CAAC,EAAC,cAAc,EAAC,CAAC,CAAC;IAClC,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,MAAc,EAAE,EAAE;QACtC,WAAW,CAAC,EAAC,MAAM,EAAE,UAAU,EAAE,CAAC,EAAC,EAAE,GAAG,EAAE;YACtC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,MAAe,EAAE,IAAI,GAAG,CAAC,EAAE,EAAE;;QAC9C,MAAM,EAAC,WAAW,EAAC,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YACtB,OAAO;QACX,CAAC;QAED,IAAI,KAAK,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC;QACrD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACZ,KAAK,GAAG,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC;QACvC,CAAC;QAED,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YACvB,aAAa,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QACD,MAAA,SAAS,CAAC,OAAO,0CAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACpD,MAAA,SAAS,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;IAC/B,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,GAAG,EAAE;QACrB,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,CAAsB,EAAE,EAAE;QAC9C,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;YACpB,OAAO;QACX,CAAC;QACD,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YAC1B,WAAW,EAAE,CAAC;QAClB,CAAC;aAAM,CAAC;YACJ,WAAW,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,yBAAyB,GAAG,GAAG,EAAE;QACnC,MAAM,gBAAgB,GAAG,CAAC,mBAAmB,CAAC;QAC9C,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;QACzC,WAAW,CAAC,EAAC,aAAa,EAAE,gBAAgB,EAAC,CAAC,CAAC;IACnD,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,GAAG,EAAE;QACvB,OAAO,CACH,MAAC,IAAI,IAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,aACnD,MAAC,IAAI,IAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAC,QAAQ,aACvB,KAAC,aAAa,IAAC,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,YAC3C,KAAC,MAAM,IAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAC,gBAAgB,YAC/C,KAAC,IAAI,IAAC,IAAI,EAAE,mBAAmB,GAAI,GAC9B,GACG,EAChB,KAAC,aAAa,IAAC,KAAK,EAAE,IAAI,CAAC,qBAAqB,CAAC,YAC7C,KAAC,MAAM,IAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAC,gBAAgB,YACjD,KAAC,IAAI,IAAC,IAAI,EAAE,mBAAmB,GAAI,GAC9B,GACG,IACb,EACN,MAAM,IAAI,CACP,KAAC,MAAM,IACH,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,cAAc,EACzB,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,mBAAmB,EAClC,qBAAqB,EAAE,yBAAyB,GAClD,CACL,EACD,eAAM,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,YAAG,UAAU,GAAQ,IACvD,CACV,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,EAAE;QACrC,MAAM,EACF,aAAa,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC,GACrC,GAAG,KAAK,CAAC;QAEV,YAAY,CAAC;YACT,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK;YACxB,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC;SACjC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,GAAG,EAAE;QACzB,YAAY,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC,CAAC;IAEF,MAAM,oBAAoB,GAAG,GAAG,EAAE;QAC9B,MAAM,EAAC,KAAK,EAAE,UAAU,EAAC,GAAG,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,EAAE,CAAC;QAE5C,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAC,GAAG,eAAe,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC,CAAC;QAEvE,OAAO,CACH,KAAK,IAAI,CACL,KAAC,eAAe,IACZ,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,UAAU,KAAI,EAAE,EACpC,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,EACtC,MAAM,EAAE,MAAM,CAAC,MAAM,GACvB,CACL,CACJ,CAAC;IACN,CAAC,CAAC;IAEF,OAAO,CACH,eAAK,SAAS,EAAE,KAAK,EAAE,aAClB,aAAa,EAAE,EACf,WAAW,EAAE,EACb,oBAAoB,EAAE,IACrB,CACT,CAAC;AACN,CAAC"}
|
@@ -0,0 +1,117 @@
|
|
1
|
+
@use '../../styles/mixins.scss';
|
2
|
+
|
3
|
+
.ydb-json-viewer {
|
4
|
+
--data-table-row-height: 20px;
|
5
|
+
--toolbar-background-color: var(--g-color-base-background);
|
6
|
+
|
7
|
+
&__toolbar {
|
8
|
+
position: sticky;
|
9
|
+
z-index: 2;
|
10
|
+
top: 0;
|
11
|
+
left: 0;
|
12
|
+
|
13
|
+
padding-bottom: var(--g-spacing-2);
|
14
|
+
|
15
|
+
background-color: var(--toolbar-background-color);
|
16
|
+
}
|
17
|
+
|
18
|
+
&__content {
|
19
|
+
font-family: var(--g-font-family-monospace);
|
20
|
+
}
|
21
|
+
|
22
|
+
&__row {
|
23
|
+
height: 1em;
|
24
|
+
}
|
25
|
+
|
26
|
+
&__cell {
|
27
|
+
position: relative;
|
28
|
+
|
29
|
+
white-space: nowrap !important;
|
30
|
+
* {
|
31
|
+
white-space: nowrap !important;
|
32
|
+
}
|
33
|
+
}
|
34
|
+
|
35
|
+
&__collapsed {
|
36
|
+
position: absolute;
|
37
|
+
|
38
|
+
margin-top: -2px;
|
39
|
+
margin-left: -3ex;
|
40
|
+
}
|
41
|
+
|
42
|
+
&__match-counter {
|
43
|
+
align-content: center;
|
44
|
+
|
45
|
+
text-wrap: nowrap;
|
46
|
+
|
47
|
+
color: var(--g-color-text-secondary);
|
48
|
+
}
|
49
|
+
|
50
|
+
&__key {
|
51
|
+
color: var(--g-color-text-misc);
|
52
|
+
}
|
53
|
+
|
54
|
+
&__value {
|
55
|
+
&_type {
|
56
|
+
&_string {
|
57
|
+
color: var(--color-unipika-string);
|
58
|
+
}
|
59
|
+
&_boolean {
|
60
|
+
color: var(--color-unipika-bool);
|
61
|
+
}
|
62
|
+
&_null {
|
63
|
+
color: var(--color-unipika-null);
|
64
|
+
}
|
65
|
+
&_int64 {
|
66
|
+
color: var(--color-unipika-int);
|
67
|
+
}
|
68
|
+
&_double {
|
69
|
+
color: var(--color-unipika-float);
|
70
|
+
}
|
71
|
+
}
|
72
|
+
}
|
73
|
+
|
74
|
+
&__filter {
|
75
|
+
width: 300px;
|
76
|
+
}
|
77
|
+
|
78
|
+
&__filtered {
|
79
|
+
&_highlighted {
|
80
|
+
background-color: var(--g-color-base-generic-medium);
|
81
|
+
}
|
82
|
+
&_clickable {
|
83
|
+
cursor: pointer;
|
84
|
+
|
85
|
+
color: var(--g-color-text-info);
|
86
|
+
}
|
87
|
+
}
|
88
|
+
|
89
|
+
&__match-btn {
|
90
|
+
margin-left: -1px;
|
91
|
+
}
|
92
|
+
|
93
|
+
&__full-value {
|
94
|
+
overflow: hidden auto;
|
95
|
+
|
96
|
+
max-width: 90vw;
|
97
|
+
max-height: 90vh;
|
98
|
+
margin: var(--g-spacing-3) 0;
|
99
|
+
|
100
|
+
word-break: break-all;
|
101
|
+
@include mixins.body-2-typography();
|
102
|
+
}
|
103
|
+
|
104
|
+
&__extra-tools {
|
105
|
+
margin-left: 1ex;
|
106
|
+
}
|
107
|
+
|
108
|
+
.data-table__head {
|
109
|
+
display: none;
|
110
|
+
}
|
111
|
+
|
112
|
+
.data-table__td {
|
113
|
+
overflow: visible;
|
114
|
+
|
115
|
+
padding: 0;
|
116
|
+
}
|
117
|
+
}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import type { UnipikaSettings } from '../unipika/StructuredYsonTypes';
|
2
|
+
import type { SearchInfo, UnipikaFlattenTreeItem } from '../unipika/flattenUnipika';
|
3
|
+
interface CellProps {
|
4
|
+
matched: SearchInfo;
|
5
|
+
row: UnipikaFlattenTreeItem;
|
6
|
+
settings?: UnipikaSettings;
|
7
|
+
collapsedState?: {
|
8
|
+
readonly [key: string]: boolean;
|
9
|
+
};
|
10
|
+
onToggleCollapse: (path: string) => void;
|
11
|
+
filter?: string;
|
12
|
+
index: number;
|
13
|
+
showFullText: (index: number) => void;
|
14
|
+
}
|
15
|
+
export declare function Cell(props: CellProps): import("react/jsx-runtime").JSX.Element;
|
16
|
+
export {};
|
@@ -0,0 +1,103 @@
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
+
import React from 'react';
|
3
|
+
import { Icon } from '@gravity-ui/uikit';
|
4
|
+
import fill_ from 'lodash/fill';
|
5
|
+
import { MultiHighlightedText } from '../components/HighlightedText';
|
6
|
+
import { ToggleCollapseButton } from '../components/ToggleCollapseButton';
|
7
|
+
import { block } from '../constants';
|
8
|
+
import i18n from '../i18n';
|
9
|
+
import { defaultUnipikaSettings, unipika } from '../unipika/unipika';
|
10
|
+
import { getHightLightedClassName } from '../utils';
|
11
|
+
import ArrowUpRightFromSquareIcon from '@gravity-ui/icons/svgs/arrow-up-right-from-square.svg';
|
12
|
+
export function Cell(props) {
|
13
|
+
const { row: { level, open, close, key, value, hasDelimiter, path, collapsed, depth }, settings, onToggleCollapse, matched, filter, showFullText, index, } = props;
|
14
|
+
const handleToggleCollapse = React.useCallback(() => {
|
15
|
+
if (!path) {
|
16
|
+
return;
|
17
|
+
}
|
18
|
+
onToggleCollapse(path);
|
19
|
+
}, [path, onToggleCollapse]);
|
20
|
+
const handleShowFullText = React.useCallback(() => {
|
21
|
+
showFullText(index);
|
22
|
+
}, [showFullText, index]);
|
23
|
+
return (_jsxs("div", { className: block('cell', 'unipika'), children: [getLevelOffsetSpaces(level), path && (_jsx(ToggleCollapseButton, { collapsed: collapsed, path: path, onToggle: handleToggleCollapse })), _jsx(Key, { text: key, settings: settings, matched: matched === null || matched === void 0 ? void 0 : matched.keyMatch, filter: filter }), open && _jsx(OpenClose, { type: open, settings: settings }), depth !== undefined && (_jsx("span", { className: 'unipika', children: i18n('context_items-count', { count: depth }) })), value !== undefined && (_jsx(Value, { text: value, settings: settings, matched: matched === null || matched === void 0 ? void 0 : matched.valueMatch, filter: filter, showFullText: handleShowFullText })), collapsed && depth === undefined && _jsx("span", { className: 'unipika', children: "..." }), close && _jsx(OpenClose, { type: close, settings: settings, close: true }), hasDelimiter && _jsx(AdditionalText, { text: ',' })] }));
|
24
|
+
}
|
25
|
+
function Key(props) {
|
26
|
+
const text = renderKeyWithFilter(props);
|
27
|
+
return text ? (_jsxs(React.Fragment, { children: [text, _jsx(AdditionalText, { text: ': ' })] })) : null;
|
28
|
+
}
|
29
|
+
function Value(props) {
|
30
|
+
var _a;
|
31
|
+
return (_jsx(React.Fragment, { children: renderValueWithFilter(props, block('value', { type: (_a = props.text) === null || _a === void 0 ? void 0 : _a.$type })) }));
|
32
|
+
}
|
33
|
+
function renderValueWithFilter(props, className) {
|
34
|
+
var _a;
|
35
|
+
if ('string' === ((_a = props.text) === null || _a === void 0 ? void 0 : _a.$type)) {
|
36
|
+
return renderStringWithFilter(props, className, 100);
|
37
|
+
}
|
38
|
+
return renderWithFilter(props, block('value'));
|
39
|
+
}
|
40
|
+
function renderStringWithFilter(props, className, maxWidth = Infinity) {
|
41
|
+
const { text, settings = defaultUnipikaSettings, matched = [], filter, showFullText } = props;
|
42
|
+
const tmp = unipika.format(text, { ...settings, asHTML: false });
|
43
|
+
const length = tmp.length;
|
44
|
+
const visible = tmp.substring(1, Math.min(length - 1, maxWidth + 1));
|
45
|
+
const truncated = visible.length < tmp.length - 2;
|
46
|
+
let hasHiddenMatch = false;
|
47
|
+
if (truncated) {
|
48
|
+
for (let i = matched.length - 1; i >= 0; --i) {
|
49
|
+
if (visible.length < matched[i] + ((filter === null || filter === void 0 ? void 0 : filter.length) || 0)) {
|
50
|
+
hasHiddenMatch = true;
|
51
|
+
break;
|
52
|
+
}
|
53
|
+
}
|
54
|
+
}
|
55
|
+
return (_jsxs("span", { children: [_jsx(MultiHighlightedText, { className: getHightLightedClassName(className), text: visible, starts: matched, length: filter === null || filter === void 0 ? void 0 : filter.length }), truncated && (_jsxs("span", { className: block('filtered', {
|
56
|
+
highlighted: hasHiddenMatch,
|
57
|
+
clickable: true,
|
58
|
+
}), onClick: showFullText, children: ['\u2026', _jsx(Icon, { data: ArrowUpRightFromSquareIcon })] }))] }));
|
59
|
+
}
|
60
|
+
function renderKeyWithFilter(props) {
|
61
|
+
if (!(props === null || props === void 0 ? void 0 : props.text)) {
|
62
|
+
return null;
|
63
|
+
}
|
64
|
+
return renderStringWithFilter(props, block('key'));
|
65
|
+
}
|
66
|
+
function renderWithFilter(props, className) {
|
67
|
+
const { text, filter, settings, matched } = props;
|
68
|
+
let res = null;
|
69
|
+
if (matched && filter) {
|
70
|
+
const tmp = unipika.format(text, { ...settings, asHTML: false });
|
71
|
+
res = (_jsx(MultiHighlightedText, { className: getHightLightedClassName(className), text: tmp, starts: matched, length: filter === null || filter === void 0 ? void 0 : filter.length }));
|
72
|
+
}
|
73
|
+
else {
|
74
|
+
res = text ? formatValue(text, settings) : undefined;
|
75
|
+
}
|
76
|
+
return res ? res : null;
|
77
|
+
}
|
78
|
+
function AdditionalText({ text }) {
|
79
|
+
return _jsx("span", { children: text });
|
80
|
+
}
|
81
|
+
function OpenClose(props) {
|
82
|
+
const { type, close } = props;
|
83
|
+
switch (type) {
|
84
|
+
case 'array':
|
85
|
+
return _jsx(AdditionalText, { text: close ? ']' : '[' });
|
86
|
+
case 'object':
|
87
|
+
return _jsx(AdditionalText, { text: close ? '}' : '{' });
|
88
|
+
}
|
89
|
+
}
|
90
|
+
function formatValue(value, settings = defaultUnipikaSettings) {
|
91
|
+
const __html = unipika.formatValue(value, { ...defaultUnipikaSettings, ...settings }, 0);
|
92
|
+
return _jsx("span", { className: 'unipika', dangerouslySetInnerHTML: { __html } });
|
93
|
+
}
|
94
|
+
const OFFSETS_BY_LEVEL = {};
|
95
|
+
function getLevelOffsetSpaces(level) {
|
96
|
+
let res = OFFSETS_BY_LEVEL[level];
|
97
|
+
if (!res) {
|
98
|
+
const __html = fill_(Array(level * 3), ' ').join('');
|
99
|
+
res = OFFSETS_BY_LEVEL[level] = _jsx("span", { dangerouslySetInnerHTML: { __html } });
|
100
|
+
}
|
101
|
+
return res;
|
102
|
+
}
|
103
|
+
//# sourceMappingURL=Cell.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Cell.js","sourceRoot":"","sources":["../../../../src/components/JsonViewer/components/Cell.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,IAAI,EAAC,MAAM,mBAAmB,CAAC;AACvC,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC,OAAO,EAAC,oBAAoB,EAAC,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAC,oBAAoB,EAAC,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAC,KAAK,EAAC,MAAM,cAAc,CAAC;AACnC,OAAO,IAAI,MAAM,SAAS,CAAC;AAG3B,OAAO,EAAC,sBAAsB,EAAE,OAAO,EAAC,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAC,wBAAwB,EAAC,MAAM,UAAU,CAAC;AAElD,OAAO,0BAA0B,MAAM,uDAAuD,CAAC;AAa/F,MAAM,UAAU,IAAI,CAAC,KAAgB;IACjC,MAAM,EACF,GAAG,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAC,EAC3E,QAAQ,EACR,gBAAgB,EAChB,OAAO,EACP,MAAM,EACN,YAAY,EACZ,KAAK,GACR,GAAG,KAAK,CAAC;IAEV,MAAM,oBAAoB,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAChD,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO;QACX,CAAC;QACD,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAE7B,MAAM,kBAAkB,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC9C,YAAY,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;IAE1B,OAAO,CACH,eAAK,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,aACnC,oBAAoB,CAAC,KAAK,CAAC,EAC3B,IAAI,IAAI,CACL,KAAC,oBAAoB,IACjB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,oBAAoB,GAChC,CACL,EACD,KAAC,GAAG,IAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAI,EACjF,IAAI,IAAI,KAAC,SAAS,IAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAI,EACrD,KAAK,KAAK,SAAS,IAAI,CACpB,eAAM,SAAS,EAAE,SAAS,YAAG,IAAI,CAAC,qBAAqB,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC,GAAQ,CACnF,EACA,KAAK,KAAK,SAAS,IAAI,CACpB,KAAC,KAAK,IACF,IAAI,EAAE,KAAK,EACX,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,EAC5B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,kBAAkB,GAClC,CACL,EACA,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,eAAM,SAAS,EAAE,SAAS,oBAAY,EAC1E,KAAK,IAAI,KAAC,SAAS,IAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,SAAG,EAC7D,YAAY,IAAI,KAAC,cAAc,IAAC,IAAI,EAAE,GAAG,GAAI,IAC5C,CACT,CAAC;AACN,CAAC;AASD,SAAS,GAAG,CAAC,KAAe;IACxB,MAAM,IAAI,GAAoB,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACzD,OAAO,IAAI,CAAC,CAAC,CAAC,CACV,MAAC,KAAK,CAAC,QAAQ,eACV,IAAI,EACL,KAAC,cAAc,IAAC,IAAI,EAAE,IAAI,GAAI,IACjB,CACpB,CAAC,CAAC,CAAC,IAAI,CAAC;AACb,CAAC;AAMD,SAAS,KAAK,CAAC,KAAiB;;IAC5B,OAAO,CACH,KAAC,KAAK,CAAC,QAAQ,cACV,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,MAAA,KAAK,CAAC,IAAI,0CAAE,KAAK,EAAC,CAAC,CAAC,GAC3D,CACpB,CAAC;AACN,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAiB,EAAE,SAAiB;;IAC/D,IAAI,QAAQ,MAAK,MAAA,KAAK,CAAC,IAAI,0CAAE,KAAK,CAAA,EAAE,CAAC;QACjC,OAAO,sBAAsB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAiB,EAAE,SAAiB,EAAE,QAAQ,GAAG,QAAQ;IACrF,MAAM,EAAC,IAAI,EAAE,QAAQ,GAAG,sBAAsB,EAAE,OAAO,GAAG,EAAE,EAAE,MAAM,EAAE,YAAY,EAAC,GAAG,KAAK,CAAC;IAC5F,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAC1B,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IAClD,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,SAAS,EAAE,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC3C,IAAI,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,KAAI,CAAC,CAAC,EAAE,CAAC;gBACtD,cAAc,GAAG,IAAI,CAAC;gBACtB,MAAM;YACV,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,CACH,2BACI,KAAC,oBAAoB,IACjB,SAAS,EAAE,wBAAwB,CAAC,SAAS,CAAC,EAC9C,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,GACxB,EACD,SAAS,IAAI,CACV,gBACI,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE;oBACzB,WAAW,EAAE,cAAc;oBAC3B,SAAS,EAAE,IAAI;iBAClB,CAAC,EACF,OAAO,EAAE,YAAY,aAEpB,QAAQ,EACT,KAAC,IAAI,IAAC,IAAI,EAAE,0BAA0B,GAAI,IACvC,CACV,IACE,CACV,CAAC;AACN,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAe;IACxC,IAAI,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAA,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAe,EAAE,SAAiB;IACxD,MAAM,EAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAC,GAAG,KAAK,CAAC;IAChD,IAAI,GAAG,GAAoB,IAAI,CAAC;IAChC,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC,CAAC;QAC/D,GAAG,GAAG,CACF,KAAC,oBAAoB,IACjB,SAAS,EAAE,wBAAwB,CAAC,SAAS,CAAC,EAC9C,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,GACxB,CACL,CAAC;IACN,CAAC;SAAM,CAAC;QACJ,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzD,CAAC;IACD,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5B,CAAC;AAED,SAAS,cAAc,CAAC,EAAC,IAAI,EAAiB;IAC1C,OAAO,yBAAO,IAAI,GAAQ,CAAC;AAC/B,CAAC;AAED,SAAS,SAAS,CAAC,KAAqE;IACpF,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,KAAK,CAAC;IAC5B,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,OAAO;YACR,OAAO,KAAC,cAAc,IAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAI,CAAC;QACvD,KAAK,QAAQ;YACT,OAAO,KAAC,cAAc,IAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAI,CAAC;IAC3D,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAChB,KAAsE,EACtE,WAA4B,sBAAsB;IAElD,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,EAAC,GAAG,sBAAsB,EAAE,GAAG,QAAQ,EAAC,EAAE,CAAC,CAAC,CAAC;IACvF,OAAO,eAAM,SAAS,EAAE,SAAS,EAAE,uBAAuB,EAAE,EAAC,MAAM,EAAC,GAAI,CAAC;AAC7E,CAAC;AAED,MAAM,gBAAgB,GAAqC,EAAE,CAAC;AAE9D,SAAS,oBAAoB,CAAC,KAAa;IACvC,IAAI,GAAG,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1D,GAAG,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,eAAM,uBAAuB,EAAE,EAAC,MAAM,EAAC,GAAI,CAAC;IAChF,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC"}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
interface FilterProps {
|
3
|
+
matchIndex: number;
|
4
|
+
matchedRows: number[];
|
5
|
+
value: string;
|
6
|
+
onUpdate: (value: string) => void;
|
7
|
+
onKeyDown?: (event: React.KeyboardEvent<HTMLInputElement>) => void;
|
8
|
+
onNextMatch?: (_event: unknown, diff?: number) => void;
|
9
|
+
onPrevMatch?: (_event: unknown, diff?: number) => void;
|
10
|
+
caseSensitive?: boolean;
|
11
|
+
onUpdateCaseSensitive: VoidFunction;
|
12
|
+
}
|
13
|
+
export declare const Filter: React.ForwardRefExoticComponent<FilterProps & React.RefAttributes<HTMLInputElement>>;
|
14
|
+
export {};
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
+
import React from 'react';
|
3
|
+
import { ActionTooltip, Button, Flex, Icon, TextInput } from '@gravity-ui/uikit';
|
4
|
+
import { block } from '../constants';
|
5
|
+
import i18n from '../i18n';
|
6
|
+
import ChevronDownIcon from '@gravity-ui/icons/svgs/chevron-down.svg';
|
7
|
+
import ChevronUpIcon from '@gravity-ui/icons/svgs/chevron-up.svg';
|
8
|
+
import FontCaseIcon from '@gravity-ui/icons/svgs/font-case.svg';
|
9
|
+
export const Filter = React.forwardRef(function Filter({ matchIndex, matchedRows, value, onUpdate, onKeyDown, onNextMatch, onPrevMatch, caseSensitive, onUpdateCaseSensitive, }, ref) {
|
10
|
+
const count = matchedRows.length;
|
11
|
+
const matchPosition = count ? 1 + (matchIndex % count) : 0;
|
12
|
+
return (_jsxs(React.Fragment, { children: [_jsx(TextInput, { ref: ref, className: block('filter'), hasClear: true, size: "m", type: "text", value: value, placeholder: i18n('description_search'), onUpdate: onUpdate, autoFocus: false, onKeyDown: onKeyDown, endContent: _jsx(ActionTooltip, { title: caseSensitive
|
13
|
+
? i18n('context_case-sensitive-search')
|
14
|
+
: i18n('context_case-sensitive-search-disabled'), children: _jsx(Button, { view: "flat-secondary", onClick: onUpdateCaseSensitive, selected: caseSensitive, children: _jsx(Icon, { data: FontCaseIcon }) }) }) }), _jsxs(Flex, { gap: 1, wrap: "nowrap", children: [_jsx(Button, { className: block('match-btn'), view: "flat-secondary", title: i18n('action_next'), onClick: onNextMatch, disabled: !count, children: _jsx(Icon, { data: ChevronDownIcon }) }), _jsx(Button, { className: block('match-btn'), view: "flat-secondary", title: i18n('action_back'), onClick: onPrevMatch, disabled: !count, children: _jsx(Icon, { data: ChevronUpIcon }) })] }), _jsxs("span", { className: block('match-counter'), title: i18n('description_matched-rows'), children: [matchPosition, " / ", count || 0] })] }));
|
15
|
+
});
|
16
|
+
//# sourceMappingURL=Filter.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Filter.js","sourceRoot":"","sources":["../../../../src/components/JsonViewer/components/Filter.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAE/E,OAAO,EAAC,KAAK,EAAC,MAAM,cAAc,CAAC;AACnC,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,OAAO,eAAe,MAAM,yCAAyC,CAAC;AACtE,OAAO,aAAa,MAAM,uCAAuC,CAAC;AAClE,OAAO,YAAY,MAAM,sCAAsC,CAAC;AAchE,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAgC,SAAS,MAAM,CACjF,EACI,UAAU,EACV,WAAW,EACX,KAAK,EACL,QAAQ,EACR,SAAS,EACT,WAAW,EACX,WAAW,EACX,aAAa,EACb,qBAAqB,GACxB,EACD,GAAG;IAEH,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC;IACjC,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,CACH,MAAC,KAAK,CAAC,QAAQ,eACX,KAAC,SAAS,IACN,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,EAC1B,QAAQ,QACR,IAAI,EAAC,GAAG,EACR,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,IAAI,CAAC,oBAAoB,CAAC,EACvC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,KAAK,EAChB,SAAS,EAAE,SAAS,EACpB,UAAU,EACN,KAAC,aAAa,IACV,KAAK,EACD,aAAa;wBACT,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC;wBACvC,CAAC,CAAC,IAAI,CAAC,wCAAwC,CAAC,YAGxD,KAAC,MAAM,IACH,IAAI,EAAC,gBAAgB,EACrB,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,EAAE,aAAa,YAEvB,KAAC,IAAI,IAAC,IAAI,EAAE,YAAY,GAAI,GACvB,GACG,GAEtB,EACF,MAAC,IAAI,IAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAC,QAAQ,aACvB,KAAC,MAAM,IACH,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,EAC7B,IAAI,EAAC,gBAAgB,EACrB,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,EAC1B,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,CAAC,KAAK,YAEhB,KAAC,IAAI,IAAC,IAAI,EAAE,eAAe,GAAI,GAC1B,EACT,KAAC,MAAM,IACH,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,EAC7B,IAAI,EAAC,gBAAgB,EACrB,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,EAC1B,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,CAAC,KAAK,YAEhB,KAAC,IAAI,IAAC,IAAI,EAAE,aAAa,GAAI,GACxB,IACN,EACP,gBAAM,SAAS,EAAE,KAAK,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,0BAA0B,CAAC,aAC3E,aAAa,SAAK,KAAK,IAAI,CAAC,IAC1B,IACM,CACpB,CAAC;AACN,CAAC,CAAC,CAAC"}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
interface FullValueDialogProps {
|
2
|
+
onClose: () => void;
|
3
|
+
length: number;
|
4
|
+
text: string;
|
5
|
+
starts: number[];
|
6
|
+
}
|
7
|
+
export declare function FullValueDialog({ onClose, text, starts, length }: FullValueDialogProps): import("react/jsx-runtime").JSX.Element;
|
8
|
+
export {};
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
+
import { Dialog, Flex } from '@gravity-ui/uikit';
|
3
|
+
import { block } from '../constants';
|
4
|
+
import i18n from '../i18n';
|
5
|
+
import { getHightLightedClassName } from '../utils';
|
6
|
+
import { MultiHighlightedText } from './HighlightedText';
|
7
|
+
export function FullValueDialog({ onClose, text, starts, length }) {
|
8
|
+
return (_jsxs(Dialog, { open: true, onClose: onClose, children: [_jsx(Dialog.Header, { caption: i18n('description_full-value') }), _jsx(Dialog.Divider, {}), _jsx(Dialog.Body, { children: _jsx(Flex, { direction: "column", gap: 2, width: "70vw", maxHeight: "80vh", children: _jsx("div", { className: block('full-value'), children: _jsx(MultiHighlightedText, { className: getHightLightedClassName(), starts: starts, text: text, length: length }) }) }) })] }));
|
9
|
+
}
|
10
|
+
//# sourceMappingURL=FullValueDialog.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"FullValueDialog.js","sourceRoot":"","sources":["../../../../src/components/JsonViewer/components/FullValueDialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,MAAM,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAC,KAAK,EAAC,MAAM,cAAc,CAAC;AACnC,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAC,wBAAwB,EAAC,MAAM,UAAU,CAAC;AAElD,OAAO,EAAC,oBAAoB,EAAC,MAAM,mBAAmB,CAAC;AASvD,MAAM,UAAU,eAAe,CAAC,EAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAuB;IACjF,OAAO,CACH,MAAC,MAAM,IAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,aAChC,KAAC,MAAM,CAAC,MAAM,IAAC,OAAO,EAAE,IAAI,CAAC,wBAAwB,CAAC,GAAI,EAC1D,KAAC,MAAM,CAAC,OAAO,KAAG,EAClB,KAAC,MAAM,CAAC,IAAI,cACR,KAAC,IAAI,IAAC,SAAS,EAAC,QAAQ,EAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM,YAC1D,cAAK,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,YAC/B,KAAC,oBAAoB,IACjB,SAAS,EAAE,wBAAwB,EAAE,EACrC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,GAChB,GACA,GACH,GACG,IACT,CACZ,CAAC;AACN,CAAC"}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import type { NoStrictEntityMods } from '@bem-react/classname';
|
2
|
+
interface Props {
|
3
|
+
className: (mods?: NoStrictEntityMods) => string;
|
4
|
+
text: string;
|
5
|
+
start?: number;
|
6
|
+
length?: number;
|
7
|
+
hasComa?: boolean;
|
8
|
+
markBegin?: boolean;
|
9
|
+
}
|
10
|
+
export default function HighlightedText({ className, text, start, length, hasComa }: Props): import("react/jsx-runtime").JSX.Element;
|
11
|
+
interface MultiProps extends Omit<Props, 'start'> {
|
12
|
+
starts: Array<number>;
|
13
|
+
}
|
14
|
+
export declare function MultiHighlightedText({ className, text, starts, length, hasComa }: MultiProps): import("react/jsx-runtime").JSX.Element;
|
15
|
+
export {};
|
@@ -0,0 +1,30 @@
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
+
import React from 'react';
|
3
|
+
export default function HighlightedText({ className, text, start, length, hasComa }) {
|
4
|
+
const comma = hasComa ? _jsx(React.Fragment, { children: ",\u00A0" }) : null;
|
5
|
+
if (length && typeof start === 'number' && start >= 0 && start < text.length) {
|
6
|
+
const begin = text.substring(0, start);
|
7
|
+
const highlighted = text.substring(start, start + length);
|
8
|
+
const end = text.substring(start + length);
|
9
|
+
return (_jsxs(React.Fragment, { children: [begin && _jsx("span", { className: className(), children: begin }), _jsx("span", { className: className({ highlighted: true }), children: highlighted }), end && _jsx("span", { className: className(), children: end }), comma] }));
|
10
|
+
}
|
11
|
+
return (_jsxs("span", { className: className(), children: [text, comma] }));
|
12
|
+
}
|
13
|
+
export function MultiHighlightedText({ className, text, starts, length, hasComa }) {
|
14
|
+
if (!length || !starts.length) {
|
15
|
+
const comma = hasComa ? _jsx(React.Fragment, { children: ",\u00A0" }) : null;
|
16
|
+
return (_jsxs("span", { className: className(), children: [text, comma] }));
|
17
|
+
}
|
18
|
+
const substrs = [];
|
19
|
+
for (let i = 0, pos = 0; i < starts.length && pos < text.length; ++i) {
|
20
|
+
const isLast = i === starts.length - 1;
|
21
|
+
const to = starts[i] + (isLast ? text.length : length);
|
22
|
+
const substr = text.substring(pos, to);
|
23
|
+
if (substr) {
|
24
|
+
substrs.push(_jsx(HighlightedText, { className: className, text: substr, start: starts[i] - pos, length: length, hasComa: isLast && hasComa }));
|
25
|
+
}
|
26
|
+
pos = to;
|
27
|
+
}
|
28
|
+
return _jsx(React.Fragment, { children: substrs });
|
29
|
+
}
|
30
|
+
//# sourceMappingURL=HighlightedText.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"HighlightedText.js","sourceRoot":"","sources":["../../../../src/components/JsonViewer/components/HighlightedText.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAQ;IACpF,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,KAAC,KAAK,CAAC,QAAQ,0BAAyB,CAAC,CAAC,CAAC,IAAI,CAAC;IAExE,IAAI,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;QAE3C,OAAO,CACH,MAAC,KAAK,CAAC,QAAQ,eACV,KAAK,IAAI,eAAM,SAAS,EAAE,SAAS,EAAE,YAAG,KAAK,GAAQ,EACtD,eAAM,SAAS,EAAE,SAAS,CAAC,EAAC,WAAW,EAAE,IAAI,EAAC,CAAC,YAAG,WAAW,GAAQ,EACpE,GAAG,IAAI,eAAM,SAAS,EAAE,SAAS,EAAE,YAAG,GAAG,GAAQ,EACjD,KAAK,IACO,CACpB,CAAC;IACN,CAAC;IAED,OAAO,CACH,gBAAM,SAAS,EAAE,SAAS,EAAE,aACvB,IAAI,EACJ,KAAK,IACH,CACV,CAAC;AACN,CAAC;AAMD,MAAM,UAAU,oBAAoB,CAAC,EAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAa;IACvF,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,KAAC,KAAK,CAAC,QAAQ,0BAAyB,CAAC,CAAC,CAAC,IAAI,CAAC;QACxE,OAAO,CACH,gBAAM,SAAS,EAAE,SAAS,EAAE,aACvB,IAAI,EACJ,KAAK,IACH,CACV,CAAC;IACN,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QACnE,MAAM,MAAM,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACvC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACvC,IAAI,MAAM,EAAE,CAAC;YACT,OAAO,CAAC,IAAI,CACR,KAAC,eAAe,IACZ,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,EACtB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,IAAI,OAAO,GAC5B,CACL,CAAC;QACN,CAAC;QACD,GAAG,GAAG,EAAE,CAAC;IACb,CAAC;IACD,OAAO,KAAC,KAAK,CAAC,QAAQ,cAAE,OAAO,GAAkB,CAAC;AACtD,CAAC"}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import type { UnipikaFlattenTreeItem } from '../unipika/flattenUnipika';
|
2
|
+
interface ToggleCollapseProps {
|
3
|
+
collapsed?: boolean;
|
4
|
+
path?: UnipikaFlattenTreeItem['path'];
|
5
|
+
onToggle: () => void;
|
6
|
+
}
|
7
|
+
export declare function ToggleCollapseButton(props: ToggleCollapseProps): import("react/jsx-runtime").JSX.Element;
|
8
|
+
export {};
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import { Button } from '@gravity-ui/uikit';
|
3
|
+
import { block } from '../constants';
|
4
|
+
export function ToggleCollapseButton(props) {
|
5
|
+
const { collapsed, onToggle, path } = props;
|
6
|
+
return (_jsx("span", { title: path, className: block('collapsed'), children: _jsx(Button, { onClick: onToggle, view: "flat-secondary", size: 'xs', children: _jsx(Button.Icon, { children: _jsx("span", { className: 'unipika', children: collapsed ? '[+]' : '[-]' }) }) }) }));
|
7
|
+
}
|
8
|
+
//# sourceMappingURL=ToggleCollapseButton.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ToggleCollapseButton.js","sourceRoot":"","sources":["../../../../src/components/JsonViewer/components/ToggleCollapseButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAC,KAAK,EAAC,MAAM,cAAc,CAAC;AASnC,MAAM,UAAU,oBAAoB,CAAC,KAA0B;IAC3D,MAAM,EAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAC,GAAG,KAAK,CAAC;IAC1C,OAAO,CACH,eAAM,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,YAC5C,KAAC,MAAM,IAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAC,gBAAgB,EAAC,IAAI,EAAE,IAAI,YACvD,KAAC,MAAM,CAAC,IAAI,cACR,eAAM,SAAS,EAAE,SAAS,YAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAQ,GACpD,GACT,GACN,CACV,CAAC;AACN,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare const block: import("@bem-react/classname").ClassNameFormatter;
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/components/JsonViewer/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,EAAE,EAAC,MAAM,gBAAgB,CAAC;AAClC,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC,iBAAiB,CAAC,CAAC"}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
{
|
2
|
+
"action_collapse-all": "Collapse all",
|
3
|
+
"action_expand-all": "Expand all",
|
4
|
+
"action_next": "Next",
|
5
|
+
"action_back": "Back",
|
6
|
+
"description_search": "Search...",
|
7
|
+
"description_matched-rows": "Matched rows",
|
8
|
+
"description_full-value": "Full value",
|
9
|
+
"context_case-sensitive-search": "Case sensitive search enadled",
|
10
|
+
"context_case-sensitive-search-disabled": "Case sensitive search disabled",
|
11
|
+
"context_items-count": [
|
12
|
+
" {{count}} item ",
|
13
|
+
" {{count}} items ",
|
14
|
+
" {{count}} items ",
|
15
|
+
" {{count}} items "
|
16
|
+
]
|
17
|
+
}
|