@atlaskit/tabs 15.0.0 → 16.0.0
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/CHANGELOG.md +6 -0
- package/dist/cjs/components/tab-list.js +0 -2
- package/dist/cjs/components/tab-panel.js +0 -2
- package/dist/cjs/components/tab.js +0 -2
- package/dist/cjs/components/tabs.js +1 -3
- package/dist/es2019/components/tab-list.js +0 -2
- package/dist/es2019/components/tab-panel.js +0 -2
- package/dist/es2019/components/tab.js +0 -2
- package/dist/es2019/components/tabs.js +1 -3
- package/dist/esm/components/tab-list.js +0 -2
- package/dist/esm/components/tab-panel.js +0 -2
- package/dist/esm/components/tab.js +0 -2
- package/dist/esm/components/tabs.js +1 -3
- package/dist/types/types.d.ts +1 -9
- package/dist/types-ts4.5/types.d.ts +1 -9
- package/package.json +3 -3
- package/dist/cjs/internal/utils.js +0 -20
- package/dist/es2019/internal/utils.js +0 -14
- package/dist/esm/internal/utils.js +0 -14
- package/dist/types/internal/utils.d.ts +0 -2
- package/dist/types-ts4.5/internal/utils.d.ts +0 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @atlaskit/tabs
|
|
2
2
|
|
|
3
|
+
## 16.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- [#92009](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/92009) [`ef3d43779d3a`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/ef3d43779d3a) - Removed `onMouseDown` prop from `Tab` and `TabPanel`.
|
|
8
|
+
|
|
3
9
|
## 15.0.0
|
|
4
10
|
|
|
5
11
|
### Major Changes
|
|
@@ -9,7 +9,6 @@ var _react2 = require("@emotion/react");
|
|
|
9
9
|
var _hooks = require("../hooks");
|
|
10
10
|
var _context = require("../internal/context");
|
|
11
11
|
var _styles = require("../internal/styles");
|
|
12
|
-
var _utils = require("../internal/utils");
|
|
13
12
|
/** @jsx jsx */
|
|
14
13
|
|
|
15
14
|
var baseStyles = (0, _react2.css)({
|
|
@@ -86,7 +85,6 @@ var TabList = function TabList(_ref) {
|
|
|
86
85
|
onClick: function onClick() {
|
|
87
86
|
return onChange(index);
|
|
88
87
|
},
|
|
89
|
-
onMouseDown: _utils.onMouseDownBlur,
|
|
90
88
|
onKeyDown: onKeyDown,
|
|
91
89
|
'aria-setsize': length,
|
|
92
90
|
role: 'tab',
|
|
@@ -29,7 +29,6 @@ var TabPanel = function TabPanel(_ref) {
|
|
|
29
29
|
id = _useTabPanel.id,
|
|
30
30
|
hidden = _useTabPanel.hidden,
|
|
31
31
|
ariaLabelledBy = _useTabPanel['aria-labelledby'],
|
|
32
|
-
onMouseDown = _useTabPanel.onMouseDown,
|
|
33
32
|
tabIndex = _useTabPanel.tabIndex;
|
|
34
33
|
return (0, _react2.jsx)(_focusRing.default, {
|
|
35
34
|
isInset: true
|
|
@@ -39,7 +38,6 @@ var TabPanel = function TabPanel(_ref) {
|
|
|
39
38
|
id: id,
|
|
40
39
|
hidden: hidden,
|
|
41
40
|
"aria-labelledby": ariaLabelledBy,
|
|
42
|
-
onMouseDown: onMouseDown,
|
|
43
41
|
tabIndex: tabIndex
|
|
44
42
|
}, (0, _react2.jsx)(_react.Fragment, null, children)));
|
|
45
43
|
};
|
|
@@ -30,7 +30,6 @@ function Tab(_ref) {
|
|
|
30
30
|
ariaPosinset = _useTab['aria-posinset'],
|
|
31
31
|
ariaSelected = _useTab['aria-selected'],
|
|
32
32
|
ariaSetsize = _useTab['aria-setsize'],
|
|
33
|
-
onMouseDown = _useTab.onMouseDown,
|
|
34
33
|
onKeyDown = _useTab.onKeyDown,
|
|
35
34
|
role = _useTab.role,
|
|
36
35
|
tabIndex = _useTab.tabIndex;
|
|
@@ -44,7 +43,6 @@ function Tab(_ref) {
|
|
|
44
43
|
"aria-posinset": ariaPosinset,
|
|
45
44
|
"aria-selected": ariaSelected,
|
|
46
45
|
"aria-setsize": ariaSetsize,
|
|
47
|
-
onMouseDown: onMouseDown,
|
|
48
46
|
onKeyDown: onKeyDown,
|
|
49
47
|
role: role,
|
|
50
48
|
tabIndex: tabIndex
|
|
@@ -13,7 +13,6 @@ var _react2 = require("@emotion/react");
|
|
|
13
13
|
var _usePlatformLeafEventHandler = require("@atlaskit/analytics-next/usePlatformLeafEventHandler");
|
|
14
14
|
var _context = require("../internal/context");
|
|
15
15
|
var _styles = require("../internal/styles");
|
|
16
|
-
var _utils = require("../internal/utils");
|
|
17
16
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
18
17
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /** @jsx jsx */
|
|
19
18
|
var baseStyles = (0, _react2.css)({
|
|
@@ -30,7 +29,7 @@ var tabsStyles = (0, _styles.getTabsStyles)();
|
|
|
30
29
|
var analyticsAttributes = {
|
|
31
30
|
componentName: 'tabs',
|
|
32
31
|
packageName: "@atlaskit/tabs",
|
|
33
|
-
packageVersion: "
|
|
32
|
+
packageVersion: "16.0.0"
|
|
34
33
|
};
|
|
35
34
|
var getTabPanelWithContext = function getTabPanelWithContext(_ref) {
|
|
36
35
|
var tabPanel = _ref.tabPanel,
|
|
@@ -45,7 +44,6 @@ var getTabPanelWithContext = function getTabPanelWithContext(_ref) {
|
|
|
45
44
|
id: "".concat(tabsId, "-").concat(index, "-tab"),
|
|
46
45
|
hidden: isSelected ? undefined : true,
|
|
47
46
|
'aria-labelledby': "".concat(tabsId, "-").concat(index),
|
|
48
|
-
onMouseDown: _utils.onMouseDownBlur,
|
|
49
47
|
tabIndex: isSelected ? 0 : -1
|
|
50
48
|
},
|
|
51
49
|
key: index
|
|
@@ -4,7 +4,6 @@ import { css, jsx } from '@emotion/react';
|
|
|
4
4
|
import { useTabList } from '../hooks';
|
|
5
5
|
import { TabContext } from '../internal/context';
|
|
6
6
|
import { getTabListStyles } from '../internal/styles';
|
|
7
|
-
import { onMouseDownBlur } from '../internal/utils';
|
|
8
7
|
const baseStyles = css({
|
|
9
8
|
display: 'flex',
|
|
10
9
|
padding: "var(--ds-space-0, 0px)",
|
|
@@ -79,7 +78,6 @@ const TabList = ({
|
|
|
79
78
|
}) => jsx(TabContext.Provider, {
|
|
80
79
|
value: {
|
|
81
80
|
onClick: () => onChange(index),
|
|
82
|
-
onMouseDown: onMouseDownBlur,
|
|
83
81
|
onKeyDown,
|
|
84
82
|
'aria-setsize': length,
|
|
85
83
|
role: 'tab',
|
|
@@ -22,7 +22,6 @@ const TabPanel = ({
|
|
|
22
22
|
id,
|
|
23
23
|
hidden,
|
|
24
24
|
'aria-labelledby': ariaLabelledBy,
|
|
25
|
-
onMouseDown,
|
|
26
25
|
tabIndex
|
|
27
26
|
} = useTabPanel();
|
|
28
27
|
return jsx(FocusRing, {
|
|
@@ -33,7 +32,6 @@ const TabPanel = ({
|
|
|
33
32
|
id: id,
|
|
34
33
|
hidden: hidden,
|
|
35
34
|
"aria-labelledby": ariaLabelledBy,
|
|
36
|
-
onMouseDown: onMouseDown,
|
|
37
35
|
tabIndex: tabIndex
|
|
38
36
|
}, jsx(Fragment, null, children)));
|
|
39
37
|
};
|
|
@@ -23,7 +23,6 @@ export default function Tab({
|
|
|
23
23
|
'aria-posinset': ariaPosinset,
|
|
24
24
|
'aria-selected': ariaSelected,
|
|
25
25
|
'aria-setsize': ariaSetsize,
|
|
26
|
-
onMouseDown,
|
|
27
26
|
onKeyDown,
|
|
28
27
|
role,
|
|
29
28
|
tabIndex
|
|
@@ -38,7 +37,6 @@ export default function Tab({
|
|
|
38
37
|
"aria-posinset": ariaPosinset,
|
|
39
38
|
"aria-selected": ariaSelected,
|
|
40
39
|
"aria-setsize": ariaSetsize,
|
|
41
|
-
onMouseDown: onMouseDown,
|
|
42
40
|
onKeyDown: onKeyDown,
|
|
43
41
|
role: role,
|
|
44
42
|
tabIndex: tabIndex
|
|
@@ -4,7 +4,6 @@ import { css, jsx } from '@emotion/react';
|
|
|
4
4
|
import { usePlatformLeafEventHandler } from '@atlaskit/analytics-next/usePlatformLeafEventHandler';
|
|
5
5
|
import { TabListContext, TabPanelContext } from '../internal/context';
|
|
6
6
|
import { getTabsStyles } from '../internal/styles';
|
|
7
|
-
import { onMouseDownBlur } from '../internal/utils';
|
|
8
7
|
const baseStyles = css({
|
|
9
8
|
display: 'flex',
|
|
10
9
|
maxWidth: '100%',
|
|
@@ -19,7 +18,7 @@ const tabsStyles = getTabsStyles();
|
|
|
19
18
|
const analyticsAttributes = {
|
|
20
19
|
componentName: 'tabs',
|
|
21
20
|
packageName: "@atlaskit/tabs",
|
|
22
|
-
packageVersion: "
|
|
21
|
+
packageVersion: "16.0.0"
|
|
23
22
|
};
|
|
24
23
|
const getTabPanelWithContext = ({
|
|
25
24
|
tabPanel,
|
|
@@ -34,7 +33,6 @@ tabPanel && jsx(TabPanelContext.Provider, {
|
|
|
34
33
|
id: `${tabsId}-${index}-tab`,
|
|
35
34
|
hidden: isSelected ? undefined : true,
|
|
36
35
|
'aria-labelledby': `${tabsId}-${index}`,
|
|
37
|
-
onMouseDown: onMouseDownBlur,
|
|
38
36
|
tabIndex: isSelected ? 0 : -1
|
|
39
37
|
},
|
|
40
38
|
key: index
|
|
@@ -4,7 +4,6 @@ import { css, jsx } from '@emotion/react';
|
|
|
4
4
|
import { useTabList } from '../hooks';
|
|
5
5
|
import { TabContext } from '../internal/context';
|
|
6
6
|
import { getTabListStyles } from '../internal/styles';
|
|
7
|
-
import { onMouseDownBlur } from '../internal/utils';
|
|
8
7
|
var baseStyles = css({
|
|
9
8
|
display: 'flex',
|
|
10
9
|
padding: "var(--ds-space-0, 0px)",
|
|
@@ -79,7 +78,6 @@ var TabList = function TabList(_ref) {
|
|
|
79
78
|
onClick: function onClick() {
|
|
80
79
|
return onChange(index);
|
|
81
80
|
},
|
|
82
|
-
onMouseDown: onMouseDownBlur,
|
|
83
81
|
onKeyDown: onKeyDown,
|
|
84
82
|
'aria-setsize': length,
|
|
85
83
|
role: 'tab',
|
|
@@ -21,7 +21,6 @@ var TabPanel = function TabPanel(_ref) {
|
|
|
21
21
|
id = _useTabPanel.id,
|
|
22
22
|
hidden = _useTabPanel.hidden,
|
|
23
23
|
ariaLabelledBy = _useTabPanel['aria-labelledby'],
|
|
24
|
-
onMouseDown = _useTabPanel.onMouseDown,
|
|
25
24
|
tabIndex = _useTabPanel.tabIndex;
|
|
26
25
|
return jsx(FocusRing, {
|
|
27
26
|
isInset: true
|
|
@@ -31,7 +30,6 @@ var TabPanel = function TabPanel(_ref) {
|
|
|
31
30
|
id: id,
|
|
32
31
|
hidden: hidden,
|
|
33
32
|
"aria-labelledby": ariaLabelledBy,
|
|
34
|
-
onMouseDown: onMouseDown,
|
|
35
33
|
tabIndex: tabIndex
|
|
36
34
|
}, jsx(Fragment, null, children)));
|
|
37
35
|
};
|
|
@@ -22,7 +22,6 @@ export default function Tab(_ref) {
|
|
|
22
22
|
ariaPosinset = _useTab['aria-posinset'],
|
|
23
23
|
ariaSelected = _useTab['aria-selected'],
|
|
24
24
|
ariaSetsize = _useTab['aria-setsize'],
|
|
25
|
-
onMouseDown = _useTab.onMouseDown,
|
|
26
25
|
onKeyDown = _useTab.onKeyDown,
|
|
27
26
|
role = _useTab.role,
|
|
28
27
|
tabIndex = _useTab.tabIndex;
|
|
@@ -36,7 +35,6 @@ export default function Tab(_ref) {
|
|
|
36
35
|
"aria-posinset": ariaPosinset,
|
|
37
36
|
"aria-selected": ariaSelected,
|
|
38
37
|
"aria-setsize": ariaSetsize,
|
|
39
|
-
onMouseDown: onMouseDown,
|
|
40
38
|
onKeyDown: onKeyDown,
|
|
41
39
|
role: role,
|
|
42
40
|
tabIndex: tabIndex
|
|
@@ -9,7 +9,6 @@ import { css, jsx } from '@emotion/react';
|
|
|
9
9
|
import { usePlatformLeafEventHandler } from '@atlaskit/analytics-next/usePlatformLeafEventHandler';
|
|
10
10
|
import { TabListContext, TabPanelContext } from '../internal/context';
|
|
11
11
|
import { getTabsStyles } from '../internal/styles';
|
|
12
|
-
import { onMouseDownBlur } from '../internal/utils';
|
|
13
12
|
var baseStyles = css({
|
|
14
13
|
display: 'flex',
|
|
15
14
|
maxWidth: '100%',
|
|
@@ -24,7 +23,7 @@ var tabsStyles = getTabsStyles();
|
|
|
24
23
|
var analyticsAttributes = {
|
|
25
24
|
componentName: 'tabs',
|
|
26
25
|
packageName: "@atlaskit/tabs",
|
|
27
|
-
packageVersion: "
|
|
26
|
+
packageVersion: "16.0.0"
|
|
28
27
|
};
|
|
29
28
|
var getTabPanelWithContext = function getTabPanelWithContext(_ref) {
|
|
30
29
|
var tabPanel = _ref.tabPanel,
|
|
@@ -39,7 +38,6 @@ var getTabPanelWithContext = function getTabPanelWithContext(_ref) {
|
|
|
39
38
|
id: "".concat(tabsId, "-").concat(index, "-tab"),
|
|
40
39
|
hidden: isSelected ? undefined : true,
|
|
41
40
|
'aria-labelledby': "".concat(tabsId, "-").concat(index),
|
|
42
|
-
onMouseDown: onMouseDownBlur,
|
|
43
41
|
tabIndex: isSelected ? 0 : -1
|
|
44
42
|
},
|
|
45
43
|
key: index
|
package/dist/types/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { KeyboardEvent,
|
|
1
|
+
import { KeyboardEvent, ReactNode } from 'react';
|
|
2
2
|
import UIAnalyticsEvent from '@atlaskit/analytics-next/UIAnalyticsEvent';
|
|
3
3
|
import { WithAnalyticsEventsProps } from '@atlaskit/analytics-next/withAnalyticsEvents';
|
|
4
4
|
export interface TabProps {
|
|
@@ -133,10 +133,6 @@ export type TabAttributesType = {
|
|
|
133
133
|
* The number of tabs in this tab list.
|
|
134
134
|
*/
|
|
135
135
|
'aria-setsize': number;
|
|
136
|
-
/**
|
|
137
|
-
* Prevents a focus ring being shown when clicked.
|
|
138
|
-
*/
|
|
139
|
-
onMouseDown: (e: MouseEvent<HTMLElement>) => void;
|
|
140
136
|
/**
|
|
141
137
|
* Allows navigation of tabs with automatic activation.
|
|
142
138
|
* Read here for more details: https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-1/tabs.html
|
|
@@ -184,10 +180,6 @@ export type TabPanelAttributesType = {
|
|
|
184
180
|
* The id of the tab that links to this tab panel.
|
|
185
181
|
*/
|
|
186
182
|
'aria-labelledby': string;
|
|
187
|
-
/**
|
|
188
|
-
* Prevents a focus ring being shown when clicked.
|
|
189
|
-
*/
|
|
190
|
-
onMouseDown: (e: MouseEvent<HTMLElement>) => void;
|
|
191
183
|
/**
|
|
192
184
|
* If the tab panel is selected the tab index is 0 and is focusable.
|
|
193
185
|
* Otherwise it is -1 and is not focusable.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { KeyboardEvent,
|
|
1
|
+
import { KeyboardEvent, ReactNode } from 'react';
|
|
2
2
|
import UIAnalyticsEvent from '@atlaskit/analytics-next/UIAnalyticsEvent';
|
|
3
3
|
import { WithAnalyticsEventsProps } from '@atlaskit/analytics-next/withAnalyticsEvents';
|
|
4
4
|
export interface TabProps {
|
|
@@ -133,10 +133,6 @@ export type TabAttributesType = {
|
|
|
133
133
|
* The number of tabs in this tab list.
|
|
134
134
|
*/
|
|
135
135
|
'aria-setsize': number;
|
|
136
|
-
/**
|
|
137
|
-
* Prevents a focus ring being shown when clicked.
|
|
138
|
-
*/
|
|
139
|
-
onMouseDown: (e: MouseEvent<HTMLElement>) => void;
|
|
140
136
|
/**
|
|
141
137
|
* Allows navigation of tabs with automatic activation.
|
|
142
138
|
* Read here for more details: https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-1/tabs.html
|
|
@@ -184,10 +180,6 @@ export type TabPanelAttributesType = {
|
|
|
184
180
|
* The id of the tab that links to this tab panel.
|
|
185
181
|
*/
|
|
186
182
|
'aria-labelledby': string;
|
|
187
|
-
/**
|
|
188
|
-
* Prevents a focus ring being shown when clicked.
|
|
189
|
-
*/
|
|
190
|
-
onMouseDown: (e: MouseEvent<HTMLElement>) => void;
|
|
191
183
|
/**
|
|
192
184
|
* If the tab panel is selected the tab index is 0 and is focusable.
|
|
193
185
|
* Otherwise it is -1 and is not focusable.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/tabs",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "16.0.0",
|
|
4
4
|
"description": "Tabs are used to organize content by grouping similar information on the same page.",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -34,10 +34,10 @@
|
|
|
34
34
|
}
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@atlaskit/analytics-next": "^9.
|
|
37
|
+
"@atlaskit/analytics-next": "^9.3.0",
|
|
38
38
|
"@atlaskit/codemod-utils": "^4.2.0",
|
|
39
39
|
"@atlaskit/focus-ring": "^1.3.9",
|
|
40
|
-
"@atlaskit/primitives": "^5.
|
|
40
|
+
"@atlaskit/primitives": "^5.6.0",
|
|
41
41
|
"@atlaskit/theme": "^12.7.0",
|
|
42
42
|
"@atlaskit/tokens": "^1.43.0",
|
|
43
43
|
"@babel/runtime": "^7.0.0",
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.onMouseDownBlur = void 0;
|
|
7
|
-
// Prevent a focus ring if clicked
|
|
8
|
-
var onMouseDownBlur = exports.onMouseDownBlur = function onMouseDownBlur(e) {
|
|
9
|
-
var currentTarget = e.currentTarget;
|
|
10
|
-
var focusedDuringMouseDown = currentTarget === document.activeElement;
|
|
11
|
-
requestAnimationFrame(function () {
|
|
12
|
-
if (focusedDuringMouseDown && currentTarget !== document.activeElement && document.body.contains(currentTarget)) {
|
|
13
|
-
currentTarget.focus();
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
if (!focusedDuringMouseDown && document.body.contains(currentTarget)) {
|
|
17
|
-
currentTarget.blur();
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
// Prevent a focus ring if clicked
|
|
2
|
-
export const onMouseDownBlur = e => {
|
|
3
|
-
const currentTarget = e.currentTarget;
|
|
4
|
-
const focusedDuringMouseDown = currentTarget === document.activeElement;
|
|
5
|
-
requestAnimationFrame(() => {
|
|
6
|
-
if (focusedDuringMouseDown && currentTarget !== document.activeElement && document.body.contains(currentTarget)) {
|
|
7
|
-
currentTarget.focus();
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
if (!focusedDuringMouseDown && document.body.contains(currentTarget)) {
|
|
11
|
-
currentTarget.blur();
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
// Prevent a focus ring if clicked
|
|
2
|
-
export var onMouseDownBlur = function onMouseDownBlur(e) {
|
|
3
|
-
var currentTarget = e.currentTarget;
|
|
4
|
-
var focusedDuringMouseDown = currentTarget === document.activeElement;
|
|
5
|
-
requestAnimationFrame(function () {
|
|
6
|
-
if (focusedDuringMouseDown && currentTarget !== document.activeElement && document.body.contains(currentTarget)) {
|
|
7
|
-
currentTarget.focus();
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
if (!focusedDuringMouseDown && document.body.contains(currentTarget)) {
|
|
11
|
-
currentTarget.blur();
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
};
|