@atlaskit/renderer 107.1.0 → 107.3.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.
Files changed (70) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/cjs/analytics/enums.js +61 -1
  3. package/dist/cjs/react/index.js +10 -1
  4. package/dist/cjs/react/nodes/blockCard.js +6 -2
  5. package/dist/cjs/react/nodes/codeBlock/codeBlock.js +18 -6
  6. package/dist/cjs/react/nodes/codeBlock/components/codeBlockButtonContainer.js +67 -0
  7. package/dist/cjs/react/nodes/codeBlock/components/codeBlockContainer.js +15 -8
  8. package/dist/cjs/react/nodes/codeBlock/components/codeBlockCopyButton.js +71 -0
  9. package/dist/cjs/react/nodes/codeBlock/components/codeBlockWrapButton.js +76 -0
  10. package/dist/cjs/react/nodes/codeBlock/windowedCodeBlock.js +13 -2
  11. package/dist/cjs/react/nodes/inlineCard.js +5 -2
  12. package/dist/cjs/react/nodes/media.js +18 -1
  13. package/dist/cjs/react/nodes/mediaInline.js +19 -4
  14. package/dist/cjs/react/nodes/tableCell.js +6 -1
  15. package/dist/cjs/ui/Renderer/index.js +5 -1
  16. package/dist/cjs/ui/Renderer/style.js +2 -2
  17. package/dist/cjs/version.json +1 -1
  18. package/dist/es2019/analytics/enums.js +55 -1
  19. package/dist/es2019/react/index.js +7 -1
  20. package/dist/es2019/react/nodes/blockCard.js +7 -2
  21. package/dist/es2019/react/nodes/codeBlock/codeBlock.js +10 -3
  22. package/dist/es2019/react/nodes/codeBlock/components/codeBlockButtonContainer.js +59 -0
  23. package/dist/es2019/react/nodes/codeBlock/components/codeBlockContainer.js +25 -8
  24. package/dist/es2019/react/nodes/codeBlock/components/codeBlockCopyButton.js +52 -0
  25. package/dist/es2019/react/nodes/codeBlock/components/codeBlockWrapButton.js +67 -0
  26. package/dist/es2019/react/nodes/codeBlock/windowedCodeBlock.js +9 -4
  27. package/dist/es2019/react/nodes/inlineCard.js +5 -2
  28. package/dist/es2019/react/nodes/media.js +18 -1
  29. package/dist/es2019/react/nodes/mediaInline.js +19 -4
  30. package/dist/es2019/react/nodes/tableCell.js +6 -1
  31. package/dist/es2019/ui/Renderer/index.js +5 -1
  32. package/dist/es2019/ui/Renderer/style.js +9 -11
  33. package/dist/es2019/version.json +1 -1
  34. package/dist/esm/analytics/enums.js +55 -1
  35. package/dist/esm/react/index.js +10 -1
  36. package/dist/esm/react/nodes/blockCard.js +6 -2
  37. package/dist/esm/react/nodes/codeBlock/codeBlock.js +15 -3
  38. package/dist/esm/react/nodes/codeBlock/components/codeBlockButtonContainer.js +58 -0
  39. package/dist/esm/react/nodes/codeBlock/components/codeBlockContainer.js +15 -9
  40. package/dist/esm/react/nodes/codeBlock/components/codeBlockCopyButton.js +59 -0
  41. package/dist/esm/react/nodes/codeBlock/components/codeBlockWrapButton.js +67 -0
  42. package/dist/esm/react/nodes/codeBlock/windowedCodeBlock.js +14 -4
  43. package/dist/esm/react/nodes/inlineCard.js +5 -2
  44. package/dist/esm/react/nodes/media.js +18 -1
  45. package/dist/esm/react/nodes/mediaInline.js +19 -4
  46. package/dist/esm/react/nodes/tableCell.js +6 -1
  47. package/dist/esm/ui/Renderer/index.js +5 -1
  48. package/dist/esm/ui/Renderer/style.js +2 -2
  49. package/dist/esm/version.json +1 -1
  50. package/dist/types/analytics/enums.d.ts +51 -0
  51. package/dist/types/analytics/events.d.ts +5 -1
  52. package/dist/types/react/index.d.ts +2 -0
  53. package/dist/types/react/nodes/blockCard.d.ts +2 -0
  54. package/dist/types/react/nodes/codeBlock/codeBlock.d.ts +1 -0
  55. package/dist/types/react/nodes/codeBlock/components/codeBlockButtonContainer.d.ts +12 -0
  56. package/dist/types/react/nodes/codeBlock/components/codeBlockContainer.d.ts +5 -7
  57. package/dist/types/react/nodes/codeBlock/components/codeBlockWrapButton.d.ts +11 -0
  58. package/dist/types/react/nodes/codeBlock/windowedCodeBlock.d.ts +1 -1
  59. package/dist/types/react/nodes/index.d.ts +1 -0
  60. package/dist/types/react/nodes/media.d.ts +3 -2
  61. package/dist/types/react/nodes/mediaInline.d.ts +6 -0
  62. package/dist/types/react/types.d.ts +1 -0
  63. package/dist/types/types/smartLinksOptions.d.ts +1 -0
  64. package/dist/types/ui/renderer-props.d.ts +1 -0
  65. package/package.json +20 -20
  66. package/report.api.md +21 -2
  67. package/dist/cjs/react/nodes/codeBlockCopyButton.js +0 -64
  68. package/dist/es2019/react/nodes/codeBlockCopyButton.js +0 -86
  69. package/dist/esm/react/nodes/codeBlockCopyButton.js +0 -54
  70. /package/dist/types/react/nodes/{codeBlockCopyButton.d.ts → codeBlock/components/codeBlockCopyButton.d.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # @atlaskit/renderer
2
2
 
3
+ ## 107.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`4f75910f899`](https://bitbucket.org/atlassian/atlassian-frontend/commits/4f75910f899) - [ux] Add code wrapping button to code block TSLA-266
8
+ - [`bf04c417bfd`](https://bitbucket.org/atlassian/atlassian-frontend/commits/bf04c417bfd) - Add "border" mark to stage0 ADF schema
9
+
10
+ ### Patch Changes
11
+
12
+ - [`31717a1fe63`](https://bitbucket.org/atlassian/atlassian-frontend/commits/31717a1fe63) - Fix the bug when clicking on media inline files in Hybrid Renderer, viewer is not opening.
13
+ - Updated dependencies
14
+
15
+ ## 107.2.0
16
+
17
+ ### Minor Changes
18
+
19
+ - [`0078ddc7e2e`](https://bitbucket.org/atlassian/atlassian-frontend/commits/0078ddc7e2e) - New smartLinks prop to allow renderer and editor to determine whether smart link should show actions that can change the link resource.
20
+
21
+ ### Patch Changes
22
+
23
+ - [`2367ba14aa0`](https://bitbucket.org/atlassian/atlassian-frontend/commits/2367ba14aa0) - [ux] ED-16758 Added support for theme tokens in table cell background color.
24
+ - Updated dependencies
25
+
3
26
  ## 107.1.0
4
27
 
5
28
  ### Minor Changes
@@ -2,4 +2,64 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
- });
5
+ });
6
+ exports.EVENT_TYPE = exports.ACTION_SUBJECT_ID = exports.ACTION_SUBJECT = exports.ACTION = void 0;
7
+ var EVENT_TYPE;
8
+ exports.EVENT_TYPE = EVENT_TYPE;
9
+ (function (EVENT_TYPE) {
10
+ EVENT_TYPE["OPERATIONAL"] = "operational";
11
+ EVENT_TYPE["SCREEN"] = "screen";
12
+ EVENT_TYPE["TRACK"] = "track";
13
+ EVENT_TYPE["UI"] = "ui";
14
+ })(EVENT_TYPE || (exports.EVENT_TYPE = EVENT_TYPE = {}));
15
+ var ACTION;
16
+ exports.ACTION = ACTION;
17
+ (function (ACTION) {
18
+ ACTION["STARTED"] = "started";
19
+ ACTION["RENDERED"] = "rendered";
20
+ ACTION["RE_RENDERED"] = "reRendered";
21
+ ACTION["RENDERER_TTI"] = "tti";
22
+ ACTION["CRASHED"] = "unhandledErrorCaught";
23
+ ACTION["INVALID_PROSEMIRROR_DOCUMENT"] = "invalidProsemirrorDocument";
24
+ ACTION["SELECT_ALL_CAUGHT"] = "selectAllCaught";
25
+ ACTION["SELECT_ALL_ESCAPED"] = "selectAllEscaped";
26
+ ACTION["CLICKED"] = "clicked";
27
+ ACTION["VIEWED"] = "viewed";
28
+ ACTION["VISITED"] = "visited";
29
+ ACTION["SORT_COLUMN"] = "sortedColumn";
30
+ ACTION["SORT_COLUMN_NOT_ALLOWED"] = "sortColumnNotAllowed";
31
+ ACTION["TOGGLE_EXPAND"] = "toggleExpand";
32
+ ACTION["INSERTED"] = "inserted";
33
+ ACTION["OPENED"] = "opened";
34
+ ACTION["CLOSED"] = "closed";
35
+ ACTION["DELETED"] = "deleted";
36
+ ACTION["EDITED"] = "edited";
37
+ ACTION["RESOLVED"] = "resolved";
38
+ ACTION["CREATE_NOT_ALLOWED"] = "createNotAllowed";
39
+ ACTION["UNSUPPORTED_CONTENT_LEVELS_TRACKING_SUCCEEDED"] = "unsupportedContentLevelsTrackingSucceeded";
40
+ ACTION["UNSUPPORTED_CONTENT_LEVELS_TRACKING_ERRORED"] = "unsupportedContentLevelsTrackingErrored";
41
+ ACTION["MEDIA_LINK_TRANSFORMED"] = "mediaLinkTransformed";
42
+ })(ACTION || (exports.ACTION = ACTION = {}));
43
+ var ACTION_SUBJECT;
44
+ exports.ACTION_SUBJECT = ACTION_SUBJECT;
45
+ (function (ACTION_SUBJECT) {
46
+ ACTION_SUBJECT["RENDERER"] = "renderer";
47
+ ACTION_SUBJECT["BUTTON"] = "button";
48
+ ACTION_SUBJECT["ANCHOR_LINK"] = "anchorLink";
49
+ ACTION_SUBJECT["TABLE"] = "table";
50
+ ACTION_SUBJECT["EXPAND"] = "expand";
51
+ ACTION_SUBJECT["NESTED_EXPAND"] = "nestedExpand";
52
+ ACTION_SUBJECT["MEDIA_SINGLE"] = "mediaSingle";
53
+ ACTION_SUBJECT["LINK"] = "link";
54
+ ACTION_SUBJECT["ANNOTATION"] = "annotation";
55
+ ACTION_SUBJECT["MEDIA"] = "media";
56
+ })(ACTION_SUBJECT || (exports.ACTION_SUBJECT = ACTION_SUBJECT = {}));
57
+ var ACTION_SUBJECT_ID;
58
+ exports.ACTION_SUBJECT_ID = ACTION_SUBJECT_ID;
59
+ (function (ACTION_SUBJECT_ID) {
60
+ ACTION_SUBJECT_ID["HEADING_ANCHOR_LINK"] = "headingAnchorLink";
61
+ ACTION_SUBJECT_ID["LINK"] = "link";
62
+ ACTION_SUBJECT_ID["INLINE_COMMENT"] = "inlineComment";
63
+ ACTION_SUBJECT_ID["CODEBLOCK_COPY"] = "codeBlockCopy";
64
+ ACTION_SUBJECT_ID["CODEBLOCK_WRAP"] = "codeBlockWrap";
65
+ })(ACTION_SUBJECT_ID || (exports.ACTION_SUBJECT_ID = ACTION_SUBJECT_ID = {}));
@@ -53,6 +53,7 @@ var ReactSerializer = /*#__PURE__*/function () {
53
53
  (0, _defineProperty2.default)(this, "headingIds", []);
54
54
  (0, _defineProperty2.default)(this, "expandHeadingIds", []);
55
55
  (0, _defineProperty2.default)(this, "allowCopyToClipboard", false);
56
+ (0, _defineProperty2.default)(this, "allowWrapCodeBlock", false);
56
57
  (0, _defineProperty2.default)(this, "allowPlaceholderText", true);
57
58
  (0, _defineProperty2.default)(this, "allowCustomPanels", false);
58
59
  (0, _defineProperty2.default)(this, "startPos", 1);
@@ -158,6 +159,7 @@ var ReactSerializer = /*#__PURE__*/function () {
158
159
  this.disableActions = init.disableActions;
159
160
  this.allowHeadingAnchorLinks = init.allowHeadingAnchorLinks;
160
161
  this.allowCopyToClipboard = init.allowCopyToClipboard;
162
+ this.allowWrapCodeBlock = init.allowWrapCodeBlock;
161
163
  this.allowPlaceholderText = init.allowPlaceholderText;
162
164
  this.allowCustomPanels = init.allowCustomPanels;
163
165
  this.allowColumnSorting = init.allowColumnSorting;
@@ -386,15 +388,21 @@ var ReactSerializer = /*#__PURE__*/function () {
386
388
  var _this6 = this,
387
389
  _this$media;
388
390
  var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
389
- var link = node.type.schema.marks.link;
391
+ var _node$type$schema$mar = node.type.schema.marks,
392
+ link = _node$type$schema$mar.link,
393
+ border = _node$type$schema$mar.border;
390
394
  var isLinkMark = function isLinkMark(mark) {
391
395
  return mark.type === link;
392
396
  };
397
+ var isBorderMark = function isBorderMark(mark) {
398
+ return mark.type === border;
399
+ };
393
400
  return _objectSpread(_objectSpread({}, this.getProps(node)), {}, {
394
401
  marks: node.marks.filter(function (m) {
395
402
  return !isLinkMark(m) || _this6.allowMediaLinking === true;
396
403
  }),
397
404
  isLinkMark: isLinkMark,
405
+ isBorderMark: isBorderMark,
398
406
  allowAltTextOnImages: this.allowAltTextOnImages,
399
407
  featureFlags: this.media && this.media.featureFlags,
400
408
  shouldOpenMediaViewer: this.shouldOpenMediaViewer,
@@ -503,6 +511,7 @@ var ReactSerializer = /*#__PURE__*/function () {
503
511
  content: node.content ? node.content.toJSON() : undefined,
504
512
  allowHeadingAnchorLinks: this.allowHeadingAnchorLinks,
505
513
  allowCopyToClipboard: this.allowCopyToClipboard,
514
+ allowWrapCodeBlock: this.allowWrapCodeBlock,
506
515
  allowPlaceholderText: this.allowPlaceholderText,
507
516
  rendererAppearance: this.appearance,
508
517
  fireAnalyticsEvent: this.fireAnalyticsEvent,
@@ -20,7 +20,10 @@ function BlockCard(props) {
20
20
  data = props.data,
21
21
  eventHandlers = props.eventHandlers,
22
22
  portal = props.portal,
23
- rendererAppearance = props.rendererAppearance;
23
+ rendererAppearance = props.rendererAppearance,
24
+ smartLinks = props.smartLinks;
25
+ var _ref = smartLinks || {},
26
+ showServerActions = _ref.showServerActions;
24
27
  var onClick = (0, _getCardClickHandler.getCardClickHandler)(eventHandlers, url);
25
28
  var platform = (0, _react.useMemo)(function () {
26
29
  return (0, _utils.getPlatform)(rendererAppearance);
@@ -41,6 +44,7 @@ function BlockCard(props) {
41
44
  }, cardProps), /*#__PURE__*/_react.default.createElement(_smartCard.Card, (0, _extends2.default)({
42
45
  appearance: "block",
43
46
  showActions: rendererAppearance !== 'mobile',
44
- platform: platform
47
+ platform: platform,
48
+ showServerActions: showServerActions
45
49
  }, cardProps))));
46
50
  }
@@ -5,7 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = void 0;
8
- var _react = require("@emotion/react");
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _react = require("react");
10
+ var _react2 = require("@emotion/react");
9
11
  var _reactIntlNext = require("react-intl-next");
10
12
  var _styles = require("@atlaskit/editor-common/styles");
11
13
  var _code = require("@atlaskit/code");
@@ -18,18 +20,28 @@ function CodeBlock(props) {
18
20
  language = props.language,
19
21
  _props$allowCopyToCli = props.allowCopyToClipboard,
20
22
  allowCopyToClipboard = _props$allowCopyToCli === void 0 ? false : _props$allowCopyToCli,
23
+ _props$allowWrapCodeB = props.allowWrapCodeBlock,
24
+ allowWrapCodeBlock = _props$allowWrapCodeB === void 0 ? false : _props$allowWrapCodeB,
21
25
  codeBidiWarningTooltipEnabled = props.codeBidiWarningTooltipEnabled;
22
26
  var codeBidiWarningLabel = props.intl.formatMessage(_messages.codeBidiWarningMessages.label);
23
27
  var className = [_styles.CodeBlockSharedCssClassName.CODEBLOCK_CONTAINER, props.className].join(' ');
24
- return (0, _react.jsx)(_codeBlockContainer.default, {
25
- text: text,
28
+ var _useState = (0, _react.useState)(false),
29
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
30
+ wrapLongLines = _useState2[0],
31
+ setWrapLongLines = _useState2[1];
32
+ return (0, _react2.jsx)(_codeBlockContainer.default, {
33
+ allowCopyToClipboard: allowCopyToClipboard,
34
+ allowWrapCodeBlock: allowWrapCodeBlock,
26
35
  className: className,
27
- allowCopyToClipboard: allowCopyToClipboard
28
- }, (0, _react.jsx)(_code.CodeBlock, {
36
+ setWrapLongLines: setWrapLongLines,
37
+ text: text,
38
+ wrapLongLines: wrapLongLines
39
+ }, (0, _react2.jsx)(_code.CodeBlock, {
29
40
  language: language,
30
41
  text: text,
31
42
  codeBidiWarningLabel: codeBidiWarningLabel,
32
- codeBidiWarningTooltipEnabled: codeBidiWarningTooltipEnabled
43
+ codeBidiWarningTooltipEnabled: codeBidiWarningTooltipEnabled,
44
+ shouldWrapLongLines: allowWrapCodeBlock && wrapLongLines
33
45
  }));
34
46
  }
35
47
  var _default = (0, _reactIntlNext.injectIntl)(CodeBlock);
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _react = require("@emotion/react");
9
+ var _codeBlockCopyButton = _interopRequireDefault(require("./codeBlockCopyButton"));
10
+ var _codeBlockWrapButton = _interopRequireDefault(require("./codeBlockWrapButton"));
11
+ var _colors = require("@atlaskit/theme/colors");
12
+ /** @jsx jsx */
13
+
14
+ var codeBlockButtonsWrapper = (0, _react.css)({
15
+ position: 'sticky',
16
+ top: '0px'
17
+ });
18
+ var codeBlockButtonsStyle = (0, _react.css)({
19
+ display: 'flex',
20
+ justifyContent: 'flex-end',
21
+ position: 'absolute',
22
+ height: '0',
23
+ width: '100%',
24
+ right: '6px',
25
+ top: '4px',
26
+ padding: '2px',
27
+ button: {
28
+ height: '32px',
29
+ width: '32px',
30
+ border: "2px solid ".concat("var(--ds-border-inverse, ".concat(_colors.N0, ")")),
31
+ borderRadius: '4px',
32
+ marginLeft: '4px',
33
+ padding: '2px',
34
+ background: "".concat("var(--ds-background-neutral-subtle, ".concat(_colors.N20, ")")),
35
+ color: "var(--ds-icon, rgb(66, 82, 110))",
36
+ '&:hover': {
37
+ borderWidth: '2px',
38
+ backgroundColor: "".concat("var(--ds-background-neutral-hovered, ".concat(_colors.N30, ")")),
39
+ height: '32px',
40
+ width: '32px'
41
+ },
42
+ '&.clicked': {
43
+ backgroundColor: "".concat("var(--ds-background-neutral-bold-pressed, ".concat(_colors.N700, ")")),
44
+ borderRadius: '4px',
45
+ color: "".concat("var(--ds-icon-inverse, ".concat(_colors.N0, ")"), " !important")
46
+ }
47
+ }
48
+ });
49
+ var CodeBlockButtonContainer = function CodeBlockButtonContainer(_ref) {
50
+ var allowCopyToClipboard = _ref.allowCopyToClipboard,
51
+ allowWrapCodeBlock = _ref.allowWrapCodeBlock,
52
+ setWrapLongLines = _ref.setWrapLongLines,
53
+ text = _ref.text,
54
+ wrapLongLines = _ref.wrapLongLines;
55
+ return (0, _react.jsx)("div", {
56
+ css: codeBlockButtonsWrapper
57
+ }, (0, _react.jsx)("div", {
58
+ css: codeBlockButtonsStyle
59
+ }, allowWrapCodeBlock && (0, _react.jsx)(_codeBlockWrapButton.default, {
60
+ setWrapLongLines: setWrapLongLines,
61
+ wrapLongLines: wrapLongLines
62
+ }), allowCopyToClipboard && (0, _react.jsx)(_codeBlockCopyButton.default, {
63
+ content: text
64
+ })));
65
+ };
66
+ var _default = CodeBlockButtonContainer;
67
+ exports.default = _default;
@@ -12,10 +12,10 @@ var _colors = require("@atlaskit/theme/colors");
12
12
  var _components = require("@atlaskit/theme/components");
13
13
  var _constants = require("@atlaskit/theme/constants");
14
14
  var _styles = require("@atlaskit/editor-common/styles");
15
- var _codeBlockCopyButton = _interopRequireDefault(require("../../codeBlockCopyButton"));
15
+ var _codeBlockButtonContainer = _interopRequireDefault(require("./codeBlockButtonContainer"));
16
16
  var _templateObject;
17
17
  var codeBlockStyleOverrides = function codeBlockStyleOverrides(props) {
18
- return (0, _react.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n tab-size: 4;\n background-color: ", ";\n\n ", " {\n font-size: ", ";\n line-height: 1.5rem;\n background-image: ", ";\n background-attachment: local, local, local, local, scroll, scroll, scroll,\n scroll;\n background-position: 0 0, 0 0, 100% 0, 100% 0, 100% 0, 100% 0, 0 0, 0 0;\n }\n "])), (0, _components.themed)({
18
+ return (0, _react.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n tab-size: 4;\n background-color: ", ";\n\n &:hover {\n button {\n opacity: 1;\n }\n }\n\n button {\n opacity: 0;\n transition: opacity 0.2s ease 0s;\n }\n\n ", " {\n font-size: ", ";\n line-height: 1.5rem;\n background-image: ", ";\n background-attachment: local, local, local, local, scroll, scroll, scroll,\n scroll;\n background-position: 0 0, 0 0, 100% 0, 100% 0, 100% 0, 100% 0, 0 0, 0 0;\n }\n "])), (0, _components.themed)({
19
19
  light: "var(--ds-surface-raised, ".concat(_colors.N20, ")"),
20
20
  dark: "var(--ds-surface-raised, ".concat(_colors.DN50, ")")
21
21
  })(props), _styles.CodeBlockSharedCssClassName.DS_CODEBLOCK, (0, _editorSharedStyles.relativeFontSizeToBase16)((0, _constants.fontSize)()), (0, _editorSharedStyles.overflowShadow)({
@@ -27,16 +27,23 @@ var codeBlockStyleOverrides = function codeBlockStyleOverrides(props) {
27
27
  }));
28
28
  };
29
29
  var CodeBlockContainer = function CodeBlockContainer(_ref) {
30
- var text = _ref.text,
30
+ var allowCopyToClipboard = _ref.allowCopyToClipboard,
31
+ allowWrapCodeBlock = _ref.allowWrapCodeBlock,
32
+ children = _ref.children,
31
33
  className = _ref.className,
32
- allowCopyToClipboard = _ref.allowCopyToClipboard,
33
- children = _ref.children;
34
+ setWrapLongLines = _ref.setWrapLongLines,
35
+ text = _ref.text,
36
+ wrapLongLines = _ref.wrapLongLines;
34
37
  return (0, _react.jsx)("div", {
35
38
  className: className,
36
39
  css: codeBlockStyleOverrides
37
- }, allowCopyToClipboard ? (0, _react.jsx)(_codeBlockCopyButton.default, {
38
- content: text
39
- }) : null, children);
40
+ }, (0, _react.jsx)(_codeBlockButtonContainer.default, {
41
+ allowCopyToClipboard: allowCopyToClipboard,
42
+ allowWrapCodeBlock: allowWrapCodeBlock,
43
+ setWrapLongLines: setWrapLongLines,
44
+ text: text,
45
+ wrapLongLines: wrapLongLines
46
+ }), children);
40
47
  };
41
48
  var _default = CodeBlockContainer;
42
49
  exports.default = _default;
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _react = require("@emotion/react");
11
+ var _react2 = _interopRequireWildcard(require("react"));
12
+ var _reactIntlNext = require("react-intl-next");
13
+ var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
14
+ var _customThemeButton = _interopRequireDefault(require("@atlaskit/button/custom-theme-button"));
15
+ var _copy = _interopRequireDefault(require("@atlaskit/icon/glyph/copy"));
16
+ var _clipboard = require("../../../utils/clipboard");
17
+ var _messages = require("@atlaskit/editor-common/messages");
18
+ var _enums = require("../../../../analytics/enums");
19
+ var _analyticsContext = _interopRequireDefault(require("../../../../analytics/analyticsContext"));
20
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
22
+ /** @jsx jsx */
23
+
24
+ var CopyButton = function CopyButton(_ref) {
25
+ var content = _ref.content,
26
+ intl = _ref.intl;
27
+ var _useState = (0, _react2.useState)(intl.formatMessage(_messages.codeBlockButtonMessages.copyCodeToClipboard)),
28
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
29
+ tooltip = _useState2[0],
30
+ setTooltip = _useState2[1];
31
+ var _useState3 = (0, _react2.useState)('copy-to-clipboard'),
32
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
33
+ className = _useState4[0],
34
+ setClassName = _useState4[1];
35
+ var onMouseLeave = function onMouseLeave() {
36
+ setTooltip(intl.formatMessage(_messages.codeBlockButtonMessages.copyCodeToClipboard));
37
+ setClassName('copy-to-clipboard');
38
+ };
39
+ return (0, _react.jsx)(_analyticsContext.default.Consumer, null, function (_ref2) {
40
+ var fireAnalyticsEvent = _ref2.fireAnalyticsEvent;
41
+ return (0, _react.jsx)("span", null, (0, _react.jsx)(_tooltip.default, {
42
+ content: tooltip,
43
+ hideTooltipOnClick: false,
44
+ position: "top"
45
+ }, (0, _react.jsx)("div", {
46
+ onMouseLeave: onMouseLeave
47
+ }, (0, _react.jsx)(_customThemeButton.default, {
48
+ appearance: "subtle",
49
+ "aria-haspopup": true,
50
+ "aria-label": tooltip,
51
+ className: className,
52
+ iconBefore: (0, _react.jsx)(_copy.default, {
53
+ label: tooltip
54
+ }),
55
+ onClick: function onClick() {
56
+ fireAnalyticsEvent({
57
+ action: _enums.ACTION.CLICKED,
58
+ actionSubject: _enums.ACTION_SUBJECT.BUTTON,
59
+ actionSubjectId: _enums.ACTION_SUBJECT_ID.CODEBLOCK_COPY,
60
+ eventType: _enums.EVENT_TYPE.UI
61
+ });
62
+ (0, _clipboard.copyTextToClipboard)(content);
63
+ setTooltip(intl.formatMessage(_messages.codeBlockButtonMessages.copiedCodeToClipboard));
64
+ setClassName('copy-to-clipboard clicked');
65
+ },
66
+ spacing: "compact"
67
+ }))));
68
+ });
69
+ };
70
+ var _default = (0, _reactIntlNext.injectIntl)(CopyButton);
71
+ exports.default = _default;
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _react = require("@emotion/react");
9
+ var _react2 = _interopRequireDefault(require("react"));
10
+ var _reactIntlNext = require("react-intl-next");
11
+ var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
12
+ var _customThemeButton = _interopRequireDefault(require("@atlaskit/button/custom-theme-button"));
13
+ var _icon = _interopRequireDefault(require("@atlaskit/icon"));
14
+ var _messages = require("@atlaskit/editor-common/messages");
15
+ var _enums = require("../../../../analytics/enums");
16
+ var _analyticsContext = _interopRequireDefault(require("../../../../analytics/analyticsContext"));
17
+ /** @jsx jsx */
18
+
19
+ var WrapIcon = function WrapIcon() {
20
+ return (0, _react.jsx)("svg", {
21
+ width: "24",
22
+ height: "24",
23
+ fill: "none",
24
+ viewBox: "0 0 24 24"
25
+ }, (0, _react.jsx)("g", {
26
+ fill: "currentColor",
27
+ clipPath: "url(#clip0_654_431)"
28
+ }, (0, _react.jsx)("rect", {
29
+ width: "24",
30
+ height: "24",
31
+ fillOpacity: "0.01"
32
+ }), (0, _react.jsx)("path", {
33
+ d: "M20 4h-1v16h1V4ZM3 8a1 1 0 0 1 1-1h9.5a4.5 4.5 0 1 1 0 9h-2.086l.293.293a1 1 0 0 1-1.414 1.414l-2-2a1 1 0 0 1 0-1.414l2-2a1 1 0 0 1 1.414 1.414l-.293.293H13.5a2.5 2.5 0 0 0 0-5H4a1 1 0 0 1-1-1Z",
34
+ clipRule: "evenodd",
35
+ fillRule: "evenodd"
36
+ })));
37
+ };
38
+ var CodeBlockWrapButton = function CodeBlockWrapButton(_ref) {
39
+ var setWrapLongLines = _ref.setWrapLongLines,
40
+ wrapLongLines = _ref.wrapLongLines,
41
+ intl = _ref.intl;
42
+ var wrapMessage = intl.formatMessage(wrapLongLines ? _messages.codeBlockButtonMessages.unwrapCode : _messages.codeBlockButtonMessages.wrapCode);
43
+ return (0, _react.jsx)(_analyticsContext.default.Consumer, null, function (_ref2) {
44
+ var fireAnalyticsEvent = _ref2.fireAnalyticsEvent;
45
+ return (0, _react.jsx)("span", null, (0, _react.jsx)(_tooltip.default, {
46
+ content: wrapMessage,
47
+ hideTooltipOnClick: false,
48
+ position: "top"
49
+ }, (0, _react.jsx)(_customThemeButton.default, {
50
+ appearance: "subtle",
51
+ "aria-haspopup": true,
52
+ "aria-label": wrapMessage,
53
+ className: "wrap-code ".concat(wrapLongLines ? 'clicked' : ''),
54
+ iconBefore: (0, _react.jsx)(_icon.default, {
55
+ glyph: WrapIcon,
56
+ label: ""
57
+ }),
58
+ isSelected: wrapLongLines,
59
+ onClick: function onClick() {
60
+ fireAnalyticsEvent({
61
+ action: _enums.ACTION.CLICKED,
62
+ actionSubject: _enums.ACTION_SUBJECT.BUTTON,
63
+ actionSubjectId: _enums.ACTION_SUBJECT_ID.CODEBLOCK_WRAP,
64
+ attributes: {
65
+ wrapped: !wrapLongLines
66
+ },
67
+ eventType: _enums.EVENT_TYPE.UI
68
+ });
69
+ setWrapLongLines(!wrapLongLines);
70
+ },
71
+ spacing: "compact"
72
+ })));
73
+ });
74
+ };
75
+ var _default = (0, _reactIntlNext.injectIntl)(CodeBlockWrapButton);
76
+ exports.default = _default;
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
11
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
12
  var _react = require("react");
12
13
  var _react2 = require("@emotion/react");
@@ -43,6 +44,8 @@ var WindowedCodeBlock = function WindowedCodeBlock(_ref2) {
43
44
  var text = _ref2.text,
44
45
  language = _ref2.language,
45
46
  allowCopyToClipboard = _ref2.allowCopyToClipboard,
47
+ _ref2$allowWrapCodeBl = _ref2.allowWrapCodeBlock,
48
+ allowWrapCodeBlock = _ref2$allowWrapCodeBl === void 0 ? false : _ref2$allowWrapCodeBl,
46
49
  codeBidiWarningTooltipEnabled = _ref2.codeBidiWarningTooltipEnabled,
47
50
  rootClassName = _ref2.className;
48
51
  var _useBidiWarnings = (0, _useBidiWarnings2.useBidiWarnings)({
@@ -59,17 +62,25 @@ var WindowedCodeBlock = function WindowedCodeBlock(_ref2) {
59
62
  codeBidiWarningTooltipEnabled: codeBidiWarningTooltipEnabled,
60
63
  className: rootClassName
61
64
  });
65
+ var _useState = (0, _react.useState)(false),
66
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
67
+ wrapLongLines = _useState2[0],
68
+ setWrapLongLines = _useState2[1];
62
69
  return isInViewport ? (0, _react2.jsx)(_react.Fragment, null, (0, _react2.jsx)(_react.Suspense, {
63
70
  fallback: memoizedLightWeightCodeBlock
64
71
  }, (0, _react2.jsx)(_codeBlockContainer.default, {
72
+ allowCopyToClipboard: allowCopyToClipboard,
73
+ allowWrapCodeBlock: allowWrapCodeBlock,
65
74
  className: className,
75
+ setWrapLongLines: setWrapLongLines,
66
76
  text: text,
67
- allowCopyToClipboard: allowCopyToClipboard
77
+ wrapLongLines: wrapLongLines
68
78
  }, (0, _react2.jsx)(LazyAkCodeBlock, {
69
79
  language: language,
70
80
  text: text,
71
81
  codeBidiWarningLabel: warningLabel,
72
- codeBidiWarningTooltipEnabled: codeBidiWarningTooltipEnabled
82
+ codeBidiWarningTooltipEnabled: codeBidiWarningTooltipEnabled,
83
+ shouldWrapLongLines: allowWrapCodeBlock && wrapLongLines
73
84
  })))) : memoizedLightWeightCodeBlock;
74
85
  };
75
86
  var _default = WindowedCodeBlock;
@@ -30,12 +30,14 @@ var InlineCard = function InlineCard(props) {
30
30
  var featureFlags = (0, _useFeatureFlags.useFeatureFlags)();
31
31
  var _ref = smartLinks || {},
32
32
  showAuthTooltip = _ref.showAuthTooltip,
33
+ showServerActions = _ref.showServerActions,
33
34
  ssr = _ref.ssr;
34
35
  if (ssr && url) {
35
36
  return /*#__PURE__*/_react.default.createElement(_ssr.CardSSR, {
36
37
  appearance: "inline",
37
38
  url: url,
38
- showAuthTooltip: showAuthTooltip
39
+ showAuthTooltip: showAuthTooltip,
40
+ showServerActions: showServerActions
39
41
  });
40
42
  }
41
43
  return /*#__PURE__*/_react.default.createElement("span", {
@@ -47,7 +49,8 @@ var InlineCard = function InlineCard(props) {
47
49
  }, cardProps), /*#__PURE__*/_react.default.createElement(_smartCard.Card, (0, _extends2.default)({
48
50
  appearance: "inline",
49
51
  showHoverPreview: featureFlags === null || featureFlags === void 0 ? void 0 : featureFlags.showHoverPreview,
50
- showAuthTooltip: showAuthTooltip
52
+ showAuthTooltip: showAuthTooltip,
53
+ showServerActions: showServerActions
51
54
  }, cardProps, {
52
55
  onResolve: function onResolve(data) {
53
56
  if (!data.url || !data.title) {
@@ -19,6 +19,7 @@ var _react2 = require("@emotion/react");
19
19
  var _providerFactory = require("@atlaskit/editor-common/provider-factory");
20
20
  var _ui = require("@atlaskit/editor-common/ui");
21
21
  var _MediaCard = require("../../ui/MediaCard");
22
+ var _editorPalette = require("@atlaskit/editor-palette");
22
23
  var _utils = require("../../utils");
23
24
  var _analytics = require("@atlaskit/editor-common/analytics");
24
25
  var _events = require("../../analytics/events");
@@ -37,6 +38,7 @@ var Media = /*#__PURE__*/function (_PureComponent) {
37
38
  }
38
39
  _this = _super.call.apply(_super, [this].concat(args));
39
40
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderCard", function () {
41
+ var _borderMark$attrs$col, _borderMark$attrs$siz;
40
42
  var providers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
41
43
  var mediaProvider = providers.mediaProvider,
42
44
  contextIdentifierProvider = providers.contextIdentifierProvider;
@@ -47,6 +49,9 @@ var Media = /*#__PURE__*/function (_PureComponent) {
47
49
  allowMediaViewer = _this$props.shouldOpenMediaViewer,
48
50
  enableDownloadButton = _this$props.enableDownloadButton,
49
51
  ssr = _this$props.ssr;
52
+ var borderMark = _this.props.marks.find(_this.props.isBorderMark);
53
+ var borderColor = (_borderMark$attrs$col = borderMark === null || borderMark === void 0 ? void 0 : borderMark.attrs.color) !== null && _borderMark$attrs$col !== void 0 ? _borderMark$attrs$col : '';
54
+ var borderWidth = (_borderMark$attrs$siz = borderMark === null || borderMark === void 0 ? void 0 : borderMark.attrs.size) !== null && _borderMark$attrs$siz !== void 0 ? _borderMark$attrs$siz : 0;
50
55
  var linkMark = _this.props.marks.find(_this.props.isLinkMark);
51
56
  var linkHref = linkMark === null || linkMark === void 0 ? void 0 : linkMark.attrs.href;
52
57
  var eventHandlers = linkHref ? undefined : _this.props.eventHandlers;
@@ -62,13 +67,25 @@ var Media = /*#__PURE__*/function (_PureComponent) {
62
67
  shouldEnableDownloadButton: enableDownloadButton,
63
68
  ssr: ssr
64
69
  }));
70
+ var paletteColorValue = (0, _editorPalette.hexToEditorBorderPaletteColor)(borderColor) || borderColor;
71
+ var mediaComponentWithBorder = borderMark ? (0, _react2.jsx)("div", {
72
+ "data-mark-type": "border",
73
+ "data-color": borderColor,
74
+ "data-size": borderWidth,
75
+ style: {
76
+ borderColor: paletteColorValue,
77
+ borderWidth: "".concat(borderWidth, "px"),
78
+ borderStyle: 'solid',
79
+ borderRadius: "".concat(borderWidth * 2, "px")
80
+ }
81
+ }, mediaComponent) : mediaComponent;
65
82
  return linkHref ? (0, _react2.jsx)("a", {
66
83
  href: linkHref,
67
84
  rel: "noreferrer noopener",
68
85
  onClick: _this.handleMediaLinkClick,
69
86
  "data-block-link": linkHref,
70
87
  css: _ui.mediaLinkStyle
71
- }, mediaComponent) : mediaComponent;
88
+ }, mediaComponentWithBorder) : mediaComponentWithBorder;
72
89
  });
73
90
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleMediaLinkClick", function (event) {
74
91
  var _this$props2 = _this.props,
@@ -19,7 +19,8 @@ var _reactIntlNext = require("react-intl-next");
19
19
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
20
20
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
21
  var RenderMediaInline = function RenderMediaInline(props) {
22
- var mediaProvider = props.mediaProvider;
22
+ var mediaProvider = props.mediaProvider,
23
+ rendererAppearance = props.rendererAppearance;
23
24
  var _useState = (0, _react.useState)(),
24
25
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
25
26
  viewMediaClientConfigState = _useState2[0],
@@ -65,9 +66,20 @@ var RenderMediaInline = function RenderMediaInline(props) {
65
66
  isSelected: false
66
67
  });
67
68
  }
69
+ var handleMediaInlineClick = function handleMediaInlineClick(result) {
70
+ var _props$eventHandlers, _props$eventHandlers$;
71
+ if ((_props$eventHandlers = props.eventHandlers) !== null && _props$eventHandlers !== void 0 && (_props$eventHandlers$ = _props$eventHandlers.media) !== null && _props$eventHandlers$ !== void 0 && _props$eventHandlers$.onClick) {
72
+ var _props$eventHandlers2, _props$eventHandlers3;
73
+ (_props$eventHandlers2 = props.eventHandlers) === null || _props$eventHandlers2 === void 0 ? void 0 : (_props$eventHandlers3 = _props$eventHandlers2.media) === null || _props$eventHandlers3 === void 0 ? void 0 : _props$eventHandlers3.onClick(result);
74
+ }
75
+ };
76
+ var shouldOpenMediaViewer = rendererAppearance !== 'mobile';
77
+ var shouldDisplayToolTip = rendererAppearance !== 'mobile';
68
78
  return /*#__PURE__*/_react.default.createElement(_mediaCard.MediaInlineCard, {
69
79
  identifier: props.identifier,
70
- shouldOpenMediaViewer: true,
80
+ onClick: handleMediaInlineClick,
81
+ shouldOpenMediaViewer: shouldOpenMediaViewer,
82
+ shouldDisplayToolTip: shouldDisplayToolTip,
71
83
  mediaClientConfig: viewMediaClientConfigState
72
84
  });
73
85
  };
@@ -76,7 +88,8 @@ var MediaInline = function MediaInline(props) {
76
88
  var collection = props.collection,
77
89
  id = props.id,
78
90
  providers = props.providers,
79
- intl = props.intl;
91
+ intl = props.intl,
92
+ rendererAppearance = props.rendererAppearance;
80
93
  var identifier = {
81
94
  id: id,
82
95
  mediaItemType: 'file',
@@ -102,7 +115,9 @@ var MediaInline = function MediaInline(props) {
102
115
  }
103
116
  return /*#__PURE__*/_react.default.createElement(RenderMediaInline, {
104
117
  identifier: identifier,
105
- mediaProvider: mediaProvider
118
+ mediaProvider: mediaProvider,
119
+ eventHandlers: props.eventHandlers,
120
+ rendererAppearance: rendererAppearance
106
121
  });
107
122
  }
108
123
  }));