creevey 0.9.0-beta.2 → 0.9.0-non-webpack.1
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/AUTHORS +15 -15
- package/CHANGELOG.md +1275 -1275
- package/LICENSE +21 -21
- package/README.md +7 -0
- package/addon/README.md +3 -0
- package/addon/package.json +4 -0
- package/docs/config.md +212 -212
- package/docs/grid.md +10 -10
- package/docs/tests.md +63 -63
- package/jest.config.js +6 -0
- package/lib/cjs/client/addon/Manager.js +123 -271
- package/lib/cjs/client/addon/components/Addon.js +17 -38
- package/lib/cjs/client/addon/components/Icons.js +12 -8
- package/lib/cjs/client/addon/components/Panel.js +17 -13
- package/lib/cjs/client/addon/components/TestSelect.js +11 -9
- package/lib/cjs/client/addon/components/Tools.js +21 -40
- package/lib/cjs/client/addon/decorator.js +1 -1
- package/lib/cjs/client/addon/index.js +31 -0
- package/lib/cjs/client/addon/preset.js +13 -32
- package/lib/cjs/client/addon/register.js +46 -70
- package/lib/cjs/client/addon/utils.js +1 -1
- package/lib/cjs/client/addon/withCreevey.js +164 -344
- package/lib/cjs/client/shared/components/ImagesView/BlendView.js +23 -21
- package/lib/cjs/client/shared/components/ImagesView/ImagesView.js +22 -18
- package/lib/cjs/client/shared/components/ImagesView/SideBySideView.js +42 -64
- package/lib/cjs/client/shared/components/ImagesView/SlideView.js +35 -48
- package/lib/cjs/client/shared/components/ImagesView/SwapView.js +24 -43
- package/lib/cjs/client/shared/components/ImagesView/index.js +9 -9
- package/lib/cjs/client/shared/components/PageFooter/PageFooter.js +12 -8
- package/lib/cjs/client/shared/components/PageFooter/Paging.js +14 -18
- package/lib/cjs/client/shared/components/PageHeader/ImagePreview.js +22 -18
- package/lib/cjs/client/shared/components/PageHeader/PageHeader.js +42 -67
- package/lib/cjs/client/shared/components/ResultsPage.js +39 -69
- package/lib/cjs/client/shared/creeveyClientApi.js +55 -82
- package/lib/cjs/client/shared/helpers.js +143 -214
- package/lib/cjs/client/shared/viewMode.js +5 -5
- package/lib/cjs/client/web/142.js +2 -0
- package/lib/cjs/client/web/142.js.LICENSE.txt +12 -0
- package/lib/cjs/client/web/32.js +1 -0
- package/lib/cjs/client/web/551.js +1 -0
- package/lib/cjs/client/web/566.js +2 -0
- package/lib/cjs/client/web/566.js.LICENSE.txt +31 -0
- package/lib/cjs/client/web/691.js +2 -0
- package/lib/cjs/client/web/691.js.LICENSE.txt +8 -0
- package/lib/cjs/client/web/725.js +1 -0
- package/lib/cjs/client/web/index.html +19 -19
- package/lib/cjs/client/web/main.js +2 -38
- package/lib/cjs/client/web/main.js.LICENSE.txt +49 -0
- package/lib/cjs/creevey.js +3 -5
- package/lib/cjs/index.js +4 -4
- package/lib/cjs/server/config.js +1 -1
- package/lib/cjs/server/docker.js +3 -7
- package/lib/cjs/server/index.js +1 -1
- package/lib/cjs/server/loaders/babel/creevey-plugin.js +1 -3
- package/lib/cjs/server/loaders/babel/helpers.js +13 -23
- package/lib/cjs/server/loaders/babel/register.js +1 -3
- package/lib/cjs/server/loaders/webpack/compile.js +31 -24
- package/lib/cjs/server/loaders/webpack/creevey-loader.js +10 -5
- package/lib/cjs/server/loaders/webpack/dummy-hmr.js +2 -7
- package/lib/cjs/server/loaders/webpack/mdx-loader.js +1 -1
- package/lib/cjs/server/loaders/webpack/start.js +1 -1
- package/lib/cjs/server/logger.js +2 -1
- package/lib/cjs/server/master/index.js +2 -2
- package/lib/cjs/server/master/pool.js +9 -18
- package/lib/cjs/server/master/runner.js +53 -66
- package/lib/cjs/server/master/server.js +2 -2
- package/lib/cjs/server/messages.js +8 -10
- package/lib/cjs/server/selenium/browser.js +23 -31
- package/lib/cjs/server/selenium/selenoid.js +5 -7
- package/lib/cjs/server/stories.js +9 -20
- package/lib/cjs/server/storybook/entry.js +5 -3
- package/lib/cjs/server/storybook/helpers.js +15 -21
- package/lib/cjs/server/storybook/providers/browser.js +5 -9
- package/lib/cjs/server/storybook/providers/nodejs.js +4 -4
- package/lib/cjs/server/update.js +1 -5
- package/lib/cjs/server/utils.js +13 -15
- package/lib/cjs/server/worker/reporter.js +8 -20
- package/lib/cjs/server/worker/worker.js +6 -16
- package/lib/cjs/shared/index.js +101 -0
- package/lib/cjs/shared/serializeRegExp.js +42 -0
- package/lib/cjs/types.js +6 -6
- package/lib/esm/client/addon/Manager.js +123 -271
- package/lib/esm/client/addon/components/Addon.js +15 -34
- package/lib/esm/client/addon/components/Icons.js +11 -7
- package/lib/esm/client/addon/components/Panel.js +17 -13
- package/lib/esm/client/addon/components/TestSelect.js +11 -9
- package/lib/esm/client/addon/components/Tools.js +19 -36
- 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 +10 -25
- package/lib/esm/client/addon/register.js +42 -66
- package/lib/esm/client/addon/utils.js +1 -1
- package/lib/esm/client/addon/withCreevey.js +157 -341
- package/lib/esm/client/shared/components/ImagesView/BlendView.js +21 -17
- package/lib/esm/client/shared/components/ImagesView/ImagesView.js +21 -17
- package/lib/esm/client/shared/components/ImagesView/SideBySideView.js +40 -60
- package/lib/esm/client/shared/components/ImagesView/SlideView.js +33 -44
- package/lib/esm/client/shared/components/ImagesView/SwapView.js +22 -39
- package/lib/esm/client/shared/components/PageFooter/PageFooter.js +12 -8
- package/lib/esm/client/shared/components/PageFooter/Paging.js +14 -18
- package/lib/esm/client/shared/components/PageHeader/ImagePreview.js +22 -18
- package/lib/esm/client/shared/components/PageHeader/PageHeader.js +37 -60
- package/lib/esm/client/shared/components/ResultsPage.js +36 -64
- package/lib/esm/client/shared/creeveyClientApi.js +57 -84
- package/lib/esm/client/shared/helpers.js +127 -198
- package/lib/esm/client/shared/viewMode.js +4 -4
- package/lib/esm/creevey.js +3 -5
- package/lib/esm/index.js +1 -3
- package/lib/esm/server/docker.js +2 -2
- package/lib/esm/server/index.js +1 -1
- package/lib/esm/server/loaders/babel/creevey-plugin.js +1 -3
- package/lib/esm/server/loaders/babel/helpers.js +12 -22
- package/lib/esm/server/loaders/babel/register.js +1 -3
- package/lib/esm/server/loaders/webpack/compile.js +31 -24
- package/lib/esm/server/loaders/webpack/creevey-loader.js +9 -4
- package/lib/esm/server/loaders/webpack/dummy-hmr.js +2 -6
- package/lib/esm/server/loaders/webpack/start.js +1 -1
- package/lib/esm/server/master/index.js +2 -2
- package/lib/esm/server/master/pool.js +7 -18
- package/lib/esm/server/master/runner.js +53 -66
- package/lib/esm/server/master/server.js +2 -2
- package/lib/esm/server/messages.js +3 -5
- package/lib/esm/server/selenium/browser.js +20 -28
- package/lib/esm/server/selenium/selenoid.js +4 -6
- package/lib/esm/server/stories.js +9 -20
- package/lib/esm/server/storybook/entry.js +4 -2
- package/lib/esm/server/storybook/helpers.js +7 -15
- package/lib/esm/server/storybook/providers/browser.js +4 -5
- package/lib/esm/server/storybook/providers/nodejs.js +3 -3
- package/lib/esm/server/update.js +1 -5
- package/lib/esm/server/utils.js +5 -9
- package/lib/esm/server/worker/reporter.js +8 -20
- package/lib/esm/server/worker/worker.js +6 -16
- package/lib/esm/shared/index.js +78 -0
- package/lib/esm/shared/serializeRegExp.js +24 -0
- package/lib/types/cli.d.ts +1 -1
- package/lib/types/client/addon/Manager.d.ts +37 -37
- package/lib/types/client/addon/components/Addon.d.ts +8 -8
- package/lib/types/client/addon/components/Icons.d.ts +7 -7
- package/lib/types/client/addon/components/Panel.d.ts +9 -9
- package/lib/types/client/addon/components/TestSelect.d.ts +8 -9
- package/lib/types/client/addon/components/Tools.d.ts +6 -6
- 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 +23 -24
- package/lib/types/client/addon/readyForCapture.d.ts +6 -6
- package/lib/types/client/addon/register.d.ts +3 -3
- package/lib/types/client/addon/utils.d.ts +2 -2
- package/lib/types/client/addon/withCreevey.d.ts +24 -24
- package/lib/types/client/shared/components/ImagesView/BlendView.d.ts +3 -3
- package/lib/types/client/shared/components/ImagesView/ImagesView.d.ts +24 -25
- package/lib/types/client/shared/components/ImagesView/SideBySideView.d.ts +3 -3
- package/lib/types/client/shared/components/ImagesView/SlideView.d.ts +3 -3
- package/lib/types/client/shared/components/ImagesView/SwapView.d.ts +3 -3
- package/lib/types/client/shared/components/ImagesView/index.d.ts +5 -5
- package/lib/types/client/shared/components/PageFooter/PageFooter.d.ts +8 -9
- package/lib/types/client/shared/components/PageFooter/Paging.d.ts +7 -8
- package/lib/types/client/shared/components/PageHeader/ImagePreview.d.ts +12 -12
- package/lib/types/client/shared/components/PageHeader/PageHeader.d.ts +16 -17
- package/lib/types/client/shared/components/ResultsPage.d.ts +18 -18
- package/lib/types/client/shared/creeveyClientApi.d.ts +9 -9
- package/lib/types/client/shared/helpers.d.ts +46 -46
- package/lib/types/client/shared/viewMode.d.ts +4 -4
- package/lib/types/client/web/CreeveyApp.d.ts +11 -12
- package/lib/types/client/web/CreeveyContext.d.ts +11 -11
- package/lib/types/client/web/CreeveyLoader.d.ts +2 -3
- package/lib/types/client/web/CreeveyView/SideBar/Checkbox.d.ts +19 -19
- package/lib/types/client/web/CreeveyView/SideBar/Search.d.ts +6 -6
- package/lib/types/client/web/CreeveyView/SideBar/SideBar.d.ts +14 -14
- package/lib/types/client/web/CreeveyView/SideBar/SideBarHeader.d.ts +12 -13
- package/lib/types/client/web/CreeveyView/SideBar/SuiteLink.d.ts +33 -33
- package/lib/types/client/web/CreeveyView/SideBar/TestLink.d.ts +7 -8
- package/lib/types/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +10 -10
- package/lib/types/client/web/CreeveyView/SideBar/TestsStatus.d.ts +9 -9
- package/lib/types/client/web/CreeveyView/SideBar/Toggle.d.ts +6 -6
- package/lib/types/client/web/CreeveyView/SideBar/index.d.ts +1 -1
- package/lib/types/client/web/KeyboardEventsContext.d.ts +13 -13
- package/lib/types/client/web/index.d.ts +4 -4
- package/lib/types/creevey.d.ts +1 -1
- package/lib/types/index.d.ts +0 -1
- package/lib/types/server/config.d.ts +4 -4
- package/lib/types/server/docker.d.ts +7 -7
- package/lib/types/server/extract.d.ts +2 -2
- package/lib/types/server/index.d.ts +2 -2
- package/lib/types/server/loaders/babel/creevey-plugin.d.ts +1 -1
- package/lib/types/server/loaders/babel/helpers.d.ts +19 -19
- package/lib/types/server/loaders/babel/register.d.ts +5 -5
- package/lib/types/server/loaders/hooks/mdx.d.ts +1 -1
- package/lib/types/server/loaders/hooks/svelte.d.ts +1 -1
- package/lib/types/server/loaders/webpack/compile.d.ts +2 -2
- package/lib/types/server/loaders/webpack/creevey-loader.d.ts +4 -2
- package/lib/types/server/loaders/webpack/dummy-hmr.d.ts +10 -10
- package/lib/types/server/loaders/webpack/mdx-loader.d.ts +6 -6
- package/lib/types/server/loaders/webpack/start.d.ts +1 -1
- package/lib/types/server/logger.d.ts +10 -6
- package/lib/types/server/master/api.d.ts +7 -7
- package/lib/types/server/master/index.d.ts +3 -3
- package/lib/types/server/master/master.d.ts +7 -7
- package/lib/types/server/master/pool.d.ts +31 -31
- package/lib/types/server/master/runner.d.ts +26 -26
- package/lib/types/server/master/server.d.ts +2 -2
- package/lib/types/server/messages.d.ts +27 -27
- package/lib/types/server/selenium/browser.d.ts +17 -17
- package/lib/types/server/selenium/index.d.ts +2 -2
- package/lib/types/server/selenium/selenoid.d.ts +3 -3
- package/lib/types/server/stories.d.ts +8 -8
- package/lib/types/server/storybook/entry.d.ts +18 -18
- package/lib/types/server/storybook/helpers.d.ts +24 -24
- package/lib/types/server/storybook/providers/browser.d.ts +4 -4
- package/lib/types/server/storybook/providers/hybrid.d.ts +4 -4
- package/lib/types/server/storybook/providers/nodejs.d.ts +9 -9
- package/lib/types/server/testsFiles/parser.d.ts +12 -12
- package/lib/types/server/testsFiles/register.d.ts +2 -2
- package/lib/types/server/update.d.ts +2 -2
- package/lib/types/server/utils.d.ts +20 -20
- package/lib/types/server/worker/chai-image.d.ts +6 -6
- package/lib/types/server/worker/helpers.d.ts +8 -8
- package/lib/types/server/worker/index.d.ts +1 -1
- package/lib/types/server/worker/reporter.d.ts +8 -8
- package/lib/types/server/worker/worker.d.ts +4 -4
- package/lib/types/{shared.d.ts → shared/index.d.ts} +7 -16
- package/lib/types/shared/serializeRegExp.d.ts +9 -0
- package/lib/types/types.d.ts +490 -489
- package/package.json +115 -102
- package/preset.js +9 -9
- package/types/babel__register.d.ts +1 -1
- package/types/chai.d.ts +12 -12
- package/types/event-source-polyfill.d.ts +6 -6
- package/types/mdx.d.ts +3 -2
- package/types/mocha.d.ts +20 -20
- package/types/png.d.ts +4 -4
- package/lib/cjs/client/web/1.js +0 -13
- package/lib/cjs/client/web/2.js +0 -1
- package/lib/cjs/shared.js +0 -124
- package/lib/esm/shared.js +0 -93
- package/storybook-static/stories.json +0 -21
@@ -1,33 +1,3 @@
|
|
1
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
2
|
-
|
3
|
-
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."); }
|
4
|
-
|
5
|
-
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; }
|
6
|
-
|
7
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
8
|
-
|
9
|
-
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
10
|
-
|
11
|
-
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."); }
|
12
|
-
|
13
|
-
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); }
|
14
|
-
|
15
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
16
|
-
|
17
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
18
|
-
|
19
|
-
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; }
|
20
|
-
|
21
|
-
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
22
|
-
|
23
|
-
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
24
|
-
|
25
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
26
|
-
|
27
|
-
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
28
|
-
|
29
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
30
|
-
|
31
1
|
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; }
|
32
2
|
|
33
3
|
import { SET_STORIES, STORY_RENDERED } from '@storybook/core-events';
|
@@ -37,12 +7,8 @@ import { initCreeveyClientApi } from '../shared/creeveyClientApi';
|
|
37
7
|
import { calcStatus } from '../shared/helpers';
|
38
8
|
import { ADDON_ID } from './register';
|
39
9
|
import { getEmojiByTestStatus } from './utils';
|
40
|
-
export
|
41
|
-
|
42
|
-
var _this = this;
|
43
|
-
|
44
|
-
_classCallCheck(this, CreeveyManager);
|
45
|
-
|
10
|
+
export class CreeveyManager {
|
11
|
+
constructor(storybookApi) {
|
46
12
|
_defineProperty(this, "storyId", '');
|
47
13
|
|
48
14
|
_defineProperty(this, "activeBrowser", '');
|
@@ -57,66 +23,46 @@ export var CreeveyManager = /*#__PURE__*/function () {
|
|
57
23
|
|
58
24
|
_defineProperty(this, "creeveyApi", null);
|
59
25
|
|
26
|
+
_defineProperty(this, "storybookApi", void 0);
|
27
|
+
|
60
28
|
_defineProperty(this, "stories", {});
|
61
29
|
|
62
30
|
_defineProperty(this, "updateStatusListeners", []);
|
63
31
|
|
64
32
|
_defineProperty(this, "changeTestListeners", []);
|
65
33
|
|
66
|
-
_defineProperty(this, "initAll",
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
_this.storybookApi.on(SET_STORIES, _this.onSetStories);
|
74
|
-
|
75
|
-
_context.next = 4;
|
76
|
-
return initCreeveyClientApi();
|
77
|
-
|
78
|
-
case 4:
|
79
|
-
_this.creeveyApi = _context.sent;
|
80
|
-
|
81
|
-
_this.creeveyApi.onUpdate(_this.handleCreeveyUpdate);
|
82
|
-
|
83
|
-
_context.next = 8;
|
84
|
-
return _this.creeveyApi.status;
|
85
|
-
|
86
|
-
case 8:
|
87
|
-
_this.status = _context.sent;
|
88
|
-
|
89
|
-
case 9:
|
90
|
-
case "end":
|
91
|
-
return _context.stop();
|
92
|
-
}
|
93
|
-
}
|
94
|
-
}, _callee);
|
95
|
-
})));
|
34
|
+
_defineProperty(this, "initAll", async () => {
|
35
|
+
this.storybookApi.on(STORY_RENDERED, this.onStoryRendered);
|
36
|
+
this.storybookApi.on(SET_STORIES, this.onSetStories);
|
37
|
+
this.creeveyApi = await initCreeveyClientApi();
|
38
|
+
this.creeveyApi.onUpdate(this.handleCreeveyUpdate);
|
39
|
+
this.status = await this.creeveyApi.status;
|
40
|
+
});
|
96
41
|
|
97
|
-
_defineProperty(this, "handleCreeveyUpdate",
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
42
|
+
_defineProperty(this, "handleCreeveyUpdate", update => {
|
43
|
+
const {
|
44
|
+
tests,
|
45
|
+
removedTests = [],
|
46
|
+
isRunning
|
47
|
+
} = update;
|
102
48
|
|
103
49
|
if (isDefined(isRunning)) {
|
104
|
-
|
50
|
+
this.status.isRunning = isRunning;
|
105
51
|
}
|
106
52
|
|
107
53
|
if (isDefined(tests)) {
|
108
|
-
|
109
|
-
|
110
|
-
Object.values(tests).filter(isDefined).forEach(
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
54
|
+
const prevTests = this.status.tests;
|
55
|
+
const prevStories = this.stories || {};
|
56
|
+
Object.values(tests).filter(isDefined).forEach(update => {
|
57
|
+
const {
|
58
|
+
id,
|
59
|
+
skip,
|
60
|
+
status,
|
61
|
+
results,
|
62
|
+
approved,
|
63
|
+
storyId
|
64
|
+
} = update;
|
65
|
+
const test = prevTests[id];
|
120
66
|
|
121
67
|
if (!test) {
|
122
68
|
return prevTests[id] = update;
|
@@ -128,269 +74,175 @@ export var CreeveyManager = /*#__PURE__*/function () {
|
|
128
74
|
test.status = status;
|
129
75
|
|
130
76
|
if (isDefined(storyId) && isDefined(prevStories[storyId])) {
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
var oldStatus = storyStatus.map(function (x) {
|
136
|
-
return x.id === id ? status : x.status;
|
137
|
-
}).reduce(function (oldStatus, newStatus) {
|
138
|
-
return calcStatus(oldStatus, newStatus);
|
139
|
-
}, undefined);
|
140
|
-
story.name = _this.addStatusToStoryName(story.name, calcStatus(oldStatus, status), skip || false);
|
77
|
+
const story = prevStories[storyId];
|
78
|
+
const storyStatus = this.getStoryTests(storyId);
|
79
|
+
const oldStatus = storyStatus.map(x => x.id === id ? status : x.status).reduce((oldStatus, newStatus) => calcStatus(oldStatus, newStatus), undefined);
|
80
|
+
story.name = this.addStatusToStoryName(story.name, calcStatus(oldStatus, status), skip || false);
|
141
81
|
}
|
142
82
|
}
|
143
83
|
|
144
|
-
if (isDefined(results)) test.results ?
|
84
|
+
if (isDefined(results)) test.results ? test.results.push(...results) : test.results = results;
|
145
85
|
|
146
86
|
if (isDefined(approved)) {
|
147
|
-
Object.entries(approved).forEach(
|
148
|
-
|
149
|
-
image = _ref3[0],
|
150
|
-
retry = _ref3[1];
|
151
|
-
|
87
|
+
Object.entries(approved).forEach(_ref => {
|
88
|
+
let [image, retry] = _ref;
|
152
89
|
return retry !== undefined && test && ((test.approved = (test === null || test === void 0 ? void 0 : test.approved) || {})[image] = retry);
|
153
90
|
});
|
154
91
|
}
|
155
92
|
});
|
156
|
-
removedTests.forEach(
|
157
|
-
|
93
|
+
removedTests.forEach(_ref2 => {
|
94
|
+
let {
|
95
|
+
id
|
96
|
+
} = _ref2;
|
158
97
|
return delete prevTests[id];
|
159
98
|
});
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
void _this.storybookApi.setStories(_this.stories);
|
99
|
+
this.status.tests = prevTests;
|
100
|
+
this.stories = prevStories;
|
101
|
+
this.setPanelsTitle();
|
102
|
+
void this.storybookApi.setStories(this.stories);
|
166
103
|
}
|
167
104
|
|
168
|
-
|
169
|
-
return x(update);
|
170
|
-
});
|
105
|
+
this.updateStatusListeners.forEach(x => x(update));
|
171
106
|
});
|
172
107
|
|
173
|
-
_defineProperty(this, "getCurrentTest",
|
174
|
-
return
|
108
|
+
_defineProperty(this, "getCurrentTest", () => {
|
109
|
+
return this.status.tests[this.selectedTestId];
|
175
110
|
});
|
176
111
|
|
177
|
-
_defineProperty(this, "onStoryRendered",
|
178
|
-
if (
|
112
|
+
_defineProperty(this, "onStoryRendered", storyId => {
|
113
|
+
if (this.storyId === '') void this.addStatusesToSideBar();
|
179
114
|
|
180
|
-
if (
|
115
|
+
if (this.storyId !== storyId) {
|
181
116
|
var _this$getTestsByStory, _this$getTestsByStory2;
|
182
117
|
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
_this.changeTestListeners.forEach(function (x) {
|
189
|
-
return x(_this.selectedTestId);
|
190
|
-
});
|
118
|
+
this.storyId = storyId;
|
119
|
+
this.selectedTestId = (_this$getTestsByStory = (_this$getTestsByStory2 = this.getTestsByStoryIdAndBrowser(this.activeBrowser)[0]) === null || _this$getTestsByStory2 === void 0 ? void 0 : _this$getTestsByStory2.id) !== null && _this$getTestsByStory !== void 0 ? _this$getTestsByStory : '';
|
120
|
+
this.setPanelsTitle();
|
121
|
+
this.changeTestListeners.forEach(x => x(this.selectedTestId));
|
191
122
|
}
|
192
123
|
});
|
193
124
|
|
194
|
-
_defineProperty(this, "onStart",
|
125
|
+
_defineProperty(this, "onStart", () => {
|
195
126
|
var _this$creeveyApi;
|
196
127
|
|
197
|
-
(_this$creeveyApi =
|
128
|
+
(_this$creeveyApi = this.creeveyApi) === null || _this$creeveyApi === void 0 ? void 0 : _this$creeveyApi.start([this.selectedTestId]);
|
198
129
|
});
|
199
130
|
|
200
|
-
_defineProperty(this, "onStop",
|
131
|
+
_defineProperty(this, "onStop", () => {
|
201
132
|
var _this$creeveyApi2;
|
202
133
|
|
203
|
-
(_this$creeveyApi2 =
|
134
|
+
(_this$creeveyApi2 = this.creeveyApi) === null || _this$creeveyApi2 === void 0 ? void 0 : _this$creeveyApi2.stop();
|
204
135
|
});
|
205
136
|
|
206
|
-
_defineProperty(this, "onImageApprove",
|
137
|
+
_defineProperty(this, "onImageApprove", (id, retry, image) => {
|
207
138
|
var _this$creeveyApi3;
|
208
139
|
|
209
|
-
return (_this$creeveyApi3 =
|
140
|
+
return (_this$creeveyApi3 = this.creeveyApi) === null || _this$creeveyApi3 === void 0 ? void 0 : _this$creeveyApi3.approve(id, retry, image);
|
210
141
|
});
|
211
142
|
|
212
|
-
_defineProperty(this, "onStartAllStoryTests",
|
143
|
+
_defineProperty(this, "onStartAllStoryTests", () => {
|
213
144
|
var _this$creeveyApi4;
|
214
145
|
|
215
|
-
|
216
|
-
|
217
|
-
}).map(function (x) {
|
218
|
-
return x.id;
|
219
|
-
});
|
220
|
-
(_this$creeveyApi4 = _this.creeveyApi) === null || _this$creeveyApi4 === void 0 ? void 0 : _this$creeveyApi4.start(ids);
|
146
|
+
const ids = Object.values(this.status.tests).filter(isDefined).filter(x => x.storyId === this.storyId).map(x => x.id);
|
147
|
+
(_this$creeveyApi4 = this.creeveyApi) === null || _this$creeveyApi4 === void 0 ? void 0 : _this$creeveyApi4.start(ids);
|
221
148
|
});
|
222
149
|
|
223
|
-
_defineProperty(this, "onStartAllTests",
|
150
|
+
_defineProperty(this, "onStartAllTests", () => {
|
224
151
|
var _this$creeveyApi5;
|
225
152
|
|
226
|
-
|
227
|
-
|
228
|
-
});
|
229
|
-
(_this$creeveyApi5 = _this.creeveyApi) === null || _this$creeveyApi5 === void 0 ? void 0 : _this$creeveyApi5.start(ids);
|
153
|
+
const ids = Object.values(this.status.tests).filter(isDefined).map(x => x.id);
|
154
|
+
(_this$creeveyApi5 = this.creeveyApi) === null || _this$creeveyApi5 === void 0 ? void 0 : _this$creeveyApi5.start(ids);
|
230
155
|
});
|
231
156
|
|
232
|
-
_defineProperty(this, "onSetStories",
|
233
|
-
|
234
|
-
|
157
|
+
_defineProperty(this, "onSetStories", data => {
|
158
|
+
const stories = data.v ? denormalizeStoryParameters(data) : data.stories;
|
159
|
+
this.stories = stories;
|
235
160
|
});
|
236
161
|
|
237
|
-
_defineProperty(this, "setActiveBrowser",
|
162
|
+
_defineProperty(this, "setActiveBrowser", browser => {
|
238
163
|
var _this$getTestsByStory3, _this$getTestsByStory4;
|
239
164
|
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
_this.changeTestListeners.forEach(function (x) {
|
244
|
-
return x(_this.selectedTestId);
|
245
|
-
});
|
165
|
+
this.activeBrowser = browser;
|
166
|
+
this.selectedTestId = (_this$getTestsByStory3 = (_this$getTestsByStory4 = this.getTestsByStoryIdAndBrowser(this.activeBrowser)[0]) === null || _this$getTestsByStory4 === void 0 ? void 0 : _this$getTestsByStory4.id) !== null && _this$getTestsByStory3 !== void 0 ? _this$getTestsByStory3 : '';
|
167
|
+
this.changeTestListeners.forEach(x => x(this.selectedTestId));
|
246
168
|
});
|
247
169
|
|
248
|
-
_defineProperty(this, "setSelectedTestId",
|
249
|
-
|
250
|
-
|
251
|
-
_this.changeTestListeners.forEach(function (x) {
|
252
|
-
return x(_this.selectedTestId);
|
253
|
-
});
|
170
|
+
_defineProperty(this, "setSelectedTestId", testId => {
|
171
|
+
this.selectedTestId = testId;
|
172
|
+
this.changeTestListeners.forEach(x => x(this.selectedTestId));
|
254
173
|
});
|
255
174
|
|
256
|
-
_defineProperty(this, "getStoryTests",
|
257
|
-
if (!
|
258
|
-
return Object.values(
|
259
|
-
return (result === null || result === void 0 ? void 0 : result.storyId) === storyId;
|
260
|
-
}).filter(isDefined);
|
175
|
+
_defineProperty(this, "getStoryTests", storyId => {
|
176
|
+
if (!this.status || !this.status.tests) return [];
|
177
|
+
return Object.values(this.status.tests).filter(result => (result === null || result === void 0 ? void 0 : result.storyId) === storyId).filter(isDefined);
|
261
178
|
});
|
262
179
|
|
263
|
-
_defineProperty(this, "getBrowsers",
|
264
|
-
return
|
180
|
+
_defineProperty(this, "getBrowsers", () => {
|
181
|
+
return this.status.browsers;
|
265
182
|
});
|
266
183
|
|
267
|
-
_defineProperty(this, "getTestsByStoryIdAndBrowser",
|
268
|
-
return Object.values(
|
269
|
-
return (x === null || x === void 0 ? void 0 : x.browser) === browser && x.storyId === _this.storyId;
|
270
|
-
}).filter(isDefined);
|
184
|
+
_defineProperty(this, "getTestsByStoryIdAndBrowser", browser => {
|
185
|
+
return Object.values(this.status.tests).filter(x => (x === null || x === void 0 ? void 0 : x.browser) === browser && x.storyId === this.storyId).filter(isDefined);
|
271
186
|
});
|
272
187
|
|
273
|
-
_defineProperty(this, "getTabTitle",
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
}).reduce(function (oldStatus, newStatus) {
|
279
|
-
return calcStatus(oldStatus, newStatus);
|
280
|
-
}, undefined);
|
281
|
-
var browserSkip = tests.length > 0 ? tests.every(function (x) {
|
282
|
-
return x && x.skip;
|
283
|
-
}) : false;
|
284
|
-
var emojiStatus = getEmojiByTestStatus(browserStatus, browserSkip);
|
188
|
+
_defineProperty(this, "getTabTitle", browser => {
|
189
|
+
const tests = this.getTestsByStoryIdAndBrowser(browser);
|
190
|
+
const browserStatus = tests.map(x => x && x.status).reduce((oldStatus, newStatus) => calcStatus(oldStatus, newStatus), undefined);
|
191
|
+
const browserSkip = tests.length > 0 ? tests.every(x => x && x.skip) : false;
|
192
|
+
const emojiStatus = getEmojiByTestStatus(browserStatus, browserSkip);
|
285
193
|
return "".concat(emojiStatus ? "".concat(emojiStatus, " ") : '', "Creevey/").concat(browser);
|
286
194
|
});
|
287
195
|
|
288
|
-
_defineProperty(this, "setPanelsTitle",
|
196
|
+
_defineProperty(this, "setPanelsTitle", () => {
|
289
197
|
var _this$storybookApi;
|
290
198
|
|
291
|
-
|
199
|
+
const panels = (_this$storybookApi = this.storybookApi) === null || _this$storybookApi === void 0 ? void 0 : _this$storybookApi.getPanels();
|
292
200
|
if (!panels) return;
|
293
|
-
|
201
|
+
let firstPanelBrowser = this.activeBrowser;
|
294
202
|
|
295
|
-
for (
|
203
|
+
for (const p in panels) {
|
296
204
|
var _panel$id;
|
297
205
|
|
298
|
-
|
206
|
+
const panel = panels[p];
|
299
207
|
|
300
208
|
if (((_panel$id = panel.id) === null || _panel$id === void 0 ? void 0 : _panel$id.indexOf(ADDON_ID)) === 0 && panel.paramKey) {
|
301
|
-
panel.title =
|
209
|
+
panel.title = this.getTabTitle(panel.paramKey);
|
302
210
|
if (!firstPanelBrowser) firstPanelBrowser = panel.paramKey;
|
303
211
|
}
|
304
212
|
}
|
305
213
|
|
306
|
-
|
214
|
+
this.storybookApi.setSelectedPanel("".concat(ADDON_ID, "/panel/").concat(firstPanelBrowser));
|
307
215
|
});
|
308
216
|
|
309
217
|
this.storybookApi = storybookApi;
|
310
218
|
}
|
311
219
|
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
this.updateStatusListeners.push(listener);
|
318
|
-
return function () {
|
319
|
-
return void (_this2.updateStatusListeners = _this2.updateStatusListeners.filter(function (x) {
|
320
|
-
return x != listener;
|
321
|
-
}));
|
322
|
-
};
|
323
|
-
}
|
324
|
-
}, {
|
325
|
-
key: "onChangeTest",
|
326
|
-
value: function onChangeTest(listener) {
|
327
|
-
var _this3 = this;
|
328
|
-
|
329
|
-
this.changeTestListeners.push(listener);
|
330
|
-
return function () {
|
331
|
-
return void (_this3.changeTestListeners = _this3.changeTestListeners.filter(function (x) {
|
332
|
-
return x != listener;
|
333
|
-
}));
|
334
|
-
};
|
335
|
-
}
|
336
|
-
}, {
|
337
|
-
key: "addStatusesToSideBar",
|
338
|
-
value: function () {
|
339
|
-
var _addStatusesToSideBar = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
|
340
|
-
var _this4 = this;
|
341
|
-
|
342
|
-
var stories;
|
343
|
-
return regeneratorRuntime.wrap(function _callee2$(_context2) {
|
344
|
-
while (1) {
|
345
|
-
switch (_context2.prev = _context2.next) {
|
346
|
-
case 0:
|
347
|
-
if (Object.keys(this.stories).length) {
|
348
|
-
_context2.next = 2;
|
349
|
-
break;
|
350
|
-
}
|
351
|
-
|
352
|
-
return _context2.abrupt("return");
|
353
|
-
|
354
|
-
case 2:
|
355
|
-
stories = this.stories;
|
356
|
-
Object.keys(this.stories).forEach(function (storyId) {
|
357
|
-
var storyStatus = _this4.getStoryTests(storyId);
|
358
|
-
|
359
|
-
var status = storyStatus.map(function (x) {
|
360
|
-
return x.status;
|
361
|
-
}).reduce(function (oldStatus, newStatus) {
|
362
|
-
return calcStatus(oldStatus, newStatus);
|
363
|
-
}, undefined);
|
364
|
-
var skip = storyStatus.length > 0 ? storyStatus.every(function (x) {
|
365
|
-
return x.skip;
|
366
|
-
}) : false;
|
367
|
-
_this4.stories[storyId].name = _this4.addStatusToStoryName(stories[storyId].name, status, skip);
|
368
|
-
});
|
369
|
-
_context2.next = 6;
|
370
|
-
return this.storybookApi.setStories(this.stories);
|
371
|
-
|
372
|
-
case 6:
|
373
|
-
case "end":
|
374
|
-
return _context2.stop();
|
375
|
-
}
|
376
|
-
}
|
377
|
-
}, _callee2, this);
|
378
|
-
}));
|
220
|
+
onUpdateStatus(listener) {
|
221
|
+
this.updateStatusListeners.push(listener);
|
222
|
+
return () => void (this.updateStatusListeners = this.updateStatusListeners.filter(x => x != listener));
|
223
|
+
}
|
379
224
|
|
380
|
-
|
381
|
-
|
382
|
-
|
225
|
+
onChangeTest(listener) {
|
226
|
+
this.changeTestListeners.push(listener);
|
227
|
+
return () => void (this.changeTestListeners = this.changeTestListeners.filter(x => x != listener));
|
228
|
+
}
|
229
|
+
|
230
|
+
async addStatusesToSideBar() {
|
231
|
+
if (!Object.keys(this.stories).length) return;
|
232
|
+
const stories = this.stories;
|
233
|
+
Object.keys(this.stories).forEach(storyId => {
|
234
|
+
const storyStatus = this.getStoryTests(storyId);
|
235
|
+
const status = storyStatus.map(x => x.status).reduce((oldStatus, newStatus) => calcStatus(oldStatus, newStatus), undefined);
|
236
|
+
const skip = storyStatus.length > 0 ? storyStatus.every(x => x.skip) : false;
|
237
|
+
this.stories[storyId].name = this.addStatusToStoryName(stories[storyId].name, status, skip);
|
238
|
+
});
|
239
|
+
await this.storybookApi.setStories(this.stories);
|
240
|
+
}
|
241
|
+
|
242
|
+
addStatusToStoryName(name, status, skip) {
|
243
|
+
name = name.replace(/^(❌|✔|🟡|🕗|⏸) /, '');
|
244
|
+
const emojiStatus = getEmojiByTestStatus(status, skip);
|
245
|
+
return "".concat(emojiStatus ? "".concat(emojiStatus, " ") : '', " ").concat(name);
|
246
|
+
}
|
383
247
|
|
384
|
-
|
385
|
-
}()
|
386
|
-
}, {
|
387
|
-
key: "addStatusToStoryName",
|
388
|
-
value: function addStatusToStoryName(name, status, skip) {
|
389
|
-
name = name.replace(/^(❌|✔|🟡|🕗|⏸) /, '');
|
390
|
-
var emojiStatus = getEmojiByTestStatus(status, skip);
|
391
|
-
return "".concat(emojiStatus ? "".concat(emojiStatus, " ") : '', " ").concat(name);
|
392
|
-
}
|
393
|
-
}]);
|
394
|
-
|
395
|
-
return CreeveyManager;
|
396
|
-
}();
|
248
|
+
}
|
@@ -1,50 +1,31 @@
|
|
1
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
2
|
-
|
3
|
-
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."); }
|
4
|
-
|
5
|
-
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); }
|
6
|
-
|
7
|
-
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; }
|
8
|
-
|
9
|
-
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; }
|
10
|
-
|
11
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
12
|
-
|
13
1
|
import { Placeholder } from '@storybook/components';
|
14
2
|
import React, { useEffect, useState } from 'react';
|
15
3
|
import { Panel } from './Panel';
|
16
|
-
export
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
var _useState3 = useState(manager.selectedTestId),
|
27
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
28
|
-
selectedTestId = _useState4[0],
|
29
|
-
setSelectedTestId = _useState4[1];
|
30
|
-
|
31
|
-
useEffect(function () {
|
4
|
+
export const Addon = _ref => {
|
5
|
+
let {
|
6
|
+
active,
|
7
|
+
browser,
|
8
|
+
manager
|
9
|
+
} = _ref;
|
10
|
+
const [tests, setTests] = useState([]);
|
11
|
+
const [selectedTestId, setSelectedTestId] = useState(manager.selectedTestId);
|
12
|
+
useEffect(() => {
|
32
13
|
if (active) {
|
33
14
|
manager.setActiveBrowser(browser);
|
34
|
-
|
15
|
+
const browserTests = manager.getTestsByStoryIdAndBrowser(manager.activeBrowser);
|
35
16
|
setTests(browserTests);
|
36
17
|
}
|
37
18
|
}, [active, browser, manager]);
|
38
|
-
useEffect(
|
39
|
-
|
19
|
+
useEffect(() => {
|
20
|
+
const unsubscribe = manager.onChangeTest(testId => {
|
40
21
|
setSelectedTestId(testId);
|
41
|
-
|
22
|
+
const status = manager.getTestsByStoryIdAndBrowser(manager.activeBrowser);
|
42
23
|
setTests(status);
|
43
24
|
});
|
44
25
|
return unsubscribe;
|
45
26
|
}, [manager]);
|
46
|
-
useEffect(
|
47
|
-
|
27
|
+
useEffect(() => {
|
28
|
+
const unsubscribe = manager.onUpdateStatus(() => {
|
48
29
|
setTests(manager.getTestsByStoryIdAndBrowser(manager.activeBrowser));
|
49
30
|
});
|
50
31
|
return unsubscribe;
|
@@ -1,7 +1,9 @@
|
|
1
1
|
import React from 'react';
|
2
|
-
export
|
3
|
-
|
4
|
-
|
2
|
+
export const NextIcon = _ref => {
|
3
|
+
let {
|
4
|
+
width,
|
5
|
+
height
|
6
|
+
} = _ref;
|
5
7
|
return /*#__PURE__*/React.createElement("svg", {
|
6
8
|
version: "1.1",
|
7
9
|
width: width,
|
@@ -12,9 +14,11 @@ export var NextIcon = function NextIcon(_ref) {
|
|
12
14
|
fill: "currentColor"
|
13
15
|
}));
|
14
16
|
};
|
15
|
-
export
|
16
|
-
|
17
|
-
|
17
|
+
export const ForwardIcon = _ref2 => {
|
18
|
+
let {
|
19
|
+
width,
|
20
|
+
height
|
21
|
+
} = _ref2;
|
18
22
|
return /*#__PURE__*/React.createElement("svg", {
|
19
23
|
version: "1.1",
|
20
24
|
width: width,
|
@@ -22,6 +26,6 @@ export var ForwardIcon = function ForwardIcon(_ref2) {
|
|
22
26
|
viewBox: "0 0 512 512"
|
23
27
|
}, /*#__PURE__*/React.createElement("path", {
|
24
28
|
fill: "currentColor",
|
25
|
-
d: "M460.9,246.8l-209-164.2c-7.8-6.1-19.2-0.6-19.2,9.2v328.4c0,9.8,11.4,15.3,19.2,9.2l209-164.2c5.1-4,6-11.4,2-16.5 C462.4,248,461.7,247.3,460.9,246.8L460.9,246.8z M228.2,246.8L19.2,82.5C11.4,76.4,0,82,0,91.8v328.4c0,9.8,11.4,15.3,19.2,9.2 l209-164.2c3-2.3,4.5-5.8,4.5-9.2C232.7,252.6,231.2,249.1,228.2,246.8z M507.3,64h-37.2c-2.5,0-4.7,2-4.7,4.4v375.3 c0,2.4,2.1,4.4,4.7,4.4h37.2c2.5,0,4.7-2,4.7-4.4V68.4C512,66,509.9,64,507.3,64z"
|
29
|
+
d: "M460.9,246.8l-209-164.2c-7.8-6.1-19.2-0.6-19.2,9.2v328.4c0,9.8,11.4,15.3,19.2,9.2l209-164.2c5.1-4,6-11.4,2-16.5\r C462.4,248,461.7,247.3,460.9,246.8L460.9,246.8z M228.2,246.8L19.2,82.5C11.4,76.4,0,82,0,91.8v328.4c0,9.8,11.4,15.3,19.2,9.2\r l209-164.2c3-2.3,4.5-5.8,4.5-9.2C232.7,252.6,231.2,249.1,228.2,246.8z M507.3,64h-37.2c-2.5,0-4.7,2-4.7,4.4v375.3\r c0,2.4,2.1,4.4,4.7,4.4h37.2c2.5,0,4.7-2,4.7-4.4V68.4C512,66,509.9,64,507.3,64z"
|
26
30
|
}));
|
27
31
|
};
|