@modusoperandi/licit 1.4.6 → 1.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LinkMarkSpec.js CHANGED
@@ -1,3 +1,9 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ 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; }
3
+ 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; }
4
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
6
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
1
7
  var LinkMarkSpec = {
2
8
  attrs: {
3
9
  href: {
@@ -33,8 +39,10 @@ var LinkMarkSpec = {
33
39
  }
34
40
  }],
35
41
  toDOM: function toDOM(node) {
36
- node.attrs.onclick = 'return false';
37
- return ['a', node.attrs, 0];
42
+ var attrs = _objectSpread(_objectSpread({}, node.attrs), {}, {
43
+ onclick: 'return false'
44
+ });
45
+ return ['a', attrs, 0];
38
46
  }
39
47
  };
40
48
  export default LinkMarkSpec;
@@ -30,8 +30,11 @@ const LinkMarkSpec: MarkSpec = {
30
30
  },
31
31
  ],
32
32
  toDOM(node) {
33
- node.attrs.onclick = 'return false';
34
- return ['a', node.attrs, 0];
33
+ const attrs = {
34
+ ...node.attrs,
35
+ onclick: 'return false',
36
+ };
37
+ return ['a', attrs, 0];
35
38
  },
36
39
  };
37
40
 
@@ -44,6 +44,9 @@ var SPEC = {
44
44
  return false;
45
45
  }
46
46
  node = view.state.doc.nodeAt(pos);
47
+ if (!node) {
48
+ return false;
49
+ }
47
50
  var linkMark = (_node$marks = node.marks) === null || _node$marks === void 0 ? void 0 : _node$marks.find(function (m) {
48
51
  var _m$type;
49
52
  return (m === null || m === void 0 || (_m$type = m.type) === null || _m$type === void 0 ? void 0 : _m$type.name) === MARK_LINK;
@@ -33,6 +33,9 @@ const SPEC = {
33
33
  }
34
34
 
35
35
  node = view.state.doc.nodeAt(pos);
36
+ if (!node) {
37
+ return false;
38
+ }
36
39
  const linkMark = node.marks?.find((m) => m?.type?.name === MARK_LINK);
37
40
  if (!linkMark) {
38
41
  return false;
@@ -48,6 +48,9 @@ function insertTabSpace(state, tr, schema) {
48
48
  return tr;
49
49
  }
50
50
  var textNode = schema.text(HAIR_SPACE_CHAR);
51
+ if (paragraphHasSpacerMark(found.node)) {
52
+ return tr;
53
+ }
51
54
  tr = tr.insert(to, Fragment.from(textNode));
52
55
  var attrs = {
53
56
  size: SPACER_SIZE_TAB
@@ -57,6 +60,21 @@ function insertTabSpace(state, tr, schema) {
57
60
  tr = tr.setSelection(TextSelection.create(tr.doc, to + 1, to + 1));
58
61
  return tr;
59
62
  }
63
+ // Check if a paragraph node has a hanging indent mark applied to any of its text nodes
64
+ // if yes, return true otherwise false, to avoid strange behavior with multiple hanging indent marks
65
+ function paragraphHasSpacerMark(node) {
66
+ var found = false;
67
+ node.descendants(function (child) {
68
+ if (child.isText && child.marks.some(function (m) {
69
+ return m.type.name === 'mark-hanging-indent';
70
+ })) {
71
+ found = true;
72
+ return false; // stop traversal
73
+ }
74
+ return true;
75
+ });
76
+ return found;
77
+ }
60
78
  var TextInsertTabSpaceCommand = /*#__PURE__*/function (_UICommand) {
61
79
  function TextInsertTabSpaceCommand() {
62
80
  var _this;
@@ -47,6 +47,9 @@ function insertTabSpace(
47
47
  }
48
48
 
49
49
  const textNode = schema.text(HAIR_SPACE_CHAR);
50
+ if (paragraphHasSpacerMark(found.node)) {
51
+ return tr;
52
+ }
50
53
  tr = tr.insert(to, Fragment.from(textNode));
51
54
  const attrs = {
52
55
  size: SPACER_SIZE_TAB,
@@ -60,6 +63,19 @@ function insertTabSpace(
60
63
 
61
64
  return tr;
62
65
  }
66
+ // Check if a paragraph node has a hanging indent mark applied to any of its text nodes
67
+ // if yes, return true otherwise false, to avoid strange behavior with multiple hanging indent marks
68
+ function paragraphHasSpacerMark(node) {
69
+ let found = false;
70
+ node.descendants((child) => {
71
+ if (child.isText && child.marks.some(m => m.type.name === 'mark-hanging-indent')) {
72
+ found = true;
73
+ return false; // stop traversal
74
+ }
75
+ return true;
76
+ });
77
+ return found;
78
+ }
63
79
 
64
80
  class TextInsertTabSpaceCommand extends UICommand {
65
81
  execute = (