creevey 0.8.1-sb7.1 → 0.8.1-sb7.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.
Files changed (235) hide show
  1. package/lib/cjs/cli.js +5 -0
  2. package/lib/cjs/client/addon/Manager.js +264 -0
  3. package/lib/cjs/client/addon/components/Addon.js +55 -0
  4. package/lib/cjs/client/addon/components/Icons.js +46 -0
  5. package/lib/cjs/client/addon/components/Panel.js +72 -0
  6. package/lib/cjs/client/addon/components/TestSelect.js +65 -0
  7. package/lib/cjs/client/addon/components/Tools.js +97 -0
  8. package/lib/cjs/client/addon/decorator.js +11 -0
  9. package/lib/cjs/client/addon/index.js +31 -0
  10. package/lib/cjs/client/addon/preset.ie11.js +74 -0
  11. package/lib/cjs/client/addon/preset.js +62 -0
  12. package/lib/cjs/client/addon/readyForCapture.js +12 -0
  13. package/lib/cjs/client/addon/register.js +74 -0
  14. package/lib/cjs/client/addon/utils.js +42 -0
  15. package/lib/cjs/client/addon/withCreevey.js +351 -0
  16. package/lib/cjs/client/shared/components/ImagesView/BlendView.js +87 -0
  17. package/lib/cjs/client/shared/components/ImagesView/ImagesView.js +92 -0
  18. package/lib/cjs/client/shared/components/ImagesView/SideBySideView.js +154 -0
  19. package/lib/cjs/client/shared/components/ImagesView/SlideView.js +166 -0
  20. package/lib/cjs/client/shared/components/ImagesView/SwapView.js +91 -0
  21. package/lib/cjs/client/shared/components/ImagesView/index.js +45 -0
  22. package/lib/cjs/client/shared/components/PageFooter/PageFooter.js +50 -0
  23. package/lib/cjs/client/shared/components/PageFooter/Paging.js +94 -0
  24. package/lib/cjs/client/shared/components/PageHeader/ImagePreview.js +82 -0
  25. package/lib/cjs/client/shared/components/PageHeader/PageHeader.js +119 -0
  26. package/lib/cjs/client/shared/components/ResultsPage.js +143 -0
  27. package/lib/cjs/client/shared/creeveyClientApi.js +76 -0
  28. package/lib/cjs/client/shared/helpers.js +411 -0
  29. package/lib/cjs/client/shared/viewMode.js +17 -0
  30. package/lib/cjs/client/web/19.js +1 -0
  31. package/lib/cjs/client/web/632.js +43 -0
  32. package/lib/cjs/client/web/794.js +1 -0
  33. package/lib/cjs/client/web/index.html +19 -0
  34. package/lib/cjs/client/web/main.js +79 -0
  35. package/lib/cjs/client/web/main.js.LICENSE.txt +34 -0
  36. package/lib/cjs/creevey.js +69 -0
  37. package/lib/cjs/index.js +39 -0
  38. package/lib/cjs/server/config.js +93 -0
  39. package/lib/cjs/server/docker.js +146 -0
  40. package/lib/cjs/server/extract.js +46 -0
  41. package/lib/cjs/server/index.js +83 -0
  42. package/lib/cjs/server/loaders/babel/creevey-plugin.js +86 -0
  43. package/lib/cjs/server/loaders/babel/helpers.js +469 -0
  44. package/lib/cjs/server/loaders/babel/register.js +124 -0
  45. package/lib/cjs/server/loaders/hooks/mdx.js +30 -0
  46. package/lib/cjs/server/loaders/hooks/svelte.js +65 -0
  47. package/lib/cjs/server/loaders/webpack/compile.js +269 -0
  48. package/lib/cjs/server/loaders/webpack/creevey-loader.js +172 -0
  49. package/lib/cjs/server/loaders/webpack/dummy-hmr.js +39 -0
  50. package/lib/cjs/server/loaders/webpack/mdx-loader.js +72 -0
  51. package/lib/cjs/server/loaders/webpack/start.js +41 -0
  52. package/lib/cjs/server/logger.js +48 -0
  53. package/lib/cjs/server/master/api.js +71 -0
  54. package/lib/cjs/server/master/index.js +152 -0
  55. package/lib/cjs/server/master/master.js +57 -0
  56. package/lib/cjs/server/master/pool.js +197 -0
  57. package/lib/cjs/server/master/runner.js +281 -0
  58. package/lib/cjs/server/master/server.js +131 -0
  59. package/lib/cjs/server/messages.js +264 -0
  60. package/lib/cjs/server/selenium/browser.js +667 -0
  61. package/lib/cjs/server/selenium/index.js +31 -0
  62. package/lib/cjs/server/selenium/selenoid.js +172 -0
  63. package/lib/cjs/server/stories.js +155 -0
  64. package/lib/cjs/server/storybook/entry.js +55 -0
  65. package/lib/cjs/server/storybook/helpers.js +158 -0
  66. package/lib/cjs/server/storybook/providers/browser.js +76 -0
  67. package/lib/cjs/server/storybook/providers/nodejs.js +239 -0
  68. package/lib/cjs/server/update.js +79 -0
  69. package/lib/cjs/server/utils.js +169 -0
  70. package/lib/cjs/server/worker/chai-image.js +142 -0
  71. package/lib/cjs/server/worker/helpers.js +69 -0
  72. package/lib/cjs/server/worker/index.js +15 -0
  73. package/lib/cjs/server/worker/reporter.js +108 -0
  74. package/lib/cjs/server/worker/worker.js +268 -0
  75. package/lib/cjs/shared/index.js +103 -0
  76. package/lib/cjs/shared/serializeRegExp.js +42 -0
  77. package/lib/cjs/types.js +77 -0
  78. package/lib/esm/cli.js +4 -0
  79. package/lib/esm/client/addon/Manager.js +252 -0
  80. package/lib/esm/client/addon/components/Addon.js +39 -0
  81. package/lib/esm/client/addon/components/Icons.js +31 -0
  82. package/lib/esm/client/addon/components/Panel.js +53 -0
  83. package/lib/esm/client/addon/components/TestSelect.js +51 -0
  84. package/lib/esm/client/addon/components/Tools.js +76 -0
  85. package/lib/esm/client/addon/decorator.js +2 -0
  86. package/lib/esm/client/addon/index.js +2 -0
  87. package/lib/esm/client/addon/preset.ie11.js +59 -0
  88. package/lib/esm/client/addon/preset.js +41 -0
  89. package/lib/esm/client/addon/readyForCapture.js +5 -0
  90. package/lib/esm/client/addon/register.js +53 -0
  91. package/lib/esm/client/addon/utils.js +32 -0
  92. package/lib/esm/client/addon/withCreevey.js +326 -0
  93. package/lib/esm/client/shared/components/ImagesView/BlendView.js +67 -0
  94. package/lib/esm/client/shared/components/ImagesView/ImagesView.js +69 -0
  95. package/lib/esm/client/shared/components/ImagesView/SideBySideView.js +131 -0
  96. package/lib/esm/client/shared/components/ImagesView/SlideView.js +143 -0
  97. package/lib/esm/client/shared/components/ImagesView/SwapView.js +71 -0
  98. package/lib/esm/client/shared/components/ImagesView/index.js +5 -0
  99. package/lib/esm/client/shared/components/PageFooter/PageFooter.js +36 -0
  100. package/lib/esm/client/shared/components/PageFooter/Paging.js +80 -0
  101. package/lib/esm/client/shared/components/PageHeader/ImagePreview.js +68 -0
  102. package/lib/esm/client/shared/components/PageHeader/PageHeader.js +97 -0
  103. package/lib/esm/client/shared/components/ResultsPage.js +115 -0
  104. package/lib/esm/client/shared/creeveyClientApi.js +67 -0
  105. package/lib/esm/client/shared/helpers.js +353 -0
  106. package/lib/esm/client/shared/viewMode.js +6 -0
  107. package/lib/esm/creevey.js +54 -0
  108. package/lib/esm/index.js +3 -0
  109. package/lib/esm/server/config.js +70 -0
  110. package/lib/esm/server/docker.js +123 -0
  111. package/lib/esm/server/extract.js +32 -0
  112. package/lib/esm/server/index.js +64 -0
  113. package/lib/esm/server/loaders/babel/creevey-plugin.js +72 -0
  114. package/lib/esm/server/loaders/babel/helpers.js +452 -0
  115. package/lib/esm/server/loaders/babel/register.js +103 -0
  116. package/lib/esm/server/loaders/hooks/mdx.js +15 -0
  117. package/lib/esm/server/loaders/hooks/svelte.js +49 -0
  118. package/lib/esm/server/loaders/webpack/compile.js +246 -0
  119. package/lib/esm/server/loaders/webpack/creevey-loader.js +152 -0
  120. package/lib/esm/server/loaders/webpack/dummy-hmr.js +32 -0
  121. package/lib/esm/server/loaders/webpack/mdx-loader.js +58 -0
  122. package/lib/esm/server/loaders/webpack/start.js +27 -0
  123. package/lib/esm/server/logger.js +20 -0
  124. package/lib/esm/server/master/api.js +60 -0
  125. package/lib/esm/server/master/index.js +131 -0
  126. package/lib/esm/server/master/master.js +38 -0
  127. package/lib/esm/server/master/pool.js +176 -0
  128. package/lib/esm/server/master/runner.js +259 -0
  129. package/lib/esm/server/master/server.js +107 -0
  130. package/lib/esm/server/messages.js +232 -0
  131. package/lib/esm/server/selenium/browser.js +634 -0
  132. package/lib/esm/server/selenium/index.js +2 -0
  133. package/lib/esm/server/selenium/selenoid.js +149 -0
  134. package/lib/esm/server/stories.js +137 -0
  135. package/lib/esm/server/storybook/entry.js +29 -0
  136. package/lib/esm/server/storybook/helpers.js +99 -0
  137. package/lib/esm/server/storybook/providers/browser.js +60 -0
  138. package/lib/esm/server/storybook/providers/nodejs.js +219 -0
  139. package/lib/esm/server/update.js +61 -0
  140. package/lib/esm/server/utils.js +128 -0
  141. package/lib/esm/server/worker/chai-image.js +130 -0
  142. package/lib/esm/server/worker/helpers.js +60 -0
  143. package/lib/esm/server/worker/index.js +1 -0
  144. package/lib/esm/server/worker/reporter.js +86 -0
  145. package/lib/esm/server/worker/worker.js +238 -0
  146. package/lib/esm/shared/index.js +80 -0
  147. package/lib/esm/shared/serializeRegExp.js +24 -0
  148. package/lib/esm/types.js +46 -0
  149. package/lib/types/cli.d.ts +1 -0
  150. package/lib/types/client/addon/Manager.d.ts +37 -0
  151. package/lib/types/client/addon/components/Addon.d.ts +9 -0
  152. package/lib/types/client/addon/components/Icons.d.ts +8 -0
  153. package/lib/types/client/addon/components/Panel.d.ts +10 -0
  154. package/lib/types/client/addon/components/TestSelect.d.ts +9 -0
  155. package/lib/types/client/addon/components/Tools.d.ts +7 -0
  156. package/lib/types/client/addon/decorator.d.ts +1 -0
  157. package/lib/types/client/addon/index.d.ts +2 -0
  158. package/lib/types/client/addon/preset.d.ts +23 -0
  159. package/lib/types/client/addon/preset.ie11.d.ts +10 -0
  160. package/lib/types/client/addon/readyForCapture.d.ts +6 -0
  161. package/lib/types/client/addon/register.d.ts +3 -0
  162. package/lib/types/client/addon/utils.d.ts +3 -0
  163. package/lib/types/client/addon/withCreevey.d.ts +24 -0
  164. package/lib/types/client/shared/components/ImagesView/BlendView.d.ts +5 -0
  165. package/lib/types/client/shared/components/ImagesView/ImagesView.d.ts +25 -0
  166. package/lib/types/client/shared/components/ImagesView/SideBySideView.d.ts +5 -0
  167. package/lib/types/client/shared/components/ImagesView/SlideView.d.ts +5 -0
  168. package/lib/types/client/shared/components/ImagesView/SwapView.d.ts +5 -0
  169. package/lib/types/client/shared/components/ImagesView/index.d.ts +5 -0
  170. package/lib/types/client/shared/components/PageFooter/PageFooter.d.ts +9 -0
  171. package/lib/types/client/shared/components/PageFooter/Paging.d.ts +8 -0
  172. package/lib/types/client/shared/components/PageHeader/ImagePreview.d.ts +14 -0
  173. package/lib/types/client/shared/components/PageHeader/PageHeader.d.ts +17 -0
  174. package/lib/types/client/shared/components/ResultsPage.d.ts +20 -0
  175. package/lib/types/client/shared/creeveyClientApi.d.ts +9 -0
  176. package/lib/types/client/shared/helpers.d.ts +46 -0
  177. package/lib/types/client/shared/viewMode.d.ts +4 -0
  178. package/lib/types/client/web/CreeveyApp.d.ts +12 -0
  179. package/lib/types/client/web/CreeveyContext.d.ts +11 -0
  180. package/lib/types/client/web/CreeveyLoader.d.ts +3 -0
  181. package/lib/types/client/web/CreeveyView/SideBar/Checkbox.d.ts +22 -0
  182. package/lib/types/client/web/CreeveyView/SideBar/Search.d.ts +7 -0
  183. package/lib/types/client/web/CreeveyView/SideBar/SideBar.d.ts +14 -0
  184. package/lib/types/client/web/CreeveyView/SideBar/SideBarHeader.d.ts +13 -0
  185. package/lib/types/client/web/CreeveyView/SideBar/SuiteLink.d.ts +38 -0
  186. package/lib/types/client/web/CreeveyView/SideBar/TestLink.d.ts +8 -0
  187. package/lib/types/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +12 -0
  188. package/lib/types/client/web/CreeveyView/SideBar/TestsStatus.d.ts +11 -0
  189. package/lib/types/client/web/CreeveyView/SideBar/Toggle.d.ts +7 -0
  190. package/lib/types/client/web/CreeveyView/SideBar/index.d.ts +1 -0
  191. package/lib/types/client/web/KeyboardEventsContext.d.ts +13 -0
  192. package/lib/types/client/web/index.d.ts +4 -0
  193. package/lib/types/creevey.d.ts +1 -0
  194. package/lib/types/index.d.ts +2 -0
  195. package/lib/types/server/config.d.ts +4 -0
  196. package/lib/types/server/docker.d.ts +7 -0
  197. package/lib/types/server/extract.d.ts +2 -0
  198. package/lib/types/server/index.d.ts +2 -0
  199. package/lib/types/server/loaders/babel/creevey-plugin.d.ts +1 -0
  200. package/lib/types/server/loaders/babel/helpers.d.ts +19 -0
  201. package/lib/types/server/loaders/babel/register.d.ts +5 -0
  202. package/lib/types/server/loaders/hooks/mdx.d.ts +1 -0
  203. package/lib/types/server/loaders/hooks/svelte.d.ts +1 -0
  204. package/lib/types/server/loaders/webpack/compile.d.ts +2 -0
  205. package/lib/types/server/loaders/webpack/creevey-loader.d.ts +4 -0
  206. package/lib/types/server/loaders/webpack/dummy-hmr.d.ts +10 -0
  207. package/lib/types/server/loaders/webpack/mdx-loader.d.ts +6 -0
  208. package/lib/types/server/loaders/webpack/start.d.ts +1 -0
  209. package/lib/types/server/logger.d.ts +10 -0
  210. package/lib/types/server/master/api.d.ts +7 -0
  211. package/lib/types/server/master/index.d.ts +3 -0
  212. package/lib/types/server/master/master.d.ts +7 -0
  213. package/lib/types/server/master/pool.d.ts +31 -0
  214. package/lib/types/server/master/runner.d.ts +26 -0
  215. package/lib/types/server/master/server.d.ts +2 -0
  216. package/lib/types/server/messages.d.ts +29 -0
  217. package/lib/types/server/selenium/browser.d.ts +19 -0
  218. package/lib/types/server/selenium/index.d.ts +2 -0
  219. package/lib/types/server/selenium/selenoid.d.ts +3 -0
  220. package/lib/types/server/stories.d.ts +8 -0
  221. package/lib/types/server/storybook/entry.d.ts +16 -0
  222. package/lib/types/server/storybook/helpers.d.ts +24 -0
  223. package/lib/types/server/storybook/providers/browser.d.ts +2 -0
  224. package/lib/types/server/storybook/providers/nodejs.d.ts +6 -0
  225. package/lib/types/server/update.d.ts +2 -0
  226. package/lib/types/server/utils.d.ts +23 -0
  227. package/lib/types/server/worker/chai-image.d.ts +6 -0
  228. package/lib/types/server/worker/helpers.d.ts +8 -0
  229. package/lib/types/server/worker/index.d.ts +1 -0
  230. package/lib/types/server/worker/reporter.d.ts +8 -0
  231. package/lib/types/server/worker/worker.d.ts +4 -0
  232. package/lib/types/shared/index.d.ts +7 -0
  233. package/lib/types/shared/serializeRegExp.d.ts +9 -0
  234. package/lib/types/types.d.ts +486 -0
  235. package/package.json +1 -1
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.BlendView = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _ImagesView = require("./ImagesView");
11
+
12
+ var _theming = require("@storybook/theming");
13
+
14
+ var _helpers = require("../../helpers");
15
+
16
+ var _readyForCapture = require("../../../addon/readyForCapture");
17
+
18
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
+
20
+ 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; }
21
+
22
+ const Container = _theming.styled.div({
23
+ position: 'relative',
24
+ display: 'flex',
25
+ filter: 'invert(100%)'
26
+ });
27
+
28
+ const ImageContainer = _theming.styled.div({
29
+ position: 'absolute',
30
+ width: '100%',
31
+ height: '100%',
32
+ display: 'flex'
33
+ });
34
+
35
+ const Image = _theming.styled.img(_ref => {
36
+ let {
37
+ borderColor
38
+ } = _ref;
39
+ return {
40
+ boxSizing: 'border-box',
41
+ border: "1px solid ".concat(borderColor),
42
+ maxWidth: '100%',
43
+ filter: 'invert(100%)'
44
+ };
45
+ });
46
+
47
+ const ActualImage = (0, _theming.styled)(Image)({
48
+ mixBlendMode: 'difference'
49
+ });
50
+ const DiffImage = (0, _theming.styled)(Image)({
51
+ opacity: '0'
52
+ });
53
+ const BlendView = (0, _theming.withTheme)(_ref2 => {
54
+ let {
55
+ actual,
56
+ diff,
57
+ expect,
58
+ theme
59
+ } = _ref2;
60
+ const expectImageRef = (0, _react.useRef)(null);
61
+ const diffImageRef = (0, _react.useRef)(null);
62
+ const actualImageRef = (0, _react.useRef)(null);
63
+ const loaded = (0, _helpers.useLoadImages)(expect, diff, actual);
64
+ const scale = (0, _helpers.useCalcScale)(diffImageRef, loaded);
65
+ (0, _helpers.useApplyScale)(expectImageRef, scale, loaded);
66
+ (0, _helpers.useApplyScale)(actualImageRef, scale, loaded);
67
+ (0, _react.useEffect)(() => {
68
+ if (loaded) (0, _readyForCapture.readyForCapture)();
69
+ }, [loaded]);
70
+ return /*#__PURE__*/_react.default.createElement(Container, null, /*#__PURE__*/_react.default.createElement(ImageContainer, null, /*#__PURE__*/_react.default.createElement(Image, {
71
+ ref: expectImageRef,
72
+ borderColor: (0, _ImagesView.getBorderColor)(theme, _ImagesView.themeBorderColors.expect),
73
+ alt: "expect",
74
+ src: expect
75
+ })), /*#__PURE__*/_react.default.createElement(DiffImage, {
76
+ ref: diffImageRef,
77
+ borderColor: 'transparent',
78
+ alt: "diff",
79
+ src: diff
80
+ }), /*#__PURE__*/_react.default.createElement(ImageContainer, null, /*#__PURE__*/_react.default.createElement(ActualImage, {
81
+ ref: actualImageRef,
82
+ borderColor: (0, _ImagesView.getBorderColor)(theme, _ImagesView.themeBorderColors.actual),
83
+ alt: "actual",
84
+ src: actual
85
+ })));
86
+ });
87
+ exports.BlendView = BlendView;
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ImagesView = ImagesView;
7
+ exports.getBorderColor = getBorderColor;
8
+ exports.themeBorderColors = void 0;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var _SideBySideView = require("./SideBySideView");
13
+
14
+ var _SwapView = require("./SwapView");
15
+
16
+ var _SlideView = require("./SlideView");
17
+
18
+ var _BlendView = require("./BlendView");
19
+
20
+ var _theming = require("@storybook/theming");
21
+
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
+
24
+ const themeBorderColors = {
25
+ actual: 'negative',
26
+ expect: 'positive',
27
+ diff: 'secondary'
28
+ };
29
+ exports.themeBorderColors = themeBorderColors;
30
+
31
+ const isColor = (theme, color) => color in theme.color;
32
+
33
+ function getBorderColor(theme, color) {
34
+ return isColor(theme, color) ? theme.color[color] : color;
35
+ }
36
+
37
+ const views = {
38
+ 'side-by-side': _SideBySideView.SideBySideView,
39
+ swap: _SwapView.SwapView,
40
+ slide: _SlideView.SlideView,
41
+ blend: _BlendView.BlendView
42
+ };
43
+
44
+ const Container = _theming.styled.div({
45
+ height: '100%',
46
+ display: 'flex',
47
+ textAlign: 'center',
48
+ alignItems: 'center',
49
+ justifyContent: 'center',
50
+ padding: '0 20px'
51
+ });
52
+
53
+ const ImageLink = _theming.styled.a({
54
+ lineHeight: 0
55
+ });
56
+
57
+ const ActualImage = (0, _theming.withTheme)(_theming.styled.img(_ref => {
58
+ let {
59
+ theme
60
+ } = _ref;
61
+ return {
62
+ border: "1px solid ".concat(getBorderColor(theme, themeBorderColors.expect)),
63
+ maxWidth: '100%'
64
+ };
65
+ }));
66
+
67
+ function ImagesView(_ref2) {
68
+ let {
69
+ url,
70
+ image,
71
+ canApprove,
72
+ mode
73
+ } = _ref2;
74
+ const ViewComponent = views[mode];
75
+ const {
76
+ actual,
77
+ diff,
78
+ expect
79
+ } = image;
80
+ return /*#__PURE__*/_react.default.createElement(Container, null, canApprove && diff && expect ? /*#__PURE__*/_react.default.createElement(ViewComponent, {
81
+ actual: "".concat(url, "/").concat(actual),
82
+ diff: "".concat(url, "/").concat(diff),
83
+ expect: "".concat(url, "/").concat(expect)
84
+ }) : /*#__PURE__*/_react.default.createElement(ImageLink, {
85
+ href: "".concat(url, "/").concat(actual),
86
+ target: "_blank",
87
+ rel: "noopener noreferrer"
88
+ }, /*#__PURE__*/_react.default.createElement(ActualImage, {
89
+ alt: "actual",
90
+ src: "".concat(url, "/").concat(actual)
91
+ })));
92
+ }
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SideBySideView = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _ImagesView = require("./ImagesView");
11
+
12
+ var _theming = require("@storybook/theming");
13
+
14
+ var _helpers = require("../../helpers");
15
+
16
+ var _components = require("@storybook/components");
17
+
18
+ var _readyForCapture = require("../../../addon/readyForCapture");
19
+
20
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
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
+ const Container = _theming.styled.div({
25
+ display: 'flex',
26
+ flexWrap: 'nowrap',
27
+ alignItems: 'center',
28
+ justifyContent: 'center',
29
+ height: '100%',
30
+ width: '100%'
31
+ });
32
+
33
+ const ImagesLayout = _theming.styled.div(_ref => {
34
+ let {
35
+ layout
36
+ } = _ref;
37
+ return {
38
+ display: 'flex',
39
+ alignItems: 'flex-start',
40
+ justifyContent: 'flex-start',
41
+ flexDirection: layout == 'horizontal' ? 'row' : 'column',
42
+ '& > :not(:first-of-type)': {
43
+ marginLeft: layout == 'horizontal' ? '20px' : 0,
44
+ marginTop: layout == 'horizontal' ? 0 : '20px'
45
+ }
46
+ };
47
+ });
48
+
49
+ const ImageLink = _theming.styled.a({
50
+ lineHeight: 0,
51
+ flexShrink: 0
52
+ });
53
+
54
+ const ImageDiffLink = _theming.styled.a({
55
+ lineHeight: 0
56
+ });
57
+
58
+ const Image = _theming.styled.img(_ref2 => {
59
+ let {
60
+ borderColor
61
+ } = _ref2;
62
+ return {
63
+ boxSizing: 'border-box',
64
+ border: "1px solid ".concat(borderColor),
65
+ maxWidth: '100%',
66
+ flexShrink: 0
67
+ };
68
+ });
69
+
70
+ const DiffImage = (0, _theming.styled)(Image)({
71
+ flexShrink: 1
72
+ });
73
+ const SideBySideView = (0, _theming.withTheme)(_ref3 => {
74
+ let {
75
+ actual,
76
+ diff,
77
+ expect,
78
+ theme
79
+ } = _ref3;
80
+ const [layout, setLayout] = (0, _react.useState)('horizontal');
81
+ const [scale, setScale] = (0, _react.useState)(1);
82
+ const containerRef = (0, _react.useRef)(null);
83
+ const expectImageRef = (0, _react.useRef)(null);
84
+ const diffImageRef = (0, _react.useRef)(null);
85
+ const actualImageRef = (0, _react.useRef)(null);
86
+ const loaded = (0, _helpers.useLoadImages)(expect, diff, actual);
87
+ const calcScale = (0, _react.useCallback)(() => {
88
+ const containerElement = containerRef.current;
89
+ const expectImage = expectImageRef.current;
90
+ const diffImage = diffImageRef.current;
91
+ const actualImage = actualImageRef.current;
92
+ if (!containerElement || !expectImage || !actualImage || !diffImage || !loaded) return setScale(1);
93
+ const borderSize = (0, _helpers.getBorderSize)(diffImage);
94
+
95
+ if (layout == 'vertical') {
96
+ const ratio = (diffImage.getBoundingClientRect().width - borderSize * 2) / diffImage.naturalWidth;
97
+ setScale(Math.min(1, ratio));
98
+ }
99
+
100
+ if (layout == 'horizontal') {
101
+ const ratio = // NOTE: 40px because we have two margins by 20px and 6px for borders
102
+ (containerElement.getBoundingClientRect().width - 40 - borderSize * 6) / [expectImage, diffImage, actualImage].map(image => image.naturalWidth).reduce((a, b) => a + b, 0);
103
+ setScale(Math.min(1, ratio));
104
+ }
105
+ }, [loaded, layout]);
106
+ (0, _helpers.useResizeObserver)(containerRef, calcScale);
107
+ (0, _react.useLayoutEffect)(calcScale, [calcScale]);
108
+ (0, _react.useLayoutEffect)(() => {
109
+ const diffImage = diffImageRef.current;
110
+ if (!diffImage || !loaded) return;
111
+ const ratio = diffImage.naturalWidth / diffImage.naturalHeight;
112
+ setLayout(ratio >= 2 ? 'vertical' : 'horizontal');
113
+ }, [loaded]);
114
+ (0, _helpers.useApplyScale)(expectImageRef, scale);
115
+ (0, _helpers.useApplyScale)(actualImageRef, scale);
116
+ (0, _react.useEffect)(() => {
117
+ if (loaded) (0, _readyForCapture.readyForCapture)();
118
+ }, [loaded]);
119
+ return /*#__PURE__*/_react.default.createElement(Container, {
120
+ ref: containerRef
121
+ }, loaded ? /*#__PURE__*/_react.default.createElement(ImagesLayout, {
122
+ layout: layout
123
+ }, /*#__PURE__*/_react.default.createElement(ImageLink, {
124
+ href: expect,
125
+ target: "_blank",
126
+ rel: "noopener noreferrer"
127
+ }, /*#__PURE__*/_react.default.createElement(Image, {
128
+ ref: expectImageRef,
129
+ borderColor: (0, _ImagesView.getBorderColor)(theme, _ImagesView.themeBorderColors.expect),
130
+ alt: "expect",
131
+ src: expect
132
+ })), /*#__PURE__*/_react.default.createElement(ImageDiffLink, {
133
+ href: diff,
134
+ target: "_blank",
135
+ rel: "noopener noreferrer"
136
+ }, /*#__PURE__*/_react.default.createElement(DiffImage, {
137
+ ref: diffImageRef,
138
+ borderColor: (0, _ImagesView.getBorderColor)(theme, _ImagesView.themeBorderColors.diff),
139
+ alt: "diff",
140
+ src: diff
141
+ })), /*#__PURE__*/_react.default.createElement(ImageLink, {
142
+ href: actual,
143
+ target: "_blank",
144
+ rel: "noopener noreferrer"
145
+ }, /*#__PURE__*/_react.default.createElement(Image, {
146
+ ref: actualImageRef,
147
+ borderColor: (0, _ImagesView.getBorderColor)(theme, _ImagesView.themeBorderColors.actual),
148
+ alt: "actual",
149
+ src: actual
150
+ }))) : /*#__PURE__*/_react.default.createElement(_components.Loader, {
151
+ size: 64
152
+ }));
153
+ });
154
+ exports.SideBySideView = SideBySideView;
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SlideView = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _theming = require("@storybook/theming");
11
+
12
+ var _ImagesView = require("./ImagesView");
13
+
14
+ var _helpers = require("../../helpers");
15
+
16
+ var _components = require("@storybook/components");
17
+
18
+ var _readyForCapture = require("../../../addon/readyForCapture");
19
+
20
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
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
+ const Container = _theming.styled.div({
25
+ position: 'relative',
26
+ display: 'flex'
27
+ });
28
+
29
+ const Input = _theming.styled.input({
30
+ position: 'absolute',
31
+ cursor: 'ew-resize',
32
+ appearance: 'none',
33
+ background: 'none',
34
+ boxShadow: 'none',
35
+ outline: 'none',
36
+ height: '100%',
37
+ width: '100%',
38
+ margin: '0',
39
+ zIndex: 1,
40
+ '&::-webkit-slider-runnable-track': {
41
+ height: '100%'
42
+ },
43
+ '&::-webkit-slider-thumb': {
44
+ boxShadow: '0 0 0 0.5px #888',
45
+ height: '100%',
46
+ width: '0px',
47
+ appearance: 'none'
48
+ },
49
+ '&::-moz-focus-outer': {
50
+ border: '0'
51
+ },
52
+ '&::-moz-range-track': {
53
+ height: '0'
54
+ },
55
+ '&::-moz-range-thumb': {
56
+ border: 'none',
57
+ boxShadow: '0 0 0 0.5px #888',
58
+ height: '100%',
59
+ width: '0px'
60
+ }
61
+ });
62
+
63
+ const ImageContainer = _theming.styled.div({
64
+ position: 'absolute',
65
+ width: '100%',
66
+ height: '100%',
67
+ overflow: 'hidden'
68
+ });
69
+
70
+ const ImageWrapper = (0, _theming.withTheme)(_theming.styled.div(_ref => {
71
+ let {
72
+ theme
73
+ } = _ref;
74
+ return {
75
+ background: theme.base == 'light' ? theme.color.mediumlight : theme.color.darker,
76
+ position: 'relative',
77
+ width: '100%',
78
+ height: '100%',
79
+ display: 'flex'
80
+ };
81
+ }));
82
+
83
+ const BaseImage = _theming.styled.img(_ref2 => {
84
+ let {
85
+ borderColor
86
+ } = _ref2;
87
+ return {
88
+ boxSizing: 'border-box',
89
+ border: "1px solid ".concat(borderColor),
90
+ maxWidth: '100%'
91
+ };
92
+ });
93
+
94
+ const Image = (0, _theming.styled)(BaseImage)({
95
+ position: 'absolute'
96
+ });
97
+ const DiffImage = (0, _theming.styled)(BaseImage)({
98
+ opacity: '0'
99
+ });
100
+ const SlideView = (0, _theming.withTheme)(_ref3 => {
101
+ let {
102
+ actual,
103
+ diff,
104
+ expect,
105
+ theme
106
+ } = _ref3;
107
+ const [step, setStep] = (0, _react.useState)(0);
108
+ const expectedImageContainerRef = (0, _react.useRef)(null);
109
+ const expectedImageWrapperRef = (0, _react.useRef)(null);
110
+ const expectImageRef = (0, _react.useRef)(null);
111
+ const diffImageRef = (0, _react.useRef)(null);
112
+ const actualImageRef = (0, _react.useRef)(null);
113
+ const loaded = (0, _helpers.useLoadImages)(expect, diff, actual);
114
+ const scale = (0, _helpers.useCalcScale)(diffImageRef, loaded);
115
+ (0, _helpers.useApplyScale)(expectImageRef, scale);
116
+ (0, _helpers.useApplyScale)(actualImageRef, scale);
117
+ const handleSlide = (0, _react.useCallback)(event => {
118
+ if (!expectedImageContainerRef.current || !expectedImageWrapperRef.current) return;
119
+ const offset = Number(event.target.value);
120
+ expectedImageContainerRef.current.style.right = "".concat(100 - offset, "%");
121
+ expectedImageWrapperRef.current.style.left = "".concat(100 - offset, "%");
122
+ }, []);
123
+ (0, _react.useLayoutEffect)(() => {
124
+ if (loaded && diffImageRef.current) setStep(100 / diffImageRef.current.getBoundingClientRect().width);
125
+ }, [loaded, scale]);
126
+ (0, _react.useLayoutEffect)(() => {
127
+ if (loaded && expectedImageContainerRef.current && expectedImageWrapperRef.current) {
128
+ expectedImageContainerRef.current.style.right = '100%';
129
+ expectedImageWrapperRef.current.style.left = '100%';
130
+ }
131
+ }, [loaded]);
132
+ (0, _react.useEffect)(() => {
133
+ if (loaded) (0, _readyForCapture.readyForCapture)();
134
+ }, [loaded]);
135
+ return loaded ? /*#__PURE__*/_react.default.createElement(Container, null, /*#__PURE__*/_react.default.createElement(Input, {
136
+ "data-testid": "slider",
137
+ type: "range",
138
+ min: 0,
139
+ max: 100,
140
+ defaultValue: 0,
141
+ step: step,
142
+ onChange: handleSlide
143
+ }), /*#__PURE__*/_react.default.createElement(ImageContainer, null, /*#__PURE__*/_react.default.createElement(ImageWrapper, null, /*#__PURE__*/_react.default.createElement(Image, {
144
+ ref: actualImageRef,
145
+ borderColor: (0, _ImagesView.getBorderColor)(theme, _ImagesView.themeBorderColors.actual),
146
+ alt: "actual",
147
+ src: actual
148
+ }))), /*#__PURE__*/_react.default.createElement(ImageContainer, {
149
+ ref: expectedImageContainerRef
150
+ }, /*#__PURE__*/_react.default.createElement(ImageWrapper, {
151
+ ref: expectedImageWrapperRef
152
+ }, /*#__PURE__*/_react.default.createElement(Image, {
153
+ ref: expectImageRef,
154
+ borderColor: (0, _ImagesView.getBorderColor)(theme, _ImagesView.themeBorderColors.expect),
155
+ alt: "expect",
156
+ src: expect
157
+ }))), /*#__PURE__*/_react.default.createElement(DiffImage, {
158
+ ref: diffImageRef,
159
+ borderColor: 'transparent',
160
+ alt: "diff",
161
+ src: diff
162
+ })) : /*#__PURE__*/_react.default.createElement(_components.Loader, {
163
+ size: 64
164
+ });
165
+ });
166
+ exports.SlideView = SlideView;
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SwapView = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _ImagesView = require("./ImagesView");
11
+
12
+ var _theming = require("@storybook/theming");
13
+
14
+ var _helpers = require("../../helpers");
15
+
16
+ var _components = require("@storybook/components");
17
+
18
+ var _readyForCapture = require("../../../addon/readyForCapture");
19
+
20
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
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
+ const Container = _theming.styled.div({
25
+ position: 'relative',
26
+ display: 'flex'
27
+ });
28
+
29
+ const BaseImage = _theming.styled.img(_ref => {
30
+ let {
31
+ borderColor
32
+ } = _ref;
33
+ return {
34
+ boxSizing: 'border-box',
35
+ border: "1px solid ".concat(borderColor),
36
+ maxWidth: '100%'
37
+ };
38
+ });
39
+
40
+ const Image = (0, _theming.styled)(BaseImage)({
41
+ position: 'absolute'
42
+ });
43
+ const DiffImage = (0, _theming.styled)(BaseImage)({
44
+ cursor: 'pointer',
45
+ outline: 'none',
46
+ opacity: 0,
47
+ zIndex: 1
48
+ });
49
+ const SwapView = (0, _theming.withTheme)(_ref2 => {
50
+ let {
51
+ theme,
52
+ expect,
53
+ actual,
54
+ diff
55
+ } = _ref2;
56
+ const [image, setImage] = (0, _react.useState)('actual');
57
+ const expectImageRef = (0, _react.useRef)(null);
58
+ const diffImageRef = (0, _react.useRef)(null);
59
+ const actualImageRef = (0, _react.useRef)(null);
60
+ const loaded = (0, _helpers.useLoadImages)(expect, diff, actual);
61
+ const scale = (0, _helpers.useCalcScale)(diffImageRef, loaded);
62
+ (0, _helpers.useApplyScale)(expectImageRef, scale, image);
63
+ (0, _helpers.useApplyScale)(actualImageRef, scale, image);
64
+ const handleChangeView = (0, _react.useCallback)(() => setImage(prevImage => prevImage == 'actual' ? 'expect' : 'actual'), []);
65
+ (0, _react.useEffect)(() => {
66
+ if (loaded) (0, _readyForCapture.readyForCapture)();
67
+ }, [loaded]);
68
+ return loaded ? /*#__PURE__*/_react.default.createElement(Container, null, /*#__PURE__*/_react.default.createElement(Image, {
69
+ ref: expectImageRef,
70
+ borderColor: (0, _ImagesView.getBorderColor)(theme, _ImagesView.themeBorderColors.expect),
71
+ alt: 'expect',
72
+ src: expect,
73
+ hidden: image != 'expect'
74
+ }), /*#__PURE__*/_react.default.createElement(DiffImage, {
75
+ ref: diffImageRef,
76
+ borderColor: 'transparent',
77
+ tabIndex: 0,
78
+ alt: "diff",
79
+ src: diff,
80
+ onClick: handleChangeView
81
+ }), /*#__PURE__*/_react.default.createElement(Image, {
82
+ ref: actualImageRef,
83
+ borderColor: (0, _ImagesView.getBorderColor)(theme, _ImagesView.themeBorderColors.actual),
84
+ alt: 'actual',
85
+ src: actual,
86
+ hidden: image != 'actual'
87
+ })) : /*#__PURE__*/_react.default.createElement(_components.Loader, {
88
+ size: 64
89
+ });
90
+ });
91
+ exports.SwapView = SwapView;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "BlendView", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _BlendView.BlendView;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "ImagesView", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _ImagesView.ImagesView;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "SideBySideView", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _SideBySideView.SideBySideView;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "SlideView", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _SlideView.SlideView;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "SwapView", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _SwapView.SwapView;
34
+ }
35
+ });
36
+
37
+ var _ImagesView = require("./ImagesView");
38
+
39
+ var _BlendView = require("./BlendView");
40
+
41
+ var _SideBySideView = require("./SideBySideView");
42
+
43
+ var _SlideView = require("./SlideView");
44
+
45
+ var _SwapView = require("./SwapView");
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.PageFooter = PageFooter;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _Paging = require("./Paging");
11
+
12
+ var _theming = require("@storybook/theming");
13
+
14
+ var _components = require("@storybook/components");
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ const Container = (0, _theming.withTheme)(_theming.styled.div(_ref => {
19
+ let {
20
+ theme
21
+ } = _ref;
22
+ return {
23
+ display: 'flex',
24
+ padding: '20px',
25
+ justifyContent: 'space-between',
26
+ background: theme.background.content
27
+ };
28
+ }));
29
+ const StyledButton = (0, _theming.styled)(_components.Button)({
30
+ transform: 'none'
31
+ });
32
+
33
+ function PageFooter(_ref2) {
34
+ let {
35
+ canApprove,
36
+ retriesCount,
37
+ retry,
38
+ onRetryChange,
39
+ onApprove
40
+ } = _ref2;
41
+ return /*#__PURE__*/_react.default.createElement(Container, null, /*#__PURE__*/_react.default.createElement(_Paging.Paging, {
42
+ activePage: retry,
43
+ onPageChange: onRetryChange,
44
+ pagesCount: retriesCount
45
+ }), canApprove ? /*#__PURE__*/_react.default.createElement(StyledButton, {
46
+ secondary: true,
47
+ outline: true,
48
+ onClick: onApprove
49
+ }, 'Approve') : null);
50
+ }