@atlaskit/editor-plugin-base
Version:
Base plugin for @atlaskit/editor-core
58 lines • 2.13 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 (featureFlags => new SafePlugin({
key: new PluginKey('disableSpellchecking'),
props: {
attributes: editorState => {
if (!featureFlags) {
return {};
}
const browserConfigFeatureFlag = featureFlags.disableSpellcheckByBrowser;
const browserEnv = getBrowserInfo();
const userCurrentBrowserAndVersion = getCurrentBrowserAndVersion(browserEnv);
if (!userCurrentBrowserAndVersion || !browserConfigFeatureFlag) {
return {};
}
const browserVersionDisableRange =
// Ignored via go/ees005
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
browserConfigFeatureFlag[userCurrentBrowserAndVersion.browser];
if (!browserVersionDisableRange || !browserEnv[userCurrentBrowserAndVersion.browser]) {
return {};
}
const shouldDisableSpellcheck = !!browserVersionDisableRange.maximum ? userCurrentBrowserAndVersion.version >= browserVersionDisableRange.minimum && userCurrentBrowserAndVersion.version <= browserVersionDisableRange.maximum : browserEnv[userCurrentBrowserAndVersion.browser] && userCurrentBrowserAndVersion.version >= browserVersionDisableRange.minimum;
if (shouldDisableSpellcheck) {
return {
spellcheck: 'false'
};
}
return {};
}
}
}));