UNPKG

@atlaskit/editor-plugin-card

Version:

Card plugin for @atlaskit/editor-core

176 lines (173 loc) 8.4 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.DatasourceEventsBinding = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _react = require("react"); var _analyticsNext = require("@atlaskit/analytics-next"); var _linkAnalytics = require("@atlaskit/link-analytics"); var _types = require("../analytics/types"); var _common = require("./common"); var _excluded = ["node", "nodeContext"], _excluded2 = ["node", "nodeContext"], _excluded3 = ["node", "nodeContext"]; 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; } 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; } function getDatasourceDisplay(datasourceAttrs) { var _datasourceAttrs$data; return (_datasourceAttrs$data = datasourceAttrs.datasource.views[0]) === null || _datasourceAttrs$data === void 0 ? void 0 : _datasourceAttrs$data.type; } function getDisplayedColumnCount(datasourceAttrs) { var _datasourceAttrs$data2, _datasourceAttrs$data3; return (_datasourceAttrs$data2 = (_datasourceAttrs$data3 = datasourceAttrs.datasource.views[0]) === null || _datasourceAttrs$data3 === void 0 || (_datasourceAttrs$data3 = _datasourceAttrs$data3.properties) === null || _datasourceAttrs$data3 === void 0 || (_datasourceAttrs$data3 = _datasourceAttrs$data3.columns) === null || _datasourceAttrs$data3 === void 0 ? void 0 : _datasourceAttrs$data3.length) !== null && _datasourceAttrs$data2 !== void 0 ? _datasourceAttrs$data2 : undefined; } function getSearchMethod(creationMethod, metadata) { if (creationMethod === 'editor_paste' || creationMethod === 'editor_type') { return ''; } var sourceEvent = metadata.sourceEvent; if (sourceEvent instanceof _analyticsNext.UIAnalyticsEvent) { var _event$payload$attrib; var event = sourceEvent; return (_event$payload$attrib = event.payload.attributes) === null || _event$payload$attrib === void 0 ? void 0 : _event$payload$attrib.searchMethod; } return 'unknown'; } function getAnalyticAttributesFromNode(datasourceAttrs, metadata) { var url = datasourceAttrs.url, _datasourceAttrs$data4 = datasourceAttrs.datasource, datasourceId = _datasourceAttrs$data4.id, parameters = _datasourceAttrs$data4.parameters; var display = getDatasourceDisplay(datasourceAttrs); var inputMethod = ''; var actions = []; if (metadata.inputMethod) { var _getMethod; inputMethod = (_getMethod = (0, _common.getMethod)(metadata)) !== null && _getMethod !== void 0 ? _getMethod : ''; } else if (metadata.sourceEvent instanceof _analyticsNext.UIAnalyticsEvent) { var _metadata$sourceEvent, _metadata$sourceEvent2; inputMethod = (_metadata$sourceEvent = metadata.sourceEvent.payload.attributes) === null || _metadata$sourceEvent === void 0 ? void 0 : _metadata$sourceEvent.inputMethod; actions = (_metadata$sourceEvent2 = metadata.sourceEvent.payload.attributes) === null || _metadata$sourceEvent2 === void 0 ? void 0 : _metadata$sourceEvent2.actions; } var displayedColumnCount = getDisplayedColumnCount(datasourceAttrs); var searchMethod = getSearchMethod(inputMethod, metadata); return { actions: actions, inputMethod: inputMethod, datasourceId: datasourceId, display: display, displayedColumnCount: displayedColumnCount, parameters: parameters, searchMethod: searchMethod, url: url }; } /** * Subscribes to the events occuring in the card * plugin and fires analytics events accordingly */ var DatasourceEventsBinding = exports.DatasourceEventsBinding = function DatasourceEventsBinding(_ref) { var cardPluginEvents = _ref.cardPluginEvents; var _useDatasourceLifecyc = (0, _linkAnalytics.useDatasourceLifecycleAnalytics)(), datasourceCreated = _useDatasourceLifecyc.datasourceCreated, datasourceUpdated = _useDatasourceLifecyc.datasourceUpdated, datasourceDeleted = _useDatasourceLifecyc.datasourceDeleted; var eventHandlers = (0, _react.useMemo)(function () { return (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, _types.EVENT.CREATED, function (_ref2) { var node = _ref2.node, nodeContext = _ref2.nodeContext, metadata = (0, _objectWithoutProperties2.default)(_ref2, _excluded); var attributes = getAnalyticAttributesFromNode(node.attrs, metadata); var actions = attributes.actions, inputMethod = attributes.inputMethod, datasourceId = attributes.datasourceId, display = attributes.display, displayedColumnCount = attributes.displayedColumnCount, parameters = attributes.parameters, searchMethod = attributes.searchMethod, url = attributes.url; datasourceCreated({ datasourceId: datasourceId, parameters: parameters, url: url }, null, _objectSpread(_objectSpread({ actions: actions, creationMethod: inputMethod, display: display }, typeof displayedColumnCount === 'number' ? { displayedColumnCount: displayedColumnCount } : {}), {}, { nodeContext: nodeContext, searchMethod: searchMethod })); }), _types.EVENT.UPDATED, function (_ref3) { var node = _ref3.node, nodeContext = _ref3.nodeContext, metadata = (0, _objectWithoutProperties2.default)(_ref3, _excluded2); var attributes = getAnalyticAttributesFromNode(node.attrs, metadata); var actions = attributes.actions, datasourceId = attributes.datasourceId, display = attributes.display, displayedColumnCount = attributes.displayedColumnCount, inputMethod = attributes.inputMethod, parameters = attributes.parameters, searchMethod = attributes.searchMethod, url = attributes.url; datasourceUpdated({ datasourceId: datasourceId, parameters: parameters, url: url }, null, { actions: actions, display: display, displayedColumnCount: displayedColumnCount, nodeContext: nodeContext, searchMethod: searchMethod, updateMethod: inputMethod }); }), _types.EVENT.DELETED, function (_ref4) { var node = _ref4.node, nodeContext = _ref4.nodeContext, metadata = (0, _objectWithoutProperties2.default)(_ref4, _excluded3); var attributes = getAnalyticAttributesFromNode(node.attrs, metadata); var datasourceId = attributes.datasourceId, display = attributes.display, displayedColumnCount = attributes.displayedColumnCount, inputMethod = attributes.inputMethod, parameters = attributes.parameters, searchMethod = attributes.searchMethod, url = attributes.url; datasourceDeleted({ datasourceId: datasourceId, parameters: parameters, url: url }, null, { deleteMethod: inputMethod, display: display, displayedColumnCount: displayedColumnCount, nodeContext: nodeContext, searchMethod: searchMethod }); }); }, [datasourceCreated, datasourceUpdated, datasourceDeleted]); /** * Subscribe to datasource events */ (0, _react.useEffect)(function () { var unsubscribe = cardPluginEvents.subscribe(function (_ref6) { var event = _ref6.event, subject = _ref6.subject, data = _ref6.data; if (subject === _types.EVENT_SUBJECT.DATASOURCE) { eventHandlers[event](data); } }); return function () { return unsubscribe(); }; }, [eventHandlers, cardPluginEvents]); return null; };