UNPKG

@atlaskit/adf-schema

Version:

Shared package that contains the ADF-schema (json) and ProseMirror node/mark specs

73 lines (72 loc) 3 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.toJSON = exports.mention = exports.USER_TYPES = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _utils = require("../../utils"); var _nodeTypes = require("../../next-schema/generated/nodeTypes"); 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; } var USER_TYPES = exports.USER_TYPES = /*#__PURE__*/function (USER_TYPES) { USER_TYPES["DEFAULT"] = "DEFAULT"; USER_TYPES["SPECIAL"] = "SPECIAL"; USER_TYPES["APP"] = "APP"; return USER_TYPES; }({}); /** * @name mention_node */ var mention = exports.mention = (0, _nodeTypes.mention)({ parseDOM: [{ tag: 'span[data-mention-id]', getAttrs: function getAttrs(domNode) { var dom = domNode; var attrs = { id: dom.getAttribute('data-mention-id') || mention.attrs.id.default, text: dom.textContent || mention.attrs.text.default, accessLevel: dom.getAttribute('data-access-level') || mention.attrs.accessLevel.default, localId: _utils.uuid.generate() }; var userType = dom.getAttribute('data-user-type'); if (USER_TYPES[userType]) { attrs.userType = userType; } return attrs; } }], toDOM: function toDOM(node) { var _node$attrs = node.attrs, id = _node$attrs.id, accessLevel = _node$attrs.accessLevel, text = _node$attrs.text, userType = _node$attrs.userType, localId = _node$attrs.localId; var attrs = { 'data-mention-id': id, 'data-access-level': accessLevel, contenteditable: 'false' }; if (localId) { attrs['data-local-id'] = localId; } if (userType) { attrs['data-user-type'] = userType; } return ['span', attrs, text]; } }); var isOptional = function isOptional(key) { return ['userType', 'localId'].indexOf(key) > -1; }; var toJSON = exports.toJSON = function toJSON(node) { return { attrs: Object.keys(node.attrs).reduce(function (obj, key) { if (isOptional(key) && !node.attrs[key]) { return obj; } return _objectSpread(_objectSpread({}, obj), {}, (0, _defineProperty2.default)({}, key, node.attrs[key])); }, {}) }; };