@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.
- package/CHANGELOG.md +5 -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/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/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 +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
|
|
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":";;;AAAA,uDAM2B;AAC3B,uDAK2B;AAC3B,kCAAkD;AAIlD,SAAgB,cAAc;IAC5B,OAAO,UAAS,KAAK,EAAE,QAAQ;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACJ,CAAC;AAJD,wCAIC;AAED,SAAgB,aAAa;IAC3B,OAAO,UAAS,KAAK,EAAE,QAAQ;QACrB,IAAA,6BAAK,CAAqB;QAClC,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QACpB,IAAA,wCAAS,CAAwB;QAEzC,IAAI,SAAS,EAAE;YACb,IAAM,aAAa,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;YAEzC,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,4BAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE;gBACpE,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC;iBACxD;gBACD,OAAO,IAAI,CAAC;aACb;SACF;QAED,IAAI,KAAK,CAAC,SAAS,YAAY,iCAAa,EAAE;YAC5C,IAAI,QAAQ,EAAE;gBACZ,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;aACrC;YACD,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC;AA1BD,sCA0BC;AAED,SAAgB,UAAU;IACxB,OAAO,UAAS,KAAK,EAAE,QAAQ;QACrB,IAAA,uBAAE,CAAqB;QACvB,IAAA,8BAAI,CAAwB;QACpC,IAAI,IAAI,EAAE;YACR,IAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/B,IAAI,QAAQ,EAAE;gBACZ,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;aAC7C;YACD,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC;AAbD,gCAaC;AAEY,QAAA,uBAAuB,GAAY,UAAC,KAAK,EAAE,QAAQ;IAC9D,IAAM,MAAM,GAAG,KAAK,CAAC;IACrB,IAAI,CAAC,iBAAS,CAAC,KAAK,CAAC,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE;QACtD,mBAAmB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;KACb;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEW,QAAA,uBAAuB,GAAY,UAAC,KAAK,EAAE,QAAQ;IAC9D,IAAM,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,CAAC,mBAAW,CAAC,KAAK,CAAC,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE;QACxD,mBAAmB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;KACb;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,SAAS,sBAAsB,CAAC,KAAkB;IAEjC,IAAA,6BAAK,CACV;IACV,IAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrC,IAAM,eAAe,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;IAC7E,IAAM,eAAe,GAAG,KAAK,CAAC,SAAS,YAAY,iCAAa,CAAC;IACjE,OAAO,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,eAAe,IAAI,eAAe,CAAC;AAC/D,CAAC;AAED,SAAgB,mBAAmB,CAAC,MAAsB;IAAtB,uBAAA,EAAA,aAAsB;IACxD,OAAO,UAAS,KAAK,EAAE,QAAQ;QAC7B,IAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;QAE/C,IAAI,CAAC,SAAS,EAAE;YACd,OAAO,KAAK,CAAC;SACd;QAED,IAAI,SAAS,CAAC;QAEd,IAAI,KAAK,CAAC,SAAS,YAAY,iCAAa,EAAE;YAC5C,IAAI,4BAA4B,CAAC,KAAK,CAAC,EAAE;gBACvC,OAAO,KAAK,CAAC;aACd;YACD,SAAS,GAAG,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SACtD;aAAM;YACL,SAAS,GAAG,4BAA4B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SACzD;QAED,IAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,aAAa,EAAY,CAAC,CAAC;QAC3E,EAAE,CAAC,YAAY,CAAC,iCAAa,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;QAE7D,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,EAAE,CAAC,CAAC;SACd;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACJ,CAAC;AA5BD,kDA4BC;AAED,SAAS,yBAAyB,CAChC,KAAkB,EAClB,MAAe;IAET,IAAA,oBAAgC,EAA9B,gBAAK,EAAE,YAAuB,CAAC;IACvC,IAAI,GAAG,CAAC;IACR,IAAI,CAAC,MAAM,EAAE;QACX,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACtB;SAAM;QACL,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KAClB;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,4BAA4B,CACnC,KAAkB,EAClB,MAAe;IAET,IAAA,oBAAgC,EAA9B,gBAAK,EAAE,YAAuB,CAAC;IACvC,IAAM,eAAe,GACnB,KAAK,CAAC,SAAS,YAAY,iCAAa;QACxC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChD,IAAM,gBAAgB,GACpB,eAAe,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC;IAEhE,IAAI,GAAG,CAAC;IACR,IAAI,CAAC,MAAM,EAAE;QACX,2EAA2E;QAC3E,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,kEAAkE;QAClE,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;KAC5D;SAAM;QACL,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzB,GAAG,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;KAC1D;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,4BAA4B,CAAC,KAAkB;IACtD,IAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnD,OAAO,CACL,YAAY,CAAC,WAAW;QACxB,YAAY,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS;QAClD,YAAY,CAAC,QAAQ,KAAK,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED,SAAgB,oBAAoB;IAClC,OAAO,UAAS,KAAK,EAAE,QAAQ;QAE3B,IAAA,eAAG,EACH,aAAE,EACQ,0BAAK,CACP;QACV,IACE,GAAG,CAAC,SAAS;YACb,CAAC,CACC,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,KAAK,CAAC,SAAS;gBACtC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CACjC,EACD;YACA,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa,EAAY,CAAC,CAAC;SACxE;QACD,EAAE,CAAC,YAAY,CAAC,iCAAa,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QACvE,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,EAAE,CAAC,CAAC;SACd;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACJ,CAAC;AAvBD,oDAuBC;AAUY,QAAA,oBAAoB,GAAG,UAAC,KAAK,IAAc,OAAA,UAAC,KAAK,EAAE,QAAQ;IAChE,IAAA,oBAA8B,EAA5B,cAAI,EAAE,UAAsB,CAAC;IAErC,IAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IAEpB,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,UAAC,IAAI,EAAE,GAAG,EAAE,MAAM;QACjD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE;YAChD,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,uBAC1B,IAAI,CAAC,KAAK,IACb,MAAM,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAS,KAAO,IACxD,CAAC;SACJ;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,EAAE,CAAC,UAAU,IAAI,QAAQ,EAAE;QAC7B,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;KACb;IAED,OAAO,KAAK,CAAC;AACf,CAAC,EApBuD,CAoBvD,CAAC;AAEF;;;;;;GAMG;AACU,QAAA,eAAe,GAAG,UAC7B,QAAkB,EAClB,QAAmE,EACnE,aAE+D,IACnD,OAAA,UAAC,KAAK,EAAE,QAAQ;IACtB,IAAA,oBAA8B,EAA5B,cAAI,EAAE,UAAsB,CAAC;IAErC,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IAEpB,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,UAAC,IAAI,EAAE,GAAG,EAAE,MAAM;QACjD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACtB,OAAO,KAAK,CAAC;SACd;QAED,IACE,CAAC,CAAC,aAAa;YACb,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;gBAC3B,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACvC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EACpC;YACA,IAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAtB,CAAsB,CAAC,CAAC;YAEnE,IAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAW,CAAC,CAAC,CAAC,SAAS,CAAC;YACzE,IAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAE3C,IAAI,QAAQ,KAAK,SAAS,EAAE;gBAC1B,EAAE,CAAC,aAAa,CACd,GAAG,EACH,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,KAAK;qBACP,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAA7B,CAA6B,CAAC;qBAC7C,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAC/D,CAAC;gBACF,WAAW,GAAG,IAAI,CAAC;aACpB;SACF;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,WAAW,IAAI,EAAE,CAAC,UAAU,EAAE;QAChC,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC;SAC/B;QACD,OAAO,IAAI,CAAC;KACb;IAED,OAAO,KAAK,CAAC;AACf,CAAC,EA7Ca,CA6Cb,CAAC"}
|
|
@@ -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":";;AAAA,uDAA+D;AAE/D,iDAKyB;AACzB,gDAAsD;
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
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;
|
|
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
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
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 =
|
|
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
|
-
|
|
247
|
+
tr.join($join.pos);
|
|
252
248
|
}
|
|
253
249
|
}
|
|
254
250
|
if (dispatch) {
|
|
255
|
-
dispatch(
|
|
251
|
+
dispatch(tr.scrollIntoView());
|
|
256
252
|
}
|
|
257
|
-
|
|
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
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
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;
|