@atlaskit/editor-plugin-loom
Version:
Loom plugin for @atlaskit/editor-core
109 lines (108 loc) • 4.87 kB
JavaScript
;
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));
});