@commercetools-uikit/collapsible-panel 16.0.0 → 16.1.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/dist/commercetools-uikit-collapsible-panel.cjs.dev.js +51 -134
- package/dist/commercetools-uikit-collapsible-panel.cjs.prod.js +37 -120
- package/dist/commercetools-uikit-collapsible-panel.esm.js +52 -127
- package/dist/declarations/src/collapsible-panel.styles.d.ts +2 -6
- package/package.json +10 -10
|
@@ -2,15 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var _Object$keys = require('@babel/runtime-corejs3/core-js-stable/object/keys');
|
|
6
|
-
var _Object$getOwnPropertySymbols = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols');
|
|
7
|
-
var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/filter');
|
|
8
|
-
var _Object$getOwnPropertyDescriptor = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor');
|
|
9
|
-
var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/for-each');
|
|
10
|
-
var _Object$getOwnPropertyDescriptors = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors');
|
|
11
|
-
var _Object$defineProperties = require('@babel/runtime-corejs3/core-js-stable/object/define-properties');
|
|
12
|
-
var _Object$defineProperty = require('@babel/runtime-corejs3/core-js-stable/object/define-property');
|
|
13
|
-
var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
|
|
14
5
|
var _styled = require('@emotion/styled/base');
|
|
15
6
|
require('prop-types');
|
|
16
7
|
var react$1 = require('react');
|
|
@@ -29,14 +20,6 @@ var jsxRuntime = require('@emotion/react/jsx-runtime');
|
|
|
29
20
|
|
|
30
21
|
function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
|
|
31
22
|
|
|
32
|
-
var _Object$keys__default = /*#__PURE__*/_interopDefault(_Object$keys);
|
|
33
|
-
var _Object$getOwnPropertySymbols__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertySymbols);
|
|
34
|
-
var _filterInstanceProperty__default = /*#__PURE__*/_interopDefault(_filterInstanceProperty);
|
|
35
|
-
var _Object$getOwnPropertyDescriptor__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptor);
|
|
36
|
-
var _forEachInstanceProperty__default = /*#__PURE__*/_interopDefault(_forEachInstanceProperty);
|
|
37
|
-
var _Object$getOwnPropertyDescriptors__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptors);
|
|
38
|
-
var _Object$defineProperties__default = /*#__PURE__*/_interopDefault(_Object$defineProperties);
|
|
39
|
-
var _Object$defineProperty__default = /*#__PURE__*/_interopDefault(_Object$defineProperty);
|
|
40
23
|
var _styled__default = /*#__PURE__*/_interopDefault(_styled);
|
|
41
24
|
var isNil__default = /*#__PURE__*/_interopDefault(isNil);
|
|
42
25
|
var AccessibleButton__default = /*#__PURE__*/_interopDefault(AccessibleButton);
|
|
@@ -45,49 +28,35 @@ var Text__default = /*#__PURE__*/_interopDefault(Text);
|
|
|
45
28
|
var CollapsibleMotion__default = /*#__PURE__*/_interopDefault(CollapsibleMotion);
|
|
46
29
|
var Constraints__default = /*#__PURE__*/_interopDefault(Constraints);
|
|
47
30
|
|
|
48
|
-
const sizeIconContainer = '24px';
|
|
49
|
-
const sizeIconContainerSmall = '14px';
|
|
50
|
-
|
|
51
31
|
const getArrowColor = _ref2 => {
|
|
52
32
|
let tone = _ref2.tone,
|
|
53
|
-
|
|
54
|
-
theme = _ref2.theme;
|
|
33
|
+
isDisabled = _ref2.isDisabled;
|
|
55
34
|
if (isDisabled) return 'neutral60';
|
|
56
|
-
if (tone === 'urgent') return
|
|
35
|
+
if (tone === 'urgent') return 'warning';
|
|
57
36
|
return 'solid';
|
|
58
37
|
};
|
|
59
|
-
|
|
60
38
|
var _ref$1 = {
|
|
61
39
|
name: "1wnowod",
|
|
62
40
|
styles: "display:flex;align-items:center;justify-content:center"
|
|
63
41
|
} ;
|
|
64
|
-
|
|
65
42
|
const HeaderIcon = props => {
|
|
66
|
-
const _useTheme = designSystem.useTheme(),
|
|
67
|
-
theme = _useTheme.theme,
|
|
68
|
-
isNewTheme = _useTheme.isNewTheme;
|
|
69
|
-
|
|
70
|
-
const backgroundColor = props.tone === 'urgent' && !isNewTheme ? designSystem.designTokens.colorWarning : designSystem.designTokens.colorSurface;
|
|
71
43
|
return jsxRuntime.jsx("div", {
|
|
72
|
-
css: [_ref$1,
|
|
44
|
+
css: [_ref$1, props.isDisabled && /*#__PURE__*/react.css("box-shadow:none;border:1px solid ", designSystem.designTokens.borderForCollapsiblePanelHeaderIconWhenDisabled, ";background-color:", designSystem.designTokens.backgroundColorForCollapsiblePanelHeaderIconWhenDisabled, ";" + ("" ), "" ), "" , "" ],
|
|
73
45
|
children: props.isClosed ? jsxRuntime.jsx(icons.AngleRightIcon, {
|
|
74
46
|
color: getArrowColor({
|
|
75
47
|
tone: props.tone,
|
|
76
|
-
isDisabled: props.isDisabled
|
|
77
|
-
theme
|
|
48
|
+
isDisabled: props.isDisabled
|
|
78
49
|
}),
|
|
79
50
|
size: props.size
|
|
80
51
|
}) : jsxRuntime.jsx(icons.AngleDownIcon, {
|
|
81
52
|
color: getArrowColor({
|
|
82
53
|
tone: props.tone,
|
|
83
|
-
isDisabled: props.isDisabled
|
|
84
|
-
theme
|
|
54
|
+
isDisabled: props.isDisabled
|
|
85
55
|
}),
|
|
86
56
|
size: props.size
|
|
87
57
|
})
|
|
88
58
|
});
|
|
89
59
|
};
|
|
90
|
-
|
|
91
60
|
HeaderIcon.displayName = 'HeaderIcon';
|
|
92
61
|
HeaderIcon.defaultProps = {
|
|
93
62
|
tone: 'primary'
|
|
@@ -98,86 +67,56 @@ function getThemeStyle(theme) {
|
|
|
98
67
|
if (theme === 'light') {
|
|
99
68
|
return /*#__PURE__*/react.css("background-color:", designSystem.designTokens.colorSurface, ";" + ("" ), "" );
|
|
100
69
|
}
|
|
101
|
-
|
|
102
70
|
return /*#__PURE__*/react.css("background-color:", designSystem.designTokens.colorNeutral95, ";" + ("" ), "" );
|
|
103
71
|
}
|
|
104
|
-
|
|
105
72
|
var _ref = {
|
|
106
73
|
name: "1ll9bqd",
|
|
107
74
|
styles: "cursor:default"
|
|
108
75
|
} ;
|
|
109
|
-
|
|
110
76
|
const getHeaderContainerStyles = (props, isOpen) => {
|
|
111
|
-
const baseStyles = /*#__PURE__*/react.css("background-color:", designSystem.designTokens.colorSurface, ";border-bottom:",
|
|
77
|
+
const baseStyles = /*#__PURE__*/react.css("background-color:", designSystem.designTokens.colorSurface, ";border-bottom:", "1px solid ".concat(designSystem.designTokens.borderColorForCollapsiblePanelHeader), ";position:relative;border-top-left-radius:", designSystem.designTokens.borderRadius6, ";border-top-right-radius:", designSystem.designTokens.borderRadius6, ";display:flex;flex:1;align-items:center;list-style-type:none;justify-content:", props.headerControlsAlignment === 'left' ? 'flex-start' : 'space-between', ";padding:", props.condensed ? "".concat(designSystem.designTokens.paddingForCollapsiblePanelHeaderAsCondensed) : "".concat(designSystem.designTokens.paddingForCollapsiblePanelHeader), ";" + ("" ), "" );
|
|
112
78
|
return [baseStyles, props.isDisabled && _ref, props.isSticky && isOpen && /*#__PURE__*/react.css("z-index:1;position:sticky;top:0;border-top-right-radius:", designSystem.designTokens.borderRadius6, ";border-top-left-radius:", designSystem.designTokens.borderRadius6, ";" + ("" ), "" ), !props.condensed &&
|
|
113
79
|
/*#__PURE__*/
|
|
114
80
|
// To understand why this min-height see: https://github.com/commercetools/ui-kit/pull/616
|
|
115
81
|
react.css("min-height:", designSystem.designTokens.bigButtonHeight, ";box-sizing:content-box;" + ("" ), "" )];
|
|
116
82
|
};
|
|
117
|
-
|
|
118
83
|
const baseContainerStyles = /*#__PURE__*/react.css("position:relative;min-width:", designSystem.designTokens.constraint6, ";padding:0;display:flex;flex-direction:column;color:", designSystem.designTokens.colorSolid, ";font-family:inherit;font-size:", designSystem.designTokens.fontSizeDefault, ";" + ("" ), "" );
|
|
119
|
-
|
|
120
|
-
const getBaseContainerStyles = isNewTheme => !isNewTheme ? /*#__PURE__*/react.css("box-shadow:", designSystem.designTokens.shadow1, ";border-radius:", designSystem.designTokens.borderRadius6, ";" + ("" ), "" ) : undefined;
|
|
121
|
-
|
|
122
84
|
const HeaderControlsWrapper = /*#__PURE__*/_styled__default["default"]("div", {
|
|
123
85
|
target: "em5v1nl2"
|
|
124
86
|
} )("margin-left:", designSystem.designTokens.spacing30, ";display:flex;align-items:center;cursor:auto;" + ("" ));
|
|
125
|
-
|
|
126
87
|
const SectionContent = /*#__PURE__*/_styled__default["default"]("div", {
|
|
127
88
|
target: "em5v1nl1"
|
|
128
89
|
} )({
|
|
129
90
|
name: "esy9f9",
|
|
130
91
|
styles: "width:100%;display:flex;flex-wrap:wrap;align-items:flex-start"
|
|
131
92
|
} );
|
|
132
|
-
|
|
133
93
|
const SectionDescriptionWrapper = /*#__PURE__*/_styled__default["default"]("div", {
|
|
134
94
|
target: "em5v1nl0"
|
|
135
95
|
} )("padding:", _ref2 => {
|
|
136
96
|
let condensed = _ref2.condensed;
|
|
137
97
|
return condensed ? designSystem.designTokens.paddingForCollapsiblePanelSectionDescriptionAsCondensed : designSystem.designTokens.paddingForCollapsiblePanelSectionDescription;
|
|
138
98
|
}, ";" + ("" ));
|
|
139
|
-
|
|
140
99
|
const SectionWrapper = /*#__PURE__*/react$1.forwardRef((props, ref) => {
|
|
141
100
|
return jsxRuntime.jsx("div", {
|
|
142
101
|
ref: ref,
|
|
143
|
-
css: ["\n padding: ".concat(props.condensed ? designSystem.designTokens.paddingForCollapsiblePanelSectionWrapperAsCondensed : designSystem.designTokens.paddingForCollapsiblePanelSectionWrapper, ";\n "), props.
|
|
102
|
+
css: ["\n padding: ".concat(props.condensed ? designSystem.designTokens.paddingForCollapsiblePanelSectionWrapperAsCondensed : designSystem.designTokens.paddingForCollapsiblePanelSectionWrapper, ";\n "), props.isExpandControlHidden && 'padding-left: 0;', "" , "" ],
|
|
144
103
|
children: props.children
|
|
145
104
|
});
|
|
146
105
|
});
|
|
147
106
|
SectionWrapper.displayName = 'SectionWrapper';
|
|
148
107
|
|
|
149
|
-
const CollapsiblePanelHeader = props => {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
return jsxRuntime.jsx(Text__default["default"].Headline, {
|
|
155
|
-
as: "h2",
|
|
156
|
-
truncate: true,
|
|
157
|
-
children: props.children
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
return jsxRuntime.jsx(Text__default["default"].Subheadline, {
|
|
162
|
-
as: "h4",
|
|
163
|
-
isBold: true,
|
|
164
|
-
truncate: true,
|
|
165
|
-
children: props.children
|
|
166
|
-
});
|
|
167
|
-
};
|
|
168
|
-
|
|
108
|
+
const CollapsiblePanelHeader = props => jsxRuntime.jsx(Text__default["default"].Headline, {
|
|
109
|
+
as: "h2",
|
|
110
|
+
truncate: true,
|
|
111
|
+
children: props.children
|
|
112
|
+
});
|
|
169
113
|
CollapsiblePanelHeader.propTypes = {};
|
|
170
114
|
CollapsiblePanelHeader.displayName = 'CollapsiblePanelHeader';
|
|
171
115
|
var CollapsiblePanelHeader$1 = CollapsiblePanelHeader;
|
|
172
116
|
|
|
173
|
-
function ownKeys(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
174
|
-
|
|
175
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
|
|
176
|
-
|
|
177
117
|
const HeaderContainer = /*#__PURE__*/_styled__default["default"](AccessibleButton__default["default"], {
|
|
178
118
|
target: "e1923bli0"
|
|
179
119
|
} )("" );
|
|
180
|
-
|
|
181
120
|
const panelButtonSequentialId = utils.createSequentialId('collapsible-panel-button-');
|
|
182
121
|
const panelContentSequentialId = utils.createSequentialId('collapsible-panel-content-');
|
|
183
122
|
const defaultProps = {
|
|
@@ -187,69 +126,51 @@ const defaultProps = {
|
|
|
187
126
|
headerControlsAlignment: 'right',
|
|
188
127
|
horizontalConstraint: 'scale'
|
|
189
128
|
};
|
|
190
|
-
|
|
191
129
|
const HeadLineText = props => {
|
|
192
130
|
if (!props.condensed) {
|
|
193
131
|
return jsxRuntime.jsx(jsxRuntime.Fragment, {
|
|
194
132
|
children: props.header
|
|
195
133
|
});
|
|
196
134
|
}
|
|
135
|
+
return jsxRuntime.jsx(Text__default["default"].Subheadline, {
|
|
136
|
+
as: "h4",
|
|
137
|
+
truncate: true,
|
|
138
|
+
children: props.header
|
|
139
|
+
});
|
|
140
|
+
};
|
|
197
141
|
|
|
198
|
-
|
|
199
|
-
return jsxRuntime.jsx(Text__default["default"].Subheadline, {
|
|
200
|
-
as: "h4",
|
|
201
|
-
truncate: true,
|
|
202
|
-
children: props.header
|
|
203
|
-
});
|
|
204
|
-
} else {
|
|
205
|
-
return jsxRuntime.jsx(Text__default["default"].Detail, {
|
|
206
|
-
as: "span",
|
|
207
|
-
isBold: true,
|
|
208
|
-
truncate: true,
|
|
209
|
-
children: props.header
|
|
210
|
-
});
|
|
211
|
-
}
|
|
212
|
-
}; // When `isClosed` is provided the component behaves as a controlled component,
|
|
142
|
+
// When `isClosed` is provided the component behaves as a controlled component,
|
|
213
143
|
// otherwise it will behave like an uncontrolled component.
|
|
214
|
-
|
|
215
|
-
|
|
216
144
|
const CollapsiblePanel = props => {
|
|
217
|
-
const _useTheme = designSystem.useTheme(),
|
|
218
|
-
isNewTheme = _useTheme.isNewTheme,
|
|
219
|
-
themedValue = _useTheme.themedValue;
|
|
220
|
-
|
|
221
145
|
const panelButtonId = hooks.useFieldId(props.id, panelButtonSequentialId);
|
|
222
|
-
const panelContentId = hooks.useFieldId(undefined, panelContentSequentialId);
|
|
223
|
-
|
|
146
|
+
const panelContentId = hooks.useFieldId(undefined, panelContentSequentialId);
|
|
147
|
+
// Pass only `data-*` props
|
|
224
148
|
const dataProps = utils.filterDataAttributes(props);
|
|
225
149
|
const scale = props.condensed ? 's' : 'm';
|
|
226
|
-
const iconSize = themedValue(props.condensed ? 'small' : 'medium', 'medium');
|
|
227
150
|
!isNil__default["default"](props.isClosed) && !isNil__default["default"](props.isDefaultClosed);
|
|
228
151
|
!isNil__default["default"](props.onToggle);
|
|
229
|
-
!isNil__default["default"](props.isClosed);
|
|
230
|
-
|
|
152
|
+
!isNil__default["default"](props.isClosed);
|
|
231
153
|
return jsxRuntime.jsx(CollapsibleMotion__default["default"], {
|
|
232
154
|
isClosed: props.isClosed,
|
|
233
155
|
onToggle: props.onToggle,
|
|
234
156
|
isDefaultClosed: props.isDefaultClosed,
|
|
235
157
|
children: _ref => {
|
|
236
158
|
let isOpen = _ref.isOpen,
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
159
|
+
toggle = _ref.toggle,
|
|
160
|
+
containerStyles = _ref.containerStyles,
|
|
161
|
+
registerContentNode = _ref.registerContentNode;
|
|
240
162
|
return jsxRuntime.jsx(Constraints__default["default"].Horizontal, {
|
|
241
163
|
max: props.horizontalConstraint,
|
|
242
164
|
children: jsxRuntime.jsxs("div", {
|
|
243
|
-
css: [baseContainerStyles, getThemeStyle(
|
|
165
|
+
css: [baseContainerStyles, getThemeStyle('light'), "" , "" ]
|
|
166
|
+
// Allow to override the styles by passing a `className` prop.
|
|
244
167
|
// Custom styles can also be passed using the `css` prop from emotion.
|
|
245
168
|
// https://emotion.sh/docs/css-prop#style-precedence
|
|
246
169
|
,
|
|
247
170
|
className: props.className,
|
|
248
171
|
children: [jsxRuntime.jsxs(HeaderContainer, {
|
|
249
172
|
as: "div",
|
|
250
|
-
css: [getHeaderContainerStyles(
|
|
251
|
-
isNewTheme
|
|
252
|
-
}), isOpen), getThemeStyle(themedValue(props.theme, 'light')), "" , "" ],
|
|
173
|
+
css: [getHeaderContainerStyles(props, isOpen), getThemeStyle('light'), "" , "" ],
|
|
253
174
|
id: panelButtonId,
|
|
254
175
|
label: "",
|
|
255
176
|
onClick: props.isDisabled ? undefined : toggle,
|
|
@@ -259,19 +180,18 @@ const CollapsiblePanel = props => {
|
|
|
259
180
|
"aria-expanded": isOpen ? 'true' : 'false',
|
|
260
181
|
children: [jsxRuntime.jsxs(Spacings__default["default"].Inline, {
|
|
261
182
|
alignItems: "center",
|
|
262
|
-
scale:
|
|
183
|
+
scale: "xs",
|
|
263
184
|
children: [!props.hideExpansionControls && jsxRuntime.jsx(HeaderIcon$1, {
|
|
264
185
|
isClosed: !isOpen,
|
|
265
186
|
isDisabled: props.isDisabled || false,
|
|
266
187
|
tone: props.tone,
|
|
267
|
-
size:
|
|
188
|
+
size: 'medium'
|
|
268
189
|
}), jsxRuntime.jsxs(Spacings__default["default"].Inline, {
|
|
269
|
-
alignItems:
|
|
190
|
+
alignItems: "baseline",
|
|
270
191
|
scale: scale,
|
|
271
192
|
children: [jsxRuntime.jsx(HeadLineText, {
|
|
272
193
|
header: props.header,
|
|
273
|
-
condensed: props.condensed
|
|
274
|
-
isNewTheme: isNewTheme
|
|
194
|
+
condensed: props.condensed
|
|
275
195
|
}), props.secondaryHeader && jsxRuntime.jsx(Text__default["default"].Detail, {
|
|
276
196
|
tone: "secondary",
|
|
277
197
|
truncate: true,
|
|
@@ -284,16 +204,16 @@ const CollapsiblePanel = props => {
|
|
|
284
204
|
})]
|
|
285
205
|
}), jsxRuntime.jsx("div", {
|
|
286
206
|
style: containerStyles,
|
|
287
|
-
children: jsxRuntime.jsxs(SectionWrapper
|
|
207
|
+
children: jsxRuntime.jsxs(SectionWrapper
|
|
208
|
+
// @ts-ignore
|
|
288
209
|
, {
|
|
289
210
|
ref: registerContentNode,
|
|
290
211
|
condensed: props.condensed,
|
|
291
212
|
isExpandControlHidden: props.hideExpansionControls,
|
|
292
|
-
isNewTheme: isNewTheme,
|
|
293
213
|
children: [props.description && jsxRuntime.jsx(SectionDescriptionWrapper, {
|
|
294
214
|
condensed: props.condensed,
|
|
295
215
|
children: jsxRuntime.jsx(Text__default["default"].Detail, {
|
|
296
|
-
tone:
|
|
216
|
+
tone: "secondary",
|
|
297
217
|
children: props.description
|
|
298
218
|
})
|
|
299
219
|
}), jsxRuntime.jsx(Spacings__default["default"].Stack, {
|
|
@@ -313,22 +233,19 @@ const CollapsiblePanel = props => {
|
|
|
313
233
|
}
|
|
314
234
|
});
|
|
315
235
|
};
|
|
236
|
+
|
|
316
237
|
/**
|
|
317
238
|
* @deprecated This function is no longer supported.
|
|
318
239
|
*/
|
|
319
|
-
|
|
320
|
-
|
|
321
240
|
CollapsiblePanel.propTypes = {};
|
|
322
|
-
|
|
323
241
|
CollapsiblePanel.getPanelContentId = () => '';
|
|
324
|
-
|
|
325
242
|
CollapsiblePanel.displayName = 'CollapsiblePanel';
|
|
326
243
|
CollapsiblePanel.defaultProps = defaultProps;
|
|
327
244
|
CollapsiblePanel.Header = CollapsiblePanelHeader$1;
|
|
328
245
|
var CollapsiblePanel$1 = CollapsiblePanel;
|
|
329
246
|
|
|
330
247
|
// NOTE: This string will be replaced on build time with the package version.
|
|
331
|
-
var version = "16.
|
|
248
|
+
var version = "16.1.1";
|
|
332
249
|
|
|
333
250
|
exports["default"] = CollapsiblePanel$1;
|
|
334
251
|
exports.version = version;
|