@atlaskit/editor-core 98.10.5 → 98.11.0

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.
Files changed (33) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/dist/es2015/commands/index.d.ts +1 -1
  3. package/dist/es2015/commands/index.js +2 -1
  4. package/dist/es2015/commands/index.js.map +1 -1
  5. package/dist/es2015/plugins/code-block/ide-ux/commands.js +40 -0
  6. package/dist/es2015/plugins/code-block/ide-ux/commands.js.map +1 -1
  7. package/dist/es2015/plugins/indentation/commands/index.js +57 -24
  8. package/dist/es2015/plugins/indentation/commands/index.js.map +1 -1
  9. package/dist/es2015/plugins/indentation/commands/utils.d.ts +30 -0
  10. package/dist/es2015/plugins/indentation/commands/utils.js +69 -0
  11. package/dist/es2015/plugins/indentation/commands/utils.js.map +1 -0
  12. package/dist/es2015/plugins/lists/commands.js +95 -41
  13. package/dist/es2015/plugins/lists/commands.js.map +1 -1
  14. package/dist/es2015/utils/getAttrsWithChangesRecorder.d.ts +23 -0
  15. package/dist/es2015/utils/getAttrsWithChangesRecorder.js +33 -0
  16. package/dist/es2015/utils/getAttrsWithChangesRecorder.js.map +1 -0
  17. package/dist/es5/commands/index.d.ts +1 -1
  18. package/dist/es5/commands/index.js +2 -1
  19. package/dist/es5/commands/index.js.map +1 -1
  20. package/dist/es5/plugins/code-block/ide-ux/commands.js +40 -0
  21. package/dist/es5/plugins/code-block/ide-ux/commands.js.map +1 -1
  22. package/dist/es5/plugins/indentation/commands/index.js +57 -24
  23. package/dist/es5/plugins/indentation/commands/index.js.map +1 -1
  24. package/dist/es5/plugins/indentation/commands/utils.d.ts +30 -0
  25. package/dist/es5/plugins/indentation/commands/utils.js +74 -0
  26. package/dist/es5/plugins/indentation/commands/utils.js.map +1 -0
  27. package/dist/es5/plugins/lists/commands.js +93 -39
  28. package/dist/es5/plugins/lists/commands.js.map +1 -1
  29. package/dist/es5/utils/getAttrsWithChangesRecorder.d.ts +23 -0
  30. package/dist/es5/utils/getAttrsWithChangesRecorder.js +36 -0
  31. package/dist/es5/utils/getAttrsWithChangesRecorder.js.map +1 -0
  32. package/dist/package.json +1 -1
  33. package/package.json +1 -1
@@ -0,0 +1,23 @@
1
+ import { Node } from 'prosemirror-model';
2
+ export interface GetAttrsChange<T, V> {
3
+ node: Node;
4
+ prevAttrs?: T;
5
+ newAttrs: T | false | undefined;
6
+ options: V;
7
+ }
8
+ export declare type GetAttrsWithChangesRecorder<T, V> = {
9
+ getAttrs(prevAttrs?: T | undefined, node?: Node): T | false | undefined;
10
+ getAndResetAttrsChanges(): GetAttrsChange<T, V>[];
11
+ };
12
+ /**
13
+ * Create a new getAttrs handler who will wrap the original function,
14
+ * and store the changes internally to be used for other
15
+ * tools like Analytics later in the code.
16
+ *
17
+ * @param getAttrs - Function who gets the new attributes
18
+ * @return object
19
+ * @property handler - New handler to get indentation attributes (It wraps the original)
20
+ * @property getChanges - Return all the stored changes.
21
+ * @property clear - Clear the changes
22
+ */
23
+ export default function getAttrsWithChangesRecorder<T, V>(getAttrs: (prevAttrs?: T, node?: Node) => T | false | undefined, options: V): GetAttrsWithChangesRecorder<T, V>;
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Create a new getAttrs handler who will wrap the original function,
3
+ * and store the changes internally to be used for other
4
+ * tools like Analytics later in the code.
5
+ *
6
+ * @param getAttrs - Function who gets the new attributes
7
+ * @return object
8
+ * @property handler - New handler to get indentation attributes (It wraps the original)
9
+ * @property getChanges - Return all the stored changes.
10
+ * @property clear - Clear the changes
11
+ */
12
+ export default function getAttrsWithChangesRecorder(getAttrs, options) {
13
+ var changes = [];
14
+ function getAttrsWithChangesRecorder(prevAttrs, node) {
15
+ var newAttrs = getAttrs(prevAttrs, node);
16
+ changes.push({
17
+ node: node,
18
+ prevAttrs: prevAttrs,
19
+ newAttrs: newAttrs,
20
+ options: options,
21
+ });
22
+ return newAttrs;
23
+ }
24
+ return {
25
+ getAttrs: getAttrsWithChangesRecorder,
26
+ getAndResetAttrsChanges: function () {
27
+ var oldChanges = changes;
28
+ changes = [];
29
+ return oldChanges;
30
+ },
31
+ };
32
+ }
33
+ //# sourceMappingURL=getAttrsWithChangesRecorder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAttrsWithChangesRecorder.js","sourceRoot":"","sources":["../../../src/utils/getAttrsWithChangesRecorder.ts"],"names":[],"mappings":"AAcA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,OAAO,UAAU,2BAA2B,CACjD,QAA+D,EAC/D,OAAU;IAEV,IAAI,OAAO,GAA2B,EAAE,CAAC;IAEzC,SAAS,2BAA2B,CAClC,SAAa,EACb,IAAW;QAEX,IAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAE3C,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,IAAK;YACX,SAAS,WAAA;YACT,QAAQ,UAAA;YACR,OAAO,SAAA;SACR,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,2BAA2B;QACrC,uBAAuB;YACrB,IAAM,UAAU,GAAG,OAAO,CAAC;YAC3B,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,UAAU,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -20,4 +20,4 @@ export declare const changeImageAlignment: (align: any) => Command;
20
20
  * return `undefined for no-op.
21
21
  * return an `object` to update the mark.
22
22
  */
23
- export declare const toggleBlockMark: <T = object>(markType: MarkType<any>, getAttrs: (prevAttrs?: T | undefined) => false | T | undefined, allowedBlocks?: NodeType<any>[] | ((schema: Schema<any, any>, node: PMNode<any>, parent: PMNode<any>) => boolean) | undefined) => Command;
23
+ export declare const toggleBlockMark: <T = object>(markType: MarkType<any>, getAttrs: (prevAttrs?: T | undefined, node?: PMNode<any> | undefined) => false | T | undefined, allowedBlocks?: NodeType<any>[] | ((schema: Schema<any, any>, node: PMNode<any>, parent: PMNode<any>) => boolean) | undefined) => Command;
@@ -185,7 +185,8 @@ exports.toggleBlockMark = function (markType, getAttrs, allowedBlocks) { return
185
185
  : allowedBlocks(state.schema, node, parent))) &&
186
186
  parent.type.allowsMarkType(markType)) {
187
187
  var oldMarks = node.marks.filter(function (mark) { return mark.type === markType; });
188
- var newAttrs = getAttrs(oldMarks.length ? oldMarks[0].attrs : undefined);
188
+ var prevAttrs = oldMarks.length ? oldMarks[0].attrs : undefined;
189
+ var newAttrs = getAttrs(prevAttrs, node);
189
190
  if (newAttrs !== undefined) {
190
191
  tr.setNodeMarkup(pos, node.type, node.attrs, node.marks
191
192
  .filter(function (mark) { return !markType.excludes(mark.type); })
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"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"}
@@ -3,14 +3,40 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  var prosemirror_state_1 = require("prosemirror-state");
4
4
  var line_handling_1 = require("./line-handling");
5
5
  var analytics_1 = require("../../../analytics");
6
+ var analytics_2 = require("../../analytics");
7
+ /**
8
+ * Return the current indentation level
9
+ * @param indentText - Text in the code block that represent an indentation
10
+ * @param indentSize - Size of the indentation token in a string
11
+ */
12
+ function getIndentLevel(indentText, indentSize) {
13
+ if (indentSize === 0 || indentText.length === 0) {
14
+ return 0;
15
+ }
16
+ return indentText.length / indentSize;
17
+ }
6
18
  function indent(state, dispatch) {
7
19
  var _a = line_handling_1.getLinesFromSelection(state), text = _a.text, start = _a.start;
8
20
  var tr = state.tr, selection = state.selection;
9
21
  line_handling_1.forEachLine(text, function (line, offset) {
10
22
  var _a = line_handling_1.getLineInfo(line), indentText = _a.indentText, indentToken = _a.indentToken;
23
+ var indentLevel = getIndentLevel(indentText, indentToken.size);
11
24
  var indentToAdd = indentToken.token.repeat(indentToken.size - (indentText.length % indentToken.size) ||
12
25
  indentToken.size);
13
26
  tr.insertText(indentToAdd, tr.mapping.map(start + offset, -1));
27
+ analytics_2.addAnalytics(tr, {
28
+ action: "formatted" /* FORMATTED */,
29
+ actionSubject: "text" /* TEXT */,
30
+ actionSubjectId: "indentation" /* FORMAT_INDENT */,
31
+ eventType: "track" /* TRACK */,
32
+ attributes: {
33
+ inputMethod: "keyboard" /* KEYBOARD */,
34
+ previousIndentationLevel: indentLevel,
35
+ newIndentLevel: indentLevel + 1,
36
+ direction: "indent" /* INDENT */,
37
+ indentType: "codeBlock" /* CODE_BLOCK */,
38
+ },
39
+ });
14
40
  if (!selection.empty) {
15
41
  tr.setSelection(prosemirror_state_1.TextSelection.create(tr.doc, tr.mapping.map(selection.from, -1), tr.selection.to));
16
42
  }
@@ -26,8 +52,22 @@ function outdent(state, dispatch) {
26
52
  line_handling_1.forEachLine(text, function (line, offset) {
27
53
  var _a = line_handling_1.getLineInfo(line), indentText = _a.indentText, indentToken = _a.indentToken;
28
54
  if (indentText) {
55
+ var indentLevel = getIndentLevel(indentText, indentToken.size);
29
56
  var unindentLength = indentText.length % indentToken.size || indentToken.size;
30
57
  tr.delete(tr.mapping.map(start + offset), tr.mapping.map(start + offset + unindentLength));
58
+ analytics_2.addAnalytics(tr, {
59
+ action: "formatted" /* FORMATTED */,
60
+ actionSubject: "text" /* TEXT */,
61
+ actionSubjectId: "indentation" /* FORMAT_INDENT */,
62
+ eventType: "track" /* TRACK */,
63
+ attributes: {
64
+ inputMethod: "keyboard" /* KEYBOARD */,
65
+ previousIndentationLevel: indentLevel,
66
+ newIndentLevel: indentLevel - 1,
67
+ direction: "outdent" /* OUTDENT */,
68
+ indentType: "codeBlock" /* CODE_BLOCK */,
69
+ },
70
+ });
31
71
  }
32
72
  });
33
73
  dispatch(tr);
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../../../src/plugins/code-block/ide-ux/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../../../src/plugins/code-block/ide-ux/commands.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  var commands_1 = require("../../../commands");
4
+ var utils_1 = require("./utils");
5
+ var getAttrsWithChangesRecorder_1 = require("../../../utils/getAttrsWithChangesRecorder");
6
+ var MAX_INDENTATION_LEVEL = 6;
4
7
  var isIndentationAllowed = function (schema, node, parent) {
5
8
  var _a = schema.nodes, paragraph = _a.paragraph, heading = _a.heading, alignment = schema.marks.alignment;
6
9
  if ([paragraph, heading].indexOf(node.type) > -1) {
@@ -12,32 +15,62 @@ var isIndentationAllowed = function (schema, node, parent) {
12
15
  }
13
16
  return false;
14
17
  };
15
- exports.indent = function (state, dispatch) {
16
- var indentation = state.schema.marks.indentation;
17
- return commands_1.toggleBlockMark(indentation, function (oldMark) {
18
- // No mark - add a mark with level 1
19
- return !oldMark
20
- ? { level: 1 }
21
- : // Level is at 6 or higher - do nothing
22
- oldMark.level >= 6
23
- ? undefined
24
- : // For other cases - increase level by 1
25
- { level: oldMark.level + 1 };
26
- }, isIndentationAllowed)(state, dispatch);
18
+ /**
19
+ * Create new indentation command (Either indent or outdent depend of getArgsFn)
20
+ * @param getNewIndentationAttrs Function to handle new indentation level
21
+ */
22
+ function createIndentationCommand(getNewIndentationAttrs) {
23
+ return function (state, dispatch) {
24
+ var indentation = state.schema.marks.indentation;
25
+ return commands_1.toggleBlockMark(indentation, getNewIndentationAttrs, isIndentationAllowed)(state, dispatch);
26
+ };
27
+ }
28
+ function createIndentationCommandWithAnalytics(getNewIndentationAttrs, direction) {
29
+ // Create a new getAttrs function to record the changes
30
+ var _a = getAttrsWithChangesRecorder_1.default(getNewIndentationAttrs, { direction: direction }), getAttrs = _a.getAttrs, getAndResetAttrsChanges = _a.getAndResetAttrsChanges;
31
+ // Use new getAttrs wrapper
32
+ var indentationCommand = createIndentationCommand(getAttrs);
33
+ // Return a new command where we change dispatch for our analytics dispatch
34
+ return function (state, dispatch) {
35
+ return indentationCommand(state, utils_1.createAnalyticsDispatch(getAndResetAttrsChanges, dispatch));
36
+ };
37
+ }
38
+ /**
39
+ * Get new level for outdent
40
+ * @param oldAttr Old attributes for the mark, undefined if the mark doesn't exit
41
+ * @returns - undefined; No change required
42
+ * - false; Remove the mark
43
+ * - object; Update attributes
44
+ */
45
+ var getIndentAttrs = function (oldAttr) {
46
+ if (!oldAttr) {
47
+ return { level: 1 }; // No mark exist, create a new one with level 1
48
+ }
49
+ var level = oldAttr.level;
50
+ if (level >= MAX_INDENTATION_LEVEL) {
51
+ return undefined; // Max indentation level reached, do nothing.
52
+ }
53
+ return { level: level + 1 }; // Otherwise, increase the level by one
27
54
  };
28
- exports.outdent = function (state, dispatch) {
29
- var indentation = state.schema.marks.indentation;
30
- return commands_1.toggleBlockMark(indentation, function (oldMark) {
31
- // No mark - do nothing
32
- return !oldMark
33
- ? undefined
34
- : // Level is at 1 or lower - remove the mark
35
- oldMark.level <= 1
36
- ? false
37
- : // For other cases - decrease level by 1
38
- { level: oldMark.level - 1 };
39
- }, isIndentationAllowed)(state, dispatch);
55
+ exports.indent = createIndentationCommandWithAnalytics(getIndentAttrs, "indent" /* INDENT */);
56
+ /**
57
+ * Get new level for outdent
58
+ * @param oldAttr Old attributes for the mark, undefined if the mark doesn't exit
59
+ * @returns - undefined; No change required
60
+ * - false; Remove the mark
61
+ * - object; Update attributes
62
+ */
63
+ var getOutdentAttrs = function (oldAttr) {
64
+ if (!oldAttr) {
65
+ return undefined; // Do nothing;
66
+ }
67
+ var level = oldAttr.level;
68
+ if (level <= 1) {
69
+ return false; // Remove the mark
70
+ }
71
+ return { level: level - 1 }; // Decrease the level on other cases
40
72
  };
73
+ exports.outdent = createIndentationCommandWithAnalytics(getOutdentAttrs, "outdent" /* OUTDENT */);
41
74
  exports.removeIndentation = function (state, dispatch) {
42
75
  return commands_1.toggleBlockMark(state.schema.marks.indentation, function () { return false; })(state, dispatch);
43
76
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/plugins/indentation/commands/index.ts"],"names":[],"mappings":";;AAEA,8CAAoD;AAGpD,IAAM,oBAAoB,GAAG,UAAC,MAAc,EAAE,IAAY,EAAE,MAAc;IAEtE,IAAA,iBAA6B,EAApB,wBAAS,EAAE,oBAAO,EAClB,kCAAS,CACT;IAEX,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;QAChD,IAAI,SAAS,EAAE;YACb,IAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CACpC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,IAAI,KAAK,SAAS,EAAvB,CAAuB,CAChC,CAAC,CAAC,CAAC,CAAC;YACL,OAAO,CAAC,YAAY,CAAC;SACtB;QACD,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEW,QAAA,MAAM,GAAY,UAAC,KAAK,EAAE,QAAQ;IACrC,IAAA,4CAAW,CAAwB;IAE3C,OAAO,0BAAe,CACpB,WAAW,EACX,UAAA,OAAO;QACL,oCAAoC;QACpC,OAAA,CAAC,OAAO;YACN,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;YACd,CAAC,CAAC,uCAAuC;gBACzC,OAAO,CAAC,KAAK,IAAI,CAAC;oBAClB,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,wCAAwC;wBACxC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE;IANhC,CAMgC,EAClC,oBAAoB,CACrB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACrB,CAAC,CAAC;AAEW,QAAA,OAAO,GAAY,UAAC,KAAK,EAAE,QAAQ;IACtC,IAAA,4CAAW,CAAwB;IAC3C,OAAO,0BAAe,CACpB,WAAW,EACX,UAAA,OAAO;QACL,uBAAuB;QACvB,OAAA,CAAC,OAAO;YACN,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,2CAA2C;gBAC7C,OAAO,CAAC,KAAK,IAAI,CAAC;oBAClB,CAAC,CAAC,KAAK;oBACP,CAAC,CAAC,wCAAwC;wBACxC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE;IANhC,CAMgC,EAClC,oBAAoB,CACrB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACrB,CAAC,CAAC;AAEW,QAAA,iBAAiB,GAAY,UAAC,KAAK,EAAE,QAAQ;IACxD,OAAA,0BAAe,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC;AAA7E,CAA6E,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/plugins/indentation/commands/index.ts"],"names":[],"mappings":";;AAEA,8CAAoD;AAEpD,iCAAkD;AAElD,0FAAqF;AAErF,IAAM,qBAAqB,GAAG,CAAC,CAAC;AAEhC,IAAM,oBAAoB,GAAG,UAAC,MAAc,EAAE,IAAY,EAAE,MAAc;IAEtE,IAAA,iBAA6B,EAApB,wBAAS,EAAE,oBAAO,EAClB,kCAAS,CACT;IAEX,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;QAChD,IAAI,SAAS,EAAE;YACb,IAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CACpC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,IAAI,KAAK,SAAS,EAAvB,CAAuB,CAChC,CAAC,CAAC,CAAC,CAAC;YACL,OAAO,CAAC,YAAY,CAAC;SACtB;QACD,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF;;;GAGG;AACH,SAAS,wBAAwB,CAC/B,sBAGkD;IAElD,OAAO,UAAC,KAAK,EAAE,QAAQ;QACb,IAAA,4CAAW,CAAwB;QAE3C,OAAO,0BAAe,CACpB,WAAW,EACX,sBAAsB,EACtB,oBAAoB,CACrB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,qCAAqC,CAC5C,sBAGkD,EAClD,SAAqB;IAErB,uDAAuD;IACjD,IAAA,4FAGL,EAHO,sBAAQ,EAAE,oDAGjB,CAAC;IAEF,2BAA2B;IAC3B,IAAM,kBAAkB,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAE9D,2EAA2E;IAC3E,OAAO,UAAC,KAAK,EAAE,QAAQ;QACrB,OAAO,kBAAkB,CACvB,KAAK,EACL,+BAAuB,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAC3D,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,IAAM,cAAc,GAAG,UACrB,OAAmC;IAEnC,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,+CAA+C;KACrE;IAEO,IAAA,qBAAK,CAAa;IAC1B,IAAI,KAAK,IAAI,qBAAqB,EAAE;QAClC,OAAO,SAAS,CAAC,CAAC,6CAA6C;KAChE;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,uCAAuC;AACtE,CAAC,CAAC;AAEW,QAAA,MAAM,GAAY,qCAAqC,CAClE,cAAc,wBAEf,CAAC;AAEF;;;;;;GAMG;AACH,IAAM,eAAe,GAAG,UACtB,OAAmC;IAEnC,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,SAAS,CAAC,CAAC,cAAc;KACjC;IAEO,IAAA,qBAAK,CAAa;IAC1B,IAAI,KAAK,IAAI,CAAC,EAAE;QACd,OAAO,KAAK,CAAC,CAAC,kBAAkB;KACjC;IAED,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,oCAAoC;AACnE,CAAC,CAAC;AAEW,QAAA,OAAO,GAAY,qCAAqC,CACnE,eAAe,0BAEhB,CAAC;AAEW,QAAA,iBAAiB,GAAY,UAAC,KAAK,EAAE,QAAQ;IACxD,OAAA,0BAAe,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC;AAA7E,CAA6E,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { IndentationMarkAttributes } from '../../../../../adf-schema';
2
+ import { INDENT_DIR } from '../../analytics';
3
+ import { Transaction } from 'prosemirror-state';
4
+ import { GetAttrsChange } from '../../../utils/getAttrsWithChangesRecorder';
5
+ declare type PrevAttributes = IndentationMarkAttributes | undefined;
6
+ declare type NewAttributes = IndentationMarkAttributes | undefined | false;
7
+ export declare type IndentationChangesOptions = {
8
+ direction: INDENT_DIR;
9
+ };
10
+ /**
11
+ * Get the current indentation level given prev and new attributes
12
+ * @param prevAttrs - Previous attributes from indentation
13
+ * @param newAttrs - New attributes from indentation
14
+ */
15
+ export declare function getNewIndentLevel(prevAttrs: PrevAttributes, newAttrs: NewAttributes): number;
16
+ /**
17
+ * Get the previous indentation level prev attributes
18
+ * @param prevAttrs - Previous attributes from indentation
19
+ */
20
+ export declare function getPrevIndentLevel(prevAttrs: PrevAttributes): number;
21
+ /**
22
+ * Create a new dispatch function who add analytics events given a list of attributes changes
23
+ *
24
+ * @export
25
+ * @param {*} getAttrsChanges
26
+ * @param dispatch
27
+ * @returns
28
+ */
29
+ export declare function createAnalyticsDispatch(getAttrsChanges: () => GetAttrsChange<IndentationMarkAttributes, IndentationChangesOptions>[], dispatch?: (tr: Transaction) => void): (tr: Transaction) => void;
30
+ export {};
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var analytics_1 = require("../../analytics");
4
+ var indentTypes = {
5
+ paragraph: "paragraph" /* PARAGRAPH */,
6
+ heading: "heading" /* HEADING */,
7
+ };
8
+ /**
9
+ * Get the current indentation level given prev and new attributes
10
+ * @param prevAttrs - Previous attributes from indentation
11
+ * @param newAttrs - New attributes from indentation
12
+ */
13
+ function getNewIndentLevel(prevAttrs, newAttrs) {
14
+ if (newAttrs === undefined) {
15
+ return prevAttrs.level;
16
+ }
17
+ else if (newAttrs === false) {
18
+ return 0;
19
+ }
20
+ return newAttrs.level;
21
+ }
22
+ exports.getNewIndentLevel = getNewIndentLevel;
23
+ /**
24
+ * Get the previous indentation level prev attributes
25
+ * @param prevAttrs - Previous attributes from indentation
26
+ */
27
+ function getPrevIndentLevel(prevAttrs) {
28
+ if (prevAttrs === undefined) {
29
+ return 0;
30
+ }
31
+ return prevAttrs.level;
32
+ }
33
+ exports.getPrevIndentLevel = getPrevIndentLevel;
34
+ /**
35
+ * Create a new dispatch function who add analytics events given a list of attributes changes
36
+ *
37
+ * @export
38
+ * @param {*} getAttrsChanges
39
+ * @param dispatch
40
+ * @returns
41
+ */
42
+ function createAnalyticsDispatch(getAttrsChanges, dispatch) {
43
+ return function (tr) {
44
+ var currentTr = tr;
45
+ var changes = getAttrsChanges(); // Get all attributes changes
46
+ // Add analytics event for each change stored.
47
+ changes.forEach(function (_a) {
48
+ var node = _a.node, prevAttrs = _a.prevAttrs, newAttrs = _a.newAttrs, direction = _a.options.direction;
49
+ var indentType = indentTypes[node.type.name];
50
+ if (!indentType) {
51
+ return; // If no valid indent type continue
52
+ }
53
+ currentTr = analytics_1.addAnalytics(currentTr, {
54
+ action: "formatted" /* FORMATTED */,
55
+ actionSubject: "text" /* TEXT */,
56
+ actionSubjectId: "indentation" /* FORMAT_INDENT */,
57
+ eventType: "track" /* TRACK */,
58
+ attributes: {
59
+ inputMethod: "keyboard" /* KEYBOARD */,
60
+ previousIndentationLevel: getPrevIndentLevel(prevAttrs),
61
+ newIndentLevel: getNewIndentLevel(prevAttrs, newAttrs),
62
+ direction: direction,
63
+ indentType: indentType,
64
+ },
65
+ });
66
+ });
67
+ // Dispatch analytics if exist
68
+ if (dispatch) {
69
+ dispatch(tr);
70
+ }
71
+ };
72
+ }
73
+ exports.createAnalyticsDispatch = createAnalyticsDispatch;
74
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/plugins/indentation/commands/utils.ts"],"names":[],"mappings":";;AACA,6CASyB;AAWzB,IAAM,WAAW,GAAG;IAClB,SAAS,6BAAuB;IAChC,OAAO,yBAAqB;CAC7B,CAAC;AAEF;;;;GAIG;AACH,SAAgB,iBAAiB,CAC/B,SAAyB,EACzB,QAAuB;IAEvB,IAAI,QAAQ,KAAK,SAAS,EAAE;QAC1B,OAAO,SAAU,CAAC,KAAK,CAAC;KACzB;SAAM,IAAI,QAAQ,KAAK,KAAK,EAAE;QAC7B,OAAO,CAAC,CAAC;KACV;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC;AACxB,CAAC;AAVD,8CAUC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,SAAyB;IAC1D,IAAI,SAAS,KAAK,SAAS,EAAE;QAC3B,OAAO,CAAC,CAAC;KACV;IACD,OAAO,SAAS,CAAC,KAAK,CAAC;AACzB,CAAC;AALD,gDAKC;AAED;;;;;;;GAOG;AACH,SAAgB,uBAAuB,CACrC,eAGG,EACH,QAAoC;IAEpC,OAAO,UAAC,EAAe;QACrB,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAM,OAAO,GAAG,eAAe,EAAE,CAAC,CAAC,6BAA6B;QAEhE,8CAA8C;QAC9C,OAAO,CAAC,OAAO,CAAC,UAAC,EAAqD;gBAAnD,cAAI,EAAE,wBAAS,EAAE,sBAAQ,EAAa,gCAAS;YAChE,IAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU,EAAE;gBACf,OAAO,CAAC,mCAAmC;aAC5C;YAED,SAAS,GAAG,wBAAY,CAAC,SAAS,EAAE;gBAClC,MAAM,6BAAkB;gBACxB,aAAa,mBAAqB;gBAClC,eAAe,mCAAiC;gBAChD,SAAS,qBAAkB;gBAC3B,UAAU,EAAE;oBACV,WAAW,2BAAuB;oBAClC,wBAAwB,EAAE,kBAAkB,CAAC,SAAS,CAAC;oBACvD,cAAc,EAAE,iBAAiB,CAAC,SAAS,EAAE,QAAQ,CAAC;oBACtD,SAAS,WAAA;oBACT,UAAU,YAAA;iBACX;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,8BAA8B;QAC9B,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,EAAE,CAAC,CAAC;SACd;IACH,CAAC,CAAC;AACJ,CAAC;AAtCD,0DAsCC"}
@@ -11,6 +11,7 @@ var commands_1 = require("../../utils/commands");
11
11
  var utils_1 = require("../../utils");
12
12
  var transforms_1 = require("./transforms");
13
13
  var gap_cursor_1 = require("../gap-cursor");
14
+ var analytics_1 = require("../analytics");
14
15
  var maxIndentation = 5;
15
16
  var deletePreviousEmptyListItem = function (state, dispatch) {
16
17
  var $from = state.selection.$from;
@@ -197,22 +198,17 @@ function splitListItem(itemType) {
197
198
  return true;
198
199
  };
199
200
  }
200
- function outdentList() {
201
- return function (state, dispatch) {
202
- var listItem = state.schema.nodes.listItem;
203
- var _a = state.selection, $from = _a.$from, $to = _a.$to;
204
- if (isInsideListItem(state)) {
205
- // if we're backspacing at the start of a list item, unindent it
206
- // take the the range of nodes we might be lifting
207
- // the predicate is for when you're backspacing a top level list item:
208
- // we don't want to go up past the doc node, otherwise the range
209
- // to clear will include everything
210
- var range = $from.blockRange($to, function (node) { return node.childCount > 0 && node.firstChild.type === listItem; });
211
- if (!range) {
212
- return false;
213
- }
214
- var tr_1;
215
- if (baseListCommand.liftListItem(listItem)(state, function (liftTr) { return (tr_1 = liftTr); })) {
201
+ /**
202
+ * Merge closest bullet list blocks into one
203
+ *
204
+ * @param {NodeType} listItem
205
+ * @param {NodeRange} range
206
+ * @returns
207
+ */
208
+ function mergeLists(listItem, range) {
209
+ return function (command) {
210
+ return function (state, dispatch) {
211
+ return command(state, function (tr) {
216
212
  /* we now need to handle the case that we lifted a sublist out,
217
213
  * and any listItems at the current level get shifted out to
218
214
  * their own new list; e.g.:
@@ -241,50 +237,108 @@ function outdentList() {
241
237
  */
242
238
  var $start = state.doc.resolve(range.start);
243
239
  var $end = state.doc.resolve(range.end);
244
- var $join = tr_1.doc.resolve(tr_1.mapping.map(range.end - 1));
240
+ var $join = tr.doc.resolve(tr.mapping.map(range.end - 1));
245
241
  if ($join.nodeBefore &&
246
242
  $join.nodeAfter &&
247
243
  $join.nodeBefore.type === $join.nodeAfter.type) {
248
244
  if ($end.nodeAfter &&
249
245
  $end.nodeAfter.type === listItem &&
250
246
  $end.parent.type === $start.parent.type) {
251
- tr_1.join($join.pos);
247
+ tr.join($join.pos);
252
248
  }
253
249
  }
254
250
  if (dispatch) {
255
- dispatch(tr_1.scrollIntoView());
251
+ dispatch(tr.scrollIntoView());
256
252
  }
257
- return true;
253
+ });
254
+ };
255
+ };
256
+ }
257
+ function outdentList() {
258
+ return function (state, dispatch) {
259
+ var listItem = state.schema.nodes.listItem;
260
+ var _a = state.selection, $from = _a.$from, $to = _a.$to;
261
+ if (isInsideListItem(state)) {
262
+ // if we're backspacing at the start of a list item, unindent it
263
+ // take the the range of nodes we might be lifting
264
+ // the predicate is for when you're backspacing a top level list item:
265
+ // we don't want to go up past the doc node, otherwise the range
266
+ // to clear will include everything
267
+ var range = $from.blockRange($to, function (node) { return node.childCount > 0 && node.firstChild.type === listItem; });
268
+ if (!range) {
269
+ return false;
258
270
  }
271
+ var initialIndentationLevel = exports.numberNestedLists(state.selection.$from, state.schema.nodes);
272
+ return utils_1.compose(analytics_1.withAnalytics({
273
+ action: "formatted" /* FORMATTED */,
274
+ actionSubject: "text" /* TEXT */,
275
+ actionSubjectId: "indentation" /* FORMAT_INDENT */,
276
+ eventType: "track" /* TRACK */,
277
+ attributes: {
278
+ inputMethod: "keyboard" /* KEYBOARD */,
279
+ previousIndentationLevel: initialIndentationLevel,
280
+ newIndentLevel: initialIndentationLevel - 1,
281
+ direction: "outdent" /* OUTDENT */,
282
+ indentType: "list" /* LIST */,
283
+ },
284
+ }), // 3. Send analytics event
285
+ mergeLists(listItem, range), // 2. Check if I need to merge nearest list
286
+ baseListCommand.liftListItem)(listItem)(state, dispatch);
259
287
  }
260
288
  return false;
261
289
  };
262
290
  }
263
291
  exports.outdentList = outdentList;
292
+ /**
293
+ * Check if we can sink the list.
294
+ *
295
+ * @param {number} initialIndentationLevel
296
+ * @param {EditorState} state
297
+ * @returns {boolean} - true if we can sink the list
298
+ * - false if we reach the max indentation level
299
+ */
300
+ function canSink(initialIndentationLevel, state) {
301
+ /*
302
+ - Keep going forward in document until indentation of the node is < than the initial
303
+ - If indentation is EVER > max indentation, return true and don't sink the list
304
+ */
305
+ var currentIndentationLevel;
306
+ var currentPos = state.tr.selection.$to.pos;
307
+ do {
308
+ var resolvedPos = state.doc.resolve(currentPos);
309
+ currentIndentationLevel = exports.numberNestedLists(resolvedPos, state.schema.nodes);
310
+ if (currentIndentationLevel > maxIndentation) {
311
+ // Cancel sink list.
312
+ // If current indentation less than the initial, it won't be
313
+ // larger than the max, and the loop will terminate at end of this iteration
314
+ return false;
315
+ }
316
+ currentPos++;
317
+ } while (currentIndentationLevel >= initialIndentationLevel);
318
+ return true;
319
+ }
264
320
  function indentList() {
265
321
  return function (state, dispatch) {
266
322
  var listItem = state.schema.nodes.listItem;
267
323
  if (isInsideListItem(state)) {
324
+ // Record initial list indentation
268
325
  var initialIndentationLevel = exports.numberNestedLists(state.selection.$from, state.schema.nodes);
269
- /*
270
- - Record initial list indentation
271
- - Keep going forward in document until indentation of the node is < than the initial
272
- - If indentation is EVER > max indentation, return true and don't sink the list
273
- */
274
- var currentIndentationLevel = void 0;
275
- var currentPos = state.tr.selection.$to.pos;
276
- do {
277
- var resolvedPos = state.doc.resolve(currentPos);
278
- currentIndentationLevel = exports.numberNestedLists(resolvedPos, state.schema.nodes);
279
- if (currentIndentationLevel > maxIndentation) {
280
- // Cancel sink list.
281
- // If current indentation less than the initial, it won't be
282
- // larger than the max, and the loop will terminate at end of this iteration
283
- return true;
284
- }
285
- currentPos++;
286
- } while (currentIndentationLevel >= initialIndentationLevel);
287
- baseListCommand.sinkListItem(listItem)(state, dispatch);
326
+ if (canSink(initialIndentationLevel, state)) {
327
+ // Analytics command wrapper should be here because we need to get indentation level
328
+ utils_1.compose(analytics_1.withAnalytics({
329
+ action: "formatted" /* FORMATTED */,
330
+ actionSubject: "text" /* TEXT */,
331
+ actionSubjectId: "indentation" /* FORMAT_INDENT */,
332
+ eventType: "track" /* TRACK */,
333
+ attributes: {
334
+ inputMethod: "keyboard" /* KEYBOARD */,
335
+ previousIndentationLevel: initialIndentationLevel,
336
+ newIndentLevel: initialIndentationLevel + 1,
337
+ direction: "indent" /* INDENT */,
338
+ indentType: "list" /* LIST */,
339
+ },
340
+ }), baseListCommand.sinkListItem)(listItem)(state, dispatch);
341
+ }
288
342
  return true;
289
343
  }
290
344
  return false;