@bundle-stats/ui 3.2.0-beta.1 → 3.2.1-beta.3
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/.babelrc.js +3 -3
- package/CHANGELOG.md +20 -4
- package/lib/assets/icons/arrow.svg +1 -0
- package/lib/assets/icons/cancel.svg +1 -0
- package/lib/assets/icons/clock.svg +1 -0
- package/lib/assets/icons/close.svg +1 -0
- package/lib/assets/icons/commit.svg +1 -0
- package/lib/assets/icons/filter.svg +1 -0
- package/lib/assets/icons/help.svg +1 -0
- package/lib/assets/icons/menu.svg +1 -0
- package/lib/{ui/icon/assets → assets/icons}/sort.svg +0 -0
- package/lib/assets/icons/warning.svg +1 -0
- package/lib/assets/icons.svg +1 -0
- package/lib/components/bundle-assets/bundle-assets.js +3 -3
- package/lib/components/bundle-assets/bundle-assets.stories.js +19 -7
- package/lib/components/bundle-assets/bundle-assets.utils.js +95 -28
- package/lib/components/bundle-assets/index.js +115 -4
- package/lib/components/bundle-modules/bundle-modules.js +3 -3
- package/lib/components/bundle-modules/bundle-modules.utils.js +152 -0
- package/lib/components/bundle-modules/index.js +135 -4
- package/lib/components/bundle-packages/bundle-packages.js +3 -3
- package/lib/components/bundle-packages/{bundle-packages.container.js → bundle-packages.utils.js} +8 -42
- package/lib/components/bundle-packages/index.js +111 -3
- package/lib/components/metrics-table/metrics-table.js +3 -7
- package/lib/components/metrics-table-search/metrics-table-search.js +2 -1
- package/lib/components/metrics-table-search/metrics-table-search.module.css +2 -1
- package/lib/hooks/rows-filter.js +28 -0
- package/lib/hooks/rows-sort.js +54 -0
- package/lib/{hocs/with-search.js → hooks/search-params.js} +15 -64
- package/lib/ui/icon/icon.js +4 -191
- package/lib/ui/sort-dropdown/sort-dropdown.js +12 -13
- package/lib/ui/sort-dropdown/sort-dropdown.stories.js +2 -2
- package/lib/utils.js +6 -3
- package/lib-esm/app/app.js +60 -70
- package/lib-esm/app/app.stories.js +50 -71
- package/lib-esm/app/header/header.js +5 -3
- package/lib-esm/assets/icons/arrow.svg +1 -0
- package/lib-esm/assets/icons/cancel.svg +1 -0
- package/lib-esm/assets/icons/clock.svg +1 -0
- package/lib-esm/assets/icons/close.svg +1 -0
- package/lib-esm/assets/icons/commit.svg +1 -0
- package/lib-esm/assets/icons/filter.svg +1 -0
- package/lib-esm/assets/icons/help.svg +1 -0
- package/lib-esm/assets/icons/menu.svg +1 -0
- package/lib-esm/{ui/icon/assets → assets/icons}/sort.svg +0 -0
- package/lib-esm/assets/icons/warning.svg +1 -0
- package/lib-esm/assets/icons.svg +1 -0
- package/lib-esm/components/asset-info/asset-info.js +21 -17
- package/lib-esm/components/asset-info/asset-info.stories.js +29 -33
- package/lib-esm/components/browsertime-table/browsertime-table.js +6 -4
- package/lib-esm/components/browsertime-table/browsertime-table.stories.js +9 -13
- package/lib-esm/components/bundle-assets/bundle-assets.constants.js +17 -15
- package/lib-esm/components/bundle-assets/bundle-assets.js +107 -97
- package/lib-esm/components/bundle-assets/bundle-assets.stories.js +58 -63
- package/lib-esm/components/bundle-assets/bundle-assets.utils.js +65 -21
- package/lib-esm/components/bundle-assets/index.js +89 -2
- package/lib-esm/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.js +49 -51
- package/lib-esm/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.stories.js +9 -13
- package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.js +14 -13
- package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.stories.js +13 -19
- package/lib-esm/components/bundle-modules/bundle-modules.constants.js +17 -15
- package/lib-esm/components/bundle-modules/bundle-modules.js +112 -110
- package/lib-esm/components/bundle-modules/bundle-modules.stories.js +46 -58
- package/lib-esm/components/bundle-modules/bundle-modules.utils.js +98 -0
- package/lib-esm/components/bundle-modules/index.js +114 -3
- package/lib-esm/components/bundle-packages/bundle-packages.constants.js +17 -15
- package/lib-esm/components/bundle-packages/bundle-packages.js +71 -69
- package/lib-esm/components/bundle-packages/bundle-packages.stories.js +34 -46
- package/lib-esm/components/bundle-packages/bundle-packages.utils.js +44 -0
- package/lib-esm/components/bundle-packages/index.js +87 -2
- package/lib-esm/components/component-link.js +10 -13
- package/lib-esm/components/delta/delta.js +8 -6
- package/lib-esm/components/delta/delta.stories.js +26 -38
- package/lib-esm/components/duplicate-packages-warning/duplicate-packages-warning.js +11 -9
- package/lib-esm/components/duplicate-packages-warning/duplicate-packages-warning.stories.js +20 -26
- package/lib-esm/components/job-header/job-header.js +14 -11
- package/lib-esm/components/job-header/job-header.stories.js +12 -18
- package/lib-esm/components/job-meta/job-meta.js +15 -18
- package/lib-esm/components/job-meta/job-meta.stories.js +10 -12
- package/lib-esm/components/job-name/job-name.js +9 -12
- package/lib-esm/components/job-name/job-name.stories.js +15 -23
- package/lib-esm/components/jobs-header/jobs-header.js +12 -12
- package/lib-esm/components/jobs-header/jobs-header.stories.js +80 -86
- package/lib-esm/components/lighthouse-table/lighthouse-table.js +6 -4
- package/lib-esm/components/lighthouse-table/lighthouse-table.stories.js +10 -14
- package/lib-esm/components/metric/metric.js +15 -19
- package/lib-esm/components/metric/metric.stories.js +36 -58
- package/lib-esm/components/metrics-table/metrics-table.js +128 -139
- package/lib-esm/components/metrics-table/metrics-table.stories.js +27 -35
- package/lib-esm/components/metrics-table-options/metrics-table-options.js +16 -19
- package/lib-esm/components/metrics-table-options/metrics-table-options.stories.js +6 -12
- package/lib-esm/components/metrics-table-search/metrics-table-search.js +17 -18
- package/lib-esm/components/metrics-table-search/metrics-table-search.module.css +2 -1
- package/lib-esm/components/metrics-table-search/metrics-table-search.stories.js +4 -9
- package/lib-esm/components/metrics-table-title/metrics-table-title.js +9 -7
- package/lib-esm/components/module-info/module-info.js +15 -13
- package/lib-esm/components/module-info/module-info.stories.js +20 -22
- package/lib-esm/components/summary/summary.js +25 -27
- package/lib-esm/components/summary/summary.stories.js +31 -46
- package/lib-esm/components/summary-item/summary-item.js +27 -28
- package/lib-esm/components/summary-item/summary-item.stories.js +40 -50
- package/lib-esm/components/total-size-type-title/total-size-type-title.js +4 -2
- package/lib-esm/constants.js +25 -30
- package/lib-esm/hooks/rows-filter.js +20 -0
- package/lib-esm/hooks/rows-sort.js +22 -0
- package/lib-esm/hooks/search-params.js +170 -0
- package/lib-esm/layout/box/box.js +12 -19
- package/lib-esm/layout/box/box.stories.js +34 -46
- package/lib-esm/layout/flex-stack/flex-stack.js +9 -12
- package/lib-esm/layout/flex-stack/flex-stack.stories.js +39 -49
- package/lib-esm/layout/footer/footer.js +11 -11
- package/lib-esm/layout/footer/footer.stories.js +7 -11
- package/lib-esm/layout/header/header.js +10 -14
- package/lib-esm/layout/header/header.stories.js +50 -44
- package/lib-esm/layout/stack/stack.js +8 -6
- package/lib-esm/layout/stack/stack.stories.js +39 -49
- package/lib-esm/layout/sub-header/sub-header.js +14 -12
- package/lib-esm/layout/sub-header/sub-header.stories.js +57 -69
- package/lib-esm/prototypes/typography.stories.js +49 -58
- package/lib-esm/query-state.js +13 -16
- package/lib-esm/stories/wrapper.js +6 -12
- package/lib-esm/ui/alert/alert.js +6 -4
- package/lib-esm/ui/alert/alert.stories.js +14 -24
- package/lib-esm/ui/container/container.js +6 -9
- package/lib-esm/ui/container/container.stories.js +15 -17
- package/lib-esm/ui/dropdown/dropdown.js +13 -11
- package/lib-esm/ui/dropdown/dropdown.stories.js +22 -26
- package/lib-esm/ui/empty-set/empty-set.js +12 -12
- package/lib-esm/ui/empty-set/empty-set.stories.js +11 -19
- package/lib-esm/ui/file-name/file-name.js +6 -4
- package/lib-esm/ui/file-name/file-name.stories.js +12 -16
- package/lib-esm/ui/filters/filters.container.js +57 -76
- package/lib-esm/ui/filters/filters.js +71 -77
- package/lib-esm/ui/filters/filters.stories.js +82 -100
- package/lib-esm/ui/filters/filters.utils.js +26 -24
- package/lib-esm/ui/filters/index.js +1 -1
- package/lib-esm/ui/horizontal-bar-chart/horizontal-bar-chart.js +68 -78
- package/lib-esm/ui/horizontal-bar-chart/horizontal-bar-chart.stories.js +67 -77
- package/lib-esm/ui/icon/icon.js +13 -202
- package/lib-esm/ui/icon/icon.stories.js +16 -24
- package/lib-esm/ui/input/input.js +7 -10
- package/lib-esm/ui/input/input.stories.js +8 -12
- package/lib-esm/ui/loader/loader.js +6 -9
- package/lib-esm/ui/loader/loader.stories.js +5 -9
- package/lib-esm/ui/logo/logo.constants.js +6 -6
- package/lib-esm/ui/logo/logo.js +15 -15
- package/lib-esm/ui/logo/logo.stories.js +14 -22
- package/lib-esm/ui/panels/panels.js +13 -23
- package/lib-esm/ui/panels/panels.stories.js +14 -16
- package/lib-esm/ui/popover/popover.js +11 -9
- package/lib-esm/ui/popover/popover.stories.js +7 -11
- package/lib-esm/ui/skeleton/skeleton.js +6 -9
- package/lib-esm/ui/skeleton/skeleton.stories.js +2 -4
- package/lib-esm/ui/sort-dropdown/sort-dropdown.js +38 -38
- package/lib-esm/ui/sort-dropdown/sort-dropdown.stories.js +14 -16
- package/lib-esm/ui/table/table.js +26 -31
- package/lib-esm/ui/table/table.stories.js +84 -102
- package/lib-esm/ui/tabs/tabs.js +13 -21
- package/lib-esm/ui/tabs/tabs.stories.js +4 -6
- package/lib-esm/ui/toolbar/toolbar.js +7 -5
- package/lib-esm/ui/toolbar/toolbar.stories.js +14 -16
- package/lib-esm/ui/tooltip/tooltip.js +13 -16
- package/lib-esm/ui/tooltip/tooltip.stories.js +8 -12
- package/lib-esm/utils.js +20 -24
- package/package.json +25 -33
- package/src/assets/icons/arrow.svg +1 -0
- package/src/assets/icons/cancel.svg +1 -0
- package/src/assets/icons/clock.svg +1 -0
- package/src/assets/icons/close.svg +1 -0
- package/src/assets/icons/commit.svg +1 -0
- package/src/assets/icons/filter.svg +1 -0
- package/src/assets/icons/help.svg +1 -0
- package/src/assets/icons/menu.svg +1 -0
- package/src/{ui/icon/assets → assets/icons}/sort.svg +0 -0
- package/src/assets/icons/warning.svg +1 -0
- package/src/assets/icons.svg +1 -0
- package/src/components/bundle-assets/bundle-assets.jsx +3 -3
- package/src/components/bundle-assets/bundle-assets.utils.js +96 -17
- package/src/components/bundle-assets/index.jsx +89 -0
- package/src/components/bundle-modules/bundle-modules.jsx +3 -3
- package/src/components/bundle-modules/bundle-modules.utils.js +101 -0
- package/src/components/bundle-modules/index.jsx +107 -0
- package/src/components/bundle-packages/bundle-packages.jsx +3 -3
- package/src/components/bundle-packages/bundle-packages.utils.js +47 -0
- package/src/components/bundle-packages/index.jsx +84 -0
- package/src/components/metrics-table/metrics-table.jsx +2 -7
- package/src/components/metrics-table-search/metrics-table-search.jsx +1 -0
- package/src/components/metrics-table-search/metrics-table-search.module.css +2 -1
- package/src/hooks/rows-filter.js +16 -0
- package/src/hooks/rows-sort.js +24 -0
- package/src/hooks/search-params.js +153 -0
- package/src/ui/icon/icon.jsx +7 -42
- package/src/ui/sort-dropdown/sort-dropdown.jsx +11 -11
- package/src/utils.jsx +5 -3
- package/lib/components/bundle-assets/bundle-assets.container.js +0 -140
- package/lib/components/bundle-modules/bundle-modules.container.js +0 -222
- package/lib/hocs/with-custom-sort.js +0 -75
- package/lib/hocs/with-filtered-items.js +0 -54
- package/lib/ui/icon/assets/arrow.svg +0 -4
- package/lib/ui/icon/assets/branch.svg +0 -3
- package/lib/ui/icon/assets/cancel.svg +0 -4
- package/lib/ui/icon/assets/clock.svg +0 -3
- package/lib/ui/icon/assets/close.svg +0 -4
- package/lib/ui/icon/assets/commit.svg +0 -3
- package/lib/ui/icon/assets/filter.svg +0 -4
- package/lib/ui/icon/assets/help.svg +0 -4
- package/lib/ui/icon/assets/job.svg +0 -3
- package/lib/ui/icon/assets/menu.svg +0 -4
- package/lib/ui/icon/assets/package.svg +0 -3
- package/lib/ui/icon/assets/pull-request.svg +0 -3
- package/lib/ui/icon/assets/repository.svg +0 -3
- package/lib/ui/icon/assets/warning.svg +0 -4
- package/lib-esm/components/bundle-assets/bundle-assets.container.js +0 -119
- package/lib-esm/components/bundle-modules/bundle-modules.container.js +0 -175
- package/lib-esm/components/bundle-packages/bundle-packages.container.js +0 -91
- package/lib-esm/hocs/with-custom-sort.js +0 -43
- package/lib-esm/hocs/with-filtered-items.js +0 -35
- package/lib-esm/hocs/with-search.js +0 -214
- package/lib-esm/ui/icon/assets/arrow.svg +0 -4
- package/lib-esm/ui/icon/assets/branch.svg +0 -3
- package/lib-esm/ui/icon/assets/cancel.svg +0 -4
- package/lib-esm/ui/icon/assets/clock.svg +0 -3
- package/lib-esm/ui/icon/assets/close.svg +0 -4
- package/lib-esm/ui/icon/assets/commit.svg +0 -3
- package/lib-esm/ui/icon/assets/filter.svg +0 -4
- package/lib-esm/ui/icon/assets/help.svg +0 -4
- package/lib-esm/ui/icon/assets/job.svg +0 -3
- package/lib-esm/ui/icon/assets/menu.svg +0 -4
- package/lib-esm/ui/icon/assets/package.svg +0 -3
- package/lib-esm/ui/icon/assets/pull-request.svg +0 -3
- package/lib-esm/ui/icon/assets/repository.svg +0 -3
- package/lib-esm/ui/icon/assets/warning.svg +0 -4
- package/src/components/bundle-assets/bundle-assets.container.js +0 -146
- package/src/components/bundle-assets/index.js +0 -4
- package/src/components/bundle-modules/bundle-modules.container.js +0 -158
- package/src/components/bundle-modules/index.js +0 -4
- package/src/components/bundle-packages/bundle-packages.container.js +0 -93
- package/src/components/bundle-packages/index.js +0 -4
- package/src/hocs/with-custom-sort.jsx +0 -35
- package/src/hocs/with-filtered-items.jsx +0 -34
- package/src/hocs/with-search.jsx +0 -184
- package/src/ui/icon/assets/arrow.svg +0 -4
- package/src/ui/icon/assets/branch.svg +0 -3
- package/src/ui/icon/assets/cancel.svg +0 -4
- package/src/ui/icon/assets/clock.svg +0 -3
- package/src/ui/icon/assets/close.svg +0 -4
- package/src/ui/icon/assets/commit.svg +0 -3
- package/src/ui/icon/assets/filter.svg +0 -4
- package/src/ui/icon/assets/help.svg +0 -4
- package/src/ui/icon/assets/job.svg +0 -3
- package/src/ui/icon/assets/menu.svg +0 -4
- package/src/ui/icon/assets/package.svg +0 -3
- package/src/ui/icon/assets/pull-request.svg +0 -3
- package/src/ui/icon/assets/repository.svg +0 -3
- package/src/ui/icon/assets/warning.svg +0 -4
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import _get from "lodash/get";
|
|
2
|
-
|
|
3
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
4
|
-
|
|
5
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
6
|
-
|
|
7
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
8
|
-
|
|
9
|
-
import { useMemo } from 'react';
|
|
10
|
-
import { compose, withProps } from 'recompose';
|
|
11
|
-
import * as webpack from '@bundle-stats/utils/lib-esm/webpack';
|
|
12
|
-
import { ASSET_ENTRY_TYPE, ASSET_FILE_TYPE, ASSET_FILTERS, getAssetEntryTypeFilters, getAssetFileTypeFilters, getFileType } from '@bundle-stats/utils';
|
|
13
|
-
import { withCustomSort } from '../../hocs/with-custom-sort';
|
|
14
|
-
import { withFilteredItems } from '../../hocs/with-filtered-items';
|
|
15
|
-
import { withSearch } from '../../hocs/with-search';
|
|
16
|
-
import { SORT_BY_NAME, SORT_BY_DELTA, SORT_BY_SIZE, SORT_BY } from './bundle-assets.constants';
|
|
17
|
-
|
|
18
|
-
var addRowAssetFlags = function addRowAssetFlags(row) {
|
|
19
|
-
var runs = row.runs;
|
|
20
|
-
var isEntry = runs.map(function (run) {
|
|
21
|
-
return run == null ? void 0 : run.isEntry;
|
|
22
|
-
}).includes(true);
|
|
23
|
-
var isInitial = runs.map(function (run) {
|
|
24
|
-
return run == null ? void 0 : run.isInitial;
|
|
25
|
-
}).includes(true);
|
|
26
|
-
var isChunk = runs.map(function (run) {
|
|
27
|
-
return run == null ? void 0 : run.isChunk;
|
|
28
|
-
}).includes(true);
|
|
29
|
-
var isAsset = !(isEntry || isInitial || isChunk);
|
|
30
|
-
return _objectSpread(_objectSpread({}, row), {}, {
|
|
31
|
-
isEntry: isEntry,
|
|
32
|
-
isInitial: isInitial,
|
|
33
|
-
isChunk: isChunk,
|
|
34
|
-
isAsset: isAsset
|
|
35
|
-
});
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
var getIsNotPredictive = function getIsNotPredictive(key, runs) {
|
|
39
|
-
return runs.reduce(function (agg, current, index) {
|
|
40
|
-
if (agg) {
|
|
41
|
-
return agg;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
if (index + 1 === runs.length) {
|
|
45
|
-
return agg;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
if (current && runs[index + 1] && current.delta !== 0 && key !== current.name && current.name === runs[index + 1].name) {
|
|
49
|
-
return true;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
return agg;
|
|
53
|
-
}, false);
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
var addRowIsNotPredictive = function addRowIsNotPredictive(row) {
|
|
57
|
-
return _objectSpread(_objectSpread({}, row), {}, {
|
|
58
|
-
isNotPredictive: getIsNotPredictive(row.key, row.runs)
|
|
59
|
-
});
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
var getRowFilter = function getRowFilter(filters) {
|
|
63
|
-
return function (item) {
|
|
64
|
-
if (filters[ASSET_FILTERS.CHANGED] && !item.changed) {
|
|
65
|
-
return false;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
if (!(filters[ASSET_ENTRY_TYPE + "." + ASSET_FILTERS.ENTRY] && item.isEntry || filters[ASSET_ENTRY_TYPE + "." + ASSET_FILTERS.INITIAL] && item.isInitial || filters[ASSET_ENTRY_TYPE + "." + ASSET_FILTERS.CHUNK] && item.isChunk || filters[ASSET_ENTRY_TYPE + "." + ASSET_FILTERS.ASSET] && item.isAsset)) {
|
|
69
|
-
return false;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
if (!filters[ASSET_FILE_TYPE + "." + getFileType(item.key)]) {
|
|
73
|
-
return false;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
return true;
|
|
77
|
-
};
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
var getCustomSort = function getCustomSort(sortId) {
|
|
81
|
-
return function (item) {
|
|
82
|
-
if (sortId === SORT_BY_NAME) {
|
|
83
|
-
return item.key;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
if (sortId === SORT_BY_DELTA) {
|
|
87
|
-
return _get(item, 'runs[0].deltaPercentage', 0);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
if (sortId === SORT_BY_SIZE) {
|
|
91
|
-
return _get(item, 'runs[0].value', 0);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
return [!item.isNotPredictive, !item.changed, !item.isInitial, !item.isEntry, !item.isChunk, item.key];
|
|
95
|
-
};
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
export var enhance = compose(withProps(function (_ref) {
|
|
99
|
-
var _objectSpread2, _objectSpread3;
|
|
100
|
-
|
|
101
|
-
var jobs = _ref.jobs;
|
|
102
|
-
var items = useMemo(function () {
|
|
103
|
-
return webpack.compareBySection.assets(jobs, [addRowAssetFlags, addRowIsNotPredictive]);
|
|
104
|
-
}, [jobs]);
|
|
105
|
-
|
|
106
|
-
var defaultFilters = _objectSpread(_objectSpread((_objectSpread2 = {}, _objectSpread2[ASSET_FILTERS.CHANGED] = (jobs == null ? void 0 : jobs.length) > 1, _objectSpread2), getAssetEntryTypeFilters(true)), getAssetFileTypeFilters(true));
|
|
107
|
-
|
|
108
|
-
var allEntriesFilters = _objectSpread(_objectSpread((_objectSpread3 = {}, _objectSpread3[ASSET_FILTERS.CHANGED] = false, _objectSpread3), getAssetEntryTypeFilters(true)), getAssetFileTypeFilters(true));
|
|
109
|
-
|
|
110
|
-
return {
|
|
111
|
-
items: items,
|
|
112
|
-
totalRowCount: items.length,
|
|
113
|
-
defaultFilters: defaultFilters,
|
|
114
|
-
allEntriesFilters: allEntriesFilters
|
|
115
|
-
};
|
|
116
|
-
}), withSearch(), withFilteredItems(getRowFilter), withCustomSort({
|
|
117
|
-
sortItems: SORT_BY,
|
|
118
|
-
getCustomSort: getCustomSort
|
|
119
|
-
}));
|
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
import _uniqBy from "lodash/uniqBy";
|
|
2
|
-
import _intersection from "lodash/intersection";
|
|
3
|
-
import _merge from "lodash/merge";
|
|
4
|
-
import _max from "lodash/max";
|
|
5
|
-
import _map from "lodash/map";
|
|
6
|
-
import _get from "lodash/get";
|
|
7
|
-
|
|
8
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
9
|
-
|
|
10
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
11
|
-
|
|
12
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
13
|
-
|
|
14
|
-
import { useMemo } from 'react';
|
|
15
|
-
import { compose, withProps } from 'recompose';
|
|
16
|
-
import * as webpack from '@bundle-stats/utils/lib-esm/webpack';
|
|
17
|
-
import { MODULE_CHUNK, MODULE_FILTERS, MODULE_FILE_TYPE, MODULE_SOURCE_TYPE, getModuleChunkFilters, getModuleSourceTypeFilters, getModuleFileTypeFilters, getModuleSourceFileType } from '@bundle-stats/utils';
|
|
18
|
-
import { withCustomSort } from '../../hocs/with-custom-sort';
|
|
19
|
-
import { withFilteredItems } from '../../hocs/with-filtered-items';
|
|
20
|
-
import { withSearch } from '../../hocs/with-search';
|
|
21
|
-
import { SORT_BY_NAME, SORT_BY_SIZE, SORT_BY_DELTA, SORT_BY } from './bundle-modules.constants';
|
|
22
|
-
|
|
23
|
-
var addRowSourceFlag = function addRowSourceFlag(row) {
|
|
24
|
-
var key = row.key;
|
|
25
|
-
var thirdParty = Boolean(key.match(webpack.MODULE_PATH_PACKAGES));
|
|
26
|
-
return _objectSpread(_objectSpread({}, row), {}, {
|
|
27
|
-
thirdParty: thirdParty
|
|
28
|
-
});
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
var getCustomSort = function getCustomSort(sortBy) {
|
|
32
|
-
return function (item) {
|
|
33
|
-
if (sortBy === SORT_BY_NAME) {
|
|
34
|
-
return item.key;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
if (sortBy === SORT_BY_SIZE) {
|
|
38
|
-
return _get(item, 'runs[0].value', 0);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
if (sortBy === SORT_BY_DELTA) {
|
|
42
|
-
return _get(item, 'runs[0].deltaPercentage', 0);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
return [!item.changed, item.key];
|
|
46
|
-
};
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
var getRowFilter = function getRowFilter(filters) {
|
|
50
|
-
return function (row) {
|
|
51
|
-
// Skip not changed rows
|
|
52
|
-
if (filters[MODULE_FILTERS.CHANGED] && !row.changed) {
|
|
53
|
-
return false;
|
|
54
|
-
} // Skip not matching source type
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if (!(filters[MODULE_SOURCE_TYPE + "." + MODULE_FILTERS.FIRST_PARTY] && row.thirdParty === false || filters[MODULE_SOURCE_TYPE + "." + MODULE_FILTERS.THIRD_PARTY] && row.thirdParty === true)) {
|
|
58
|
-
return false;
|
|
59
|
-
} // Skip not matching source file types
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
var fileType = getModuleSourceFileType(row.key);
|
|
63
|
-
|
|
64
|
-
if (!filters[MODULE_FILE_TYPE + "." + fileType]) {
|
|
65
|
-
return false;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
return true;
|
|
69
|
-
};
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
export default compose(withProps(function (props) {
|
|
73
|
-
var jobs = props.jobs;
|
|
74
|
-
|
|
75
|
-
var chunks = _uniqBy(jobs.map(function (job) {
|
|
76
|
-
var _job$meta, _job$meta$webpack;
|
|
77
|
-
|
|
78
|
-
return (job == null ? void 0 : (_job$meta = job.meta) == null ? void 0 : (_job$meta$webpack = _job$meta.webpack) == null ? void 0 : _job$meta$webpack.chunks) || [];
|
|
79
|
-
}).flat(), function (_ref) {
|
|
80
|
-
var id = _ref.id;
|
|
81
|
-
return id;
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
var chunkIds = _map(chunks, 'id');
|
|
85
|
-
|
|
86
|
-
var defaultFilters = _objectSpread(_objectSpread(_objectSpread({
|
|
87
|
-
changed: (jobs == null ? void 0 : jobs.length) > 1
|
|
88
|
-
}, getModuleSourceTypeFilters(true)), getModuleChunkFilters(chunkIds, true)), getModuleFileTypeFilters(true));
|
|
89
|
-
|
|
90
|
-
var allEntriesFilters = _objectSpread(_objectSpread(_objectSpread({
|
|
91
|
-
changed: false
|
|
92
|
-
}, getModuleSourceTypeFilters(true)), getModuleChunkFilters(chunkIds, true)), getModuleFileTypeFilters(true));
|
|
93
|
-
|
|
94
|
-
return {
|
|
95
|
-
defaultFilters: defaultFilters,
|
|
96
|
-
allEntriesFilters: allEntriesFilters,
|
|
97
|
-
chunks: chunks,
|
|
98
|
-
chunkIds: chunkIds
|
|
99
|
-
};
|
|
100
|
-
}), withSearch(), withProps(function (props) {
|
|
101
|
-
var jobs = props.jobs,
|
|
102
|
-
chunkIds = props.chunkIds,
|
|
103
|
-
filters = props.filters; // List of chunkIds with filter value set to `true`
|
|
104
|
-
|
|
105
|
-
var includedChunkIds = chunkIds.reduce(function (agg, chunkId) {
|
|
106
|
-
if (_get(filters, MODULE_CHUNK + "." + chunkId)) {
|
|
107
|
-
return [].concat(agg, [chunkId]);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
return agg;
|
|
111
|
-
}, []); // If all the filters are included, return jobs as they are
|
|
112
|
-
|
|
113
|
-
if (includedChunkIds.length === chunkIds.length) {
|
|
114
|
-
return {
|
|
115
|
-
jobs: jobs
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
var jobsWithFilteredData = jobs.map(function (job) {
|
|
120
|
-
var _job$metrics;
|
|
121
|
-
|
|
122
|
-
var _ref2 = (job == null ? void 0 : (_job$metrics = job.metrics) == null ? void 0 : _job$metrics.webpack) || {},
|
|
123
|
-
modules = _ref2.modules;
|
|
124
|
-
|
|
125
|
-
var filteredModules = Object.entries(modules).reduce(function (agg, _ref3) {
|
|
126
|
-
var moduleId = _ref3[0],
|
|
127
|
-
moduleEntry = _ref3[1];
|
|
128
|
-
|
|
129
|
-
var match = _intersection(moduleEntry.chunkIds, includedChunkIds);
|
|
130
|
-
|
|
131
|
-
if (match.length > 0) {
|
|
132
|
-
agg[moduleId] = moduleEntry; // eslint-disable-line no-param-reassign
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
return agg;
|
|
136
|
-
}, {}); // Copy job data into a new object to prevent mutations of the original data
|
|
137
|
-
|
|
138
|
-
var newJob = _merge({}, job);
|
|
139
|
-
|
|
140
|
-
newJob.metrics.webpack.modules = filteredModules;
|
|
141
|
-
return newJob;
|
|
142
|
-
});
|
|
143
|
-
return {
|
|
144
|
-
jobs: jobsWithFilteredData
|
|
145
|
-
};
|
|
146
|
-
}), withProps(function (_ref4) {
|
|
147
|
-
var jobs = _ref4.jobs;
|
|
148
|
-
|
|
149
|
-
var _useMemo = useMemo(function () {
|
|
150
|
-
return {
|
|
151
|
-
items: webpack.compareBySection.modules(jobs, [addRowSourceFlag]),
|
|
152
|
-
|
|
153
|
-
/*
|
|
154
|
-
* total amount of rows depends on the way the modules are merged before any filtering.
|
|
155
|
-
* to avoid running an expensive operation before filtering, we just show the total amount of
|
|
156
|
-
* rows to be the max count between different runs
|
|
157
|
-
*/
|
|
158
|
-
totalRowCount: _max(jobs.map(function (job) {
|
|
159
|
-
var _job$metrics2, _job$metrics2$webpack;
|
|
160
|
-
|
|
161
|
-
return Object.values((job == null ? void 0 : (_job$metrics2 = job.metrics) == null ? void 0 : (_job$metrics2$webpack = _job$metrics2.webpack) == null ? void 0 : _job$metrics2$webpack.modules) || {}).length;
|
|
162
|
-
}))
|
|
163
|
-
};
|
|
164
|
-
}, [jobs]),
|
|
165
|
-
items = _useMemo.items,
|
|
166
|
-
totalRowCount = _useMemo.totalRowCount;
|
|
167
|
-
|
|
168
|
-
return {
|
|
169
|
-
totalRowCount: totalRowCount,
|
|
170
|
-
items: items
|
|
171
|
-
};
|
|
172
|
-
}), withFilteredItems(getRowFilter), withCustomSort({
|
|
173
|
-
sortItems: SORT_BY,
|
|
174
|
-
getCustomSort: getCustomSort
|
|
175
|
-
}));
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import _uniq from "lodash/uniq";
|
|
2
|
-
import _flatten from "lodash/flatten";
|
|
3
|
-
import _get from "lodash/get";
|
|
4
|
-
|
|
5
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
6
|
-
|
|
7
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
8
|
-
|
|
9
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
10
|
-
|
|
11
|
-
import { useMemo } from 'react';
|
|
12
|
-
import { compose, withProps } from 'recompose';
|
|
13
|
-
import { PACKAGE_FILTERS } from '@bundle-stats/utils';
|
|
14
|
-
import * as webpack from '@bundle-stats/utils/lib-esm/webpack';
|
|
15
|
-
import { withCustomSort } from '../../hocs/with-custom-sort';
|
|
16
|
-
import { withFilteredItems } from '../../hocs/with-filtered-items';
|
|
17
|
-
import { withSearch } from '../../hocs/with-search';
|
|
18
|
-
import { SORT_BY_NAME, SORT_BY_DELTA, SORT_BY_SIZE, SORT_BY } from './bundle-packages.constants'; // Get a list of duplicate packages across jobs
|
|
19
|
-
|
|
20
|
-
var getDuplicatePackages = function getDuplicatePackages(jobs) {
|
|
21
|
-
var jobsDuplicatePackages = jobs.map(function (job) {
|
|
22
|
-
var _job$insights, _job$insights$webpack, _job$insights$webpack2;
|
|
23
|
-
|
|
24
|
-
var insightsData = (job == null ? void 0 : (_job$insights = job.insights) == null ? void 0 : (_job$insights$webpack = _job$insights.webpack) == null ? void 0 : (_job$insights$webpack2 = _job$insights$webpack.duplicatePackages) == null ? void 0 : _job$insights$webpack2.data) || {};
|
|
25
|
-
return Object.values(insightsData).flat();
|
|
26
|
-
});
|
|
27
|
-
return _uniq(_flatten(jobsDuplicatePackages));
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
var getRowFilter = function getRowFilter(filters) {
|
|
31
|
-
return function (item) {
|
|
32
|
-
if (filters[PACKAGE_FILTERS.CHANGED] && !item.changed) {
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
if (filters[PACKAGE_FILTERS.DUPLICATE] && !item.duplicate) {
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
return true;
|
|
41
|
-
};
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
var getCustomSort = function getCustomSort(sortId) {
|
|
45
|
-
return function (item) {
|
|
46
|
-
if (sortId === SORT_BY_NAME) {
|
|
47
|
-
return item.key;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
if (sortId === SORT_BY_DELTA) {
|
|
51
|
-
return _get(item, 'runs[0].deltaPercentage', 0);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
if (sortId === SORT_BY_SIZE) {
|
|
55
|
-
return _get(item, 'runs[0].value', 0);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
return [!item.changed, item.key];
|
|
59
|
-
};
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
var getAddRowDuplicateFlag = function getAddRowDuplicateFlag(duplicateJobs) {
|
|
63
|
-
return function (row) {
|
|
64
|
-
return _objectSpread(_objectSpread({}, row), {}, {
|
|
65
|
-
duplicate: duplicateJobs.includes(row.key)
|
|
66
|
-
});
|
|
67
|
-
};
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
export var enhance = compose(withProps(function (_ref) {
|
|
71
|
-
var _defaultFilters, _allEntriesFilters;
|
|
72
|
-
|
|
73
|
-
var jobs = _ref.jobs;
|
|
74
|
-
var items = useMemo(function () {
|
|
75
|
-
var duplicateJobs = getDuplicatePackages(jobs);
|
|
76
|
-
return webpack.compareBySection.packages(jobs, [getAddRowDuplicateFlag(duplicateJobs)]);
|
|
77
|
-
}, [jobs]);
|
|
78
|
-
var defaultFilters = (_defaultFilters = {}, _defaultFilters[PACKAGE_FILTERS.CHANGED] = (jobs == null ? void 0 : jobs.length) > 1, _defaultFilters[PACKAGE_FILTERS.DUPLICATE] = false, _defaultFilters);
|
|
79
|
-
var allEntriesFilters = (_allEntriesFilters = {}, _allEntriesFilters[PACKAGE_FILTERS.CHANGED] = false, _allEntriesFilters[PACKAGE_FILTERS.DUPLICATE] = false, _allEntriesFilters);
|
|
80
|
-
return {
|
|
81
|
-
totalRowCount: items.length,
|
|
82
|
-
items: items,
|
|
83
|
-
defaultFilters: defaultFilters,
|
|
84
|
-
allEntriesFilters: allEntriesFilters
|
|
85
|
-
};
|
|
86
|
-
}), withSearch(), withFilteredItems(getRowFilter), withCustomSort({
|
|
87
|
-
sortItems: SORT_BY,
|
|
88
|
-
getCustomSort: getCustomSort,
|
|
89
|
-
sortBy: SORT_BY_SIZE,
|
|
90
|
-
direction: SORT_BY[SORT_BY_SIZE].defaultDirection
|
|
91
|
-
}));
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import _orderBy from "lodash/orderBy";
|
|
2
|
-
|
|
3
|
-
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
4
|
-
|
|
5
|
-
import React, { useMemo, useState } from 'react';
|
|
6
|
-
import PropTypes from 'prop-types';
|
|
7
|
-
export var withCustomSort = function withCustomSort(_ref) {
|
|
8
|
-
var sortItems = _ref.sortItems,
|
|
9
|
-
getCustomSort = _ref.getCustomSort,
|
|
10
|
-
_ref$sortBy = _ref.sortBy,
|
|
11
|
-
sortBy = _ref$sortBy === void 0 ? 'size' : _ref$sortBy,
|
|
12
|
-
_ref$direction = _ref.direction,
|
|
13
|
-
direction = _ref$direction === void 0 ? 'desc' : _ref$direction;
|
|
14
|
-
return function (BaseComponent) {
|
|
15
|
-
var WithCustomSort = function WithCustomSort(props) {
|
|
16
|
-
var items = props.items;
|
|
17
|
-
|
|
18
|
-
var _useState = useState({
|
|
19
|
-
sortBy: sortBy,
|
|
20
|
-
direction: direction
|
|
21
|
-
}),
|
|
22
|
-
sort = _useState[0],
|
|
23
|
-
updateSort = _useState[1];
|
|
24
|
-
|
|
25
|
-
var orderedItems = useMemo(function () {
|
|
26
|
-
return _orderBy(items, getCustomSort(sort.sortBy), sort.direction);
|
|
27
|
-
}, [items, sort.sortBy, sort.direction]);
|
|
28
|
-
var otherProps = {
|
|
29
|
-
sort: sort,
|
|
30
|
-
updateSort: updateSort,
|
|
31
|
-
sortItems: sortItems,
|
|
32
|
-
items: orderedItems
|
|
33
|
-
};
|
|
34
|
-
return /*#__PURE__*/React.createElement(BaseComponent, _extends({}, props, otherProps));
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
WithCustomSort.propTypes = {
|
|
38
|
-
items: PropTypes.array.isRequired // eslint-disable-line react/forbid-prop-types
|
|
39
|
-
|
|
40
|
-
};
|
|
41
|
-
return WithCustomSort;
|
|
42
|
-
};
|
|
43
|
-
};
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
-
|
|
3
|
-
import React, { useMemo } from 'react';
|
|
4
|
-
import PropTypes from 'prop-types';
|
|
5
|
-
export var withFilteredItems = function withFilteredItems(getFilter) {
|
|
6
|
-
return function (BaseComponent) {
|
|
7
|
-
var WithFilteredItems = function WithFilteredItems(props) {
|
|
8
|
-
var items = props.items,
|
|
9
|
-
filters = props.filters,
|
|
10
|
-
searchPattern = props.searchPattern;
|
|
11
|
-
var filteredItems = useMemo(function () {
|
|
12
|
-
return items.filter(function (item) {
|
|
13
|
-
if (searchPattern && !searchPattern.test(item == null ? void 0 : item.key)) {
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
return getFilter(filters)(item);
|
|
18
|
-
});
|
|
19
|
-
}, [items, searchPattern, filters]);
|
|
20
|
-
var baseProps = {
|
|
21
|
-
items: filteredItems
|
|
22
|
-
};
|
|
23
|
-
return /*#__PURE__*/React.createElement(BaseComponent, _extends({}, props, baseProps));
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
WithFilteredItems.propTypes = {
|
|
27
|
-
filters: PropTypes.object.isRequired,
|
|
28
|
-
// eslint-disable-line react/forbid-prop-types
|
|
29
|
-
items: PropTypes.array.isRequired,
|
|
30
|
-
// eslint-disable-line react/forbid-prop-types
|
|
31
|
-
searchPattern: PropTypes.instanceOf(RegExp).isRequired
|
|
32
|
-
};
|
|
33
|
-
return WithFilteredItems;
|
|
34
|
-
};
|
|
35
|
-
};
|
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
import _noop from "lodash/noop";
|
|
2
|
-
import _merge from "lodash/merge";
|
|
3
|
-
import _isEqual from "lodash/isEqual";
|
|
4
|
-
|
|
5
|
-
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
6
|
-
|
|
7
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
8
|
-
|
|
9
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
10
|
-
|
|
11
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
12
|
-
|
|
13
|
-
import React, { useCallback, useEffect, useReducer } from 'react';
|
|
14
|
-
import PropTypes from 'prop-types';
|
|
15
|
-
var ACTION_SET_FILTERS = 'SET_FILTERS';
|
|
16
|
-
var ACTION_SET_SEARCH = 'SET_SEARCH';
|
|
17
|
-
var ACTION_RESET_DEFAULT = 'RESET_DEFAULT';
|
|
18
|
-
var ACTION_RESET_ALL = 'RESET_ALL';
|
|
19
|
-
var ACTION_SET = 'SET';
|
|
20
|
-
|
|
21
|
-
var getSearchPattern = function getSearchPattern(search) {
|
|
22
|
-
var searchPattern = new RegExp(/.*/);
|
|
23
|
-
|
|
24
|
-
if (!search || !search.trim()) {
|
|
25
|
-
return searchPattern;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
try {
|
|
29
|
-
searchPattern = new RegExp(search, 'i');
|
|
30
|
-
} catch (err) {
|
|
31
|
-
// noop
|
|
32
|
-
console.error(err); // eslint-disable-line no-console
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
return searchPattern;
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
var getSearchReducer = function getSearchReducer(_ref) {
|
|
39
|
-
var defaultFilters = _ref.defaultFilters,
|
|
40
|
-
allEntriesFilters = _ref.allEntriesFilters,
|
|
41
|
-
setParentState = _ref.setParentState;
|
|
42
|
-
return function (state, action) {
|
|
43
|
-
var type = action.type,
|
|
44
|
-
payload = action.payload;
|
|
45
|
-
|
|
46
|
-
switch (type) {
|
|
47
|
-
case ACTION_SET_FILTERS:
|
|
48
|
-
{
|
|
49
|
-
setParentState({
|
|
50
|
-
filters: payload,
|
|
51
|
-
search: state.search
|
|
52
|
-
});
|
|
53
|
-
return _objectSpread(_objectSpread({}, state), {}, {
|
|
54
|
-
filters: payload
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
case ACTION_SET_SEARCH:
|
|
59
|
-
{
|
|
60
|
-
setParentState({
|
|
61
|
-
filters: state.filters,
|
|
62
|
-
search: payload
|
|
63
|
-
});
|
|
64
|
-
return _objectSpread(_objectSpread({}, state), {}, {
|
|
65
|
-
search: payload,
|
|
66
|
-
searchPattern: getSearchPattern(payload)
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
case ACTION_RESET_DEFAULT:
|
|
71
|
-
{
|
|
72
|
-
setParentState({
|
|
73
|
-
filters: defaultFilters,
|
|
74
|
-
search: ''
|
|
75
|
-
});
|
|
76
|
-
return {
|
|
77
|
-
filters: defaultFilters,
|
|
78
|
-
search: '',
|
|
79
|
-
searchPattern: getSearchPattern()
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
case ACTION_RESET_ALL:
|
|
84
|
-
{
|
|
85
|
-
setParentState({
|
|
86
|
-
filters: allEntriesFilters,
|
|
87
|
-
search: ''
|
|
88
|
-
});
|
|
89
|
-
return {
|
|
90
|
-
filters: allEntriesFilters,
|
|
91
|
-
search: '',
|
|
92
|
-
searchPattern: getSearchPattern()
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
case ACTION_SET:
|
|
97
|
-
{
|
|
98
|
-
return payload;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
default:
|
|
102
|
-
return state;
|
|
103
|
-
}
|
|
104
|
-
};
|
|
105
|
-
};
|
|
106
|
-
|
|
107
|
-
export var generateState = function generateState(filters, search) {
|
|
108
|
-
return {
|
|
109
|
-
filters: filters,
|
|
110
|
-
search: search,
|
|
111
|
-
searchPattern: getSearchPattern(search)
|
|
112
|
-
};
|
|
113
|
-
};
|
|
114
|
-
export var useSearch = function useSearch(_ref2) {
|
|
115
|
-
var setParentState = _ref2.setState,
|
|
116
|
-
parentSearch = _ref2.search,
|
|
117
|
-
parentFilters = _ref2.filters,
|
|
118
|
-
defaultFilters = _ref2.defaultFilters,
|
|
119
|
-
allEntriesFilters = _ref2.allEntriesFilters;
|
|
120
|
-
// When we pass custom filters, set the other flags to true(allEntries)
|
|
121
|
-
var initialFilters = parentFilters ? _merge({}, allEntriesFilters, parentFilters) : defaultFilters;
|
|
122
|
-
|
|
123
|
-
var _useReducer = useReducer(getSearchReducer({
|
|
124
|
-
defaultFilters: defaultFilters,
|
|
125
|
-
allEntriesFilters: allEntriesFilters,
|
|
126
|
-
setParentState: setParentState
|
|
127
|
-
}), generateState(initialFilters, parentSearch)),
|
|
128
|
-
_useReducer$ = _useReducer[0],
|
|
129
|
-
search = _useReducer$.search,
|
|
130
|
-
searchPattern = _useReducer$.searchPattern,
|
|
131
|
-
filters = _useReducer$.filters,
|
|
132
|
-
dispatch = _useReducer[1]; // Update state when the custom filters/search are changing - initial load or route updates
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
useEffect(function () {
|
|
136
|
-
// Run a deep comparison to prevent circular setState triggering
|
|
137
|
-
if (parentSearch === search || _isEqual(parentFilters, filters)) {
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
dispatch({
|
|
142
|
-
type: ACTION_SET,
|
|
143
|
-
payload: generateState(initialFilters, parentSearch)
|
|
144
|
-
});
|
|
145
|
-
}, [search, filters, parentFilters, parentSearch]);
|
|
146
|
-
var handleUpdateSearch = useCallback(function (newValue) {
|
|
147
|
-
dispatch({
|
|
148
|
-
type: ACTION_SET_SEARCH,
|
|
149
|
-
payload: newValue
|
|
150
|
-
});
|
|
151
|
-
}, []);
|
|
152
|
-
var handleUpdateFilters = useCallback(function (newFilters) {
|
|
153
|
-
dispatch({
|
|
154
|
-
type: ACTION_SET_FILTERS,
|
|
155
|
-
payload: newFilters
|
|
156
|
-
});
|
|
157
|
-
}, []);
|
|
158
|
-
var handleResetFilters = useCallback(function () {
|
|
159
|
-
dispatch({
|
|
160
|
-
type: ACTION_RESET_DEFAULT
|
|
161
|
-
});
|
|
162
|
-
}, []);
|
|
163
|
-
var handleResetAllFilters = useCallback(function () {
|
|
164
|
-
dispatch({
|
|
165
|
-
type: ACTION_RESET_ALL
|
|
166
|
-
});
|
|
167
|
-
}, []);
|
|
168
|
-
return {
|
|
169
|
-
search: search,
|
|
170
|
-
updateSearch: handleUpdateSearch,
|
|
171
|
-
searchPattern: searchPattern,
|
|
172
|
-
updateFilters: handleUpdateFilters,
|
|
173
|
-
resetFilters: handleResetFilters,
|
|
174
|
-
resetAllFilters: handleResetAllFilters,
|
|
175
|
-
filters: filters,
|
|
176
|
-
hasActiveFilters: !_isEqual(allEntriesFilters, filters)
|
|
177
|
-
};
|
|
178
|
-
};
|
|
179
|
-
export var withSearch = function withSearch() {
|
|
180
|
-
return function (BaseComponent) {
|
|
181
|
-
var WithSearch = function WithSearch(props) {
|
|
182
|
-
var allEntriesFilters = props.allEntriesFilters,
|
|
183
|
-
defaultFilters = props.defaultFilters,
|
|
184
|
-
filters = props.filters,
|
|
185
|
-
search = props.search,
|
|
186
|
-
setState = props.setState;
|
|
187
|
-
var searchProps = useSearch({
|
|
188
|
-
search: search,
|
|
189
|
-
filters: filters,
|
|
190
|
-
setState: setState,
|
|
191
|
-
defaultFilters: defaultFilters,
|
|
192
|
-
allEntriesFilters: allEntriesFilters
|
|
193
|
-
});
|
|
194
|
-
return /*#__PURE__*/React.createElement(BaseComponent, _extends({}, props, searchProps));
|
|
195
|
-
};
|
|
196
|
-
|
|
197
|
-
WithSearch.defaultProps = {
|
|
198
|
-
filters: null,
|
|
199
|
-
setState: _noop,
|
|
200
|
-
search: ''
|
|
201
|
-
};
|
|
202
|
-
WithSearch.propTypes = {
|
|
203
|
-
allEntriesFilters: PropTypes.object.isRequired,
|
|
204
|
-
// eslint-disable-line react/forbid-prop-types
|
|
205
|
-
defaultFilters: PropTypes.object.isRequired,
|
|
206
|
-
// eslint-disable-line react/forbid-prop-types
|
|
207
|
-
filters: PropTypes.object,
|
|
208
|
-
// eslint-disable-line react/forbid-prop-types
|
|
209
|
-
search: PropTypes.string,
|
|
210
|
-
setState: PropTypes.func
|
|
211
|
-
};
|
|
212
|
-
return WithSearch;
|
|
213
|
-
};
|
|
214
|
-
};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
<svg viewBox="0 0 640 1024" xmlns="http://www.w3.org/2000/svg" fill="currentColor">
|
|
2
|
-
<path d="M512 192c-70.625 0-128 57.344-128 128 0 47.219 25.875 88.062 64 110.281V448s0 128-128 128c-53.062 0-94.656 11.375-128 28.812V302.281c38.156-22.219 64-63.062 64-110.281 0-70.656-57.344-128-128-128S0 121.344 0 192c0 47.219 25.844 88.062 64 110.281V721.75C25.844 743.938 0 784.75 0 832c0 70.625 57.344 128 128 128s128-57.375 128-128c0-33.5-13.188-63.75-34.25-86.625C240.375 722.5 270.656 704 320 704c254 0 256-256 256-256v-17.719c38.125-22.219 64-63.062 64-110.281 0-70.656-57.375-128-128-128zm-384-64c35.406 0 64 28.594 64 64s-28.594 64-64 64-64-28.594-64-64 28.594-64 64-64zm0 768c-35.406 0-64-28.625-64-64 0-35.312 28.594-64 64-64s64 28.688 64 64c0 35.375-28.594 64-64 64zm384-512c-35.375 0-64-28.594-64-64s28.625-64 64-64 64 28.594 64 64-28.625 64-64 64z"/>
|
|
3
|
-
</svg>
|