@atlaskit/editor-plugin-base 0.3.3 → 0.3.5
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 +13 -0
- package/dist/cjs/plugin.js +2 -13
- package/dist/cjs/pm-plugins/frozen-editor.js +217 -214
- package/dist/cjs/pm-plugins/scroll-gutter/index.js +5 -5
- package/dist/es2019/plugin.js +2 -12
- package/dist/es2019/pm-plugins/frozen-editor.js +13 -14
- package/dist/es2019/pm-plugins/scroll-gutter/index.js +5 -5
- package/dist/esm/plugin.js +2 -13
- package/dist/esm/pm-plugins/frozen-editor.js +217 -214
- package/dist/esm/pm-plugins/scroll-gutter/index.js +5 -5
- package/dist/types/plugin.d.ts +5 -3
- package/dist/types/pm-plugins/frozen-editor.d.ts +3 -2
- package/dist/types-ts4.5/plugin.d.ts +3 -3
- package/dist/types-ts4.5/pm-plugins/frozen-editor.d.ts +3 -2
- package/package.json +5 -10
- package/tsconfig.app.json +2 -2
- package/dist/cjs/pm-plugins/context-identifier.js +0 -55
- package/dist/cjs/pm-plugins/scroll-gutter/plugin-deprecated.js +0 -262
- package/dist/es2019/pm-plugins/context-identifier.js +0 -43
- package/dist/es2019/pm-plugins/scroll-gutter/plugin-deprecated.js +0 -244
- package/dist/esm/pm-plugins/context-identifier.js +0 -48
- package/dist/esm/pm-plugins/scroll-gutter/plugin-deprecated.js +0 -256
- package/dist/types/pm-plugins/context-identifier.d.ts +0 -12
- package/dist/types/pm-plugins/scroll-gutter/plugin-deprecated.d.ts +0 -22
- package/dist/types-ts4.5/pm-plugins/context-identifier.d.ts +0 -12
- package/dist/types-ts4.5/pm-plugins/scroll-gutter/plugin-deprecated.d.ts +0 -22
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-base
|
|
2
2
|
|
|
3
|
+
## 0.3.5
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#68640](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/68640) [`6a3ea210641a`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/6a3ea210641a) - Create new context identifier plugin which contains the provider.
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
|
|
10
|
+
## 0.3.4
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- [#67690](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/67690) [`2f7dc1629e1c`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/2f7dc1629e1c) - Cleanup feature flag for scrolling optimisation.
|
|
15
|
+
|
|
3
16
|
## 0.3.3
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
package/dist/cjs/plugin.js
CHANGED
|
@@ -11,16 +11,13 @@ var _adfSchema = require("@atlaskit/adf-schema");
|
|
|
11
11
|
var _keymaps = require("@atlaskit/editor-common/keymaps");
|
|
12
12
|
var _commands = require("@atlaskit/editor-prosemirror/commands");
|
|
13
13
|
var _history = require("@atlaskit/editor-prosemirror/history");
|
|
14
|
-
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
15
14
|
var _commands2 = require("./commands");
|
|
16
|
-
var _contextIdentifier = _interopRequireWildcard(require("./pm-plugins/context-identifier"));
|
|
17
15
|
var _disableSpellChecking = _interopRequireDefault(require("./pm-plugins/disable-spell-checking"));
|
|
18
16
|
var _filterSteps = _interopRequireDefault(require("./pm-plugins/filter-steps"));
|
|
19
17
|
var _frozenEditor = _interopRequireDefault(require("./pm-plugins/frozen-editor"));
|
|
20
18
|
var _inlineCursorTarget = _interopRequireDefault(require("./pm-plugins/inline-cursor-target"));
|
|
21
19
|
var _newlinePreserveMarks = _interopRequireDefault(require("./pm-plugins/newline-preserve-marks"));
|
|
22
20
|
var _scrollGutter = _interopRequireWildcard(require("./pm-plugins/scroll-gutter"));
|
|
23
|
-
var _pluginDeprecated = _interopRequireDefault(require("./pm-plugins/scroll-gutter/plugin-deprecated"));
|
|
24
21
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
25
22
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
26
23
|
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; }
|
|
@@ -34,7 +31,6 @@ var basePlugin = function basePlugin(_ref) {
|
|
|
34
31
|
name: 'base',
|
|
35
32
|
getSharedState: function getSharedState(editorState) {
|
|
36
33
|
return {
|
|
37
|
-
contextIdentifier: (0, _contextIdentifier.getContextIdentifier)(editorState),
|
|
38
34
|
keyboardHeight: (0, _scrollGutter.getKeyboardHeight)(editorState)
|
|
39
35
|
};
|
|
40
36
|
},
|
|
@@ -75,7 +71,7 @@ var basePlugin = function basePlugin(_ref) {
|
|
|
75
71
|
plugin: function plugin(_ref3) {
|
|
76
72
|
var _options$inputTrackin;
|
|
77
73
|
var dispatchAnalyticsEvent = _ref3.dispatchAnalyticsEvent;
|
|
78
|
-
return options !== null && options !== void 0 && (_options$inputTrackin = options.inputTracking) !== null && _options$inputTrackin !== void 0 && _options$inputTrackin.enabled || options !== null && options !== void 0 && options.ufo ? (0, _frozenEditor.default)(dispatchAnalyticsEvent, options.inputTracking, options.browserFreezeTracking, options.ufo) : undefined;
|
|
74
|
+
return options !== null && options !== void 0 && (_options$inputTrackin = options.inputTracking) !== null && _options$inputTrackin !== void 0 && _options$inputTrackin.enabled || options !== null && options !== void 0 && options.ufo ? (0, _frozenEditor.default)(api === null || api === void 0 ? void 0 : api.contextIdentifier)(dispatchAnalyticsEvent, options.inputTracking, options.browserFreezeTracking, options.ufo) : undefined;
|
|
79
75
|
}
|
|
80
76
|
}, {
|
|
81
77
|
name: 'history',
|
|
@@ -96,19 +92,12 @@ var basePlugin = function basePlugin(_ref) {
|
|
|
96
92
|
}
|
|
97
93
|
}));
|
|
98
94
|
}
|
|
99
|
-
}, {
|
|
100
|
-
name: 'contextIdentifier',
|
|
101
|
-
plugin: function plugin(_ref4) {
|
|
102
|
-
var dispatch = _ref4.dispatch,
|
|
103
|
-
providerFactory = _ref4.providerFactory;
|
|
104
|
-
return (0, _contextIdentifier.default)(dispatch, providerFactory);
|
|
105
|
-
}
|
|
106
95
|
});
|
|
107
96
|
if (options && options.allowScrollGutter) {
|
|
108
97
|
plugins.push({
|
|
109
98
|
name: 'scrollGutterPlugin',
|
|
110
99
|
plugin: function plugin() {
|
|
111
|
-
return (0,
|
|
100
|
+
return (0, _scrollGutter.default)(options.allowScrollGutter);
|
|
112
101
|
}
|
|
113
102
|
});
|
|
114
103
|
}
|
|
@@ -13,7 +13,6 @@ var _utils = require("@atlaskit/editor-common/utils");
|
|
|
13
13
|
var _state = require("@atlaskit/editor-prosemirror/state");
|
|
14
14
|
var _frozenEditor = require("../utils/frozen-editor");
|
|
15
15
|
var _inputLatencyTracking = _interopRequireDefault(require("../utils/input-latency-tracking"));
|
|
16
|
-
var _contextIdentifier = require("./context-identifier");
|
|
17
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; }
|
|
18
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; }
|
|
19
18
|
var frozenEditorPluginKey = exports.frozenEditorPluginKey = new _state.PluginKey('frozenEditor');
|
|
@@ -25,234 +24,238 @@ var DEGRADED_SEVERITY_THRESHOLD = exports.DEGRADED_SEVERITY_THRESHOLD = 3000;
|
|
|
25
24
|
var DEFAULT_TRACK_SEVERITY_ENABLED = false;
|
|
26
25
|
var DEFAULT_TRACK_SEVERITY_THRESHOLD_NORMAL = exports.DEFAULT_TRACK_SEVERITY_THRESHOLD_NORMAL = 100;
|
|
27
26
|
var DEFAULT_TRACK_SEVERITY_THRESHOLD_DEGRADED = exports.DEFAULT_TRACK_SEVERITY_THRESHOLD_DEGRADED = 500;
|
|
28
|
-
var dispatchLongTaskEvent = function dispatchLongTaskEvent(
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
27
|
+
var dispatchLongTaskEvent = function dispatchLongTaskEvent(contextIdentifierPlugin) {
|
|
28
|
+
return function (dispatchAnalyticsEvent, view, time, getNodeCount, interactionType, severity) {
|
|
29
|
+
var _contextIdentifierPlu;
|
|
30
|
+
var state = view.state;
|
|
31
|
+
var nodesCount = getNodeCount(state);
|
|
32
|
+
return dispatchAnalyticsEvent({
|
|
33
|
+
action: _analytics.ACTION.BROWSER_FREEZE,
|
|
34
|
+
actionSubject: _analytics.ACTION_SUBJECT.EDITOR,
|
|
35
|
+
attributes: _objectSpread(_objectSpread({
|
|
36
|
+
objectId: contextIdentifierPlugin === null || contextIdentifierPlugin === void 0 || (_contextIdentifierPlu = contextIdentifierPlugin.sharedState.currentState()) === null || _contextIdentifierPlu === void 0 || (_contextIdentifierPlu = _contextIdentifierPlu.contextIdentifierProvider) === null || _contextIdentifierPlu === void 0 ? void 0 : _contextIdentifierPlu.objectId,
|
|
37
|
+
freezeTime: time,
|
|
38
|
+
nodeSize: state.doc.nodeSize
|
|
39
|
+
}, nodesCount), {}, {
|
|
40
|
+
interactionType: interactionType,
|
|
41
|
+
severity: severity
|
|
42
|
+
}),
|
|
43
|
+
eventType: _analytics.EVENT_TYPE.OPERATIONAL
|
|
44
|
+
});
|
|
45
|
+
};
|
|
45
46
|
};
|
|
46
|
-
var _default = exports.default = function _default(
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
47
|
+
var _default = exports.default = function _default(contextIdentifierPlugin) {
|
|
48
|
+
return function (dispatchAnalyticsEvent, inputTracking, browserFreezeTracking, ufo) {
|
|
49
|
+
var interactionType;
|
|
50
|
+
var inputLatencyTracker = null;
|
|
51
|
+
var inputLatencySingleKeyTracker = null;
|
|
52
|
+
var inputLatencyRenderedTracker = null;
|
|
53
|
+
if (browserFreezeTracking !== null && browserFreezeTracking !== void 0 && browserFreezeTracking.trackInteractionType) {
|
|
54
|
+
interactionType = (0, _frozenEditor.setInteractionType)(_analytics.BROWSER_FREEZE_INTERACTION_TYPE.LOADING);
|
|
55
|
+
}
|
|
56
|
+
var samplingRate = inputTracking && typeof inputTracking.samplingRate === 'number' ? inputTracking.samplingRate : DEFAULT_KEYSTROKE_SAMPLING_LIMIT;
|
|
57
|
+
var slowThreshold = inputTracking && typeof inputTracking.slowThreshold === 'number' ? inputTracking.slowThreshold : DEFAULT_SLOW_THRESHOLD;
|
|
58
|
+
var freezeThreshold = inputTracking && typeof inputTracking.freezeThreshold === 'number' ? inputTracking.freezeThreshold : DEFAULT_FREEZE_THRESHOLD;
|
|
59
|
+
var allowCountNodes = inputTracking && inputTracking.countNodes;
|
|
60
|
+
var prevNodeCountState = null;
|
|
61
|
+
var prevNodeCount = {};
|
|
60
62
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
// Cache the result as we were calling this multiple times
|
|
64
|
+
// and has potential to be expensive
|
|
65
|
+
var getNodeCount = function getNodeCount(state) {
|
|
66
|
+
if (state === prevNodeCountState) {
|
|
67
|
+
return prevNodeCount;
|
|
68
|
+
}
|
|
69
|
+
prevNodeCount = allowCountNodes ? (0, _utils.countNodes)(state) : {};
|
|
70
|
+
prevNodeCountState = state;
|
|
65
71
|
return prevNodeCount;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}),
|
|
89
|
-
eventType: _analytics.EVENT_TYPE.OPERATIONAL
|
|
72
|
+
};
|
|
73
|
+
var shouldTrackSeverity = (inputTracking === null || inputTracking === void 0 ? void 0 : inputTracking.trackSeverity) || DEFAULT_TRACK_SEVERITY_ENABLED;
|
|
74
|
+
var severityThresholdNormal = (inputTracking === null || inputTracking === void 0 ? void 0 : inputTracking.severityNormalThreshold) || DEFAULT_TRACK_SEVERITY_THRESHOLD_NORMAL;
|
|
75
|
+
var severityThresholdDegraded = (inputTracking === null || inputTracking === void 0 ? void 0 : inputTracking.severityDegradedThreshold) || DEFAULT_TRACK_SEVERITY_THRESHOLD_DEGRADED;
|
|
76
|
+
var createDispatchSample = function createDispatchSample(action, view) {
|
|
77
|
+
return function (time, severity) {
|
|
78
|
+
var _contextIdentifierPlu2;
|
|
79
|
+
var state = view.state;
|
|
80
|
+
var nodesCount = getNodeCount(state);
|
|
81
|
+
var samplePayload = {
|
|
82
|
+
action: action,
|
|
83
|
+
actionSubject: _analytics.ACTION_SUBJECT.EDITOR,
|
|
84
|
+
attributes: _objectSpread(_objectSpread({
|
|
85
|
+
time: time,
|
|
86
|
+
nodeSize: state.doc.nodeSize
|
|
87
|
+
}, nodesCount), {}, {
|
|
88
|
+
objectId: contextIdentifierPlugin === null || contextIdentifierPlugin === void 0 || (_contextIdentifierPlu2 = contextIdentifierPlugin.sharedState.currentState()) === null || _contextIdentifierPlu2 === void 0 || (_contextIdentifierPlu2 = _contextIdentifierPlu2.contextIdentifierProvider) === null || _contextIdentifierPlu2 === void 0 ? void 0 : _contextIdentifierPlu2.objectId,
|
|
89
|
+
severity: shouldTrackSeverity ? severity : undefined
|
|
90
|
+
}),
|
|
91
|
+
eventType: _analytics.EVENT_TYPE.OPERATIONAL
|
|
92
|
+
};
|
|
93
|
+
dispatchAnalyticsEvent(samplePayload);
|
|
90
94
|
};
|
|
91
|
-
dispatchAnalyticsEvent(samplePayload);
|
|
92
95
|
};
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
96
|
+
var createDispatchAverage = function createDispatchAverage(action, view) {
|
|
97
|
+
return function (_ref, severity) {
|
|
98
|
+
var _contextIdentifierPlu3;
|
|
99
|
+
var mean = _ref.mean,
|
|
100
|
+
median = _ref.median,
|
|
101
|
+
sampleSize = _ref.sampleSize;
|
|
102
|
+
var state = view.state;
|
|
103
|
+
var nodeCount = getNodeCount(state);
|
|
104
|
+
var averagePayload = {
|
|
105
|
+
action: action,
|
|
106
|
+
actionSubject: _analytics.ACTION_SUBJECT.EDITOR,
|
|
107
|
+
attributes: _objectSpread(_objectSpread({
|
|
108
|
+
mean: mean,
|
|
109
|
+
median: median,
|
|
110
|
+
sampleSize: sampleSize
|
|
111
|
+
}, nodeCount), {}, {
|
|
112
|
+
nodeSize: state.doc.nodeSize,
|
|
113
|
+
severity: shouldTrackSeverity ? severity : undefined,
|
|
114
|
+
objectId: contextIdentifierPlugin === null || contextIdentifierPlugin === void 0 || (_contextIdentifierPlu3 = contextIdentifierPlugin.sharedState.currentState()) === null || _contextIdentifierPlu3 === void 0 || (_contextIdentifierPlu3 = _contextIdentifierPlu3.contextIdentifierProvider) === null || _contextIdentifierPlu3 === void 0 ? void 0 : _contextIdentifierPlu3.objectId
|
|
115
|
+
}),
|
|
116
|
+
eventType: _analytics.EVENT_TYPE.OPERATIONAL
|
|
117
|
+
};
|
|
118
|
+
dispatchAnalyticsEvent(averagePayload);
|
|
115
119
|
};
|
|
116
|
-
dispatchAnalyticsEvent(averagePayload);
|
|
117
120
|
};
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
var end = inputLatencyTracker.start();
|
|
121
|
+
return new _safePlugin.SafePlugin({
|
|
122
|
+
key: frozenEditorPluginKey,
|
|
123
|
+
props: (0, _utils.isPerformanceAPIAvailable)() ? {
|
|
124
|
+
handleTextInput: function handleTextInput(view) {
|
|
125
|
+
if (browserFreezeTracking !== null && browserFreezeTracking !== void 0 && browserFreezeTracking.trackInteractionType) {
|
|
126
|
+
interactionType = _analytics.BROWSER_FREEZE_INTERACTION_TYPE.TYPING;
|
|
127
|
+
}
|
|
128
|
+
if (inputLatencyTracker) {
|
|
129
|
+
var end = inputLatencyTracker.start();
|
|
128
130
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
131
|
+
// This is called after all handleTextInput events are executed which means first handleTextInput time incorporates following handleTextInput processing time
|
|
132
|
+
// Also this is called before browser rendering so it doesn't count it.
|
|
133
|
+
requestAnimationFrame(end);
|
|
134
|
+
}
|
|
135
|
+
if (inputLatencySingleKeyTracker) {
|
|
136
|
+
var _end = inputLatencySingleKeyTracker.start();
|
|
135
137
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
138
|
+
// This is executed before next handleTextInput when multiple keypress events are in one animation frame
|
|
139
|
+
// so it tracks individual keypress processing time
|
|
140
|
+
Promise.resolve().then(_end);
|
|
141
|
+
}
|
|
142
|
+
if (inputLatencyRenderedTracker) {
|
|
143
|
+
var _end2 = inputLatencyRenderedTracker.start();
|
|
142
144
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
return false;
|
|
147
|
-
},
|
|
148
|
-
handleDOMEvents: browserFreezeTracking !== null && browserFreezeTracking !== void 0 && browserFreezeTracking.trackInteractionType ? {
|
|
149
|
-
click: function click() {
|
|
150
|
-
interactionType = (0, _frozenEditor.setInteractionType)(_analytics.BROWSER_FREEZE_INTERACTION_TYPE.CLICKING);
|
|
145
|
+
// This is called at the next event loop so it counts browser rendering time.
|
|
146
|
+
setTimeout(_end2);
|
|
147
|
+
}
|
|
151
148
|
return false;
|
|
152
149
|
},
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
} : undefined
|
|
158
|
-
} : undefined,
|
|
159
|
-
view: function view(_view) {
|
|
160
|
-
if (!(0, _utils.isPerformanceObserverAvailable)()) {
|
|
161
|
-
return {};
|
|
162
|
-
}
|
|
163
|
-
var experienceStore = ufo ? _ufo.ExperienceStore.getInstance(_view) : undefined;
|
|
164
|
-
if (inputTracking !== null && inputTracking !== void 0 && inputTracking.enabled) {
|
|
165
|
-
inputLatencyTracker = new _inputLatencyTracking.default({
|
|
166
|
-
samplingRate: samplingRate,
|
|
167
|
-
slowThreshold: slowThreshold,
|
|
168
|
-
normalThreshold: severityThresholdNormal,
|
|
169
|
-
degradedThreshold: severityThresholdDegraded,
|
|
170
|
-
onSampleStart: function onSampleStart() {
|
|
171
|
-
experienceStore === null || experienceStore === void 0 || experienceStore.start(_ufo.EditorExperience.typing);
|
|
172
|
-
},
|
|
173
|
-
onSampleEnd: function onSampleEnd(time, _ref2) {
|
|
174
|
-
var _getContextIdentifier4;
|
|
175
|
-
var isSlow = _ref2.isSlow,
|
|
176
|
-
severity = _ref2.severity;
|
|
177
|
-
var state = _view.state;
|
|
178
|
-
var nodesCount = getNodeCount(state);
|
|
179
|
-
if (isSlow) {
|
|
180
|
-
experienceStore === null || experienceStore === void 0 || experienceStore.addMetadata(_ufo.EditorExperience.typing, {
|
|
181
|
-
slowInput: true
|
|
182
|
-
});
|
|
183
|
-
}
|
|
184
|
-
experienceStore === null || experienceStore === void 0 || experienceStore.success(_ufo.EditorExperience.typing, _objectSpread(_objectSpread({
|
|
185
|
-
nodeSize: state.doc.nodeSize
|
|
186
|
-
}, nodesCount), {}, {
|
|
187
|
-
objectId: (_getContextIdentifier4 = (0, _contextIdentifier.getContextIdentifier)(state)) === null || _getContextIdentifier4 === void 0 ? void 0 : _getContextIdentifier4.objectId,
|
|
188
|
-
time: time,
|
|
189
|
-
severity: shouldTrackSeverity ? severity : undefined
|
|
190
|
-
}));
|
|
150
|
+
handleDOMEvents: browserFreezeTracking !== null && browserFreezeTracking !== void 0 && browserFreezeTracking.trackInteractionType ? {
|
|
151
|
+
click: function click() {
|
|
152
|
+
interactionType = (0, _frozenEditor.setInteractionType)(_analytics.BROWSER_FREEZE_INTERACTION_TYPE.CLICKING);
|
|
153
|
+
return false;
|
|
191
154
|
},
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
155
|
+
paste: function paste() {
|
|
156
|
+
interactionType = (0, _frozenEditor.setInteractionType)(_analytics.BROWSER_FREEZE_INTERACTION_TYPE.PASTING);
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
} : undefined
|
|
160
|
+
} : undefined,
|
|
161
|
+
view: function view(_view) {
|
|
162
|
+
if (!(0, _utils.isPerformanceObserverAvailable)()) {
|
|
163
|
+
return {};
|
|
164
|
+
}
|
|
165
|
+
var experienceStore = ufo ? _ufo.ExperienceStore.getInstance(_view) : undefined;
|
|
166
|
+
if (inputTracking !== null && inputTracking !== void 0 && inputTracking.enabled) {
|
|
167
|
+
inputLatencyTracker = new _inputLatencyTracking.default({
|
|
168
|
+
samplingRate: samplingRate,
|
|
169
|
+
slowThreshold: slowThreshold,
|
|
170
|
+
normalThreshold: severityThresholdNormal,
|
|
171
|
+
degradedThreshold: severityThresholdDegraded,
|
|
172
|
+
onSampleStart: function onSampleStart() {
|
|
173
|
+
experienceStore === null || experienceStore === void 0 || experienceStore.start(_ufo.EditorExperience.typing);
|
|
174
|
+
},
|
|
175
|
+
onSampleEnd: function onSampleEnd(time, _ref2) {
|
|
176
|
+
var _contextIdentifierPlu4;
|
|
177
|
+
var isSlow = _ref2.isSlow,
|
|
178
|
+
severity = _ref2.severity;
|
|
179
|
+
var state = _view.state;
|
|
180
|
+
var nodesCount = getNodeCount(state);
|
|
181
|
+
if (isSlow) {
|
|
182
|
+
experienceStore === null || experienceStore === void 0 || experienceStore.addMetadata(_ufo.EditorExperience.typing, {
|
|
183
|
+
slowInput: true
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
experienceStore === null || experienceStore === void 0 || experienceStore.success(_ufo.EditorExperience.typing, _objectSpread(_objectSpread({
|
|
203
187
|
nodeSize: state.doc.nodeSize
|
|
204
188
|
}, nodesCount), {}, {
|
|
205
|
-
objectId: (
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
degradedThreshold: severityThresholdDegraded,
|
|
228
|
-
dispatchSample: createDispatchSample(_analytics.ACTION.INPUT_PERF_SAMPLING_RENDERED, _view),
|
|
229
|
-
dispatchAverage: createDispatchAverage(_analytics.ACTION.INPUT_PERF_SAMPLING_RENDERED_AVG, _view)
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
|
-
var observer;
|
|
233
|
-
try {
|
|
234
|
-
observer = new PerformanceObserver(function (list) {
|
|
235
|
-
var perfEntries = list.getEntries();
|
|
236
|
-
for (var i = 0; i < perfEntries.length; i++) {
|
|
237
|
-
var duration = perfEntries[i].duration;
|
|
238
|
-
if (duration > freezeThreshold) {
|
|
239
|
-
dispatchLongTaskEvent(dispatchAnalyticsEvent, _view, duration, getNodeCount, browserFreezeTracking !== null && browserFreezeTracking !== void 0 && browserFreezeTracking.trackInteractionType ? interactionType : undefined, browserFreezeTracking !== null && browserFreezeTracking !== void 0 && browserFreezeTracking.trackSeverity ? (0, _utils.getAnalyticsEventSeverity)(duration, browserFreezeTracking.severityNormalThreshold || NORMAL_SEVERITY_THRESHOLD, browserFreezeTracking.severityDegradedThreshold || DEGRADED_SEVERITY_THRESHOLD) : undefined);
|
|
189
|
+
objectId: contextIdentifierPlugin === null || contextIdentifierPlugin === void 0 || (_contextIdentifierPlu4 = contextIdentifierPlugin.sharedState.currentState()) === null || _contextIdentifierPlu4 === void 0 || (_contextIdentifierPlu4 = _contextIdentifierPlu4.contextIdentifierProvider) === null || _contextIdentifierPlu4 === void 0 ? void 0 : _contextIdentifierPlu4.objectId,
|
|
190
|
+
time: time,
|
|
191
|
+
severity: shouldTrackSeverity ? severity : undefined
|
|
192
|
+
}));
|
|
193
|
+
},
|
|
194
|
+
dispatchSample: createDispatchSample(_analytics.ACTION.INPUT_PERF_SAMPLING, _view),
|
|
195
|
+
dispatchAverage: createDispatchAverage(_analytics.ACTION.INPUT_PERF_SAMPLING_AVG, _view),
|
|
196
|
+
onSlowInput: function onSlowInput(time) {
|
|
197
|
+
var _contextIdentifierPlu5;
|
|
198
|
+
var state = _view.state;
|
|
199
|
+
var nodesCount = getNodeCount(state);
|
|
200
|
+
dispatchAnalyticsEvent({
|
|
201
|
+
action: _analytics.ACTION.SLOW_INPUT,
|
|
202
|
+
actionSubject: _analytics.ACTION_SUBJECT.EDITOR,
|
|
203
|
+
attributes: _objectSpread(_objectSpread({
|
|
204
|
+
time: time,
|
|
205
|
+
nodeSize: state.doc.nodeSize
|
|
206
|
+
}, nodesCount), {}, {
|
|
207
|
+
objectId: contextIdentifierPlugin === null || contextIdentifierPlugin === void 0 || (_contextIdentifierPlu5 = contextIdentifierPlugin.sharedState.currentState()) === null || _contextIdentifierPlu5 === void 0 || (_contextIdentifierPlu5 = _contextIdentifierPlu5.contextIdentifierProvider) === null || _contextIdentifierPlu5 === void 0 ? void 0 : _contextIdentifierPlu5.objectId
|
|
208
|
+
}),
|
|
209
|
+
eventType: _analytics.EVENT_TYPE.OPERATIONAL
|
|
210
|
+
});
|
|
240
211
|
}
|
|
241
|
-
}
|
|
242
|
-
});
|
|
243
|
-
|
|
244
|
-
// register observer for long task notifications
|
|
245
|
-
observer.observe({
|
|
246
|
-
entryTypes: ['longtask']
|
|
247
|
-
});
|
|
248
|
-
} catch (e) {}
|
|
249
|
-
return {
|
|
250
|
-
destroy: function destroy() {
|
|
251
|
-
var _inputLatencyTracker, _observer;
|
|
252
|
-
(_inputLatencyTracker = inputLatencyTracker) === null || _inputLatencyTracker === void 0 || _inputLatencyTracker.flush();
|
|
253
|
-
(_observer = observer) === null || _observer === void 0 || _observer.disconnect();
|
|
212
|
+
});
|
|
254
213
|
}
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
214
|
+
if (inputTracking !== null && inputTracking !== void 0 && inputTracking.trackSingleKeypress) {
|
|
215
|
+
inputLatencySingleKeyTracker = new _inputLatencyTracking.default({
|
|
216
|
+
samplingRate: samplingRate,
|
|
217
|
+
slowThreshold: slowThreshold,
|
|
218
|
+
normalThreshold: severityThresholdNormal,
|
|
219
|
+
degradedThreshold: severityThresholdDegraded,
|
|
220
|
+
dispatchSample: createDispatchSample(_analytics.ACTION.INPUT_PERF_SAMPLING_SINGLE_KEYPRESS, _view),
|
|
221
|
+
dispatchAverage: createDispatchAverage(_analytics.ACTION.INPUT_PERF_SAMPLING_SINGLE_KEYPRESS_AVG, _view)
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
if (inputTracking !== null && inputTracking !== void 0 && inputTracking.trackRenderingTime) {
|
|
225
|
+
inputLatencyRenderedTracker = new _inputLatencyTracking.default({
|
|
226
|
+
samplingRate: samplingRate,
|
|
227
|
+
slowThreshold: slowThreshold,
|
|
228
|
+
normalThreshold: severityThresholdNormal,
|
|
229
|
+
degradedThreshold: severityThresholdDegraded,
|
|
230
|
+
dispatchSample: createDispatchSample(_analytics.ACTION.INPUT_PERF_SAMPLING_RENDERED, _view),
|
|
231
|
+
dispatchAverage: createDispatchAverage(_analytics.ACTION.INPUT_PERF_SAMPLING_RENDERED_AVG, _view)
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
var observer;
|
|
235
|
+
try {
|
|
236
|
+
observer = new PerformanceObserver(function (list) {
|
|
237
|
+
var perfEntries = list.getEntries();
|
|
238
|
+
for (var i = 0; i < perfEntries.length; i++) {
|
|
239
|
+
var duration = perfEntries[i].duration;
|
|
240
|
+
if (duration > freezeThreshold) {
|
|
241
|
+
dispatchLongTaskEvent(contextIdentifierPlugin)(dispatchAnalyticsEvent, _view, duration, getNodeCount, browserFreezeTracking !== null && browserFreezeTracking !== void 0 && browserFreezeTracking.trackInteractionType ? interactionType : undefined, browserFreezeTracking !== null && browserFreezeTracking !== void 0 && browserFreezeTracking.trackSeverity ? (0, _utils.getAnalyticsEventSeverity)(duration, browserFreezeTracking.severityNormalThreshold || NORMAL_SEVERITY_THRESHOLD, browserFreezeTracking.severityDegradedThreshold || DEGRADED_SEVERITY_THRESHOLD) : undefined);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
|
|
246
|
+
// register observer for long task notifications
|
|
247
|
+
observer.observe({
|
|
248
|
+
entryTypes: ['longtask']
|
|
249
|
+
});
|
|
250
|
+
} catch (e) {}
|
|
251
|
+
return {
|
|
252
|
+
destroy: function destroy() {
|
|
253
|
+
var _inputLatencyTracker, _observer;
|
|
254
|
+
(_inputLatencyTracker = inputLatencyTracker) === null || _inputLatencyTracker === void 0 || _inputLatencyTracker.flush();
|
|
255
|
+
(_observer = observer) === null || _observer === void 0 || _observer.disconnect();
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
};
|
|
258
261
|
};
|
|
@@ -216,7 +216,7 @@ var _default = exports.default = function _default() {
|
|
|
216
216
|
gutter.addGutter(editorParentElement);
|
|
217
217
|
}
|
|
218
218
|
};
|
|
219
|
-
var toggleGutter = function toggleGutter(
|
|
219
|
+
var toggleGutter = function toggleGutter(contentSize, threshold) {
|
|
220
220
|
if (pluginOptions.persistScrollGutter) {
|
|
221
221
|
if (!(0, _utils.isEmptyDocument)(view.state.doc)) {
|
|
222
222
|
addAndObserveGutter();
|
|
@@ -229,8 +229,7 @@ var _default = exports.default = function _default() {
|
|
|
229
229
|
// Add or remove the gutter based on whether the content is about to exceed the viewport height.
|
|
230
230
|
// We do this to ensure there is sufficient white space below the last content node in order to
|
|
231
231
|
// see any UI control elements which may sit beneath it.
|
|
232
|
-
|
|
233
|
-
if (contentSize >= gutterThresholdHeight) {
|
|
232
|
+
if (contentSize >= threshold) {
|
|
234
233
|
addAndObserveGutter();
|
|
235
234
|
} else {
|
|
236
235
|
if (gutter.isMounted()) {
|
|
@@ -258,7 +257,7 @@ var _default = exports.default = function _default() {
|
|
|
258
257
|
} finally {
|
|
259
258
|
_iterator.f();
|
|
260
259
|
}
|
|
261
|
-
toggleGutter(
|
|
260
|
+
toggleGutter(contentElementHeight, viewportElementHeight);
|
|
262
261
|
};
|
|
263
262
|
|
|
264
263
|
// Subscribe to updates of the height of the viewport and content elements
|
|
@@ -288,7 +287,8 @@ var _default = exports.default = function _default() {
|
|
|
288
287
|
// No need to recheck if the selected node hasn't changed.
|
|
289
288
|
return;
|
|
290
289
|
}
|
|
291
|
-
|
|
290
|
+
var gutterThresholdHeight = viewportElementHeight - gutterSize;
|
|
291
|
+
toggleGutter(contentElementHeight, gutterThresholdHeight);
|
|
292
292
|
}
|
|
293
293
|
};
|
|
294
294
|
})
|
package/dist/es2019/plugin.js
CHANGED
|
@@ -2,16 +2,13 @@ import { doc, paragraph, text } from '@atlaskit/adf-schema';
|
|
|
2
2
|
import { keymap } from '@atlaskit/editor-common/keymaps';
|
|
3
3
|
import { baseKeymap } from '@atlaskit/editor-prosemirror/commands';
|
|
4
4
|
import { history } from '@atlaskit/editor-prosemirror/history';
|
|
5
|
-
import { getBooleanFF } from '@atlaskit/platform-feature-flags';
|
|
6
5
|
import { setKeyboardHeight } from './commands';
|
|
7
|
-
import contextIdentifierPlugin, { getContextIdentifier } from './pm-plugins/context-identifier';
|
|
8
6
|
import disableSpellcheckingPlugin from './pm-plugins/disable-spell-checking';
|
|
9
7
|
import filterStepsPlugin from './pm-plugins/filter-steps';
|
|
10
8
|
import frozenEditor from './pm-plugins/frozen-editor';
|
|
11
9
|
import inlineCursorTargetPlugin from './pm-plugins/inline-cursor-target';
|
|
12
10
|
import newlinePreserveMarksPlugin from './pm-plugins/newline-preserve-marks';
|
|
13
11
|
import scrollGutter, { getKeyboardHeight } from './pm-plugins/scroll-gutter';
|
|
14
|
-
import deprecatedScrollGutter from './pm-plugins/scroll-gutter/plugin-deprecated';
|
|
15
12
|
const basePlugin = ({
|
|
16
13
|
config: options,
|
|
17
14
|
api
|
|
@@ -22,7 +19,6 @@ const basePlugin = ({
|
|
|
22
19
|
name: 'base',
|
|
23
20
|
getSharedState(editorState) {
|
|
24
21
|
return {
|
|
25
|
-
contextIdentifier: getContextIdentifier(editorState),
|
|
26
22
|
keyboardHeight: getKeyboardHeight(editorState)
|
|
27
23
|
};
|
|
28
24
|
},
|
|
@@ -61,7 +57,7 @@ const basePlugin = ({
|
|
|
61
57
|
dispatchAnalyticsEvent
|
|
62
58
|
}) => {
|
|
63
59
|
var _options$inputTrackin;
|
|
64
|
-
return options !== null && options !== void 0 && (_options$inputTrackin = options.inputTracking) !== null && _options$inputTrackin !== void 0 && _options$inputTrackin.enabled || options !== null && options !== void 0 && options.ufo ? frozenEditor(dispatchAnalyticsEvent, options.inputTracking, options.browserFreezeTracking, options.ufo) : undefined;
|
|
60
|
+
return options !== null && options !== void 0 && (_options$inputTrackin = options.inputTracking) !== null && _options$inputTrackin !== void 0 && _options$inputTrackin.enabled || options !== null && options !== void 0 && options.ufo ? frozenEditor(api === null || api === void 0 ? void 0 : api.contextIdentifier)(dispatchAnalyticsEvent, options.inputTracking, options.browserFreezeTracking, options.ufo) : undefined;
|
|
65
61
|
}
|
|
66
62
|
}, {
|
|
67
63
|
name: 'history',
|
|
@@ -75,17 +71,11 @@ const basePlugin = ({
|
|
|
75
71
|
'Mod-[': () => true,
|
|
76
72
|
'Mod-]': () => true
|
|
77
73
|
})
|
|
78
|
-
}, {
|
|
79
|
-
name: 'contextIdentifier',
|
|
80
|
-
plugin: ({
|
|
81
|
-
dispatch,
|
|
82
|
-
providerFactory
|
|
83
|
-
}) => contextIdentifierPlugin(dispatch, providerFactory)
|
|
84
74
|
});
|
|
85
75
|
if (options && options.allowScrollGutter) {
|
|
86
76
|
plugins.push({
|
|
87
77
|
name: 'scrollGutterPlugin',
|
|
88
|
-
plugin: () =>
|
|
78
|
+
plugin: () => scrollGutter(options.allowScrollGutter)
|
|
89
79
|
});
|
|
90
80
|
}
|
|
91
81
|
plugins.push({
|