@atlaskit/editor-plugin-base
Version:
Base plugin for @atlaskit/editor-core
60 lines • 2.22 kB
JavaScript
import { getBrowserInfo } from '@atlaskit/editor-common/browser';
import { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
import { PluginKey } from '@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;
}
export default (function (featureFlags) {
return new SafePlugin({
key: new PluginKey('disableSpellchecking'),
props: {
attributes: function attributes(editorState) {
if (!featureFlags) {
return {};
}
var browserConfigFeatureFlag = featureFlags.disableSpellcheckByBrowser;
var browserEnv = 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 {};
}
}
});
});