UNPKG

@atlaskit/editor-plugin-metrics

Version:

Metrics plugin for @atlaskit/editor-core

119 lines (117 loc) 5.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.metricsPlugin = void 0; var _platformFeatureFlags = require("@atlaskit/platform-feature-flags"); var _expValEqualsNoExposure = require("@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure"); var _main = require("./pm-plugins/main"); var _analytics = require("./pm-plugins/utils/analytics"); /** * Metrics plugin to be added to an `EditorPresetBuilder` and used with `ComposableEditor` * from `@atlaskit/editor-core`. */ var metricsPlugin = exports.metricsPlugin = function metricsPlugin(_ref) { var config = _ref.config, api = _ref.api; return { name: 'metrics', pmPlugins: function pmPlugins() { return [{ name: 'metrics', plugin: function plugin() { return (0, _main.createPlugin)(api, config === null || config === void 0 ? void 0 : config.userPreferencesProvider); } }]; }, commands: { setContentMoved: function setContentMoved() { return function (_ref2) { var tr = _ref2.tr; return tr.setMeta(_main.metricsKey, { contentMoved: true }); }; }, startActiveSessionTimer: function startActiveSessionTimer() { return function (_ref3) { var tr = _ref3.tr; var pluginState = api === null || api === void 0 ? void 0 : api.metrics.sharedState.currentState(); if (!(pluginState !== null && pluginState !== void 0 && pluginState.intentToStartEditTime)) { return tr; } return tr.setMeta(_main.metricsKey, { shouldStartTimer: true, shouldPersistActiveSession: false }); }; }, stopActiveSession: function stopActiveSession() { return function (_ref4) { var tr = _ref4.tr; if (!api) { return tr; } var pluginState = api === null || api === void 0 ? void 0 : api.metrics.sharedState.currentState(); if (pluginState !== null && pluginState !== void 0 && pluginState.shouldPersistActiveSession) { return tr; } if (pluginState && pluginState.totalActionCount > 0 && pluginState.activeSessionTime > 0) { var _api$analytics; var toolbarDocking; if ((0, _expValEqualsNoExposure.expValEqualsNoExposure)('platform_editor_controls', 'cohort', 'variant1')) { var _api$userPreferences, _config$userPreferenc; toolbarDocking = toolbarDocking = (0, _platformFeatureFlags.fg)('platform_editor_use_preferences_plugin') ? api === null || api === void 0 || (_api$userPreferences = api.userPreferences) === null || _api$userPreferences === void 0 || (_api$userPreferences = _api$userPreferences.sharedState.currentState()) === null || _api$userPreferences === void 0 || (_api$userPreferences = _api$userPreferences.preferences) === null || _api$userPreferences === void 0 ? void 0 : _api$userPreferences.toolbarDockingPosition : config === null || config === void 0 || (_config$userPreferenc = config.userPreferencesProvider) === null || _config$userPreferenc === void 0 ? void 0 : _config$userPreferenc.getPreference('toolbarDockingInitialPosition'); } var payloadToSend = (0, _analytics.getAnalyticsPayload)({ currentContent: tr.doc.content, pluginState: pluginState, toolbarDocking: toolbarDocking || undefined }); api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 || _api$analytics.actions.attachAnalyticsEvent(payloadToSend)(tr); } tr.setMeta(_main.metricsKey, { stopActiveSession: true }); tr.setMeta('scrollIntoView', false); tr.setMeta('addToHistory', false); return tr; }; }, handleIntentToStartEdit: function handleIntentToStartEdit(_ref5) { var newSelection = _ref5.newSelection, _ref5$shouldStartTime = _ref5.shouldStartTimer, shouldStartTimer = _ref5$shouldStartTime === void 0 ? true : _ref5$shouldStartTime, shouldPersistActiveSession = _ref5.shouldPersistActiveSession; return function (_ref6) { var tr = _ref6.tr; if (!api) { return tr; } var pluginState = api === null || api === void 0 ? void 0 : api.metrics.sharedState.currentState(); if (shouldPersistActiveSession && pluginState !== null && pluginState !== void 0 && pluginState.intentToStartEditTime) { return tr.setMeta(_main.metricsKey, { shouldPersistActiveSession: shouldPersistActiveSession }); } if (!pluginState || pluginState.intentToStartEditTime) { return tr; } tr.setMeta(_main.metricsKey, { intentToStartEditTime: performance.now(), shouldStartTimer: shouldStartTimer, newSelection: newSelection, shouldPersistActiveSession: shouldPersistActiveSession }); return tr; }; } }, getSharedState: function getSharedState(editorState) { if (!editorState) { return _main.initialPluginState; } return _main.metricsKey.getState(editorState); } }; };