@atlaskit/editor-core 98.10.5 → 98.12.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 (35) hide show
  1. package/CHANGELOG.md +15 -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/document.js.map +1 -1
  15. package/dist/es2015/utils/getAttrsWithChangesRecorder.d.ts +23 -0
  16. package/dist/es2015/utils/getAttrsWithChangesRecorder.js +33 -0
  17. package/dist/es2015/utils/getAttrsWithChangesRecorder.js.map +1 -0
  18. package/dist/es5/commands/index.d.ts +1 -1
  19. package/dist/es5/commands/index.js +2 -1
  20. package/dist/es5/commands/index.js.map +1 -1
  21. package/dist/es5/plugins/code-block/ide-ux/commands.js +40 -0
  22. package/dist/es5/plugins/code-block/ide-ux/commands.js.map +1 -1
  23. package/dist/es5/plugins/indentation/commands/index.js +57 -24
  24. package/dist/es5/plugins/indentation/commands/index.js.map +1 -1
  25. package/dist/es5/plugins/indentation/commands/utils.d.ts +30 -0
  26. package/dist/es5/plugins/indentation/commands/utils.js +74 -0
  27. package/dist/es5/plugins/indentation/commands/utils.js.map +1 -0
  28. package/dist/es5/plugins/lists/commands.js +93 -39
  29. package/dist/es5/plugins/lists/commands.js.map +1 -1
  30. package/dist/es5/utils/document.js.map +1 -1
  31. package/dist/es5/utils/getAttrsWithChangesRecorder.d.ts +23 -0
  32. package/dist/es5/utils/getAttrsWithChangesRecorder.js +36 -0
  33. package/dist/es5/utils/getAttrsWithChangesRecorder.js.map +1 -0
  34. package/dist/package.json +1 -1
  35. package/package.json +4 -4
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @atlaskit/editor-core
2
2
 
3
+ ## 98.12.0
4
+ - [minor] [4d8d759bf9](https://bitbucket.org/atlassian/atlaskit-mk-2/commits/4d8d759bf9):
5
+
6
+ - [ED-6255] Migrate ADFNode type to ADFEntity
7
+
8
+ ## 98.11.1
9
+ - [patch] [ea423a619f](https://bitbucket.org/atlassian/atlaskit-mk-2/commits/ea423a619f):
10
+
11
+ - Fixed the call to the /check endpoint
12
+
13
+ ## 98.11.0
14
+ - [minor] [448b9946cc](https://bitbucket.org/atlassian/atlaskit-mk-2/commits/448b9946cc):
15
+
16
+ - ED-6195 Add Analytics GAS V3 for identation
17
+
3
18
  ## 98.10.5
4
19
  - [patch] [36986d383b](https://bitbucket.org/atlassian/atlaskit-mk-2/commits/36986d383b):
5
20
 
@@ -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;
@@ -178,7 +178,8 @@ export var toggleBlockMark = function (markType, getAttrs, allowedBlocks) { retu
178
178
  : allowedBlocks(state.schema, node, parent))) &&
179
179
  parent.type.allowsMarkType(markType)) {
180
180
  var oldMarks = node.marks.filter(function (mark) { return mark.type === markType; });
181
- var newAttrs = getAttrs(oldMarks.length ? oldMarks[0].attrs : undefined);
181
+ var prevAttrs = oldMarks.length ? oldMarks[0].attrs : undefined;
182
+ var newAttrs = getAttrs(prevAttrs, node);
182
183
  if (newAttrs !== undefined) {
183
184
  tr.setNodeMarkup(pos, node.type, node.attrs, node.marks
184
185
  .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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"}
@@ -1,14 +1,40 @@
1
1
  import { TextSelection } from 'prosemirror-state';
2
2
  import { getLinesFromSelection, getLineInfo, forEachLine, getStartOfCurrentLine, } from './line-handling';
3
3
  import { analyticsService } from '../../../analytics';
4
+ import { addAnalytics, } from '../../analytics';
5
+ /**
6
+ * Return the current indentation level
7
+ * @param indentText - Text in the code block that represent an indentation
8
+ * @param indentSize - Size of the indentation token in a string
9
+ */
10
+ function getIndentLevel(indentText, indentSize) {
11
+ if (indentSize === 0 || indentText.length === 0) {
12
+ return 0;
13
+ }
14
+ return indentText.length / indentSize;
15
+ }
4
16
  export function indent(state, dispatch) {
5
17
  var _a = getLinesFromSelection(state), text = _a.text, start = _a.start;
6
18
  var tr = state.tr, selection = state.selection;
7
19
  forEachLine(text, function (line, offset) {
8
20
  var _a = getLineInfo(line), indentText = _a.indentText, indentToken = _a.indentToken;
21
+ var indentLevel = getIndentLevel(indentText, indentToken.size);
9
22
  var indentToAdd = indentToken.token.repeat(indentToken.size - (indentText.length % indentToken.size) ||
10
23
  indentToken.size);
11
24
  tr.insertText(indentToAdd, tr.mapping.map(start + offset, -1));
25
+ addAnalytics(tr, {
26
+ action: "formatted" /* FORMATTED */,
27
+ actionSubject: "text" /* TEXT */,
28
+ actionSubjectId: "indentation" /* FORMAT_INDENT */,
29
+ eventType: "track" /* TRACK */,
30
+ attributes: {
31
+ inputMethod: "keyboard" /* KEYBOARD */,
32
+ previousIndentationLevel: indentLevel,
33
+ newIndentLevel: indentLevel + 1,
34
+ direction: "indent" /* INDENT */,
35
+ indentType: "codeBlock" /* CODE_BLOCK */,
36
+ },
37
+ });
12
38
  if (!selection.empty) {
13
39
  tr.setSelection(TextSelection.create(tr.doc, tr.mapping.map(selection.from, -1), tr.selection.to));
14
40
  }
@@ -23,8 +49,22 @@ export function outdent(state, dispatch) {
23
49
  forEachLine(text, function (line, offset) {
24
50
  var _a = getLineInfo(line), indentText = _a.indentText, indentToken = _a.indentToken;
25
51
  if (indentText) {
52
+ var indentLevel = getIndentLevel(indentText, indentToken.size);
26
53
  var unindentLength = indentText.length % indentToken.size || indentToken.size;
27
54
  tr.delete(tr.mapping.map(start + offset), tr.mapping.map(start + offset + unindentLength));
55
+ addAnalytics(tr, {
56
+ action: "formatted" /* FORMATTED */,
57
+ actionSubject: "text" /* TEXT */,
58
+ actionSubjectId: "indentation" /* FORMAT_INDENT */,
59
+ eventType: "track" /* TRACK */,
60
+ attributes: {
61
+ inputMethod: "keyboard" /* KEYBOARD */,
62
+ previousIndentationLevel: indentLevel,
63
+ newIndentLevel: indentLevel - 1,
64
+ direction: "outdent" /* OUTDENT */,
65
+ indentType: "codeBlock" /* CODE_BLOCK */,
66
+ },
67
+ });
28
68
  }
29
69
  });
30
70
  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":"AAAA,OAAO,EAAe,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EACL,qBAAqB,EACrB,WAAW,EACX,WAAW,EACX,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,YAAY,GAQb,MAAM,iBAAiB,CAAC;AAEzB;;;;GAIG;AACH,SAAS,cAAc,CAAC,UAAkB,EAAE,UAAkB;IAC5D,IAAI,UAAU,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;QAC/C,OAAO,CAAC,CAAC;KACV;IAED,OAAO,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,KAAkB,EAAE,QAAQ;IAC3C,IAAA,iCAA8C,EAA5C,cAAI,EAAE,gBAAsC,CAAC;IAC7C,IAAA,aAAE,EAAE,2BAAS,CAAW;IAChC,WAAW,CAAC,IAAI,EAAE,UAAC,IAAI,EAAE,MAAM;QACvB,IAAA,sBAA+C,EAA7C,0BAAU,EAAE,4BAAiC,CAAC;QACtD,IAAM,WAAW,GAAG,cAAc,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QAEjE,IAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAC1C,WAAW,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC;YACvD,WAAW,CAAC,IAAI,CACnB,CAAC;QACF,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE/D,YAAY,CAAC,EAAE,EAAE;YACf,MAAM,6BAAkB;YACxB,aAAa,mBAAqB;YAClC,eAAe,mCAAiC;YAChD,SAAS,qBAAkB;YAC3B,UAAU,EAAE;gBACV,WAAW,2BAAuB;gBAClC,wBAAwB,EAAE,WAAW;gBACrC,cAAc,EAAE,WAAW,GAAG,CAAC;gBAC/B,SAAS,uBAAmB;gBAC5B,UAAU,8BAAwB;aACnC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YACpB,EAAE,CAAC,YAAY,CACb,aAAa,CAAC,MAAM,CAClB,EAAE,CAAC,GAAG,EACN,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAClC,EAAE,CAAC,SAAS,CAAC,EAAE,CAChB,CACF,CAAC;SACH;IACH,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,EAAE,CAAC,CAAC;IACb,gBAAgB,CAAC,UAAU,CAAC,mCAAmC,CAAC,CAAC;IACjE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAkB,EAAE,QAAQ;IAC5C,IAAA,iCAA8C,EAA5C,cAAI,EAAE,gBAAsC,CAAC;IAC7C,IAAA,aAAE,CAAW;IACrB,WAAW,CAAC,IAAI,EAAE,UAAC,IAAI,EAAE,MAAM;QACvB,IAAA,sBAA+C,EAA7C,0BAAU,EAAE,4BAAiC,CAAC;QACtD,IAAI,UAAU,EAAE;YACd,IAAM,WAAW,GAAG,cAAc,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;YAEjE,IAAM,cAAc,GAClB,UAAU,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC;YAC3D,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,EAC9B,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,GAAG,cAAc,CAAC,CAChD,CAAC;YAEF,YAAY,CAAC,EAAE,EAAE;gBACf,MAAM,6BAAkB;gBACxB,aAAa,mBAAqB;gBAClC,eAAe,mCAAiC;gBAChD,SAAS,qBAAkB;gBAC3B,UAAU,EAAE;oBACV,WAAW,2BAAuB;oBAClC,wBAAwB,EAAE,WAAW;oBACrC,cAAc,EAAE,WAAW,GAAG,CAAC;oBAC/B,SAAS,yBAAoB;oBAC7B,UAAU,8BAAwB;iBACnC;aACF,CAAC,CAAC;SACJ;IACH,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,EAAE,CAAC,CAAC;IACb,gBAAgB,CAAC,UAAU,CAAC,oCAAoC,CAAC,CAAC;IAClE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAkB,EAAE,QAAQ;IAC/C,IAAA,qDAAuB,CAAkC;IACzD,IAAA,wDAAW,CAAoC;IACvD,IAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAC1C,WAAW,CAAC,IAAI,GAAG,CAAC,iBAAiB,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC;QAC9D,WAAW,CAAC,IAAI,CACnB,CAAC;IACF,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IAC3C,gBAAgB,CAAC,UAAU,CAAC,0CAA0C,CAAC,CAAC;IACxE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAkB,EAAE,QAAQ;IAC1D,IAAA,qDAAuB,CAAkC;IACzD,IAAA,sDAAU,CAAoC;IACtD,IAAI,UAAU,EAAE;QACd,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,4 +1,7 @@
1
1
  import { toggleBlockMark } from '../../../commands';
2
+ import { createAnalyticsDispatch } from './utils';
3
+ import getAttrsWithChangesRecorder from '../../../utils/getAttrsWithChangesRecorder';
4
+ var MAX_INDENTATION_LEVEL = 6;
2
5
  var isIndentationAllowed = function (schema, node, parent) {
3
6
  var _a = schema.nodes, paragraph = _a.paragraph, heading = _a.heading, alignment = schema.marks.alignment;
4
7
  if ([paragraph, heading].indexOf(node.type) > -1) {
@@ -10,32 +13,62 @@ var isIndentationAllowed = function (schema, node, parent) {
10
13
  }
11
14
  return false;
12
15
  };
13
- export var indent = function (state, dispatch) {
14
- var indentation = state.schema.marks.indentation;
15
- return toggleBlockMark(indentation, function (oldMark) {
16
- // No mark - add a mark with level 1
17
- return !oldMark
18
- ? { level: 1 }
19
- : // Level is at 6 or higher - do nothing
20
- oldMark.level >= 6
21
- ? undefined
22
- : // For other cases - increase level by 1
23
- { level: oldMark.level + 1 };
24
- }, isIndentationAllowed)(state, dispatch);
16
+ /**
17
+ * Create new indentation command (Either indent or outdent depend of getArgsFn)
18
+ * @param getNewIndentationAttrs Function to handle new indentation level
19
+ */
20
+ function createIndentationCommand(getNewIndentationAttrs) {
21
+ return function (state, dispatch) {
22
+ var indentation = state.schema.marks.indentation;
23
+ return toggleBlockMark(indentation, getNewIndentationAttrs, isIndentationAllowed)(state, dispatch);
24
+ };
25
+ }
26
+ function createIndentationCommandWithAnalytics(getNewIndentationAttrs, direction) {
27
+ // Create a new getAttrs function to record the changes
28
+ var _a = getAttrsWithChangesRecorder(getNewIndentationAttrs, { direction: direction }), getAttrs = _a.getAttrs, getAndResetAttrsChanges = _a.getAndResetAttrsChanges;
29
+ // Use new getAttrs wrapper
30
+ var indentationCommand = createIndentationCommand(getAttrs);
31
+ // Return a new command where we change dispatch for our analytics dispatch
32
+ return function (state, dispatch) {
33
+ return indentationCommand(state, createAnalyticsDispatch(getAndResetAttrsChanges, dispatch));
34
+ };
35
+ }
36
+ /**
37
+ * Get new level for outdent
38
+ * @param oldAttr Old attributes for the mark, undefined if the mark doesn't exit
39
+ * @returns - undefined; No change required
40
+ * - false; Remove the mark
41
+ * - object; Update attributes
42
+ */
43
+ var getIndentAttrs = function (oldAttr) {
44
+ if (!oldAttr) {
45
+ return { level: 1 }; // No mark exist, create a new one with level 1
46
+ }
47
+ var level = oldAttr.level;
48
+ if (level >= MAX_INDENTATION_LEVEL) {
49
+ return undefined; // Max indentation level reached, do nothing.
50
+ }
51
+ return { level: level + 1 }; // Otherwise, increase the level by one
25
52
  };
26
- export var outdent = function (state, dispatch) {
27
- var indentation = state.schema.marks.indentation;
28
- return toggleBlockMark(indentation, function (oldMark) {
29
- // No mark - do nothing
30
- return !oldMark
31
- ? undefined
32
- : // Level is at 1 or lower - remove the mark
33
- oldMark.level <= 1
34
- ? false
35
- : // For other cases - decrease level by 1
36
- { level: oldMark.level - 1 };
37
- }, isIndentationAllowed)(state, dispatch);
53
+ export var indent = createIndentationCommandWithAnalytics(getIndentAttrs, "indent" /* INDENT */);
54
+ /**
55
+ * Get new level for outdent
56
+ * @param oldAttr Old attributes for the mark, undefined if the mark doesn't exit
57
+ * @returns - undefined; No change required
58
+ * - false; Remove the mark
59
+ * - object; Update attributes
60
+ */
61
+ var getOutdentAttrs = function (oldAttr) {
62
+ if (!oldAttr) {
63
+ return undefined; // Do nothing;
64
+ }
65
+ var level = oldAttr.level;
66
+ if (level <= 1) {
67
+ return false; // Remove the mark
68
+ }
69
+ return { level: level - 1 }; // Decrease the level on other cases
38
70
  };
71
+ export var outdent = createIndentationCommandWithAnalytics(getOutdentAttrs, "outdent" /* OUTDENT */);
39
72
  export var removeIndentation = function (state, dispatch) {
40
73
  return toggleBlockMark(state.schema.marks.indentation, function () { return false; })(state, dispatch);
41
74
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/plugins/indentation/commands/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;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;AAEF,MAAM,CAAC,IAAM,MAAM,GAAY,UAAC,KAAK,EAAE,QAAQ;IACrC,IAAA,4CAAW,CAAwB;IAE3C,OAAO,eAAe,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;AAEF,MAAM,CAAC,IAAM,OAAO,GAAY,UAAC,KAAK,EAAE,QAAQ;IACtC,IAAA,4CAAW,CAAwB;IAC3C,OAAO,eAAe,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;AAEF,MAAM,CAAC,IAAM,iBAAiB,GAAY,UAAC,KAAK,EAAE,QAAQ;IACxD,OAAA,eAAe,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":"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"}
@@ -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,69 @@
1
+ import { addAnalytics, } from '../../analytics';
2
+ var indentTypes = {
3
+ paragraph: "paragraph" /* PARAGRAPH */,
4
+ heading: "heading" /* HEADING */,
5
+ };
6
+ /**
7
+ * Get the current indentation level given prev and new attributes
8
+ * @param prevAttrs - Previous attributes from indentation
9
+ * @param newAttrs - New attributes from indentation
10
+ */
11
+ export function getNewIndentLevel(prevAttrs, newAttrs) {
12
+ if (newAttrs === undefined) {
13
+ return prevAttrs.level;
14
+ }
15
+ else if (newAttrs === false) {
16
+ return 0;
17
+ }
18
+ return newAttrs.level;
19
+ }
20
+ /**
21
+ * Get the previous indentation level prev attributes
22
+ * @param prevAttrs - Previous attributes from indentation
23
+ */
24
+ export function getPrevIndentLevel(prevAttrs) {
25
+ if (prevAttrs === undefined) {
26
+ return 0;
27
+ }
28
+ return prevAttrs.level;
29
+ }
30
+ /**
31
+ * Create a new dispatch function who add analytics events given a list of attributes changes
32
+ *
33
+ * @export
34
+ * @param {*} getAttrsChanges
35
+ * @param dispatch
36
+ * @returns
37
+ */
38
+ export function createAnalyticsDispatch(getAttrsChanges, dispatch) {
39
+ return function (tr) {
40
+ var currentTr = tr;
41
+ var changes = getAttrsChanges(); // Get all attributes changes
42
+ // Add analytics event for each change stored.
43
+ changes.forEach(function (_a) {
44
+ var node = _a.node, prevAttrs = _a.prevAttrs, newAttrs = _a.newAttrs, direction = _a.options.direction;
45
+ var indentType = indentTypes[node.type.name];
46
+ if (!indentType) {
47
+ return; // If no valid indent type continue
48
+ }
49
+ currentTr = addAnalytics(currentTr, {
50
+ action: "formatted" /* FORMATTED */,
51
+ actionSubject: "text" /* TEXT */,
52
+ actionSubjectId: "indentation" /* FORMAT_INDENT */,
53
+ eventType: "track" /* TRACK */,
54
+ attributes: {
55
+ inputMethod: "keyboard" /* KEYBOARD */,
56
+ previousIndentationLevel: getPrevIndentLevel(prevAttrs),
57
+ newIndentLevel: getNewIndentLevel(prevAttrs, newAttrs),
58
+ direction: direction,
59
+ indentType: indentType,
60
+ },
61
+ });
62
+ });
63
+ // Dispatch analytics if exist
64
+ if (dispatch) {
65
+ dispatch(tr);
66
+ }
67
+ };
68
+ }
69
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/plugins/indentation/commands/utils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,GAQb,MAAM,iBAAiB,CAAC;AAWzB,IAAM,WAAW,GAAG;IAClB,SAAS,6BAAuB;IAChC,OAAO,yBAAqB;CAC7B,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,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;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAyB;IAC1D,IAAI,SAAS,KAAK,SAAS,EAAE;QAC3B,OAAO,CAAC,CAAC;KACV;IACD,OAAO,SAAS,CAAC,KAAK,CAAC;AACzB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,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,YAAY,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"}
@@ -1,4 +1,4 @@
1
- import { Fragment, Slice } from 'prosemirror-model';
1
+ import { Fragment, Slice, } from 'prosemirror-model';
2
2
  import { TextSelection, NodeSelection, } from 'prosemirror-state';
3
3
  import { liftTarget, ReplaceAroundStep } from 'prosemirror-transform';
4
4
  import * as baseCommand from 'prosemirror-commands';
@@ -6,9 +6,10 @@ import * as baseListCommand from 'prosemirror-schema-list';
6
6
  import { hasParentNodeOfType, findPositionOfNodeBefore, } from 'prosemirror-utils';
7
7
  import { isEmptyNode, hasVisibleContent } from '../../utils/document';
8
8
  import { filter, isEmptySelectionAtStart, isFirstChildOfParent, findCutBefore, } from '../../utils/commands';
9
- import { isRangeOfType } from '../../utils';
9
+ import { isRangeOfType, compose } from '../../utils';
10
10
  import { liftFollowingList, liftSelectionList } from './transforms';
11
11
  import { GapCursorSelection } from '../gap-cursor';
12
+ import { withAnalytics, } from '../analytics';
12
13
  var maxIndentation = 5;
13
14
  var deletePreviousEmptyListItem = function (state, dispatch) {
14
15
  var $from = state.selection.$from;
@@ -195,22 +196,17 @@ function splitListItem(itemType) {
195
196
  return true;
196
197
  };
197
198
  }
198
- export function outdentList() {
199
- return function (state, dispatch) {
200
- var listItem = state.schema.nodes.listItem;
201
- var _a = state.selection, $from = _a.$from, $to = _a.$to;
202
- if (isInsideListItem(state)) {
203
- // if we're backspacing at the start of a list item, unindent it
204
- // take the the range of nodes we might be lifting
205
- // the predicate is for when you're backspacing a top level list item:
206
- // we don't want to go up past the doc node, otherwise the range
207
- // to clear will include everything
208
- var range = $from.blockRange($to, function (node) { return node.childCount > 0 && node.firstChild.type === listItem; });
209
- if (!range) {
210
- return false;
211
- }
212
- var tr_1;
213
- if (baseListCommand.liftListItem(listItem)(state, function (liftTr) { return (tr_1 = liftTr); })) {
199
+ /**
200
+ * Merge closest bullet list blocks into one
201
+ *
202
+ * @param {NodeType} listItem
203
+ * @param {NodeRange} range
204
+ * @returns
205
+ */
206
+ function mergeLists(listItem, range) {
207
+ return function (command) {
208
+ return function (state, dispatch) {
209
+ return command(state, function (tr) {
214
210
  /* we now need to handle the case that we lifted a sublist out,
215
211
  * and any listItems at the current level get shifted out to
216
212
  * their own new list; e.g.:
@@ -239,49 +235,107 @@ export function outdentList() {
239
235
  */
240
236
  var $start = state.doc.resolve(range.start);
241
237
  var $end = state.doc.resolve(range.end);
242
- var $join = tr_1.doc.resolve(tr_1.mapping.map(range.end - 1));
238
+ var $join = tr.doc.resolve(tr.mapping.map(range.end - 1));
243
239
  if ($join.nodeBefore &&
244
240
  $join.nodeAfter &&
245
241
  $join.nodeBefore.type === $join.nodeAfter.type) {
246
242
  if ($end.nodeAfter &&
247
243
  $end.nodeAfter.type === listItem &&
248
244
  $end.parent.type === $start.parent.type) {
249
- tr_1.join($join.pos);
245
+ tr.join($join.pos);
250
246
  }
251
247
  }
252
248
  if (dispatch) {
253
- dispatch(tr_1.scrollIntoView());
249
+ dispatch(tr.scrollIntoView());
254
250
  }
255
- return true;
251
+ });
252
+ };
253
+ };
254
+ }
255
+ export function outdentList() {
256
+ return function (state, dispatch) {
257
+ var listItem = state.schema.nodes.listItem;
258
+ var _a = state.selection, $from = _a.$from, $to = _a.$to;
259
+ if (isInsideListItem(state)) {
260
+ // if we're backspacing at the start of a list item, unindent it
261
+ // take the the range of nodes we might be lifting
262
+ // the predicate is for when you're backspacing a top level list item:
263
+ // we don't want to go up past the doc node, otherwise the range
264
+ // to clear will include everything
265
+ var range = $from.blockRange($to, function (node) { return node.childCount > 0 && node.firstChild.type === listItem; });
266
+ if (!range) {
267
+ return false;
256
268
  }
269
+ var initialIndentationLevel = numberNestedLists(state.selection.$from, state.schema.nodes);
270
+ return compose(withAnalytics({
271
+ action: "formatted" /* FORMATTED */,
272
+ actionSubject: "text" /* TEXT */,
273
+ actionSubjectId: "indentation" /* FORMAT_INDENT */,
274
+ eventType: "track" /* TRACK */,
275
+ attributes: {
276
+ inputMethod: "keyboard" /* KEYBOARD */,
277
+ previousIndentationLevel: initialIndentationLevel,
278
+ newIndentLevel: initialIndentationLevel - 1,
279
+ direction: "outdent" /* OUTDENT */,
280
+ indentType: "list" /* LIST */,
281
+ },
282
+ }), // 3. Send analytics event
283
+ mergeLists(listItem, range), // 2. Check if I need to merge nearest list
284
+ baseListCommand.liftListItem)(listItem)(state, dispatch);
257
285
  }
258
286
  return false;
259
287
  };
260
288
  }
289
+ /**
290
+ * Check if we can sink the list.
291
+ *
292
+ * @param {number} initialIndentationLevel
293
+ * @param {EditorState} state
294
+ * @returns {boolean} - true if we can sink the list
295
+ * - false if we reach the max indentation level
296
+ */
297
+ function canSink(initialIndentationLevel, state) {
298
+ /*
299
+ - Keep going forward in document until indentation of the node is < than the initial
300
+ - If indentation is EVER > max indentation, return true and don't sink the list
301
+ */
302
+ var currentIndentationLevel;
303
+ var currentPos = state.tr.selection.$to.pos;
304
+ do {
305
+ var resolvedPos = state.doc.resolve(currentPos);
306
+ currentIndentationLevel = numberNestedLists(resolvedPos, state.schema.nodes);
307
+ if (currentIndentationLevel > maxIndentation) {
308
+ // Cancel sink list.
309
+ // If current indentation less than the initial, it won't be
310
+ // larger than the max, and the loop will terminate at end of this iteration
311
+ return false;
312
+ }
313
+ currentPos++;
314
+ } while (currentIndentationLevel >= initialIndentationLevel);
315
+ return true;
316
+ }
261
317
  export function indentList() {
262
318
  return function (state, dispatch) {
263
319
  var listItem = state.schema.nodes.listItem;
264
320
  if (isInsideListItem(state)) {
321
+ // Record initial list indentation
265
322
  var initialIndentationLevel = numberNestedLists(state.selection.$from, state.schema.nodes);
266
- /*
267
- - Record initial list indentation
268
- - Keep going forward in document until indentation of the node is < than the initial
269
- - If indentation is EVER > max indentation, return true and don't sink the list
270
- */
271
- var currentIndentationLevel = void 0;
272
- var currentPos = state.tr.selection.$to.pos;
273
- do {
274
- var resolvedPos = state.doc.resolve(currentPos);
275
- currentIndentationLevel = numberNestedLists(resolvedPos, state.schema.nodes);
276
- if (currentIndentationLevel > maxIndentation) {
277
- // Cancel sink list.
278
- // If current indentation less than the initial, it won't be
279
- // larger than the max, and the loop will terminate at end of this iteration
280
- return true;
281
- }
282
- currentPos++;
283
- } while (currentIndentationLevel >= initialIndentationLevel);
284
- baseListCommand.sinkListItem(listItem)(state, dispatch);
323
+ if (canSink(initialIndentationLevel, state)) {
324
+ // Analytics command wrapper should be here because we need to get indentation level
325
+ compose(withAnalytics({
326
+ action: "formatted" /* FORMATTED */,
327
+ actionSubject: "text" /* TEXT */,
328
+ actionSubjectId: "indentation" /* FORMAT_INDENT */,
329
+ eventType: "track" /* TRACK */,
330
+ attributes: {
331
+ inputMethod: "keyboard" /* KEYBOARD */,
332
+ previousIndentationLevel: initialIndentationLevel,
333
+ newIndentLevel: initialIndentationLevel + 1,
334
+ direction: "indent" /* INDENT */,
335
+ indentType: "list" /* LIST */,
336
+ },
337
+ }), baseListCommand.sinkListItem)(listItem)(state, dispatch);
338
+ }
285
339
  return true;
286
340
  }
287
341
  return false;