UNPKG

@atlaskit/editor-plugin-card

Version:

Card plugin for @atlaskit/editor-core

169 lines (167 loc) 7.95 kB
import _defineProperty from "@babel/runtime/helpers/defineProperty"; import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties"; 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) { _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; } import { useEffect, useMemo } from 'react'; import { UIAnalyticsEvent } from '@atlaskit/analytics-next'; import { useDatasourceLifecycleAnalytics } from '@atlaskit/link-analytics'; import { EVENT, EVENT_SUBJECT } from '../analytics/types'; import { getMethod } from './common'; 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 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 = getMethod(metadata)) !== null && _getMethod !== void 0 ? _getMethod : ''; } else if (metadata.sourceEvent instanceof 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 */ export var DatasourceEventsBinding = function DatasourceEventsBinding(_ref) { var cardPluginEvents = _ref.cardPluginEvents; var _useDatasourceLifecyc = useDatasourceLifecycleAnalytics(), datasourceCreated = _useDatasourceLifecyc.datasourceCreated, datasourceUpdated = _useDatasourceLifecyc.datasourceUpdated, datasourceDeleted = _useDatasourceLifecyc.datasourceDeleted; var eventHandlers = useMemo(function () { return _defineProperty(_defineProperty(_defineProperty({}, EVENT.CREATED, function (_ref2) { var node = _ref2.node, nodeContext = _ref2.nodeContext, metadata = _objectWithoutProperties(_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 })); }), EVENT.UPDATED, function (_ref3) { var node = _ref3.node, nodeContext = _ref3.nodeContext, metadata = _objectWithoutProperties(_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 }); }), EVENT.DELETED, function (_ref4) { var node = _ref4.node, nodeContext = _ref4.nodeContext, metadata = _objectWithoutProperties(_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 */ useEffect(function () { var unsubscribe = cardPluginEvents.subscribe(function (_ref6) { var event = _ref6.event, subject = _ref6.subject, data = _ref6.data; if (subject === EVENT_SUBJECT.DATASOURCE) { eventHandlers[event](data); } }); return function () { return unsubscribe(); }; }, [eventHandlers, cardPluginEvents]); return null; };