@atlaskit/editor-common 74.51.7 → 74.52.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.
Files changed (53) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/insert/index.js +1 -1
  3. package/dist/cjs/monitoring/error.js +1 -1
  4. package/dist/cjs/quick-insert/index.js +20 -1
  5. package/dist/cjs/quick-insert/utils.js +79 -0
  6. package/dist/cjs/ui/DropList/index.js +1 -1
  7. package/dist/cjs/ui-color/ColorPalette/index.js +8 -4
  8. package/dist/cjs/ui-color/ColorPalette/utils.js +16 -1
  9. package/dist/cjs/utils/dedupe.js +37 -0
  10. package/dist/cjs/utils/index.js +7 -0
  11. package/dist/es2019/insert/index.js +1 -1
  12. package/dist/es2019/monitoring/error.js +1 -1
  13. package/dist/es2019/quick-insert/index.js +2 -1
  14. package/dist/es2019/quick-insert/utils.js +58 -0
  15. package/dist/es2019/ui/DropList/index.js +1 -1
  16. package/dist/es2019/ui-color/ColorPalette/index.js +9 -5
  17. package/dist/es2019/ui-color/ColorPalette/utils.js +14 -1
  18. package/dist/es2019/utils/dedupe.js +25 -0
  19. package/dist/es2019/utils/index.js +2 -1
  20. package/dist/esm/insert/index.js +1 -1
  21. package/dist/esm/monitoring/error.js +1 -1
  22. package/dist/esm/quick-insert/index.js +2 -1
  23. package/dist/esm/quick-insert/utils.js +69 -0
  24. package/dist/esm/ui/DropList/index.js +1 -1
  25. package/dist/esm/ui-color/ColorPalette/index.js +9 -5
  26. package/dist/esm/ui-color/ColorPalette/utils.js +14 -1
  27. package/dist/esm/utils/dedupe.js +31 -0
  28. package/dist/esm/utils/index.js +2 -1
  29. package/dist/types/insert/index.d.ts +4 -3
  30. package/dist/types/link/LinkSearch/index.d.ts +4 -4
  31. package/dist/types/link/LinkSearch/withActivityProvider.d.ts +4 -4
  32. package/dist/types/quick-insert/index.d.ts +1 -0
  33. package/dist/types/quick-insert/utils.d.ts +12 -0
  34. package/dist/types/types/index.d.ts +1 -1
  35. package/dist/types/types/quick-insert.d.ts +13 -0
  36. package/dist/types/ui/OverflowShadow/index.d.ts +4 -4
  37. package/dist/types/ui-color/ColorPalette/index.d.ts +4 -10
  38. package/dist/types/ui-color/ColorPalette/utils.d.ts +2 -1
  39. package/dist/types/utils/dedupe.d.ts +1 -0
  40. package/dist/types/utils/index.d.ts +1 -0
  41. package/dist/types-ts4.5/insert/index.d.ts +4 -3
  42. package/dist/types-ts4.5/link/LinkSearch/index.d.ts +4 -4
  43. package/dist/types-ts4.5/link/LinkSearch/withActivityProvider.d.ts +4 -4
  44. package/dist/types-ts4.5/quick-insert/index.d.ts +1 -0
  45. package/dist/types-ts4.5/quick-insert/utils.d.ts +12 -0
  46. package/dist/types-ts4.5/types/index.d.ts +1 -1
  47. package/dist/types-ts4.5/types/quick-insert.d.ts +13 -0
  48. package/dist/types-ts4.5/ui/OverflowShadow/index.d.ts +4 -4
  49. package/dist/types-ts4.5/ui-color/ColorPalette/index.d.ts +4 -10
  50. package/dist/types-ts4.5/ui-color/ColorPalette/utils.d.ts +2 -1
  51. package/dist/types-ts4.5/utils/dedupe.d.ts +1 -0
  52. package/dist/types-ts4.5/utils/index.d.ts +1 -0
  53. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @atlaskit/editor-common
2
2
 
3
+ ## 74.52.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`dbccd831543`](https://bitbucket.org/atlassian/atlassian-frontend/commits/dbccd831543) - [ux] tokenize ColorPicker, make charts package compatible with tokens, make check mark compatible with tokens
8
+
9
+ ## 74.52.0
10
+
11
+ ### Minor Changes
12
+
13
+ - [`c70a6612aba`](https://bitbucket.org/atlassian/atlassian-frontend/commits/c70a6612aba) - [ED-19428] Decouple quick-insert plugin from editor-core
14
+
3
15
  ## 74.51.7
4
16
 
5
17
  ### Patch Changes
@@ -194,7 +194,7 @@ var finaliseInsert = function finaliseInsert(tr, nodeLength) {
194
194
  };
195
195
 
196
196
  /**
197
- * Method extracted from typeahed plugin to be shared with the element browser on handling element insertion.
197
+ * Method extracted from typeahead plugin to be shared with the element browser on handling element insertion.
198
198
  */
199
199
  var insertSelectedItem = function insertSelectedItem(maybeNode) {
200
200
  var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
@@ -16,7 +16,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
16
16
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
17
  var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
18
18
  var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
19
- var packageVersion = "74.51.7";
19
+ var packageVersion = "74.52.1";
20
20
  var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
21
21
  // Remove URL as it has UGC
22
22
  // TODO: Sanitise the URL instead of just removing it
@@ -159,4 +159,23 @@ Object.defineProperty(exports, "IconStatus", {
159
159
  return _assets.IconStatus;
160
160
  }
161
161
  });
162
- var _assets = require("./assets");
162
+ Object.defineProperty(exports, "find", {
163
+ enumerable: true,
164
+ get: function get() {
165
+ return _utils.find;
166
+ }
167
+ });
168
+ Object.defineProperty(exports, "getQuickInsertSuggestions", {
169
+ enumerable: true,
170
+ get: function get() {
171
+ return _utils.getQuickInsertSuggestions;
172
+ }
173
+ });
174
+ Object.defineProperty(exports, "memoProcessQuickInsertItems", {
175
+ enumerable: true,
176
+ get: function get() {
177
+ return _utils.memoProcessQuickInsertItems;
178
+ }
179
+ });
180
+ var _assets = require("./assets");
181
+ var _utils = require("./utils");
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.find = find;
8
+ exports.memoProcessQuickInsertItems = exports.getQuickInsertSuggestions = void 0;
9
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
+ var _fuse = _interopRequireDefault(require("fuse.js"));
11
+ var _memoizeOne = _interopRequireDefault(require("memoize-one"));
12
+ var _utils = require("../utils");
13
+ var processQuickInsertItems = function processQuickInsertItems(items, intl) {
14
+ return items.reduce(function (acc, item) {
15
+ if (typeof item === 'function') {
16
+ var quickInsertItems = item(intl);
17
+ return acc.concat(quickInsertItems);
18
+ }
19
+ return acc.concat(item);
20
+ }, []);
21
+ };
22
+ var memoProcessQuickInsertItems = (0, _memoizeOne.default)(processQuickInsertItems);
23
+ exports.memoProcessQuickInsertItems = memoProcessQuickInsertItems;
24
+ var options = {
25
+ threshold: 0.3,
26
+ keys: [{
27
+ name: 'title',
28
+ weight: 0.57
29
+ }, {
30
+ name: 'priority',
31
+ weight: 0.3
32
+ }, {
33
+ name: 'keywords',
34
+ weight: 0.08
35
+ }, {
36
+ name: 'description',
37
+ weight: 0.04
38
+ }, {
39
+ name: 'keyshortcut',
40
+ weight: 0.01
41
+ }]
42
+ };
43
+ function find(query, items) {
44
+ var fuse = new _fuse.default(items, options);
45
+ if (query === '') {
46
+ // Copy and sort list by priority
47
+ return items.slice(0).sort(function (a, b) {
48
+ return (a.priority || Number.POSITIVE_INFINITY) - (b.priority || Number.POSITIVE_INFINITY);
49
+ });
50
+ }
51
+ return fuse.search(query).map(function (result) {
52
+ return result.item;
53
+ });
54
+ }
55
+ var getQuickInsertSuggestions = function getQuickInsertSuggestions(_ref) {
56
+ var searchOptions = _ref.searchOptions,
57
+ _ref$lazyDefaultItems = _ref.lazyDefaultItems,
58
+ lazyDefaultItems = _ref$lazyDefaultItems === void 0 ? function () {
59
+ return [];
60
+ } : _ref$lazyDefaultItems,
61
+ providedItems = _ref.providedItems;
62
+ var query = searchOptions.query,
63
+ category = searchOptions.category,
64
+ disableDefaultItems = searchOptions.disableDefaultItems,
65
+ featuredItems = searchOptions.featuredItems;
66
+ var defaultItems = disableDefaultItems ? [] : lazyDefaultItems();
67
+ var items = providedItems ? (0, _utils.dedupe)([].concat((0, _toConsumableArray2.default)(defaultItems), (0, _toConsumableArray2.default)(providedItems)), function (item) {
68
+ return item.title;
69
+ }) : defaultItems;
70
+ if (featuredItems) {
71
+ return items.filter(function (item) {
72
+ return item.featured;
73
+ });
74
+ }
75
+ return find(query || '', category === 'all' || !category ? items : items.filter(function (item) {
76
+ return item.categories && item.categories.includes(category);
77
+ }));
78
+ };
79
+ exports.getQuickInsertSuggestions = getQuickInsertSuggestions;
@@ -24,7 +24,7 @@ var _templateObject, _templateObject2, _templateObject3;
24
24
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
25
25
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /** @jsx jsx */
26
26
  var packageName = "@atlaskit/editor-common";
27
- var packageVersion = "74.51.7";
27
+ var packageVersion = "74.52.1";
28
28
  var halfFocusRing = 1;
29
29
  var dropOffset = '0, 8';
30
30
  var DropList = /*#__PURE__*/function (_Component) {
@@ -21,13 +21,17 @@ var _utils = require("./utils");
21
21
  * For a given color pick the color from a list of colors with
22
22
  * the highest contrast
23
23
  *
24
- * @param color color string, suppports HEX, RGB, RGBA etc.
24
+ * @param color color string, supports HEX, RGB, RGBA etc.
25
+ * @param useIconToken boolean, describes if a token should be used for the icon color
25
26
  * @return Highest contrast color in pool
26
27
  */
27
28
  function getCheckMarkColor(color, useIconToken) {
29
+ var tokenVal = (0, _utils.getTokenCSSVariableValue)(color);
30
+ var colorValue = !!tokenVal ? tokenVal : color;
31
+
28
32
  // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
29
33
  var contrastColor = [_colors.N0, _colors.N500].sort(function (a, b) {
30
- return _chromatism.default.difference(b, color) - _chromatism.default.difference(a, color);
34
+ return _chromatism.default.difference(b, colorValue) - _chromatism.default.difference(a, colorValue);
31
35
  })[0];
32
36
  if (!useIconToken) {
33
37
  return contrastColor;
@@ -58,13 +62,13 @@ var ColorPalette = function ColorPalette(props) {
58
62
  var colorsPerRow = _react.default.useMemo(function () {
59
63
  return (0, _utils.getColorsPerRowFromPalette)(palette, cols);
60
64
  }, [palette, cols]);
61
- return (0, _react2.jsx)(_react.default.Fragment, null, colorsPerRow.map(function (row, rowIdx) {
65
+ return (0, _react2.jsx)(_react.default.Fragment, null, colorsPerRow.map(function (row) {
62
66
  return (0, _react2.jsx)("div", {
63
67
  css: _styles.colorPaletteWrapper,
64
68
  className: className,
65
69
  key: "row-first-color-".concat(row[0].value),
66
70
  role: "radiogroup"
67
- }, row.map(function (_ref, colorIdx) {
71
+ }, row.map(function (_ref) {
68
72
  var value = _ref.value,
69
73
  label = _ref.label,
70
74
  border = _ref.border,
@@ -7,6 +7,7 @@ exports.DEFAULT_COLOR_PICKER_COLUMNS = void 0;
7
7
  exports.getColorsPerRowFromPalette = getColorsPerRowFromPalette;
8
8
  exports.getSelectedRowAndColumn = getSelectedRowAndColumn;
9
9
  exports.getSelectedRowAndColumnFromPalette = getSelectedRowAndColumnFromPalette;
10
+ exports.getTokenCSSVariableValue = void 0;
10
11
  var DEFAULT_COLOR_PICKER_COLUMNS = 7;
11
12
  exports.DEFAULT_COLOR_PICKER_COLUMNS = DEFAULT_COLOR_PICKER_COLUMNS;
12
13
  function getColorsPerRowFromPalette(palette) {
@@ -39,4 +40,18 @@ function getSelectedRowAndColumnFromPalette(palette, selectedColor) {
39
40
  var cols = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_COLOR_PICKER_COLUMNS;
40
41
  var colorsPerRow = getColorsPerRowFromPalette(palette, cols);
41
42
  return getSelectedRowAndColumn(colorsPerRow, selectedColor);
42
- }
43
+ }
44
+ var getTokenCSSVariableValue = function getTokenCSSVariableValue(variableExpression) {
45
+ var matcher = variableExpression.match(/var\(([^,\)]+)(,.*)?\)/);
46
+ if (matcher) {
47
+ var variable = matcher[1].trim();
48
+ var fallback = matcher[2] ? matcher[2].replace(',', '').trim() : '';
49
+ if (typeof document === 'undefined') {
50
+ return fallback;
51
+ }
52
+ var value = window.getComputedStyle(document.documentElement).getPropertyValue(variable).trim();
53
+ return value || fallback;
54
+ }
55
+ return '';
56
+ };
57
+ exports.getTokenCSSVariableValue = getTokenCSSVariableValue;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.dedupe = dedupe;
7
+ function dedupe() {
8
+ var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
9
+ var iteratee = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (p) {
10
+ return p;
11
+ };
12
+ /**
13
+ .,
14
+ . _,'f----.._
15
+ |\ ,-'"/ | ,'
16
+ |,_ ,--. /
17
+ /,-. ,'`. (_
18
+ f o| o|__ "`-.
19
+ ,-._.,--'_ `. _.,-`
20
+ `"' ___.,'` j,-'
21
+ `-.__.,--'
22
+ Gotta go fast!
23
+ */
24
+
25
+ var seen = new Set();
26
+ list.forEach(function (l) {
27
+ return seen.add(iteratee(l));
28
+ });
29
+ return list.filter(function (l) {
30
+ var it = iteratee(l);
31
+ if (seen.has(it)) {
32
+ seen.delete(it);
33
+ return true;
34
+ }
35
+ return false;
36
+ });
37
+ }
@@ -281,6 +281,12 @@ Object.defineProperty(exports, "createWrappingJoinRule", {
281
281
  return _inputRules.createWrappingJoinRule;
282
282
  }
283
283
  });
284
+ Object.defineProperty(exports, "dedupe", {
285
+ enumerable: true,
286
+ get: function get() {
287
+ return _dedupe.dedupe;
288
+ }
289
+ });
284
290
  Object.defineProperty(exports, "deleteEmptyParagraphAndMoveBlockUp", {
285
291
  enumerable: true,
286
292
  get: function get() {
@@ -1047,6 +1053,7 @@ var _scrollGutter = require("./scroll-gutter");
1047
1053
  var _getPerformanceTiming = require("./performance/get-performance-timing");
1048
1054
  var _countNodes = require("./count-nodes");
1049
1055
  var _inputRules = require("./input-rules");
1056
+ var _dedupe = require("./dedupe");
1050
1057
  // prosemirror-history does not export its plugin key
1051
1058
  var pmHistoryPluginKey = 'history$';
1052
1059
  exports.pmHistoryPluginKey = pmHistoryPluginKey;
@@ -188,7 +188,7 @@ const finaliseInsert = (tr, nodeLength) => {
188
188
  };
189
189
 
190
190
  /**
191
- * Method extracted from typeahed plugin to be shared with the element browser on handling element insertion.
191
+ * Method extracted from typeahead plugin to be shared with the element browser on handling element insertion.
192
192
  */
193
193
  export const insertSelectedItem = (maybeNode, opts = {}) => (state, tr, start) => {
194
194
  if (!maybeNode) {
@@ -1,6 +1,6 @@
1
1
  const SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
2
2
  const packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
3
- const packageVersion = "74.51.7";
3
+ const packageVersion = "74.52.1";
4
4
  const sanitiseSentryEvents = (data, _hint) => {
5
5
  // Remove URL as it has UGC
6
6
  // TODO: Sanitise the URL instead of just removing it
@@ -1 +1,2 @@
1
- export { IconAction, IconCode, IconDate, IconDecision, IconDivider, IconEmoji, IconImages, IconLayout, IconLink, IconListNumber, IconList, IconMention, IconPanelError, IconPanelNote, IconPanelSuccess, IconPanelWarning, IconPanel, IconQuote, IconStatus, IconHeading, IconFeedback, IconExpand, IconCustomPanel, IconFallback, IconDatasourceJiraIssue, IconDatasourceAssetsObjects } from './assets';
1
+ export { IconAction, IconCode, IconDate, IconDecision, IconDivider, IconEmoji, IconImages, IconLayout, IconLink, IconListNumber, IconList, IconMention, IconPanelError, IconPanelNote, IconPanelSuccess, IconPanelWarning, IconPanel, IconQuote, IconStatus, IconHeading, IconFeedback, IconExpand, IconCustomPanel, IconFallback, IconDatasourceJiraIssue, IconDatasourceAssetsObjects } from './assets';
2
+ export { memoProcessQuickInsertItems, getQuickInsertSuggestions, find } from './utils';
@@ -0,0 +1,58 @@
1
+ import Fuse from 'fuse.js';
2
+ import memoizeOne from 'memoize-one';
3
+ import { dedupe } from '../utils';
4
+ const processQuickInsertItems = (items, intl) => {
5
+ return items.reduce((acc, item) => {
6
+ if (typeof item === 'function') {
7
+ const quickInsertItems = item(intl);
8
+ return acc.concat(quickInsertItems);
9
+ }
10
+ return acc.concat(item);
11
+ }, []);
12
+ };
13
+ export const memoProcessQuickInsertItems = memoizeOne(processQuickInsertItems);
14
+ const options = {
15
+ threshold: 0.3,
16
+ keys: [{
17
+ name: 'title',
18
+ weight: 0.57
19
+ }, {
20
+ name: 'priority',
21
+ weight: 0.3
22
+ }, {
23
+ name: 'keywords',
24
+ weight: 0.08
25
+ }, {
26
+ name: 'description',
27
+ weight: 0.04
28
+ }, {
29
+ name: 'keyshortcut',
30
+ weight: 0.01
31
+ }]
32
+ };
33
+ export function find(query, items) {
34
+ const fuse = new Fuse(items, options);
35
+ if (query === '') {
36
+ // Copy and sort list by priority
37
+ return items.slice(0).sort((a, b) => (a.priority || Number.POSITIVE_INFINITY) - (b.priority || Number.POSITIVE_INFINITY));
38
+ }
39
+ return fuse.search(query).map(result => result.item);
40
+ }
41
+ export const getQuickInsertSuggestions = ({
42
+ searchOptions,
43
+ lazyDefaultItems = () => [],
44
+ providedItems
45
+ }) => {
46
+ const {
47
+ query,
48
+ category,
49
+ disableDefaultItems,
50
+ featuredItems
51
+ } = searchOptions;
52
+ const defaultItems = disableDefaultItems ? [] : lazyDefaultItems();
53
+ const items = providedItems ? dedupe([...defaultItems, ...providedItems], item => item.title) : defaultItems;
54
+ if (featuredItems) {
55
+ return items.filter(item => item.featured);
56
+ }
57
+ return find(query || '', category === 'all' || !category ? items : items.filter(item => item.categories && item.categories.includes(category)));
58
+ };
@@ -8,7 +8,7 @@ import { themed } from '@atlaskit/theme/components';
8
8
  import { borderRadius } from '@atlaskit/theme/constants';
9
9
  import Layer from '../Layer';
10
10
  const packageName = "@atlaskit/editor-common";
11
- const packageVersion = "74.51.7";
11
+ const packageVersion = "74.52.1";
12
12
  const halfFocusRing = 1;
13
13
  const dropOffset = '0, 8';
14
14
  class DropList extends Component {
@@ -8,17 +8,21 @@ import { useThemeObserver } from '@atlaskit/tokens';
8
8
  import Color from './Color';
9
9
  import getColorMessage from './Palettes/getColorMessage';
10
10
  import { colorPaletteWrapper } from './styles';
11
- import { DEFAULT_COLOR_PICKER_COLUMNS, getColorsPerRowFromPalette } from './utils';
11
+ import { DEFAULT_COLOR_PICKER_COLUMNS, getColorsPerRowFromPalette, getTokenCSSVariableValue } from './utils';
12
12
  /**
13
13
  * For a given color pick the color from a list of colors with
14
14
  * the highest contrast
15
15
  *
16
- * @param color color string, suppports HEX, RGB, RGBA etc.
16
+ * @param color color string, supports HEX, RGB, RGBA etc.
17
+ * @param useIconToken boolean, describes if a token should be used for the icon color
17
18
  * @return Highest contrast color in pool
18
19
  */
19
20
  function getCheckMarkColor(color, useIconToken) {
21
+ const tokenVal = getTokenCSSVariableValue(color);
22
+ const colorValue = !!tokenVal ? tokenVal : color;
23
+
20
24
  // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
21
- const contrastColor = [N0, N500].sort((a, b) => chromatism.difference(b, color) - chromatism.difference(a, color))[0];
25
+ const contrastColor = [N0, N500].sort((a, b) => chromatism.difference(b, colorValue) - chromatism.difference(a, colorValue))[0];
22
26
  if (!useIconToken) {
23
27
  return contrastColor;
24
28
  }
@@ -53,7 +57,7 @@ const ColorPalette = props => {
53
57
  const colorsPerRow = React.useMemo(() => {
54
58
  return getColorsPerRowFromPalette(palette, cols);
55
59
  }, [palette, cols]);
56
- return jsx(React.Fragment, null, colorsPerRow.map((row, rowIdx) => jsx("div", {
60
+ return jsx(React.Fragment, null, colorsPerRow.map(row => jsx("div", {
57
61
  css: colorPaletteWrapper,
58
62
  className: className,
59
63
  key: `row-first-color-${row[0].value}`,
@@ -63,7 +67,7 @@ const ColorPalette = props => {
63
67
  label,
64
68
  border,
65
69
  message
66
- }, colorIdx) => {
70
+ }) => {
67
71
  if (showSomewhatSemanticTooltips && paletteColorTooltipMessages) {
68
72
  if (tokenTheme === 'dark') {
69
73
  message = getColorMessage(paletteColorTooltipMessages.dark, value.toUpperCase());
@@ -28,4 +28,17 @@ export function getSelectedRowAndColumn(colorsPerRow, selectedColor) {
28
28
  export function getSelectedRowAndColumnFromPalette(palette, selectedColor, cols = DEFAULT_COLOR_PICKER_COLUMNS) {
29
29
  const colorsPerRow = getColorsPerRowFromPalette(palette, cols);
30
30
  return getSelectedRowAndColumn(colorsPerRow, selectedColor);
31
- }
31
+ }
32
+ export const getTokenCSSVariableValue = variableExpression => {
33
+ const matcher = variableExpression.match(/var\(([^,\)]+)(,.*)?\)/);
34
+ if (matcher) {
35
+ const variable = matcher[1].trim();
36
+ const fallback = matcher[2] ? matcher[2].replace(',', '').trim() : '';
37
+ if (typeof document === 'undefined') {
38
+ return fallback;
39
+ }
40
+ const value = window.getComputedStyle(document.documentElement).getPropertyValue(variable).trim();
41
+ return value || fallback;
42
+ }
43
+ return '';
44
+ };
@@ -0,0 +1,25 @@
1
+ export function dedupe(list = [], iteratee = p => p) {
2
+ /**
3
+ .,
4
+ . _,'f----.._
5
+ |\ ,-'"/ | ,'
6
+ |,_ ,--. /
7
+ /,-. ,'`. (_
8
+ f o| o|__ "`-.
9
+ ,-._.,--'_ `. _.,-`
10
+ `"' ___.,'` j,-'
11
+ `-.__.,--'
12
+ Gotta go fast!
13
+ */
14
+
15
+ const seen = new Set();
16
+ list.forEach(l => seen.add(iteratee(l)));
17
+ return list.filter(l => {
18
+ const it = iteratee(l);
19
+ if (seen.has(it)) {
20
+ seen.delete(it);
21
+ return true;
22
+ }
23
+ return false;
24
+ });
25
+ }
@@ -192,4 +192,5 @@ export function isNodeEmpty(node) {
192
192
  child.isInline ? nonBlock.push(child) : block.push(child);
193
193
  });
194
194
  return !nonBlock.length && !block.filter(childNode => !!childNode.childCount && !(childNode.childCount === 1 && isEmptyParagraph(childNode.firstChild)) || childNode.isAtom).length;
195
- }
195
+ }
196
+ export { dedupe } from './dedupe';
@@ -184,7 +184,7 @@ var finaliseInsert = function finaliseInsert(tr, nodeLength) {
184
184
  };
185
185
 
186
186
  /**
187
- * Method extracted from typeahed plugin to be shared with the element browser on handling element insertion.
187
+ * Method extracted from typeahead plugin to be shared with the element browser on handling element insertion.
188
188
  */
189
189
  export var insertSelectedItem = function insertSelectedItem(maybeNode) {
190
190
  var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
@@ -6,7 +6,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
6
6
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7
7
  var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
8
8
  var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
9
- var packageVersion = "74.51.7";
9
+ var packageVersion = "74.52.1";
10
10
  var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
11
11
  // Remove URL as it has UGC
12
12
  // TODO: Sanitise the URL instead of just removing it
@@ -1 +1,2 @@
1
- export { IconAction, IconCode, IconDate, IconDecision, IconDivider, IconEmoji, IconImages, IconLayout, IconLink, IconListNumber, IconList, IconMention, IconPanelError, IconPanelNote, IconPanelSuccess, IconPanelWarning, IconPanel, IconQuote, IconStatus, IconHeading, IconFeedback, IconExpand, IconCustomPanel, IconFallback, IconDatasourceJiraIssue, IconDatasourceAssetsObjects } from './assets';
1
+ export { IconAction, IconCode, IconDate, IconDecision, IconDivider, IconEmoji, IconImages, IconLayout, IconLink, IconListNumber, IconList, IconMention, IconPanelError, IconPanelNote, IconPanelSuccess, IconPanelWarning, IconPanel, IconQuote, IconStatus, IconHeading, IconFeedback, IconExpand, IconCustomPanel, IconFallback, IconDatasourceJiraIssue, IconDatasourceAssetsObjects } from './assets';
2
+ export { memoProcessQuickInsertItems, getQuickInsertSuggestions, find } from './utils';
@@ -0,0 +1,69 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ import Fuse from 'fuse.js';
3
+ import memoizeOne from 'memoize-one';
4
+ import { dedupe } from '../utils';
5
+ var processQuickInsertItems = function processQuickInsertItems(items, intl) {
6
+ return items.reduce(function (acc, item) {
7
+ if (typeof item === 'function') {
8
+ var quickInsertItems = item(intl);
9
+ return acc.concat(quickInsertItems);
10
+ }
11
+ return acc.concat(item);
12
+ }, []);
13
+ };
14
+ export var memoProcessQuickInsertItems = memoizeOne(processQuickInsertItems);
15
+ var options = {
16
+ threshold: 0.3,
17
+ keys: [{
18
+ name: 'title',
19
+ weight: 0.57
20
+ }, {
21
+ name: 'priority',
22
+ weight: 0.3
23
+ }, {
24
+ name: 'keywords',
25
+ weight: 0.08
26
+ }, {
27
+ name: 'description',
28
+ weight: 0.04
29
+ }, {
30
+ name: 'keyshortcut',
31
+ weight: 0.01
32
+ }]
33
+ };
34
+ export function find(query, items) {
35
+ var fuse = new Fuse(items, options);
36
+ if (query === '') {
37
+ // Copy and sort list by priority
38
+ return items.slice(0).sort(function (a, b) {
39
+ return (a.priority || Number.POSITIVE_INFINITY) - (b.priority || Number.POSITIVE_INFINITY);
40
+ });
41
+ }
42
+ return fuse.search(query).map(function (result) {
43
+ return result.item;
44
+ });
45
+ }
46
+ export var getQuickInsertSuggestions = function getQuickInsertSuggestions(_ref) {
47
+ var searchOptions = _ref.searchOptions,
48
+ _ref$lazyDefaultItems = _ref.lazyDefaultItems,
49
+ lazyDefaultItems = _ref$lazyDefaultItems === void 0 ? function () {
50
+ return [];
51
+ } : _ref$lazyDefaultItems,
52
+ providedItems = _ref.providedItems;
53
+ var query = searchOptions.query,
54
+ category = searchOptions.category,
55
+ disableDefaultItems = searchOptions.disableDefaultItems,
56
+ featuredItems = searchOptions.featuredItems;
57
+ var defaultItems = disableDefaultItems ? [] : lazyDefaultItems();
58
+ var items = providedItems ? dedupe([].concat(_toConsumableArray(defaultItems), _toConsumableArray(providedItems)), function (item) {
59
+ return item.title;
60
+ }) : defaultItems;
61
+ if (featuredItems) {
62
+ return items.filter(function (item) {
63
+ return item.featured;
64
+ });
65
+ }
66
+ return find(query || '', category === 'all' || !category ? items : items.filter(function (item) {
67
+ return item.categories && item.categories.includes(category);
68
+ }));
69
+ };
@@ -18,7 +18,7 @@ import { themed } from '@atlaskit/theme/components';
18
18
  import { borderRadius } from '@atlaskit/theme/constants';
19
19
  import Layer from '../Layer';
20
20
  var packageName = "@atlaskit/editor-common";
21
- var packageVersion = "74.51.7";
21
+ var packageVersion = "74.52.1";
22
22
  var halfFocusRing = 1;
23
23
  var dropOffset = '0, 8';
24
24
  var DropList = /*#__PURE__*/function (_Component) {
@@ -8,18 +8,22 @@ import { useThemeObserver } from '@atlaskit/tokens';
8
8
  import Color from './Color';
9
9
  import getColorMessage from './Palettes/getColorMessage';
10
10
  import { colorPaletteWrapper } from './styles';
11
- import { DEFAULT_COLOR_PICKER_COLUMNS, getColorsPerRowFromPalette } from './utils';
11
+ import { DEFAULT_COLOR_PICKER_COLUMNS, getColorsPerRowFromPalette, getTokenCSSVariableValue } from './utils';
12
12
  /**
13
13
  * For a given color pick the color from a list of colors with
14
14
  * the highest contrast
15
15
  *
16
- * @param color color string, suppports HEX, RGB, RGBA etc.
16
+ * @param color color string, supports HEX, RGB, RGBA etc.
17
+ * @param useIconToken boolean, describes if a token should be used for the icon color
17
18
  * @return Highest contrast color in pool
18
19
  */
19
20
  function getCheckMarkColor(color, useIconToken) {
21
+ var tokenVal = getTokenCSSVariableValue(color);
22
+ var colorValue = !!tokenVal ? tokenVal : color;
23
+
20
24
  // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
21
25
  var contrastColor = [N0, N500].sort(function (a, b) {
22
- return chromatism.difference(b, color) - chromatism.difference(a, color);
26
+ return chromatism.difference(b, colorValue) - chromatism.difference(a, colorValue);
23
27
  })[0];
24
28
  if (!useIconToken) {
25
29
  return contrastColor;
@@ -50,13 +54,13 @@ var ColorPalette = function ColorPalette(props) {
50
54
  var colorsPerRow = React.useMemo(function () {
51
55
  return getColorsPerRowFromPalette(palette, cols);
52
56
  }, [palette, cols]);
53
- return jsx(React.Fragment, null, colorsPerRow.map(function (row, rowIdx) {
57
+ return jsx(React.Fragment, null, colorsPerRow.map(function (row) {
54
58
  return jsx("div", {
55
59
  css: colorPaletteWrapper,
56
60
  className: className,
57
61
  key: "row-first-color-".concat(row[0].value),
58
62
  role: "radiogroup"
59
- }, row.map(function (_ref, colorIdx) {
63
+ }, row.map(function (_ref) {
60
64
  var value = _ref.value,
61
65
  label = _ref.label,
62
66
  border = _ref.border,
@@ -29,4 +29,17 @@ export function getSelectedRowAndColumnFromPalette(palette, selectedColor) {
29
29
  var cols = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_COLOR_PICKER_COLUMNS;
30
30
  var colorsPerRow = getColorsPerRowFromPalette(palette, cols);
31
31
  return getSelectedRowAndColumn(colorsPerRow, selectedColor);
32
- }
32
+ }
33
+ export var getTokenCSSVariableValue = function getTokenCSSVariableValue(variableExpression) {
34
+ var matcher = variableExpression.match(/var\(([^,\)]+)(,.*)?\)/);
35
+ if (matcher) {
36
+ var variable = matcher[1].trim();
37
+ var fallback = matcher[2] ? matcher[2].replace(',', '').trim() : '';
38
+ if (typeof document === 'undefined') {
39
+ return fallback;
40
+ }
41
+ var value = window.getComputedStyle(document.documentElement).getPropertyValue(variable).trim();
42
+ return value || fallback;
43
+ }
44
+ return '';
45
+ };
@@ -0,0 +1,31 @@
1
+ export function dedupe() {
2
+ var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
3
+ var iteratee = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (p) {
4
+ return p;
5
+ };
6
+ /**
7
+ .,
8
+ . _,'f----.._
9
+ |\ ,-'"/ | ,'
10
+ |,_ ,--. /
11
+ /,-. ,'`. (_
12
+ f o| o|__ "`-.
13
+ ,-._.,--'_ `. _.,-`
14
+ `"' ___.,'` j,-'
15
+ `-.__.,--'
16
+ Gotta go fast!
17
+ */
18
+
19
+ var seen = new Set();
20
+ list.forEach(function (l) {
21
+ return seen.add(iteratee(l));
22
+ });
23
+ return list.filter(function (l) {
24
+ var it = iteratee(l);
25
+ if (seen.has(it)) {
26
+ seen.delete(it);
27
+ return true;
28
+ }
29
+ return false;
30
+ });
31
+ }
@@ -198,4 +198,5 @@ export function isNodeEmpty(node) {
198
198
  return !nonBlock.length && !block.filter(function (childNode) {
199
199
  return !!childNode.childCount && !(childNode.childCount === 1 && isEmptyParagraph(childNode.firstChild)) || childNode.isAtom;
200
200
  }).length;
201
- }
201
+ }
202
+ export { dedupe } from './dedupe';
@@ -1,5 +1,6 @@
1
- import { Fragment, Node, NodeType } from '@atlaskit/editor-prosemirror/model';
2
- import { EditorState, Transaction } from '@atlaskit/editor-prosemirror/state';
1
+ import type { NodeType } from '@atlaskit/editor-prosemirror/model';
2
+ import { Fragment, Node } from '@atlaskit/editor-prosemirror/model';
3
+ import type { EditorState, Transaction } from '@atlaskit/editor-prosemirror/state';
3
4
  export type InsertableContent = Node | Fragment;
4
5
  export declare enum LookDirection {
5
6
  Before = "before",
@@ -8,7 +9,7 @@ export declare enum LookDirection {
8
9
  export declare const normaliseNestedLayout: ({ selection, doc }: EditorState | Transaction, node: Node) => Node;
9
10
  export declare const safeInsert: (content: InsertableContent, position?: number) => (tr: Transaction) => Transaction | null;
10
11
  /**
11
- * Method extracted from typeahed plugin to be shared with the element browser on handling element insertion.
12
+ * Method extracted from typeahead plugin to be shared with the element browser on handling element insertion.
12
13
  */
13
14
  export declare const insertSelectedItem: (maybeNode?: Node | Object | string | Fragment, opts?: {
14
15
  selectInlineNode?: boolean;
@@ -2,12 +2,12 @@ import React from 'react';
2
2
  import { RecentSearchProps } from './types';
3
3
  import { WithActivityProviderProps } from './withActivityProvider';
4
4
  declare const _default: {
5
- new (props: Readonly<import("../../utils").Diff<RecentSearchProps & WithActivityProviderProps, WithActivityProviderProps> & import("./withActivityProvider").ExpandedActivityProviderProps>): {
5
+ new (props: (import("../../utils").Diff<RecentSearchProps & WithActivityProviderProps, WithActivityProviderProps> & import("./withActivityProvider").ExpandedActivityProviderProps) | Readonly<import("../../utils").Diff<RecentSearchProps & WithActivityProviderProps, WithActivityProviderProps> & import("./withActivityProvider").ExpandedActivityProviderProps>): {
6
6
  renderNode: (providers: import("../../provider-factory").Providers) => JSX.Element;
7
7
  render(): JSX.Element;
8
8
  context: any;
9
9
  setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<import("../../utils").Diff<RecentSearchProps & WithActivityProviderProps, WithActivityProviderProps> & import("./withActivityProvider").ExpandedActivityProviderProps>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
10
- forceUpdate(callBack?: (() => void) | undefined): void;
10
+ forceUpdate(callback?: (() => void) | undefined): void;
11
11
  readonly props: Readonly<import("../../utils").Diff<RecentSearchProps & WithActivityProviderProps, WithActivityProviderProps> & import("./withActivityProvider").ExpandedActivityProviderProps> & Readonly<{
12
12
  children?: React.ReactNode;
13
13
  }>;
@@ -28,12 +28,12 @@ declare const _default: {
28
28
  componentWillUpdate?(nextProps: Readonly<import("../../utils").Diff<RecentSearchProps & WithActivityProviderProps, WithActivityProviderProps> & import("./withActivityProvider").ExpandedActivityProviderProps>, nextState: Readonly<{}>, nextContext: any): void;
29
29
  UNSAFE_componentWillUpdate?(nextProps: Readonly<import("../../utils").Diff<RecentSearchProps & WithActivityProviderProps, WithActivityProviderProps> & import("./withActivityProvider").ExpandedActivityProviderProps>, nextState: Readonly<{}>, nextContext: any): void;
30
30
  };
31
- new (props: import("../../utils").Diff<RecentSearchProps & WithActivityProviderProps, WithActivityProviderProps> & import("./withActivityProvider").ExpandedActivityProviderProps, context?: any): {
31
+ new (props: import("../../utils").Diff<RecentSearchProps & WithActivityProviderProps, WithActivityProviderProps> & import("./withActivityProvider").ExpandedActivityProviderProps, context: any): {
32
32
  renderNode: (providers: import("../../provider-factory").Providers) => JSX.Element;
33
33
  render(): JSX.Element;
34
34
  context: any;
35
35
  setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<import("../../utils").Diff<RecentSearchProps & WithActivityProviderProps, WithActivityProviderProps> & import("./withActivityProvider").ExpandedActivityProviderProps>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
36
- forceUpdate(callBack?: (() => void) | undefined): void;
36
+ forceUpdate(callback?: (() => void) | undefined): void;
37
37
  readonly props: Readonly<import("../../utils").Diff<RecentSearchProps & WithActivityProviderProps, WithActivityProviderProps> & import("./withActivityProvider").ExpandedActivityProviderProps> & Readonly<{
38
38
  children?: React.ReactNode;
39
39
  }>;
@@ -10,12 +10,12 @@ export interface WithActivityProviderProps {
10
10
  activityProvider: ActivityProvider;
11
11
  }
12
12
  export default function withActivityProvider<Props>(WrappedComponent: React.ComponentType<Props & WithActivityProviderProps>): {
13
- new (props: Readonly<Diff<Props, WithActivityProviderProps> & ExpandedActivityProviderProps>): {
13
+ new (props: (Diff<Props, WithActivityProviderProps> & ExpandedActivityProviderProps) | Readonly<Diff<Props, WithActivityProviderProps> & ExpandedActivityProviderProps>): {
14
14
  renderNode: (providers: Providers) => JSX.Element;
15
15
  render(): JSX.Element;
16
16
  context: any;
17
17
  setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<Diff<Props, WithActivityProviderProps> & ExpandedActivityProviderProps>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
18
- forceUpdate(callBack?: (() => void) | undefined): void;
18
+ forceUpdate(callback?: (() => void) | undefined): void;
19
19
  readonly props: Readonly<Diff<Props, WithActivityProviderProps> & ExpandedActivityProviderProps> & Readonly<{
20
20
  children?: React.ReactNode;
21
21
  }>;
@@ -36,12 +36,12 @@ export default function withActivityProvider<Props>(WrappedComponent: React.Comp
36
36
  componentWillUpdate?(nextProps: Readonly<Diff<Props, WithActivityProviderProps> & ExpandedActivityProviderProps>, nextState: Readonly<{}>, nextContext: any): void;
37
37
  UNSAFE_componentWillUpdate?(nextProps: Readonly<Diff<Props, WithActivityProviderProps> & ExpandedActivityProviderProps>, nextState: Readonly<{}>, nextContext: any): void;
38
38
  };
39
- new (props: Diff<Props, WithActivityProviderProps> & ExpandedActivityProviderProps, context?: any): {
39
+ new (props: Diff<Props, WithActivityProviderProps> & ExpandedActivityProviderProps, context: any): {
40
40
  renderNode: (providers: Providers) => JSX.Element;
41
41
  render(): JSX.Element;
42
42
  context: any;
43
43
  setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<Diff<Props, WithActivityProviderProps> & ExpandedActivityProviderProps>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
44
- forceUpdate(callBack?: (() => void) | undefined): void;
44
+ forceUpdate(callback?: (() => void) | undefined): void;
45
45
  readonly props: Readonly<Diff<Props, WithActivityProviderProps> & ExpandedActivityProviderProps> & Readonly<{
46
46
  children?: React.ReactNode;
47
47
  }>;
@@ -1 +1,2 @@
1
1
  export { IconAction, IconCode, IconDate, IconDecision, IconDivider, IconEmoji, IconImages, IconLayout, IconLink, IconListNumber, IconList, IconMention, IconPanelError, IconPanelNote, IconPanelSuccess, IconPanelWarning, IconPanel, IconQuote, IconStatus, IconHeading, IconFeedback, IconExpand, IconCustomPanel, IconFallback, IconDatasourceJiraIssue, IconDatasourceAssetsObjects, } from './assets';
2
+ export { memoProcessQuickInsertItems, getQuickInsertSuggestions, find, } from './utils';
@@ -0,0 +1,12 @@
1
+ import type { IntlShape } from 'react-intl-next';
2
+ import type { QuickInsertItem } from '../provider-factory';
3
+ import type { QuickInsertHandler, QuickInsertSearchOptions } from '../types';
4
+ declare const processQuickInsertItems: (items: Array<QuickInsertHandler | QuickInsertItem>, intl: IntlShape) => QuickInsertItem[];
5
+ export declare const memoProcessQuickInsertItems: typeof processQuickInsertItems;
6
+ export declare function find(query: string, items: QuickInsertItem[]): QuickInsertItem[];
7
+ export declare const getQuickInsertSuggestions: ({ searchOptions, lazyDefaultItems, providedItems, }: {
8
+ searchOptions: QuickInsertSearchOptions;
9
+ lazyDefaultItems?: (() => QuickInsertItem[]) | undefined;
10
+ providedItems?: QuickInsertItem[] | undefined;
11
+ }) => QuickInsertItem[];
12
+ export {};
@@ -47,4 +47,4 @@ export type { InputRuleHandler, OnHandlerApply, InputRuleWrapper, } from './inpu
47
47
  export type { TextFormattingOptions, TextFormattingState, InputMethodToolbar, InputMethodBasic, } from './text-formatting';
48
48
  export type { LayoutPluginOptions } from './layout';
49
49
  export type { LongPressSelectionPluginOptions } from './selection';
50
- export type { QuickInsertPluginState, QuickInsertPluginStateKeys, QuickInsertOptions, QuickInsertPluginOptions, } from './quick-insert';
50
+ export type { QuickInsertPluginState, QuickInsertPluginStateKeys, QuickInsertOptions, QuickInsertPluginOptions, QuickInsertSearchOptions, QuickInsertSharedState, QuickInsertHandler, } from './quick-insert';
@@ -8,12 +8,20 @@ export type QuickInsertHandler = Array<QuickInsertItem> | ((intl: IntlShape) =>
8
8
  export type IconProps = {
9
9
  label?: string;
10
10
  };
11
+ export type QuickInsertSearchOptions = {
12
+ query?: string;
13
+ category?: string;
14
+ disableDefaultItems?: boolean;
15
+ featuredItems?: boolean;
16
+ };
11
17
  export type QuickInsertPluginState = {
12
18
  isElementBrowserModalOpen: boolean;
13
19
  lazyDefaultItems: () => QuickInsertItem[];
14
20
  providedItems?: QuickInsertItem[];
15
21
  provider?: QuickInsertProvider;
16
22
  emptyStateHandler?: EmptyStateHandler;
23
+ suggestions?: QuickInsertItem[];
24
+ searchOptions?: QuickInsertSearchOptions;
17
25
  };
18
26
  export type QuickInsertPluginStateKeys = keyof QuickInsertPluginState;
19
27
  export interface QuickInsertPluginOptions {
@@ -23,3 +31,8 @@ export interface QuickInsertPluginOptions {
23
31
  elementBrowserHelpUrl?: string;
24
32
  emptyStateHandler?: EmptyStateHandler;
25
33
  }
34
+ export type QuickInsertSharedState = {
35
+ suggestions: QuickInsertItem[];
36
+ lazyDefaultItems: () => QuickInsertItem[];
37
+ emptyStateHandler?: EmptyStateHandler;
38
+ };
@@ -17,7 +17,7 @@ export interface OverflowShadowOptions {
17
17
  useShadowObserver?: boolean;
18
18
  }
19
19
  export default function overflowShadow<P>(Component: React.ComponentType<P & OverflowShadowProps> | React.StatelessComponent<P & OverflowShadowProps>, options: OverflowShadowOptions): {
20
- new (props: Readonly<P>): {
20
+ new (props: P | Readonly<P>): {
21
21
  overflowContainer?: HTMLElement | null | undefined;
22
22
  container?: HTMLElement | undefined;
23
23
  shadowObserver?: ShadowObserver | undefined;
@@ -40,7 +40,7 @@ export default function overflowShadow<P>(Component: React.ComponentType<P & Ove
40
40
  render(): JSX.Element;
41
41
  context: any;
42
42
  setState<K extends keyof OverflowShadowState>(state: OverflowShadowState | ((prevState: Readonly<OverflowShadowState>, props: Readonly<P>) => OverflowShadowState | Pick<OverflowShadowState, K> | null) | Pick<OverflowShadowState, K> | null, callback?: (() => void) | undefined): void;
43
- forceUpdate(callBack?: (() => void) | undefined): void;
43
+ forceUpdate(callback?: (() => void) | undefined): void;
44
44
  readonly props: Readonly<P> & Readonly<{
45
45
  children?: React.ReactNode;
46
46
  }>;
@@ -58,7 +58,7 @@ export default function overflowShadow<P>(Component: React.ComponentType<P & Ove
58
58
  componentWillUpdate?(nextProps: Readonly<P>, nextState: Readonly<OverflowShadowState>, nextContext: any): void;
59
59
  UNSAFE_componentWillUpdate?(nextProps: Readonly<P>, nextState: Readonly<OverflowShadowState>, nextContext: any): void;
60
60
  };
61
- new (props: P, context?: any): {
61
+ new (props: P, context: any): {
62
62
  overflowContainer?: HTMLElement | null | undefined;
63
63
  container?: HTMLElement | undefined;
64
64
  shadowObserver?: ShadowObserver | undefined;
@@ -81,7 +81,7 @@ export default function overflowShadow<P>(Component: React.ComponentType<P & Ove
81
81
  render(): JSX.Element;
82
82
  context: any;
83
83
  setState<K extends keyof OverflowShadowState>(state: OverflowShadowState | ((prevState: Readonly<OverflowShadowState>, props: Readonly<P>) => OverflowShadowState | Pick<OverflowShadowState, K> | null) | Pick<OverflowShadowState, K> | null, callback?: (() => void) | undefined): void;
84
- forceUpdate(callBack?: (() => void) | undefined): void;
84
+ forceUpdate(callback?: (() => void) | undefined): void;
85
85
  readonly props: Readonly<P> & Readonly<{
86
86
  children?: React.ReactNode;
87
87
  }>;
@@ -1,7 +1,7 @@
1
1
  /** @jsx jsx */
2
2
  import React from 'react';
3
- import { WrappedComponentProps } from 'react-intl-next';
4
- import { PaletteColor, PaletteTooltipMessages } from './Palettes/type';
3
+ import type { WrappedComponentProps } from 'react-intl-next';
4
+ import type { PaletteColor, PaletteTooltipMessages } from './Palettes/type';
5
5
  interface Props {
6
6
  selectedColor: string | null;
7
7
  onClick: (value: string, label: string) => void;
@@ -27,7 +27,7 @@ interface Props {
27
27
  * tooltip messages. Which is same as palette, where consumer determines which
28
28
  * colors ColorPalette should render.
29
29
  * Same way now consumer will determine which tooltip messages should
30
- * be used using paletteColorTooltipMessages option.
30
+ * be using paletteColorTooltipMessages option.
31
31
  */
32
32
  paletteColorTooltipMessages?: PaletteTooltipMessages;
33
33
  /**
@@ -39,12 +39,6 @@ interface Props {
39
39
  };
40
40
  }
41
41
  declare const _default: React.FC<import("react-intl-next").WithIntlProps<Props & WrappedComponentProps<"intl">>> & {
42
- WrappedComponent: React.ComponentType<Props & WrappedComponentProps<"intl">>; /**
43
- * If hexToPaletteColor is passed, it will be called to convert
44
- * hexCodes passed in palette props to DST token.
45
- * Different color palette will set different mapping function.
46
- * Such as text and background color palette uses different
47
- * mapping function to map tokens.
48
- */
42
+ WrappedComponent: React.ComponentType<Props & WrappedComponentProps<"intl">>;
49
43
  };
50
44
  export default _default;
@@ -1,4 +1,4 @@
1
- import { PaletteColor } from './Palettes/type';
1
+ import type { PaletteColor } from './Palettes/type';
2
2
  export declare const DEFAULT_COLOR_PICKER_COLUMNS = 7;
3
3
  export declare function getColorsPerRowFromPalette(palette: PaletteColor[], cols?: number): PaletteColor[][];
4
4
  export declare function getSelectedRowAndColumn(colorsPerRow: PaletteColor[][], selectedColor: string | null): {
@@ -9,3 +9,4 @@ export declare function getSelectedRowAndColumnFromPalette(palette: PaletteColor
9
9
  selectedRowIndex: number;
10
10
  selectedColumnIndex: number;
11
11
  };
12
+ export declare const getTokenCSSVariableValue: (variableExpression: string) => string;
@@ -0,0 +1 @@
1
+ export declare function dedupe<T>(list?: T[], iteratee?: (p: T) => T[keyof T] | T): T[];
@@ -79,3 +79,4 @@ export declare const isEmptyNode: (schema: Schema) => (node: PMNode) => boolean;
79
79
  * Checks if a node has any content. Ignores node that only contain empty block nodes.
80
80
  */
81
81
  export declare function isNodeEmpty(node?: PMNode): boolean;
82
+ export { dedupe } from './dedupe';
@@ -1,5 +1,6 @@
1
- import { Fragment, Node, NodeType } from '@atlaskit/editor-prosemirror/model';
2
- import { EditorState, Transaction } from '@atlaskit/editor-prosemirror/state';
1
+ import type { NodeType } from '@atlaskit/editor-prosemirror/model';
2
+ import { Fragment, Node } from '@atlaskit/editor-prosemirror/model';
3
+ import type { EditorState, Transaction } from '@atlaskit/editor-prosemirror/state';
3
4
  export type InsertableContent = Node | Fragment;
4
5
  export declare enum LookDirection {
5
6
  Before = "before",
@@ -8,7 +9,7 @@ export declare enum LookDirection {
8
9
  export declare const normaliseNestedLayout: ({ selection, doc }: EditorState | Transaction, node: Node) => Node;
9
10
  export declare const safeInsert: (content: InsertableContent, position?: number) => (tr: Transaction) => Transaction | null;
10
11
  /**
11
- * Method extracted from typeahed plugin to be shared with the element browser on handling element insertion.
12
+ * Method extracted from typeahead plugin to be shared with the element browser on handling element insertion.
12
13
  */
13
14
  export declare const insertSelectedItem: (maybeNode?: Node | Object | string | Fragment, opts?: {
14
15
  selectInlineNode?: boolean;
@@ -2,12 +2,12 @@ import React from 'react';
2
2
  import { RecentSearchProps } from './types';
3
3
  import { WithActivityProviderProps } from './withActivityProvider';
4
4
  declare const _default: {
5
- new (props: Readonly<import("../../utils").Diff<RecentSearchProps & WithActivityProviderProps, WithActivityProviderProps> & import("./withActivityProvider").ExpandedActivityProviderProps>): {
5
+ new (props: (import("../../utils").Diff<RecentSearchProps & WithActivityProviderProps, WithActivityProviderProps> & import("./withActivityProvider").ExpandedActivityProviderProps) | Readonly<import("../../utils").Diff<RecentSearchProps & WithActivityProviderProps, WithActivityProviderProps> & import("./withActivityProvider").ExpandedActivityProviderProps>): {
6
6
  renderNode: (providers: import("../../provider-factory").Providers) => JSX.Element;
7
7
  render(): JSX.Element;
8
8
  context: any;
9
9
  setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<import("../../utils").Diff<RecentSearchProps & WithActivityProviderProps, WithActivityProviderProps> & import("./withActivityProvider").ExpandedActivityProviderProps>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
10
- forceUpdate(callBack?: (() => void) | undefined): void;
10
+ forceUpdate(callback?: (() => void) | undefined): void;
11
11
  readonly props: Readonly<import("../../utils").Diff<RecentSearchProps & WithActivityProviderProps, WithActivityProviderProps> & import("./withActivityProvider").ExpandedActivityProviderProps> & Readonly<{
12
12
  children?: React.ReactNode;
13
13
  }>;
@@ -28,12 +28,12 @@ declare const _default: {
28
28
  componentWillUpdate?(nextProps: Readonly<import("../../utils").Diff<RecentSearchProps & WithActivityProviderProps, WithActivityProviderProps> & import("./withActivityProvider").ExpandedActivityProviderProps>, nextState: Readonly<{}>, nextContext: any): void;
29
29
  UNSAFE_componentWillUpdate?(nextProps: Readonly<import("../../utils").Diff<RecentSearchProps & WithActivityProviderProps, WithActivityProviderProps> & import("./withActivityProvider").ExpandedActivityProviderProps>, nextState: Readonly<{}>, nextContext: any): void;
30
30
  };
31
- new (props: import("../../utils").Diff<RecentSearchProps & WithActivityProviderProps, WithActivityProviderProps> & import("./withActivityProvider").ExpandedActivityProviderProps, context?: any): {
31
+ new (props: import("../../utils").Diff<RecentSearchProps & WithActivityProviderProps, WithActivityProviderProps> & import("./withActivityProvider").ExpandedActivityProviderProps, context: any): {
32
32
  renderNode: (providers: import("../../provider-factory").Providers) => JSX.Element;
33
33
  render(): JSX.Element;
34
34
  context: any;
35
35
  setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<import("../../utils").Diff<RecentSearchProps & WithActivityProviderProps, WithActivityProviderProps> & import("./withActivityProvider").ExpandedActivityProviderProps>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
36
- forceUpdate(callBack?: (() => void) | undefined): void;
36
+ forceUpdate(callback?: (() => void) | undefined): void;
37
37
  readonly props: Readonly<import("../../utils").Diff<RecentSearchProps & WithActivityProviderProps, WithActivityProviderProps> & import("./withActivityProvider").ExpandedActivityProviderProps> & Readonly<{
38
38
  children?: React.ReactNode;
39
39
  }>;
@@ -10,12 +10,12 @@ export interface WithActivityProviderProps {
10
10
  activityProvider: ActivityProvider;
11
11
  }
12
12
  export default function withActivityProvider<Props>(WrappedComponent: React.ComponentType<Props & WithActivityProviderProps>): {
13
- new (props: Readonly<Diff<Props, WithActivityProviderProps> & ExpandedActivityProviderProps>): {
13
+ new (props: (Diff<Props, WithActivityProviderProps> & ExpandedActivityProviderProps) | Readonly<Diff<Props, WithActivityProviderProps> & ExpandedActivityProviderProps>): {
14
14
  renderNode: (providers: Providers) => JSX.Element;
15
15
  render(): JSX.Element;
16
16
  context: any;
17
17
  setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<Diff<Props, WithActivityProviderProps> & ExpandedActivityProviderProps>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
18
- forceUpdate(callBack?: (() => void) | undefined): void;
18
+ forceUpdate(callback?: (() => void) | undefined): void;
19
19
  readonly props: Readonly<Diff<Props, WithActivityProviderProps> & ExpandedActivityProviderProps> & Readonly<{
20
20
  children?: React.ReactNode;
21
21
  }>;
@@ -36,12 +36,12 @@ export default function withActivityProvider<Props>(WrappedComponent: React.Comp
36
36
  componentWillUpdate?(nextProps: Readonly<Diff<Props, WithActivityProviderProps> & ExpandedActivityProviderProps>, nextState: Readonly<{}>, nextContext: any): void;
37
37
  UNSAFE_componentWillUpdate?(nextProps: Readonly<Diff<Props, WithActivityProviderProps> & ExpandedActivityProviderProps>, nextState: Readonly<{}>, nextContext: any): void;
38
38
  };
39
- new (props: Diff<Props, WithActivityProviderProps> & ExpandedActivityProviderProps, context?: any): {
39
+ new (props: Diff<Props, WithActivityProviderProps> & ExpandedActivityProviderProps, context: any): {
40
40
  renderNode: (providers: Providers) => JSX.Element;
41
41
  render(): JSX.Element;
42
42
  context: any;
43
43
  setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<Diff<Props, WithActivityProviderProps> & ExpandedActivityProviderProps>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
44
- forceUpdate(callBack?: (() => void) | undefined): void;
44
+ forceUpdate(callback?: (() => void) | undefined): void;
45
45
  readonly props: Readonly<Diff<Props, WithActivityProviderProps> & ExpandedActivityProviderProps> & Readonly<{
46
46
  children?: React.ReactNode;
47
47
  }>;
@@ -1 +1,2 @@
1
1
  export { IconAction, IconCode, IconDate, IconDecision, IconDivider, IconEmoji, IconImages, IconLayout, IconLink, IconListNumber, IconList, IconMention, IconPanelError, IconPanelNote, IconPanelSuccess, IconPanelWarning, IconPanel, IconQuote, IconStatus, IconHeading, IconFeedback, IconExpand, IconCustomPanel, IconFallback, IconDatasourceJiraIssue, IconDatasourceAssetsObjects, } from './assets';
2
+ export { memoProcessQuickInsertItems, getQuickInsertSuggestions, find, } from './utils';
@@ -0,0 +1,12 @@
1
+ import type { IntlShape } from 'react-intl-next';
2
+ import type { QuickInsertItem } from '../provider-factory';
3
+ import type { QuickInsertHandler, QuickInsertSearchOptions } from '../types';
4
+ declare const processQuickInsertItems: (items: Array<QuickInsertHandler | QuickInsertItem>, intl: IntlShape) => QuickInsertItem[];
5
+ export declare const memoProcessQuickInsertItems: typeof processQuickInsertItems;
6
+ export declare function find(query: string, items: QuickInsertItem[]): QuickInsertItem[];
7
+ export declare const getQuickInsertSuggestions: ({ searchOptions, lazyDefaultItems, providedItems, }: {
8
+ searchOptions: QuickInsertSearchOptions;
9
+ lazyDefaultItems?: (() => QuickInsertItem[]) | undefined;
10
+ providedItems?: QuickInsertItem[] | undefined;
11
+ }) => QuickInsertItem[];
12
+ export {};
@@ -47,4 +47,4 @@ export type { InputRuleHandler, OnHandlerApply, InputRuleWrapper, } from './inpu
47
47
  export type { TextFormattingOptions, TextFormattingState, InputMethodToolbar, InputMethodBasic, } from './text-formatting';
48
48
  export type { LayoutPluginOptions } from './layout';
49
49
  export type { LongPressSelectionPluginOptions } from './selection';
50
- export type { QuickInsertPluginState, QuickInsertPluginStateKeys, QuickInsertOptions, QuickInsertPluginOptions, } from './quick-insert';
50
+ export type { QuickInsertPluginState, QuickInsertPluginStateKeys, QuickInsertOptions, QuickInsertPluginOptions, QuickInsertSearchOptions, QuickInsertSharedState, QuickInsertHandler, } from './quick-insert';
@@ -8,12 +8,20 @@ export type QuickInsertHandler = Array<QuickInsertItem> | ((intl: IntlShape) =>
8
8
  export type IconProps = {
9
9
  label?: string;
10
10
  };
11
+ export type QuickInsertSearchOptions = {
12
+ query?: string;
13
+ category?: string;
14
+ disableDefaultItems?: boolean;
15
+ featuredItems?: boolean;
16
+ };
11
17
  export type QuickInsertPluginState = {
12
18
  isElementBrowserModalOpen: boolean;
13
19
  lazyDefaultItems: () => QuickInsertItem[];
14
20
  providedItems?: QuickInsertItem[];
15
21
  provider?: QuickInsertProvider;
16
22
  emptyStateHandler?: EmptyStateHandler;
23
+ suggestions?: QuickInsertItem[];
24
+ searchOptions?: QuickInsertSearchOptions;
17
25
  };
18
26
  export type QuickInsertPluginStateKeys = keyof QuickInsertPluginState;
19
27
  export interface QuickInsertPluginOptions {
@@ -23,3 +31,8 @@ export interface QuickInsertPluginOptions {
23
31
  elementBrowserHelpUrl?: string;
24
32
  emptyStateHandler?: EmptyStateHandler;
25
33
  }
34
+ export type QuickInsertSharedState = {
35
+ suggestions: QuickInsertItem[];
36
+ lazyDefaultItems: () => QuickInsertItem[];
37
+ emptyStateHandler?: EmptyStateHandler;
38
+ };
@@ -17,7 +17,7 @@ export interface OverflowShadowOptions {
17
17
  useShadowObserver?: boolean;
18
18
  }
19
19
  export default function overflowShadow<P>(Component: React.ComponentType<P & OverflowShadowProps> | React.StatelessComponent<P & OverflowShadowProps>, options: OverflowShadowOptions): {
20
- new (props: Readonly<P>): {
20
+ new (props: P | Readonly<P>): {
21
21
  overflowContainer?: HTMLElement | null | undefined;
22
22
  container?: HTMLElement | undefined;
23
23
  shadowObserver?: ShadowObserver | undefined;
@@ -40,7 +40,7 @@ export default function overflowShadow<P>(Component: React.ComponentType<P & Ove
40
40
  render(): JSX.Element;
41
41
  context: any;
42
42
  setState<K extends keyof OverflowShadowState>(state: OverflowShadowState | ((prevState: Readonly<OverflowShadowState>, props: Readonly<P>) => OverflowShadowState | Pick<OverflowShadowState, K> | null) | Pick<OverflowShadowState, K> | null, callback?: (() => void) | undefined): void;
43
- forceUpdate(callBack?: (() => void) | undefined): void;
43
+ forceUpdate(callback?: (() => void) | undefined): void;
44
44
  readonly props: Readonly<P> & Readonly<{
45
45
  children?: React.ReactNode;
46
46
  }>;
@@ -58,7 +58,7 @@ export default function overflowShadow<P>(Component: React.ComponentType<P & Ove
58
58
  componentWillUpdate?(nextProps: Readonly<P>, nextState: Readonly<OverflowShadowState>, nextContext: any): void;
59
59
  UNSAFE_componentWillUpdate?(nextProps: Readonly<P>, nextState: Readonly<OverflowShadowState>, nextContext: any): void;
60
60
  };
61
- new (props: P, context?: any): {
61
+ new (props: P, context: any): {
62
62
  overflowContainer?: HTMLElement | null | undefined;
63
63
  container?: HTMLElement | undefined;
64
64
  shadowObserver?: ShadowObserver | undefined;
@@ -81,7 +81,7 @@ export default function overflowShadow<P>(Component: React.ComponentType<P & Ove
81
81
  render(): JSX.Element;
82
82
  context: any;
83
83
  setState<K extends keyof OverflowShadowState>(state: OverflowShadowState | ((prevState: Readonly<OverflowShadowState>, props: Readonly<P>) => OverflowShadowState | Pick<OverflowShadowState, K> | null) | Pick<OverflowShadowState, K> | null, callback?: (() => void) | undefined): void;
84
- forceUpdate(callBack?: (() => void) | undefined): void;
84
+ forceUpdate(callback?: (() => void) | undefined): void;
85
85
  readonly props: Readonly<P> & Readonly<{
86
86
  children?: React.ReactNode;
87
87
  }>;
@@ -1,7 +1,7 @@
1
1
  /** @jsx jsx */
2
2
  import React from 'react';
3
- import { WrappedComponentProps } from 'react-intl-next';
4
- import { PaletteColor, PaletteTooltipMessages } from './Palettes/type';
3
+ import type { WrappedComponentProps } from 'react-intl-next';
4
+ import type { PaletteColor, PaletteTooltipMessages } from './Palettes/type';
5
5
  interface Props {
6
6
  selectedColor: string | null;
7
7
  onClick: (value: string, label: string) => void;
@@ -27,7 +27,7 @@ interface Props {
27
27
  * tooltip messages. Which is same as palette, where consumer determines which
28
28
  * colors ColorPalette should render.
29
29
  * Same way now consumer will determine which tooltip messages should
30
- * be used using paletteColorTooltipMessages option.
30
+ * be using paletteColorTooltipMessages option.
31
31
  */
32
32
  paletteColorTooltipMessages?: PaletteTooltipMessages;
33
33
  /**
@@ -39,12 +39,6 @@ interface Props {
39
39
  };
40
40
  }
41
41
  declare const _default: React.FC<import("react-intl-next").WithIntlProps<Props & WrappedComponentProps<"intl">>> & {
42
- WrappedComponent: React.ComponentType<Props & WrappedComponentProps<"intl">>; /**
43
- * If hexToPaletteColor is passed, it will be called to convert
44
- * hexCodes passed in palette props to DST token.
45
- * Different color palette will set different mapping function.
46
- * Such as text and background color palette uses different
47
- * mapping function to map tokens.
48
- */
42
+ WrappedComponent: React.ComponentType<Props & WrappedComponentProps<"intl">>;
49
43
  };
50
44
  export default _default;
@@ -1,4 +1,4 @@
1
- import { PaletteColor } from './Palettes/type';
1
+ import type { PaletteColor } from './Palettes/type';
2
2
  export declare const DEFAULT_COLOR_PICKER_COLUMNS = 7;
3
3
  export declare function getColorsPerRowFromPalette(palette: PaletteColor[], cols?: number): PaletteColor[][];
4
4
  export declare function getSelectedRowAndColumn(colorsPerRow: PaletteColor[][], selectedColor: string | null): {
@@ -9,3 +9,4 @@ export declare function getSelectedRowAndColumnFromPalette(palette: PaletteColor
9
9
  selectedRowIndex: number;
10
10
  selectedColumnIndex: number;
11
11
  };
12
+ export declare const getTokenCSSVariableValue: (variableExpression: string) => string;
@@ -0,0 +1 @@
1
+ export declare function dedupe<T>(list?: T[], iteratee?: (p: T) => T[keyof T] | T): T[];
@@ -79,3 +79,4 @@ export declare const isEmptyNode: (schema: Schema) => (node: PMNode) => boolean;
79
79
  * Checks if a node has any content. Ignores node that only contain empty block nodes.
80
80
  */
81
81
  export declare function isNodeEmpty(node?: PMNode): boolean;
82
+ export { dedupe } from './dedupe';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-common",
3
- "version": "74.51.7",
3
+ "version": "74.52.1",
4
4
  "description": "A package that contains common classes and components for editor and renderer",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -124,6 +124,7 @@
124
124
  "classnames": "^2.2.5",
125
125
  "date-fns": "^2.17.0",
126
126
  "focus-trap": "^2.4.5",
127
+ "fuse.js": "^6.6.2",
127
128
  "linkify-it": "^2.0.3",
128
129
  "lodash": "^4.17.21",
129
130
  "markdown-it": "^12.3.2",
@@ -143,7 +144,6 @@
143
144
  "react-intl-next": "npm:react-intl@^5.18.1"
144
145
  },
145
146
  "devDependencies": {
146
- "@atlaskit/editor-test-helpers": "^18.11.0",
147
147
  "@atlaskit/media-core": "^34.1.0",
148
148
  "@atlaskit/media-test-helpers": "^33.0.0",
149
149
  "@atlaskit/smart-card": "^26.16.0",
@@ -200,4 +200,4 @@
200
200
  "type": "boolean"
201
201
  }
202
202
  }
203
- }
203
+ }