@gravity-ui/querieskit 1.6.0 → 1.7.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/README.md +34 -3
- package/build/cjs/components/QueryGraph/internal/QueryGraphCanvasBlock.js +3 -1
- package/build/cjs/components/QueryGraph/internal/QueryGraphCanvasBlock.js.map +1 -1
- package/build/cjs/modules/TutorialRow/TutorialRow.d.ts +3 -1
- package/build/cjs/modules/TutorialRow/TutorialRow.js +3 -1
- package/build/cjs/modules/TutorialRow/TutorialRow.js.map +1 -1
- package/build/cjs/modules/TutorialSearchRow/TutorialSearchRow.d.ts +3 -1
- package/build/cjs/modules/TutorialSearchRow/TutorialSearchRow.js +3 -1
- package/build/cjs/modules/TutorialSearchRow/TutorialSearchRow.js.map +1 -1
- package/build/cjs/widgets/TutorialsHistory/TutorialRowContent.d.ts +1 -1
- package/build/cjs/widgets/TutorialsHistory/TutorialRowContent.js +6 -3
- package/build/cjs/widgets/TutorialsHistory/TutorialRowContent.js.map +1 -1
- package/build/cjs/widgets/TutorialsHistory/TutorialsHistory.d.ts +7 -2
- package/build/cjs/widgets/TutorialsHistory/TutorialsHistory.js +13 -3
- package/build/cjs/widgets/TutorialsHistory/TutorialsHistory.js.map +1 -1
- package/build/cjs/widgets/TutorialsHistory/TutorialsHistory.stories.d.ts +5 -0
- package/build/cjs/widgets/TutorialsHistory/TutorialsHistory.stories.js +244 -1
- package/build/cjs/widgets/TutorialsHistory/TutorialsHistory.stories.js.map +1 -1
- package/build/esm/components/QueryGraph/internal/QueryGraphCanvasBlock.js +3 -1
- package/build/esm/components/QueryGraph/internal/QueryGraphCanvasBlock.js.map +1 -1
- package/build/esm/modules/TutorialRow/TutorialRow.d.ts +3 -1
- package/build/esm/modules/TutorialRow/TutorialRow.js +3 -1
- package/build/esm/modules/TutorialRow/TutorialRow.js.map +1 -1
- package/build/esm/modules/TutorialSearchRow/TutorialSearchRow.d.ts +3 -1
- package/build/esm/modules/TutorialSearchRow/TutorialSearchRow.js +3 -1
- package/build/esm/modules/TutorialSearchRow/TutorialSearchRow.js.map +1 -1
- package/build/esm/widgets/TutorialsHistory/TutorialRowContent.d.ts +1 -1
- package/build/esm/widgets/TutorialsHistory/TutorialRowContent.js +6 -3
- package/build/esm/widgets/TutorialsHistory/TutorialRowContent.js.map +1 -1
- package/build/esm/widgets/TutorialsHistory/TutorialsHistory.d.ts +7 -2
- package/build/esm/widgets/TutorialsHistory/TutorialsHistory.js +13 -3
- package/build/esm/widgets/TutorialsHistory/TutorialsHistory.js.map +1 -1
- package/build/esm/widgets/TutorialsHistory/TutorialsHistory.stories.d.ts +5 -0
- package/build/esm/widgets/TutorialsHistory/TutorialsHistory.stories.js +244 -1
- package/build/esm/widgets/TutorialsHistory/TutorialsHistory.stories.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,19 +3,46 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.default = exports.Empty = exports.Default = void 0;
|
|
6
|
+
exports.default = exports.RouterLinks = exports.Paginated = exports.LoadingMore = exports.InitialLoading = exports.Empty = exports.Default = exports.CustomRowRenderer = void 0;
|
|
7
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
7
8
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
10
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
8
11
|
require("core-js/modules/es.array.concat.js");
|
|
9
12
|
require("core-js/modules/es.array.filter.js");
|
|
13
|
+
require("core-js/modules/es.array.from.js");
|
|
10
14
|
require("core-js/modules/es.array.includes.js");
|
|
15
|
+
require("core-js/modules/es.array.map.js");
|
|
11
16
|
require("core-js/modules/es.object.to-string.js");
|
|
12
17
|
require("core-js/modules/es.string.includes.js");
|
|
18
|
+
require("core-js/modules/es.string.iterator.js");
|
|
19
|
+
require("core-js/modules/web.timers.js");
|
|
13
20
|
var _react = _interopRequireWildcard(require("react"));
|
|
21
|
+
var _uikit = require("@gravity-ui/uikit");
|
|
22
|
+
var _components = require("../../components");
|
|
14
23
|
var _TutorialsHistory = require("./TutorialsHistory");
|
|
15
24
|
var _actions = require("storybook/actions");
|
|
16
25
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
17
26
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
18
27
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
28
|
+
var _excluded = ["onClick"];
|
|
29
|
+
var BookOpenIcon = function BookOpenIcon(props) {
|
|
30
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("svg", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
|
|
31
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
|
|
32
|
+
fill: "currentColor",
|
|
33
|
+
fillRule: "evenodd",
|
|
34
|
+
d: "M7.345 2.634q.136.069.268.145L8 3l.387-.221q.133-.076.268-.145a6.7 6.7 0 0 1 6.052-.03c.486.242.793.74.793 1.283v8.938c0 .65-.526 1.175-1.175 1.175h-.04c-.187 0-.37-.05-.529-.146a4.8 4.8 0 0 0-4.61-.177l-.199.1A2.1 2.1 0 0 1 8 14h-.117a1.6 1.6 0 0 1-.726-.171l-.233-.117a4.94 4.94 0 0 0-4.748.183.74.74 0 0 1-.381.105h-.12A1.175 1.175 0 0 1 .5 12.825V3.887c0-.543.307-1.04.793-1.284a6.7 6.7 0 0 1 6.052.03m1.405 9.572V4.3l.382-.218A5.2 5.2 0 0 1 14 3.927v8.357a6.3 6.3 0 0 0-5.25-.078m-1.5.005V4.299l-.382-.218A5.2 5.2 0 0 0 2 3.927v8.365a6.44 6.44 0 0 1 5.25-.082",
|
|
35
|
+
clipRule: "evenodd"
|
|
36
|
+
})
|
|
37
|
+
}));
|
|
38
|
+
};
|
|
39
|
+
BookOpenIcon.defaultProps = {
|
|
40
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
41
|
+
width: "16",
|
|
42
|
+
height: "16",
|
|
43
|
+
fill: "none",
|
|
44
|
+
viewBox: "0 0 16 16"
|
|
45
|
+
};
|
|
19
46
|
var QUERY = "use test;\n\nSELECT\n \"test_session\" AS session_id,\n \"test_task\" AS task_id,\n SUBSTRING(\"test\", 1, 1) AS truncated_char";
|
|
20
47
|
var filterFields = [{
|
|
21
48
|
id: 'onlyMine',
|
|
@@ -57,6 +84,56 @@ var BASE_ITEMS = [{
|
|
|
57
84
|
query: QUERY,
|
|
58
85
|
height: 28
|
|
59
86
|
}];
|
|
87
|
+
var LINK_ITEMS = BASE_ITEMS.map(function (item) {
|
|
88
|
+
return 'id' in item ? (0, _objectSpread2.default)((0, _objectSpread2.default)({}, item), {}, {
|
|
89
|
+
href: "/tutorials/".concat(item.id)
|
|
90
|
+
}) : item;
|
|
91
|
+
});
|
|
92
|
+
var PAGINATION_PAGES = [Array.from({
|
|
93
|
+
length: 8
|
|
94
|
+
}, function (_, index) {
|
|
95
|
+
return {
|
|
96
|
+
id: "basics-".concat(index + 1),
|
|
97
|
+
title: "YQL basics: lesson ".concat(index + 1),
|
|
98
|
+
query: QUERY,
|
|
99
|
+
href: "/tutorials/basics-".concat(index + 1),
|
|
100
|
+
height: 28
|
|
101
|
+
};
|
|
102
|
+
}), Array.from({
|
|
103
|
+
length: 8
|
|
104
|
+
}, function (_, index) {
|
|
105
|
+
return {
|
|
106
|
+
id: "advanced-".concat(index + 1),
|
|
107
|
+
title: "Advanced YQL: lesson ".concat(index + 1),
|
|
108
|
+
query: QUERY,
|
|
109
|
+
href: "/tutorials/advanced-".concat(index + 1),
|
|
110
|
+
height: 28
|
|
111
|
+
};
|
|
112
|
+
})];
|
|
113
|
+
var CUSTOM_ROW_ITEMS = [{
|
|
114
|
+
header: 'Getting started',
|
|
115
|
+
height: 28
|
|
116
|
+
}, {
|
|
117
|
+
id: '01HZXB4K8P7Y2Q9T6M3N5R1C0A',
|
|
118
|
+
title: 'Getting started with YQL',
|
|
119
|
+
href: '/tutorials/getting-started',
|
|
120
|
+
height: 32
|
|
121
|
+
}];
|
|
122
|
+
var renderRouterLink = function renderRouterLink(_ref) {
|
|
123
|
+
var _onClick = _ref.onClick,
|
|
124
|
+
props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
125
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("a", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
|
|
126
|
+
"data-router-link": true,
|
|
127
|
+
onClick: function onClick(event) {
|
|
128
|
+
_onClick === null || _onClick === void 0 || _onClick(event);
|
|
129
|
+
if (event.defaultPrevented || event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
event.preventDefault();
|
|
133
|
+
(0, _actions.action)('routerNavigate')(props.href);
|
|
134
|
+
}
|
|
135
|
+
}));
|
|
136
|
+
};
|
|
60
137
|
var meta = {
|
|
61
138
|
title: 'Widgets/TutorialsHistory',
|
|
62
139
|
component: _TutorialsHistory.TutorialsHistory,
|
|
@@ -144,6 +221,117 @@ var EmptyStory = function EmptyStory() {
|
|
|
144
221
|
})
|
|
145
222
|
});
|
|
146
223
|
};
|
|
224
|
+
var PaginatedStory = function PaginatedStory() {
|
|
225
|
+
var _useState7 = (0, _react.useState)(PAGINATION_PAGES[0]),
|
|
226
|
+
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
227
|
+
items = _useState8[0],
|
|
228
|
+
setItems = _useState8[1];
|
|
229
|
+
var _useState9 = (0, _react.useState)(1),
|
|
230
|
+
_useState0 = (0, _slicedToArray2.default)(_useState9, 2),
|
|
231
|
+
page = _useState0[0],
|
|
232
|
+
setPage = _useState0[1];
|
|
233
|
+
var _useState1 = (0, _react.useState)(false),
|
|
234
|
+
_useState10 = (0, _slicedToArray2.default)(_useState1, 2),
|
|
235
|
+
loading = _useState10[0],
|
|
236
|
+
setLoading = _useState10[1];
|
|
237
|
+
var handleLoadMore = function handleLoadMore() {
|
|
238
|
+
var nextPage = PAGINATION_PAGES[page];
|
|
239
|
+
if (loading || !nextPage) {
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
(0, _actions.action)('onLoadMore')(page);
|
|
243
|
+
setLoading(true);
|
|
244
|
+
window.setTimeout(function () {
|
|
245
|
+
setItems(function (currentItems) {
|
|
246
|
+
return [].concat((0, _toConsumableArray2.default)(currentItems), (0, _toConsumableArray2.default)(nextPage));
|
|
247
|
+
});
|
|
248
|
+
setPage(function (currentPage) {
|
|
249
|
+
return currentPage + 1;
|
|
250
|
+
});
|
|
251
|
+
setLoading(false);
|
|
252
|
+
}, 1500);
|
|
253
|
+
};
|
|
254
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
255
|
+
style: {
|
|
256
|
+
width: 300,
|
|
257
|
+
height: 300
|
|
258
|
+
},
|
|
259
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TutorialsHistory.TutorialsHistory, {
|
|
260
|
+
title: "Paginated tutorials",
|
|
261
|
+
items: items,
|
|
262
|
+
selectedRowId: "basics-2",
|
|
263
|
+
loading: loading,
|
|
264
|
+
hasMore: page < PAGINATION_PAGES.length,
|
|
265
|
+
onLoadMore: handleLoadMore,
|
|
266
|
+
renderLink: renderRouterLink,
|
|
267
|
+
search: {
|
|
268
|
+
onUpdate: (0, _actions.action)('onSearchUpdate')
|
|
269
|
+
}
|
|
270
|
+
})
|
|
271
|
+
});
|
|
272
|
+
};
|
|
273
|
+
var RouterLinksStory = function RouterLinksStory() {
|
|
274
|
+
var _useState11 = (0, _react.useState)({
|
|
275
|
+
value: '',
|
|
276
|
+
fullSearch: false
|
|
277
|
+
}),
|
|
278
|
+
_useState12 = (0, _slicedToArray2.default)(_useState11, 2),
|
|
279
|
+
search = _useState12[0],
|
|
280
|
+
setSearch = _useState12[1];
|
|
281
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
282
|
+
style: {
|
|
283
|
+
width: 500,
|
|
284
|
+
height: 500
|
|
285
|
+
},
|
|
286
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TutorialsHistory.TutorialsHistory, {
|
|
287
|
+
title: "Router links",
|
|
288
|
+
items: LINK_ITEMS,
|
|
289
|
+
renderLink: renderRouterLink,
|
|
290
|
+
search: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, search), {}, {
|
|
291
|
+
hasClear: true,
|
|
292
|
+
onUpdate: setSearch
|
|
293
|
+
})
|
|
294
|
+
})
|
|
295
|
+
});
|
|
296
|
+
};
|
|
297
|
+
var CustomRowRendererStory = function CustomRowRendererStory() {
|
|
298
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
299
|
+
style: {
|
|
300
|
+
width: 400,
|
|
301
|
+
height: 300
|
|
302
|
+
},
|
|
303
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TutorialsHistory.TutorialsHistory, {
|
|
304
|
+
title: "Custom tutorial rows",
|
|
305
|
+
items: CUSTOM_ROW_ITEMS,
|
|
306
|
+
selectedRowId: "01HZXB4K8P7Y2Q9T6M3N5R1C0A",
|
|
307
|
+
renderLink: renderRouterLink,
|
|
308
|
+
renderRowItem: function renderRowItem(_ref2) {
|
|
309
|
+
var item = _ref2.item,
|
|
310
|
+
renderLink = _ref2.renderLink;
|
|
311
|
+
return 'header' in item ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.HistoryGroupHeader, {
|
|
312
|
+
title: item.header
|
|
313
|
+
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.RowLink, {
|
|
314
|
+
href: item.href,
|
|
315
|
+
renderLink: renderLink,
|
|
316
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_uikit.Flex, {
|
|
317
|
+
alignItems: "center",
|
|
318
|
+
gap: 2,
|
|
319
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_uikit.Icon, {
|
|
320
|
+
data: BookOpenIcon,
|
|
321
|
+
size: 16
|
|
322
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_uikit.Text, {
|
|
323
|
+
ellipsis: true,
|
|
324
|
+
children: item.title
|
|
325
|
+
})]
|
|
326
|
+
})
|
|
327
|
+
});
|
|
328
|
+
},
|
|
329
|
+
search: {
|
|
330
|
+
onUpdate: (0, _actions.action)('onSearchUpdate')
|
|
331
|
+
}
|
|
332
|
+
})
|
|
333
|
+
});
|
|
334
|
+
};
|
|
147
335
|
var Default = exports.Default = {
|
|
148
336
|
render: function render() {
|
|
149
337
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(DefaultStory, {});
|
|
@@ -154,4 +342,59 @@ var Empty = exports.Empty = {
|
|
|
154
342
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(EmptyStory, {});
|
|
155
343
|
}
|
|
156
344
|
};
|
|
345
|
+
var InitialLoading = exports.InitialLoading = {
|
|
346
|
+
args: {
|
|
347
|
+
title: 'Loading tutorials',
|
|
348
|
+
items: [],
|
|
349
|
+
loading: true,
|
|
350
|
+
search: {
|
|
351
|
+
onUpdate: (0, _actions.action)('onSearchUpdate')
|
|
352
|
+
}
|
|
353
|
+
},
|
|
354
|
+
decorators: [function (StoryComponent) {
|
|
355
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
356
|
+
style: {
|
|
357
|
+
width: 300,
|
|
358
|
+
height: 500
|
|
359
|
+
},
|
|
360
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(StoryComponent, {})
|
|
361
|
+
});
|
|
362
|
+
}]
|
|
363
|
+
};
|
|
364
|
+
var Paginated = exports.Paginated = {
|
|
365
|
+
render: function render() {
|
|
366
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(PaginatedStory, {});
|
|
367
|
+
}
|
|
368
|
+
};
|
|
369
|
+
var LoadingMore = exports.LoadingMore = {
|
|
370
|
+
args: {
|
|
371
|
+
title: 'Loading next page',
|
|
372
|
+
items: PAGINATION_PAGES[0],
|
|
373
|
+
loading: true,
|
|
374
|
+
hasMore: true,
|
|
375
|
+
onLoadMore: (0, _actions.action)('onLoadMore'),
|
|
376
|
+
search: {
|
|
377
|
+
onUpdate: (0, _actions.action)('onSearchUpdate')
|
|
378
|
+
}
|
|
379
|
+
},
|
|
380
|
+
decorators: [function (StoryComponent) {
|
|
381
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
382
|
+
style: {
|
|
383
|
+
width: 300,
|
|
384
|
+
height: 300
|
|
385
|
+
},
|
|
386
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(StoryComponent, {})
|
|
387
|
+
});
|
|
388
|
+
}]
|
|
389
|
+
};
|
|
390
|
+
var RouterLinks = exports.RouterLinks = {
|
|
391
|
+
render: function render() {
|
|
392
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(RouterLinksStory, {});
|
|
393
|
+
}
|
|
394
|
+
};
|
|
395
|
+
var CustomRowRenderer = exports.CustomRowRenderer = {
|
|
396
|
+
render: function render() {
|
|
397
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(CustomRowRendererStory, {});
|
|
398
|
+
}
|
|
399
|
+
};
|
|
157
400
|
// #sourceMappingURL=TutorialsHistory.stories.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_TutorialsHistory","_actions","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_interopRequireDefault","QUERY","filterFields","id","type","title","initialValue","items","logFilterApply","action","logFilterReset","BASE_ITEMS","query","height","meta","component","TutorialsHistory","tags","parameters","layout","_default","exports","DefaultStory","_useState","useState","concat","_useState2","_slicedToArray","setItems","_useState3","value","fullSearch","_useState4","search","setSearch","handleOnSearch","data","newItems","filter","item","_item$query","toLowerCase","searchValue","includes","_jsx","style","width","children","fields","onApply","onReset","hasClear","onUpdate","EmptyStory","_useState5","_useState6","Default","render","Empty"],"sources":["TutorialsHistory.stories.tsx"],"sourcesContent":["import React, {useState} from 'react';\nimport type {Meta, StoryObj} from '@storybook/react';\nimport {TutorialsHistory} from './TutorialsHistory';\nimport {QueryListFilterConfig, QueryListItem} from '../../types/queryList';\nimport {TutorialHistoryRow} from '../../types/tutorial';\nimport {action} from 'storybook/actions';\n\nconst QUERY = `use test;\n\nSELECT\n \"test_session\" AS session_id,\n \"test_task\" AS task_id,\n SUBSTRING(\"test\", 1, 1) AS truncated_char`;\n\nconst filterFields: QueryListFilterConfig['fields'] = [\n {id: 'onlyMine', type: 'switch', title: 'My queries only', initialValue: true},\n {id: 'range', type: 'rangeDatePicker', title: 'Period'},\n {\n id: 'dialect',\n type: 'checkboxGroup',\n title: 'Dialect',\n initialValue: [],\n items: [\n {id: 'yql', title: 'YQL'},\n {id: 'sql', title: 'SQL'},\n ],\n },\n];\n\nconst logFilterApply = action('onFilterApply');\nconst logFilterReset = action('onFilterReset');\n\nconst BASE_ITEMS: QueryListItem<TutorialHistoryRow>[] = [\n {\n id: 1,\n title: 'Getting started with YQL',\n query: QUERY,\n height: 28,\n },\n {\n id: 2,\n title: 'Working with tables',\n query: QUERY,\n height: 28,\n },\n {\n id: 3,\n title: 'Window functions',\n query: QUERY,\n height: 28,\n },\n];\n\nconst meta: Meta<typeof TutorialsHistory> = {\n title: 'Widgets/TutorialsHistory',\n component: TutorialsHistory,\n tags: ['autodocs'],\n parameters: {\n layout: 'padded',\n },\n};\n\nexport default meta;\ntype Story = StoryObj<typeof TutorialsHistory>;\n\nconst DefaultStory = () => {\n const [items, setItems] = useState([...BASE_ITEMS]);\n const [search, setSearch] = useState({value: '', fullSearch: false});\n\n const handleOnSearch = (data: {value: string; fullSearch: boolean}) => {\n setSearch(data);\n\n if (!data.value) {\n setItems(BASE_ITEMS);\n return;\n }\n\n const newItems = BASE_ITEMS.filter((item) => {\n if (!('id' in item)) return false;\n\n const title = item.title.toLowerCase();\n const query = item.query?.toLowerCase();\n const searchValue = data.value.toLowerCase();\n\n if (data.fullSearch) {\n return title.includes(searchValue) || query?.includes(searchValue);\n }\n\n return title.includes(searchValue);\n });\n setItems(newItems);\n };\n\n return (\n <div style={{width: 300, height: 500}}>\n <TutorialsHistory\n title=\"Tutorials\"\n items={items}\n filter={{\n fields: filterFields,\n onApply: logFilterApply,\n onReset: logFilterReset('reset'),\n }}\n search={{\n value: search.value,\n fullSearch: search.fullSearch,\n hasClear: true,\n onUpdate: handleOnSearch,\n }}\n />\n </div>\n );\n};\n\nconst EmptyStory = () => {\n const [search, setSearch] = useState({value: '', fullSearch: false});\n\n return (\n <div style={{width: 300, height: 500}}>\n <TutorialsHistory\n title=\"Tutorials\"\n items={[]}\n search={{\n value: search.value,\n fullSearch: search.fullSearch,\n hasClear: true,\n onUpdate: setSearch,\n }}\n />\n </div>\n );\n};\n\nexport const Default: Story = {render: () => <DefaultStory />};\nexport const Empty: Story = {render: () => <EmptyStory />};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_uikit","_components","_TutorialsHistory","_actions","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_interopRequireDefault","BookOpenIcon","props","_jsx","_objectSpread","children","fill","fillRule","d","clipRule","defaultProps","xmlns","width","height","viewBox","QUERY","filterFields","id","type","title","initialValue","items","logFilterApply","action","logFilterReset","BASE_ITEMS","query","LINK_ITEMS","map","item","href","concat","PAGINATION_PAGES","Array","from","length","_","index","CUSTOM_ROW_ITEMS","header","renderRouterLink","_ref","_onClick","onClick","_objectWithoutProperties","_excluded","event","defaultPrevented","button","metaKey","ctrlKey","shiftKey","altKey","preventDefault","meta","component","TutorialsHistory","tags","parameters","layout","_default","exports","DefaultStory","_useState","useState","_useState2","_slicedToArray","setItems","_useState3","value","fullSearch","_useState4","search","setSearch","handleOnSearch","data","newItems","filter","_item$query","toLowerCase","searchValue","includes","style","fields","onApply","onReset","hasClear","onUpdate","EmptyStory","_useState5","_useState6","PaginatedStory","_useState7","_useState8","_useState9","_useState0","page","setPage","_useState1","_useState10","loading","setLoading","handleLoadMore","nextPage","window","setTimeout","currentItems","_toConsumableArray","currentPage","selectedRowId","hasMore","onLoadMore","renderLink","RouterLinksStory","_useState11","_useState12","CustomRowRendererStory","renderRowItem","_ref2","HistoryGroupHeader","RowLink","_jsxs","Flex","alignItems","gap","Icon","size","Text","ellipsis","Default","render","Empty","InitialLoading","args","decorators","StoryComponent","Paginated","LoadingMore","RouterLinks","CustomRowRenderer"],"sources":["TutorialsHistory.stories.tsx"],"sourcesContent":["import React, {useState} from 'react';\nimport type {Meta, StoryObj} from '@storybook/react';\nimport {Flex, Icon, Text} from '@gravity-ui/uikit';\nimport BookOpenIcon from '@gravity-ui/icons/svgs/book-open.svg';\nimport {HistoryGroupHeader, RowLink} from '../../components';\nimport {TutorialsHistory} from './TutorialsHistory';\nimport type {\n QueryListFilterConfig,\n QueryListItem,\n QueryListLinkRenderer,\n} from '../../types/queryList';\nimport type {TutorialHistoryRow} from '../../types/tutorial';\nimport {action} from 'storybook/actions';\n\nconst QUERY = `use test;\n\nSELECT\n \"test_session\" AS session_id,\n \"test_task\" AS task_id,\n SUBSTRING(\"test\", 1, 1) AS truncated_char`;\n\nconst filterFields: QueryListFilterConfig['fields'] = [\n {id: 'onlyMine', type: 'switch', title: 'My queries only', initialValue: true},\n {id: 'range', type: 'rangeDatePicker', title: 'Period'},\n {\n id: 'dialect',\n type: 'checkboxGroup',\n title: 'Dialect',\n initialValue: [],\n items: [\n {id: 'yql', title: 'YQL'},\n {id: 'sql', title: 'SQL'},\n ],\n },\n];\n\nconst logFilterApply = action('onFilterApply');\nconst logFilterReset = action('onFilterReset');\n\nconst BASE_ITEMS: QueryListItem<TutorialHistoryRow>[] = [\n {\n id: 1,\n title: 'Getting started with YQL',\n query: QUERY,\n height: 28,\n },\n {\n id: 2,\n title: 'Working with tables',\n query: QUERY,\n height: 28,\n },\n {\n id: 3,\n title: 'Window functions',\n query: QUERY,\n height: 28,\n },\n];\n\nconst LINK_ITEMS = BASE_ITEMS.map((item) =>\n 'id' in item ? {...item, href: `/tutorials/${item.id}`} : item,\n);\n\nconst PAGINATION_PAGES: QueryListItem<TutorialHistoryRow>[][] = [\n Array.from({length: 8}, (_, index) => ({\n id: `basics-${index + 1}`,\n title: `YQL basics: lesson ${index + 1}`,\n query: QUERY,\n href: `/tutorials/basics-${index + 1}`,\n height: 28,\n })),\n Array.from({length: 8}, (_, index) => ({\n id: `advanced-${index + 1}`,\n title: `Advanced YQL: lesson ${index + 1}`,\n query: QUERY,\n href: `/tutorials/advanced-${index + 1}`,\n height: 28,\n })),\n];\n\nconst CUSTOM_ROW_ITEMS: QueryListItem<TutorialHistoryRow>[] = [\n {header: 'Getting started', height: 28},\n {\n id: '01HZXB4K8P7Y2Q9T6M3N5R1C0A',\n title: 'Getting started with YQL',\n href: '/tutorials/getting-started',\n height: 32,\n },\n];\n\nconst renderRouterLink: QueryListLinkRenderer = ({onClick, ...props}) => (\n <a\n {...props}\n data-router-link\n onClick={(event) => {\n onClick?.(event);\n\n if (\n event.defaultPrevented ||\n event.button !== 0 ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.altKey\n ) {\n return;\n }\n\n event.preventDefault();\n action('routerNavigate')(props.href);\n }}\n />\n);\n\nconst meta: Meta<typeof TutorialsHistory> = {\n title: 'Widgets/TutorialsHistory',\n component: TutorialsHistory,\n tags: ['autodocs'],\n parameters: {\n layout: 'padded',\n },\n};\n\nexport default meta;\ntype Story = StoryObj<typeof TutorialsHistory>;\n\nconst DefaultStory = () => {\n const [items, setItems] = useState([...BASE_ITEMS]);\n const [search, setSearch] = useState({value: '', fullSearch: false});\n\n const handleOnSearch = (data: {value: string; fullSearch: boolean}) => {\n setSearch(data);\n\n if (!data.value) {\n setItems(BASE_ITEMS);\n return;\n }\n\n const newItems = BASE_ITEMS.filter((item) => {\n if (!('id' in item)) return false;\n\n const title = item.title.toLowerCase();\n const query = item.query?.toLowerCase();\n const searchValue = data.value.toLowerCase();\n\n if (data.fullSearch) {\n return title.includes(searchValue) || query?.includes(searchValue);\n }\n\n return title.includes(searchValue);\n });\n setItems(newItems);\n };\n\n return (\n <div style={{width: 300, height: 500}}>\n <TutorialsHistory\n title=\"Tutorials\"\n items={items}\n filter={{\n fields: filterFields,\n onApply: logFilterApply,\n onReset: logFilterReset('reset'),\n }}\n search={{\n value: search.value,\n fullSearch: search.fullSearch,\n hasClear: true,\n onUpdate: handleOnSearch,\n }}\n />\n </div>\n );\n};\n\nconst EmptyStory = () => {\n const [search, setSearch] = useState({value: '', fullSearch: false});\n\n return (\n <div style={{width: 300, height: 500}}>\n <TutorialsHistory\n title=\"Tutorials\"\n items={[]}\n search={{\n value: search.value,\n fullSearch: search.fullSearch,\n hasClear: true,\n onUpdate: setSearch,\n }}\n />\n </div>\n );\n};\n\nconst PaginatedStory = () => {\n const [items, setItems] = useState<QueryListItem<TutorialHistoryRow>[]>(PAGINATION_PAGES[0]);\n const [page, setPage] = useState(1);\n const [loading, setLoading] = useState(false);\n\n const handleLoadMore = () => {\n const nextPage = PAGINATION_PAGES[page];\n\n if (loading || !nextPage) {\n return;\n }\n\n action('onLoadMore')(page);\n setLoading(true);\n\n window.setTimeout(() => {\n setItems((currentItems) => [...currentItems, ...nextPage]);\n setPage((currentPage) => currentPage + 1);\n setLoading(false);\n }, 1500);\n };\n\n return (\n <div style={{width: 300, height: 300}}>\n <TutorialsHistory\n title=\"Paginated tutorials\"\n items={items}\n selectedRowId=\"basics-2\"\n loading={loading}\n hasMore={page < PAGINATION_PAGES.length}\n onLoadMore={handleLoadMore}\n renderLink={renderRouterLink}\n search={{onUpdate: action('onSearchUpdate')}}\n />\n </div>\n );\n};\n\nconst RouterLinksStory = () => {\n const [search, setSearch] = useState({value: '', fullSearch: false});\n\n return (\n <div style={{width: 500, height: 500}}>\n <TutorialsHistory\n title=\"Router links\"\n items={LINK_ITEMS}\n renderLink={renderRouterLink}\n search={{...search, hasClear: true, onUpdate: setSearch}}\n />\n </div>\n );\n};\n\nconst CustomRowRendererStory = () => (\n <div style={{width: 400, height: 300}}>\n <TutorialsHistory\n title=\"Custom tutorial rows\"\n items={CUSTOM_ROW_ITEMS}\n selectedRowId=\"01HZXB4K8P7Y2Q9T6M3N5R1C0A\"\n renderLink={renderRouterLink}\n renderRowItem={({item, renderLink}) =>\n 'header' in item ? (\n <HistoryGroupHeader title={item.header} />\n ) : (\n <RowLink href={item.href} renderLink={renderLink}>\n <Flex alignItems=\"center\" gap={2}>\n <Icon data={BookOpenIcon} size={16} />\n <Text ellipsis>{item.title}</Text>\n </Flex>\n </RowLink>\n )\n }\n search={{onUpdate: action('onSearchUpdate')}}\n />\n </div>\n);\n\nexport const Default: Story = {render: () => <DefaultStory />};\nexport const Empty: Story = {render: () => <EmptyStory />};\nexport const InitialLoading: Story = {\n args: {\n title: 'Loading tutorials',\n items: [],\n loading: true,\n search: {onUpdate: action('onSearchUpdate')},\n },\n decorators: [\n (StoryComponent) => (\n <div style={{width: 300, height: 500}}>\n <StoryComponent />\n </div>\n ),\n ],\n};\nexport const Paginated: Story = {render: () => <PaginatedStory />};\nexport const LoadingMore: Story = {\n args: {\n title: 'Loading next page',\n items: PAGINATION_PAGES[0],\n loading: true,\n hasMore: true,\n onLoadMore: action('onLoadMore'),\n search: {onUpdate: action('onSearchUpdate')},\n },\n decorators: [\n (StoryComponent) => (\n <div style={{width: 300, height: 300}}>\n <StoryComponent />\n </div>\n ),\n ],\n};\nexport const RouterLinks: Story = {render: () => <RouterLinksStory />};\nexport const CustomRowRenderer: Story = {render: () => <CustomRowRendererStory />};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -287,11 +287,13 @@ export var QueryGraphCanvasBlock = /*#__PURE__*/function (_CanvasBlock) {
|
|
|
287
287
|
var cameraScale = this.context.graph.cameraService.getCameraScale();
|
|
288
288
|
var fontSize = getScaleAdjustedFontSize(LABEL_FONT_SIZE, cameraScale);
|
|
289
289
|
var labelGap = getScaleAdjustedFontSize(LABEL_GAP, cameraScale);
|
|
290
|
+
// Keep the available screen width stable, just like the label's font size.
|
|
291
|
+
var maxWidth = getScaleAdjustedFontSize(width * LABEL_MAX_WIDTH_RATIO, cameraScale);
|
|
290
292
|
context.fillStyle = cssValue('--g-color-text-primary', context.canvas);
|
|
291
293
|
context.textAlign = 'center';
|
|
292
294
|
context.textBaseline = 'top';
|
|
293
295
|
context.font = "400 ".concat(fontSize, "px ").concat(cssValue('--g-font-family-sans', context.canvas));
|
|
294
|
-
var fitted = fitCanvasText(context, label,
|
|
296
|
+
var fitted = fitCanvasText(context, label, maxWidth, trimStart);
|
|
295
297
|
context.fillText(fitted, x + width / 2, y + height + labelGap);
|
|
296
298
|
}
|
|
297
299
|
}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CanvasBlock","getQueryGraphProgress","fitCanvasFontSize","fitCanvasText","getQueryGraphNodeContent","getScaleAdjustedFontSize","getQueryGraphStatusIconSvg","imageCache","Map","statusTokens","waiting","running","completed","failed","aborted","statusIconTokens","resourceTokens","START_ANGLE","Math","PI","STATUS_ICON_SIZE_RATIO","STATUS_ICON_BACKGROUND_RADIUS_RATIO","PROGRESS_WIDTH_RATIO","INNER_BORDER_WIDTH_RATIO","COUNTER_MAX_WIDTH_RATIO","LABEL_MAX_WIDTH_RATIO","COUNTER_FONT_SIZE","LABEL_FONT_SIZE","LABEL_GAP","RESOURCE_ICON_SIZE","cssValue","token","element","document","getComputedStyle","documentElement","getPropertyValue","trim","coloredSvgDataUrl","svg","color","markup","split","join","concat","encodeURIComponent","getCanvasImage","onSettled","Image","undefined","key","entry","get","image","state","listeners","Set","set","onload","forEach","listener","clear","onerror","src","add","QueryGraphCanvasBlock","_CanvasBlock","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","redrawAfterImageLoad","performRender","_inherits","_createClass","value","renderMinimalisticBlock","ctx","renderQueryNode","renderSchematicView","renderDetailedView","context","_node$status","_node$label","meta","node","status","_ref","kind","_ref2","_slicedToArray","lineToken","baseToken","save","drawRunningOperation","drawNodeShape","content","_this$state","x","y","width","height","side","drawIcon","iconSvg","fallbackIconSvg","iconColorToken","canvas","fallbackIconColorToken","drawCounter","drawStatusIcon","drawLabel","label","name","restore","_this$state2","beginPath","arc","roundRect","fillStyle","fill","lineWidth","strokeStyle","stroke","progress","_this$state3","centerX","centerY","radius","progressWidth","endAngle","runningBase","runningLine","progressBase","progressLine","background","moveTo","closePath","_this$state4","maxFontSize","graph","cameraService","getCameraScale","fontFamily","textAlign","textBaseline","font","fontSize","measureText","fillText","colorToken","_this$state5","backgroundRadius","iconX","iconY","fallbackSvg","fallbackColor","_entry","_entry2","drawImage","trimStart","_this$state6","cameraScale","labelGap","fitted"],"sources":["QueryGraphCanvasBlock.ts"],"sourcesContent":["/* eslint-disable no-param-reassign -- CanvasRenderingContext2D exposes drawing state as mutable properties. */\nimport {CanvasBlock, type TBlock} from '@gravity-ui/graph';\n\nimport type {QueryGraphNode, QueryGraphNodeStatus} from '../../../types/queryGraph';\nimport {getQueryGraphProgress} from '../helpers/layout';\nimport {\n fitCanvasFontSize,\n fitCanvasText,\n getQueryGraphNodeContent,\n getScaleAdjustedFontSize,\n} from '../helpers/presentation';\nimport {getQueryGraphStatusIconSvg} from './queryGraphIcons';\n\ntype QueryGraphBlockMeta = {\n node: QueryGraphNode;\n iconSvg: string;\n fallbackIconSvg: string;\n iconColorToken: string;\n fallbackIconColorToken: string;\n};\n\nexport type QueryGraphBlock = TBlock<QueryGraphBlockMeta>;\n\ntype ImageCacheEntry = {\n image: HTMLImageElement;\n state: 'loading' | 'loaded' | 'failed';\n listeners: Set<() => void>;\n};\n\nconst imageCache = new Map<string, ImageCacheEntry>();\nconst statusTokens = {\n 'not-started': ['--g-color-line-generic', '--g-color-base-float'],\n waiting: ['--g-color-text-misc-heavy', '--g-color-base-misc-light'],\n running: ['--g-color-line-generic', '--g-color-line-generic'],\n completed: ['--g-color-text-positive-heavy', '--g-color-base-positive-light'],\n failed: ['--g-color-text-danger-heavy', '--g-color-base-danger-light'],\n aborted: ['--g-color-text-complementary', '--g-color-base-generic'],\n} as const;\nconst statusIconTokens: Partial<Record<QueryGraphNodeStatus, string>> = {\n running: '--g-color-text-info',\n completed: '--g-color-text-positive-heavy',\n failed: '--g-color-text-danger-heavy',\n aborted: '--g-color-text-complementary',\n};\nconst resourceTokens = ['--g-color-line-generic', '--g-color-base-float'] as const;\nconst START_ANGLE = -Math.PI / 2;\nconst STATUS_ICON_SIZE_RATIO = 1 / 4;\nconst STATUS_ICON_BACKGROUND_RADIUS_RATIO = 1 / 6;\nconst PROGRESS_WIDTH_RATIO = 1 / 9;\nconst INNER_BORDER_WIDTH_RATIO = 1 / 25;\nconst COUNTER_MAX_WIDTH_RATIO = 7 / 9;\nconst LABEL_MAX_WIDTH_RATIO = 2;\nconst COUNTER_FONT_SIZE = 11;\nconst LABEL_FONT_SIZE = 9;\nconst LABEL_GAP = 4;\nconst RESOURCE_ICON_SIZE = 16;\n\nfunction cssValue(token: string, element?: Element) {\n if (typeof document === 'undefined') return '';\n return getComputedStyle(element ?? document.documentElement)\n .getPropertyValue(token)\n .trim();\n}\n\nfunction coloredSvgDataUrl(svg: string, color: string) {\n const markup = svg.split('currentColor').join(color || '#000');\n return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(markup)}`;\n}\n\nfunction getCanvasImage(svg: string, color: string, onSettled: () => void) {\n if (typeof Image === 'undefined') return undefined;\n const key = `${color}\\n${svg}`;\n let entry = imageCache.get(key);\n if (!entry) {\n const image = new Image();\n entry = {image, state: 'loading', listeners: new Set()};\n imageCache.set(key, entry);\n image.onload = () => {\n if (!entry) return;\n entry.state = 'loaded';\n entry.listeners.forEach((listener) => listener());\n entry.listeners.clear();\n };\n image.onerror = () => {\n if (!entry) return;\n entry.state = 'failed';\n entry.listeners.forEach((listener) => listener());\n entry.listeners.clear();\n };\n image.src = coloredSvgDataUrl(svg, color);\n }\n if (entry.state === 'loading') entry.listeners.add(onSettled);\n return entry;\n}\n\nexport class QueryGraphCanvasBlock extends CanvasBlock<QueryGraphBlock> {\n public override renderMinimalisticBlock(ctx: CanvasRenderingContext2D) {\n this.renderQueryNode(ctx);\n }\n\n public override renderSchematicView(ctx: CanvasRenderingContext2D) {\n this.renderQueryNode(ctx);\n }\n\n public override renderDetailedView(ctx: CanvasRenderingContext2D) {\n this.renderQueryNode(ctx);\n }\n\n private readonly redrawAfterImageLoad = () => this.performRender();\n\n private renderQueryNode(context: CanvasRenderingContext2D) {\n const {meta} = this.state;\n if (!meta?.node) return;\n const {node} = meta;\n const status = node.status ?? 'not-started';\n const [lineToken, baseToken] =\n node.kind === 'operation' ? statusTokens[status] : resourceTokens;\n\n context.save();\n if (node.kind === 'operation' && status === 'running') {\n this.drawRunningOperation(context, getQueryGraphProgress(node));\n } else {\n this.drawNodeShape(context, lineToken, baseToken);\n }\n\n const content = getQueryGraphNodeContent(node);\n if (content.kind === 'icon') {\n const {x, y, width, height} = this.state;\n const side = node.kind === 'operation' ? width / 2 : RESOURCE_ICON_SIZE;\n this.drawIcon(\n context,\n meta.iconSvg,\n meta.fallbackIconSvg,\n x + (width - side) / 2,\n y + (height - side) / 2,\n side,\n cssValue(meta.iconColorToken, context.canvas),\n cssValue(meta.fallbackIconColorToken, context.canvas),\n );\n } else if (content.kind === 'counter') {\n this.drawCounter(context, content.value);\n }\n\n if (node.kind === 'operation') this.drawStatusIcon(context, status);\n this.drawLabel(context, node.label ?? node.name, node.kind !== 'operation');\n context.restore();\n }\n\n private drawNodeShape(context: CanvasRenderingContext2D, lineToken: string, baseToken: string) {\n const {x, y, width, height, meta} = this.state;\n context.beginPath();\n if (meta?.node.kind === 'operation') {\n context.arc(x + width / 2, y + height / 2, width / 2 - 1, 0, Math.PI * 2);\n } else {\n context.roundRect(x + 1, y + 1, width - 2, height - 2, 12);\n }\n context.fillStyle = cssValue(baseToken, context.canvas);\n context.fill();\n context.lineWidth = 2;\n context.strokeStyle = cssValue(lineToken, context.canvas);\n context.stroke();\n }\n\n private drawRunningOperation(context: CanvasRenderingContext2D, progress: number) {\n const {x, y, width, height} = this.state;\n const centerX = x + width / 2;\n const centerY = y + height / 2;\n const radius = width / 2;\n const progressWidth = width * PROGRESS_WIDTH_RATIO;\n const endAngle = START_ANGLE + Math.PI * 2 * progress;\n const runningBase = cssValue('--g-color-line-generic', context.canvas);\n const runningLine = cssValue('--g-color-line-generic', context.canvas);\n const progressBase = cssValue('--g-color-base-info-light', context.canvas);\n const progressLine = cssValue('--g-color-text-info', context.canvas);\n const background = cssValue('--g-color-base-background', context.canvas);\n\n context.beginPath();\n context.arc(centerX, centerY, radius - progressWidth / 2, 0, Math.PI * 2);\n context.fillStyle = runningBase;\n context.fill();\n context.lineWidth = progressWidth;\n context.strokeStyle = runningLine;\n context.stroke();\n\n if (progress > 0) {\n context.beginPath();\n context.moveTo(centerX, centerY);\n context.arc(centerX, centerY, radius - progressWidth / 2, START_ANGLE, endAngle);\n context.closePath();\n context.fillStyle = progressBase;\n context.fill();\n\n context.beginPath();\n context.arc(centerX, centerY, radius - progressWidth / 2, START_ANGLE, endAngle);\n context.lineWidth = progressWidth;\n context.strokeStyle = progressLine;\n context.stroke();\n }\n\n context.beginPath();\n context.arc(centerX, centerY, radius - progressWidth, 0, Math.PI * 2);\n context.lineWidth = width * INNER_BORDER_WIDTH_RATIO;\n context.strokeStyle = background;\n context.stroke();\n }\n\n private drawCounter(context: CanvasRenderingContext2D, value: string) {\n const {x, y, width, height} = this.state;\n const maxFontSize = getScaleAdjustedFontSize(\n COUNTER_FONT_SIZE,\n this.context.graph.cameraService.getCameraScale(),\n );\n const fontFamily = cssValue('--g-font-family-sans', context.canvas);\n context.fillStyle = cssValue('--g-color-text-primary', context.canvas);\n context.textAlign = 'center';\n context.textBaseline = 'middle';\n context.font = `500 ${maxFontSize}px ${fontFamily}`;\n const fontSize = fitCanvasFontSize(\n maxFontSize,\n context.measureText(value).width,\n width * COUNTER_MAX_WIDTH_RATIO,\n );\n context.font = `500 ${fontSize}px ${fontFamily}`;\n context.fillText(value, x + width / 2, y + height / 2);\n }\n\n private drawStatusIcon(context: CanvasRenderingContext2D, status: QueryGraphNodeStatus) {\n const iconSvg = getQueryGraphStatusIconSvg(status);\n const colorToken = statusIconTokens[status];\n if (!iconSvg || !colorToken) return;\n const {x, y, width} = this.state;\n const side = width * STATUS_ICON_SIZE_RATIO;\n const backgroundRadius = width * STATUS_ICON_BACKGROUND_RADIUS_RATIO;\n const iconX = x + width - side;\n const iconY = y;\n\n context.beginPath();\n context.arc(iconX + side / 2, iconY + side / 2, backgroundRadius, 0, Math.PI * 2);\n context.fillStyle = cssValue('--g-color-base-background', context.canvas);\n context.fill();\n this.drawIcon(\n context,\n iconSvg,\n iconSvg,\n iconX,\n iconY,\n side,\n cssValue(colorToken, context.canvas),\n cssValue(colorToken, context.canvas),\n );\n }\n\n private drawIcon(\n context: CanvasRenderingContext2D,\n svg: string,\n fallbackSvg: string,\n x: number,\n y: number,\n side: number,\n color: string,\n fallbackColor: string,\n ) {\n let entry = getCanvasImage(svg, color, this.redrawAfterImageLoad);\n if (entry?.state === 'failed' && fallbackSvg !== svg) {\n entry = getCanvasImage(fallbackSvg, fallbackColor, this.redrawAfterImageLoad);\n }\n if (entry?.state === 'loaded') context.drawImage(entry.image, x, y, side, side);\n }\n\n private drawLabel(context: CanvasRenderingContext2D, label: string, trimStart: boolean) {\n const {x, y, width, height} = this.state;\n const cameraScale = this.context.graph.cameraService.getCameraScale();\n const fontSize = getScaleAdjustedFontSize(LABEL_FONT_SIZE, cameraScale);\n const labelGap = getScaleAdjustedFontSize(LABEL_GAP, cameraScale);\n context.fillStyle = cssValue('--g-color-text-primary', context.canvas);\n context.textAlign = 'center';\n context.textBaseline = 'top';\n context.font = `400 ${fontSize}px ${cssValue('--g-font-family-sans', context.canvas)}`;\n const fitted = fitCanvasText(context, label, width * LABEL_MAX_WIDTH_RATIO, trimStart);\n context.fillText(fitted, x + width / 2, y + height + labelGap);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["CanvasBlock","getQueryGraphProgress","fitCanvasFontSize","fitCanvasText","getQueryGraphNodeContent","getScaleAdjustedFontSize","getQueryGraphStatusIconSvg","imageCache","Map","statusTokens","waiting","running","completed","failed","aborted","statusIconTokens","resourceTokens","START_ANGLE","Math","PI","STATUS_ICON_SIZE_RATIO","STATUS_ICON_BACKGROUND_RADIUS_RATIO","PROGRESS_WIDTH_RATIO","INNER_BORDER_WIDTH_RATIO","COUNTER_MAX_WIDTH_RATIO","LABEL_MAX_WIDTH_RATIO","COUNTER_FONT_SIZE","LABEL_FONT_SIZE","LABEL_GAP","RESOURCE_ICON_SIZE","cssValue","token","element","document","getComputedStyle","documentElement","getPropertyValue","trim","coloredSvgDataUrl","svg","color","markup","split","join","concat","encodeURIComponent","getCanvasImage","onSettled","Image","undefined","key","entry","get","image","state","listeners","Set","set","onload","forEach","listener","clear","onerror","src","add","QueryGraphCanvasBlock","_CanvasBlock","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","redrawAfterImageLoad","performRender","_inherits","_createClass","value","renderMinimalisticBlock","ctx","renderQueryNode","renderSchematicView","renderDetailedView","context","_node$status","_node$label","meta","node","status","_ref","kind","_ref2","_slicedToArray","lineToken","baseToken","save","drawRunningOperation","drawNodeShape","content","_this$state","x","y","width","height","side","drawIcon","iconSvg","fallbackIconSvg","iconColorToken","canvas","fallbackIconColorToken","drawCounter","drawStatusIcon","drawLabel","label","name","restore","_this$state2","beginPath","arc","roundRect","fillStyle","fill","lineWidth","strokeStyle","stroke","progress","_this$state3","centerX","centerY","radius","progressWidth","endAngle","runningBase","runningLine","progressBase","progressLine","background","moveTo","closePath","_this$state4","maxFontSize","graph","cameraService","getCameraScale","fontFamily","textAlign","textBaseline","font","fontSize","measureText","fillText","colorToken","_this$state5","backgroundRadius","iconX","iconY","fallbackSvg","fallbackColor","_entry","_entry2","drawImage","trimStart","_this$state6","cameraScale","labelGap","maxWidth","fitted"],"sources":["QueryGraphCanvasBlock.ts"],"sourcesContent":["/* eslint-disable no-param-reassign -- CanvasRenderingContext2D exposes drawing state as mutable properties. */\nimport {CanvasBlock, type TBlock} from '@gravity-ui/graph';\n\nimport type {QueryGraphNode, QueryGraphNodeStatus} from '../../../types/queryGraph';\nimport {getQueryGraphProgress} from '../helpers/layout';\nimport {\n fitCanvasFontSize,\n fitCanvasText,\n getQueryGraphNodeContent,\n getScaleAdjustedFontSize,\n} from '../helpers/presentation';\nimport {getQueryGraphStatusIconSvg} from './queryGraphIcons';\n\ntype QueryGraphBlockMeta = {\n node: QueryGraphNode;\n iconSvg: string;\n fallbackIconSvg: string;\n iconColorToken: string;\n fallbackIconColorToken: string;\n};\n\nexport type QueryGraphBlock = TBlock<QueryGraphBlockMeta>;\n\ntype ImageCacheEntry = {\n image: HTMLImageElement;\n state: 'loading' | 'loaded' | 'failed';\n listeners: Set<() => void>;\n};\n\nconst imageCache = new Map<string, ImageCacheEntry>();\nconst statusTokens = {\n 'not-started': ['--g-color-line-generic', '--g-color-base-float'],\n waiting: ['--g-color-text-misc-heavy', '--g-color-base-misc-light'],\n running: ['--g-color-line-generic', '--g-color-line-generic'],\n completed: ['--g-color-text-positive-heavy', '--g-color-base-positive-light'],\n failed: ['--g-color-text-danger-heavy', '--g-color-base-danger-light'],\n aborted: ['--g-color-text-complementary', '--g-color-base-generic'],\n} as const;\nconst statusIconTokens: Partial<Record<QueryGraphNodeStatus, string>> = {\n running: '--g-color-text-info',\n completed: '--g-color-text-positive-heavy',\n failed: '--g-color-text-danger-heavy',\n aborted: '--g-color-text-complementary',\n};\nconst resourceTokens = ['--g-color-line-generic', '--g-color-base-float'] as const;\nconst START_ANGLE = -Math.PI / 2;\nconst STATUS_ICON_SIZE_RATIO = 1 / 4;\nconst STATUS_ICON_BACKGROUND_RADIUS_RATIO = 1 / 6;\nconst PROGRESS_WIDTH_RATIO = 1 / 9;\nconst INNER_BORDER_WIDTH_RATIO = 1 / 25;\nconst COUNTER_MAX_WIDTH_RATIO = 7 / 9;\nconst LABEL_MAX_WIDTH_RATIO = 2;\nconst COUNTER_FONT_SIZE = 11;\nconst LABEL_FONT_SIZE = 9;\nconst LABEL_GAP = 4;\nconst RESOURCE_ICON_SIZE = 16;\n\nfunction cssValue(token: string, element?: Element) {\n if (typeof document === 'undefined') return '';\n return getComputedStyle(element ?? document.documentElement)\n .getPropertyValue(token)\n .trim();\n}\n\nfunction coloredSvgDataUrl(svg: string, color: string) {\n const markup = svg.split('currentColor').join(color || '#000');\n return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(markup)}`;\n}\n\nfunction getCanvasImage(svg: string, color: string, onSettled: () => void) {\n if (typeof Image === 'undefined') return undefined;\n const key = `${color}\\n${svg}`;\n let entry = imageCache.get(key);\n if (!entry) {\n const image = new Image();\n entry = {image, state: 'loading', listeners: new Set()};\n imageCache.set(key, entry);\n image.onload = () => {\n if (!entry) return;\n entry.state = 'loaded';\n entry.listeners.forEach((listener) => listener());\n entry.listeners.clear();\n };\n image.onerror = () => {\n if (!entry) return;\n entry.state = 'failed';\n entry.listeners.forEach((listener) => listener());\n entry.listeners.clear();\n };\n image.src = coloredSvgDataUrl(svg, color);\n }\n if (entry.state === 'loading') entry.listeners.add(onSettled);\n return entry;\n}\n\nexport class QueryGraphCanvasBlock extends CanvasBlock<QueryGraphBlock> {\n public override renderMinimalisticBlock(ctx: CanvasRenderingContext2D) {\n this.renderQueryNode(ctx);\n }\n\n public override renderSchematicView(ctx: CanvasRenderingContext2D) {\n this.renderQueryNode(ctx);\n }\n\n public override renderDetailedView(ctx: CanvasRenderingContext2D) {\n this.renderQueryNode(ctx);\n }\n\n private readonly redrawAfterImageLoad = () => this.performRender();\n\n private renderQueryNode(context: CanvasRenderingContext2D) {\n const {meta} = this.state;\n if (!meta?.node) return;\n const {node} = meta;\n const status = node.status ?? 'not-started';\n const [lineToken, baseToken] =\n node.kind === 'operation' ? statusTokens[status] : resourceTokens;\n\n context.save();\n if (node.kind === 'operation' && status === 'running') {\n this.drawRunningOperation(context, getQueryGraphProgress(node));\n } else {\n this.drawNodeShape(context, lineToken, baseToken);\n }\n\n const content = getQueryGraphNodeContent(node);\n if (content.kind === 'icon') {\n const {x, y, width, height} = this.state;\n const side = node.kind === 'operation' ? width / 2 : RESOURCE_ICON_SIZE;\n this.drawIcon(\n context,\n meta.iconSvg,\n meta.fallbackIconSvg,\n x + (width - side) / 2,\n y + (height - side) / 2,\n side,\n cssValue(meta.iconColorToken, context.canvas),\n cssValue(meta.fallbackIconColorToken, context.canvas),\n );\n } else if (content.kind === 'counter') {\n this.drawCounter(context, content.value);\n }\n\n if (node.kind === 'operation') this.drawStatusIcon(context, status);\n this.drawLabel(context, node.label ?? node.name, node.kind !== 'operation');\n context.restore();\n }\n\n private drawNodeShape(context: CanvasRenderingContext2D, lineToken: string, baseToken: string) {\n const {x, y, width, height, meta} = this.state;\n context.beginPath();\n if (meta?.node.kind === 'operation') {\n context.arc(x + width / 2, y + height / 2, width / 2 - 1, 0, Math.PI * 2);\n } else {\n context.roundRect(x + 1, y + 1, width - 2, height - 2, 12);\n }\n context.fillStyle = cssValue(baseToken, context.canvas);\n context.fill();\n context.lineWidth = 2;\n context.strokeStyle = cssValue(lineToken, context.canvas);\n context.stroke();\n }\n\n private drawRunningOperation(context: CanvasRenderingContext2D, progress: number) {\n const {x, y, width, height} = this.state;\n const centerX = x + width / 2;\n const centerY = y + height / 2;\n const radius = width / 2;\n const progressWidth = width * PROGRESS_WIDTH_RATIO;\n const endAngle = START_ANGLE + Math.PI * 2 * progress;\n const runningBase = cssValue('--g-color-line-generic', context.canvas);\n const runningLine = cssValue('--g-color-line-generic', context.canvas);\n const progressBase = cssValue('--g-color-base-info-light', context.canvas);\n const progressLine = cssValue('--g-color-text-info', context.canvas);\n const background = cssValue('--g-color-base-background', context.canvas);\n\n context.beginPath();\n context.arc(centerX, centerY, radius - progressWidth / 2, 0, Math.PI * 2);\n context.fillStyle = runningBase;\n context.fill();\n context.lineWidth = progressWidth;\n context.strokeStyle = runningLine;\n context.stroke();\n\n if (progress > 0) {\n context.beginPath();\n context.moveTo(centerX, centerY);\n context.arc(centerX, centerY, radius - progressWidth / 2, START_ANGLE, endAngle);\n context.closePath();\n context.fillStyle = progressBase;\n context.fill();\n\n context.beginPath();\n context.arc(centerX, centerY, radius - progressWidth / 2, START_ANGLE, endAngle);\n context.lineWidth = progressWidth;\n context.strokeStyle = progressLine;\n context.stroke();\n }\n\n context.beginPath();\n context.arc(centerX, centerY, radius - progressWidth, 0, Math.PI * 2);\n context.lineWidth = width * INNER_BORDER_WIDTH_RATIO;\n context.strokeStyle = background;\n context.stroke();\n }\n\n private drawCounter(context: CanvasRenderingContext2D, value: string) {\n const {x, y, width, height} = this.state;\n const maxFontSize = getScaleAdjustedFontSize(\n COUNTER_FONT_SIZE,\n this.context.graph.cameraService.getCameraScale(),\n );\n const fontFamily = cssValue('--g-font-family-sans', context.canvas);\n context.fillStyle = cssValue('--g-color-text-primary', context.canvas);\n context.textAlign = 'center';\n context.textBaseline = 'middle';\n context.font = `500 ${maxFontSize}px ${fontFamily}`;\n const fontSize = fitCanvasFontSize(\n maxFontSize,\n context.measureText(value).width,\n width * COUNTER_MAX_WIDTH_RATIO,\n );\n context.font = `500 ${fontSize}px ${fontFamily}`;\n context.fillText(value, x + width / 2, y + height / 2);\n }\n\n private drawStatusIcon(context: CanvasRenderingContext2D, status: QueryGraphNodeStatus) {\n const iconSvg = getQueryGraphStatusIconSvg(status);\n const colorToken = statusIconTokens[status];\n if (!iconSvg || !colorToken) return;\n const {x, y, width} = this.state;\n const side = width * STATUS_ICON_SIZE_RATIO;\n const backgroundRadius = width * STATUS_ICON_BACKGROUND_RADIUS_RATIO;\n const iconX = x + width - side;\n const iconY = y;\n\n context.beginPath();\n context.arc(iconX + side / 2, iconY + side / 2, backgroundRadius, 0, Math.PI * 2);\n context.fillStyle = cssValue('--g-color-base-background', context.canvas);\n context.fill();\n this.drawIcon(\n context,\n iconSvg,\n iconSvg,\n iconX,\n iconY,\n side,\n cssValue(colorToken, context.canvas),\n cssValue(colorToken, context.canvas),\n );\n }\n\n private drawIcon(\n context: CanvasRenderingContext2D,\n svg: string,\n fallbackSvg: string,\n x: number,\n y: number,\n side: number,\n color: string,\n fallbackColor: string,\n ) {\n let entry = getCanvasImage(svg, color, this.redrawAfterImageLoad);\n if (entry?.state === 'failed' && fallbackSvg !== svg) {\n entry = getCanvasImage(fallbackSvg, fallbackColor, this.redrawAfterImageLoad);\n }\n if (entry?.state === 'loaded') context.drawImage(entry.image, x, y, side, side);\n }\n\n private drawLabel(context: CanvasRenderingContext2D, label: string, trimStart: boolean) {\n const {x, y, width, height} = this.state;\n const cameraScale = this.context.graph.cameraService.getCameraScale();\n const fontSize = getScaleAdjustedFontSize(LABEL_FONT_SIZE, cameraScale);\n const labelGap = getScaleAdjustedFontSize(LABEL_GAP, cameraScale);\n // Keep the available screen width stable, just like the label's font size.\n const maxWidth = getScaleAdjustedFontSize(width * LABEL_MAX_WIDTH_RATIO, cameraScale);\n context.fillStyle = cssValue('--g-color-text-primary', context.canvas);\n context.textAlign = 'center';\n context.textBaseline = 'top';\n context.font = `400 ${fontSize}px ${cssValue('--g-font-family-sans', context.canvas)}`;\n const fitted = fitCanvasText(context, label, maxWidth, trimStart);\n context.fillText(fitted, x + width / 2, y + height + labelGap);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import type { QueryListLinkRenderer } from '../../types/queryList';
|
|
2
3
|
import type { TutorialHistoryRow } from '../../types/tutorial';
|
|
3
4
|
import './TutorialRow.scss';
|
|
4
5
|
export type TutorialRowProps<T extends TutorialHistoryRow = TutorialHistoryRow> = {
|
|
5
6
|
item: T;
|
|
7
|
+
renderLink?: QueryListLinkRenderer;
|
|
6
8
|
};
|
|
7
|
-
export declare const TutorialRow: <T extends TutorialHistoryRow>({ item }: TutorialRowProps<T>) => React.JSX.Element;
|
|
9
|
+
export declare const TutorialRow: <T extends TutorialHistoryRow>({ item, renderLink, }: TutorialRowProps<T>) => React.JSX.Element;
|
|
@@ -6,12 +6,14 @@ import "./TutorialRow.css";
|
|
|
6
6
|
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
7
7
|
var block = cn('qp-tutorial-row');
|
|
8
8
|
export var TutorialRow = function TutorialRow(_ref) {
|
|
9
|
-
var item = _ref.item
|
|
9
|
+
var item = _ref.item,
|
|
10
|
+
renderLink = _ref.renderLink;
|
|
10
11
|
var href = item.href,
|
|
11
12
|
id = item.id,
|
|
12
13
|
title = item.title;
|
|
13
14
|
return /*#__PURE__*/_jsx(RowLink, {
|
|
14
15
|
href: href,
|
|
16
|
+
renderLink: renderLink,
|
|
15
17
|
className: block(),
|
|
16
18
|
children: /*#__PURE__*/_jsxs(Flex, {
|
|
17
19
|
gap: 1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Flex","Text","RowLink","cn","jsxs","_jsxs","jsx","_jsx","block","TutorialRow","_ref","item","href","id","title","className","children","gap","alignItems","color","ellipsis"],"sources":["TutorialRow.tsx"],"sourcesContent":["import React from 'react';\nimport {Flex, Text} from '@gravity-ui/uikit';\nimport type {TutorialHistoryRow} from '../../types/tutorial';\nimport {RowLink} from '../../components/RowLink';\nimport cn from 'bem-cn-lite';\nimport './TutorialRow.scss';\n\nconst block = cn('qp-tutorial-row');\n\nexport type TutorialRowProps<T extends TutorialHistoryRow = TutorialHistoryRow> = {\n item: T;\n};\n\nexport const TutorialRow = <T extends TutorialHistoryRow>({item}: TutorialRowProps<T>) => {\n const {href, id, title} = item;\n\n return (\n <RowLink href={href} className={block()}>\n <Flex gap={1} alignItems=\"center\" className={block('content')}>\n <Text color=\"secondary\">{id}.</Text>\n <Text ellipsis>{title}</Text>\n </Flex>\n </RowLink>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAQC,IAAI,EAAEC,IAAI,QAAO,mBAAmB;
|
|
1
|
+
{"version":3,"names":["React","Flex","Text","RowLink","cn","jsxs","_jsxs","jsx","_jsx","block","TutorialRow","_ref","item","renderLink","href","id","title","className","children","gap","alignItems","color","ellipsis"],"sources":["TutorialRow.tsx"],"sourcesContent":["import React from 'react';\nimport {Flex, Text} from '@gravity-ui/uikit';\nimport type {QueryListLinkRenderer} from '../../types/queryList';\nimport type {TutorialHistoryRow} from '../../types/tutorial';\nimport {RowLink} from '../../components/RowLink';\nimport cn from 'bem-cn-lite';\nimport './TutorialRow.scss';\n\nconst block = cn('qp-tutorial-row');\n\nexport type TutorialRowProps<T extends TutorialHistoryRow = TutorialHistoryRow> = {\n item: T;\n renderLink?: QueryListLinkRenderer;\n};\n\nexport const TutorialRow = <T extends TutorialHistoryRow>({\n item,\n renderLink,\n}: TutorialRowProps<T>) => {\n const {href, id, title} = item;\n\n return (\n <RowLink href={href} renderLink={renderLink} className={block()}>\n <Flex gap={1} alignItems=\"center\" className={block('content')}>\n <Text color=\"secondary\">{id}.</Text>\n <Text ellipsis>{title}</Text>\n </Flex>\n </RowLink>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAQC,IAAI,EAAEC,IAAI,QAAO,mBAAmB;AAG5C,SAAQC,OAAO;AACf,OAAOC,EAAE,MAAM,aAAa;AAC5B;AAA4B,SAAAC,IAAA,IAAAC,KAAA,EAAAC,GAAA,IAAAC,IAAA;AAE5B,IAAMC,KAAK,GAAGL,EAAE,CAAC,iBAAiB,CAAC;AAOnC,OAAO,IAAMM,WAAW,GAAG,SAAdA,WAAWA,CAAAC,IAAA,EAGG;EAAA,IAFvBC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IACJC,UAAU,GAAAF,IAAA,CAAVE,UAAU;EAEV,IAAOC,IAAI,GAAeF,IAAI,CAAvBE,IAAI;IAAEC,EAAE,GAAWH,IAAI,CAAjBG,EAAE;IAAEC,KAAK,GAAIJ,IAAI,CAAbI,KAAK;EAEtB,oBACIR,IAAA,CAACL,OAAO;IAACW,IAAI,EAAEA,IAAK;IAACD,UAAU,EAAEA,UAAW;IAACI,SAAS,EAAER,KAAK,CAAC,CAAE;IAAAS,QAAA,eAC5DZ,KAAA,CAACL,IAAI;MAACkB,GAAG,EAAE,CAAE;MAACC,UAAU,EAAC,QAAQ;MAACH,SAAS,EAAER,KAAK,CAAC,SAAS,CAAE;MAAAS,QAAA,gBAC1DZ,KAAA,CAACJ,IAAI;QAACmB,KAAK,EAAC,WAAW;QAAAH,QAAA,GAAEH,EAAE,EAAC,GAAC;MAAA,CAAM,CAAC,eACpCP,IAAA,CAACN,IAAI;QAACoB,QAAQ;QAAAJ,QAAA,EAAEF;MAAK,CAAO,CAAC;IAAA,CAC3B;EAAC,CACF,CAAC;AAElB,CAAC","ignoreList":[]}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import type { QueryListLinkRenderer } from '../../types/queryList';
|
|
2
3
|
import type { TutorialHistoryRow } from '../../types/tutorial';
|
|
3
4
|
import './TutorialSearchRow.scss';
|
|
4
5
|
export type TutorialSearchRowProps<T extends TutorialHistoryRow = TutorialHistoryRow> = {
|
|
5
6
|
item: T;
|
|
7
|
+
renderLink?: QueryListLinkRenderer;
|
|
6
8
|
};
|
|
7
|
-
export declare const TutorialSearchRow: <T extends TutorialHistoryRow>({ item, }: TutorialSearchRowProps<T>) => React.JSX.Element;
|
|
9
|
+
export declare const TutorialSearchRow: <T extends TutorialHistoryRow>({ item, renderLink, }: TutorialSearchRowProps<T>) => React.JSX.Element;
|
|
@@ -7,7 +7,8 @@ import cn from 'bem-cn-lite';
|
|
|
7
7
|
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
8
8
|
var block = cn('qp-tutorial-search-row');
|
|
9
9
|
export var TutorialSearchRow = function TutorialSearchRow(_ref) {
|
|
10
|
-
var item = _ref.item
|
|
10
|
+
var item = _ref.item,
|
|
11
|
+
renderLink = _ref.renderLink;
|
|
11
12
|
var href = item.href,
|
|
12
13
|
id = item.id,
|
|
13
14
|
title = item.title,
|
|
@@ -16,6 +17,7 @@ export var TutorialSearchRow = function TutorialSearchRow(_ref) {
|
|
|
16
17
|
query: query,
|
|
17
18
|
language: MonacoLanguage.YQL,
|
|
18
19
|
href: href,
|
|
20
|
+
renderLink: renderLink,
|
|
19
21
|
className: block(),
|
|
20
22
|
header: /*#__PURE__*/_jsxs(Flex, {
|
|
21
23
|
gap: 2,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Flex","Text","MonacoLanguage","SearchRowLayout","cn","jsxs","_jsxs","jsx","_jsx","block","TutorialSearchRow","_ref","item","href","id","title","query","language","YQL","className","header","gap","alignItems","children","color","ellipsis"],"sources":["TutorialSearchRow.tsx"],"sourcesContent":["import React from 'react';\nimport {Flex, Text} from '@gravity-ui/uikit';\nimport type {TutorialHistoryRow} from '../../types/tutorial';\nimport {MonacoLanguage} from '../../components/MonacoEditor';\nimport {SearchRowLayout} from '../../components/SearchRowLayout';\nimport './TutorialSearchRow.scss';\nimport cn from 'bem-cn-lite';\n\nconst block = cn('qp-tutorial-search-row');\n\nexport type TutorialSearchRowProps<T extends TutorialHistoryRow = TutorialHistoryRow> = {\n item: T;\n};\n\nexport const TutorialSearchRow = <T extends TutorialHistoryRow>({\n item,\n}: TutorialSearchRowProps<T>) => {\n const {href, id, title, query} = item;\n\n return (\n <SearchRowLayout\n query={query}\n language={MonacoLanguage.YQL}\n href={href}\n className={block()}\n header={\n <Flex gap={2} alignItems=\"center\" className={block('header')}>\n <Text color=\"secondary\">{id}.</Text>\n <Text ellipsis>{title}</Text>\n </Flex>\n }\n />\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAQC,IAAI,EAAEC,IAAI,QAAO,mBAAmB;
|
|
1
|
+
{"version":3,"names":["React","Flex","Text","MonacoLanguage","SearchRowLayout","cn","jsxs","_jsxs","jsx","_jsx","block","TutorialSearchRow","_ref","item","renderLink","href","id","title","query","language","YQL","className","header","gap","alignItems","children","color","ellipsis"],"sources":["TutorialSearchRow.tsx"],"sourcesContent":["import React from 'react';\nimport {Flex, Text} from '@gravity-ui/uikit';\nimport type {QueryListLinkRenderer} from '../../types/queryList';\nimport type {TutorialHistoryRow} from '../../types/tutorial';\nimport {MonacoLanguage} from '../../components/MonacoEditor';\nimport {SearchRowLayout} from '../../components/SearchRowLayout';\nimport './TutorialSearchRow.scss';\nimport cn from 'bem-cn-lite';\n\nconst block = cn('qp-tutorial-search-row');\n\nexport type TutorialSearchRowProps<T extends TutorialHistoryRow = TutorialHistoryRow> = {\n item: T;\n renderLink?: QueryListLinkRenderer;\n};\n\nexport const TutorialSearchRow = <T extends TutorialHistoryRow>({\n item,\n renderLink,\n}: TutorialSearchRowProps<T>) => {\n const {href, id, title, query} = item;\n\n return (\n <SearchRowLayout\n query={query}\n language={MonacoLanguage.YQL}\n href={href}\n renderLink={renderLink}\n className={block()}\n header={\n <Flex gap={2} alignItems=\"center\" className={block('header')}>\n <Text color=\"secondary\">{id}.</Text>\n <Text ellipsis>{title}</Text>\n </Flex>\n }\n />\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAQC,IAAI,EAAEC,IAAI,QAAO,mBAAmB;AAG5C,SAAQC,cAAc;AACtB,SAAQC,eAAe;AACvB;AACA,OAAOC,EAAE,MAAM,aAAa;AAAC,SAAAC,IAAA,IAAAC,KAAA,EAAAC,GAAA,IAAAC,IAAA;AAE7B,IAAMC,KAAK,GAAGL,EAAE,CAAC,wBAAwB,CAAC;AAO1C,OAAO,IAAMM,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAAC,IAAA,EAGG;EAAA,IAF7BC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IACJC,UAAU,GAAAF,IAAA,CAAVE,UAAU;EAEV,IAAOC,IAAI,GAAsBF,IAAI,CAA9BE,IAAI;IAAEC,EAAE,GAAkBH,IAAI,CAAxBG,EAAE;IAAEC,KAAK,GAAWJ,IAAI,CAApBI,KAAK;IAAEC,KAAK,GAAIL,IAAI,CAAbK,KAAK;EAE7B,oBACIT,IAAA,CAACL,eAAe;IACZc,KAAK,EAAEA,KAAM;IACbC,QAAQ,EAAEhB,cAAc,CAACiB,GAAI;IAC7BL,IAAI,EAAEA,IAAK;IACXD,UAAU,EAAEA,UAAW;IACvBO,SAAS,EAAEX,KAAK,CAAC,CAAE;IACnBY,MAAM,eACFf,KAAA,CAACN,IAAI;MAACsB,GAAG,EAAE,CAAE;MAACC,UAAU,EAAC,QAAQ;MAACH,SAAS,EAAEX,KAAK,CAAC,QAAQ,CAAE;MAAAe,QAAA,gBACzDlB,KAAA,CAACL,IAAI;QAACwB,KAAK,EAAC,WAAW;QAAAD,QAAA,GAAET,EAAE,EAAC,GAAC;MAAA,CAAM,CAAC,eACpCP,IAAA,CAACP,IAAI;QAACyB,QAAQ;QAAAF,QAAA,EAAER;MAAK,CAAO,CAAC;IAAA,CAC3B;EACT,CACJ,CAAC;AAEV,CAAC","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { QueryListRowRenderData } from '../../types/queryList';
|
|
3
3
|
import type { TutorialHistoryRow } from '../../types/tutorial';
|
|
4
|
-
export declare const TutorialRowContent: <T extends TutorialHistoryRow>({ item, variant, }: QueryListRowRenderData<T>) => React.JSX.Element;
|
|
4
|
+
export declare const TutorialRowContent: <T extends TutorialHistoryRow>({ item, variant, renderLink, }: QueryListRowRenderData<T>) => React.JSX.Element;
|