@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 +17 -0
- package/dist/cjs/pm-plugins/commands.js +32 -5
- package/dist/cjs/pm-plugins/main.js +39 -2
- package/dist/cjs/userPreferencesPlugin.js +31 -0
- package/dist/es2019/pm-plugins/commands.js +27 -0
- package/dist/es2019/pm-plugins/main.js +45 -1
- package/dist/es2019/userPreferencesPlugin.js +32 -1
- package/dist/esm/pm-plugins/commands.js +31 -4
- package/dist/esm/pm-plugins/main.js +37 -1
- package/dist/esm/userPreferencesPlugin.js +31 -1
- package/dist/types/pm-plugins/commands.d.ts +7 -0
- package/dist/types/pm-plugins/main.d.ts +11 -0
- package/dist/types/userPreferencesPluginType.d.ts +5 -0
- package/dist/types-ts4.5/pm-plugins/commands.d.ts +7 -0
- package/dist/types-ts4.5/pm-plugins/main.d.ts +11 -0
- package/dist/types-ts4.5/userPreferencesPluginType.d.ts +5 -0
- package/editor-plugin-user-preferences.docs.tsx +5 -2
- package/package.json +3 -3
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
|
|
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 {
|
|
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
|
|
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 {
|
|
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
|
-
{
|
|
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.
|
|
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": "^
|
|
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.
|
|
38
|
+
"@atlaskit/editor-common": "^114.19.0",
|
|
39
39
|
"react": "^18.2.0"
|
|
40
40
|
},
|
|
41
41
|
"techstack": {
|