@atlaskit/editor-plugin-block-controls
Version:
Block controls plugin for @atlaskit/editor-core
67 lines (64 loc) • 3.23 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getMultiSelectAnalyticsAttributes = exports.fireInsertLayoutAnalytics = exports.attachMoveNodeAnalytics = void 0;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _analytics = require("@atlaskit/editor-common/analytics");
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
var attachMoveNodeAnalytics = exports.attachMoveNodeAnalytics = function attachMoveNodeAnalytics(tr, inputMethod, fromDepth, fromNodeType, toDepth, toNodeType, isSameParent, api, fromNodeTypes, hasSelectedMultipleNodes) {
var _api$analytics;
return api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 || (_api$analytics = _api$analytics.actions) === null || _api$analytics === void 0 ? void 0 : _api$analytics.attachAnalyticsEvent({
eventType: _analytics.EVENT_TYPE.TRACK,
action: _analytics.ACTION.MOVED,
actionSubject: _analytics.ACTION_SUBJECT.ELEMENT,
actionSubjectId: _analytics.ACTION_SUBJECT_ID.ELEMENT_DRAG_HANDLE,
attributes: {
nodeDepth: fromDepth,
nodeType: fromNodeType,
nodeTypes: fromNodeTypes,
hasSelectedMultipleNodes: hasSelectedMultipleNodes,
destinationNodeDepth: toDepth,
destinationNodeType: toNodeType,
isSameParent: isSameParent,
inputMethod: inputMethod
}
})(tr);
};
var fireInsertLayoutAnalytics = exports.fireInsertLayoutAnalytics = function fireInsertLayoutAnalytics(tr, api, nodeTypes, hasSelectedMultipleNodes, columnCount) {
var _api$analytics2;
api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 || (_api$analytics2 = _api$analytics2.actions) === null || _api$analytics2 === void 0 || _api$analytics2.attachAnalyticsEvent({
action: _analytics.ACTION.INSERTED,
actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT,
actionSubjectId: _analytics.ACTION_SUBJECT_ID.LAYOUT,
attributes: {
inputMethod: _analytics.INPUT_METHOD.DRAG_AND_DROP,
nodeTypes: nodeTypes,
hasSelectedMultipleNodes: hasSelectedMultipleNodes,
columnCount: columnCount
},
eventType: _analytics.EVENT_TYPE.TRACK
})(tr);
};
/**
* Given a range, return distinctive types of node and whether there are multiple nodes in the range
*/
var getMultiSelectAnalyticsAttributes = exports.getMultiSelectAnalyticsAttributes = function getMultiSelectAnalyticsAttributes(tr, anchor, head) {
var nodeTypes = [];
var from = Math.min(anchor, head);
var to = Math.max(anchor, head);
tr.doc.nodesBetween(from, to, function (node, pos) {
if (pos < from) {
// ignore parent node
return true;
}
nodeTypes.push(node.type.name);
// only care about the top level (relatively in the range) nodes
return false;
});
return {
nodeTypes: (0, _platformFeatureFlags.fg)('platform_editor_track_node_types') ? (0, _toConsumableArray2.default)(new Set(nodeTypes)).sort().join(',') : undefined,
hasSelectedMultipleNodes: nodeTypes.length > 1
};
};