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
@@ -4,73 +4,39 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.calcStatus = calcStatus;
|
7
|
-
exports.getTestPath = getTestPath;
|
8
|
-
exports.getSuiteByPath = getSuiteByPath;
|
9
|
-
exports.getTestByPath = getTestByPath;
|
10
|
-
exports.getTestsByStoryId = getTestsByStoryId;
|
11
7
|
exports.checkSuite = checkSuite;
|
12
|
-
exports.
|
13
|
-
exports.getCheckedTests = getCheckedTests;
|
14
|
-
exports.updateTestStatus = updateTestStatus;
|
15
|
-
exports.removeTests = removeTests;
|
8
|
+
exports.countTestsStatus = countTestsStatus;
|
16
9
|
exports.filterTests = filterTests;
|
17
|
-
exports.openSuite = openSuite;
|
18
10
|
exports.flattenSuite = flattenSuite;
|
19
|
-
exports.
|
11
|
+
exports.getBorderSize = getBorderSize;
|
12
|
+
exports.getCheckedTests = getCheckedTests;
|
20
13
|
exports.getConnectionUrl = getConnectionUrl;
|
21
14
|
exports.getImageUrl = getImageUrl;
|
22
|
-
exports.
|
23
|
-
exports.
|
24
|
-
exports.
|
15
|
+
exports.getSuiteByPath = getSuiteByPath;
|
16
|
+
exports.getTestByPath = getTestByPath;
|
17
|
+
exports.getTestPath = getTestPath;
|
18
|
+
exports.getTestPathFromSearch = getTestPathFromSearch;
|
19
|
+
exports.getTestsByStoryId = getTestsByStoryId;
|
20
|
+
exports.openSuite = openSuite;
|
21
|
+
exports.removeTests = removeTests;
|
22
|
+
exports.setSearchParams = setSearchParams;
|
23
|
+
exports.treeifyTests = treeifyTests;
|
24
|
+
exports.updateTestStatus = updateTestStatus;
|
25
25
|
exports.useApplyScale = useApplyScale;
|
26
26
|
exports.useCalcScale = useCalcScale;
|
27
|
-
exports.useTheme = useTheme;
|
28
|
-
exports.setSearchParams = setSearchParams;
|
29
|
-
exports.getTestPathFromSearch = getTestPathFromSearch;
|
30
27
|
exports.useForceUpdate = useForceUpdate;
|
31
|
-
|
28
|
+
exports.useLoadImages = useLoadImages;
|
29
|
+
exports.useResizeObserver = useResizeObserver;
|
30
|
+
exports.useTheme = useTheme;
|
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
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
41
|
-
|
42
|
-
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; }
|
43
|
-
|
44
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
45
|
-
|
46
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
47
|
-
|
48
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
49
|
-
|
50
|
-
function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }
|
51
|
-
|
52
|
-
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."); }
|
53
|
-
|
54
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
55
|
-
|
56
|
-
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
57
|
-
|
58
|
-
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
59
|
-
|
60
|
-
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); }
|
61
|
-
|
62
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
63
|
-
|
64
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
65
|
-
|
66
|
-
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; }
|
67
|
-
|
68
|
-
var statusUpdatesMap = new Map([[undefined, /(unknown|success|failed|pending|running)/], ['unknown', /(success|failed|pending|running)/], ['success', /(failed|pending|running)/], ['failed', /(pending|running)/], ['pending', /running/]]);
|
69
|
-
|
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/]]);
|
70
36
|
function makeEmptySuiteNode() {
|
71
|
-
|
37
|
+
let path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
72
38
|
return {
|
73
|
-
path
|
39
|
+
path,
|
74
40
|
skip: true,
|
75
41
|
opened: false,
|
76
42
|
checked: true,
|
@@ -78,217 +44,175 @@ function makeEmptySuiteNode() {
|
|
78
44
|
children: {}
|
79
45
|
};
|
80
46
|
}
|
81
|
-
|
82
47
|
function calcStatus(oldStatus, newStatus) {
|
83
|
-
|
84
|
-
|
85
|
-
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;
|
86
49
|
}
|
87
|
-
|
88
50
|
function getTestPath(test) {
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
51
|
+
const {
|
52
|
+
browser,
|
53
|
+
testName,
|
54
|
+
storyPath
|
55
|
+
} = test;
|
56
|
+
return [...storyPath, testName, browser].filter(_types.isDefined);
|
93
57
|
}
|
94
|
-
|
95
58
|
function getSuiteByPath(suite, path) {
|
96
|
-
return path.reduce(
|
97
|
-
return (0, _types.isTest)(suiteOrTest) ? suiteOrTest : suiteOrTest === null || suiteOrTest === void 0 ? void 0 : suiteOrTest.children[pathToken];
|
98
|
-
}, suite);
|
59
|
+
return path.reduce((suiteOrTest, pathToken) => (0, _types.isTest)(suiteOrTest) ? suiteOrTest : suiteOrTest?.children[pathToken], suite);
|
99
60
|
}
|
100
|
-
|
101
61
|
function getTestByPath(suite, path) {
|
102
|
-
|
103
|
-
|
104
|
-
var test = (_getSuiteByPath = getSuiteByPath(suite, path)) !== null && _getSuiteByPath !== void 0 ? _getSuiteByPath : suite;
|
62
|
+
const test = getSuiteByPath(suite, path) ?? suite;
|
105
63
|
return (0, _types.isTest)(test) ? test : null;
|
106
64
|
}
|
107
|
-
|
108
65
|
function getTestsByStoryId(suite, storyId) {
|
109
|
-
return Object.values(suite.children).filter(_types.isDefined).flatMap(
|
66
|
+
return Object.values(suite.children).filter(_types.isDefined).flatMap(suiteOrTest => {
|
110
67
|
if ((0, _types.isTest)(suiteOrTest)) return suiteOrTest.storyId === storyId ? suiteOrTest : [];
|
111
68
|
return getTestsByStoryId(suiteOrTest, storyId);
|
112
69
|
}).filter(_types.isDefined);
|
113
70
|
}
|
114
|
-
|
115
71
|
function checkTests(suiteOrTest, checked) {
|
116
72
|
suiteOrTest.checked = checked;
|
117
|
-
|
118
73
|
if (!(0, _types.isTest)(suiteOrTest)) {
|
119
74
|
suiteOrTest.indeterminate = false;
|
120
|
-
Object.values(suiteOrTest.children).filter(_types.isDefined).forEach(
|
121
|
-
return checkTests(child, checked);
|
122
|
-
});
|
75
|
+
Object.values(suiteOrTest.children).filter(_types.isDefined).forEach(child => checkTests(child, checked));
|
123
76
|
}
|
124
77
|
}
|
125
|
-
|
126
78
|
function updateChecked(suite) {
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
});
|
133
|
-
var checkedSome = children.some(function (test) {
|
134
|
-
return test.checked;
|
135
|
-
});
|
136
|
-
var indeterminate = children.some(function (test) {
|
137
|
-
return (0, _types.isTest)(test) ? false : test.indeterminate;
|
138
|
-
}) || !checkedEvery && checkedSome;
|
139
|
-
var checked = indeterminate || suite.checked == checkedEvery ? suite.checked : checkedEvery;
|
79
|
+
const children = Object.values(suite.children).filter(_types.isDefined).filter(child => !child.skip);
|
80
|
+
const checkedEvery = children.every(test => test.checked);
|
81
|
+
const checkedSome = children.some(test => test.checked);
|
82
|
+
const indeterminate = children.some(test => (0, _types.isTest)(test) ? false : test.indeterminate) || !checkedEvery && checkedSome;
|
83
|
+
const checked = indeterminate || suite.checked == checkedEvery ? suite.checked : checkedEvery;
|
140
84
|
suite.checked = checked;
|
141
85
|
suite.indeterminate = indeterminate;
|
142
86
|
}
|
143
|
-
|
144
87
|
function checkSuite(suite, path, checked) {
|
145
|
-
|
88
|
+
const subSuite = getSuiteByPath(suite, path);
|
146
89
|
if (subSuite) checkTests(subSuite, checked);
|
147
|
-
path.slice(0, -1).map(
|
148
|
-
|
149
|
-
}).forEach(function (parentPath) {
|
150
|
-
var parentSuite = getSuiteByPath(suite, parentPath);
|
90
|
+
path.slice(0, -1).map((_, index, tokens) => tokens.slice(0, tokens.length - index)).forEach(parentPath => {
|
91
|
+
const parentSuite = getSuiteByPath(suite, parentPath);
|
151
92
|
if ((0, _types.isTest)(parentSuite)) return;
|
152
93
|
if (parentSuite) updateChecked(parentSuite);
|
153
94
|
});
|
154
95
|
updateChecked(suite);
|
155
96
|
}
|
156
|
-
|
157
97
|
function treeifyTests(testsById) {
|
158
|
-
|
98
|
+
const rootSuite = makeEmptySuiteNode();
|
159
99
|
rootSuite.opened = true;
|
160
|
-
Object.values(testsById).forEach(
|
100
|
+
Object.values(testsById).forEach(test => {
|
161
101
|
if (!test) return;
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
browser = _getTestPath$reverse2[0],
|
166
|
-
testPath = _getTestPath$reverse2.slice(1);
|
167
|
-
|
168
|
-
var lastSuite = testPath.reverse().reduce(function (suite, token) {
|
169
|
-
var subSuite = suite.children[token] || makeEmptySuiteNode([].concat(_toConsumableArray(suite.path), [token]));
|
102
|
+
const [browser, ...testPath] = getTestPath(test).reverse();
|
103
|
+
const lastSuite = testPath.reverse().reduce((suite, token) => {
|
104
|
+
const subSuite = suite.children[token] || makeEmptySuiteNode([...suite.path, token]);
|
170
105
|
subSuite.status = calcStatus(subSuite.status, test.status);
|
171
106
|
if (!test.skip) subSuite.skip = false;
|
172
107
|
if (!subSuite.skip) suite.skip = false;
|
173
108
|
suite.children[token] = subSuite;
|
174
109
|
suite.status = calcStatus(suite.status, subSuite.status);
|
175
|
-
|
176
110
|
if ((0, _types.isTest)(subSuite)) {
|
177
|
-
throw new Error(
|
111
|
+
throw new Error(`Suite and Test should not have same path '${JSON.stringify(getTestPath(subSuite))}'`);
|
178
112
|
}
|
179
|
-
|
180
113
|
return subSuite;
|
181
114
|
}, rootSuite);
|
182
|
-
lastSuite.children[browser] =
|
115
|
+
lastSuite.children[browser] = {
|
116
|
+
...test,
|
183
117
|
checked: true
|
184
|
-
}
|
118
|
+
};
|
185
119
|
});
|
186
120
|
return rootSuite;
|
187
121
|
}
|
188
|
-
|
189
122
|
function getCheckedTests(suite) {
|
190
|
-
return Object.values(suite.children).filter(_types.isDefined).flatMap(
|
123
|
+
return Object.values(suite.children).filter(_types.isDefined).flatMap(suiteOrTest => {
|
191
124
|
if ((0, _types.isTest)(suiteOrTest)) return suiteOrTest.checked ? suiteOrTest : [];
|
192
125
|
if (!suiteOrTest.checked && !suiteOrTest.indeterminate) return [];
|
193
126
|
return getCheckedTests(suiteOrTest);
|
194
127
|
});
|
195
128
|
}
|
196
|
-
|
197
129
|
function updateTestStatus(suite, path, update) {
|
198
|
-
|
199
|
-
|
200
|
-
var title = path.shift();
|
130
|
+
const title = path.shift();
|
201
131
|
if (!title) return;
|
202
|
-
|
132
|
+
const suiteOrTest = suite.children[title] ?? (suite.children[title] = {
|
133
|
+
...(path.length == 0 ? update : makeEmptySuiteNode([...suite.path, title])),
|
203
134
|
checked: suite.checked
|
204
135
|
});
|
205
|
-
|
206
136
|
if ((0, _types.isTest)(suiteOrTest)) {
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
137
|
+
const test = suiteOrTest;
|
138
|
+
const {
|
139
|
+
skip,
|
140
|
+
status,
|
141
|
+
results,
|
142
|
+
approved
|
143
|
+
} = update;
|
214
144
|
if ((0, _types.isDefined)(skip)) test.skip = skip;
|
215
145
|
if ((0, _types.isDefined)(status)) test.status = status;
|
216
|
-
if ((0, _types.isDefined)(results)) test.results ?
|
217
|
-
if ((0, _types.isDefined)(approved)) Object.entries(approved).forEach(
|
218
|
-
|
219
|
-
image = _ref2[0],
|
220
|
-
retry = _ref2[1];
|
221
|
-
|
146
|
+
if ((0, _types.isDefined)(results)) test.results ? test.results.push(...results) : test.results = results;
|
147
|
+
if ((0, _types.isDefined)(approved)) Object.entries(approved).forEach(_ref => {
|
148
|
+
let [image, retry] = _ref;
|
222
149
|
return retry !== undefined && ((test.approved = test.approved || {})[image] = retry);
|
223
150
|
});
|
224
151
|
} else {
|
225
|
-
|
152
|
+
const subSuite = suiteOrTest;
|
226
153
|
updateTestStatus(subSuite, path, update);
|
227
154
|
}
|
228
|
-
|
229
|
-
|
230
|
-
|
155
|
+
suite.skip = Object.values(suite.children).filter(_types.isDefined).map(_ref2 => {
|
156
|
+
let {
|
157
|
+
skip
|
158
|
+
} = _ref2;
|
231
159
|
return skip;
|
232
160
|
}).every(Boolean);
|
233
|
-
suite.status = Object.values(suite.children).filter(_types.isDefined).map(
|
234
|
-
|
161
|
+
suite.status = Object.values(suite.children).filter(_types.isDefined).map(_ref3 => {
|
162
|
+
let {
|
163
|
+
status
|
164
|
+
} = _ref3;
|
235
165
|
return status;
|
236
166
|
}).reduce(calcStatus);
|
237
167
|
}
|
238
|
-
|
239
168
|
function removeTests(suite, path) {
|
240
|
-
|
241
|
-
|
242
|
-
var title = path.shift();
|
169
|
+
const title = path.shift();
|
243
170
|
if (!title) return;
|
244
|
-
|
171
|
+
const suiteOrTest = suite.children[title];
|
245
172
|
if (suiteOrTest && !(0, _types.isTest)(suiteOrTest)) removeTests(suiteOrTest, path);
|
246
|
-
if ((0, _types.isTest)(suiteOrTest) || Object.keys(
|
173
|
+
if ((0, _types.isTest)(suiteOrTest) || Object.keys(suiteOrTest?.children ?? {}).length == 0) delete suite.children[title];
|
247
174
|
if (Object.keys(suite.children).length == 0) return;
|
248
175
|
updateChecked(suite);
|
249
|
-
suite.skip = Object.values(suite.children).filter(_types.isDefined).map(
|
250
|
-
|
176
|
+
suite.skip = Object.values(suite.children).filter(_types.isDefined).map(_ref4 => {
|
177
|
+
let {
|
178
|
+
skip
|
179
|
+
} = _ref4;
|
251
180
|
return skip;
|
252
181
|
}).every(Boolean);
|
253
|
-
suite.status = Object.values(suite.children).filter(_types.isDefined).map(
|
254
|
-
|
182
|
+
suite.status = Object.values(suite.children).filter(_types.isDefined).map(_ref5 => {
|
183
|
+
let {
|
184
|
+
status
|
185
|
+
} = _ref5;
|
255
186
|
return status;
|
256
187
|
}).reduce(calcStatus);
|
257
188
|
}
|
258
|
-
|
259
189
|
function filterTests(suite, filter) {
|
260
|
-
|
261
|
-
|
190
|
+
const {
|
191
|
+
status,
|
192
|
+
subStrings
|
193
|
+
} = filter;
|
262
194
|
if (!status && !subStrings.length) return suite;
|
263
|
-
|
264
|
-
|
195
|
+
const filteredSuite = {
|
196
|
+
...suite,
|
265
197
|
children: {}
|
266
|
-
}
|
267
|
-
|
268
|
-
|
269
|
-
var _ref8 = _slicedToArray(_ref7, 2),
|
270
|
-
title = _ref8[0],
|
271
|
-
suiteOrTest = _ref8[1];
|
272
|
-
|
198
|
+
};
|
199
|
+
Object.entries(suite.children).forEach(_ref6 => {
|
200
|
+
let [title, suiteOrTest] = _ref6;
|
273
201
|
if (!suiteOrTest || suiteOrTest.skip) return;
|
274
|
-
|
275
|
-
if (!status && subStrings.some(function (subString) {
|
276
|
-
return title.toLowerCase().includes(subString);
|
277
|
-
})) {
|
202
|
+
if (!status && subStrings.some(subString => title.toLowerCase().includes(subString))) {
|
278
203
|
filteredSuite.children[title] = suiteOrTest;
|
279
204
|
} else if ((0, _types.isTest)(suiteOrTest)) {
|
280
205
|
if (status && suiteOrTest.status && ['pending', 'running', status].includes(suiteOrTest.status)) filteredSuite.children[title] = suiteOrTest;
|
281
206
|
} else {
|
282
|
-
|
207
|
+
const filteredSubSuite = filterTests(suiteOrTest, filter);
|
283
208
|
if (Object.keys(filteredSubSuite.children).length == 0) return;
|
284
209
|
filteredSuite.children[title] = filteredSubSuite;
|
285
210
|
}
|
286
211
|
});
|
287
212
|
return filteredSuite;
|
288
213
|
}
|
289
|
-
|
290
214
|
function openSuite(suite, path, opened) {
|
291
|
-
|
215
|
+
const subSuite = path.reduce((suiteOrTest, pathToken) => {
|
292
216
|
if (suiteOrTest && !(0, _types.isTest)(suiteOrTest)) {
|
293
217
|
if (opened) suiteOrTest.opened = opened;
|
294
218
|
return suiteOrTest.children[pathToken];
|
@@ -296,29 +220,23 @@ function openSuite(suite, path, opened) {
|
|
296
220
|
}, suite);
|
297
221
|
if (subSuite && !(0, _types.isTest)(subSuite)) subSuite.opened = opened;
|
298
222
|
}
|
299
|
-
|
300
223
|
function flattenSuite(suite) {
|
301
224
|
if (!suite.opened) return [];
|
302
|
-
return Object.entries(suite.children).flatMap(
|
303
|
-
|
304
|
-
title = _ref10[0],
|
305
|
-
subSuite = _ref10[1];
|
306
|
-
|
225
|
+
return Object.entries(suite.children).flatMap(_ref7 => {
|
226
|
+
let [title, subSuite] = _ref7;
|
307
227
|
return subSuite ? [{
|
308
|
-
title
|
228
|
+
title,
|
309
229
|
suite: subSuite
|
310
|
-
}
|
230
|
+
}, ...((0, _types.isTest)(subSuite) ? [] : flattenSuite(subSuite))] : [];
|
311
231
|
});
|
312
232
|
}
|
313
|
-
|
314
233
|
function countTestsStatus(suite) {
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
234
|
+
let successCount = 0;
|
235
|
+
let failedCount = 0;
|
236
|
+
let skippedCount = 0;
|
237
|
+
let pendingCount = 0;
|
238
|
+
const cases = Object.values(suite.children).filter(_types.isDefined);
|
239
|
+
let suiteOrTest;
|
322
240
|
while (suiteOrTest = cases.pop()) {
|
323
241
|
if ((0, _types.isTest)(suiteOrTest)) {
|
324
242
|
if (suiteOrTest.skip) skippedCount++;
|
@@ -326,157 +244,114 @@ function countTestsStatus(suite) {
|
|
326
244
|
if (suiteOrTest.status === 'failed') failedCount++;
|
327
245
|
if (suiteOrTest.status === 'pending') pendingCount++;
|
328
246
|
} else {
|
329
|
-
cases.push
|
247
|
+
cases.push(...Object.values(suiteOrTest.children).filter(_types.isDefined));
|
330
248
|
}
|
331
249
|
}
|
332
|
-
|
333
250
|
return {
|
334
|
-
successCount
|
335
|
-
failedCount
|
336
|
-
skippedCount
|
337
|
-
pendingCount
|
251
|
+
successCount,
|
252
|
+
failedCount,
|
253
|
+
skippedCount,
|
254
|
+
pendingCount
|
338
255
|
};
|
339
256
|
}
|
340
|
-
|
341
257
|
function getConnectionUrl() {
|
342
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(':');
|
343
259
|
}
|
344
|
-
|
345
260
|
function getImageUrl(path, imageName) {
|
346
261
|
// path => [kind, story, test, browser]
|
347
|
-
|
348
|
-
|
349
|
-
return imageName == browser ? imagesUrl :
|
262
|
+
const browser = path.slice(-1)[0];
|
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)}`;
|
350
265
|
}
|
351
|
-
|
352
266
|
function getBorderSize(element) {
|
353
267
|
// NOTE Firefox returns empty string for `borderWidth` prop
|
354
|
-
|
268
|
+
const borderSize = parseFloat(getComputedStyle(element).borderTopWidth);
|
355
269
|
return Number.isNaN(borderSize) ? 0 : borderSize;
|
356
270
|
}
|
357
|
-
|
358
271
|
function useLoadImages(s1, s2, s3) {
|
359
|
-
|
360
|
-
|
361
|
-
loaded = _useState2[0],
|
362
|
-
setLoaded = _useState2[1];
|
363
|
-
|
364
|
-
(0, _react.useEffect)(function () {
|
272
|
+
const [loaded, setLoaded] = (0, _react.useState)(false);
|
273
|
+
(0, _react.useEffect)(() => {
|
365
274
|
setLoaded(false);
|
366
|
-
void Promise.all([s1, s2, s3].map(
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
});
|
373
|
-
})).then(function () {
|
374
|
-
return setLoaded(true);
|
375
|
-
});
|
275
|
+
void Promise.all([s1, s2, s3].map(url => new Promise(resolve => {
|
276
|
+
const image = document.createElement('img');
|
277
|
+
image.src = url;
|
278
|
+
image.onload = resolve;
|
279
|
+
image.onerror = resolve;
|
280
|
+
}))).then(() => setLoaded(true));
|
376
281
|
}, [s1, s2, s3]);
|
377
282
|
return loaded;
|
378
283
|
}
|
284
|
+
|
379
285
|
/**
|
380
286
|
* Uses the ResizeObserver API to observe changes within the given HTML Element DOM Rect.
|
381
287
|
*
|
382
288
|
* @returns dimensions of element's content box (which means without paddings and border width)
|
383
289
|
*/
|
384
|
-
|
385
|
-
|
386
290
|
function useResizeObserver(elementRef, onResize) {
|
387
|
-
|
388
|
-
|
389
|
-
(0, _react.useEffect)(
|
291
|
+
let debounceTimeout = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 16;
|
292
|
+
const observerRef = (0, _react.useRef)(null);
|
293
|
+
(0, _react.useEffect)(() => {
|
390
294
|
if (!elementRef.current) return;
|
391
295
|
observerRef.current = new ResizeObserver(onResize);
|
392
296
|
observerRef.current.observe(elementRef.current);
|
393
|
-
return
|
394
|
-
var _observerRef$current;
|
395
|
-
|
396
|
-
return (_observerRef$current = observerRef.current) === null || _observerRef$current === void 0 ? void 0 : _observerRef$current.disconnect();
|
397
|
-
};
|
297
|
+
return () => observerRef.current?.disconnect();
|
398
298
|
}, [debounceTimeout, elementRef, onResize]);
|
399
299
|
}
|
400
|
-
|
401
300
|
function useApplyScale(imageRef, scale, dependency) {
|
402
|
-
(0, _react.useLayoutEffect)(
|
301
|
+
(0, _react.useLayoutEffect)(() => {
|
403
302
|
if (!imageRef.current) return;
|
404
|
-
|
405
|
-
|
406
|
-
image.style.height =
|
303
|
+
const image = imageRef.current;
|
304
|
+
const borderSize = getBorderSize(image);
|
305
|
+
image.style.height = `${image.naturalHeight * scale + borderSize * 2}px`;
|
407
306
|
}, [imageRef, scale, dependency]);
|
408
307
|
}
|
409
|
-
|
410
308
|
function useCalcScale(diffImageRef, loaded) {
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
setScale = _useState4[1];
|
415
|
-
|
416
|
-
var calcScale = (0, _react.useCallback)(function () {
|
417
|
-
var diffImage = diffImageRef.current;
|
309
|
+
const [scale, setScale] = (0, _react.useState)(1);
|
310
|
+
const calcScale = (0, _react.useCallback)(() => {
|
311
|
+
const diffImage = diffImageRef.current;
|
418
312
|
if (!diffImage || !loaded) return setScale(1);
|
419
|
-
|
420
|
-
|
313
|
+
const borderSize = getBorderSize(diffImage);
|
314
|
+
const ratio = (diffImage.getBoundingClientRect().width - borderSize * 2) / diffImage.naturalWidth;
|
421
315
|
setScale(Math.min(1, ratio));
|
422
316
|
}, [diffImageRef, loaded]);
|
423
317
|
useResizeObserver(diffImageRef, calcScale);
|
424
318
|
(0, _react.useLayoutEffect)(calcScale, [calcScale]);
|
425
319
|
return scale;
|
426
320
|
}
|
427
|
-
|
428
|
-
var CREEVEY_THEME = 'Creevey_theme';
|
429
|
-
|
321
|
+
const CREEVEY_THEME = 'Creevey_theme';
|
430
322
|
function isTheme(theme) {
|
431
323
|
return (0, _types.isDefined)(theme) && Object.prototype.hasOwnProperty.call(_theming.themes, theme);
|
432
324
|
}
|
433
|
-
|
434
325
|
function initialTheme() {
|
435
|
-
|
326
|
+
const theme = localStorage.getItem(CREEVEY_THEME);
|
436
327
|
return isTheme(theme) ? theme : 'light';
|
437
328
|
}
|
438
|
-
|
439
329
|
function useTheme() {
|
440
|
-
|
441
|
-
|
442
|
-
theme = _useState6[0],
|
443
|
-
setTheme = _useState6[1];
|
444
|
-
|
445
|
-
(0, _react.useEffect)(function () {
|
330
|
+
const [theme, setTheme] = (0, _react.useState)(initialTheme());
|
331
|
+
(0, _react.useEffect)(() => {
|
446
332
|
localStorage.setItem(CREEVEY_THEME, theme);
|
447
333
|
}, [theme]);
|
448
334
|
return [theme, setTheme];
|
449
335
|
}
|
450
|
-
|
451
336
|
function setSearchParams(testPath) {
|
452
|
-
|
453
|
-
testPath
|
454
|
-
})
|
337
|
+
const pageUrl = `?${(0, _qs.stringify)({
|
338
|
+
testPath
|
339
|
+
})}`;
|
455
340
|
window.history.pushState({
|
456
|
-
testPath
|
341
|
+
testPath
|
457
342
|
}, '', pageUrl);
|
458
343
|
}
|
459
|
-
|
460
344
|
function getTestPathFromSearch() {
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
if (Array.isArray(testPath) && testPath.every(
|
466
|
-
return typeof token == 'string';
|
467
|
-
})) {
|
345
|
+
const {
|
346
|
+
testPath
|
347
|
+
} = (0, _qs.parse)(window.location.search.slice(1));
|
348
|
+
//@ts-expect-error: This expression is not callable.
|
349
|
+
if (Array.isArray(testPath) && testPath.every(token => typeof token == 'string')) {
|
468
350
|
return testPath;
|
469
351
|
}
|
470
|
-
|
471
352
|
return [];
|
472
353
|
}
|
473
|
-
|
474
354
|
function useForceUpdate() {
|
475
|
-
|
476
|
-
|
477
|
-
update = _useState8[1];
|
478
|
-
|
479
|
-
return (0, _react.useCallback)(function () {
|
480
|
-
return update({});
|
481
|
-
}, []);
|
355
|
+
const [, update] = (0, _react.useState)({});
|
356
|
+
return (0, _react.useCallback)(() => update({}), []);
|
482
357
|
}
|
@@ -3,15 +3,11 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.
|
7
|
-
|
8
|
-
exports.
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
var getViewMode = function getViewMode() {
|
13
|
-
var item = localStorage.getItem(VIEW_MODE_KEY);
|
6
|
+
exports.viewModes = exports.getViewMode = exports.VIEW_MODE_KEY = void 0;
|
7
|
+
const VIEW_MODE_KEY = exports.VIEW_MODE_KEY = 'Creevey_view_mode';
|
8
|
+
const viewModes = exports.viewModes = ['side-by-side', 'swap', 'slide', 'blend'];
|
9
|
+
const getViewMode = () => {
|
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)}}]);
|