creevey 0.9.0-beta.2 → 0.9.0-beta.20
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/CHANGELOG.md +51 -0
- package/README.md +9 -1
- package/addon/README.md +3 -0
- package/addon/package.json +5 -0
- package/docs/config.md +29 -26
- package/jest.config.js +6 -0
- package/lib/cjs/cli.js +1 -0
- package/lib/cjs/client/addon/Manager.js +170 -390
- package/lib/cjs/client/addon/components/Addon.js +17 -45
- package/lib/cjs/client/addon/components/Icons.js +12 -14
- package/lib/cjs/client/addon/components/Panel.js +21 -30
- package/lib/cjs/client/addon/components/TestSelect.js +20 -31
- package/lib/cjs/client/addon/components/Tools.js +35 -65
- package/lib/cjs/client/addon/decorator.js +1 -4
- package/lib/cjs/client/addon/index.js +27 -0
- package/lib/cjs/client/addon/preset.js +3 -76
- package/lib/cjs/client/addon/preview.js +11 -0
- package/lib/cjs/client/addon/readyForCapture.js +1 -4
- package/lib/cjs/client/addon/register.js +43 -82
- package/lib/cjs/client/addon/utils.js +4 -8
- package/lib/cjs/client/addon/withCreevey.js +145 -404
- package/lib/cjs/client/shared/components/ImagesView/BlendView.js +25 -35
- package/lib/cjs/client/shared/components/ImagesView/ImagesView.js +29 -41
- package/lib/cjs/client/shared/components/ImagesView/SideBySideView.js +46 -83
- package/lib/cjs/client/shared/components/ImagesView/SlideView.js +39 -67
- package/lib/cjs/client/shared/components/ImagesView/SwapView.js +26 -57
- package/lib/cjs/client/shared/components/ImagesView/index.js +9 -14
- package/lib/cjs/client/shared/components/PageFooter/PageFooter.js +13 -16
- package/lib/cjs/client/shared/components/PageFooter/Paging.js +16 -37
- package/lib/cjs/client/shared/components/PageHeader/ImagePreview.js +42 -34
- package/lib/cjs/client/shared/components/PageHeader/PageHeader.js +40 -84
- package/lib/cjs/client/shared/components/ResultsPage.js +42 -99
- package/lib/cjs/client/shared/creeveyClientApi.js +56 -93
- package/lib/cjs/client/shared/helpers.js +149 -274
- package/lib/cjs/client/shared/viewMode.js +5 -9
- 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 +79 -38
- package/lib/cjs/client/web/main.js.LICENSE.txt +34 -0
- package/lib/cjs/creevey.js +15 -30
- package/lib/cjs/index.js +0 -15
- package/lib/cjs/server/config.js +16 -36
- package/lib/cjs/server/docker.js +8 -34
- package/lib/cjs/server/index.js +9 -34
- package/lib/cjs/server/logger.js +7 -20
- package/lib/cjs/server/master/api.js +1 -14
- package/lib/cjs/server/master/index.js +25 -49
- package/lib/cjs/server/master/master.js +6 -21
- package/lib/cjs/server/master/pool.js +10 -53
- package/lib/cjs/server/master/runner.js +65 -105
- package/lib/cjs/server/master/server.js +10 -29
- package/lib/cjs/server/messages.js +14 -62
- package/lib/cjs/server/selenium/browser.js +149 -185
- package/lib/cjs/server/selenium/index.js +0 -4
- package/lib/cjs/server/selenium/selenoid.js +18 -44
- package/lib/cjs/server/stories.js +35 -57
- package/lib/cjs/server/storybook/providers/browser.js +15 -29
- package/lib/cjs/server/storybook/providers/hybrid.js +16 -37
- package/lib/cjs/server/telemetry.js +167 -0
- package/lib/cjs/server/testsFiles/parser.js +3 -19
- package/lib/cjs/server/testsFiles/register.js +8 -14
- package/lib/cjs/server/update.js +4 -25
- package/lib/cjs/server/utils.js +35 -76
- 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 +16 -43
- package/lib/cjs/server/worker/worker.js +32 -72
- package/lib/cjs/shared/index.js +87 -0
- package/lib/cjs/shared/serializeRegExp.js +34 -0
- package/lib/cjs/types.js +11 -20
- package/lib/esm/cli.js +1 -1
- package/lib/esm/client/addon/Manager.js +170 -381
- package/lib/esm/client/addon/components/Addon.js +15 -34
- package/lib/esm/client/addon/components/Icons.js +10 -6
- package/lib/esm/client/addon/components/Panel.js +20 -18
- package/lib/esm/client/addon/components/TestSelect.js +19 -23
- package/lib/esm/client/addon/components/Tools.js +33 -49
- package/lib/esm/client/addon/decorator.js +1 -1
- package/lib/esm/client/addon/index.js +2 -0
- package/lib/esm/client/addon/preset.js +2 -56
- package/lib/esm/client/addon/preview.js +5 -0
- package/lib/esm/client/addon/readyForCapture.js +1 -3
- package/lib/esm/client/addon/register.js +41 -67
- package/lib/esm/client/addon/utils.js +3 -7
- package/lib/esm/client/addon/withCreevey.js +142 -388
- package/lib/esm/client/shared/components/ImagesView/BlendView.js +22 -18
- package/lib/esm/client/shared/components/ImagesView/ImagesView.js +27 -25
- package/lib/esm/client/shared/components/ImagesView/SideBySideView.js +43 -63
- package/lib/esm/client/shared/components/ImagesView/SlideView.js +36 -47
- package/lib/esm/client/shared/components/ImagesView/SwapView.js +23 -40
- package/lib/esm/client/shared/components/PageFooter/PageFooter.js +12 -8
- package/lib/esm/client/shared/components/PageFooter/Paging.js +15 -29
- package/lib/esm/client/shared/components/PageHeader/ImagePreview.js +40 -25
- package/lib/esm/client/shared/components/PageHeader/PageHeader.js +38 -66
- package/lib/esm/client/shared/components/ResultsPage.js +39 -75
- package/lib/esm/client/shared/creeveyClientApi.js +56 -90
- package/lib/esm/client/shared/helpers.js +133 -230
- package/lib/esm/client/shared/viewMode.js +4 -4
- 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 +13 -16
- package/lib/esm/index.js +1 -4
- package/lib/esm/server/config.js +9 -16
- package/lib/esm/server/docker.js +6 -14
- package/lib/esm/server/index.js +8 -22
- package/lib/esm/server/logger.js +0 -1
- package/lib/esm/server/master/api.js +0 -9
- package/lib/esm/server/master/index.js +25 -35
- package/lib/esm/server/master/master.js +2 -7
- package/lib/esm/server/master/pool.js +8 -41
- package/lib/esm/server/master/runner.js +64 -90
- package/lib/esm/server/master/server.js +9 -11
- package/lib/esm/server/messages.js +8 -42
- package/lib/esm/server/selenium/browser.js +147 -163
- package/lib/esm/server/selenium/selenoid.js +16 -27
- package/lib/esm/server/stories.js +34 -46
- package/lib/esm/server/storybook/providers/browser.js +12 -17
- package/lib/esm/server/storybook/providers/hybrid.js +11 -22
- package/lib/esm/server/telemetry.js +160 -0
- package/lib/esm/server/testsFiles/parser.js +0 -6
- package/lib/esm/server/testsFiles/register.js +6 -7
- package/lib/esm/server/update.js +1 -13
- package/lib/esm/server/utils.js +20 -41
- 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 +15 -29
- package/lib/esm/server/worker/worker.js +31 -48
- package/lib/esm/shared/index.js +77 -0
- package/lib/esm/shared/serializeRegExp.js +24 -0
- package/lib/esm/types.js +5 -1
- package/lib/types/client/addon/Manager.d.ts +3 -3
- 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/Tools.d.ts +1 -0
- package/lib/types/client/addon/decorator.d.ts +1 -1
- package/lib/types/client/addon/index.d.ts +2 -0
- package/lib/types/client/addon/preset.d.ts +2 -24
- package/lib/types/client/addon/preview.d.ts +4 -0
- package/lib/types/client/addon/utils.d.ts +1 -0
- package/lib/types/client/addon/withCreevey.d.ts +4 -3
- package/lib/types/client/shared/components/ImagesView/BlendView.d.ts +3 -1
- 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/PageHeader/ImagePreview.d.ts +3 -1
- package/lib/types/client/shared/components/ResultsPage.d.ts +3 -1
- package/lib/types/client/web/CreeveyLoader.d.ts +1 -1
- package/lib/types/client/web/CreeveyView/SideBar/Checkbox.d.ts +6 -3
- package/lib/types/client/web/CreeveyView/SideBar/Search.d.ts +1 -0
- package/lib/types/client/web/CreeveyView/SideBar/SuiteLink.d.ts +19 -14
- 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/client/web/KeyboardEventsContext.d.ts +4 -2
- package/lib/types/index.d.ts +4 -1
- package/lib/types/server/logger.d.ts +6 -2
- package/lib/types/server/messages.d.ts +14 -12
- package/lib/types/server/selenium/browser.d.ts +5 -3
- package/lib/types/server/storybook/providers/browser.d.ts +2 -4
- package/lib/types/server/storybook/providers/hybrid.d.ts +2 -4
- package/lib/types/server/telemetry.d.ts +2 -0
- package/lib/types/server/utils.d.ts +5 -1
- package/lib/types/shared/index.d.ts +7 -0
- package/lib/types/shared/serializeRegExp.d.ts +9 -0
- package/lib/types/types.d.ts +29 -36
- package/package.json +132 -133
- package/types/global.d.ts +5 -0
- package/lib/cjs/client/web/1.js +0 -13
- package/lib/cjs/client/web/2.js +0 -1
- package/lib/cjs/server/extract.js +0 -50
- package/lib/cjs/server/loaders/babel/creevey-plugin.js +0 -88
- package/lib/cjs/server/loaders/babel/helpers.js +0 -479
- package/lib/cjs/server/loaders/babel/register.js +0 -126
- 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 -286
- package/lib/cjs/server/loaders/webpack/creevey-loader.js +0 -174
- package/lib/cjs/server/loaders/webpack/dummy-hmr.js +0 -44
- 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 -68
- package/lib/cjs/server/storybook/helpers.js +0 -165
- package/lib/cjs/server/storybook/providers/nodejs.js +0 -239
- package/lib/cjs/shared.js +0 -124
- package/lib/esm/server/extract.js +0 -34
- package/lib/esm/server/loaders/babel/creevey-plugin.js +0 -74
- package/lib/esm/server/loaders/babel/helpers.js +0 -462
- package/lib/esm/server/loaders/babel/register.js +0 -105
- 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 -263
- package/lib/esm/server/loaders/webpack/creevey-loader.js +0 -153
- package/lib/esm/server/loaders/webpack/dummy-hmr.js +0 -36
- 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 -44
- package/lib/esm/server/storybook/helpers.js +0 -106
- package/lib/esm/server/storybook/providers/nodejs.js +0 -217
- package/lib/esm/shared.js +0 -93
- 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 -2
- 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 -18
- package/lib/types/server/storybook/helpers.d.ts +0 -24
- package/lib/types/server/storybook/providers/nodejs.d.ts +0 -9
- package/lib/types/shared.d.ts +0 -16
- package/preset.js +0 -9
- package/storybook-static/stories.json +0 -21
- package/types/mdx.d.ts +0 -6
@@ -1,68 +1,59 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
|
-
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
4
|
-
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
6
4
|
value: true
|
7
5
|
});
|
8
6
|
exports.BlendView = void 0;
|
9
|
-
|
10
7
|
var _react = _interopRequireWildcard(require("react"));
|
11
|
-
|
12
8
|
var _ImagesView = require("./ImagesView");
|
13
|
-
|
14
9
|
var _theming = require("@storybook/theming");
|
15
|
-
|
16
10
|
var _helpers = require("../../helpers");
|
17
|
-
|
18
11
|
var _readyForCapture = require("../../../addon/readyForCapture");
|
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
|
-
|
24
|
-
var Container = _theming.styled.div({
|
12
|
+
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); }
|
13
|
+
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; }
|
14
|
+
const Container = _theming.styled.div({
|
25
15
|
position: 'relative',
|
26
16
|
display: 'flex',
|
27
17
|
filter: 'invert(100%)'
|
28
18
|
});
|
29
|
-
|
30
|
-
var ImageContainer = _theming.styled.div({
|
19
|
+
const ImageContainer = _theming.styled.div({
|
31
20
|
position: 'absolute',
|
32
21
|
width: '100%',
|
33
22
|
height: '100%',
|
34
23
|
display: 'flex'
|
35
24
|
});
|
36
|
-
|
37
|
-
|
38
|
-
|
25
|
+
const Image = _theming.styled.img(_ref => {
|
26
|
+
let {
|
27
|
+
borderColor
|
28
|
+
} = _ref;
|
39
29
|
return {
|
40
30
|
boxSizing: 'border-box',
|
41
|
-
border:
|
31
|
+
border: `1px solid ${borderColor}`,
|
42
32
|
maxWidth: '100%',
|
43
33
|
filter: 'invert(100%)'
|
44
34
|
};
|
45
35
|
});
|
46
|
-
|
47
|
-
var ActualImage = (0, _theming.styled)(Image)({
|
36
|
+
const ActualImage = (0, _theming.styled)(Image)({
|
48
37
|
mixBlendMode: 'difference'
|
49
38
|
});
|
50
|
-
|
39
|
+
const DiffImage = (0, _theming.styled)(Image)({
|
51
40
|
opacity: '0'
|
52
41
|
});
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
42
|
+
const BlendView = exports.BlendView = (0, _theming.withTheme)(_ref2 => {
|
43
|
+
let {
|
44
|
+
actual,
|
45
|
+
diff,
|
46
|
+
expect,
|
47
|
+
theme
|
48
|
+
} = _ref2;
|
49
|
+
const expectImageRef = (0, _react.useRef)(null);
|
50
|
+
const diffImageRef = (0, _react.useRef)(null);
|
51
|
+
const actualImageRef = (0, _react.useRef)(null);
|
52
|
+
const loaded = (0, _helpers.useLoadImages)(expect, diff, actual);
|
53
|
+
const scale = (0, _helpers.useCalcScale)(diffImageRef, loaded);
|
63
54
|
(0, _helpers.useApplyScale)(expectImageRef, scale, loaded);
|
64
55
|
(0, _helpers.useApplyScale)(actualImageRef, scale, loaded);
|
65
|
-
(0, _react.useEffect)(
|
56
|
+
(0, _react.useEffect)(() => {
|
66
57
|
if (loaded) (0, _readyForCapture.readyForCapture)();
|
67
58
|
}, [loaded]);
|
68
59
|
return /*#__PURE__*/_react.default.createElement(Container, null, /*#__PURE__*/_react.default.createElement(ImageContainer, null, /*#__PURE__*/_react.default.createElement(Image, {
|
@@ -81,5 +72,4 @@ var BlendView = (0, _theming.withTheme)(function (_ref2) {
|
|
81
72
|
alt: "actual",
|
82
73
|
src: actual
|
83
74
|
})));
|
84
|
-
});
|
85
|
-
exports.BlendView = BlendView;
|
75
|
+
});
|
@@ -3,47 +3,32 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.getBorderColor = getBorderColor;
|
7
6
|
exports.ImagesView = ImagesView;
|
7
|
+
exports.getBorderColor = getBorderColor;
|
8
8
|
exports.themeBorderColors = void 0;
|
9
|
-
|
10
9
|
var _react = _interopRequireDefault(require("react"));
|
11
|
-
|
12
10
|
var _SideBySideView = require("./SideBySideView");
|
13
|
-
|
14
11
|
var _SwapView = require("./SwapView");
|
15
|
-
|
16
12
|
var _SlideView = require("./SlideView");
|
17
|
-
|
18
13
|
var _BlendView = require("./BlendView");
|
19
|
-
|
20
14
|
var _theming = require("@storybook/theming");
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
var themeBorderColors = {
|
15
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
16
|
+
const themeBorderColors = exports.themeBorderColors = {
|
25
17
|
actual: 'negative',
|
26
18
|
expect: 'positive',
|
27
19
|
diff: 'secondary'
|
28
20
|
};
|
29
|
-
|
30
|
-
|
31
|
-
var isColor = function isColor(theme, color) {
|
32
|
-
return color in theme.color;
|
33
|
-
};
|
34
|
-
|
21
|
+
const isColor = (theme, color) => color in theme.color;
|
35
22
|
function getBorderColor(theme, color) {
|
36
23
|
return isColor(theme, color) ? theme.color[color] : color;
|
37
24
|
}
|
38
|
-
|
39
|
-
var views = {
|
25
|
+
const views = {
|
40
26
|
'side-by-side': _SideBySideView.SideBySideView,
|
41
27
|
swap: _SwapView.SwapView,
|
42
28
|
slide: _SlideView.SlideView,
|
43
29
|
blend: _BlendView.BlendView
|
44
30
|
};
|
45
|
-
|
46
|
-
var Container = _theming.styled.div({
|
31
|
+
const Container = _theming.styled.div({
|
47
32
|
height: '100%',
|
48
33
|
display: 'flex',
|
49
34
|
textAlign: 'center',
|
@@ -51,38 +36,41 @@ var Container = _theming.styled.div({
|
|
51
36
|
justifyContent: 'center',
|
52
37
|
padding: '0 20px'
|
53
38
|
});
|
54
|
-
|
55
|
-
var ImageLink = _theming.styled.a({
|
39
|
+
const ImageLink = _theming.styled.a({
|
56
40
|
lineHeight: 0
|
57
41
|
});
|
58
|
-
|
59
|
-
|
60
|
-
|
42
|
+
const ActualImage = (0, _theming.withTheme)(_theming.styled.img(_ref => {
|
43
|
+
let {
|
44
|
+
theme
|
45
|
+
} = _ref;
|
61
46
|
return {
|
62
|
-
border:
|
47
|
+
border: `1px solid ${getBorderColor(theme, themeBorderColors.expect)}`,
|
63
48
|
maxWidth: '100%'
|
64
49
|
};
|
65
50
|
}));
|
66
|
-
|
67
51
|
function ImagesView(_ref2) {
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
52
|
+
let {
|
53
|
+
url,
|
54
|
+
image,
|
55
|
+
canApprove,
|
56
|
+
mode
|
57
|
+
} = _ref2;
|
58
|
+
const ViewComponent = views[mode];
|
59
|
+
const {
|
60
|
+
actual,
|
61
|
+
diff,
|
62
|
+
expect
|
63
|
+
} = image;
|
76
64
|
return /*#__PURE__*/_react.default.createElement(Container, null, canApprove && diff && expect ? /*#__PURE__*/_react.default.createElement(ViewComponent, {
|
77
|
-
actual:
|
78
|
-
diff:
|
79
|
-
expect:
|
65
|
+
actual: `${url}/${actual}`,
|
66
|
+
diff: `${url}/${diff}`,
|
67
|
+
expect: `${url}/${expect}`
|
80
68
|
}) : /*#__PURE__*/_react.default.createElement(ImageLink, {
|
81
|
-
href:
|
69
|
+
href: `${url}/${actual}`,
|
82
70
|
target: "_blank",
|
83
71
|
rel: "noopener noreferrer"
|
84
72
|
}, /*#__PURE__*/_react.default.createElement(ActualImage, {
|
85
73
|
alt: "actual",
|
86
|
-
src:
|
74
|
+
src: `${url}/${actual}`
|
87
75
|
})));
|
88
76
|
}
|
@@ -1,41 +1,18 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
|
-
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
4
|
-
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
6
4
|
value: true
|
7
5
|
});
|
8
6
|
exports.SideBySideView = void 0;
|
9
|
-
|
10
7
|
var _react = _interopRequireWildcard(require("react"));
|
11
|
-
|
12
8
|
var _ImagesView = require("./ImagesView");
|
13
|
-
|
14
9
|
var _theming = require("@storybook/theming");
|
15
|
-
|
16
10
|
var _helpers = require("../../helpers");
|
17
|
-
|
18
11
|
var _components = require("@storybook/components");
|
19
|
-
|
20
12
|
var _readyForCapture = require("../../../addon/readyForCapture");
|
21
|
-
|
22
|
-
function
|
23
|
-
|
24
|
-
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; }
|
25
|
-
|
26
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
27
|
-
|
28
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
29
|
-
|
30
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
31
|
-
|
32
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
33
|
-
|
34
|
-
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
35
|
-
|
36
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
37
|
-
|
38
|
-
var Container = _theming.styled.div({
|
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; }
|
15
|
+
const Container = _theming.styled.div({
|
39
16
|
display: 'flex',
|
40
17
|
flexWrap: 'nowrap',
|
41
18
|
alignItems: 'center',
|
@@ -43,9 +20,10 @@ var Container = _theming.styled.div({
|
|
43
20
|
height: '100%',
|
44
21
|
width: '100%'
|
45
22
|
});
|
46
|
-
|
47
|
-
|
48
|
-
|
23
|
+
const ImagesLayout = _theming.styled.div(_ref => {
|
24
|
+
let {
|
25
|
+
layout
|
26
|
+
} = _ref;
|
49
27
|
return {
|
50
28
|
display: 'flex',
|
51
29
|
alignItems: 'flex-start',
|
@@ -57,85 +35,71 @@ var ImagesLayout = _theming.styled.div(function (_ref) {
|
|
57
35
|
}
|
58
36
|
};
|
59
37
|
});
|
60
|
-
|
61
|
-
var ImageLink = _theming.styled.a({
|
38
|
+
const ImageLink = _theming.styled.a({
|
62
39
|
lineHeight: 0,
|
63
40
|
flexShrink: 0
|
64
41
|
});
|
65
|
-
|
66
|
-
var ImageDiffLink = _theming.styled.a({
|
42
|
+
const ImageDiffLink = _theming.styled.a({
|
67
43
|
lineHeight: 0
|
68
44
|
});
|
69
|
-
|
70
|
-
|
71
|
-
|
45
|
+
const Image = _theming.styled.img(_ref2 => {
|
46
|
+
let {
|
47
|
+
borderColor
|
48
|
+
} = _ref2;
|
72
49
|
return {
|
73
50
|
boxSizing: 'border-box',
|
74
|
-
border:
|
51
|
+
border: `1px solid ${borderColor}`,
|
75
52
|
maxWidth: '100%',
|
76
53
|
flexShrink: 0
|
77
54
|
};
|
78
55
|
});
|
79
|
-
|
80
|
-
var DiffImage = (0, _theming.styled)(Image)({
|
56
|
+
const DiffImage = (0, _theming.styled)(Image)({
|
81
57
|
flexShrink: 1
|
82
58
|
});
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
var actualImageRef = (0, _react.useRef)(null);
|
103
|
-
var loaded = (0, _helpers.useLoadImages)(expect, diff, actual);
|
104
|
-
var calcScale = (0, _react.useCallback)(function () {
|
105
|
-
var containerElement = containerRef.current;
|
106
|
-
var expectImage = expectImageRef.current;
|
107
|
-
var diffImage = diffImageRef.current;
|
108
|
-
var actualImage = actualImageRef.current;
|
59
|
+
const SideBySideView = exports.SideBySideView = (0, _theming.withTheme)(_ref3 => {
|
60
|
+
let {
|
61
|
+
actual,
|
62
|
+
diff,
|
63
|
+
expect,
|
64
|
+
theme
|
65
|
+
} = _ref3;
|
66
|
+
const [layout, setLayout] = (0, _react.useState)('horizontal');
|
67
|
+
const [scale, setScale] = (0, _react.useState)(1);
|
68
|
+
const containerRef = (0, _react.useRef)(null);
|
69
|
+
const expectImageRef = (0, _react.useRef)(null);
|
70
|
+
const diffImageRef = (0, _react.useRef)(null);
|
71
|
+
const actualImageRef = (0, _react.useRef)(null);
|
72
|
+
const loaded = (0, _helpers.useLoadImages)(expect, diff, actual);
|
73
|
+
const calcScale = (0, _react.useCallback)(() => {
|
74
|
+
const containerElement = containerRef.current;
|
75
|
+
const expectImage = expectImageRef.current;
|
76
|
+
const diffImage = diffImageRef.current;
|
77
|
+
const actualImage = actualImageRef.current;
|
109
78
|
if (!containerElement || !expectImage || !actualImage || !diffImage || !loaded) return setScale(1);
|
110
|
-
|
111
|
-
|
79
|
+
const borderSize = (0, _helpers.getBorderSize)(diffImage);
|
112
80
|
if (layout == 'vertical') {
|
113
|
-
|
81
|
+
const ratio = (diffImage.getBoundingClientRect().width - borderSize * 2) / diffImage.naturalWidth;
|
114
82
|
setScale(Math.min(1, ratio));
|
115
83
|
}
|
116
|
-
|
117
84
|
if (layout == 'horizontal') {
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
return a + b;
|
123
|
-
}, 0);
|
124
|
-
|
125
|
-
setScale(Math.min(1, _ratio));
|
85
|
+
const ratio =
|
86
|
+
// NOTE: 40px because we have two margins by 20px and 6px for borders
|
87
|
+
(containerElement.getBoundingClientRect().width - 40 - borderSize * 6) / [expectImage, diffImage, actualImage].map(image => image.naturalWidth).reduce((a, b) => a + b, 0);
|
88
|
+
setScale(Math.min(1, ratio));
|
126
89
|
}
|
127
90
|
}, [loaded, layout]);
|
128
91
|
(0, _helpers.useResizeObserver)(containerRef, calcScale);
|
129
92
|
(0, _react.useLayoutEffect)(calcScale, [calcScale]);
|
130
|
-
(0, _react.useLayoutEffect)(
|
131
|
-
|
93
|
+
(0, _react.useLayoutEffect)(() => {
|
94
|
+
// TODO Check image height and viewport
|
95
|
+
const diffImage = diffImageRef.current;
|
132
96
|
if (!diffImage || !loaded) return;
|
133
|
-
|
97
|
+
const ratio = diffImage.naturalWidth / diffImage.naturalHeight;
|
134
98
|
setLayout(ratio >= 2 ? 'vertical' : 'horizontal');
|
135
99
|
}, [loaded]);
|
136
100
|
(0, _helpers.useApplyScale)(expectImageRef, scale);
|
137
101
|
(0, _helpers.useApplyScale)(actualImageRef, scale);
|
138
|
-
(0, _react.useEffect)(
|
102
|
+
(0, _react.useEffect)(() => {
|
139
103
|
if (loaded) (0, _readyForCapture.readyForCapture)();
|
140
104
|
}, [loaded]);
|
141
105
|
return /*#__PURE__*/_react.default.createElement(Container, {
|
@@ -172,5 +136,4 @@ var SideBySideView = (0, _theming.withTheme)(function (_ref3) {
|
|
172
136
|
}))) : /*#__PURE__*/_react.default.createElement(_components.Loader, {
|
173
137
|
size: 64
|
174
138
|
}));
|
175
|
-
});
|
176
|
-
exports.SideBySideView = SideBySideView;
|
139
|
+
});
|
@@ -1,46 +1,22 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
|
-
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
4
|
-
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
6
4
|
value: true
|
7
5
|
});
|
8
6
|
exports.SlideView = void 0;
|
9
|
-
|
10
7
|
var _react = _interopRequireWildcard(require("react"));
|
11
|
-
|
12
8
|
var _theming = require("@storybook/theming");
|
13
|
-
|
14
9
|
var _ImagesView = require("./ImagesView");
|
15
|
-
|
16
10
|
var _helpers = require("../../helpers");
|
17
|
-
|
18
11
|
var _components = require("@storybook/components");
|
19
|
-
|
20
12
|
var _readyForCapture = require("../../../addon/readyForCapture");
|
21
|
-
|
22
|
-
function
|
23
|
-
|
24
|
-
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; }
|
25
|
-
|
26
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
27
|
-
|
28
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
29
|
-
|
30
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
31
|
-
|
32
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
33
|
-
|
34
|
-
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
35
|
-
|
36
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
37
|
-
|
38
|
-
var Container = _theming.styled.div({
|
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; }
|
15
|
+
const Container = _theming.styled.div({
|
39
16
|
position: 'relative',
|
40
17
|
display: 'flex'
|
41
18
|
});
|
42
|
-
|
43
|
-
var Input = _theming.styled.input({
|
19
|
+
const Input = _theming.styled.input({
|
44
20
|
position: 'absolute',
|
45
21
|
cursor: 'ew-resize',
|
46
22
|
appearance: 'none',
|
@@ -73,16 +49,16 @@ var Input = _theming.styled.input({
|
|
73
49
|
width: '0px'
|
74
50
|
}
|
75
51
|
});
|
76
|
-
|
77
|
-
var ImageContainer = _theming.styled.div({
|
52
|
+
const ImageContainer = _theming.styled.div({
|
78
53
|
position: 'absolute',
|
79
54
|
width: '100%',
|
80
55
|
height: '100%',
|
81
56
|
overflow: 'hidden'
|
82
57
|
});
|
83
|
-
|
84
|
-
|
85
|
-
|
58
|
+
const ImageWrapper = (0, _theming.withTheme)(_theming.styled.div(_ref => {
|
59
|
+
let {
|
60
|
+
theme
|
61
|
+
} = _ref;
|
86
62
|
return {
|
87
63
|
background: theme.base == 'light' ? theme.color.mediumlight : theme.color.darker,
|
88
64
|
position: 'relative',
|
@@ -91,58 +67,55 @@ var ImageWrapper = (0, _theming.withTheme)(_theming.styled.div(function (_ref) {
|
|
91
67
|
display: 'flex'
|
92
68
|
};
|
93
69
|
}));
|
94
|
-
|
95
|
-
|
96
|
-
|
70
|
+
const BaseImage = _theming.styled.img(_ref2 => {
|
71
|
+
let {
|
72
|
+
borderColor
|
73
|
+
} = _ref2;
|
97
74
|
return {
|
98
75
|
boxSizing: 'border-box',
|
99
|
-
border:
|
76
|
+
border: `1px solid ${borderColor}`,
|
100
77
|
maxWidth: '100%'
|
101
78
|
};
|
102
79
|
});
|
103
|
-
|
104
|
-
var Image = (0, _theming.styled)(BaseImage)({
|
80
|
+
const Image = (0, _theming.styled)(BaseImage)({
|
105
81
|
position: 'absolute'
|
106
82
|
});
|
107
|
-
|
83
|
+
const DiffImage = (0, _theming.styled)(BaseImage)({
|
108
84
|
opacity: '0'
|
109
85
|
});
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
var actualImageRef = (0, _react.useRef)(null);
|
126
|
-
var loaded = (0, _helpers.useLoadImages)(expect, diff, actual);
|
127
|
-
var scale = (0, _helpers.useCalcScale)(diffImageRef, loaded);
|
86
|
+
const SlideView = exports.SlideView = (0, _theming.withTheme)(_ref3 => {
|
87
|
+
let {
|
88
|
+
actual,
|
89
|
+
diff,
|
90
|
+
expect,
|
91
|
+
theme
|
92
|
+
} = _ref3;
|
93
|
+
const [step, setStep] = (0, _react.useState)(0);
|
94
|
+
const expectedImageContainerRef = (0, _react.useRef)(null);
|
95
|
+
const expectedImageWrapperRef = (0, _react.useRef)(null);
|
96
|
+
const expectImageRef = (0, _react.useRef)(null);
|
97
|
+
const diffImageRef = (0, _react.useRef)(null);
|
98
|
+
const actualImageRef = (0, _react.useRef)(null);
|
99
|
+
const loaded = (0, _helpers.useLoadImages)(expect, diff, actual);
|
100
|
+
const scale = (0, _helpers.useCalcScale)(diffImageRef, loaded);
|
128
101
|
(0, _helpers.useApplyScale)(expectImageRef, scale);
|
129
102
|
(0, _helpers.useApplyScale)(actualImageRef, scale);
|
130
|
-
|
103
|
+
const handleSlide = (0, _react.useCallback)(event => {
|
131
104
|
if (!expectedImageContainerRef.current || !expectedImageWrapperRef.current) return;
|
132
|
-
|
133
|
-
expectedImageContainerRef.current.style.right =
|
134
|
-
expectedImageWrapperRef.current.style.left =
|
105
|
+
const offset = Number(event.target.value);
|
106
|
+
expectedImageContainerRef.current.style.right = `${100 - offset}%`;
|
107
|
+
expectedImageWrapperRef.current.style.left = `${100 - offset}%`;
|
135
108
|
}, []);
|
136
|
-
(0, _react.useLayoutEffect)(
|
109
|
+
(0, _react.useLayoutEffect)(() => {
|
137
110
|
if (loaded && diffImageRef.current) setStep(100 / diffImageRef.current.getBoundingClientRect().width);
|
138
111
|
}, [loaded, scale]);
|
139
|
-
(0, _react.useLayoutEffect)(
|
112
|
+
(0, _react.useLayoutEffect)(() => {
|
140
113
|
if (loaded && expectedImageContainerRef.current && expectedImageWrapperRef.current) {
|
141
114
|
expectedImageContainerRef.current.style.right = '100%';
|
142
115
|
expectedImageWrapperRef.current.style.left = '100%';
|
143
116
|
}
|
144
117
|
}, [loaded]);
|
145
|
-
(0, _react.useEffect)(
|
118
|
+
(0, _react.useEffect)(() => {
|
146
119
|
if (loaded) (0, _readyForCapture.readyForCapture)();
|
147
120
|
}, [loaded]);
|
148
121
|
return loaded ? /*#__PURE__*/_react.default.createElement(Container, null, /*#__PURE__*/_react.default.createElement(Input, {
|
@@ -175,5 +148,4 @@ var SlideView = (0, _theming.withTheme)(function (_ref3) {
|
|
175
148
|
})) : /*#__PURE__*/_react.default.createElement(_components.Loader, {
|
176
149
|
size: 64
|
177
150
|
});
|
178
|
-
});
|
179
|
-
exports.SlideView = SlideView;
|
151
|
+
});
|