creevey 0.9.0-beta.13 → 0.9.0-beta.14
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/.yarn/install-state.gz +0 -0
- package/.yarnrc.yml +1 -0
- package/lib/cjs/cli.js +1 -0
- package/lib/cjs/client/addon/Manager.js +151 -223
- package/lib/cjs/client/addon/components/Addon.js +2 -9
- package/lib/cjs/client/addon/components/Icons.js +1 -7
- package/lib/cjs/client/addon/components/Panel.js +5 -18
- package/lib/cjs/client/addon/components/TestSelect.js +12 -25
- package/lib/cjs/client/addon/components/Tools.js +17 -28
- package/lib/cjs/client/addon/decorator.js +1 -4
- package/lib/cjs/client/addon/index.js +0 -4
- package/lib/cjs/client/addon/preset.js +3 -12
- package/lib/cjs/client/addon/preview.js +1 -4
- package/lib/cjs/client/addon/readyForCapture.js +1 -4
- package/lib/cjs/client/addon/register.js +11 -26
- package/lib/cjs/client/addon/utils.js +1 -9
- package/lib/cjs/client/addon/withCreevey.js +55 -134
- package/lib/cjs/client/shared/components/ImagesView/BlendView.js +5 -17
- package/lib/cjs/client/shared/components/ImagesView/ImagesView.js +8 -24
- package/lib/cjs/client/shared/components/ImagesView/SideBySideView.js +7 -23
- package/lib/cjs/client/shared/components/ImagesView/SlideView.js +7 -22
- package/lib/cjs/client/shared/components/ImagesView/SwapView.js +5 -17
- package/lib/cjs/client/shared/components/ImagesView/index.js +0 -5
- package/lib/cjs/client/shared/components/PageFooter/PageFooter.js +1 -8
- package/lib/cjs/client/shared/components/PageFooter/Paging.js +2 -19
- package/lib/cjs/client/shared/components/PageHeader/ImagePreview.js +21 -17
- package/lib/cjs/client/shared/components/PageHeader/PageHeader.js +5 -24
- package/lib/cjs/client/shared/components/ResultsPage.js +9 -37
- package/lib/cjs/client/shared/creeveyClientApi.js +3 -13
- package/lib/cjs/client/shared/helpers.js +21 -75
- package/lib/cjs/client/shared/viewMode.js +2 -6
- package/lib/cjs/client/web/192.js +1 -0
- package/lib/cjs/client/web/632.js +43 -0
- package/lib/cjs/client/web/794.js +1 -0
- package/lib/cjs/client/web/main.js +78 -1
- package/lib/cjs/client/web/main.js.LICENSE.txt +0 -15
- package/lib/cjs/creevey.js +5 -21
- package/lib/cjs/index.js +0 -15
- package/lib/cjs/server/config.js +13 -33
- package/lib/cjs/server/docker.js +5 -27
- package/lib/cjs/server/index.js +8 -33
- package/lib/cjs/server/logger.js +5 -19
- package/lib/cjs/server/master/api.js +1 -14
- package/lib/cjs/server/master/index.js +15 -46
- package/lib/cjs/server/master/master.js +6 -21
- package/lib/cjs/server/master/pool.js +2 -37
- package/lib/cjs/server/master/runner.js +15 -42
- package/lib/cjs/server/master/server.js +5 -27
- package/lib/cjs/server/messages.js +7 -53
- package/lib/cjs/server/selenium/browser.js +51 -136
- package/lib/cjs/server/selenium/index.js +0 -4
- package/lib/cjs/server/selenium/selenoid.js +7 -33
- package/lib/cjs/server/stories.js +25 -30
- package/lib/cjs/server/storybook/providers/browser.js +5 -18
- package/lib/cjs/server/storybook/providers/hybrid.js +9 -29
- package/lib/cjs/server/testsFiles/parser.js +3 -19
- package/lib/cjs/server/testsFiles/register.js +7 -9
- package/lib/cjs/server/update.js +3 -20
- package/lib/cjs/server/utils.js +9 -41
- package/lib/cjs/server/worker/chai-image.js +1 -27
- package/lib/cjs/server/worker/helpers.js +2 -12
- package/lib/cjs/server/worker/index.js +1 -3
- package/lib/cjs/server/worker/reporter.js +8 -24
- package/lib/cjs/server/worker/worker.js +5 -49
- package/lib/cjs/shared/index.js +22 -36
- package/lib/cjs/shared/serializeRegExp.js +0 -8
- package/lib/cjs/types.js +4 -14
- package/lib/esm/cli.js +1 -1
- package/lib/esm/client/addon/Manager.js +151 -214
- package/lib/esm/client/addon/components/Panel.js +4 -6
- package/lib/esm/client/addon/components/TestSelect.js +11 -17
- package/lib/esm/client/addon/components/Tools.js +15 -14
- package/lib/esm/client/addon/preset.js +2 -8
- package/lib/esm/client/addon/readyForCapture.js +1 -3
- package/lib/esm/client/addon/register.js +6 -8
- package/lib/esm/client/addon/utils.js +0 -5
- package/lib/esm/client/addon/withCreevey.js +54 -116
- package/lib/esm/client/shared/components/ImagesView/BlendView.js +1 -1
- package/lib/esm/client/shared/components/ImagesView/ImagesView.js +6 -8
- package/lib/esm/client/shared/components/ImagesView/SideBySideView.js +3 -4
- package/lib/esm/client/shared/components/ImagesView/SlideView.js +3 -3
- package/lib/esm/client/shared/components/ImagesView/SwapView.js +1 -1
- package/lib/esm/client/shared/components/PageFooter/Paging.js +1 -11
- package/lib/esm/client/shared/components/PageHeader/ImagePreview.js +18 -7
- package/lib/esm/client/shared/components/PageHeader/PageHeader.js +3 -8
- package/lib/esm/client/shared/components/ResultsPage.js +6 -15
- package/lib/esm/client/shared/creeveyClientApi.js +3 -10
- package/lib/esm/client/shared/helpers.js +21 -47
- package/lib/esm/client/web/192.js +1 -0
- package/lib/esm/client/web/632.js +43 -0
- package/lib/esm/client/web/794.js +1 -0
- package/lib/esm/client/web/index.html +19 -0
- package/lib/esm/client/web/main.js +79 -0
- package/lib/esm/client/web/main.js.LICENSE.txt +34 -0
- package/lib/esm/creevey.js +4 -8
- package/lib/esm/index.js +0 -1
- package/lib/esm/server/config.js +7 -14
- package/lib/esm/server/docker.js +4 -12
- package/lib/esm/server/index.js +7 -21
- package/lib/esm/server/logger.js +0 -1
- package/lib/esm/server/master/api.js +0 -9
- package/lib/esm/server/master/index.js +15 -32
- package/lib/esm/server/master/master.js +2 -7
- package/lib/esm/server/master/pool.js +0 -23
- package/lib/esm/server/master/runner.js +14 -27
- package/lib/esm/server/master/server.js +4 -9
- package/lib/esm/server/messages.js +6 -38
- package/lib/esm/server/selenium/browser.js +50 -114
- package/lib/esm/server/selenium/selenoid.js +6 -17
- package/lib/esm/server/stories.js +24 -20
- package/lib/esm/server/storybook/providers/browser.js +4 -8
- package/lib/esm/server/storybook/providers/hybrid.js +6 -14
- package/lib/esm/server/testsFiles/parser.js +0 -6
- package/lib/esm/server/testsFiles/register.js +5 -2
- package/lib/esm/server/update.js +0 -8
- package/lib/esm/server/utils.js +3 -11
- package/lib/esm/server/worker/chai-image.js +0 -21
- package/lib/esm/server/worker/helpers.js +2 -9
- package/lib/esm/server/worker/reporter.js +7 -10
- package/lib/esm/server/worker/worker.js +4 -25
- package/lib/esm/shared/index.js +24 -25
- package/lib/esm/types.js +4 -1
- package/lib/types/client/addon/Manager.d.ts +1 -1
- package/lib/types/client/addon/components/Addon.d.ts +1 -0
- package/lib/types/client/addon/components/Icons.d.ts +1 -0
- package/lib/types/client/addon/components/Panel.d.ts +1 -0
- package/lib/types/client/addon/components/TestSelect.d.ts +1 -0
- package/lib/types/client/addon/components/Tools.d.ts +1 -0
- package/lib/types/client/addon/decorator.d.ts +1 -1
- package/lib/types/client/addon/preset.d.ts +2 -2
- package/lib/types/client/addon/preview.d.ts +1 -1
- package/lib/types/client/addon/withCreevey.d.ts +3 -2
- package/lib/types/client/shared/components/ImagesView/BlendView.d.ts +3 -1
- package/lib/types/client/shared/components/ImagesView/ImagesView.d.ts +1 -0
- package/lib/types/client/shared/components/ImagesView/SideBySideView.d.ts +3 -1
- package/lib/types/client/shared/components/ImagesView/SlideView.d.ts +3 -1
- package/lib/types/client/shared/components/ImagesView/SwapView.d.ts +3 -1
- package/lib/types/client/shared/components/PageFooter/PageFooter.d.ts +1 -0
- package/lib/types/client/shared/components/PageFooter/Paging.d.ts +1 -0
- package/lib/types/client/shared/components/PageHeader/ImagePreview.d.ts +3 -1
- package/lib/types/client/shared/components/PageHeader/PageHeader.d.ts +1 -0
- package/lib/types/client/shared/components/ResultsPage.d.ts +3 -1
- package/lib/types/client/web/CreeveyApp.d.ts +1 -0
- package/lib/types/client/web/CreeveyLoader.d.ts +2 -1
- package/lib/types/client/web/CreeveyView/SideBar/Checkbox.d.ts +4 -1
- package/lib/types/client/web/CreeveyView/SideBar/Search.d.ts +1 -0
- package/lib/types/client/web/CreeveyView/SideBar/SideBarHeader.d.ts +1 -0
- package/lib/types/client/web/CreeveyView/SideBar/SuiteLink.d.ts +19 -14
- package/lib/types/client/web/CreeveyView/SideBar/TestLink.d.ts +1 -0
- package/lib/types/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +3 -1
- package/lib/types/client/web/CreeveyView/SideBar/TestsStatus.d.ts +3 -1
- package/lib/types/client/web/CreeveyView/SideBar/Toggle.d.ts +1 -0
- package/lib/types/shared/index.d.ts +1 -1
- package/lib/types/types.d.ts +7 -28
- package/package.json +60 -78
- package/lib/cjs/client/addon/preset.ie11.js +0 -74
- package/lib/cjs/client/addon/preset.sb7.js +0 -19
- package/lib/cjs/client/web/142.js +0 -2
- package/lib/cjs/client/web/142.js.LICENSE.txt +0 -12
- package/lib/cjs/client/web/32.js +0 -1
- package/lib/cjs/client/web/551.js +0 -1
- package/lib/cjs/client/web/566.js +0 -2
- package/lib/cjs/client/web/566.js.LICENSE.txt +0 -31
- package/lib/cjs/client/web/691.js +0 -2
- package/lib/cjs/client/web/691.js.LICENSE.txt +0 -8
- package/lib/cjs/client/web/725.js +0 -1
- package/lib/cjs/server/extract.js +0 -46
- package/lib/cjs/server/loaders/babel/creevey-plugin.js +0 -86
- package/lib/cjs/server/loaders/babel/helpers.js +0 -469
- package/lib/cjs/server/loaders/babel/register.js +0 -124
- package/lib/cjs/server/loaders/hooks/mdx.js +0 -30
- package/lib/cjs/server/loaders/hooks/svelte.js +0 -65
- package/lib/cjs/server/loaders/webpack/compile.js +0 -269
- package/lib/cjs/server/loaders/webpack/creevey-loader.js +0 -172
- package/lib/cjs/server/loaders/webpack/dummy-hmr.js +0 -39
- package/lib/cjs/server/loaders/webpack/mdx-loader.js +0 -72
- package/lib/cjs/server/loaders/webpack/start.js +0 -41
- package/lib/cjs/server/storybook/entry.js +0 -53
- package/lib/cjs/server/storybook/helpers.js +0 -158
- package/lib/cjs/server/storybook/providers/nodejs.js +0 -239
- package/lib/esm/client/addon/preset.ie11.js +0 -59
- package/lib/esm/client/addon/preset.sb7.js +0 -8
- package/lib/esm/server/extract.js +0 -32
- package/lib/esm/server/loaders/babel/creevey-plugin.js +0 -72
- package/lib/esm/server/loaders/babel/helpers.js +0 -452
- package/lib/esm/server/loaders/babel/register.js +0 -103
- package/lib/esm/server/loaders/hooks/mdx.js +0 -15
- package/lib/esm/server/loaders/hooks/svelte.js +0 -49
- package/lib/esm/server/loaders/webpack/compile.js +0 -246
- package/lib/esm/server/loaders/webpack/creevey-loader.js +0 -152
- package/lib/esm/server/loaders/webpack/dummy-hmr.js +0 -32
- package/lib/esm/server/loaders/webpack/mdx-loader.js +0 -58
- package/lib/esm/server/loaders/webpack/start.js +0 -27
- package/lib/esm/server/storybook/entry.js +0 -27
- package/lib/esm/server/storybook/helpers.js +0 -97
- package/lib/esm/server/storybook/providers/nodejs.js +0 -216
- package/lib/types/client/addon/preset.ie11.d.ts +0 -10
- package/lib/types/client/addon/preset.sb7.d.ts +0 -2
- package/lib/types/server/extract.d.ts +0 -2
- package/lib/types/server/loaders/babel/creevey-plugin.d.ts +0 -1
- package/lib/types/server/loaders/babel/helpers.d.ts +0 -19
- package/lib/types/server/loaders/babel/register.d.ts +0 -5
- package/lib/types/server/loaders/hooks/mdx.d.ts +0 -1
- package/lib/types/server/loaders/hooks/svelte.d.ts +0 -1
- package/lib/types/server/loaders/webpack/compile.d.ts +0 -2
- package/lib/types/server/loaders/webpack/creevey-loader.d.ts +0 -4
- package/lib/types/server/loaders/webpack/dummy-hmr.d.ts +0 -10
- package/lib/types/server/loaders/webpack/mdx-loader.d.ts +0 -6
- package/lib/types/server/loaders/webpack/start.d.ts +0 -1
- package/lib/types/server/storybook/entry.d.ts +0 -17
- package/lib/types/server/storybook/helpers.d.ts +0 -24
- package/lib/types/server/storybook/providers/nodejs.d.ts +0 -9
- package/preset/ie11.js +0 -5
- package/preset/index.js +0 -9
- package/preset/sb7.js +0 -5
- package/types/mdx.d.ts +0 -7
@@ -4,27 +4,17 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.PageHeader = PageHeader;
|
7
|
-
|
8
7
|
var _react = _interopRequireWildcard(require("react"));
|
9
|
-
|
10
8
|
var _helpers = require("../../helpers");
|
11
|
-
|
12
9
|
var _components = require("@storybook/components");
|
13
|
-
|
14
10
|
var _theming = require("@storybook/theming");
|
15
|
-
|
16
11
|
var _ImagePreview = require("./ImagePreview");
|
17
|
-
|
18
12
|
var _viewMode = require("../../viewMode");
|
19
|
-
|
20
|
-
function
|
21
|
-
|
22
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
23
|
-
|
13
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
14
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
24
15
|
const Container = _theming.styled.div({
|
25
16
|
margin: '24px 44px 0'
|
26
17
|
});
|
27
|
-
|
28
18
|
const ErrorContainer = (0, _theming.withTheme)(_theming.styled.div(_ref => {
|
29
19
|
let {
|
30
20
|
theme
|
@@ -49,12 +39,10 @@ const ErrorContainer = (0, _theming.withTheme)(_theming.styled.div(_ref => {
|
|
49
39
|
}
|
50
40
|
};
|
51
41
|
}));
|
52
|
-
|
53
42
|
const H1 = _theming.styled.h1({
|
54
43
|
margin: 0,
|
55
44
|
marginBottom: '8px'
|
56
45
|
});
|
57
|
-
|
58
46
|
const HeaderDivider = (0, _theming.withTheme)(_theming.styled.span(_ref2 => {
|
59
47
|
let {
|
60
48
|
theme
|
@@ -64,15 +52,11 @@ const HeaderDivider = (0, _theming.withTheme)(_theming.styled.span(_ref2 => {
|
|
64
52
|
color: theme.color.mediumdark
|
65
53
|
};
|
66
54
|
}));
|
67
|
-
|
68
55
|
const ImagesEntriesContainer = _theming.styled.div({
|
69
56
|
display: 'flex',
|
70
57
|
margin: '16px 0 8px'
|
71
58
|
});
|
72
|
-
|
73
59
|
function PageHeader(_ref3) {
|
74
|
-
var _, _imageEntires$, _images$imageName;
|
75
|
-
|
76
60
|
let {
|
77
61
|
title,
|
78
62
|
images = {},
|
@@ -85,13 +69,10 @@ function PageHeader(_ref3) {
|
|
85
69
|
onViewModeChange
|
86
70
|
} = _ref3;
|
87
71
|
const imageEntires = Object.entries(images);
|
88
|
-
const [imageName, setImageName] = (0, _react.useState)((
|
89
|
-
|
72
|
+
const [imageName, setImageName] = (0, _react.useState)((imageEntires[0] ?? [])[0] ?? '');
|
90
73
|
const handleImageChange = name => (setImageName(name), onImageChange(name));
|
91
|
-
|
92
74
|
const handleViewModeChange = mode => onViewModeChange(mode);
|
93
|
-
|
94
|
-
const error = errorMessage || imagesWithError.includes(imageName) ? ((_images$imageName = images[imageName]) === null || _images$imageName === void 0 ? void 0 : _images$imageName.error) || errorMessage : null;
|
75
|
+
const error = errorMessage || imagesWithError.includes(imageName) ? images[imageName]?.error || errorMessage : null;
|
95
76
|
return showTitle || error || imageEntires.length > 1 || showViewModes ? /*#__PURE__*/_react.default.createElement(Container, null, showTitle && /*#__PURE__*/_react.default.createElement(H1, null, title.flatMap(token => [token, /*#__PURE__*/_react.default.createElement(HeaderDivider, {
|
96
77
|
key: token
|
97
78
|
}, "/")]).slice(0, -1)), error && /*#__PURE__*/_react.default.createElement(ErrorContainer, null, /*#__PURE__*/_react.default.createElement(_components.Icons, {
|
@@ -101,7 +82,7 @@ function PageHeader(_ref3) {
|
|
101
82
|
return /*#__PURE__*/_react.default.createElement(_ImagePreview.ImagePreview, {
|
102
83
|
key: name,
|
103
84
|
imageName: name,
|
104
|
-
url:
|
85
|
+
url: `${(0, _helpers.getImageUrl)(title, name)}/${image.actual}`,
|
105
86
|
isActive: name === imageName,
|
106
87
|
onClick: handleImageChange,
|
107
88
|
error: imagesWithError.includes(name)
|
@@ -5,27 +5,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
});
|
6
6
|
exports.ResultsPage = void 0;
|
7
7
|
exports.ResultsPageInternal = ResultsPageInternal;
|
8
|
-
|
9
8
|
var _react = _interopRequireWildcard(require("react"));
|
10
|
-
|
11
9
|
var _ImagesView = require("./ImagesView/ImagesView");
|
12
|
-
|
13
10
|
var _PageHeader = require("./PageHeader/PageHeader");
|
14
|
-
|
15
11
|
var _PageFooter = require("./PageFooter/PageFooter");
|
16
|
-
|
17
12
|
var _helpers = require("../helpers");
|
18
|
-
|
19
13
|
var _theming = require("@storybook/theming");
|
20
|
-
|
21
14
|
var _components = require("@storybook/components");
|
22
|
-
|
23
15
|
var _viewMode = require("../viewMode");
|
24
|
-
|
25
|
-
function
|
26
|
-
|
27
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
28
|
-
|
16
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
17
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
29
18
|
const Wrapper = _theming.styled.div({
|
30
19
|
width: '100%',
|
31
20
|
height: '100%',
|
@@ -33,7 +22,6 @@ const Wrapper = _theming.styled.div({
|
|
33
22
|
display: 'flex',
|
34
23
|
flexDirection: 'column'
|
35
24
|
});
|
36
|
-
|
37
25
|
const ImagesViewContainer = _theming.styled.div(_ref => {
|
38
26
|
let {
|
39
27
|
theme
|
@@ -44,23 +32,19 @@ const ImagesViewContainer = _theming.styled.div(_ref => {
|
|
44
32
|
padding: '20px 0'
|
45
33
|
};
|
46
34
|
});
|
47
|
-
|
48
35
|
const HeaderContainer = _theming.styled.div({
|
49
36
|
position: 'sticky',
|
50
37
|
top: 0,
|
51
38
|
zIndex: 1
|
52
39
|
});
|
53
|
-
|
54
40
|
const BodyContainer = _theming.styled.div({
|
55
41
|
flexGrow: 1
|
56
42
|
});
|
57
|
-
|
58
43
|
const FooterContainer = _theming.styled.div({
|
59
44
|
position: 'sticky',
|
60
45
|
bottom: 0,
|
61
46
|
zIndex: 1
|
62
47
|
});
|
63
|
-
|
64
48
|
const Container = _theming.styled.div(_ref2 => {
|
65
49
|
let {
|
66
50
|
height = '100vh'
|
@@ -73,10 +57,7 @@ const Container = _theming.styled.div(_ref2 => {
|
|
73
57
|
flexDirection: 'column'
|
74
58
|
};
|
75
59
|
});
|
76
|
-
|
77
60
|
function ResultsPageInternal(_ref3) {
|
78
|
-
var _results, _Object$keys$, _result$images, _result$images2;
|
79
|
-
|
80
61
|
let {
|
81
62
|
id,
|
82
63
|
path,
|
@@ -88,27 +69,20 @@ function ResultsPageInternal(_ref3) {
|
|
88
69
|
height
|
89
70
|
} = _ref3;
|
90
71
|
const [retry, setRetry] = (0, _react.useState)(results.length);
|
91
|
-
const result =
|
92
|
-
const [imageName, setImageName] = (0, _react.useState)(
|
72
|
+
const result = results[retry - 1] ?? {};
|
73
|
+
const [imageName, setImageName] = (0, _react.useState)(Object.keys(result.images ?? {})[0] ?? '');
|
93
74
|
const [viewMode, setViewMode] = (0, _react.useState)((0, _viewMode.getViewMode)());
|
94
75
|
(0, _react.useEffect)(() => setRetry(results.length), [results.length]);
|
95
76
|
const url = (0, _helpers.getImageUrl)(path, imageName);
|
96
|
-
const image =
|
77
|
+
const image = result.images?.[imageName];
|
97
78
|
const canApprove = Boolean(image && approved[imageName] != retry - 1 && result.status != 'success');
|
98
|
-
const hasDiffAndExpect = canApprove && Boolean(
|
99
|
-
const imagesWithError = result.images ? Object.keys(result.images).filter(imageName => {
|
100
|
-
var _imageName;
|
101
|
-
|
102
|
-
return result.status != 'success' && approved[imageName] != retry - 1 && ((_imageName = (result.images || {})[imageName]) === null || _imageName === void 0 ? void 0 : _imageName.error) != null;
|
103
|
-
}) : [];
|
104
|
-
|
79
|
+
const hasDiffAndExpect = canApprove && Boolean(image?.diff && image.expect);
|
80
|
+
const imagesWithError = result.images ? Object.keys(result.images).filter(imageName => result.status != 'success' && approved[imageName] != retry - 1 && (result.images || {})[imageName]?.error != null) : [];
|
105
81
|
const handleApprove = () => onImageApprove(id, retry - 1, imageName);
|
106
|
-
|
107
82
|
const handleChangeViewMode = mode => {
|
108
83
|
localStorage.setItem(_viewMode.VIEW_MODE_KEY, mode);
|
109
84
|
setViewMode(mode);
|
110
85
|
};
|
111
|
-
|
112
86
|
return /*#__PURE__*/_react.default.createElement(Container, {
|
113
87
|
height: height
|
114
88
|
}, /*#__PURE__*/_react.default.createElement(HeaderContainer, null, /*#__PURE__*/_react.default.createElement(_PageHeader.PageHeader, {
|
@@ -130,7 +104,7 @@ function ResultsPageInternal(_ref3) {
|
|
130
104
|
image: image,
|
131
105
|
canApprove: canApprove,
|
132
106
|
mode: viewMode
|
133
|
-
}) : /*#__PURE__*/_react.default.createElement(_components.Placeholder, null,
|
107
|
+
}) : /*#__PURE__*/_react.default.createElement(_components.Placeholder, null, `Image ${imageName} not found`))))), results.length ? /*#__PURE__*/_react.default.createElement(FooterContainer, null, /*#__PURE__*/_react.default.createElement(_PageFooter.PageFooter, {
|
134
108
|
canApprove: canApprove,
|
135
109
|
retry: retry,
|
136
110
|
retriesCount: results.length,
|
@@ -138,6 +112,4 @@ function ResultsPageInternal(_ref3) {
|
|
138
112
|
onApprove: handleApprove
|
139
113
|
})) : null);
|
140
114
|
}
|
141
|
-
|
142
|
-
const ResultsPage = (0, _theming.withTheme)(ResultsPageInternal);
|
143
|
-
exports.ResultsPage = ResultsPage;
|
115
|
+
const ResultsPage = exports.ResultsPage = (0, _theming.withTheme)(ResultsPageInternal);
|
@@ -4,22 +4,17 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.initCreeveyClientApi = initCreeveyClientApi;
|
7
|
-
|
8
7
|
var _types = require("../../types");
|
9
|
-
|
10
8
|
var _helpers = require("./helpers");
|
11
|
-
|
12
9
|
async function initCreeveyClientApi() {
|
13
10
|
let clientApiResolver = _types.noop;
|
14
11
|
const updateListeners = new Set();
|
15
12
|
let statusRequest = null;
|
16
13
|
let statusResolver = _types.noop;
|
17
|
-
const ws = new WebSocket(
|
18
|
-
|
14
|
+
const ws = new WebSocket(`ws://${(0, _helpers.getConnectionUrl)()}`);
|
19
15
|
function send(request) {
|
20
16
|
ws.send(JSON.stringify(request));
|
21
17
|
}
|
22
|
-
|
23
18
|
ws.addEventListener('open', () => {
|
24
19
|
clientApiResolver({
|
25
20
|
start(ids) {
|
@@ -28,13 +23,11 @@ async function initCreeveyClientApi() {
|
|
28
23
|
payload: ids
|
29
24
|
});
|
30
25
|
},
|
31
|
-
|
32
26
|
stop() {
|
33
27
|
send({
|
34
28
|
type: 'stop'
|
35
29
|
});
|
36
30
|
},
|
37
|
-
|
38
31
|
approve(id, retry, image) {
|
39
32
|
send({
|
40
33
|
type: 'approve',
|
@@ -45,12 +38,10 @@ async function initCreeveyClientApi() {
|
|
45
38
|
}
|
46
39
|
});
|
47
40
|
},
|
48
|
-
|
49
41
|
onUpdate(fn) {
|
50
42
|
updateListeners.add(fn);
|
51
43
|
return () => updateListeners.delete(fn);
|
52
44
|
},
|
53
|
-
|
54
45
|
get status() {
|
55
46
|
if (statusRequest) return statusRequest;
|
56
47
|
send({
|
@@ -58,19 +49,18 @@ async function initCreeveyClientApi() {
|
|
58
49
|
});
|
59
50
|
return statusRequest = new Promise(resolve => statusResolver = resolve);
|
60
51
|
}
|
61
|
-
|
62
52
|
});
|
63
53
|
});
|
64
54
|
ws.addEventListener('message', message => {
|
65
55
|
const data = JSON.parse(message.data);
|
66
56
|
if (data.type == 'update') updateListeners.forEach(fn => fn(data.payload));
|
67
|
-
|
68
57
|
if (data.type == 'status') {
|
69
58
|
statusResolver(data.payload);
|
70
59
|
statusResolver = _types.noop;
|
71
60
|
statusRequest = null;
|
72
61
|
}
|
73
|
-
});
|
62
|
+
});
|
63
|
+
// TODO Reconnect
|
74
64
|
|
75
65
|
return new Promise(resolve => clientApiResolver = resolve);
|
76
66
|
}
|
@@ -28,17 +28,11 @@ exports.useForceUpdate = useForceUpdate;
|
|
28
28
|
exports.useLoadImages = useLoadImages;
|
29
29
|
exports.useResizeObserver = useResizeObserver;
|
30
30
|
exports.useTheme = useTheme;
|
31
|
-
|
32
31
|
var _theming = require("@storybook/theming");
|
33
|
-
|
34
32
|
var _qs = require("qs");
|
35
|
-
|
36
33
|
var _react = require("react");
|
37
|
-
|
38
34
|
var _types = require("../../types");
|
39
|
-
|
40
35
|
const statusUpdatesMap = new Map([[undefined, /(unknown|success|failed|pending|running)/], ['unknown', /(success|failed|pending|running)/], ['success', /(failed|pending|running)/], ['failed', /(pending|running)/], ['pending', /running/]]);
|
41
|
-
|
42
36
|
function makeEmptySuiteNode() {
|
43
37
|
let path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
44
38
|
return {
|
@@ -50,13 +44,9 @@ function makeEmptySuiteNode() {
|
|
50
44
|
children: {}
|
51
45
|
};
|
52
46
|
}
|
53
|
-
|
54
47
|
function calcStatus(oldStatus, newStatus) {
|
55
|
-
|
56
|
-
|
57
|
-
return newStatus && (_statusUpdatesMap$get = statusUpdatesMap.get(oldStatus)) !== null && _statusUpdatesMap$get !== void 0 && _statusUpdatesMap$get.test(newStatus) ? newStatus : oldStatus;
|
48
|
+
return newStatus && statusUpdatesMap.get(oldStatus)?.test(newStatus) ? newStatus : oldStatus;
|
58
49
|
}
|
59
|
-
|
60
50
|
function getTestPath(test) {
|
61
51
|
const {
|
62
52
|
browser,
|
@@ -65,34 +55,26 @@ function getTestPath(test) {
|
|
65
55
|
} = test;
|
66
56
|
return [...storyPath, testName, browser].filter(_types.isDefined);
|
67
57
|
}
|
68
|
-
|
69
58
|
function getSuiteByPath(suite, path) {
|
70
|
-
return path.reduce((suiteOrTest, pathToken) => (0, _types.isTest)(suiteOrTest) ? suiteOrTest : suiteOrTest
|
59
|
+
return path.reduce((suiteOrTest, pathToken) => (0, _types.isTest)(suiteOrTest) ? suiteOrTest : suiteOrTest?.children[pathToken], suite);
|
71
60
|
}
|
72
|
-
|
73
61
|
function getTestByPath(suite, path) {
|
74
|
-
|
75
|
-
|
76
|
-
const test = (_getSuiteByPath = getSuiteByPath(suite, path)) !== null && _getSuiteByPath !== void 0 ? _getSuiteByPath : suite;
|
62
|
+
const test = getSuiteByPath(suite, path) ?? suite;
|
77
63
|
return (0, _types.isTest)(test) ? test : null;
|
78
64
|
}
|
79
|
-
|
80
65
|
function getTestsByStoryId(suite, storyId) {
|
81
66
|
return Object.values(suite.children).filter(_types.isDefined).flatMap(suiteOrTest => {
|
82
67
|
if ((0, _types.isTest)(suiteOrTest)) return suiteOrTest.storyId === storyId ? suiteOrTest : [];
|
83
68
|
return getTestsByStoryId(suiteOrTest, storyId);
|
84
69
|
}).filter(_types.isDefined);
|
85
70
|
}
|
86
|
-
|
87
71
|
function checkTests(suiteOrTest, checked) {
|
88
72
|
suiteOrTest.checked = checked;
|
89
|
-
|
90
73
|
if (!(0, _types.isTest)(suiteOrTest)) {
|
91
74
|
suiteOrTest.indeterminate = false;
|
92
75
|
Object.values(suiteOrTest.children).filter(_types.isDefined).forEach(child => checkTests(child, checked));
|
93
76
|
}
|
94
77
|
}
|
95
|
-
|
96
78
|
function updateChecked(suite) {
|
97
79
|
const children = Object.values(suite.children).filter(_types.isDefined).filter(child => !child.skip);
|
98
80
|
const checkedEvery = children.every(test => test.checked);
|
@@ -102,7 +84,6 @@ function updateChecked(suite) {
|
|
102
84
|
suite.checked = checked;
|
103
85
|
suite.indeterminate = indeterminate;
|
104
86
|
}
|
105
|
-
|
106
87
|
function checkSuite(suite, path, checked) {
|
107
88
|
const subSuite = getSuiteByPath(suite, path);
|
108
89
|
if (subSuite) checkTests(subSuite, checked);
|
@@ -113,7 +94,6 @@ function checkSuite(suite, path, checked) {
|
|
113
94
|
});
|
114
95
|
updateChecked(suite);
|
115
96
|
}
|
116
|
-
|
117
97
|
function treeifyTests(testsById) {
|
118
98
|
const rootSuite = makeEmptySuiteNode();
|
119
99
|
rootSuite.opened = true;
|
@@ -127,20 +107,18 @@ function treeifyTests(testsById) {
|
|
127
107
|
if (!subSuite.skip) suite.skip = false;
|
128
108
|
suite.children[token] = subSuite;
|
129
109
|
suite.status = calcStatus(suite.status, subSuite.status);
|
130
|
-
|
131
110
|
if ((0, _types.isTest)(subSuite)) {
|
132
|
-
throw new Error(
|
111
|
+
throw new Error(`Suite and Test should not have same path '${JSON.stringify(getTestPath(subSuite))}'`);
|
133
112
|
}
|
134
|
-
|
135
113
|
return subSuite;
|
136
114
|
}, rootSuite);
|
137
|
-
lastSuite.children[browser] = {
|
115
|
+
lastSuite.children[browser] = {
|
116
|
+
...test,
|
138
117
|
checked: true
|
139
118
|
};
|
140
119
|
});
|
141
120
|
return rootSuite;
|
142
121
|
}
|
143
|
-
|
144
122
|
function getCheckedTests(suite) {
|
145
123
|
return Object.values(suite.children).filter(_types.isDefined).flatMap(suiteOrTest => {
|
146
124
|
if ((0, _types.isTest)(suiteOrTest)) return suiteOrTest.checked ? suiteOrTest : [];
|
@@ -148,16 +126,13 @@ function getCheckedTests(suite) {
|
|
148
126
|
return getCheckedTests(suiteOrTest);
|
149
127
|
});
|
150
128
|
}
|
151
|
-
|
152
129
|
function updateTestStatus(suite, path, update) {
|
153
|
-
var _suite$children$title;
|
154
|
-
|
155
130
|
const title = path.shift();
|
156
131
|
if (!title) return;
|
157
|
-
const suiteOrTest =
|
132
|
+
const suiteOrTest = suite.children[title] ?? (suite.children[title] = {
|
133
|
+
...(path.length == 0 ? update : makeEmptySuiteNode([...suite.path, title])),
|
158
134
|
checked: suite.checked
|
159
|
-
};
|
160
|
-
|
135
|
+
});
|
161
136
|
if ((0, _types.isTest)(suiteOrTest)) {
|
162
137
|
const test = suiteOrTest;
|
163
138
|
const {
|
@@ -177,7 +152,6 @@ function updateTestStatus(suite, path, update) {
|
|
177
152
|
const subSuite = suiteOrTest;
|
178
153
|
updateTestStatus(subSuite, path, update);
|
179
154
|
}
|
180
|
-
|
181
155
|
suite.skip = Object.values(suite.children).filter(_types.isDefined).map(_ref2 => {
|
182
156
|
let {
|
183
157
|
skip
|
@@ -191,15 +165,12 @@ function updateTestStatus(suite, path, update) {
|
|
191
165
|
return status;
|
192
166
|
}).reduce(calcStatus);
|
193
167
|
}
|
194
|
-
|
195
168
|
function removeTests(suite, path) {
|
196
|
-
var _suiteOrTest$children;
|
197
|
-
|
198
169
|
const title = path.shift();
|
199
170
|
if (!title) return;
|
200
171
|
const suiteOrTest = suite.children[title];
|
201
172
|
if (suiteOrTest && !(0, _types.isTest)(suiteOrTest)) removeTests(suiteOrTest, path);
|
202
|
-
if ((0, _types.isTest)(suiteOrTest) || Object.keys(
|
173
|
+
if ((0, _types.isTest)(suiteOrTest) || Object.keys(suiteOrTest?.children ?? {}).length == 0) delete suite.children[title];
|
203
174
|
if (Object.keys(suite.children).length == 0) return;
|
204
175
|
updateChecked(suite);
|
205
176
|
suite.skip = Object.values(suite.children).filter(_types.isDefined).map(_ref4 => {
|
@@ -215,20 +186,19 @@ function removeTests(suite, path) {
|
|
215
186
|
return status;
|
216
187
|
}).reduce(calcStatus);
|
217
188
|
}
|
218
|
-
|
219
189
|
function filterTests(suite, filter) {
|
220
190
|
const {
|
221
191
|
status,
|
222
192
|
subStrings
|
223
193
|
} = filter;
|
224
194
|
if (!status && !subStrings.length) return suite;
|
225
|
-
const filteredSuite = {
|
195
|
+
const filteredSuite = {
|
196
|
+
...suite,
|
226
197
|
children: {}
|
227
198
|
};
|
228
199
|
Object.entries(suite.children).forEach(_ref6 => {
|
229
200
|
let [title, suiteOrTest] = _ref6;
|
230
201
|
if (!suiteOrTest || suiteOrTest.skip) return;
|
231
|
-
|
232
202
|
if (!status && subStrings.some(subString => title.toLowerCase().includes(subString))) {
|
233
203
|
filteredSuite.children[title] = suiteOrTest;
|
234
204
|
} else if ((0, _types.isTest)(suiteOrTest)) {
|
@@ -241,7 +211,6 @@ function filterTests(suite, filter) {
|
|
241
211
|
});
|
242
212
|
return filteredSuite;
|
243
213
|
}
|
244
|
-
|
245
214
|
function openSuite(suite, path, opened) {
|
246
215
|
const subSuite = path.reduce((suiteOrTest, pathToken) => {
|
247
216
|
if (suiteOrTest && !(0, _types.isTest)(suiteOrTest)) {
|
@@ -251,7 +220,6 @@ function openSuite(suite, path, opened) {
|
|
251
220
|
}, suite);
|
252
221
|
if (subSuite && !(0, _types.isTest)(subSuite)) subSuite.opened = opened;
|
253
222
|
}
|
254
|
-
|
255
223
|
function flattenSuite(suite) {
|
256
224
|
if (!suite.opened) return [];
|
257
225
|
return Object.entries(suite.children).flatMap(_ref7 => {
|
@@ -262,7 +230,6 @@ function flattenSuite(suite) {
|
|
262
230
|
}, ...((0, _types.isTest)(subSuite) ? [] : flattenSuite(subSuite))] : [];
|
263
231
|
});
|
264
232
|
}
|
265
|
-
|
266
233
|
function countTestsStatus(suite) {
|
267
234
|
let successCount = 0;
|
268
235
|
let failedCount = 0;
|
@@ -270,7 +237,6 @@ function countTestsStatus(suite) {
|
|
270
237
|
let pendingCount = 0;
|
271
238
|
const cases = Object.values(suite.children).filter(_types.isDefined);
|
272
239
|
let suiteOrTest;
|
273
|
-
|
274
240
|
while (suiteOrTest = cases.pop()) {
|
275
241
|
if ((0, _types.isTest)(suiteOrTest)) {
|
276
242
|
if (suiteOrTest.skip) skippedCount++;
|
@@ -281,7 +247,6 @@ function countTestsStatus(suite) {
|
|
281
247
|
cases.push(...Object.values(suiteOrTest.children).filter(_types.isDefined));
|
282
248
|
}
|
283
249
|
}
|
284
|
-
|
285
250
|
return {
|
286
251
|
successCount,
|
287
252
|
failedCount,
|
@@ -289,24 +254,20 @@ function countTestsStatus(suite) {
|
|
289
254
|
pendingCount
|
290
255
|
};
|
291
256
|
}
|
292
|
-
|
293
257
|
function getConnectionUrl() {
|
294
258
|
return [typeof __CREEVEY_SERVER_HOST__ == 'undefined' ? window.location.hostname : __CREEVEY_SERVER_HOST__, typeof __CREEVEY_SERVER_PORT__ == 'undefined' ? window.location.port : __CREEVEY_SERVER_PORT__].filter(Boolean).join(':');
|
295
259
|
}
|
296
|
-
|
297
260
|
function getImageUrl(path, imageName) {
|
298
261
|
// path => [kind, story, test, browser]
|
299
262
|
const browser = path.slice(-1)[0];
|
300
|
-
const imagesUrl = window.location.host ?
|
301
|
-
return imageName == browser ? imagesUrl :
|
263
|
+
const imagesUrl = window.location.host ? `${window.location.protocol}//${getConnectionUrl()}${window.location.pathname == '/' ? '/report' : window.location.pathname.split('/').slice(0, -1).join('/')}/${encodeURI(path.slice(0, -1).join('/'))}` : encodeURI(path.slice(0, -1).join('/'));
|
264
|
+
return imageName == browser ? imagesUrl : `${imagesUrl}/${encodeURI(browser)}`;
|
302
265
|
}
|
303
|
-
|
304
266
|
function getBorderSize(element) {
|
305
267
|
// NOTE Firefox returns empty string for `borderWidth` prop
|
306
268
|
const borderSize = parseFloat(getComputedStyle(element).borderTopWidth);
|
307
269
|
return Number.isNaN(borderSize) ? 0 : borderSize;
|
308
270
|
}
|
309
|
-
|
310
271
|
function useLoadImages(s1, s2, s3) {
|
311
272
|
const [loaded, setLoaded] = (0, _react.useState)(false);
|
312
273
|
(0, _react.useEffect)(() => {
|
@@ -320,13 +281,12 @@ function useLoadImages(s1, s2, s3) {
|
|
320
281
|
}, [s1, s2, s3]);
|
321
282
|
return loaded;
|
322
283
|
}
|
284
|
+
|
323
285
|
/**
|
324
286
|
* Uses the ResizeObserver API to observe changes within the given HTML Element DOM Rect.
|
325
287
|
*
|
326
288
|
* @returns dimensions of element's content box (which means without paddings and border width)
|
327
289
|
*/
|
328
|
-
|
329
|
-
|
330
290
|
function useResizeObserver(elementRef, onResize) {
|
331
291
|
let debounceTimeout = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 16;
|
332
292
|
const observerRef = (0, _react.useRef)(null);
|
@@ -334,23 +294,17 @@ function useResizeObserver(elementRef, onResize) {
|
|
334
294
|
if (!elementRef.current) return;
|
335
295
|
observerRef.current = new ResizeObserver(onResize);
|
336
296
|
observerRef.current.observe(elementRef.current);
|
337
|
-
return () =>
|
338
|
-
var _observerRef$current;
|
339
|
-
|
340
|
-
return (_observerRef$current = observerRef.current) === null || _observerRef$current === void 0 ? void 0 : _observerRef$current.disconnect();
|
341
|
-
};
|
297
|
+
return () => observerRef.current?.disconnect();
|
342
298
|
}, [debounceTimeout, elementRef, onResize]);
|
343
299
|
}
|
344
|
-
|
345
300
|
function useApplyScale(imageRef, scale, dependency) {
|
346
301
|
(0, _react.useLayoutEffect)(() => {
|
347
302
|
if (!imageRef.current) return;
|
348
303
|
const image = imageRef.current;
|
349
304
|
const borderSize = getBorderSize(image);
|
350
|
-
image.style.height =
|
305
|
+
image.style.height = `${image.naturalHeight * scale + borderSize * 2}px`;
|
351
306
|
}, [imageRef, scale, dependency]);
|
352
307
|
}
|
353
|
-
|
354
308
|
function useCalcScale(diffImageRef, loaded) {
|
355
309
|
const [scale, setScale] = (0, _react.useState)(1);
|
356
310
|
const calcScale = (0, _react.useCallback)(() => {
|
@@ -364,18 +318,14 @@ function useCalcScale(diffImageRef, loaded) {
|
|
364
318
|
(0, _react.useLayoutEffect)(calcScale, [calcScale]);
|
365
319
|
return scale;
|
366
320
|
}
|
367
|
-
|
368
321
|
const CREEVEY_THEME = 'Creevey_theme';
|
369
|
-
|
370
322
|
function isTheme(theme) {
|
371
323
|
return (0, _types.isDefined)(theme) && Object.prototype.hasOwnProperty.call(_theming.themes, theme);
|
372
324
|
}
|
373
|
-
|
374
325
|
function initialTheme() {
|
375
326
|
const theme = localStorage.getItem(CREEVEY_THEME);
|
376
327
|
return isTheme(theme) ? theme : 'light';
|
377
328
|
}
|
378
|
-
|
379
329
|
function useTheme() {
|
380
330
|
const [theme, setTheme] = (0, _react.useState)(initialTheme());
|
381
331
|
(0, _react.useEffect)(() => {
|
@@ -383,28 +333,24 @@ function useTheme() {
|
|
383
333
|
}, [theme]);
|
384
334
|
return [theme, setTheme];
|
385
335
|
}
|
386
|
-
|
387
336
|
function setSearchParams(testPath) {
|
388
|
-
const pageUrl =
|
337
|
+
const pageUrl = `?${(0, _qs.stringify)({
|
389
338
|
testPath
|
390
|
-
})
|
339
|
+
})}`;
|
391
340
|
window.history.pushState({
|
392
341
|
testPath
|
393
342
|
}, '', pageUrl);
|
394
343
|
}
|
395
|
-
|
396
344
|
function getTestPathFromSearch() {
|
397
345
|
const {
|
398
346
|
testPath
|
399
|
-
} = (0, _qs.parse)(window.location.search.slice(1));
|
400
|
-
|
347
|
+
} = (0, _qs.parse)(window.location.search.slice(1));
|
348
|
+
//@ts-expect-error: This expression is not callable.
|
401
349
|
if (Array.isArray(testPath) && testPath.every(token => typeof token == 'string')) {
|
402
350
|
return testPath;
|
403
351
|
}
|
404
|
-
|
405
352
|
return [];
|
406
353
|
}
|
407
|
-
|
408
354
|
function useForceUpdate() {
|
409
355
|
const [, update] = (0, _react.useState)({});
|
410
356
|
return (0, _react.useCallback)(() => update({}), []);
|
@@ -4,14 +4,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.viewModes = exports.getViewMode = exports.VIEW_MODE_KEY = void 0;
|
7
|
-
const VIEW_MODE_KEY = 'Creevey_view_mode';
|
8
|
-
exports.
|
9
|
-
const viewModes = ['side-by-side', 'swap', 'slide', 'blend'];
|
10
|
-
exports.viewModes = viewModes;
|
11
|
-
|
7
|
+
const VIEW_MODE_KEY = exports.VIEW_MODE_KEY = 'Creevey_view_mode';
|
8
|
+
const viewModes = exports.viewModes = ['side-by-side', 'swap', 'slide', 'blend'];
|
12
9
|
const getViewMode = () => {
|
13
10
|
const item = localStorage.getItem(VIEW_MODE_KEY);
|
14
11
|
return item && viewModes.includes(item) ? item : 'side-by-side';
|
15
12
|
};
|
16
|
-
|
17
13
|
exports.getViewMode = getViewMode;
|
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";(self.webpackChunkcreevey=self.webpackChunkcreevey||[]).push([[192],{8192:(e,r,a)=>{a.r(r),a.d(r,{SyntaxHighlighter:()=>c.d3,createCopyToClipboardFunction:()=>c.xV,default:()=>c.qG});var c=a(23809)}}]);
|