UNPKG

@atlaskit/editor-plugin-loom

Version:

Loom plugin for @atlaskit/editor-core

109 lines (108 loc) 4.87 kB
"use strict"; var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.LoomMenuItem = exports.CustomisableLoomMenuItem = void 0; var _react = _interopRequireWildcard(require("react")); var _reactIntl = require("react-intl"); var _hooks = require("@atlaskit/editor-common/hooks"); var _messages = require("@atlaskit/editor-common/messages"); var _toolbar = require("@atlaskit/editor-common/toolbar"); var _editorToolbar = require("@atlaskit/editor-toolbar"); var _commands = require("../pm-plugins/commands"); function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } var useLoomEnabled = function useLoomEnabled(api) { var _useSharedPluginState = (0, _hooks.useSharedPluginStateWithSelector)(api, ['loom'], function (states) { var _states$loomState; return { loomEnabled: (_states$loomState = states.loomState) === null || _states$loomState === void 0 ? void 0 : _states$loomState.isEnabled }; }), loomEnabled = _useSharedPluginState.loomEnabled; return loomEnabled; }; var LoomMenuItem = exports.LoomMenuItem = function LoomMenuItem(_ref) { var api = _ref.api, renderButton = _ref.renderButton; var loomEnabled = useLoomEnabled(api); var _useEditorToolbar = (0, _toolbar.useEditorToolbar)(), editorViewMode = _useEditorToolbar.editorViewMode; if (editorViewMode !== 'edit') { return null; } if (renderButton) { return renderButton(CustomisableLoomMenuItem(api)); } else if (loomEnabled !== undefined) { return /*#__PURE__*/_react.default.createElement(DefaultLoomMenuItem, { api: api }); } }; var CustomisableLoomMenuItem = exports.CustomisableLoomMenuItem = function CustomisableLoomMenuItem(api) { return /*#__PURE__*/_react.default.forwardRef(function (_ref2, ref) { var _ref2$isDisabled = _ref2.isDisabled, isDisabled = _ref2$isDisabled === void 0 ? false : _ref2$isDisabled, onClickBeforeInit = _ref2.onClickBeforeInit, href = _ref2.href, target = _ref2.target, rel = _ref2.rel; var loomEnabled = !!useLoomEnabled(api); var handleOnClick = (0, _react.useCallback)(function (e) { if (loomEnabled) { (0, _commands.executeRecordVideo)(api); } else if (onClickBeforeInit && e.type === 'click' && e.target instanceof HTMLElement) { onClickBeforeInit(e); } }, [loomEnabled, onClickBeforeInit]); return /*#__PURE__*/_react.default.createElement(MenuItemComponent, { ref: ref // Ignore href if Loom is enabled so that it doesn't interfere with recording , href: loomEnabled ? undefined : href, disabled: isDisabled, onClick: handleOnClick, target: target, rel: rel }); }); }; var DefaultLoomMenuItem = function DefaultLoomMenuItem(_ref3) { var api = _ref3.api; var loomEnabled = useLoomEnabled(api); var handleOnClick = (0, _react.useCallback)(function () { return (0, _commands.executeRecordVideo)(api); }, [api]); return /*#__PURE__*/_react.default.createElement(MenuItemComponent, { disabled: !loomEnabled, onClick: handleOnClick }); }; var MenuItemComponent = /*#__PURE__*/_react.default.forwardRef( // eslint-disable-next-line no-unused-vars function (_ref4, ref) { var disabled = _ref4.disabled, _onClick = _ref4.onClick, href = _ref4.href, target = _ref4.target, rel = _ref4.rel; var _useEditorToolbar2 = (0, _toolbar.useEditorToolbar)(), editorAppearance = _useEditorToolbar2.editorAppearance; var _useIntl = (0, _reactIntl.useIntl)(), formatMessage = _useIntl.formatMessage; return /*#__PURE__*/_react.default.createElement(_editorToolbar.ToolbarDropdownItem, { elemBefore: /*#__PURE__*/_react.default.createElement(_editorToolbar.LoomIcon, { size: "small", label: "" }), isDisabled: disabled, href: href, target: target, rel: rel // eslint-disable-next-line @atlassian/perf-linting/no-unstable-inline-props -- Ignored via go/ees017 (to be fixed) , onClick: function onClick(e) { return _onClick(e); } }, formatMessage(editorAppearance === 'comment' ? _messages.toolbarInsertBlockMessages.addLoomVideoComment : _messages.toolbarInsertBlockMessages.addLoomVideo)); });