UNPKG

@atlaskit/editor-plugin-base

Version:

Base plugin for @atlaskit/editor-core

60 lines 2.22 kB
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 {}; } } }); });