UNPKG

@atlaskit/editor-plugin-base

Version:

Base plugin for @atlaskit/editor-core

66 lines (65 loc) 2.37 kB
"use strict"; 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 {}; } } }); };