@atlaskit/editor-plugin-user-preferences 8.0.12 → 8.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # @atlaskit/editor-plugin-user-preferences
2
2
 
3
+ ## 8.1.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies
8
+
9
+ ## 8.1.0
10
+
11
+ ### Minor Changes
12
+
13
+ - [`20c2faf5c3ca8`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/20c2faf5c3ca8) -
14
+ CONFCLOUD-84107 add override for user preference
15
+
16
+ ### Patch Changes
17
+
18
+ - Updated dependencies
19
+
3
20
  ## 8.0.12
4
21
 
5
22
  ### Patch Changes
@@ -4,18 +4,45 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.updateUserPreference = void 0;
7
+ exports.updateUserPreference = exports.overrideUserPreference = exports.clearOverrideUserPreference = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
9
  var _analytics = require("@atlaskit/editor-common/analytics");
10
10
  var _monitoring = require("@atlaskit/editor-common/monitoring");
11
11
  var _main = require("./main");
12
- var updateUserPreference = exports.updateUserPreference = function updateUserPreference(_ref) {
12
+ var overrideUserPreference = exports.overrideUserPreference = function overrideUserPreference(_ref) {
13
13
  var key = _ref.key,
14
- value = _ref.value,
15
- userPreferencesProvider = _ref.userPreferencesProvider,
16
- editorAnalyticsApi = _ref.editorAnalyticsApi;
14
+ value = _ref.value;
17
15
  return function (_ref2) {
18
16
  var tr = _ref2.tr;
17
+ tr.setMeta(_main.userPreferencesPluginKey, {
18
+ override: {
19
+ key: key,
20
+ value: value
21
+ }
22
+ });
23
+ return tr;
24
+ };
25
+ };
26
+ var clearOverrideUserPreference = exports.clearOverrideUserPreference = function clearOverrideUserPreference(_ref3) {
27
+ var key = _ref3.key;
28
+ return function (_ref4) {
29
+ var tr = _ref4.tr;
30
+ tr.setMeta(_main.userPreferencesPluginKey, {
31
+ override: {
32
+ key: key,
33
+ value: null
34
+ }
35
+ });
36
+ return tr;
37
+ };
38
+ };
39
+ var updateUserPreference = exports.updateUserPreference = function updateUserPreference(_ref5) {
40
+ var key = _ref5.key,
41
+ value = _ref5.value,
42
+ userPreferencesProvider = _ref5.userPreferencesProvider,
43
+ editorAnalyticsApi = _ref5.editorAnalyticsApi;
44
+ return function (_ref6) {
45
+ var tr = _ref6.tr;
19
46
  try {
20
47
  userPreferencesProvider === null || userPreferencesProvider === void 0 || userPreferencesProvider.updatePreference(key, value);
21
48
  } catch (error) {
@@ -1,16 +1,38 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof3 = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
- exports.userPreferencesPluginKey = exports.createPlugin = void 0;
8
+ exports.userPreferencesPluginKey = exports.createPlugin = exports.applyOverride = void 0;
9
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
8
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
9
12
  var _safePlugin = require("@atlaskit/editor-common/safe-plugin");
10
13
  var _state = require("@atlaskit/editor-prosemirror/state");
14
+ var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
11
15
  var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
12
16
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13
17
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
18
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof3(i) ? i : i + ""; }
19
+ function _toPrimitive(t, r) { if ("object" != (0, _typeof2.default)(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != (0, _typeof2.default)(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
20
+ /**
21
+ * Given the current overrides and an override action `{ key, value }`, returns
22
+ * the new overrides object:
23
+ * - If `value` is `null` or `undefined`, the key is removed from overrides.
24
+ * - Otherwise, the key is set to `value` in overrides.
25
+ */
26
+ var applyOverride = exports.applyOverride = function applyOverride(currentOverrides, override) {
27
+ var key = override.key,
28
+ value = override.value;
29
+ if (value === null || value === undefined) {
30
+ var _ = currentOverrides[key],
31
+ rest = (0, _objectWithoutProperties2.default)(currentOverrides, [key].map(_toPropertyKey));
32
+ return rest;
33
+ }
34
+ return _objectSpread(_objectSpread({}, currentOverrides), {}, (0, _defineProperty2.default)({}, key, value));
35
+ };
14
36
  var userPreferencesPluginKey = exports.userPreferencesPluginKey = new _state.PluginKey('userPreferencesPlugin');
15
37
  var createPlugin = exports.createPlugin = function createPlugin(pluginOptions, _api) {
16
38
  var userPreferencesProvider = pluginOptions.userPreferencesProvider,
@@ -23,16 +45,31 @@ var createPlugin = exports.createPlugin = function createPlugin(pluginOptions, _
23
45
  toolbarDockingPosition: 'top'
24
46
  };
25
47
  };
48
+ var isUserPreferenceOverrideEnabled = (0, _expValEquals.expValEquals)('platform_editor_user_preference_override', 'isEnabled', true);
26
49
  return new _safePlugin.SafePlugin({
27
50
  key: userPreferencesPluginKey,
28
51
  state: {
29
52
  init: function init() {
30
53
  return {
31
- preferences: (userPreferencesProvider === null || userPreferencesProvider === void 0 ? void 0 : userPreferencesProvider.getPreferences()) || getInitialUserPreferences()
54
+ preferences: (userPreferencesProvider === null || userPreferencesProvider === void 0 ? void 0 : userPreferencesProvider.getPreferences()) || getInitialUserPreferences(),
55
+ overrides: {}
32
56
  };
33
57
  },
34
58
  apply: function apply(tr, currentPluginState) {
35
59
  var meta = tr.getMeta(userPreferencesPluginKey);
60
+ if (isUserPreferenceOverrideEnabled) {
61
+ if (!meta || !meta.preferences && !meta.override) {
62
+ return currentPluginState;
63
+ }
64
+ var nextState = _objectSpread({}, currentPluginState);
65
+ if (meta.preferences) {
66
+ nextState.preferences = _objectSpread(_objectSpread({}, currentPluginState.preferences), meta.preferences);
67
+ }
68
+ if (meta.override) {
69
+ nextState.overrides = applyOverride(currentPluginState.overrides, meta.override);
70
+ }
71
+ return nextState;
72
+ }
36
73
  if (meta !== null && meta !== void 0 && meta.preferences) {
37
74
  return _objectSpread(_objectSpread({}, currentPluginState), {}, {
38
75
  preferences: _objectSpread(_objectSpread({}, currentPluginState.preferences), meta.preferences)
@@ -1,15 +1,20 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.userPreferencesPlugin = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
9
  var _userPreferences = require("@atlaskit/editor-common/user-preferences");
10
+ var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
8
11
  var _commands = require("./pm-plugins/commands");
9
12
  var _main = require("./pm-plugins/main");
10
13
  var _useDocumentVisibilityWatcher = require("./ui/useDocumentVisibilityWatcher");
11
14
  var _useUserPreferencesInitListener = require("./ui/useUserPreferencesInitListener");
12
15
  var _useUserPreferencesUpdateListener = require("./ui/useUserPreferencesUpdateListener");
16
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
17
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13
18
  var userPreferencesPlugin = exports.userPreferencesPlugin = function userPreferencesPlugin(_ref) {
14
19
  var config = _ref.config,
15
20
  api = _ref.api;
@@ -41,10 +46,36 @@ var userPreferencesPlugin = exports.userPreferencesPlugin = function userPrefere
41
46
  return userPreferencesProvider.getPreferences();
42
47
  }
43
48
  },
49
+ commands: {
50
+ overrideUserPreference: function overrideUserPreference(key, value) {
51
+ return (0, _commands.overrideUserPreference)({
52
+ key: key,
53
+ value: value
54
+ });
55
+ },
56
+ clearOverrideUserPreference: function clearOverrideUserPreference(key) {
57
+ return (0, _commands.clearOverrideUserPreference)({
58
+ key: key
59
+ });
60
+ }
61
+ },
44
62
  getSharedState: function getSharedState(editorState) {
45
63
  if (!editorState) {
46
64
  return null;
47
65
  }
66
+ if ((0, _expValEquals.expValEquals)('platform_editor_user_preference_override', 'isEnabled', true)) {
67
+ var state = _main.userPreferencesPluginKey.getState(editorState);
68
+
69
+ // state can return undefined if the plugin hasn't been registered
70
+ if (!state) {
71
+ return null;
72
+ } else if (!state.overrides || Object.keys(state.overrides).length === 0) {
73
+ return state;
74
+ }
75
+ return _objectSpread(_objectSpread({}, state), {}, {
76
+ preferences: _objectSpread(_objectSpread({}, state.preferences), state.overrides)
77
+ });
78
+ }
48
79
  return _main.userPreferencesPluginKey.getState(editorState);
49
80
  },
50
81
  usePluginHook: function usePluginHook(_ref2) {
@@ -1,6 +1,33 @@
1
1
  import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '@atlaskit/editor-common/analytics';
2
2
  import { logException } from '@atlaskit/editor-common/monitoring';
3
3
  import { userPreferencesPluginKey } from './main';
4
+ export const overrideUserPreference = ({
5
+ key,
6
+ value
7
+ }) => ({
8
+ tr
9
+ }) => {
10
+ tr.setMeta(userPreferencesPluginKey, {
11
+ override: {
12
+ key,
13
+ value
14
+ }
15
+ });
16
+ return tr;
17
+ };
18
+ export const clearOverrideUserPreference = ({
19
+ key
20
+ }) => ({
21
+ tr
22
+ }) => {
23
+ tr.setMeta(userPreferencesPluginKey, {
24
+ override: {
25
+ key,
26
+ value: null
27
+ }
28
+ });
29
+ return tr;
30
+ };
4
31
  export const updateUserPreference = ({
5
32
  key,
6
33
  value,
@@ -1,6 +1,30 @@
1
1
  import { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
2
2
  import { PluginKey } from '@atlaskit/editor-prosemirror/state';
3
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
3
4
  import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
5
+ /**
6
+ * Given the current overrides and an override action `{ key, value }`, returns
7
+ * the new overrides object:
8
+ * - If `value` is `null` or `undefined`, the key is removed from overrides.
9
+ * - Otherwise, the key is set to `value` in overrides.
10
+ */
11
+ export const applyOverride = (currentOverrides, override) => {
12
+ const {
13
+ key,
14
+ value
15
+ } = override;
16
+ if (value === null || value === undefined) {
17
+ const {
18
+ [key]: _,
19
+ ...rest
20
+ } = currentOverrides;
21
+ return rest;
22
+ }
23
+ return {
24
+ ...currentOverrides,
25
+ [key]: value
26
+ };
27
+ };
4
28
  export const userPreferencesPluginKey = new PluginKey('userPreferencesPlugin');
5
29
  export const createPlugin = (pluginOptions, _api) => {
6
30
  const {
@@ -15,16 +39,36 @@ export const createPlugin = (pluginOptions, _api) => {
15
39
  toolbarDockingPosition: 'top'
16
40
  };
17
41
  };
42
+ const isUserPreferenceOverrideEnabled = expValEquals('platform_editor_user_preference_override', 'isEnabled', true);
18
43
  return new SafePlugin({
19
44
  key: userPreferencesPluginKey,
20
45
  state: {
21
46
  init() {
22
47
  return {
23
- preferences: (userPreferencesProvider === null || userPreferencesProvider === void 0 ? void 0 : userPreferencesProvider.getPreferences()) || getInitialUserPreferences()
48
+ preferences: (userPreferencesProvider === null || userPreferencesProvider === void 0 ? void 0 : userPreferencesProvider.getPreferences()) || getInitialUserPreferences(),
49
+ overrides: {}
24
50
  };
25
51
  },
26
52
  apply: (tr, currentPluginState) => {
27
53
  const meta = tr.getMeta(userPreferencesPluginKey);
54
+ if (isUserPreferenceOverrideEnabled) {
55
+ if (!meta || !meta.preferences && !meta.override) {
56
+ return currentPluginState;
57
+ }
58
+ const nextState = {
59
+ ...currentPluginState
60
+ };
61
+ if (meta.preferences) {
62
+ nextState.preferences = {
63
+ ...currentPluginState.preferences,
64
+ ...meta.preferences
65
+ };
66
+ }
67
+ if (meta.override) {
68
+ nextState.overrides = applyOverride(currentPluginState.overrides, meta.override);
69
+ }
70
+ return nextState;
71
+ }
28
72
  if (meta !== null && meta !== void 0 && meta.preferences) {
29
73
  return {
30
74
  ...currentPluginState,
@@ -1,5 +1,6 @@
1
1
  import { useResolvedUserPreferences } from '@atlaskit/editor-common/user-preferences';
2
- import { updateUserPreference } from './pm-plugins/commands';
2
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
3
+ import { clearOverrideUserPreference, overrideUserPreference, updateUserPreference } from './pm-plugins/commands';
3
4
  import { createPlugin, userPreferencesPluginKey } from './pm-plugins/main';
4
5
  import { useDocumentVisibilityWatcher } from './ui/useDocumentVisibilityWatcher';
5
6
  import { useUserPreferencesInitListener } from './ui/useUserPreferencesInitListener';
@@ -36,10 +37,40 @@ export const userPreferencesPlugin = ({
36
37
  return userPreferencesProvider.getPreferences();
37
38
  }
38
39
  },
40
+ commands: {
41
+ overrideUserPreference: (key, value) => {
42
+ return overrideUserPreference({
43
+ key,
44
+ value
45
+ });
46
+ },
47
+ clearOverrideUserPreference: key => {
48
+ return clearOverrideUserPreference({
49
+ key
50
+ });
51
+ }
52
+ },
39
53
  getSharedState(editorState) {
40
54
  if (!editorState) {
41
55
  return null;
42
56
  }
57
+ if (expValEquals('platform_editor_user_preference_override', 'isEnabled', true)) {
58
+ const state = userPreferencesPluginKey.getState(editorState);
59
+
60
+ // state can return undefined if the plugin hasn't been registered
61
+ if (!state) {
62
+ return null;
63
+ } else if (!state.overrides || Object.keys(state.overrides).length === 0) {
64
+ return state;
65
+ }
66
+ return {
67
+ ...state,
68
+ preferences: {
69
+ ...state.preferences,
70
+ ...state.overrides
71
+ }
72
+ };
73
+ }
43
74
  return userPreferencesPluginKey.getState(editorState);
44
75
  },
45
76
  usePluginHook({
@@ -2,13 +2,40 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '@atlaskit/editor-common/analytics';
3
3
  import { logException } from '@atlaskit/editor-common/monitoring';
4
4
  import { userPreferencesPluginKey } from './main';
5
- export var updateUserPreference = function updateUserPreference(_ref) {
5
+ export var overrideUserPreference = function overrideUserPreference(_ref) {
6
6
  var key = _ref.key,
7
- value = _ref.value,
8
- userPreferencesProvider = _ref.userPreferencesProvider,
9
- editorAnalyticsApi = _ref.editorAnalyticsApi;
7
+ value = _ref.value;
10
8
  return function (_ref2) {
11
9
  var tr = _ref2.tr;
10
+ tr.setMeta(userPreferencesPluginKey, {
11
+ override: {
12
+ key: key,
13
+ value: value
14
+ }
15
+ });
16
+ return tr;
17
+ };
18
+ };
19
+ export var clearOverrideUserPreference = function clearOverrideUserPreference(_ref3) {
20
+ var key = _ref3.key;
21
+ return function (_ref4) {
22
+ var tr = _ref4.tr;
23
+ tr.setMeta(userPreferencesPluginKey, {
24
+ override: {
25
+ key: key,
26
+ value: null
27
+ }
28
+ });
29
+ return tr;
30
+ };
31
+ };
32
+ export var updateUserPreference = function updateUserPreference(_ref5) {
33
+ var key = _ref5.key,
34
+ value = _ref5.value,
35
+ userPreferencesProvider = _ref5.userPreferencesProvider,
36
+ editorAnalyticsApi = _ref5.editorAnalyticsApi;
37
+ return function (_ref6) {
38
+ var tr = _ref6.tr;
12
39
  try {
13
40
  userPreferencesProvider === null || userPreferencesProvider === void 0 || userPreferencesProvider.updatePreference(key, value);
14
41
  } catch (error) {
@@ -1,9 +1,30 @@
1
+ import _typeof from "@babel/runtime/helpers/typeof";
1
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
2
4
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
5
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
7
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
4
8
  import { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
5
9
  import { PluginKey } from '@atlaskit/editor-prosemirror/state';
10
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
6
11
  import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
12
+ /**
13
+ * Given the current overrides and an override action `{ key, value }`, returns
14
+ * the new overrides object:
15
+ * - If `value` is `null` or `undefined`, the key is removed from overrides.
16
+ * - Otherwise, the key is set to `value` in overrides.
17
+ */
18
+ export var applyOverride = function applyOverride(currentOverrides, override) {
19
+ var key = override.key,
20
+ value = override.value;
21
+ if (value === null || value === undefined) {
22
+ var _ = currentOverrides[key],
23
+ rest = _objectWithoutProperties(currentOverrides, [key].map(_toPropertyKey));
24
+ return rest;
25
+ }
26
+ return _objectSpread(_objectSpread({}, currentOverrides), {}, _defineProperty({}, key, value));
27
+ };
7
28
  export var userPreferencesPluginKey = new PluginKey('userPreferencesPlugin');
8
29
  export var createPlugin = function createPlugin(pluginOptions, _api) {
9
30
  var userPreferencesProvider = pluginOptions.userPreferencesProvider,
@@ -16,16 +37,31 @@ export var createPlugin = function createPlugin(pluginOptions, _api) {
16
37
  toolbarDockingPosition: 'top'
17
38
  };
18
39
  };
40
+ var isUserPreferenceOverrideEnabled = expValEquals('platform_editor_user_preference_override', 'isEnabled', true);
19
41
  return new SafePlugin({
20
42
  key: userPreferencesPluginKey,
21
43
  state: {
22
44
  init: function init() {
23
45
  return {
24
- preferences: (userPreferencesProvider === null || userPreferencesProvider === void 0 ? void 0 : userPreferencesProvider.getPreferences()) || getInitialUserPreferences()
46
+ preferences: (userPreferencesProvider === null || userPreferencesProvider === void 0 ? void 0 : userPreferencesProvider.getPreferences()) || getInitialUserPreferences(),
47
+ overrides: {}
25
48
  };
26
49
  },
27
50
  apply: function apply(tr, currentPluginState) {
28
51
  var meta = tr.getMeta(userPreferencesPluginKey);
52
+ if (isUserPreferenceOverrideEnabled) {
53
+ if (!meta || !meta.preferences && !meta.override) {
54
+ return currentPluginState;
55
+ }
56
+ var nextState = _objectSpread({}, currentPluginState);
57
+ if (meta.preferences) {
58
+ nextState.preferences = _objectSpread(_objectSpread({}, currentPluginState.preferences), meta.preferences);
59
+ }
60
+ if (meta.override) {
61
+ nextState.overrides = applyOverride(currentPluginState.overrides, meta.override);
62
+ }
63
+ return nextState;
64
+ }
29
65
  if (meta !== null && meta !== void 0 && meta.preferences) {
30
66
  return _objectSpread(_objectSpread({}, currentPluginState), {}, {
31
67
  preferences: _objectSpread(_objectSpread({}, currentPluginState.preferences), meta.preferences)
@@ -1,5 +1,9 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1
4
  import { useResolvedUserPreferences } from '@atlaskit/editor-common/user-preferences';
2
- import { updateUserPreference as _updateUserPreference } from './pm-plugins/commands';
5
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
6
+ import { clearOverrideUserPreference as _clearOverrideUserPreference, overrideUserPreference as _overrideUserPreference, updateUserPreference as _updateUserPreference } from './pm-plugins/commands';
3
7
  import { createPlugin, userPreferencesPluginKey } from './pm-plugins/main';
4
8
  import { useDocumentVisibilityWatcher } from './ui/useDocumentVisibilityWatcher';
5
9
  import { useUserPreferencesInitListener } from './ui/useUserPreferencesInitListener';
@@ -35,10 +39,36 @@ export var userPreferencesPlugin = function userPreferencesPlugin(_ref) {
35
39
  return userPreferencesProvider.getPreferences();
36
40
  }
37
41
  },
42
+ commands: {
43
+ overrideUserPreference: function overrideUserPreference(key, value) {
44
+ return _overrideUserPreference({
45
+ key: key,
46
+ value: value
47
+ });
48
+ },
49
+ clearOverrideUserPreference: function clearOverrideUserPreference(key) {
50
+ return _clearOverrideUserPreference({
51
+ key: key
52
+ });
53
+ }
54
+ },
38
55
  getSharedState: function getSharedState(editorState) {
39
56
  if (!editorState) {
40
57
  return null;
41
58
  }
59
+ if (expValEquals('platform_editor_user_preference_override', 'isEnabled', true)) {
60
+ var state = userPreferencesPluginKey.getState(editorState);
61
+
62
+ // state can return undefined if the plugin hasn't been registered
63
+ if (!state) {
64
+ return null;
65
+ } else if (!state.overrides || Object.keys(state.overrides).length === 0) {
66
+ return state;
67
+ }
68
+ return _objectSpread(_objectSpread({}, state), {}, {
69
+ preferences: _objectSpread(_objectSpread({}, state.preferences), state.overrides)
70
+ });
71
+ }
42
72
  return userPreferencesPluginKey.getState(editorState);
43
73
  },
44
74
  usePluginHook: function usePluginHook(_ref2) {
@@ -1,6 +1,13 @@
1
1
  import type { EditorAnalyticsAPI } from '@atlaskit/editor-common/analytics';
2
2
  import type { EditorCommand } from '@atlaskit/editor-common/types';
3
3
  import type { ResolvedUserPreferences, UserPreferences, UserPreferencesProvider } from '@atlaskit/editor-common/user-preferences';
4
+ export declare const overrideUserPreference: ({ key, value, }: {
5
+ key: keyof ResolvedUserPreferences;
6
+ value: ResolvedUserPreferences[typeof key];
7
+ }) => EditorCommand;
8
+ export declare const clearOverrideUserPreference: ({ key }: {
9
+ key: keyof ResolvedUserPreferences;
10
+ }) => EditorCommand;
4
11
  export declare const updateUserPreference: ({ key, value, userPreferencesProvider, editorAnalyticsApi, }: {
5
12
  editorAnalyticsApi?: EditorAnalyticsAPI | undefined;
6
13
  key: keyof UserPreferences;
@@ -3,8 +3,19 @@ import type { ExtractInjectionAPI } from '@atlaskit/editor-common/types';
3
3
  import type { ResolvedUserPreferences } from '@atlaskit/editor-common/user-preferences';
4
4
  import { PluginKey } from '@atlaskit/editor-prosemirror/state';
5
5
  import type { UserPreferencesPluginOptions, UserPreferencesPlugin } from '../userPreferencesPluginType';
6
+ /**
7
+ * Given the current overrides and an override action `{ key, value }`, returns
8
+ * the new overrides object:
9
+ * - If `value` is `null` or `undefined`, the key is removed from overrides.
10
+ * - Otherwise, the key is set to `value` in overrides.
11
+ */
12
+ export declare const applyOverride: (currentOverrides: Partial<ResolvedUserPreferences>, override: {
13
+ key: keyof ResolvedUserPreferences;
14
+ value: ResolvedUserPreferences[keyof ResolvedUserPreferences] | null | undefined;
15
+ }) => Partial<ResolvedUserPreferences>;
6
16
  export declare const userPreferencesPluginKey: PluginKey;
7
17
  type UserPreferencesPluginState = {
18
+ overrides: Partial<ResolvedUserPreferences>;
8
19
  preferences: ResolvedUserPreferences;
9
20
  };
10
21
  export declare const createPlugin: (pluginOptions: UserPreferencesPluginOptions, _api: ExtractInjectionAPI<UserPreferencesPlugin> | undefined) => SafePlugin<UserPreferencesPluginState>;
@@ -16,6 +16,7 @@ export type UserPreferencesPluginOptions = {
16
16
  export type PrefKey = keyof UserPreferences;
17
17
  export type ResolvedPrefKey = keyof ResolvedUserPreferences;
18
18
  export type UserPreferencesSharedState = {
19
+ overrides: Partial<ResolvedUserPreferences>;
19
20
  preferences: ResolvedUserPreferences;
20
21
  };
21
22
  export type UserPreferencesPlugin = NextEditorPlugin<'userPreferences', {
@@ -23,6 +24,10 @@ export type UserPreferencesPlugin = NextEditorPlugin<'userPreferences', {
23
24
  getUserPreferences: () => ResolvedUserPreferences | undefined;
24
25
  updateUserPreference: (key: PrefKey, value: ResolvedUserPreferences[PrefKey]) => EditorCommand;
25
26
  };
27
+ commands: {
28
+ clearOverrideUserPreference: (key: ResolvedPrefKey) => EditorCommand;
29
+ overrideUserPreference: (key: ResolvedPrefKey, value: ResolvedUserPreferences[ResolvedPrefKey]) => EditorCommand;
30
+ };
26
31
  dependencies: [OptionalPlugin<AnalyticsPlugin>];
27
32
  pluginConfiguration: UserPreferencesPluginOptions;
28
33
  sharedState: UserPreferencesSharedState;
@@ -1,6 +1,13 @@
1
1
  import type { EditorAnalyticsAPI } from '@atlaskit/editor-common/analytics';
2
2
  import type { EditorCommand } from '@atlaskit/editor-common/types';
3
3
  import type { ResolvedUserPreferences, UserPreferences, UserPreferencesProvider } from '@atlaskit/editor-common/user-preferences';
4
+ export declare const overrideUserPreference: ({ key, value, }: {
5
+ key: keyof ResolvedUserPreferences;
6
+ value: ResolvedUserPreferences[typeof key];
7
+ }) => EditorCommand;
8
+ export declare const clearOverrideUserPreference: ({ key }: {
9
+ key: keyof ResolvedUserPreferences;
10
+ }) => EditorCommand;
4
11
  export declare const updateUserPreference: ({ key, value, userPreferencesProvider, editorAnalyticsApi, }: {
5
12
  editorAnalyticsApi?: EditorAnalyticsAPI | undefined;
6
13
  key: keyof UserPreferences;
@@ -3,8 +3,19 @@ import type { ExtractInjectionAPI } from '@atlaskit/editor-common/types';
3
3
  import type { ResolvedUserPreferences } from '@atlaskit/editor-common/user-preferences';
4
4
  import { PluginKey } from '@atlaskit/editor-prosemirror/state';
5
5
  import type { UserPreferencesPluginOptions, UserPreferencesPlugin } from '../userPreferencesPluginType';
6
+ /**
7
+ * Given the current overrides and an override action `{ key, value }`, returns
8
+ * the new overrides object:
9
+ * - If `value` is `null` or `undefined`, the key is removed from overrides.
10
+ * - Otherwise, the key is set to `value` in overrides.
11
+ */
12
+ export declare const applyOverride: (currentOverrides: Partial<ResolvedUserPreferences>, override: {
13
+ key: keyof ResolvedUserPreferences;
14
+ value: ResolvedUserPreferences[keyof ResolvedUserPreferences] | null | undefined;
15
+ }) => Partial<ResolvedUserPreferences>;
6
16
  export declare const userPreferencesPluginKey: PluginKey;
7
17
  type UserPreferencesPluginState = {
18
+ overrides: Partial<ResolvedUserPreferences>;
8
19
  preferences: ResolvedUserPreferences;
9
20
  };
10
21
  export declare const createPlugin: (pluginOptions: UserPreferencesPluginOptions, _api: ExtractInjectionAPI<UserPreferencesPlugin> | undefined) => SafePlugin<UserPreferencesPluginState>;
@@ -16,6 +16,7 @@ export type UserPreferencesPluginOptions = {
16
16
  export type PrefKey = keyof UserPreferences;
17
17
  export type ResolvedPrefKey = keyof ResolvedUserPreferences;
18
18
  export type UserPreferencesSharedState = {
19
+ overrides: Partial<ResolvedUserPreferences>;
19
20
  preferences: ResolvedUserPreferences;
20
21
  };
21
22
  export type UserPreferencesPlugin = NextEditorPlugin<'userPreferences', {
@@ -23,6 +24,10 @@ export type UserPreferencesPlugin = NextEditorPlugin<'userPreferences', {
23
24
  getUserPreferences: () => ResolvedUserPreferences | undefined;
24
25
  updateUserPreference: (key: PrefKey, value: ResolvedUserPreferences[PrefKey]) => EditorCommand;
25
26
  };
27
+ commands: {
28
+ clearOverrideUserPreference: (key: ResolvedPrefKey) => EditorCommand;
29
+ overrideUserPreference: (key: ResolvedPrefKey, value: ResolvedUserPreferences[ResolvedPrefKey]) => EditorCommand;
30
+ };
26
31
  dependencies: [
27
32
  OptionalPlugin<AnalyticsPlugin>
28
33
  ];
@@ -5,7 +5,6 @@
5
5
 
6
6
  import path from 'path';
7
7
 
8
-
9
8
  import type { ComponentStructuredContentSource } from '@atlassian/structured-docs-types';
10
9
 
11
10
  import packageJson from './package.json';
@@ -30,7 +29,11 @@ const documentation: ComponentStructuredContentSource[] = [
30
29
  keywords: ['editor', 'editor-plugin-user-preferences', 'atlaskit'],
31
30
  categories: ['editor'],
32
31
  examples: [
33
- { name: 'Basic', description: 'User preferences plugin usage.', source: path.resolve(packagePath, './examples/1-basic.tsx') },
32
+ {
33
+ name: 'Basic',
34
+ description: 'User preferences plugin usage.',
35
+ source: path.resolve(packagePath, './examples/1-basic.tsx'),
36
+ },
34
37
  ],
35
38
  },
36
39
  ];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-user-preferences",
3
- "version": "8.0.12",
3
+ "version": "8.1.1",
4
4
  "description": "UserPreferences plugin for @atlaskit/editor-core",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -30,12 +30,12 @@
30
30
  "dependencies": {
31
31
  "@atlaskit/editor-plugin-analytics": "^10.0.0",
32
32
  "@atlaskit/editor-prosemirror": "^7.3.0",
33
- "@atlaskit/tmp-editor-statsig": "^74.0.0",
33
+ "@atlaskit/tmp-editor-statsig": "^75.0.0",
34
34
  "@babel/runtime": "^7.0.0",
35
35
  "bind-event-listener": "^3.0.0"
36
36
  },
37
37
  "peerDependencies": {
38
- "@atlaskit/editor-common": "^114.15.0",
38
+ "@atlaskit/editor-common": "^114.19.0",
39
39
  "react": "^18.2.0"
40
40
  },
41
41
  "techstack": {