@atlaskit/editor-plugin-card 0.14.21 → 0.14.23
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 +12 -0
- package/dist/cjs/nodeviews/embedCard.js +1 -1
- package/dist/cjs/ui/HyperlinkToolbarAppearance.js +5 -4
- package/dist/cjs/ui/ResizableEmbedCard.js +10 -6
- package/dist/es2019/nodeviews/embedCard.js +1 -1
- package/dist/es2019/ui/HyperlinkToolbarAppearance.js +3 -2
- package/dist/es2019/ui/ResizableEmbedCard.js +11 -7
- package/dist/esm/nodeviews/embedCard.js +1 -1
- package/dist/esm/ui/HyperlinkToolbarAppearance.js +5 -4
- package/dist/esm/ui/ResizableEmbedCard.js +11 -7
- package/package.json +8 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-card
|
|
2
2
|
|
|
3
|
+
## 0.14.23
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#63354](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/63354) [`0b49755d1170`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/0b49755d1170) - [ux] Include embed card frame as part of its width when frameStyle is set to "show" and show embed frame by default in renderer
|
|
8
|
+
|
|
9
|
+
## 0.14.22
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [#61458](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/61458) [`f69cbc65f2ea`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/f69cbc65f2ea) - Avoid mutating state directly
|
|
14
|
+
|
|
3
15
|
## 0.14.21
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
|
@@ -304,7 +304,7 @@ var EmbedCardComponent = exports.EmbedCardComponent = /*#__PURE__*/function (_Re
|
|
|
304
304
|
onResolve: this.onResolve,
|
|
305
305
|
onError: this.onError,
|
|
306
306
|
showActions: platform === 'web',
|
|
307
|
-
|
|
307
|
+
frameStyle: "show",
|
|
308
308
|
inheritDimensions: true,
|
|
309
309
|
platform: platform,
|
|
310
310
|
container: this.scrollContainer,
|
|
@@ -84,7 +84,7 @@ var HyperlinkToolbarAppearance = exports.HyperlinkToolbarAppearance = /*#__PURE_
|
|
|
84
84
|
})));
|
|
85
85
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "resolveUrl", /*#__PURE__*/function () {
|
|
86
86
|
var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(url) {
|
|
87
|
-
var supportedUrlsMap, isUrlSupported, provider;
|
|
87
|
+
var supportedUrlsMap, isUrlSupported, provider, newMap;
|
|
88
88
|
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
89
89
|
while (1) switch (_context3.prev = _context3.next) {
|
|
90
90
|
case 0:
|
|
@@ -112,11 +112,12 @@ var HyperlinkToolbarAppearance = exports.HyperlinkToolbarAppearance = /*#__PURE_
|
|
|
112
112
|
_context3.t0 = _context3["catch"](4);
|
|
113
113
|
isUrlSupported = false;
|
|
114
114
|
case 16:
|
|
115
|
-
supportedUrlsMap
|
|
115
|
+
newMap = new Map(supportedUrlsMap);
|
|
116
|
+
newMap.set(url, isUrlSupported);
|
|
116
117
|
_this.setState({
|
|
117
|
-
supportedUrlsMap:
|
|
118
|
+
supportedUrlsMap: newMap
|
|
118
119
|
});
|
|
119
|
-
case
|
|
120
|
+
case 19:
|
|
120
121
|
case "end":
|
|
121
122
|
return _context3.stop();
|
|
122
123
|
}
|
|
@@ -19,6 +19,7 @@ var _styles = require("@atlaskit/editor-common/styles");
|
|
|
19
19
|
var _ui = require("@atlaskit/editor-common/ui");
|
|
20
20
|
var _utils = require("@atlaskit/editor-prosemirror/utils");
|
|
21
21
|
var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
|
|
22
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
22
23
|
var _smartCard = require("@atlaskit/smart-card");
|
|
23
24
|
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; }
|
|
24
25
|
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; }
|
|
@@ -332,7 +333,13 @@ var ResizableEmbedCard = exports.default = /*#__PURE__*/function (_React$Compone
|
|
|
332
333
|
containerWidth = _this$props6.containerWidth,
|
|
333
334
|
fullWidthMode = _this$props6.fullWidthMode,
|
|
334
335
|
children = _this$props6.children;
|
|
335
|
-
var
|
|
336
|
+
var resizerProps = (0, _platformFeatureFlags.getBooleanFF)('platform.editor.show-embed-card-frame-renderer') ? {
|
|
337
|
+
width: this.calcPxWidth(),
|
|
338
|
+
innerPadding: _editorSharedStyles.akEditorMediaResizeHandlerPadding
|
|
339
|
+
} : {
|
|
340
|
+
width: this.calcPxWidth() - _editorSharedStyles.akEditorMediaResizeHandlerPaddingWide,
|
|
341
|
+
innerPadding: _editorSharedStyles.akEditorMediaResizeHandlerPaddingWide
|
|
342
|
+
};
|
|
336
343
|
var enable = {};
|
|
337
344
|
_ui.handleSides.forEach(function (side) {
|
|
338
345
|
var oppositeSide = side === 'left' ? 'right' : 'left';
|
|
@@ -359,7 +366,7 @@ var ResizableEmbedCard = exports.default = /*#__PURE__*/function (_React$Compone
|
|
|
359
366
|
|
|
360
367
|
/* eslint-disable @atlaskit/design-system/consistent-css-prop-usage */
|
|
361
368
|
return (0, _react2.jsx)("div", {
|
|
362
|
-
css: _styles.embedSpacingStyles,
|
|
369
|
+
css: (0, _platformFeatureFlags.getBooleanFF)('platform.editor.show-embed-card-frame-renderer') ? {} : _styles.embedSpacingStyles,
|
|
363
370
|
"data-testid": "resizable-embed-card-spacing"
|
|
364
371
|
}, (0, _react2.jsx)("div", {
|
|
365
372
|
css: (0, _ui.wrapperStyle)({
|
|
@@ -369,17 +376,14 @@ var ResizableEmbedCard = exports.default = /*#__PURE__*/function (_React$Compone
|
|
|
369
376
|
fullWidthMode: fullWidthMode
|
|
370
377
|
})
|
|
371
378
|
}, (0, _react2.jsx)(_ui.Resizer, (0, _extends2.default)({}, this.props, {
|
|
372
|
-
width: initialWidth // Starting or initial width of embed <iframe> itself.
|
|
373
|
-
,
|
|
374
379
|
enable: enable,
|
|
375
380
|
calcNewSize: this.calcNewSize,
|
|
376
381
|
snapPoints: this.calcSnapPoints(),
|
|
377
382
|
scaleFactor: !this.wrappedLayout && !this.insideInlineLike ? 2 : 1,
|
|
378
383
|
highlights: this.highlights,
|
|
379
|
-
innerPadding: _editorSharedStyles.akEditorMediaResizeHandlerPaddingWide,
|
|
380
384
|
nodeType: "embed",
|
|
381
385
|
handleStyles: nestedInTableHandleStyles(this.isNestedInTable())
|
|
382
|
-
}), children, this.getHeightDefiningComponent())));
|
|
386
|
+
}, resizerProps), children, this.getHeightDefiningComponent())));
|
|
383
387
|
/* eslint-enable @atlaskit/design-system/consistent-css-prop-usage */
|
|
384
388
|
}
|
|
385
389
|
}]);
|
|
@@ -293,7 +293,7 @@ export class EmbedCardComponent extends React.PureComponent {
|
|
|
293
293
|
onResolve: this.onResolve,
|
|
294
294
|
onError: this.onError,
|
|
295
295
|
showActions: platform === 'web',
|
|
296
|
-
|
|
296
|
+
frameStyle: "show",
|
|
297
297
|
inheritDimensions: true,
|
|
298
298
|
platform: platform,
|
|
299
299
|
container: this.scrollContainer,
|
|
@@ -41,9 +41,10 @@ export class HyperlinkToolbarAppearance extends Component {
|
|
|
41
41
|
} catch (error) {
|
|
42
42
|
isUrlSupported = false;
|
|
43
43
|
}
|
|
44
|
-
supportedUrlsMap
|
|
44
|
+
const newMap = new Map(supportedUrlsMap);
|
|
45
|
+
newMap.set(url, isUrlSupported);
|
|
45
46
|
this.setState({
|
|
46
|
-
supportedUrlsMap
|
|
47
|
+
supportedUrlsMap: newMap
|
|
47
48
|
});
|
|
48
49
|
});
|
|
49
50
|
_defineProperty(this, "componentDidMount", () => this.resolveUrl(this.props.url));
|
|
@@ -6,7 +6,8 @@ import { jsx } from '@emotion/react';
|
|
|
6
6
|
import { embedSpacingStyles } from '@atlaskit/editor-common/styles';
|
|
7
7
|
import { calcColumnsFromPx, calcMediaPxWidth, calcPctFromPx, calcPxFromColumns, handleSides, imageAlignmentMap, Resizer, snapTo, wrappedLayouts, wrapperStyle } from '@atlaskit/editor-common/ui';
|
|
8
8
|
import { findParentNodeOfTypeClosestToPos, hasParentNodeOfType } from '@atlaskit/editor-prosemirror/utils';
|
|
9
|
-
import { akEditorBreakoutPadding, akEditorMediaResizeHandlerPaddingWide, akEditorWideLayoutWidth, breakoutWideScaleRatio, DEFAULT_EMBED_CARD_HEIGHT, DEFAULT_EMBED_CARD_WIDTH } from '@atlaskit/editor-shared-styles';
|
|
9
|
+
import { akEditorBreakoutPadding, akEditorMediaResizeHandlerPadding, akEditorMediaResizeHandlerPaddingWide, akEditorWideLayoutWidth, breakoutWideScaleRatio, DEFAULT_EMBED_CARD_HEIGHT, DEFAULT_EMBED_CARD_WIDTH } from '@atlaskit/editor-shared-styles';
|
|
10
|
+
import { getBooleanFF } from '@atlaskit/platform-feature-flags';
|
|
10
11
|
import { embedHeaderHeight } from '@atlaskit/smart-card';
|
|
11
12
|
// eslint-disable-next-line @repo/internal/react/no-class-components
|
|
12
13
|
export default class ResizableEmbedCard extends React.Component {
|
|
@@ -306,7 +307,13 @@ export default class ResizableEmbedCard extends React.Component {
|
|
|
306
307
|
fullWidthMode,
|
|
307
308
|
children
|
|
308
309
|
} = this.props;
|
|
309
|
-
const
|
|
310
|
+
const resizerProps = getBooleanFF('platform.editor.show-embed-card-frame-renderer') ? {
|
|
311
|
+
width: this.calcPxWidth(),
|
|
312
|
+
innerPadding: akEditorMediaResizeHandlerPadding
|
|
313
|
+
} : {
|
|
314
|
+
width: this.calcPxWidth() - akEditorMediaResizeHandlerPaddingWide,
|
|
315
|
+
innerPadding: akEditorMediaResizeHandlerPaddingWide
|
|
316
|
+
};
|
|
310
317
|
const enable = {};
|
|
311
318
|
handleSides.forEach(side => {
|
|
312
319
|
const oppositeSide = side === 'left' ? 'right' : 'left';
|
|
@@ -333,7 +340,7 @@ export default class ResizableEmbedCard extends React.Component {
|
|
|
333
340
|
|
|
334
341
|
/* eslint-disable @atlaskit/design-system/consistent-css-prop-usage */
|
|
335
342
|
return jsx("div", {
|
|
336
|
-
css: embedSpacingStyles,
|
|
343
|
+
css: getBooleanFF('platform.editor.show-embed-card-frame-renderer') ? {} : embedSpacingStyles,
|
|
337
344
|
"data-testid": "resizable-embed-card-spacing"
|
|
338
345
|
}, jsx("div", {
|
|
339
346
|
css: wrapperStyle({
|
|
@@ -343,17 +350,14 @@ export default class ResizableEmbedCard extends React.Component {
|
|
|
343
350
|
fullWidthMode
|
|
344
351
|
})
|
|
345
352
|
}, jsx(Resizer, _extends({}, this.props, {
|
|
346
|
-
width: initialWidth // Starting or initial width of embed <iframe> itself.
|
|
347
|
-
,
|
|
348
353
|
enable: enable,
|
|
349
354
|
calcNewSize: this.calcNewSize,
|
|
350
355
|
snapPoints: this.calcSnapPoints(),
|
|
351
356
|
scaleFactor: !this.wrappedLayout && !this.insideInlineLike ? 2 : 1,
|
|
352
357
|
highlights: this.highlights,
|
|
353
|
-
innerPadding: akEditorMediaResizeHandlerPaddingWide,
|
|
354
358
|
nodeType: "embed",
|
|
355
359
|
handleStyles: nestedInTableHandleStyles(this.isNestedInTable())
|
|
356
|
-
}), children, this.getHeightDefiningComponent())));
|
|
360
|
+
}, resizerProps), children, this.getHeightDefiningComponent())));
|
|
357
361
|
/* eslint-enable @atlaskit/design-system/consistent-css-prop-usage */
|
|
358
362
|
}
|
|
359
363
|
}
|
|
@@ -297,7 +297,7 @@ export var EmbedCardComponent = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
297
297
|
onResolve: this.onResolve,
|
|
298
298
|
onError: this.onError,
|
|
299
299
|
showActions: platform === 'web',
|
|
300
|
-
|
|
300
|
+
frameStyle: "show",
|
|
301
301
|
inheritDimensions: true,
|
|
302
302
|
platform: platform,
|
|
303
303
|
container: this.scrollContainer,
|
|
@@ -74,7 +74,7 @@ export var HyperlinkToolbarAppearance = /*#__PURE__*/function (_Component) {
|
|
|
74
74
|
})));
|
|
75
75
|
_defineProperty(_assertThisInitialized(_this), "resolveUrl", /*#__PURE__*/function () {
|
|
76
76
|
var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(url) {
|
|
77
|
-
var supportedUrlsMap, isUrlSupported, provider;
|
|
77
|
+
var supportedUrlsMap, isUrlSupported, provider, newMap;
|
|
78
78
|
return _regeneratorRuntime.wrap(function _callee3$(_context3) {
|
|
79
79
|
while (1) switch (_context3.prev = _context3.next) {
|
|
80
80
|
case 0:
|
|
@@ -102,11 +102,12 @@ export var HyperlinkToolbarAppearance = /*#__PURE__*/function (_Component) {
|
|
|
102
102
|
_context3.t0 = _context3["catch"](4);
|
|
103
103
|
isUrlSupported = false;
|
|
104
104
|
case 16:
|
|
105
|
-
supportedUrlsMap
|
|
105
|
+
newMap = new Map(supportedUrlsMap);
|
|
106
|
+
newMap.set(url, isUrlSupported);
|
|
106
107
|
_this.setState({
|
|
107
|
-
supportedUrlsMap:
|
|
108
|
+
supportedUrlsMap: newMap
|
|
108
109
|
});
|
|
109
|
-
case
|
|
110
|
+
case 19:
|
|
110
111
|
case "end":
|
|
111
112
|
return _context3.stop();
|
|
112
113
|
}
|
|
@@ -16,7 +16,8 @@ import { jsx } from '@emotion/react';
|
|
|
16
16
|
import { embedSpacingStyles } from '@atlaskit/editor-common/styles';
|
|
17
17
|
import { calcColumnsFromPx, calcMediaPxWidth, calcPctFromPx, calcPxFromColumns, handleSides, imageAlignmentMap, Resizer, snapTo, wrappedLayouts, wrapperStyle } from '@atlaskit/editor-common/ui';
|
|
18
18
|
import { findParentNodeOfTypeClosestToPos, hasParentNodeOfType } from '@atlaskit/editor-prosemirror/utils';
|
|
19
|
-
import { akEditorBreakoutPadding, akEditorMediaResizeHandlerPaddingWide, akEditorWideLayoutWidth, breakoutWideScaleRatio, DEFAULT_EMBED_CARD_HEIGHT, DEFAULT_EMBED_CARD_WIDTH } from '@atlaskit/editor-shared-styles';
|
|
19
|
+
import { akEditorBreakoutPadding, akEditorMediaResizeHandlerPadding, akEditorMediaResizeHandlerPaddingWide, akEditorWideLayoutWidth, breakoutWideScaleRatio, DEFAULT_EMBED_CARD_HEIGHT, DEFAULT_EMBED_CARD_WIDTH } from '@atlaskit/editor-shared-styles';
|
|
20
|
+
import { getBooleanFF } from '@atlaskit/platform-feature-flags';
|
|
20
21
|
import { embedHeaderHeight } from '@atlaskit/smart-card';
|
|
21
22
|
// eslint-disable-next-line @repo/internal/react/no-class-components
|
|
22
23
|
var ResizableEmbedCard = /*#__PURE__*/function (_React$Component) {
|
|
@@ -326,7 +327,13 @@ var ResizableEmbedCard = /*#__PURE__*/function (_React$Component) {
|
|
|
326
327
|
containerWidth = _this$props6.containerWidth,
|
|
327
328
|
fullWidthMode = _this$props6.fullWidthMode,
|
|
328
329
|
children = _this$props6.children;
|
|
329
|
-
var
|
|
330
|
+
var resizerProps = getBooleanFF('platform.editor.show-embed-card-frame-renderer') ? {
|
|
331
|
+
width: this.calcPxWidth(),
|
|
332
|
+
innerPadding: akEditorMediaResizeHandlerPadding
|
|
333
|
+
} : {
|
|
334
|
+
width: this.calcPxWidth() - akEditorMediaResizeHandlerPaddingWide,
|
|
335
|
+
innerPadding: akEditorMediaResizeHandlerPaddingWide
|
|
336
|
+
};
|
|
330
337
|
var enable = {};
|
|
331
338
|
handleSides.forEach(function (side) {
|
|
332
339
|
var oppositeSide = side === 'left' ? 'right' : 'left';
|
|
@@ -353,7 +360,7 @@ var ResizableEmbedCard = /*#__PURE__*/function (_React$Component) {
|
|
|
353
360
|
|
|
354
361
|
/* eslint-disable @atlaskit/design-system/consistent-css-prop-usage */
|
|
355
362
|
return jsx("div", {
|
|
356
|
-
css: embedSpacingStyles,
|
|
363
|
+
css: getBooleanFF('platform.editor.show-embed-card-frame-renderer') ? {} : embedSpacingStyles,
|
|
357
364
|
"data-testid": "resizable-embed-card-spacing"
|
|
358
365
|
}, jsx("div", {
|
|
359
366
|
css: wrapperStyle({
|
|
@@ -363,17 +370,14 @@ var ResizableEmbedCard = /*#__PURE__*/function (_React$Component) {
|
|
|
363
370
|
fullWidthMode: fullWidthMode
|
|
364
371
|
})
|
|
365
372
|
}, jsx(Resizer, _extends({}, this.props, {
|
|
366
|
-
width: initialWidth // Starting or initial width of embed <iframe> itself.
|
|
367
|
-
,
|
|
368
373
|
enable: enable,
|
|
369
374
|
calcNewSize: this.calcNewSize,
|
|
370
375
|
snapPoints: this.calcSnapPoints(),
|
|
371
376
|
scaleFactor: !this.wrappedLayout && !this.insideInlineLike ? 2 : 1,
|
|
372
377
|
highlights: this.highlights,
|
|
373
|
-
innerPadding: akEditorMediaResizeHandlerPaddingWide,
|
|
374
378
|
nodeType: "embed",
|
|
375
379
|
handleStyles: nestedInTableHandleStyles(this.isNestedInTable())
|
|
376
|
-
}), children, this.getHeightDefiningComponent())));
|
|
380
|
+
}, resizerProps), children, this.getHeightDefiningComponent())));
|
|
377
381
|
/* eslint-enable @atlaskit/design-system/consistent-css-prop-usage */
|
|
378
382
|
}
|
|
379
383
|
}]);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/editor-plugin-card",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.23",
|
|
4
4
|
"description": "Card plugin for @atlaskit/editor-core",
|
|
5
5
|
"author": "Atlassian Pty Ltd",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
"atlassian": {
|
|
11
11
|
"team": "Linking Platform",
|
|
12
12
|
"singleton": true,
|
|
13
|
-
"releaseModel": "continuous"
|
|
13
|
+
"releaseModel": "continuous",
|
|
14
|
+
"runReact18": false
|
|
14
15
|
},
|
|
15
16
|
"repository": "https://bitbucket.org/atlassian/atlassian-frontend",
|
|
16
17
|
"main": "dist/cjs/index.js",
|
|
@@ -34,7 +35,7 @@
|
|
|
34
35
|
"@atlaskit/adf-schema": "^35.2.0",
|
|
35
36
|
"@atlaskit/analytics-next": "^9.1.0",
|
|
36
37
|
"@atlaskit/custom-steps": "^0.0.10",
|
|
37
|
-
"@atlaskit/editor-common": "^76.
|
|
38
|
+
"@atlaskit/editor-common": "^76.29.0",
|
|
38
39
|
"@atlaskit/editor-plugin-analytics": "^0.4.0",
|
|
39
40
|
"@atlaskit/editor-plugin-decorations": "^0.2.0",
|
|
40
41
|
"@atlaskit/editor-plugin-feature-flags": "^1.0.0",
|
|
@@ -55,7 +56,7 @@
|
|
|
55
56
|
"@atlaskit/primitives": "^1.15.0",
|
|
56
57
|
"@atlaskit/smart-card": "^26.43.0",
|
|
57
58
|
"@atlaskit/theme": "^12.6.0",
|
|
58
|
-
"@atlaskit/tokens": "^1.
|
|
59
|
+
"@atlaskit/tokens": "^1.32.0",
|
|
59
60
|
"@babel/runtime": "^7.0.0",
|
|
60
61
|
"@emotion/react": "^11.7.1",
|
|
61
62
|
"lodash": "^4.17.21",
|
|
@@ -129,6 +130,9 @@
|
|
|
129
130
|
},
|
|
130
131
|
"platform.linking-platform.smart-card.inline-switcher": {
|
|
131
132
|
"type": "boolean"
|
|
133
|
+
},
|
|
134
|
+
"platform.editor.show-embed-card-frame-renderer": {
|
|
135
|
+
"type": "boolean"
|
|
132
136
|
}
|
|
133
137
|
}
|
|
134
138
|
}
|