@atlaskit/editor-plugin-highlight 1.3.0 → 1.4.1

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 CHANGED
@@ -1,5 +1,27 @@
1
1
  # @atlaskit/editor-plugin-highlight
2
2
 
3
+ ## 1.4.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#101524](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/101524)
8
+ [`4821570088e6`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/4821570088e6) -
9
+ ED-23362 Bump ADF schema to version 36.8.1 and add support for adf validation and transformation
10
+
11
+ ## 1.4.0
12
+
13
+ ### Minor Changes
14
+
15
+ - [#100495](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/100495)
16
+ [`dbb78a011fac`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/dbb78a011fac) -
17
+ [ux] [ED-23150] Added `changeColor` command for editor-plugin-highlight, including new
18
+ `removeMark` command for editor-common. Fixed bug with editor-plugin-text-color which prevented
19
+ color from being removed when user selects all.
20
+
21
+ ### Patch Changes
22
+
23
+ - Updated dependencies
24
+
3
25
  ## 1.3.0
4
26
 
5
27
  ### Minor Changes
@@ -4,32 +4,62 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.changeColor = void 0;
7
+ var _analytics = require("@atlaskit/editor-common/analytics");
8
+ var _mark = require("@atlaskit/editor-common/mark");
9
+ var _uiColor = require("@atlaskit/editor-common/ui-color");
7
10
  var _pmPlugin = require("../pm-plugin");
8
- // import {
9
- // ACTION,
10
- // ACTION_SUBJECT,
11
- // ACTION_SUBJECT_ID,
12
- // EVENT_TYPE,
13
- // } from '@atlaskit/editor-common/analytics';
14
-
15
- var changeColor = exports.changeColor = function changeColor(_editorAnalyticsAPI) {
11
+ var _color = require("../utils/color");
12
+ var changeColor = exports.changeColor = function changeColor(editorAnalyticsAPI) {
16
13
  return function (_ref) {
17
14
  var color = _ref.color;
18
15
  return function (_ref2) {
19
16
  var tr = _ref2.tr;
17
+ var backgroundColor = tr.doc.type.schema.marks.backgroundColor;
18
+ if (!backgroundColor) {
19
+ return null;
20
+ }
21
+ editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent(createAnalyticsEvent(color, tr))(tr);
20
22
  tr.setMeta(_pmPlugin.highlightPluginKey, {
21
23
  type: _pmPlugin.HighlightPluginAction.CHANGE_COLOR,
22
24
  color: color
23
25
  });
24
-
25
- // editorAnalyticsAPI?.attachAnalyticsEvent({
26
- // action: ACTION.FORMATTED,
27
- // actionSubject: ACTION_SUBJECT.TEXT,
28
- // actionSubjectId: ACTION_SUBJECT_ID.FORMAT_BACKGROUND_COLOR,
29
- // eventType: EVENT_TYPE.TRACK,
30
- // })(tr);
31
-
26
+ tr.scrollIntoView();
27
+ if (color === _uiColor.REMOVE_HIGHLIGHT_COLOR) {
28
+ (0, _mark.removeMark)(backgroundColor)({
29
+ tr: tr
30
+ });
31
+ } else {
32
+ (0, _mark.toggleMark)(backgroundColor, {
33
+ color: color
34
+ })({
35
+ tr: tr
36
+ });
37
+ }
32
38
  return tr;
33
39
  };
34
40
  };
41
+ };
42
+ var createAnalyticsEvent = function createAnalyticsEvent(color, tr) {
43
+ var previousColor = (0, _color.getActiveColor)(tr);
44
+ // get color names from palette
45
+ var newColorFromPalette = _uiColor.highlightColorPalette.find(function (_ref3) {
46
+ var value = _ref3.value;
47
+ return value === color;
48
+ });
49
+ var previousColorFromPalette = _uiColor.highlightColorPalette.find(function (_ref4) {
50
+ var value = _ref4.value;
51
+ return value === previousColor;
52
+ });
53
+ var newColorLabel = newColorFromPalette ? newColorFromPalette.label : color;
54
+ var previousColorLabel = previousColorFromPalette ? previousColorFromPalette.label : previousColor || '';
55
+ return {
56
+ action: _analytics.ACTION.FORMATTED,
57
+ actionSubject: _analytics.ACTION_SUBJECT.TEXT,
58
+ actionSubjectId: _analytics.ACTION_SUBJECT_ID.FORMAT_BACKGROUND_COLOR,
59
+ eventType: _analytics.EVENT_TYPE.TRACK,
60
+ attributes: {
61
+ newColor: newColorLabel.toLowerCase(),
62
+ previousColor: previousColorLabel.toLowerCase()
63
+ }
64
+ };
35
65
  };
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getActiveColor = void 0;
7
+ var _uiColor = require("@atlaskit/editor-common/ui-color");
8
+ var getActiveColor = exports.getActiveColor = function getActiveColor(tr) {
9
+ var _ref = tr.selection,
10
+ $from = _ref.$from,
11
+ $to = _ref.$to,
12
+ $cursor = _ref.$cursor;
13
+ var _ref2 = tr.doc.type.schema.marks,
14
+ backgroundColor = _ref2.backgroundColor;
15
+
16
+ // Filter out other marks
17
+ var marks = [];
18
+ if ($cursor) {
19
+ marks.push(backgroundColor.isInSet(tr.storedMarks || $cursor.marks()) || undefined);
20
+ } else {
21
+ tr.doc.nodesBetween($from.pos, $to.pos, function (currentNode) {
22
+ if (currentNode.isLeaf) {
23
+ var mark = backgroundColor.isInSet(currentNode.marks) || undefined;
24
+ marks.push(mark);
25
+ return !mark;
26
+ }
27
+ return true;
28
+ });
29
+ }
30
+
31
+ // Merge consecutive same color marks
32
+ var prevMark;
33
+ marks = marks.filter(function (mark) {
34
+ if (mark && prevMark && mark.attrs.color === prevMark.attrs.color) {
35
+ return false;
36
+ }
37
+ prevMark = mark;
38
+ return true;
39
+ });
40
+ var marksWithColor = marks.filter(function (mark) {
41
+ return !!mark;
42
+ });
43
+ // When multiple colors are selected revert back to default color
44
+ if (marksWithColor.length > 1 || marksWithColor.length === 1 && marks.length > 1) {
45
+ return null;
46
+ }
47
+ return marksWithColor.length ? marksWithColor[0].attrs.color : _uiColor.REMOVE_HIGHLIGHT_COLOR;
48
+ };
@@ -1,27 +1,57 @@
1
- // import {
2
- // ACTION,
3
- // ACTION_SUBJECT,
4
- // ACTION_SUBJECT_ID,
5
- // EVENT_TYPE,
6
- // } from '@atlaskit/editor-common/analytics';
7
-
1
+ import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '@atlaskit/editor-common/analytics';
2
+ import { removeMark, toggleMark } from '@atlaskit/editor-common/mark';
3
+ import { highlightColorPalette, REMOVE_HIGHLIGHT_COLOR } from '@atlaskit/editor-common/ui-color';
8
4
  import { HighlightPluginAction, highlightPluginKey } from '../pm-plugin';
9
- export const changeColor = _editorAnalyticsAPI => ({
5
+ import { getActiveColor } from '../utils/color';
6
+ export const changeColor = editorAnalyticsAPI => ({
10
7
  color
11
8
  }) => ({
12
9
  tr
13
10
  }) => {
11
+ const {
12
+ backgroundColor
13
+ } = tr.doc.type.schema.marks;
14
+ if (!backgroundColor) {
15
+ return null;
16
+ }
17
+ editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 ? void 0 : editorAnalyticsAPI.attachAnalyticsEvent(createAnalyticsEvent(color, tr))(tr);
14
18
  tr.setMeta(highlightPluginKey, {
15
19
  type: HighlightPluginAction.CHANGE_COLOR,
16
20
  color
17
21
  });
18
-
19
- // editorAnalyticsAPI?.attachAnalyticsEvent({
20
- // action: ACTION.FORMATTED,
21
- // actionSubject: ACTION_SUBJECT.TEXT,
22
- // actionSubjectId: ACTION_SUBJECT_ID.FORMAT_BACKGROUND_COLOR,
23
- // eventType: EVENT_TYPE.TRACK,
24
- // })(tr);
25
-
22
+ tr.scrollIntoView();
23
+ if (color === REMOVE_HIGHLIGHT_COLOR) {
24
+ removeMark(backgroundColor)({
25
+ tr
26
+ });
27
+ } else {
28
+ toggleMark(backgroundColor, {
29
+ color
30
+ })({
31
+ tr
32
+ });
33
+ }
26
34
  return tr;
35
+ };
36
+ const createAnalyticsEvent = (color, tr) => {
37
+ const previousColor = getActiveColor(tr);
38
+ // get color names from palette
39
+ const newColorFromPalette = highlightColorPalette.find(({
40
+ value
41
+ }) => value === color);
42
+ const previousColorFromPalette = highlightColorPalette.find(({
43
+ value
44
+ }) => value === previousColor);
45
+ const newColorLabel = newColorFromPalette ? newColorFromPalette.label : color;
46
+ const previousColorLabel = previousColorFromPalette ? previousColorFromPalette.label : previousColor || '';
47
+ return {
48
+ action: ACTION.FORMATTED,
49
+ actionSubject: ACTION_SUBJECT.TEXT,
50
+ actionSubjectId: ACTION_SUBJECT_ID.FORMAT_BACKGROUND_COLOR,
51
+ eventType: EVENT_TYPE.TRACK,
52
+ attributes: {
53
+ newColor: newColorLabel.toLowerCase(),
54
+ previousColor: previousColorLabel.toLowerCase()
55
+ }
56
+ };
27
57
  };
@@ -0,0 +1,42 @@
1
+ import { REMOVE_HIGHLIGHT_COLOR } from '@atlaskit/editor-common/ui-color';
2
+ export const getActiveColor = tr => {
3
+ const {
4
+ $from,
5
+ $to,
6
+ $cursor
7
+ } = tr.selection;
8
+ const {
9
+ backgroundColor
10
+ } = tr.doc.type.schema.marks;
11
+
12
+ // Filter out other marks
13
+ let marks = [];
14
+ if ($cursor) {
15
+ marks.push(backgroundColor.isInSet(tr.storedMarks || $cursor.marks()) || undefined);
16
+ } else {
17
+ tr.doc.nodesBetween($from.pos, $to.pos, currentNode => {
18
+ if (currentNode.isLeaf) {
19
+ const mark = backgroundColor.isInSet(currentNode.marks) || undefined;
20
+ marks.push(mark);
21
+ return !mark;
22
+ }
23
+ return true;
24
+ });
25
+ }
26
+
27
+ // Merge consecutive same color marks
28
+ let prevMark;
29
+ marks = marks.filter(mark => {
30
+ if (mark && prevMark && mark.attrs.color === prevMark.attrs.color) {
31
+ return false;
32
+ }
33
+ prevMark = mark;
34
+ return true;
35
+ });
36
+ const marksWithColor = marks.filter(mark => !!mark);
37
+ // When multiple colors are selected revert back to default color
38
+ if (marksWithColor.length > 1 || marksWithColor.length === 1 && marks.length > 1) {
39
+ return null;
40
+ }
41
+ return marksWithColor.length ? marksWithColor[0].attrs.color : REMOVE_HIGHLIGHT_COLOR;
42
+ };
@@ -1,29 +1,59 @@
1
- // import {
2
- // ACTION,
3
- // ACTION_SUBJECT,
4
- // ACTION_SUBJECT_ID,
5
- // EVENT_TYPE,
6
- // } from '@atlaskit/editor-common/analytics';
7
-
1
+ import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '@atlaskit/editor-common/analytics';
2
+ import { removeMark, toggleMark } from '@atlaskit/editor-common/mark';
3
+ import { highlightColorPalette, REMOVE_HIGHLIGHT_COLOR } from '@atlaskit/editor-common/ui-color';
8
4
  import { HighlightPluginAction, highlightPluginKey } from '../pm-plugin';
9
- export var changeColor = function changeColor(_editorAnalyticsAPI) {
5
+ import { getActiveColor } from '../utils/color';
6
+ export var changeColor = function changeColor(editorAnalyticsAPI) {
10
7
  return function (_ref) {
11
8
  var color = _ref.color;
12
9
  return function (_ref2) {
13
10
  var tr = _ref2.tr;
11
+ var backgroundColor = tr.doc.type.schema.marks.backgroundColor;
12
+ if (!backgroundColor) {
13
+ return null;
14
+ }
15
+ editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent(createAnalyticsEvent(color, tr))(tr);
14
16
  tr.setMeta(highlightPluginKey, {
15
17
  type: HighlightPluginAction.CHANGE_COLOR,
16
18
  color: color
17
19
  });
18
-
19
- // editorAnalyticsAPI?.attachAnalyticsEvent({
20
- // action: ACTION.FORMATTED,
21
- // actionSubject: ACTION_SUBJECT.TEXT,
22
- // actionSubjectId: ACTION_SUBJECT_ID.FORMAT_BACKGROUND_COLOR,
23
- // eventType: EVENT_TYPE.TRACK,
24
- // })(tr);
25
-
20
+ tr.scrollIntoView();
21
+ if (color === REMOVE_HIGHLIGHT_COLOR) {
22
+ removeMark(backgroundColor)({
23
+ tr: tr
24
+ });
25
+ } else {
26
+ toggleMark(backgroundColor, {
27
+ color: color
28
+ })({
29
+ tr: tr
30
+ });
31
+ }
26
32
  return tr;
27
33
  };
28
34
  };
35
+ };
36
+ var createAnalyticsEvent = function createAnalyticsEvent(color, tr) {
37
+ var previousColor = getActiveColor(tr);
38
+ // get color names from palette
39
+ var newColorFromPalette = highlightColorPalette.find(function (_ref3) {
40
+ var value = _ref3.value;
41
+ return value === color;
42
+ });
43
+ var previousColorFromPalette = highlightColorPalette.find(function (_ref4) {
44
+ var value = _ref4.value;
45
+ return value === previousColor;
46
+ });
47
+ var newColorLabel = newColorFromPalette ? newColorFromPalette.label : color;
48
+ var previousColorLabel = previousColorFromPalette ? previousColorFromPalette.label : previousColor || '';
49
+ return {
50
+ action: ACTION.FORMATTED,
51
+ actionSubject: ACTION_SUBJECT.TEXT,
52
+ actionSubjectId: ACTION_SUBJECT_ID.FORMAT_BACKGROUND_COLOR,
53
+ eventType: EVENT_TYPE.TRACK,
54
+ attributes: {
55
+ newColor: newColorLabel.toLowerCase(),
56
+ previousColor: previousColorLabel.toLowerCase()
57
+ }
58
+ };
29
59
  };
@@ -0,0 +1,42 @@
1
+ import { REMOVE_HIGHLIGHT_COLOR } from '@atlaskit/editor-common/ui-color';
2
+ export var getActiveColor = function getActiveColor(tr) {
3
+ var _ref = tr.selection,
4
+ $from = _ref.$from,
5
+ $to = _ref.$to,
6
+ $cursor = _ref.$cursor;
7
+ var _ref2 = tr.doc.type.schema.marks,
8
+ backgroundColor = _ref2.backgroundColor;
9
+
10
+ // Filter out other marks
11
+ var marks = [];
12
+ if ($cursor) {
13
+ marks.push(backgroundColor.isInSet(tr.storedMarks || $cursor.marks()) || undefined);
14
+ } else {
15
+ tr.doc.nodesBetween($from.pos, $to.pos, function (currentNode) {
16
+ if (currentNode.isLeaf) {
17
+ var mark = backgroundColor.isInSet(currentNode.marks) || undefined;
18
+ marks.push(mark);
19
+ return !mark;
20
+ }
21
+ return true;
22
+ });
23
+ }
24
+
25
+ // Merge consecutive same color marks
26
+ var prevMark;
27
+ marks = marks.filter(function (mark) {
28
+ if (mark && prevMark && mark.attrs.color === prevMark.attrs.color) {
29
+ return false;
30
+ }
31
+ prevMark = mark;
32
+ return true;
33
+ });
34
+ var marksWithColor = marks.filter(function (mark) {
35
+ return !!mark;
36
+ });
37
+ // When multiple colors are selected revert back to default color
38
+ if (marksWithColor.length > 1 || marksWithColor.length === 1 && marks.length > 1) {
39
+ return null;
40
+ }
41
+ return marksWithColor.length ? marksWithColor[0].attrs.color : REMOVE_HIGHLIGHT_COLOR;
42
+ };
@@ -1,5 +1,5 @@
1
1
  import type { EditorAnalyticsAPI } from '@atlaskit/editor-common/analytics';
2
2
  import type { EditorCommand } from '@atlaskit/editor-common/types';
3
- export declare const changeColor: (_editorAnalyticsAPI: EditorAnalyticsAPI | undefined) => ({ color }: {
3
+ export declare const changeColor: (editorAnalyticsAPI: EditorAnalyticsAPI | undefined) => ({ color }: {
4
4
  color: string;
5
5
  }) => EditorCommand;
@@ -0,0 +1,2 @@
1
+ import type { Transaction } from '@atlaskit/editor-prosemirror/state';
2
+ export declare const getActiveColor: (tr: Transaction) => string | null;
@@ -1,5 +1,5 @@
1
1
  import type { EditorAnalyticsAPI } from '@atlaskit/editor-common/analytics';
2
2
  import type { EditorCommand } from '@atlaskit/editor-common/types';
3
- export declare const changeColor: (_editorAnalyticsAPI: EditorAnalyticsAPI | undefined) => ({ color }: {
3
+ export declare const changeColor: (editorAnalyticsAPI: EditorAnalyticsAPI | undefined) => ({ color }: {
4
4
  color: string;
5
5
  }) => EditorCommand;
@@ -0,0 +1,2 @@
1
+ import type { Transaction } from '@atlaskit/editor-prosemirror/state';
2
+ export declare const getActiveColor: (tr: Transaction) => string | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-highlight",
3
- "version": "1.3.0",
3
+ "version": "1.4.1",
4
4
  "description": "Highlight plugin for @atlaskit/editor-core",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -38,15 +38,15 @@
38
38
  ".": "./src/index.ts"
39
39
  },
40
40
  "dependencies": {
41
- "@atlaskit/adf-schema": "^36.3.0",
42
- "@atlaskit/editor-common": "^80.2.0",
41
+ "@atlaskit/adf-schema": "^36.8.0",
42
+ "@atlaskit/editor-common": "^80.4.0",
43
43
  "@atlaskit/editor-palette": "1.6.0",
44
44
  "@atlaskit/editor-plugin-analytics": "^1.2.0",
45
45
  "@atlaskit/editor-plugin-text-formatting": "^1.6.0",
46
46
  "@atlaskit/editor-prosemirror": "4.0.1",
47
47
  "@atlaskit/editor-shared-styles": "^2.11.0",
48
48
  "@atlaskit/icon": "^22.2.0",
49
- "@atlaskit/primitives": "^6.0.0",
49
+ "@atlaskit/primitives": "^6.2.0",
50
50
  "@babel/runtime": "^7.0.0",
51
51
  "@emotion/react": "^11.7.1"
52
52
  },