@atlaskit/editor-plugin-base
Version:
Base plugin for @atlaskit/editor-core
66 lines (65 loc) • 2.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _browser = require("@atlaskit/editor-common/browser");
var _safePlugin = require("@atlaskit/editor-common/safe-plugin");
var _state = require("@atlaskit/editor-prosemirror/state");
function getCurrentBrowserAndVersion(browserEnv) {
switch (true) {
case browserEnv.chrome === true:
return {
browser: 'chrome',
version: browserEnv.chrome_version
};
case browserEnv.ie === true:
return {
browser: 'ie',
version: browserEnv.ie_version
};
case browserEnv.gecko === true:
return {
browser: 'gecko',
version: browserEnv.gecko_version
};
case browserEnv.safari === true:
return {
browser: 'safari',
version: browserEnv.safari_version
};
}
return undefined;
}
var _default = exports.default = function _default(featureFlags) {
return new _safePlugin.SafePlugin({
key: new _state.PluginKey('disableSpellchecking'),
props: {
attributes: function attributes(editorState) {
if (!featureFlags) {
return {};
}
var browserConfigFeatureFlag = featureFlags.disableSpellcheckByBrowser;
var browserEnv = (0, _browser.getBrowserInfo)();
var userCurrentBrowserAndVersion = getCurrentBrowserAndVersion(browserEnv);
if (!userCurrentBrowserAndVersion || !browserConfigFeatureFlag) {
return {};
}
var browserVersionDisableRange =
// Ignored via go/ees005
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
browserConfigFeatureFlag[userCurrentBrowserAndVersion.browser];
if (!browserVersionDisableRange || !browserEnv[userCurrentBrowserAndVersion.browser]) {
return {};
}
var shouldDisableSpellcheck = !!browserVersionDisableRange.maximum ? userCurrentBrowserAndVersion.version >= browserVersionDisableRange.minimum && userCurrentBrowserAndVersion.version <= browserVersionDisableRange.maximum : browserEnv[userCurrentBrowserAndVersion.browser] && userCurrentBrowserAndVersion.version >= browserVersionDisableRange.minimum;
if (shouldDisableSpellcheck) {
return {
spellcheck: 'false'
};
}
return {};
}
}
});
};