@atlaskit/renderer 98.0.0 → 98.1.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 +16 -0
- package/dist/cjs/react/hooks/use-bidi-warnings.js +45 -0
- package/dist/cjs/react/hooks/use-in-viewport.js +63 -0
- package/dist/cjs/react/index.js +5 -2
- package/dist/cjs/react/nodes/codeBlock/codeBlock.js +49 -0
- package/dist/cjs/react/nodes/codeBlock/components/codeBlockContainer.js +55 -0
- package/dist/cjs/react/nodes/codeBlock/components/lightWeightCodeBlock.js +82 -0
- package/dist/cjs/react/nodes/codeBlock/windowedCodeBlock.js +103 -0
- package/dist/cjs/react/nodes/codeBlockCopyButton.js +24 -27
- package/dist/cjs/react/nodes/heading.js +15 -18
- package/dist/cjs/react/nodes/index.js +34 -5
- package/dist/cjs/react/nodes/layoutColumn.js +7 -2
- package/dist/cjs/react/utils/clipboard.js +24 -0
- package/dist/cjs/ui/Renderer/index.js +12 -7
- package/dist/cjs/ui/Renderer/style.js +4 -2
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/react/hooks/use-bidi-warnings.js +28 -0
- package/dist/es2019/react/hooks/use-in-viewport.js +25 -0
- package/dist/es2019/react/index.js +5 -2
- package/dist/es2019/react/nodes/codeBlock/codeBlock.js +33 -0
- package/dist/es2019/react/nodes/codeBlock/components/codeBlockContainer.js +44 -0
- package/dist/es2019/react/nodes/codeBlock/components/lightWeightCodeBlock.js +58 -0
- package/dist/es2019/react/nodes/codeBlock/windowedCodeBlock.js +58 -0
- package/dist/es2019/react/nodes/codeBlockCopyButton.js +24 -28
- package/dist/es2019/react/nodes/heading.js +16 -20
- package/dist/es2019/react/nodes/index.js +22 -5
- package/dist/es2019/react/nodes/layoutColumn.js +7 -3
- package/dist/es2019/react/utils/clipboard.js +9 -0
- package/dist/es2019/ui/Renderer/index.js +9 -4
- package/dist/es2019/ui/Renderer/style.js +3 -0
- package/dist/es2019/version.json +1 -1
- package/dist/esm/react/hooks/use-bidi-warnings.js +29 -0
- package/dist/esm/react/hooks/use-in-viewport.js +51 -0
- package/dist/esm/react/index.js +5 -2
- package/dist/esm/react/nodes/codeBlock/codeBlock.js +32 -0
- package/dist/esm/react/nodes/codeBlock/components/codeBlockContainer.js +40 -0
- package/dist/esm/react/nodes/codeBlock/components/lightWeightCodeBlock.js +57 -0
- package/dist/esm/react/nodes/codeBlock/windowedCodeBlock.js +80 -0
- package/dist/esm/react/nodes/codeBlockCopyButton.js +24 -27
- package/dist/esm/react/nodes/heading.js +15 -18
- package/dist/esm/react/nodes/index.js +33 -5
- package/dist/esm/react/nodes/layoutColumn.js +8 -3
- package/dist/esm/react/utils/clipboard.js +15 -0
- package/dist/esm/ui/Renderer/index.js +12 -6
- package/dist/esm/ui/Renderer/style.js +3 -2
- package/dist/esm/version.json +1 -1
- package/dist/types/react/hooks/use-bidi-warnings.d.ts +10 -0
- package/dist/types/react/hooks/use-in-viewport.d.ts +5 -0
- package/dist/types/react/index.d.ts +5 -1
- package/dist/types/react/nodes/{codeBlock.d.ts → codeBlock/codeBlock.d.ts} +1 -1
- package/dist/types/react/nodes/codeBlock/components/codeBlockContainer.d.ts +12 -0
- package/dist/types/react/nodes/codeBlock/components/lightWeightCodeBlock.d.ts +9 -0
- package/dist/types/react/nodes/codeBlock/windowedCodeBlock.d.ts +4 -0
- package/dist/types/react/nodes/index.d.ts +8 -5
- package/dist/types/react/utils/clipboard.d.ts +1 -0
- package/dist/types/ui/Renderer/types.d.ts +4 -0
- package/dist/types/ui/renderer-props.d.ts +2 -1
- package/package.json +15 -14
- package/report.api.md +590 -119
- package/dist/cjs/react/nodes/codeBlock.js +0 -74
- package/dist/cjs/react/nodes/copy-text-provider.js +0 -174
- package/dist/es2019/react/nodes/codeBlock.js +0 -59
- package/dist/es2019/react/nodes/copy-text-provider.js +0 -93
- package/dist/esm/react/nodes/codeBlock.js +0 -55
- package/dist/esm/react/nodes/copy-text-provider.js +0 -140
- package/dist/types/react/nodes/copy-text-provider.d.ts +0 -20
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @atlaskit/renderer
|
|
2
2
|
|
|
3
|
+
## 98.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`ab4f37635d9`](https://bitbucket.org/atlassian/atlassian-frontend/commits/ab4f37635d9) - Modified the renderer package to include a prop 'nodeComponents' that will override the nodes the renderer provides and allow us to render our own custom nodes
|
|
8
|
+
- [`2d979ce9877`](https://bitbucket.org/atlassian/atlassian-frontend/commits/2d979ce9877) - [ux] ED-14945: Add windowed codeblock support in renderer (This feature sits behind a flag in the featureFlags prop 'allow-windowed-code-block')
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- [`153b80fdcda`](https://bitbucket.org/atlassian/atlassian-frontend/commits/153b80fdcda) - [ux] ED-15111: Fix aligned text and headings margin-top values in layouts in Renderer (by clearing them)
|
|
13
|
+
- [`07e38f1e753`](https://bitbucket.org/atlassian/atlassian-frontend/commits/07e38f1e753) - [ux] ED-14419: removed CopyTextProvider in favour of util function copyTextToClipboard()
|
|
14
|
+
|
|
15
|
+
This removes workarounds for unsupported browsers such as Internet Explorer and Safari releases before v12.
|
|
16
|
+
|
|
17
|
+
- Updated dependencies
|
|
18
|
+
|
|
3
19
|
## 98.0.0
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.useBidiWarnings = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var _reactIntlNext = require("react-intl-next");
|
|
13
|
+
|
|
14
|
+
var _bidiWarning = _interopRequireDefault(require("@atlaskit/code/bidi-warning"));
|
|
15
|
+
|
|
16
|
+
var _messages = require("@atlaskit/editor-common/messages");
|
|
17
|
+
|
|
18
|
+
var _bidiWarningDecorator = _interopRequireDefault(require("@atlaskit/code/bidi-warning-decorator"));
|
|
19
|
+
|
|
20
|
+
var useBidiWarnings = function useBidiWarnings(_ref) {
|
|
21
|
+
var _ref$enableWarningToo = _ref.enableWarningTooltip,
|
|
22
|
+
enableWarningTooltip = _ref$enableWarningToo === void 0 ? true : _ref$enableWarningToo;
|
|
23
|
+
var intl = (0, _reactIntlNext.useIntl)();
|
|
24
|
+
var warningLabel = intl.formatMessage(_messages.codeBidiWarningMessages.label);
|
|
25
|
+
|
|
26
|
+
var renderBidiWarnings = function renderBidiWarnings(text) {
|
|
27
|
+
return (0, _bidiWarningDecorator.default)(text, function (_ref2) {
|
|
28
|
+
var bidiCharacter = _ref2.bidiCharacter,
|
|
29
|
+
index = _ref2.index;
|
|
30
|
+
return /*#__PURE__*/_react.default.createElement(_bidiWarning.default, {
|
|
31
|
+
bidiCharacter: bidiCharacter,
|
|
32
|
+
key: index,
|
|
33
|
+
label: warningLabel,
|
|
34
|
+
tooltipEnabled: enableWarningTooltip
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
return {
|
|
40
|
+
renderBidiWarnings: renderBidiWarnings,
|
|
41
|
+
warningLabel: warningLabel
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
exports.useBidiWarnings = useBidiWarnings;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.useInViewport = void 0;
|
|
9
|
+
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
+
|
|
12
|
+
var _react = require("react");
|
|
13
|
+
|
|
14
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
15
|
+
|
|
16
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
17
|
+
|
|
18
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
19
|
+
|
|
20
|
+
var useInViewport = function useInViewport() {
|
|
21
|
+
var trackingRef = (0, _react.useRef)(null);
|
|
22
|
+
|
|
23
|
+
var _useState = (0, _react.useState)(false),
|
|
24
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
25
|
+
isInViewport = _useState2[0],
|
|
26
|
+
setIsInViewport = _useState2[1];
|
|
27
|
+
|
|
28
|
+
(0, _react.useEffect)(function () {
|
|
29
|
+
if (!trackingRef || !(trackingRef !== null && trackingRef !== void 0 && trackingRef.current)) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
var target = trackingRef.current;
|
|
34
|
+
var observer = new IntersectionObserver(function (entries) {
|
|
35
|
+
var _iterator = _createForOfIteratorHelper(entries),
|
|
36
|
+
_step;
|
|
37
|
+
|
|
38
|
+
try {
|
|
39
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
40
|
+
var entry = _step.value;
|
|
41
|
+
|
|
42
|
+
if (entry.isIntersecting) {
|
|
43
|
+
setIsInViewport(true);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
} catch (err) {
|
|
47
|
+
_iterator.e(err);
|
|
48
|
+
} finally {
|
|
49
|
+
_iterator.f();
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
observer.observe(target);
|
|
53
|
+
return function () {
|
|
54
|
+
return observer.disconnect();
|
|
55
|
+
};
|
|
56
|
+
}, [trackingRef]);
|
|
57
|
+
return {
|
|
58
|
+
isInViewport: isInViewport,
|
|
59
|
+
trackingRef: trackingRef
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
exports.useInViewport = useInViewport;
|
package/dist/cjs/react/index.js
CHANGED
|
@@ -93,8 +93,9 @@ var ReactSerializer = /*#__PURE__*/function () {
|
|
|
93
93
|
var nodeKey = "".concat(node.type.name, "__").concat(_this.startPos);
|
|
94
94
|
|
|
95
95
|
var serializedContent = _this.serializeFragment(node.content, _this.getNodeProps(node, parentInfo), (0, _nodes.toReact)(node, {
|
|
96
|
-
allowSelectAllTrap: _this.allowSelectAllTrap
|
|
97
|
-
|
|
96
|
+
allowSelectAllTrap: _this.allowSelectAllTrap,
|
|
97
|
+
allowWindowedCodeBlock: _this.allowWindowedCodeBlock
|
|
98
|
+
}, _this.nodeComponents), nodeKey, {
|
|
98
99
|
parentIsIncompleteTask: parentIsIncompleteTask,
|
|
99
100
|
path: [].concat((0, _toConsumableArray2.default)(currentPath), [node]),
|
|
100
101
|
pos: _this.startPos
|
|
@@ -205,6 +206,8 @@ var ReactSerializer = /*#__PURE__*/function () {
|
|
|
205
206
|
this.media = init.media;
|
|
206
207
|
this.smartLinks = init.smartLinks;
|
|
207
208
|
this.allowSelectAllTrap = init.allowSelectAllTrap;
|
|
209
|
+
this.nodeComponents = init.nodeComponents;
|
|
210
|
+
this.allowWindowedCodeBlock = init.allowWindowedCodeBlock;
|
|
208
211
|
}
|
|
209
212
|
|
|
210
213
|
(0, _createClass2.default)(ReactSerializer, [{
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = require("@emotion/react");
|
|
11
|
+
|
|
12
|
+
var _reactIntlNext = require("react-intl-next");
|
|
13
|
+
|
|
14
|
+
var _styles = require("@atlaskit/editor-common/styles");
|
|
15
|
+
|
|
16
|
+
var _code = require("@atlaskit/code");
|
|
17
|
+
|
|
18
|
+
var _messages = require("@atlaskit/editor-common/messages");
|
|
19
|
+
|
|
20
|
+
var _useFeatureFlags = require("../../../use-feature-flags");
|
|
21
|
+
|
|
22
|
+
var _codeBlockContainer = _interopRequireDefault(require("./components/codeBlockContainer"));
|
|
23
|
+
|
|
24
|
+
/** @jsx jsx */
|
|
25
|
+
function CodeBlock(props) {
|
|
26
|
+
var text = props.text,
|
|
27
|
+
language = props.language,
|
|
28
|
+
_props$allowCopyToCli = props.allowCopyToClipboard,
|
|
29
|
+
allowCopyToClipboard = _props$allowCopyToCli === void 0 ? false : _props$allowCopyToCli,
|
|
30
|
+
codeBidiWarningTooltipEnabled = props.codeBidiWarningTooltipEnabled;
|
|
31
|
+
var featureFlags = (0, _useFeatureFlags.useFeatureFlags)();
|
|
32
|
+
var codeBidiWarningLabel = props.intl.formatMessage(_messages.codeBidiWarningMessages.label);
|
|
33
|
+
var className = [_styles.CodeBlockSharedCssClassName.CODEBLOCK_CONTAINER, props.className].join(' ');
|
|
34
|
+
return (0, _react.jsx)(_codeBlockContainer.default, {
|
|
35
|
+
text: text,
|
|
36
|
+
className: className,
|
|
37
|
+
allowCopyToClipboard: allowCopyToClipboard
|
|
38
|
+
}, (0, _react.jsx)(_code.CodeBlock, {
|
|
39
|
+
language: language,
|
|
40
|
+
text: text,
|
|
41
|
+
codeBidiWarnings: featureFlags === null || featureFlags === void 0 ? void 0 : featureFlags.codeBidiWarnings,
|
|
42
|
+
codeBidiWarningLabel: codeBidiWarningLabel,
|
|
43
|
+
codeBidiWarningTooltipEnabled: codeBidiWarningTooltipEnabled
|
|
44
|
+
}));
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
var _default = (0, _reactIntlNext.injectIntl)(CodeBlock);
|
|
48
|
+
|
|
49
|
+
exports.default = _default;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
|
+
|
|
12
|
+
var _react = require("@emotion/react");
|
|
13
|
+
|
|
14
|
+
var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
|
|
15
|
+
|
|
16
|
+
var _colors = require("@atlaskit/theme/colors");
|
|
17
|
+
|
|
18
|
+
var _components = require("@atlaskit/theme/components");
|
|
19
|
+
|
|
20
|
+
var _constants = require("@atlaskit/theme/constants");
|
|
21
|
+
|
|
22
|
+
var _styles = require("@atlaskit/editor-common/styles");
|
|
23
|
+
|
|
24
|
+
var _codeBlockCopyButton = _interopRequireDefault(require("../../codeBlockCopyButton"));
|
|
25
|
+
|
|
26
|
+
var _templateObject;
|
|
27
|
+
|
|
28
|
+
// TODO: Quality ticket https://product-fabric.atlassian.net/browse/DSP-4118
|
|
29
|
+
|
|
30
|
+
/* eslint-disable @atlaskit/design-system/ensure-design-token-usage */
|
|
31
|
+
var codeBlockStyleOverrides = function codeBlockStyleOverrides(props) {
|
|
32
|
+
return (0, _react.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n tab-size: 4;\n ", " {\n font-size: ", ";\n line-height: 1.5rem;\n background-image: ", ";\n background-attachment: local, scroll, scroll;\n background-position: 100% 0, 100% 0, 0 0;\n }\n "])), _styles.CodeBlockSharedCssClassName.DS_CODEBLOCK, (0, _editorSharedStyles.relativeFontSizeToBase16)((0, _constants.fontSize)()), (0, _editorSharedStyles.overflowShadow)({
|
|
33
|
+
background: (0, _components.themed)({
|
|
34
|
+
light: _colors.N20,
|
|
35
|
+
dark: _colors.DN50
|
|
36
|
+
})(props),
|
|
37
|
+
width: "".concat((0, _constants.gridSize)(), "px")
|
|
38
|
+
}));
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
var CodeBlockContainer = function CodeBlockContainer(_ref) {
|
|
42
|
+
var text = _ref.text,
|
|
43
|
+
className = _ref.className,
|
|
44
|
+
allowCopyToClipboard = _ref.allowCopyToClipboard,
|
|
45
|
+
children = _ref.children;
|
|
46
|
+
return (0, _react.jsx)("div", {
|
|
47
|
+
className: className,
|
|
48
|
+
css: codeBlockStyleOverrides
|
|
49
|
+
}, allowCopyToClipboard ? (0, _react.jsx)(_codeBlockCopyButton.default, {
|
|
50
|
+
content: text
|
|
51
|
+
}) : null, children);
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
var _default = CodeBlockContainer;
|
|
55
|
+
exports.default = _default;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.getLightWeightCodeBlockStylesForRootRendererStyleSheet = exports.default = exports.LightWeightCodeBlockCssClassName = void 0;
|
|
11
|
+
|
|
12
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
13
|
+
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
|
+
|
|
16
|
+
var _react2 = require("@emotion/react");
|
|
17
|
+
|
|
18
|
+
var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
|
|
19
|
+
|
|
20
|
+
var _styles = require("@atlaskit/editor-common/styles");
|
|
21
|
+
|
|
22
|
+
var _useBidiWarnings2 = require("../../../hooks/use-bidi-warnings");
|
|
23
|
+
|
|
24
|
+
var _consts = require("../../../../consts");
|
|
25
|
+
|
|
26
|
+
var _templateObject, _templateObject2;
|
|
27
|
+
|
|
28
|
+
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); }
|
|
29
|
+
|
|
30
|
+
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; }
|
|
31
|
+
|
|
32
|
+
var lightWeightCodeBlockStyles = (0, _react2.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n .", " {\n cursor: text;\n }\n"])), _styles.CodeBlockSharedCssClassName.CODEBLOCK_CONTAINER);
|
|
33
|
+
var LightWeightCodeBlockCssClassName = {
|
|
34
|
+
CONTAINER: 'light-weight-code-block'
|
|
35
|
+
};
|
|
36
|
+
exports.LightWeightCodeBlockCssClassName = LightWeightCodeBlockCssClassName;
|
|
37
|
+
|
|
38
|
+
var getLightWeightCodeBlockStylesForRootRendererStyleSheet = function getLightWeightCodeBlockStylesForRootRendererStyleSheet() {
|
|
39
|
+
// We overwrite the rule that clears margin-top for first nested codeblocks, as
|
|
40
|
+
// our lightweight codeblock dom structure will always nest the codeblock inside
|
|
41
|
+
// an extra container div which would constantly be targeted. Now, top-level
|
|
42
|
+
// lightweight codeblock containers will not be targeted.
|
|
43
|
+
// NOTE: This must be added after other .code-block styles in the root
|
|
44
|
+
// Renderer stylesheet.
|
|
45
|
+
return (0, _react2.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n .", "\n > .", "\n .", " {\n margin-top: ", ";\n }\n "])), _consts.RendererCssClassName.DOCUMENT, LightWeightCodeBlockCssClassName.CONTAINER, _styles.CodeBlockSharedCssClassName.CODEBLOCK_CONTAINER, _editorSharedStyles.blockNodesVerticalMargin);
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
exports.getLightWeightCodeBlockStylesForRootRendererStyleSheet = getLightWeightCodeBlockStylesForRootRendererStyleSheet;
|
|
49
|
+
var LightWeightCodeBlock = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
50
|
+
var text = _ref.text,
|
|
51
|
+
_ref$codeBidiWarningT = _ref.codeBidiWarningTooltipEnabled,
|
|
52
|
+
codeBidiWarningTooltipEnabled = _ref$codeBidiWarningT === void 0 ? true : _ref$codeBidiWarningT,
|
|
53
|
+
className = _ref.className;
|
|
54
|
+
var theme = (0, _react2.useTheme)();
|
|
55
|
+
var textRows = (0, _react.useMemo)(function () {
|
|
56
|
+
return (text !== null && text !== void 0 ? text : '').split('\n');
|
|
57
|
+
}, [text]);
|
|
58
|
+
|
|
59
|
+
var _useBidiWarnings = (0, _useBidiWarnings2.useBidiWarnings)({
|
|
60
|
+
enableWarningTooltip: codeBidiWarningTooltipEnabled
|
|
61
|
+
}),
|
|
62
|
+
renderBidiWarnings = _useBidiWarnings.renderBidiWarnings;
|
|
63
|
+
|
|
64
|
+
var classNames = [LightWeightCodeBlockCssClassName.CONTAINER, className].join(' ');
|
|
65
|
+
return (0, _react2.jsx)("div", {
|
|
66
|
+
className: classNames,
|
|
67
|
+
ref: ref,
|
|
68
|
+
css: [(0, _styles.codeBlockSharedStyles)(theme), lightWeightCodeBlockStyles]
|
|
69
|
+
}, (0, _react2.jsx)("div", {
|
|
70
|
+
className: _styles.CodeBlockSharedCssClassName.CODEBLOCK_CONTAINER
|
|
71
|
+
}, (0, _react2.jsx)("div", {
|
|
72
|
+
className: _styles.CodeBlockSharedCssClassName.CODEBLOCK_LINE_NUMBER_GUTTER
|
|
73
|
+
}, textRows.map(function (_, index) {
|
|
74
|
+
return (0, _react2.jsx)("span", {
|
|
75
|
+
key: index
|
|
76
|
+
});
|
|
77
|
+
})), (0, _react2.jsx)("div", {
|
|
78
|
+
className: _styles.CodeBlockSharedCssClassName.CODEBLOCK_CONTENT
|
|
79
|
+
}, (0, _react2.jsx)("code", null, renderBidiWarnings(text)))));
|
|
80
|
+
});
|
|
81
|
+
var _default = LightWeightCodeBlock;
|
|
82
|
+
exports.default = _default;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.default = void 0;
|
|
11
|
+
|
|
12
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
13
|
+
|
|
14
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
15
|
+
|
|
16
|
+
var _react = require("react");
|
|
17
|
+
|
|
18
|
+
var _react2 = require("@emotion/react");
|
|
19
|
+
|
|
20
|
+
var _styles = require("@atlaskit/editor-common/styles");
|
|
21
|
+
|
|
22
|
+
var _useFeatureFlags = require("../../../use-feature-flags");
|
|
23
|
+
|
|
24
|
+
var _useInViewport2 = require("../../hooks/use-in-viewport");
|
|
25
|
+
|
|
26
|
+
var _useBidiWarnings2 = require("../../hooks/use-bidi-warnings");
|
|
27
|
+
|
|
28
|
+
var _lightWeightCodeBlock = _interopRequireDefault(require("./components/lightWeightCodeBlock"));
|
|
29
|
+
|
|
30
|
+
var _codeBlockContainer = _interopRequireDefault(require("./components/codeBlockContainer"));
|
|
31
|
+
|
|
32
|
+
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); }
|
|
33
|
+
|
|
34
|
+
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; }
|
|
35
|
+
|
|
36
|
+
var LazyAkCodeBlock = /*#__PURE__*/(0, _react.lazy)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
37
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
38
|
+
while (1) {
|
|
39
|
+
switch (_context.prev = _context.next) {
|
|
40
|
+
case 0:
|
|
41
|
+
return _context.abrupt("return", Promise.resolve().then(function () {
|
|
42
|
+
return _interopRequireWildcard(require('@atlaskit/code/block'));
|
|
43
|
+
}));
|
|
44
|
+
|
|
45
|
+
case 1:
|
|
46
|
+
case "end":
|
|
47
|
+
return _context.stop();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}, _callee);
|
|
51
|
+
})));
|
|
52
|
+
|
|
53
|
+
var joinWithSpaces = function joinWithSpaces() {
|
|
54
|
+
for (var _len = arguments.length, strs = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
55
|
+
strs[_key] = arguments[_key];
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return strs.join(' ');
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
var MemoizedLightWeightCodeBlock = /*#__PURE__*/(0, _react.memo)(_lightWeightCodeBlock.default);
|
|
62
|
+
|
|
63
|
+
var WindowedCodeBlock = function WindowedCodeBlock(_ref2) {
|
|
64
|
+
var text = _ref2.text,
|
|
65
|
+
language = _ref2.language,
|
|
66
|
+
allowCopyToClipboard = _ref2.allowCopyToClipboard,
|
|
67
|
+
codeBidiWarningTooltipEnabled = _ref2.codeBidiWarningTooltipEnabled,
|
|
68
|
+
rootClassName = _ref2.className;
|
|
69
|
+
var featureFlags = (0, _useFeatureFlags.useFeatureFlags)();
|
|
70
|
+
|
|
71
|
+
var _useBidiWarnings = (0, _useBidiWarnings2.useBidiWarnings)({
|
|
72
|
+
enableWarningTooltip: codeBidiWarningTooltipEnabled
|
|
73
|
+
}),
|
|
74
|
+
warningLabel = _useBidiWarnings.warningLabel;
|
|
75
|
+
|
|
76
|
+
var _useInViewport = (0, _useInViewport2.useInViewport)(),
|
|
77
|
+
isInViewport = _useInViewport.isInViewport,
|
|
78
|
+
trackingRef = _useInViewport.trackingRef;
|
|
79
|
+
|
|
80
|
+
var className = joinWithSpaces(_styles.CodeBlockSharedCssClassName.CODEBLOCK_CONTAINER, rootClassName);
|
|
81
|
+
var memoizedLightWeightCodeBlock = (0, _react2.jsx)(MemoizedLightWeightCodeBlock, {
|
|
82
|
+
ref: trackingRef,
|
|
83
|
+
text: text,
|
|
84
|
+
codeBidiWarningTooltipEnabled: codeBidiWarningTooltipEnabled,
|
|
85
|
+
className: rootClassName
|
|
86
|
+
});
|
|
87
|
+
return isInViewport ? (0, _react2.jsx)(_react.Fragment, null, (0, _react2.jsx)(_react.Suspense, {
|
|
88
|
+
fallback: memoizedLightWeightCodeBlock
|
|
89
|
+
}, (0, _react2.jsx)(_codeBlockContainer.default, {
|
|
90
|
+
className: className,
|
|
91
|
+
text: text,
|
|
92
|
+
allowCopyToClipboard: allowCopyToClipboard
|
|
93
|
+
}, (0, _react2.jsx)(LazyAkCodeBlock, {
|
|
94
|
+
language: language,
|
|
95
|
+
text: text,
|
|
96
|
+
codeBidiWarnings: featureFlags === null || featureFlags === void 0 ? void 0 : featureFlags.codeBidiWarnings,
|
|
97
|
+
codeBidiWarningLabel: warningLabel,
|
|
98
|
+
codeBidiWarningTooltipEnabled: codeBidiWarningTooltipEnabled
|
|
99
|
+
})))) : memoizedLightWeightCodeBlock;
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
var _default = WindowedCodeBlock;
|
|
103
|
+
exports.default = _default;
|
|
@@ -27,7 +27,7 @@ var _copy = _interopRequireDefault(require("@atlaskit/icon/glyph/copy"));
|
|
|
27
27
|
|
|
28
28
|
var _colors = require("@atlaskit/theme/colors");
|
|
29
29
|
|
|
30
|
-
var
|
|
30
|
+
var _clipboard = require("../utils/clipboard");
|
|
31
31
|
|
|
32
32
|
var _messages = require("../../messages");
|
|
33
33
|
|
|
@@ -60,32 +60,29 @@ var CopyButton = function CopyButton(_ref) {
|
|
|
60
60
|
setClassName('copy-to-clipboard');
|
|
61
61
|
};
|
|
62
62
|
|
|
63
|
-
return (0, _react.jsx)(
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
}))));
|
|
88
|
-
});
|
|
63
|
+
return (0, _react.jsx)("span", {
|
|
64
|
+
css: copyButtonWrapperStyles
|
|
65
|
+
}, (0, _react.jsx)(_tooltip.default, {
|
|
66
|
+
content: tooltip,
|
|
67
|
+
hideTooltipOnClick: false,
|
|
68
|
+
position: "top"
|
|
69
|
+
}, (0, _react.jsx)("div", {
|
|
70
|
+
onMouseLeave: onMouseLeave
|
|
71
|
+
}, (0, _react.jsx)(_customThemeButton.default, {
|
|
72
|
+
className: className,
|
|
73
|
+
"aria-label": tooltip,
|
|
74
|
+
spacing: "compact",
|
|
75
|
+
appearance: "subtle",
|
|
76
|
+
"aria-haspopup": true,
|
|
77
|
+
iconBefore: (0, _react.jsx)(_copy.default, {
|
|
78
|
+
label: tooltip
|
|
79
|
+
}),
|
|
80
|
+
onClick: function onClick() {
|
|
81
|
+
(0, _clipboard.copyTextToClipboard)(content);
|
|
82
|
+
setTooltip(intl.formatMessage(_messages.codeBlockCopyButtonMessages.copiedCodeToClipboard));
|
|
83
|
+
setClassName('copy-to-clipboard clicked');
|
|
84
|
+
}
|
|
85
|
+
}))));
|
|
89
86
|
};
|
|
90
87
|
|
|
91
88
|
var _default = (0, _reactIntlNext.injectIntl)(CopyButton);
|
|
@@ -17,7 +17,7 @@ var _enums = require("../../analytics/enums");
|
|
|
17
17
|
|
|
18
18
|
var _analyticsContext = _interopRequireDefault(require("../../analytics/analyticsContext"));
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var _clipboard = require("../utils/clipboard");
|
|
21
21
|
|
|
22
22
|
var getCurrentUrlWithHash = function getCurrentUrlWithHash() {
|
|
23
23
|
var hash = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
@@ -57,23 +57,20 @@ function Heading(props) {
|
|
|
57
57
|
var headingIdToUse = invisible ? undefined : headingId;
|
|
58
58
|
return /*#__PURE__*/_react.default.createElement(HX, (0, _extends2.default)({
|
|
59
59
|
id: headingIdToUse
|
|
60
|
-
}, dataAttributes), /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, showAnchorLink && isRightAligned ? WrapChildTextInSpan(props.children) : props.children, showAnchorLink && /*#__PURE__*/_react.default.createElement(
|
|
61
|
-
var
|
|
62
|
-
return
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
return copyTextToClipboard(getCurrentUrlWithHash(headingId));
|
|
75
|
-
}
|
|
76
|
-
});
|
|
60
|
+
}, dataAttributes), /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, showAnchorLink && isRightAligned ? WrapChildTextInSpan(props.children) : props.children, showAnchorLink && headingId && /*#__PURE__*/_react.default.createElement(_analyticsContext.default.Consumer, null, function (_ref) {
|
|
61
|
+
var fireAnalyticsEvent = _ref.fireAnalyticsEvent;
|
|
62
|
+
return /*#__PURE__*/_react.default.createElement(_headingAnchor.default, {
|
|
63
|
+
enableNestedHeaderLinks: enableNestedHeaderLinks,
|
|
64
|
+
level: props.level,
|
|
65
|
+
onCopyText: function onCopyText() {
|
|
66
|
+
fireAnalyticsEvent({
|
|
67
|
+
action: _enums.ACTION.CLICKED,
|
|
68
|
+
actionSubject: _enums.ACTION_SUBJECT.BUTTON,
|
|
69
|
+
actionSubjectId: _enums.ACTION_SUBJECT_ID.HEADING_ANCHOR_LINK,
|
|
70
|
+
eventType: _enums.EVENT_TYPE.UI
|
|
71
|
+
});
|
|
72
|
+
return (0, _clipboard.copyTextToClipboard)(getCurrentUrlWithHash(headingId));
|
|
73
|
+
}
|
|
77
74
|
});
|
|
78
75
|
})));
|
|
79
76
|
}
|
|
@@ -139,12 +139,14 @@ Object.defineProperty(exports, "UnknownBlock", {
|
|
|
139
139
|
return _unknownBlock.default;
|
|
140
140
|
}
|
|
141
141
|
});
|
|
142
|
-
exports.isText = exports.isEmojiDoc = void 0;
|
|
142
|
+
exports.isText = exports.isEmojiDoc = exports.WindowedCodeBlock = void 0;
|
|
143
143
|
exports.isTextNode = isTextNode;
|
|
144
144
|
exports.toReact = exports.nodeToReact = exports.mergeTextNodes = exports.isTextWrapper = void 0;
|
|
145
145
|
|
|
146
146
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
147
147
|
|
|
148
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
149
|
+
|
|
148
150
|
var _reactLoadable = _interopRequireDefault(require("react-loadable"));
|
|
149
151
|
|
|
150
152
|
var _blockquote = _interopRequireDefault(require("./blockquote"));
|
|
@@ -189,14 +191,31 @@ var _unknownBlock = _interopRequireDefault(require("./unknownBlock"));
|
|
|
189
191
|
|
|
190
192
|
var _ui = require("@atlaskit/editor-common/ui");
|
|
191
193
|
|
|
194
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
195
|
+
|
|
196
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
197
|
+
|
|
192
198
|
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); }
|
|
193
199
|
|
|
194
200
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || (0, _typeof2.default)(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; }
|
|
195
201
|
|
|
202
|
+
var WindowedCodeBlock = (0, _reactLoadable.default)({
|
|
203
|
+
loader: function loader() {
|
|
204
|
+
return Promise.resolve().then(function () {
|
|
205
|
+
return _interopRequireWildcard(require('./codeBlock/windowedCodeBlock'));
|
|
206
|
+
}).then(function (mod) {
|
|
207
|
+
return mod.default;
|
|
208
|
+
});
|
|
209
|
+
},
|
|
210
|
+
loading: function loading() {
|
|
211
|
+
return null;
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
exports.WindowedCodeBlock = WindowedCodeBlock;
|
|
196
215
|
var CodeBlock = (0, _reactLoadable.default)({
|
|
197
216
|
loader: function loader() {
|
|
198
217
|
return Promise.resolve().then(function () {
|
|
199
|
-
return _interopRequireWildcard(require('./codeBlock'));
|
|
218
|
+
return _interopRequireWildcard(require('./codeBlock/codeBlock'));
|
|
200
219
|
}).then(function (mod) {
|
|
201
220
|
return mod.default;
|
|
202
221
|
});
|
|
@@ -432,7 +451,6 @@ var nodeToReact = {
|
|
|
432
451
|
bulletList: _bulletList.default,
|
|
433
452
|
blockCard: BlockCard,
|
|
434
453
|
caption: _caption.default,
|
|
435
|
-
codeBlock: CodeBlock,
|
|
436
454
|
date: Date,
|
|
437
455
|
decisionItem: DecisionItem,
|
|
438
456
|
decisionList: DecisionList,
|
|
@@ -473,12 +491,23 @@ var nodeToReact = {
|
|
|
473
491
|
};
|
|
474
492
|
exports.nodeToReact = nodeToReact;
|
|
475
493
|
|
|
476
|
-
var toReact = function toReact(node, flags) {
|
|
494
|
+
var toReact = function toReact(node, flags, nodeComponents) {
|
|
477
495
|
if (node.type.name === 'doc' && (flags === null || flags === void 0 ? void 0 : flags.allowSelectAllTrap) === true) {
|
|
478
496
|
return _doc.DocWithSelectAllTrap;
|
|
479
497
|
}
|
|
480
498
|
|
|
481
|
-
|
|
499
|
+
if (node.type.name === 'codeBlock') {
|
|
500
|
+
if ((flags === null || flags === void 0 ? void 0 : flags.allowWindowedCodeBlock) === true) {
|
|
501
|
+
return WindowedCodeBlock;
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
return CodeBlock;
|
|
505
|
+
} // Allowing custom components to override those provided in nodeToReact
|
|
506
|
+
|
|
507
|
+
|
|
508
|
+
var nodes = _objectSpread(_objectSpread({}, nodeToReact), nodeComponents);
|
|
509
|
+
|
|
510
|
+
return nodes[node.type.name];
|
|
482
511
|
};
|
|
483
512
|
|
|
484
513
|
exports.toReact = toReact;
|