@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.
- package/CHANGELOG.md +15 -0
- package/dist/es2015/commands/index.d.ts +1 -1
- package/dist/es2015/commands/index.js +2 -1
- package/dist/es2015/commands/index.js.map +1 -1
- package/dist/es2015/plugins/code-block/ide-ux/commands.js +40 -0
- package/dist/es2015/plugins/code-block/ide-ux/commands.js.map +1 -1
- package/dist/es2015/plugins/indentation/commands/index.js +57 -24
- package/dist/es2015/plugins/indentation/commands/index.js.map +1 -1
- package/dist/es2015/plugins/indentation/commands/utils.d.ts +30 -0
- package/dist/es2015/plugins/indentation/commands/utils.js +69 -0
- package/dist/es2015/plugins/indentation/commands/utils.js.map +1 -0
- package/dist/es2015/plugins/lists/commands.js +95 -41
- package/dist/es2015/plugins/lists/commands.js.map +1 -1
- package/dist/es2015/utils/document.js.map +1 -1
- package/dist/es2015/utils/getAttrsWithChangesRecorder.d.ts +23 -0
- package/dist/es2015/utils/getAttrsWithChangesRecorder.js +33 -0
- package/dist/es2015/utils/getAttrsWithChangesRecorder.js.map +1 -0
- package/dist/es5/commands/index.d.ts +1 -1
- package/dist/es5/commands/index.js +2 -1
- package/dist/es5/commands/index.js.map +1 -1
- package/dist/es5/plugins/code-block/ide-ux/commands.js +40 -0
- package/dist/es5/plugins/code-block/ide-ux/commands.js.map +1 -1
- package/dist/es5/plugins/indentation/commands/index.js +57 -24
- package/dist/es5/plugins/indentation/commands/index.js.map +1 -1
- package/dist/es5/plugins/indentation/commands/utils.d.ts +30 -0
- package/dist/es5/plugins/indentation/commands/utils.js +74 -0
- package/dist/es5/plugins/indentation/commands/utils.js.map +1 -0
- package/dist/es5/plugins/lists/commands.js +93 -39
- package/dist/es5/plugins/lists/commands.js.map +1 -1
- package/dist/es5/utils/document.js.map +1 -1
- package/dist/es5/utils/getAttrsWithChangesRecorder.d.ts +23 -0
- package/dist/es5/utils/getAttrsWithChangesRecorder.js +36 -0
- package/dist/es5/utils/getAttrsWithChangesRecorder.js.map +1 -0
- package/dist/package.json +1 -1
- 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
|
|
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":"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;
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../../../src/plugins/code-block/ide-ux/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
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;
|
|
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
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
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 =
|
|
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
|
-
|
|
245
|
+
tr.join($join.pos);
|
|
250
246
|
}
|
|
251
247
|
}
|
|
252
248
|
if (dispatch) {
|
|
253
|
-
dispatch(
|
|
249
|
+
dispatch(tr.scrollIntoView());
|
|
254
250
|
}
|
|
255
|
-
|
|
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
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
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;
|